From 67aac959d0124f9c3def7bda30a56c2c1ea87183 Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 23 Jun 2026 11:48:36 -0700 Subject: [PATCH] Rewrote how buffifier web worker memory management fundamentally works. Improvements: - The only thing needed to make an object live in a shared memory buffer is to have the class inherit from BaseClass, and you define the props in a static block with `this.buffify({...})`. - Uses `static {}` blocks in classes to be able to set up the memory without having to explicitly call some buffifier method outside its class. Keeps code nicer. - When a block is unallocated/overwritten, there's now no need to set all references to that block to null. Because now each block will also have a "generational index" that gets incremented when the block contains a new object... And all pointers to the object are two values: block index and generational index. - Made memory blocks be two fixed sizes in the buffer for speed, reducing metadata, and simplicity. First block size grows from the beginning of the buffer, while the second block size grows from the end of the buffer. - Compacting/defragging not needed. --- .github/dependabot.yml | 12 - .gitignore | 1 - App.js | 27 - Buffifier.js | 1389 +- Entity.js | 32 - README.md | 107 - RateCounter.js | 38 - World.js | 44 - favicon.ico | Bin 1342 -> 0 bytes index.html | 89 +- index.js | 41 +- objects.js | 25 + secure_server.py => server.py | 4 +- threads.js | 31 + threads/Base.js | 12 - threads/Entity.js | 67 - threads/Main.js | 115 - threads/Pathing.js | 49 - threads/Renderer.js | 468 - threads/Terrain.js | 249 - three/addons/Addons.js | 291 - .../addons/animation/AnimationClipCreator.js | 116 - three/addons/animation/CCDIKSolver.js | 482 - three/addons/animation/MMDAnimationHelper.js | 1207 - three/addons/animation/MMDPhysics.js | 1406 - three/addons/cameras/CinematicCamera.js | 208 - three/addons/capabilities/WebGL.js | 108 - three/addons/capabilities/WebGPU.js | 53 - three/addons/controls/ArcballControls.js | 3224 - three/addons/controls/DragControls.js | 221 - three/addons/controls/FirstPersonControls.js | 325 - three/addons/controls/FlyControls.js | 326 - three/addons/controls/MapControls.js | 28 - three/addons/controls/OrbitControls.js | 1417 - .../addons/controls/OrbitControlsModified.js | 861 - three/addons/controls/PointerLockControls.js | 162 - three/addons/controls/TrackballControls.js | 828 - three/addons/controls/TransformControls.js | 1573 - three/addons/csm/CSM.js | 384 - three/addons/csm/CSMFrustum.js | 152 - three/addons/csm/CSMHelper.js | 193 - three/addons/csm/CSMShader.js | 295 - three/addons/curves/CurveExtras.js | 422 - three/addons/curves/NURBSCurve.js | 80 - three/addons/curves/NURBSSurface.js | 52 - three/addons/curves/NURBSUtils.js | 487 - three/addons/effects/AnaglyphEffect.js | 154 - three/addons/effects/AsciiEffect.js | 263 - three/addons/effects/OutlineEffect.js | 539 - three/addons/effects/ParallaxBarrierEffect.js | 119 - three/addons/effects/PeppersGhostEffect.js | 153 - three/addons/effects/StereoEffect.js | 55 - three/addons/environments/DebugEnvironment.js | 52 - three/addons/environments/RoomEnvironment.js | 148 - three/addons/exporters/DRACOExporter.js | 267 - three/addons/exporters/EXRExporter.js | 579 - three/addons/exporters/GLTFExporter.js | 3309 - three/addons/exporters/KTX2Exporter.js | 292 - three/addons/exporters/MMDExporter.js | 217 - three/addons/exporters/OBJExporter.js | 284 - three/addons/exporters/PLYExporter.js | 528 - three/addons/exporters/STLExporter.js | 199 - three/addons/exporters/USDZExporter.js | 719 - three/addons/geometries/BoxLineGeometry.js | 69 - three/addons/geometries/ConvexGeometry.js | 53 - three/addons/geometries/DecalGeometry.js | 356 - .../geometries/InstancedPointsGeometry.js | 174 - .../addons/geometries/ParametricGeometries.js | 254 - three/addons/geometries/ParametricGeometry.js | 139 - three/addons/geometries/RoundedBoxGeometry.js | 155 - .../addons/geometries/SDFGeometryGenerator.js | 144 - three/addons/geometries/TeapotGeometry.js | 704 - three/addons/geometries/TextGeometry.js | 57 - three/addons/helpers/LightProbeHelper.js | 130 - three/addons/helpers/OctreeHelper.js | 73 - three/addons/helpers/PositionalAudioHelper.js | 109 - three/addons/helpers/RectAreaLightHelper.js | 85 - three/addons/helpers/TextureHelper.js | 237 - three/addons/helpers/VertexNormalsHelper.js | 96 - three/addons/helpers/VertexTangentsHelper.js | 88 - three/addons/helpers/ViewHelper.js | 333 - three/addons/interactive/HTMLMesh.js | 572 - three/addons/interactive/InteractiveGroup.js | 116 - three/addons/interactive/SelectionBox.js | 227 - three/addons/interactive/SelectionHelper.js | 104 - three/addons/libs/ammo.wasm.js | 822 - three/addons/libs/ammo.wasm.wasm | Bin 651386 -> 0 bytes three/addons/libs/basis/README.md | 46 - three/addons/libs/basis/basis_transcoder.js | 21 - three/addons/libs/basis/basis_transcoder.wasm | Bin 499935 -> 0 bytes three/addons/libs/chevrotain.module.min.js | 141 - three/addons/libs/draco/README.md | 32 - three/addons/libs/draco/draco_decoder.js | 34 - three/addons/libs/draco/draco_decoder.wasm | Bin 285747 -> 0 bytes three/addons/libs/draco/draco_encoder.js | 33 - three/addons/libs/draco/draco_wasm_wrapper.js | 117 - three/addons/libs/draco/gltf/draco_decoder.js | 33 - .../addons/libs/draco/gltf/draco_decoder.wasm | Bin 192420 -> 0 bytes three/addons/libs/draco/gltf/draco_encoder.js | 33 - .../libs/draco/gltf/draco_wasm_wrapper.js | 116 - three/addons/libs/ecsy.module.js | 1792 - three/addons/libs/fflate.module.js | 2474 - three/addons/libs/ktx-parse.module.js | 1 - three/addons/libs/lil-gui.module.min.js | 8 - three/addons/libs/lottie_canvas.module.js | 14849 ----- three/addons/libs/meshopt_decoder.module.js | 178 - three/addons/libs/mikktspace.module.js | 128 - three/addons/libs/mmdparser.module.js | 11530 ---- .../addons/libs/motion-controllers.module.js | 397 - three/addons/libs/opentype.module.js | 14506 ----- three/addons/libs/potpack.module.js | 125 - three/addons/libs/rhino3dm/rhino3dm.js | 8743 --- three/addons/libs/rhino3dm/rhino3dm.module.js | 8749 --- three/addons/libs/rhino3dm/rhino3dm.wasm | Bin 10091572 -> 0 bytes three/addons/libs/stats.module.js | 167 - three/addons/libs/surfaceNet.js | 201 - three/addons/libs/tween.module.js | 858 - three/addons/libs/utif.module.js | 1665 - three/addons/libs/zstddec.module.js | 1 - three/addons/lights/IESSpotLight.js | 25 - three/addons/lights/LightProbeGenerator.js | 286 - .../addons/lights/RectAreaLightUniformsLib.js | 79 - three/addons/lines/Line2.js | 19 - three/addons/lines/LineGeometry.js | 79 - three/addons/lines/LineMaterial.js | 619 - three/addons/lines/LineSegments2.js | 361 - three/addons/lines/LineSegmentsGeometry.js | 241 - three/addons/lines/Wireframe.js | 56 - three/addons/lines/WireframeGeometry2.js | 24 - three/addons/loaders/3DMLoader.js | 1771 - three/addons/loaders/3MFLoader.js | 1478 - three/addons/loaders/AMFLoader.js | 521 - three/addons/loaders/BVHLoader.js | 437 - three/addons/loaders/ColladaLoader.js | 4116 -- three/addons/loaders/DDSLoader.js | 317 - three/addons/loaders/DRACOLoader.js | 613 - three/addons/loaders/EXRLoader.js | 2309 - three/addons/loaders/FBXLoader.js | 4314 -- three/addons/loaders/FontLoader.js | 183 - three/addons/loaders/GCodeLoader.js | 261 - three/addons/loaders/GLTFLoader.js | 4663 -- three/addons/loaders/HDRCubeTextureLoader.js | 115 - three/addons/loaders/IESLoader.js | 337 - three/addons/loaders/KMZLoader.js | 130 - three/addons/loaders/KTX2Loader.js | 917 - three/addons/loaders/KTXLoader.js | 176 - three/addons/loaders/LDrawLoader.js | 2470 - three/addons/loaders/LUT3dlLoader.js | 151 - three/addons/loaders/LUTCubeLoader.js | 153 - three/addons/loaders/LUTImageLoader.js | 162 - three/addons/loaders/LWOLoader.js | 1052 - three/addons/loaders/LogLuvLoader.js | 606 - three/addons/loaders/LottieLoader.js | 77 - three/addons/loaders/MD2Loader.js | 399 - three/addons/loaders/MDDLoader.js | 102 - three/addons/loaders/MMDLoader.js | 2276 - three/addons/loaders/MTLLoader.js | 567 - three/addons/loaders/MaterialXLoader.js | 753 - three/addons/loaders/NRRDLoader.js | 686 - three/addons/loaders/OBJLoader.js | 905 - three/addons/loaders/PCDLoader.js | 467 - three/addons/loaders/PDBLoader.js | 232 - three/addons/loaders/PLYLoader.js | 771 - three/addons/loaders/PVRLoader.js | 251 - three/addons/loaders/RGBELoader.js | 450 - three/addons/loaders/RGBMLoader.js | 1065 - three/addons/loaders/STLLoader.js | 410 - three/addons/loaders/SVGLoader.js | 3172 - three/addons/loaders/TDSLoader.js | 1124 - three/addons/loaders/TGALoader.js | 517 - three/addons/loaders/TIFFLoader.js | 36 - three/addons/loaders/TTFLoader.js | 214 - three/addons/loaders/TiltLoader.js | 520 - three/addons/loaders/USDZLoader.js | 822 - three/addons/loaders/VOXLoader.js | 311 - three/addons/loaders/VRMLLoader.js | 3533 - three/addons/loaders/VTKLoader.js | 1163 - three/addons/loaders/XYZLoader.js | 106 - three/addons/loaders/lwo/IFFParser.js | 1214 - three/addons/loaders/lwo/LWO2Parser.js | 414 - three/addons/loaders/lwo/LWO3Parser.js | 373 - three/addons/materials/MeshGouraudMaterial.js | 426 - three/addons/math/Capsule.js | 82 - three/addons/math/ColorConverter.js | 36 - three/addons/math/ConvexHull.js | 1271 - three/addons/math/ImprovedNoise.js | 71 - three/addons/math/Lut.js | 204 - three/addons/math/MeshSurfaceSampler.js | 250 - three/addons/math/OBB.js | 423 - three/addons/math/Octree.js | 540 - three/addons/math/SimplexNoise.js | 444 - three/addons/misc/ConvexObjectBreaker.js | 519 - three/addons/misc/GPUComputationRenderer.js | 446 - three/addons/misc/Gyroscope.js | 66 - three/addons/misc/MD2Character.js | 276 - three/addons/misc/MD2CharacterComplex.js | 576 - three/addons/misc/MorphAnimMesh.js | 75 - three/addons/misc/MorphBlendMesh.js | 322 - three/addons/misc/ProgressiveLightMap.js | 323 - three/addons/misc/RollerCoaster.js | 566 - three/addons/misc/Timer.js | 119 - three/addons/misc/TubePainter.js | 202 - three/addons/misc/Volume.js | 473 - three/addons/misc/VolumeSlice.js | 229 - three/addons/modifiers/CurveModifier.js | 344 - three/addons/modifiers/EdgeSplitModifier.js | 279 - three/addons/modifiers/SimplifyModifier.js | 617 - three/addons/modifiers/TessellateModifier.js | 307 - three/addons/nodes/Nodes.js | 182 - three/addons/nodes/accessors/BitangentNode.js | 89 - .../nodes/accessors/BufferAttributeNode.js | 125 - three/addons/nodes/accessors/BufferNode.js | 30 - three/addons/nodes/accessors/CameraNode.js | 114 - .../addons/nodes/accessors/CubeTextureNode.js | 50 - three/addons/nodes/accessors/InstanceNode.js | 71 - .../accessors/InstancedPointsMaterialNode.js | 21 - three/addons/nodes/accessors/MaterialNode.js | 314 - .../nodes/accessors/MaterialReferenceNode.js | 51 - three/addons/nodes/accessors/ModelNode.js | 33 - .../accessors/ModelViewProjectionNode.js | 39 - three/addons/nodes/accessors/MorphNode.js | 245 - three/addons/nodes/accessors/NormalNode.js | 96 - three/addons/nodes/accessors/Object3DNode.js | 150 - three/addons/nodes/accessors/PointUVNode.js | 26 - three/addons/nodes/accessors/PositionNode.js | 104 - three/addons/nodes/accessors/ReferenceNode.js | 102 - .../nodes/accessors/ReflectVectorNode.js | 35 - three/addons/nodes/accessors/SceneNode.js | 52 - three/addons/nodes/accessors/SkinningNode.js | 103 - .../nodes/accessors/StorageBufferNode.js | 27 - three/addons/nodes/accessors/TangentNode.js | 103 - .../nodes/accessors/TextureBicubicNode.js | 94 - three/addons/nodes/accessors/TextureNode.js | 367 - .../addons/nodes/accessors/TextureSizeNode.js | 35 - .../nodes/accessors/TextureStoreNode.js | 29 - three/addons/nodes/accessors/UVNode.js | 47 - three/addons/nodes/accessors/UserDataNode.js | 29 - three/addons/nodes/code/CodeNode.js | 78 - three/addons/nodes/code/ExpressionNode.js | 37 - three/addons/nodes/code/FunctionCallNode.js | 96 - three/addons/nodes/code/FunctionNode.js | 138 - three/addons/nodes/code/ScriptableNode.js | 488 - .../addons/nodes/code/ScriptableValueNode.js | 167 - three/addons/nodes/core/ArrayUniformNode.js | 26 - three/addons/nodes/core/AssignNode.js | 72 - three/addons/nodes/core/AttributeNode.js | 108 - three/addons/nodes/core/BypassNode.js | 45 - three/addons/nodes/core/CacheNode.js | 49 - three/addons/nodes/core/ConstNode.js | 32 - three/addons/nodes/core/ContextNode.js | 61 - three/addons/nodes/core/IndexNode.js | 66 - three/addons/nodes/core/InputNode.js | 83 - three/addons/nodes/core/LightingModel.js | 17 - three/addons/nodes/core/Node.js | 483 - three/addons/nodes/core/NodeAttribute.js | 15 - three/addons/nodes/core/NodeBuilder.js | 1251 - three/addons/nodes/core/NodeCache.js | 26 - three/addons/nodes/core/NodeCode.js | 15 - three/addons/nodes/core/NodeFrame.js | 135 - three/addons/nodes/core/NodeFunction.js | 22 - three/addons/nodes/core/NodeFunctionInput.js | 17 - three/addons/nodes/core/NodeKeywords.js | 80 - three/addons/nodes/core/NodeParser.js | 11 - three/addons/nodes/core/NodeUniform.js | 40 - three/addons/nodes/core/NodeUtils.js | 210 - three/addons/nodes/core/NodeVar.js | 14 - three/addons/nodes/core/NodeVarying.js | 17 - three/addons/nodes/core/OutputStructNode.js | 62 - three/addons/nodes/core/ParameterNode.js | 33 - three/addons/nodes/core/PropertyNode.js | 72 - three/addons/nodes/core/StackNode.js | 89 - three/addons/nodes/core/StructTypeNode.js | 24 - three/addons/nodes/core/TempNode.js | 58 - three/addons/nodes/core/UniformGroup.js | 13 - three/addons/nodes/core/UniformGroupNode.js | 36 - three/addons/nodes/core/UniformNode.js | 80 - three/addons/nodes/core/VarNode.js | 60 - three/addons/nodes/core/VaryingNode.js | 65 - three/addons/nodes/core/constants.js | 27 - three/addons/nodes/display/BlendModeNode.js | 99 - three/addons/nodes/display/BumpMapNode.js | 99 - .../nodes/display/ColorAdjustmentNode.js | 96 - three/addons/nodes/display/ColorSpaceNode.js | 108 - three/addons/nodes/display/FrontFacingNode.js | 27 - .../addons/nodes/display/GaussianBlurNode.js | 170 - three/addons/nodes/display/NormalMapNode.js | 108 - three/addons/nodes/display/PassNode.js | 182 - three/addons/nodes/display/PosterizeNode.js | 32 - three/addons/nodes/display/ToneMappingNode.js | 141 - .../addons/nodes/display/ViewportDepthNode.js | 97 - .../nodes/display/ViewportDepthTextureNode.js | 34 - three/addons/nodes/display/ViewportNode.js | 136 - .../display/ViewportSharedTextureNode.js | 31 - .../nodes/display/ViewportTextureNode.js | 75 - three/addons/nodes/fog/FogExp2Node.js | 35 - three/addons/nodes/fog/FogNode.js | 37 - three/addons/nodes/fog/FogRangeNode.js | 34 - three/addons/nodes/functions/BSDF/BRDF_GGX.js | 40 - .../nodes/functions/BSDF/BRDF_Lambert.js | 9 - .../addons/nodes/functions/BSDF/BRDF_Sheen.js | 57 - .../addons/nodes/functions/BSDF/DFGApprox.js | 30 - three/addons/nodes/functions/BSDF/D_GGX.js | 23 - .../nodes/functions/BSDF/EnvironmentBRDF.js | 13 - .../addons/nodes/functions/BSDF/F_Schlick.js | 16 - .../nodes/functions/BSDF/Schlick_to_F0.js | 21 - .../functions/BSDF/V_GGX_SmithCorrelated.js | 28 - .../nodes/functions/PhongLightingModel.js | 67 - .../nodes/functions/PhysicalLightingModel.js | 393 - .../material/getGeometryRoughness.js | 13 - .../nodes/functions/material/getRoughness.js | 18 - three/addons/nodes/geometry/RangeNode.js | 104 - three/addons/nodes/gpgpu/ComputeNode.js | 85 - three/addons/nodes/lighting/AONode.js | 27 - .../addons/nodes/lighting/AmbientLightNode.js | 27 - .../nodes/lighting/AnalyticLightNode.js | 233 - .../nodes/lighting/DirectionalLightNode.js | 40 - .../addons/nodes/lighting/EnvironmentNode.js | 181 - .../nodes/lighting/HemisphereLightNode.js | 55 - .../addons/nodes/lighting/IESSpotLightNode.js | 39 - three/addons/nodes/lighting/LightNode.js | 57 - three/addons/nodes/lighting/LightUtils.js | 17 - .../nodes/lighting/LightingContextNode.js | 66 - three/addons/nodes/lighting/LightingNode.js | 21 - three/addons/nodes/lighting/LightsNode.js | 188 - three/addons/nodes/lighting/PointLightNode.js | 68 - three/addons/nodes/lighting/SpotLightNode.js | 89 - three/addons/nodes/loaders/NodeLoader.js | 108 - .../nodes/loaders/NodeMaterialLoader.js | 59 - .../addons/nodes/loaders/NodeObjectLoader.js | 70 - .../materials/InstancedPointsNodeMaterial.js | 162 - .../nodes/materials/Line2NodeMaterial.js | 448 - .../nodes/materials/LineBasicNodeMaterial.js | 28 - .../nodes/materials/LineDashedNodeMaterial.js | 54 - three/addons/nodes/materials/Materials.js | 15 - .../nodes/materials/MeshBasicNodeMaterial.js | 28 - .../materials/MeshLambertNodeMaterial.js | 34 - .../nodes/materials/MeshNormalNodeMaterial.js | 40 - .../nodes/materials/MeshPhongNodeMaterial.js | 65 - .../materials/MeshPhysicalNodeMaterial.js | 155 - .../materials/MeshStandardNodeMaterial.js | 80 - three/addons/nodes/materials/NodeMaterial.js | 568 - .../nodes/materials/PointsNodeMaterial.js | 39 - .../nodes/materials/SpriteNodeMaterial.js | 96 - three/addons/nodes/materialx/DISCLAIMER.md | 199 - .../addons/nodes/materialx/MaterialXNodes.js | 68 - three/addons/nodes/materialx/lib/mx_hsv.js | 130 - three/addons/nodes/materialx/lib/mx_noise.js | 1430 - .../nodes/materialx/lib/mx_transform_color.js | 29 - three/addons/nodes/math/CondNode.js | 86 - three/addons/nodes/math/HashNode.js | 34 - three/addons/nodes/math/MathNode.js | 361 - three/addons/nodes/math/OperatorNode.js | 266 - .../addons/nodes/parsers/GLSLNodeFunction.js | 152 - three/addons/nodes/parsers/GLSLNodeParser.js | 14 - three/addons/nodes/procedural/CheckerNode.js | 42 - three/addons/nodes/shadernode/ShaderNode.js | 625 - three/addons/nodes/utils/ArrayElementNode.js | 35 - three/addons/nodes/utils/ConvertNode.js | 65 - three/addons/nodes/utils/DiscardNode.js | 27 - three/addons/nodes/utils/EquirectUVNode.js | 33 - .../nodes/utils/FunctionOverloadingNode.js | 95 - three/addons/nodes/utils/JoinNode.js | 61 - three/addons/nodes/utils/LoopNode.js | 198 - three/addons/nodes/utils/MatcapUVNode.js | 30 - three/addons/nodes/utils/MaxMipLevelNode.js | 46 - three/addons/nodes/utils/OscNode.js | 81 - three/addons/nodes/utils/PackingNode.js | 55 - three/addons/nodes/utils/RemapNode.js | 42 - three/addons/nodes/utils/RotateUVNode.js | 43 - three/addons/nodes/utils/SetNode.js | 62 - .../nodes/utils/SpecularMIPLevelNode.js | 37 - three/addons/nodes/utils/SplitNode.js | 112 - three/addons/nodes/utils/SpriteSheetUVNode.js | 41 - three/addons/nodes/utils/TimerNode.js | 94 - .../nodes/utils/TriplanarTexturesNode.js | 62 - three/addons/objects/GroundProjectedSkybox.js | 172 - three/addons/objects/InstancedPoints.js | 21 - three/addons/objects/Lensflare.js | 397 - three/addons/objects/MarchingCubes.js | 1176 - three/addons/objects/QuadMesh.js | 60 - three/addons/objects/Reflector.js | 264 - three/addons/objects/ReflectorForSSRPass.js | 352 - three/addons/objects/Refractor.js | 327 - three/addons/objects/ShadowMesh.js | 80 - three/addons/objects/Sky.js | 219 - three/addons/objects/Water.js | 333 - three/addons/objects/Water2.js | 361 - three/addons/offscreen/jank.js | 45 - three/addons/offscreen/offscreen.js | 8 - three/addons/offscreen/scene.js | 86 - three/addons/physics/AmmoPhysics.js | 306 - three/addons/physics/RapierPhysics.js | 220 - three/addons/postprocessing/AfterimagePass.js | 104 - three/addons/postprocessing/BloomPass.js | 172 - three/addons/postprocessing/BokehPass.js | 141 - three/addons/postprocessing/ClearPass.js | 46 - .../addons/postprocessing/CubeTexturePass.js | 85 - three/addons/postprocessing/DotScreenPass.js | 65 - three/addons/postprocessing/EffectComposer.js | 231 - three/addons/postprocessing/FilmPass.js | 64 - three/addons/postprocessing/GTAOPass.js | 572 - three/addons/postprocessing/GlitchPass.js | 128 - three/addons/postprocessing/HalftonePass.js | 79 - three/addons/postprocessing/LUTPass.js | 174 - three/addons/postprocessing/MaskPass.js | 104 - three/addons/postprocessing/OutlinePass.js | 654 - three/addons/postprocessing/OutputPass.js | 95 - three/addons/postprocessing/Pass.js | 95 - three/addons/postprocessing/RenderPass.js | 99 - .../postprocessing/RenderPixelatedPass.js | 235 - three/addons/postprocessing/SAOPass.js | 335 - three/addons/postprocessing/SMAAPass.js | 199 - three/addons/postprocessing/SSAARenderPass.js | 228 - three/addons/postprocessing/SSAOPass.js | 420 - three/addons/postprocessing/SSRPass.js | 641 - three/addons/postprocessing/SavePass.js | 79 - three/addons/postprocessing/ShaderPass.js | 77 - three/addons/postprocessing/TAARenderPass.js | 188 - three/addons/postprocessing/TexturePass.js | 67 - .../addons/postprocessing/UnrealBloomPass.js | 415 - three/addons/renderers/CSS2DRenderer.js | 215 - three/addons/renderers/CSS3DRenderer.js | 329 - three/addons/renderers/Projector.js | 918 - three/addons/renderers/SVGRenderer.js | 556 - three/addons/renderers/common/Animation.js | 47 - three/addons/renderers/common/Attributes.js | 75 - three/addons/renderers/common/Backend.js | 181 - three/addons/renderers/common/Background.js | 134 - three/addons/renderers/common/Binding.js | 25 - three/addons/renderers/common/Bindings.js | 173 - three/addons/renderers/common/Buffer.js | 38 - three/addons/renderers/common/BufferUtils.js | 33 - three/addons/renderers/common/ChainMap.js | 89 - three/addons/renderers/common/Color4.js | 37 - .../renderers/common/ComputePipeline.js | 17 - three/addons/renderers/common/Constants.js | 14 - .../renderers/common/CubeRenderTarget.js | 65 - three/addons/renderers/common/DataMap.js | 54 - three/addons/renderers/common/Geometries.js | 215 - three/addons/renderers/common/Info.js | 83 - three/addons/renderers/common/Pipeline.js | 13 - three/addons/renderers/common/Pipelines.js | 322 - .../addons/renderers/common/PostProcessing.js | 25 - .../renderers/common/ProgrammableStage.js | 18 - .../addons/renderers/common/RenderContext.js | 41 - .../addons/renderers/common/RenderContexts.js | 74 - three/addons/renderers/common/RenderList.js | 186 - three/addons/renderers/common/RenderLists.js | 38 - three/addons/renderers/common/RenderObject.js | 176 - .../addons/renderers/common/RenderObjects.js | 91 - .../addons/renderers/common/RenderPipeline.js | 16 - three/addons/renderers/common/Renderer.js | 1031 - .../addons/renderers/common/SampledTexture.js | 83 - three/addons/renderers/common/Sampler.js | 18 - .../addons/renderers/common/StorageBuffer.js | 17 - .../addons/renderers/common/StorageTexture.js | 20 - three/addons/renderers/common/Textures.js | 334 - three/addons/renderers/common/Uniform.js | 140 - .../addons/renderers/common/UniformBuffer.js | 15 - .../addons/renderers/common/UniformsGroup.js | 299 - .../common/nodes/NodeBuilderState.js | 43 - .../common/nodes/NodeSampledTexture.js | 49 - .../renderers/common/nodes/NodeSampler.js | 15 - .../renderers/common/nodes/NodeUniform.js | 135 - .../common/nodes/NodeUniformsGroup.js | 44 - three/addons/renderers/common/nodes/Nodes.js | 493 - .../webgl-legacy/nodes/GLSL1NodeBuilder.js | 340 - .../renderers/webgl-legacy/nodes/SlotNode.js | 26 - .../webgl-legacy/nodes/WebGLNodeBuilder.js | 794 - .../webgl-legacy/nodes/WebGLNodes.js | 51 - three/addons/renderers/webgl/WebGLBackend.js | 1001 - .../renderers/webgl/nodes/GLSLNodeBuilder.js | 672 - .../webgl/utils/WebGLAttributeUtils.js | 171 - .../webgl/utils/WebGLCapabilities.js | 36 - .../renderers/webgl/utils/WebGLExtensions.js | 36 - .../renderers/webgl/utils/WebGLState.js | 541 - .../webgl/utils/WebGLTextureUtils.js | 281 - .../renderers/webgl/utils/WebGLUtils.js | 284 - .../addons/renderers/webgpu/WebGPUBackend.js | 1134 - .../addons/renderers/webgpu/WebGPURenderer.js | 48 - .../renderers/webgpu/nodes/WGSLNodeBuilder.js | 1086 - .../webgpu/nodes/WGSLNodeFunction.js | 104 - .../renderers/webgpu/nodes/WGSLNodeParser.js | 14 - .../webgpu/utils/WebGPUAttributeUtils.js | 279 - .../webgpu/utils/WebGPUBindingUtils.js | 244 - .../renderers/webgpu/utils/WebGPUConstants.js | 324 - .../webgpu/utils/WebGPUPipelineUtils.js | 557 - .../webgpu/utils/WebGPUTexturePassUtils.js | 285 - .../webgpu/utils/WebGPUTextureUtils.js | 967 - .../renderers/webgpu/utils/WebGPUUtils.js | 93 - .../shaders/ACESFilmicToneMappingShader.js | 89 - three/addons/shaders/AfterimageShader.js | 58 - three/addons/shaders/BasicShader.js | 29 - three/addons/shaders/BleachBypassShader.js | 62 - three/addons/shaders/BlendShader.js | 49 - three/addons/shaders/BokehShader.js | 145 - three/addons/shaders/BokehShader2.js | 397 - .../shaders/BrightnessContrastShader.js | 56 - three/addons/shaders/ColorCorrectionShader.js | 52 - three/addons/shaders/ColorifyShader.js | 51 - three/addons/shaders/ConvolutionShader.js | 103 - three/addons/shaders/CopyShader.js | 45 - three/addons/shaders/DOFMipMapShader.js | 56 - .../addons/shaders/DepthLimitedBlurShader.js | 171 - three/addons/shaders/DigitalGlitch.js | 101 - three/addons/shaders/DotScreenShader.js | 70 - three/addons/shaders/ExposureShader.js | 44 - three/addons/shaders/FXAAShader.js | 288 - three/addons/shaders/FilmShader.js | 59 - three/addons/shaders/FocusShader.js | 89 - three/addons/shaders/FreiChenShader.js | 96 - three/addons/shaders/GTAOShader.js | 424 - three/addons/shaders/GammaCorrectionShader.js | 43 - three/addons/shaders/GodRaysShader.js | 321 - three/addons/shaders/HalftoneShader.js | 312 - three/addons/shaders/HorizontalBlurShader.js | 59 - .../shaders/HorizontalTiltShiftShader.js | 63 - three/addons/shaders/HueSaturationShader.js | 67 - three/addons/shaders/KaleidoShader.js | 58 - .../shaders/LuminosityHighPassShader.js | 66 - three/addons/shaders/LuminosityShader.js | 48 - three/addons/shaders/MMDToonShader.js | 134 - three/addons/shaders/MirrorShader.js | 56 - three/addons/shaders/NormalMapShader.js | 55 - three/addons/shaders/OutputShader.js | 81 - three/addons/shaders/PoissonDenoiseShader.js | 226 - three/addons/shaders/RGBShiftShader.js | 54 - three/addons/shaders/SAOShader.js | 179 - three/addons/shaders/SMAAShader.js | 466 - three/addons/shaders/SSAOShader.js | 300 - three/addons/shaders/SSRShader.js | 370 - three/addons/shaders/SepiaShader.js | 52 - three/addons/shaders/SobelOperatorShader.js | 92 - .../shaders/SubsurfaceScatteringShader.js | 90 - three/addons/shaders/TechnicolorShader.js | 45 - three/addons/shaders/ToonShader.js | 326 - three/addons/shaders/TriangleBlurShader.js | 74 - three/addons/shaders/UnpackDepthRGBAShader.js | 47 - three/addons/shaders/VelocityShader.js | 130 - three/addons/shaders/VerticalBlurShader.js | 59 - .../addons/shaders/VerticalTiltShiftShader.js | 63 - three/addons/shaders/VignetteShader.js | 51 - three/addons/shaders/VolumeShader.js | 289 - three/addons/shaders/WaterRefractionShader.js | 95 - three/addons/textures/FlakesTexture.js | 40 - three/addons/transpiler/AST.js | 270 - three/addons/transpiler/GLSLDecoder.js | 941 - three/addons/transpiler/ShaderToyDecoder.js | 49 - three/addons/transpiler/TSLEncoder.js | 715 - three/addons/transpiler/Transpiler.js | 18 - three/addons/utils/BufferGeometryUtils.js | 1375 - three/addons/utils/CameraUtils.js | 73 - three/addons/utils/GPUStatsPanel.js | 128 - .../addons/utils/GeometryCompressionUtils.js | 639 - three/addons/utils/GeometryUtils.js | 221 - three/addons/utils/LDrawUtils.js | 202 - three/addons/utils/PackedPhongMaterial.js | 178 - three/addons/utils/SceneUtils.js | 254 - three/addons/utils/ShadowMapViewer.js | 210 - three/addons/utils/SkeletonUtils.js | 413 - three/addons/utils/SortUtils.js | 158 - three/addons/utils/TextureUtils.js | 98 - three/addons/utils/UVsDebug.js | 165 - three/addons/utils/WorkerPool.js | 102 - three/addons/webxr/ARButton.js | 222 - three/addons/webxr/OculusHandModel.js | 109 - three/addons/webxr/OculusHandPointerModel.js | 413 - three/addons/webxr/Text2D.js | 38 - three/addons/webxr/VRButton.js | 215 - three/addons/webxr/XRButton.js | 214 - .../addons/webxr/XRControllerModelFactory.js | 299 - three/addons/webxr/XREstimatedLight.js | 223 - three/addons/webxr/XRHandMeshModel.js | 112 - three/addons/webxr/XRHandModelFactory.js | 105 - three/addons/webxr/XRHandPrimitiveModel.js | 103 - three/addons/webxr/XRPlanes.js | 100 - three/three.js | 53468 ---------------- three/three.module.js | 53044 --------------- worker.js | 20 - 579 files changed, 613 insertions(+), 324508 deletions(-) delete mode 100644 .github/dependabot.yml delete mode 100644 .gitignore delete mode 100644 App.js delete mode 100644 Entity.js delete mode 100644 README.md delete mode 100644 RateCounter.js delete mode 100644 World.js delete mode 100644 favicon.ico create mode 100644 objects.js rename secure_server.py => server.py (87%) create mode 100644 threads.js delete mode 100644 threads/Base.js delete mode 100644 threads/Entity.js delete mode 100644 threads/Main.js delete mode 100644 threads/Pathing.js delete mode 100644 threads/Renderer.js delete mode 100644 threads/Terrain.js delete mode 100644 three/addons/Addons.js delete mode 100644 three/addons/animation/AnimationClipCreator.js delete mode 100644 three/addons/animation/CCDIKSolver.js delete mode 100644 three/addons/animation/MMDAnimationHelper.js delete mode 100644 three/addons/animation/MMDPhysics.js delete mode 100644 three/addons/cameras/CinematicCamera.js delete mode 100644 three/addons/capabilities/WebGL.js delete mode 100644 three/addons/capabilities/WebGPU.js delete mode 100644 three/addons/controls/ArcballControls.js delete mode 100644 three/addons/controls/DragControls.js delete mode 100644 three/addons/controls/FirstPersonControls.js delete mode 100644 three/addons/controls/FlyControls.js delete mode 100644 three/addons/controls/MapControls.js delete mode 100644 three/addons/controls/OrbitControls.js delete mode 100644 three/addons/controls/OrbitControlsModified.js delete mode 100644 three/addons/controls/PointerLockControls.js delete mode 100644 three/addons/controls/TrackballControls.js delete mode 100644 three/addons/controls/TransformControls.js delete mode 100644 three/addons/csm/CSM.js delete mode 100644 three/addons/csm/CSMFrustum.js delete mode 100644 three/addons/csm/CSMHelper.js delete mode 100644 three/addons/csm/CSMShader.js delete mode 100644 three/addons/curves/CurveExtras.js delete mode 100644 three/addons/curves/NURBSCurve.js delete mode 100644 three/addons/curves/NURBSSurface.js delete mode 100644 three/addons/curves/NURBSUtils.js delete mode 100644 three/addons/effects/AnaglyphEffect.js delete mode 100644 three/addons/effects/AsciiEffect.js delete mode 100644 three/addons/effects/OutlineEffect.js delete mode 100644 three/addons/effects/ParallaxBarrierEffect.js delete mode 100644 three/addons/effects/PeppersGhostEffect.js delete mode 100644 three/addons/effects/StereoEffect.js delete mode 100644 three/addons/environments/DebugEnvironment.js delete mode 100644 three/addons/environments/RoomEnvironment.js delete mode 100644 three/addons/exporters/DRACOExporter.js delete mode 100644 three/addons/exporters/EXRExporter.js delete mode 100644 three/addons/exporters/GLTFExporter.js delete mode 100644 three/addons/exporters/KTX2Exporter.js delete mode 100644 three/addons/exporters/MMDExporter.js delete mode 100644 three/addons/exporters/OBJExporter.js delete mode 100644 three/addons/exporters/PLYExporter.js delete mode 100644 three/addons/exporters/STLExporter.js delete mode 100644 three/addons/exporters/USDZExporter.js delete mode 100644 three/addons/geometries/BoxLineGeometry.js delete mode 100644 three/addons/geometries/ConvexGeometry.js delete mode 100644 three/addons/geometries/DecalGeometry.js delete mode 100644 three/addons/geometries/InstancedPointsGeometry.js delete mode 100644 three/addons/geometries/ParametricGeometries.js delete mode 100644 three/addons/geometries/ParametricGeometry.js delete mode 100644 three/addons/geometries/RoundedBoxGeometry.js delete mode 100644 three/addons/geometries/SDFGeometryGenerator.js delete mode 100644 three/addons/geometries/TeapotGeometry.js delete mode 100644 three/addons/geometries/TextGeometry.js delete mode 100644 three/addons/helpers/LightProbeHelper.js delete mode 100644 three/addons/helpers/OctreeHelper.js delete mode 100644 three/addons/helpers/PositionalAudioHelper.js delete mode 100644 three/addons/helpers/RectAreaLightHelper.js delete mode 100644 three/addons/helpers/TextureHelper.js delete mode 100644 three/addons/helpers/VertexNormalsHelper.js delete mode 100644 three/addons/helpers/VertexTangentsHelper.js delete mode 100644 three/addons/helpers/ViewHelper.js delete mode 100644 three/addons/interactive/HTMLMesh.js delete mode 100644 three/addons/interactive/InteractiveGroup.js delete mode 100644 three/addons/interactive/SelectionBox.js delete mode 100644 three/addons/interactive/SelectionHelper.js delete mode 100644 three/addons/libs/ammo.wasm.js delete mode 100644 three/addons/libs/ammo.wasm.wasm delete mode 100644 three/addons/libs/basis/README.md delete mode 100644 three/addons/libs/basis/basis_transcoder.js delete mode 100644 three/addons/libs/basis/basis_transcoder.wasm delete mode 100644 three/addons/libs/chevrotain.module.min.js delete mode 100644 three/addons/libs/draco/README.md delete mode 100644 three/addons/libs/draco/draco_decoder.js delete mode 100644 three/addons/libs/draco/draco_decoder.wasm delete mode 100644 three/addons/libs/draco/draco_encoder.js delete mode 100644 three/addons/libs/draco/draco_wasm_wrapper.js delete mode 100644 three/addons/libs/draco/gltf/draco_decoder.js delete mode 100644 three/addons/libs/draco/gltf/draco_decoder.wasm delete mode 100644 three/addons/libs/draco/gltf/draco_encoder.js delete mode 100644 three/addons/libs/draco/gltf/draco_wasm_wrapper.js delete mode 100644 three/addons/libs/ecsy.module.js delete mode 100644 three/addons/libs/fflate.module.js delete mode 100644 three/addons/libs/ktx-parse.module.js delete mode 100644 three/addons/libs/lil-gui.module.min.js delete mode 100644 three/addons/libs/lottie_canvas.module.js delete mode 100644 three/addons/libs/meshopt_decoder.module.js delete mode 100644 three/addons/libs/mikktspace.module.js delete mode 100644 three/addons/libs/mmdparser.module.js delete mode 100644 three/addons/libs/motion-controllers.module.js delete mode 100644 three/addons/libs/opentype.module.js delete mode 100644 three/addons/libs/potpack.module.js delete mode 100644 three/addons/libs/rhino3dm/rhino3dm.js delete mode 100644 three/addons/libs/rhino3dm/rhino3dm.module.js delete mode 100644 three/addons/libs/rhino3dm/rhino3dm.wasm delete mode 100644 three/addons/libs/stats.module.js delete mode 100644 three/addons/libs/surfaceNet.js delete mode 100644 three/addons/libs/tween.module.js delete mode 100644 three/addons/libs/utif.module.js delete mode 100644 three/addons/libs/zstddec.module.js delete mode 100644 three/addons/lights/IESSpotLight.js delete mode 100644 three/addons/lights/LightProbeGenerator.js delete mode 100644 three/addons/lights/RectAreaLightUniformsLib.js delete mode 100644 three/addons/lines/Line2.js delete mode 100644 three/addons/lines/LineGeometry.js delete mode 100644 three/addons/lines/LineMaterial.js delete mode 100644 three/addons/lines/LineSegments2.js delete mode 100644 three/addons/lines/LineSegmentsGeometry.js delete mode 100644 three/addons/lines/Wireframe.js delete mode 100644 three/addons/lines/WireframeGeometry2.js delete mode 100644 three/addons/loaders/3DMLoader.js delete mode 100644 three/addons/loaders/3MFLoader.js delete mode 100644 three/addons/loaders/AMFLoader.js delete mode 100644 three/addons/loaders/BVHLoader.js delete mode 100644 three/addons/loaders/ColladaLoader.js delete mode 100644 three/addons/loaders/DDSLoader.js delete mode 100644 three/addons/loaders/DRACOLoader.js delete mode 100644 three/addons/loaders/EXRLoader.js delete mode 100644 three/addons/loaders/FBXLoader.js delete mode 100644 three/addons/loaders/FontLoader.js delete mode 100644 three/addons/loaders/GCodeLoader.js delete mode 100644 three/addons/loaders/GLTFLoader.js delete mode 100644 three/addons/loaders/HDRCubeTextureLoader.js delete mode 100644 three/addons/loaders/IESLoader.js delete mode 100644 three/addons/loaders/KMZLoader.js delete mode 100644 three/addons/loaders/KTX2Loader.js delete mode 100644 three/addons/loaders/KTXLoader.js delete mode 100644 three/addons/loaders/LDrawLoader.js delete mode 100644 three/addons/loaders/LUT3dlLoader.js delete mode 100644 three/addons/loaders/LUTCubeLoader.js delete mode 100644 three/addons/loaders/LUTImageLoader.js delete mode 100644 three/addons/loaders/LWOLoader.js delete mode 100644 three/addons/loaders/LogLuvLoader.js delete mode 100644 three/addons/loaders/LottieLoader.js delete mode 100644 three/addons/loaders/MD2Loader.js delete mode 100644 three/addons/loaders/MDDLoader.js delete mode 100644 three/addons/loaders/MMDLoader.js delete mode 100644 three/addons/loaders/MTLLoader.js delete mode 100644 three/addons/loaders/MaterialXLoader.js delete mode 100644 three/addons/loaders/NRRDLoader.js delete mode 100644 three/addons/loaders/OBJLoader.js delete mode 100644 three/addons/loaders/PCDLoader.js delete mode 100644 three/addons/loaders/PDBLoader.js delete mode 100644 three/addons/loaders/PLYLoader.js delete mode 100644 three/addons/loaders/PVRLoader.js delete mode 100644 three/addons/loaders/RGBELoader.js delete mode 100644 three/addons/loaders/RGBMLoader.js delete mode 100644 three/addons/loaders/STLLoader.js delete mode 100644 three/addons/loaders/SVGLoader.js delete mode 100644 three/addons/loaders/TDSLoader.js delete mode 100644 three/addons/loaders/TGALoader.js delete mode 100644 three/addons/loaders/TIFFLoader.js delete mode 100644 three/addons/loaders/TTFLoader.js delete mode 100644 three/addons/loaders/TiltLoader.js delete mode 100644 three/addons/loaders/USDZLoader.js delete mode 100644 three/addons/loaders/VOXLoader.js delete mode 100644 three/addons/loaders/VRMLLoader.js delete mode 100644 three/addons/loaders/VTKLoader.js delete mode 100644 three/addons/loaders/XYZLoader.js delete mode 100644 three/addons/loaders/lwo/IFFParser.js delete mode 100644 three/addons/loaders/lwo/LWO2Parser.js delete mode 100644 three/addons/loaders/lwo/LWO3Parser.js delete mode 100644 three/addons/materials/MeshGouraudMaterial.js delete mode 100644 three/addons/math/Capsule.js delete mode 100644 three/addons/math/ColorConverter.js delete mode 100644 three/addons/math/ConvexHull.js delete mode 100644 three/addons/math/ImprovedNoise.js delete mode 100644 three/addons/math/Lut.js delete mode 100644 three/addons/math/MeshSurfaceSampler.js delete mode 100644 three/addons/math/OBB.js delete mode 100644 three/addons/math/Octree.js delete mode 100644 three/addons/math/SimplexNoise.js delete mode 100644 three/addons/misc/ConvexObjectBreaker.js delete mode 100644 three/addons/misc/GPUComputationRenderer.js delete mode 100644 three/addons/misc/Gyroscope.js delete mode 100644 three/addons/misc/MD2Character.js delete mode 100644 three/addons/misc/MD2CharacterComplex.js delete mode 100644 three/addons/misc/MorphAnimMesh.js delete mode 100644 three/addons/misc/MorphBlendMesh.js delete mode 100644 three/addons/misc/ProgressiveLightMap.js delete mode 100644 three/addons/misc/RollerCoaster.js delete mode 100644 three/addons/misc/Timer.js delete mode 100644 three/addons/misc/TubePainter.js delete mode 100644 three/addons/misc/Volume.js delete mode 100644 three/addons/misc/VolumeSlice.js delete mode 100644 three/addons/modifiers/CurveModifier.js delete mode 100644 three/addons/modifiers/EdgeSplitModifier.js delete mode 100644 three/addons/modifiers/SimplifyModifier.js delete mode 100644 three/addons/modifiers/TessellateModifier.js delete mode 100644 three/addons/nodes/Nodes.js delete mode 100644 three/addons/nodes/accessors/BitangentNode.js delete mode 100644 three/addons/nodes/accessors/BufferAttributeNode.js delete mode 100644 three/addons/nodes/accessors/BufferNode.js delete mode 100644 three/addons/nodes/accessors/CameraNode.js delete mode 100644 three/addons/nodes/accessors/CubeTextureNode.js delete mode 100644 three/addons/nodes/accessors/InstanceNode.js delete mode 100644 three/addons/nodes/accessors/InstancedPointsMaterialNode.js delete mode 100644 three/addons/nodes/accessors/MaterialNode.js delete mode 100644 three/addons/nodes/accessors/MaterialReferenceNode.js delete mode 100644 three/addons/nodes/accessors/ModelNode.js delete mode 100644 three/addons/nodes/accessors/ModelViewProjectionNode.js delete mode 100644 three/addons/nodes/accessors/MorphNode.js delete mode 100644 three/addons/nodes/accessors/NormalNode.js delete mode 100644 three/addons/nodes/accessors/Object3DNode.js delete mode 100644 three/addons/nodes/accessors/PointUVNode.js delete mode 100644 three/addons/nodes/accessors/PositionNode.js delete mode 100644 three/addons/nodes/accessors/ReferenceNode.js delete mode 100644 three/addons/nodes/accessors/ReflectVectorNode.js delete mode 100644 three/addons/nodes/accessors/SceneNode.js delete mode 100644 three/addons/nodes/accessors/SkinningNode.js delete mode 100644 three/addons/nodes/accessors/StorageBufferNode.js delete mode 100644 three/addons/nodes/accessors/TangentNode.js delete mode 100644 three/addons/nodes/accessors/TextureBicubicNode.js delete mode 100644 three/addons/nodes/accessors/TextureNode.js delete mode 100644 three/addons/nodes/accessors/TextureSizeNode.js delete mode 100644 three/addons/nodes/accessors/TextureStoreNode.js delete mode 100644 three/addons/nodes/accessors/UVNode.js delete mode 100644 three/addons/nodes/accessors/UserDataNode.js delete mode 100644 three/addons/nodes/code/CodeNode.js delete mode 100644 three/addons/nodes/code/ExpressionNode.js delete mode 100644 three/addons/nodes/code/FunctionCallNode.js delete mode 100644 three/addons/nodes/code/FunctionNode.js delete mode 100644 three/addons/nodes/code/ScriptableNode.js delete mode 100644 three/addons/nodes/code/ScriptableValueNode.js delete mode 100644 three/addons/nodes/core/ArrayUniformNode.js delete mode 100644 three/addons/nodes/core/AssignNode.js delete mode 100644 three/addons/nodes/core/AttributeNode.js delete mode 100644 three/addons/nodes/core/BypassNode.js delete mode 100644 three/addons/nodes/core/CacheNode.js delete mode 100644 three/addons/nodes/core/ConstNode.js delete mode 100644 three/addons/nodes/core/ContextNode.js delete mode 100644 three/addons/nodes/core/IndexNode.js delete mode 100644 three/addons/nodes/core/InputNode.js delete mode 100644 three/addons/nodes/core/LightingModel.js delete mode 100644 three/addons/nodes/core/Node.js delete mode 100644 three/addons/nodes/core/NodeAttribute.js delete mode 100644 three/addons/nodes/core/NodeBuilder.js delete mode 100644 three/addons/nodes/core/NodeCache.js delete mode 100644 three/addons/nodes/core/NodeCode.js delete mode 100644 three/addons/nodes/core/NodeFrame.js delete mode 100644 three/addons/nodes/core/NodeFunction.js delete mode 100644 three/addons/nodes/core/NodeFunctionInput.js delete mode 100644 three/addons/nodes/core/NodeKeywords.js delete mode 100644 three/addons/nodes/core/NodeParser.js delete mode 100644 three/addons/nodes/core/NodeUniform.js delete mode 100644 three/addons/nodes/core/NodeUtils.js delete mode 100644 three/addons/nodes/core/NodeVar.js delete mode 100644 three/addons/nodes/core/NodeVarying.js delete mode 100644 three/addons/nodes/core/OutputStructNode.js delete mode 100644 three/addons/nodes/core/ParameterNode.js delete mode 100644 three/addons/nodes/core/PropertyNode.js delete mode 100644 three/addons/nodes/core/StackNode.js delete mode 100644 three/addons/nodes/core/StructTypeNode.js delete mode 100644 three/addons/nodes/core/TempNode.js delete mode 100644 three/addons/nodes/core/UniformGroup.js delete mode 100644 three/addons/nodes/core/UniformGroupNode.js delete mode 100644 three/addons/nodes/core/UniformNode.js delete mode 100644 three/addons/nodes/core/VarNode.js delete mode 100644 three/addons/nodes/core/VaryingNode.js delete mode 100644 three/addons/nodes/core/constants.js delete mode 100644 three/addons/nodes/display/BlendModeNode.js delete mode 100644 three/addons/nodes/display/BumpMapNode.js delete mode 100644 three/addons/nodes/display/ColorAdjustmentNode.js delete mode 100644 three/addons/nodes/display/ColorSpaceNode.js delete mode 100644 three/addons/nodes/display/FrontFacingNode.js delete mode 100644 three/addons/nodes/display/GaussianBlurNode.js delete mode 100644 three/addons/nodes/display/NormalMapNode.js delete mode 100644 three/addons/nodes/display/PassNode.js delete mode 100644 three/addons/nodes/display/PosterizeNode.js delete mode 100644 three/addons/nodes/display/ToneMappingNode.js delete mode 100644 three/addons/nodes/display/ViewportDepthNode.js delete mode 100644 three/addons/nodes/display/ViewportDepthTextureNode.js delete mode 100644 three/addons/nodes/display/ViewportNode.js delete mode 100644 three/addons/nodes/display/ViewportSharedTextureNode.js delete mode 100644 three/addons/nodes/display/ViewportTextureNode.js delete mode 100644 three/addons/nodes/fog/FogExp2Node.js delete mode 100644 three/addons/nodes/fog/FogNode.js delete mode 100644 three/addons/nodes/fog/FogRangeNode.js delete mode 100644 three/addons/nodes/functions/BSDF/BRDF_GGX.js delete mode 100644 three/addons/nodes/functions/BSDF/BRDF_Lambert.js delete mode 100644 three/addons/nodes/functions/BSDF/BRDF_Sheen.js delete mode 100644 three/addons/nodes/functions/BSDF/DFGApprox.js delete mode 100644 three/addons/nodes/functions/BSDF/D_GGX.js delete mode 100644 three/addons/nodes/functions/BSDF/EnvironmentBRDF.js delete mode 100644 three/addons/nodes/functions/BSDF/F_Schlick.js delete mode 100644 three/addons/nodes/functions/BSDF/Schlick_to_F0.js delete mode 100644 three/addons/nodes/functions/BSDF/V_GGX_SmithCorrelated.js delete mode 100644 three/addons/nodes/functions/PhongLightingModel.js delete mode 100644 three/addons/nodes/functions/PhysicalLightingModel.js delete mode 100644 three/addons/nodes/functions/material/getGeometryRoughness.js delete mode 100644 three/addons/nodes/functions/material/getRoughness.js delete mode 100644 three/addons/nodes/geometry/RangeNode.js delete mode 100644 three/addons/nodes/gpgpu/ComputeNode.js delete mode 100644 three/addons/nodes/lighting/AONode.js delete mode 100644 three/addons/nodes/lighting/AmbientLightNode.js delete mode 100644 three/addons/nodes/lighting/AnalyticLightNode.js delete mode 100644 three/addons/nodes/lighting/DirectionalLightNode.js delete mode 100644 three/addons/nodes/lighting/EnvironmentNode.js delete mode 100644 three/addons/nodes/lighting/HemisphereLightNode.js delete mode 100644 three/addons/nodes/lighting/IESSpotLightNode.js delete mode 100644 three/addons/nodes/lighting/LightNode.js delete mode 100644 three/addons/nodes/lighting/LightUtils.js delete mode 100644 three/addons/nodes/lighting/LightingContextNode.js delete mode 100644 three/addons/nodes/lighting/LightingNode.js delete mode 100644 three/addons/nodes/lighting/LightsNode.js delete mode 100644 three/addons/nodes/lighting/PointLightNode.js delete mode 100644 three/addons/nodes/lighting/SpotLightNode.js delete mode 100644 three/addons/nodes/loaders/NodeLoader.js delete mode 100644 three/addons/nodes/loaders/NodeMaterialLoader.js delete mode 100644 three/addons/nodes/loaders/NodeObjectLoader.js delete mode 100644 three/addons/nodes/materials/InstancedPointsNodeMaterial.js delete mode 100644 three/addons/nodes/materials/Line2NodeMaterial.js delete mode 100644 three/addons/nodes/materials/LineBasicNodeMaterial.js delete mode 100644 three/addons/nodes/materials/LineDashedNodeMaterial.js delete mode 100644 three/addons/nodes/materials/Materials.js delete mode 100644 three/addons/nodes/materials/MeshBasicNodeMaterial.js delete mode 100644 three/addons/nodes/materials/MeshLambertNodeMaterial.js delete mode 100644 three/addons/nodes/materials/MeshNormalNodeMaterial.js delete mode 100644 three/addons/nodes/materials/MeshPhongNodeMaterial.js delete mode 100644 three/addons/nodes/materials/MeshPhysicalNodeMaterial.js delete mode 100644 three/addons/nodes/materials/MeshStandardNodeMaterial.js delete mode 100644 three/addons/nodes/materials/NodeMaterial.js delete mode 100644 three/addons/nodes/materials/PointsNodeMaterial.js delete mode 100644 three/addons/nodes/materials/SpriteNodeMaterial.js delete mode 100644 three/addons/nodes/materialx/DISCLAIMER.md delete mode 100644 three/addons/nodes/materialx/MaterialXNodes.js delete mode 100644 three/addons/nodes/materialx/lib/mx_hsv.js delete mode 100644 three/addons/nodes/materialx/lib/mx_noise.js delete mode 100644 three/addons/nodes/materialx/lib/mx_transform_color.js delete mode 100644 three/addons/nodes/math/CondNode.js delete mode 100644 three/addons/nodes/math/HashNode.js delete mode 100644 three/addons/nodes/math/MathNode.js delete mode 100644 three/addons/nodes/math/OperatorNode.js delete mode 100644 three/addons/nodes/parsers/GLSLNodeFunction.js delete mode 100644 three/addons/nodes/parsers/GLSLNodeParser.js delete mode 100644 three/addons/nodes/procedural/CheckerNode.js delete mode 100644 three/addons/nodes/shadernode/ShaderNode.js delete mode 100644 three/addons/nodes/utils/ArrayElementNode.js delete mode 100644 three/addons/nodes/utils/ConvertNode.js delete mode 100644 three/addons/nodes/utils/DiscardNode.js delete mode 100644 three/addons/nodes/utils/EquirectUVNode.js delete mode 100644 three/addons/nodes/utils/FunctionOverloadingNode.js delete mode 100644 three/addons/nodes/utils/JoinNode.js delete mode 100644 three/addons/nodes/utils/LoopNode.js delete mode 100644 three/addons/nodes/utils/MatcapUVNode.js delete mode 100644 three/addons/nodes/utils/MaxMipLevelNode.js delete mode 100644 three/addons/nodes/utils/OscNode.js delete mode 100644 three/addons/nodes/utils/PackingNode.js delete mode 100644 three/addons/nodes/utils/RemapNode.js delete mode 100644 three/addons/nodes/utils/RotateUVNode.js delete mode 100644 three/addons/nodes/utils/SetNode.js delete mode 100644 three/addons/nodes/utils/SpecularMIPLevelNode.js delete mode 100644 three/addons/nodes/utils/SplitNode.js delete mode 100644 three/addons/nodes/utils/SpriteSheetUVNode.js delete mode 100644 three/addons/nodes/utils/TimerNode.js delete mode 100644 three/addons/nodes/utils/TriplanarTexturesNode.js delete mode 100644 three/addons/objects/GroundProjectedSkybox.js delete mode 100644 three/addons/objects/InstancedPoints.js delete mode 100644 three/addons/objects/Lensflare.js delete mode 100644 three/addons/objects/MarchingCubes.js delete mode 100644 three/addons/objects/QuadMesh.js delete mode 100644 three/addons/objects/Reflector.js delete mode 100644 three/addons/objects/ReflectorForSSRPass.js delete mode 100644 three/addons/objects/Refractor.js delete mode 100644 three/addons/objects/ShadowMesh.js delete mode 100644 three/addons/objects/Sky.js delete mode 100644 three/addons/objects/Water.js delete mode 100644 three/addons/objects/Water2.js delete mode 100644 three/addons/offscreen/jank.js delete mode 100644 three/addons/offscreen/offscreen.js delete mode 100644 three/addons/offscreen/scene.js delete mode 100644 three/addons/physics/AmmoPhysics.js delete mode 100644 three/addons/physics/RapierPhysics.js delete mode 100644 three/addons/postprocessing/AfterimagePass.js delete mode 100644 three/addons/postprocessing/BloomPass.js delete mode 100644 three/addons/postprocessing/BokehPass.js delete mode 100644 three/addons/postprocessing/ClearPass.js delete mode 100644 three/addons/postprocessing/CubeTexturePass.js delete mode 100644 three/addons/postprocessing/DotScreenPass.js delete mode 100644 three/addons/postprocessing/EffectComposer.js delete mode 100644 three/addons/postprocessing/FilmPass.js delete mode 100644 three/addons/postprocessing/GTAOPass.js delete mode 100644 three/addons/postprocessing/GlitchPass.js delete mode 100644 three/addons/postprocessing/HalftonePass.js delete mode 100644 three/addons/postprocessing/LUTPass.js delete mode 100644 three/addons/postprocessing/MaskPass.js delete mode 100644 three/addons/postprocessing/OutlinePass.js delete mode 100644 three/addons/postprocessing/OutputPass.js delete mode 100644 three/addons/postprocessing/Pass.js delete mode 100644 three/addons/postprocessing/RenderPass.js delete mode 100644 three/addons/postprocessing/RenderPixelatedPass.js delete mode 100644 three/addons/postprocessing/SAOPass.js delete mode 100644 three/addons/postprocessing/SMAAPass.js delete mode 100644 three/addons/postprocessing/SSAARenderPass.js delete mode 100644 three/addons/postprocessing/SSAOPass.js delete mode 100644 three/addons/postprocessing/SSRPass.js delete mode 100644 three/addons/postprocessing/SavePass.js delete mode 100644 three/addons/postprocessing/ShaderPass.js delete mode 100644 three/addons/postprocessing/TAARenderPass.js delete mode 100644 three/addons/postprocessing/TexturePass.js delete mode 100644 three/addons/postprocessing/UnrealBloomPass.js delete mode 100644 three/addons/renderers/CSS2DRenderer.js delete mode 100644 three/addons/renderers/CSS3DRenderer.js delete mode 100644 three/addons/renderers/Projector.js delete mode 100644 three/addons/renderers/SVGRenderer.js delete mode 100644 three/addons/renderers/common/Animation.js delete mode 100644 three/addons/renderers/common/Attributes.js delete mode 100644 three/addons/renderers/common/Backend.js delete mode 100644 three/addons/renderers/common/Background.js delete mode 100644 three/addons/renderers/common/Binding.js delete mode 100644 three/addons/renderers/common/Bindings.js delete mode 100644 three/addons/renderers/common/Buffer.js delete mode 100644 three/addons/renderers/common/BufferUtils.js delete mode 100644 three/addons/renderers/common/ChainMap.js delete mode 100644 three/addons/renderers/common/Color4.js delete mode 100644 three/addons/renderers/common/ComputePipeline.js delete mode 100644 three/addons/renderers/common/Constants.js delete mode 100644 three/addons/renderers/common/CubeRenderTarget.js delete mode 100644 three/addons/renderers/common/DataMap.js delete mode 100644 three/addons/renderers/common/Geometries.js delete mode 100644 three/addons/renderers/common/Info.js delete mode 100644 three/addons/renderers/common/Pipeline.js delete mode 100644 three/addons/renderers/common/Pipelines.js delete mode 100644 three/addons/renderers/common/PostProcessing.js delete mode 100644 three/addons/renderers/common/ProgrammableStage.js delete mode 100644 three/addons/renderers/common/RenderContext.js delete mode 100644 three/addons/renderers/common/RenderContexts.js delete mode 100644 three/addons/renderers/common/RenderList.js delete mode 100644 three/addons/renderers/common/RenderLists.js delete mode 100644 three/addons/renderers/common/RenderObject.js delete mode 100644 three/addons/renderers/common/RenderObjects.js delete mode 100644 three/addons/renderers/common/RenderPipeline.js delete mode 100644 three/addons/renderers/common/Renderer.js delete mode 100644 three/addons/renderers/common/SampledTexture.js delete mode 100644 three/addons/renderers/common/Sampler.js delete mode 100644 three/addons/renderers/common/StorageBuffer.js delete mode 100644 three/addons/renderers/common/StorageTexture.js delete mode 100644 three/addons/renderers/common/Textures.js delete mode 100644 three/addons/renderers/common/Uniform.js delete mode 100644 three/addons/renderers/common/UniformBuffer.js delete mode 100644 three/addons/renderers/common/UniformsGroup.js delete mode 100644 three/addons/renderers/common/nodes/NodeBuilderState.js delete mode 100644 three/addons/renderers/common/nodes/NodeSampledTexture.js delete mode 100644 three/addons/renderers/common/nodes/NodeSampler.js delete mode 100644 three/addons/renderers/common/nodes/NodeUniform.js delete mode 100644 three/addons/renderers/common/nodes/NodeUniformsGroup.js delete mode 100644 three/addons/renderers/common/nodes/Nodes.js delete mode 100644 three/addons/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js delete mode 100644 three/addons/renderers/webgl-legacy/nodes/SlotNode.js delete mode 100644 three/addons/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js delete mode 100644 three/addons/renderers/webgl-legacy/nodes/WebGLNodes.js delete mode 100644 three/addons/renderers/webgl/WebGLBackend.js delete mode 100644 three/addons/renderers/webgl/nodes/GLSLNodeBuilder.js delete mode 100644 three/addons/renderers/webgl/utils/WebGLAttributeUtils.js delete mode 100644 three/addons/renderers/webgl/utils/WebGLCapabilities.js delete mode 100644 three/addons/renderers/webgl/utils/WebGLExtensions.js delete mode 100644 three/addons/renderers/webgl/utils/WebGLState.js delete mode 100644 three/addons/renderers/webgl/utils/WebGLTextureUtils.js delete mode 100644 three/addons/renderers/webgl/utils/WebGLUtils.js delete mode 100644 three/addons/renderers/webgpu/WebGPUBackend.js delete mode 100644 three/addons/renderers/webgpu/WebGPURenderer.js delete mode 100644 three/addons/renderers/webgpu/nodes/WGSLNodeBuilder.js delete mode 100644 three/addons/renderers/webgpu/nodes/WGSLNodeFunction.js delete mode 100644 three/addons/renderers/webgpu/nodes/WGSLNodeParser.js delete mode 100644 three/addons/renderers/webgpu/utils/WebGPUAttributeUtils.js delete mode 100644 three/addons/renderers/webgpu/utils/WebGPUBindingUtils.js delete mode 100644 three/addons/renderers/webgpu/utils/WebGPUConstants.js delete mode 100644 three/addons/renderers/webgpu/utils/WebGPUPipelineUtils.js delete mode 100644 three/addons/renderers/webgpu/utils/WebGPUTexturePassUtils.js delete mode 100644 three/addons/renderers/webgpu/utils/WebGPUTextureUtils.js delete mode 100644 three/addons/renderers/webgpu/utils/WebGPUUtils.js delete mode 100644 three/addons/shaders/ACESFilmicToneMappingShader.js delete mode 100644 three/addons/shaders/AfterimageShader.js delete mode 100644 three/addons/shaders/BasicShader.js delete mode 100644 three/addons/shaders/BleachBypassShader.js delete mode 100644 three/addons/shaders/BlendShader.js delete mode 100644 three/addons/shaders/BokehShader.js delete mode 100644 three/addons/shaders/BokehShader2.js delete mode 100644 three/addons/shaders/BrightnessContrastShader.js delete mode 100644 three/addons/shaders/ColorCorrectionShader.js delete mode 100644 three/addons/shaders/ColorifyShader.js delete mode 100644 three/addons/shaders/ConvolutionShader.js delete mode 100644 three/addons/shaders/CopyShader.js delete mode 100644 three/addons/shaders/DOFMipMapShader.js delete mode 100644 three/addons/shaders/DepthLimitedBlurShader.js delete mode 100644 three/addons/shaders/DigitalGlitch.js delete mode 100644 three/addons/shaders/DotScreenShader.js delete mode 100644 three/addons/shaders/ExposureShader.js delete mode 100644 three/addons/shaders/FXAAShader.js delete mode 100644 three/addons/shaders/FilmShader.js delete mode 100644 three/addons/shaders/FocusShader.js delete mode 100644 three/addons/shaders/FreiChenShader.js delete mode 100644 three/addons/shaders/GTAOShader.js delete mode 100644 three/addons/shaders/GammaCorrectionShader.js delete mode 100644 three/addons/shaders/GodRaysShader.js delete mode 100644 three/addons/shaders/HalftoneShader.js delete mode 100644 three/addons/shaders/HorizontalBlurShader.js delete mode 100644 three/addons/shaders/HorizontalTiltShiftShader.js delete mode 100644 three/addons/shaders/HueSaturationShader.js delete mode 100644 three/addons/shaders/KaleidoShader.js delete mode 100644 three/addons/shaders/LuminosityHighPassShader.js delete mode 100644 three/addons/shaders/LuminosityShader.js delete mode 100644 three/addons/shaders/MMDToonShader.js delete mode 100644 three/addons/shaders/MirrorShader.js delete mode 100644 three/addons/shaders/NormalMapShader.js delete mode 100644 three/addons/shaders/OutputShader.js delete mode 100644 three/addons/shaders/PoissonDenoiseShader.js delete mode 100644 three/addons/shaders/RGBShiftShader.js delete mode 100644 three/addons/shaders/SAOShader.js delete mode 100644 three/addons/shaders/SMAAShader.js delete mode 100644 three/addons/shaders/SSAOShader.js delete mode 100644 three/addons/shaders/SSRShader.js delete mode 100644 three/addons/shaders/SepiaShader.js delete mode 100644 three/addons/shaders/SobelOperatorShader.js delete mode 100644 three/addons/shaders/SubsurfaceScatteringShader.js delete mode 100644 three/addons/shaders/TechnicolorShader.js delete mode 100644 three/addons/shaders/ToonShader.js delete mode 100644 three/addons/shaders/TriangleBlurShader.js delete mode 100644 three/addons/shaders/UnpackDepthRGBAShader.js delete mode 100644 three/addons/shaders/VelocityShader.js delete mode 100644 three/addons/shaders/VerticalBlurShader.js delete mode 100644 three/addons/shaders/VerticalTiltShiftShader.js delete mode 100644 three/addons/shaders/VignetteShader.js delete mode 100644 three/addons/shaders/VolumeShader.js delete mode 100644 three/addons/shaders/WaterRefractionShader.js delete mode 100644 three/addons/textures/FlakesTexture.js delete mode 100644 three/addons/transpiler/AST.js delete mode 100644 three/addons/transpiler/GLSLDecoder.js delete mode 100644 three/addons/transpiler/ShaderToyDecoder.js delete mode 100644 three/addons/transpiler/TSLEncoder.js delete mode 100644 three/addons/transpiler/Transpiler.js delete mode 100644 three/addons/utils/BufferGeometryUtils.js delete mode 100644 three/addons/utils/CameraUtils.js delete mode 100644 three/addons/utils/GPUStatsPanel.js delete mode 100644 three/addons/utils/GeometryCompressionUtils.js delete mode 100644 three/addons/utils/GeometryUtils.js delete mode 100644 three/addons/utils/LDrawUtils.js delete mode 100644 three/addons/utils/PackedPhongMaterial.js delete mode 100644 three/addons/utils/SceneUtils.js delete mode 100644 three/addons/utils/ShadowMapViewer.js delete mode 100644 three/addons/utils/SkeletonUtils.js delete mode 100644 three/addons/utils/SortUtils.js delete mode 100644 three/addons/utils/TextureUtils.js delete mode 100644 three/addons/utils/UVsDebug.js delete mode 100644 three/addons/utils/WorkerPool.js delete mode 100644 three/addons/webxr/ARButton.js delete mode 100644 three/addons/webxr/OculusHandModel.js delete mode 100644 three/addons/webxr/OculusHandPointerModel.js delete mode 100644 three/addons/webxr/Text2D.js delete mode 100644 three/addons/webxr/VRButton.js delete mode 100644 three/addons/webxr/XRButton.js delete mode 100644 three/addons/webxr/XRControllerModelFactory.js delete mode 100644 three/addons/webxr/XREstimatedLight.js delete mode 100644 three/addons/webxr/XRHandMeshModel.js delete mode 100644 three/addons/webxr/XRHandModelFactory.js delete mode 100644 three/addons/webxr/XRHandPrimitiveModel.js delete mode 100644 three/addons/webxr/XRPlanes.js delete mode 100644 three/three.js delete mode 100644 three/three.module.js delete mode 100644 worker.js diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 5f93641..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,12 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file - -version: 2 -updates: - - package-ecosystem: "npm" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "weekly" - open-pull-requests-limit: 0 diff --git a/.gitignore b/.gitignore deleted file mode 100644 index c18dd8d..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -__pycache__/ diff --git a/App.js b/App.js deleted file mode 100644 index ea88c94..0000000 --- a/App.js +++ /dev/null @@ -1,27 +0,0 @@ -import { DataTypes } from "./Buffifier.js"; - -export class App { - - static _meta = { - get props() { - - return { - mouseX: DataTypes.Uint16, - mouseY: DataTypes.Uint16, - - mouseDown: DataTypes.Uint8, - - mouseWheelDeltaY: DataTypes.Int16, - - canvasWidth: DataTypes.Uint16, - canvasHeight: DataTypes.Uint16, - - mouseOverEntityIndices: DataTypes.BufferedArray, - world: DataTypes.World - } - - } - - }; - -} diff --git a/Buffifier.js b/Buffifier.js index ad34f33..ec5054d 100644 --- a/Buffifier.js +++ b/Buffifier.js @@ -1,1073 +1,650 @@ - -import { MainThread } from "./threads/Main.js"; -import { RendererThread } from "./threads/Renderer.js"; -import { EntityThread } from "./threads/Entity.js"; -import { TerrainThread } from "./threads/Terrain.js"; -import { PathingThread } from "./threads/Pathing.js"; - - -import { App } from "./App.js"; -import { World } from "./World.js"; -import { Entity } from "./Entity.js"; - - +const isMainThread = typeof WorkerGlobalScope === 'undefined' +const threadName = isMainThread ? 'main' : location.search.slice(1) const config = { - classes: [ - App, - World, - Entity - ], - threads: { - main: [ - // only one main thread class currently supported - MainThread - ], - canvas: [ - // only one canvas thread class currently supported - RendererThread - ], - others: [ - EntityThread, - TerrainThread, - PathingThread - ] - } -}; - -export const DataTypes = { - - null: 0, - boolean: 1, - Int8: 2, - Uint8: 3, - Int16: 4, - Uint16: 5, - Int32: 6, - Uint32: 7, - Float32: 8, - Float64: 9, - BigInt64: 10, - BigUint64: 11, - BufferedArray: 12 - // classes from config automatically added here - -} - - - -export class BufferedArray { - - constructor() { - - Object.defineProperty(this, "_a", { - value: {}, - writable: false, - enumerable: false, - configurable: false - }); - - } - - static _meta = { - get props() { - return { - of: DataTypes.Uint8, - length: DataTypes.Uint32 - } - } - }; - - getReferenceType(index) { - return MemorySystem.getReferenceType(this._a.ofType, this._a.typedZeroIndex + index); - } - - getPrimitiveType(index) { - return MemorySystem.getPrimitiveType(this._a.ofType, this._a.typedZeroIndex + index); - } - - setReferenceType(index, v) { - return MemorySystem.setReferenceType(v, this._a.ofType, this._a.typedZeroIndex + index); - } - - setPrimitiveType(index, v) { - return MemorySystem.setPrimitiveType(v, this._a.ofType, this._a.typedZeroIndex + index); - } - - [Symbol.iterator]() { - - let index = 0; - - return { - next: () => { - if (index < this.length) { - return { - value: this.at(index++), - done: false - }; - } else { - return { - done: true - }; - } - }, - }; - } - - onCreatedInstance() { - - - const ofProp = this._b.meta.propsComputed.of; - - const ofTypedArrayIndex = (this._b.index + ofProp.offset) / ofProp.type.bytes; - - const ofVal = Atomics.load(ofProp.type.typedArray, ofTypedArrayIndex); - - this._a.ofType = MemorySystem.cache.typesLookup[ofVal]; - - const currentWorkingSpaceIndex = this._b.index + this._b.meta.allocate; - - const remainder = (this._b.index + this._b.meta.allocate) % this._a.ofType.bytes; - - const additionalOffset = remainder === 0 ? remainder : (this._a.ofType.bytes - remainder); - - const workingSpaceIndex = currentWorkingSpaceIndex + additionalOffset; - - this._a.typedZeroIndex = workingSpaceIndex / this._a.ofType.bytes; - - const lengthProp = this._b.meta.propsComputed.length; - - this._a.lengthType = lengthProp.type; - - this._a.lengthTypedArrayIndex = (this._b.index + lengthProp.offset) / lengthProp.type.bytes; - - if(this._a.ofType.referenceType) { - this.at = this.getReferenceType; - this.set = this.setReferenceType; - } else { - this.at = this.getPrimitiveType; - this.set = this.setPrimitiveType; - } - } - - at = () => undefined; - - set = () => undefined; - - push(v) { - - - const length = Atomics.add(this._a.lengthType.typedArray, this._a.lengthTypedArrayIndex, 1) + 1; - - MemorySystem.setRaw(v, this._a.ofType, (this._a.typedZeroIndex + length - 1)) - - return length; - - } - + allocate: 100000000 // 100 MB (is 8 bytes aligned) } -class DataType { - - typeByte = null; - - bytes = null; - - referenceType = null; - - typedArray = null; - - setTransform = (n) => { - return n; - } - - getTransform = (n) => { - return n; - } - constructor(typeByte) { +const storeTypes = Object.freeze({ + reference: 0, + value: 1 +}) - this.typeByte = typeByte; +const zones = Object.freeze({ + a: 0, + b: 1 +}) - this.referenceType = typeByte > 11; - // set how many bytes needed to store the data type - - if((typeByte > 5 && typeByte < 9) || typeByte > 11) { - this.bytes = 4; - } else if(typeByte === 4 || typeByte === 5) { - this.bytes = 2; - } else if(typeByte < 4) { - this.bytes = 1; - } else if(typeByte > 8 && typeByte < 12) { - this.bytes = 8; - } - - // set the typed array used for storing the data type - if(typeByte === 0) { - this.typedArray = MemorySystem.uint8Array; - } else if(typeByte === 1) { - this.typedArray = MemorySystem.uint8Array; - this.getTransform = TypeConverter.intToBool; - this.setTransform = TypeConverter.boolToInt; - } else if(typeByte === 2) { - this.typedArray = MemorySystem.int8Array; - } else if(typeByte === 3) { - this.typedArray = MemorySystem.uint8Array; - } else if(typeByte === 4) { - this.typedArray = MemorySystem.int16Array; - } else if(typeByte === 5) { - this.typedArray = MemorySystem.uint16Array; - } else if(typeByte === 6) { - this.typedArray = MemorySystem.int32Array; - } else if(typeByte === 7) { - this.typedArray = MemorySystem.uint32Array; - } else if(typeByte === 8) { - // float32 goes in uint32 - this.typedArray = MemorySystem.uint32Array; - this.getTransform = TypeConverter.uint32ToFloat32; - this.setTransform = TypeConverter.float32ToUint32; - } else if(typeByte === 9) { - // float64 goes in biguint64 - this.typedArray = MemorySystem.biguint64Array; - this.getTransform = TypeConverter.uint64ToFloat64; - this.setTransform = TypeConverter.float64ToUint64; - } else if(typeByte === 10) { - this.typedArray = MemorySystem.bigint64Array; - } else if(typeByte === 11) { - this.typedArray = MemorySystem.biguint64Array; - } else if(typeByte > 11) { - // reference objects are uint32 because it holds - // the index of the object in the buffer - this.typedArray = MemorySystem.uint32Array; - } - } -} - -class TypeConverter { - - static buffer = new ArrayBuffer(8); - - static float32Arr = new Float32Array(this.buffer); - static float64Arr = new Float64Array(this.buffer); - - static uint32Array = new Uint32Array(this.buffer); - static uint64Array = new BigUint64Array(this.buffer); - - static float32ToUint32 = (n) => { - this.float32Arr[0] = n; - return this.uint32Array[0]; - } - - static uint32ToFloat32 = (n) => { - this.uint32Array[0] = n; - return this.float32Arr[0]; - } - - static float64ToUint64 = (n) => { - this.float64Arr[0] = n; - return this.uint64Array[0]; - } - - static uint64ToFloat64 = (n) => { - this.uint64Array[0] = n; - return this.float64Arr[0]; - } - - static boolToInt(b) { - if(b) { - return 1; - } else { - return 0; - } - } - - static intToBool(n) { - return n !== 0; - } - -} - - -class MemorySystem { - - static buffer = null; - - static rootObject = null; - - static int8Array = null; - static uint8Array = null; - - static int16Array = null; - static uint16Array = null; - - static int32Array = null; - static uint32Array = null; - - static bigint64Array = null; - static biguint64Array = null; - - static metaDataIndices = { - freeIndex: 0, // uint32 - bytesAllocated: 1, // uint32 - workersSignal: 2, // int32 - }; +export class Buffifier { + static buffer = null - static objectMetaDataIndicesOffset = { - lock: 0, // int32 - type: 4, // uint8 - workingSpaceBytes: 2 // uint32 - }; + static workers = new Map() - static cache = { - typesLookup: null, - classLookup: null, - instanceLookup: null - }; + // #region Typed Arrays - static threadMetaDataBytes = 8; + static typedArrays = { + int8: null, + uint8: null, - // [0-3] int32 locking/unlocking object - // [4] uint8 type byte - // [8-11] uint32 working space amount for variable sized objects (e.g., BufferedArray) - static objectMetaDataBytes = 12; + int16: null, + uint16: null, - // must be a multiple of 8 - // [0-3] uint32 starting index of free space - // [4-7] uint32 of total memory allocated in bytes - // [8-11] int32 signal for workers - static metaDataBytes = 16; + int32: null, + uint32: null, - static rootObjectIndex = null; + int64: null, + uint64: null + } - static init(buffer) { - // buffer is always a SharedArrayBuffer - this.buffer = buffer; + // #endregion - // create all typed arrays with the same underlying buffer + // #region Buffer Header Offsets - this.int8Array = new Int8Array(this.buffer); - this.uint8Array = new Uint8Array(this.buffer); + /* + BUFFER HEADER: + (64 bit aligned) + uint32 zoneA search start index for free block + uint32 zoneB search start index for free block + */ + static bufferHeaderOffset = Object.freeze({ + zoneASearch: 0, // uint32 + zoneBSearch: 1, // uint32 + }) - this.int16Array = new Int16Array(this.buffer); - this.uint16Array = new Uint16Array(this.buffer); + // #endregion - this.int32Array = new Int32Array(this.buffer); - this.uint32Array = new Uint32Array(this.buffer); + // #region Object Header Offsets + + // OBJECT HEADER: int32: allocated/unallocated, uint16: generation, uint16: type, + // (64 bit aligned) + static objectHeaderOffset = Object.freeze({ + occupied: 0, // int32 + generation: 1, // uint16 + type: 2 // uint16 + }) - this.bigint64Array = new BigInt64Array(this.buffer); - this.biguint64Array = new BigUint64Array(this.buffer); + // #endregion - // concat all classes to one array for processing... - const classesToProcess = config.classes.slice(); + // int32 index that starts the actual data + static zoneAStartIndex = null + static zoneBStartIndex = null - classesToProcess.push( - BufferedArray, - ...config.threads.main, - ...config.threads.canvas, - ...config.threads.others - ); - classesToProcess.sort((a, b) => { - if (a.name < b.name) { return -1; } - if (a.name > b.name) { return 1; } - throw new Error("Expected unique classes."); - }); + static zoneABlockSizeInt32 = 16250 + static zoneBBlockSizeInt32 = 65000 - console.log(classesToProcess); - let dataTypesCount = Object.keys(DataTypes).length; + /* + NOTES: + - buffer is structured like this: + - Biggest objects are allocated at the right of the buffer at a fixed size starting at the very end and moving left... + - Second biggest items define the block sizes that are allocated starting from the left + */ - // add custom classes to DataTypes - for (const cls of classesToProcess) { - DataTypes[cls.name] = dataTypesCount; - dataTypesCount++; - } + static buffify(o) { + console.log(`[${threadName}] Buffifier.buffify()`, this.name, o) - // stores DataType instances in an array indexed by type byte - this.cache.typesLookup = new Array(dataTypesCount); + // basically take `o` and record: prop bytes, prop offsets, total bytes. - // stores classes so instances can be created when just having the type byte - this.cache.classLookup = new Array(dataTypesCount); + /* - // stores instances of objects that are backed by the buffer... - // ... indexed by the objects location (index) in the buffer - this.cache.instanceLookup = new Map(); // new Array(this.buffer.byteLength); + After all classes are buffified, we have details for all types + + buffifer.init will: + - Determine the largest object and make that go into zone B + - Transform the types to an array to get a number for a type id. + + */ - // sorting the entries by value because distrustful of consistent ordering - const sortedDataTypes = Object.entries(DataTypes).sort((a, b) => { - if (a[1] < b[1]) { return -1; } - if (a[1] > b[1]) { return 1; } - throw new Error("Expected unique values on sort."); - }); - for (const [k, v] of sortedDataTypes) { - this.cache.typesLookup[v] = new DataType(v, k); + //const classes = { + /* + 'App': { + cls: App, + zone: 0, + props: { + prop1: {}, + prop2: {} + } } - for (const cls of classesToProcess) { - - const typeByte = DataTypes[cls.name]; - - this.cache.classLookup[typeByte] = cls; - - const meta = cls._meta; - - meta.type = this.cache.typesLookup[typeByte]; - - // allocate gets incremented later - meta.allocate = this.objectMetaDataBytes; + */ + //} - // stores prop names - meta.propsLookup = []; + // typesArray.push(this) - // stores details about each prop - meta.propsComputed = {}; + // OBJECT DATA: type, block - // sorts props by prop name so order is consistant - const sortedProps = Object.entries(meta.props).sort((a, b) => { - if (a[0] < b[0]) { return -1; } - if (a[0] > b[0]) { return 1; } - throw new Error("Expected unique prop names on sort."); - }); + // on buffify, just register object type and do setters/getters of props - for(const [k, v] of sortedProps) { + // OBJECT GETTER NEEDS: zone, typedArray, block, typedOffset, getTransform + // OBJECT SETTER NEEDS: zone, typedArray, block, typedOffset, setTransform + // + // - block is known on construction - const type = this.cache.typesLookup[v]; - - // needed so the prop is aligned to fit in its corresponding typed array - const additionalOffset = this.computeAdditionalOffset(meta.allocate, type); + // get all the props and info: typedArray, typedArrayOffset... + // - when accessing a prop: + // - get value (v) directly from typedArray on typedArrayOffset (including through getter) + // - if it's a primitive value type: + // - just return v + // - if it's an object value type: + // - just return `new cls(v)` + // - if it's an object reference: + // - unpack to get block index and generation number - meta.propsComputed[k] = { - offset: meta.allocate + additionalOffset, - type: type - }; - - meta.allocate += additionalOffset + type.bytes; - - meta.propsLookup.push(k); - - } - - } - - // rootObjectIndex is the first byte after meta data and thread meta data - this.rootObjectIndex = this.metaDataBytes + (ThreadSystem.totalThreads * this.threadMetaDataBytes); - - if(Buffifier.isMainThread) { - - // explicit here for clarity - const freeIndex = this.rootObjectIndex; - - // Buffifier.rootObject hasn't been created yet, but set the - // freeIndex to the rootObjectIndex because the next - // memory object created will be the root object - Atomics.store(this.uint32Array, this.metaDataIndices.freeIndex, freeIndex); - - // store how much buffer space we allocated for potential future use - Atomics.store(this.uint32Array, this.metaDataIndices.bytesAllocated, this.buffer.byteLength); + const name = this.name + /* + 'App': { + cls: App, + zone: 0, + props: { + prop1: {}, + prop2: {} + } } - } - - static createInstance(cls, values, options) { - - const workingOptions = Object.assign({ - workingSpace: 0 - }, options); + */ + - const meta = cls._meta; + const sortedProps = (Array.isArray(o) ? o : o.props).toSorted() - const objectBlockIndex = this.reserveFreeBlock(meta.allocate + workingOptions.workingSpace); + const props = {} - // since no thread at this point knows about objectBlockIndex except right here... - // ... so we should be good to write at that location without issue + // TODO: Maybe not hard code 8 + let bytesOffset = 8 - // objectBlockIndex is a multiple of 4 so hoping dividing by 4 gives an integer + for (const [propName, propType] of sortedProps) { - this.int32Array[(objectBlockIndex / 4) + this.objectMetaDataIndicesOffset.lock] = 1; // mark as unlocked + // Assume object + let bytes = 4 + let name = propType.name + let primitive = false - this.uint8Array[objectBlockIndex + this.objectMetaDataIndicesOffset.type] = meta.type.typeByte; // add type byte + if(typeof propType === 'string') { + // value + bytes = types[propType].bytes + name = propType + primitive = true + } + + // check if bytesOffset is aligned with current type... + // ... adjust bytesOffset if not. - this.uint32Array[(objectBlockIndex / 4) + this.objectMetaDataIndicesOffset.workingSpaceBytes ] = workingOptions.workingSpace; // add working space size + bytesOffset += Buffifier.computeAdditionalOffset(bytesOffset, bytes) - // create vanilla instance - const instance = new cls(); + // Assume at this point bytesOffset is aligned for the current type ... - this.configureInstance(instance, objectBlockIndex, meta, workingOptions); + // if it's 2 bytes type... to get the int8 offset starting at first int8 of block index... + // ... [0,1,2,3,4,5,6,7] + // ... [0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ] + // ... [0 ,1 ,2 ,3 ,4 ,5 ] - if(!!values) { - // set any initial values - for (const [key, val] of Object.entries(values)) { - // prop can, but doesn't have to, point to a memory value - instance[key] = val; - } - } + // Do we just do bytesOffset / propTypeBytes ... 8 / 2 = 4 - if("onCreatedInstance" in instance) { - instance.onCreatedInstance(); - } + // So to get the propOffsetIndex, we do bytesOffset / propTypeBytes ... + const offset = bytesOffset / bytes - return instance; + // Then we increment bytesOffset by propTypeBytes + bytesOffset += bytes - } + props[propName] = { + name, + offset, + bytes, + primitive + } - static configureInstance(instance, index, meta, options) { - - // construct helper object... - const _b = { - index: index, - lastByteIndex: index + meta.allocate + options.workingSpace - 1, - blockSize: meta.allocate + options.workingSpace, - meta: meta, - options: options//, - //lock: this.lockObject.bind(instance), - //unlock: this.unlockObject.bind(instance), - }; - - Object.defineProperty(instance, "_b", { - value: _b, - writable: false, - enumerable: false, - configurable: false - }); - - for(const propName of meta.propsLookup){ - this.defineObjectProp(instance, propName); - } } - // rounds up so the type can be accessed with its corresponding typed array - static computeAdditionalOffset(currentBytesOffset, type) { + let totalBytes = Buffifier.computeAdditionalOffset(bytesOffset, 8) - const remainder = currentBytesOffset % type.bytes; - return remainder === 0 ? remainder : (type.bytes - remainder); + classes[name] = { + cls: this, + totalBytes, + zone: zones.a, + props } - static reserveFreeBlock(allocate) { - // Round up 'allocate' so it's a multiple of 8. - // This is needed so we can properly set the offsets for the object properties. - // We can now assume that all objects will start at an index that is a multiple of 8. - const remainder = allocate % 8; - - // Atomics.add() returns the old value before addition. - // That value is the next free block index. - return Atomics.add(this.uint32Array, 0, (allocate + (8 - remainder))); + // prob do this last for safety + /* + for (const method of ['valueOf', 'toString', 'toJSON']) { + // adds it as an instance prop + Object.defineProperty(this.prototype, method, { + value() { + // ... return the packed value of the all prop values + }, + writable: true, + configurable: true, + enumerable: false + }) } + */ + } - static newInstanceFromIndex(index) { - - // do we even need atomics here? - // const typeByte = Atomics.load(this.uint8Array, index + 4); - const typeByte = this.uint8Array[index + 4]; - - // also do we need atomics here because working space should only be written once on object creation - // const workingSpace = Atomics.load(this.uint32Array, (index + 8) / 4); - const workingSpace = this.uint32Array[(index + 8) / 4]; - - const cls = this.cache.classLookup[typeByte]; - - const instance = new cls(); - - this.configureInstance(instance, index, cls._meta, { - workingSpace: workingSpace - }); + // (9, 8) = 7, (0, 4) = 0, (1, 4) = 3 + static computeAdditionalOffset(currentBytesOffset, bytes) { + const remainder = currentBytesOffset % bytes - if("onCreatedInstance" in instance) { - instance.onCreatedInstance(); - } - - return instance; + return remainder === 0 ? 0 : bytes - remainder + } + static initMemory = (root, sab) => { + if (sab === undefined) { + this.buffer = new SharedArrayBuffer(config.allocate) + } else { + this.buffer = sab } - static getInstance(index) { - - if(this.cache.instanceLookup.has(index)) { + - return this.cache.instanceLookup.get(index); - - } else { - const o = this.newInstanceFromIndex(index); - this.cache.instanceLookup.set(index, o); - return o; - } + this.typedArrays.int8 = new Int32Array(this.buffer) + this.typedArrays.uint8 = new Uint32Array(this.buffer) - //if(this.cache.instanceLookup[index] === undefined) { - // this.cache.instanceLookup[index] = this.newInstanceFromIndex(index); - //} + this.typedArrays.int16 = new Int16Array(this.buffer) + this.typedArrays.uint16 = new Uint16Array(this.buffer) - //return this.cache.instanceLookup[index]; + this.typedArrays.int32 = new Int32Array(this.buffer) + this.typedArrays.uint32 = new Uint32Array(this.buffer) - } + this.typedArrays.int64 = new BigInt64Array(this.buffer) + this.typedArrays.uint64 = new BigUint64Array(this.buffer) - static getReferenceType(type, typedArrayValueIndex) { - const index = Atomics.load(type.typedArray, typedArrayValueIndex); - return (index === 0 ? null : this.getInstance(index)); - } + this.zoneAStartIndex = Object.keys(this.bufferHeaderOffset).length + this.zoneBStartIndex = this.buffer.byteLength / 4 - zoneBBlockSizeInt32 - static getPrimitiveType(type, typedArrayValueIndex) { - return (type.getTransform(Atomics.load(type.typedArray, typedArrayValueIndex))); + if(isMainThread) { + this.typedArrays.int32[bufferHeaderOffset.zoneASearch] = zoneAStartIndex + this.typedArrays.int32[bufferHeaderOffset.zoneBSearch] = zoneBStartIndex } - static setReferenceType(v, type, typedArrayValueIndex) { + this.rootObject = new root() + } - if(v === null) { + static onWorkerMessage = ({ data }) => { + const [name, message] = data - Atomics.store(type.typedArray, typedArrayValueIndex, 0); + console.log(`[${threadName}] BaseClass.onWorkerMessage()`, name, message) - } else { + const { worker, canvas, clsName } = this.workers.get(name) - Atomics.store(type.typedArray, typedArrayValueIndex, v._b.index); - - } - - } + const params = canvas === null ? [['init', clsName, this.buffer]] : [['init', clsName, this.buffer, canvas], [canvas]] - static setPrimitiveType(v, type, typedArrayValueIndex) { + worker.postMessage(...params) + } - Atomics.store(type.typedArray, typedArrayValueIndex, type.setTransform(v)); + static init({ root, main, threads }) { + // TODO: Add protective errors for invalid params - } + // Create ids for each type and assign to static prop ... + + // this._t = types[this.constructor.name] - static setRaw(v, type, typedArrayValueIndex) { + for (const [k, v] of Object.entries(types)) { + console.log(`${key}: ${value}`); - if(type.referenceType){ - this.setReferenceType(v, type, typedArrayValueIndex); - - } else { - this.setPrimitiveType(v, type, typedArrayValueIndex); - - } } - static defineObjectProp(o, prop) { - - const props = o._b.meta.propsComputed; - - const type = props[prop].type; - - const typedArrayValueIndex = (o._b.index + props[prop].offset) / type.bytes; - - if(type.referenceType) { - - Object.defineProperty(o, prop, { - enumerable: true, - get() { - return MemorySystem.getReferenceType(type, typedArrayValueIndex); - }, - set(v) { - MemorySystem.setReferenceType(v, type, typedArrayValueIndex); - } - }); - - } else { - - Object.defineProperty(o, prop, { - enumerable: true, - get() { - return MemorySystem.getPrimitiveType(type, typedArrayValueIndex); - }, - set(v) { - MemorySystem.setPrimitiveType(v, type, typedArrayValueIndex); - } - }); - - } - } + Object.defineProperty(this.prototype, propName, { + get: Buffifier.propGetter(name, propName), + set: Buffifier.propSetter(v, name, propName), + enumerable: true + }) + /* - static async lockObject() { - - return new Promise((resolve) => { - // 'this' is the object, not MemorySystem - if (Atomics.compareExchange(MemorySystem.int32Array, this._b.index / 4, 1, 2) !== 1) { - // Promise apparently is never rejected according to MDN docs. - Atomics.waitAsync(MemorySystem.int32Array, this._b.index / 4, 2, 2000).value.then((o) => { - resolve(o); - }); - } else { - resolve("not locked"); - } - }); - - } - - static unlockObject() { - - // 'this' is the object, not MemorySystem - - if (Atomics.compareExchange(MemorySystem.int32Array, this._b.index / 4, 2, 1) !== 2) { - throw new Error("Trying to unlock an already unlocked object"); - } - - Atomics.notify(MemorySystem.int32Array, this._b.index / 4); - - } + float64: { + //id: 8, + cls: , + props: , + bytes: 8, + typedArray: Buffifier.uint64Array, + get: TypeConverter.uint64ToFloat64, + set: TypeConverter.float64ToUint64 + }, */ -} + if (isMainThread) { + this.initMemory(root) + let id = 1 -export class Buffifier { + for (const t of threads) { + const [cls, c] = t.length ? t : [t] - static rootObject = null; + let count = typeof c === 'number' ? c : 1 + let canvas = typeof c === 'string' ? document.getElementById(c).transferControlToOffscreen() : null - static isMainThread = null; - - static start() { - this.tick = this.tock; - this.tick(); - } + for (let n = 0; n < count; n++) { + const name = cls.name + '_worker' + id++ - static tick = () => undefined; + const worker = new Worker('index.js?' + name, { name, type: 'module' }) - static signalWorkers() { + worker.addEventListener('message', this.onWorkerMessage) - const signalIndex = MemorySystem.metaDataIndices.workersSignal; - const n1 = Atomics.compareExchange(MemorySystem.int32Array, signalIndex, 0, 1); - - if(n1 !== 0) { - throw new Error("signalWorkers: Expected 0 on compareExchange. Got " + n1 + "."); + this.workers.set(name, { + clsName: cls.name, + worker, + canvas + }) } - - const agentsAwoken = Atomics.notify(MemorySystem.int32Array, signalIndex); - - const n2 = Atomics.compareExchange(MemorySystem.int32Array, signalIndex, 1, 0); - - if(n2 !== 1){ - throw new Error("signalWorkers: Expected 1 on compareExchange. Got " + n2 + "."); + } + } else { + addEventListener('message', ({ data }) => { + const [message, clsName, sab, canvas] = data + console.log(`[${threadName}] worker received`, message, sab, canvas) + + this.initMemory(root, sab) + + let cls = null + for (const t of threads) { + const checkCls = t.length ? t[0] : t + if (clsName === checkCls.name) { + cls = checkCls + break + } } - return agentsAwoken; - } - - static tock() { - - requestAnimationFrame(async () => { - - const workersSignaled = Buffifier.signalWorkers(); - - await ThreadSystem.instance.work(); - - if(workersSignaled < WorkerSystem.workers.length) { - console.log("ALL WORKERS NOT SIGNALED, WORKERS SIGNALED: " + workersSignaled); - } + const threadInstance = new cls() - //setTimeout(() => { - this.tick(); - //}, 500); + threadInstance.init(this.rootObject, canvas) + }) - }); + postMessage([threadName, 'loaded']) } + } - static async initFromWorker(sharedArrayBuffer, threadInstanceIndex, threadId, threadInitConfig) { + static valueTypePropGetter() {} - return new Promise((resolve) => { + static valueTypePropSetter() {} - this.isMainThread = false; - - // use the passed in SharedArrayBuffer - // because we are in a worker thread - MemorySystem.init(sharedArrayBuffer); - - this.rootObject = MemorySystem.getInstance(MemorySystem.rootObjectIndex); + static propGetter(name, propName) { + /* + name, + offset, + bytes, + primitive - ThreadSystem.initFromWorker(threadId, threadInstanceIndex); + */ + const prop = classes[name].props[propName] - ThreadSystem.instance.init(this.rootObject, threadInitConfig).then(() => { - resolve(); - }); - }); - + if(prop.primitive) { + Atomics.load(this.typedArrays[prop.name], prop.offset) } - static async init(rootClass, canvas, options) { - return new Promise(async (resolve) => { - - - this.isMainThread = true; - - const workingOptions = Object.assign({ - allocate: 500000000, // allocates 500 MB for use (has to be evenly divisible by 8) - rootObjectWorkingSpace: 0 // used if rootClass is variable in size (e.g., BufferedArray) - }, options); - - // create new SharedArrayBuffer because this is on the main thread - MemorySystem.init(new SharedArrayBuffer(workingOptions.allocate)); + } - // create the root object - this.rootObject = MemorySystem.createInstance(rootClass, null, { - workingSpace: workingOptions.rootObjectWorkingSpace - }); - - await ThreadSystem.init(ThreadSystem.threadIds.main); - - await WorkerSystem.init(canvas.transferControlToOffscreen()); - - resolve(this.rootObject); - - }); + static propSetter(v, name, propName) { + return () => { + } + } - // nice to have here to not expose MemorySystem - static createInstance(...args) { - return MemorySystem.createInstance(...args); - } - -} - -export class WorkerSystem { - - static messages = { - LOADED: "loaded", - INIT: "init", - READY: "ready" - }; - - static workers = []; - - static async init(offscreenCanvas) { - return new Promise(async (resolve) => { - - let canvasWorker = null; - - for(const instance of ThreadSystem.threadInstances) { - - const threadId = instance.threadId; - - // if not main thread instance - if(threadId > 0) { + static createInstance = (cls) => { + // search blocks starting from allocation search start + // once found: + // - mark as allocated so no other thread can take it - const isCanvasThread = (threadId === 1); + // TODO: Might be able to speed this up if we set zoneSearch at the end of this. Look into this. - const workerItem = { - loaded: false, - ready: false, - instance: new Worker("worker.js", { type: "module" }), - threadId: threadId, - threadInstance: instance, - threadInstanceConfig: isCanvasThread ? { - canvas: offscreenCanvas, - devicePixelRatio: globalThis.devicePixelRatio - } : {}, - transferObjects: isCanvasThread ? [offscreenCanvas] : undefined - }; + let zone = cls.name === 'List' ? zones.b : zones.a - console.log("worker launched", workerItem); + let index = Atomics.load(this.typedArrays.int32, zone === 0 ? bufferHeaderOffset.zoneASearch : bufferHeaderOffset.zoneBSearch) - if(isCanvasThread) { - canvasWorker = workerItem - } else { - this.workers.push(workerItem); - } - } - } - - console.log("all workers launched", this.workers); - - this.workers.push(canvasWorker); - - await this.rigWorkers(); - - resolve(); - - }); + const chg = zone === 0 ? this.zoneABlockSizeInt32 : -this.zoneBBlockSizeInt32 + while(Atomics.compareExchange(this.typedArrays.int32, index, 0, 1) !== 0) { + index += chg } - static async rigWorkers() { - return new Promise(async (resolve) => { - let currentWorkerInitIndex = 0; - - const sendNextInit = () => { - - if(currentWorkerInitIndex < this.workers.length) { - - const w = this.workers[currentWorkerInitIndex]; - - console.log("sending next init to", w); - - w.instance.postMessage([ - this.messages.INIT, - w.threadInstance._b.index, - w.threadId, - w.threadInstanceConfig, - MemorySystem.buffer, - w.transferObjects - ], w.transferObjects); - - currentWorkerInitIndex++; - - } else { - resolve(); - } - - }; - - for(const worker of this.workers) { - - worker.instance.addEventListener("message", async ({ data }) => { - - console.log("worker message received", data, worker); - - if(data[0] === this.messages.LOADED) { - - worker.loaded = true; - - if(this.workers.every(w => w.loaded)) { - - sendNextInit(); - - } - - } else if (data[0] === this.messages.READY) { - - worker.ready = true; - - sendNextInit(); - - } - - }); - } - }); - } + // index is now at the allocated block - static onWorkersReady () { - console.log("workers ready!!!"); - } - - static onWorkerReceiveMessage = async ({ data }) => { - - if(data[0] === this.messages.INIT) { - - const threadInstanceIndex = data[1]; - const threadId = data[2]; - const threadInitConfig = data[3]; - const sharedArrayBuffer = data[4]; + - await Buffifier.initFromWorker(sharedArrayBuffer, threadInstanceIndex, threadId, threadInitConfig); + // int32: [0 ,1 ,2 ,3 ] + // int16: [0,1,2,3,4,5,6,7] - postMessage([this.messages.READY]); + const genIndex = (index + 1) * 2 + const typeIndex = genIndex + 1 - this.tick(); + // increment generation + Atomics.add(this.typedArrays.uint16, genIndex, 1) - } - - } + // store type + Atomics.store(this.typedArrays.uint16, typeIndex, cls._t) - static async tick() { - Atomics.wait(MemorySystem.int32Array, MemorySystem.metaDataIndices.workersSignal, 0); - await ThreadSystem.instance.work(); + } - this.tick(); - } + static getInstance() {} + static deleteInstance(instance) { + // increment generation number (will make all pointers null) + // set as deallocated + // set allocation search start to this block only if this block is less than existing allocation search start. + } } -class ThreadSystem { - - static instance = null; - - static totalThreads = - config.threads.main.length + - config.threads.canvas.length + - config.threads.others.length - ; - - static currentThreadId = null; +class TypeConverter { + static buffer = new ArrayBuffer(8) - static threadIds = { - main: 0, - canvas: 1 - }; + static float32Arr = new Float32Array(this.buffer) + static float64Arr = new Float64Array(this.buffer) - static threadInstances = null; + static uint32Array = new Uint32Array(this.buffer) + static uint64Array = new BigUint64Array(this.buffer) - // TODO: Add methods to load/store thread instance meta data + static float32ToUint32 = (n) => { + this.float32Arr[0] = n + return this.uint32Array[0] + } - static initFromWorker(threadId, threadInstanceIndex) { + static uint32ToFloat32 = (n) => { + this.uint32Array[0] = n + return this.float32Arr[0] + } - this.currentThreadId = threadId; + static float64ToUint64 = (n) => { + this.float64Arr[0] = n + return this.uint64Array[0] + } - this.instance = MemorySystem.getInstance(threadInstanceIndex); + static uint64ToFloat64 = (n) => { + this.uint64Array[0] = n + return this.float64Arr[0] + } + static boolToInt(b) { + if (b) { + return 1 + } else { + return 0 } + } - static async init(threadId) { - return new Promise(async (resolve) => { - - this.currentThreadId = threadId; - - const threadClass = this.getThreadClassById(threadId); - - this.instance = MemorySystem.createInstance(threadClass, { threadId }); - - if(this.threadIds.main === threadId) { + static intToBool(n) { + return n !== 0 + } +} - // since we are on the main thread, we create all other thread - // instances here so workers can load the one they are - // assigned via postMessage -> MemorySystem.getInstance +const classes = { + /* + 'App': { + cls: App, + props: { + prop1: {}, + prop2: {} + } + } - this.threadInstances = new Array(this.totalThreads); + */ +} - // add already created main instance - this.threadInstances[this.threadIds.main] = this.instance; - // create canvas thread instance - this.threadInstances[this.threadIds.canvas] = - MemorySystem.createInstance(this.getThreadClassById(this.threadIds.canvas), { - threadId: this.threadIds.canvas - }); - - let n = 2; - - // create the others - for(const cls of config.threads.others) { - this.threadInstances[n] = MemorySystem.createInstance(cls, { - threadId: n - }); - n++; - } +const types = { + boolean: { + //id: 0, + + bytes: 1, + typedArray: Buffifier.typedArrays.uint8 + get: TypeConverter.intToBool, + set: TypeConverter.boolToInt + }, + int8: { + //id: 1, + + bytes: 1, + typedArray: Buffifier.typedArrays.int8 + }, + uint8: { + //id: 2, + + bytes: 1, + typedArray: Buffifier.typedArrays.uint8 + }, + int16: { + //id: 3, + + bytes: 2, + typedArray: Buffifier.typedArrays.int16 + }, + uint16: { + //id: 4, + + bytes: 2, + typedArray: Buffifier.typedArrays.uint16 + }, + int32: { + //id: 5, + + bytes: 4, + typedArray: Buffifier.typedArrays.int32 + }, + uint32: { + //id: 6, + + bytes: 4, + typedArray: Buffifier.typedArrays.uint32 + }, + float32: { + //id: 7, + + bytes: 4, + typedArray: Buffifier.typedArrays.uint32, + get: TypeConverter.uint32ToFloat32, + set: TypeConverter.float32ToUint32 + }, + float64: { + //id: 8, + + bytes: 8, + typedArray: Buffifier.typedArrays.uint64, + get: TypeConverter.uint64ToFloat64, + set: TypeConverter.float64ToUint64 + }, + int64: { + //id: 9, + + bytes: 8, + typedArray: Buffifier.typedArrays.int64 + }, + uint64: { + //id: 10, + + bytes: 8, + typedArray: Buffifier.typedArrays.uint64 + } /*, + object: { + bytes: 4, + typedArray: Buffifier.uint32Array + }*/ +} - await this.instance.init(Buffifier.rootObject); +export class BaseClass { + static buffify = Buffifier.buffify + + _value = null + _props = null + + /* + static buffify(o) { + console.log(`[${threadName}] BaseClass.buffify()`, this.name, o) + } + */ + + constructor(v) { + console.log(`[${threadName}] BaseClass.constructor()`, v) + + if (v === undefined) { + // unallocated instance + } else if (typeof v === 'object') { + // unallocated instance with defaults + } else { + // assume it's a number and it's an existing instance + // v is the block index + this._value = v + } + + // if v === undefined + // it's a new instance so search for free block to set value (blockIndex?) + // else + // if value type, store v as value. + // else v is the block index, store as value (blockIndex) + } +} - resolve(); - } +export class List extends BaseClass { + static { + this.buffify({ + allocate: 262140, // allows about 65535 items + props: [ + ['of', 'uint16'], + ['count', 'uint16', 0] + ] + }) + } - }); + listType = null - } + constructor(of) { + /* + Constructor will be called by + user via new List(GridCell) + - 'of' needs to be set to type id by calling super with { of: 5 } + + or... + buffifier via new List(blockIndex) + - 'of' and 'count' will already be good. + */ - static getThreadClassById(threadId) { + super({ + of: types[of.name].id + }) - if(threadId === 0) { - return config.threads.main[0]; - } else if(threadId === 1) { - return config.threads.canvas[0]; - } else if(threadId > 1) { - return config.threads.others[threadId - 2]; - } + /* + if(typeof o === 'string') { + } else if (o instanceof BaseClass) { + const name = o.name + } else { + throw new Error (`List constructor argument must be a string ('int16', 'uint32', ...) or a class extending BaseClass`) } - + */ + } } - - diff --git a/Entity.js b/Entity.js deleted file mode 100644 index baf8d5a..0000000 --- a/Entity.js +++ /dev/null @@ -1,32 +0,0 @@ -import { DataTypes } from "./Buffifier.js"; - -export class Entity { - - width = 2; - depth = 2; - height = 10; - - static _meta = { - - get props() { - - return { - - x: DataTypes.Float64, - y: DataTypes.Float64, - z: DataTypes.Float64, - - mouseOver: DataTypes.boolean, - - speed: DataTypes.Float32, - - screenX: DataTypes.Int32, - screenY: DataTypes.Int32, - cameraDistance: DataTypes.Float32 - } - - } - - }; - -} diff --git a/README.md b/README.md deleted file mode 100644 index f7c5f4c..0000000 --- a/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# Buffifier -Currently a work in progress. - -Buffifier is a framework that tackles the problem of having to communicate large amounts of data to multiple web workers with low latency. This is accomplished with SharedArrayBuffer (SAB), Atomics, and intercepting object properties via setters/getters. It tries to be as minimally invasive as possible by not requiring you to change much of your app. This repository is a minimal example that will demonstrate its capabilities, and will show you how to use the framework. The "meat and potatoes" is in Buffifier.js, and ideally, that is the only file you will need to include in your app. - ---- - -**How to see it in action:** - -Download/clone this repository. - -Run this command in the same folder to start a simple web server: ``py -m secure_server`` - -Alternatively, setup any simple web server that serves the files with these response headers: - -``` -Cross-Origin-Opener-Policy: same-origin -Cross-Origin-Embedder-Policy: require-corp -``` - -Headers are required for SharedArrayBuffer and unthrottled performance.now() timers. - -Navigate to the http://localhost:8000, and you should see something like this: - - - -(_it's a work in progress, so it only shows a still Three.js scene for now. But the inner workers should be automatically reading/writing to the SAB_) - ---- - -**How to set up a class so instances are shared across web workers:** - -(_instructions are incomplete_) - -### RootClass.js -```javascript -import { DataTypes } from "./Buffifier.js"; - -export class RootClass { - - // Not shared accross web workers - someProperty = 10; - - // Special static property that defines the class for Buffifier - static _meta = { - get props() { - return { - // Define shared properties here with any type in DataTypes - someSharedProperty: DataTypes.Int32 - } - } - }; -} -``` - -### Buffifier.js -You'll need to edit Buffifier.js a bit to work with your application. -```javascript -import { RootClass } from "./RootClass.js"; -import { MainThread } from "./MainThread.js"; -import { CanvasThread } from "./CanvasThread.js"; -import { OtherThread } from "./OtherThread.js"; - -const config = { - classes: [ - RootClass - ], - threads: { - main: [ - MainThread - ], - canvas: [ - CanvasThread - ], - others: [ - OtherThread - ] - } -}; - -export const DataTypes = { - // Add your classes to this list so they can be identified properly - RootClass: 12, - MainThread: 13, - CanvasThread: 14, - OtherThread: 15 -} -``` - -### main.js -```javascript -import { RootClass } from "./RootClass.js"; - -// Initializes Buffifier: -// - Starts all web workers -// - Creates an instance of RootClass that is backed by SharedArrayBuffer. -// - Gives all web workers access to the same RootClass instance. -// - Starts an animation frame loop that will execute some method on all threads: MainThread.js, CanvasThread.js, OtherThread.js. -const rootClassInstance = Buffifier.init(RootClass); - -// Web workers will immediatly have access to someSharedProperty's new value after this statement executes here. -rootClassInstance.someSharedProperty = 10; - -// Web workers will not see changes of someProperty's value on their side because it's not a shared property. -rootClassInstance.someProperty = 10; - -``` diff --git a/RateCounter.js b/RateCounter.js deleted file mode 100644 index 233c8c3..0000000 --- a/RateCounter.js +++ /dev/null @@ -1,38 +0,0 @@ - -export class RateCounter { - - value = 0; - - #samples = null; - #last = null; - - #sum = 0; - #count = 0; - - log = () => { - - const ct = document.timeline.currentTime; - - this.#sum += (ct - this.#last); - - if(this.#count === this.#samples) { - this.value = (this.#samples * 1000) / this.#sum; - this.#sum = 0; - this.#count = 1; - } else { - this.#count++; - } - - this.#last = ct; - - }; - - - constructor(samples = 30) { - this.#samples = samples; - this.#last = document.timeline.currentTime; - } - -} - - diff --git a/World.js b/World.js deleted file mode 100644 index 6ce928f..0000000 --- a/World.js +++ /dev/null @@ -1,44 +0,0 @@ -import { DataTypes } from "./Buffifier.js"; - -export class World { - - static _meta = { - get props() { - return { - heightData: DataTypes.BufferedArray, - items: DataTypes.BufferedArray - } - } - }; - - - static cellSize = 10; - - static segments = 60; - - static get cellsZ() { - return this.segments; - } - - static get cellsX() { - return this.segments; - } - - static get size() { - return this.cellSize * this.segments; - } - - static get width() { - return this.size; - } - - static get depth() { - return this.size; - } - - - - - - -} diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index 242262ee2c46e5b563c1edd3f08a52a18eddd4cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1342 zcmcgs$xquy82wmss8pr71?ARD)xV(2AyTTYiK0Y_5@<2RPH^moeKWz}05Y3I zVwTz_7#nPCu#FcmHu#4D8*oe^p%e^MZPP?y4R!#N*ZH;Tp;CJ7NKfC)n|a?iGf(=6 zk|>!@oFEoYQ)Vhr8WCG3vvm@g*}RT%XLyd`Gy{L`zXkwGBoef^xJa?s9%bE?M8Qyqp8oNawsy8@dv}L;{o&yujRz)(3ry10 z3_-WeWJbTi$Yl#9(q?571`I|R^yYUzJ$vp2-Al+DSNvdRw| zl+DMlUb$Rj?9#z$HltUohOSKoQ>O-&ZvA{ytukTl=>^OG(TmM3+Sz?c@py~`-(C~i zOhyb@ts6aBZCu~c3Z=Xhin4r$JTz35L0MIfe!UJ3lWF})WF~dU!{Bgpi0txN}Q{+cz>%Q&E8Cx=PrLhSy!~?Gj_BHrt@>IvEO0 zQ%|3ju4M?gA!{FMWJOFT#Fw9agQ_w)w5m3=C>v2A5u^T|3>^;|;kEZ;c%Tm+oB4~v zqT;eqx83h%+8%8iWCc=Ox^NL{l?oxBBknY*52pQYuzJW93(;}E0j>cfI9LCTm5`Ha z6?e6hUguFb;Dv_emKEhfA{HSyHiSu!H9IHslB9{-Tx9-L#=f0MvXJjHY>VmRbhHCacy+*~?$B5mm z;r;vks|#6HlMWWW8g-Q=sH-YMBDm_z4FjyF=EPNK~7dWs>=(RmuiH(w!x6k zF3!qKKkw)_U@^>L%I9D{F|XuBEEZzSZNwwa4$h%Ry}S?-VHQeqZ?m@y&dvq>^!wUR zBrg`940!s><|f@TpQCr*)~jV+72$571hp0U%#S?ei?f)A0+i=VVK;VS*6-XN8MM5= zzaOW)y%%Xj1jzs!Fm!=ib`3XFp9vPYC92j$&;IeeV@9M*oX)hK+Bc0(OM+FM5?(7Cl+UY zzNP3oMP@^^7mE?E=WFvhmY0_(JTpbBk7tPUI;r!%Lb1LO2(QhLr#)<~O&RP_eH;xB zzqfyopv{dJ6pP2{AaO)nr--&vh)VwfYZP9-StR|9QWkg++vhnikGF_c-yupc{JYQa PqBjql&GzPv|C#+0=RUA( diff --git a/index.html b/index.html index bc7dc70..da9048d 100644 --- a/index.html +++ b/index.html @@ -1,46 +1,45 @@ - + - - Buffifier - - - - - - -
-
main FPS:
-
worker #0 ms/work:
-
worker #1 ms/work:
-
- - - \ No newline at end of file + + + Buffifier + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.js b/index.js index b7066fb..570b7ef 100644 --- a/index.js +++ b/index.js @@ -1,12 +1,29 @@ -import { Buffifier } from "./Buffifier.js"; - -import { App } from "./App.js"; - -const app = await Buffifier.init(App, document.getElementById("canvas")); - -Buffifier.start(); - - - - - +import { Buffifier } from './buffifier.js' +import { App } from './objects.js' +import { ThreadMain, ThreadA, ThreadB, ThreadC } from './threads.js' + +Buffifier.init({ + root: App, + main: ThreadMain, + threads: [ + ThreadA, + ThreadB, + [ThreadB, 2], + [ThreadC, 'canvas1'], + [ThreadC, 'canvas2'], + [ThreadC, 'canvas3'], + [ThreadC, 'canvas4'], + [ThreadC, 'canvas5'], + [ThreadC, 'canvas6'], + [ThreadC, 'canvas7'], + [ThreadC, 'canvas8'], + [ThreadC, 'canvas9'], + [ThreadC, 'canvas10'], + [ThreadC, 'canvas11'], + [ThreadC, 'canvas12'], + [ThreadC, 'canvas13'], + [ThreadC, 'canvas14'], + [ThreadC, 'canvas15'], + [ThreadC, 'canvas16'] + ] +}) diff --git a/objects.js b/objects.js new file mode 100644 index 0000000..0b7051b --- /dev/null +++ b/objects.js @@ -0,0 +1,25 @@ +import { BaseClass, List } from './buffifier.js' + +export class App extends BaseClass { + static { + this.buffify({ + props: [ + ['prop1', 'uint32'], + ['prop2', ObjectA], + ['prop3', 'boolean'], + ['prop4', List] + ] + }) + } +} + +export class ObjectA extends BaseClass { + static { + this.buffify({ + props: [ + ['a', 'uint32'], + ['b', 'uint64'] + ] + }) + } +} diff --git a/secure_server.py b/server.py similarity index 87% rename from secure_server.py rename to server.py index 341717f..7034700 100644 --- a/secure_server.py +++ b/server.py @@ -4,13 +4,11 @@ class MyHTTPRequestHandler(server.SimpleHTTPRequestHandler): def end_headers(self): self.send_my_headers() - server.SimpleHTTPRequestHandler.end_headers(self) def send_my_headers(self): self.send_header("Cross-Origin-Opener-Policy", "same-origin") self.send_header("Cross-Origin-Embedder-Policy", "require-corp") - if __name__ == '__main__': - server.test(HandlerClass=MyHTTPRequestHandler) \ No newline at end of file + server.test(HandlerClass=MyHTTPRequestHandler, port=8080) \ No newline at end of file diff --git a/threads.js b/threads.js new file mode 100644 index 0000000..757adb4 --- /dev/null +++ b/threads.js @@ -0,0 +1,31 @@ +export class ThreadMain { + init = (rootObj, canvas) => { + console.log('ThreadMain.init()', rootObj, canvas) + } +} +export class ThreadA { + init = (rootObj, canvas) => { + console.log('ThreadA.init()', rootObj, canvas) + } +} +export class ThreadB { + init = (rootObj, canvas) => { + console.log('ThreadB.init()', rootObj, canvas) + } +} +export class ThreadC { + init = (rootObj, canvas) => { + console.log('ThreadC.init()', rootObj, canvas) + this.w = canvas.width + this.h = canvas.height + this.ctx = canvas.getContext('2d') + this.ctx.fillStyle = 'white' + this.draw() + } + draw = () => { + const { ctx, w, h, draw } = this + const { floor, random } = Math + ctx.fillRect(floor(random() * w), floor(random() * h), 1, 1) + requestAnimationFrame(draw) + } +} diff --git a/threads/Base.js b/threads/Base.js deleted file mode 100644 index efadd40..0000000 --- a/threads/Base.js +++ /dev/null @@ -1,12 +0,0 @@ -export class BaseThread { - -} - - - - - - - - - diff --git a/threads/Entity.js b/threads/Entity.js deleted file mode 100644 index 78f9ac3..0000000 --- a/threads/Entity.js +++ /dev/null @@ -1,67 +0,0 @@ -import { DataTypes } from "../Buffifier.js"; -import { BaseThread } from "./Base.js"; - -export class EntityThread extends BaseThread { - - static _meta = { - - get props() { - - return { - threadId: DataTypes.Uint8, - test1: DataTypes.Uint32 - } - - } - - }; - - app = null; - - entities = null; - - init = async (app) => { - - return new Promise(async (resolve) => { - - this.app = app; - this.entities = app.world.items; - - resolve(); - - }); - } - - work = async () => { - return new Promise(async (resolve) => { - - - - for(const o of this.entities) { - o.x = o.x + ((Math.random() - 0.1) / 5); - o.z = o.z + ((Math.random() - 0.1) / 5); - o.mouseOver = false; - } - - //const mouseOverEnts = [...this.app.mouseOverEntityIndices]; - - - for(const n of this.app.mouseOverEntityIndices) { - this.entities.at(n).mouseOver = true; - } - - resolve(); - - }); - } - -} - - - - - - - - - diff --git a/threads/Main.js b/threads/Main.js deleted file mode 100644 index e60bef0..0000000 --- a/threads/Main.js +++ /dev/null @@ -1,115 +0,0 @@ -import { Buffifier, BufferedArray, DataTypes } from "../Buffifier.js"; -import { BaseThread } from "./Base.js"; -import { Entity } from "../Entity.js"; -import { World } from "../World.js"; - -export class MainThread extends BaseThread { - - static _meta = { - - get props() { - - return { - threadId: DataTypes.Uint8, - test1: DataTypes.Uint32 - } - - } - - }; - - app = null; - - init = async (app) => { - - return new Promise(async (resolve) => { - - - this.app = app; - - app.canvasWidth = document.body.offsetWidth; - app.canvasHeight = document.body.offsetHeight; - - this.setupEventListeners(); - - app.world = Buffifier.createInstance(World); - - app.world.items = Buffifier.createInstance(BufferedArray, { - of: DataTypes.Entity - }, { - workingSpace: 300000 * 4 // 300000 items allowed - }); - - - app.mouseOverEntityIndices = Buffifier.createInstance(BufferedArray, { - of: DataTypes.Uint32 - }, { - workingSpace: 100 * 4 // 100 items allowed - }); - - for(let n = 0; n < 100; n++) { - - const entity = Buffifier.createInstance(Entity, { - x: (Math.random() * World.width) - (World.width / 2), - z: (Math.random() * World.depth) - (World.depth / 2), - speed: Math.random() - }); - - - - await app.world.items.push(entity); - - } - - - - - resolve(); - - }); - } - - work = async () => { - return new Promise(async (resolve) => { - - resolve(); - - }); - } - - - setupEventListeners() { - - ["mousedown","mouseup"].forEach(s => document.addEventListener(s, (e) => { - this.app.mouseDown = (e.type === "mousedown") ? (e.button + 1) : 0; - })); - - document.addEventListener("wheel", (e) => { - this.app.mouseWheelDeltaY += e.deltaY; - }); - - document.addEventListener("mousemove", (e) => { - this.app.mouseX = e.clientX; - this.app.mouseY = e.clientY; - }); - - window.addEventListener("resize", () => { - this.app.canvasWidth = document.body.offsetWidth; - this.app.canvasHeight = document.body.offsetHeight; - }); - - } - - - - -} - - - - - - - - - diff --git a/threads/Pathing.js b/threads/Pathing.js deleted file mode 100644 index 6c669ec..0000000 --- a/threads/Pathing.js +++ /dev/null @@ -1,49 +0,0 @@ -import { DataTypes } from "../Buffifier.js"; -import { BaseThread } from "./Base.js"; - -export class PathingThread extends BaseThread { - - static _meta = { - - get props() { - - return { - threadId: DataTypes.Uint8, - test1: DataTypes.Uint32 - } - - } - - }; - - app = null; - - init = async (app) => { - - return new Promise(async (resolve) => { - - this.app = app; - - resolve(); - - }); - } - - work = async () => { - return new Promise(async (resolve) => { - - resolve(); - - }); - } - -} - - - - - - - - - diff --git a/threads/Renderer.js b/threads/Renderer.js deleted file mode 100644 index 4f7c5de..0000000 --- a/threads/Renderer.js +++ /dev/null @@ -1,468 +0,0 @@ -import * as THREE from '../three/three.module.js'; -import { OrbitControlsModified } from '../three/addons/controls/OrbitControlsModified.js'; -import { DataTypes } from "../Buffifier.js"; -import { BaseThread } from "./Base.js"; -import { World } from "../World.js"; - -import { CSM } from '../three/addons/csm/CSM.js'; - -export class RendererThread extends BaseThread { - - static _meta = { - - get props() { - - return { - threadId: DataTypes.Uint8, - test1: DataTypes.Uint32 - } - - } - - }; - - app = null; - - world = null; - - worldItems = null; - - canvas = null; - - scene = null; - - camera = null; - - renderer = null; - - controls = null; - - devicePixelRatio = null; - - canvasWidth = null; - - canvasHeight = null; - - csm = null; - - lastFrameAppData = null; - - init = async (app, config) => { - - return new Promise(async (resolve) => { - - this.app = app; - - this.lastFrameAppData = { - - mouseX: this.app.mouseX, - mouseY: this.app.mouseY, - - mouseDown: this.app.mouseDown, - - keyWDown: this.app.keyWDown, - keyADown: this.app.keyADown, - keySDown: this.app.keySDown, - keyDDown: this.app.keyDDown, - - - mouseWheelDeltaY: this.app.mouseWheelDeltaY - - }; - - this.canvasWidth = this.app.canvasWidth; - this.canvasHeight = this.app.canvasHeight; - - this.world = this.app.world; - - this.worldItems = this.world.items; - - this.canvas = config.canvas; - - this.devicePixelRatio = config.devicePixelRatio; - - this.scene = new THREE.Scene(); - - this.scene.background = new THREE.Color("#000000"); - - this.camera = new THREE.PerspectiveCamera(70, this.canvasWidth / this.canvasHeight, 0.1, 900); - - this.camera.position.set(0, 200, 400); - - this.renderer = new THREE.WebGLRenderer({ - antialias: true, - canvas: this.canvas, - powerPreference: "high-performance" - }); - - this.renderer.setPixelRatio(this.devicePixelRatio); - - this.renderer.setSize(this.canvasWidth, this.canvasHeight); - - this.renderer.shadowMap.enabled = true; - this.renderer.shadowMap.type = THREE.PCFShadowMap; - - - - - const c = { - far: 250, - fade: true, - mode: "practical", - x: -0.5, - y: -1, - z: -0.5, - shadowMapSize: 512, - intensity: 2, - cascades: 2 - }; - - this.csm = new CSM( { - fade: c.fade, - maxFar: c.far, - cascades: c.cascades, - mode: c.mode, - parent: this.scene, - shadowMapSize: c.shadowMapSize, - lightDirection: new THREE.Vector3(c.x, c.y, c.z).normalize(), - lightIntensity: c.intensity, - camera: this.camera - }); - - - const itemsLength = this.worldItems.length; - - for(let n = 0; n < itemsLength; n++) { - const ent = await this.worldItems.at(n); - - const geometry = new THREE.BoxGeometry(ent.width, ent.height, ent.depth ); - const material = new THREE.MeshStandardMaterial({ - color: 0x00aaaa - }); - this.csm.setupMaterial(material); - - const cube = new THREE.Mesh( geometry, material ); - - - cube.userData.entityIndex = n; - cube.castShadow = true; - cube.receiveShadow = false; - - cube.position.x = ent.x; - cube.position.y = ent.y; - cube.position.z = ent.z; - - this.scene.add( cube ); - - } - - const planeGeometry = new THREE.PlaneGeometry( - World.width, - World.depth, - World.cellsX, - World.cellsZ - ); - - planeGeometry.rotateX(-Math.PI / 2); - - const vertices = planeGeometry.attributes.position.array; - - const arr = []; - - for(let x = 0; x < World.cellsX + 1; x++) { - for(let z = 0; z < World.cellsZ + 1; z++) { - const arrIndex = (x * (World.cellsZ + 1)) + z; - vertices[arrIndex * 3 + 1] = app.world.heightData.at(arrIndex); - arr.push(arrIndex); - } - } - - const tex = new THREE.CanvasTexture(this.generateTexture()) ; - - tex.wrapS = THREE.RepeatWrapping; - tex.wrapT = THREE.RepeatWrapping; - tex.colorSpace = THREE.SRGBColorSpace; - tex.offset.set(1 - (World.size - World.cellSize * 3) / World.size, 1 - (World.size - World.cellSize * 3) / World.size); - tex.repeat.set((World.size - World.cellSize * 6) / World.size, (World.size - World.cellSize * 6) / World.size); - - //const groundMaterial = new THREE.MeshPhongMaterial( { - // map: tex, - // wireframe: true - //}); - - - - - const g1 = new THREE.MeshStandardMaterial({ - //color: 0x333333, - map: tex, - side: THREE.DoubleSide, - //wireframe: true - }); - this.csm.setupMaterial(g1); - const planeMesh = new THREE.Mesh( planeGeometry, g1 ); - - planeMesh.receiveShadow = true; - planeMesh.castShadow = false; - - this.scene.add(planeMesh); - - this.scene.add(new THREE.AmbientLight(0xffffff, 1)); - - this.controls = new OrbitControlsModified(this.camera, { - canvasWidth: this.canvasWidth, - canvasHeight: this.canvasHeight, - devicePixelRatio: this.devicePixelRatio - }); - - // this.controls.enableDamping = true; - this.controls.maxPolarAngle = Math.PI / 2; - this.controls.target = new THREE.Vector3(0, 0, 0); - - const axesHelper = new THREE.AxesHelper(500); - - axesHelper.position.y = 0.01; - this.scene.add(axesHelper); - - - - - - - this.renderer.render(this.scene, this.camera); - - //setTimeout(() => { - this.work(); - //}, 5); - - resolve(); - }); - } - - generateTexture() { - - const data = [...this.app.world.heightData]; - - const width = World.segments; - const height = World.segments; - - let context, image, imageData, shade; - - const vector3 = new THREE.Vector3( 0, 0, 0 ); - - const sun = new THREE.Vector3( 1, 1, 1 ); - sun.normalize(); - - const canvas = new OffscreenCanvas(width, height); - - - context = canvas.getContext( '2d' ); - context.fillStyle = '#000'; - context.fillRect( 0, 0, width, height ); - - image = context.getImageData( 0, 0, canvas.width, canvas.height ); - imageData = image.data; - - const d = []; - - for ( let i = 0, j = 0, l = imageData.length; i < l; i += 4, j ++ ) { - - vector3.x = data[ j - 2 ] - data[ j + 2 ]; - vector3.y = 2; - vector3.z = data[ j - width * 2 ] - data[ j + width * 2 ]; - vector3.normalize(); - - shade = vector3.dot( sun ); - - d.push(shade); - - imageData[ i ] = ( shade * 20 ) * ( 0.3 + data[ j ] * 0.0007 ) + 20; - imageData[ i + 1 ] = ( shade * 20 ) * ( 0.3 + data[ j ] * 0.0007 ) + 70; - imageData[ i + 2 ] = ( shade * 20 ) * ( 0.3 + data[ j ] * 0.0007 ) + 30; - - } - - context.putImageData( image, 0, 0 ); - - const canvasScaled = new OffscreenCanvas(width, height); - canvasScaled.width = width * 10; - canvasScaled.height = height * 10; - - context = canvasScaled.getContext("2d"); - context.scale( 10, 10 ); - context.drawImage( canvas, 0, 0 ); - - image = context.getImageData( 0, 0, canvasScaled.width, canvasScaled.height); - imageData = image.data; - - for ( let i = 0, l = imageData.length; i < l; i += 4 ) { - - const v = ~ ~ (Math.random() * 30); - - imageData[i] += v; - imageData[i + 1] += v; - imageData[i + 2] += v; - - } - - context.putImageData(image, 0, 0); - - return canvasScaled; - - } - - work = () => { - - return new Promise(async (resolve) => { - - const w = this.app.canvasWidth; - const h = this.app.canvasHeight; - - if(w !== this.canvasWidth || h !== this.canvasHeight) { - this.canvasWidth = w; - this.canvasHeight = h; - this.onCanvasSizeChange(); - } - - const currentFrameAppData = { - - mouseX: this.app.mouseX, - mouseY: this.app.mouseY, - - mouseDown: this.app.mouseDown, - - keyWDown: this.app.keyWDown, - keyADown: this.app.keyADown, - keySDown: this.app.keySDown, - keyDDown: this.app.keyDDown, - - mouseWheelDeltaY: this.app.mouseWheelDeltaY - - } - - - if(currentFrameAppData.mouseDown > 0 && this.lastFrameAppData.mouseDown === 0) { - - - this.controls.onMouseDown({ - button: currentFrameAppData.mouseDown - 1, - clientX: currentFrameAppData.mouseX, - clientY: currentFrameAppData.mouseY - }); - } else if(currentFrameAppData.mouseDown === 0 && this.lastFrameAppData.mouseDown > 0) { - - this.controls.onPointerUp(); - - } else if(currentFrameAppData.mouseWheelDeltaY !== this.lastFrameAppData.mouseWheelDeltaY) { - - this.controls.onMouseWheel({ - deltaY: currentFrameAppData.mouseWheelDeltaY, - clientX: currentFrameAppData.mouseX, - clientY: currentFrameAppData.mouseY - }); - } - - if(currentFrameAppData.mouseX !== this.lastFrameAppData.mouseX || currentFrameAppData.mouseY !== this.lastFrameAppData.mouseY) { - - this.controls.onMouseMove({ - pointer: 0, - clientX: currentFrameAppData.mouseX, - clientY: currentFrameAppData.mouseY - }); - } - - - const itemsLength = this.worldItems.length; - - - for(let n = 0; n < itemsLength; n++) { - const ent = this.worldItems.at(n); - - const ent3d = this.scene.children[n]; - ent3d.position.x = ent.x; - ent3d.position.y = ent.y + 5; - ent3d.position.z = ent.z; - - if(ent.mouseOver) { - //ent3d.visible = false; - } else { - //ent3d.visible = true; - //ent3d.material.color = 0x00cccc; - //ent3d.material.opacity = 1; - } - - const vector = new THREE.Vector3(); - - //ent3d.updateMatrixWorld(); // `obj´ is a THREE.Object3D - - vector.setFromMatrixPosition(ent3d.matrixWorld); - - vector.project(this.camera); // `camera` is a THREE.PerspectiveCamera - //console.log(Math.round((0.5 + vector.x / 2) * (this.canvasWidth / this.devicePixelRatio))); - ent.screenX = (0.5 + vector.x / 2) * this.canvasWidth; - ent.screenY = (0.5 - vector.y / 2) * this.canvasHeight; - - ent.cameraDistance = this.camera.position.distanceTo(ent3d.position); - - - } - - - // RAY CAST - - const x = this.app.mouseX; - const y = this.app.mouseY; - - - const rc = new THREE.Raycaster(); - const pointer = new THREE.Vector2((x / w) * 2 - 1, -(y / h) * 2 + 1); - - rc.setFromCamera(pointer, this.camera); - - const intersects = rc.intersectObjects(this.scene.children, true); - - this.app.mouseOverEntityIndices.length = intersects.length; - - for(let n = 0; n < intersects.length; n++) { - this.app.mouseOverEntityIndices.set(n, intersects[n].object.userData.entityIndex); - } - - this.csm.update(); - - this.renderer.render(this.scene, this.camera); - - this.app.mouseWheelDeltaY = 0; - - this.lastFrameAppData = currentFrameAppData; - - // no idea why settimeout fixes the issue - setTimeout(resolve); - - }); - - } - - - - onCanvasSizeChange() { - - this.camera.aspect = this.canvasWidth / this.canvasHeight; - this.camera.updateProjectionMatrix(); - - this.renderer.setPixelRatio(this.devicePixelRatio); - this.renderer.setSize(this.canvasWidth, this.canvasHeight); - - - //this.csm.updateFrustums(); - } - -} - - - - - - - - - diff --git a/threads/Terrain.js b/threads/Terrain.js deleted file mode 100644 index f1a06de..0000000 --- a/threads/Terrain.js +++ /dev/null @@ -1,249 +0,0 @@ - -import { Buffifier, BufferedArray, DataTypes } from "../Buffifier.js"; -import { BaseThread } from "./Base.js"; -import { Entity } from "../Entity.js"; -import { World } from "../World.js"; - -import { ImprovedNoise } from '../three/addons/math/ImprovedNoise.js'; - -export class TerrainThread extends BaseThread { - - static _meta = { - - get props() { - - return { - threadId: DataTypes.Uint8, - test1: DataTypes.Uint32 - } - - } - - }; - - app = null; - - entities = null; - - heightData = null; - - currentIndex = -100; - - init = async (app) => { - - return new Promise(async (resolve) => { - - this.app = app; - - this.entities = app.world.items; - - this.buildTerrain(); - - - resolve(); - - }); - } - - work = async () => { - return new Promise(async (resolve) => { - - - const cellSize = World.cellSize; - const getY = (p1, p2, p3, x, z) => { - let det = (p2.z - p3.z) * (p1.x - p3.x) + (p3.x - p2.x) * (p1.z - p3.z); - - let l1 = ((p2.z - p3.z) * (x - p3.x) + (p3.x - p2.x) * (z - p3.z)) / det; - let l2 = ((p3.z - p1.z) * (x - p3.x) + (p1.x - p3.x) * (z - p3.z)) / det; - let l3 = 1 - l1 - l2; - - return l1 * p1.y + l2 * p2.y + l3 * p3.y; - }; - - - for(const o of this.entities) { - - - - const verticesX = World.cellsX + 1; - //const verticesZ = World.cellsZ + 1; - - const x = o.x + (World.cellsX * World.cellSize) / 2; - const z = o.z + (World.cellsZ * World.cellSize) / 2; - - let xIndex = Math.floor(x / 10); - let zIndex = Math.floor(z / 10); - - - const vert0 = { - x: xIndex * cellSize, - y: this.heightData[(zIndex * verticesX) + xIndex], - z: zIndex * cellSize, - }; - const vert1 = { - x: (xIndex + 1) * cellSize, - y: this.heightData[(zIndex * verticesX) + xIndex + 1], - z: zIndex * cellSize, - }; - const vert2 = { - x: xIndex * cellSize, - y: this.heightData[((zIndex + 1) * verticesX) + xIndex], - z: (zIndex + 1) * cellSize, - }; - const vert3 = { - x: (xIndex + 1) * cellSize, - y: this.heightData[((zIndex + 1) * verticesX) + xIndex + 1], - z: (zIndex + 1) * cellSize, - }; - - - - - - - const dist0 = Math.sqrt(Math.pow(x - vert0.x, 2) + Math.pow(z - vert0.z, 2)); - //const dist1 = Math.sqrt(Math.pow(x - vert1.x, 2) + Math.pow(z - vert1.z, 2)); - //const dist2 = Math.sqrt(Math.pow(x - vert2.x, 2) + Math.pow(z - vert2.z, 2)); - const dist3 = Math.sqrt(Math.pow(x - vert3.x, 2) + Math.pow(z - vert3.z, 2)); - - let y = 0; - - if(dist0 > dist3) { - // triangle1 - //sumDist = dist1 + dist2 + dist3; - //sumDistOther = (10 - dist1) + (10 - dist2) + (10 - dist3); - - - //percDistB = (10 - dist1) / sumDistOther; - //percDistC = (10 - dist2) / sumDistOther; - //percDistD = (10 - dist3) / sumDistOther; - - - // y = (vert1.y * percDistB) + (vert2.y * percDistC) + (vert3.y * percDistD) + (o.height / 2); - - y = getY(vert1, vert2, vert3, x, z); - //console.log("TRIANGLE 1", percDistB, percDistC, percDistD); - - } else { - // triangle2 - //sumDist = dist0 + dist1 + dist2; - //sumDistOther = (10 - dist0) + (10 - dist1) + (10 - dist2); - - //percDistA = (10 - dist0)/ sumDistOther; - //percDistB = (10 - dist1) / sumDistOther; - //percDistC = (10 - dist2) / sumDistOther; - - //y = (vert0.y * percDistA) + (vert1.y * percDistB) + (vert2.y * percDistC) + (o.height / 2); - - - y = getY(vert0, vert1, vert2, x, z); - //console.log("TRIANGLE 2", percDistA, percDistB, percDistC); - - - - } - - if(this.currentIndex !== xIndex) { - this.currentIndex = xIndex; - } - - o.y = y; - - - - - /* - for(let x = 0; x < this.world.cellsX + 1; x++) { - for(let z = 0; z < this.world.cellsZ + 1; z++) { - const arrIndex = (x * (this.world.cellsZ + 1)) + z; - vertices[arrIndex * 3 + 1] = app.world.heightData.at(arrIndex); - arr.push(arrIndex); - } - } - */ - - // - // x = - /* - if(o.goingDown) { - o.y -= 0.1; - if(o.y < 0) { - o.goingDown = false; - } - } else { - o.y += 0.1; - if(o.y > 30) { - o.goingDown = true; - } - } - */ - //console.log(o.x, o.y, o.z); - } - - resolve(); - - }); - } - - buildTerrain() { - - const width = World.cellsX; - const depth = World.cellsZ; - - const size = (width + 1) * (depth + 1); - - const hd = new Array(size); - hd.fill(0); - - const perlin = new ImprovedNoise() - - const r = Math.random() * 100; - - let quality = 3; - - for(let n = 0; n < 3; n++) { - for(let x = 0; x < width + 1; x++) { - for(let z = 0; z < depth + 1; z++) { - const arrIndex = (x * (depth + 1)) + z; - - const d = hd[arrIndex]; - - const val = d + Math.abs( perlin.noise( z / quality, x / quality, r ) * quality * 1.2); - - - hd[arrIndex] = val; - //vertices[arrIndex * 3 + 1] = app.world.heightData.at(arrIndex); - //arr.push(arrIndex); - } - } - - quality *= 5; - } - - const heightDataArray = Buffifier.createInstance(BufferedArray, { - of: DataTypes.Uint8, - length: size - }, { - workingSpace: size - }); - - for(let n = 0; n < hd.length; n++) { - heightDataArray.set(n, Math.round(hd[n])); - } - - this.heightData = hd; - - this.app.world.heightData = heightDataArray; - - } - -} - - - - - - - - - diff --git a/three/addons/Addons.js b/three/addons/Addons.js deleted file mode 100644 index 551bfd3..0000000 --- a/three/addons/Addons.js +++ /dev/null @@ -1,291 +0,0 @@ -export * from './animation/AnimationClipCreator.js'; -export * from './animation/CCDIKSolver.js'; -export * from './animation/MMDAnimationHelper.js'; -export * from './animation/MMDPhysics.js'; - -export * from './cameras/CinematicCamera.js'; - -export { default as WebGL } from './capabilities/WebGL.js'; - -export * from './controls/ArcballControls.js'; -export * from './controls/DragControls.js'; -export * from './controls/FirstPersonControls.js'; -export * from './controls/FlyControls.js'; -export * from './controls/MapControls.js'; -export * from './controls/OrbitControls.js'; -export * from './controls/PointerLockControls.js'; -export * from './controls/TrackballControls.js'; -export * from './controls/TransformControls.js'; - -export * from './csm/CSM.js'; -export * from './csm/CSMFrustum.js'; -export * from './csm/CSMHelper.js'; -export * from './csm/CSMShader.js'; - -export * as Curves from './curves/CurveExtras.js'; -export * from './curves/NURBSCurve.js'; -export * from './curves/NURBSSurface.js'; -export * as NURBSUtils from './curves/NURBSUtils.js'; - -export * from './effects/AnaglyphEffect.js'; -export * from './effects/AsciiEffect.js'; -export * from './effects/OutlineEffect.js'; -export * from './effects/ParallaxBarrierEffect.js'; -export * from './effects/PeppersGhostEffect.js'; -export * from './effects/StereoEffect.js'; - -export * from './environments/DebugEnvironment.js'; -export * from './environments/RoomEnvironment.js'; - -export * from './exporters/DRACOExporter.js'; -export * from './exporters/EXRExporter.js'; -export * from './exporters/GLTFExporter.js'; -export * from './exporters/KTX2Exporter.js'; -export * from './exporters/MMDExporter.js'; -export * from './exporters/OBJExporter.js'; -export * from './exporters/PLYExporter.js'; -export * from './exporters/STLExporter.js'; -export * from './exporters/USDZExporter.js'; - -export * from './geometries/BoxLineGeometry.js'; -export * from './geometries/ConvexGeometry.js'; -export * from './geometries/DecalGeometry.js'; -export * from './geometries/ParametricGeometries.js'; -export * from './geometries/ParametricGeometry.js'; -export * from './geometries/RoundedBoxGeometry.js'; -export * from './geometries/TeapotGeometry.js'; -export * from './geometries/TextGeometry.js'; - -export * from './helpers/LightProbeHelper.js'; -export * from './helpers/OctreeHelper.js'; -export * from './helpers/PositionalAudioHelper.js'; -export * from './helpers/RectAreaLightHelper.js'; -export * from './helpers/TextureHelper.js'; -export * from './helpers/VertexNormalsHelper.js'; -export * from './helpers/VertexTangentsHelper.js'; -export * from './helpers/ViewHelper.js'; - -export * from './interactive/HTMLMesh.js'; -export * from './interactive/InteractiveGroup.js'; -export * from './interactive/SelectionBox.js'; -export * from './interactive/SelectionHelper.js'; - -export { default as IESSpotLight } from './lights/IESSpotLight.js'; -export * from './lights/LightProbeGenerator.js'; -export * from './lights/RectAreaLightUniformsLib.js'; - -export * from './lines/Line2.js'; -export * from './lines/LineGeometry.js'; -export * from './lines/LineMaterial.js'; -export * from './lines/LineSegments2.js'; -export * from './lines/LineSegmentsGeometry.js'; -export * from './lines/Wireframe.js'; -export * from './lines/WireframeGeometry2.js'; - -export * from './loaders/3DMLoader.js'; -export * from './loaders/3MFLoader.js'; -export * from './loaders/AMFLoader.js'; -export * from './loaders/BVHLoader.js'; -export * from './loaders/ColladaLoader.js'; -export * from './loaders/DDSLoader.js'; -export * from './loaders/DRACOLoader.js'; -export * from './loaders/EXRLoader.js'; -export * from './loaders/FBXLoader.js'; -export * from './loaders/FontLoader.js'; -export * from './loaders/GCodeLoader.js'; -export * from './loaders/GLTFLoader.js'; -export * from './loaders/HDRCubeTextureLoader.js'; -export * from './loaders/IESLoader.js'; -export * from './loaders/KMZLoader.js'; -export * from './loaders/KTX2Loader.js'; -export * from './loaders/KTXLoader.js'; -export * from './loaders/LDrawLoader.js'; -export * from './loaders/LUT3dlLoader.js'; -export * from './loaders/LUTCubeLoader.js'; -export * from './loaders/LWOLoader.js'; -export * from './loaders/LogLuvLoader.js'; -export * from './loaders/LottieLoader.js'; -export * from './loaders/MD2Loader.js'; -export * from './loaders/MDDLoader.js'; -export * from './loaders/MMDLoader.js'; -export * from './loaders/MTLLoader.js'; -export * from './loaders/NRRDLoader.js'; -export * from './loaders/OBJLoader.js'; -export * from './loaders/PCDLoader.js'; -export * from './loaders/PDBLoader.js'; -export * from './loaders/PLYLoader.js'; -export * from './loaders/PVRLoader.js'; -export * from './loaders/RGBELoader.js'; -export * from './loaders/RGBMLoader.js'; -export * from './loaders/STLLoader.js'; -export * from './loaders/SVGLoader.js'; -export * from './loaders/TDSLoader.js'; -export * from './loaders/TGALoader.js'; -export * from './loaders/TIFFLoader.js'; -export * from './loaders/TTFLoader.js'; -export * from './loaders/TiltLoader.js'; -export * from './loaders/USDZLoader.js'; -export * from './loaders/VOXLoader.js'; -export * from './loaders/VRMLLoader.js'; -export * from './loaders/VTKLoader.js'; -export * from './loaders/XYZLoader.js'; - -export * from './materials/MeshGouraudMaterial.js'; - -export * from './math/Capsule.js'; -export * from './math/ColorConverter.js'; -export * from './math/ConvexHull.js'; -export * from './math/ImprovedNoise.js'; -export * from './math/Lut.js'; -export * from './math/MeshSurfaceSampler.js'; -export * from './math/OBB.js'; -export * from './math/Octree.js'; -export * from './math/SimplexNoise.js'; - -export * from './misc/ConvexObjectBreaker.js'; -export * from './misc/GPUComputationRenderer.js'; -export * from './misc/Gyroscope.js'; -export * from './misc/MD2Character.js'; -export * from './misc/MD2CharacterComplex.js'; -export * from './misc/MorphAnimMesh.js'; -export * from './misc/MorphBlendMesh.js'; -export * from './misc/ProgressiveLightMap.js'; -export * from './misc/RollerCoaster.js'; -export * from './misc/TubePainter.js'; -export * from './misc/Volume.js'; -export * from './misc/VolumeSlice.js'; - -export * from './modifiers/CurveModifier.js'; -export * from './modifiers/EdgeSplitModifier.js'; -export * from './modifiers/SimplifyModifier.js'; -export * from './modifiers/TessellateModifier.js'; - -export * from './objects/GroundProjectedSkybox.js'; -export * from './objects/Lensflare.js'; -export * from './objects/MarchingCubes.js'; -export * from './objects/Reflector.js'; -export * from './objects/ReflectorForSSRPass.js'; -export * from './objects/Refractor.js'; -export * from './objects/ShadowMesh.js'; -export * from './objects/Sky.js'; -export * from './objects/Water.js'; -export { Water as Water2 } from './objects/Water2.js'; - -export * from './physics/AmmoPhysics.js'; -export * from './physics/RapierPhysics.js'; - -export * from './postprocessing/AfterimagePass.js'; -export * from './postprocessing/BloomPass.js'; -export * from './postprocessing/BokehPass.js'; -export * from './postprocessing/ClearPass.js'; -export * from './postprocessing/CubeTexturePass.js'; -export * from './postprocessing/DotScreenPass.js'; -export * from './postprocessing/EffectComposer.js'; -export * from './postprocessing/FilmPass.js'; -export * from './postprocessing/GlitchPass.js'; -export * from './postprocessing/HalftonePass.js'; -export * from './postprocessing/LUTPass.js'; -export * from './postprocessing/MaskPass.js'; -export * from './postprocessing/OutlinePass.js'; -export * from './postprocessing/OutputPass.js'; -export * from './postprocessing/Pass.js'; -export * from './postprocessing/RenderPass.js'; -export * from './postprocessing/RenderPixelatedPass.js'; -export * from './postprocessing/SAOPass.js'; -export * from './postprocessing/SMAAPass.js'; -export * from './postprocessing/SSAARenderPass.js'; -export * from './postprocessing/SSAOPass.js'; -export * from './postprocessing/SSRPass.js'; -export * from './postprocessing/SavePass.js'; -export * from './postprocessing/ShaderPass.js'; -export * from './postprocessing/TAARenderPass.js'; -export * from './postprocessing/TexturePass.js'; -export * from './postprocessing/UnrealBloomPass.js'; - -export * from './renderers/CSS2DRenderer.js'; -export * from './renderers/CSS3DRenderer.js'; -export * from './renderers/Projector.js'; -export * from './renderers/SVGRenderer.js'; - -export * from './shaders/ACESFilmicToneMappingShader.js'; -export * from './shaders/AfterimageShader.js'; -export * from './shaders/BasicShader.js'; -export * from './shaders/BleachBypassShader.js'; -export * from './shaders/BlendShader.js'; -export * from './shaders/BokehShader.js'; -export { BokehShader as BokehShader2 } from './shaders/BokehShader2.js'; -export * from './shaders/BrightnessContrastShader.js'; -export * from './shaders/ColorCorrectionShader.js'; -export * from './shaders/ColorifyShader.js'; -export * from './shaders/ConvolutionShader.js'; -export * from './shaders/CopyShader.js'; -export * from './shaders/DOFMipMapShader.js'; -export * from './shaders/DepthLimitedBlurShader.js'; -export * from './shaders/DigitalGlitch.js'; -export * from './shaders/DotScreenShader.js'; -export * from './shaders/ExposureShader.js'; -export * from './shaders/FXAAShader.js'; -export * from './shaders/FilmShader.js'; -export * from './shaders/FocusShader.js'; -export * from './shaders/FreiChenShader.js'; -export * from './shaders/GammaCorrectionShader.js'; -export * from './shaders/GodRaysShader.js'; -export * from './shaders/HalftoneShader.js'; -export * from './shaders/HorizontalBlurShader.js'; -export * from './shaders/HorizontalTiltShiftShader.js'; -export * from './shaders/HueSaturationShader.js'; -export * from './shaders/KaleidoShader.js'; -export * from './shaders/LuminosityHighPassShader.js'; -export * from './shaders/LuminosityShader.js'; -export * from './shaders/MMDToonShader.js'; -export * from './shaders/MirrorShader.js'; -export * from './shaders/NormalMapShader.js'; -export * from './shaders/OutputShader.js'; -export * from './shaders/RGBShiftShader.js'; -export * from './shaders/SAOShader.js'; -export * from './shaders/SMAAShader.js'; -export * from './shaders/SSAOShader.js'; -export * from './shaders/SSRShader.js'; -export * from './shaders/SepiaShader.js'; -export * from './shaders/SobelOperatorShader.js'; -export * from './shaders/SubsurfaceScatteringShader.js'; -export * from './shaders/TechnicolorShader.js'; -export * from './shaders/ToonShader.js'; -export * from './shaders/TriangleBlurShader.js'; -export * from './shaders/UnpackDepthRGBAShader.js'; -export * from './shaders/VelocityShader.js'; -export * from './shaders/VerticalBlurShader.js'; -export * from './shaders/VerticalTiltShiftShader.js'; -export * from './shaders/VignetteShader.js'; -export * from './shaders/VolumeShader.js'; -export * from './shaders/WaterRefractionShader.js'; - -export * from './textures/FlakesTexture.js'; - -export * as BufferGeometryUtils from './utils/BufferGeometryUtils.js'; -export * as CameraUtils from './utils/CameraUtils.js'; -export * from './utils/GPUStatsPanel.js'; -export * as GeometryCompressionUtils from './utils/GeometryCompressionUtils.js'; -export * as GeometryUtils from './utils/GeometryUtils.js'; -export * from './utils/LDrawUtils.js'; -export * from './utils/PackedPhongMaterial.js'; -export * as SceneUtils from './utils/SceneUtils.js'; -export * from './utils/ShadowMapViewer.js'; -export * as SkeletonUtils from './utils/SkeletonUtils.js'; -export * as SortUtils from './utils/SortUtils.js'; -export * from './utils/TextureUtils.js'; -export * from './utils/UVsDebug.js'; -export * from './utils/WorkerPool.js'; - -export * from './webxr/ARButton.js'; -export * from './webxr/OculusHandModel.js'; -export * from './webxr/OculusHandPointerModel.js'; -export * from './webxr/Text2D.js'; -export * from './webxr/VRButton.js'; -export * from './webxr/XRButton.js'; -export * from './webxr/XRControllerModelFactory.js'; -export * from './webxr/XREstimatedLight.js'; -export * from './webxr/XRHandMeshModel.js'; -export * from './webxr/XRHandModelFactory.js'; -export * from './webxr/XRHandPrimitiveModel.js'; -export * from './webxr/XRPlanes.js'; diff --git a/three/addons/animation/AnimationClipCreator.js b/three/addons/animation/AnimationClipCreator.js deleted file mode 100644 index cf9ee6b..0000000 --- a/three/addons/animation/AnimationClipCreator.js +++ /dev/null @@ -1,116 +0,0 @@ -import { - AnimationClip, - BooleanKeyframeTrack, - ColorKeyframeTrack, - NumberKeyframeTrack, - Vector3, - VectorKeyframeTrack -} from 'three'; - -class AnimationClipCreator { - - static CreateRotationAnimation( period, axis = 'x' ) { - - const times = [ 0, period ], values = [ 0, 360 ]; - - const trackName = '.rotation[' + axis + ']'; - - const track = new NumberKeyframeTrack( trackName, times, values ); - - return new AnimationClip( null, period, [ track ] ); - - } - - static CreateScaleAxisAnimation( period, axis = 'x' ) { - - const times = [ 0, period ], values = [ 0, 1 ]; - - const trackName = '.scale[' + axis + ']'; - - const track = new NumberKeyframeTrack( trackName, times, values ); - - return new AnimationClip( null, period, [ track ] ); - - } - - static CreateShakeAnimation( duration, shakeScale ) { - - const times = [], values = [], tmp = new Vector3(); - - for ( let i = 0; i < duration * 10; i ++ ) { - - times.push( i / 10 ); - - tmp.set( Math.random() * 2.0 - 1.0, Math.random() * 2.0 - 1.0, Math.random() * 2.0 - 1.0 ). - multiply( shakeScale ). - toArray( values, values.length ); - - } - - const trackName = '.position'; - - const track = new VectorKeyframeTrack( trackName, times, values ); - - return new AnimationClip( null, duration, [ track ] ); - - } - - static CreatePulsationAnimation( duration, pulseScale ) { - - const times = [], values = [], tmp = new Vector3(); - - for ( let i = 0; i < duration * 10; i ++ ) { - - times.push( i / 10 ); - - const scaleFactor = Math.random() * pulseScale; - tmp.set( scaleFactor, scaleFactor, scaleFactor ). - toArray( values, values.length ); - - } - - const trackName = '.scale'; - - const track = new VectorKeyframeTrack( trackName, times, values ); - - return new AnimationClip( null, duration, [ track ] ); - - } - - static CreateVisibilityAnimation( duration ) { - - const times = [ 0, duration / 2, duration ], values = [ true, false, true ]; - - const trackName = '.visible'; - - const track = new BooleanKeyframeTrack( trackName, times, values ); - - return new AnimationClip( null, duration, [ track ] ); - - } - - static CreateMaterialColorAnimation( duration, colors ) { - - const times = [], values = [], - timeStep = duration / colors.length; - - for ( let i = 0; i < colors.length; i ++ ) { - - times.push( i * timeStep ); - - const color = colors[ i ]; - values.push( color.r, color.g, color.b ); - - } - - const trackName = '.material.color'; - - const track = new ColorKeyframeTrack( trackName, times, values ); - - return new AnimationClip( null, duration, [ track ] ); - - } - -} - -export { AnimationClipCreator }; diff --git a/three/addons/animation/CCDIKSolver.js b/three/addons/animation/CCDIKSolver.js deleted file mode 100644 index 7066c99..0000000 --- a/three/addons/animation/CCDIKSolver.js +++ /dev/null @@ -1,482 +0,0 @@ -import { - BufferAttribute, - BufferGeometry, - Color, - Line, - LineBasicMaterial, - Matrix4, - Mesh, - MeshBasicMaterial, - Object3D, - Quaternion, - SphereGeometry, - Vector3 -} from 'three'; - -const _q = new Quaternion(); -const _targetPos = new Vector3(); -const _targetVec = new Vector3(); -const _effectorPos = new Vector3(); -const _effectorVec = new Vector3(); -const _linkPos = new Vector3(); -const _invLinkQ = new Quaternion(); -const _linkScale = new Vector3(); -const _axis = new Vector3(); -const _vector = new Vector3(); -const _matrix = new Matrix4(); - - -/** - * CCD Algorithm - * - https://sites.google.com/site/auraliusproject/ccd-algorithm - * - * // ik parameter example - * // - * // target, effector, index in links are bone index in skeleton.bones. - * // the bones relation should be - * // <-- parent child --> - * // links[ n ], links[ n - 1 ], ..., links[ 0 ], effector - * iks = [ { - * target: 1, - * effector: 2, - * links: [ { index: 5, limitation: new Vector3( 1, 0, 0 ) }, { index: 4, enabled: false }, { index : 3 } ], - * iteration: 10, - * minAngle: 0.0, - * maxAngle: 1.0, - * } ]; - */ - -class CCDIKSolver { - - /** - * @param {THREE.SkinnedMesh} mesh - * @param {Array} iks - */ - constructor( mesh, iks = [] ) { - - this.mesh = mesh; - this.iks = iks; - - this._valid(); - - } - - /** - * Update all IK bones. - * - * @return {CCDIKSolver} - */ - update() { - - const iks = this.iks; - - for ( let i = 0, il = iks.length; i < il; i ++ ) { - - this.updateOne( iks[ i ] ); - - } - - return this; - - } - - /** - * Update one IK bone - * - * @param {Object} ik parameter - * @return {CCDIKSolver} - */ - updateOne( ik ) { - - const bones = this.mesh.skeleton.bones; - - // for reference overhead reduction in loop - const math = Math; - - const effector = bones[ ik.effector ]; - const target = bones[ ik.target ]; - - // don't use getWorldPosition() here for the performance - // because it calls updateMatrixWorld( true ) inside. - _targetPos.setFromMatrixPosition( target.matrixWorld ); - - const links = ik.links; - const iteration = ik.iteration !== undefined ? ik.iteration : 1; - - for ( let i = 0; i < iteration; i ++ ) { - - let rotated = false; - - for ( let j = 0, jl = links.length; j < jl; j ++ ) { - - const link = bones[ links[ j ].index ]; - - // skip this link and following links. - // this skip is used for MMD performance optimization. - if ( links[ j ].enabled === false ) break; - - const limitation = links[ j ].limitation; - const rotationMin = links[ j ].rotationMin; - const rotationMax = links[ j ].rotationMax; - - // don't use getWorldPosition/Quaternion() here for the performance - // because they call updateMatrixWorld( true ) inside. - link.matrixWorld.decompose( _linkPos, _invLinkQ, _linkScale ); - _invLinkQ.invert(); - _effectorPos.setFromMatrixPosition( effector.matrixWorld ); - - // work in link world - _effectorVec.subVectors( _effectorPos, _linkPos ); - _effectorVec.applyQuaternion( _invLinkQ ); - _effectorVec.normalize(); - - _targetVec.subVectors( _targetPos, _linkPos ); - _targetVec.applyQuaternion( _invLinkQ ); - _targetVec.normalize(); - - let angle = _targetVec.dot( _effectorVec ); - - if ( angle > 1.0 ) { - - angle = 1.0; - - } else if ( angle < - 1.0 ) { - - angle = - 1.0; - - } - - angle = math.acos( angle ); - - // skip if changing angle is too small to prevent vibration of bone - if ( angle < 1e-5 ) continue; - - if ( ik.minAngle !== undefined && angle < ik.minAngle ) { - - angle = ik.minAngle; - - } - - if ( ik.maxAngle !== undefined && angle > ik.maxAngle ) { - - angle = ik.maxAngle; - - } - - _axis.crossVectors( _effectorVec, _targetVec ); - _axis.normalize(); - - _q.setFromAxisAngle( _axis, angle ); - link.quaternion.multiply( _q ); - - // TODO: re-consider the limitation specification - if ( limitation !== undefined ) { - - let c = link.quaternion.w; - - if ( c > 1.0 ) c = 1.0; - - const c2 = math.sqrt( 1 - c * c ); - link.quaternion.set( limitation.x * c2, - limitation.y * c2, - limitation.z * c2, - c ); - - } - - if ( rotationMin !== undefined ) { - - link.rotation.setFromVector3( _vector.setFromEuler( link.rotation ).max( rotationMin ) ); - - } - - if ( rotationMax !== undefined ) { - - link.rotation.setFromVector3( _vector.setFromEuler( link.rotation ).min( rotationMax ) ); - - } - - link.updateMatrixWorld( true ); - - rotated = true; - - } - - if ( ! rotated ) break; - - } - - return this; - - } - - /** - * Creates Helper - * - * @return {CCDIKHelper} - */ - createHelper() { - - return new CCDIKHelper( this.mesh, this.iks ); - - } - - // private methods - - _valid() { - - const iks = this.iks; - const bones = this.mesh.skeleton.bones; - - for ( let i = 0, il = iks.length; i < il; i ++ ) { - - const ik = iks[ i ]; - const effector = bones[ ik.effector ]; - const links = ik.links; - let link0, link1; - - link0 = effector; - - for ( let j = 0, jl = links.length; j < jl; j ++ ) { - - link1 = bones[ links[ j ].index ]; - - if ( link0.parent !== link1 ) { - - console.warn( 'THREE.CCDIKSolver: bone ' + link0.name + ' is not the child of bone ' + link1.name ); - - } - - link0 = link1; - - } - - } - - } - -} - -function getPosition( bone, matrixWorldInv ) { - - return _vector - .setFromMatrixPosition( bone.matrixWorld ) - .applyMatrix4( matrixWorldInv ); - -} - -function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv ) { - - const v = getPosition( bone, matrixWorldInv ); - - array[ index * 3 + 0 ] = v.x; - array[ index * 3 + 1 ] = v.y; - array[ index * 3 + 2 ] = v.z; - -} - -/** - * Visualize IK bones - * - * @param {SkinnedMesh} mesh - * @param {Array} iks - */ -class CCDIKHelper extends Object3D { - - constructor( mesh, iks = [], sphereSize = 0.25 ) { - - super(); - - this.root = mesh; - this.iks = iks; - - this.matrix.copy( mesh.matrixWorld ); - this.matrixAutoUpdate = false; - - this.sphereGeometry = new SphereGeometry( sphereSize, 16, 8 ); - - this.targetSphereMaterial = new MeshBasicMaterial( { - color: new Color( 0xff8888 ), - depthTest: false, - depthWrite: false, - transparent: true - } ); - - this.effectorSphereMaterial = new MeshBasicMaterial( { - color: new Color( 0x88ff88 ), - depthTest: false, - depthWrite: false, - transparent: true - } ); - - this.linkSphereMaterial = new MeshBasicMaterial( { - color: new Color( 0x8888ff ), - depthTest: false, - depthWrite: false, - transparent: true - } ); - - this.lineMaterial = new LineBasicMaterial( { - color: new Color( 0xff0000 ), - depthTest: false, - depthWrite: false, - transparent: true - } ); - - this._init(); - - } - - /** - * Updates IK bones visualization. - */ - updateMatrixWorld( force ) { - - const mesh = this.root; - - if ( this.visible ) { - - let offset = 0; - - const iks = this.iks; - const bones = mesh.skeleton.bones; - - _matrix.copy( mesh.matrixWorld ).invert(); - - for ( let i = 0, il = iks.length; i < il; i ++ ) { - - const ik = iks[ i ]; - - const targetBone = bones[ ik.target ]; - const effectorBone = bones[ ik.effector ]; - - const targetMesh = this.children[ offset ++ ]; - const effectorMesh = this.children[ offset ++ ]; - - targetMesh.position.copy( getPosition( targetBone, _matrix ) ); - effectorMesh.position.copy( getPosition( effectorBone, _matrix ) ); - - for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) { - - const link = ik.links[ j ]; - const linkBone = bones[ link.index ]; - - const linkMesh = this.children[ offset ++ ]; - - linkMesh.position.copy( getPosition( linkBone, _matrix ) ); - - } - - const line = this.children[ offset ++ ]; - const array = line.geometry.attributes.position.array; - - setPositionOfBoneToAttributeArray( array, 0, targetBone, _matrix ); - setPositionOfBoneToAttributeArray( array, 1, effectorBone, _matrix ); - - for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) { - - const link = ik.links[ j ]; - const linkBone = bones[ link.index ]; - setPositionOfBoneToAttributeArray( array, j + 2, linkBone, _matrix ); - - } - - line.geometry.attributes.position.needsUpdate = true; - - } - - } - - this.matrix.copy( mesh.matrixWorld ); - - super.updateMatrixWorld( force ); - - } - - /** - * Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app. - */ - dispose() { - - this.sphereGeometry.dispose(); - - this.targetSphereMaterial.dispose(); - this.effectorSphereMaterial.dispose(); - this.linkSphereMaterial.dispose(); - this.lineMaterial.dispose(); - - const children = this.children; - - for ( let i = 0; i < children.length; i ++ ) { - - const child = children[ i ]; - - if ( child.isLine ) child.geometry.dispose(); - - } - - } - - // private method - - _init() { - - const scope = this; - const iks = this.iks; - - function createLineGeometry( ik ) { - - const geometry = new BufferGeometry(); - const vertices = new Float32Array( ( 2 + ik.links.length ) * 3 ); - geometry.setAttribute( 'position', new BufferAttribute( vertices, 3 ) ); - - return geometry; - - } - - function createTargetMesh() { - - return new Mesh( scope.sphereGeometry, scope.targetSphereMaterial ); - - } - - function createEffectorMesh() { - - return new Mesh( scope.sphereGeometry, scope.effectorSphereMaterial ); - - } - - function createLinkMesh() { - - return new Mesh( scope.sphereGeometry, scope.linkSphereMaterial ); - - } - - function createLine( ik ) { - - return new Line( createLineGeometry( ik ), scope.lineMaterial ); - - } - - for ( let i = 0, il = iks.length; i < il; i ++ ) { - - const ik = iks[ i ]; - - this.add( createTargetMesh() ); - this.add( createEffectorMesh() ); - - for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) { - - this.add( createLinkMesh() ); - - } - - this.add( createLine( ik ) ); - - } - - } - -} - -export { CCDIKSolver, CCDIKHelper }; diff --git a/three/addons/animation/MMDAnimationHelper.js b/three/addons/animation/MMDAnimationHelper.js deleted file mode 100644 index b24dea1..0000000 --- a/three/addons/animation/MMDAnimationHelper.js +++ /dev/null @@ -1,1207 +0,0 @@ -import { - AnimationMixer, - Object3D, - Quaternion, - Vector3 -} from 'three'; -import { CCDIKSolver } from '../animation/CCDIKSolver.js'; -import { MMDPhysics } from '../animation/MMDPhysics.js'; - -/** - * MMDAnimationHelper handles animation of MMD assets loaded by MMDLoader - * with MMD special features as IK, Grant, and Physics. - * - * Dependencies - * - ammo.js https://github.com/kripken/ammo.js - * - MMDPhysics - * - CCDIKSolver - * - * TODO - * - more precise grant skinning support. - */ -class MMDAnimationHelper { - - /** - * @param {Object} params - (optional) - * @param {boolean} params.sync - Whether animation durations of added objects are synched. Default is true. - * @param {Number} params.afterglow - Default is 0.0. - * @param {boolean} params.resetPhysicsOnLoop - Default is true. - */ - constructor( params = {} ) { - - this.meshes = []; - - this.camera = null; - this.cameraTarget = new Object3D(); - this.cameraTarget.name = 'target'; - - this.audio = null; - this.audioManager = null; - - this.objects = new WeakMap(); - - this.configuration = { - sync: params.sync !== undefined ? params.sync : true, - afterglow: params.afterglow !== undefined ? params.afterglow : 0.0, - resetPhysicsOnLoop: params.resetPhysicsOnLoop !== undefined ? params.resetPhysicsOnLoop : true, - pmxAnimation: params.pmxAnimation !== undefined ? params.pmxAnimation : false - }; - - this.enabled = { - animation: true, - ik: true, - grant: true, - physics: true, - cameraAnimation: true - }; - - this.onBeforePhysics = function ( /* mesh */ ) {}; - - // experimental - this.sharedPhysics = false; - this.masterPhysics = null; - - } - - /** - * Adds an Three.js Object to helper and setups animation. - * The anmation durations of added objects are synched - * if this.configuration.sync is true. - * - * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object - * @param {Object} params - (optional) - * @param {THREE.AnimationClip|Array} params.animation - Only for THREE.SkinnedMesh and THREE.Camera. Default is undefined. - * @param {boolean} params.physics - Only for THREE.SkinnedMesh. Default is true. - * @param {Integer} params.warmup - Only for THREE.SkinnedMesh and physics is true. Default is 60. - * @param {Number} params.unitStep - Only for THREE.SkinnedMesh and physics is true. Default is 1 / 65. - * @param {Integer} params.maxStepNum - Only for THREE.SkinnedMesh and physics is true. Default is 3. - * @param {Vector3} params.gravity - Only for THREE.SkinnedMesh and physics is true. Default ( 0, - 9.8 * 10, 0 ). - * @param {Number} params.delayTime - Only for THREE.Audio. Default is 0.0. - * @return {MMDAnimationHelper} - */ - add( object, params = {} ) { - - if ( object.isSkinnedMesh ) { - - this._addMesh( object, params ); - - } else if ( object.isCamera ) { - - this._setupCamera( object, params ); - - } else if ( object.type === 'Audio' ) { - - this._setupAudio( object, params ); - - } else { - - throw new Error( 'THREE.MMDAnimationHelper.add: ' - + 'accepts only ' - + 'THREE.SkinnedMesh or ' - + 'THREE.Camera or ' - + 'THREE.Audio instance.' ); - - } - - if ( this.configuration.sync ) this._syncDuration(); - - return this; - - } - - /** - * Removes an Three.js Object from helper. - * - * @param {THREE.SkinnedMesh|THREE.Camera|THREE.Audio} object - * @return {MMDAnimationHelper} - */ - remove( object ) { - - if ( object.isSkinnedMesh ) { - - this._removeMesh( object ); - - } else if ( object.isCamera ) { - - this._clearCamera( object ); - - } else if ( object.type === 'Audio' ) { - - this._clearAudio( object ); - - } else { - - throw new Error( 'THREE.MMDAnimationHelper.remove: ' - + 'accepts only ' - + 'THREE.SkinnedMesh or ' - + 'THREE.Camera or ' - + 'THREE.Audio instance.' ); - - } - - if ( this.configuration.sync ) this._syncDuration(); - - return this; - - } - - /** - * Updates the animation. - * - * @param {Number} delta - * @return {MMDAnimationHelper} - */ - update( delta ) { - - if ( this.audioManager !== null ) this.audioManager.control( delta ); - - for ( let i = 0; i < this.meshes.length; i ++ ) { - - this._animateMesh( this.meshes[ i ], delta ); - - } - - if ( this.sharedPhysics ) this._updateSharedPhysics( delta ); - - if ( this.camera !== null ) this._animateCamera( this.camera, delta ); - - return this; - - } - - /** - * Changes the pose of SkinnedMesh as VPD specifies. - * - * @param {THREE.SkinnedMesh} mesh - * @param {Object} vpd - VPD content parsed MMDParser - * @param {Object} params - (optional) - * @param {boolean} params.resetPose - Default is true. - * @param {boolean} params.ik - Default is true. - * @param {boolean} params.grant - Default is true. - * @return {MMDAnimationHelper} - */ - pose( mesh, vpd, params = {} ) { - - if ( params.resetPose !== false ) mesh.pose(); - - const bones = mesh.skeleton.bones; - const boneParams = vpd.bones; - - const boneNameDictionary = {}; - - for ( let i = 0, il = bones.length; i < il; i ++ ) { - - boneNameDictionary[ bones[ i ].name ] = i; - - } - - const vector = new Vector3(); - const quaternion = new Quaternion(); - - for ( let i = 0, il = boneParams.length; i < il; i ++ ) { - - const boneParam = boneParams[ i ]; - const boneIndex = boneNameDictionary[ boneParam.name ]; - - if ( boneIndex === undefined ) continue; - - const bone = bones[ boneIndex ]; - bone.position.add( vector.fromArray( boneParam.translation ) ); - bone.quaternion.multiply( quaternion.fromArray( boneParam.quaternion ) ); - - } - - mesh.updateMatrixWorld( true ); - - // PMX animation system special path - if ( this.configuration.pmxAnimation && - mesh.geometry.userData.MMD && mesh.geometry.userData.MMD.format === 'pmx' ) { - - const sortedBonesData = this._sortBoneDataArray( mesh.geometry.userData.MMD.bones.slice() ); - const ikSolver = params.ik !== false ? this._createCCDIKSolver( mesh ) : null; - const grantSolver = params.grant !== false ? this.createGrantSolver( mesh ) : null; - this._animatePMXMesh( mesh, sortedBonesData, ikSolver, grantSolver ); - - } else { - - if ( params.ik !== false ) { - - this._createCCDIKSolver( mesh ).update(); - - } - - if ( params.grant !== false ) { - - this.createGrantSolver( mesh ).update(); - - } - - } - - return this; - - } - - /** - * Enabes/Disables an animation feature. - * - * @param {string} key - * @param {boolean} enabled - * @return {MMDAnimationHelper} - */ - enable( key, enabled ) { - - if ( this.enabled[ key ] === undefined ) { - - throw new Error( 'THREE.MMDAnimationHelper.enable: ' - + 'unknown key ' + key ); - - } - - this.enabled[ key ] = enabled; - - if ( key === 'physics' ) { - - for ( let i = 0, il = this.meshes.length; i < il; i ++ ) { - - this._optimizeIK( this.meshes[ i ], enabled ); - - } - - } - - return this; - - } - - /** - * Creates an GrantSolver instance. - * - * @param {THREE.SkinnedMesh} mesh - * @return {GrantSolver} - */ - createGrantSolver( mesh ) { - - return new GrantSolver( mesh, mesh.geometry.userData.MMD.grants ); - - } - - // private methods - - _addMesh( mesh, params ) { - - if ( this.meshes.indexOf( mesh ) >= 0 ) { - - throw new Error( 'THREE.MMDAnimationHelper._addMesh: ' - + 'SkinnedMesh \'' + mesh.name + '\' has already been added.' ); - - } - - this.meshes.push( mesh ); - this.objects.set( mesh, { looped: false } ); - - this._setupMeshAnimation( mesh, params.animation ); - - if ( params.physics !== false ) { - - this._setupMeshPhysics( mesh, params ); - - } - - return this; - - } - - _setupCamera( camera, params ) { - - if ( this.camera === camera ) { - - throw new Error( 'THREE.MMDAnimationHelper._setupCamera: ' - + 'Camera \'' + camera.name + '\' has already been set.' ); - - } - - if ( this.camera ) this.clearCamera( this.camera ); - - this.camera = camera; - - camera.add( this.cameraTarget ); - - this.objects.set( camera, {} ); - - if ( params.animation !== undefined ) { - - this._setupCameraAnimation( camera, params.animation ); - - } - - return this; - - } - - _setupAudio( audio, params ) { - - if ( this.audio === audio ) { - - throw new Error( 'THREE.MMDAnimationHelper._setupAudio: ' - + 'Audio \'' + audio.name + '\' has already been set.' ); - - } - - if ( this.audio ) this.clearAudio( this.audio ); - - this.audio = audio; - this.audioManager = new AudioManager( audio, params ); - - this.objects.set( this.audioManager, { - duration: this.audioManager.duration - } ); - - return this; - - } - - _removeMesh( mesh ) { - - let found = false; - let writeIndex = 0; - - for ( let i = 0, il = this.meshes.length; i < il; i ++ ) { - - if ( this.meshes[ i ] === mesh ) { - - this.objects.delete( mesh ); - found = true; - - continue; - - } - - this.meshes[ writeIndex ++ ] = this.meshes[ i ]; - - } - - if ( ! found ) { - - throw new Error( 'THREE.MMDAnimationHelper._removeMesh: ' - + 'SkinnedMesh \'' + mesh.name + '\' has not been added yet.' ); - - } - - this.meshes.length = writeIndex; - - return this; - - } - - _clearCamera( camera ) { - - if ( camera !== this.camera ) { - - throw new Error( 'THREE.MMDAnimationHelper._clearCamera: ' - + 'Camera \'' + camera.name + '\' has not been set yet.' ); - - } - - this.camera.remove( this.cameraTarget ); - - this.objects.delete( this.camera ); - this.camera = null; - - return this; - - } - - _clearAudio( audio ) { - - if ( audio !== this.audio ) { - - throw new Error( 'THREE.MMDAnimationHelper._clearAudio: ' - + 'Audio \'' + audio.name + '\' has not been set yet.' ); - - } - - this.objects.delete( this.audioManager ); - - this.audio = null; - this.audioManager = null; - - return this; - - } - - _setupMeshAnimation( mesh, animation ) { - - const objects = this.objects.get( mesh ); - - if ( animation !== undefined ) { - - const animations = Array.isArray( animation ) - ? animation : [ animation ]; - - objects.mixer = new AnimationMixer( mesh ); - - for ( let i = 0, il = animations.length; i < il; i ++ ) { - - objects.mixer.clipAction( animations[ i ] ).play(); - - } - - // TODO: find a workaround not to access ._clip looking like a private property - objects.mixer.addEventListener( 'loop', function ( event ) { - - const tracks = event.action._clip.tracks; - - if ( tracks.length > 0 && tracks[ 0 ].name.slice( 0, 6 ) !== '.bones' ) return; - - objects.looped = true; - - } ); - - } - - objects.ikSolver = this._createCCDIKSolver( mesh ); - objects.grantSolver = this.createGrantSolver( mesh ); - - return this; - - } - - _setupCameraAnimation( camera, animation ) { - - const animations = Array.isArray( animation ) - ? animation : [ animation ]; - - const objects = this.objects.get( camera ); - - objects.mixer = new AnimationMixer( camera ); - - for ( let i = 0, il = animations.length; i < il; i ++ ) { - - objects.mixer.clipAction( animations[ i ] ).play(); - - } - - } - - _setupMeshPhysics( mesh, params ) { - - const objects = this.objects.get( mesh ); - - // shared physics is experimental - - if ( params.world === undefined && this.sharedPhysics ) { - - const masterPhysics = this._getMasterPhysics(); - - if ( masterPhysics !== null ) world = masterPhysics.world; // eslint-disable-line no-undef - - } - - objects.physics = this._createMMDPhysics( mesh, params ); - - if ( objects.mixer && params.animationWarmup !== false ) { - - this._animateMesh( mesh, 0 ); - objects.physics.reset(); - - } - - objects.physics.warmup( params.warmup !== undefined ? params.warmup : 60 ); - - this._optimizeIK( mesh, true ); - - } - - _animateMesh( mesh, delta ) { - - const objects = this.objects.get( mesh ); - - const mixer = objects.mixer; - const ikSolver = objects.ikSolver; - const grantSolver = objects.grantSolver; - const physics = objects.physics; - const looped = objects.looped; - - if ( mixer && this.enabled.animation ) { - - // alternate solution to save/restore bones but less performant? - //mesh.pose(); - //this._updatePropertyMixersBuffer( mesh ); - - this._restoreBones( mesh ); - - mixer.update( delta ); - - this._saveBones( mesh ); - - // PMX animation system special path - if ( this.configuration.pmxAnimation && - mesh.geometry.userData.MMD && mesh.geometry.userData.MMD.format === 'pmx' ) { - - if ( ! objects.sortedBonesData ) objects.sortedBonesData = this._sortBoneDataArray( mesh.geometry.userData.MMD.bones.slice() ); - - this._animatePMXMesh( - mesh, - objects.sortedBonesData, - ikSolver && this.enabled.ik ? ikSolver : null, - grantSolver && this.enabled.grant ? grantSolver : null - ); - - } else { - - if ( ikSolver && this.enabled.ik ) { - - mesh.updateMatrixWorld( true ); - ikSolver.update(); - - } - - if ( grantSolver && this.enabled.grant ) { - - grantSolver.update(); - - } - - } - - } - - if ( looped === true && this.enabled.physics ) { - - if ( physics && this.configuration.resetPhysicsOnLoop ) physics.reset(); - - objects.looped = false; - - } - - if ( physics && this.enabled.physics && ! this.sharedPhysics ) { - - this.onBeforePhysics( mesh ); - physics.update( delta ); - - } - - } - - // Sort bones in order by 1. transformationClass and 2. bone index. - // In PMX animation system, bone transformations should be processed - // in this order. - _sortBoneDataArray( boneDataArray ) { - - return boneDataArray.sort( function ( a, b ) { - - if ( a.transformationClass !== b.transformationClass ) { - - return a.transformationClass - b.transformationClass; - - } else { - - return a.index - b.index; - - } - - } ); - - } - - // PMX Animation system is a bit too complex and doesn't great match to - // Three.js Animation system. This method attempts to simulate it as much as - // possible but doesn't perfectly simulate. - // This method is more costly than the regular one so - // you are recommended to set constructor parameter "pmxAnimation: true" - // only if your PMX model animation doesn't work well. - // If you need better method you would be required to write your own. - _animatePMXMesh( mesh, sortedBonesData, ikSolver, grantSolver ) { - - _quaternionIndex = 0; - _grantResultMap.clear(); - - for ( let i = 0, il = sortedBonesData.length; i < il; i ++ ) { - - updateOne( mesh, sortedBonesData[ i ].index, ikSolver, grantSolver ); - - } - - mesh.updateMatrixWorld( true ); - return this; - - } - - _animateCamera( camera, delta ) { - - const mixer = this.objects.get( camera ).mixer; - - if ( mixer && this.enabled.cameraAnimation ) { - - mixer.update( delta ); - - camera.updateProjectionMatrix(); - - camera.up.set( 0, 1, 0 ); - camera.up.applyQuaternion( camera.quaternion ); - camera.lookAt( this.cameraTarget.position ); - - } - - } - - _optimizeIK( mesh, physicsEnabled ) { - - const iks = mesh.geometry.userData.MMD.iks; - const bones = mesh.geometry.userData.MMD.bones; - - for ( let i = 0, il = iks.length; i < il; i ++ ) { - - const ik = iks[ i ]; - const links = ik.links; - - for ( let j = 0, jl = links.length; j < jl; j ++ ) { - - const link = links[ j ]; - - if ( physicsEnabled === true ) { - - // disable IK of the bone the corresponding rigidBody type of which is 1 or 2 - // because its rotation will be overriden by physics - link.enabled = bones[ link.index ].rigidBodyType > 0 ? false : true; - - } else { - - link.enabled = true; - - } - - } - - } - - } - - _createCCDIKSolver( mesh ) { - - if ( CCDIKSolver === undefined ) { - - throw new Error( 'THREE.MMDAnimationHelper: Import CCDIKSolver.' ); - - } - - return new CCDIKSolver( mesh, mesh.geometry.userData.MMD.iks ); - - } - - _createMMDPhysics( mesh, params ) { - - if ( MMDPhysics === undefined ) { - - throw new Error( 'THREE.MMDPhysics: Import MMDPhysics.' ); - - } - - return new MMDPhysics( - mesh, - mesh.geometry.userData.MMD.rigidBodies, - mesh.geometry.userData.MMD.constraints, - params ); - - } - - /* - * Detects the longest duration and then sets it to them to sync. - * TODO: Not to access private properties ( ._actions and ._clip ) - */ - _syncDuration() { - - let max = 0.0; - - const objects = this.objects; - const meshes = this.meshes; - const camera = this.camera; - const audioManager = this.audioManager; - - // get the longest duration - - for ( let i = 0, il = meshes.length; i < il; i ++ ) { - - const mixer = this.objects.get( meshes[ i ] ).mixer; - - if ( mixer === undefined ) continue; - - for ( let j = 0; j < mixer._actions.length; j ++ ) { - - const clip = mixer._actions[ j ]._clip; - - if ( ! objects.has( clip ) ) { - - objects.set( clip, { - duration: clip.duration - } ); - - } - - max = Math.max( max, objects.get( clip ).duration ); - - } - - } - - if ( camera !== null ) { - - const mixer = this.objects.get( camera ).mixer; - - if ( mixer !== undefined ) { - - for ( let i = 0, il = mixer._actions.length; i < il; i ++ ) { - - const clip = mixer._actions[ i ]._clip; - - if ( ! objects.has( clip ) ) { - - objects.set( clip, { - duration: clip.duration - } ); - - } - - max = Math.max( max, objects.get( clip ).duration ); - - } - - } - - } - - if ( audioManager !== null ) { - - max = Math.max( max, objects.get( audioManager ).duration ); - - } - - max += this.configuration.afterglow; - - // update the duration - - for ( let i = 0, il = this.meshes.length; i < il; i ++ ) { - - const mixer = this.objects.get( this.meshes[ i ] ).mixer; - - if ( mixer === undefined ) continue; - - for ( let j = 0, jl = mixer._actions.length; j < jl; j ++ ) { - - mixer._actions[ j ]._clip.duration = max; - - } - - } - - if ( camera !== null ) { - - const mixer = this.objects.get( camera ).mixer; - - if ( mixer !== undefined ) { - - for ( let i = 0, il = mixer._actions.length; i < il; i ++ ) { - - mixer._actions[ i ]._clip.duration = max; - - } - - } - - } - - if ( audioManager !== null ) { - - audioManager.duration = max; - - } - - } - - // workaround - - _updatePropertyMixersBuffer( mesh ) { - - const mixer = this.objects.get( mesh ).mixer; - - const propertyMixers = mixer._bindings; - const accuIndex = mixer._accuIndex; - - for ( let i = 0, il = propertyMixers.length; i < il; i ++ ) { - - const propertyMixer = propertyMixers[ i ]; - const buffer = propertyMixer.buffer; - const stride = propertyMixer.valueSize; - const offset = ( accuIndex + 1 ) * stride; - - propertyMixer.binding.getValue( buffer, offset ); - - } - - } - - /* - * Avoiding these two issues by restore/save bones before/after mixer animation. - * - * 1. PropertyMixer used by AnimationMixer holds cache value in .buffer. - * Calculating IK, Grant, and Physics after mixer animation can break - * the cache coherency. - * - * 2. Applying Grant two or more times without reset the posing breaks model. - */ - _saveBones( mesh ) { - - const objects = this.objects.get( mesh ); - - const bones = mesh.skeleton.bones; - - let backupBones = objects.backupBones; - - if ( backupBones === undefined ) { - - backupBones = new Float32Array( bones.length * 7 ); - objects.backupBones = backupBones; - - } - - for ( let i = 0, il = bones.length; i < il; i ++ ) { - - const bone = bones[ i ]; - bone.position.toArray( backupBones, i * 7 ); - bone.quaternion.toArray( backupBones, i * 7 + 3 ); - - } - - } - - _restoreBones( mesh ) { - - const objects = this.objects.get( mesh ); - - const backupBones = objects.backupBones; - - if ( backupBones === undefined ) return; - - const bones = mesh.skeleton.bones; - - for ( let i = 0, il = bones.length; i < il; i ++ ) { - - const bone = bones[ i ]; - bone.position.fromArray( backupBones, i * 7 ); - bone.quaternion.fromArray( backupBones, i * 7 + 3 ); - - } - - } - - // experimental - - _getMasterPhysics() { - - if ( this.masterPhysics !== null ) return this.masterPhysics; - - for ( let i = 0, il = this.meshes.length; i < il; i ++ ) { - - const physics = this.meshes[ i ].physics; - - if ( physics !== undefined && physics !== null ) { - - this.masterPhysics = physics; - return this.masterPhysics; - - } - - } - - return null; - - } - - _updateSharedPhysics( delta ) { - - if ( this.meshes.length === 0 || ! this.enabled.physics || ! this.sharedPhysics ) return; - - const physics = this._getMasterPhysics(); - - if ( physics === null ) return; - - for ( let i = 0, il = this.meshes.length; i < il; i ++ ) { - - const p = this.meshes[ i ].physics; - - if ( p !== null && p !== undefined ) { - - p.updateRigidBodies(); - - } - - } - - physics.stepSimulation( delta ); - - for ( let i = 0, il = this.meshes.length; i < il; i ++ ) { - - const p = this.meshes[ i ].physics; - - if ( p !== null && p !== undefined ) { - - p.updateBones(); - - } - - } - - } - -} - -// Keep working quaternions for less GC -const _quaternions = []; -let _quaternionIndex = 0; - -function getQuaternion() { - - if ( _quaternionIndex >= _quaternions.length ) { - - _quaternions.push( new Quaternion() ); - - } - - return _quaternions[ _quaternionIndex ++ ]; - -} - -// Save rotation whose grant and IK are already applied -// used by grant children -const _grantResultMap = new Map(); - -function updateOne( mesh, boneIndex, ikSolver, grantSolver ) { - - const bones = mesh.skeleton.bones; - const bonesData = mesh.geometry.userData.MMD.bones; - const boneData = bonesData[ boneIndex ]; - const bone = bones[ boneIndex ]; - - // Return if already updated by being referred as a grant parent. - if ( _grantResultMap.has( boneIndex ) ) return; - - const quaternion = getQuaternion(); - - // Initialize grant result here to prevent infinite loop. - // If it's referred before updating with actual result later - // result without applyting IK or grant is gotten - // but better than composing of infinite loop. - _grantResultMap.set( boneIndex, quaternion.copy( bone.quaternion ) ); - - // @TODO: Support global grant and grant position - if ( grantSolver && boneData.grant && - ! boneData.grant.isLocal && boneData.grant.affectRotation ) { - - const parentIndex = boneData.grant.parentIndex; - const ratio = boneData.grant.ratio; - - if ( ! _grantResultMap.has( parentIndex ) ) { - - updateOne( mesh, parentIndex, ikSolver, grantSolver ); - - } - - grantSolver.addGrantRotation( bone, _grantResultMap.get( parentIndex ), ratio ); - - } - - if ( ikSolver && boneData.ik ) { - - // @TODO: Updating world matrices every time solving an IK bone is - // costly. Optimize if possible. - mesh.updateMatrixWorld( true ); - ikSolver.updateOne( boneData.ik ); - - // No confident, but it seems the grant results with ik links should be updated? - const links = boneData.ik.links; - - for ( let i = 0, il = links.length; i < il; i ++ ) { - - const link = links[ i ]; - - if ( link.enabled === false ) continue; - - const linkIndex = link.index; - - if ( _grantResultMap.has( linkIndex ) ) { - - _grantResultMap.set( linkIndex, _grantResultMap.get( linkIndex ).copy( bones[ linkIndex ].quaternion ) ); - - } - - } - - } - - // Update with the actual result here - quaternion.copy( bone.quaternion ); - -} - -// - -class AudioManager { - - /** - * @param {THREE.Audio} audio - * @param {Object} params - (optional) - * @param {Nuumber} params.delayTime - */ - constructor( audio, params = {} ) { - - this.audio = audio; - - this.elapsedTime = 0.0; - this.currentTime = 0.0; - this.delayTime = params.delayTime !== undefined - ? params.delayTime : 0.0; - - this.audioDuration = this.audio.buffer.duration; - this.duration = this.audioDuration + this.delayTime; - - } - - /** - * @param {Number} delta - * @return {AudioManager} - */ - control( delta ) { - - this.elapsed += delta; - this.currentTime += delta; - - if ( this._shouldStopAudio() ) this.audio.stop(); - if ( this._shouldStartAudio() ) this.audio.play(); - - return this; - - } - - // private methods - - _shouldStartAudio() { - - if ( this.audio.isPlaying ) return false; - - while ( this.currentTime >= this.duration ) { - - this.currentTime -= this.duration; - - } - - if ( this.currentTime < this.delayTime ) return false; - - // 'duration' can be bigger than 'audioDuration + delayTime' because of sync configuration - if ( ( this.currentTime - this.delayTime ) > this.audioDuration ) return false; - - return true; - - } - - _shouldStopAudio() { - - return this.audio.isPlaying && - this.currentTime >= this.duration; - - } - -} - -const _q = new Quaternion(); - -/** - * Solver for Grant (Fuyo in Japanese. I just google translated because - * Fuyo may be MMD specific term and may not be common word in 3D CG terms.) - * Grant propagates a bone's transform to other bones transforms even if - * they are not children. - * @param {THREE.SkinnedMesh} mesh - * @param {Array} grants - */ -class GrantSolver { - - constructor( mesh, grants = [] ) { - - this.mesh = mesh; - this.grants = grants; - - } - - /** - * Solve all the grant bones - * @return {GrantSolver} - */ - update() { - - const grants = this.grants; - - for ( let i = 0, il = grants.length; i < il; i ++ ) { - - this.updateOne( grants[ i ] ); - - } - - return this; - - } - - /** - * Solve a grant bone - * @param {Object} grant - grant parameter - * @return {GrantSolver} - */ - updateOne( grant ) { - - const bones = this.mesh.skeleton.bones; - const bone = bones[ grant.index ]; - const parentBone = bones[ grant.parentIndex ]; - - if ( grant.isLocal ) { - - // TODO: implement - if ( grant.affectPosition ) { - - } - - // TODO: implement - if ( grant.affectRotation ) { - - } - - } else { - - // TODO: implement - if ( grant.affectPosition ) { - - } - - if ( grant.affectRotation ) { - - this.addGrantRotation( bone, parentBone.quaternion, grant.ratio ); - - } - - } - - return this; - - } - - addGrantRotation( bone, q, ratio ) { - - _q.set( 0, 0, 0, 1 ); - _q.slerp( q, ratio ); - bone.quaternion.multiply( _q ); - - return this; - - } - -} - -export { MMDAnimationHelper }; diff --git a/three/addons/animation/MMDPhysics.js b/three/addons/animation/MMDPhysics.js deleted file mode 100644 index 0570901..0000000 --- a/three/addons/animation/MMDPhysics.js +++ /dev/null @@ -1,1406 +0,0 @@ -import { - Bone, - BoxGeometry, - CapsuleGeometry, - Color, - Euler, - Matrix4, - Mesh, - MeshBasicMaterial, - Object3D, - Quaternion, - SphereGeometry, - Vector3 -} from 'three'; - -/** - * Dependencies - * - Ammo.js https://github.com/kripken/ammo.js - * - * MMDPhysics calculates physics with Ammo(Bullet based JavaScript Physics engine) - * for MMD model loaded by MMDLoader. - * - * TODO - * - Physics in Worker - */ - -/* global Ammo */ - -class MMDPhysics { - - /** - * @param {THREE.SkinnedMesh} mesh - * @param {Array} rigidBodyParams - * @param {Array} (optional) constraintParams - * @param {Object} params - (optional) - * @param {Number} params.unitStep - Default is 1 / 65. - * @param {Integer} params.maxStepNum - Default is 3. - * @param {Vector3} params.gravity - Default is ( 0, - 9.8 * 10, 0 ) - */ - constructor( mesh, rigidBodyParams, constraintParams = [], params = {} ) { - - if ( typeof Ammo === 'undefined' ) { - - throw new Error( 'THREE.MMDPhysics: Import ammo.js https://github.com/kripken/ammo.js' ); - - } - - this.manager = new ResourceManager(); - - this.mesh = mesh; - - /* - * I don't know why but 1/60 unitStep easily breaks models - * so I set it 1/65 so far. - * Don't set too small unitStep because - * the smaller unitStep can make the performance worse. - */ - this.unitStep = ( params.unitStep !== undefined ) ? params.unitStep : 1 / 65; - this.maxStepNum = ( params.maxStepNum !== undefined ) ? params.maxStepNum : 3; - this.gravity = new Vector3( 0, - 9.8 * 10, 0 ); - - if ( params.gravity !== undefined ) this.gravity.copy( params.gravity ); - - this.world = params.world !== undefined ? params.world : null; // experimental - - this.bodies = []; - this.constraints = []; - - this._init( mesh, rigidBodyParams, constraintParams ); - - } - - /** - * Advances Physics calculation and updates bones. - * - * @param {Number} delta - time in second - * @return {MMDPhysics} - */ - update( delta ) { - - const manager = this.manager; - const mesh = this.mesh; - - // rigid bodies and constrains are for - // mesh's world scale (1, 1, 1). - // Convert to (1, 1, 1) if it isn't. - - let isNonDefaultScale = false; - - const position = manager.allocThreeVector3(); - const quaternion = manager.allocThreeQuaternion(); - const scale = manager.allocThreeVector3(); - - mesh.matrixWorld.decompose( position, quaternion, scale ); - - if ( scale.x !== 1 || scale.y !== 1 || scale.z !== 1 ) { - - isNonDefaultScale = true; - - } - - let parent; - - if ( isNonDefaultScale ) { - - parent = mesh.parent; - - if ( parent !== null ) mesh.parent = null; - - scale.copy( this.mesh.scale ); - - mesh.scale.set( 1, 1, 1 ); - mesh.updateMatrixWorld( true ); - - } - - // calculate physics and update bones - - this._updateRigidBodies(); - this._stepSimulation( delta ); - this._updateBones(); - - // restore mesh if converted above - - if ( isNonDefaultScale ) { - - if ( parent !== null ) mesh.parent = parent; - - mesh.scale.copy( scale ); - - } - - manager.freeThreeVector3( scale ); - manager.freeThreeQuaternion( quaternion ); - manager.freeThreeVector3( position ); - - return this; - - } - - /** - * Resets rigid bodies transorm to current bone's. - * - * @return {MMDPhysics} - */ - reset() { - - for ( let i = 0, il = this.bodies.length; i < il; i ++ ) { - - this.bodies[ i ].reset(); - - } - - return this; - - } - - /** - * Warm ups Rigid bodies. Calculates cycles steps. - * - * @param {Integer} cycles - * @return {MMDPhysics} - */ - warmup( cycles ) { - - for ( let i = 0; i < cycles; i ++ ) { - - this.update( 1 / 60 ); - - } - - return this; - - } - - /** - * Sets gravity. - * - * @param {Vector3} gravity - * @return {MMDPhysicsHelper} - */ - setGravity( gravity ) { - - this.world.setGravity( new Ammo.btVector3( gravity.x, gravity.y, gravity.z ) ); - this.gravity.copy( gravity ); - - return this; - - } - - /** - * Creates MMDPhysicsHelper - * - * @return {MMDPhysicsHelper} - */ - createHelper() { - - return new MMDPhysicsHelper( this.mesh, this ); - - } - - // private methods - - _init( mesh, rigidBodyParams, constraintParams ) { - - const manager = this.manager; - - // rigid body/constraint parameters are for - // mesh's default world transform as position(0, 0, 0), - // quaternion(0, 0, 0, 1) and scale(0, 0, 0) - - const parent = mesh.parent; - - if ( parent !== null ) mesh.parent = null; - - const currentPosition = manager.allocThreeVector3(); - const currentQuaternion = manager.allocThreeQuaternion(); - const currentScale = manager.allocThreeVector3(); - - currentPosition.copy( mesh.position ); - currentQuaternion.copy( mesh.quaternion ); - currentScale.copy( mesh.scale ); - - mesh.position.set( 0, 0, 0 ); - mesh.quaternion.set( 0, 0, 0, 1 ); - mesh.scale.set( 1, 1, 1 ); - - mesh.updateMatrixWorld( true ); - - if ( this.world === null ) { - - this.world = this._createWorld(); - this.setGravity( this.gravity ); - - } - - this._initRigidBodies( rigidBodyParams ); - this._initConstraints( constraintParams ); - - if ( parent !== null ) mesh.parent = parent; - - mesh.position.copy( currentPosition ); - mesh.quaternion.copy( currentQuaternion ); - mesh.scale.copy( currentScale ); - - mesh.updateMatrixWorld( true ); - - this.reset(); - - manager.freeThreeVector3( currentPosition ); - manager.freeThreeQuaternion( currentQuaternion ); - manager.freeThreeVector3( currentScale ); - - } - - _createWorld() { - - const config = new Ammo.btDefaultCollisionConfiguration(); - const dispatcher = new Ammo.btCollisionDispatcher( config ); - const cache = new Ammo.btDbvtBroadphase(); - const solver = new Ammo.btSequentialImpulseConstraintSolver(); - const world = new Ammo.btDiscreteDynamicsWorld( dispatcher, cache, solver, config ); - return world; - - } - - _initRigidBodies( rigidBodies ) { - - for ( let i = 0, il = rigidBodies.length; i < il; i ++ ) { - - this.bodies.push( new RigidBody( - this.mesh, this.world, rigidBodies[ i ], this.manager ) ); - - } - - } - - _initConstraints( constraints ) { - - for ( let i = 0, il = constraints.length; i < il; i ++ ) { - - const params = constraints[ i ]; - const bodyA = this.bodies[ params.rigidBodyIndex1 ]; - const bodyB = this.bodies[ params.rigidBodyIndex2 ]; - this.constraints.push( new Constraint( this.mesh, this.world, bodyA, bodyB, params, this.manager ) ); - - } - - } - - _stepSimulation( delta ) { - - const unitStep = this.unitStep; - let stepTime = delta; - let maxStepNum = ( ( delta / unitStep ) | 0 ) + 1; - - if ( stepTime < unitStep ) { - - stepTime = unitStep; - maxStepNum = 1; - - } - - if ( maxStepNum > this.maxStepNum ) { - - maxStepNum = this.maxStepNum; - - } - - this.world.stepSimulation( stepTime, maxStepNum, unitStep ); - - } - - _updateRigidBodies() { - - for ( let i = 0, il = this.bodies.length; i < il; i ++ ) { - - this.bodies[ i ].updateFromBone(); - - } - - } - - _updateBones() { - - for ( let i = 0, il = this.bodies.length; i < il; i ++ ) { - - this.bodies[ i ].updateBone(); - - } - - } - -} - -/** - * This manager's responsibilies are - * - * 1. manage Ammo.js and Three.js object resources and - * improve the performance and the memory consumption by - * reusing objects. - * - * 2. provide simple Ammo object operations. - */ -class ResourceManager { - - constructor() { - - // for Three.js - this.threeVector3s = []; - this.threeMatrix4s = []; - this.threeQuaternions = []; - this.threeEulers = []; - - // for Ammo.js - this.transforms = []; - this.quaternions = []; - this.vector3s = []; - - } - - allocThreeVector3() { - - return ( this.threeVector3s.length > 0 ) - ? this.threeVector3s.pop() - : new Vector3(); - - } - - freeThreeVector3( v ) { - - this.threeVector3s.push( v ); - - } - - allocThreeMatrix4() { - - return ( this.threeMatrix4s.length > 0 ) - ? this.threeMatrix4s.pop() - : new Matrix4(); - - } - - freeThreeMatrix4( m ) { - - this.threeMatrix4s.push( m ); - - } - - allocThreeQuaternion() { - - return ( this.threeQuaternions.length > 0 ) - ? this.threeQuaternions.pop() - : new Quaternion(); - - } - - freeThreeQuaternion( q ) { - - this.threeQuaternions.push( q ); - - } - - allocThreeEuler() { - - return ( this.threeEulers.length > 0 ) - ? this.threeEulers.pop() - : new Euler(); - - } - - freeThreeEuler( e ) { - - this.threeEulers.push( e ); - - } - - allocTransform() { - - return ( this.transforms.length > 0 ) - ? this.transforms.pop() - : new Ammo.btTransform(); - - } - - freeTransform( t ) { - - this.transforms.push( t ); - - } - - allocQuaternion() { - - return ( this.quaternions.length > 0 ) - ? this.quaternions.pop() - : new Ammo.btQuaternion(); - - } - - freeQuaternion( q ) { - - this.quaternions.push( q ); - - } - - allocVector3() { - - return ( this.vector3s.length > 0 ) - ? this.vector3s.pop() - : new Ammo.btVector3(); - - } - - freeVector3( v ) { - - this.vector3s.push( v ); - - } - - setIdentity( t ) { - - t.setIdentity(); - - } - - getBasis( t ) { - - var q = this.allocQuaternion(); - t.getBasis().getRotation( q ); - return q; - - } - - getBasisAsMatrix3( t ) { - - var q = this.getBasis( t ); - var m = this.quaternionToMatrix3( q ); - this.freeQuaternion( q ); - return m; - - } - - getOrigin( t ) { - - return t.getOrigin(); - - } - - setOrigin( t, v ) { - - t.getOrigin().setValue( v.x(), v.y(), v.z() ); - - } - - copyOrigin( t1, t2 ) { - - var o = t2.getOrigin(); - this.setOrigin( t1, o ); - - } - - setBasis( t, q ) { - - t.setRotation( q ); - - } - - setBasisFromMatrix3( t, m ) { - - var q = this.matrix3ToQuaternion( m ); - this.setBasis( t, q ); - this.freeQuaternion( q ); - - } - - setOriginFromArray3( t, a ) { - - t.getOrigin().setValue( a[ 0 ], a[ 1 ], a[ 2 ] ); - - } - - setOriginFromThreeVector3( t, v ) { - - t.getOrigin().setValue( v.x, v.y, v.z ); - - } - - setBasisFromArray3( t, a ) { - - var thQ = this.allocThreeQuaternion(); - var thE = this.allocThreeEuler(); - thE.set( a[ 0 ], a[ 1 ], a[ 2 ] ); - this.setBasisFromThreeQuaternion( t, thQ.setFromEuler( thE ) ); - - this.freeThreeEuler( thE ); - this.freeThreeQuaternion( thQ ); - - } - - setBasisFromThreeQuaternion( t, a ) { - - var q = this.allocQuaternion(); - - q.setX( a.x ); - q.setY( a.y ); - q.setZ( a.z ); - q.setW( a.w ); - this.setBasis( t, q ); - - this.freeQuaternion( q ); - - } - - multiplyTransforms( t1, t2 ) { - - var t = this.allocTransform(); - this.setIdentity( t ); - - var m1 = this.getBasisAsMatrix3( t1 ); - var m2 = this.getBasisAsMatrix3( t2 ); - - var o1 = this.getOrigin( t1 ); - var o2 = this.getOrigin( t2 ); - - var v1 = this.multiplyMatrix3ByVector3( m1, o2 ); - var v2 = this.addVector3( v1, o1 ); - this.setOrigin( t, v2 ); - - var m3 = this.multiplyMatrices3( m1, m2 ); - this.setBasisFromMatrix3( t, m3 ); - - this.freeVector3( v1 ); - this.freeVector3( v2 ); - - return t; - - } - - inverseTransform( t ) { - - var t2 = this.allocTransform(); - - var m1 = this.getBasisAsMatrix3( t ); - var o = this.getOrigin( t ); - - var m2 = this.transposeMatrix3( m1 ); - var v1 = this.negativeVector3( o ); - var v2 = this.multiplyMatrix3ByVector3( m2, v1 ); - - this.setOrigin( t2, v2 ); - this.setBasisFromMatrix3( t2, m2 ); - - this.freeVector3( v1 ); - this.freeVector3( v2 ); - - return t2; - - } - - multiplyMatrices3( m1, m2 ) { - - var m3 = []; - - var v10 = this.rowOfMatrix3( m1, 0 ); - var v11 = this.rowOfMatrix3( m1, 1 ); - var v12 = this.rowOfMatrix3( m1, 2 ); - - var v20 = this.columnOfMatrix3( m2, 0 ); - var v21 = this.columnOfMatrix3( m2, 1 ); - var v22 = this.columnOfMatrix3( m2, 2 ); - - m3[ 0 ] = this.dotVectors3( v10, v20 ); - m3[ 1 ] = this.dotVectors3( v10, v21 ); - m3[ 2 ] = this.dotVectors3( v10, v22 ); - m3[ 3 ] = this.dotVectors3( v11, v20 ); - m3[ 4 ] = this.dotVectors3( v11, v21 ); - m3[ 5 ] = this.dotVectors3( v11, v22 ); - m3[ 6 ] = this.dotVectors3( v12, v20 ); - m3[ 7 ] = this.dotVectors3( v12, v21 ); - m3[ 8 ] = this.dotVectors3( v12, v22 ); - - this.freeVector3( v10 ); - this.freeVector3( v11 ); - this.freeVector3( v12 ); - this.freeVector3( v20 ); - this.freeVector3( v21 ); - this.freeVector3( v22 ); - - return m3; - - } - - addVector3( v1, v2 ) { - - var v = this.allocVector3(); - v.setValue( v1.x() + v2.x(), v1.y() + v2.y(), v1.z() + v2.z() ); - return v; - - } - - dotVectors3( v1, v2 ) { - - return v1.x() * v2.x() + v1.y() * v2.y() + v1.z() * v2.z(); - - } - - rowOfMatrix3( m, i ) { - - var v = this.allocVector3(); - v.setValue( m[ i * 3 + 0 ], m[ i * 3 + 1 ], m[ i * 3 + 2 ] ); - return v; - - } - - columnOfMatrix3( m, i ) { - - var v = this.allocVector3(); - v.setValue( m[ i + 0 ], m[ i + 3 ], m[ i + 6 ] ); - return v; - - } - - negativeVector3( v ) { - - var v2 = this.allocVector3(); - v2.setValue( - v.x(), - v.y(), - v.z() ); - return v2; - - } - - multiplyMatrix3ByVector3( m, v ) { - - var v4 = this.allocVector3(); - - var v0 = this.rowOfMatrix3( m, 0 ); - var v1 = this.rowOfMatrix3( m, 1 ); - var v2 = this.rowOfMatrix3( m, 2 ); - var x = this.dotVectors3( v0, v ); - var y = this.dotVectors3( v1, v ); - var z = this.dotVectors3( v2, v ); - - v4.setValue( x, y, z ); - - this.freeVector3( v0 ); - this.freeVector3( v1 ); - this.freeVector3( v2 ); - - return v4; - - } - - transposeMatrix3( m ) { - - var m2 = []; - m2[ 0 ] = m[ 0 ]; - m2[ 1 ] = m[ 3 ]; - m2[ 2 ] = m[ 6 ]; - m2[ 3 ] = m[ 1 ]; - m2[ 4 ] = m[ 4 ]; - m2[ 5 ] = m[ 7 ]; - m2[ 6 ] = m[ 2 ]; - m2[ 7 ] = m[ 5 ]; - m2[ 8 ] = m[ 8 ]; - return m2; - - } - - quaternionToMatrix3( q ) { - - var m = []; - - var x = q.x(); - var y = q.y(); - var z = q.z(); - var w = q.w(); - - var xx = x * x; - var yy = y * y; - var zz = z * z; - - var xy = x * y; - var yz = y * z; - var zx = z * x; - - var xw = x * w; - var yw = y * w; - var zw = z * w; - - m[ 0 ] = 1 - 2 * ( yy + zz ); - m[ 1 ] = 2 * ( xy - zw ); - m[ 2 ] = 2 * ( zx + yw ); - m[ 3 ] = 2 * ( xy + zw ); - m[ 4 ] = 1 - 2 * ( zz + xx ); - m[ 5 ] = 2 * ( yz - xw ); - m[ 6 ] = 2 * ( zx - yw ); - m[ 7 ] = 2 * ( yz + xw ); - m[ 8 ] = 1 - 2 * ( xx + yy ); - - return m; - - } - - matrix3ToQuaternion( m ) { - - var t = m[ 0 ] + m[ 4 ] + m[ 8 ]; - var s, x, y, z, w; - - if ( t > 0 ) { - - s = Math.sqrt( t + 1.0 ) * 2; - w = 0.25 * s; - x = ( m[ 7 ] - m[ 5 ] ) / s; - y = ( m[ 2 ] - m[ 6 ] ) / s; - z = ( m[ 3 ] - m[ 1 ] ) / s; - - } else if ( ( m[ 0 ] > m[ 4 ] ) && ( m[ 0 ] > m[ 8 ] ) ) { - - s = Math.sqrt( 1.0 + m[ 0 ] - m[ 4 ] - m[ 8 ] ) * 2; - w = ( m[ 7 ] - m[ 5 ] ) / s; - x = 0.25 * s; - y = ( m[ 1 ] + m[ 3 ] ) / s; - z = ( m[ 2 ] + m[ 6 ] ) / s; - - } else if ( m[ 4 ] > m[ 8 ] ) { - - s = Math.sqrt( 1.0 + m[ 4 ] - m[ 0 ] - m[ 8 ] ) * 2; - w = ( m[ 2 ] - m[ 6 ] ) / s; - x = ( m[ 1 ] + m[ 3 ] ) / s; - y = 0.25 * s; - z = ( m[ 5 ] + m[ 7 ] ) / s; - - } else { - - s = Math.sqrt( 1.0 + m[ 8 ] - m[ 0 ] - m[ 4 ] ) * 2; - w = ( m[ 3 ] - m[ 1 ] ) / s; - x = ( m[ 2 ] + m[ 6 ] ) / s; - y = ( m[ 5 ] + m[ 7 ] ) / s; - z = 0.25 * s; - - } - - var q = this.allocQuaternion(); - q.setX( x ); - q.setY( y ); - q.setZ( z ); - q.setW( w ); - return q; - - } - -} - -/** - * @param {THREE.SkinnedMesh} mesh - * @param {Ammo.btDiscreteDynamicsWorld} world - * @param {Object} params - * @param {ResourceManager} manager - */ -class RigidBody { - - constructor( mesh, world, params, manager ) { - - this.mesh = mesh; - this.world = world; - this.params = params; - this.manager = manager; - - this.body = null; - this.bone = null; - this.boneOffsetForm = null; - this.boneOffsetFormInverse = null; - - this._init(); - - } - - /** - * Resets rigid body transform to the current bone's. - * - * @return {RigidBody} - */ - reset() { - - this._setTransformFromBone(); - return this; - - } - - /** - * Updates rigid body's transform from the current bone. - * - * @return {RidigBody} - */ - updateFromBone() { - - if ( this.params.boneIndex !== - 1 && this.params.type === 0 ) { - - this._setTransformFromBone(); - - } - - return this; - - } - - /** - * Updates bone from the current ridid body's transform. - * - * @return {RidigBody} - */ - updateBone() { - - if ( this.params.type === 0 || this.params.boneIndex === - 1 ) { - - return this; - - } - - this._updateBoneRotation(); - - if ( this.params.type === 1 ) { - - this._updateBonePosition(); - - } - - this.bone.updateMatrixWorld( true ); - - if ( this.params.type === 2 ) { - - this._setPositionFromBone(); - - } - - return this; - - } - - // private methods - - _init() { - - function generateShape( p ) { - - switch ( p.shapeType ) { - - case 0: - return new Ammo.btSphereShape( p.width ); - - case 1: - return new Ammo.btBoxShape( new Ammo.btVector3( p.width, p.height, p.depth ) ); - - case 2: - return new Ammo.btCapsuleShape( p.width, p.height ); - - default: - throw new Error( 'unknown shape type ' + p.shapeType ); - - } - - } - - const manager = this.manager; - const params = this.params; - const bones = this.mesh.skeleton.bones; - const bone = ( params.boneIndex === - 1 ) - ? new Bone() - : bones[ params.boneIndex ]; - - const shape = generateShape( params ); - const weight = ( params.type === 0 ) ? 0 : params.weight; - const localInertia = manager.allocVector3(); - localInertia.setValue( 0, 0, 0 ); - - if ( weight !== 0 ) { - - shape.calculateLocalInertia( weight, localInertia ); - - } - - const boneOffsetForm = manager.allocTransform(); - manager.setIdentity( boneOffsetForm ); - manager.setOriginFromArray3( boneOffsetForm, params.position ); - manager.setBasisFromArray3( boneOffsetForm, params.rotation ); - - const vector = manager.allocThreeVector3(); - const boneForm = manager.allocTransform(); - manager.setIdentity( boneForm ); - manager.setOriginFromThreeVector3( boneForm, bone.getWorldPosition( vector ) ); - - const form = manager.multiplyTransforms( boneForm, boneOffsetForm ); - const state = new Ammo.btDefaultMotionState( form ); - - const info = new Ammo.btRigidBodyConstructionInfo( weight, state, shape, localInertia ); - info.set_m_friction( params.friction ); - info.set_m_restitution( params.restitution ); - - const body = new Ammo.btRigidBody( info ); - - if ( params.type === 0 ) { - - body.setCollisionFlags( body.getCollisionFlags() | 2 ); - - /* - * It'd be better to comment out this line though in general I should call this method - * because I'm not sure why but physics will be more like MMD's - * if I comment out. - */ - body.setActivationState( 4 ); - - } - - body.setDamping( params.positionDamping, params.rotationDamping ); - body.setSleepingThresholds( 0, 0 ); - - this.world.addRigidBody( body, 1 << params.groupIndex, params.groupTarget ); - - this.body = body; - this.bone = bone; - this.boneOffsetForm = boneOffsetForm; - this.boneOffsetFormInverse = manager.inverseTransform( boneOffsetForm ); - - manager.freeVector3( localInertia ); - manager.freeTransform( form ); - manager.freeTransform( boneForm ); - manager.freeThreeVector3( vector ); - - } - - _getBoneTransform() { - - const manager = this.manager; - const p = manager.allocThreeVector3(); - const q = manager.allocThreeQuaternion(); - const s = manager.allocThreeVector3(); - - this.bone.matrixWorld.decompose( p, q, s ); - - const tr = manager.allocTransform(); - manager.setOriginFromThreeVector3( tr, p ); - manager.setBasisFromThreeQuaternion( tr, q ); - - const form = manager.multiplyTransforms( tr, this.boneOffsetForm ); - - manager.freeTransform( tr ); - manager.freeThreeVector3( s ); - manager.freeThreeQuaternion( q ); - manager.freeThreeVector3( p ); - - return form; - - } - - _getWorldTransformForBone() { - - const manager = this.manager; - const tr = this.body.getCenterOfMassTransform(); - return manager.multiplyTransforms( tr, this.boneOffsetFormInverse ); - - } - - _setTransformFromBone() { - - const manager = this.manager; - const form = this._getBoneTransform(); - - // TODO: check the most appropriate way to set - //this.body.setWorldTransform( form ); - this.body.setCenterOfMassTransform( form ); - this.body.getMotionState().setWorldTransform( form ); - - manager.freeTransform( form ); - - } - - _setPositionFromBone() { - - const manager = this.manager; - const form = this._getBoneTransform(); - - const tr = manager.allocTransform(); - this.body.getMotionState().getWorldTransform( tr ); - manager.copyOrigin( tr, form ); - - // TODO: check the most appropriate way to set - //this.body.setWorldTransform( tr ); - this.body.setCenterOfMassTransform( tr ); - this.body.getMotionState().setWorldTransform( tr ); - - manager.freeTransform( tr ); - manager.freeTransform( form ); - - } - - _updateBoneRotation() { - - const manager = this.manager; - - const tr = this._getWorldTransformForBone(); - const q = manager.getBasis( tr ); - - const thQ = manager.allocThreeQuaternion(); - const thQ2 = manager.allocThreeQuaternion(); - const thQ3 = manager.allocThreeQuaternion(); - - thQ.set( q.x(), q.y(), q.z(), q.w() ); - thQ2.setFromRotationMatrix( this.bone.matrixWorld ); - thQ2.conjugate(); - thQ2.multiply( thQ ); - - //this.bone.quaternion.multiply( thQ2 ); - - thQ3.setFromRotationMatrix( this.bone.matrix ); - - // Renormalizing quaternion here because repeatedly transforming - // quaternion continuously accumulates floating point error and - // can end up being overflow. See #15335 - this.bone.quaternion.copy( thQ2.multiply( thQ3 ).normalize() ); - - manager.freeThreeQuaternion( thQ ); - manager.freeThreeQuaternion( thQ2 ); - manager.freeThreeQuaternion( thQ3 ); - - manager.freeQuaternion( q ); - manager.freeTransform( tr ); - - } - - _updateBonePosition() { - - const manager = this.manager; - - const tr = this._getWorldTransformForBone(); - - const thV = manager.allocThreeVector3(); - - const o = manager.getOrigin( tr ); - thV.set( o.x(), o.y(), o.z() ); - - if ( this.bone.parent ) { - - this.bone.parent.worldToLocal( thV ); - - } - - this.bone.position.copy( thV ); - - manager.freeThreeVector3( thV ); - - manager.freeTransform( tr ); - - } - -} - -// - -class Constraint { - - /** - * @param {THREE.SkinnedMesh} mesh - * @param {Ammo.btDiscreteDynamicsWorld} world - * @param {RigidBody} bodyA - * @param {RigidBody} bodyB - * @param {Object} params - * @param {ResourceManager} manager - */ - constructor( mesh, world, bodyA, bodyB, params, manager ) { - - this.mesh = mesh; - this.world = world; - this.bodyA = bodyA; - this.bodyB = bodyB; - this.params = params; - this.manager = manager; - - this.constraint = null; - - this._init(); - - } - - // private method - - _init() { - - const manager = this.manager; - const params = this.params; - const bodyA = this.bodyA; - const bodyB = this.bodyB; - - const form = manager.allocTransform(); - manager.setIdentity( form ); - manager.setOriginFromArray3( form, params.position ); - manager.setBasisFromArray3( form, params.rotation ); - - const formA = manager.allocTransform(); - const formB = manager.allocTransform(); - - bodyA.body.getMotionState().getWorldTransform( formA ); - bodyB.body.getMotionState().getWorldTransform( formB ); - - const formInverseA = manager.inverseTransform( formA ); - const formInverseB = manager.inverseTransform( formB ); - - const formA2 = manager.multiplyTransforms( formInverseA, form ); - const formB2 = manager.multiplyTransforms( formInverseB, form ); - - const constraint = new Ammo.btGeneric6DofSpringConstraint( bodyA.body, bodyB.body, formA2, formB2, true ); - - const lll = manager.allocVector3(); - const lul = manager.allocVector3(); - const all = manager.allocVector3(); - const aul = manager.allocVector3(); - - lll.setValue( params.translationLimitation1[ 0 ], - params.translationLimitation1[ 1 ], - params.translationLimitation1[ 2 ] ); - lul.setValue( params.translationLimitation2[ 0 ], - params.translationLimitation2[ 1 ], - params.translationLimitation2[ 2 ] ); - all.setValue( params.rotationLimitation1[ 0 ], - params.rotationLimitation1[ 1 ], - params.rotationLimitation1[ 2 ] ); - aul.setValue( params.rotationLimitation2[ 0 ], - params.rotationLimitation2[ 1 ], - params.rotationLimitation2[ 2 ] ); - - constraint.setLinearLowerLimit( lll ); - constraint.setLinearUpperLimit( lul ); - constraint.setAngularLowerLimit( all ); - constraint.setAngularUpperLimit( aul ); - - for ( let i = 0; i < 3; i ++ ) { - - if ( params.springPosition[ i ] !== 0 ) { - - constraint.enableSpring( i, true ); - constraint.setStiffness( i, params.springPosition[ i ] ); - - } - - } - - for ( let i = 0; i < 3; i ++ ) { - - if ( params.springRotation[ i ] !== 0 ) { - - constraint.enableSpring( i + 3, true ); - constraint.setStiffness( i + 3, params.springRotation[ i ] ); - - } - - } - - /* - * Currently(10/31/2016) official ammo.js doesn't support - * btGeneric6DofSpringConstraint.setParam method. - * You need custom ammo.js (add the method into idl) if you wanna use. - * By setting this parameter, physics will be more like MMD's - */ - if ( constraint.setParam !== undefined ) { - - for ( let i = 0; i < 6; i ++ ) { - - constraint.setParam( 2, 0.475, i ); - - } - - } - - this.world.addConstraint( constraint, true ); - this.constraint = constraint; - - manager.freeTransform( form ); - manager.freeTransform( formA ); - manager.freeTransform( formB ); - manager.freeTransform( formInverseA ); - manager.freeTransform( formInverseB ); - manager.freeTransform( formA2 ); - manager.freeTransform( formB2 ); - manager.freeVector3( lll ); - manager.freeVector3( lul ); - manager.freeVector3( all ); - manager.freeVector3( aul ); - - } - -} - -// - -const _position = new Vector3(); -const _quaternion = new Quaternion(); -const _scale = new Vector3(); -const _matrixWorldInv = new Matrix4(); - -class MMDPhysicsHelper extends Object3D { - - /** - * Visualize Rigid bodies - * - * @param {THREE.SkinnedMesh} mesh - * @param {Physics} physics - */ - constructor( mesh, physics ) { - - super(); - - this.root = mesh; - this.physics = physics; - - this.matrix.copy( mesh.matrixWorld ); - this.matrixAutoUpdate = false; - - this.materials = []; - - this.materials.push( - new MeshBasicMaterial( { - color: new Color( 0xff8888 ), - wireframe: true, - depthTest: false, - depthWrite: false, - opacity: 0.25, - transparent: true - } ) - ); - - this.materials.push( - new MeshBasicMaterial( { - color: new Color( 0x88ff88 ), - wireframe: true, - depthTest: false, - depthWrite: false, - opacity: 0.25, - transparent: true - } ) - ); - - this.materials.push( - new MeshBasicMaterial( { - color: new Color( 0x8888ff ), - wireframe: true, - depthTest: false, - depthWrite: false, - opacity: 0.25, - transparent: true - } ) - ); - - this._init(); - - } - - - /** - * Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app. - */ - dispose() { - - const materials = this.materials; - const children = this.children; - - for ( let i = 0; i < materials.length; i ++ ) { - - materials[ i ].dispose(); - - } - - for ( let i = 0; i < children.length; i ++ ) { - - const child = children[ i ]; - - if ( child.isMesh ) child.geometry.dispose(); - - } - - } - - /** - * Updates Rigid Bodies visualization. - */ - updateMatrixWorld( force ) { - - var mesh = this.root; - - if ( this.visible ) { - - var bodies = this.physics.bodies; - - _matrixWorldInv - .copy( mesh.matrixWorld ) - .decompose( _position, _quaternion, _scale ) - .compose( _position, _quaternion, _scale.set( 1, 1, 1 ) ) - .invert(); - - for ( var i = 0, il = bodies.length; i < il; i ++ ) { - - var body = bodies[ i ].body; - var child = this.children[ i ]; - - var tr = body.getCenterOfMassTransform(); - var origin = tr.getOrigin(); - var rotation = tr.getRotation(); - - child.position - .set( origin.x(), origin.y(), origin.z() ) - .applyMatrix4( _matrixWorldInv ); - - child.quaternion - .setFromRotationMatrix( _matrixWorldInv ) - .multiply( - _quaternion.set( rotation.x(), rotation.y(), rotation.z(), rotation.w() ) - ); - - } - - } - - this.matrix - .copy( mesh.matrixWorld ) - .decompose( _position, _quaternion, _scale ) - .compose( _position, _quaternion, _scale.set( 1, 1, 1 ) ); - - super.updateMatrixWorld( force ); - - } - - // private method - - _init() { - - var bodies = this.physics.bodies; - - function createGeometry( param ) { - - switch ( param.shapeType ) { - - case 0: - return new SphereGeometry( param.width, 16, 8 ); - - case 1: - return new BoxGeometry( param.width * 2, param.height * 2, param.depth * 2, 8, 8, 8 ); - - case 2: - return new CapsuleGeometry( param.width, param.height, 8, 16 ); - - default: - return null; - - } - - } - - for ( var i = 0, il = bodies.length; i < il; i ++ ) { - - var param = bodies[ i ].params; - this.add( new Mesh( createGeometry( param ), this.materials[ param.type ] ) ); - - } - - } - -} - -export { MMDPhysics }; diff --git a/three/addons/cameras/CinematicCamera.js b/three/addons/cameras/CinematicCamera.js deleted file mode 100644 index bbfd6e0..0000000 --- a/three/addons/cameras/CinematicCamera.js +++ /dev/null @@ -1,208 +0,0 @@ -import { - Mesh, - OrthographicCamera, - PerspectiveCamera, - PlaneGeometry, - Scene, - ShaderMaterial, - UniformsUtils, - WebGLRenderTarget -} from 'three'; - -import { BokehShader, BokehDepthShader } from '../shaders/BokehShader2.js'; - -class CinematicCamera extends PerspectiveCamera { - - constructor( fov, aspect, near, far ) { - - super( fov, aspect, near, far ); - - this.type = 'CinematicCamera'; - - this.postprocessing = { enabled: true }; - this.shaderSettings = { - rings: 3, - samples: 4 - }; - - const depthShader = BokehDepthShader; - - this.materialDepth = new ShaderMaterial( { - uniforms: depthShader.uniforms, - vertexShader: depthShader.vertexShader, - fragmentShader: depthShader.fragmentShader - } ); - - this.materialDepth.uniforms[ 'mNear' ].value = near; - this.materialDepth.uniforms[ 'mFar' ].value = far; - - // In case of cinematicCamera, having a default lens set is important - this.setLens(); - - this.initPostProcessing(); - - } - - // providing fnumber and coc(Circle of Confusion) as extra arguments - // In case of cinematicCamera, having a default lens set is important - // if fnumber and coc are not provided, cinematicCamera tries to act as a basic PerspectiveCamera - setLens( focalLength = 35, filmGauge = 35, fNumber = 8, coc = 0.019 ) { - - this.filmGauge = filmGauge; - - this.setFocalLength( focalLength ); - - this.fNumber = fNumber; - this.coc = coc; - - // fNumber is focalLength by aperture - this.aperture = focalLength / this.fNumber; - - // hyperFocal is required to calculate depthOfField when a lens tries to focus at a distance with given fNumber and focalLength - this.hyperFocal = ( focalLength * focalLength ) / ( this.aperture * this.coc ); - - } - - linearize( depth ) { - - const zfar = this.far; - const znear = this.near; - return - zfar * znear / ( depth * ( zfar - znear ) - zfar ); - - } - - smoothstep( near, far, depth ) { - - const x = this.saturate( ( depth - near ) / ( far - near ) ); - return x * x * ( 3 - 2 * x ); - - } - - saturate( x ) { - - return Math.max( 0, Math.min( 1, x ) ); - - } - - // function for focusing at a distance from the camera - focusAt( focusDistance = 20 ) { - - const focalLength = this.getFocalLength(); - - // distance from the camera (normal to frustrum) to focus on - this.focus = focusDistance; - - // the nearest point from the camera which is in focus (unused) - this.nearPoint = ( this.hyperFocal * this.focus ) / ( this.hyperFocal + ( this.focus - focalLength ) ); - - // the farthest point from the camera which is in focus (unused) - this.farPoint = ( this.hyperFocal * this.focus ) / ( this.hyperFocal - ( this.focus - focalLength ) ); - - // the gap or width of the space in which is everything is in focus (unused) - this.depthOfField = this.farPoint - this.nearPoint; - - // Considering minimum distance of focus for a standard lens (unused) - if ( this.depthOfField < 0 ) this.depthOfField = 0; - - this.sdistance = this.smoothstep( this.near, this.far, this.focus ); - - this.ldistance = this.linearize( 1 - this.sdistance ); - - this.postprocessing.bokeh_uniforms[ 'focalDepth' ].value = this.ldistance; - - } - - initPostProcessing() { - - if ( this.postprocessing.enabled ) { - - this.postprocessing.scene = new Scene(); - - this.postprocessing.camera = new OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, - 10000, 10000 ); - - this.postprocessing.scene.add( this.postprocessing.camera ); - - this.postprocessing.rtTextureDepth = new WebGLRenderTarget( window.innerWidth, window.innerHeight ); - this.postprocessing.rtTextureColor = new WebGLRenderTarget( window.innerWidth, window.innerHeight ); - - const bokeh_shader = BokehShader; - - this.postprocessing.bokeh_uniforms = UniformsUtils.clone( bokeh_shader.uniforms ); - - this.postprocessing.bokeh_uniforms[ 'tColor' ].value = this.postprocessing.rtTextureColor.texture; - this.postprocessing.bokeh_uniforms[ 'tDepth' ].value = this.postprocessing.rtTextureDepth.texture; - - this.postprocessing.bokeh_uniforms[ 'manualdof' ].value = 0; - this.postprocessing.bokeh_uniforms[ 'shaderFocus' ].value = 0; - - this.postprocessing.bokeh_uniforms[ 'fstop' ].value = 2.8; - - this.postprocessing.bokeh_uniforms[ 'showFocus' ].value = 1; - - this.postprocessing.bokeh_uniforms[ 'focalDepth' ].value = 0.1; - - //console.log( this.postprocessing.bokeh_uniforms[ "focalDepth" ].value ); - - this.postprocessing.bokeh_uniforms[ 'znear' ].value = this.near; - this.postprocessing.bokeh_uniforms[ 'zfar' ].value = this.near; - - - this.postprocessing.bokeh_uniforms[ 'textureWidth' ].value = window.innerWidth; - - this.postprocessing.bokeh_uniforms[ 'textureHeight' ].value = window.innerHeight; - - this.postprocessing.materialBokeh = new ShaderMaterial( { - uniforms: this.postprocessing.bokeh_uniforms, - vertexShader: bokeh_shader.vertexShader, - fragmentShader: bokeh_shader.fragmentShader, - defines: { - RINGS: this.shaderSettings.rings, - SAMPLES: this.shaderSettings.samples, - DEPTH_PACKING: 1 - } - } ); - - this.postprocessing.quad = new Mesh( new PlaneGeometry( window.innerWidth, window.innerHeight ), this.postprocessing.materialBokeh ); - this.postprocessing.quad.position.z = - 500; - this.postprocessing.scene.add( this.postprocessing.quad ); - - } - - } - - renderCinematic( scene, renderer ) { - - if ( this.postprocessing.enabled ) { - - const currentRenderTarget = renderer.getRenderTarget(); - - renderer.clear(); - - // Render scene into texture - - scene.overrideMaterial = null; - renderer.setRenderTarget( this.postprocessing.rtTextureColor ); - renderer.clear(); - renderer.render( scene, this ); - - // Render depth into texture - - scene.overrideMaterial = this.materialDepth; - renderer.setRenderTarget( this.postprocessing.rtTextureDepth ); - renderer.clear(); - renderer.render( scene, this ); - - // Render bokeh composite - - renderer.setRenderTarget( null ); - renderer.render( this.postprocessing.scene, this.postprocessing.camera ); - - renderer.setRenderTarget( currentRenderTarget ); - - } - - } - -} - -export { CinematicCamera }; diff --git a/three/addons/capabilities/WebGL.js b/three/addons/capabilities/WebGL.js deleted file mode 100644 index 2abf261..0000000 --- a/three/addons/capabilities/WebGL.js +++ /dev/null @@ -1,108 +0,0 @@ -class WebGL { - - static isWebGLAvailable() { - - try { - - const canvas = document.createElement( 'canvas' ); - return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) ); - - } catch ( e ) { - - return false; - - } - - } - - static isWebGL2Available() { - - try { - - const canvas = document.createElement( 'canvas' ); - return !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) ); - - } catch ( e ) { - - return false; - - } - - } - - static isColorSpaceAvailable( colorSpace ) { - - try { - - const canvas = document.createElement( 'canvas' ); - const ctx = window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ); - ctx.drawingBufferColorSpace = colorSpace; - return ctx.drawingBufferColorSpace === colorSpace; // deepscan-disable-line SAME_OPERAND_VALUE - - } catch ( e ) { - - return false; - - } - - } - - static getWebGLErrorMessage() { - - return this.getErrorMessage( 1 ); - - } - - static getWebGL2ErrorMessage() { - - return this.getErrorMessage( 2 ); - - } - - static getErrorMessage( version ) { - - const names = { - 1: 'WebGL', - 2: 'WebGL 2' - }; - - const contexts = { - 1: window.WebGLRenderingContext, - 2: window.WebGL2RenderingContext - }; - - let message = 'Your $0 does not seem to support $1'; - - const element = document.createElement( 'div' ); - element.id = 'webglmessage'; - element.style.fontFamily = 'monospace'; - element.style.fontSize = '13px'; - element.style.fontWeight = 'normal'; - element.style.textAlign = 'center'; - element.style.background = '#fff'; - element.style.color = '#000'; - element.style.padding = '1.5em'; - element.style.width = '400px'; - element.style.margin = '5em auto 0'; - - if ( contexts[ version ] ) { - - message = message.replace( '$0', 'graphics card' ); - - } else { - - message = message.replace( '$0', 'browser' ); - - } - - message = message.replace( '$1', names[ version ] ); - - element.innerHTML = message; - - return element; - - } - -} - -export default WebGL; diff --git a/three/addons/capabilities/WebGPU.js b/three/addons/capabilities/WebGPU.js deleted file mode 100644 index 3587718..0000000 --- a/three/addons/capabilities/WebGPU.js +++ /dev/null @@ -1,53 +0,0 @@ -if ( window.GPUShaderStage === undefined ) { - - window.GPUShaderStage = { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 }; - -} - -let isAvailable = false; - -if ( navigator.gpu !== undefined ) { - - const adapter = await navigator.gpu.requestAdapter(); - - if ( adapter !== null ) { - - isAvailable = true; - - } - -} - -class WebGPU { - - static isAvailable() { - - return isAvailable; - - } - - static getErrorMessage() { - - const message = 'Your browser does not support WebGPU yet'; - - const element = document.createElement( 'div' ); - element.id = 'webgpumessage'; - element.style.fontFamily = 'monospace'; - element.style.fontSize = '13px'; - element.style.fontWeight = 'normal'; - element.style.textAlign = 'center'; - element.style.background = '#fff'; - element.style.color = '#000'; - element.style.padding = '1.5em'; - element.style.maxWidth = '400px'; - element.style.margin = '5em auto 0'; - - element.innerHTML = message; - - return element; - - } - -} - -export default WebGPU; diff --git a/three/addons/controls/ArcballControls.js b/three/addons/controls/ArcballControls.js deleted file mode 100644 index b6b3696..0000000 --- a/three/addons/controls/ArcballControls.js +++ /dev/null @@ -1,3224 +0,0 @@ -import { - GridHelper, - EllipseCurve, - BufferGeometry, - Line, - LineBasicMaterial, - Raycaster, - Group, - Box3, - Sphere, - Quaternion, - Vector2, - Vector3, - Matrix4, - MathUtils, - EventDispatcher -} from 'three'; - -//trackball state -const STATE = { - - IDLE: Symbol(), - ROTATE: Symbol(), - PAN: Symbol(), - SCALE: Symbol(), - FOV: Symbol(), - FOCUS: Symbol(), - ZROTATE: Symbol(), - TOUCH_MULTI: Symbol(), - ANIMATION_FOCUS: Symbol(), - ANIMATION_ROTATE: Symbol() - -}; - -const INPUT = { - - NONE: Symbol(), - ONE_FINGER: Symbol(), - ONE_FINGER_SWITCHED: Symbol(), - TWO_FINGER: Symbol(), - MULT_FINGER: Symbol(), - CURSOR: Symbol() - -}; - -//cursor center coordinates -const _center = { - - x: 0, - y: 0 - -}; - -//transformation matrices for gizmos and camera -const _transformation = { - - camera: new Matrix4(), - gizmos: new Matrix4() - -}; - -//events -const _changeEvent = { type: 'change' }; -const _startEvent = { type: 'start' }; -const _endEvent = { type: 'end' }; - -const _raycaster = new Raycaster(); -const _offset = new Vector3(); - -const _gizmoMatrixStateTemp = new Matrix4(); -const _cameraMatrixStateTemp = new Matrix4(); -const _scalePointTemp = new Vector3(); -/** - * - * @param {Camera} camera Virtual camera used in the scene - * @param {HTMLElement} domElement Renderer's dom element - * @param {Scene} scene The scene to be rendered - */ -class ArcballControls extends EventDispatcher { - - constructor( camera, domElement, scene = null ) { - - super(); - this.camera = null; - this.domElement = domElement; - this.scene = scene; - this.target = new Vector3(); - this._currentTarget = new Vector3(); - this.radiusFactor = 0.67; - - this.mouseActions = []; - this._mouseOp = null; - - - //global vectors and matrices that are used in some operations to avoid creating new objects every time (e.g. every time cursor moves) - this._v2_1 = new Vector2(); - this._v3_1 = new Vector3(); - this._v3_2 = new Vector3(); - - this._m4_1 = new Matrix4(); - this._m4_2 = new Matrix4(); - - this._quat = new Quaternion(); - - //transformation matrices - this._translationMatrix = new Matrix4(); //matrix for translation operation - this._rotationMatrix = new Matrix4(); //matrix for rotation operation - this._scaleMatrix = new Matrix4(); //matrix for scaling operation - - this._rotationAxis = new Vector3(); //axis for rotate operation - - - //camera state - this._cameraMatrixState = new Matrix4(); - this._cameraProjectionState = new Matrix4(); - - this._fovState = 1; - this._upState = new Vector3(); - this._zoomState = 1; - this._nearPos = 0; - this._farPos = 0; - - this._gizmoMatrixState = new Matrix4(); - - //initial values - this._up0 = new Vector3(); - this._zoom0 = 1; - this._fov0 = 0; - this._initialNear = 0; - this._nearPos0 = 0; - this._initialFar = 0; - this._farPos0 = 0; - this._cameraMatrixState0 = new Matrix4(); - this._gizmoMatrixState0 = new Matrix4(); - - //pointers array - this._button = - 1; - this._touchStart = []; - this._touchCurrent = []; - this._input = INPUT.NONE; - - //two fingers touch interaction - this._switchSensibility = 32; //minimum movement to be performed to fire single pan start after the second finger has been released - this._startFingerDistance = 0; //distance between two fingers - this._currentFingerDistance = 0; - this._startFingerRotation = 0; //amount of rotation performed with two fingers - this._currentFingerRotation = 0; - - //double tap - this._devPxRatio = 0; - this._downValid = true; - this._nclicks = 0; - this._downEvents = []; - this._downStart = 0; //pointerDown time - this._clickStart = 0; //first click time - this._maxDownTime = 250; - this._maxInterval = 300; - this._posThreshold = 24; - this._movementThreshold = 24; - - //cursor positions - this._currentCursorPosition = new Vector3(); - this._startCursorPosition = new Vector3(); - - //grid - this._grid = null; //grid to be visualized during pan operation - this._gridPosition = new Vector3(); - - //gizmos - this._gizmos = new Group(); - this._curvePts = 128; - - - //animations - this._timeStart = - 1; //initial time - this._animationId = - 1; - - //focus animation - this.focusAnimationTime = 500; //duration of focus animation in ms - - //rotate animation - this._timePrev = 0; //time at which previous rotate operation has been detected - this._timeCurrent = 0; //time at which current rotate operation has been detected - this._anglePrev = 0; //angle of previous rotation - this._angleCurrent = 0; //angle of current rotation - this._cursorPosPrev = new Vector3(); //cursor position when previous rotate operation has been detected - this._cursorPosCurr = new Vector3();//cursor position when current rotate operation has been detected - this._wPrev = 0; //angular velocity of the previous rotate operation - this._wCurr = 0; //angular velocity of the current rotate operation - - - //parameters - this.adjustNearFar = false; - this.scaleFactor = 1.1; //zoom/distance multiplier - this.dampingFactor = 25; - this.wMax = 20; //maximum angular velocity allowed - this.enableAnimations = true; //if animations should be performed - this.enableGrid = false; //if grid should be showed during pan operation - this.cursorZoom = false; //if wheel zoom should be cursor centered - this.minFov = 5; - this.maxFov = 90; - this.rotateSpeed = 1; - - this.enabled = true; - this.enablePan = true; - this.enableRotate = true; - this.enableZoom = true; - this.enableGizmos = true; - - this.minDistance = 0; - this.maxDistance = Infinity; - this.minZoom = 0; - this.maxZoom = Infinity; - - //trackball parameters - this._tbRadius = 1; - - //FSA - this._state = STATE.IDLE; - - this.setCamera( camera ); - - if ( this.scene != null ) { - - this.scene.add( this._gizmos ); - - } - - this.domElement.style.touchAction = 'none'; - this._devPxRatio = window.devicePixelRatio; - - this.initializeMouseActions(); - - this._onContextMenu = onContextMenu.bind( this ); - this._onWheel = onWheel.bind( this ); - this._onPointerUp = onPointerUp.bind( this ); - this._onPointerMove = onPointerMove.bind( this ); - this._onPointerDown = onPointerDown.bind( this ); - this._onPointerCancel = onPointerCancel.bind( this ); - this._onWindowResize = onWindowResize.bind( this ); - - this.domElement.addEventListener( 'contextmenu', this._onContextMenu ); - this.domElement.addEventListener( 'wheel', this._onWheel ); - this.domElement.addEventListener( 'pointerdown', this._onPointerDown ); - this.domElement.addEventListener( 'pointercancel', this._onPointerCancel ); - - window.addEventListener( 'resize', this._onWindowResize ); - - } - - onSinglePanStart( event, operation ) { - - if ( this.enabled ) { - - this.dispatchEvent( _startEvent ); - - this.setCenter( event.clientX, event.clientY ); - - switch ( operation ) { - - case 'PAN': - - if ( ! this.enablePan ) { - - return; - - } - - if ( this._animationId != - 1 ) { - - cancelAnimationFrame( this._animationId ); - this._animationId = - 1; - this._timeStart = - 1; - - this.activateGizmos( false ); - this.dispatchEvent( _changeEvent ); - - } - - this.updateTbState( STATE.PAN, true ); - this._startCursorPosition.copy( this.unprojectOnTbPlane( this.camera, _center.x, _center.y, this.domElement ) ); - if ( this.enableGrid ) { - - this.drawGrid(); - this.dispatchEvent( _changeEvent ); - - } - - break; - - case 'ROTATE': - - if ( ! this.enableRotate ) { - - return; - - } - - if ( this._animationId != - 1 ) { - - cancelAnimationFrame( this._animationId ); - this._animationId = - 1; - this._timeStart = - 1; - - } - - this.updateTbState( STATE.ROTATE, true ); - this._startCursorPosition.copy( this.unprojectOnTbSurface( this.camera, _center.x, _center.y, this.domElement, this._tbRadius ) ); - this.activateGizmos( true ); - if ( this.enableAnimations ) { - - this._timePrev = this._timeCurrent = performance.now(); - this._angleCurrent = this._anglePrev = 0; - this._cursorPosPrev.copy( this._startCursorPosition ); - this._cursorPosCurr.copy( this._cursorPosPrev ); - this._wCurr = 0; - this._wPrev = this._wCurr; - - } - - this.dispatchEvent( _changeEvent ); - break; - - case 'FOV': - - if ( ! this.camera.isPerspectiveCamera || ! this.enableZoom ) { - - return; - - } - - if ( this._animationId != - 1 ) { - - cancelAnimationFrame( this._animationId ); - this._animationId = - 1; - this._timeStart = - 1; - - this.activateGizmos( false ); - this.dispatchEvent( _changeEvent ); - - } - - this.updateTbState( STATE.FOV, true ); - this._startCursorPosition.setY( this.getCursorNDC( _center.x, _center.y, this.domElement ).y * 0.5 ); - this._currentCursorPosition.copy( this._startCursorPosition ); - break; - - case 'ZOOM': - - if ( ! this.enableZoom ) { - - return; - - } - - if ( this._animationId != - 1 ) { - - cancelAnimationFrame( this._animationId ); - this._animationId = - 1; - this._timeStart = - 1; - - this.activateGizmos( false ); - this.dispatchEvent( _changeEvent ); - - } - - this.updateTbState( STATE.SCALE, true ); - this._startCursorPosition.setY( this.getCursorNDC( _center.x, _center.y, this.domElement ).y * 0.5 ); - this._currentCursorPosition.copy( this._startCursorPosition ); - break; - - } - - } - - } - - onSinglePanMove( event, opState ) { - - if ( this.enabled ) { - - const restart = opState != this._state; - this.setCenter( event.clientX, event.clientY ); - - switch ( opState ) { - - case STATE.PAN: - - if ( this.enablePan ) { - - if ( restart ) { - - //switch to pan operation - - this.dispatchEvent( _endEvent ); - this.dispatchEvent( _startEvent ); - - this.updateTbState( opState, true ); - this._startCursorPosition.copy( this.unprojectOnTbPlane( this.camera, _center.x, _center.y, this.domElement ) ); - if ( this.enableGrid ) { - - this.drawGrid(); - - } - - this.activateGizmos( false ); - - } else { - - //continue with pan operation - this._currentCursorPosition.copy( this.unprojectOnTbPlane( this.camera, _center.x, _center.y, this.domElement ) ); - this.applyTransformMatrix( this.pan( this._startCursorPosition, this._currentCursorPosition ) ); - - } - - } - - break; - - case STATE.ROTATE: - - if ( this.enableRotate ) { - - if ( restart ) { - - //switch to rotate operation - - this.dispatchEvent( _endEvent ); - this.dispatchEvent( _startEvent ); - - this.updateTbState( opState, true ); - this._startCursorPosition.copy( this.unprojectOnTbSurface( this.camera, _center.x, _center.y, this.domElement, this._tbRadius ) ); - - if ( this.enableGrid ) { - - this.disposeGrid(); - - } - - this.activateGizmos( true ); - - } else { - - //continue with rotate operation - this._currentCursorPosition.copy( this.unprojectOnTbSurface( this.camera, _center.x, _center.y, this.domElement, this._tbRadius ) ); - - const distance = this._startCursorPosition.distanceTo( this._currentCursorPosition ); - const angle = this._startCursorPosition.angleTo( this._currentCursorPosition ); - const amount = Math.max( distance / this._tbRadius, angle ) * this.rotateSpeed; //effective rotation angle - - this.applyTransformMatrix( this.rotate( this.calculateRotationAxis( this._startCursorPosition, this._currentCursorPosition ), amount ) ); - - if ( this.enableAnimations ) { - - this._timePrev = this._timeCurrent; - this._timeCurrent = performance.now(); - this._anglePrev = this._angleCurrent; - this._angleCurrent = amount; - this._cursorPosPrev.copy( this._cursorPosCurr ); - this._cursorPosCurr.copy( this._currentCursorPosition ); - this._wPrev = this._wCurr; - this._wCurr = this.calculateAngularSpeed( this._anglePrev, this._angleCurrent, this._timePrev, this._timeCurrent ); - - } - - } - - } - - break; - - case STATE.SCALE: - - if ( this.enableZoom ) { - - if ( restart ) { - - //switch to zoom operation - - this.dispatchEvent( _endEvent ); - this.dispatchEvent( _startEvent ); - - this.updateTbState( opState, true ); - this._startCursorPosition.setY( this.getCursorNDC( _center.x, _center.y, this.domElement ).y * 0.5 ); - this._currentCursorPosition.copy( this._startCursorPosition ); - - if ( this.enableGrid ) { - - this.disposeGrid(); - - } - - this.activateGizmos( false ); - - } else { - - //continue with zoom operation - const screenNotches = 8; //how many wheel notches corresponds to a full screen pan - this._currentCursorPosition.setY( this.getCursorNDC( _center.x, _center.y, this.domElement ).y * 0.5 ); - - const movement = this._currentCursorPosition.y - this._startCursorPosition.y; - - let size = 1; - - if ( movement < 0 ) { - - size = 1 / ( Math.pow( this.scaleFactor, - movement * screenNotches ) ); - - } else if ( movement > 0 ) { - - size = Math.pow( this.scaleFactor, movement * screenNotches ); - - } - - this._v3_1.setFromMatrixPosition( this._gizmoMatrixState ); - - this.applyTransformMatrix( this.scale( size, this._v3_1 ) ); - - } - - } - - break; - - case STATE.FOV: - - if ( this.enableZoom && this.camera.isPerspectiveCamera ) { - - if ( restart ) { - - //switch to fov operation - - this.dispatchEvent( _endEvent ); - this.dispatchEvent( _startEvent ); - - this.updateTbState( opState, true ); - this._startCursorPosition.setY( this.getCursorNDC( _center.x, _center.y, this.domElement ).y * 0.5 ); - this._currentCursorPosition.copy( this._startCursorPosition ); - - if ( this.enableGrid ) { - - this.disposeGrid(); - - } - - this.activateGizmos( false ); - - } else { - - //continue with fov operation - const screenNotches = 8; //how many wheel notches corresponds to a full screen pan - this._currentCursorPosition.setY( this.getCursorNDC( _center.x, _center.y, this.domElement ).y * 0.5 ); - - const movement = this._currentCursorPosition.y - this._startCursorPosition.y; - - let size = 1; - - if ( movement < 0 ) { - - size = 1 / ( Math.pow( this.scaleFactor, - movement * screenNotches ) ); - - } else if ( movement > 0 ) { - - size = Math.pow( this.scaleFactor, movement * screenNotches ); - - } - - this._v3_1.setFromMatrixPosition( this._cameraMatrixState ); - const x = this._v3_1.distanceTo( this._gizmos.position ); - let xNew = x / size; //distance between camera and gizmos if scale(size, scalepoint) would be performed - - //check min and max distance - xNew = MathUtils.clamp( xNew, this.minDistance, this.maxDistance ); - - const y = x * Math.tan( MathUtils.DEG2RAD * this._fovState * 0.5 ); - - //calculate new fov - let newFov = MathUtils.RAD2DEG * ( Math.atan( y / xNew ) * 2 ); - - //check min and max fov - newFov = MathUtils.clamp( newFov, this.minFov, this.maxFov ); - - const newDistance = y / Math.tan( MathUtils.DEG2RAD * ( newFov / 2 ) ); - size = x / newDistance; - this._v3_2.setFromMatrixPosition( this._gizmoMatrixState ); - - this.setFov( newFov ); - this.applyTransformMatrix( this.scale( size, this._v3_2, false ) ); - - //adjusting distance - _offset.copy( this._gizmos.position ).sub( this.camera.position ).normalize().multiplyScalar( newDistance / x ); - this._m4_1.makeTranslation( _offset.x, _offset.y, _offset.z ); - - } - - } - - break; - - } - - this.dispatchEvent( _changeEvent ); - - } - - } - - onSinglePanEnd() { - - if ( this._state == STATE.ROTATE ) { - - - if ( ! this.enableRotate ) { - - return; - - } - - if ( this.enableAnimations ) { - - //perform rotation animation - const deltaTime = ( performance.now() - this._timeCurrent ); - if ( deltaTime < 120 ) { - - const w = Math.abs( ( this._wPrev + this._wCurr ) / 2 ); - - const self = this; - this._animationId = window.requestAnimationFrame( function ( t ) { - - self.updateTbState( STATE.ANIMATION_ROTATE, true ); - const rotationAxis = self.calculateRotationAxis( self._cursorPosPrev, self._cursorPosCurr ); - - self.onRotationAnim( t, rotationAxis, Math.min( w, self.wMax ) ); - - } ); - - } else { - - //cursor has been standing still for over 120 ms since last movement - this.updateTbState( STATE.IDLE, false ); - this.activateGizmos( false ); - this.dispatchEvent( _changeEvent ); - - } - - } else { - - this.updateTbState( STATE.IDLE, false ); - this.activateGizmos( false ); - this.dispatchEvent( _changeEvent ); - - } - - } else if ( this._state == STATE.PAN || this._state == STATE.IDLE ) { - - this.updateTbState( STATE.IDLE, false ); - - if ( this.enableGrid ) { - - this.disposeGrid(); - - } - - this.activateGizmos( false ); - this.dispatchEvent( _changeEvent ); - - - } - - this.dispatchEvent( _endEvent ); - - } - - onDoubleTap( event ) { - - if ( this.enabled && this.enablePan && this.scene != null ) { - - this.dispatchEvent( _startEvent ); - - this.setCenter( event.clientX, event.clientY ); - const hitP = this.unprojectOnObj( this.getCursorNDC( _center.x, _center.y, this.domElement ), this.camera ); - - if ( hitP != null && this.enableAnimations ) { - - const self = this; - if ( this._animationId != - 1 ) { - - window.cancelAnimationFrame( this._animationId ); - - } - - this._timeStart = - 1; - this._animationId = window.requestAnimationFrame( function ( t ) { - - self.updateTbState( STATE.ANIMATION_FOCUS, true ); - self.onFocusAnim( t, hitP, self._cameraMatrixState, self._gizmoMatrixState ); - - } ); - - } else if ( hitP != null && ! this.enableAnimations ) { - - this.updateTbState( STATE.FOCUS, true ); - this.focus( hitP, this.scaleFactor ); - this.updateTbState( STATE.IDLE, false ); - this.dispatchEvent( _changeEvent ); - - } - - } - - this.dispatchEvent( _endEvent ); - - } - - onDoublePanStart() { - - if ( this.enabled && this.enablePan ) { - - this.dispatchEvent( _startEvent ); - - this.updateTbState( STATE.PAN, true ); - - this.setCenter( ( this._touchCurrent[ 0 ].clientX + this._touchCurrent[ 1 ].clientX ) / 2, ( this._touchCurrent[ 0 ].clientY + this._touchCurrent[ 1 ].clientY ) / 2 ); - this._startCursorPosition.copy( this.unprojectOnTbPlane( this.camera, _center.x, _center.y, this.domElement, true ) ); - this._currentCursorPosition.copy( this._startCursorPosition ); - - this.activateGizmos( false ); - - } - - } - - onDoublePanMove() { - - if ( this.enabled && this.enablePan ) { - - this.setCenter( ( this._touchCurrent[ 0 ].clientX + this._touchCurrent[ 1 ].clientX ) / 2, ( this._touchCurrent[ 0 ].clientY + this._touchCurrent[ 1 ].clientY ) / 2 ); - - if ( this._state != STATE.PAN ) { - - this.updateTbState( STATE.PAN, true ); - this._startCursorPosition.copy( this._currentCursorPosition ); - - } - - this._currentCursorPosition.copy( this.unprojectOnTbPlane( this.camera, _center.x, _center.y, this.domElement, true ) ); - this.applyTransformMatrix( this.pan( this._startCursorPosition, this._currentCursorPosition, true ) ); - this.dispatchEvent( _changeEvent ); - - } - - } - - onDoublePanEnd() { - - this.updateTbState( STATE.IDLE, false ); - this.dispatchEvent( _endEvent ); - - } - - onRotateStart() { - - if ( this.enabled && this.enableRotate ) { - - this.dispatchEvent( _startEvent ); - - this.updateTbState( STATE.ZROTATE, true ); - - //this._startFingerRotation = event.rotation; - - this._startFingerRotation = this.getAngle( this._touchCurrent[ 1 ], this._touchCurrent[ 0 ] ) + this.getAngle( this._touchStart[ 1 ], this._touchStart[ 0 ] ); - this._currentFingerRotation = this._startFingerRotation; - - this.camera.getWorldDirection( this._rotationAxis ); //rotation axis - - if ( ! this.enablePan && ! this.enableZoom ) { - - this.activateGizmos( true ); - - } - - } - - } - - onRotateMove() { - - if ( this.enabled && this.enableRotate ) { - - this.setCenter( ( this._touchCurrent[ 0 ].clientX + this._touchCurrent[ 1 ].clientX ) / 2, ( this._touchCurrent[ 0 ].clientY + this._touchCurrent[ 1 ].clientY ) / 2 ); - let rotationPoint; - - if ( this._state != STATE.ZROTATE ) { - - this.updateTbState( STATE.ZROTATE, true ); - this._startFingerRotation = this._currentFingerRotation; - - } - - //this._currentFingerRotation = event.rotation; - this._currentFingerRotation = this.getAngle( this._touchCurrent[ 1 ], this._touchCurrent[ 0 ] ) + this.getAngle( this._touchStart[ 1 ], this._touchStart[ 0 ] ); - - if ( ! this.enablePan ) { - - rotationPoint = new Vector3().setFromMatrixPosition( this._gizmoMatrixState ); - - } else { - - this._v3_2.setFromMatrixPosition( this._gizmoMatrixState ); - rotationPoint = this.unprojectOnTbPlane( this.camera, _center.x, _center.y, this.domElement ).applyQuaternion( this.camera.quaternion ).multiplyScalar( 1 / this.camera.zoom ).add( this._v3_2 ); - - } - - const amount = MathUtils.DEG2RAD * ( this._startFingerRotation - this._currentFingerRotation ); - - this.applyTransformMatrix( this.zRotate( rotationPoint, amount ) ); - this.dispatchEvent( _changeEvent ); - - } - - } - - onRotateEnd() { - - this.updateTbState( STATE.IDLE, false ); - this.activateGizmos( false ); - this.dispatchEvent( _endEvent ); - - } - - onPinchStart() { - - if ( this.enabled && this.enableZoom ) { - - this.dispatchEvent( _startEvent ); - this.updateTbState( STATE.SCALE, true ); - - this._startFingerDistance = this.calculatePointersDistance( this._touchCurrent[ 0 ], this._touchCurrent[ 1 ] ); - this._currentFingerDistance = this._startFingerDistance; - - this.activateGizmos( false ); - - } - - } - - onPinchMove() { - - if ( this.enabled && this.enableZoom ) { - - this.setCenter( ( this._touchCurrent[ 0 ].clientX + this._touchCurrent[ 1 ].clientX ) / 2, ( this._touchCurrent[ 0 ].clientY + this._touchCurrent[ 1 ].clientY ) / 2 ); - const minDistance = 12; //minimum distance between fingers (in css pixels) - - if ( this._state != STATE.SCALE ) { - - this._startFingerDistance = this._currentFingerDistance; - this.updateTbState( STATE.SCALE, true ); - - } - - this._currentFingerDistance = Math.max( this.calculatePointersDistance( this._touchCurrent[ 0 ], this._touchCurrent[ 1 ] ), minDistance * this._devPxRatio ); - const amount = this._currentFingerDistance / this._startFingerDistance; - - let scalePoint; - - if ( ! this.enablePan ) { - - scalePoint = this._gizmos.position; - - } else { - - if ( this.camera.isOrthographicCamera ) { - - scalePoint = this.unprojectOnTbPlane( this.camera, _center.x, _center.y, this.domElement ) - .applyQuaternion( this.camera.quaternion ) - .multiplyScalar( 1 / this.camera.zoom ) - .add( this._gizmos.position ); - - } else if ( this.camera.isPerspectiveCamera ) { - - scalePoint = this.unprojectOnTbPlane( this.camera, _center.x, _center.y, this.domElement ) - .applyQuaternion( this.camera.quaternion ) - .add( this._gizmos.position ); - - } - - } - - this.applyTransformMatrix( this.scale( amount, scalePoint ) ); - this.dispatchEvent( _changeEvent ); - - } - - } - - onPinchEnd() { - - this.updateTbState( STATE.IDLE, false ); - this.dispatchEvent( _endEvent ); - - } - - onTriplePanStart() { - - if ( this.enabled && this.enableZoom ) { - - this.dispatchEvent( _startEvent ); - - this.updateTbState( STATE.SCALE, true ); - - //const center = event.center; - let clientX = 0; - let clientY = 0; - const nFingers = this._touchCurrent.length; - - for ( let i = 0; i < nFingers; i ++ ) { - - clientX += this._touchCurrent[ i ].clientX; - clientY += this._touchCurrent[ i ].clientY; - - } - - this.setCenter( clientX / nFingers, clientY / nFingers ); - - this._startCursorPosition.setY( this.getCursorNDC( _center.x, _center.y, this.domElement ).y * 0.5 ); - this._currentCursorPosition.copy( this._startCursorPosition ); - - } - - } - - onTriplePanMove() { - - if ( this.enabled && this.enableZoom ) { - - // fov / 2 - // |\ - // | \ - // | \ - // x | \ - // | \ - // | \ - // | _ _ _\ - // y - - //const center = event.center; - let clientX = 0; - let clientY = 0; - const nFingers = this._touchCurrent.length; - - for ( let i = 0; i < nFingers; i ++ ) { - - clientX += this._touchCurrent[ i ].clientX; - clientY += this._touchCurrent[ i ].clientY; - - } - - this.setCenter( clientX / nFingers, clientY / nFingers ); - - const screenNotches = 8; //how many wheel notches corresponds to a full screen pan - this._currentCursorPosition.setY( this.getCursorNDC( _center.x, _center.y, this.domElement ).y * 0.5 ); - - const movement = this._currentCursorPosition.y - this._startCursorPosition.y; - - let size = 1; - - if ( movement < 0 ) { - - size = 1 / ( Math.pow( this.scaleFactor, - movement * screenNotches ) ); - - } else if ( movement > 0 ) { - - size = Math.pow( this.scaleFactor, movement * screenNotches ); - - } - - this._v3_1.setFromMatrixPosition( this._cameraMatrixState ); - const x = this._v3_1.distanceTo( this._gizmos.position ); - let xNew = x / size; //distance between camera and gizmos if scale(size, scalepoint) would be performed - - //check min and max distance - xNew = MathUtils.clamp( xNew, this.minDistance, this.maxDistance ); - - const y = x * Math.tan( MathUtils.DEG2RAD * this._fovState * 0.5 ); - - //calculate new fov - let newFov = MathUtils.RAD2DEG * ( Math.atan( y / xNew ) * 2 ); - - //check min and max fov - newFov = MathUtils.clamp( newFov, this.minFov, this.maxFov ); - - const newDistance = y / Math.tan( MathUtils.DEG2RAD * ( newFov / 2 ) ); - size = x / newDistance; - this._v3_2.setFromMatrixPosition( this._gizmoMatrixState ); - - this.setFov( newFov ); - this.applyTransformMatrix( this.scale( size, this._v3_2, false ) ); - - //adjusting distance - _offset.copy( this._gizmos.position ).sub( this.camera.position ).normalize().multiplyScalar( newDistance / x ); - this._m4_1.makeTranslation( _offset.x, _offset.y, _offset.z ); - - this.dispatchEvent( _changeEvent ); - - } - - } - - onTriplePanEnd() { - - this.updateTbState( STATE.IDLE, false ); - this.dispatchEvent( _endEvent ); - //this.dispatchEvent( _changeEvent ); - - } - - /** - * Set _center's x/y coordinates - * @param {Number} clientX - * @param {Number} clientY - */ - setCenter( clientX, clientY ) { - - _center.x = clientX; - _center.y = clientY; - - } - - /** - * Set default mouse actions - */ - initializeMouseActions() { - - this.setMouseAction( 'PAN', 0, 'CTRL' ); - this.setMouseAction( 'PAN', 2 ); - - this.setMouseAction( 'ROTATE', 0 ); - - this.setMouseAction( 'ZOOM', 'WHEEL' ); - this.setMouseAction( 'ZOOM', 1 ); - - this.setMouseAction( 'FOV', 'WHEEL', 'SHIFT' ); - this.setMouseAction( 'FOV', 1, 'SHIFT' ); - - - } - - /** - * Compare two mouse actions - * @param {Object} action1 - * @param {Object} action2 - * @returns {Boolean} True if action1 and action 2 are the same mouse action, false otherwise - */ - compareMouseAction( action1, action2 ) { - - if ( action1.operation == action2.operation ) { - - if ( action1.mouse == action2.mouse && action1.key == action2.key ) { - - return true; - - } else { - - return false; - - } - - } else { - - return false; - - } - - } - - /** - * Set a new mouse action by specifying the operation to be performed and a mouse/key combination. In case of conflict, replaces the existing one - * @param {String} operation The operation to be performed ('PAN', 'ROTATE', 'ZOOM', 'FOV) - * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches - * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed - * @returns {Boolean} True if the mouse action has been successfully added, false otherwise - */ - setMouseAction( operation, mouse, key = null ) { - - const operationInput = [ 'PAN', 'ROTATE', 'ZOOM', 'FOV' ]; - const mouseInput = [ 0, 1, 2, 'WHEEL' ]; - const keyInput = [ 'CTRL', 'SHIFT', null ]; - let state; - - if ( ! operationInput.includes( operation ) || ! mouseInput.includes( mouse ) || ! keyInput.includes( key ) ) { - - //invalid parameters - return false; - - } - - if ( mouse == 'WHEEL' ) { - - if ( operation != 'ZOOM' && operation != 'FOV' ) { - - //cannot associate 2D operation to 1D input - return false; - - } - - } - - switch ( operation ) { - - case 'PAN': - - state = STATE.PAN; - break; - - case 'ROTATE': - - state = STATE.ROTATE; - break; - - case 'ZOOM': - - state = STATE.SCALE; - break; - - case 'FOV': - - state = STATE.FOV; - break; - - } - - const action = { - - operation: operation, - mouse: mouse, - key: key, - state: state - - }; - - for ( let i = 0; i < this.mouseActions.length; i ++ ) { - - if ( this.mouseActions[ i ].mouse == action.mouse && this.mouseActions[ i ].key == action.key ) { - - this.mouseActions.splice( i, 1, action ); - return true; - - } - - } - - this.mouseActions.push( action ); - return true; - - } - - /** - * Remove a mouse action by specifying its mouse/key combination - * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches - * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed - * @returns {Boolean} True if the operation has been succesfully removed, false otherwise - */ - unsetMouseAction( mouse, key = null ) { - - for ( let i = 0; i < this.mouseActions.length; i ++ ) { - - if ( this.mouseActions[ i ].mouse == mouse && this.mouseActions[ i ].key == key ) { - - this.mouseActions.splice( i, 1 ); - return true; - - } - - } - - return false; - - } - - /** - * Return the operation associated to a mouse/keyboard combination - * @param {*} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches - * @param {*} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed - * @returns The operation if it has been found, null otherwise - */ - getOpFromAction( mouse, key ) { - - let action; - - for ( let i = 0; i < this.mouseActions.length; i ++ ) { - - action = this.mouseActions[ i ]; - if ( action.mouse == mouse && action.key == key ) { - - return action.operation; - - } - - } - - if ( key != null ) { - - for ( let i = 0; i < this.mouseActions.length; i ++ ) { - - action = this.mouseActions[ i ]; - if ( action.mouse == mouse && action.key == null ) { - - return action.operation; - - } - - } - - } - - return null; - - } - - /** - * Get the operation associated to mouse and key combination and returns the corresponding FSA state - * @param {Number} mouse Mouse button - * @param {String} key Keyboard modifier - * @returns The FSA state obtained from the operation associated to mouse/keyboard combination - */ - getOpStateFromAction( mouse, key ) { - - let action; - - for ( let i = 0; i < this.mouseActions.length; i ++ ) { - - action = this.mouseActions[ i ]; - if ( action.mouse == mouse && action.key == key ) { - - return action.state; - - } - - } - - if ( key != null ) { - - for ( let i = 0; i < this.mouseActions.length; i ++ ) { - - action = this.mouseActions[ i ]; - if ( action.mouse == mouse && action.key == null ) { - - return action.state; - - } - - } - - } - - return null; - - } - - /** - * Calculate the angle between two pointers - * @param {PointerEvent} p1 - * @param {PointerEvent} p2 - * @returns {Number} The angle between two pointers in degrees - */ - getAngle( p1, p2 ) { - - return Math.atan2( p2.clientY - p1.clientY, p2.clientX - p1.clientX ) * 180 / Math.PI; - - } - - /** - * Update a PointerEvent inside current pointerevents array - * @param {PointerEvent} event - */ - updateTouchEvent( event ) { - - for ( let i = 0; i < this._touchCurrent.length; i ++ ) { - - if ( this._touchCurrent[ i ].pointerId == event.pointerId ) { - - this._touchCurrent.splice( i, 1, event ); - break; - - } - - } - - } - - /** - * Apply a transformation matrix, to the camera and gizmos - * @param {Object} transformation Object containing matrices to apply to camera and gizmos - */ - applyTransformMatrix( transformation ) { - - if ( transformation.camera != null ) { - - this._m4_1.copy( this._cameraMatrixState ).premultiply( transformation.camera ); - this._m4_1.decompose( this.camera.position, this.camera.quaternion, this.camera.scale ); - this.camera.updateMatrix(); - - //update camera up vector - if ( this._state == STATE.ROTATE || this._state == STATE.ZROTATE || this._state == STATE.ANIMATION_ROTATE ) { - - this.camera.up.copy( this._upState ).applyQuaternion( this.camera.quaternion ); - - } - - } - - if ( transformation.gizmos != null ) { - - this._m4_1.copy( this._gizmoMatrixState ).premultiply( transformation.gizmos ); - this._m4_1.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale ); - this._gizmos.updateMatrix(); - - } - - if ( this._state == STATE.SCALE || this._state == STATE.FOCUS || this._state == STATE.ANIMATION_FOCUS ) { - - this._tbRadius = this.calculateTbRadius( this.camera ); - - if ( this.adjustNearFar ) { - - const cameraDistance = this.camera.position.distanceTo( this._gizmos.position ); - - const bb = new Box3(); - bb.setFromObject( this._gizmos ); - const sphere = new Sphere(); - bb.getBoundingSphere( sphere ); - - const adjustedNearPosition = Math.max( this._nearPos0, sphere.radius + sphere.center.length() ); - const regularNearPosition = cameraDistance - this._initialNear; - - const minNearPos = Math.min( adjustedNearPosition, regularNearPosition ); - this.camera.near = cameraDistance - minNearPos; - - - const adjustedFarPosition = Math.min( this._farPos0, - sphere.radius + sphere.center.length() ); - const regularFarPosition = cameraDistance - this._initialFar; - - const minFarPos = Math.min( adjustedFarPosition, regularFarPosition ); - this.camera.far = cameraDistance - minFarPos; - - this.camera.updateProjectionMatrix(); - - } else { - - let update = false; - - if ( this.camera.near != this._initialNear ) { - - this.camera.near = this._initialNear; - update = true; - - } - - if ( this.camera.far != this._initialFar ) { - - this.camera.far = this._initialFar; - update = true; - - } - - if ( update ) { - - this.camera.updateProjectionMatrix(); - - } - - } - - } - - } - - /** - * Calculate the angular speed - * @param {Number} p0 Position at t0 - * @param {Number} p1 Position at t1 - * @param {Number} t0 Initial time in milliseconds - * @param {Number} t1 Ending time in milliseconds - */ - calculateAngularSpeed( p0, p1, t0, t1 ) { - - const s = p1 - p0; - const t = ( t1 - t0 ) / 1000; - if ( t == 0 ) { - - return 0; - - } - - return s / t; - - } - - /** - * Calculate the distance between two pointers - * @param {PointerEvent} p0 The first pointer - * @param {PointerEvent} p1 The second pointer - * @returns {number} The distance between the two pointers - */ - calculatePointersDistance( p0, p1 ) { - - return Math.sqrt( Math.pow( p1.clientX - p0.clientX, 2 ) + Math.pow( p1.clientY - p0.clientY, 2 ) ); - - } - - /** - * Calculate the rotation axis as the vector perpendicular between two vectors - * @param {Vector3} vec1 The first vector - * @param {Vector3} vec2 The second vector - * @returns {Vector3} The normalized rotation axis - */ - calculateRotationAxis( vec1, vec2 ) { - - this._rotationMatrix.extractRotation( this._cameraMatrixState ); - this._quat.setFromRotationMatrix( this._rotationMatrix ); - - this._rotationAxis.crossVectors( vec1, vec2 ).applyQuaternion( this._quat ); - return this._rotationAxis.normalize().clone(); - - } - - /** - * Calculate the trackball radius so that gizmo's diamater will be 2/3 of the minimum side of the camera frustum - * @param {Camera} camera - * @returns {Number} The trackball radius - */ - calculateTbRadius( camera ) { - - const distance = camera.position.distanceTo( this._gizmos.position ); - - if ( camera.type == 'PerspectiveCamera' ) { - - const halfFovV = MathUtils.DEG2RAD * camera.fov * 0.5; //vertical fov/2 in radians - const halfFovH = Math.atan( ( camera.aspect ) * Math.tan( halfFovV ) ); //horizontal fov/2 in radians - return Math.tan( Math.min( halfFovV, halfFovH ) ) * distance * this.radiusFactor; - - } else if ( camera.type == 'OrthographicCamera' ) { - - return Math.min( camera.top, camera.right ) * this.radiusFactor; - - } - - } - - /** - * Focus operation consist of positioning the point of interest in front of the camera and a slightly zoom in - * @param {Vector3} point The point of interest - * @param {Number} size Scale factor - * @param {Number} amount Amount of operation to be completed (used for focus animations, default is complete full operation) - */ - focus( point, size, amount = 1 ) { - - //move center of camera (along with gizmos) towards point of interest - _offset.copy( point ).sub( this._gizmos.position ).multiplyScalar( amount ); - this._translationMatrix.makeTranslation( _offset.x, _offset.y, _offset.z ); - - _gizmoMatrixStateTemp.copy( this._gizmoMatrixState ); - this._gizmoMatrixState.premultiply( this._translationMatrix ); - this._gizmoMatrixState.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale ); - - _cameraMatrixStateTemp.copy( this._cameraMatrixState ); - this._cameraMatrixState.premultiply( this._translationMatrix ); - this._cameraMatrixState.decompose( this.camera.position, this.camera.quaternion, this.camera.scale ); - - //apply zoom - if ( this.enableZoom ) { - - this.applyTransformMatrix( this.scale( size, this._gizmos.position ) ); - - } - - this._gizmoMatrixState.copy( _gizmoMatrixStateTemp ); - this._cameraMatrixState.copy( _cameraMatrixStateTemp ); - - } - - /** - * Draw a grid and add it to the scene - */ - drawGrid() { - - if ( this.scene != null ) { - - const color = 0x888888; - const multiplier = 3; - let size, divisions, maxLength, tick; - - if ( this.camera.isOrthographicCamera ) { - - const width = this.camera.right - this.camera.left; - const height = this.camera.bottom - this.camera.top; - - maxLength = Math.max( width, height ); - tick = maxLength / 20; - - size = maxLength / this.camera.zoom * multiplier; - divisions = size / tick * this.camera.zoom; - - } else if ( this.camera.isPerspectiveCamera ) { - - const distance = this.camera.position.distanceTo( this._gizmos.position ); - const halfFovV = MathUtils.DEG2RAD * this.camera.fov * 0.5; - const halfFovH = Math.atan( ( this.camera.aspect ) * Math.tan( halfFovV ) ); - - maxLength = Math.tan( Math.max( halfFovV, halfFovH ) ) * distance * 2; - tick = maxLength / 20; - - size = maxLength * multiplier; - divisions = size / tick; - - } - - if ( this._grid == null ) { - - this._grid = new GridHelper( size, divisions, color, color ); - this._grid.position.copy( this._gizmos.position ); - this._gridPosition.copy( this._grid.position ); - this._grid.quaternion.copy( this.camera.quaternion ); - this._grid.rotateX( Math.PI * 0.5 ); - - this.scene.add( this._grid ); - - } - - } - - } - - /** - * Remove all listeners, stop animations and clean scene - */ - dispose() { - - if ( this._animationId != - 1 ) { - - window.cancelAnimationFrame( this._animationId ); - - } - - this.domElement.removeEventListener( 'pointerdown', this._onPointerDown ); - this.domElement.removeEventListener( 'pointercancel', this._onPointerCancel ); - this.domElement.removeEventListener( 'wheel', this._onWheel ); - this.domElement.removeEventListener( 'contextmenu', this._onContextMenu ); - - window.removeEventListener( 'pointermove', this._onPointerMove ); - window.removeEventListener( 'pointerup', this._onPointerUp ); - - window.removeEventListener( 'resize', this._onWindowResize ); - - if ( this.scene !== null ) this.scene.remove( this._gizmos ); - this.disposeGrid(); - - } - - /** - * remove the grid from the scene - */ - disposeGrid() { - - if ( this._grid != null && this.scene != null ) { - - this.scene.remove( this._grid ); - this._grid = null; - - } - - } - - /** - * Compute the easing out cubic function for ease out effect in animation - * @param {Number} t The absolute progress of the animation in the bound of 0 (beginning of the) and 1 (ending of animation) - * @returns {Number} Result of easing out cubic at time t - */ - easeOutCubic( t ) { - - return 1 - Math.pow( 1 - t, 3 ); - - } - - /** - * Make rotation gizmos more or less visible - * @param {Boolean} isActive If true, make gizmos more visible - */ - activateGizmos( isActive ) { - - const gizmoX = this._gizmos.children[ 0 ]; - const gizmoY = this._gizmos.children[ 1 ]; - const gizmoZ = this._gizmos.children[ 2 ]; - - if ( isActive ) { - - gizmoX.material.setValues( { opacity: 1 } ); - gizmoY.material.setValues( { opacity: 1 } ); - gizmoZ.material.setValues( { opacity: 1 } ); - - } else { - - gizmoX.material.setValues( { opacity: 0.6 } ); - gizmoY.material.setValues( { opacity: 0.6 } ); - gizmoZ.material.setValues( { opacity: 0.6 } ); - - } - - } - - /** - * Calculate the cursor position in NDC - * @param {number} x Cursor horizontal coordinate within the canvas - * @param {number} y Cursor vertical coordinate within the canvas - * @param {HTMLElement} canvas The canvas where the renderer draws its output - * @returns {Vector2} Cursor normalized position inside the canvas - */ - getCursorNDC( cursorX, cursorY, canvas ) { - - const canvasRect = canvas.getBoundingClientRect(); - this._v2_1.setX( ( ( cursorX - canvasRect.left ) / canvasRect.width ) * 2 - 1 ); - this._v2_1.setY( ( ( canvasRect.bottom - cursorY ) / canvasRect.height ) * 2 - 1 ); - return this._v2_1.clone(); - - } - - /** - * Calculate the cursor position inside the canvas x/y coordinates with the origin being in the center of the canvas - * @param {Number} x Cursor horizontal coordinate within the canvas - * @param {Number} y Cursor vertical coordinate within the canvas - * @param {HTMLElement} canvas The canvas where the renderer draws its output - * @returns {Vector2} Cursor position inside the canvas - */ - getCursorPosition( cursorX, cursorY, canvas ) { - - this._v2_1.copy( this.getCursorNDC( cursorX, cursorY, canvas ) ); - this._v2_1.x *= ( this.camera.right - this.camera.left ) * 0.5; - this._v2_1.y *= ( this.camera.top - this.camera.bottom ) * 0.5; - return this._v2_1.clone(); - - } - - /** - * Set the camera to be controlled - * @param {Camera} camera The virtual camera to be controlled - */ - setCamera( camera ) { - - camera.lookAt( this.target ); - camera.updateMatrix(); - - //setting state - if ( camera.type == 'PerspectiveCamera' ) { - - this._fov0 = camera.fov; - this._fovState = camera.fov; - - } - - this._cameraMatrixState0.copy( camera.matrix ); - this._cameraMatrixState.copy( this._cameraMatrixState0 ); - this._cameraProjectionState.copy( camera.projectionMatrix ); - this._zoom0 = camera.zoom; - this._zoomState = this._zoom0; - - this._initialNear = camera.near; - this._nearPos0 = camera.position.distanceTo( this.target ) - camera.near; - this._nearPos = this._initialNear; - - this._initialFar = camera.far; - this._farPos0 = camera.position.distanceTo( this.target ) - camera.far; - this._farPos = this._initialFar; - - this._up0.copy( camera.up ); - this._upState.copy( camera.up ); - - this.camera = camera; - this.camera.updateProjectionMatrix(); - - //making gizmos - this._tbRadius = this.calculateTbRadius( camera ); - this.makeGizmos( this.target, this._tbRadius ); - - } - - /** - * Set gizmos visibility - * @param {Boolean} value Value of gizmos visibility - */ - setGizmosVisible( value ) { - - this._gizmos.visible = value; - this.dispatchEvent( _changeEvent ); - - } - - /** - * Set gizmos radius factor and redraws gizmos - * @param {Float} value Value of radius factor - */ - setTbRadius( value ) { - - this.radiusFactor = value; - this._tbRadius = this.calculateTbRadius( this.camera ); - - const curve = new EllipseCurve( 0, 0, this._tbRadius, this._tbRadius ); - const points = curve.getPoints( this._curvePts ); - const curveGeometry = new BufferGeometry().setFromPoints( points ); - - - for ( const gizmo in this._gizmos.children ) { - - this._gizmos.children[ gizmo ].geometry = curveGeometry; - - } - - this.dispatchEvent( _changeEvent ); - - } - - /** - * Creates the rotation gizmos matching trackball center and radius - * @param {Vector3} tbCenter The trackball center - * @param {number} tbRadius The trackball radius - */ - makeGizmos( tbCenter, tbRadius ) { - - const curve = new EllipseCurve( 0, 0, tbRadius, tbRadius ); - const points = curve.getPoints( this._curvePts ); - - //geometry - const curveGeometry = new BufferGeometry().setFromPoints( points ); - - //material - const curveMaterialX = new LineBasicMaterial( { color: 0xff8080, fog: false, transparent: true, opacity: 0.6 } ); - const curveMaterialY = new LineBasicMaterial( { color: 0x80ff80, fog: false, transparent: true, opacity: 0.6 } ); - const curveMaterialZ = new LineBasicMaterial( { color: 0x8080ff, fog: false, transparent: true, opacity: 0.6 } ); - - //line - const gizmoX = new Line( curveGeometry, curveMaterialX ); - const gizmoY = new Line( curveGeometry, curveMaterialY ); - const gizmoZ = new Line( curveGeometry, curveMaterialZ ); - - const rotation = Math.PI * 0.5; - gizmoX.rotation.x = rotation; - gizmoY.rotation.y = rotation; - - - //setting state - this._gizmoMatrixState0.identity().setPosition( tbCenter ); - this._gizmoMatrixState.copy( this._gizmoMatrixState0 ); - - if ( this.camera.zoom !== 1 ) { - - //adapt gizmos size to camera zoom - const size = 1 / this.camera.zoom; - this._scaleMatrix.makeScale( size, size, size ); - this._translationMatrix.makeTranslation( - tbCenter.x, - tbCenter.y, - tbCenter.z ); - - this._gizmoMatrixState.premultiply( this._translationMatrix ).premultiply( this._scaleMatrix ); - this._translationMatrix.makeTranslation( tbCenter.x, tbCenter.y, tbCenter.z ); - this._gizmoMatrixState.premultiply( this._translationMatrix ); - - } - - this._gizmoMatrixState.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale ); - - // - - this._gizmos.traverse( function ( object ) { - - if ( object.isLine ) { - - object.geometry.dispose(); - object.material.dispose(); - - } - - } ); - - this._gizmos.clear(); - - // - - this._gizmos.add( gizmoX ); - this._gizmos.add( gizmoY ); - this._gizmos.add( gizmoZ ); - - } - - /** - * Perform animation for focus operation - * @param {Number} time Instant in which this function is called as performance.now() - * @param {Vector3} point Point of interest for focus operation - * @param {Matrix4} cameraMatrix Camera matrix - * @param {Matrix4} gizmoMatrix Gizmos matrix - */ - onFocusAnim( time, point, cameraMatrix, gizmoMatrix ) { - - if ( this._timeStart == - 1 ) { - - //animation start - this._timeStart = time; - - } - - if ( this._state == STATE.ANIMATION_FOCUS ) { - - const deltaTime = time - this._timeStart; - const animTime = deltaTime / this.focusAnimationTime; - - this._gizmoMatrixState.copy( gizmoMatrix ); - - if ( animTime >= 1 ) { - - //animation end - - this._gizmoMatrixState.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale ); - - this.focus( point, this.scaleFactor ); - - this._timeStart = - 1; - this.updateTbState( STATE.IDLE, false ); - this.activateGizmos( false ); - - this.dispatchEvent( _changeEvent ); - - } else { - - const amount = this.easeOutCubic( animTime ); - const size = ( ( 1 - amount ) + ( this.scaleFactor * amount ) ); - - this._gizmoMatrixState.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale ); - this.focus( point, size, amount ); - - this.dispatchEvent( _changeEvent ); - const self = this; - this._animationId = window.requestAnimationFrame( function ( t ) { - - self.onFocusAnim( t, point, cameraMatrix, gizmoMatrix.clone() ); - - } ); - - } - - } else { - - //interrupt animation - - this._animationId = - 1; - this._timeStart = - 1; - - } - - } - - /** - * Perform animation for rotation operation - * @param {Number} time Instant in which this function is called as performance.now() - * @param {Vector3} rotationAxis Rotation axis - * @param {number} w0 Initial angular velocity - */ - onRotationAnim( time, rotationAxis, w0 ) { - - if ( this._timeStart == - 1 ) { - - //animation start - this._anglePrev = 0; - this._angleCurrent = 0; - this._timeStart = time; - - } - - if ( this._state == STATE.ANIMATION_ROTATE ) { - - //w = w0 + alpha * t - const deltaTime = ( time - this._timeStart ) / 1000; - const w = w0 + ( ( - this.dampingFactor ) * deltaTime ); - - if ( w > 0 ) { - - //tetha = 0.5 * alpha * t^2 + w0 * t + tetha0 - this._angleCurrent = 0.5 * ( - this.dampingFactor ) * Math.pow( deltaTime, 2 ) + w0 * deltaTime + 0; - this.applyTransformMatrix( this.rotate( rotationAxis, this._angleCurrent ) ); - this.dispatchEvent( _changeEvent ); - const self = this; - this._animationId = window.requestAnimationFrame( function ( t ) { - - self.onRotationAnim( t, rotationAxis, w0 ); - - } ); - - } else { - - this._animationId = - 1; - this._timeStart = - 1; - - this.updateTbState( STATE.IDLE, false ); - this.activateGizmos( false ); - - this.dispatchEvent( _changeEvent ); - - } - - } else { - - //interrupt animation - - this._animationId = - 1; - this._timeStart = - 1; - - if ( this._state != STATE.ROTATE ) { - - this.activateGizmos( false ); - this.dispatchEvent( _changeEvent ); - - } - - } - - } - - - /** - * Perform pan operation moving camera between two points - * @param {Vector3} p0 Initial point - * @param {Vector3} p1 Ending point - * @param {Boolean} adjust If movement should be adjusted considering camera distance (Perspective only) - */ - pan( p0, p1, adjust = false ) { - - const movement = p0.clone().sub( p1 ); - - if ( this.camera.isOrthographicCamera ) { - - //adjust movement amount - movement.multiplyScalar( 1 / this.camera.zoom ); - - } else if ( this.camera.isPerspectiveCamera && adjust ) { - - //adjust movement amount - this._v3_1.setFromMatrixPosition( this._cameraMatrixState0 ); //camera's initial position - this._v3_2.setFromMatrixPosition( this._gizmoMatrixState0 ); //gizmo's initial position - const distanceFactor = this._v3_1.distanceTo( this._v3_2 ) / this.camera.position.distanceTo( this._gizmos.position ); - movement.multiplyScalar( 1 / distanceFactor ); - - } - - this._v3_1.set( movement.x, movement.y, 0 ).applyQuaternion( this.camera.quaternion ); - - this._m4_1.makeTranslation( this._v3_1.x, this._v3_1.y, this._v3_1.z ); - - this.setTransformationMatrices( this._m4_1, this._m4_1 ); - return _transformation; - - } - - /** - * Reset trackball - */ - reset() { - - this.camera.zoom = this._zoom0; - - if ( this.camera.isPerspectiveCamera ) { - - this.camera.fov = this._fov0; - - } - - this.camera.near = this._nearPos; - this.camera.far = this._farPos; - this._cameraMatrixState.copy( this._cameraMatrixState0 ); - this._cameraMatrixState.decompose( this.camera.position, this.camera.quaternion, this.camera.scale ); - this.camera.up.copy( this._up0 ); - - this.camera.updateMatrix(); - this.camera.updateProjectionMatrix(); - - this._gizmoMatrixState.copy( this._gizmoMatrixState0 ); - this._gizmoMatrixState0.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale ); - this._gizmos.updateMatrix(); - - this._tbRadius = this.calculateTbRadius( this.camera ); - this.makeGizmos( this._gizmos.position, this._tbRadius ); - - this.camera.lookAt( this._gizmos.position ); - - this.updateTbState( STATE.IDLE, false ); - - this.dispatchEvent( _changeEvent ); - - } - - /** - * Rotate the camera around an axis passing by trackball's center - * @param {Vector3} axis Rotation axis - * @param {number} angle Angle in radians - * @returns {Object} Object with 'camera' field containing transformation matrix resulting from the operation to be applied to the camera - */ - rotate( axis, angle ) { - - const point = this._gizmos.position; //rotation center - this._translationMatrix.makeTranslation( - point.x, - point.y, - point.z ); - this._rotationMatrix.makeRotationAxis( axis, - angle ); - - //rotate camera - this._m4_1.makeTranslation( point.x, point.y, point.z ); - this._m4_1.multiply( this._rotationMatrix ); - this._m4_1.multiply( this._translationMatrix ); - - this.setTransformationMatrices( this._m4_1 ); - - return _transformation; - - } - - copyState() { - - let state; - if ( this.camera.isOrthographicCamera ) { - - state = JSON.stringify( { arcballState: { - - cameraFar: this.camera.far, - cameraMatrix: this.camera.matrix, - cameraNear: this.camera.near, - cameraUp: this.camera.up, - cameraZoom: this.camera.zoom, - gizmoMatrix: this._gizmos.matrix - - } } ); - - } else if ( this.camera.isPerspectiveCamera ) { - - state = JSON.stringify( { arcballState: { - cameraFar: this.camera.far, - cameraFov: this.camera.fov, - cameraMatrix: this.camera.matrix, - cameraNear: this.camera.near, - cameraUp: this.camera.up, - cameraZoom: this.camera.zoom, - gizmoMatrix: this._gizmos.matrix - - } } ); - - } - - navigator.clipboard.writeText( state ); - - } - - pasteState() { - - const self = this; - navigator.clipboard.readText().then( function resolved( value ) { - - self.setStateFromJSON( value ); - - } ); - - } - - /** - * Save the current state of the control. This can later be recover with .reset - */ - saveState() { - - this._cameraMatrixState0.copy( this.camera.matrix ); - this._gizmoMatrixState0.copy( this._gizmos.matrix ); - this._nearPos = this.camera.near; - this._farPos = this.camera.far; - this._zoom0 = this.camera.zoom; - this._up0.copy( this.camera.up ); - - if ( this.camera.isPerspectiveCamera ) { - - this._fov0 = this.camera.fov; - - } - - } - - /** - * Perform uniform scale operation around a given point - * @param {Number} size Scale factor - * @param {Vector3} point Point around which scale - * @param {Boolean} scaleGizmos If gizmos should be scaled (Perspective only) - * @returns {Object} Object with 'camera' and 'gizmo' fields containing transformation matrices resulting from the operation to be applied to the camera and gizmos - */ - scale( size, point, scaleGizmos = true ) { - - _scalePointTemp.copy( point ); - let sizeInverse = 1 / size; - - if ( this.camera.isOrthographicCamera ) { - - //camera zoom - this.camera.zoom = this._zoomState; - this.camera.zoom *= size; - - //check min and max zoom - if ( this.camera.zoom > this.maxZoom ) { - - this.camera.zoom = this.maxZoom; - sizeInverse = this._zoomState / this.maxZoom; - - } else if ( this.camera.zoom < this.minZoom ) { - - this.camera.zoom = this.minZoom; - sizeInverse = this._zoomState / this.minZoom; - - } - - this.camera.updateProjectionMatrix(); - - this._v3_1.setFromMatrixPosition( this._gizmoMatrixState ); //gizmos position - - //scale gizmos so they appear in the same spot having the same dimension - this._scaleMatrix.makeScale( sizeInverse, sizeInverse, sizeInverse ); - this._translationMatrix.makeTranslation( - this._v3_1.x, - this._v3_1.y, - this._v3_1.z ); - - this._m4_2.makeTranslation( this._v3_1.x, this._v3_1.y, this._v3_1.z ).multiply( this._scaleMatrix ); - this._m4_2.multiply( this._translationMatrix ); - - - //move camera and gizmos to obtain pinch effect - _scalePointTemp.sub( this._v3_1 ); - - const amount = _scalePointTemp.clone().multiplyScalar( sizeInverse ); - _scalePointTemp.sub( amount ); - - this._m4_1.makeTranslation( _scalePointTemp.x, _scalePointTemp.y, _scalePointTemp.z ); - this._m4_2.premultiply( this._m4_1 ); - - this.setTransformationMatrices( this._m4_1, this._m4_2 ); - return _transformation; - - } else if ( this.camera.isPerspectiveCamera ) { - - this._v3_1.setFromMatrixPosition( this._cameraMatrixState ); - this._v3_2.setFromMatrixPosition( this._gizmoMatrixState ); - - //move camera - let distance = this._v3_1.distanceTo( _scalePointTemp ); - let amount = distance - ( distance * sizeInverse ); - - //check min and max distance - const newDistance = distance - amount; - if ( newDistance < this.minDistance ) { - - sizeInverse = this.minDistance / distance; - amount = distance - ( distance * sizeInverse ); - - } else if ( newDistance > this.maxDistance ) { - - sizeInverse = this.maxDistance / distance; - amount = distance - ( distance * sizeInverse ); - - } - - _offset.copy( _scalePointTemp ).sub( this._v3_1 ).normalize().multiplyScalar( amount ); - - this._m4_1.makeTranslation( _offset.x, _offset.y, _offset.z ); - - - if ( scaleGizmos ) { - - //scale gizmos so they appear in the same spot having the same dimension - const pos = this._v3_2; - - distance = pos.distanceTo( _scalePointTemp ); - amount = distance - ( distance * sizeInverse ); - _offset.copy( _scalePointTemp ).sub( this._v3_2 ).normalize().multiplyScalar( amount ); - - this._translationMatrix.makeTranslation( pos.x, pos.y, pos.z ); - this._scaleMatrix.makeScale( sizeInverse, sizeInverse, sizeInverse ); - - this._m4_2.makeTranslation( _offset.x, _offset.y, _offset.z ).multiply( this._translationMatrix ); - this._m4_2.multiply( this._scaleMatrix ); - - this._translationMatrix.makeTranslation( - pos.x, - pos.y, - pos.z ); - - this._m4_2.multiply( this._translationMatrix ); - this.setTransformationMatrices( this._m4_1, this._m4_2 ); - - - } else { - - this.setTransformationMatrices( this._m4_1 ); - - } - - return _transformation; - - } - - } - - /** - * Set camera fov - * @param {Number} value fov to be setted - */ - setFov( value ) { - - if ( this.camera.isPerspectiveCamera ) { - - this.camera.fov = MathUtils.clamp( value, this.minFov, this.maxFov ); - this.camera.updateProjectionMatrix(); - - } - - } - - /** - * Set values in transformation object - * @param {Matrix4} camera Transformation to be applied to the camera - * @param {Matrix4} gizmos Transformation to be applied to gizmos - */ - setTransformationMatrices( camera = null, gizmos = null ) { - - if ( camera != null ) { - - if ( _transformation.camera != null ) { - - _transformation.camera.copy( camera ); - - } else { - - _transformation.camera = camera.clone(); - - } - - } else { - - _transformation.camera = null; - - } - - if ( gizmos != null ) { - - if ( _transformation.gizmos != null ) { - - _transformation.gizmos.copy( gizmos ); - - } else { - - _transformation.gizmos = gizmos.clone(); - - } - - } else { - - _transformation.gizmos = null; - - } - - } - - /** - * Rotate camera around its direction axis passing by a given point by a given angle - * @param {Vector3} point The point where the rotation axis is passing trough - * @param {Number} angle Angle in radians - * @returns The computed transormation matix - */ - zRotate( point, angle ) { - - this._rotationMatrix.makeRotationAxis( this._rotationAxis, angle ); - this._translationMatrix.makeTranslation( - point.x, - point.y, - point.z ); - - this._m4_1.makeTranslation( point.x, point.y, point.z ); - this._m4_1.multiply( this._rotationMatrix ); - this._m4_1.multiply( this._translationMatrix ); - - this._v3_1.setFromMatrixPosition( this._gizmoMatrixState ).sub( point ); //vector from rotation center to gizmos position - this._v3_2.copy( this._v3_1 ).applyAxisAngle( this._rotationAxis, angle ); //apply rotation - this._v3_2.sub( this._v3_1 ); - - this._m4_2.makeTranslation( this._v3_2.x, this._v3_2.y, this._v3_2.z ); - - this.setTransformationMatrices( this._m4_1, this._m4_2 ); - return _transformation; - - } - - - getRaycaster() { - - return _raycaster; - - } - - - /** - * Unproject the cursor on the 3D object surface - * @param {Vector2} cursor Cursor coordinates in NDC - * @param {Camera} camera Virtual camera - * @returns {Vector3} The point of intersection with the model, if exist, null otherwise - */ - unprojectOnObj( cursor, camera ) { - - const raycaster = this.getRaycaster(); - raycaster.near = camera.near; - raycaster.far = camera.far; - raycaster.setFromCamera( cursor, camera ); - - const intersect = raycaster.intersectObjects( this.scene.children, true ); - - for ( let i = 0; i < intersect.length; i ++ ) { - - if ( intersect[ i ].object.uuid != this._gizmos.uuid && intersect[ i ].face != null ) { - - return intersect[ i ].point.clone(); - - } - - } - - return null; - - } - - /** - * Unproject the cursor on the trackball surface - * @param {Camera} camera The virtual camera - * @param {Number} cursorX Cursor horizontal coordinate on screen - * @param {Number} cursorY Cursor vertical coordinate on screen - * @param {HTMLElement} canvas The canvas where the renderer draws its output - * @param {number} tbRadius The trackball radius - * @returns {Vector3} The unprojected point on the trackball surface - */ - unprojectOnTbSurface( camera, cursorX, cursorY, canvas, tbRadius ) { - - if ( camera.type == 'OrthographicCamera' ) { - - this._v2_1.copy( this.getCursorPosition( cursorX, cursorY, canvas ) ); - this._v3_1.set( this._v2_1.x, this._v2_1.y, 0 ); - - const x2 = Math.pow( this._v2_1.x, 2 ); - const y2 = Math.pow( this._v2_1.y, 2 ); - const r2 = Math.pow( this._tbRadius, 2 ); - - if ( x2 + y2 <= r2 * 0.5 ) { - - //intersection with sphere - this._v3_1.setZ( Math.sqrt( r2 - ( x2 + y2 ) ) ); - - } else { - - //intersection with hyperboloid - this._v3_1.setZ( ( r2 * 0.5 ) / ( Math.sqrt( x2 + y2 ) ) ); - - } - - return this._v3_1; - - } else if ( camera.type == 'PerspectiveCamera' ) { - - //unproject cursor on the near plane - this._v2_1.copy( this.getCursorNDC( cursorX, cursorY, canvas ) ); - - this._v3_1.set( this._v2_1.x, this._v2_1.y, - 1 ); - this._v3_1.applyMatrix4( camera.projectionMatrixInverse ); - - const rayDir = this._v3_1.clone().normalize(); //unprojected ray direction - const cameraGizmoDistance = camera.position.distanceTo( this._gizmos.position ); - const radius2 = Math.pow( tbRadius, 2 ); - - // camera - // |\ - // | \ - // | \ - // h | \ - // | \ - // | \ - // _ _ | _ _ _\ _ _ near plane - // l - - const h = this._v3_1.z; - const l = Math.sqrt( Math.pow( this._v3_1.x, 2 ) + Math.pow( this._v3_1.y, 2 ) ); - - if ( l == 0 ) { - - //ray aligned with camera - rayDir.set( this._v3_1.x, this._v3_1.y, tbRadius ); - return rayDir; - - } - - const m = h / l; - const q = cameraGizmoDistance; - - /* - * calculate intersection point between unprojected ray and trackball surface - *|y = m * x + q - *|x^2 + y^2 = r^2 - * - * (m^2 + 1) * x^2 + (2 * m * q) * x + q^2 - r^2 = 0 - */ - let a = Math.pow( m, 2 ) + 1; - let b = 2 * m * q; - let c = Math.pow( q, 2 ) - radius2; - let delta = Math.pow( b, 2 ) - ( 4 * a * c ); - - if ( delta >= 0 ) { - - //intersection with sphere - this._v2_1.setX( ( - b - Math.sqrt( delta ) ) / ( 2 * a ) ); - this._v2_1.setY( m * this._v2_1.x + q ); - - const angle = MathUtils.RAD2DEG * this._v2_1.angle(); - - if ( angle >= 45 ) { - - //if angle between intersection point and X' axis is >= 45°, return that point - //otherwise, calculate intersection point with hyperboloid - - const rayLength = Math.sqrt( Math.pow( this._v2_1.x, 2 ) + Math.pow( ( cameraGizmoDistance - this._v2_1.y ), 2 ) ); - rayDir.multiplyScalar( rayLength ); - rayDir.z += cameraGizmoDistance; - return rayDir; - - } - - } - - //intersection with hyperboloid - /* - *|y = m * x + q - *|y = (1 / x) * (r^2 / 2) - * - * m * x^2 + q * x - r^2 / 2 = 0 - */ - - a = m; - b = q; - c = - radius2 * 0.5; - delta = Math.pow( b, 2 ) - ( 4 * a * c ); - this._v2_1.setX( ( - b - Math.sqrt( delta ) ) / ( 2 * a ) ); - this._v2_1.setY( m * this._v2_1.x + q ); - - const rayLength = Math.sqrt( Math.pow( this._v2_1.x, 2 ) + Math.pow( ( cameraGizmoDistance - this._v2_1.y ), 2 ) ); - - rayDir.multiplyScalar( rayLength ); - rayDir.z += cameraGizmoDistance; - return rayDir; - - } - - } - - - /** - * Unproject the cursor on the plane passing through the center of the trackball orthogonal to the camera - * @param {Camera} camera The virtual camera - * @param {Number} cursorX Cursor horizontal coordinate on screen - * @param {Number} cursorY Cursor vertical coordinate on screen - * @param {HTMLElement} canvas The canvas where the renderer draws its output - * @param {Boolean} initialDistance If initial distance between camera and gizmos should be used for calculations instead of current (Perspective only) - * @returns {Vector3} The unprojected point on the trackball plane - */ - unprojectOnTbPlane( camera, cursorX, cursorY, canvas, initialDistance = false ) { - - if ( camera.type == 'OrthographicCamera' ) { - - this._v2_1.copy( this.getCursorPosition( cursorX, cursorY, canvas ) ); - this._v3_1.set( this._v2_1.x, this._v2_1.y, 0 ); - - return this._v3_1.clone(); - - } else if ( camera.type == 'PerspectiveCamera' ) { - - this._v2_1.copy( this.getCursorNDC( cursorX, cursorY, canvas ) ); - - //unproject cursor on the near plane - this._v3_1.set( this._v2_1.x, this._v2_1.y, - 1 ); - this._v3_1.applyMatrix4( camera.projectionMatrixInverse ); - - const rayDir = this._v3_1.clone().normalize(); //unprojected ray direction - - // camera - // |\ - // | \ - // | \ - // h | \ - // | \ - // | \ - // _ _ | _ _ _\ _ _ near plane - // l - - const h = this._v3_1.z; - const l = Math.sqrt( Math.pow( this._v3_1.x, 2 ) + Math.pow( this._v3_1.y, 2 ) ); - let cameraGizmoDistance; - - if ( initialDistance ) { - - cameraGizmoDistance = this._v3_1.setFromMatrixPosition( this._cameraMatrixState0 ).distanceTo( this._v3_2.setFromMatrixPosition( this._gizmoMatrixState0 ) ); - - } else { - - cameraGizmoDistance = camera.position.distanceTo( this._gizmos.position ); - - } - - /* - * calculate intersection point between unprojected ray and the plane - *|y = mx + q - *|y = 0 - * - * x = -q/m - */ - if ( l == 0 ) { - - //ray aligned with camera - rayDir.set( 0, 0, 0 ); - return rayDir; - - } - - const m = h / l; - const q = cameraGizmoDistance; - const x = - q / m; - - const rayLength = Math.sqrt( Math.pow( q, 2 ) + Math.pow( x, 2 ) ); - rayDir.multiplyScalar( rayLength ); - rayDir.z = 0; - return rayDir; - - } - - } - - /** - * Update camera and gizmos state - */ - updateMatrixState() { - - //update camera and gizmos state - this._cameraMatrixState.copy( this.camera.matrix ); - this._gizmoMatrixState.copy( this._gizmos.matrix ); - - if ( this.camera.isOrthographicCamera ) { - - this._cameraProjectionState.copy( this.camera.projectionMatrix ); - this.camera.updateProjectionMatrix(); - this._zoomState = this.camera.zoom; - - } else if ( this.camera.isPerspectiveCamera ) { - - this._fovState = this.camera.fov; - - } - - } - - /** - * Update the trackball FSA - * @param {STATE} newState New state of the FSA - * @param {Boolean} updateMatrices If matriices state should be updated - */ - updateTbState( newState, updateMatrices ) { - - this._state = newState; - if ( updateMatrices ) { - - this.updateMatrixState(); - - } - - } - - update() { - - const EPS = 0.000001; - - if ( this.target.equals( this._currentTarget ) === false ) { - - this._gizmos.position.copy( this.target ); //for correct radius calculation - this._tbRadius = this.calculateTbRadius( this.camera ); - this.makeGizmos( this.target, this._tbRadius ); - this._currentTarget.copy( this.target ); - - } - - //check min/max parameters - if ( this.camera.isOrthographicCamera ) { - - //check zoom - if ( this.camera.zoom > this.maxZoom || this.camera.zoom < this.minZoom ) { - - const newZoom = MathUtils.clamp( this.camera.zoom, this.minZoom, this.maxZoom ); - this.applyTransformMatrix( this.scale( newZoom / this.camera.zoom, this._gizmos.position, true ) ); - - } - - } else if ( this.camera.isPerspectiveCamera ) { - - //check distance - const distance = this.camera.position.distanceTo( this._gizmos.position ); - - if ( distance > this.maxDistance + EPS || distance < this.minDistance - EPS ) { - - const newDistance = MathUtils.clamp( distance, this.minDistance, this.maxDistance ); - this.applyTransformMatrix( this.scale( newDistance / distance, this._gizmos.position ) ); - this.updateMatrixState(); - - } - - //check fov - if ( this.camera.fov < this.minFov || this.camera.fov > this.maxFov ) { - - this.camera.fov = MathUtils.clamp( this.camera.fov, this.minFov, this.maxFov ); - this.camera.updateProjectionMatrix(); - - } - - const oldRadius = this._tbRadius; - this._tbRadius = this.calculateTbRadius( this.camera ); - - if ( oldRadius < this._tbRadius - EPS || oldRadius > this._tbRadius + EPS ) { - - const scale = ( this._gizmos.scale.x + this._gizmos.scale.y + this._gizmos.scale.z ) / 3; - const newRadius = this._tbRadius / scale; - const curve = new EllipseCurve( 0, 0, newRadius, newRadius ); - const points = curve.getPoints( this._curvePts ); - const curveGeometry = new BufferGeometry().setFromPoints( points ); - - for ( const gizmo in this._gizmos.children ) { - - this._gizmos.children[ gizmo ].geometry = curveGeometry; - - } - - } - - } - - this.camera.lookAt( this._gizmos.position ); - - } - - setStateFromJSON( json ) { - - const state = JSON.parse( json ); - - if ( state.arcballState != undefined ) { - - this._cameraMatrixState.fromArray( state.arcballState.cameraMatrix.elements ); - this._cameraMatrixState.decompose( this.camera.position, this.camera.quaternion, this.camera.scale ); - - this.camera.up.copy( state.arcballState.cameraUp ); - this.camera.near = state.arcballState.cameraNear; - this.camera.far = state.arcballState.cameraFar; - - this.camera.zoom = state.arcballState.cameraZoom; - - if ( this.camera.isPerspectiveCamera ) { - - this.camera.fov = state.arcballState.cameraFov; - - } - - this._gizmoMatrixState.fromArray( state.arcballState.gizmoMatrix.elements ); - this._gizmoMatrixState.decompose( this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale ); - - this.camera.updateMatrix(); - this.camera.updateProjectionMatrix(); - - this._gizmos.updateMatrix(); - - this._tbRadius = this.calculateTbRadius( this.camera ); - const gizmoTmp = new Matrix4().copy( this._gizmoMatrixState0 ); - this.makeGizmos( this._gizmos.position, this._tbRadius ); - this._gizmoMatrixState0.copy( gizmoTmp ); - - this.camera.lookAt( this._gizmos.position ); - this.updateTbState( STATE.IDLE, false ); - - this.dispatchEvent( _changeEvent ); - - } - - } - -} - -//listeners - -function onWindowResize() { - - const scale = ( this._gizmos.scale.x + this._gizmos.scale.y + this._gizmos.scale.z ) / 3; - this._tbRadius = this.calculateTbRadius( this.camera ); - - const newRadius = this._tbRadius / scale; - const curve = new EllipseCurve( 0, 0, newRadius, newRadius ); - const points = curve.getPoints( this._curvePts ); - const curveGeometry = new BufferGeometry().setFromPoints( points ); - - - for ( const gizmo in this._gizmos.children ) { - - this._gizmos.children[ gizmo ].geometry = curveGeometry; - - } - - this.dispatchEvent( _changeEvent ); - -} - -function onContextMenu( event ) { - - if ( ! this.enabled ) { - - return; - - } - - for ( let i = 0; i < this.mouseActions.length; i ++ ) { - - if ( this.mouseActions[ i ].mouse == 2 ) { - - //prevent only if button 2 is actually used - event.preventDefault(); - break; - - } - - } - -} - -function onPointerCancel() { - - this._touchStart.splice( 0, this._touchStart.length ); - this._touchCurrent.splice( 0, this._touchCurrent.length ); - this._input = INPUT.NONE; - -} - -function onPointerDown( event ) { - - if ( event.button == 0 && event.isPrimary ) { - - this._downValid = true; - this._downEvents.push( event ); - this._downStart = performance.now(); - - } else { - - this._downValid = false; - - } - - if ( event.pointerType == 'touch' && this._input != INPUT.CURSOR ) { - - this._touchStart.push( event ); - this._touchCurrent.push( event ); - - switch ( this._input ) { - - case INPUT.NONE: - - //singleStart - this._input = INPUT.ONE_FINGER; - this.onSinglePanStart( event, 'ROTATE' ); - - window.addEventListener( 'pointermove', this._onPointerMove ); - window.addEventListener( 'pointerup', this._onPointerUp ); - - break; - - case INPUT.ONE_FINGER: - case INPUT.ONE_FINGER_SWITCHED: - - //doubleStart - this._input = INPUT.TWO_FINGER; - - this.onRotateStart(); - this.onPinchStart(); - this.onDoublePanStart(); - - break; - - case INPUT.TWO_FINGER: - - //multipleStart - this._input = INPUT.MULT_FINGER; - this.onTriplePanStart( event ); - break; - - } - - } else if ( event.pointerType != 'touch' && this._input == INPUT.NONE ) { - - let modifier = null; - - if ( event.ctrlKey || event.metaKey ) { - - modifier = 'CTRL'; - - } else if ( event.shiftKey ) { - - modifier = 'SHIFT'; - - } - - this._mouseOp = this.getOpFromAction( event.button, modifier ); - if ( this._mouseOp != null ) { - - window.addEventListener( 'pointermove', this._onPointerMove ); - window.addEventListener( 'pointerup', this._onPointerUp ); - - //singleStart - this._input = INPUT.CURSOR; - this._button = event.button; - this.onSinglePanStart( event, this._mouseOp ); - - } - - } - -} - -function onPointerMove( event ) { - - if ( event.pointerType == 'touch' && this._input != INPUT.CURSOR ) { - - switch ( this._input ) { - - case INPUT.ONE_FINGER: - - //singleMove - this.updateTouchEvent( event ); - - this.onSinglePanMove( event, STATE.ROTATE ); - break; - - case INPUT.ONE_FINGER_SWITCHED: - - const movement = this.calculatePointersDistance( this._touchCurrent[ 0 ], event ) * this._devPxRatio; - - if ( movement >= this._switchSensibility ) { - - //singleMove - this._input = INPUT.ONE_FINGER; - this.updateTouchEvent( event ); - - this.onSinglePanStart( event, 'ROTATE' ); - break; - - } - - break; - - case INPUT.TWO_FINGER: - - //rotate/pan/pinchMove - this.updateTouchEvent( event ); - - this.onRotateMove(); - this.onPinchMove(); - this.onDoublePanMove(); - - break; - - case INPUT.MULT_FINGER: - - //multMove - this.updateTouchEvent( event ); - - this.onTriplePanMove( event ); - break; - - } - - } else if ( event.pointerType != 'touch' && this._input == INPUT.CURSOR ) { - - let modifier = null; - - if ( event.ctrlKey || event.metaKey ) { - - modifier = 'CTRL'; - - } else if ( event.shiftKey ) { - - modifier = 'SHIFT'; - - } - - const mouseOpState = this.getOpStateFromAction( this._button, modifier ); - - if ( mouseOpState != null ) { - - this.onSinglePanMove( event, mouseOpState ); - - } - - } - - //checkDistance - if ( this._downValid ) { - - const movement = this.calculatePointersDistance( this._downEvents[ this._downEvents.length - 1 ], event ) * this._devPxRatio; - if ( movement > this._movementThreshold ) { - - this._downValid = false; - - } - - } - -} - -function onPointerUp( event ) { - - if ( event.pointerType == 'touch' && this._input != INPUT.CURSOR ) { - - const nTouch = this._touchCurrent.length; - - for ( let i = 0; i < nTouch; i ++ ) { - - if ( this._touchCurrent[ i ].pointerId == event.pointerId ) { - - this._touchCurrent.splice( i, 1 ); - this._touchStart.splice( i, 1 ); - break; - - } - - } - - switch ( this._input ) { - - case INPUT.ONE_FINGER: - case INPUT.ONE_FINGER_SWITCHED: - - //singleEnd - window.removeEventListener( 'pointermove', this._onPointerMove ); - window.removeEventListener( 'pointerup', this._onPointerUp ); - - this._input = INPUT.NONE; - this.onSinglePanEnd(); - - break; - - case INPUT.TWO_FINGER: - - //doubleEnd - this.onDoublePanEnd( event ); - this.onPinchEnd( event ); - this.onRotateEnd( event ); - - //switching to singleStart - this._input = INPUT.ONE_FINGER_SWITCHED; - - break; - - case INPUT.MULT_FINGER: - - if ( this._touchCurrent.length == 0 ) { - - window.removeEventListener( 'pointermove', this._onPointerMove ); - window.removeEventListener( 'pointerup', this._onPointerUp ); - - //multCancel - this._input = INPUT.NONE; - this.onTriplePanEnd(); - - } - - break; - - } - - } else if ( event.pointerType != 'touch' && this._input == INPUT.CURSOR ) { - - window.removeEventListener( 'pointermove', this._onPointerMove ); - window.removeEventListener( 'pointerup', this._onPointerUp ); - - this._input = INPUT.NONE; - this.onSinglePanEnd(); - this._button = - 1; - - } - - if ( event.isPrimary ) { - - if ( this._downValid ) { - - const downTime = event.timeStamp - this._downEvents[ this._downEvents.length - 1 ].timeStamp; - - if ( downTime <= this._maxDownTime ) { - - if ( this._nclicks == 0 ) { - - //first valid click detected - this._nclicks = 1; - this._clickStart = performance.now(); - - } else { - - const clickInterval = event.timeStamp - this._clickStart; - const movement = this.calculatePointersDistance( this._downEvents[ 1 ], this._downEvents[ 0 ] ) * this._devPxRatio; - - if ( clickInterval <= this._maxInterval && movement <= this._posThreshold ) { - - //second valid click detected - //fire double tap and reset values - this._nclicks = 0; - this._downEvents.splice( 0, this._downEvents.length ); - this.onDoubleTap( event ); - - } else { - - //new 'first click' - this._nclicks = 1; - this._downEvents.shift(); - this._clickStart = performance.now(); - - } - - } - - } else { - - this._downValid = false; - this._nclicks = 0; - this._downEvents.splice( 0, this._downEvents.length ); - - } - - } else { - - this._nclicks = 0; - this._downEvents.splice( 0, this._downEvents.length ); - - } - - } - -} - -function onWheel( event ) { - - if ( this.enabled && this.enableZoom ) { - - let modifier = null; - - if ( event.ctrlKey || event.metaKey ) { - - modifier = 'CTRL'; - - } else if ( event.shiftKey ) { - - modifier = 'SHIFT'; - - } - - const mouseOp = this.getOpFromAction( 'WHEEL', modifier ); - - if ( mouseOp != null ) { - - event.preventDefault(); - this.dispatchEvent( _startEvent ); - - const notchDeltaY = 125; //distance of one notch of mouse wheel - let sgn = event.deltaY / notchDeltaY; - - let size = 1; - - if ( sgn > 0 ) { - - size = 1 / this.scaleFactor; - - } else if ( sgn < 0 ) { - - size = this.scaleFactor; - - } - - switch ( mouseOp ) { - - case 'ZOOM': - - this.updateTbState( STATE.SCALE, true ); - - if ( sgn > 0 ) { - - size = 1 / ( Math.pow( this.scaleFactor, sgn ) ); - - } else if ( sgn < 0 ) { - - size = Math.pow( this.scaleFactor, - sgn ); - - } - - if ( this.cursorZoom && this.enablePan ) { - - let scalePoint; - - if ( this.camera.isOrthographicCamera ) { - - scalePoint = this.unprojectOnTbPlane( this.camera, event.clientX, event.clientY, this.domElement ).applyQuaternion( this.camera.quaternion ).multiplyScalar( 1 / this.camera.zoom ).add( this._gizmos.position ); - - } else if ( this.camera.isPerspectiveCamera ) { - - scalePoint = this.unprojectOnTbPlane( this.camera, event.clientX, event.clientY, this.domElement ).applyQuaternion( this.camera.quaternion ).add( this._gizmos.position ); - - } - - this.applyTransformMatrix( this.scale( size, scalePoint ) ); - - } else { - - this.applyTransformMatrix( this.scale( size, this._gizmos.position ) ); - - } - - if ( this._grid != null ) { - - this.disposeGrid(); - this.drawGrid(); - - } - - this.updateTbState( STATE.IDLE, false ); - - this.dispatchEvent( _changeEvent ); - this.dispatchEvent( _endEvent ); - - break; - - case 'FOV': - - if ( this.camera.isPerspectiveCamera ) { - - this.updateTbState( STATE.FOV, true ); - - - //Vertigo effect - - // fov / 2 - // |\ - // | \ - // | \ - // x | \ - // | \ - // | \ - // | _ _ _\ - // y - - //check for iOs shift shortcut - if ( event.deltaX != 0 ) { - - sgn = event.deltaX / notchDeltaY; - - size = 1; - - if ( sgn > 0 ) { - - size = 1 / ( Math.pow( this.scaleFactor, sgn ) ); - - } else if ( sgn < 0 ) { - - size = Math.pow( this.scaleFactor, - sgn ); - - } - - } - - this._v3_1.setFromMatrixPosition( this._cameraMatrixState ); - const x = this._v3_1.distanceTo( this._gizmos.position ); - let xNew = x / size; //distance between camera and gizmos if scale(size, scalepoint) would be performed - - //check min and max distance - xNew = MathUtils.clamp( xNew, this.minDistance, this.maxDistance ); - - const y = x * Math.tan( MathUtils.DEG2RAD * this.camera.fov * 0.5 ); - - //calculate new fov - let newFov = MathUtils.RAD2DEG * ( Math.atan( y / xNew ) * 2 ); - - //check min and max fov - if ( newFov > this.maxFov ) { - - newFov = this.maxFov; - - } else if ( newFov < this.minFov ) { - - newFov = this.minFov; - - } - - const newDistance = y / Math.tan( MathUtils.DEG2RAD * ( newFov / 2 ) ); - size = x / newDistance; - - this.setFov( newFov ); - this.applyTransformMatrix( this.scale( size, this._gizmos.position, false ) ); - - } - - if ( this._grid != null ) { - - this.disposeGrid(); - this.drawGrid(); - - } - - this.updateTbState( STATE.IDLE, false ); - - this.dispatchEvent( _changeEvent ); - this.dispatchEvent( _endEvent ); - - break; - - } - - } - - } - -} - -export { ArcballControls }; diff --git a/three/addons/controls/DragControls.js b/three/addons/controls/DragControls.js deleted file mode 100644 index f93f774..0000000 --- a/three/addons/controls/DragControls.js +++ /dev/null @@ -1,221 +0,0 @@ -import { - EventDispatcher, - Matrix4, - Plane, - Raycaster, - Vector2, - Vector3 -} from 'three'; - -const _plane = new Plane(); -const _raycaster = new Raycaster(); - -const _pointer = new Vector2(); -const _offset = new Vector3(); -const _intersection = new Vector3(); -const _worldPosition = new Vector3(); -const _inverseMatrix = new Matrix4(); - -class DragControls extends EventDispatcher { - - constructor( _objects, _camera, _domElement ) { - - super(); - - _domElement.style.touchAction = 'none'; // disable touch scroll - - let _selected = null, _hovered = null; - - const _intersections = []; - - // - - const scope = this; - - function activate() { - - _domElement.addEventListener( 'pointermove', onPointerMove ); - _domElement.addEventListener( 'pointerdown', onPointerDown ); - _domElement.addEventListener( 'pointerup', onPointerCancel ); - _domElement.addEventListener( 'pointerleave', onPointerCancel ); - - } - - function deactivate() { - - _domElement.removeEventListener( 'pointermove', onPointerMove ); - _domElement.removeEventListener( 'pointerdown', onPointerDown ); - _domElement.removeEventListener( 'pointerup', onPointerCancel ); - _domElement.removeEventListener( 'pointerleave', onPointerCancel ); - - _domElement.style.cursor = ''; - - } - - function dispose() { - - deactivate(); - - } - - function getObjects() { - - return _objects; - - } - - function getRaycaster() { - - return _raycaster; - - } - - function onPointerMove( event ) { - - if ( scope.enabled === false ) return; - - updatePointer( event ); - - _raycaster.setFromCamera( _pointer, _camera ); - - if ( _selected ) { - - if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { - - _selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) ); - - } - - scope.dispatchEvent( { type: 'drag', object: _selected } ); - - return; - - } - - // hover support - - if ( event.pointerType === 'mouse' || event.pointerType === 'pen' ) { - - _intersections.length = 0; - - _raycaster.setFromCamera( _pointer, _camera ); - _raycaster.intersectObjects( _objects, scope.recursive, _intersections ); - - if ( _intersections.length > 0 ) { - - const object = _intersections[ 0 ].object; - - _plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) ); - - if ( _hovered !== object && _hovered !== null ) { - - scope.dispatchEvent( { type: 'hoveroff', object: _hovered } ); - - _domElement.style.cursor = 'auto'; - _hovered = null; - - } - - if ( _hovered !== object ) { - - scope.dispatchEvent( { type: 'hoveron', object: object } ); - - _domElement.style.cursor = 'pointer'; - _hovered = object; - - } - - } else { - - if ( _hovered !== null ) { - - scope.dispatchEvent( { type: 'hoveroff', object: _hovered } ); - - _domElement.style.cursor = 'auto'; - _hovered = null; - - } - - } - - } - - } - - function onPointerDown( event ) { - - if ( scope.enabled === false ) return; - - updatePointer( event ); - - _intersections.length = 0; - - _raycaster.setFromCamera( _pointer, _camera ); - _raycaster.intersectObjects( _objects, scope.recursive, _intersections ); - - if ( _intersections.length > 0 ) { - - _selected = ( scope.transformGroup === true ) ? _objects[ 0 ] : _intersections[ 0 ].object; - - _plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) ); - - if ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) { - - _inverseMatrix.copy( _selected.parent.matrixWorld ).invert(); - _offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) ); - - } - - _domElement.style.cursor = 'move'; - - scope.dispatchEvent( { type: 'dragstart', object: _selected } ); - - } - - - } - - function onPointerCancel() { - - if ( scope.enabled === false ) return; - - if ( _selected ) { - - scope.dispatchEvent( { type: 'dragend', object: _selected } ); - - _selected = null; - - } - - _domElement.style.cursor = _hovered ? 'pointer' : 'auto'; - - } - - function updatePointer( event ) { - - const rect = _domElement.getBoundingClientRect(); - - _pointer.x = ( event.clientX - rect.left ) / rect.width * 2 - 1; - _pointer.y = - ( event.clientY - rect.top ) / rect.height * 2 + 1; - - } - - activate(); - - // API - - this.enabled = true; - this.recursive = true; - this.transformGroup = false; - - this.activate = activate; - this.deactivate = deactivate; - this.dispose = dispose; - this.getObjects = getObjects; - this.getRaycaster = getRaycaster; - - } - -} - -export { DragControls }; diff --git a/three/addons/controls/FirstPersonControls.js b/three/addons/controls/FirstPersonControls.js deleted file mode 100644 index 0d03421..0000000 --- a/three/addons/controls/FirstPersonControls.js +++ /dev/null @@ -1,325 +0,0 @@ -import { - MathUtils, - Spherical, - Vector3 -} from 'three'; - -const _lookDirection = new Vector3(); -const _spherical = new Spherical(); -const _target = new Vector3(); - -class FirstPersonControls { - - constructor( object, domElement ) { - - this.object = object; - this.domElement = domElement; - - // API - - this.enabled = true; - - this.movementSpeed = 1.0; - this.lookSpeed = 0.005; - - this.lookVertical = true; - this.autoForward = false; - - this.activeLook = true; - - this.heightSpeed = false; - this.heightCoef = 1.0; - this.heightMin = 0.0; - this.heightMax = 1.0; - - this.constrainVertical = false; - this.verticalMin = 0; - this.verticalMax = Math.PI; - - this.mouseDragOn = false; - - // internals - - this.autoSpeedFactor = 0.0; - - this.pointerX = 0; - this.pointerY = 0; - - this.moveForward = false; - this.moveBackward = false; - this.moveLeft = false; - this.moveRight = false; - - this.viewHalfX = 0; - this.viewHalfY = 0; - - // private variables - - let lat = 0; - let lon = 0; - - // - - this.handleResize = function () { - - if ( this.domElement === document ) { - - this.viewHalfX = window.innerWidth / 2; - this.viewHalfY = window.innerHeight / 2; - - } else { - - this.viewHalfX = this.domElement.offsetWidth / 2; - this.viewHalfY = this.domElement.offsetHeight / 2; - - } - - }; - - this.onPointerDown = function ( event ) { - - if ( this.domElement !== document ) { - - this.domElement.focus(); - - } - - if ( this.activeLook ) { - - switch ( event.button ) { - - case 0: this.moveForward = true; break; - case 2: this.moveBackward = true; break; - - } - - } - - this.mouseDragOn = true; - - }; - - this.onPointerUp = function ( event ) { - - if ( this.activeLook ) { - - switch ( event.button ) { - - case 0: this.moveForward = false; break; - case 2: this.moveBackward = false; break; - - } - - } - - this.mouseDragOn = false; - - }; - - this.onPointerMove = function ( event ) { - - if ( this.domElement === document ) { - - this.pointerX = event.pageX - this.viewHalfX; - this.pointerY = event.pageY - this.viewHalfY; - - } else { - - this.pointerX = event.pageX - this.domElement.offsetLeft - this.viewHalfX; - this.pointerY = event.pageY - this.domElement.offsetTop - this.viewHalfY; - - } - - }; - - this.onKeyDown = function ( event ) { - - switch ( event.code ) { - - case 'ArrowUp': - case 'KeyW': this.moveForward = true; break; - - case 'ArrowLeft': - case 'KeyA': this.moveLeft = true; break; - - case 'ArrowDown': - case 'KeyS': this.moveBackward = true; break; - - case 'ArrowRight': - case 'KeyD': this.moveRight = true; break; - - case 'KeyR': this.moveUp = true; break; - case 'KeyF': this.moveDown = true; break; - - } - - }; - - this.onKeyUp = function ( event ) { - - switch ( event.code ) { - - case 'ArrowUp': - case 'KeyW': this.moveForward = false; break; - - case 'ArrowLeft': - case 'KeyA': this.moveLeft = false; break; - - case 'ArrowDown': - case 'KeyS': this.moveBackward = false; break; - - case 'ArrowRight': - case 'KeyD': this.moveRight = false; break; - - case 'KeyR': this.moveUp = false; break; - case 'KeyF': this.moveDown = false; break; - - } - - }; - - this.lookAt = function ( x, y, z ) { - - if ( x.isVector3 ) { - - _target.copy( x ); - - } else { - - _target.set( x, y, z ); - - } - - this.object.lookAt( _target ); - - setOrientation( this ); - - return this; - - }; - - this.update = function () { - - const targetPosition = new Vector3(); - - return function update( delta ) { - - if ( this.enabled === false ) return; - - if ( this.heightSpeed ) { - - const y = MathUtils.clamp( this.object.position.y, this.heightMin, this.heightMax ); - const heightDelta = y - this.heightMin; - - this.autoSpeedFactor = delta * ( heightDelta * this.heightCoef ); - - } else { - - this.autoSpeedFactor = 0.0; - - } - - const actualMoveSpeed = delta * this.movementSpeed; - - if ( this.moveForward || ( this.autoForward && ! this.moveBackward ) ) this.object.translateZ( - ( actualMoveSpeed + this.autoSpeedFactor ) ); - if ( this.moveBackward ) this.object.translateZ( actualMoveSpeed ); - - if ( this.moveLeft ) this.object.translateX( - actualMoveSpeed ); - if ( this.moveRight ) this.object.translateX( actualMoveSpeed ); - - if ( this.moveUp ) this.object.translateY( actualMoveSpeed ); - if ( this.moveDown ) this.object.translateY( - actualMoveSpeed ); - - let actualLookSpeed = delta * this.lookSpeed; - - if ( ! this.activeLook ) { - - actualLookSpeed = 0; - - } - - let verticalLookRatio = 1; - - if ( this.constrainVertical ) { - - verticalLookRatio = Math.PI / ( this.verticalMax - this.verticalMin ); - - } - - lon -= this.pointerX * actualLookSpeed; - if ( this.lookVertical ) lat -= this.pointerY * actualLookSpeed * verticalLookRatio; - - lat = Math.max( - 85, Math.min( 85, lat ) ); - - let phi = MathUtils.degToRad( 90 - lat ); - const theta = MathUtils.degToRad( lon ); - - if ( this.constrainVertical ) { - - phi = MathUtils.mapLinear( phi, 0, Math.PI, this.verticalMin, this.verticalMax ); - - } - - const position = this.object.position; - - targetPosition.setFromSphericalCoords( 1, phi, theta ).add( position ); - - this.object.lookAt( targetPosition ); - - }; - - }(); - - this.dispose = function () { - - this.domElement.removeEventListener( 'contextmenu', contextmenu ); - this.domElement.removeEventListener( 'pointerdown', _onPointerDown ); - this.domElement.removeEventListener( 'pointermove', _onPointerMove ); - this.domElement.removeEventListener( 'pointerup', _onPointerUp ); - - window.removeEventListener( 'keydown', _onKeyDown ); - window.removeEventListener( 'keyup', _onKeyUp ); - - }; - - const _onPointerMove = this.onPointerMove.bind( this ); - const _onPointerDown = this.onPointerDown.bind( this ); - const _onPointerUp = this.onPointerUp.bind( this ); - const _onKeyDown = this.onKeyDown.bind( this ); - const _onKeyUp = this.onKeyUp.bind( this ); - - this.domElement.addEventListener( 'contextmenu', contextmenu ); - this.domElement.addEventListener( 'pointerdown', _onPointerDown ); - this.domElement.addEventListener( 'pointermove', _onPointerMove ); - this.domElement.addEventListener( 'pointerup', _onPointerUp ); - - window.addEventListener( 'keydown', _onKeyDown ); - window.addEventListener( 'keyup', _onKeyUp ); - - function setOrientation( controls ) { - - const quaternion = controls.object.quaternion; - - _lookDirection.set( 0, 0, - 1 ).applyQuaternion( quaternion ); - _spherical.setFromVector3( _lookDirection ); - - lat = 90 - MathUtils.radToDeg( _spherical.phi ); - lon = MathUtils.radToDeg( _spherical.theta ); - - } - - this.handleResize(); - - setOrientation( this ); - - } - -} - -function contextmenu( event ) { - - event.preventDefault(); - -} - -export { FirstPersonControls }; diff --git a/three/addons/controls/FlyControls.js b/three/addons/controls/FlyControls.js deleted file mode 100644 index 5026bde..0000000 --- a/three/addons/controls/FlyControls.js +++ /dev/null @@ -1,326 +0,0 @@ -import { - EventDispatcher, - Quaternion, - Vector3 -} from 'three'; - -const _changeEvent = { type: 'change' }; - -class FlyControls extends EventDispatcher { - - constructor( object, domElement ) { - - super(); - - this.object = object; - this.domElement = domElement; - - // API - - // Set to false to disable this control - this.enabled = true; - - this.movementSpeed = 1.0; - this.rollSpeed = 0.005; - - this.dragToLook = false; - this.autoForward = false; - - // disable default target object behavior - - // internals - - const scope = this; - - const EPS = 0.000001; - - const lastQuaternion = new Quaternion(); - const lastPosition = new Vector3(); - - this.tmpQuaternion = new Quaternion(); - - this.status = 0; - - this.moveState = { up: 0, down: 0, left: 0, right: 0, forward: 0, back: 0, pitchUp: 0, pitchDown: 0, yawLeft: 0, yawRight: 0, rollLeft: 0, rollRight: 0 }; - this.moveVector = new Vector3( 0, 0, 0 ); - this.rotationVector = new Vector3( 0, 0, 0 ); - - this.keydown = function ( event ) { - - if ( event.altKey || this.enabled === false ) { - - return; - - } - - switch ( event.code ) { - - case 'ShiftLeft': - case 'ShiftRight': this.movementSpeedMultiplier = .1; break; - - case 'KeyW': this.moveState.forward = 1; break; - case 'KeyS': this.moveState.back = 1; break; - - case 'KeyA': this.moveState.left = 1; break; - case 'KeyD': this.moveState.right = 1; break; - - case 'KeyR': this.moveState.up = 1; break; - case 'KeyF': this.moveState.down = 1; break; - - case 'ArrowUp': this.moveState.pitchUp = 1; break; - case 'ArrowDown': this.moveState.pitchDown = 1; break; - - case 'ArrowLeft': this.moveState.yawLeft = 1; break; - case 'ArrowRight': this.moveState.yawRight = 1; break; - - case 'KeyQ': this.moveState.rollLeft = 1; break; - case 'KeyE': this.moveState.rollRight = 1; break; - - } - - this.updateMovementVector(); - this.updateRotationVector(); - - }; - - this.keyup = function ( event ) { - - if ( this.enabled === false ) return; - - switch ( event.code ) { - - case 'ShiftLeft': - case 'ShiftRight': this.movementSpeedMultiplier = 1; break; - - case 'KeyW': this.moveState.forward = 0; break; - case 'KeyS': this.moveState.back = 0; break; - - case 'KeyA': this.moveState.left = 0; break; - case 'KeyD': this.moveState.right = 0; break; - - case 'KeyR': this.moveState.up = 0; break; - case 'KeyF': this.moveState.down = 0; break; - - case 'ArrowUp': this.moveState.pitchUp = 0; break; - case 'ArrowDown': this.moveState.pitchDown = 0; break; - - case 'ArrowLeft': this.moveState.yawLeft = 0; break; - case 'ArrowRight': this.moveState.yawRight = 0; break; - - case 'KeyQ': this.moveState.rollLeft = 0; break; - case 'KeyE': this.moveState.rollRight = 0; break; - - } - - this.updateMovementVector(); - this.updateRotationVector(); - - }; - - this.pointerdown = function ( event ) { - - if ( this.enabled === false ) return; - - if ( this.dragToLook ) { - - this.status ++; - - } else { - - switch ( event.button ) { - - case 0: this.moveState.forward = 1; break; - case 2: this.moveState.back = 1; break; - - } - - this.updateMovementVector(); - - } - - }; - - this.pointermove = function ( event ) { - - if ( this.enabled === false ) return; - - if ( ! this.dragToLook || this.status > 0 ) { - - const container = this.getContainerDimensions(); - const halfWidth = container.size[ 0 ] / 2; - const halfHeight = container.size[ 1 ] / 2; - - this.moveState.yawLeft = - ( ( event.pageX - container.offset[ 0 ] ) - halfWidth ) / halfWidth; - this.moveState.pitchDown = ( ( event.pageY - container.offset[ 1 ] ) - halfHeight ) / halfHeight; - - this.updateRotationVector(); - - } - - }; - - this.pointerup = function ( event ) { - - if ( this.enabled === false ) return; - - if ( this.dragToLook ) { - - this.status --; - - this.moveState.yawLeft = this.moveState.pitchDown = 0; - - } else { - - switch ( event.button ) { - - case 0: this.moveState.forward = 0; break; - case 2: this.moveState.back = 0; break; - - } - - this.updateMovementVector(); - - } - - this.updateRotationVector(); - - }; - - this.pointercancel = function () { - - if ( this.enabled === false ) return; - - if ( this.dragToLook ) { - - this.status = 0; - - this.moveState.yawLeft = this.moveState.pitchDown = 0; - - } else { - - this.moveState.forward = 0; - this.moveState.back = 0; - - this.updateMovementVector(); - - } - - this.updateRotationVector(); - - }; - - this.contextMenu = function ( event ) { - - if ( this.enabled === false ) return; - - event.preventDefault(); - - }; - - this.update = function ( delta ) { - - if ( this.enabled === false ) return; - - const moveMult = delta * scope.movementSpeed; - const rotMult = delta * scope.rollSpeed; - - scope.object.translateX( scope.moveVector.x * moveMult ); - scope.object.translateY( scope.moveVector.y * moveMult ); - scope.object.translateZ( scope.moveVector.z * moveMult ); - - scope.tmpQuaternion.set( scope.rotationVector.x * rotMult, scope.rotationVector.y * rotMult, scope.rotationVector.z * rotMult, 1 ).normalize(); - scope.object.quaternion.multiply( scope.tmpQuaternion ); - - if ( - lastPosition.distanceToSquared( scope.object.position ) > EPS || - 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS - ) { - - scope.dispatchEvent( _changeEvent ); - lastQuaternion.copy( scope.object.quaternion ); - lastPosition.copy( scope.object.position ); - - } - - }; - - this.updateMovementVector = function () { - - const forward = ( this.moveState.forward || ( this.autoForward && ! this.moveState.back ) ) ? 1 : 0; - - this.moveVector.x = ( - this.moveState.left + this.moveState.right ); - this.moveVector.y = ( - this.moveState.down + this.moveState.up ); - this.moveVector.z = ( - forward + this.moveState.back ); - - //console.log( 'move:', [ this.moveVector.x, this.moveVector.y, this.moveVector.z ] ); - - }; - - this.updateRotationVector = function () { - - this.rotationVector.x = ( - this.moveState.pitchDown + this.moveState.pitchUp ); - this.rotationVector.y = ( - this.moveState.yawRight + this.moveState.yawLeft ); - this.rotationVector.z = ( - this.moveState.rollRight + this.moveState.rollLeft ); - - //console.log( 'rotate:', [ this.rotationVector.x, this.rotationVector.y, this.rotationVector.z ] ); - - }; - - this.getContainerDimensions = function () { - - if ( this.domElement != document ) { - - return { - size: [ this.domElement.offsetWidth, this.domElement.offsetHeight ], - offset: [ this.domElement.offsetLeft, this.domElement.offsetTop ] - }; - - } else { - - return { - size: [ window.innerWidth, window.innerHeight ], - offset: [ 0, 0 ] - }; - - } - - }; - - this.dispose = function () { - - this.domElement.removeEventListener( 'contextmenu', _contextmenu ); - this.domElement.removeEventListener( 'pointerdown', _pointerdown ); - this.domElement.removeEventListener( 'pointermove', _pointermove ); - this.domElement.removeEventListener( 'pointerup', _pointerup ); - this.domElement.removeEventListener( 'pointercancel', _pointercancel ); - - window.removeEventListener( 'keydown', _keydown ); - window.removeEventListener( 'keyup', _keyup ); - - }; - - const _contextmenu = this.contextMenu.bind( this ); - const _pointermove = this.pointermove.bind( this ); - const _pointerdown = this.pointerdown.bind( this ); - const _pointerup = this.pointerup.bind( this ); - const _pointercancel = this.pointercancel.bind( this ); - const _keydown = this.keydown.bind( this ); - const _keyup = this.keyup.bind( this ); - - this.domElement.addEventListener( 'contextmenu', _contextmenu ); - this.domElement.addEventListener( 'pointerdown', _pointerdown ); - this.domElement.addEventListener( 'pointermove', _pointermove ); - this.domElement.addEventListener( 'pointerup', _pointerup ); - this.domElement.addEventListener( 'pointercancel', _pointercancel ); - - window.addEventListener( 'keydown', _keydown ); - window.addEventListener( 'keyup', _keyup ); - - this.updateMovementVector(); - this.updateRotationVector(); - - } - -} - -export { FlyControls }; diff --git a/three/addons/controls/MapControls.js b/three/addons/controls/MapControls.js deleted file mode 100644 index 5667905..0000000 --- a/three/addons/controls/MapControls.js +++ /dev/null @@ -1,28 +0,0 @@ -import { MOUSE, TOUCH } from 'three'; - -import { OrbitControls } from './OrbitControls.js'; - -// MapControls performs orbiting, dollying (zooming), and panning. -// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). -// -// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate -// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish -// Pan - left mouse, or arrow keys / touch: one-finger move - -class MapControls extends OrbitControls { - - constructor( object, domElement ) { - - super( object, domElement ); - - this.screenSpacePanning = false; // pan orthogonal to world-space direction camera.up - - this.mouseButtons = { LEFT: MOUSE.PAN, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.ROTATE }; - - this.touches = { ONE: TOUCH.PAN, TWO: TOUCH.DOLLY_ROTATE }; - - } - -} - -export { MapControls }; diff --git a/three/addons/controls/OrbitControls.js b/three/addons/controls/OrbitControls.js deleted file mode 100644 index f29e7fe..0000000 --- a/three/addons/controls/OrbitControls.js +++ /dev/null @@ -1,1417 +0,0 @@ -import { - EventDispatcher, - MOUSE, - Quaternion, - Spherical, - TOUCH, - Vector2, - Vector3, - Plane, - Ray, - MathUtils -} from 'three'; - -// OrbitControls performs orbiting, dollying (zooming), and panning. -// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). -// -// Orbit - left mouse / touch: one-finger move -// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish -// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move - -const _changeEvent = { type: 'change' }; -const _startEvent = { type: 'start' }; -const _endEvent = { type: 'end' }; -const _ray = new Ray(); -const _plane = new Plane(); -const TILT_LIMIT = Math.cos( 70 * MathUtils.DEG2RAD ); - -class OrbitControls extends EventDispatcher { - - constructor( object, domElement ) { - - super(); - - this.object = object; - this.domElement = domElement; - this.domElement.style.touchAction = 'none'; // disable touch scroll - - // Set to false to disable this control - this.enabled = true; - - // "target" sets the location of focus, where the object orbits around - this.target = new Vector3(); - - // Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect - this.cursor = new Vector3(); - - // How far you can dolly in and out ( PerspectiveCamera only ) - this.minDistance = 0; - this.maxDistance = Infinity; - - // How far you can zoom in and out ( OrthographicCamera only ) - this.minZoom = 0; - this.maxZoom = Infinity; - - // Limit camera target within a spherical area around the cursor - this.minTargetRadius = 0; - this.maxTargetRadius = Infinity; - - // How far you can orbit vertically, upper and lower limits. - // Range is 0 to Math.PI radians. - this.minPolarAngle = 0; // radians - this.maxPolarAngle = Math.PI; // radians - - // How far you can orbit horizontally, upper and lower limits. - // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI ) - this.minAzimuthAngle = - Infinity; // radians - this.maxAzimuthAngle = Infinity; // radians - - // Set to true to enable damping (inertia) - // If damping is enabled, you must call controls.update() in your animation loop - this.enableDamping = false; - this.dampingFactor = 0.05; - - // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. - // Set to false to disable zooming - this.enableZoom = true; - this.zoomSpeed = 1.0; - - // Set to false to disable rotating - this.enableRotate = true; - this.rotateSpeed = 1.0; - - // Set to false to disable panning - this.enablePan = true; - this.panSpeed = 1.0; - this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up - this.keyPanSpeed = 7.0; // pixels moved per arrow key push - this.zoomToCursor = false; - - // Set to true to automatically rotate around the target - // If auto-rotate is enabled, you must call controls.update() in your animation loop - this.autoRotate = false; - this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60 - - // The four arrow keys - this.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' }; - - // Mouse buttons - this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN }; - - // Touch fingers - this.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN }; - - // for reset - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - this.zoom0 = this.object.zoom; - - // the target DOM element for key events - this._domElementKeyEvents = null; - - // - // public methods - // - - this.getPolarAngle = function () { - - return spherical.phi; - - }; - - this.getAzimuthalAngle = function () { - - return spherical.theta; - - }; - - this.getDistance = function () { - - return this.object.position.distanceTo( this.target ); - - }; - - this.listenToKeyEvents = function ( domElement ) { - - domElement.addEventListener( 'keydown', onKeyDown ); - this._domElementKeyEvents = domElement; - - }; - - this.stopListenToKeyEvents = function () { - - this._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown ); - this._domElementKeyEvents = null; - - }; - - this.saveState = function () { - - scope.target0.copy( scope.target ); - scope.position0.copy( scope.object.position ); - scope.zoom0 = scope.object.zoom; - - }; - - this.reset = function () { - - scope.target.copy( scope.target0 ); - scope.object.position.copy( scope.position0 ); - scope.object.zoom = scope.zoom0; - - scope.object.updateProjectionMatrix(); - scope.dispatchEvent( _changeEvent ); - - scope.update(); - - state = STATE.NONE; - - }; - - // this method is exposed, but perhaps it would be better if we can make it private... - this.update = function () { - - const offset = new Vector3(); - - // so camera.up is the orbit axis - const quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) ); - const quatInverse = quat.clone().invert(); - - const lastPosition = new Vector3(); - const lastQuaternion = new Quaternion(); - const lastTargetPosition = new Vector3(); - - const twoPI = 2 * Math.PI; - - return function update( deltaTime = null ) { - - const position = scope.object.position; - - offset.copy( position ).sub( scope.target ); - - // rotate offset to "y-axis-is-up" space - offset.applyQuaternion( quat ); - - // angle from z-axis around y-axis - spherical.setFromVector3( offset ); - - if ( scope.autoRotate && state === STATE.NONE ) { - - rotateLeft( getAutoRotationAngle( deltaTime ) ); - - } - - if ( scope.enableDamping ) { - - spherical.theta += sphericalDelta.theta * scope.dampingFactor; - spherical.phi += sphericalDelta.phi * scope.dampingFactor; - - } else { - - spherical.theta += sphericalDelta.theta; - spherical.phi += sphericalDelta.phi; - - } - - // restrict theta to be between desired limits - - let min = scope.minAzimuthAngle; - let max = scope.maxAzimuthAngle; - - if ( isFinite( min ) && isFinite( max ) ) { - - if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI; - - if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI; - - if ( min <= max ) { - - spherical.theta = Math.max( min, Math.min( max, spherical.theta ) ); - - } else { - - spherical.theta = ( spherical.theta > ( min + max ) / 2 ) ? - Math.max( min, spherical.theta ) : - Math.min( max, spherical.theta ); - - } - - } - - // restrict phi to be between desired limits - spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); - - spherical.makeSafe(); - - - // move target to panned location - - if ( scope.enableDamping === true ) { - - scope.target.addScaledVector( panOffset, scope.dampingFactor ); - - } else { - - scope.target.add( panOffset ); - - } - - // Limit the target distance from the cursor to create a sphere around the center of interest - scope.target.sub( scope.cursor ); - scope.target.clampLength( scope.minTargetRadius, scope.maxTargetRadius ); - scope.target.add( scope.cursor ); - - // adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera - // we adjust zoom later in these cases - if ( scope.zoomToCursor && performCursorZoom || scope.object.isOrthographicCamera ) { - - spherical.radius = clampDistance( spherical.radius ); - - } else { - - spherical.radius = clampDistance( spherical.radius * scale ); - - } - - offset.setFromSpherical( spherical ); - - // rotate offset back to "camera-up-vector-is-up" space - offset.applyQuaternion( quatInverse ); - - position.copy( scope.target ).add( offset ); - - scope.object.lookAt( scope.target ); - - if ( scope.enableDamping === true ) { - - sphericalDelta.theta *= ( 1 - scope.dampingFactor ); - sphericalDelta.phi *= ( 1 - scope.dampingFactor ); - - panOffset.multiplyScalar( 1 - scope.dampingFactor ); - - } else { - - sphericalDelta.set( 0, 0, 0 ); - - panOffset.set( 0, 0, 0 ); - - } - - // adjust camera position - let zoomChanged = false; - if ( scope.zoomToCursor && performCursorZoom ) { - - let newRadius = null; - if ( scope.object.isPerspectiveCamera ) { - - // move the camera down the pointer ray - // this method avoids floating point error - const prevRadius = offset.length(); - newRadius = clampDistance( prevRadius * scale ); - - const radiusDelta = prevRadius - newRadius; - scope.object.position.addScaledVector( dollyDirection, radiusDelta ); - scope.object.updateMatrixWorld(); - - } else if ( scope.object.isOrthographicCamera ) { - - // adjust the ortho camera position based on zoom changes - const mouseBefore = new Vector3( mouse.x, mouse.y, 0 ); - mouseBefore.unproject( scope.object ); - - scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) ); - scope.object.updateProjectionMatrix(); - zoomChanged = true; - - const mouseAfter = new Vector3( mouse.x, mouse.y, 0 ); - mouseAfter.unproject( scope.object ); - - scope.object.position.sub( mouseAfter ).add( mouseBefore ); - scope.object.updateMatrixWorld(); - - newRadius = offset.length(); - - } else { - - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.' ); - scope.zoomToCursor = false; - - } - - // handle the placement of the target - if ( newRadius !== null ) { - - if ( this.screenSpacePanning ) { - - // position the orbit target in front of the new camera position - scope.target.set( 0, 0, - 1 ) - .transformDirection( scope.object.matrix ) - .multiplyScalar( newRadius ) - .add( scope.object.position ); - - } else { - - // get the ray and translation plane to compute target - _ray.origin.copy( scope.object.position ); - _ray.direction.set( 0, 0, - 1 ).transformDirection( scope.object.matrix ); - - // if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid - // extremely large values - if ( Math.abs( scope.object.up.dot( _ray.direction ) ) < TILT_LIMIT ) { - - object.lookAt( scope.target ); - - } else { - - _plane.setFromNormalAndCoplanarPoint( scope.object.up, scope.target ); - _ray.intersectPlane( _plane, scope.target ); - - } - - } - - } - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) ); - scope.object.updateProjectionMatrix(); - zoomChanged = true; - - } - - scale = 1; - performCursorZoom = false; - - // update condition is: - // min(camera displacement, camera rotation in radians)^2 > EPS - // using small-angle approximation cos(x/2) = 1 - x^2 / 8 - - if ( zoomChanged || - lastPosition.distanceToSquared( scope.object.position ) > EPS || - 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS || - lastTargetPosition.distanceToSquared( scope.target ) > 0 ) { - - scope.dispatchEvent( _changeEvent ); - - lastPosition.copy( scope.object.position ); - lastQuaternion.copy( scope.object.quaternion ); - lastTargetPosition.copy( scope.target ); - - return true; - - } - - return false; - - }; - - }(); - - this.dispose = function () { - - scope.domElement.removeEventListener( 'contextmenu', onContextMenu ); - - scope.domElement.removeEventListener( 'pointerdown', onPointerDown ); - scope.domElement.removeEventListener( 'pointercancel', onPointerUp ); - scope.domElement.removeEventListener( 'wheel', onMouseWheel ); - - scope.domElement.removeEventListener( 'pointermove', onPointerMove ); - scope.domElement.removeEventListener( 'pointerup', onPointerUp ); - - - if ( scope._domElementKeyEvents !== null ) { - - scope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown ); - scope._domElementKeyEvents = null; - - } - - //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? - - }; - - // - // internals - // - - const scope = this; - - const STATE = { - NONE: - 1, - ROTATE: 0, - DOLLY: 1, - PAN: 2, - TOUCH_ROTATE: 3, - TOUCH_PAN: 4, - TOUCH_DOLLY_PAN: 5, - TOUCH_DOLLY_ROTATE: 6 - }; - - let state = STATE.NONE; - - const EPS = 0.000001; - - // current position in spherical coordinates - const spherical = new Spherical(); - const sphericalDelta = new Spherical(); - - let scale = 1; - const panOffset = new Vector3(); - - const rotateStart = new Vector2(); - const rotateEnd = new Vector2(); - const rotateDelta = new Vector2(); - - const panStart = new Vector2(); - const panEnd = new Vector2(); - const panDelta = new Vector2(); - - const dollyStart = new Vector2(); - const dollyEnd = new Vector2(); - const dollyDelta = new Vector2(); - - const dollyDirection = new Vector3(); - const mouse = new Vector2(); - let performCursorZoom = false; - - const pointers = []; - const pointerPositions = {}; - - function getAutoRotationAngle( deltaTime ) { - - if ( deltaTime !== null ) { - - return ( 2 * Math.PI / 60 * scope.autoRotateSpeed ) * deltaTime; - - } else { - - return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; - - } - - } - - function getZoomScale( delta ) { - - const normalized_delta = Math.abs( delta ) / ( 100 * ( window.devicePixelRatio | 0 ) ); - return Math.pow( 0.95, scope.zoomSpeed * normalized_delta ); - - } - - function rotateLeft( angle ) { - - sphericalDelta.theta -= angle; - - } - - function rotateUp( angle ) { - - sphericalDelta.phi -= angle; - - } - - const panLeft = function () { - - const v = new Vector3(); - - return function panLeft( distance, objectMatrix ) { - - v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix - v.multiplyScalar( - distance ); - - panOffset.add( v ); - - }; - - }(); - - const panUp = function () { - - const v = new Vector3(); - - return function panUp( distance, objectMatrix ) { - - if ( scope.screenSpacePanning === true ) { - - v.setFromMatrixColumn( objectMatrix, 1 ); - - } else { - - v.setFromMatrixColumn( objectMatrix, 0 ); - v.crossVectors( scope.object.up, v ); - - } - - v.multiplyScalar( distance ); - - panOffset.add( v ); - - }; - - }(); - - // deltaX and deltaY are in pixels; right and down are positive - const pan = function () { - - const offset = new Vector3(); - - return function pan( deltaX, deltaY ) { - - const element = scope.domElement; - - if ( scope.object.isPerspectiveCamera ) { - - // perspective - const position = scope.object.position; - offset.copy( position ).sub( scope.target ); - let targetDistance = offset.length(); - - // half of the fov is center to top of screen - targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); - - // we use only clientHeight here so aspect ratio does not distort speed - panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); - panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); - - } else if ( scope.object.isOrthographicCamera ) { - - // orthographic - panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); - panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); - - } else { - - // camera neither orthographic nor perspective - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); - scope.enablePan = false; - - } - - }; - - }(); - - function dollyOut( dollyScale ) { - - if ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) { - - scale /= dollyScale; - - } else { - - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); - scope.enableZoom = false; - - } - - } - - function dollyIn( dollyScale ) { - - if ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) { - - scale *= dollyScale; - - } else { - - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); - scope.enableZoom = false; - - } - - } - - function updateZoomParameters( x, y ) { - - if ( ! scope.zoomToCursor ) { - - return; - - } - - performCursorZoom = true; - - const rect = scope.domElement.getBoundingClientRect(); - const dx = x - rect.left; - const dy = y - rect.top; - const w = rect.width; - const h = rect.height; - - mouse.x = ( dx / w ) * 2 - 1; - mouse.y = - ( dy / h ) * 2 + 1; - - dollyDirection.set( mouse.x, mouse.y, 1 ).unproject( scope.object ).sub( scope.object.position ).normalize(); - - } - - function clampDistance( dist ) { - - return Math.max( scope.minDistance, Math.min( scope.maxDistance, dist ) ); - - } - - // - // event callbacks - update the object state - // - - function handleMouseDownRotate( event ) { - - rotateStart.set( event.clientX, event.clientY ); - - } - - function handleMouseDownDolly( event ) { - - updateZoomParameters( event.clientX, event.clientX ); - dollyStart.set( event.clientX, event.clientY ); - - } - - function handleMouseDownPan( event ) { - - panStart.set( event.clientX, event.clientY ); - - } - - function handleMouseMoveRotate( event ) { - - rotateEnd.set( event.clientX, event.clientY ); - - rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); - - const element = scope.domElement; - - rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height - - rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); - - rotateStart.copy( rotateEnd ); - - scope.update(); - - } - - function handleMouseMoveDolly( event ) { - - dollyEnd.set( event.clientX, event.clientY ); - - dollyDelta.subVectors( dollyEnd, dollyStart ); - - if ( dollyDelta.y > 0 ) { - - dollyOut( getZoomScale( dollyDelta.y ) ); - - } else if ( dollyDelta.y < 0 ) { - - dollyIn( getZoomScale( dollyDelta.y ) ); - - } - - dollyStart.copy( dollyEnd ); - - scope.update(); - - } - - function handleMouseMovePan( event ) { - - panEnd.set( event.clientX, event.clientY ); - - panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); - - pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - scope.update(); - - } - - function handleMouseWheel( event ) { - - updateZoomParameters( event.clientX, event.clientY ); - - if ( event.deltaY < 0 ) { - - dollyIn( getZoomScale( event.deltaY ) ); - - } else if ( event.deltaY > 0 ) { - - dollyOut( getZoomScale( event.deltaY ) ); - - } - - scope.update(); - - } - - function handleKeyDown( event ) { - - let needsUpdate = false; - - switch ( event.code ) { - - case scope.keys.UP: - - if ( event.ctrlKey || event.metaKey || event.shiftKey ) { - - rotateUp( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight ); - - } else { - - pan( 0, scope.keyPanSpeed ); - - } - - needsUpdate = true; - break; - - case scope.keys.BOTTOM: - - if ( event.ctrlKey || event.metaKey || event.shiftKey ) { - - rotateUp( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight ); - - } else { - - pan( 0, - scope.keyPanSpeed ); - - } - - needsUpdate = true; - break; - - case scope.keys.LEFT: - - if ( event.ctrlKey || event.metaKey || event.shiftKey ) { - - rotateLeft( 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight ); - - } else { - - pan( scope.keyPanSpeed, 0 ); - - } - - needsUpdate = true; - break; - - case scope.keys.RIGHT: - - if ( event.ctrlKey || event.metaKey || event.shiftKey ) { - - rotateLeft( - 2 * Math.PI * scope.rotateSpeed / scope.domElement.clientHeight ); - - } else { - - pan( - scope.keyPanSpeed, 0 ); - - } - - needsUpdate = true; - break; - - } - - if ( needsUpdate ) { - - // prevent the browser from scrolling on cursor keys - event.preventDefault(); - - scope.update(); - - } - - - } - - function handleTouchStartRotate( event ) { - - if ( pointers.length === 1 ) { - - rotateStart.set( event.pageX, event.pageY ); - - } else { - - const position = getSecondPointerPosition( event ); - - const x = 0.5 * ( event.pageX + position.x ); - const y = 0.5 * ( event.pageY + position.y ); - - rotateStart.set( x, y ); - - } - - } - - function handleTouchStartPan( event ) { - - if ( pointers.length === 1 ) { - - panStart.set( event.pageX, event.pageY ); - - } else { - - const position = getSecondPointerPosition( event ); - - const x = 0.5 * ( event.pageX + position.x ); - const y = 0.5 * ( event.pageY + position.y ); - - panStart.set( x, y ); - - } - - } - - function handleTouchStartDolly( event ) { - - const position = getSecondPointerPosition( event ); - - const dx = event.pageX - position.x; - const dy = event.pageY - position.y; - - const distance = Math.sqrt( dx * dx + dy * dy ); - - dollyStart.set( 0, distance ); - - } - - function handleTouchStartDollyPan( event ) { - - if ( scope.enableZoom ) handleTouchStartDolly( event ); - - if ( scope.enablePan ) handleTouchStartPan( event ); - - } - - function handleTouchStartDollyRotate( event ) { - - if ( scope.enableZoom ) handleTouchStartDolly( event ); - - if ( scope.enableRotate ) handleTouchStartRotate( event ); - - } - - function handleTouchMoveRotate( event ) { - - if ( pointers.length == 1 ) { - - rotateEnd.set( event.pageX, event.pageY ); - - } else { - - const position = getSecondPointerPosition( event ); - - const x = 0.5 * ( event.pageX + position.x ); - const y = 0.5 * ( event.pageY + position.y ); - - rotateEnd.set( x, y ); - - } - - rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); - - const element = scope.domElement; - - rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height - - rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); - - rotateStart.copy( rotateEnd ); - - } - - function handleTouchMovePan( event ) { - - if ( pointers.length === 1 ) { - - panEnd.set( event.pageX, event.pageY ); - - } else { - - const position = getSecondPointerPosition( event ); - - const x = 0.5 * ( event.pageX + position.x ); - const y = 0.5 * ( event.pageY + position.y ); - - panEnd.set( x, y ); - - } - - panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); - - pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - } - - function handleTouchMoveDolly( event ) { - - const position = getSecondPointerPosition( event ); - - const dx = event.pageX - position.x; - const dy = event.pageY - position.y; - - const distance = Math.sqrt( dx * dx + dy * dy ); - - dollyEnd.set( 0, distance ); - - dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) ); - - dollyOut( dollyDelta.y ); - - dollyStart.copy( dollyEnd ); - - const centerX = ( event.pageX + position.x ) * 0.5; - const centerY = ( event.pageY + position.y ) * 0.5; - - updateZoomParameters( centerX, centerY ); - - } - - function handleTouchMoveDollyPan( event ) { - - if ( scope.enableZoom ) handleTouchMoveDolly( event ); - - if ( scope.enablePan ) handleTouchMovePan( event ); - - } - - function handleTouchMoveDollyRotate( event ) { - - if ( scope.enableZoom ) handleTouchMoveDolly( event ); - - if ( scope.enableRotate ) handleTouchMoveRotate( event ); - - } - - // - // event handlers - FSM: listen for events and reset state - // - - function onPointerDown( event ) { - - if ( scope.enabled === false ) return; - - if ( pointers.length === 0 ) { - - scope.domElement.setPointerCapture( event.pointerId ); - - scope.domElement.addEventListener( 'pointermove', onPointerMove ); - scope.domElement.addEventListener( 'pointerup', onPointerUp ); - - } - - // - - addPointer( event ); - - if ( event.pointerType === 'touch' ) { - - onTouchStart( event ); - - } else { - - onMouseDown( event ); - - } - - } - - function onPointerMove( event ) { - - if ( scope.enabled === false ) return; - - if ( event.pointerType === 'touch' ) { - - onTouchMove( event ); - - } else { - - onMouseMove( event ); - - } - - } - - function onPointerUp( event ) { - - removePointer( event ); - - if ( pointers.length === 0 ) { - - scope.domElement.releasePointerCapture( event.pointerId ); - - scope.domElement.removeEventListener( 'pointermove', onPointerMove ); - scope.domElement.removeEventListener( 'pointerup', onPointerUp ); - - } - - scope.dispatchEvent( _endEvent ); - - state = STATE.NONE; - - } - - function onMouseDown( event ) { - - let mouseAction; - - switch ( event.button ) { - - case 0: - - mouseAction = scope.mouseButtons.LEFT; - break; - - case 1: - - mouseAction = scope.mouseButtons.MIDDLE; - break; - - case 2: - - mouseAction = scope.mouseButtons.RIGHT; - break; - - default: - - mouseAction = - 1; - - } - - switch ( mouseAction ) { - - case MOUSE.DOLLY: - - if ( scope.enableZoom === false ) return; - - handleMouseDownDolly( event ); - - state = STATE.DOLLY; - - break; - - case MOUSE.ROTATE: - - if ( event.ctrlKey || event.metaKey || event.shiftKey ) { - - if ( scope.enablePan === false ) return; - - handleMouseDownPan( event ); - - state = STATE.PAN; - - } else { - - if ( scope.enableRotate === false ) return; - - handleMouseDownRotate( event ); - - state = STATE.ROTATE; - - } - - break; - - case MOUSE.PAN: - - if ( event.ctrlKey || event.metaKey || event.shiftKey ) { - - if ( scope.enableRotate === false ) return; - - handleMouseDownRotate( event ); - - state = STATE.ROTATE; - - } else { - - if ( scope.enablePan === false ) return; - - handleMouseDownPan( event ); - - state = STATE.PAN; - - } - - break; - - default: - - state = STATE.NONE; - - } - - if ( state !== STATE.NONE ) { - - scope.dispatchEvent( _startEvent ); - - } - - } - - function onMouseMove( event ) { - - switch ( state ) { - - case STATE.ROTATE: - - if ( scope.enableRotate === false ) return; - - handleMouseMoveRotate( event ); - - break; - - case STATE.DOLLY: - - if ( scope.enableZoom === false ) return; - - handleMouseMoveDolly( event ); - - break; - - case STATE.PAN: - - if ( scope.enablePan === false ) return; - - handleMouseMovePan( event ); - - break; - - } - - } - - function onMouseWheel( event ) { - - if ( scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE ) return; - - event.preventDefault(); - - scope.dispatchEvent( _startEvent ); - - handleMouseWheel( event ); - - scope.dispatchEvent( _endEvent ); - - } - - function onKeyDown( event ) { - - if ( scope.enabled === false || scope.enablePan === false ) return; - - handleKeyDown( event ); - - } - - function onTouchStart( event ) { - - trackPointer( event ); - - switch ( pointers.length ) { - - case 1: - - switch ( scope.touches.ONE ) { - - case TOUCH.ROTATE: - - if ( scope.enableRotate === false ) return; - - handleTouchStartRotate( event ); - - state = STATE.TOUCH_ROTATE; - - break; - - case TOUCH.PAN: - - if ( scope.enablePan === false ) return; - - handleTouchStartPan( event ); - - state = STATE.TOUCH_PAN; - - break; - - default: - - state = STATE.NONE; - - } - - break; - - case 2: - - switch ( scope.touches.TWO ) { - - case TOUCH.DOLLY_PAN: - - if ( scope.enableZoom === false && scope.enablePan === false ) return; - - handleTouchStartDollyPan( event ); - - state = STATE.TOUCH_DOLLY_PAN; - - break; - - case TOUCH.DOLLY_ROTATE: - - if ( scope.enableZoom === false && scope.enableRotate === false ) return; - - handleTouchStartDollyRotate( event ); - - state = STATE.TOUCH_DOLLY_ROTATE; - - break; - - default: - - state = STATE.NONE; - - } - - break; - - default: - - state = STATE.NONE; - - } - - if ( state !== STATE.NONE ) { - - scope.dispatchEvent( _startEvent ); - - } - - } - - function onTouchMove( event ) { - - trackPointer( event ); - - switch ( state ) { - - case STATE.TOUCH_ROTATE: - - if ( scope.enableRotate === false ) return; - - handleTouchMoveRotate( event ); - - scope.update(); - - break; - - case STATE.TOUCH_PAN: - - if ( scope.enablePan === false ) return; - - handleTouchMovePan( event ); - - scope.update(); - - break; - - case STATE.TOUCH_DOLLY_PAN: - - if ( scope.enableZoom === false && scope.enablePan === false ) return; - - handleTouchMoveDollyPan( event ); - - scope.update(); - - break; - - case STATE.TOUCH_DOLLY_ROTATE: - - if ( scope.enableZoom === false && scope.enableRotate === false ) return; - - handleTouchMoveDollyRotate( event ); - - scope.update(); - - break; - - default: - - state = STATE.NONE; - - } - - } - - function onContextMenu( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - } - - function addPointer( event ) { - - pointers.push( event.pointerId ); - - } - - function removePointer( event ) { - - delete pointerPositions[ event.pointerId ]; - - for ( let i = 0; i < pointers.length; i ++ ) { - - if ( pointers[ i ] == event.pointerId ) { - - pointers.splice( i, 1 ); - return; - - } - - } - - } - - function trackPointer( event ) { - - let position = pointerPositions[ event.pointerId ]; - - if ( position === undefined ) { - - position = new Vector2(); - pointerPositions[ event.pointerId ] = position; - - } - - position.set( event.pageX, event.pageY ); - - } - - function getSecondPointerPosition( event ) { - - const pointerId = ( event.pointerId === pointers[ 0 ] ) ? pointers[ 1 ] : pointers[ 0 ]; - - return pointerPositions[ pointerId ]; - - } - - // - - scope.domElement.addEventListener( 'contextmenu', onContextMenu ); - - scope.domElement.addEventListener( 'pointerdown', onPointerDown ); - scope.domElement.addEventListener( 'pointercancel', onPointerUp ); - scope.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } ); - - // force an update at start - - this.update(); - - } - -} - -export { OrbitControls }; diff --git a/three/addons/controls/OrbitControlsModified.js b/three/addons/controls/OrbitControlsModified.js deleted file mode 100644 index b8e0ee5..0000000 --- a/three/addons/controls/OrbitControlsModified.js +++ /dev/null @@ -1,861 +0,0 @@ -import { - EventDispatcher, - MOUSE, - Quaternion, - Spherical, - TOUCH, - Vector2, - Vector3, - Plane, - Ray, - MathUtils -} from '../../../three/three.module.js'; - -// OrbitControls performs orbiting, dollying (zooming), and panning. -// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). -// -// Orbit - left mouse / touch: one-finger move -// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish -// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move - -const _changeEvent = { type: 'change' }; -const _startEvent = { type: 'start' }; -const _endEvent = { type: 'end' }; -const _ray = new Ray(); -const _plane = new Plane(); -const TILT_LIMIT = Math.cos( 70 * MathUtils.DEG2RAD ); - -class OrbitControlsModified extends EventDispatcher { - - constructor( object, config ) { - - super(); - - this.object = object; - - this.canvasWidth = config.canvasWidth; - this.canvasHeight = config.canvasHeight; - - this.devicePixelRatio = config.devicePixelRatio; - - - //this.domElement = domElement; - //this.domElement.style.touchAction = 'none'; // disable touch scroll - - // Set to false to disable this control - this.enabled = true; - - // "target" sets the location of focus, where the object orbits around - this.target = new Vector3(); - - // Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect - this.cursor = new Vector3(); - - // How far you can dolly in and out ( PerspectiveCamera only ) - this.minDistance = 0; - this.maxDistance = Infinity; - - // How far you can zoom in and out ( OrthographicCamera only ) - this.minZoom = 0; - this.maxZoom = Infinity; - - // Limit camera target within a spherical area around the cursor - this.minTargetRadius = 0; - this.maxTargetRadius = Infinity; - - // How far you can orbit vertically, upper and lower limits. - // Range is 0 to Math.PI radians. - this.minPolarAngle = 0; // radians - this.maxPolarAngle = Math.PI; // radians - - // How far you can orbit horizontally, upper and lower limits. - // If set, the interval [ min, max ] must be a sub-interval of [ - 2 PI, 2 PI ], with ( max - min < 2 PI ) - this.minAzimuthAngle = - Infinity; // radians - this.maxAzimuthAngle = Infinity; // radians - - // Set to true to enable damping (inertia) - // If damping is enabled, you must call controls.update() in your animation loop - this.enableDamping = false; - this.dampingFactor = 0.05; - - // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. - // Set to false to disable zooming - this.enableZoom = true; - this.zoomSpeed = 1.0; - - // Set to false to disable rotating - this.enableRotate = true; - this.rotateSpeed = 1.0; - - // Set to false to disable panning - this.enablePan = true; - this.panSpeed = 1.0; - this.screenSpacePanning = true; // if false, pan orthogonal to world-space direction camera.up - this.keyPanSpeed = 7.0; // pixels moved per arrow key push - this.zoomToCursor = false; - - // Set to true to automatically rotate around the target - // If auto-rotate is enabled, you must call controls.update() in your animation loop - this.autoRotate = false; - this.autoRotateSpeed = 2.0; // 30 seconds per orbit when fps is 60 - - // The four arrow keys - this.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' }; - - // Mouse buttons - this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN }; - - // Touch fingers - this.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN }; - - // for reset - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - this.zoom0 = this.object.zoom; - - // the target DOM element for key events - //this._domElementKeyEvents = null; - - // - // public methods - // - - this.getPolarAngle = function () { - - return spherical.phi; - - }; - - this.getAzimuthalAngle = function () { - - return spherical.theta; - - }; - - this.getDistance = function () { - - return this.object.position.distanceTo( this.target ); - - }; - - - - this.saveState = function () { - - scope.target0.copy( scope.target ); - scope.position0.copy( scope.object.position ); - scope.zoom0 = scope.object.zoom; - - }; - - this.reset = function () { - - scope.target.copy( scope.target0 ); - scope.object.position.copy( scope.position0 ); - scope.object.zoom = scope.zoom0; - - scope.object.updateProjectionMatrix(); - scope.dispatchEvent( _changeEvent ); - - scope.update(); - - state = STATE.NONE; - - }; - - // this method is exposed, but perhaps it would be better if we can make it private... - this.update = function () { - - const offset = new Vector3(); - - // so camera.up is the orbit axis - const quat = new Quaternion().setFromUnitVectors( object.up, new Vector3( 0, 1, 0 ) ); - const quatInverse = quat.clone().invert(); - - const lastPosition = new Vector3(); - const lastQuaternion = new Quaternion(); - const lastTargetPosition = new Vector3(); - - const twoPI = 2 * Math.PI; - - return function update( deltaTime = null ) { - - const position = scope.object.position; - - offset.copy( position ).sub( scope.target ); - - // rotate offset to "y-axis-is-up" space - offset.applyQuaternion( quat ); - - // angle from z-axis around y-axis - spherical.setFromVector3( offset ); - - if ( scope.autoRotate && state === STATE.NONE ) { - - rotateLeft( getAutoRotationAngle( deltaTime ) ); - - } - - if ( scope.enableDamping ) { - - spherical.theta += sphericalDelta.theta * scope.dampingFactor; - spherical.phi += sphericalDelta.phi * scope.dampingFactor; - - } else { - - spherical.theta += sphericalDelta.theta; - spherical.phi += sphericalDelta.phi; - - } - - // restrict theta to be between desired limits - - let min = scope.minAzimuthAngle; - let max = scope.maxAzimuthAngle; - - if ( isFinite( min ) && isFinite( max ) ) { - - if ( min < - Math.PI ) min += twoPI; else if ( min > Math.PI ) min -= twoPI; - - if ( max < - Math.PI ) max += twoPI; else if ( max > Math.PI ) max -= twoPI; - - if ( min <= max ) { - - spherical.theta = Math.max( min, Math.min( max, spherical.theta ) ); - - } else { - - spherical.theta = ( spherical.theta > ( min + max ) / 2 ) ? - Math.max( min, spherical.theta ) : - Math.min( max, spherical.theta ); - - } - - } - - // restrict phi to be between desired limits - spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); - - spherical.makeSafe(); - - - // move target to panned location - - if ( scope.enableDamping === true ) { - - scope.target.addScaledVector( panOffset, scope.dampingFactor ); - - } else { - - scope.target.add( panOffset ); - - } - - // Limit the target distance from the cursor to create a sphere around the center of interest - scope.target.sub( scope.cursor ); - scope.target.clampLength( scope.minTargetRadius, scope.maxTargetRadius ); - scope.target.add( scope.cursor ); - - // adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera - // we adjust zoom later in these cases - if ( scope.zoomToCursor && performCursorZoom || scope.object.isOrthographicCamera ) { - - spherical.radius = clampDistance( spherical.radius ); - - } else { - - spherical.radius = clampDistance( spherical.radius * scale ); - - } - - offset.setFromSpherical( spherical ); - - // rotate offset back to "camera-up-vector-is-up" space - offset.applyQuaternion( quatInverse ); - - position.copy( scope.target ).add( offset ); - - scope.object.lookAt( scope.target ); - - if ( scope.enableDamping === true ) { - - sphericalDelta.theta *= ( 1 - scope.dampingFactor ); - sphericalDelta.phi *= ( 1 - scope.dampingFactor ); - - panOffset.multiplyScalar( 1 - scope.dampingFactor ); - - } else { - - sphericalDelta.set( 0, 0, 0 ); - - panOffset.set( 0, 0, 0 ); - - } - - // adjust camera position - let zoomChanged = false; - if ( scope.zoomToCursor && performCursorZoom ) { - - let newRadius = null; - if ( scope.object.isPerspectiveCamera ) { - - // move the camera down the pointer ray - // this method avoids floating point error - const prevRadius = offset.length(); - newRadius = clampDistance( prevRadius * scale ); - - const radiusDelta = prevRadius - newRadius; - scope.object.position.addScaledVector( dollyDirection, radiusDelta ); - scope.object.updateMatrixWorld(); - - } else if ( scope.object.isOrthographicCamera ) { - - // adjust the ortho camera position based on zoom changes - const mouseBefore = new Vector3( mouse.x, mouse.y, 0 ); - mouseBefore.unproject( scope.object ); - - scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) ); - scope.object.updateProjectionMatrix(); - zoomChanged = true; - - const mouseAfter = new Vector3( mouse.x, mouse.y, 0 ); - mouseAfter.unproject( scope.object ); - - scope.object.position.sub( mouseAfter ).add( mouseBefore ); - scope.object.updateMatrixWorld(); - - newRadius = offset.length(); - - } else { - - console.warn( 'WARNING: OrbitControlsModified.js encountered an unknown camera type - zoom to cursor disabled.' ); - scope.zoomToCursor = false; - - } - - // handle the placement of the target - if ( newRadius !== null ) { - - if ( this.screenSpacePanning ) { - - // position the orbit target in front of the new camera position - scope.target.set( 0, 0, - 1 ) - .transformDirection( scope.object.matrix ) - .multiplyScalar( newRadius ) - .add( scope.object.position ); - - } else { - - // get the ray and translation plane to compute target - _ray.origin.copy( scope.object.position ); - _ray.direction.set( 0, 0, - 1 ).transformDirection( scope.object.matrix ); - - // if the camera is 20 degrees above the horizon then don't adjust the focus target to avoid - // extremely large values - if ( Math.abs( scope.object.up.dot( _ray.direction ) ) < TILT_LIMIT ) { - - object.lookAt( scope.target ); - - } else { - - _plane.setFromNormalAndCoplanarPoint( scope.object.up, scope.target ); - _ray.intersectPlane( _plane, scope.target ); - - } - - } - - } - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / scale ) ); - scope.object.updateProjectionMatrix(); - zoomChanged = true; - - } - - scale = 1; - performCursorZoom = false; - - // update condition is: - // min(camera displacement, camera rotation in radians)^2 > EPS - // using small-angle approximation cos(x/2) = 1 - x^2 / 8 - - if ( zoomChanged || - lastPosition.distanceToSquared( scope.object.position ) > EPS || - 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS || - lastTargetPosition.distanceToSquared( scope.target ) > 0 ) { - - scope.dispatchEvent( _changeEvent ); - - lastPosition.copy( scope.object.position ); - lastQuaternion.copy( scope.object.quaternion ); - lastTargetPosition.copy( scope.target ); - - return true; - - } - - return false; - - }; - - }(); - - this.dispose = function () { - - /* - scope.domElement.removeEventListener( 'contextmenu', onContextMenu ); - - scope.domElement.removeEventListener( 'pointerdown', onPointerDown ); - scope.domElement.removeEventListener( 'pointercancel', onPointerUp ); - scope.domElement.removeEventListener( 'wheel', onMouseWheel ); - - scope.domElement.removeEventListener( 'pointermove', onPointerMove ); - scope.domElement.removeEventListener( 'pointerup', onPointerUp ); - - */ - - /* - if ( scope._domElementKeyEvents !== null ) { - - scope._domElementKeyEvents.removeEventListener( 'keydown', onKeyDown ); - scope._domElementKeyEvents = null; - - } - */ - - //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? - - }; - - // - // internals - // - - const scope = this; - - const STATE = { - NONE: - 1, - ROTATE: 0, - DOLLY: 1, - PAN: 2, - TOUCH_ROTATE: 3, - TOUCH_PAN: 4, - TOUCH_DOLLY_PAN: 5, - TOUCH_DOLLY_ROTATE: 6 - }; - - let state = STATE.NONE; - - const EPS = 0.000001; - - // current position in spherical coordinates - const spherical = new Spherical(); - const sphericalDelta = new Spherical(); - - let scale = 1; - const panOffset = new Vector3(); - - const rotateStart = new Vector2(); - const rotateEnd = new Vector2(); - const rotateDelta = new Vector2(); - - const panStart = new Vector2(); - const panEnd = new Vector2(); - const panDelta = new Vector2(); - - const dollyStart = new Vector2(); - const dollyEnd = new Vector2(); - const dollyDelta = new Vector2(); - - const dollyDirection = new Vector3(); - const mouse = new Vector2(); - let performCursorZoom = false; - - const pointers = []; - const pointerPositions = {}; - - function getAutoRotationAngle( deltaTime ) { - - if ( deltaTime !== null ) { - - return ( 2 * Math.PI / 60 * scope.autoRotateSpeed ) * deltaTime; - - } else { - - return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; - - } - - } - - function getZoomScale( delta ) { - - const normalized_delta = Math.abs( delta ) / ( 100 * ( scope.devicePixelRatio | 0 ) ); - return Math.pow( 0.95, scope.zoomSpeed * normalized_delta ); - - } - - function rotateLeft( angle ) { - - sphericalDelta.theta -= angle; - - } - - function rotateUp( angle ) { - - sphericalDelta.phi -= angle; - - } - - const panLeft = function () { - - const v = new Vector3(); - - return function panLeft( distance, objectMatrix ) { - - v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix - v.multiplyScalar( - distance ); - - panOffset.add( v ); - - }; - - }(); - - const panUp = function () { - - const v = new Vector3(); - - return function panUp( distance, objectMatrix ) { - - if ( scope.screenSpacePanning === true ) { - - v.setFromMatrixColumn( objectMatrix, 1 ); - - } else { - - v.setFromMatrixColumn( objectMatrix, 0 ); - v.crossVectors( scope.object.up, v ); - - } - - v.multiplyScalar( distance ); - - panOffset.add( v ); - - }; - - }(); - - // deltaX and deltaY are in pixels; right and down are positive - const pan = function () { - - const offset = new Vector3(); - - return function pan( deltaX, deltaY ) { - - //const element = scope.domElement; - - if ( scope.object.isPerspectiveCamera ) { - - // perspective - const position = scope.object.position; - offset.copy( position ).sub( scope.target ); - let targetDistance = offset.length(); - - // half of the fov is center to top of screen - targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); - - // we use only clientHeight here so aspect ratio does not distort speed - panLeft( 2 * deltaX * targetDistance / scope.canvasWidth, scope.object.matrix ); - panUp( 2 * deltaY * targetDistance / scope.canvasHeight, scope.object.matrix ); - - } else if ( scope.object.isOrthographicCamera ) { - - // orthographic - panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / scope.canvasWidth, scope.object.matrix ); - panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / scope.canvasHeight, scope.object.matrix ); - - } else { - - // camera neither orthographic nor perspective - console.warn( 'WARNING: OrbitControlsModified.js encountered an unknown camera type - pan disabled.' ); - scope.enablePan = false; - - } - - }; - - }(); - - function dollyOut( dollyScale ) { - - if ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) { - - scale /= dollyScale; - - } else { - - console.warn( 'WARNING: OrbitControlsModified.js encountered an unknown camera type - dolly/zoom disabled.' ); - scope.enableZoom = false; - - } - - } - - function dollyIn( dollyScale ) { - - if ( scope.object.isPerspectiveCamera || scope.object.isOrthographicCamera ) { - - scale *= dollyScale; - - } else { - - console.warn( 'WARNING: OrbitControlsModified.js encountered an unknown camera type - dolly/zoom disabled.' ); - scope.enableZoom = false; - - } - - } - - function updateZoomParameters( x, y ) { - - if ( ! scope.zoomToCursor ) { - - return; - - } - - performCursorZoom = true; - - const dx = x; - const dy = y; - const w = scope.canvasWidth; - const h = scope.canvasHeight; - - mouse.x = ( dx / w ) * 2 - 1; - mouse.y = - ( dy / h ) * 2 + 1; - - dollyDirection.set( mouse.x, mouse.y, 1 ).unproject( scope.object ).sub( scope.object.position ).normalize(); - - } - - function clampDistance( dist ) { - - return Math.max( scope.minDistance, Math.min( scope.maxDistance, dist ) ); - - } - - // - // event callbacks - update the object state - // - - function handleMouseDownRotate( event ) { - - rotateStart.set( event.clientX, event.clientY ); - - } - - function handleMouseDownDolly( event ) { - - updateZoomParameters( event.clientX, event.clientX ); - dollyStart.set( event.clientX, event.clientY ); - - } - - function handleMouseDownPan( event ) { - - panStart.set( event.clientX, event.clientY ); - - } - - function handleMouseMoveRotate( event ) { - - rotateEnd.set( event.clientX, event.clientY ); - - rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); - - - rotateLeft( 2 * Math.PI * rotateDelta.x / scope.canvasHeight ); // yes, height - - rotateUp( 2 * Math.PI * rotateDelta.y / scope.canvasHeight ); - - rotateStart.copy( rotateEnd ); - - scope.update(); - - } - - function handleMouseMoveDolly( event ) { - - dollyEnd.set( event.clientX, event.clientY ); - - dollyDelta.subVectors( dollyEnd, dollyStart ); - - if ( dollyDelta.y > 0 ) { - - dollyOut( getZoomScale( dollyDelta.y ) ); - - } else if ( dollyDelta.y < 0 ) { - - dollyIn( getZoomScale( dollyDelta.y ) ); - - } - - dollyStart.copy( dollyEnd ); - - scope.update(); - - } - - function handleMouseMovePan( event ) { - - panEnd.set( event.clientX, event.clientY ); - - panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); - - pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - scope.update(); - - } - - function handleMouseWheel( event ) { - - updateZoomParameters( event.clientX, event.clientY ); - - if ( event.deltaY < 0 ) { - - dollyIn( getZoomScale( event.deltaY ) ); - - } else if ( event.deltaY > 0 ) { - - dollyOut( getZoomScale( event.deltaY ) ); - - } - - scope.update(); - - } - - - function onMouseWheel( event ) { - handleMouseWheel( event ); - } - - function onPointerUp() { - - state = STATE.NONE; - - } - - function onMouseDown( event ) { - - - - let mouseAction; - - switch ( event.button ) { - - case 0: - - mouseAction = scope.mouseButtons.LEFT; - break; - - case 1: - - mouseAction = scope.mouseButtons.MIDDLE; - break; - - case 2: - - mouseAction = scope.mouseButtons.RIGHT; - break; - - - } - - - switch ( mouseAction ) { - - case scope.mouseButtons.MIDDLE: - - handleMouseDownDolly( event ); - - state = STATE.DOLLY; - - break; - - case scope.mouseButtons.LEFT: - - handleMouseDownRotate( event ); - - state = STATE.ROTATE; - - - - break; - - case scope.mouseButtons.RIGHT: - - handleMouseDownPan( event ); - - state = STATE.PAN; - - break; - - default: - - state = STATE.NONE; - - } - - - } - - function onMouseMove( event ) { - -`` - switch ( state ) { - - case STATE.ROTATE: - - handleMouseMoveRotate( event ); - - break; - - case STATE.DOLLY: - - handleMouseMoveDolly( event ); - - break; - - case STATE.PAN: - - handleMouseMovePan( event ); - - break; - - } - - } - - - - this.onPointerUp = onPointerUp; - this.onMouseDown = onMouseDown; - this.onMouseMove = onMouseMove; - this.onMouseWheel = onMouseWheel; - - this.update(); - - } - -} - -export { OrbitControlsModified }; diff --git a/three/addons/controls/PointerLockControls.js b/three/addons/controls/PointerLockControls.js deleted file mode 100644 index 1d2856d..0000000 --- a/three/addons/controls/PointerLockControls.js +++ /dev/null @@ -1,162 +0,0 @@ -import { - Euler, - EventDispatcher, - Vector3 -} from 'three'; - -const _euler = new Euler( 0, 0, 0, 'YXZ' ); -const _vector = new Vector3(); - -const _changeEvent = { type: 'change' }; -const _lockEvent = { type: 'lock' }; -const _unlockEvent = { type: 'unlock' }; - -const _PI_2 = Math.PI / 2; - -class PointerLockControls extends EventDispatcher { - - constructor( camera, domElement ) { - - super(); - - this.camera = camera; - this.domElement = domElement; - - this.isLocked = false; - - // Set to constrain the pitch of the camera - // Range is 0 to Math.PI radians - this.minPolarAngle = 0; // radians - this.maxPolarAngle = Math.PI; // radians - - this.pointerSpeed = 1.0; - - this._onMouseMove = onMouseMove.bind( this ); - this._onPointerlockChange = onPointerlockChange.bind( this ); - this._onPointerlockError = onPointerlockError.bind( this ); - - this.connect(); - - } - - connect() { - - this.domElement.ownerDocument.addEventListener( 'mousemove', this._onMouseMove ); - this.domElement.ownerDocument.addEventListener( 'pointerlockchange', this._onPointerlockChange ); - this.domElement.ownerDocument.addEventListener( 'pointerlockerror', this._onPointerlockError ); - - } - - disconnect() { - - this.domElement.ownerDocument.removeEventListener( 'mousemove', this._onMouseMove ); - this.domElement.ownerDocument.removeEventListener( 'pointerlockchange', this._onPointerlockChange ); - this.domElement.ownerDocument.removeEventListener( 'pointerlockerror', this._onPointerlockError ); - - } - - dispose() { - - this.disconnect(); - - } - - getObject() { // retaining this method for backward compatibility - - return this.camera; - - } - - getDirection( v ) { - - return v.set( 0, 0, - 1 ).applyQuaternion( this.camera.quaternion ); - - } - - moveForward( distance ) { - - // move forward parallel to the xz-plane - // assumes camera.up is y-up - - const camera = this.camera; - - _vector.setFromMatrixColumn( camera.matrix, 0 ); - - _vector.crossVectors( camera.up, _vector ); - - camera.position.addScaledVector( _vector, distance ); - - } - - moveRight( distance ) { - - const camera = this.camera; - - _vector.setFromMatrixColumn( camera.matrix, 0 ); - - camera.position.addScaledVector( _vector, distance ); - - } - - lock() { - - this.domElement.requestPointerLock(); - - } - - unlock() { - - this.domElement.ownerDocument.exitPointerLock(); - - } - -} - -// event listeners - -function onMouseMove( event ) { - - if ( this.isLocked === false ) return; - - const movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0; - const movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0; - - const camera = this.camera; - _euler.setFromQuaternion( camera.quaternion ); - - _euler.y -= movementX * 0.002 * this.pointerSpeed; - _euler.x -= movementY * 0.002 * this.pointerSpeed; - - _euler.x = Math.max( _PI_2 - this.maxPolarAngle, Math.min( _PI_2 - this.minPolarAngle, _euler.x ) ); - - camera.quaternion.setFromEuler( _euler ); - - this.dispatchEvent( _changeEvent ); - -} - -function onPointerlockChange() { - - if ( this.domElement.ownerDocument.pointerLockElement === this.domElement ) { - - this.dispatchEvent( _lockEvent ); - - this.isLocked = true; - - } else { - - this.dispatchEvent( _unlockEvent ); - - this.isLocked = false; - - } - -} - -function onPointerlockError() { - - console.error( 'THREE.PointerLockControls: Unable to use Pointer Lock API' ); - -} - -export { PointerLockControls }; diff --git a/three/addons/controls/TrackballControls.js b/three/addons/controls/TrackballControls.js deleted file mode 100644 index c4f1114..0000000 --- a/three/addons/controls/TrackballControls.js +++ /dev/null @@ -1,828 +0,0 @@ -import { - EventDispatcher, - MathUtils, - MOUSE, - Quaternion, - Vector2, - Vector3 -} from 'three'; - -const _changeEvent = { type: 'change' }; -const _startEvent = { type: 'start' }; -const _endEvent = { type: 'end' }; - -class TrackballControls extends EventDispatcher { - - constructor( object, domElement ) { - - super(); - - const scope = this; - const STATE = { NONE: - 1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 }; - - this.object = object; - this.domElement = domElement; - this.domElement.style.touchAction = 'none'; // disable touch scroll - - // API - - this.enabled = true; - - this.screen = { left: 0, top: 0, width: 0, height: 0 }; - - this.rotateSpeed = 1.0; - this.zoomSpeed = 1.2; - this.panSpeed = 0.3; - - this.noRotate = false; - this.noZoom = false; - this.noPan = false; - - this.staticMoving = false; - this.dynamicDampingFactor = 0.2; - - this.minDistance = 0; - this.maxDistance = Infinity; - - this.minZoom = 0; - this.maxZoom = Infinity; - - this.keys = [ 'KeyA' /*A*/, 'KeyS' /*S*/, 'KeyD' /*D*/ ]; - - this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN }; - - // internals - - this.target = new Vector3(); - - const EPS = 0.000001; - - const lastPosition = new Vector3(); - let lastZoom = 1; - - let _state = STATE.NONE, - _keyState = STATE.NONE, - - _touchZoomDistanceStart = 0, - _touchZoomDistanceEnd = 0, - - _lastAngle = 0; - - const _eye = new Vector3(), - - _movePrev = new Vector2(), - _moveCurr = new Vector2(), - - _lastAxis = new Vector3(), - - _zoomStart = new Vector2(), - _zoomEnd = new Vector2(), - - _panStart = new Vector2(), - _panEnd = new Vector2(), - - _pointers = [], - _pointerPositions = {}; - - // for reset - - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - this.up0 = this.object.up.clone(); - this.zoom0 = this.object.zoom; - - // methods - - this.handleResize = function () { - - const box = scope.domElement.getBoundingClientRect(); - // adjustments come from similar code in the jquery offset() function - const d = scope.domElement.ownerDocument.documentElement; - scope.screen.left = box.left + window.pageXOffset - d.clientLeft; - scope.screen.top = box.top + window.pageYOffset - d.clientTop; - scope.screen.width = box.width; - scope.screen.height = box.height; - - }; - - const getMouseOnScreen = ( function () { - - const vector = new Vector2(); - - return function getMouseOnScreen( pageX, pageY ) { - - vector.set( - ( pageX - scope.screen.left ) / scope.screen.width, - ( pageY - scope.screen.top ) / scope.screen.height - ); - - return vector; - - }; - - }() ); - - const getMouseOnCircle = ( function () { - - const vector = new Vector2(); - - return function getMouseOnCircle( pageX, pageY ) { - - vector.set( - ( ( pageX - scope.screen.width * 0.5 - scope.screen.left ) / ( scope.screen.width * 0.5 ) ), - ( ( scope.screen.height + 2 * ( scope.screen.top - pageY ) ) / scope.screen.width ) // screen.width intentional - ); - - return vector; - - }; - - }() ); - - this.rotateCamera = ( function () { - - const axis = new Vector3(), - quaternion = new Quaternion(), - eyeDirection = new Vector3(), - objectUpDirection = new Vector3(), - objectSidewaysDirection = new Vector3(), - moveDirection = new Vector3(); - - return function rotateCamera() { - - moveDirection.set( _moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0 ); - let angle = moveDirection.length(); - - if ( angle ) { - - _eye.copy( scope.object.position ).sub( scope.target ); - - eyeDirection.copy( _eye ).normalize(); - objectUpDirection.copy( scope.object.up ).normalize(); - objectSidewaysDirection.crossVectors( objectUpDirection, eyeDirection ).normalize(); - - objectUpDirection.setLength( _moveCurr.y - _movePrev.y ); - objectSidewaysDirection.setLength( _moveCurr.x - _movePrev.x ); - - moveDirection.copy( objectUpDirection.add( objectSidewaysDirection ) ); - - axis.crossVectors( moveDirection, _eye ).normalize(); - - angle *= scope.rotateSpeed; - quaternion.setFromAxisAngle( axis, angle ); - - _eye.applyQuaternion( quaternion ); - scope.object.up.applyQuaternion( quaternion ); - - _lastAxis.copy( axis ); - _lastAngle = angle; - - } else if ( ! scope.staticMoving && _lastAngle ) { - - _lastAngle *= Math.sqrt( 1.0 - scope.dynamicDampingFactor ); - _eye.copy( scope.object.position ).sub( scope.target ); - quaternion.setFromAxisAngle( _lastAxis, _lastAngle ); - _eye.applyQuaternion( quaternion ); - scope.object.up.applyQuaternion( quaternion ); - - } - - _movePrev.copy( _moveCurr ); - - }; - - }() ); - - - this.zoomCamera = function () { - - let factor; - - if ( _state === STATE.TOUCH_ZOOM_PAN ) { - - factor = _touchZoomDistanceStart / _touchZoomDistanceEnd; - _touchZoomDistanceStart = _touchZoomDistanceEnd; - - if ( scope.object.isPerspectiveCamera ) { - - _eye.multiplyScalar( factor ); - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.zoom = MathUtils.clamp( scope.object.zoom / factor, scope.minZoom, scope.maxZoom ); - - if ( lastZoom !== scope.object.zoom ) { - - scope.object.updateProjectionMatrix(); - - } - - } else { - - console.warn( 'THREE.TrackballControls: Unsupported camera type' ); - - } - - } else { - - factor = 1.0 + ( _zoomEnd.y - _zoomStart.y ) * scope.zoomSpeed; - - if ( factor !== 1.0 && factor > 0.0 ) { - - if ( scope.object.isPerspectiveCamera ) { - - _eye.multiplyScalar( factor ); - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.zoom = MathUtils.clamp( scope.object.zoom / factor, scope.minZoom, scope.maxZoom ); - - if ( lastZoom !== scope.object.zoom ) { - - scope.object.updateProjectionMatrix(); - - } - - } else { - - console.warn( 'THREE.TrackballControls: Unsupported camera type' ); - - } - - } - - if ( scope.staticMoving ) { - - _zoomStart.copy( _zoomEnd ); - - } else { - - _zoomStart.y += ( _zoomEnd.y - _zoomStart.y ) * this.dynamicDampingFactor; - - } - - } - - }; - - this.panCamera = ( function () { - - const mouseChange = new Vector2(), - objectUp = new Vector3(), - pan = new Vector3(); - - return function panCamera() { - - mouseChange.copy( _panEnd ).sub( _panStart ); - - if ( mouseChange.lengthSq() ) { - - if ( scope.object.isOrthographicCamera ) { - - const scale_x = ( scope.object.right - scope.object.left ) / scope.object.zoom / scope.domElement.clientWidth; - const scale_y = ( scope.object.top - scope.object.bottom ) / scope.object.zoom / scope.domElement.clientWidth; - - mouseChange.x *= scale_x; - mouseChange.y *= scale_y; - - } - - mouseChange.multiplyScalar( _eye.length() * scope.panSpeed ); - - pan.copy( _eye ).cross( scope.object.up ).setLength( mouseChange.x ); - pan.add( objectUp.copy( scope.object.up ).setLength( mouseChange.y ) ); - - scope.object.position.add( pan ); - scope.target.add( pan ); - - if ( scope.staticMoving ) { - - _panStart.copy( _panEnd ); - - } else { - - _panStart.add( mouseChange.subVectors( _panEnd, _panStart ).multiplyScalar( scope.dynamicDampingFactor ) ); - - } - - } - - }; - - }() ); - - this.checkDistances = function () { - - if ( ! scope.noZoom || ! scope.noPan ) { - - if ( _eye.lengthSq() > scope.maxDistance * scope.maxDistance ) { - - scope.object.position.addVectors( scope.target, _eye.setLength( scope.maxDistance ) ); - _zoomStart.copy( _zoomEnd ); - - } - - if ( _eye.lengthSq() < scope.minDistance * scope.minDistance ) { - - scope.object.position.addVectors( scope.target, _eye.setLength( scope.minDistance ) ); - _zoomStart.copy( _zoomEnd ); - - } - - } - - }; - - this.update = function () { - - _eye.subVectors( scope.object.position, scope.target ); - - if ( ! scope.noRotate ) { - - scope.rotateCamera(); - - } - - if ( ! scope.noZoom ) { - - scope.zoomCamera(); - - } - - if ( ! scope.noPan ) { - - scope.panCamera(); - - } - - scope.object.position.addVectors( scope.target, _eye ); - - if ( scope.object.isPerspectiveCamera ) { - - scope.checkDistances(); - - scope.object.lookAt( scope.target ); - - if ( lastPosition.distanceToSquared( scope.object.position ) > EPS ) { - - scope.dispatchEvent( _changeEvent ); - - lastPosition.copy( scope.object.position ); - - } - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.lookAt( scope.target ); - - if ( lastPosition.distanceToSquared( scope.object.position ) > EPS || lastZoom !== scope.object.zoom ) { - - scope.dispatchEvent( _changeEvent ); - - lastPosition.copy( scope.object.position ); - lastZoom = scope.object.zoom; - - } - - } else { - - console.warn( 'THREE.TrackballControls: Unsupported camera type' ); - - } - - }; - - this.reset = function () { - - _state = STATE.NONE; - _keyState = STATE.NONE; - - scope.target.copy( scope.target0 ); - scope.object.position.copy( scope.position0 ); - scope.object.up.copy( scope.up0 ); - scope.object.zoom = scope.zoom0; - - scope.object.updateProjectionMatrix(); - - _eye.subVectors( scope.object.position, scope.target ); - - scope.object.lookAt( scope.target ); - - scope.dispatchEvent( _changeEvent ); - - lastPosition.copy( scope.object.position ); - lastZoom = scope.object.zoom; - - }; - - // listeners - - function onPointerDown( event ) { - - if ( scope.enabled === false ) return; - - if ( _pointers.length === 0 ) { - - scope.domElement.setPointerCapture( event.pointerId ); - - scope.domElement.addEventListener( 'pointermove', onPointerMove ); - scope.domElement.addEventListener( 'pointerup', onPointerUp ); - - } - - // - - addPointer( event ); - - if ( event.pointerType === 'touch' ) { - - onTouchStart( event ); - - } else { - - onMouseDown( event ); - - } - - } - - function onPointerMove( event ) { - - if ( scope.enabled === false ) return; - - if ( event.pointerType === 'touch' ) { - - onTouchMove( event ); - - } else { - - onMouseMove( event ); - - } - - } - - function onPointerUp( event ) { - - if ( scope.enabled === false ) return; - - if ( event.pointerType === 'touch' ) { - - onTouchEnd( event ); - - } else { - - onMouseUp(); - - } - - // - - removePointer( event ); - - if ( _pointers.length === 0 ) { - - scope.domElement.releasePointerCapture( event.pointerId ); - - scope.domElement.removeEventListener( 'pointermove', onPointerMove ); - scope.domElement.removeEventListener( 'pointerup', onPointerUp ); - - } - - - } - - function onPointerCancel( event ) { - - removePointer( event ); - - } - - function keydown( event ) { - - if ( scope.enabled === false ) return; - - window.removeEventListener( 'keydown', keydown ); - - if ( _keyState !== STATE.NONE ) { - - return; - - } else if ( event.code === scope.keys[ STATE.ROTATE ] && ! scope.noRotate ) { - - _keyState = STATE.ROTATE; - - } else if ( event.code === scope.keys[ STATE.ZOOM ] && ! scope.noZoom ) { - - _keyState = STATE.ZOOM; - - } else if ( event.code === scope.keys[ STATE.PAN ] && ! scope.noPan ) { - - _keyState = STATE.PAN; - - } - - } - - function keyup() { - - if ( scope.enabled === false ) return; - - _keyState = STATE.NONE; - - window.addEventListener( 'keydown', keydown ); - - } - - function onMouseDown( event ) { - - if ( _state === STATE.NONE ) { - - switch ( event.button ) { - - case scope.mouseButtons.LEFT: - _state = STATE.ROTATE; - break; - - case scope.mouseButtons.MIDDLE: - _state = STATE.ZOOM; - break; - - case scope.mouseButtons.RIGHT: - _state = STATE.PAN; - break; - - } - - } - - const state = ( _keyState !== STATE.NONE ) ? _keyState : _state; - - if ( state === STATE.ROTATE && ! scope.noRotate ) { - - _moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) ); - _movePrev.copy( _moveCurr ); - - } else if ( state === STATE.ZOOM && ! scope.noZoom ) { - - _zoomStart.copy( getMouseOnScreen( event.pageX, event.pageY ) ); - _zoomEnd.copy( _zoomStart ); - - } else if ( state === STATE.PAN && ! scope.noPan ) { - - _panStart.copy( getMouseOnScreen( event.pageX, event.pageY ) ); - _panEnd.copy( _panStart ); - - } - - scope.dispatchEvent( _startEvent ); - - } - - function onMouseMove( event ) { - - const state = ( _keyState !== STATE.NONE ) ? _keyState : _state; - - if ( state === STATE.ROTATE && ! scope.noRotate ) { - - _movePrev.copy( _moveCurr ); - _moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) ); - - } else if ( state === STATE.ZOOM && ! scope.noZoom ) { - - _zoomEnd.copy( getMouseOnScreen( event.pageX, event.pageY ) ); - - } else if ( state === STATE.PAN && ! scope.noPan ) { - - _panEnd.copy( getMouseOnScreen( event.pageX, event.pageY ) ); - - } - - } - - function onMouseUp() { - - _state = STATE.NONE; - - scope.dispatchEvent( _endEvent ); - - } - - function onMouseWheel( event ) { - - if ( scope.enabled === false ) return; - - if ( scope.noZoom === true ) return; - - event.preventDefault(); - - switch ( event.deltaMode ) { - - case 2: - // Zoom in pages - _zoomStart.y -= event.deltaY * 0.025; - break; - - case 1: - // Zoom in lines - _zoomStart.y -= event.deltaY * 0.01; - break; - - default: - // undefined, 0, assume pixels - _zoomStart.y -= event.deltaY * 0.00025; - break; - - } - - scope.dispatchEvent( _startEvent ); - scope.dispatchEvent( _endEvent ); - - } - - function onTouchStart( event ) { - - trackPointer( event ); - - switch ( _pointers.length ) { - - case 1: - _state = STATE.TOUCH_ROTATE; - _moveCurr.copy( getMouseOnCircle( _pointers[ 0 ].pageX, _pointers[ 0 ].pageY ) ); - _movePrev.copy( _moveCurr ); - break; - - default: // 2 or more - _state = STATE.TOUCH_ZOOM_PAN; - const dx = _pointers[ 0 ].pageX - _pointers[ 1 ].pageX; - const dy = _pointers[ 0 ].pageY - _pointers[ 1 ].pageY; - _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt( dx * dx + dy * dy ); - - const x = ( _pointers[ 0 ].pageX + _pointers[ 1 ].pageX ) / 2; - const y = ( _pointers[ 0 ].pageY + _pointers[ 1 ].pageY ) / 2; - _panStart.copy( getMouseOnScreen( x, y ) ); - _panEnd.copy( _panStart ); - break; - - } - - scope.dispatchEvent( _startEvent ); - - } - - function onTouchMove( event ) { - - trackPointer( event ); - - switch ( _pointers.length ) { - - case 1: - _movePrev.copy( _moveCurr ); - _moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) ); - break; - - default: // 2 or more - - const position = getSecondPointerPosition( event ); - - const dx = event.pageX - position.x; - const dy = event.pageY - position.y; - _touchZoomDistanceEnd = Math.sqrt( dx * dx + dy * dy ); - - const x = ( event.pageX + position.x ) / 2; - const y = ( event.pageY + position.y ) / 2; - _panEnd.copy( getMouseOnScreen( x, y ) ); - break; - - } - - } - - function onTouchEnd( event ) { - - switch ( _pointers.length ) { - - case 0: - _state = STATE.NONE; - break; - - case 1: - _state = STATE.TOUCH_ROTATE; - _moveCurr.copy( getMouseOnCircle( event.pageX, event.pageY ) ); - _movePrev.copy( _moveCurr ); - break; - - case 2: - _state = STATE.TOUCH_ZOOM_PAN; - - for ( let i = 0; i < _pointers.length; i ++ ) { - - if ( _pointers[ i ].pointerId !== event.pointerId ) { - - const position = _pointerPositions[ _pointers[ i ].pointerId ]; - _moveCurr.copy( getMouseOnCircle( position.x, position.y ) ); - _movePrev.copy( _moveCurr ); - break; - - } - - } - - break; - - } - - scope.dispatchEvent( _endEvent ); - - } - - function contextmenu( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - } - - function addPointer( event ) { - - _pointers.push( event ); - - } - - function removePointer( event ) { - - delete _pointerPositions[ event.pointerId ]; - - for ( let i = 0; i < _pointers.length; i ++ ) { - - if ( _pointers[ i ].pointerId == event.pointerId ) { - - _pointers.splice( i, 1 ); - return; - - } - - } - - } - - function trackPointer( event ) { - - let position = _pointerPositions[ event.pointerId ]; - - if ( position === undefined ) { - - position = new Vector2(); - _pointerPositions[ event.pointerId ] = position; - - } - - position.set( event.pageX, event.pageY ); - - } - - function getSecondPointerPosition( event ) { - - const pointer = ( event.pointerId === _pointers[ 0 ].pointerId ) ? _pointers[ 1 ] : _pointers[ 0 ]; - - return _pointerPositions[ pointer.pointerId ]; - - } - - this.dispose = function () { - - scope.domElement.removeEventListener( 'contextmenu', contextmenu ); - - scope.domElement.removeEventListener( 'pointerdown', onPointerDown ); - scope.domElement.removeEventListener( 'pointercancel', onPointerCancel ); - scope.domElement.removeEventListener( 'wheel', onMouseWheel ); - - scope.domElement.removeEventListener( 'pointermove', onPointerMove ); - scope.domElement.removeEventListener( 'pointerup', onPointerUp ); - - window.removeEventListener( 'keydown', keydown ); - window.removeEventListener( 'keyup', keyup ); - - }; - - this.domElement.addEventListener( 'contextmenu', contextmenu ); - - this.domElement.addEventListener( 'pointerdown', onPointerDown ); - this.domElement.addEventListener( 'pointercancel', onPointerCancel ); - this.domElement.addEventListener( 'wheel', onMouseWheel, { passive: false } ); - - - window.addEventListener( 'keydown', keydown ); - window.addEventListener( 'keyup', keyup ); - - this.handleResize(); - - // force an update at start - this.update(); - - } - -} - -export { TrackballControls }; diff --git a/three/addons/controls/TransformControls.js b/three/addons/controls/TransformControls.js deleted file mode 100644 index 1163078..0000000 --- a/three/addons/controls/TransformControls.js +++ /dev/null @@ -1,1573 +0,0 @@ -import { - BoxGeometry, - BufferGeometry, - CylinderGeometry, - DoubleSide, - Euler, - Float32BufferAttribute, - Line, - LineBasicMaterial, - Matrix4, - Mesh, - MeshBasicMaterial, - Object3D, - OctahedronGeometry, - PlaneGeometry, - Quaternion, - Raycaster, - SphereGeometry, - TorusGeometry, - Vector3 -} from 'three'; - -const _raycaster = new Raycaster(); - -const _tempVector = new Vector3(); -const _tempVector2 = new Vector3(); -const _tempQuaternion = new Quaternion(); -const _unit = { - X: new Vector3( 1, 0, 0 ), - Y: new Vector3( 0, 1, 0 ), - Z: new Vector3( 0, 0, 1 ) -}; - -const _changeEvent = { type: 'change' }; -const _mouseDownEvent = { type: 'mouseDown' }; -const _mouseUpEvent = { type: 'mouseUp', mode: null }; -const _objectChangeEvent = { type: 'objectChange' }; - -class TransformControls extends Object3D { - - constructor( camera, domElement ) { - - super(); - - if ( domElement === undefined ) { - - console.warn( 'THREE.TransformControls: The second parameter "domElement" is now mandatory.' ); - domElement = document; - - } - - this.isTransformControls = true; - - this.visible = false; - this.domElement = domElement; - this.domElement.style.touchAction = 'none'; // disable touch scroll - - const _gizmo = new TransformControlsGizmo(); - this._gizmo = _gizmo; - this.add( _gizmo ); - - const _plane = new TransformControlsPlane(); - this._plane = _plane; - this.add( _plane ); - - const scope = this; - - // Defined getter, setter and store for a property - function defineProperty( propName, defaultValue ) { - - let propValue = defaultValue; - - Object.defineProperty( scope, propName, { - - get: function () { - - return propValue !== undefined ? propValue : defaultValue; - - }, - - set: function ( value ) { - - if ( propValue !== value ) { - - propValue = value; - _plane[ propName ] = value; - _gizmo[ propName ] = value; - - scope.dispatchEvent( { type: propName + '-changed', value: value } ); - scope.dispatchEvent( _changeEvent ); - - } - - } - - } ); - - scope[ propName ] = defaultValue; - _plane[ propName ] = defaultValue; - _gizmo[ propName ] = defaultValue; - - } - - // Define properties with getters/setter - // Setting the defined property will automatically trigger change event - // Defined properties are passed down to gizmo and plane - - defineProperty( 'camera', camera ); - defineProperty( 'object', undefined ); - defineProperty( 'enabled', true ); - defineProperty( 'axis', null ); - defineProperty( 'mode', 'translate' ); - defineProperty( 'translationSnap', null ); - defineProperty( 'rotationSnap', null ); - defineProperty( 'scaleSnap', null ); - defineProperty( 'space', 'world' ); - defineProperty( 'size', 1 ); - defineProperty( 'dragging', false ); - defineProperty( 'showX', true ); - defineProperty( 'showY', true ); - defineProperty( 'showZ', true ); - - // Reusable utility variables - - const worldPosition = new Vector3(); - const worldPositionStart = new Vector3(); - const worldQuaternion = new Quaternion(); - const worldQuaternionStart = new Quaternion(); - const cameraPosition = new Vector3(); - const cameraQuaternion = new Quaternion(); - const pointStart = new Vector3(); - const pointEnd = new Vector3(); - const rotationAxis = new Vector3(); - const rotationAngle = 0; - const eye = new Vector3(); - - // TODO: remove properties unused in plane and gizmo - - defineProperty( 'worldPosition', worldPosition ); - defineProperty( 'worldPositionStart', worldPositionStart ); - defineProperty( 'worldQuaternion', worldQuaternion ); - defineProperty( 'worldQuaternionStart', worldQuaternionStart ); - defineProperty( 'cameraPosition', cameraPosition ); - defineProperty( 'cameraQuaternion', cameraQuaternion ); - defineProperty( 'pointStart', pointStart ); - defineProperty( 'pointEnd', pointEnd ); - defineProperty( 'rotationAxis', rotationAxis ); - defineProperty( 'rotationAngle', rotationAngle ); - defineProperty( 'eye', eye ); - - this._offset = new Vector3(); - this._startNorm = new Vector3(); - this._endNorm = new Vector3(); - this._cameraScale = new Vector3(); - - this._parentPosition = new Vector3(); - this._parentQuaternion = new Quaternion(); - this._parentQuaternionInv = new Quaternion(); - this._parentScale = new Vector3(); - - this._worldScaleStart = new Vector3(); - this._worldQuaternionInv = new Quaternion(); - this._worldScale = new Vector3(); - - this._positionStart = new Vector3(); - this._quaternionStart = new Quaternion(); - this._scaleStart = new Vector3(); - - this._getPointer = getPointer.bind( this ); - this._onPointerDown = onPointerDown.bind( this ); - this._onPointerHover = onPointerHover.bind( this ); - this._onPointerMove = onPointerMove.bind( this ); - this._onPointerUp = onPointerUp.bind( this ); - - this.domElement.addEventListener( 'pointerdown', this._onPointerDown ); - this.domElement.addEventListener( 'pointermove', this._onPointerHover ); - this.domElement.addEventListener( 'pointerup', this._onPointerUp ); - - } - - // updateMatrixWorld updates key transformation variables - updateMatrixWorld() { - - if ( this.object !== undefined ) { - - this.object.updateMatrixWorld(); - - if ( this.object.parent === null ) { - - console.error( 'TransformControls: The attached 3D object must be a part of the scene graph.' ); - - } else { - - this.object.parent.matrixWorld.decompose( this._parentPosition, this._parentQuaternion, this._parentScale ); - - } - - this.object.matrixWorld.decompose( this.worldPosition, this.worldQuaternion, this._worldScale ); - - this._parentQuaternionInv.copy( this._parentQuaternion ).invert(); - this._worldQuaternionInv.copy( this.worldQuaternion ).invert(); - - } - - this.camera.updateMatrixWorld(); - this.camera.matrixWorld.decompose( this.cameraPosition, this.cameraQuaternion, this._cameraScale ); - - if ( this.camera.isOrthographicCamera ) { - - this.camera.getWorldDirection( this.eye ).negate(); - - } else { - - this.eye.copy( this.cameraPosition ).sub( this.worldPosition ).normalize(); - - } - - super.updateMatrixWorld( this ); - - } - - pointerHover( pointer ) { - - if ( this.object === undefined || this.dragging === true ) return; - - _raycaster.setFromCamera( pointer, this.camera ); - - const intersect = intersectObjectWithRay( this._gizmo.picker[ this.mode ], _raycaster ); - - if ( intersect ) { - - this.axis = intersect.object.name; - - } else { - - this.axis = null; - - } - - } - - pointerDown( pointer ) { - - if ( this.object === undefined || this.dragging === true || pointer.button !== 0 ) return; - - if ( this.axis !== null ) { - - _raycaster.setFromCamera( pointer, this.camera ); - - const planeIntersect = intersectObjectWithRay( this._plane, _raycaster, true ); - - if ( planeIntersect ) { - - this.object.updateMatrixWorld(); - this.object.parent.updateMatrixWorld(); - - this._positionStart.copy( this.object.position ); - this._quaternionStart.copy( this.object.quaternion ); - this._scaleStart.copy( this.object.scale ); - - this.object.matrixWorld.decompose( this.worldPositionStart, this.worldQuaternionStart, this._worldScaleStart ); - - this.pointStart.copy( planeIntersect.point ).sub( this.worldPositionStart ); - - } - - this.dragging = true; - _mouseDownEvent.mode = this.mode; - this.dispatchEvent( _mouseDownEvent ); - - } - - } - - pointerMove( pointer ) { - - const axis = this.axis; - const mode = this.mode; - const object = this.object; - let space = this.space; - - if ( mode === 'scale' ) { - - space = 'local'; - - } else if ( axis === 'E' || axis === 'XYZE' || axis === 'XYZ' ) { - - space = 'world'; - - } - - if ( object === undefined || axis === null || this.dragging === false || pointer.button !== - 1 ) return; - - _raycaster.setFromCamera( pointer, this.camera ); - - const planeIntersect = intersectObjectWithRay( this._plane, _raycaster, true ); - - if ( ! planeIntersect ) return; - - this.pointEnd.copy( planeIntersect.point ).sub( this.worldPositionStart ); - - if ( mode === 'translate' ) { - - // Apply translate - - this._offset.copy( this.pointEnd ).sub( this.pointStart ); - - if ( space === 'local' && axis !== 'XYZ' ) { - - this._offset.applyQuaternion( this._worldQuaternionInv ); - - } - - if ( axis.indexOf( 'X' ) === - 1 ) this._offset.x = 0; - if ( axis.indexOf( 'Y' ) === - 1 ) this._offset.y = 0; - if ( axis.indexOf( 'Z' ) === - 1 ) this._offset.z = 0; - - if ( space === 'local' && axis !== 'XYZ' ) { - - this._offset.applyQuaternion( this._quaternionStart ).divide( this._parentScale ); - - } else { - - this._offset.applyQuaternion( this._parentQuaternionInv ).divide( this._parentScale ); - - } - - object.position.copy( this._offset ).add( this._positionStart ); - - // Apply translation snap - - if ( this.translationSnap ) { - - if ( space === 'local' ) { - - object.position.applyQuaternion( _tempQuaternion.copy( this._quaternionStart ).invert() ); - - if ( axis.search( 'X' ) !== - 1 ) { - - object.position.x = Math.round( object.position.x / this.translationSnap ) * this.translationSnap; - - } - - if ( axis.search( 'Y' ) !== - 1 ) { - - object.position.y = Math.round( object.position.y / this.translationSnap ) * this.translationSnap; - - } - - if ( axis.search( 'Z' ) !== - 1 ) { - - object.position.z = Math.round( object.position.z / this.translationSnap ) * this.translationSnap; - - } - - object.position.applyQuaternion( this._quaternionStart ); - - } - - if ( space === 'world' ) { - - if ( object.parent ) { - - object.position.add( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) ); - - } - - if ( axis.search( 'X' ) !== - 1 ) { - - object.position.x = Math.round( object.position.x / this.translationSnap ) * this.translationSnap; - - } - - if ( axis.search( 'Y' ) !== - 1 ) { - - object.position.y = Math.round( object.position.y / this.translationSnap ) * this.translationSnap; - - } - - if ( axis.search( 'Z' ) !== - 1 ) { - - object.position.z = Math.round( object.position.z / this.translationSnap ) * this.translationSnap; - - } - - if ( object.parent ) { - - object.position.sub( _tempVector.setFromMatrixPosition( object.parent.matrixWorld ) ); - - } - - } - - } - - } else if ( mode === 'scale' ) { - - if ( axis.search( 'XYZ' ) !== - 1 ) { - - let d = this.pointEnd.length() / this.pointStart.length(); - - if ( this.pointEnd.dot( this.pointStart ) < 0 ) d *= - 1; - - _tempVector2.set( d, d, d ); - - } else { - - _tempVector.copy( this.pointStart ); - _tempVector2.copy( this.pointEnd ); - - _tempVector.applyQuaternion( this._worldQuaternionInv ); - _tempVector2.applyQuaternion( this._worldQuaternionInv ); - - _tempVector2.divide( _tempVector ); - - if ( axis.search( 'X' ) === - 1 ) { - - _tempVector2.x = 1; - - } - - if ( axis.search( 'Y' ) === - 1 ) { - - _tempVector2.y = 1; - - } - - if ( axis.search( 'Z' ) === - 1 ) { - - _tempVector2.z = 1; - - } - - } - - // Apply scale - - object.scale.copy( this._scaleStart ).multiply( _tempVector2 ); - - if ( this.scaleSnap ) { - - if ( axis.search( 'X' ) !== - 1 ) { - - object.scale.x = Math.round( object.scale.x / this.scaleSnap ) * this.scaleSnap || this.scaleSnap; - - } - - if ( axis.search( 'Y' ) !== - 1 ) { - - object.scale.y = Math.round( object.scale.y / this.scaleSnap ) * this.scaleSnap || this.scaleSnap; - - } - - if ( axis.search( 'Z' ) !== - 1 ) { - - object.scale.z = Math.round( object.scale.z / this.scaleSnap ) * this.scaleSnap || this.scaleSnap; - - } - - } - - } else if ( mode === 'rotate' ) { - - this._offset.copy( this.pointEnd ).sub( this.pointStart ); - - const ROTATION_SPEED = 20 / this.worldPosition.distanceTo( _tempVector.setFromMatrixPosition( this.camera.matrixWorld ) ); - - let _inPlaneRotation = false; - - if ( axis === 'XYZE' ) { - - this.rotationAxis.copy( this._offset ).cross( this.eye ).normalize(); - this.rotationAngle = this._offset.dot( _tempVector.copy( this.rotationAxis ).cross( this.eye ) ) * ROTATION_SPEED; - - } else if ( axis === 'X' || axis === 'Y' || axis === 'Z' ) { - - this.rotationAxis.copy( _unit[ axis ] ); - - _tempVector.copy( _unit[ axis ] ); - - if ( space === 'local' ) { - - _tempVector.applyQuaternion( this.worldQuaternion ); - - } - - _tempVector.cross( this.eye ); - - // When _tempVector is 0 after cross with this.eye the vectors are parallel and should use in-plane rotation logic. - if ( _tempVector.length() === 0 ) { - - _inPlaneRotation = true; - - } else { - - this.rotationAngle = this._offset.dot( _tempVector.normalize() ) * ROTATION_SPEED; - - } - - - } - - if ( axis === 'E' || _inPlaneRotation ) { - - this.rotationAxis.copy( this.eye ); - this.rotationAngle = this.pointEnd.angleTo( this.pointStart ); - - this._startNorm.copy( this.pointStart ).normalize(); - this._endNorm.copy( this.pointEnd ).normalize(); - - this.rotationAngle *= ( this._endNorm.cross( this._startNorm ).dot( this.eye ) < 0 ? 1 : - 1 ); - - } - - // Apply rotation snap - - if ( this.rotationSnap ) this.rotationAngle = Math.round( this.rotationAngle / this.rotationSnap ) * this.rotationSnap; - - // Apply rotate - if ( space === 'local' && axis !== 'E' && axis !== 'XYZE' ) { - - object.quaternion.copy( this._quaternionStart ); - object.quaternion.multiply( _tempQuaternion.setFromAxisAngle( this.rotationAxis, this.rotationAngle ) ).normalize(); - - } else { - - this.rotationAxis.applyQuaternion( this._parentQuaternionInv ); - object.quaternion.copy( _tempQuaternion.setFromAxisAngle( this.rotationAxis, this.rotationAngle ) ); - object.quaternion.multiply( this._quaternionStart ).normalize(); - - } - - } - - this.dispatchEvent( _changeEvent ); - this.dispatchEvent( _objectChangeEvent ); - - } - - pointerUp( pointer ) { - - if ( pointer.button !== 0 ) return; - - if ( this.dragging && ( this.axis !== null ) ) { - - _mouseUpEvent.mode = this.mode; - this.dispatchEvent( _mouseUpEvent ); - - } - - this.dragging = false; - this.axis = null; - - } - - dispose() { - - this.domElement.removeEventListener( 'pointerdown', this._onPointerDown ); - this.domElement.removeEventListener( 'pointermove', this._onPointerHover ); - this.domElement.removeEventListener( 'pointermove', this._onPointerMove ); - this.domElement.removeEventListener( 'pointerup', this._onPointerUp ); - - this.traverse( function ( child ) { - - if ( child.geometry ) child.geometry.dispose(); - if ( child.material ) child.material.dispose(); - - } ); - - } - - // Set current object - attach( object ) { - - this.object = object; - this.visible = true; - - return this; - - } - - // Detach from object - detach() { - - this.object = undefined; - this.visible = false; - this.axis = null; - - return this; - - } - - reset() { - - if ( ! this.enabled ) return; - - if ( this.dragging ) { - - this.object.position.copy( this._positionStart ); - this.object.quaternion.copy( this._quaternionStart ); - this.object.scale.copy( this._scaleStart ); - - this.dispatchEvent( _changeEvent ); - this.dispatchEvent( _objectChangeEvent ); - - this.pointStart.copy( this.pointEnd ); - - } - - } - - getRaycaster() { - - return _raycaster; - - } - - // TODO: deprecate - - getMode() { - - return this.mode; - - } - - setMode( mode ) { - - this.mode = mode; - - } - - setTranslationSnap( translationSnap ) { - - this.translationSnap = translationSnap; - - } - - setRotationSnap( rotationSnap ) { - - this.rotationSnap = rotationSnap; - - } - - setScaleSnap( scaleSnap ) { - - this.scaleSnap = scaleSnap; - - } - - setSize( size ) { - - this.size = size; - - } - - setSpace( space ) { - - this.space = space; - - } - -} - -// mouse / touch event handlers - -function getPointer( event ) { - - if ( this.domElement.ownerDocument.pointerLockElement ) { - - return { - x: 0, - y: 0, - button: event.button - }; - - } else { - - const rect = this.domElement.getBoundingClientRect(); - - return { - x: ( event.clientX - rect.left ) / rect.width * 2 - 1, - y: - ( event.clientY - rect.top ) / rect.height * 2 + 1, - button: event.button - }; - - } - -} - -function onPointerHover( event ) { - - if ( ! this.enabled ) return; - - switch ( event.pointerType ) { - - case 'mouse': - case 'pen': - this.pointerHover( this._getPointer( event ) ); - break; - - } - -} - -function onPointerDown( event ) { - - if ( ! this.enabled ) return; - - if ( ! document.pointerLockElement ) { - - this.domElement.setPointerCapture( event.pointerId ); - - } - - this.domElement.addEventListener( 'pointermove', this._onPointerMove ); - - this.pointerHover( this._getPointer( event ) ); - this.pointerDown( this._getPointer( event ) ); - -} - -function onPointerMove( event ) { - - if ( ! this.enabled ) return; - - this.pointerMove( this._getPointer( event ) ); - -} - -function onPointerUp( event ) { - - if ( ! this.enabled ) return; - - this.domElement.releasePointerCapture( event.pointerId ); - - this.domElement.removeEventListener( 'pointermove', this._onPointerMove ); - - this.pointerUp( this._getPointer( event ) ); - -} - -function intersectObjectWithRay( object, raycaster, includeInvisible ) { - - const allIntersections = raycaster.intersectObject( object, true ); - - for ( let i = 0; i < allIntersections.length; i ++ ) { - - if ( allIntersections[ i ].object.visible || includeInvisible ) { - - return allIntersections[ i ]; - - } - - } - - return false; - -} - -// - -// Reusable utility variables - -const _tempEuler = new Euler(); -const _alignVector = new Vector3( 0, 1, 0 ); -const _zeroVector = new Vector3( 0, 0, 0 ); -const _lookAtMatrix = new Matrix4(); -const _tempQuaternion2 = new Quaternion(); -const _identityQuaternion = new Quaternion(); -const _dirVector = new Vector3(); -const _tempMatrix = new Matrix4(); - -const _unitX = new Vector3( 1, 0, 0 ); -const _unitY = new Vector3( 0, 1, 0 ); -const _unitZ = new Vector3( 0, 0, 1 ); - -const _v1 = new Vector3(); -const _v2 = new Vector3(); -const _v3 = new Vector3(); - -class TransformControlsGizmo extends Object3D { - - constructor() { - - super(); - - this.isTransformControlsGizmo = true; - - this.type = 'TransformControlsGizmo'; - - // shared materials - - const gizmoMaterial = new MeshBasicMaterial( { - depthTest: false, - depthWrite: false, - fog: false, - toneMapped: false, - transparent: true - } ); - - const gizmoLineMaterial = new LineBasicMaterial( { - depthTest: false, - depthWrite: false, - fog: false, - toneMapped: false, - transparent: true - } ); - - // Make unique material for each axis/color - - const matInvisible = gizmoMaterial.clone(); - matInvisible.opacity = 0.15; - - const matHelper = gizmoLineMaterial.clone(); - matHelper.opacity = 0.5; - - const matRed = gizmoMaterial.clone(); - matRed.color.setHex( 0xff0000 ); - - const matGreen = gizmoMaterial.clone(); - matGreen.color.setHex( 0x00ff00 ); - - const matBlue = gizmoMaterial.clone(); - matBlue.color.setHex( 0x0000ff ); - - const matRedTransparent = gizmoMaterial.clone(); - matRedTransparent.color.setHex( 0xff0000 ); - matRedTransparent.opacity = 0.5; - - const matGreenTransparent = gizmoMaterial.clone(); - matGreenTransparent.color.setHex( 0x00ff00 ); - matGreenTransparent.opacity = 0.5; - - const matBlueTransparent = gizmoMaterial.clone(); - matBlueTransparent.color.setHex( 0x0000ff ); - matBlueTransparent.opacity = 0.5; - - const matWhiteTransparent = gizmoMaterial.clone(); - matWhiteTransparent.opacity = 0.25; - - const matYellowTransparent = gizmoMaterial.clone(); - matYellowTransparent.color.setHex( 0xffff00 ); - matYellowTransparent.opacity = 0.25; - - const matYellow = gizmoMaterial.clone(); - matYellow.color.setHex( 0xffff00 ); - - const matGray = gizmoMaterial.clone(); - matGray.color.setHex( 0x787878 ); - - // reusable geometry - - const arrowGeometry = new CylinderGeometry( 0, 0.04, 0.1, 12 ); - arrowGeometry.translate( 0, 0.05, 0 ); - - const scaleHandleGeometry = new BoxGeometry( 0.08, 0.08, 0.08 ); - scaleHandleGeometry.translate( 0, 0.04, 0 ); - - const lineGeometry = new BufferGeometry(); - lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 1, 0, 0 ], 3 ) ); - - const lineGeometry2 = new CylinderGeometry( 0.0075, 0.0075, 0.5, 3 ); - lineGeometry2.translate( 0, 0.25, 0 ); - - function CircleGeometry( radius, arc ) { - - const geometry = new TorusGeometry( radius, 0.0075, 3, 64, arc * Math.PI * 2 ); - geometry.rotateY( Math.PI / 2 ); - geometry.rotateX( Math.PI / 2 ); - return geometry; - - } - - // Special geometry for transform helper. If scaled with position vector it spans from [0,0,0] to position - - function TranslateHelperGeometry() { - - const geometry = new BufferGeometry(); - - geometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 1, 1, 1 ], 3 ) ); - - return geometry; - - } - - // Gizmo definitions - custom hierarchy definitions for setupGizmo() function - - const gizmoTranslate = { - X: [ - [ new Mesh( arrowGeometry, matRed ), [ 0.5, 0, 0 ], [ 0, 0, - Math.PI / 2 ]], - [ new Mesh( arrowGeometry, matRed ), [ - 0.5, 0, 0 ], [ 0, 0, Math.PI / 2 ]], - [ new Mesh( lineGeometry2, matRed ), [ 0, 0, 0 ], [ 0, 0, - Math.PI / 2 ]] - ], - Y: [ - [ new Mesh( arrowGeometry, matGreen ), [ 0, 0.5, 0 ]], - [ new Mesh( arrowGeometry, matGreen ), [ 0, - 0.5, 0 ], [ Math.PI, 0, 0 ]], - [ new Mesh( lineGeometry2, matGreen ) ] - ], - Z: [ - [ new Mesh( arrowGeometry, matBlue ), [ 0, 0, 0.5 ], [ Math.PI / 2, 0, 0 ]], - [ new Mesh( arrowGeometry, matBlue ), [ 0, 0, - 0.5 ], [ - Math.PI / 2, 0, 0 ]], - [ new Mesh( lineGeometry2, matBlue ), null, [ Math.PI / 2, 0, 0 ]] - ], - XYZ: [ - [ new Mesh( new OctahedronGeometry( 0.1, 0 ), matWhiteTransparent.clone() ), [ 0, 0, 0 ]] - ], - XY: [ - [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matBlueTransparent.clone() ), [ 0.15, 0.15, 0 ]] - ], - YZ: [ - [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matRedTransparent.clone() ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]] - ], - XZ: [ - [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matGreenTransparent.clone() ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]] - ] - }; - - const pickerTranslate = { - X: [ - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0.3, 0, 0 ], [ 0, 0, - Math.PI / 2 ]], - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ - 0.3, 0, 0 ], [ 0, 0, Math.PI / 2 ]] - ], - Y: [ - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0.3, 0 ]], - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, - 0.3, 0 ], [ 0, 0, Math.PI ]] - ], - Z: [ - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0, 0.3 ], [ Math.PI / 2, 0, 0 ]], - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0, - 0.3 ], [ - Math.PI / 2, 0, 0 ]] - ], - XYZ: [ - [ new Mesh( new OctahedronGeometry( 0.2, 0 ), matInvisible ) ] - ], - XY: [ - [ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0.15, 0.15, 0 ]] - ], - YZ: [ - [ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]] - ], - XZ: [ - [ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]] - ] - }; - - const helperTranslate = { - START: [ - [ new Mesh( new OctahedronGeometry( 0.01, 2 ), matHelper ), null, null, null, 'helper' ] - ], - END: [ - [ new Mesh( new OctahedronGeometry( 0.01, 2 ), matHelper ), null, null, null, 'helper' ] - ], - DELTA: [ - [ new Line( TranslateHelperGeometry(), matHelper ), null, null, null, 'helper' ] - ], - X: [ - [ new Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] - ], - Y: [ - [ new Line( lineGeometry, matHelper.clone() ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ] - ], - Z: [ - [ new Line( lineGeometry, matHelper.clone() ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ] - ] - }; - - const gizmoRotate = { - XYZE: [ - [ new Mesh( CircleGeometry( 0.5, 1 ), matGray ), null, [ 0, Math.PI / 2, 0 ]] - ], - X: [ - [ new Mesh( CircleGeometry( 0.5, 0.5 ), matRed ) ] - ], - Y: [ - [ new Mesh( CircleGeometry( 0.5, 0.5 ), matGreen ), null, [ 0, 0, - Math.PI / 2 ]] - ], - Z: [ - [ new Mesh( CircleGeometry( 0.5, 0.5 ), matBlue ), null, [ 0, Math.PI / 2, 0 ]] - ], - E: [ - [ new Mesh( CircleGeometry( 0.75, 1 ), matYellowTransparent ), null, [ 0, Math.PI / 2, 0 ]] - ] - }; - - const helperRotate = { - AXIS: [ - [ new Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] - ] - }; - - const pickerRotate = { - XYZE: [ - [ new Mesh( new SphereGeometry( 0.25, 10, 8 ), matInvisible ) ] - ], - X: [ - [ new Mesh( new TorusGeometry( 0.5, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ 0, - Math.PI / 2, - Math.PI / 2 ]], - ], - Y: [ - [ new Mesh( new TorusGeometry( 0.5, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ Math.PI / 2, 0, 0 ]], - ], - Z: [ - [ new Mesh( new TorusGeometry( 0.5, 0.1, 4, 24 ), matInvisible ), [ 0, 0, 0 ], [ 0, 0, - Math.PI / 2 ]], - ], - E: [ - [ new Mesh( new TorusGeometry( 0.75, 0.1, 2, 24 ), matInvisible ) ] - ] - }; - - const gizmoScale = { - X: [ - [ new Mesh( scaleHandleGeometry, matRed ), [ 0.5, 0, 0 ], [ 0, 0, - Math.PI / 2 ]], - [ new Mesh( lineGeometry2, matRed ), [ 0, 0, 0 ], [ 0, 0, - Math.PI / 2 ]], - [ new Mesh( scaleHandleGeometry, matRed ), [ - 0.5, 0, 0 ], [ 0, 0, Math.PI / 2 ]], - ], - Y: [ - [ new Mesh( scaleHandleGeometry, matGreen ), [ 0, 0.5, 0 ]], - [ new Mesh( lineGeometry2, matGreen ) ], - [ new Mesh( scaleHandleGeometry, matGreen ), [ 0, - 0.5, 0 ], [ 0, 0, Math.PI ]], - ], - Z: [ - [ new Mesh( scaleHandleGeometry, matBlue ), [ 0, 0, 0.5 ], [ Math.PI / 2, 0, 0 ]], - [ new Mesh( lineGeometry2, matBlue ), [ 0, 0, 0 ], [ Math.PI / 2, 0, 0 ]], - [ new Mesh( scaleHandleGeometry, matBlue ), [ 0, 0, - 0.5 ], [ - Math.PI / 2, 0, 0 ]] - ], - XY: [ - [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matBlueTransparent ), [ 0.15, 0.15, 0 ]] - ], - YZ: [ - [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matRedTransparent ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]] - ], - XZ: [ - [ new Mesh( new BoxGeometry( 0.15, 0.15, 0.01 ), matGreenTransparent ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]] - ], - XYZ: [ - [ new Mesh( new BoxGeometry( 0.1, 0.1, 0.1 ), matWhiteTransparent.clone() ) ], - ] - }; - - const pickerScale = { - X: [ - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0.3, 0, 0 ], [ 0, 0, - Math.PI / 2 ]], - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ - 0.3, 0, 0 ], [ 0, 0, Math.PI / 2 ]] - ], - Y: [ - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0.3, 0 ]], - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, - 0.3, 0 ], [ 0, 0, Math.PI ]] - ], - Z: [ - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0, 0.3 ], [ Math.PI / 2, 0, 0 ]], - [ new Mesh( new CylinderGeometry( 0.2, 0, 0.6, 4 ), matInvisible ), [ 0, 0, - 0.3 ], [ - Math.PI / 2, 0, 0 ]] - ], - XY: [ - [ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0.15, 0.15, 0 ]], - ], - YZ: [ - [ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0, 0.15, 0.15 ], [ 0, Math.PI / 2, 0 ]], - ], - XZ: [ - [ new Mesh( new BoxGeometry( 0.2, 0.2, 0.01 ), matInvisible ), [ 0.15, 0, 0.15 ], [ - Math.PI / 2, 0, 0 ]], - ], - XYZ: [ - [ new Mesh( new BoxGeometry( 0.2, 0.2, 0.2 ), matInvisible ), [ 0, 0, 0 ]], - ] - }; - - const helperScale = { - X: [ - [ new Line( lineGeometry, matHelper.clone() ), [ - 1e3, 0, 0 ], null, [ 1e6, 1, 1 ], 'helper' ] - ], - Y: [ - [ new Line( lineGeometry, matHelper.clone() ), [ 0, - 1e3, 0 ], [ 0, 0, Math.PI / 2 ], [ 1e6, 1, 1 ], 'helper' ] - ], - Z: [ - [ new Line( lineGeometry, matHelper.clone() ), [ 0, 0, - 1e3 ], [ 0, - Math.PI / 2, 0 ], [ 1e6, 1, 1 ], 'helper' ] - ] - }; - - // Creates an Object3D with gizmos described in custom hierarchy definition. - - function setupGizmo( gizmoMap ) { - - const gizmo = new Object3D(); - - for ( const name in gizmoMap ) { - - for ( let i = gizmoMap[ name ].length; i --; ) { - - const object = gizmoMap[ name ][ i ][ 0 ].clone(); - const position = gizmoMap[ name ][ i ][ 1 ]; - const rotation = gizmoMap[ name ][ i ][ 2 ]; - const scale = gizmoMap[ name ][ i ][ 3 ]; - const tag = gizmoMap[ name ][ i ][ 4 ]; - - // name and tag properties are essential for picking and updating logic. - object.name = name; - object.tag = tag; - - if ( position ) { - - object.position.set( position[ 0 ], position[ 1 ], position[ 2 ] ); - - } - - if ( rotation ) { - - object.rotation.set( rotation[ 0 ], rotation[ 1 ], rotation[ 2 ] ); - - } - - if ( scale ) { - - object.scale.set( scale[ 0 ], scale[ 1 ], scale[ 2 ] ); - - } - - object.updateMatrix(); - - const tempGeometry = object.geometry.clone(); - tempGeometry.applyMatrix4( object.matrix ); - object.geometry = tempGeometry; - object.renderOrder = Infinity; - - object.position.set( 0, 0, 0 ); - object.rotation.set( 0, 0, 0 ); - object.scale.set( 1, 1, 1 ); - - gizmo.add( object ); - - } - - } - - return gizmo; - - } - - // Gizmo creation - - this.gizmo = {}; - this.picker = {}; - this.helper = {}; - - this.add( this.gizmo[ 'translate' ] = setupGizmo( gizmoTranslate ) ); - this.add( this.gizmo[ 'rotate' ] = setupGizmo( gizmoRotate ) ); - this.add( this.gizmo[ 'scale' ] = setupGizmo( gizmoScale ) ); - this.add( this.picker[ 'translate' ] = setupGizmo( pickerTranslate ) ); - this.add( this.picker[ 'rotate' ] = setupGizmo( pickerRotate ) ); - this.add( this.picker[ 'scale' ] = setupGizmo( pickerScale ) ); - this.add( this.helper[ 'translate' ] = setupGizmo( helperTranslate ) ); - this.add( this.helper[ 'rotate' ] = setupGizmo( helperRotate ) ); - this.add( this.helper[ 'scale' ] = setupGizmo( helperScale ) ); - - // Pickers should be hidden always - - this.picker[ 'translate' ].visible = false; - this.picker[ 'rotate' ].visible = false; - this.picker[ 'scale' ].visible = false; - - } - - // updateMatrixWorld will update transformations and appearance of individual handles - - updateMatrixWorld( force ) { - - const space = ( this.mode === 'scale' ) ? 'local' : this.space; // scale always oriented to local rotation - - const quaternion = ( space === 'local' ) ? this.worldQuaternion : _identityQuaternion; - - // Show only gizmos for current transform mode - - this.gizmo[ 'translate' ].visible = this.mode === 'translate'; - this.gizmo[ 'rotate' ].visible = this.mode === 'rotate'; - this.gizmo[ 'scale' ].visible = this.mode === 'scale'; - - this.helper[ 'translate' ].visible = this.mode === 'translate'; - this.helper[ 'rotate' ].visible = this.mode === 'rotate'; - this.helper[ 'scale' ].visible = this.mode === 'scale'; - - - let handles = []; - handles = handles.concat( this.picker[ this.mode ].children ); - handles = handles.concat( this.gizmo[ this.mode ].children ); - handles = handles.concat( this.helper[ this.mode ].children ); - - for ( let i = 0; i < handles.length; i ++ ) { - - const handle = handles[ i ]; - - // hide aligned to camera - - handle.visible = true; - handle.rotation.set( 0, 0, 0 ); - handle.position.copy( this.worldPosition ); - - let factor; - - if ( this.camera.isOrthographicCamera ) { - - factor = ( this.camera.top - this.camera.bottom ) / this.camera.zoom; - - } else { - - factor = this.worldPosition.distanceTo( this.cameraPosition ) * Math.min( 1.9 * Math.tan( Math.PI * this.camera.fov / 360 ) / this.camera.zoom, 7 ); - - } - - handle.scale.set( 1, 1, 1 ).multiplyScalar( factor * this.size / 4 ); - - // TODO: simplify helpers and consider decoupling from gizmo - - if ( handle.tag === 'helper' ) { - - handle.visible = false; - - if ( handle.name === 'AXIS' ) { - - handle.visible = !! this.axis; - - if ( this.axis === 'X' ) { - - _tempQuaternion.setFromEuler( _tempEuler.set( 0, 0, 0 ) ); - handle.quaternion.copy( quaternion ).multiply( _tempQuaternion ); - - if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { - - handle.visible = false; - - } - - } - - if ( this.axis === 'Y' ) { - - _tempQuaternion.setFromEuler( _tempEuler.set( 0, 0, Math.PI / 2 ) ); - handle.quaternion.copy( quaternion ).multiply( _tempQuaternion ); - - if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { - - handle.visible = false; - - } - - } - - if ( this.axis === 'Z' ) { - - _tempQuaternion.setFromEuler( _tempEuler.set( 0, Math.PI / 2, 0 ) ); - handle.quaternion.copy( quaternion ).multiply( _tempQuaternion ); - - if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > 0.9 ) { - - handle.visible = false; - - } - - } - - if ( this.axis === 'XYZE' ) { - - _tempQuaternion.setFromEuler( _tempEuler.set( 0, Math.PI / 2, 0 ) ); - _alignVector.copy( this.rotationAxis ); - handle.quaternion.setFromRotationMatrix( _lookAtMatrix.lookAt( _zeroVector, _alignVector, _unitY ) ); - handle.quaternion.multiply( _tempQuaternion ); - handle.visible = this.dragging; - - } - - if ( this.axis === 'E' ) { - - handle.visible = false; - - } - - - } else if ( handle.name === 'START' ) { - - handle.position.copy( this.worldPositionStart ); - handle.visible = this.dragging; - - } else if ( handle.name === 'END' ) { - - handle.position.copy( this.worldPosition ); - handle.visible = this.dragging; - - } else if ( handle.name === 'DELTA' ) { - - handle.position.copy( this.worldPositionStart ); - handle.quaternion.copy( this.worldQuaternionStart ); - _tempVector.set( 1e-10, 1e-10, 1e-10 ).add( this.worldPositionStart ).sub( this.worldPosition ).multiplyScalar( - 1 ); - _tempVector.applyQuaternion( this.worldQuaternionStart.clone().invert() ); - handle.scale.copy( _tempVector ); - handle.visible = this.dragging; - - } else { - - handle.quaternion.copy( quaternion ); - - if ( this.dragging ) { - - handle.position.copy( this.worldPositionStart ); - - } else { - - handle.position.copy( this.worldPosition ); - - } - - if ( this.axis ) { - - handle.visible = this.axis.search( handle.name ) !== - 1; - - } - - } - - // If updating helper, skip rest of the loop - continue; - - } - - // Align handles to current local or world rotation - - handle.quaternion.copy( quaternion ); - - if ( this.mode === 'translate' || this.mode === 'scale' ) { - - // Hide translate and scale axis facing the camera - - const AXIS_HIDE_THRESHOLD = 0.99; - const PLANE_HIDE_THRESHOLD = 0.2; - - if ( handle.name === 'X' ) { - - if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) { - - handle.scale.set( 1e-10, 1e-10, 1e-10 ); - handle.visible = false; - - } - - } - - if ( handle.name === 'Y' ) { - - if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) { - - handle.scale.set( 1e-10, 1e-10, 1e-10 ); - handle.visible = false; - - } - - } - - if ( handle.name === 'Z' ) { - - if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) > AXIS_HIDE_THRESHOLD ) { - - handle.scale.set( 1e-10, 1e-10, 1e-10 ); - handle.visible = false; - - } - - } - - if ( handle.name === 'XY' ) { - - if ( Math.abs( _alignVector.copy( _unitZ ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) { - - handle.scale.set( 1e-10, 1e-10, 1e-10 ); - handle.visible = false; - - } - - } - - if ( handle.name === 'YZ' ) { - - if ( Math.abs( _alignVector.copy( _unitX ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) { - - handle.scale.set( 1e-10, 1e-10, 1e-10 ); - handle.visible = false; - - } - - } - - if ( handle.name === 'XZ' ) { - - if ( Math.abs( _alignVector.copy( _unitY ).applyQuaternion( quaternion ).dot( this.eye ) ) < PLANE_HIDE_THRESHOLD ) { - - handle.scale.set( 1e-10, 1e-10, 1e-10 ); - handle.visible = false; - - } - - } - - } else if ( this.mode === 'rotate' ) { - - // Align handles to current local or world rotation - - _tempQuaternion2.copy( quaternion ); - _alignVector.copy( this.eye ).applyQuaternion( _tempQuaternion.copy( quaternion ).invert() ); - - if ( handle.name.search( 'E' ) !== - 1 ) { - - handle.quaternion.setFromRotationMatrix( _lookAtMatrix.lookAt( this.eye, _zeroVector, _unitY ) ); - - } - - if ( handle.name === 'X' ) { - - _tempQuaternion.setFromAxisAngle( _unitX, Math.atan2( - _alignVector.y, _alignVector.z ) ); - _tempQuaternion.multiplyQuaternions( _tempQuaternion2, _tempQuaternion ); - handle.quaternion.copy( _tempQuaternion ); - - } - - if ( handle.name === 'Y' ) { - - _tempQuaternion.setFromAxisAngle( _unitY, Math.atan2( _alignVector.x, _alignVector.z ) ); - _tempQuaternion.multiplyQuaternions( _tempQuaternion2, _tempQuaternion ); - handle.quaternion.copy( _tempQuaternion ); - - } - - if ( handle.name === 'Z' ) { - - _tempQuaternion.setFromAxisAngle( _unitZ, Math.atan2( _alignVector.y, _alignVector.x ) ); - _tempQuaternion.multiplyQuaternions( _tempQuaternion2, _tempQuaternion ); - handle.quaternion.copy( _tempQuaternion ); - - } - - } - - // Hide disabled axes - handle.visible = handle.visible && ( handle.name.indexOf( 'X' ) === - 1 || this.showX ); - handle.visible = handle.visible && ( handle.name.indexOf( 'Y' ) === - 1 || this.showY ); - handle.visible = handle.visible && ( handle.name.indexOf( 'Z' ) === - 1 || this.showZ ); - handle.visible = handle.visible && ( handle.name.indexOf( 'E' ) === - 1 || ( this.showX && this.showY && this.showZ ) ); - - // highlight selected axis - - handle.material._color = handle.material._color || handle.material.color.clone(); - handle.material._opacity = handle.material._opacity || handle.material.opacity; - - handle.material.color.copy( handle.material._color ); - handle.material.opacity = handle.material._opacity; - - if ( this.enabled && this.axis ) { - - if ( handle.name === this.axis ) { - - handle.material.color.setHex( 0xffff00 ); - handle.material.opacity = 1.0; - - } else if ( this.axis.split( '' ).some( function ( a ) { - - return handle.name === a; - - } ) ) { - - handle.material.color.setHex( 0xffff00 ); - handle.material.opacity = 1.0; - - } - - } - - } - - super.updateMatrixWorld( force ); - - } - -} - -// - -class TransformControlsPlane extends Mesh { - - constructor() { - - super( - new PlaneGeometry( 100000, 100000, 2, 2 ), - new MeshBasicMaterial( { visible: false, wireframe: true, side: DoubleSide, transparent: true, opacity: 0.1, toneMapped: false } ) - ); - - this.isTransformControlsPlane = true; - - this.type = 'TransformControlsPlane'; - - } - - updateMatrixWorld( force ) { - - let space = this.space; - - this.position.copy( this.worldPosition ); - - if ( this.mode === 'scale' ) space = 'local'; // scale always oriented to local rotation - - _v1.copy( _unitX ).applyQuaternion( space === 'local' ? this.worldQuaternion : _identityQuaternion ); - _v2.copy( _unitY ).applyQuaternion( space === 'local' ? this.worldQuaternion : _identityQuaternion ); - _v3.copy( _unitZ ).applyQuaternion( space === 'local' ? this.worldQuaternion : _identityQuaternion ); - - // Align the plane for current transform mode, axis and space. - - _alignVector.copy( _v2 ); - - switch ( this.mode ) { - - case 'translate': - case 'scale': - switch ( this.axis ) { - - case 'X': - _alignVector.copy( this.eye ).cross( _v1 ); - _dirVector.copy( _v1 ).cross( _alignVector ); - break; - case 'Y': - _alignVector.copy( this.eye ).cross( _v2 ); - _dirVector.copy( _v2 ).cross( _alignVector ); - break; - case 'Z': - _alignVector.copy( this.eye ).cross( _v3 ); - _dirVector.copy( _v3 ).cross( _alignVector ); - break; - case 'XY': - _dirVector.copy( _v3 ); - break; - case 'YZ': - _dirVector.copy( _v1 ); - break; - case 'XZ': - _alignVector.copy( _v3 ); - _dirVector.copy( _v2 ); - break; - case 'XYZ': - case 'E': - _dirVector.set( 0, 0, 0 ); - break; - - } - - break; - case 'rotate': - default: - // special case for rotate - _dirVector.set( 0, 0, 0 ); - - } - - if ( _dirVector.length() === 0 ) { - - // If in rotate mode, make the plane parallel to camera - this.quaternion.copy( this.cameraQuaternion ); - - } else { - - _tempMatrix.lookAt( _tempVector.set( 0, 0, 0 ), _dirVector, _alignVector ); - - this.quaternion.setFromRotationMatrix( _tempMatrix ); - - } - - super.updateMatrixWorld( force ); - - } - -} - -export { TransformControls, TransformControlsGizmo, TransformControlsPlane }; diff --git a/three/addons/csm/CSM.js b/three/addons/csm/CSM.js deleted file mode 100644 index 39c5d7a..0000000 --- a/three/addons/csm/CSM.js +++ /dev/null @@ -1,384 +0,0 @@ -import { - Vector2, - Vector3, - DirectionalLight, - MathUtils, - ShaderChunk, - Matrix4, - Box3 -} from '../../../three/three.module.js'; -import { CSMFrustum } from './CSMFrustum.js'; -import { CSMShader } from './CSMShader.js'; - -const _cameraToLightMatrix = new Matrix4(); -const _lightSpaceFrustum = new CSMFrustum(); -const _center = new Vector3(); -const _bbox = new Box3(); -const _uniformArray = []; -const _logArray = []; -const _lightOrientationMatrix = new Matrix4(); -const _lightOrientationMatrixInverse = new Matrix4(); -const _up = new Vector3( 0, 1, 0 ); - -export class CSM { - - constructor( data ) { - - this.camera = data.camera; - this.parent = data.parent; - this.cascades = data.cascades || 3; - this.maxFar = data.maxFar || 100000; - this.mode = data.mode || 'practical'; - this.shadowMapSize = data.shadowMapSize || 2048; - this.shadowBias = data.shadowBias || 0.000001; - this.lightDirection = data.lightDirection || new Vector3( 1, - 1, 1 ).normalize(); - this.lightIntensity = data.lightIntensity || 3; - this.lightNear = data.lightNear || 1; - this.lightFar = data.lightFar || 2000; - this.lightMargin = data.lightMargin || 200; - this.customSplitsCallback = data.customSplitsCallback; - this.fade = false; - this.mainFrustum = new CSMFrustum(); - this.frustums = []; - this.breaks = []; - - this.lights = []; - this.shaders = new Map(); - - this.createLights(); - this.updateFrustums(); - this.injectInclude(); - - } - - createLights() { - - for ( let i = 0; i < this.cascades; i ++ ) { - - const light = new DirectionalLight( 0xffffff, this.lightIntensity ); - light.castShadow = true; - light.shadow.mapSize.width = this.shadowMapSize; - light.shadow.mapSize.height = this.shadowMapSize; - - light.shadow.camera.near = this.lightNear; - light.shadow.camera.far = this.lightFar; - light.shadow.bias = this.shadowBias; - - this.parent.add( light ); - this.parent.add( light.target ); - this.lights.push( light ); - - } - - } - - initCascades() { - - const camera = this.camera; - camera.updateProjectionMatrix(); - this.mainFrustum.setFromProjectionMatrix( camera.projectionMatrix, this.maxFar ); - this.mainFrustum.split( this.breaks, this.frustums ); - - } - - updateShadowBounds() { - - const frustums = this.frustums; - for ( let i = 0; i < frustums.length; i ++ ) { - - const light = this.lights[ i ]; - const shadowCam = light.shadow.camera; - const frustum = this.frustums[ i ]; - - // Get the two points that represent that furthest points on the frustum assuming - // that's either the diagonal across the far plane or the diagonal across the whole - // frustum itself. - const nearVerts = frustum.vertices.near; - const farVerts = frustum.vertices.far; - const point1 = farVerts[ 0 ]; - let point2; - if ( point1.distanceTo( farVerts[ 2 ] ) > point1.distanceTo( nearVerts[ 2 ] ) ) { - - point2 = farVerts[ 2 ]; - - } else { - - point2 = nearVerts[ 2 ]; - - } - - let squaredBBWidth = point1.distanceTo( point2 ); - if ( this.fade ) { - - // expand the shadow extents by the fade margin if fade is enabled. - const camera = this.camera; - const far = Math.max( camera.far, this.maxFar ); - const linearDepth = frustum.vertices.far[ 0 ].z / ( far - camera.near ); - const margin = 0.25 * Math.pow( linearDepth, 2.0 ) * ( far - camera.near ); - - squaredBBWidth += margin; - - } - - shadowCam.left = - squaredBBWidth / 2; - shadowCam.right = squaredBBWidth / 2; - shadowCam.top = squaredBBWidth / 2; - shadowCam.bottom = - squaredBBWidth / 2; - shadowCam.updateProjectionMatrix(); - - } - - } - - getBreaks() { - - const camera = this.camera; - const far = Math.min( camera.far, this.maxFar ); - this.breaks.length = 0; - - switch ( this.mode ) { - - case 'uniform': - uniformSplit( this.cascades, camera.near, far, this.breaks ); - break; - case 'logarithmic': - logarithmicSplit( this.cascades, camera.near, far, this.breaks ); - break; - case 'practical': - practicalSplit( this.cascades, camera.near, far, 0.5, this.breaks ); - break; - case 'custom': - if ( this.customSplitsCallback === undefined ) console.error( 'CSM: Custom split scheme callback not defined.' ); - this.customSplitsCallback( this.cascades, camera.near, far, this.breaks ); - break; - - } - - function uniformSplit( amount, near, far, target ) { - - for ( let i = 1; i < amount; i ++ ) { - - target.push( ( near + ( far - near ) * i / amount ) / far ); - - } - - target.push( 1 ); - - } - - function logarithmicSplit( amount, near, far, target ) { - - for ( let i = 1; i < amount; i ++ ) { - - target.push( ( near * ( far / near ) ** ( i / amount ) ) / far ); - - } - - target.push( 1 ); - - } - - function practicalSplit( amount, near, far, lambda, target ) { - - _uniformArray.length = 0; - _logArray.length = 0; - logarithmicSplit( amount, near, far, _logArray ); - uniformSplit( amount, near, far, _uniformArray ); - - for ( let i = 1; i < amount; i ++ ) { - - target.push( MathUtils.lerp( _uniformArray[ i - 1 ], _logArray[ i - 1 ], lambda ) ); - - } - - target.push( 1 ); - - } - - } - - update() { - - const camera = this.camera; - const frustums = this.frustums; - - // for each frustum we need to find its min-max box aligned with the light orientation - // the position in _lightOrientationMatrix does not matter, as we transform there and back - _lightOrientationMatrix.lookAt( new Vector3(), this.lightDirection, _up ); - _lightOrientationMatrixInverse.copy( _lightOrientationMatrix ).invert(); - - for ( let i = 0; i < frustums.length; i ++ ) { - - const light = this.lights[ i ]; - const shadowCam = light.shadow.camera; - const texelWidth = ( shadowCam.right - shadowCam.left ) / this.shadowMapSize; - const texelHeight = ( shadowCam.top - shadowCam.bottom ) / this.shadowMapSize; - _cameraToLightMatrix.multiplyMatrices( _lightOrientationMatrixInverse, camera.matrixWorld ); - frustums[ i ].toSpace( _cameraToLightMatrix, _lightSpaceFrustum ); - - const nearVerts = _lightSpaceFrustum.vertices.near; - const farVerts = _lightSpaceFrustum.vertices.far; - _bbox.makeEmpty(); - for ( let j = 0; j < 4; j ++ ) { - - _bbox.expandByPoint( nearVerts[ j ] ); - _bbox.expandByPoint( farVerts[ j ] ); - - } - - _bbox.getCenter( _center ); - _center.z = _bbox.max.z + this.lightMargin; - _center.x = Math.floor( _center.x / texelWidth ) * texelWidth; - _center.y = Math.floor( _center.y / texelHeight ) * texelHeight; - _center.applyMatrix4( _lightOrientationMatrix ); - - light.position.copy( _center ); - light.target.position.copy( _center ); - - light.target.position.x += this.lightDirection.x; - light.target.position.y += this.lightDirection.y; - light.target.position.z += this.lightDirection.z; - - } - - } - - injectInclude() { - - ShaderChunk.lights_fragment_begin = CSMShader.lights_fragment_begin; - ShaderChunk.lights_pars_begin = CSMShader.lights_pars_begin; - - } - - setupMaterial( material ) { - - material.defines = material.defines || {}; - material.defines.USE_CSM = 1; - material.defines.CSM_CASCADES = this.cascades; - - if ( this.fade ) { - - material.defines.CSM_FADE = ''; - - } - - const breaksVec2 = []; - const scope = this; - const shaders = this.shaders; - - material.onBeforeCompile = function ( shader ) { - - const far = Math.min( scope.camera.far, scope.maxFar ); - scope.getExtendedBreaks( breaksVec2 ); - - shader.uniforms.CSM_cascades = { value: breaksVec2 }; - shader.uniforms.cameraNear = { value: scope.camera.near }; - shader.uniforms.shadowFar = { value: far }; - - shaders.set( material, shader ); - - }; - - shaders.set( material, null ); - - } - - updateUniforms() { - - const far = Math.min( this.camera.far, this.maxFar ); - const shaders = this.shaders; - - shaders.forEach( function ( shader, material ) { - - if ( shader !== null ) { - - const uniforms = shader.uniforms; - this.getExtendedBreaks( uniforms.CSM_cascades.value ); - uniforms.cameraNear.value = this.camera.near; - uniforms.shadowFar.value = far; - - } - - if ( ! this.fade && 'CSM_FADE' in material.defines ) { - - delete material.defines.CSM_FADE; - material.needsUpdate = true; - - } else if ( this.fade && ! ( 'CSM_FADE' in material.defines ) ) { - - material.defines.CSM_FADE = ''; - material.needsUpdate = true; - - } - - }, this ); - - } - - getExtendedBreaks( target ) { - - while ( target.length < this.breaks.length ) { - - target.push( new Vector2() ); - - } - - target.length = this.breaks.length; - - for ( let i = 0; i < this.cascades; i ++ ) { - - const amount = this.breaks[ i ]; - const prev = this.breaks[ i - 1 ] || 0; - target[ i ].x = prev; - target[ i ].y = amount; - - } - - } - - updateFrustums() { - - this.getBreaks(); - this.initCascades(); - this.updateShadowBounds(); - this.updateUniforms(); - - } - - remove() { - - for ( let i = 0; i < this.lights.length; i ++ ) { - - this.parent.remove( this.lights[ i ].target ); - this.parent.remove( this.lights[ i ] ); - - } - - } - - dispose() { - - const shaders = this.shaders; - shaders.forEach( function ( shader, material ) { - - delete material.onBeforeCompile; - delete material.defines.USE_CSM; - delete material.defines.CSM_CASCADES; - delete material.defines.CSM_FADE; - - if ( shader !== null ) { - - delete shader.uniforms.CSM_cascades; - delete shader.uniforms.cameraNear; - delete shader.uniforms.shadowFar; - - } - - material.needsUpdate = true; - - } ); - shaders.clear(); - - } - -} diff --git a/three/addons/csm/CSMFrustum.js b/three/addons/csm/CSMFrustum.js deleted file mode 100644 index 1098264..0000000 --- a/three/addons/csm/CSMFrustum.js +++ /dev/null @@ -1,152 +0,0 @@ -import { Vector3, Matrix4 } from '../../../three/three.module.js'; - -const inverseProjectionMatrix = new Matrix4(); - -class CSMFrustum { - - constructor( data ) { - - data = data || {}; - - this.vertices = { - near: [ - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3() - ], - far: [ - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3() - ] - }; - - if ( data.projectionMatrix !== undefined ) { - - this.setFromProjectionMatrix( data.projectionMatrix, data.maxFar || 10000 ); - - } - - } - - setFromProjectionMatrix( projectionMatrix, maxFar ) { - - const isOrthographic = projectionMatrix.elements[ 2 * 4 + 3 ] === 0; - - inverseProjectionMatrix.copy( projectionMatrix ).invert(); - - // 3 --- 0 vertices.near/far order - // | | - // 2 --- 1 - // clip space spans from [-1, 1] - - this.vertices.near[ 0 ].set( 1, 1, - 1 ); - this.vertices.near[ 1 ].set( 1, - 1, - 1 ); - this.vertices.near[ 2 ].set( - 1, - 1, - 1 ); - this.vertices.near[ 3 ].set( - 1, 1, - 1 ); - this.vertices.near.forEach( function ( v ) { - - v.applyMatrix4( inverseProjectionMatrix ); - - } ); - - this.vertices.far[ 0 ].set( 1, 1, 1 ); - this.vertices.far[ 1 ].set( 1, - 1, 1 ); - this.vertices.far[ 2 ].set( - 1, - 1, 1 ); - this.vertices.far[ 3 ].set( - 1, 1, 1 ); - this.vertices.far.forEach( function ( v ) { - - v.applyMatrix4( inverseProjectionMatrix ); - - const absZ = Math.abs( v.z ); - if ( isOrthographic ) { - - v.z *= Math.min( maxFar / absZ, 1.0 ); - - } else { - - v.multiplyScalar( Math.min( maxFar / absZ, 1.0 ) ); - - } - - } ); - - return this.vertices; - - } - - split( breaks, target ) { - - while ( breaks.length > target.length ) { - - target.push( new CSMFrustum() ); - - } - - target.length = breaks.length; - - for ( let i = 0; i < breaks.length; i ++ ) { - - const cascade = target[ i ]; - - if ( i === 0 ) { - - for ( let j = 0; j < 4; j ++ ) { - - cascade.vertices.near[ j ].copy( this.vertices.near[ j ] ); - - } - - } else { - - for ( let j = 0; j < 4; j ++ ) { - - cascade.vertices.near[ j ].lerpVectors( this.vertices.near[ j ], this.vertices.far[ j ], breaks[ i - 1 ] ); - - } - - } - - if ( i === breaks.length - 1 ) { - - for ( let j = 0; j < 4; j ++ ) { - - cascade.vertices.far[ j ].copy( this.vertices.far[ j ] ); - - } - - } else { - - for ( let j = 0; j < 4; j ++ ) { - - cascade.vertices.far[ j ].lerpVectors( this.vertices.near[ j ], this.vertices.far[ j ], breaks[ i ] ); - - } - - } - - } - - } - - toSpace( cameraMatrix, target ) { - - for ( let i = 0; i < 4; i ++ ) { - - target.vertices.near[ i ] - .copy( this.vertices.near[ i ] ) - .applyMatrix4( cameraMatrix ); - - target.vertices.far[ i ] - .copy( this.vertices.far[ i ] ) - .applyMatrix4( cameraMatrix ); - - } - - } - -} - -export { CSMFrustum }; diff --git a/three/addons/csm/CSMHelper.js b/three/addons/csm/CSMHelper.js deleted file mode 100644 index 1849472..0000000 --- a/three/addons/csm/CSMHelper.js +++ /dev/null @@ -1,193 +0,0 @@ -import { - Group, - Mesh, - LineSegments, - BufferGeometry, - LineBasicMaterial, - Box3Helper, - Box3, - PlaneGeometry, - MeshBasicMaterial, - BufferAttribute, - DoubleSide -} from '../../../three/three.module.js'; - -class CSMHelper extends Group { - - constructor( csm ) { - - super(); - this.csm = csm; - this.displayFrustum = true; - this.displayPlanes = true; - this.displayShadowBounds = true; - - const indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); - const positions = new Float32Array( 24 ); - const frustumGeometry = new BufferGeometry(); - frustumGeometry.setIndex( new BufferAttribute( indices, 1 ) ); - frustumGeometry.setAttribute( 'position', new BufferAttribute( positions, 3, false ) ); - const frustumLines = new LineSegments( frustumGeometry, new LineBasicMaterial() ); - this.add( frustumLines ); - - this.frustumLines = frustumLines; - this.cascadeLines = []; - this.cascadePlanes = []; - this.shadowLines = []; - - } - - updateVisibility() { - - const displayFrustum = this.displayFrustum; - const displayPlanes = this.displayPlanes; - const displayShadowBounds = this.displayShadowBounds; - - const frustumLines = this.frustumLines; - const cascadeLines = this.cascadeLines; - const cascadePlanes = this.cascadePlanes; - const shadowLines = this.shadowLines; - for ( let i = 0, l = cascadeLines.length; i < l; i ++ ) { - - const cascadeLine = cascadeLines[ i ]; - const cascadePlane = cascadePlanes[ i ]; - const shadowLineGroup = shadowLines[ i ]; - - cascadeLine.visible = displayFrustum; - cascadePlane.visible = displayFrustum && displayPlanes; - shadowLineGroup.visible = displayShadowBounds; - - } - - frustumLines.visible = displayFrustum; - - } - - update() { - - const csm = this.csm; - const camera = csm.camera; - const cascades = csm.cascades; - const mainFrustum = csm.mainFrustum; - const frustums = csm.frustums; - const lights = csm.lights; - - const frustumLines = this.frustumLines; - const frustumLinePositions = frustumLines.geometry.getAttribute( 'position' ); - const cascadeLines = this.cascadeLines; - const cascadePlanes = this.cascadePlanes; - const shadowLines = this.shadowLines; - - this.position.copy( camera.position ); - this.quaternion.copy( camera.quaternion ); - this.scale.copy( camera.scale ); - this.updateMatrixWorld( true ); - - while ( cascadeLines.length > cascades ) { - - this.remove( cascadeLines.pop() ); - this.remove( cascadePlanes.pop() ); - this.remove( shadowLines.pop() ); - - } - - while ( cascadeLines.length < cascades ) { - - const cascadeLine = new Box3Helper( new Box3(), 0xffffff ); - const planeMat = new MeshBasicMaterial( { transparent: true, opacity: 0.1, depthWrite: false, side: DoubleSide } ); - const cascadePlane = new Mesh( new PlaneGeometry(), planeMat ); - const shadowLineGroup = new Group(); - const shadowLine = new Box3Helper( new Box3(), 0xffff00 ); - shadowLineGroup.add( shadowLine ); - - this.add( cascadeLine ); - this.add( cascadePlane ); - this.add( shadowLineGroup ); - - cascadeLines.push( cascadeLine ); - cascadePlanes.push( cascadePlane ); - shadowLines.push( shadowLineGroup ); - - } - - for ( let i = 0; i < cascades; i ++ ) { - - const frustum = frustums[ i ]; - const light = lights[ i ]; - const shadowCam = light.shadow.camera; - const farVerts = frustum.vertices.far; - - const cascadeLine = cascadeLines[ i ]; - const cascadePlane = cascadePlanes[ i ]; - const shadowLineGroup = shadowLines[ i ]; - const shadowLine = shadowLineGroup.children[ 0 ]; - - cascadeLine.box.min.copy( farVerts[ 2 ] ); - cascadeLine.box.max.copy( farVerts[ 0 ] ); - cascadeLine.box.max.z += 1e-4; - - cascadePlane.position.addVectors( farVerts[ 0 ], farVerts[ 2 ] ); - cascadePlane.position.multiplyScalar( 0.5 ); - cascadePlane.scale.subVectors( farVerts[ 0 ], farVerts[ 2 ] ); - cascadePlane.scale.z = 1e-4; - - this.remove( shadowLineGroup ); - shadowLineGroup.position.copy( shadowCam.position ); - shadowLineGroup.quaternion.copy( shadowCam.quaternion ); - shadowLineGroup.scale.copy( shadowCam.scale ); - shadowLineGroup.updateMatrixWorld( true ); - this.attach( shadowLineGroup ); - - shadowLine.box.min.set( shadowCam.bottom, shadowCam.left, - shadowCam.far ); - shadowLine.box.max.set( shadowCam.top, shadowCam.right, - shadowCam.near ); - - } - - const nearVerts = mainFrustum.vertices.near; - const farVerts = mainFrustum.vertices.far; - frustumLinePositions.setXYZ( 0, farVerts[ 0 ].x, farVerts[ 0 ].y, farVerts[ 0 ].z ); - frustumLinePositions.setXYZ( 1, farVerts[ 3 ].x, farVerts[ 3 ].y, farVerts[ 3 ].z ); - frustumLinePositions.setXYZ( 2, farVerts[ 2 ].x, farVerts[ 2 ].y, farVerts[ 2 ].z ); - frustumLinePositions.setXYZ( 3, farVerts[ 1 ].x, farVerts[ 1 ].y, farVerts[ 1 ].z ); - - frustumLinePositions.setXYZ( 4, nearVerts[ 0 ].x, nearVerts[ 0 ].y, nearVerts[ 0 ].z ); - frustumLinePositions.setXYZ( 5, nearVerts[ 3 ].x, nearVerts[ 3 ].y, nearVerts[ 3 ].z ); - frustumLinePositions.setXYZ( 6, nearVerts[ 2 ].x, nearVerts[ 2 ].y, nearVerts[ 2 ].z ); - frustumLinePositions.setXYZ( 7, nearVerts[ 1 ].x, nearVerts[ 1 ].y, nearVerts[ 1 ].z ); - frustumLinePositions.needsUpdate = true; - - } - - dispose() { - - const frustumLines = this.frustumLines; - const cascadeLines = this.cascadeLines; - const cascadePlanes = this.cascadePlanes; - const shadowLines = this.shadowLines; - - frustumLines.geometry.dispose(); - frustumLines.material.dispose(); - - const cascades = this.csm.cascades; - - for ( let i = 0; i < cascades; i ++ ) { - - const cascadeLine = cascadeLines[ i ]; - const cascadePlane = cascadePlanes[ i ]; - const shadowLineGroup = shadowLines[ i ]; - const shadowLine = shadowLineGroup.children[ 0 ]; - - cascadeLine.dispose(); // Box3Helper - - cascadePlane.geometry.dispose(); - cascadePlane.material.dispose(); - - shadowLine.dispose(); // Box3Helper - - } - - } - -} - -export { CSMHelper }; diff --git a/three/addons/csm/CSMShader.js b/three/addons/csm/CSMShader.js deleted file mode 100644 index 4d2db1b..0000000 --- a/three/addons/csm/CSMShader.js +++ /dev/null @@ -1,295 +0,0 @@ -import { ShaderChunk } from '../../../three/three.module.js'; - -const CSMShader = { - lights_fragment_begin: /* glsl */` -vec3 geometryPosition = - vViewPosition; -vec3 geometryNormal = normal; -vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); - -vec3 geometryClearcoatNormal = vec3( 0.0 ); - -#ifdef USE_CLEARCOAT - - geometryClearcoatNormal = clearcoatNormal; - -#endif - -#ifdef USE_IRIDESCENCE - float dotNVi = saturate( dot( normal, geometryViewDir ) ); - if ( material.iridescenceThickness == 0.0 ) { - material.iridescence = 0.0; - } else { - material.iridescence = saturate( material.iridescence ); - } - if ( material.iridescence > 0.0 ) { - material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); - // Iridescence F0 approximation - material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); - } -#endif - -IncidentLight directLight; - -#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) - - PointLight pointLight; - #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 - PointLightShadow pointLightShadow; - #endif - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { - - pointLight = pointLights[ i ]; - - getPointLightInfo( pointLight, geometryPosition, directLight ); - - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) - pointLightShadow = pointLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; - #endif - - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - -#endif - -#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) - - SpotLight spotLight; - vec4 spotColor; - vec3 spotLightCoord; - bool inSpotLightMap; - - #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 - SpotLightShadow spotLightShadow; - #endif - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { - - spotLight = spotLights[ i ]; - - getSpotLightInfo( spotLight, geometryPosition, directLight ); - - // spot lights are ordered [shadows with maps, shadows without maps, maps without shadows, none] - #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) - #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX - #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS - #else - #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) - #endif - #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) - spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; - inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); - spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); - directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; - #endif - #undef SPOT_LIGHT_MAP_INDEX - - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) - spotLightShadow = spotLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; - - #endif - - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - -#endif - -#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) && defined( USE_CSM ) && defined( CSM_CASCADES ) - - DirectionalLight directionalLight; - float linearDepth = (vViewPosition.z) / (shadowFar - cameraNear); - #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLightShadow; - #endif - - #if defined( USE_SHADOWMAP ) && defined( CSM_FADE ) - vec2 cascade; - float cascadeCenter; - float closestEdge; - float margin; - float csmx; - float csmy; - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - - directionalLight = directionalLights[ i ]; - getDirectionalLightInfo( directionalLight, directLight ); - - #if ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) - // NOTE: Depth gets larger away from the camera. - // cascade.x is closer, cascade.y is further - cascade = CSM_cascades[ i ]; - cascadeCenter = ( cascade.x + cascade.y ) / 2.0; - closestEdge = linearDepth < cascadeCenter ? cascade.x : cascade.y; - margin = 0.25 * pow( closestEdge, 2.0 ); - csmx = cascade.x - margin / 2.0; - csmy = cascade.y + margin / 2.0; - if( linearDepth >= csmx && ( linearDepth < csmy || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 ) ) { - - float dist = min( linearDepth - csmx, csmy - linearDepth ); - float ratio = clamp( dist / margin, 0.0, 1.0 ); - - vec3 prevColor = directLight.color; - directionalLightShadow = directionalLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - - bool shouldFadeLastCascade = UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 && linearDepth > cascadeCenter; - directLight.color = mix( prevColor, directLight.color, shouldFadeLastCascade ? ratio : 1.0 ); - - ReflectedLight prevLight = reflectedLight; - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - bool shouldBlend = UNROLLED_LOOP_INDEX != CSM_CASCADES - 1 || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1 && linearDepth < cascadeCenter; - float blendRatio = shouldBlend ? ratio : 1.0; - - reflectedLight.directDiffuse = mix( prevLight.directDiffuse, reflectedLight.directDiffuse, blendRatio ); - reflectedLight.directSpecular = mix( prevLight.directSpecular, reflectedLight.directSpecular, blendRatio ); - reflectedLight.indirectDiffuse = mix( prevLight.indirectDiffuse, reflectedLight.indirectDiffuse, blendRatio ); - reflectedLight.indirectSpecular = mix( prevLight.indirectSpecular, reflectedLight.indirectSpecular, blendRatio ); - - } - #endif - - } - #pragma unroll_loop_end - #elif defined (USE_SHADOWMAP) - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - - directionalLight = directionalLights[ i ]; - getDirectionalLightInfo( directionalLight, directLight ); - - #if ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) - - directionalLightShadow = directionalLightShadows[ i ]; - if(linearDepth >= CSM_cascades[UNROLLED_LOOP_INDEX].x && linearDepth < CSM_cascades[UNROLLED_LOOP_INDEX].y) directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - - if(linearDepth >= CSM_cascades[UNROLLED_LOOP_INDEX].x && (linearDepth < CSM_cascades[UNROLLED_LOOP_INDEX].y || UNROLLED_LOOP_INDEX == CSM_CASCADES - 1)) RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - #endif - - } - #pragma unroll_loop_end - - #elif ( NUM_DIR_LIGHT_SHADOWS > 0 ) - // note: no loop here - all CSM lights are in fact one light only - getDirectionalLightInfo( directionalLights[0], directLight ); - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - #endif - - #if ( NUM_DIR_LIGHTS > NUM_DIR_LIGHT_SHADOWS) - // compute the lights not casting shadows (if any) - - #pragma unroll_loop_start - for ( int i = NUM_DIR_LIGHT_SHADOWS; i < NUM_DIR_LIGHTS; i ++ ) { - - directionalLight = directionalLights[ i ]; - - getDirectionalLightInfo( directionalLight, directLight ); - - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - - #endif - -#endif - - -#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) && !defined( USE_CSM ) && !defined( CSM_CASCADES ) - - DirectionalLight directionalLight; - #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 - DirectionalLightShadow directionalLightShadow; - #endif - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { - - directionalLight = directionalLights[ i ]; - - getDirectionalLightInfo( directionalLight, directLight ); - - #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) - directionalLightShadow = directionalLightShadows[ i ]; - directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; - #endif - - RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - -#endif - -#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) - - RectAreaLight rectAreaLight; - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { - - rectAreaLight = rectAreaLights[ i ]; - RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); - - } - #pragma unroll_loop_end - -#endif - -#if defined( RE_IndirectDiffuse ) - - vec3 iblIrradiance = vec3( 0.0 ); - - vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); - - #if defined( USE_LIGHT_PROBES ) - - irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); - - #endif - - #if ( NUM_HEMI_LIGHTS > 0 ) - - #pragma unroll_loop_start - for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { - - irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); - - } - #pragma unroll_loop_end - - #endif - -#endif - -#if defined( RE_IndirectSpecular ) - - vec3 radiance = vec3( 0.0 ); - vec3 clearcoatRadiance = vec3( 0.0 ); - -#endif -`, - lights_pars_begin: /* glsl */` -#if defined( USE_CSM ) && defined( CSM_CASCADES ) -uniform vec2 CSM_cascades[CSM_CASCADES]; -uniform float cameraNear; -uniform float shadowFar; -#endif - ` + ShaderChunk.lights_pars_begin -}; - -export { CSMShader }; diff --git a/three/addons/curves/CurveExtras.js b/three/addons/curves/CurveExtras.js deleted file mode 100644 index 51efb84..0000000 --- a/three/addons/curves/CurveExtras.js +++ /dev/null @@ -1,422 +0,0 @@ -import { - Curve, - Vector3 -} from 'three'; - -/** - * A bunch of parametric curves - * - * Formulas collected from various sources - * http://mathworld.wolfram.com/HeartCurve.html - * http://en.wikipedia.org/wiki/Viviani%27s_curve - * http://www.mi.sanu.ac.rs/vismath/taylorapril2011/Taylor.pdf - * https://prideout.net/blog/old/blog/index.html@p=44.html - */ - -// GrannyKnot - -class GrannyKnot extends Curve { - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t = 2 * Math.PI * t; - - const x = - 0.22 * Math.cos( t ) - 1.28 * Math.sin( t ) - 0.44 * Math.cos( 3 * t ) - 0.78 * Math.sin( 3 * t ); - const y = - 0.1 * Math.cos( 2 * t ) - 0.27 * Math.sin( 2 * t ) + 0.38 * Math.cos( 4 * t ) + 0.46 * Math.sin( 4 * t ); - const z = 0.7 * Math.cos( 3 * t ) - 0.4 * Math.sin( 3 * t ); - - return point.set( x, y, z ).multiplyScalar( 20 ); - - } - -} - -// HeartCurve - -class HeartCurve extends Curve { - - constructor( scale = 5 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t *= 2 * Math.PI; - - const x = 16 * Math.pow( Math.sin( t ), 3 ); - const y = 13 * Math.cos( t ) - 5 * Math.cos( 2 * t ) - 2 * Math.cos( 3 * t ) - Math.cos( 4 * t ); - const z = 0; - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - -// Viviani's Curve - -class VivianiCurve extends Curve { - - constructor( scale = 70 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t = t * 4 * Math.PI; // normalized to 0..1 - const a = this.scale / 2; - - const x = a * ( 1 + Math.cos( t ) ); - const y = a * Math.sin( t ); - const z = 2 * a * Math.sin( t / 2 ); - - return point.set( x, y, z ); - - } - -} - -// KnotCurve - -class KnotCurve extends Curve { - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t *= 2 * Math.PI; - - const R = 10; - const s = 50; - - const x = s * Math.sin( t ); - const y = Math.cos( t ) * ( R + s * Math.cos( t ) ); - const z = Math.sin( t ) * ( R + s * Math.cos( t ) ); - - return point.set( x, y, z ); - - } - -} - - -// HelixCurve - -class HelixCurve extends Curve { - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - const a = 30; // radius - const b = 150; // height - - const t2 = 2 * Math.PI * t * b / 30; - - const x = Math.cos( t2 ) * a; - const y = Math.sin( t2 ) * a; - const z = b * t; - - return point.set( x, y, z ); - - } - -} - -// TrefoilKnot - -class TrefoilKnot extends Curve { - - constructor( scale = 10 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t *= Math.PI * 2; - - const x = ( 2 + Math.cos( 3 * t ) ) * Math.cos( 2 * t ); - const y = ( 2 + Math.cos( 3 * t ) ) * Math.sin( 2 * t ); - const z = Math.sin( 3 * t ); - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - -// TorusKnot - -class TorusKnot extends Curve { - - constructor( scale = 10 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - const p = 3; - const q = 4; - - t *= Math.PI * 2; - - const x = ( 2 + Math.cos( q * t ) ) * Math.cos( p * t ); - const y = ( 2 + Math.cos( q * t ) ) * Math.sin( p * t ); - const z = Math.sin( q * t ); - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - -// CinquefoilKnot - -class CinquefoilKnot extends Curve { - - constructor( scale = 10 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - const p = 2; - const q = 5; - - t *= Math.PI * 2; - - const x = ( 2 + Math.cos( q * t ) ) * Math.cos( p * t ); - const y = ( 2 + Math.cos( q * t ) ) * Math.sin( p * t ); - const z = Math.sin( q * t ); - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - - -// TrefoilPolynomialKnot - -class TrefoilPolynomialKnot extends Curve { - - constructor( scale = 10 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t = t * 4 - 2; - - const x = Math.pow( t, 3 ) - 3 * t; - const y = Math.pow( t, 4 ) - 4 * t * t; - const z = 1 / 5 * Math.pow( t, 5 ) - 2 * t; - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - -function scaleTo( x, y, t ) { - - const r = y - x; - return t * r + x; - -} - -// FigureEightPolynomialKnot - -class FigureEightPolynomialKnot extends Curve { - - constructor( scale = 1 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t = scaleTo( - 4, 4, t ); - - const x = 2 / 5 * t * ( t * t - 7 ) * ( t * t - 10 ); - const y = Math.pow( t, 4 ) - 13 * t * t; - const z = 1 / 10 * t * ( t * t - 4 ) * ( t * t - 9 ) * ( t * t - 12 ); - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - -// DecoratedTorusKnot4a - -class DecoratedTorusKnot4a extends Curve { - - constructor( scale = 40 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t *= Math.PI * 2; - - const x = Math.cos( 2 * t ) * ( 1 + 0.6 * ( Math.cos( 5 * t ) + 0.75 * Math.cos( 10 * t ) ) ); - const y = Math.sin( 2 * t ) * ( 1 + 0.6 * ( Math.cos( 5 * t ) + 0.75 * Math.cos( 10 * t ) ) ); - const z = 0.35 * Math.sin( 5 * t ); - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - -// DecoratedTorusKnot4b - -class DecoratedTorusKnot4b extends Curve { - - constructor( scale = 40 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - const fi = t * Math.PI * 2; - - const x = Math.cos( 2 * fi ) * ( 1 + 0.45 * Math.cos( 3 * fi ) + 0.4 * Math.cos( 9 * fi ) ); - const y = Math.sin( 2 * fi ) * ( 1 + 0.45 * Math.cos( 3 * fi ) + 0.4 * Math.cos( 9 * fi ) ); - const z = 0.2 * Math.sin( 9 * fi ); - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - - -// DecoratedTorusKnot5a - -class DecoratedTorusKnot5a extends Curve { - - constructor( scale = 40 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - const fi = t * Math.PI * 2; - - const x = Math.cos( 3 * fi ) * ( 1 + 0.3 * Math.cos( 5 * fi ) + 0.5 * Math.cos( 10 * fi ) ); - const y = Math.sin( 3 * fi ) * ( 1 + 0.3 * Math.cos( 5 * fi ) + 0.5 * Math.cos( 10 * fi ) ); - const z = 0.2 * Math.sin( 20 * fi ); - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - -// DecoratedTorusKnot5c - -class DecoratedTorusKnot5c extends Curve { - - constructor( scale = 40 ) { - - super(); - - this.scale = scale; - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - const fi = t * Math.PI * 2; - - const x = Math.cos( 4 * fi ) * ( 1 + 0.5 * ( Math.cos( 5 * fi ) + 0.4 * Math.cos( 20 * fi ) ) ); - const y = Math.sin( 4 * fi ) * ( 1 + 0.5 * ( Math.cos( 5 * fi ) + 0.4 * Math.cos( 20 * fi ) ) ); - const z = 0.35 * Math.sin( 15 * fi ); - - return point.set( x, y, z ).multiplyScalar( this.scale ); - - } - -} - -export { - GrannyKnot, - HeartCurve, - VivianiCurve, - KnotCurve, - HelixCurve, - TrefoilKnot, - TorusKnot, - CinquefoilKnot, - TrefoilPolynomialKnot, - FigureEightPolynomialKnot, - DecoratedTorusKnot4a, - DecoratedTorusKnot4b, - DecoratedTorusKnot5a, - DecoratedTorusKnot5c -}; diff --git a/three/addons/curves/NURBSCurve.js b/three/addons/curves/NURBSCurve.js deleted file mode 100644 index 8be8dde..0000000 --- a/three/addons/curves/NURBSCurve.js +++ /dev/null @@ -1,80 +0,0 @@ -import { - Curve, - Vector3, - Vector4 -} from 'three'; -import * as NURBSUtils from '../curves/NURBSUtils.js'; - -/** - * NURBS curve object - * - * Derives from Curve, overriding getPoint and getTangent. - * - * Implementation is based on (x, y [, z=0 [, w=1]]) control points with w=weight. - * - **/ - -class NURBSCurve extends Curve { - - constructor( - degree, - knots /* array of reals */, - controlPoints /* array of Vector(2|3|4) */, - startKnot /* index in knots */, - endKnot /* index in knots */ - ) { - - super(); - - this.degree = degree; - this.knots = knots; - this.controlPoints = []; - // Used by periodic NURBS to remove hidden spans - this.startKnot = startKnot || 0; - this.endKnot = endKnot || ( this.knots.length - 1 ); - - for ( let i = 0; i < controlPoints.length; ++ i ) { - - // ensure Vector4 for control points - const point = controlPoints[ i ]; - this.controlPoints[ i ] = new Vector4( point.x, point.y, point.z, point.w ); - - } - - } - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - const u = this.knots[ this.startKnot ] + t * ( this.knots[ this.endKnot ] - this.knots[ this.startKnot ] ); // linear mapping t->u - - // following results in (wx, wy, wz, w) homogeneous point - const hpoint = NURBSUtils.calcBSplinePoint( this.degree, this.knots, this.controlPoints, u ); - - if ( hpoint.w !== 1.0 ) { - - // project to 3D space: (wx, wy, wz, w) -> (x, y, z, 1) - hpoint.divideScalar( hpoint.w ); - - } - - return point.set( hpoint.x, hpoint.y, hpoint.z ); - - } - - getTangent( t, optionalTarget = new Vector3() ) { - - const tangent = optionalTarget; - - const u = this.knots[ 0 ] + t * ( this.knots[ this.knots.length - 1 ] - this.knots[ 0 ] ); - const ders = NURBSUtils.calcNURBSDerivatives( this.degree, this.knots, this.controlPoints, u, 1 ); - tangent.copy( ders[ 1 ] ).normalize(); - - return tangent; - - } - -} - -export { NURBSCurve }; diff --git a/three/addons/curves/NURBSSurface.js b/three/addons/curves/NURBSSurface.js deleted file mode 100644 index 577ecfc..0000000 --- a/three/addons/curves/NURBSSurface.js +++ /dev/null @@ -1,52 +0,0 @@ -import { - Vector4 -} from 'three'; -import * as NURBSUtils from '../curves/NURBSUtils.js'; - -/** - * NURBS surface object - * - * Implementation is based on (x, y [, z=0 [, w=1]]) control points with w=weight. - **/ - -class NURBSSurface { - - constructor( degree1, degree2, knots1, knots2 /* arrays of reals */, controlPoints /* array^2 of Vector(2|3|4) */ ) { - - this.degree1 = degree1; - this.degree2 = degree2; - this.knots1 = knots1; - this.knots2 = knots2; - this.controlPoints = []; - - const len1 = knots1.length - degree1 - 1; - const len2 = knots2.length - degree2 - 1; - - // ensure Vector4 for control points - for ( let i = 0; i < len1; ++ i ) { - - this.controlPoints[ i ] = []; - - for ( let j = 0; j < len2; ++ j ) { - - const point = controlPoints[ i ][ j ]; - this.controlPoints[ i ][ j ] = new Vector4( point.x, point.y, point.z, point.w ); - - } - - } - - } - - getPoint( t1, t2, target ) { - - const u = this.knots1[ 0 ] + t1 * ( this.knots1[ this.knots1.length - 1 ] - this.knots1[ 0 ] ); // linear mapping t1->u - const v = this.knots2[ 0 ] + t2 * ( this.knots2[ this.knots2.length - 1 ] - this.knots2[ 0 ] ); // linear mapping t2->u - - NURBSUtils.calcSurfacePoint( this.degree1, this.degree2, this.knots1, this.knots2, this.controlPoints, u, v, target ); - - } - -} - -export { NURBSSurface }; diff --git a/three/addons/curves/NURBSUtils.js b/three/addons/curves/NURBSUtils.js deleted file mode 100644 index fc77fdb..0000000 --- a/three/addons/curves/NURBSUtils.js +++ /dev/null @@ -1,487 +0,0 @@ -import { - Vector3, - Vector4 -} from 'three'; - -/** - * NURBS utils - * - * See NURBSCurve and NURBSSurface. - **/ - - -/************************************************************** - * NURBS Utils - **************************************************************/ - -/* -Finds knot vector span. - -p : degree -u : parametric value -U : knot vector - -returns the span -*/ -function findSpan( p, u, U ) { - - const n = U.length - p - 1; - - if ( u >= U[ n ] ) { - - return n - 1; - - } - - if ( u <= U[ p ] ) { - - return p; - - } - - let low = p; - let high = n; - let mid = Math.floor( ( low + high ) / 2 ); - - while ( u < U[ mid ] || u >= U[ mid + 1 ] ) { - - if ( u < U[ mid ] ) { - - high = mid; - - } else { - - low = mid; - - } - - mid = Math.floor( ( low + high ) / 2 ); - - } - - return mid; - -} - - -/* -Calculate basis functions. See The NURBS Book, page 70, algorithm A2.2 - -span : span in which u lies -u : parametric point -p : degree -U : knot vector - -returns array[p+1] with basis functions values. -*/ -function calcBasisFunctions( span, u, p, U ) { - - const N = []; - const left = []; - const right = []; - N[ 0 ] = 1.0; - - for ( let j = 1; j <= p; ++ j ) { - - left[ j ] = u - U[ span + 1 - j ]; - right[ j ] = U[ span + j ] - u; - - let saved = 0.0; - - for ( let r = 0; r < j; ++ r ) { - - const rv = right[ r + 1 ]; - const lv = left[ j - r ]; - const temp = N[ r ] / ( rv + lv ); - N[ r ] = saved + rv * temp; - saved = lv * temp; - - } - - N[ j ] = saved; - - } - - return N; - -} - - -/* -Calculate B-Spline curve points. See The NURBS Book, page 82, algorithm A3.1. - -p : degree of B-Spline -U : knot vector -P : control points (x, y, z, w) -u : parametric point - -returns point for given u -*/ -function calcBSplinePoint( p, U, P, u ) { - - const span = findSpan( p, u, U ); - const N = calcBasisFunctions( span, u, p, U ); - const C = new Vector4( 0, 0, 0, 0 ); - - for ( let j = 0; j <= p; ++ j ) { - - const point = P[ span - p + j ]; - const Nj = N[ j ]; - const wNj = point.w * Nj; - C.x += point.x * wNj; - C.y += point.y * wNj; - C.z += point.z * wNj; - C.w += point.w * Nj; - - } - - return C; - -} - - -/* -Calculate basis functions derivatives. See The NURBS Book, page 72, algorithm A2.3. - -span : span in which u lies -u : parametric point -p : degree -n : number of derivatives to calculate -U : knot vector - -returns array[n+1][p+1] with basis functions derivatives -*/ -function calcBasisFunctionDerivatives( span, u, p, n, U ) { - - const zeroArr = []; - for ( let i = 0; i <= p; ++ i ) - zeroArr[ i ] = 0.0; - - const ders = []; - - for ( let i = 0; i <= n; ++ i ) - ders[ i ] = zeroArr.slice( 0 ); - - const ndu = []; - - for ( let i = 0; i <= p; ++ i ) - ndu[ i ] = zeroArr.slice( 0 ); - - ndu[ 0 ][ 0 ] = 1.0; - - const left = zeroArr.slice( 0 ); - const right = zeroArr.slice( 0 ); - - for ( let j = 1; j <= p; ++ j ) { - - left[ j ] = u - U[ span + 1 - j ]; - right[ j ] = U[ span + j ] - u; - - let saved = 0.0; - - for ( let r = 0; r < j; ++ r ) { - - const rv = right[ r + 1 ]; - const lv = left[ j - r ]; - ndu[ j ][ r ] = rv + lv; - - const temp = ndu[ r ][ j - 1 ] / ndu[ j ][ r ]; - ndu[ r ][ j ] = saved + rv * temp; - saved = lv * temp; - - } - - ndu[ j ][ j ] = saved; - - } - - for ( let j = 0; j <= p; ++ j ) { - - ders[ 0 ][ j ] = ndu[ j ][ p ]; - - } - - for ( let r = 0; r <= p; ++ r ) { - - let s1 = 0; - let s2 = 1; - - const a = []; - for ( let i = 0; i <= p; ++ i ) { - - a[ i ] = zeroArr.slice( 0 ); - - } - - a[ 0 ][ 0 ] = 1.0; - - for ( let k = 1; k <= n; ++ k ) { - - let d = 0.0; - const rk = r - k; - const pk = p - k; - - if ( r >= k ) { - - a[ s2 ][ 0 ] = a[ s1 ][ 0 ] / ndu[ pk + 1 ][ rk ]; - d = a[ s2 ][ 0 ] * ndu[ rk ][ pk ]; - - } - - const j1 = ( rk >= - 1 ) ? 1 : - rk; - const j2 = ( r - 1 <= pk ) ? k - 1 : p - r; - - for ( let j = j1; j <= j2; ++ j ) { - - a[ s2 ][ j ] = ( a[ s1 ][ j ] - a[ s1 ][ j - 1 ] ) / ndu[ pk + 1 ][ rk + j ]; - d += a[ s2 ][ j ] * ndu[ rk + j ][ pk ]; - - } - - if ( r <= pk ) { - - a[ s2 ][ k ] = - a[ s1 ][ k - 1 ] / ndu[ pk + 1 ][ r ]; - d += a[ s2 ][ k ] * ndu[ r ][ pk ]; - - } - - ders[ k ][ r ] = d; - - const j = s1; - s1 = s2; - s2 = j; - - } - - } - - let r = p; - - for ( let k = 1; k <= n; ++ k ) { - - for ( let j = 0; j <= p; ++ j ) { - - ders[ k ][ j ] *= r; - - } - - r *= p - k; - - } - - return ders; - -} - - -/* - Calculate derivatives of a B-Spline. See The NURBS Book, page 93, algorithm A3.2. - - p : degree - U : knot vector - P : control points - u : Parametric points - nd : number of derivatives - - returns array[d+1] with derivatives - */ -function calcBSplineDerivatives( p, U, P, u, nd ) { - - const du = nd < p ? nd : p; - const CK = []; - const span = findSpan( p, u, U ); - const nders = calcBasisFunctionDerivatives( span, u, p, du, U ); - const Pw = []; - - for ( let i = 0; i < P.length; ++ i ) { - - const point = P[ i ].clone(); - const w = point.w; - - point.x *= w; - point.y *= w; - point.z *= w; - - Pw[ i ] = point; - - } - - for ( let k = 0; k <= du; ++ k ) { - - const point = Pw[ span - p ].clone().multiplyScalar( nders[ k ][ 0 ] ); - - for ( let j = 1; j <= p; ++ j ) { - - point.add( Pw[ span - p + j ].clone().multiplyScalar( nders[ k ][ j ] ) ); - - } - - CK[ k ] = point; - - } - - for ( let k = du + 1; k <= nd + 1; ++ k ) { - - CK[ k ] = new Vector4( 0, 0, 0 ); - - } - - return CK; - -} - - -/* -Calculate "K over I" - -returns k!/(i!(k-i)!) -*/ -function calcKoverI( k, i ) { - - let nom = 1; - - for ( let j = 2; j <= k; ++ j ) { - - nom *= j; - - } - - let denom = 1; - - for ( let j = 2; j <= i; ++ j ) { - - denom *= j; - - } - - for ( let j = 2; j <= k - i; ++ j ) { - - denom *= j; - - } - - return nom / denom; - -} - - -/* -Calculate derivatives (0-nd) of rational curve. See The NURBS Book, page 127, algorithm A4.2. - -Pders : result of function calcBSplineDerivatives - -returns array with derivatives for rational curve. -*/ -function calcRationalCurveDerivatives( Pders ) { - - const nd = Pders.length; - const Aders = []; - const wders = []; - - for ( let i = 0; i < nd; ++ i ) { - - const point = Pders[ i ]; - Aders[ i ] = new Vector3( point.x, point.y, point.z ); - wders[ i ] = point.w; - - } - - const CK = []; - - for ( let k = 0; k < nd; ++ k ) { - - const v = Aders[ k ].clone(); - - for ( let i = 1; i <= k; ++ i ) { - - v.sub( CK[ k - i ].clone().multiplyScalar( calcKoverI( k, i ) * wders[ i ] ) ); - - } - - CK[ k ] = v.divideScalar( wders[ 0 ] ); - - } - - return CK; - -} - - -/* -Calculate NURBS curve derivatives. See The NURBS Book, page 127, algorithm A4.2. - -p : degree -U : knot vector -P : control points in homogeneous space -u : parametric points -nd : number of derivatives - -returns array with derivatives. -*/ -function calcNURBSDerivatives( p, U, P, u, nd ) { - - const Pders = calcBSplineDerivatives( p, U, P, u, nd ); - return calcRationalCurveDerivatives( Pders ); - -} - - -/* -Calculate rational B-Spline surface point. See The NURBS Book, page 134, algorithm A4.3. - -p1, p2 : degrees of B-Spline surface -U1, U2 : knot vectors -P : control points (x, y, z, w) -u, v : parametric values - -returns point for given (u, v) -*/ -function calcSurfacePoint( p, q, U, V, P, u, v, target ) { - - const uspan = findSpan( p, u, U ); - const vspan = findSpan( q, v, V ); - const Nu = calcBasisFunctions( uspan, u, p, U ); - const Nv = calcBasisFunctions( vspan, v, q, V ); - const temp = []; - - for ( let l = 0; l <= q; ++ l ) { - - temp[ l ] = new Vector4( 0, 0, 0, 0 ); - for ( let k = 0; k <= p; ++ k ) { - - const point = P[ uspan - p + k ][ vspan - q + l ].clone(); - const w = point.w; - point.x *= w; - point.y *= w; - point.z *= w; - temp[ l ].add( point.multiplyScalar( Nu[ k ] ) ); - - } - - } - - const Sw = new Vector4( 0, 0, 0, 0 ); - for ( let l = 0; l <= q; ++ l ) { - - Sw.add( temp[ l ].multiplyScalar( Nv[ l ] ) ); - - } - - Sw.divideScalar( Sw.w ); - target.set( Sw.x, Sw.y, Sw.z ); - -} - - - -export { - findSpan, - calcBasisFunctions, - calcBSplinePoint, - calcBasisFunctionDerivatives, - calcBSplineDerivatives, - calcKoverI, - calcRationalCurveDerivatives, - calcNURBSDerivatives, - calcSurfacePoint, -}; diff --git a/three/addons/effects/AnaglyphEffect.js b/three/addons/effects/AnaglyphEffect.js deleted file mode 100644 index e47f551..0000000 --- a/three/addons/effects/AnaglyphEffect.js +++ /dev/null @@ -1,154 +0,0 @@ -import { - LinearFilter, - Matrix3, - Mesh, - NearestFilter, - OrthographicCamera, - PlaneGeometry, - RGBAFormat, - Scene, - ShaderMaterial, - StereoCamera, - WebGLRenderTarget -} from 'three'; - -class AnaglyphEffect { - - constructor( renderer, width = 512, height = 512 ) { - - // Dubois matrices from https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.7.6968&rep=rep1&type=pdf#page=4 - - this.colorMatrixLeft = new Matrix3().fromArray( [ - 0.456100, - 0.0400822, - 0.0152161, - 0.500484, - 0.0378246, - 0.0205971, - 0.176381, - 0.0157589, - 0.00546856 - ] ); - - this.colorMatrixRight = new Matrix3().fromArray( [ - - 0.0434706, 0.378476, - 0.0721527, - - 0.0879388, 0.73364, - 0.112961, - - 0.00155529, - 0.0184503, 1.2264 - ] ); - - const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 ); - - const _scene = new Scene(); - - const _stereo = new StereoCamera(); - - const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat }; - - const _renderTargetL = new WebGLRenderTarget( width, height, _params ); - const _renderTargetR = new WebGLRenderTarget( width, height, _params ); - - const _material = new ShaderMaterial( { - - uniforms: { - - 'mapLeft': { value: _renderTargetL.texture }, - 'mapRight': { value: _renderTargetR.texture }, - - 'colorMatrixLeft': { value: this.colorMatrixLeft }, - 'colorMatrixRight': { value: this.colorMatrixRight } - - }, - - vertexShader: [ - - 'varying vec2 vUv;', - - 'void main() {', - - ' vUv = vec2( uv.x, uv.y );', - ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', - - '}' - - ].join( '\n' ), - - fragmentShader: [ - - 'uniform sampler2D mapLeft;', - 'uniform sampler2D mapRight;', - 'varying vec2 vUv;', - - 'uniform mat3 colorMatrixLeft;', - 'uniform mat3 colorMatrixRight;', - - 'void main() {', - - ' vec2 uv = vUv;', - - ' vec4 colorL = texture2D( mapLeft, uv );', - ' vec4 colorR = texture2D( mapRight, uv );', - - ' vec3 color = clamp(', - ' colorMatrixLeft * colorL.rgb +', - ' colorMatrixRight * colorR.rgb, 0., 1. );', - - ' gl_FragColor = vec4(', - ' color.r, color.g, color.b,', - ' max( colorL.a, colorR.a ) );', - - ' #include ', - ' #include ', - - '}' - - ].join( '\n' ) - - } ); - - const _mesh = new Mesh( new PlaneGeometry( 2, 2 ), _material ); - _scene.add( _mesh ); - - this.setSize = function ( width, height ) { - - renderer.setSize( width, height ); - - const pixelRatio = renderer.getPixelRatio(); - - _renderTargetL.setSize( width * pixelRatio, height * pixelRatio ); - _renderTargetR.setSize( width * pixelRatio, height * pixelRatio ); - - }; - - this.render = function ( scene, camera ) { - - const currentRenderTarget = renderer.getRenderTarget(); - - if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld(); - - if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld(); - - _stereo.update( camera ); - - renderer.setRenderTarget( _renderTargetL ); - renderer.clear(); - renderer.render( scene, _stereo.cameraL ); - - renderer.setRenderTarget( _renderTargetR ); - renderer.clear(); - renderer.render( scene, _stereo.cameraR ); - - renderer.setRenderTarget( null ); - renderer.render( _scene, _camera ); - - renderer.setRenderTarget( currentRenderTarget ); - - }; - - this.dispose = function () { - - _renderTargetL.dispose(); - _renderTargetR.dispose(); - _mesh.geometry.dispose(); - _mesh.material.dispose(); - - }; - - } - -} - -export { AnaglyphEffect }; diff --git a/three/addons/effects/AsciiEffect.js b/three/addons/effects/AsciiEffect.js deleted file mode 100644 index af5eb7f..0000000 --- a/three/addons/effects/AsciiEffect.js +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Ascii generation is based on https://github.com/hassadee/jsascii/blob/master/jsascii.js - * - * 16 April 2012 - @blurspline - */ - -class AsciiEffect { - - constructor( renderer, charSet = ' .:-=+*#%@', options = {} ) { - - // ' .,:;=|iI+hHOE#`$'; - // darker bolder character set from https://github.com/saw/Canvas-ASCII-Art/ - // ' .\'`^",:;Il!i~+_-?][}{1)(|/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$'.split(''); - - // Some ASCII settings - - const fResolution = options[ 'resolution' ] || 0.15; // Higher for more details - const iScale = options[ 'scale' ] || 1; - const bColor = options[ 'color' ] || false; // nice but slows down rendering! - const bAlpha = options[ 'alpha' ] || false; // Transparency - const bBlock = options[ 'block' ] || false; // blocked characters. like good O dos - const bInvert = options[ 'invert' ] || false; // black is white, white is black - const strResolution = options[ 'strResolution' ] || 'low'; - - let width, height; - - const domElement = document.createElement( 'div' ); - domElement.style.cursor = 'default'; - - const oAscii = document.createElement( 'table' ); - domElement.appendChild( oAscii ); - - let iWidth, iHeight; - let oImg; - - this.setSize = function ( w, h ) { - - width = w; - height = h; - - renderer.setSize( w, h ); - - initAsciiSize(); - - }; - - - this.render = function ( scene, camera ) { - - renderer.render( scene, camera ); - asciifyImage( oAscii ); - - }; - - this.domElement = domElement; - - - // Throw in ascii library from https://github.com/hassadee/jsascii/blob/master/jsascii.js (MIT License) - - function initAsciiSize() { - - iWidth = Math.floor( width * fResolution ); - iHeight = Math.floor( height * fResolution ); - - oCanvas.width = iWidth; - oCanvas.height = iHeight; - // oCanvas.style.display = "none"; - // oCanvas.style.width = iWidth; - // oCanvas.style.height = iHeight; - - oImg = renderer.domElement; - - if ( oImg.style.backgroundColor ) { - - oAscii.rows[ 0 ].cells[ 0 ].style.backgroundColor = oImg.style.backgroundColor; - oAscii.rows[ 0 ].cells[ 0 ].style.color = oImg.style.color; - - } - - oAscii.cellSpacing = 0; - oAscii.cellPadding = 0; - - const oStyle = oAscii.style; - oStyle.whiteSpace = 'pre'; - oStyle.margin = '0px'; - oStyle.padding = '0px'; - oStyle.letterSpacing = fLetterSpacing + 'px'; - oStyle.fontFamily = strFont; - oStyle.fontSize = fFontSize + 'px'; - oStyle.lineHeight = fLineHeight + 'px'; - oStyle.textAlign = 'left'; - oStyle.textDecoration = 'none'; - - } - - - const aDefaultCharList = ( ' .,:;i1tfLCG08@' ).split( '' ); - const aDefaultColorCharList = ( ' CGO08@' ).split( '' ); - const strFont = 'courier new, monospace'; - - const oCanvasImg = renderer.domElement; - - const oCanvas = document.createElement( 'canvas' ); - if ( ! oCanvas.getContext ) { - - return; - - } - - const oCtx = oCanvas.getContext( '2d' ); - if ( ! oCtx.getImageData ) { - - return; - - } - - let aCharList = ( bColor ? aDefaultColorCharList : aDefaultCharList ); - - if ( charSet ) aCharList = charSet; - - // Setup dom - - const fFontSize = ( 2 / fResolution ) * iScale; - const fLineHeight = ( 2 / fResolution ) * iScale; - - // adjust letter-spacing for all combinations of scale and resolution to get it to fit the image width. - - let fLetterSpacing = 0; - - if ( strResolution == 'low' ) { - - switch ( iScale ) { - - case 1 : fLetterSpacing = - 1; break; - case 2 : - case 3 : fLetterSpacing = - 2.1; break; - case 4 : fLetterSpacing = - 3.1; break; - case 5 : fLetterSpacing = - 4.15; break; - - } - - } - - if ( strResolution == 'medium' ) { - - switch ( iScale ) { - - case 1 : fLetterSpacing = 0; break; - case 2 : fLetterSpacing = - 1; break; - case 3 : fLetterSpacing = - 1.04; break; - case 4 : - case 5 : fLetterSpacing = - 2.1; break; - - } - - } - - if ( strResolution == 'high' ) { - - switch ( iScale ) { - - case 1 : - case 2 : fLetterSpacing = 0; break; - case 3 : - case 4 : - case 5 : fLetterSpacing = - 1; break; - - } - - } - - - // can't get a span or div to flow like an img element, but a table works? - - - // convert img element to ascii - - function asciifyImage( oAscii ) { - - oCtx.clearRect( 0, 0, iWidth, iHeight ); - oCtx.drawImage( oCanvasImg, 0, 0, iWidth, iHeight ); - const oImgData = oCtx.getImageData( 0, 0, iWidth, iHeight ).data; - - // Coloring loop starts now - let strChars = ''; - - // console.time('rendering'); - - for ( let y = 0; y < iHeight; y += 2 ) { - - for ( let x = 0; x < iWidth; x ++ ) { - - const iOffset = ( y * iWidth + x ) * 4; - - const iRed = oImgData[ iOffset ]; - const iGreen = oImgData[ iOffset + 1 ]; - const iBlue = oImgData[ iOffset + 2 ]; - const iAlpha = oImgData[ iOffset + 3 ]; - let iCharIdx; - - let fBrightness; - - fBrightness = ( 0.3 * iRed + 0.59 * iGreen + 0.11 * iBlue ) / 255; - // fBrightness = (0.3*iRed + 0.5*iGreen + 0.3*iBlue) / 255; - - if ( iAlpha == 0 ) { - - // should calculate alpha instead, but quick hack :) - //fBrightness *= (iAlpha / 255); - fBrightness = 1; - - } - - iCharIdx = Math.floor( ( 1 - fBrightness ) * ( aCharList.length - 1 ) ); - - if ( bInvert ) { - - iCharIdx = aCharList.length - iCharIdx - 1; - - } - - // good for debugging - //fBrightness = Math.floor(fBrightness * 10); - //strThisChar = fBrightness; - - let strThisChar = aCharList[ iCharIdx ]; - - if ( strThisChar === undefined || strThisChar == ' ' ) - strThisChar = ' '; - - if ( bColor ) { - - strChars += '' + strThisChar + ''; - - } else { - - strChars += strThisChar; - - } - - } - - strChars += '
'; - - } - - oAscii.innerHTML = `${strChars}`; - - // console.timeEnd('rendering'); - - // return oAscii; - - } - - } - -} - -export { AsciiEffect }; diff --git a/three/addons/effects/OutlineEffect.js b/three/addons/effects/OutlineEffect.js deleted file mode 100644 index 3ab6034..0000000 --- a/three/addons/effects/OutlineEffect.js +++ /dev/null @@ -1,539 +0,0 @@ -import { - BackSide, - Color, - ShaderMaterial, - UniformsLib, - UniformsUtils -} from 'three'; - -/** - * Reference: https://en.wikipedia.org/wiki/Cel_shading - * - * API - * - * 1. Traditional - * - * const effect = new OutlineEffect( renderer ); - * - * function render() { - * - * effect.render( scene, camera ); - * - * } - * - * 2. VR compatible - * - * const effect = new OutlineEffect( renderer ); - * let renderingOutline = false; - * - * scene.onAfterRender = function () { - * - * if ( renderingOutline ) return; - * - * renderingOutline = true; - * - * effect.renderOutline( scene, camera ); - * - * renderingOutline = false; - * - * }; - * - * function render() { - * - * renderer.render( scene, camera ); - * - * } - * - * // How to set default outline parameters - * new OutlineEffect( renderer, { - * defaultThickness: 0.01, - * defaultColor: [ 0, 0, 0 ], - * defaultAlpha: 0.8, - * defaultKeepAlive: true // keeps outline material in cache even if material is removed from scene - * } ); - * - * // How to set outline parameters for each material - * material.userData.outlineParameters = { - * thickness: 0.01, - * color: [ 0, 0, 0 ], - * alpha: 0.8, - * visible: true, - * keepAlive: true - * }; - */ - -class OutlineEffect { - - constructor( renderer, parameters = {} ) { - - this.enabled = true; - - const defaultThickness = parameters.defaultThickness !== undefined ? parameters.defaultThickness : 0.003; - const defaultColor = new Color().fromArray( parameters.defaultColor !== undefined ? parameters.defaultColor : [ 0, 0, 0 ] ); - const defaultAlpha = parameters.defaultAlpha !== undefined ? parameters.defaultAlpha : 1.0; - const defaultKeepAlive = parameters.defaultKeepAlive !== undefined ? parameters.defaultKeepAlive : false; - - // object.material.uuid -> outlineMaterial or - // object.material[ n ].uuid -> outlineMaterial - // save at the outline material creation and release - // if it's unused removeThresholdCount frames - // unless keepAlive is true. - const cache = {}; - - const removeThresholdCount = 60; - - // outlineMaterial.uuid -> object.material or - // outlineMaterial.uuid -> object.material[ n ] - // save before render and release after render. - const originalMaterials = {}; - - // object.uuid -> originalOnBeforeRender - // save before render and release after render. - const originalOnBeforeRenders = {}; - - //this.cache = cache; // for debug - - const uniformsOutline = { - outlineThickness: { value: defaultThickness }, - outlineColor: { value: defaultColor }, - outlineAlpha: { value: defaultAlpha } - }; - - const vertexShader = [ - '#include ', - '#include ', - '#include ', - '#include ', - '#include ', - '#include ', - '#include ', - '#include ', - - 'uniform float outlineThickness;', - - 'vec4 calculateOutline( vec4 pos, vec3 normal, vec4 skinned ) {', - ' float thickness = outlineThickness;', - ' const float ratio = 1.0;', // TODO: support outline thickness ratio for each vertex - ' vec4 pos2 = projectionMatrix * modelViewMatrix * vec4( skinned.xyz + normal, 1.0 );', - // NOTE: subtract pos2 from pos because BackSide objectNormal is negative - ' vec4 norm = normalize( pos - pos2 );', - ' return pos + norm * thickness * pos.w * ratio;', - '}', - - 'void main() {', - - ' #include ', - - ' #include ', - ' #include ', - ' #include ', - ' #include ', - - ' #include ', - ' #include ', - ' #include ', - ' #include ', - ' #include ', - - ' vec3 outlineNormal = - objectNormal;', // the outline material is always rendered with BackSide - - ' gl_Position = calculateOutline( gl_Position, outlineNormal, vec4( transformed, 1.0 ) );', - - ' #include ', - ' #include ', - ' #include ', - - '}', - - ].join( '\n' ); - - const fragmentShader = [ - - '#include ', - '#include ', - '#include ', - '#include ', - - 'uniform vec3 outlineColor;', - 'uniform float outlineAlpha;', - - 'void main() {', - - ' #include ', - ' #include ', - - ' gl_FragColor = vec4( outlineColor, outlineAlpha );', - - ' #include ', - ' #include ', - ' #include ', - ' #include ', - - '}' - - ].join( '\n' ); - - function createMaterial() { - - return new ShaderMaterial( { - type: 'OutlineEffect', - uniforms: UniformsUtils.merge( [ - UniformsLib[ 'fog' ], - UniformsLib[ 'displacementmap' ], - uniformsOutline - ] ), - vertexShader: vertexShader, - fragmentShader: fragmentShader, - side: BackSide - } ); - - } - - function getOutlineMaterialFromCache( originalMaterial ) { - - let data = cache[ originalMaterial.uuid ]; - - if ( data === undefined ) { - - data = { - material: createMaterial(), - used: true, - keepAlive: defaultKeepAlive, - count: 0 - }; - - cache[ originalMaterial.uuid ] = data; - - } - - data.used = true; - - return data.material; - - } - - function getOutlineMaterial( originalMaterial ) { - - const outlineMaterial = getOutlineMaterialFromCache( originalMaterial ); - - originalMaterials[ outlineMaterial.uuid ] = originalMaterial; - - updateOutlineMaterial( outlineMaterial, originalMaterial ); - - return outlineMaterial; - - } - - function isCompatible( object ) { - - const geometry = object.geometry; - const hasNormals = ( geometry !== undefined ) && ( geometry.attributes.normal !== undefined ); - - return ( object.isMesh === true && object.material !== undefined && hasNormals === true ); - - } - - function setOutlineMaterial( object ) { - - if ( isCompatible( object ) === false ) return; - - if ( Array.isArray( object.material ) ) { - - for ( let i = 0, il = object.material.length; i < il; i ++ ) { - - object.material[ i ] = getOutlineMaterial( object.material[ i ] ); - - } - - } else { - - object.material = getOutlineMaterial( object.material ); - - } - - originalOnBeforeRenders[ object.uuid ] = object.onBeforeRender; - object.onBeforeRender = onBeforeRender; - - } - - function restoreOriginalMaterial( object ) { - - if ( isCompatible( object ) === false ) return; - - if ( Array.isArray( object.material ) ) { - - for ( let i = 0, il = object.material.length; i < il; i ++ ) { - - object.material[ i ] = originalMaterials[ object.material[ i ].uuid ]; - - } - - } else { - - object.material = originalMaterials[ object.material.uuid ]; - - } - - object.onBeforeRender = originalOnBeforeRenders[ object.uuid ]; - - } - - function onBeforeRender( renderer, scene, camera, geometry, material ) { - - const originalMaterial = originalMaterials[ material.uuid ]; - - // just in case - if ( originalMaterial === undefined ) return; - - updateUniforms( material, originalMaterial ); - - } - - function updateUniforms( material, originalMaterial ) { - - const outlineParameters = originalMaterial.userData.outlineParameters; - - material.uniforms.outlineAlpha.value = originalMaterial.opacity; - - if ( outlineParameters !== undefined ) { - - if ( outlineParameters.thickness !== undefined ) material.uniforms.outlineThickness.value = outlineParameters.thickness; - if ( outlineParameters.color !== undefined ) material.uniforms.outlineColor.value.fromArray( outlineParameters.color ); - if ( outlineParameters.alpha !== undefined ) material.uniforms.outlineAlpha.value = outlineParameters.alpha; - - } - - if ( originalMaterial.displacementMap ) { - - material.uniforms.displacementMap.value = originalMaterial.displacementMap; - material.uniforms.displacementScale.value = originalMaterial.displacementScale; - material.uniforms.displacementBias.value = originalMaterial.displacementBias; - - } - - } - - function updateOutlineMaterial( material, originalMaterial ) { - - if ( material.name === 'invisible' ) return; - - const outlineParameters = originalMaterial.userData.outlineParameters; - - material.fog = originalMaterial.fog; - material.toneMapped = originalMaterial.toneMapped; - material.premultipliedAlpha = originalMaterial.premultipliedAlpha; - material.displacementMap = originalMaterial.displacementMap; - - if ( outlineParameters !== undefined ) { - - if ( originalMaterial.visible === false ) { - - material.visible = false; - - } else { - - material.visible = ( outlineParameters.visible !== undefined ) ? outlineParameters.visible : true; - - } - - material.transparent = ( outlineParameters.alpha !== undefined && outlineParameters.alpha < 1.0 ) ? true : originalMaterial.transparent; - - if ( outlineParameters.keepAlive !== undefined ) cache[ originalMaterial.uuid ].keepAlive = outlineParameters.keepAlive; - - } else { - - material.transparent = originalMaterial.transparent; - material.visible = originalMaterial.visible; - - } - - if ( originalMaterial.wireframe === true || originalMaterial.depthTest === false ) material.visible = false; - - if ( originalMaterial.clippingPlanes ) { - - material.clipping = true; - - material.clippingPlanes = originalMaterial.clippingPlanes; - material.clipIntersection = originalMaterial.clipIntersection; - material.clipShadows = originalMaterial.clipShadows; - - } - - material.version = originalMaterial.version; // update outline material if necessary - - } - - function cleanupCache() { - - let keys; - - // clear originialMaterials - keys = Object.keys( originalMaterials ); - - for ( let i = 0, il = keys.length; i < il; i ++ ) { - - originalMaterials[ keys[ i ] ] = undefined; - - } - - // clear originalOnBeforeRenders - keys = Object.keys( originalOnBeforeRenders ); - - for ( let i = 0, il = keys.length; i < il; i ++ ) { - - originalOnBeforeRenders[ keys[ i ] ] = undefined; - - } - - // remove unused outlineMaterial from cache - keys = Object.keys( cache ); - - for ( let i = 0, il = keys.length; i < il; i ++ ) { - - const key = keys[ i ]; - - if ( cache[ key ].used === false ) { - - cache[ key ].count ++; - - if ( cache[ key ].keepAlive === false && cache[ key ].count > removeThresholdCount ) { - - delete cache[ key ]; - - } - - } else { - - cache[ key ].used = false; - cache[ key ].count = 0; - - } - - } - - } - - this.render = function ( scene, camera ) { - - if ( this.enabled === false ) { - - renderer.render( scene, camera ); - return; - - } - - const currentAutoClear = renderer.autoClear; - renderer.autoClear = this.autoClear; - - renderer.render( scene, camera ); - - renderer.autoClear = currentAutoClear; - - this.renderOutline( scene, camera ); - - }; - - this.renderOutline = function ( scene, camera ) { - - const currentAutoClear = renderer.autoClear; - const currentSceneAutoUpdate = scene.matrixWorldAutoUpdate; - const currentSceneBackground = scene.background; - const currentShadowMapEnabled = renderer.shadowMap.enabled; - - scene.matrixWorldAutoUpdate = false; - scene.background = null; - renderer.autoClear = false; - renderer.shadowMap.enabled = false; - - scene.traverse( setOutlineMaterial ); - - renderer.render( scene, camera ); - - scene.traverse( restoreOriginalMaterial ); - - cleanupCache(); - - scene.matrixWorldAutoUpdate = currentSceneAutoUpdate; - scene.background = currentSceneBackground; - renderer.autoClear = currentAutoClear; - renderer.shadowMap.enabled = currentShadowMapEnabled; - - }; - - /* - * See #9918 - * - * The following property copies and wrapper methods enable - * OutlineEffect to be called from other *Effect, like - * - * effect = new StereoEffect( new OutlineEffect( renderer ) ); - * - * function render () { - * - * effect.render( scene, camera ); - * - * } - */ - this.autoClear = renderer.autoClear; - this.domElement = renderer.domElement; - this.shadowMap = renderer.shadowMap; - - this.clear = function ( color, depth, stencil ) { - - renderer.clear( color, depth, stencil ); - - }; - - this.getPixelRatio = function () { - - return renderer.getPixelRatio(); - - }; - - this.setPixelRatio = function ( value ) { - - renderer.setPixelRatio( value ); - - }; - - this.getSize = function ( target ) { - - return renderer.getSize( target ); - - }; - - this.setSize = function ( width, height, updateStyle ) { - - renderer.setSize( width, height, updateStyle ); - - }; - - this.setViewport = function ( x, y, width, height ) { - - renderer.setViewport( x, y, width, height ); - - }; - - this.setScissor = function ( x, y, width, height ) { - - renderer.setScissor( x, y, width, height ); - - }; - - this.setScissorTest = function ( boolean ) { - - renderer.setScissorTest( boolean ); - - }; - - this.setRenderTarget = function ( renderTarget ) { - - renderer.setRenderTarget( renderTarget ); - - }; - - } - -} - -export { OutlineEffect }; diff --git a/three/addons/effects/ParallaxBarrierEffect.js b/three/addons/effects/ParallaxBarrierEffect.js deleted file mode 100644 index c01143c..0000000 --- a/three/addons/effects/ParallaxBarrierEffect.js +++ /dev/null @@ -1,119 +0,0 @@ -import { - LinearFilter, - Mesh, - NearestFilter, - OrthographicCamera, - PlaneGeometry, - RGBAFormat, - Scene, - ShaderMaterial, - StereoCamera, - WebGLRenderTarget -} from 'three'; - -class ParallaxBarrierEffect { - - constructor( renderer ) { - - const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 ); - - const _scene = new Scene(); - - const _stereo = new StereoCamera(); - - const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat }; - - const _renderTargetL = new WebGLRenderTarget( 512, 512, _params ); - const _renderTargetR = new WebGLRenderTarget( 512, 512, _params ); - - const _material = new ShaderMaterial( { - - uniforms: { - - 'mapLeft': { value: _renderTargetL.texture }, - 'mapRight': { value: _renderTargetR.texture } - - }, - - vertexShader: [ - - 'varying vec2 vUv;', - - 'void main() {', - - ' vUv = vec2( uv.x, uv.y );', - ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', - - '}' - - ].join( '\n' ), - - fragmentShader: [ - - 'uniform sampler2D mapLeft;', - 'uniform sampler2D mapRight;', - 'varying vec2 vUv;', - - 'void main() {', - - ' vec2 uv = vUv;', - - ' if ( ( mod( gl_FragCoord.y, 2.0 ) ) > 1.00 ) {', - - ' gl_FragColor = texture2D( mapLeft, uv );', - - ' } else {', - - ' gl_FragColor = texture2D( mapRight, uv );', - - ' }', - - ' #include ', - ' #include ', - - '}' - - ].join( '\n' ) - - } ); - - const mesh = new Mesh( new PlaneGeometry( 2, 2 ), _material ); - _scene.add( mesh ); - - this.setSize = function ( width, height ) { - - renderer.setSize( width, height ); - - const pixelRatio = renderer.getPixelRatio(); - - _renderTargetL.setSize( width * pixelRatio, height * pixelRatio ); - _renderTargetR.setSize( width * pixelRatio, height * pixelRatio ); - - }; - - this.render = function ( scene, camera ) { - - if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld(); - - if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld(); - - _stereo.update( camera ); - - renderer.setRenderTarget( _renderTargetL ); - renderer.clear(); - renderer.render( scene, _stereo.cameraL ); - - renderer.setRenderTarget( _renderTargetR ); - renderer.clear(); - renderer.render( scene, _stereo.cameraR ); - - renderer.setRenderTarget( null ); - renderer.render( _scene, _camera ); - - }; - - } - -} - -export { ParallaxBarrierEffect }; diff --git a/three/addons/effects/PeppersGhostEffect.js b/three/addons/effects/PeppersGhostEffect.js deleted file mode 100644 index 1572096..0000000 --- a/three/addons/effects/PeppersGhostEffect.js +++ /dev/null @@ -1,153 +0,0 @@ -import { - PerspectiveCamera, - Quaternion, - Vector3 -} from 'three'; - -/** - * peppers ghost effect based on http://www.instructables.com/id/Reflective-Prism/?ALLSTEPS - */ - -class PeppersGhostEffect { - - constructor( renderer ) { - - const scope = this; - - scope.cameraDistance = 15; - scope.reflectFromAbove = false; - - // Internals - let _halfWidth, _width, _height; - - const _cameraF = new PerspectiveCamera(); //front - const _cameraB = new PerspectiveCamera(); //back - const _cameraL = new PerspectiveCamera(); //left - const _cameraR = new PerspectiveCamera(); //right - - const _position = new Vector3(); - const _quaternion = new Quaternion(); - const _scale = new Vector3(); - - // Initialization - renderer.autoClear = false; - - this.setSize = function ( width, height ) { - - _halfWidth = width / 2; - if ( width < height ) { - - _width = width / 3; - _height = width / 3; - - } else { - - _width = height / 3; - _height = height / 3; - - } - - renderer.setSize( width, height ); - - }; - - this.render = function ( scene, camera ) { - - if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld(); - - if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld(); - - camera.matrixWorld.decompose( _position, _quaternion, _scale ); - - // front - _cameraF.position.copy( _position ); - _cameraF.quaternion.copy( _quaternion ); - _cameraF.translateZ( scope.cameraDistance ); - _cameraF.lookAt( scene.position ); - - // back - _cameraB.position.copy( _position ); - _cameraB.quaternion.copy( _quaternion ); - _cameraB.translateZ( - ( scope.cameraDistance ) ); - _cameraB.lookAt( scene.position ); - _cameraB.rotation.z += 180 * ( Math.PI / 180 ); - - // left - _cameraL.position.copy( _position ); - _cameraL.quaternion.copy( _quaternion ); - _cameraL.translateX( - ( scope.cameraDistance ) ); - _cameraL.lookAt( scene.position ); - _cameraL.rotation.x += 90 * ( Math.PI / 180 ); - - // right - _cameraR.position.copy( _position ); - _cameraR.quaternion.copy( _quaternion ); - _cameraR.translateX( scope.cameraDistance ); - _cameraR.lookAt( scene.position ); - _cameraR.rotation.x += 90 * ( Math.PI / 180 ); - - - renderer.clear(); - renderer.setScissorTest( true ); - - renderer.setScissor( _halfWidth - ( _width / 2 ), ( _height * 2 ), _width, _height ); - renderer.setViewport( _halfWidth - ( _width / 2 ), ( _height * 2 ), _width, _height ); - - if ( scope.reflectFromAbove ) { - - renderer.render( scene, _cameraB ); - - } else { - - renderer.render( scene, _cameraF ); - - } - - renderer.setScissor( _halfWidth - ( _width / 2 ), 0, _width, _height ); - renderer.setViewport( _halfWidth - ( _width / 2 ), 0, _width, _height ); - - if ( scope.reflectFromAbove ) { - - renderer.render( scene, _cameraF ); - - } else { - - renderer.render( scene, _cameraB ); - - } - - renderer.setScissor( _halfWidth - ( _width / 2 ) - _width, _height, _width, _height ); - renderer.setViewport( _halfWidth - ( _width / 2 ) - _width, _height, _width, _height ); - - if ( scope.reflectFromAbove ) { - - renderer.render( scene, _cameraR ); - - } else { - - renderer.render( scene, _cameraL ); - - } - - renderer.setScissor( _halfWidth + ( _width / 2 ), _height, _width, _height ); - renderer.setViewport( _halfWidth + ( _width / 2 ), _height, _width, _height ); - - if ( scope.reflectFromAbove ) { - - renderer.render( scene, _cameraL ); - - } else { - - renderer.render( scene, _cameraR ); - - } - - renderer.setScissorTest( false ); - - }; - - } - -} - -export { PeppersGhostEffect }; diff --git a/three/addons/effects/StereoEffect.js b/three/addons/effects/StereoEffect.js deleted file mode 100644 index e6e1b44..0000000 --- a/three/addons/effects/StereoEffect.js +++ /dev/null @@ -1,55 +0,0 @@ -import { - StereoCamera, - Vector2 -} from 'three'; - -class StereoEffect { - - constructor( renderer ) { - - const _stereo = new StereoCamera(); - _stereo.aspect = 0.5; - const size = new Vector2(); - - this.setEyeSeparation = function ( eyeSep ) { - - _stereo.eyeSep = eyeSep; - - }; - - this.setSize = function ( width, height ) { - - renderer.setSize( width, height ); - - }; - - this.render = function ( scene, camera ) { - - if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld(); - - if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld(); - - _stereo.update( camera ); - - renderer.getSize( size ); - - if ( renderer.autoClear ) renderer.clear(); - renderer.setScissorTest( true ); - - renderer.setScissor( 0, 0, size.width / 2, size.height ); - renderer.setViewport( 0, 0, size.width / 2, size.height ); - renderer.render( scene, _stereo.cameraL ); - - renderer.setScissor( size.width / 2, 0, size.width / 2, size.height ); - renderer.setViewport( size.width / 2, 0, size.width / 2, size.height ); - renderer.render( scene, _stereo.cameraR ); - - renderer.setScissorTest( false ); - - }; - - } - -} - -export { StereoEffect }; diff --git a/three/addons/environments/DebugEnvironment.js b/three/addons/environments/DebugEnvironment.js deleted file mode 100644 index ce3db06..0000000 --- a/three/addons/environments/DebugEnvironment.js +++ /dev/null @@ -1,52 +0,0 @@ -import { - BackSide, - BoxGeometry, - Mesh, - MeshLambertMaterial, - MeshStandardMaterial, - PointLight, - Scene, -} from 'three'; - -class DebugEnvironment extends Scene { - - constructor() { - - super(); - - const geometry = new BoxGeometry(); - geometry.deleteAttribute( 'uv' ); - const roomMaterial = new MeshStandardMaterial( { metalness: 0, side: BackSide } ); - const room = new Mesh( geometry, roomMaterial ); - room.scale.setScalar( 10 ); - this.add( room ); - - const mainLight = new PointLight( 0xffffff, 50, 0, 2 ); - this.add( mainLight ); - - const material1 = new MeshLambertMaterial( { color: 0xff0000, emissive: 0xffffff, emissiveIntensity: 10 } ); - - const light1 = new Mesh( geometry, material1 ); - light1.position.set( - 5, 2, 0 ); - light1.scale.set( 0.1, 1, 1 ); - this.add( light1 ); - - const material2 = new MeshLambertMaterial( { color: 0x00ff00, emissive: 0xffffff, emissiveIntensity: 10 } ); - - const light2 = new Mesh( geometry, material2 ); - light2.position.set( 0, 5, 0 ); - light2.scale.set( 1, 0.1, 1 ); - this.add( light2 ); - - const material3 = new MeshLambertMaterial( { color: 0x0000ff, emissive: 0xffffff, emissiveIntensity: 10 } ); - - const light3 = new Mesh( geometry, material3 ); - light3.position.set( 2, 1, 5 ); - light3.scale.set( 1.5, 2, 0.1 ); - this.add( light3 ); - - } - -} - -export { DebugEnvironment }; diff --git a/three/addons/environments/RoomEnvironment.js b/three/addons/environments/RoomEnvironment.js deleted file mode 100644 index f51f72b..0000000 --- a/three/addons/environments/RoomEnvironment.js +++ /dev/null @@ -1,148 +0,0 @@ -/** - * https://github.com/google/model-viewer/blob/master/packages/model-viewer/src/three-components/EnvironmentScene.ts - */ - -import { - BackSide, - BoxGeometry, - Mesh, - MeshBasicMaterial, - MeshStandardMaterial, - PointLight, - Scene, -} from 'three'; - -class RoomEnvironment extends Scene { - - constructor( renderer = null ) { - - super(); - - const geometry = new BoxGeometry(); - geometry.deleteAttribute( 'uv' ); - - const roomMaterial = new MeshStandardMaterial( { side: BackSide } ); - const boxMaterial = new MeshStandardMaterial(); - - let intensity = 5; - - if ( renderer !== null && renderer._useLegacyLights === false ) intensity = 900; - - const mainLight = new PointLight( 0xffffff, intensity, 28, 2 ); - mainLight.position.set( 0.418, 16.199, 0.300 ); - this.add( mainLight ); - - const room = new Mesh( geometry, roomMaterial ); - room.position.set( - 0.757, 13.219, 0.717 ); - room.scale.set( 31.713, 28.305, 28.591 ); - this.add( room ); - - const box1 = new Mesh( geometry, boxMaterial ); - box1.position.set( - 10.906, 2.009, 1.846 ); - box1.rotation.set( 0, - 0.195, 0 ); - box1.scale.set( 2.328, 7.905, 4.651 ); - this.add( box1 ); - - const box2 = new Mesh( geometry, boxMaterial ); - box2.position.set( - 5.607, - 0.754, - 0.758 ); - box2.rotation.set( 0, 0.994, 0 ); - box2.scale.set( 1.970, 1.534, 3.955 ); - this.add( box2 ); - - const box3 = new Mesh( geometry, boxMaterial ); - box3.position.set( 6.167, 0.857, 7.803 ); - box3.rotation.set( 0, 0.561, 0 ); - box3.scale.set( 3.927, 6.285, 3.687 ); - this.add( box3 ); - - const box4 = new Mesh( geometry, boxMaterial ); - box4.position.set( - 2.017, 0.018, 6.124 ); - box4.rotation.set( 0, 0.333, 0 ); - box4.scale.set( 2.002, 4.566, 2.064 ); - this.add( box4 ); - - const box5 = new Mesh( geometry, boxMaterial ); - box5.position.set( 2.291, - 0.756, - 2.621 ); - box5.rotation.set( 0, - 0.286, 0 ); - box5.scale.set( 1.546, 1.552, 1.496 ); - this.add( box5 ); - - const box6 = new Mesh( geometry, boxMaterial ); - box6.position.set( - 2.193, - 0.369, - 5.547 ); - box6.rotation.set( 0, 0.516, 0 ); - box6.scale.set( 3.875, 3.487, 2.986 ); - this.add( box6 ); - - - // -x right - const light1 = new Mesh( geometry, createAreaLightMaterial( 50 ) ); - light1.position.set( - 16.116, 14.37, 8.208 ); - light1.scale.set( 0.1, 2.428, 2.739 ); - this.add( light1 ); - - // -x left - const light2 = new Mesh( geometry, createAreaLightMaterial( 50 ) ); - light2.position.set( - 16.109, 18.021, - 8.207 ); - light2.scale.set( 0.1, 2.425, 2.751 ); - this.add( light2 ); - - // +x - const light3 = new Mesh( geometry, createAreaLightMaterial( 17 ) ); - light3.position.set( 14.904, 12.198, - 1.832 ); - light3.scale.set( 0.15, 4.265, 6.331 ); - this.add( light3 ); - - // +z - const light4 = new Mesh( geometry, createAreaLightMaterial( 43 ) ); - light4.position.set( - 0.462, 8.89, 14.520 ); - light4.scale.set( 4.38, 5.441, 0.088 ); - this.add( light4 ); - - // -z - const light5 = new Mesh( geometry, createAreaLightMaterial( 20 ) ); - light5.position.set( 3.235, 11.486, - 12.541 ); - light5.scale.set( 2.5, 2.0, 0.1 ); - this.add( light5 ); - - // +y - const light6 = new Mesh( geometry, createAreaLightMaterial( 100 ) ); - light6.position.set( 0.0, 20.0, 0.0 ); - light6.scale.set( 1.0, 0.1, 1.0 ); - this.add( light6 ); - - } - - dispose() { - - const resources = new Set(); - - this.traverse( ( object ) => { - - if ( object.isMesh ) { - - resources.add( object.geometry ); - resources.add( object.material ); - - } - - } ); - - for ( const resource of resources ) { - - resource.dispose(); - - } - - } - -} - -function createAreaLightMaterial( intensity ) { - - const material = new MeshBasicMaterial(); - material.color.setScalar( intensity ); - return material; - -} - -export { RoomEnvironment }; diff --git a/three/addons/exporters/DRACOExporter.js b/three/addons/exporters/DRACOExporter.js deleted file mode 100644 index 85a2e15..0000000 --- a/three/addons/exporters/DRACOExporter.js +++ /dev/null @@ -1,267 +0,0 @@ -import { Color } from 'three'; - -/** - * Export draco compressed files from threejs geometry objects. - * - * Draco files are compressed and usually are smaller than conventional 3D file formats. - * - * The exporter receives a options object containing - * - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality) - * - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality) - * - encoderMethod - * - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC) - * - exportUvs - * - exportNormals - * - exportColor - */ - -/* global DracoEncoderModule */ - -class DRACOExporter { - - parse( object, options = {} ) { - - options = Object.assign( { - decodeSpeed: 5, - encodeSpeed: 5, - encoderMethod: DRACOExporter.MESH_EDGEBREAKER_ENCODING, - quantization: [ 16, 8, 8, 8, 8 ], - exportUvs: true, - exportNormals: true, - exportColor: false, - }, options ); - - if ( DracoEncoderModule === undefined ) { - - throw new Error( 'THREE.DRACOExporter: required the draco_encoder to work.' ); - - } - - const geometry = object.geometry; - - const dracoEncoder = DracoEncoderModule(); - const encoder = new dracoEncoder.Encoder(); - let builder; - let dracoObject; - - if ( object.isMesh === true ) { - - builder = new dracoEncoder.MeshBuilder(); - dracoObject = new dracoEncoder.Mesh(); - - const vertices = geometry.getAttribute( 'position' ); - builder.AddFloatAttributeToMesh( dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array ); - - const faces = geometry.getIndex(); - - if ( faces !== null ) { - - builder.AddFacesToMesh( dracoObject, faces.count / 3, faces.array ); - - } else { - - const faces = new ( vertices.count > 65535 ? Uint32Array : Uint16Array )( vertices.count ); - - for ( let i = 0; i < faces.length; i ++ ) { - - faces[ i ] = i; - - } - - builder.AddFacesToMesh( dracoObject, vertices.count, faces ); - - } - - if ( options.exportNormals === true ) { - - const normals = geometry.getAttribute( 'normal' ); - - if ( normals !== undefined ) { - - builder.AddFloatAttributeToMesh( dracoObject, dracoEncoder.NORMAL, normals.count, normals.itemSize, normals.array ); - - } - - } - - if ( options.exportUvs === true ) { - - const uvs = geometry.getAttribute( 'uv' ); - - if ( uvs !== undefined ) { - - builder.AddFloatAttributeToMesh( dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array ); - - } - - } - - if ( options.exportColor === true ) { - - const colors = geometry.getAttribute( 'color' ); - - if ( colors !== undefined ) { - - const array = createVertexColorSRGBArray( colors ); - - builder.AddFloatAttributeToMesh( dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, array ); - - } - - } - - } else if ( object.isPoints === true ) { - - builder = new dracoEncoder.PointCloudBuilder(); - dracoObject = new dracoEncoder.PointCloud(); - - const vertices = geometry.getAttribute( 'position' ); - builder.AddFloatAttribute( dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array ); - - if ( options.exportColor === true ) { - - const colors = geometry.getAttribute( 'color' ); - - if ( colors !== undefined ) { - - const array = createVertexColorSRGBArray( colors ); - - builder.AddFloatAttribute( dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, array ); - - } - - } - - } else { - - throw new Error( 'DRACOExporter: Unsupported object type.' ); - - } - - //Compress using draco encoder - - const encodedData = new dracoEncoder.DracoInt8Array(); - - //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression). - - const encodeSpeed = ( options.encodeSpeed !== undefined ) ? options.encodeSpeed : 5; - const decodeSpeed = ( options.decodeSpeed !== undefined ) ? options.decodeSpeed : 5; - - encoder.SetSpeedOptions( encodeSpeed, decodeSpeed ); - - // Sets the desired encoding method for a given geometry. - - if ( options.encoderMethod !== undefined ) { - - encoder.SetEncodingMethod( options.encoderMethod ); - - } - - // Sets the quantization (number of bits used to represent) compression options for a named attribute. - // The attribute values will be quantized in a box defined by the maximum extent of the attribute values. - if ( options.quantization !== undefined ) { - - for ( let i = 0; i < 5; i ++ ) { - - if ( options.quantization[ i ] !== undefined ) { - - encoder.SetAttributeQuantization( i, options.quantization[ i ] ); - - } - - } - - } - - let length; - - if ( object.isMesh === true ) { - - length = encoder.EncodeMeshToDracoBuffer( dracoObject, encodedData ); - - } else { - - length = encoder.EncodePointCloudToDracoBuffer( dracoObject, true, encodedData ); - - } - - dracoEncoder.destroy( dracoObject ); - - if ( length === 0 ) { - - throw new Error( 'THREE.DRACOExporter: Draco encoding failed.' ); - - } - - //Copy encoded data to buffer. - const outputData = new Int8Array( new ArrayBuffer( length ) ); - - for ( let i = 0; i < length; i ++ ) { - - outputData[ i ] = encodedData.GetValue( i ); - - } - - dracoEncoder.destroy( encodedData ); - dracoEncoder.destroy( encoder ); - dracoEncoder.destroy( builder ); - - return outputData; - - } - -} - -function createVertexColorSRGBArray( attribute ) { - - // While .drc files do not specify colorspace, the only 'official' tooling - // is PLY and OBJ converters, which use sRGB. We'll assume sRGB is expected - // for .drc files, but note that Draco buffers embedded in glTF files will - // be Linear-sRGB instead. - - const _color = new Color(); - - const count = attribute.count; - const itemSize = attribute.itemSize; - const array = new Float32Array( count * itemSize ); - - for ( let i = 0, il = count; i < il; i ++ ) { - - _color.fromBufferAttribute( attribute, i ).convertLinearToSRGB(); - - array[ i * itemSize ] = _color.r; - array[ i * itemSize + 1 ] = _color.g; - array[ i * itemSize + 2 ] = _color.b; - - if ( itemSize === 4 ) { - - array[ i * itemSize + 3 ] = attribute.getW( i ); - - } - - } - - return array; - -} - -// Encoder methods - -DRACOExporter.MESH_EDGEBREAKER_ENCODING = 1; -DRACOExporter.MESH_SEQUENTIAL_ENCODING = 0; - -// Geometry type - -DRACOExporter.POINT_CLOUD = 0; -DRACOExporter.TRIANGULAR_MESH = 1; - -// Attribute type - -DRACOExporter.INVALID = - 1; -DRACOExporter.POSITION = 0; -DRACOExporter.NORMAL = 1; -DRACOExporter.COLOR = 2; -DRACOExporter.TEX_COORD = 3; -DRACOExporter.GENERIC = 4; - -export { DRACOExporter }; diff --git a/three/addons/exporters/EXRExporter.js b/three/addons/exporters/EXRExporter.js deleted file mode 100644 index bd1d820..0000000 --- a/three/addons/exporters/EXRExporter.js +++ /dev/null @@ -1,579 +0,0 @@ -/** - * @author sciecode / https://github.com/sciecode - * - * EXR format references: - * https://www.openexr.com/documentation/openexrfilelayout.pdf - */ - -import { - FloatType, - HalfFloatType, - RGBAFormat, - DataUtils, -} from 'three'; -import * as fflate from '../libs/fflate.module.js'; - -const textEncoder = new TextEncoder(); - -const NO_COMPRESSION = 0; -const ZIPS_COMPRESSION = 2; -const ZIP_COMPRESSION = 3; - -class EXRExporter { - - parse( arg1, arg2, arg3 ) { - - if ( ! arg1 || ! ( arg1.isWebGLRenderer || arg1.isDataTexture ) ) { - - throw Error( 'EXRExporter.parse: Unsupported first parameter, expected instance of WebGLRenderer or DataTexture.' ); - - } else if ( arg1.isWebGLRenderer ) { - - const renderer = arg1, renderTarget = arg2, options = arg3; - - supportedRTT( renderTarget ); - - const info = buildInfoRTT( renderTarget, options ), - dataBuffer = getPixelData( renderer, renderTarget, info ), - rawContentBuffer = reorganizeDataBuffer( dataBuffer, info ), - chunks = compressData( rawContentBuffer, info ); - - return fillData( chunks, info ); - - } else if ( arg1.isDataTexture ) { - - const texture = arg1, options = arg2; - - supportedDT( texture ); - - const info = buildInfoDT( texture, options ), - dataBuffer = texture.image.data, - rawContentBuffer = reorganizeDataBuffer( dataBuffer, info ), - chunks = compressData( rawContentBuffer, info ); - - return fillData( chunks, info ); - - } - - } - -} - -function supportedRTT( renderTarget ) { - - if ( ! renderTarget || ! renderTarget.isWebGLRenderTarget ) { - - throw Error( 'EXRExporter.parse: Unsupported second parameter, expected instance of WebGLRenderTarget.' ); - - } - - if ( renderTarget.isWebGLCubeRenderTarget || renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) { - - throw Error( 'EXRExporter.parse: Unsupported render target type, expected instance of WebGLRenderTarget.' ); - - } - - if ( renderTarget.texture.type !== FloatType && renderTarget.texture.type !== HalfFloatType ) { - - throw Error( 'EXRExporter.parse: Unsupported WebGLRenderTarget texture type.' ); - - } - - if ( renderTarget.texture.format !== RGBAFormat ) { - - throw Error( 'EXRExporter.parse: Unsupported WebGLRenderTarget texture format, expected RGBAFormat.' ); - - } - -} - -function supportedDT( texture ) { - - if ( texture.type !== FloatType && texture.type !== HalfFloatType ) { - - throw Error( 'EXRExporter.parse: Unsupported DataTexture texture type.' ); - - } - - if ( texture.format !== RGBAFormat ) { - - throw Error( 'EXRExporter.parse: Unsupported DataTexture texture format, expected RGBAFormat.' ); - - } - - if ( ! texture.image.data ) { - - throw Error( 'EXRExporter.parse: Invalid DataTexture image data.' ); - - } - - if ( texture.type === FloatType && texture.image.data.constructor.name !== 'Float32Array' ) { - - throw Error( 'EXRExporter.parse: DataTexture image data doesn\'t match type, expected \'Float32Array\'.' ); - - } - - if ( texture.type === HalfFloatType && texture.image.data.constructor.name !== 'Uint16Array' ) { - - throw Error( 'EXRExporter.parse: DataTexture image data doesn\'t match type, expected \'Uint16Array\'.' ); - - } - -} - -function buildInfoRTT( renderTarget, options = {} ) { - - const compressionSizes = { - 0: 1, - 2: 1, - 3: 16 - }; - - const WIDTH = renderTarget.width, - HEIGHT = renderTarget.height, - TYPE = renderTarget.texture.type, - FORMAT = renderTarget.texture.format, - COMPRESSION = ( options.compression !== undefined ) ? options.compression : ZIP_COMPRESSION, - EXPORTER_TYPE = ( options.type !== undefined ) ? options.type : HalfFloatType, - OUT_TYPE = ( EXPORTER_TYPE === FloatType ) ? 2 : 1, - COMPRESSION_SIZE = compressionSizes[ COMPRESSION ], - NUM_CHANNELS = 4; - - return { - width: WIDTH, - height: HEIGHT, - type: TYPE, - format: FORMAT, - compression: COMPRESSION, - blockLines: COMPRESSION_SIZE, - dataType: OUT_TYPE, - dataSize: 2 * OUT_TYPE, - numBlocks: Math.ceil( HEIGHT / COMPRESSION_SIZE ), - numInputChannels: 4, - numOutputChannels: NUM_CHANNELS, - }; - -} - -function buildInfoDT( texture, options = {} ) { - - const compressionSizes = { - 0: 1, - 2: 1, - 3: 16 - }; - - const WIDTH = texture.image.width, - HEIGHT = texture.image.height, - TYPE = texture.type, - FORMAT = texture.format, - COMPRESSION = ( options.compression !== undefined ) ? options.compression : ZIP_COMPRESSION, - EXPORTER_TYPE = ( options.type !== undefined ) ? options.type : HalfFloatType, - OUT_TYPE = ( EXPORTER_TYPE === FloatType ) ? 2 : 1, - COMPRESSION_SIZE = compressionSizes[ COMPRESSION ], - NUM_CHANNELS = 4; - - return { - width: WIDTH, - height: HEIGHT, - type: TYPE, - format: FORMAT, - compression: COMPRESSION, - blockLines: COMPRESSION_SIZE, - dataType: OUT_TYPE, - dataSize: 2 * OUT_TYPE, - numBlocks: Math.ceil( HEIGHT / COMPRESSION_SIZE ), - numInputChannels: 4, - numOutputChannels: NUM_CHANNELS, - }; - -} - -function getPixelData( renderer, rtt, info ) { - - let dataBuffer; - - if ( info.type === FloatType ) { - - dataBuffer = new Float32Array( info.width * info.height * info.numInputChannels ); - - } else { - - dataBuffer = new Uint16Array( info.width * info.height * info.numInputChannels ); - - } - - renderer.readRenderTargetPixels( rtt, 0, 0, info.width, info.height, dataBuffer ); - - return dataBuffer; - -} - -function reorganizeDataBuffer( inBuffer, info ) { - - const w = info.width, - h = info.height, - dec = { r: 0, g: 0, b: 0, a: 0 }, - offset = { value: 0 }, - cOffset = ( info.numOutputChannels == 4 ) ? 1 : 0, - getValue = ( info.type == FloatType ) ? getFloat32 : getFloat16, - setValue = ( info.dataType == 1 ) ? setFloat16 : setFloat32, - outBuffer = new Uint8Array( info.width * info.height * info.numOutputChannels * info.dataSize ), - dv = new DataView( outBuffer.buffer ); - - for ( let y = 0; y < h; ++ y ) { - - for ( let x = 0; x < w; ++ x ) { - - const i = y * w * 4 + x * 4; - - const r = getValue( inBuffer, i ); - const g = getValue( inBuffer, i + 1 ); - const b = getValue( inBuffer, i + 2 ); - const a = getValue( inBuffer, i + 3 ); - - const line = ( h - y - 1 ) * w * ( 3 + cOffset ) * info.dataSize; - - decodeLinear( dec, r, g, b, a ); - - offset.value = line + x * info.dataSize; - setValue( dv, dec.a, offset ); - - offset.value = line + ( cOffset ) * w * info.dataSize + x * info.dataSize; - setValue( dv, dec.b, offset ); - - offset.value = line + ( 1 + cOffset ) * w * info.dataSize + x * info.dataSize; - setValue( dv, dec.g, offset ); - - offset.value = line + ( 2 + cOffset ) * w * info.dataSize + x * info.dataSize; - setValue( dv, dec.r, offset ); - - } - - } - - return outBuffer; - -} - -function compressData( inBuffer, info ) { - - let compress, - tmpBuffer, - sum = 0; - - const chunks = { data: new Array(), totalSize: 0 }, - size = info.width * info.numOutputChannels * info.blockLines * info.dataSize; - - switch ( info.compression ) { - - case 0: - compress = compressNONE; - break; - - case 2: - case 3: - compress = compressZIP; - break; - - } - - if ( info.compression !== 0 ) { - - tmpBuffer = new Uint8Array( size ); - - } - - for ( let i = 0; i < info.numBlocks; ++ i ) { - - const arr = inBuffer.subarray( size * i, size * ( i + 1 ) ); - - const block = compress( arr, tmpBuffer ); - - sum += block.length; - - chunks.data.push( { dataChunk: block, size: block.length } ); - - } - - chunks.totalSize = sum; - - return chunks; - -} - -function compressNONE( data ) { - - return data; - -} - -function compressZIP( data, tmpBuffer ) { - - // - // Reorder the pixel data. - // - - let t1 = 0, - t2 = Math.floor( ( data.length + 1 ) / 2 ), - s = 0; - - const stop = data.length - 1; - - while ( true ) { - - if ( s > stop ) break; - tmpBuffer[ t1 ++ ] = data[ s ++ ]; - - if ( s > stop ) break; - tmpBuffer[ t2 ++ ] = data[ s ++ ]; - - } - - // - // Predictor. - // - - let p = tmpBuffer[ 0 ]; - - for ( let t = 1; t < tmpBuffer.length; t ++ ) { - - const d = tmpBuffer[ t ] - p + ( 128 + 256 ); - p = tmpBuffer[ t ]; - tmpBuffer[ t ] = d; - - } - - const deflate = fflate.zlibSync( tmpBuffer ); - - return deflate; - -} - -function fillHeader( outBuffer, chunks, info ) { - - const offset = { value: 0 }; - const dv = new DataView( outBuffer.buffer ); - - setUint32( dv, 20000630, offset ); // magic - setUint32( dv, 2, offset ); // mask - - // = HEADER = - - setString( dv, 'compression', offset ); - setString( dv, 'compression', offset ); - setUint32( dv, 1, offset ); - setUint8( dv, info.compression, offset ); - - setString( dv, 'screenWindowCenter', offset ); - setString( dv, 'v2f', offset ); - setUint32( dv, 8, offset ); - setUint32( dv, 0, offset ); - setUint32( dv, 0, offset ); - - setString( dv, 'screenWindowWidth', offset ); - setString( dv, 'float', offset ); - setUint32( dv, 4, offset ); - setFloat32( dv, 1.0, offset ); - - setString( dv, 'pixelAspectRatio', offset ); - setString( dv, 'float', offset ); - setUint32( dv, 4, offset ); - setFloat32( dv, 1.0, offset ); - - setString( dv, 'lineOrder', offset ); - setString( dv, 'lineOrder', offset ); - setUint32( dv, 1, offset ); - setUint8( dv, 0, offset ); - - setString( dv, 'dataWindow', offset ); - setString( dv, 'box2i', offset ); - setUint32( dv, 16, offset ); - setUint32( dv, 0, offset ); - setUint32( dv, 0, offset ); - setUint32( dv, info.width - 1, offset ); - setUint32( dv, info.height - 1, offset ); - - setString( dv, 'displayWindow', offset ); - setString( dv, 'box2i', offset ); - setUint32( dv, 16, offset ); - setUint32( dv, 0, offset ); - setUint32( dv, 0, offset ); - setUint32( dv, info.width - 1, offset ); - setUint32( dv, info.height - 1, offset ); - - setString( dv, 'channels', offset ); - setString( dv, 'chlist', offset ); - setUint32( dv, info.numOutputChannels * 18 + 1, offset ); - - setString( dv, 'A', offset ); - setUint32( dv, info.dataType, offset ); - offset.value += 4; - setUint32( dv, 1, offset ); - setUint32( dv, 1, offset ); - - setString( dv, 'B', offset ); - setUint32( dv, info.dataType, offset ); - offset.value += 4; - setUint32( dv, 1, offset ); - setUint32( dv, 1, offset ); - - setString( dv, 'G', offset ); - setUint32( dv, info.dataType, offset ); - offset.value += 4; - setUint32( dv, 1, offset ); - setUint32( dv, 1, offset ); - - setString( dv, 'R', offset ); - setUint32( dv, info.dataType, offset ); - offset.value += 4; - setUint32( dv, 1, offset ); - setUint32( dv, 1, offset ); - - setUint8( dv, 0, offset ); - - // null-byte - setUint8( dv, 0, offset ); - - // = OFFSET TABLE = - - let sum = offset.value + info.numBlocks * 8; - - for ( let i = 0; i < chunks.data.length; ++ i ) { - - setUint64( dv, sum, offset ); - - sum += chunks.data[ i ].size + 8; - - } - -} - -function fillData( chunks, info ) { - - const TableSize = info.numBlocks * 8, - HeaderSize = 259 + ( 18 * info.numOutputChannels ), // 259 + 18 * chlist - offset = { value: HeaderSize + TableSize }, - outBuffer = new Uint8Array( HeaderSize + TableSize + chunks.totalSize + info.numBlocks * 8 ), - dv = new DataView( outBuffer.buffer ); - - fillHeader( outBuffer, chunks, info ); - - for ( let i = 0; i < chunks.data.length; ++ i ) { - - const data = chunks.data[ i ].dataChunk; - const size = chunks.data[ i ].size; - - setUint32( dv, i * info.blockLines, offset ); - setUint32( dv, size, offset ); - - outBuffer.set( data, offset.value ); - offset.value += size; - - } - - return outBuffer; - -} - -function decodeLinear( dec, r, g, b, a ) { - - dec.r = r; - dec.g = g; - dec.b = b; - dec.a = a; - -} - -// function decodeSRGB( dec, r, g, b, a ) { - -// dec.r = r > 0.04045 ? Math.pow( r * 0.9478672986 + 0.0521327014, 2.4 ) : r * 0.0773993808; -// dec.g = g > 0.04045 ? Math.pow( g * 0.9478672986 + 0.0521327014, 2.4 ) : g * 0.0773993808; -// dec.b = b > 0.04045 ? Math.pow( b * 0.9478672986 + 0.0521327014, 2.4 ) : b * 0.0773993808; -// dec.a = a; - -// } - - -function setUint8( dv, value, offset ) { - - dv.setUint8( offset.value, value ); - - offset.value += 1; - -} - -function setUint32( dv, value, offset ) { - - dv.setUint32( offset.value, value, true ); - - offset.value += 4; - -} - -function setFloat16( dv, value, offset ) { - - dv.setUint16( offset.value, DataUtils.toHalfFloat( value ), true ); - - offset.value += 2; - -} - -function setFloat32( dv, value, offset ) { - - dv.setFloat32( offset.value, value, true ); - - offset.value += 4; - -} - -function setUint64( dv, value, offset ) { - - dv.setBigUint64( offset.value, BigInt( value ), true ); - - offset.value += 8; - -} - -function setString( dv, string, offset ) { - - const tmp = textEncoder.encode( string + '\0' ); - - for ( let i = 0; i < tmp.length; ++ i ) { - - setUint8( dv, tmp[ i ], offset ); - - } - -} - -function decodeFloat16( binary ) { - - const exponent = ( binary & 0x7C00 ) >> 10, - fraction = binary & 0x03FF; - - return ( binary >> 15 ? - 1 : 1 ) * ( - exponent ? - ( - exponent === 0x1F ? - fraction ? NaN : Infinity : - Math.pow( 2, exponent - 15 ) * ( 1 + fraction / 0x400 ) - ) : - 6.103515625e-5 * ( fraction / 0x400 ) - ); - -} - -function getFloat16( arr, i ) { - - return decodeFloat16( arr[ i ] ); - -} - -function getFloat32( arr, i ) { - - return arr[ i ]; - -} - -export { EXRExporter, NO_COMPRESSION, ZIP_COMPRESSION, ZIPS_COMPRESSION }; diff --git a/three/addons/exporters/GLTFExporter.js b/three/addons/exporters/GLTFExporter.js deleted file mode 100644 index a9eb9ff..0000000 --- a/three/addons/exporters/GLTFExporter.js +++ /dev/null @@ -1,3309 +0,0 @@ -import { - BufferAttribute, - ClampToEdgeWrapping, - Color, - DoubleSide, - InterpolateDiscrete, - InterpolateLinear, - NoColorSpace, - LinearFilter, - LinearMipmapLinearFilter, - LinearMipmapNearestFilter, - MathUtils, - Matrix4, - MirroredRepeatWrapping, - NearestFilter, - NearestMipmapLinearFilter, - NearestMipmapNearestFilter, - PropertyBinding, - RGBAFormat, - RepeatWrapping, - Scene, - Source, - SRGBColorSpace, - CompressedTexture, - Vector3, - Quaternion, -} from 'three'; -import { decompress } from './../utils/TextureUtils.js'; - - -/** - * The KHR_mesh_quantization extension allows these extra attribute component types - * - * @see https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_mesh_quantization/README.md#extending-mesh-attributes - */ -const KHR_mesh_quantization_ExtraAttrTypes = { - POSITION: [ - 'byte', - 'byte normalized', - 'unsigned byte', - 'unsigned byte normalized', - 'short', - 'short normalized', - 'unsigned short', - 'unsigned short normalized', - ], - NORMAL: [ - 'byte normalized', - 'short normalized', - ], - TANGENT: [ - 'byte normalized', - 'short normalized', - ], - TEXCOORD: [ - 'byte', - 'byte normalized', - 'unsigned byte', - 'short', - 'short normalized', - 'unsigned short', - ], -}; - - -class GLTFExporter { - - constructor() { - - this.pluginCallbacks = []; - - this.register( function ( writer ) { - - return new GLTFLightExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsUnlitExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsTransmissionExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsVolumeExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsIorExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsSpecularExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsClearcoatExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsIridescenceExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsSheenExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsAnisotropyExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsEmissiveStrengthExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMaterialsBumpExtension( writer ); - - } ); - - this.register( function ( writer ) { - - return new GLTFMeshGpuInstancing( writer ); - - } ); - - } - - register( callback ) { - - if ( this.pluginCallbacks.indexOf( callback ) === - 1 ) { - - this.pluginCallbacks.push( callback ); - - } - - return this; - - } - - unregister( callback ) { - - if ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) { - - this.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 ); - - } - - return this; - - } - - /** - * Parse scenes and generate GLTF output - * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes - * @param {Function} onDone Callback on completed - * @param {Function} onError Callback on errors - * @param {Object} options options - */ - parse( input, onDone, onError, options ) { - - const writer = new GLTFWriter(); - const plugins = []; - - for ( let i = 0, il = this.pluginCallbacks.length; i < il; i ++ ) { - - plugins.push( this.pluginCallbacks[ i ]( writer ) ); - - } - - writer.setPlugins( plugins ); - writer.write( input, onDone, options ).catch( onError ); - - } - - parseAsync( input, options ) { - - const scope = this; - - return new Promise( function ( resolve, reject ) { - - scope.parse( input, resolve, reject, options ); - - } ); - - } - -} - -//------------------------------------------------------------------------------ -// Constants -//------------------------------------------------------------------------------ - -const WEBGL_CONSTANTS = { - POINTS: 0x0000, - LINES: 0x0001, - LINE_LOOP: 0x0002, - LINE_STRIP: 0x0003, - TRIANGLES: 0x0004, - TRIANGLE_STRIP: 0x0005, - TRIANGLE_FAN: 0x0006, - - BYTE: 0x1400, - UNSIGNED_BYTE: 0x1401, - SHORT: 0x1402, - UNSIGNED_SHORT: 0x1403, - INT: 0x1404, - UNSIGNED_INT: 0x1405, - FLOAT: 0x1406, - - ARRAY_BUFFER: 0x8892, - ELEMENT_ARRAY_BUFFER: 0x8893, - - NEAREST: 0x2600, - LINEAR: 0x2601, - NEAREST_MIPMAP_NEAREST: 0x2700, - LINEAR_MIPMAP_NEAREST: 0x2701, - NEAREST_MIPMAP_LINEAR: 0x2702, - LINEAR_MIPMAP_LINEAR: 0x2703, - - CLAMP_TO_EDGE: 33071, - MIRRORED_REPEAT: 33648, - REPEAT: 10497 -}; - -const KHR_MESH_QUANTIZATION = 'KHR_mesh_quantization'; - -const THREE_TO_WEBGL = {}; - -THREE_TO_WEBGL[ NearestFilter ] = WEBGL_CONSTANTS.NEAREST; -THREE_TO_WEBGL[ NearestMipmapNearestFilter ] = WEBGL_CONSTANTS.NEAREST_MIPMAP_NEAREST; -THREE_TO_WEBGL[ NearestMipmapLinearFilter ] = WEBGL_CONSTANTS.NEAREST_MIPMAP_LINEAR; -THREE_TO_WEBGL[ LinearFilter ] = WEBGL_CONSTANTS.LINEAR; -THREE_TO_WEBGL[ LinearMipmapNearestFilter ] = WEBGL_CONSTANTS.LINEAR_MIPMAP_NEAREST; -THREE_TO_WEBGL[ LinearMipmapLinearFilter ] = WEBGL_CONSTANTS.LINEAR_MIPMAP_LINEAR; - -THREE_TO_WEBGL[ ClampToEdgeWrapping ] = WEBGL_CONSTANTS.CLAMP_TO_EDGE; -THREE_TO_WEBGL[ RepeatWrapping ] = WEBGL_CONSTANTS.REPEAT; -THREE_TO_WEBGL[ MirroredRepeatWrapping ] = WEBGL_CONSTANTS.MIRRORED_REPEAT; - -const PATH_PROPERTIES = { - scale: 'scale', - position: 'translation', - quaternion: 'rotation', - morphTargetInfluences: 'weights' -}; - -const DEFAULT_SPECULAR_COLOR = new Color(); - -// GLB constants -// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification - -const GLB_HEADER_BYTES = 12; -const GLB_HEADER_MAGIC = 0x46546C67; -const GLB_VERSION = 2; - -const GLB_CHUNK_PREFIX_BYTES = 8; -const GLB_CHUNK_TYPE_JSON = 0x4E4F534A; -const GLB_CHUNK_TYPE_BIN = 0x004E4942; - -//------------------------------------------------------------------------------ -// Utility functions -//------------------------------------------------------------------------------ - -/** - * Compare two arrays - * @param {Array} array1 Array 1 to compare - * @param {Array} array2 Array 2 to compare - * @return {Boolean} Returns true if both arrays are equal - */ -function equalArray( array1, array2 ) { - - return ( array1.length === array2.length ) && array1.every( function ( element, index ) { - - return element === array2[ index ]; - - } ); - -} - -/** - * Converts a string to an ArrayBuffer. - * @param {string} text - * @return {ArrayBuffer} - */ -function stringToArrayBuffer( text ) { - - return new TextEncoder().encode( text ).buffer; - -} - -/** - * Is identity matrix - * - * @param {Matrix4} matrix - * @returns {Boolean} Returns true, if parameter is identity matrix - */ -function isIdentityMatrix( matrix ) { - - return equalArray( matrix.elements, [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ] ); - -} - -/** - * Get the min and max vectors from the given attribute - * @param {BufferAttribute} attribute Attribute to find the min/max in range from start to start + count - * @param {Integer} start - * @param {Integer} count - * @return {Object} Object containing the `min` and `max` values (As an array of attribute.itemSize components) - */ -function getMinMax( attribute, start, count ) { - - const output = { - - min: new Array( attribute.itemSize ).fill( Number.POSITIVE_INFINITY ), - max: new Array( attribute.itemSize ).fill( Number.NEGATIVE_INFINITY ) - - }; - - for ( let i = start; i < start + count; i ++ ) { - - for ( let a = 0; a < attribute.itemSize; a ++ ) { - - let value; - - if ( attribute.itemSize > 4 ) { - - // no support for interleaved data for itemSize > 4 - - value = attribute.array[ i * attribute.itemSize + a ]; - - } else { - - if ( a === 0 ) value = attribute.getX( i ); - else if ( a === 1 ) value = attribute.getY( i ); - else if ( a === 2 ) value = attribute.getZ( i ); - else if ( a === 3 ) value = attribute.getW( i ); - - if ( attribute.normalized === true ) { - - value = MathUtils.normalize( value, attribute.array ); - - } - - } - - output.min[ a ] = Math.min( output.min[ a ], value ); - output.max[ a ] = Math.max( output.max[ a ], value ); - - } - - } - - return output; - -} - -/** - * Get the required size + padding for a buffer, rounded to the next 4-byte boundary. - * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data-alignment - * - * @param {Integer} bufferSize The size the original buffer. - * @returns {Integer} new buffer size with required padding. - * - */ -function getPaddedBufferSize( bufferSize ) { - - return Math.ceil( bufferSize / 4 ) * 4; - -} - -/** - * Returns a buffer aligned to 4-byte boundary. - * - * @param {ArrayBuffer} arrayBuffer Buffer to pad - * @param {Integer} paddingByte (Optional) - * @returns {ArrayBuffer} The same buffer if it's already aligned to 4-byte boundary or a new buffer - */ -function getPaddedArrayBuffer( arrayBuffer, paddingByte = 0 ) { - - const paddedLength = getPaddedBufferSize( arrayBuffer.byteLength ); - - if ( paddedLength !== arrayBuffer.byteLength ) { - - const array = new Uint8Array( paddedLength ); - array.set( new Uint8Array( arrayBuffer ) ); - - if ( paddingByte !== 0 ) { - - for ( let i = arrayBuffer.byteLength; i < paddedLength; i ++ ) { - - array[ i ] = paddingByte; - - } - - } - - return array.buffer; - - } - - return arrayBuffer; - -} - -function getCanvas() { - - if ( typeof document === 'undefined' && typeof OffscreenCanvas !== 'undefined' ) { - - return new OffscreenCanvas( 1, 1 ); - - } - - return document.createElement( 'canvas' ); - -} - -function getToBlobPromise( canvas, mimeType ) { - - if ( canvas.toBlob !== undefined ) { - - return new Promise( ( resolve ) => canvas.toBlob( resolve, mimeType ) ); - - } - - let quality; - - // Blink's implementation of convertToBlob seems to default to a quality level of 100% - // Use the Blink default quality levels of toBlob instead so that file sizes are comparable. - if ( mimeType === 'image/jpeg' ) { - - quality = 0.92; - - } else if ( mimeType === 'image/webp' ) { - - quality = 0.8; - - } - - return canvas.convertToBlob( { - - type: mimeType, - quality: quality - - } ); - -} - -/** - * Writer - */ -class GLTFWriter { - - constructor() { - - this.plugins = []; - - this.options = {}; - this.pending = []; - this.buffers = []; - - this.byteOffset = 0; - this.buffers = []; - this.nodeMap = new Map(); - this.skins = []; - - this.extensionsUsed = {}; - this.extensionsRequired = {}; - - this.uids = new Map(); - this.uid = 0; - - this.json = { - asset: { - version: '2.0', - generator: 'THREE.GLTFExporter' - } - }; - - this.cache = { - meshes: new Map(), - attributes: new Map(), - attributesNormalized: new Map(), - materials: new Map(), - textures: new Map(), - images: new Map() - }; - - } - - setPlugins( plugins ) { - - this.plugins = plugins; - - } - - /** - * Parse scenes and generate GLTF output - * @param {Scene or [THREE.Scenes]} input Scene or Array of THREE.Scenes - * @param {Function} onDone Callback on completed - * @param {Object} options options - */ - async write( input, onDone, options = {} ) { - - this.options = Object.assign( { - // default options - binary: false, - trs: false, - onlyVisible: true, - maxTextureSize: Infinity, - animations: [], - includeCustomExtensions: false - }, options ); - - if ( this.options.animations.length > 0 ) { - - // Only TRS properties, and not matrices, may be targeted by animation. - this.options.trs = true; - - } - - this.processInput( input ); - - await Promise.all( this.pending ); - - const writer = this; - const buffers = writer.buffers; - const json = writer.json; - options = writer.options; - - const extensionsUsed = writer.extensionsUsed; - const extensionsRequired = writer.extensionsRequired; - - // Merge buffers. - const blob = new Blob( buffers, { type: 'application/octet-stream' } ); - - // Declare extensions. - const extensionsUsedList = Object.keys( extensionsUsed ); - const extensionsRequiredList = Object.keys( extensionsRequired ); - - if ( extensionsUsedList.length > 0 ) json.extensionsUsed = extensionsUsedList; - if ( extensionsRequiredList.length > 0 ) json.extensionsRequired = extensionsRequiredList; - - // Update bytelength of the single buffer. - if ( json.buffers && json.buffers.length > 0 ) json.buffers[ 0 ].byteLength = blob.size; - - if ( options.binary === true ) { - - // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification - - const reader = new FileReader(); - reader.readAsArrayBuffer( blob ); - reader.onloadend = function () { - - // Binary chunk. - const binaryChunk = getPaddedArrayBuffer( reader.result ); - const binaryChunkPrefix = new DataView( new ArrayBuffer( GLB_CHUNK_PREFIX_BYTES ) ); - binaryChunkPrefix.setUint32( 0, binaryChunk.byteLength, true ); - binaryChunkPrefix.setUint32( 4, GLB_CHUNK_TYPE_BIN, true ); - - // JSON chunk. - const jsonChunk = getPaddedArrayBuffer( stringToArrayBuffer( JSON.stringify( json ) ), 0x20 ); - const jsonChunkPrefix = new DataView( new ArrayBuffer( GLB_CHUNK_PREFIX_BYTES ) ); - jsonChunkPrefix.setUint32( 0, jsonChunk.byteLength, true ); - jsonChunkPrefix.setUint32( 4, GLB_CHUNK_TYPE_JSON, true ); - - // GLB header. - const header = new ArrayBuffer( GLB_HEADER_BYTES ); - const headerView = new DataView( header ); - headerView.setUint32( 0, GLB_HEADER_MAGIC, true ); - headerView.setUint32( 4, GLB_VERSION, true ); - const totalByteLength = GLB_HEADER_BYTES - + jsonChunkPrefix.byteLength + jsonChunk.byteLength - + binaryChunkPrefix.byteLength + binaryChunk.byteLength; - headerView.setUint32( 8, totalByteLength, true ); - - const glbBlob = new Blob( [ - header, - jsonChunkPrefix, - jsonChunk, - binaryChunkPrefix, - binaryChunk - ], { type: 'application/octet-stream' } ); - - const glbReader = new FileReader(); - glbReader.readAsArrayBuffer( glbBlob ); - glbReader.onloadend = function () { - - onDone( glbReader.result ); - - }; - - }; - - } else { - - if ( json.buffers && json.buffers.length > 0 ) { - - const reader = new FileReader(); - reader.readAsDataURL( blob ); - reader.onloadend = function () { - - const base64data = reader.result; - json.buffers[ 0 ].uri = base64data; - onDone( json ); - - }; - - } else { - - onDone( json ); - - } - - } - - - } - - /** - * Serializes a userData. - * - * @param {THREE.Object3D|THREE.Material} object - * @param {Object} objectDef - */ - serializeUserData( object, objectDef ) { - - if ( Object.keys( object.userData ).length === 0 ) return; - - const options = this.options; - const extensionsUsed = this.extensionsUsed; - - try { - - const json = JSON.parse( JSON.stringify( object.userData ) ); - - if ( options.includeCustomExtensions && json.gltfExtensions ) { - - if ( objectDef.extensions === undefined ) objectDef.extensions = {}; - - for ( const extensionName in json.gltfExtensions ) { - - objectDef.extensions[ extensionName ] = json.gltfExtensions[ extensionName ]; - extensionsUsed[ extensionName ] = true; - - } - - delete json.gltfExtensions; - - } - - if ( Object.keys( json ).length > 0 ) objectDef.extras = json; - - } catch ( error ) { - - console.warn( 'THREE.GLTFExporter: userData of \'' + object.name + '\' ' + - 'won\'t be serialized because of JSON.stringify error - ' + error.message ); - - } - - } - - /** - * Returns ids for buffer attributes. - * @param {Object} object - * @return {Integer} - */ - getUID( attribute, isRelativeCopy = false ) { - - if ( this.uids.has( attribute ) === false ) { - - const uids = new Map(); - - uids.set( true, this.uid ++ ); - uids.set( false, this.uid ++ ); - - this.uids.set( attribute, uids ); - - } - - const uids = this.uids.get( attribute ); - - return uids.get( isRelativeCopy ); - - } - - /** - * Checks if normal attribute values are normalized. - * - * @param {BufferAttribute} normal - * @returns {Boolean} - */ - isNormalizedNormalAttribute( normal ) { - - const cache = this.cache; - - if ( cache.attributesNormalized.has( normal ) ) return false; - - const v = new Vector3(); - - for ( let i = 0, il = normal.count; i < il; i ++ ) { - - // 0.0005 is from glTF-validator - if ( Math.abs( v.fromBufferAttribute( normal, i ).length() - 1.0 ) > 0.0005 ) return false; - - } - - return true; - - } - - /** - * Creates normalized normal buffer attribute. - * - * @param {BufferAttribute} normal - * @returns {BufferAttribute} - * - */ - createNormalizedNormalAttribute( normal ) { - - const cache = this.cache; - - if ( cache.attributesNormalized.has( normal ) ) return cache.attributesNormalized.get( normal ); - - const attribute = normal.clone(); - const v = new Vector3(); - - for ( let i = 0, il = attribute.count; i < il; i ++ ) { - - v.fromBufferAttribute( attribute, i ); - - if ( v.x === 0 && v.y === 0 && v.z === 0 ) { - - // if values can't be normalized set (1, 0, 0) - v.setX( 1.0 ); - - } else { - - v.normalize(); - - } - - attribute.setXYZ( i, v.x, v.y, v.z ); - - } - - cache.attributesNormalized.set( normal, attribute ); - - return attribute; - - } - - /** - * Applies a texture transform, if present, to the map definition. Requires - * the KHR_texture_transform extension. - * - * @param {Object} mapDef - * @param {THREE.Texture} texture - */ - applyTextureTransform( mapDef, texture ) { - - let didTransform = false; - const transformDef = {}; - - if ( texture.offset.x !== 0 || texture.offset.y !== 0 ) { - - transformDef.offset = texture.offset.toArray(); - didTransform = true; - - } - - if ( texture.rotation !== 0 ) { - - transformDef.rotation = texture.rotation; - didTransform = true; - - } - - if ( texture.repeat.x !== 1 || texture.repeat.y !== 1 ) { - - transformDef.scale = texture.repeat.toArray(); - didTransform = true; - - } - - if ( didTransform ) { - - mapDef.extensions = mapDef.extensions || {}; - mapDef.extensions[ 'KHR_texture_transform' ] = transformDef; - this.extensionsUsed[ 'KHR_texture_transform' ] = true; - - } - - } - - buildMetalRoughTexture( metalnessMap, roughnessMap ) { - - if ( metalnessMap === roughnessMap ) return metalnessMap; - - function getEncodingConversion( map ) { - - if ( map.colorSpace === SRGBColorSpace ) { - - return function SRGBToLinear( c ) { - - return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 ); - - }; - - } - - return function LinearToLinear( c ) { - - return c; - - }; - - } - - console.warn( 'THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures.' ); - - if ( metalnessMap instanceof CompressedTexture ) { - - metalnessMap = decompress( metalnessMap ); - - } - - if ( roughnessMap instanceof CompressedTexture ) { - - roughnessMap = decompress( roughnessMap ); - - } - - const metalness = metalnessMap ? metalnessMap.image : null; - const roughness = roughnessMap ? roughnessMap.image : null; - - const width = Math.max( metalness ? metalness.width : 0, roughness ? roughness.width : 0 ); - const height = Math.max( metalness ? metalness.height : 0, roughness ? roughness.height : 0 ); - - const canvas = getCanvas(); - canvas.width = width; - canvas.height = height; - - const context = canvas.getContext( '2d' ); - context.fillStyle = '#00ffff'; - context.fillRect( 0, 0, width, height ); - - const composite = context.getImageData( 0, 0, width, height ); - - if ( metalness ) { - - context.drawImage( metalness, 0, 0, width, height ); - - const convert = getEncodingConversion( metalnessMap ); - const data = context.getImageData( 0, 0, width, height ).data; - - for ( let i = 2; i < data.length; i += 4 ) { - - composite.data[ i ] = convert( data[ i ] / 256 ) * 256; - - } - - } - - if ( roughness ) { - - context.drawImage( roughness, 0, 0, width, height ); - - const convert = getEncodingConversion( roughnessMap ); - const data = context.getImageData( 0, 0, width, height ).data; - - for ( let i = 1; i < data.length; i += 4 ) { - - composite.data[ i ] = convert( data[ i ] / 256 ) * 256; - - } - - } - - context.putImageData( composite, 0, 0 ); - - // - - const reference = metalnessMap || roughnessMap; - - const texture = reference.clone(); - - texture.source = new Source( canvas ); - texture.colorSpace = NoColorSpace; - texture.channel = ( metalnessMap || roughnessMap ).channel; - - if ( metalnessMap && roughnessMap && metalnessMap.channel !== roughnessMap.channel ) { - - console.warn( 'THREE.GLTFExporter: UV channels for metalnessMap and roughnessMap textures must match.' ); - - } - - return texture; - - } - - /** - * Process a buffer to append to the default one. - * @param {ArrayBuffer} buffer - * @return {Integer} - */ - processBuffer( buffer ) { - - const json = this.json; - const buffers = this.buffers; - - if ( ! json.buffers ) json.buffers = [ { byteLength: 0 } ]; - - // All buffers are merged before export. - buffers.push( buffer ); - - return 0; - - } - - /** - * Process and generate a BufferView - * @param {BufferAttribute} attribute - * @param {number} componentType - * @param {number} start - * @param {number} count - * @param {number} target (Optional) Target usage of the BufferView - * @return {Object} - */ - processBufferView( attribute, componentType, start, count, target ) { - - const json = this.json; - - if ( ! json.bufferViews ) json.bufferViews = []; - - // Create a new dataview and dump the attribute's array into it - - let componentSize; - - switch ( componentType ) { - - case WEBGL_CONSTANTS.BYTE: - case WEBGL_CONSTANTS.UNSIGNED_BYTE: - - componentSize = 1; - - break; - - case WEBGL_CONSTANTS.SHORT: - case WEBGL_CONSTANTS.UNSIGNED_SHORT: - - componentSize = 2; - - break; - - default: - - componentSize = 4; - - } - - const byteLength = getPaddedBufferSize( count * attribute.itemSize * componentSize ); - const dataView = new DataView( new ArrayBuffer( byteLength ) ); - let offset = 0; - - for ( let i = start; i < start + count; i ++ ) { - - for ( let a = 0; a < attribute.itemSize; a ++ ) { - - let value; - - if ( attribute.itemSize > 4 ) { - - // no support for interleaved data for itemSize > 4 - - value = attribute.array[ i * attribute.itemSize + a ]; - - } else { - - if ( a === 0 ) value = attribute.getX( i ); - else if ( a === 1 ) value = attribute.getY( i ); - else if ( a === 2 ) value = attribute.getZ( i ); - else if ( a === 3 ) value = attribute.getW( i ); - - if ( attribute.normalized === true ) { - - value = MathUtils.normalize( value, attribute.array ); - - } - - } - - if ( componentType === WEBGL_CONSTANTS.FLOAT ) { - - dataView.setFloat32( offset, value, true ); - - } else if ( componentType === WEBGL_CONSTANTS.INT ) { - - dataView.setInt32( offset, value, true ); - - } else if ( componentType === WEBGL_CONSTANTS.UNSIGNED_INT ) { - - dataView.setUint32( offset, value, true ); - - } else if ( componentType === WEBGL_CONSTANTS.SHORT ) { - - dataView.setInt16( offset, value, true ); - - } else if ( componentType === WEBGL_CONSTANTS.UNSIGNED_SHORT ) { - - dataView.setUint16( offset, value, true ); - - } else if ( componentType === WEBGL_CONSTANTS.BYTE ) { - - dataView.setInt8( offset, value ); - - } else if ( componentType === WEBGL_CONSTANTS.UNSIGNED_BYTE ) { - - dataView.setUint8( offset, value ); - - } - - offset += componentSize; - - } - - } - - const bufferViewDef = { - - buffer: this.processBuffer( dataView.buffer ), - byteOffset: this.byteOffset, - byteLength: byteLength - - }; - - if ( target !== undefined ) bufferViewDef.target = target; - - if ( target === WEBGL_CONSTANTS.ARRAY_BUFFER ) { - - // Only define byteStride for vertex attributes. - bufferViewDef.byteStride = attribute.itemSize * componentSize; - - } - - this.byteOffset += byteLength; - - json.bufferViews.push( bufferViewDef ); - - // @TODO Merge bufferViews where possible. - const output = { - - id: json.bufferViews.length - 1, - byteLength: 0 - - }; - - return output; - - } - - /** - * Process and generate a BufferView from an image Blob. - * @param {Blob} blob - * @return {Promise} - */ - processBufferViewImage( blob ) { - - const writer = this; - const json = writer.json; - - if ( ! json.bufferViews ) json.bufferViews = []; - - return new Promise( function ( resolve ) { - - const reader = new FileReader(); - reader.readAsArrayBuffer( blob ); - reader.onloadend = function () { - - const buffer = getPaddedArrayBuffer( reader.result ); - - const bufferViewDef = { - buffer: writer.processBuffer( buffer ), - byteOffset: writer.byteOffset, - byteLength: buffer.byteLength - }; - - writer.byteOffset += buffer.byteLength; - resolve( json.bufferViews.push( bufferViewDef ) - 1 ); - - }; - - } ); - - } - - /** - * Process attribute to generate an accessor - * @param {BufferAttribute} attribute Attribute to process - * @param {THREE.BufferGeometry} geometry (Optional) Geometry used for truncated draw range - * @param {Integer} start (Optional) - * @param {Integer} count (Optional) - * @return {Integer|null} Index of the processed accessor on the "accessors" array - */ - processAccessor( attribute, geometry, start, count ) { - - const json = this.json; - - const types = { - - 1: 'SCALAR', - 2: 'VEC2', - 3: 'VEC3', - 4: 'VEC4', - 9: 'MAT3', - 16: 'MAT4' - - }; - - let componentType; - - // Detect the component type of the attribute array - if ( attribute.array.constructor === Float32Array ) { - - componentType = WEBGL_CONSTANTS.FLOAT; - - } else if ( attribute.array.constructor === Int32Array ) { - - componentType = WEBGL_CONSTANTS.INT; - - } else if ( attribute.array.constructor === Uint32Array ) { - - componentType = WEBGL_CONSTANTS.UNSIGNED_INT; - - } else if ( attribute.array.constructor === Int16Array ) { - - componentType = WEBGL_CONSTANTS.SHORT; - - } else if ( attribute.array.constructor === Uint16Array ) { - - componentType = WEBGL_CONSTANTS.UNSIGNED_SHORT; - - } else if ( attribute.array.constructor === Int8Array ) { - - componentType = WEBGL_CONSTANTS.BYTE; - - } else if ( attribute.array.constructor === Uint8Array ) { - - componentType = WEBGL_CONSTANTS.UNSIGNED_BYTE; - - } else { - - throw new Error( 'THREE.GLTFExporter: Unsupported bufferAttribute component type: ' + attribute.array.constructor.name ); - - } - - if ( start === undefined ) start = 0; - if ( count === undefined || count === Infinity ) count = attribute.count; - - // Skip creating an accessor if the attribute doesn't have data to export - if ( count === 0 ) return null; - - const minMax = getMinMax( attribute, start, count ); - let bufferViewTarget; - - // If geometry isn't provided, don't infer the target usage of the bufferView. For - // animation samplers, target must not be set. - if ( geometry !== undefined ) { - - bufferViewTarget = attribute === geometry.index ? WEBGL_CONSTANTS.ELEMENT_ARRAY_BUFFER : WEBGL_CONSTANTS.ARRAY_BUFFER; - - } - - const bufferView = this.processBufferView( attribute, componentType, start, count, bufferViewTarget ); - - const accessorDef = { - - bufferView: bufferView.id, - byteOffset: bufferView.byteOffset, - componentType: componentType, - count: count, - max: minMax.max, - min: minMax.min, - type: types[ attribute.itemSize ] - - }; - - if ( attribute.normalized === true ) accessorDef.normalized = true; - if ( ! json.accessors ) json.accessors = []; - - return json.accessors.push( accessorDef ) - 1; - - } - - /** - * Process image - * @param {Image} image to process - * @param {Integer} format of the image (RGBAFormat) - * @param {Boolean} flipY before writing out the image - * @param {String} mimeType export format - * @return {Integer} Index of the processed texture in the "images" array - */ - processImage( image, format, flipY, mimeType = 'image/png' ) { - - if ( image !== null ) { - - const writer = this; - const cache = writer.cache; - const json = writer.json; - const options = writer.options; - const pending = writer.pending; - - if ( ! cache.images.has( image ) ) cache.images.set( image, {} ); - - const cachedImages = cache.images.get( image ); - - const key = mimeType + ':flipY/' + flipY.toString(); - - if ( cachedImages[ key ] !== undefined ) return cachedImages[ key ]; - - if ( ! json.images ) json.images = []; - - const imageDef = { mimeType: mimeType }; - - const canvas = getCanvas(); - - canvas.width = Math.min( image.width, options.maxTextureSize ); - canvas.height = Math.min( image.height, options.maxTextureSize ); - - const ctx = canvas.getContext( '2d' ); - - if ( flipY === true ) { - - ctx.translate( 0, canvas.height ); - ctx.scale( 1, - 1 ); - - } - - if ( image.data !== undefined ) { // THREE.DataTexture - - if ( format !== RGBAFormat ) { - - console.error( 'GLTFExporter: Only RGBAFormat is supported.', format ); - - } - - if ( image.width > options.maxTextureSize || image.height > options.maxTextureSize ) { - - console.warn( 'GLTFExporter: Image size is bigger than maxTextureSize', image ); - - } - - const data = new Uint8ClampedArray( image.height * image.width * 4 ); - - for ( let i = 0; i < data.length; i += 4 ) { - - data[ i + 0 ] = image.data[ i + 0 ]; - data[ i + 1 ] = image.data[ i + 1 ]; - data[ i + 2 ] = image.data[ i + 2 ]; - data[ i + 3 ] = image.data[ i + 3 ]; - - } - - ctx.putImageData( new ImageData( data, image.width, image.height ), 0, 0 ); - - } else { - - ctx.drawImage( image, 0, 0, canvas.width, canvas.height ); - - } - - if ( options.binary === true ) { - - pending.push( - - getToBlobPromise( canvas, mimeType ) - .then( blob => writer.processBufferViewImage( blob ) ) - .then( bufferViewIndex => { - - imageDef.bufferView = bufferViewIndex; - - } ) - - ); - - } else { - - if ( canvas.toDataURL !== undefined ) { - - imageDef.uri = canvas.toDataURL( mimeType ); - - } else { - - pending.push( - - getToBlobPromise( canvas, mimeType ) - .then( blob => new FileReader().readAsDataURL( blob ) ) - .then( dataURL => { - - imageDef.uri = dataURL; - - } ) - - ); - - } - - } - - const index = json.images.push( imageDef ) - 1; - cachedImages[ key ] = index; - return index; - - } else { - - throw new Error( 'THREE.GLTFExporter: No valid image data found. Unable to process texture.' ); - - } - - } - - /** - * Process sampler - * @param {Texture} map Texture to process - * @return {Integer} Index of the processed texture in the "samplers" array - */ - processSampler( map ) { - - const json = this.json; - - if ( ! json.samplers ) json.samplers = []; - - const samplerDef = { - magFilter: THREE_TO_WEBGL[ map.magFilter ], - minFilter: THREE_TO_WEBGL[ map.minFilter ], - wrapS: THREE_TO_WEBGL[ map.wrapS ], - wrapT: THREE_TO_WEBGL[ map.wrapT ] - }; - - return json.samplers.push( samplerDef ) - 1; - - } - - /** - * Process texture - * @param {Texture} map Map to process - * @return {Integer} Index of the processed texture in the "textures" array - */ - processTexture( map ) { - - const writer = this; - const options = writer.options; - const cache = this.cache; - const json = this.json; - - if ( cache.textures.has( map ) ) return cache.textures.get( map ); - - if ( ! json.textures ) json.textures = []; - - // make non-readable textures (e.g. CompressedTexture) readable by blitting them into a new texture - if ( map instanceof CompressedTexture ) { - - map = decompress( map, options.maxTextureSize ); - - } - - let mimeType = map.userData.mimeType; - - if ( mimeType === 'image/webp' ) mimeType = 'image/png'; - - const textureDef = { - sampler: this.processSampler( map ), - source: this.processImage( map.image, map.format, map.flipY, mimeType ) - }; - - if ( map.name ) textureDef.name = map.name; - - this._invokeAll( function ( ext ) { - - ext.writeTexture && ext.writeTexture( map, textureDef ); - - } ); - - const index = json.textures.push( textureDef ) - 1; - cache.textures.set( map, index ); - return index; - - } - - /** - * Process material - * @param {THREE.Material} material Material to process - * @return {Integer|null} Index of the processed material in the "materials" array - */ - processMaterial( material ) { - - const cache = this.cache; - const json = this.json; - - if ( cache.materials.has( material ) ) return cache.materials.get( material ); - - if ( material.isShaderMaterial ) { - - console.warn( 'GLTFExporter: THREE.ShaderMaterial not supported.' ); - return null; - - } - - if ( ! json.materials ) json.materials = []; - - // @QUESTION Should we avoid including any attribute that has the default value? - const materialDef = { pbrMetallicRoughness: {} }; - - if ( material.isMeshStandardMaterial !== true && material.isMeshBasicMaterial !== true ) { - - console.warn( 'GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.' ); - - } - - // pbrMetallicRoughness.baseColorFactor - const color = material.color.toArray().concat( [ material.opacity ] ); - - if ( ! equalArray( color, [ 1, 1, 1, 1 ] ) ) { - - materialDef.pbrMetallicRoughness.baseColorFactor = color; - - } - - if ( material.isMeshStandardMaterial ) { - - materialDef.pbrMetallicRoughness.metallicFactor = material.metalness; - materialDef.pbrMetallicRoughness.roughnessFactor = material.roughness; - - } else { - - materialDef.pbrMetallicRoughness.metallicFactor = 0.5; - materialDef.pbrMetallicRoughness.roughnessFactor = 0.5; - - } - - // pbrMetallicRoughness.metallicRoughnessTexture - if ( material.metalnessMap || material.roughnessMap ) { - - const metalRoughTexture = this.buildMetalRoughTexture( material.metalnessMap, material.roughnessMap ); - - const metalRoughMapDef = { - index: this.processTexture( metalRoughTexture ), - channel: metalRoughTexture.channel - }; - this.applyTextureTransform( metalRoughMapDef, metalRoughTexture ); - materialDef.pbrMetallicRoughness.metallicRoughnessTexture = metalRoughMapDef; - - } - - // pbrMetallicRoughness.baseColorTexture - if ( material.map ) { - - const baseColorMapDef = { - index: this.processTexture( material.map ), - texCoord: material.map.channel - }; - this.applyTextureTransform( baseColorMapDef, material.map ); - materialDef.pbrMetallicRoughness.baseColorTexture = baseColorMapDef; - - } - - if ( material.emissive ) { - - const emissive = material.emissive; - const maxEmissiveComponent = Math.max( emissive.r, emissive.g, emissive.b ); - - if ( maxEmissiveComponent > 0 ) { - - materialDef.emissiveFactor = material.emissive.toArray(); - - } - - // emissiveTexture - if ( material.emissiveMap ) { - - const emissiveMapDef = { - index: this.processTexture( material.emissiveMap ), - texCoord: material.emissiveMap.channel - }; - this.applyTextureTransform( emissiveMapDef, material.emissiveMap ); - materialDef.emissiveTexture = emissiveMapDef; - - } - - } - - // normalTexture - if ( material.normalMap ) { - - const normalMapDef = { - index: this.processTexture( material.normalMap ), - texCoord: material.normalMap.channel - }; - - if ( material.normalScale && material.normalScale.x !== 1 ) { - - // glTF normal scale is univariate. Ignore `y`, which may be flipped. - // Context: https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995 - normalMapDef.scale = material.normalScale.x; - - } - - this.applyTextureTransform( normalMapDef, material.normalMap ); - materialDef.normalTexture = normalMapDef; - - } - - // occlusionTexture - if ( material.aoMap ) { - - const occlusionMapDef = { - index: this.processTexture( material.aoMap ), - texCoord: material.aoMap.channel - }; - - if ( material.aoMapIntensity !== 1.0 ) { - - occlusionMapDef.strength = material.aoMapIntensity; - - } - - this.applyTextureTransform( occlusionMapDef, material.aoMap ); - materialDef.occlusionTexture = occlusionMapDef; - - } - - // alphaMode - if ( material.transparent ) { - - materialDef.alphaMode = 'BLEND'; - - } else { - - if ( material.alphaTest > 0.0 ) { - - materialDef.alphaMode = 'MASK'; - materialDef.alphaCutoff = material.alphaTest; - - } - - } - - // doubleSided - if ( material.side === DoubleSide ) materialDef.doubleSided = true; - if ( material.name !== '' ) materialDef.name = material.name; - - this.serializeUserData( material, materialDef ); - - this._invokeAll( function ( ext ) { - - ext.writeMaterial && ext.writeMaterial( material, materialDef ); - - } ); - - const index = json.materials.push( materialDef ) - 1; - cache.materials.set( material, index ); - return index; - - } - - /** - * Process mesh - * @param {THREE.Mesh} mesh Mesh to process - * @return {Integer|null} Index of the processed mesh in the "meshes" array - */ - processMesh( mesh ) { - - const cache = this.cache; - const json = this.json; - - const meshCacheKeyParts = [ mesh.geometry.uuid ]; - - if ( Array.isArray( mesh.material ) ) { - - for ( let i = 0, l = mesh.material.length; i < l; i ++ ) { - - meshCacheKeyParts.push( mesh.material[ i ].uuid ); - - } - - } else { - - meshCacheKeyParts.push( mesh.material.uuid ); - - } - - const meshCacheKey = meshCacheKeyParts.join( ':' ); - - if ( cache.meshes.has( meshCacheKey ) ) return cache.meshes.get( meshCacheKey ); - - const geometry = mesh.geometry; - - let mode; - - // Use the correct mode - if ( mesh.isLineSegments ) { - - mode = WEBGL_CONSTANTS.LINES; - - } else if ( mesh.isLineLoop ) { - - mode = WEBGL_CONSTANTS.LINE_LOOP; - - } else if ( mesh.isLine ) { - - mode = WEBGL_CONSTANTS.LINE_STRIP; - - } else if ( mesh.isPoints ) { - - mode = WEBGL_CONSTANTS.POINTS; - - } else { - - mode = mesh.material.wireframe ? WEBGL_CONSTANTS.LINES : WEBGL_CONSTANTS.TRIANGLES; - - } - - const meshDef = {}; - const attributes = {}; - const primitives = []; - const targets = []; - - // Conversion between attributes names in threejs and gltf spec - const nameConversion = { - uv: 'TEXCOORD_0', - uv1: 'TEXCOORD_1', - uv2: 'TEXCOORD_2', - uv3: 'TEXCOORD_3', - color: 'COLOR_0', - skinWeight: 'WEIGHTS_0', - skinIndex: 'JOINTS_0' - }; - - const originalNormal = geometry.getAttribute( 'normal' ); - - if ( originalNormal !== undefined && ! this.isNormalizedNormalAttribute( originalNormal ) ) { - - console.warn( 'THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one.' ); - - geometry.setAttribute( 'normal', this.createNormalizedNormalAttribute( originalNormal ) ); - - } - - // @QUESTION Detect if .vertexColors = true? - // For every attribute create an accessor - let modifiedAttribute = null; - - for ( let attributeName in geometry.attributes ) { - - // Ignore morph target attributes, which are exported later. - if ( attributeName.slice( 0, 5 ) === 'morph' ) continue; - - const attribute = geometry.attributes[ attributeName ]; - attributeName = nameConversion[ attributeName ] || attributeName.toUpperCase(); - - // Prefix all geometry attributes except the ones specifically - // listed in the spec; non-spec attributes are considered custom. - const validVertexAttributes = - /^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/; - - if ( ! validVertexAttributes.test( attributeName ) ) attributeName = '_' + attributeName; - - if ( cache.attributes.has( this.getUID( attribute ) ) ) { - - attributes[ attributeName ] = cache.attributes.get( this.getUID( attribute ) ); - continue; - - } - - // JOINTS_0 must be UNSIGNED_BYTE or UNSIGNED_SHORT. - modifiedAttribute = null; - const array = attribute.array; - - if ( attributeName === 'JOINTS_0' && - ! ( array instanceof Uint16Array ) && - ! ( array instanceof Uint8Array ) ) { - - console.warn( 'GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.' ); - modifiedAttribute = new BufferAttribute( new Uint16Array( array ), attribute.itemSize, attribute.normalized ); - - } - - const accessor = this.processAccessor( modifiedAttribute || attribute, geometry ); - - if ( accessor !== null ) { - - if ( ! attributeName.startsWith( '_' ) ) { - - this.detectMeshQuantization( attributeName, attribute ); - - } - - attributes[ attributeName ] = accessor; - cache.attributes.set( this.getUID( attribute ), accessor ); - - } - - } - - if ( originalNormal !== undefined ) geometry.setAttribute( 'normal', originalNormal ); - - // Skip if no exportable attributes found - if ( Object.keys( attributes ).length === 0 ) return null; - - // Morph targets - if ( mesh.morphTargetInfluences !== undefined && mesh.morphTargetInfluences.length > 0 ) { - - const weights = []; - const targetNames = []; - const reverseDictionary = {}; - - if ( mesh.morphTargetDictionary !== undefined ) { - - for ( const key in mesh.morphTargetDictionary ) { - - reverseDictionary[ mesh.morphTargetDictionary[ key ] ] = key; - - } - - } - - for ( let i = 0; i < mesh.morphTargetInfluences.length; ++ i ) { - - const target = {}; - let warned = false; - - for ( const attributeName in geometry.morphAttributes ) { - - // glTF 2.0 morph supports only POSITION/NORMAL/TANGENT. - // Three.js doesn't support TANGENT yet. - - if ( attributeName !== 'position' && attributeName !== 'normal' ) { - - if ( ! warned ) { - - console.warn( 'GLTFExporter: Only POSITION and NORMAL morph are supported.' ); - warned = true; - - } - - continue; - - } - - const attribute = geometry.morphAttributes[ attributeName ][ i ]; - const gltfAttributeName = attributeName.toUpperCase(); - - // Three.js morph attribute has absolute values while the one of glTF has relative values. - // - // glTF 2.0 Specification: - // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#morph-targets - - const baseAttribute = geometry.attributes[ attributeName ]; - - if ( cache.attributes.has( this.getUID( attribute, true ) ) ) { - - target[ gltfAttributeName ] = cache.attributes.get( this.getUID( attribute, true ) ); - continue; - - } - - // Clones attribute not to override - const relativeAttribute = attribute.clone(); - - if ( ! geometry.morphTargetsRelative ) { - - for ( let j = 0, jl = attribute.count; j < jl; j ++ ) { - - for ( let a = 0; a < attribute.itemSize; a ++ ) { - - if ( a === 0 ) relativeAttribute.setX( j, attribute.getX( j ) - baseAttribute.getX( j ) ); - if ( a === 1 ) relativeAttribute.setY( j, attribute.getY( j ) - baseAttribute.getY( j ) ); - if ( a === 2 ) relativeAttribute.setZ( j, attribute.getZ( j ) - baseAttribute.getZ( j ) ); - if ( a === 3 ) relativeAttribute.setW( j, attribute.getW( j ) - baseAttribute.getW( j ) ); - - } - - } - - } - - target[ gltfAttributeName ] = this.processAccessor( relativeAttribute, geometry ); - cache.attributes.set( this.getUID( baseAttribute, true ), target[ gltfAttributeName ] ); - - } - - targets.push( target ); - - weights.push( mesh.morphTargetInfluences[ i ] ); - - if ( mesh.morphTargetDictionary !== undefined ) targetNames.push( reverseDictionary[ i ] ); - - } - - meshDef.weights = weights; - - if ( targetNames.length > 0 ) { - - meshDef.extras = {}; - meshDef.extras.targetNames = targetNames; - - } - - } - - const isMultiMaterial = Array.isArray( mesh.material ); - - if ( isMultiMaterial && geometry.groups.length === 0 ) return null; - - let didForceIndices = false; - - if ( isMultiMaterial && geometry.index === null ) { - - const indices = []; - - for ( let i = 0, il = geometry.attributes.position.count; i < il; i ++ ) { - - indices[ i ] = i; - - } - - geometry.setIndex( indices ); - - didForceIndices = true; - - } - - const materials = isMultiMaterial ? mesh.material : [ mesh.material ]; - const groups = isMultiMaterial ? geometry.groups : [ { materialIndex: 0, start: undefined, count: undefined } ]; - - for ( let i = 0, il = groups.length; i < il; i ++ ) { - - const primitive = { - mode: mode, - attributes: attributes, - }; - - this.serializeUserData( geometry, primitive ); - - if ( targets.length > 0 ) primitive.targets = targets; - - if ( geometry.index !== null ) { - - let cacheKey = this.getUID( geometry.index ); - - if ( groups[ i ].start !== undefined || groups[ i ].count !== undefined ) { - - cacheKey += ':' + groups[ i ].start + ':' + groups[ i ].count; - - } - - if ( cache.attributes.has( cacheKey ) ) { - - primitive.indices = cache.attributes.get( cacheKey ); - - } else { - - primitive.indices = this.processAccessor( geometry.index, geometry, groups[ i ].start, groups[ i ].count ); - cache.attributes.set( cacheKey, primitive.indices ); - - } - - if ( primitive.indices === null ) delete primitive.indices; - - } - - const material = this.processMaterial( materials[ groups[ i ].materialIndex ] ); - - if ( material !== null ) primitive.material = material; - - primitives.push( primitive ); - - } - - if ( didForceIndices === true ) { - - geometry.setIndex( null ); - - } - - meshDef.primitives = primitives; - - if ( ! json.meshes ) json.meshes = []; - - this._invokeAll( function ( ext ) { - - ext.writeMesh && ext.writeMesh( mesh, meshDef ); - - } ); - - const index = json.meshes.push( meshDef ) - 1; - cache.meshes.set( meshCacheKey, index ); - return index; - - } - - /** - * If a vertex attribute with a - * [non-standard data type](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#meshes-overview) - * is used, it is checked whether it is a valid data type according to the - * [KHR_mesh_quantization](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_mesh_quantization/README.md) - * extension. - * In this case the extension is automatically added to the list of used extensions. - * - * @param {string} attributeName - * @param {THREE.BufferAttribute} attribute - */ - detectMeshQuantization( attributeName, attribute ) { - - if ( this.extensionsUsed[ KHR_MESH_QUANTIZATION ] ) return; - - let attrType = undefined; - - switch ( attribute.array.constructor ) { - - case Int8Array: - - attrType = 'byte'; - - break; - - case Uint8Array: - - attrType = 'unsigned byte'; - - break; - - case Int16Array: - - attrType = 'short'; - - break; - - case Uint16Array: - - attrType = 'unsigned short'; - - break; - - default: - - return; - - } - - if ( attribute.normalized ) attrType += ' normalized'; - - const attrNamePrefix = attributeName.split( '_', 1 )[ 0 ]; - - if ( KHR_mesh_quantization_ExtraAttrTypes[ attrNamePrefix ] && KHR_mesh_quantization_ExtraAttrTypes[ attrNamePrefix ].includes( attrType ) ) { - - this.extensionsUsed[ KHR_MESH_QUANTIZATION ] = true; - this.extensionsRequired[ KHR_MESH_QUANTIZATION ] = true; - - } - - } - - /** - * Process camera - * @param {THREE.Camera} camera Camera to process - * @return {Integer} Index of the processed mesh in the "camera" array - */ - processCamera( camera ) { - - const json = this.json; - - if ( ! json.cameras ) json.cameras = []; - - const isOrtho = camera.isOrthographicCamera; - - const cameraDef = { - type: isOrtho ? 'orthographic' : 'perspective' - }; - - if ( isOrtho ) { - - cameraDef.orthographic = { - xmag: camera.right * 2, - ymag: camera.top * 2, - zfar: camera.far <= 0 ? 0.001 : camera.far, - znear: camera.near < 0 ? 0 : camera.near - }; - - } else { - - cameraDef.perspective = { - aspectRatio: camera.aspect, - yfov: MathUtils.degToRad( camera.fov ), - zfar: camera.far <= 0 ? 0.001 : camera.far, - znear: camera.near < 0 ? 0 : camera.near - }; - - } - - // Question: Is saving "type" as name intentional? - if ( camera.name !== '' ) cameraDef.name = camera.type; - - return json.cameras.push( cameraDef ) - 1; - - } - - /** - * Creates glTF animation entry from AnimationClip object. - * - * Status: - * - Only properties listed in PATH_PROPERTIES may be animated. - * - * @param {THREE.AnimationClip} clip - * @param {THREE.Object3D} root - * @return {number|null} - */ - processAnimation( clip, root ) { - - const json = this.json; - const nodeMap = this.nodeMap; - - if ( ! json.animations ) json.animations = []; - - clip = GLTFExporter.Utils.mergeMorphTargetTracks( clip.clone(), root ); - - const tracks = clip.tracks; - const channels = []; - const samplers = []; - - for ( let i = 0; i < tracks.length; ++ i ) { - - const track = tracks[ i ]; - const trackBinding = PropertyBinding.parseTrackName( track.name ); - let trackNode = PropertyBinding.findNode( root, trackBinding.nodeName ); - const trackProperty = PATH_PROPERTIES[ trackBinding.propertyName ]; - - if ( trackBinding.objectName === 'bones' ) { - - if ( trackNode.isSkinnedMesh === true ) { - - trackNode = trackNode.skeleton.getBoneByName( trackBinding.objectIndex ); - - } else { - - trackNode = undefined; - - } - - } - - if ( ! trackNode || ! trackProperty ) { - - console.warn( 'THREE.GLTFExporter: Could not export animation track "%s".', track.name ); - return null; - - } - - const inputItemSize = 1; - let outputItemSize = track.values.length / track.times.length; - - if ( trackProperty === PATH_PROPERTIES.morphTargetInfluences ) { - - outputItemSize /= trackNode.morphTargetInfluences.length; - - } - - let interpolation; - - // @TODO export CubicInterpolant(InterpolateSmooth) as CUBICSPLINE - - // Detecting glTF cubic spline interpolant by checking factory method's special property - // GLTFCubicSplineInterpolant is a custom interpolant and track doesn't return - // valid value from .getInterpolation(). - if ( track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline === true ) { - - interpolation = 'CUBICSPLINE'; - - // itemSize of CUBICSPLINE keyframe is 9 - // (VEC3 * 3: inTangent, splineVertex, and outTangent) - // but needs to be stored as VEC3 so dividing by 3 here. - outputItemSize /= 3; - - } else if ( track.getInterpolation() === InterpolateDiscrete ) { - - interpolation = 'STEP'; - - } else { - - interpolation = 'LINEAR'; - - } - - samplers.push( { - input: this.processAccessor( new BufferAttribute( track.times, inputItemSize ) ), - output: this.processAccessor( new BufferAttribute( track.values, outputItemSize ) ), - interpolation: interpolation - } ); - - channels.push( { - sampler: samplers.length - 1, - target: { - node: nodeMap.get( trackNode ), - path: trackProperty - } - } ); - - } - - json.animations.push( { - name: clip.name || 'clip_' + json.animations.length, - samplers: samplers, - channels: channels - } ); - - return json.animations.length - 1; - - } - - /** - * @param {THREE.Object3D} object - * @return {number|null} - */ - processSkin( object ) { - - const json = this.json; - const nodeMap = this.nodeMap; - - const node = json.nodes[ nodeMap.get( object ) ]; - - const skeleton = object.skeleton; - - if ( skeleton === undefined ) return null; - - const rootJoint = object.skeleton.bones[ 0 ]; - - if ( rootJoint === undefined ) return null; - - const joints = []; - const inverseBindMatrices = new Float32Array( skeleton.bones.length * 16 ); - const temporaryBoneInverse = new Matrix4(); - - for ( let i = 0; i < skeleton.bones.length; ++ i ) { - - joints.push( nodeMap.get( skeleton.bones[ i ] ) ); - temporaryBoneInverse.copy( skeleton.boneInverses[ i ] ); - temporaryBoneInverse.multiply( object.bindMatrix ).toArray( inverseBindMatrices, i * 16 ); - - } - - if ( json.skins === undefined ) json.skins = []; - - json.skins.push( { - inverseBindMatrices: this.processAccessor( new BufferAttribute( inverseBindMatrices, 16 ) ), - joints: joints, - skeleton: nodeMap.get( rootJoint ) - } ); - - const skinIndex = node.skin = json.skins.length - 1; - - return skinIndex; - - } - - /** - * Process Object3D node - * @param {THREE.Object3D} node Object3D to processNode - * @return {Integer} Index of the node in the nodes list - */ - processNode( object ) { - - const json = this.json; - const options = this.options; - const nodeMap = this.nodeMap; - - if ( ! json.nodes ) json.nodes = []; - - const nodeDef = {}; - - if ( options.trs ) { - - const rotation = object.quaternion.toArray(); - const position = object.position.toArray(); - const scale = object.scale.toArray(); - - if ( ! equalArray( rotation, [ 0, 0, 0, 1 ] ) ) { - - nodeDef.rotation = rotation; - - } - - if ( ! equalArray( position, [ 0, 0, 0 ] ) ) { - - nodeDef.translation = position; - - } - - if ( ! equalArray( scale, [ 1, 1, 1 ] ) ) { - - nodeDef.scale = scale; - - } - - } else { - - if ( object.matrixAutoUpdate ) { - - object.updateMatrix(); - - } - - if ( isIdentityMatrix( object.matrix ) === false ) { - - nodeDef.matrix = object.matrix.elements; - - } - - } - - // We don't export empty strings name because it represents no-name in Three.js. - if ( object.name !== '' ) nodeDef.name = String( object.name ); - - this.serializeUserData( object, nodeDef ); - - if ( object.isMesh || object.isLine || object.isPoints ) { - - const meshIndex = this.processMesh( object ); - - if ( meshIndex !== null ) nodeDef.mesh = meshIndex; - - } else if ( object.isCamera ) { - - nodeDef.camera = this.processCamera( object ); - - } - - if ( object.isSkinnedMesh ) this.skins.push( object ); - - if ( object.children.length > 0 ) { - - const children = []; - - for ( let i = 0, l = object.children.length; i < l; i ++ ) { - - const child = object.children[ i ]; - - if ( child.visible || options.onlyVisible === false ) { - - const nodeIndex = this.processNode( child ); - - if ( nodeIndex !== null ) children.push( nodeIndex ); - - } - - } - - if ( children.length > 0 ) nodeDef.children = children; - - } - - this._invokeAll( function ( ext ) { - - ext.writeNode && ext.writeNode( object, nodeDef ); - - } ); - - const nodeIndex = json.nodes.push( nodeDef ) - 1; - nodeMap.set( object, nodeIndex ); - return nodeIndex; - - } - - /** - * Process Scene - * @param {Scene} node Scene to process - */ - processScene( scene ) { - - const json = this.json; - const options = this.options; - - if ( ! json.scenes ) { - - json.scenes = []; - json.scene = 0; - - } - - const sceneDef = {}; - - if ( scene.name !== '' ) sceneDef.name = scene.name; - - json.scenes.push( sceneDef ); - - const nodes = []; - - for ( let i = 0, l = scene.children.length; i < l; i ++ ) { - - const child = scene.children[ i ]; - - if ( child.visible || options.onlyVisible === false ) { - - const nodeIndex = this.processNode( child ); - - if ( nodeIndex !== null ) nodes.push( nodeIndex ); - - } - - } - - if ( nodes.length > 0 ) sceneDef.nodes = nodes; - - this.serializeUserData( scene, sceneDef ); - - } - - /** - * Creates a Scene to hold a list of objects and parse it - * @param {Array} objects List of objects to process - */ - processObjects( objects ) { - - const scene = new Scene(); - scene.name = 'AuxScene'; - - for ( let i = 0; i < objects.length; i ++ ) { - - // We push directly to children instead of calling `add` to prevent - // modify the .parent and break its original scene and hierarchy - scene.children.push( objects[ i ] ); - - } - - this.processScene( scene ); - - } - - /** - * @param {THREE.Object3D|Array} input - */ - processInput( input ) { - - const options = this.options; - - input = input instanceof Array ? input : [ input ]; - - this._invokeAll( function ( ext ) { - - ext.beforeParse && ext.beforeParse( input ); - - } ); - - const objectsWithoutScene = []; - - for ( let i = 0; i < input.length; i ++ ) { - - if ( input[ i ] instanceof Scene ) { - - this.processScene( input[ i ] ); - - } else { - - objectsWithoutScene.push( input[ i ] ); - - } - - } - - if ( objectsWithoutScene.length > 0 ) this.processObjects( objectsWithoutScene ); - - for ( let i = 0; i < this.skins.length; ++ i ) { - - this.processSkin( this.skins[ i ] ); - - } - - for ( let i = 0; i < options.animations.length; ++ i ) { - - this.processAnimation( options.animations[ i ], input[ 0 ] ); - - } - - this._invokeAll( function ( ext ) { - - ext.afterParse && ext.afterParse( input ); - - } ); - - } - - _invokeAll( func ) { - - for ( let i = 0, il = this.plugins.length; i < il; i ++ ) { - - func( this.plugins[ i ] ); - - } - - } - -} - -/** - * Punctual Lights Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual - */ -class GLTFLightExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_lights_punctual'; - - } - - writeNode( light, nodeDef ) { - - if ( ! light.isLight ) return; - - if ( ! light.isDirectionalLight && ! light.isPointLight && ! light.isSpotLight ) { - - console.warn( 'THREE.GLTFExporter: Only directional, point, and spot lights are supported.', light ); - return; - - } - - const writer = this.writer; - const json = writer.json; - const extensionsUsed = writer.extensionsUsed; - - const lightDef = {}; - - if ( light.name ) lightDef.name = light.name; - - lightDef.color = light.color.toArray(); - - lightDef.intensity = light.intensity; - - if ( light.isDirectionalLight ) { - - lightDef.type = 'directional'; - - } else if ( light.isPointLight ) { - - lightDef.type = 'point'; - - if ( light.distance > 0 ) lightDef.range = light.distance; - - } else if ( light.isSpotLight ) { - - lightDef.type = 'spot'; - - if ( light.distance > 0 ) lightDef.range = light.distance; - - lightDef.spot = {}; - lightDef.spot.innerConeAngle = ( 1.0 - light.penumbra ) * light.angle; - lightDef.spot.outerConeAngle = light.angle; - - } - - if ( light.decay !== undefined && light.decay !== 2 ) { - - console.warn( 'THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, ' - + 'and expects light.decay=2.' ); - - } - - if ( light.target - && ( light.target.parent !== light - || light.target.position.x !== 0 - || light.target.position.y !== 0 - || light.target.position.z !== - 1 ) ) { - - console.warn( 'THREE.GLTFExporter: Light direction may be lost. For best results, ' - + 'make light.target a child of the light with position 0,0,-1.' ); - - } - - if ( ! extensionsUsed[ this.name ] ) { - - json.extensions = json.extensions || {}; - json.extensions[ this.name ] = { lights: [] }; - extensionsUsed[ this.name ] = true; - - } - - const lights = json.extensions[ this.name ].lights; - lights.push( lightDef ); - - nodeDef.extensions = nodeDef.extensions || {}; - nodeDef.extensions[ this.name ] = { light: lights.length - 1 }; - - } - -} - -/** - * Unlit Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit - */ -class GLTFMaterialsUnlitExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_unlit'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshBasicMaterial ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = {}; - - extensionsUsed[ this.name ] = true; - - materialDef.pbrMetallicRoughness.metallicFactor = 0.0; - materialDef.pbrMetallicRoughness.roughnessFactor = 0.9; - - } - -} - -/** - * Clearcoat Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat - */ -class GLTFMaterialsClearcoatExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_clearcoat'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshPhysicalMaterial || material.clearcoat === 0 ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - extensionDef.clearcoatFactor = material.clearcoat; - - if ( material.clearcoatMap ) { - - const clearcoatMapDef = { - index: writer.processTexture( material.clearcoatMap ), - texCoord: material.clearcoatMap.channel - }; - writer.applyTextureTransform( clearcoatMapDef, material.clearcoatMap ); - extensionDef.clearcoatTexture = clearcoatMapDef; - - } - - extensionDef.clearcoatRoughnessFactor = material.clearcoatRoughness; - - if ( material.clearcoatRoughnessMap ) { - - const clearcoatRoughnessMapDef = { - index: writer.processTexture( material.clearcoatRoughnessMap ), - texCoord: material.clearcoatRoughnessMap.channel - }; - writer.applyTextureTransform( clearcoatRoughnessMapDef, material.clearcoatRoughnessMap ); - extensionDef.clearcoatRoughnessTexture = clearcoatRoughnessMapDef; - - } - - if ( material.clearcoatNormalMap ) { - - const clearcoatNormalMapDef = { - index: writer.processTexture( material.clearcoatNormalMap ), - texCoord: material.clearcoatNormalMap.channel - }; - writer.applyTextureTransform( clearcoatNormalMapDef, material.clearcoatNormalMap ); - extensionDef.clearcoatNormalTexture = clearcoatNormalMapDef; - - } - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - - } - -} - -/** - * Iridescence Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence - */ -class GLTFMaterialsIridescenceExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_iridescence'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshPhysicalMaterial || material.iridescence === 0 ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - extensionDef.iridescenceFactor = material.iridescence; - - if ( material.iridescenceMap ) { - - const iridescenceMapDef = { - index: writer.processTexture( material.iridescenceMap ), - texCoord: material.iridescenceMap.channel - }; - writer.applyTextureTransform( iridescenceMapDef, material.iridescenceMap ); - extensionDef.iridescenceTexture = iridescenceMapDef; - - } - - extensionDef.iridescenceIor = material.iridescenceIOR; - extensionDef.iridescenceThicknessMinimum = material.iridescenceThicknessRange[ 0 ]; - extensionDef.iridescenceThicknessMaximum = material.iridescenceThicknessRange[ 1 ]; - - if ( material.iridescenceThicknessMap ) { - - const iridescenceThicknessMapDef = { - index: writer.processTexture( material.iridescenceThicknessMap ), - texCoord: material.iridescenceThicknessMap.channel - }; - writer.applyTextureTransform( iridescenceThicknessMapDef, material.iridescenceThicknessMap ); - extensionDef.iridescenceThicknessTexture = iridescenceThicknessMapDef; - - } - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - -/** - * Transmission Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission - */ -class GLTFMaterialsTransmissionExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_transmission'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshPhysicalMaterial || material.transmission === 0 ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - extensionDef.transmissionFactor = material.transmission; - - if ( material.transmissionMap ) { - - const transmissionMapDef = { - index: writer.processTexture( material.transmissionMap ), - texCoord: material.transmissionMap.channel - }; - writer.applyTextureTransform( transmissionMapDef, material.transmissionMap ); - extensionDef.transmissionTexture = transmissionMapDef; - - } - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - -/** - * Materials Volume Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume - */ -class GLTFMaterialsVolumeExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_volume'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshPhysicalMaterial || material.transmission === 0 ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - extensionDef.thicknessFactor = material.thickness; - - if ( material.thicknessMap ) { - - const thicknessMapDef = { - index: writer.processTexture( material.thicknessMap ), - texCoord: material.thicknessMap.channel - }; - writer.applyTextureTransform( thicknessMapDef, material.thicknessMap ); - extensionDef.thicknessTexture = thicknessMapDef; - - } - - extensionDef.attenuationDistance = material.attenuationDistance; - extensionDef.attenuationColor = material.attenuationColor.toArray(); - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - -/** - * Materials ior Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior - */ -class GLTFMaterialsIorExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_ior'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshPhysicalMaterial || material.ior === 1.5 ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - extensionDef.ior = material.ior; - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - -/** - * Materials specular Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular - */ -class GLTFMaterialsSpecularExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_specular'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshPhysicalMaterial || ( material.specularIntensity === 1.0 && - material.specularColor.equals( DEFAULT_SPECULAR_COLOR ) && - ! material.specularIntensityMap && ! material.specularColorMap ) ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - if ( material.specularIntensityMap ) { - - const specularIntensityMapDef = { - index: writer.processTexture( material.specularIntensityMap ), - texCoord: material.specularIntensityMap.channel - }; - writer.applyTextureTransform( specularIntensityMapDef, material.specularIntensityMap ); - extensionDef.specularTexture = specularIntensityMapDef; - - } - - if ( material.specularColorMap ) { - - const specularColorMapDef = { - index: writer.processTexture( material.specularColorMap ), - texCoord: material.specularColorMap.channel - }; - writer.applyTextureTransform( specularColorMapDef, material.specularColorMap ); - extensionDef.specularColorTexture = specularColorMapDef; - - } - - extensionDef.specularFactor = material.specularIntensity; - extensionDef.specularColorFactor = material.specularColor.toArray(); - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - -/** - * Sheen Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen - */ -class GLTFMaterialsSheenExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_sheen'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshPhysicalMaterial || material.sheen == 0.0 ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - if ( material.sheenRoughnessMap ) { - - const sheenRoughnessMapDef = { - index: writer.processTexture( material.sheenRoughnessMap ), - texCoord: material.sheenRoughnessMap.channel - }; - writer.applyTextureTransform( sheenRoughnessMapDef, material.sheenRoughnessMap ); - extensionDef.sheenRoughnessTexture = sheenRoughnessMapDef; - - } - - if ( material.sheenColorMap ) { - - const sheenColorMapDef = { - index: writer.processTexture( material.sheenColorMap ), - texCoord: material.sheenColorMap.channel - }; - writer.applyTextureTransform( sheenColorMapDef, material.sheenColorMap ); - extensionDef.sheenColorTexture = sheenColorMapDef; - - } - - extensionDef.sheenRoughnessFactor = material.sheenRoughness; - extensionDef.sheenColorFactor = material.sheenColor.toArray(); - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - -/** - * Anisotropy Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_anisotropy - */ -class GLTFMaterialsAnisotropyExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_anisotropy'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshPhysicalMaterial || material.anisotropy == 0.0 ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - if ( material.anisotropyMap ) { - - const anisotropyMapDef = { index: writer.processTexture( material.anisotropyMap ) }; - writer.applyTextureTransform( anisotropyMapDef, material.anisotropyMap ); - extensionDef.anisotropyTexture = anisotropyMapDef; - - } - - extensionDef.anisotropyStrength = material.anisotropy; - extensionDef.anisotropyRotation = material.anisotropyRotation; - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - -/** - * Materials Emissive Strength Extension - * - * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md - */ -class GLTFMaterialsEmissiveStrengthExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'KHR_materials_emissive_strength'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshStandardMaterial || material.emissiveIntensity === 1.0 ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - extensionDef.emissiveStrength = material.emissiveIntensity; - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - - -/** - * Materials bump Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump - */ -class GLTFMaterialsBumpExtension { - - constructor( writer ) { - - this.writer = writer; - this.name = 'EXT_materials_bump'; - - } - - writeMaterial( material, materialDef ) { - - if ( ! material.isMeshStandardMaterial || ( - material.bumpScale === 1 && - ! material.bumpMap ) ) return; - - const writer = this.writer; - const extensionsUsed = writer.extensionsUsed; - - const extensionDef = {}; - - if ( material.bumpMap ) { - - const bumpMapDef = { - index: writer.processTexture( material.bumpMap ), - texCoord: material.bumpMap.channel - }; - writer.applyTextureTransform( bumpMapDef, material.bumpMap ); - extensionDef.bumpTexture = bumpMapDef; - - } - - extensionDef.bumpFactor = material.bumpScale; - - materialDef.extensions = materialDef.extensions || {}; - materialDef.extensions[ this.name ] = extensionDef; - - extensionsUsed[ this.name ] = true; - - } - -} - -/** - * GPU Instancing Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing - */ -class GLTFMeshGpuInstancing { - - constructor( writer ) { - - this.writer = writer; - this.name = 'EXT_mesh_gpu_instancing'; - - } - - writeNode( object, nodeDef ) { - - if ( ! object.isInstancedMesh ) return; - - const writer = this.writer; - - const mesh = object; - - const translationAttr = new Float32Array( mesh.count * 3 ); - const rotationAttr = new Float32Array( mesh.count * 4 ); - const scaleAttr = new Float32Array( mesh.count * 3 ); - - const matrix = new Matrix4(); - const position = new Vector3(); - const quaternion = new Quaternion(); - const scale = new Vector3(); - - for ( let i = 0; i < mesh.count; i ++ ) { - - mesh.getMatrixAt( i, matrix ); - matrix.decompose( position, quaternion, scale ); - - position.toArray( translationAttr, i * 3 ); - quaternion.toArray( rotationAttr, i * 4 ); - scale.toArray( scaleAttr, i * 3 ); - - } - - const attributes = { - TRANSLATION: writer.processAccessor( new BufferAttribute( translationAttr, 3 ) ), - ROTATION: writer.processAccessor( new BufferAttribute( rotationAttr, 4 ) ), - SCALE: writer.processAccessor( new BufferAttribute( scaleAttr, 3 ) ), - }; - - if ( mesh.instanceColor ) - attributes._COLOR_0 = writer.processAccessor( mesh.instanceColor ); - - nodeDef.extensions = nodeDef.extensions || {}; - nodeDef.extensions[ this.name ] = { attributes }; - - writer.extensionsUsed[ this.name ] = true; - writer.extensionsRequired[ this.name ] = true; - - } - -} - -/** - * Static utility functions - */ -GLTFExporter.Utils = { - - insertKeyframe: function ( track, time ) { - - const tolerance = 0.001; // 1ms - const valueSize = track.getValueSize(); - - const times = new track.TimeBufferType( track.times.length + 1 ); - const values = new track.ValueBufferType( track.values.length + valueSize ); - const interpolant = track.createInterpolant( new track.ValueBufferType( valueSize ) ); - - let index; - - if ( track.times.length === 0 ) { - - times[ 0 ] = time; - - for ( let i = 0; i < valueSize; i ++ ) { - - values[ i ] = 0; - - } - - index = 0; - - } else if ( time < track.times[ 0 ] ) { - - if ( Math.abs( track.times[ 0 ] - time ) < tolerance ) return 0; - - times[ 0 ] = time; - times.set( track.times, 1 ); - - values.set( interpolant.evaluate( time ), 0 ); - values.set( track.values, valueSize ); - - index = 0; - - } else if ( time > track.times[ track.times.length - 1 ] ) { - - if ( Math.abs( track.times[ track.times.length - 1 ] - time ) < tolerance ) { - - return track.times.length - 1; - - } - - times[ times.length - 1 ] = time; - times.set( track.times, 0 ); - - values.set( track.values, 0 ); - values.set( interpolant.evaluate( time ), track.values.length ); - - index = times.length - 1; - - } else { - - for ( let i = 0; i < track.times.length; i ++ ) { - - if ( Math.abs( track.times[ i ] - time ) < tolerance ) return i; - - if ( track.times[ i ] < time && track.times[ i + 1 ] > time ) { - - times.set( track.times.slice( 0, i + 1 ), 0 ); - times[ i + 1 ] = time; - times.set( track.times.slice( i + 1 ), i + 2 ); - - values.set( track.values.slice( 0, ( i + 1 ) * valueSize ), 0 ); - values.set( interpolant.evaluate( time ), ( i + 1 ) * valueSize ); - values.set( track.values.slice( ( i + 1 ) * valueSize ), ( i + 2 ) * valueSize ); - - index = i + 1; - - break; - - } - - } - - } - - track.times = times; - track.values = values; - - return index; - - }, - - mergeMorphTargetTracks: function ( clip, root ) { - - const tracks = []; - const mergedTracks = {}; - const sourceTracks = clip.tracks; - - for ( let i = 0; i < sourceTracks.length; ++ i ) { - - let sourceTrack = sourceTracks[ i ]; - const sourceTrackBinding = PropertyBinding.parseTrackName( sourceTrack.name ); - const sourceTrackNode = PropertyBinding.findNode( root, sourceTrackBinding.nodeName ); - - if ( sourceTrackBinding.propertyName !== 'morphTargetInfluences' || sourceTrackBinding.propertyIndex === undefined ) { - - // Tracks that don't affect morph targets, or that affect all morph targets together, can be left as-is. - tracks.push( sourceTrack ); - continue; - - } - - if ( sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodDiscrete - && sourceTrack.createInterpolant !== sourceTrack.InterpolantFactoryMethodLinear ) { - - if ( sourceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) { - - // This should never happen, because glTF morph target animations - // affect all targets already. - throw new Error( 'THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.' ); - - } - - console.warn( 'THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead.' ); - - sourceTrack = sourceTrack.clone(); - sourceTrack.setInterpolation( InterpolateLinear ); - - } - - const targetCount = sourceTrackNode.morphTargetInfluences.length; - const targetIndex = sourceTrackNode.morphTargetDictionary[ sourceTrackBinding.propertyIndex ]; - - if ( targetIndex === undefined ) { - - throw new Error( 'THREE.GLTFExporter: Morph target name not found: ' + sourceTrackBinding.propertyIndex ); - - } - - let mergedTrack; - - // If this is the first time we've seen this object, create a new - // track to store merged keyframe data for each morph target. - if ( mergedTracks[ sourceTrackNode.uuid ] === undefined ) { - - mergedTrack = sourceTrack.clone(); - - const values = new mergedTrack.ValueBufferType( targetCount * mergedTrack.times.length ); - - for ( let j = 0; j < mergedTrack.times.length; j ++ ) { - - values[ j * targetCount + targetIndex ] = mergedTrack.values[ j ]; - - } - - // We need to take into consideration the intended target node - // of our original un-merged morphTarget animation. - mergedTrack.name = ( sourceTrackBinding.nodeName || '' ) + '.morphTargetInfluences'; - mergedTrack.values = values; - - mergedTracks[ sourceTrackNode.uuid ] = mergedTrack; - tracks.push( mergedTrack ); - - continue; - - } - - const sourceInterpolant = sourceTrack.createInterpolant( new sourceTrack.ValueBufferType( 1 ) ); - - mergedTrack = mergedTracks[ sourceTrackNode.uuid ]; - - // For every existing keyframe of the merged track, write a (possibly - // interpolated) value from the source track. - for ( let j = 0; j < mergedTrack.times.length; j ++ ) { - - mergedTrack.values[ j * targetCount + targetIndex ] = sourceInterpolant.evaluate( mergedTrack.times[ j ] ); - - } - - // For every existing keyframe of the source track, write a (possibly - // new) keyframe to the merged track. Values from the previous loop may - // be written again, but keyframes are de-duplicated. - for ( let j = 0; j < sourceTrack.times.length; j ++ ) { - - const keyframeIndex = this.insertKeyframe( mergedTrack, sourceTrack.times[ j ] ); - mergedTrack.values[ keyframeIndex * targetCount + targetIndex ] = sourceTrack.values[ j ]; - - } - - } - - clip.tracks = tracks; - - return clip; - - } - -}; - -export { GLTFExporter }; diff --git a/three/addons/exporters/KTX2Exporter.js b/three/addons/exporters/KTX2Exporter.js deleted file mode 100644 index bfc24d8..0000000 --- a/three/addons/exporters/KTX2Exporter.js +++ /dev/null @@ -1,292 +0,0 @@ -import { - FloatType, - HalfFloatType, - UnsignedByteType, - RGBAFormat, - RGFormat, - RGIntegerFormat, - RedFormat, - RedIntegerFormat, - NoColorSpace, - LinearSRGBColorSpace, - SRGBColorSpace, - DataTexture, - REVISION, -} from 'three'; - -import { - write, - KTX2Container, - KHR_DF_CHANNEL_RGBSDA_ALPHA, - KHR_DF_CHANNEL_RGBSDA_BLUE, - KHR_DF_CHANNEL_RGBSDA_GREEN, - KHR_DF_CHANNEL_RGBSDA_RED, - KHR_DF_MODEL_RGBSDA, - KHR_DF_PRIMARIES_BT709, - KHR_DF_PRIMARIES_UNSPECIFIED, - KHR_DF_SAMPLE_DATATYPE_FLOAT, - KHR_DF_SAMPLE_DATATYPE_LINEAR, - KHR_DF_SAMPLE_DATATYPE_SIGNED, - KHR_DF_TRANSFER_LINEAR, - KHR_DF_TRANSFER_SRGB, - VK_FORMAT_R16_SFLOAT, - VK_FORMAT_R16G16_SFLOAT, - VK_FORMAT_R16G16B16A16_SFLOAT, - VK_FORMAT_R32_SFLOAT, - VK_FORMAT_R32G32_SFLOAT, - VK_FORMAT_R32G32B32A32_SFLOAT, - VK_FORMAT_R8_SRGB, - VK_FORMAT_R8_UNORM, - VK_FORMAT_R8G8_SRGB, - VK_FORMAT_R8G8_UNORM, - VK_FORMAT_R8G8B8A8_SRGB, - VK_FORMAT_R8G8B8A8_UNORM, -} from '../libs/ktx-parse.module.js'; - -const VK_FORMAT_MAP = { - - [ RGBAFormat ]: { - [ FloatType ]: { - [ NoColorSpace ]: VK_FORMAT_R32G32B32A32_SFLOAT, - [ LinearSRGBColorSpace ]: VK_FORMAT_R32G32B32A32_SFLOAT, - }, - [ HalfFloatType ]: { - [ NoColorSpace ]: VK_FORMAT_R16G16B16A16_SFLOAT, - [ LinearSRGBColorSpace ]: VK_FORMAT_R16G16B16A16_SFLOAT, - }, - [ UnsignedByteType ]: { - [ NoColorSpace ]: VK_FORMAT_R8G8B8A8_UNORM, - [ LinearSRGBColorSpace ]: VK_FORMAT_R8G8B8A8_UNORM, - [ SRGBColorSpace ]: VK_FORMAT_R8G8B8A8_SRGB, - }, - }, - - [ RGFormat ]: { - [ FloatType ]: { - [ NoColorSpace ]: VK_FORMAT_R32G32_SFLOAT, - [ LinearSRGBColorSpace ]: VK_FORMAT_R32G32_SFLOAT, - }, - [ HalfFloatType ]: { - [ NoColorSpace ]: VK_FORMAT_R16G16_SFLOAT, - [ LinearSRGBColorSpace ]: VK_FORMAT_R16G16_SFLOAT, - }, - [ UnsignedByteType ]: { - [ NoColorSpace ]: VK_FORMAT_R8G8_UNORM, - [ LinearSRGBColorSpace ]: VK_FORMAT_R8G8_UNORM, - [ SRGBColorSpace ]: VK_FORMAT_R8G8_SRGB, - }, - }, - - [ RedFormat ]: { - [ FloatType ]: { - [ NoColorSpace ]: VK_FORMAT_R32_SFLOAT, - [ LinearSRGBColorSpace ]: VK_FORMAT_R32_SFLOAT, - }, - [ HalfFloatType ]: { - [ NoColorSpace ]: VK_FORMAT_R16_SFLOAT, - [ LinearSRGBColorSpace ]: VK_FORMAT_R16_SFLOAT, - }, - [ UnsignedByteType ]: { - [ NoColorSpace ]: VK_FORMAT_R8_UNORM, - [ LinearSRGBColorSpace ]: VK_FORMAT_R8_UNORM, - [ SRGBColorSpace ]: VK_FORMAT_R8_SRGB, - }, - }, - -}; - -const KHR_DF_CHANNEL_MAP = { - - 0: KHR_DF_CHANNEL_RGBSDA_RED, - 1: KHR_DF_CHANNEL_RGBSDA_GREEN, - 2: KHR_DF_CHANNEL_RGBSDA_BLUE, - 3: KHR_DF_CHANNEL_RGBSDA_ALPHA, - -}; - -const ERROR_INPUT = 'THREE.KTX2Exporter: Supported inputs are DataTexture, Data3DTexture, or WebGLRenderer and WebGLRenderTarget.'; -const ERROR_FORMAT = 'THREE.KTX2Exporter: Supported formats are RGBAFormat, RGFormat, or RedFormat.'; -const ERROR_TYPE = 'THREE.KTX2Exporter: Supported types are FloatType, HalfFloatType, or UnsignedByteType."'; -const ERROR_COLOR_SPACE = 'THREE.KTX2Exporter: Supported color spaces are SRGBColorSpace (UnsignedByteType only), LinearSRGBColorSpace, or NoColorSpace.'; - -export class KTX2Exporter { - - parse( arg1, arg2 ) { - - let texture; - - if ( arg1.isDataTexture || arg1.isData3DTexture ) { - - texture = arg1; - - } else if ( arg1.isWebGLRenderer && arg2.isWebGLRenderTarget ) { - - texture = toDataTexture( arg1, arg2 ); - - } else { - - throw new Error( ERROR_INPUT ); - - } - - if ( VK_FORMAT_MAP[ texture.format ] === undefined ) { - - throw new Error( ERROR_FORMAT ); - - } - - if ( VK_FORMAT_MAP[ texture.format ][ texture.type ] === undefined ) { - - throw new Error( ERROR_TYPE ); - - } - - if ( VK_FORMAT_MAP[ texture.format ][ texture.type ][ texture.colorSpace ] === undefined ) { - - throw new Error( ERROR_COLOR_SPACE ); - - } - - // - - const array = texture.image.data; - const channelCount = getChannelCount( texture ); - const container = new KTX2Container(); - - container.vkFormat = VK_FORMAT_MAP[ texture.format ][ texture.type ][ texture.colorSpace ]; - container.typeSize = array.BYTES_PER_ELEMENT; - container.pixelWidth = texture.image.width; - container.pixelHeight = texture.image.height; - - if ( texture.isData3DTexture ) { - - container.pixelDepth = texture.image.depth; - - } - - // - - const basicDesc = container.dataFormatDescriptor[ 0 ]; - - basicDesc.colorModel = KHR_DF_MODEL_RGBSDA; - basicDesc.colorPrimaries = texture.colorSpace === NoColorSpace - ? KHR_DF_PRIMARIES_UNSPECIFIED - : KHR_DF_PRIMARIES_BT709; - basicDesc.transferFunction = texture.colorSpace === SRGBColorSpace - ? KHR_DF_TRANSFER_SRGB - : KHR_DF_TRANSFER_LINEAR; - - basicDesc.texelBlockDimension = [ 0, 0, 0, 0 ]; - - basicDesc.bytesPlane = [ - - container.typeSize * channelCount, 0, 0, 0, 0, 0, 0, 0, - - ]; - - for ( let i = 0; i < channelCount; ++ i ) { - - let channelType = KHR_DF_CHANNEL_MAP[ i ]; - - if ( texture.colorSpace === LinearSRGBColorSpace || texture.colorSpace === NoColorSpace ) { - - channelType |= KHR_DF_SAMPLE_DATATYPE_LINEAR; - - } - - if ( texture.type === FloatType || texture.type === HalfFloatType ) { - - channelType |= KHR_DF_SAMPLE_DATATYPE_FLOAT; - channelType |= KHR_DF_SAMPLE_DATATYPE_SIGNED; - - } - - basicDesc.samples.push( { - - channelType: channelType, - bitOffset: i * array.BYTES_PER_ELEMENT, - bitLength: array.BYTES_PER_ELEMENT * 8 - 1, - samplePosition: [ 0, 0, 0, 0 ], - sampleLower: texture.type === UnsignedByteType ? 0 : - 1, - sampleUpper: texture.type === UnsignedByteType ? 255 : 1, - - } ); - - } - - // - - container.levels = [ { - - levelData: new Uint8Array( array.buffer, array.byteOffset, array.byteLength ), - uncompressedByteLength: array.byteLength, - - } ]; - - // - - container.keyValue[ 'KTXwriter' ] = `three.js ${ REVISION }`; - - // - - return write( container, { keepWriter: true } ); - - } - -} - -function toDataTexture( renderer, rtt ) { - - const channelCount = getChannelCount( rtt.texture ); - - let view; - - if ( rtt.texture.type === FloatType ) { - - view = new Float32Array( rtt.width * rtt.height * channelCount ); - - } else if ( rtt.texture.type === HalfFloatType ) { - - view = new Uint16Array( rtt.width * rtt.height * channelCount ); - - } else if ( rtt.texture.type === UnsignedByteType ) { - - view = new Uint8Array( rtt.width * rtt.height * channelCount ); - - } else { - - throw new Error( ERROR_TYPE ); - - } - - renderer.readRenderTargetPixels( rtt, 0, 0, rtt.width, rtt.height, view ); - - return new DataTexture( view, rtt.width, rtt.height, rtt.texture.format, rtt.texture.type ); - -} - -function getChannelCount( texture ) { - - switch ( texture.format ) { - - case RGBAFormat: - - return 4; - - case RGFormat: - case RGIntegerFormat: - - return 2; - - case RedFormat: - case RedIntegerFormat: - - return 1; - - default: - - throw new Error( ERROR_FORMAT ); - - } - -} diff --git a/three/addons/exporters/MMDExporter.js b/three/addons/exporters/MMDExporter.js deleted file mode 100644 index bcef712..0000000 --- a/three/addons/exporters/MMDExporter.js +++ /dev/null @@ -1,217 +0,0 @@ -import { - Matrix4, - Quaternion, - Vector3 -} from 'three'; -import { MMDParser } from '../libs/mmdparser.module.js'; - -/** - * Dependencies - * - mmd-parser https://github.com/takahirox/mmd-parser - */ - -class MMDExporter { - - /* TODO: implement - // mesh -> pmd - this.parsePmd = function ( object ) { - - }; - */ - - /* TODO: implement - // mesh -> pmx - this.parsePmx = function ( object ) { - - }; - */ - - /* TODO: implement - // animation + skeleton -> vmd - this.parseVmd = function ( object ) { - - }; - */ - - /* - * skeleton -> vpd - * Returns Shift_JIS encoded Uint8Array. Otherwise return strings. - */ - parseVpd( skin, outputShiftJis, useOriginalBones ) { - - if ( skin.isSkinnedMesh !== true ) { - - console.warn( 'THREE.MMDExporter: parseVpd() requires SkinnedMesh instance.' ); - return null; - - } - - function toStringsFromNumber( num ) { - - if ( Math.abs( num ) < 1e-6 ) num = 0; - - let a = num.toString(); - - if ( a.indexOf( '.' ) === - 1 ) { - - a += '.'; - - } - - a += '000000'; - - const index = a.indexOf( '.' ); - - const d = a.slice( 0, index ); - const p = a.slice( index + 1, index + 7 ); - - return d + '.' + p; - - } - - function toStringsFromArray( array ) { - - const a = []; - - for ( let i = 0, il = array.length; i < il; i ++ ) { - - a.push( toStringsFromNumber( array[ i ] ) ); - - } - - return a.join( ',' ); - - } - - skin.updateMatrixWorld( true ); - - const bones = skin.skeleton.bones; - const bones2 = getBindBones( skin ); - - const position = new Vector3(); - const quaternion = new Quaternion(); - const quaternion2 = new Quaternion(); - const matrix = new Matrix4(); - - const array = []; - array.push( 'Vocaloid Pose Data file' ); - array.push( '' ); - array.push( ( skin.name !== '' ? skin.name.replace( /\s/g, '_' ) : 'skin' ) + '.osm;' ); - array.push( bones.length + ';' ); - array.push( '' ); - - for ( let i = 0, il = bones.length; i < il; i ++ ) { - - const bone = bones[ i ]; - const bone2 = bones2[ i ]; - - /* - * use the bone matrix saved before solving IK. - * see CCDIKSolver for the detail. - */ - if ( useOriginalBones === true && - bone.userData.ik !== undefined && - bone.userData.ik.originalMatrix !== undefined ) { - - matrix.fromArray( bone.userData.ik.originalMatrix ); - - } else { - - matrix.copy( bone.matrix ); - - } - - position.setFromMatrixPosition( matrix ); - quaternion.setFromRotationMatrix( matrix ); - - const pArray = position.sub( bone2.position ).toArray(); - const qArray = quaternion2.copy( bone2.quaternion ).conjugate().multiply( quaternion ).toArray(); - - // right to left - pArray[ 2 ] = - pArray[ 2 ]; - qArray[ 0 ] = - qArray[ 0 ]; - qArray[ 1 ] = - qArray[ 1 ]; - - array.push( 'Bone' + i + '{' + bone.name ); - array.push( ' ' + toStringsFromArray( pArray ) + ';' ); - array.push( ' ' + toStringsFromArray( qArray ) + ';' ); - array.push( '}' ); - array.push( '' ); - - } - - array.push( '' ); - - const lines = array.join( '\n' ); - - return ( outputShiftJis === true ) ? unicodeToShiftjis( lines ) : lines; - - } - -} - -// Unicode to Shift_JIS table -let u2sTable; - -function unicodeToShiftjis( str ) { - - if ( u2sTable === undefined ) { - - const encoder = new MMDParser.CharsetEncoder(); - const table = encoder.s2uTable; - u2sTable = {}; - - const keys = Object.keys( table ); - - for ( let i = 0, il = keys.length; i < il; i ++ ) { - - let key = keys[ i ]; - - const value = table[ key ]; - key = parseInt( key ); - - u2sTable[ value ] = key; - - } - - } - - const array = []; - - for ( let i = 0, il = str.length; i < il; i ++ ) { - - const code = str.charCodeAt( i ); - - const value = u2sTable[ code ]; - - if ( value === undefined ) { - - throw new Error( 'cannot convert charcode 0x' + code.toString( 16 ) ); - - } else if ( value > 0xff ) { - - array.push( ( value >> 8 ) & 0xff ); - array.push( value & 0xff ); - - } else { - - array.push( value & 0xff ); - - } - - } - - return new Uint8Array( array ); - -} - -function getBindBones( skin ) { - - // any more efficient ways? - const poseSkin = skin.clone(); - poseSkin.pose(); - return poseSkin.skeleton.bones; - -} - -export { MMDExporter }; diff --git a/three/addons/exporters/OBJExporter.js b/three/addons/exporters/OBJExporter.js deleted file mode 100644 index 63a483e..0000000 --- a/three/addons/exporters/OBJExporter.js +++ /dev/null @@ -1,284 +0,0 @@ -import { - Color, - Matrix3, - Vector2, - Vector3 -} from 'three'; - -class OBJExporter { - - parse( object ) { - - let output = ''; - - let indexVertex = 0; - let indexVertexUvs = 0; - let indexNormals = 0; - - const vertex = new Vector3(); - const color = new Color(); - const normal = new Vector3(); - const uv = new Vector2(); - - const face = []; - - function parseMesh( mesh ) { - - let nbVertex = 0; - let nbNormals = 0; - let nbVertexUvs = 0; - - const geometry = mesh.geometry; - - const normalMatrixWorld = new Matrix3(); - - // shortcuts - const vertices = geometry.getAttribute( 'position' ); - const normals = geometry.getAttribute( 'normal' ); - const uvs = geometry.getAttribute( 'uv' ); - const indices = geometry.getIndex(); - - // name of the mesh object - output += 'o ' + mesh.name + '\n'; - - // name of the mesh material - if ( mesh.material && mesh.material.name ) { - - output += 'usemtl ' + mesh.material.name + '\n'; - - } - - // vertices - - if ( vertices !== undefined ) { - - for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) { - - vertex.fromBufferAttribute( vertices, i ); - - // transform the vertex to world space - vertex.applyMatrix4( mesh.matrixWorld ); - - // transform the vertex to export format - output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z + '\n'; - - } - - } - - // uvs - - if ( uvs !== undefined ) { - - for ( let i = 0, l = uvs.count; i < l; i ++, nbVertexUvs ++ ) { - - uv.fromBufferAttribute( uvs, i ); - - // transform the uv to export format - output += 'vt ' + uv.x + ' ' + uv.y + '\n'; - - } - - } - - // normals - - if ( normals !== undefined ) { - - normalMatrixWorld.getNormalMatrix( mesh.matrixWorld ); - - for ( let i = 0, l = normals.count; i < l; i ++, nbNormals ++ ) { - - normal.fromBufferAttribute( normals, i ); - - // transform the normal to world space - normal.applyMatrix3( normalMatrixWorld ).normalize(); - - // transform the normal to export format - output += 'vn ' + normal.x + ' ' + normal.y + ' ' + normal.z + '\n'; - - } - - } - - // faces - - if ( indices !== null ) { - - for ( let i = 0, l = indices.count; i < l; i += 3 ) { - - for ( let m = 0; m < 3; m ++ ) { - - const j = indices.getX( i + m ) + 1; - - face[ m ] = ( indexVertex + j ) + ( normals || uvs ? '/' + ( uvs ? ( indexVertexUvs + j ) : '' ) + ( normals ? '/' + ( indexNormals + j ) : '' ) : '' ); - - } - - // transform the face to export format - output += 'f ' + face.join( ' ' ) + '\n'; - - } - - } else { - - for ( let i = 0, l = vertices.count; i < l; i += 3 ) { - - for ( let m = 0; m < 3; m ++ ) { - - const j = i + m + 1; - - face[ m ] = ( indexVertex + j ) + ( normals || uvs ? '/' + ( uvs ? ( indexVertexUvs + j ) : '' ) + ( normals ? '/' + ( indexNormals + j ) : '' ) : '' ); - - } - - // transform the face to export format - output += 'f ' + face.join( ' ' ) + '\n'; - - } - - } - - // update index - indexVertex += nbVertex; - indexVertexUvs += nbVertexUvs; - indexNormals += nbNormals; - - } - - function parseLine( line ) { - - let nbVertex = 0; - - const geometry = line.geometry; - const type = line.type; - - // shortcuts - const vertices = geometry.getAttribute( 'position' ); - - // name of the line object - output += 'o ' + line.name + '\n'; - - if ( vertices !== undefined ) { - - for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) { - - vertex.fromBufferAttribute( vertices, i ); - - // transform the vertex to world space - vertex.applyMatrix4( line.matrixWorld ); - - // transform the vertex to export format - output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z + '\n'; - - } - - } - - if ( type === 'Line' ) { - - output += 'l '; - - for ( let j = 1, l = vertices.count; j <= l; j ++ ) { - - output += ( indexVertex + j ) + ' '; - - } - - output += '\n'; - - } - - if ( type === 'LineSegments' ) { - - for ( let j = 1, k = j + 1, l = vertices.count; j < l; j += 2, k = j + 1 ) { - - output += 'l ' + ( indexVertex + j ) + ' ' + ( indexVertex + k ) + '\n'; - - } - - } - - // update index - indexVertex += nbVertex; - - } - - function parsePoints( points ) { - - let nbVertex = 0; - - const geometry = points.geometry; - - const vertices = geometry.getAttribute( 'position' ); - const colors = geometry.getAttribute( 'color' ); - - output += 'o ' + points.name + '\n'; - - if ( vertices !== undefined ) { - - for ( let i = 0, l = vertices.count; i < l; i ++, nbVertex ++ ) { - - vertex.fromBufferAttribute( vertices, i ); - vertex.applyMatrix4( points.matrixWorld ); - - output += 'v ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z; - - if ( colors !== undefined ) { - - color.fromBufferAttribute( colors, i ).convertLinearToSRGB(); - - output += ' ' + color.r + ' ' + color.g + ' ' + color.b; - - } - - output += '\n'; - - } - - output += 'p '; - - for ( let j = 1, l = vertices.count; j <= l; j ++ ) { - - output += ( indexVertex + j ) + ' '; - - } - - output += '\n'; - - } - - // update index - indexVertex += nbVertex; - - } - - object.traverse( function ( child ) { - - if ( child.isMesh === true ) { - - parseMesh( child ); - - } - - if ( child.isLine === true ) { - - parseLine( child ); - - } - - if ( child.isPoints === true ) { - - parsePoints( child ); - - } - - } ); - - return output; - - } - -} - -export { OBJExporter }; diff --git a/three/addons/exporters/PLYExporter.js b/three/addons/exporters/PLYExporter.js deleted file mode 100644 index 2e46a8c..0000000 --- a/three/addons/exporters/PLYExporter.js +++ /dev/null @@ -1,528 +0,0 @@ -import { - Matrix3, - Vector3, - Color -} from 'three'; - -/** - * https://github.com/gkjohnson/ply-exporter-js - * - * Usage: - * const exporter = new PLYExporter(); - * - * // second argument is a list of options - * exporter.parse(mesh, data => console.log(data), { binary: true, excludeAttributes: [ 'color' ], littleEndian: true }); - * - * Format Definition: - * http://paulbourke.net/dataformats/ply/ - */ - -class PLYExporter { - - parse( object, onDone, options = {} ) { - - // Iterate over the valid meshes in the object - function traverseMeshes( cb ) { - - object.traverse( function ( child ) { - - if ( child.isMesh === true || child.isPoints ) { - - const mesh = child; - const geometry = mesh.geometry; - - if ( geometry.hasAttribute( 'position' ) === true ) { - - cb( mesh, geometry ); - - } - - } - - } ); - - } - - // Default options - const defaultOptions = { - binary: false, - excludeAttributes: [], // normal, uv, color, index - littleEndian: false - }; - - options = Object.assign( defaultOptions, options ); - - const excludeAttributes = options.excludeAttributes; - let includeIndices = true; - let includeNormals = false; - let includeColors = false; - let includeUVs = false; - - // count the vertices, check which properties are used, - // and cache the BufferGeometry - let vertexCount = 0; - let faceCount = 0; - - object.traverse( function ( child ) { - - if ( child.isMesh === true ) { - - const mesh = child; - const geometry = mesh.geometry; - - const vertices = geometry.getAttribute( 'position' ); - const normals = geometry.getAttribute( 'normal' ); - const uvs = geometry.getAttribute( 'uv' ); - const colors = geometry.getAttribute( 'color' ); - const indices = geometry.getIndex(); - - if ( vertices === undefined ) { - - return; - - } - - vertexCount += vertices.count; - faceCount += indices ? indices.count / 3 : vertices.count / 3; - - if ( normals !== undefined ) includeNormals = true; - - if ( uvs !== undefined ) includeUVs = true; - - if ( colors !== undefined ) includeColors = true; - - } else if ( child.isPoints ) { - - const mesh = child; - const geometry = mesh.geometry; - - const vertices = geometry.getAttribute( 'position' ); - const normals = geometry.getAttribute( 'normal' ); - const colors = geometry.getAttribute( 'color' ); - - vertexCount += vertices.count; - - if ( normals !== undefined ) includeNormals = true; - - if ( colors !== undefined ) includeColors = true; - - includeIndices = false; - - } - - } ); - - const tempColor = new Color(); - includeIndices = includeIndices && excludeAttributes.indexOf( 'index' ) === - 1; - includeNormals = includeNormals && excludeAttributes.indexOf( 'normal' ) === - 1; - includeColors = includeColors && excludeAttributes.indexOf( 'color' ) === - 1; - includeUVs = includeUVs && excludeAttributes.indexOf( 'uv' ) === - 1; - - - if ( includeIndices && faceCount !== Math.floor( faceCount ) ) { - - // point cloud meshes will not have an index array and may not have a - // number of vertices that is divisble by 3 (and therefore representable - // as triangles) - console.error( - - 'PLYExporter: Failed to generate a valid PLY file with triangle indices because the ' + - 'number of indices is not divisible by 3.' - - ); - - return null; - - } - - const indexByteCount = 4; - - let header = - 'ply\n' + - `format ${ options.binary ? ( options.littleEndian ? 'binary_little_endian' : 'binary_big_endian' ) : 'ascii' } 1.0\n` + - `element vertex ${vertexCount}\n` + - - // position - 'property float x\n' + - 'property float y\n' + - 'property float z\n'; - - if ( includeNormals === true ) { - - // normal - header += - 'property float nx\n' + - 'property float ny\n' + - 'property float nz\n'; - - } - - if ( includeUVs === true ) { - - // uvs - header += - 'property float s\n' + - 'property float t\n'; - - } - - if ( includeColors === true ) { - - // colors - header += - 'property uchar red\n' + - 'property uchar green\n' + - 'property uchar blue\n'; - - } - - if ( includeIndices === true ) { - - // faces - header += - `element face ${faceCount}\n` + - 'property list uchar int vertex_index\n'; - - } - - header += 'end_header\n'; - - - // Generate attribute data - const vertex = new Vector3(); - const normalMatrixWorld = new Matrix3(); - let result = null; - - if ( options.binary === true ) { - - // Binary File Generation - const headerBin = new TextEncoder().encode( header ); - - // 3 position values at 4 bytes - // 3 normal values at 4 bytes - // 3 color channels with 1 byte - // 2 uv values at 4 bytes - const vertexListLength = vertexCount * ( 4 * 3 + ( includeNormals ? 4 * 3 : 0 ) + ( includeColors ? 3 : 0 ) + ( includeUVs ? 4 * 2 : 0 ) ); - - // 1 byte shape desciptor - // 3 vertex indices at ${indexByteCount} bytes - const faceListLength = includeIndices ? faceCount * ( indexByteCount * 3 + 1 ) : 0; - const output = new DataView( new ArrayBuffer( headerBin.length + vertexListLength + faceListLength ) ); - new Uint8Array( output.buffer ).set( headerBin, 0 ); - - - let vOffset = headerBin.length; - let fOffset = headerBin.length + vertexListLength; - let writtenVertices = 0; - traverseMeshes( function ( mesh, geometry ) { - - const vertices = geometry.getAttribute( 'position' ); - const normals = geometry.getAttribute( 'normal' ); - const uvs = geometry.getAttribute( 'uv' ); - const colors = geometry.getAttribute( 'color' ); - const indices = geometry.getIndex(); - - normalMatrixWorld.getNormalMatrix( mesh.matrixWorld ); - - for ( let i = 0, l = vertices.count; i < l; i ++ ) { - - vertex.fromBufferAttribute( vertices, i ); - - vertex.applyMatrix4( mesh.matrixWorld ); - - - // Position information - output.setFloat32( vOffset, vertex.x, options.littleEndian ); - vOffset += 4; - - output.setFloat32( vOffset, vertex.y, options.littleEndian ); - vOffset += 4; - - output.setFloat32( vOffset, vertex.z, options.littleEndian ); - vOffset += 4; - - // Normal information - if ( includeNormals === true ) { - - if ( normals != null ) { - - vertex.fromBufferAttribute( normals, i ); - - vertex.applyMatrix3( normalMatrixWorld ).normalize(); - - output.setFloat32( vOffset, vertex.x, options.littleEndian ); - vOffset += 4; - - output.setFloat32( vOffset, vertex.y, options.littleEndian ); - vOffset += 4; - - output.setFloat32( vOffset, vertex.z, options.littleEndian ); - vOffset += 4; - - } else { - - output.setFloat32( vOffset, 0, options.littleEndian ); - vOffset += 4; - - output.setFloat32( vOffset, 0, options.littleEndian ); - vOffset += 4; - - output.setFloat32( vOffset, 0, options.littleEndian ); - vOffset += 4; - - } - - } - - // UV information - if ( includeUVs === true ) { - - if ( uvs != null ) { - - output.setFloat32( vOffset, uvs.getX( i ), options.littleEndian ); - vOffset += 4; - - output.setFloat32( vOffset, uvs.getY( i ), options.littleEndian ); - vOffset += 4; - - } else { - - output.setFloat32( vOffset, 0, options.littleEndian ); - vOffset += 4; - - output.setFloat32( vOffset, 0, options.littleEndian ); - vOffset += 4; - - } - - } - - // Color information - if ( includeColors === true ) { - - if ( colors != null ) { - - tempColor - .fromBufferAttribute( colors, i ) - .convertLinearToSRGB(); - - output.setUint8( vOffset, Math.floor( tempColor.r * 255 ) ); - vOffset += 1; - - output.setUint8( vOffset, Math.floor( tempColor.g * 255 ) ); - vOffset += 1; - - output.setUint8( vOffset, Math.floor( tempColor.b * 255 ) ); - vOffset += 1; - - } else { - - output.setUint8( vOffset, 255 ); - vOffset += 1; - - output.setUint8( vOffset, 255 ); - vOffset += 1; - - output.setUint8( vOffset, 255 ); - vOffset += 1; - - } - - } - - } - - if ( includeIndices === true ) { - - // Create the face list - - if ( indices !== null ) { - - for ( let i = 0, l = indices.count; i < l; i += 3 ) { - - output.setUint8( fOffset, 3 ); - fOffset += 1; - - output.setUint32( fOffset, indices.getX( i + 0 ) + writtenVertices, options.littleEndian ); - fOffset += indexByteCount; - - output.setUint32( fOffset, indices.getX( i + 1 ) + writtenVertices, options.littleEndian ); - fOffset += indexByteCount; - - output.setUint32( fOffset, indices.getX( i + 2 ) + writtenVertices, options.littleEndian ); - fOffset += indexByteCount; - - } - - } else { - - for ( let i = 0, l = vertices.count; i < l; i += 3 ) { - - output.setUint8( fOffset, 3 ); - fOffset += 1; - - output.setUint32( fOffset, writtenVertices + i, options.littleEndian ); - fOffset += indexByteCount; - - output.setUint32( fOffset, writtenVertices + i + 1, options.littleEndian ); - fOffset += indexByteCount; - - output.setUint32( fOffset, writtenVertices + i + 2, options.littleEndian ); - fOffset += indexByteCount; - - } - - } - - } - - - // Save the amount of verts we've already written so we can offset - // the face index on the next mesh - writtenVertices += vertices.count; - - } ); - - result = output.buffer; - - } else { - - // Ascii File Generation - // count the number of vertices - let writtenVertices = 0; - let vertexList = ''; - let faceList = ''; - - traverseMeshes( function ( mesh, geometry ) { - - const vertices = geometry.getAttribute( 'position' ); - const normals = geometry.getAttribute( 'normal' ); - const uvs = geometry.getAttribute( 'uv' ); - const colors = geometry.getAttribute( 'color' ); - const indices = geometry.getIndex(); - - normalMatrixWorld.getNormalMatrix( mesh.matrixWorld ); - - // form each line - for ( let i = 0, l = vertices.count; i < l; i ++ ) { - - vertex.fromBufferAttribute( vertices, i ); - - vertex.applyMatrix4( mesh.matrixWorld ); - - - // Position information - let line = - vertex.x + ' ' + - vertex.y + ' ' + - vertex.z; - - // Normal information - if ( includeNormals === true ) { - - if ( normals != null ) { - - vertex.fromBufferAttribute( normals, i ); - - vertex.applyMatrix3( normalMatrixWorld ).normalize(); - - line += ' ' + - vertex.x + ' ' + - vertex.y + ' ' + - vertex.z; - - } else { - - line += ' 0 0 0'; - - } - - } - - // UV information - if ( includeUVs === true ) { - - if ( uvs != null ) { - - line += ' ' + - uvs.getX( i ) + ' ' + - uvs.getY( i ); - - } else { - - line += ' 0 0'; - - } - - } - - // Color information - if ( includeColors === true ) { - - if ( colors != null ) { - - tempColor - .fromBufferAttribute( colors, i ) - .convertLinearToSRGB(); - - line += ' ' + - Math.floor( tempColor.r * 255 ) + ' ' + - Math.floor( tempColor.g * 255 ) + ' ' + - Math.floor( tempColor.b * 255 ); - - } else { - - line += ' 255 255 255'; - - } - - } - - vertexList += line + '\n'; - - } - - // Create the face list - if ( includeIndices === true ) { - - if ( indices !== null ) { - - for ( let i = 0, l = indices.count; i < l; i += 3 ) { - - faceList += `3 ${ indices.getX( i + 0 ) + writtenVertices }`; - faceList += ` ${ indices.getX( i + 1 ) + writtenVertices }`; - faceList += ` ${ indices.getX( i + 2 ) + writtenVertices }\n`; - - } - - } else { - - for ( let i = 0, l = vertices.count; i < l; i += 3 ) { - - faceList += `3 ${ writtenVertices + i } ${ writtenVertices + i + 1 } ${ writtenVertices + i + 2 }\n`; - - } - - } - - faceCount += indices ? indices.count / 3 : vertices.count / 3; - - } - - writtenVertices += vertices.count; - - } ); - - result = `${ header }${vertexList}${ includeIndices ? `${faceList}\n` : '\n' }`; - - } - - if ( typeof onDone === 'function' ) requestAnimationFrame( () => onDone( result ) ); - - return result; - - } - -} - -export { PLYExporter }; diff --git a/three/addons/exporters/STLExporter.js b/three/addons/exporters/STLExporter.js deleted file mode 100644 index a97b408..0000000 --- a/three/addons/exporters/STLExporter.js +++ /dev/null @@ -1,199 +0,0 @@ -import { Vector3 } from 'three'; - -/** - * Usage: - * const exporter = new STLExporter(); - * - * // second argument is a list of options - * const data = exporter.parse( mesh, { binary: true } ); - * - */ - -class STLExporter { - - parse( scene, options = {} ) { - - options = Object.assign( { - binary: false - }, options ); - - const binary = options.binary; - - // - - const objects = []; - let triangles = 0; - - scene.traverse( function ( object ) { - - if ( object.isMesh ) { - - const geometry = object.geometry; - - const index = geometry.index; - const positionAttribute = geometry.getAttribute( 'position' ); - - triangles += ( index !== null ) ? ( index.count / 3 ) : ( positionAttribute.count / 3 ); - - objects.push( { - object3d: object, - geometry: geometry - } ); - - } - - } ); - - let output; - let offset = 80; // skip header - - if ( binary === true ) { - - const bufferLength = triangles * 2 + triangles * 3 * 4 * 4 + 80 + 4; - const arrayBuffer = new ArrayBuffer( bufferLength ); - output = new DataView( arrayBuffer ); - output.setUint32( offset, triangles, true ); offset += 4; - - } else { - - output = ''; - output += 'solid exported\n'; - - } - - const vA = new Vector3(); - const vB = new Vector3(); - const vC = new Vector3(); - const cb = new Vector3(); - const ab = new Vector3(); - const normal = new Vector3(); - - for ( let i = 0, il = objects.length; i < il; i ++ ) { - - const object = objects[ i ].object3d; - const geometry = objects[ i ].geometry; - - const index = geometry.index; - const positionAttribute = geometry.getAttribute( 'position' ); - - if ( index !== null ) { - - // indexed geometry - - for ( let j = 0; j < index.count; j += 3 ) { - - const a = index.getX( j + 0 ); - const b = index.getX( j + 1 ); - const c = index.getX( j + 2 ); - - writeFace( a, b, c, positionAttribute, object ); - - } - - } else { - - // non-indexed geometry - - for ( let j = 0; j < positionAttribute.count; j += 3 ) { - - const a = j + 0; - const b = j + 1; - const c = j + 2; - - writeFace( a, b, c, positionAttribute, object ); - - } - - } - - } - - if ( binary === false ) { - - output += 'endsolid exported\n'; - - } - - return output; - - function writeFace( a, b, c, positionAttribute, object ) { - - vA.fromBufferAttribute( positionAttribute, a ); - vB.fromBufferAttribute( positionAttribute, b ); - vC.fromBufferAttribute( positionAttribute, c ); - - if ( object.isSkinnedMesh === true ) { - - object.applyBoneTransform( a, vA ); - object.applyBoneTransform( b, vB ); - object.applyBoneTransform( c, vC ); - - } - - vA.applyMatrix4( object.matrixWorld ); - vB.applyMatrix4( object.matrixWorld ); - vC.applyMatrix4( object.matrixWorld ); - - writeNormal( vA, vB, vC ); - - writeVertex( vA ); - writeVertex( vB ); - writeVertex( vC ); - - if ( binary === true ) { - - output.setUint16( offset, 0, true ); offset += 2; - - } else { - - output += '\t\tendloop\n'; - output += '\tendfacet\n'; - - } - - } - - function writeNormal( vA, vB, vC ) { - - cb.subVectors( vC, vB ); - ab.subVectors( vA, vB ); - cb.cross( ab ).normalize(); - - normal.copy( cb ).normalize(); - - if ( binary === true ) { - - output.setFloat32( offset, normal.x, true ); offset += 4; - output.setFloat32( offset, normal.y, true ); offset += 4; - output.setFloat32( offset, normal.z, true ); offset += 4; - - } else { - - output += '\tfacet normal ' + normal.x + ' ' + normal.y + ' ' + normal.z + '\n'; - output += '\t\touter loop\n'; - - } - - } - - function writeVertex( vertex ) { - - if ( binary === true ) { - - output.setFloat32( offset, vertex.x, true ); offset += 4; - output.setFloat32( offset, vertex.y, true ); offset += 4; - output.setFloat32( offset, vertex.z, true ); offset += 4; - - } else { - - output += '\t\t\tvertex ' + vertex.x + ' ' + vertex.y + ' ' + vertex.z + '\n'; - - } - - } - - } - -} - -export { STLExporter }; diff --git a/three/addons/exporters/USDZExporter.js b/three/addons/exporters/USDZExporter.js deleted file mode 100644 index 35c46a7..0000000 --- a/three/addons/exporters/USDZExporter.js +++ /dev/null @@ -1,719 +0,0 @@ -import { - NoColorSpace, - DoubleSide, -} from 'three'; - -import { - strToU8, - zipSync, -} from '../libs/fflate.module.js'; - -import { decompress } from './../utils/TextureUtils.js'; - -class USDZExporter { - - async parse( scene, options = {} ) { - - options = Object.assign( { - ar: { - anchoring: { type: 'plane' }, - planeAnchoring: { alignment: 'horizontal' } - }, - quickLookCompatible: false, - }, options ); - - const files = {}; - const modelFileName = 'model.usda'; - - // model file should be first in USDZ archive so we init it here - files[ modelFileName ] = null; - - let output = buildHeader(); - - output += buildSceneStart( options ); - - const materials = {}; - const textures = {}; - - scene.traverseVisible( ( object ) => { - - if ( object.isMesh ) { - - const geometry = object.geometry; - const material = object.material; - - if ( material.isMeshStandardMaterial ) { - - const geometryFileName = 'geometries/Geometry_' + geometry.id + '.usda'; - - if ( ! ( geometryFileName in files ) ) { - - const meshObject = buildMeshObject( geometry ); - files[ geometryFileName ] = buildUSDFileAsString( meshObject ); - - } - - if ( ! ( material.uuid in materials ) ) { - - materials[ material.uuid ] = material; - - } - - output += buildXform( object, geometry, material ); - - } else { - - console.warn( 'THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)', object ); - - } - - } else if ( object.isCamera ) { - - output += buildCamera( object ); - - } - - } ); - - - output += buildSceneEnd(); - - output += buildMaterials( materials, textures, options.quickLookCompatible ); - - files[ modelFileName ] = strToU8( output ); - output = null; - - for ( const id in textures ) { - - let texture = textures[ id ]; - - if ( texture.isCompressedTexture === true ) { - - texture = decompress( texture ); - - } - - const canvas = imageToCanvas( texture.image, texture.flipY ); - const blob = await new Promise( resolve => canvas.toBlob( resolve, 'image/png', 1 ) ); - - files[ `textures/Texture_${ id }.png` ] = new Uint8Array( await blob.arrayBuffer() ); - - } - - // 64 byte alignment - // https://github.com/101arrowz/fflate/issues/39#issuecomment-777263109 - - let offset = 0; - - for ( const filename in files ) { - - const file = files[ filename ]; - const headerSize = 34 + filename.length; - - offset += headerSize; - - const offsetMod64 = offset & 63; - - if ( offsetMod64 !== 4 ) { - - const padLength = 64 - offsetMod64; - const padding = new Uint8Array( padLength ); - - files[ filename ] = [ file, { extra: { 12345: padding } } ]; - - } - - offset = file.length; - - } - - return zipSync( files, { level: 0 } ); - - } - -} - -function imageToCanvas( image, flipY ) { - - if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || - ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || - ( typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas ) || - ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) { - - const scale = 1024 / Math.max( image.width, image.height ); - - const canvas = document.createElement( 'canvas' ); - canvas.width = image.width * Math.min( 1, scale ); - canvas.height = image.height * Math.min( 1, scale ); - - const context = canvas.getContext( '2d' ); - - // TODO: We should be able to do this in the UsdTransform2d? - - if ( flipY === true ) { - - context.translate( 0, canvas.height ); - context.scale( 1, - 1 ); - - } - - context.drawImage( image, 0, 0, canvas.width, canvas.height ); - - return canvas; - - } else { - - throw new Error( 'THREE.USDZExporter: No valid image data found. Unable to process texture.' ); - - } - -} - -// - -const PRECISION = 7; - -function buildHeader() { - - return `#usda 1.0 -( - customLayerData = { - string creator = "Three.js USDZExporter" - } - defaultPrim = "Root" - metersPerUnit = 1 - upAxis = "Y" -) - -`; - -} - -function buildSceneStart( options ) { - - return `def Xform "Root" -{ - def Scope "Scenes" ( - kind = "sceneLibrary" - ) - { - def Xform "Scene" ( - customData = { - bool preliminary_collidesWithEnvironment = 0 - string sceneName = "Scene" - } - sceneName = "Scene" - ) - { - token preliminary:anchoring:type = "${options.ar.anchoring.type}" - token preliminary:planeAnchoring:alignment = "${options.ar.planeAnchoring.alignment}" - -`; - -} - -function buildSceneEnd() { - - return ` - } - } -} - -`; - -} - -function buildUSDFileAsString( dataToInsert ) { - - let output = buildHeader(); - output += dataToInsert; - return strToU8( output ); - -} - -// Xform - -function buildXform( object, geometry, material ) { - - const name = 'Object_' + object.id; - const transform = buildMatrix( object.matrixWorld ); - - if ( object.matrixWorld.determinant() < 0 ) { - - console.warn( 'THREE.USDZExporter: USDZ does not support negative scales', object ); - - } - - return `def Xform "${ name }" ( - prepend references = @./geometries/Geometry_${ geometry.id }.usda@ - prepend apiSchemas = ["MaterialBindingAPI"] -) -{ - matrix4d xformOp:transform = ${ transform } - uniform token[] xformOpOrder = ["xformOp:transform"] - - rel material:binding = -} - -`; - -} - -function buildMatrix( matrix ) { - - const array = matrix.elements; - - return `( ${ buildMatrixRow( array, 0 ) }, ${ buildMatrixRow( array, 4 ) }, ${ buildMatrixRow( array, 8 ) }, ${ buildMatrixRow( array, 12 ) } )`; - -} - -function buildMatrixRow( array, offset ) { - - return `(${ array[ offset + 0 ] }, ${ array[ offset + 1 ] }, ${ array[ offset + 2 ] }, ${ array[ offset + 3 ] })`; - -} - -// Mesh - -function buildMeshObject( geometry ) { - - const mesh = buildMesh( geometry ); - return ` -def "Geometry" -{ -${mesh} -} -`; - -} - -function buildMesh( geometry ) { - - const name = 'Geometry'; - const attributes = geometry.attributes; - const count = attributes.position.count; - - return ` - def Mesh "${ name }" - { - int[] faceVertexCounts = [${ buildMeshVertexCount( geometry ) }] - int[] faceVertexIndices = [${ buildMeshVertexIndices( geometry ) }] - normal3f[] normals = [${ buildVector3Array( attributes.normal, count )}] ( - interpolation = "vertex" - ) - point3f[] points = [${ buildVector3Array( attributes.position, count )}] -${ buildPrimvars( attributes ) } - uniform token subdivisionScheme = "none" - } -`; - -} - -function buildMeshVertexCount( geometry ) { - - const count = geometry.index !== null ? geometry.index.count : geometry.attributes.position.count; - - return Array( count / 3 ).fill( 3 ).join( ', ' ); - -} - -function buildMeshVertexIndices( geometry ) { - - const index = geometry.index; - const array = []; - - if ( index !== null ) { - - for ( let i = 0; i < index.count; i ++ ) { - - array.push( index.getX( i ) ); - - } - - } else { - - const length = geometry.attributes.position.count; - - for ( let i = 0; i < length; i ++ ) { - - array.push( i ); - - } - - } - - return array.join( ', ' ); - -} - -function buildVector3Array( attribute, count ) { - - if ( attribute === undefined ) { - - console.warn( 'USDZExporter: Normals missing.' ); - return Array( count ).fill( '(0, 0, 0)' ).join( ', ' ); - - } - - const array = []; - - for ( let i = 0; i < attribute.count; i ++ ) { - - const x = attribute.getX( i ); - const y = attribute.getY( i ); - const z = attribute.getZ( i ); - - array.push( `(${ x.toPrecision( PRECISION ) }, ${ y.toPrecision( PRECISION ) }, ${ z.toPrecision( PRECISION ) })` ); - - } - - return array.join( ', ' ); - -} - -function buildVector2Array( attribute ) { - - const array = []; - - for ( let i = 0; i < attribute.count; i ++ ) { - - const x = attribute.getX( i ); - const y = attribute.getY( i ); - - array.push( `(${ x.toPrecision( PRECISION ) }, ${ 1 - y.toPrecision( PRECISION ) })` ); - - } - - return array.join( ', ' ); - -} - -function buildPrimvars( attributes ) { - - let string = ''; - - for ( let i = 0; i < 4; i ++ ) { - - const id = ( i > 0 ? i : '' ); - const attribute = attributes[ 'uv' + id ]; - - if ( attribute !== undefined ) { - - string += ` - texCoord2f[] primvars:st${ id } = [${ buildVector2Array( attribute )}] ( - interpolation = "vertex" - )`; - - } - - } - - return string; - -} - -// Materials - -function buildMaterials( materials, textures, quickLookCompatible = false ) { - - const array = []; - - for ( const uuid in materials ) { - - const material = materials[ uuid ]; - - array.push( buildMaterial( material, textures, quickLookCompatible ) ); - - } - - return `def "Materials" -{ -${ array.join( '' ) } -} - -`; - -} - -function buildMaterial( material, textures, quickLookCompatible = false ) { - - // https://graphics.pixar.com/usd/docs/UsdPreviewSurface-Proposal.html - - const pad = ' '; - const inputs = []; - const samplers = []; - - function buildTexture( texture, mapType, color ) { - - const id = texture.source.id + '_' + texture.flipY; - - textures[ id ] = texture; - - const uv = texture.channel > 0 ? 'st' + texture.channel : 'st'; - - const WRAPPINGS = { - 1000: 'repeat', // RepeatWrapping - 1001: 'clamp', // ClampToEdgeWrapping - 1002: 'mirror' // MirroredRepeatWrapping - }; - - const repeat = texture.repeat.clone(); - const offset = texture.offset.clone(); - const rotation = texture.rotation; - - // rotation is around the wrong point. after rotation we need to shift offset again so that we're rotating around the right spot - const xRotationOffset = Math.sin( rotation ); - const yRotationOffset = Math.cos( rotation ); - - // texture coordinates start in the opposite corner, need to correct - offset.y = 1 - offset.y - repeat.y; - - // turns out QuickLook is buggy and interprets texture repeat inverted/applies operations in a different order. - // Apple Feedback: FB10036297 and FB11442287 - if ( quickLookCompatible ) { - - // This is NOT correct yet in QuickLook, but comes close for a range of models. - // It becomes more incorrect the bigger the offset is - - offset.x = offset.x / repeat.x; - offset.y = offset.y / repeat.y; - - offset.x += xRotationOffset / repeat.x; - offset.y += yRotationOffset - 1; - - } else { - - // results match glTF results exactly. verified correct in usdview. - offset.x += xRotationOffset * repeat.x; - offset.y += ( 1 - yRotationOffset ) * repeat.y; - - } - - return ` - def Shader "PrimvarReader_${ mapType }" - { - uniform token info:id = "UsdPrimvarReader_float2" - float2 inputs:fallback = (0.0, 0.0) - token inputs:varname = "${ uv }" - float2 outputs:result - } - - def Shader "Transform2d_${ mapType }" - { - uniform token info:id = "UsdTransform2d" - token inputs:in.connect = - float inputs:rotation = ${ ( rotation * ( 180 / Math.PI ) ).toFixed( PRECISION ) } - float2 inputs:scale = ${ buildVector2( repeat ) } - float2 inputs:translation = ${ buildVector2( offset ) } - float2 outputs:result - } - - def Shader "Texture_${ texture.id }_${ mapType }" - { - uniform token info:id = "UsdUVTexture" - asset inputs:file = @textures/Texture_${ id }.png@ - float2 inputs:st.connect = - ${ color !== undefined ? 'float4 inputs:scale = ' + buildColor4( color ) : '' } - token inputs:sourceColorSpace = "${ texture.colorSpace === NoColorSpace ? 'raw' : 'sRGB' }" - token inputs:wrapS = "${ WRAPPINGS[ texture.wrapS ] }" - token inputs:wrapT = "${ WRAPPINGS[ texture.wrapT ] }" - float outputs:r - float outputs:g - float outputs:b - float3 outputs:rgb - ${ material.transparent || material.alphaTest > 0.0 ? 'float outputs:a' : '' } - }`; - - } - - - if ( material.side === DoubleSide ) { - - console.warn( 'THREE.USDZExporter: USDZ does not support double sided materials', material ); - - } - - if ( material.map !== null ) { - - inputs.push( `${ pad }color3f inputs:diffuseColor.connect = ` ); - - if ( material.transparent ) { - - inputs.push( `${ pad }float inputs:opacity.connect = ` ); - - } else if ( material.alphaTest > 0.0 ) { - - inputs.push( `${ pad }float inputs:opacity.connect = ` ); - inputs.push( `${ pad }float inputs:opacityThreshold = ${material.alphaTest}` ); - - } - - samplers.push( buildTexture( material.map, 'diffuse', material.color ) ); - - } else { - - inputs.push( `${ pad }color3f inputs:diffuseColor = ${ buildColor( material.color ) }` ); - - } - - if ( material.emissiveMap !== null ) { - - inputs.push( `${ pad }color3f inputs:emissiveColor.connect = ` ); - - samplers.push( buildTexture( material.emissiveMap, 'emissive' ) ); - - } else if ( material.emissive.getHex() > 0 ) { - - inputs.push( `${ pad }color3f inputs:emissiveColor = ${ buildColor( material.emissive ) }` ); - - } - - if ( material.normalMap !== null ) { - - inputs.push( `${ pad }normal3f inputs:normal.connect = ` ); - - samplers.push( buildTexture( material.normalMap, 'normal' ) ); - - } - - if ( material.aoMap !== null ) { - - inputs.push( `${ pad }float inputs:occlusion.connect = ` ); - - samplers.push( buildTexture( material.aoMap, 'occlusion' ) ); - - } - - if ( material.roughnessMap !== null && material.roughness === 1 ) { - - inputs.push( `${ pad }float inputs:roughness.connect = ` ); - - samplers.push( buildTexture( material.roughnessMap, 'roughness' ) ); - - } else { - - inputs.push( `${ pad }float inputs:roughness = ${ material.roughness }` ); - - } - - if ( material.metalnessMap !== null && material.metalness === 1 ) { - - inputs.push( `${ pad }float inputs:metallic.connect = ` ); - - samplers.push( buildTexture( material.metalnessMap, 'metallic' ) ); - - } else { - - inputs.push( `${ pad }float inputs:metallic = ${ material.metalness }` ); - - } - - if ( material.alphaMap !== null ) { - - inputs.push( `${pad}float inputs:opacity.connect = ` ); - inputs.push( `${pad}float inputs:opacityThreshold = 0.0001` ); - - samplers.push( buildTexture( material.alphaMap, 'opacity' ) ); - - } else { - - inputs.push( `${pad}float inputs:opacity = ${material.opacity}` ); - - } - - if ( material.isMeshPhysicalMaterial ) { - - inputs.push( `${ pad }float inputs:clearcoat = ${ material.clearcoat }` ); - inputs.push( `${ pad }float inputs:clearcoatRoughness = ${ material.clearcoatRoughness }` ); - inputs.push( `${ pad }float inputs:ior = ${ material.ior }` ); - - } - - return ` - def Material "Material_${ material.id }" - { - def Shader "PreviewSurface" - { - uniform token info:id = "UsdPreviewSurface" -${ inputs.join( '\n' ) } - int inputs:useSpecularWorkflow = 0 - token outputs:surface - } - - token outputs:surface.connect = - -${ samplers.join( '\n' ) } - - } -`; - -} - -function buildColor( color ) { - - return `(${ color.r }, ${ color.g }, ${ color.b })`; - -} - -function buildColor4( color ) { - - return `(${ color.r }, ${ color.g }, ${ color.b }, 1.0)`; - -} - -function buildVector2( vector ) { - - return `(${ vector.x }, ${ vector.y })`; - -} - - -function buildCamera( camera ) { - - const name = camera.name ? camera.name : 'Camera_' + camera.id; - - const transform = buildMatrix( camera.matrixWorld ); - - if ( camera.matrixWorld.determinant() < 0 ) { - - console.warn( 'THREE.USDZExporter: USDZ does not support negative scales', camera ); - - } - - if ( camera.isOrthographicCamera ) { - - return `def Camera "${name}" - { - matrix4d xformOp:transform = ${ transform } - uniform token[] xformOpOrder = ["xformOp:transform"] - - float2 clippingRange = (${ camera.near.toPrecision( PRECISION ) }, ${ camera.far.toPrecision( PRECISION ) }) - float horizontalAperture = ${ ( ( Math.abs( camera.left ) + Math.abs( camera.right ) ) * 10 ).toPrecision( PRECISION ) } - float verticalAperture = ${ ( ( Math.abs( camera.top ) + Math.abs( camera.bottom ) ) * 10 ).toPrecision( PRECISION ) } - token projection = "orthographic" - } - - `; - - } else { - - return `def Camera "${name}" - { - matrix4d xformOp:transform = ${ transform } - uniform token[] xformOpOrder = ["xformOp:transform"] - - float2 clippingRange = (${ camera.near.toPrecision( PRECISION ) }, ${ camera.far.toPrecision( PRECISION ) }) - float focalLength = ${ camera.getFocalLength().toPrecision( PRECISION ) } - float focusDistance = ${ camera.focus.toPrecision( PRECISION ) } - float horizontalAperture = ${ camera.getFilmWidth().toPrecision( PRECISION ) } - token projection = "perspective" - float verticalAperture = ${ camera.getFilmHeight().toPrecision( PRECISION ) } - } - - `; - - } - -} - -export { USDZExporter }; diff --git a/three/addons/geometries/BoxLineGeometry.js b/three/addons/geometries/BoxLineGeometry.js deleted file mode 100644 index 8f05833..0000000 --- a/three/addons/geometries/BoxLineGeometry.js +++ /dev/null @@ -1,69 +0,0 @@ -import { - BufferGeometry, - Float32BufferAttribute -} from 'three'; - -class BoxLineGeometry extends BufferGeometry { - - constructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) { - - super(); - - widthSegments = Math.floor( widthSegments ); - heightSegments = Math.floor( heightSegments ); - depthSegments = Math.floor( depthSegments ); - - const widthHalf = width / 2; - const heightHalf = height / 2; - const depthHalf = depth / 2; - - const segmentWidth = width / widthSegments; - const segmentHeight = height / heightSegments; - const segmentDepth = depth / depthSegments; - - const vertices = []; - - let x = - widthHalf; - let y = - heightHalf; - let z = - depthHalf; - - for ( let i = 0; i <= widthSegments; i ++ ) { - - vertices.push( x, - heightHalf, - depthHalf, x, heightHalf, - depthHalf ); - vertices.push( x, heightHalf, - depthHalf, x, heightHalf, depthHalf ); - vertices.push( x, heightHalf, depthHalf, x, - heightHalf, depthHalf ); - vertices.push( x, - heightHalf, depthHalf, x, - heightHalf, - depthHalf ); - - x += segmentWidth; - - } - - for ( let i = 0; i <= heightSegments; i ++ ) { - - vertices.push( - widthHalf, y, - depthHalf, widthHalf, y, - depthHalf ); - vertices.push( widthHalf, y, - depthHalf, widthHalf, y, depthHalf ); - vertices.push( widthHalf, y, depthHalf, - widthHalf, y, depthHalf ); - vertices.push( - widthHalf, y, depthHalf, - widthHalf, y, - depthHalf ); - - y += segmentHeight; - - } - - for ( let i = 0; i <= depthSegments; i ++ ) { - - vertices.push( - widthHalf, - heightHalf, z, - widthHalf, heightHalf, z ); - vertices.push( - widthHalf, heightHalf, z, widthHalf, heightHalf, z ); - vertices.push( widthHalf, heightHalf, z, widthHalf, - heightHalf, z ); - vertices.push( widthHalf, - heightHalf, z, - widthHalf, - heightHalf, z ); - - z += segmentDepth; - - } - - this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - - } - -} - -export { BoxLineGeometry }; diff --git a/three/addons/geometries/ConvexGeometry.js b/three/addons/geometries/ConvexGeometry.js deleted file mode 100644 index 3aa65c5..0000000 --- a/three/addons/geometries/ConvexGeometry.js +++ /dev/null @@ -1,53 +0,0 @@ -import { - BufferGeometry, - Float32BufferAttribute -} from 'three'; -import { ConvexHull } from '../math/ConvexHull.js'; - -class ConvexGeometry extends BufferGeometry { - - constructor( points = [] ) { - - super(); - - // buffers - - const vertices = []; - const normals = []; - - const convexHull = new ConvexHull().setFromPoints( points ); - - // generate vertices and normals - - const faces = convexHull.faces; - - for ( let i = 0; i < faces.length; i ++ ) { - - const face = faces[ i ]; - let edge = face.edge; - - // we move along a doubly-connected edge list to access all face points (see HalfEdge docs) - - do { - - const point = edge.head().point; - - vertices.push( point.x, point.y, point.z ); - normals.push( face.normal.x, face.normal.y, face.normal.z ); - - edge = edge.next; - - } while ( edge !== face.edge ); - - } - - // build geometry - - this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - - } - -} - -export { ConvexGeometry }; diff --git a/three/addons/geometries/DecalGeometry.js b/three/addons/geometries/DecalGeometry.js deleted file mode 100644 index 5e712f2..0000000 --- a/three/addons/geometries/DecalGeometry.js +++ /dev/null @@ -1,356 +0,0 @@ -import { - BufferGeometry, - Float32BufferAttribute, - Matrix4, - Vector3 -} from 'three'; - -/** - * You can use this geometry to create a decal mesh, that serves different kinds of purposes. - * e.g. adding unique details to models, performing dynamic visual environmental changes or covering seams. - * - * Constructor parameter: - * - * mesh — Any mesh object - * position — Position of the decal projector - * orientation — Orientation of the decal projector - * size — Size of the decal projector - * - * reference: http://blog.wolfire.com/2009/06/how-to-project-decals/ - * - */ - -class DecalGeometry extends BufferGeometry { - - constructor( mesh, position, orientation, size ) { - - super(); - - // buffers - - const vertices = []; - const normals = []; - const uvs = []; - - // helpers - - const plane = new Vector3(); - - // this matrix represents the transformation of the decal projector - - const projectorMatrix = new Matrix4(); - projectorMatrix.makeRotationFromEuler( orientation ); - projectorMatrix.setPosition( position ); - - const projectorMatrixInverse = new Matrix4(); - projectorMatrixInverse.copy( projectorMatrix ).invert(); - - // generate buffers - - generate(); - - // build geometry - - this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - function generate() { - - let decalVertices = []; - - const vertex = new Vector3(); - const normal = new Vector3(); - - // handle different geometry types - - const geometry = mesh.geometry; - - const positionAttribute = geometry.attributes.position; - const normalAttribute = geometry.attributes.normal; - - // first, create an array of 'DecalVertex' objects - // three consecutive 'DecalVertex' objects represent a single face - // - // this data structure will be later used to perform the clipping - - if ( geometry.index !== null ) { - - // indexed BufferGeometry - - const index = geometry.index; - - for ( let i = 0; i < index.count; i ++ ) { - - vertex.fromBufferAttribute( positionAttribute, index.getX( i ) ); - normal.fromBufferAttribute( normalAttribute, index.getX( i ) ); - - pushDecalVertex( decalVertices, vertex, normal ); - - } - - } else { - - // non-indexed BufferGeometry - - for ( let i = 0; i < positionAttribute.count; i ++ ) { - - vertex.fromBufferAttribute( positionAttribute, i ); - normal.fromBufferAttribute( normalAttribute, i ); - - pushDecalVertex( decalVertices, vertex, normal ); - - } - - } - - // second, clip the geometry so that it doesn't extend out from the projector - - decalVertices = clipGeometry( decalVertices, plane.set( 1, 0, 0 ) ); - decalVertices = clipGeometry( decalVertices, plane.set( - 1, 0, 0 ) ); - decalVertices = clipGeometry( decalVertices, plane.set( 0, 1, 0 ) ); - decalVertices = clipGeometry( decalVertices, plane.set( 0, - 1, 0 ) ); - decalVertices = clipGeometry( decalVertices, plane.set( 0, 0, 1 ) ); - decalVertices = clipGeometry( decalVertices, plane.set( 0, 0, - 1 ) ); - - // third, generate final vertices, normals and uvs - - for ( let i = 0; i < decalVertices.length; i ++ ) { - - const decalVertex = decalVertices[ i ]; - - // create texture coordinates (we are still in projector space) - - uvs.push( - 0.5 + ( decalVertex.position.x / size.x ), - 0.5 + ( decalVertex.position.y / size.y ) - ); - - // transform the vertex back to world space - - decalVertex.position.applyMatrix4( projectorMatrix ); - - // now create vertex and normal buffer data - - vertices.push( decalVertex.position.x, decalVertex.position.y, decalVertex.position.z ); - normals.push( decalVertex.normal.x, decalVertex.normal.y, decalVertex.normal.z ); - - } - - } - - function pushDecalVertex( decalVertices, vertex, normal ) { - - // transform the vertex to world space, then to projector space - - vertex.applyMatrix4( mesh.matrixWorld ); - vertex.applyMatrix4( projectorMatrixInverse ); - - normal.transformDirection( mesh.matrixWorld ); - - decalVertices.push( new DecalVertex( vertex.clone(), normal.clone() ) ); - - } - - function clipGeometry( inVertices, plane ) { - - const outVertices = []; - - const s = 0.5 * Math.abs( size.dot( plane ) ); - - // a single iteration clips one face, - // which consists of three consecutive 'DecalVertex' objects - - for ( let i = 0; i < inVertices.length; i += 3 ) { - - let total = 0; - let nV1; - let nV2; - let nV3; - let nV4; - - const d1 = inVertices[ i + 0 ].position.dot( plane ) - s; - const d2 = inVertices[ i + 1 ].position.dot( plane ) - s; - const d3 = inVertices[ i + 2 ].position.dot( plane ) - s; - - const v1Out = d1 > 0; - const v2Out = d2 > 0; - const v3Out = d3 > 0; - - // calculate, how many vertices of the face lie outside of the clipping plane - - total = ( v1Out ? 1 : 0 ) + ( v2Out ? 1 : 0 ) + ( v3Out ? 1 : 0 ); - - switch ( total ) { - - case 0: { - - // the entire face lies inside of the plane, no clipping needed - - outVertices.push( inVertices[ i ] ); - outVertices.push( inVertices[ i + 1 ] ); - outVertices.push( inVertices[ i + 2 ] ); - break; - - } - - case 1: { - - // one vertex lies outside of the plane, perform clipping - - if ( v1Out ) { - - nV1 = inVertices[ i + 1 ]; - nV2 = inVertices[ i + 2 ]; - nV3 = clip( inVertices[ i ], nV1, plane, s ); - nV4 = clip( inVertices[ i ], nV2, plane, s ); - - } - - if ( v2Out ) { - - nV1 = inVertices[ i ]; - nV2 = inVertices[ i + 2 ]; - nV3 = clip( inVertices[ i + 1 ], nV1, plane, s ); - nV4 = clip( inVertices[ i + 1 ], nV2, plane, s ); - - outVertices.push( nV3 ); - outVertices.push( nV2.clone() ); - outVertices.push( nV1.clone() ); - - outVertices.push( nV2.clone() ); - outVertices.push( nV3.clone() ); - outVertices.push( nV4 ); - break; - - } - - if ( v3Out ) { - - nV1 = inVertices[ i ]; - nV2 = inVertices[ i + 1 ]; - nV3 = clip( inVertices[ i + 2 ], nV1, plane, s ); - nV4 = clip( inVertices[ i + 2 ], nV2, plane, s ); - - } - - outVertices.push( nV1.clone() ); - outVertices.push( nV2.clone() ); - outVertices.push( nV3 ); - - outVertices.push( nV4 ); - outVertices.push( nV3.clone() ); - outVertices.push( nV2.clone() ); - - break; - - } - - case 2: { - - // two vertices lies outside of the plane, perform clipping - - if ( ! v1Out ) { - - nV1 = inVertices[ i ].clone(); - nV2 = clip( nV1, inVertices[ i + 1 ], plane, s ); - nV3 = clip( nV1, inVertices[ i + 2 ], plane, s ); - outVertices.push( nV1 ); - outVertices.push( nV2 ); - outVertices.push( nV3 ); - - } - - if ( ! v2Out ) { - - nV1 = inVertices[ i + 1 ].clone(); - nV2 = clip( nV1, inVertices[ i + 2 ], plane, s ); - nV3 = clip( nV1, inVertices[ i ], plane, s ); - outVertices.push( nV1 ); - outVertices.push( nV2 ); - outVertices.push( nV3 ); - - } - - if ( ! v3Out ) { - - nV1 = inVertices[ i + 2 ].clone(); - nV2 = clip( nV1, inVertices[ i ], plane, s ); - nV3 = clip( nV1, inVertices[ i + 1 ], plane, s ); - outVertices.push( nV1 ); - outVertices.push( nV2 ); - outVertices.push( nV3 ); - - } - - break; - - } - - case 3: { - - // the entire face lies outside of the plane, so let's discard the corresponding vertices - - break; - - } - - } - - } - - return outVertices; - - } - - function clip( v0, v1, p, s ) { - - const d0 = v0.position.dot( p ) - s; - const d1 = v1.position.dot( p ) - s; - - const s0 = d0 / ( d0 - d1 ); - - const v = new DecalVertex( - new Vector3( - v0.position.x + s0 * ( v1.position.x - v0.position.x ), - v0.position.y + s0 * ( v1.position.y - v0.position.y ), - v0.position.z + s0 * ( v1.position.z - v0.position.z ) - ), - new Vector3( - v0.normal.x + s0 * ( v1.normal.x - v0.normal.x ), - v0.normal.y + s0 * ( v1.normal.y - v0.normal.y ), - v0.normal.z + s0 * ( v1.normal.z - v0.normal.z ) - ) - ); - - // need to clip more values (texture coordinates)? do it this way: - // intersectpoint.value = a.value + s * ( b.value - a.value ); - - return v; - - } - - } - -} - -// helper - -class DecalVertex { - - constructor( position, normal ) { - - this.position = position; - this.normal = normal; - - } - - clone() { - - return new this.constructor( this.position.clone(), this.normal.clone() ); - - } - -} - -export { DecalGeometry, DecalVertex }; diff --git a/three/addons/geometries/InstancedPointsGeometry.js b/three/addons/geometries/InstancedPointsGeometry.js deleted file mode 100644 index 081ab6b..0000000 --- a/three/addons/geometries/InstancedPointsGeometry.js +++ /dev/null @@ -1,174 +0,0 @@ -import { - Box3, - Float32BufferAttribute, - InstancedBufferGeometry, - InstancedBufferAttribute, - Sphere, - Vector3 -} from 'three'; - -const _vector = new Vector3(); - -class InstancedPointsGeometry extends InstancedBufferGeometry { - - constructor() { - - super(); - - this.isInstancedPointsGeometry = true; - - this.type = 'InstancedPointsGeometry'; - - const positions = [ - 1, 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ]; - const uvs = [ - 1, 1, 1, 1, - 1, - 1, 1, - 1 ]; - const index = [ 0, 2, 1, 2, 3, 1 ]; - - this.setIndex( index ); - this.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - applyMatrix4( matrix ) { - - const pos = this.attributes.instancePosition; - - if ( pos !== undefined ) { - - pos.applyMatrix4( matrix ); - - pos.needsUpdate = true; - - } - - if ( this.boundingBox !== null ) { - - this.computeBoundingBox(); - - } - - if ( this.boundingSphere !== null ) { - - this.computeBoundingSphere(); - - } - - return this; - - } - - setPositions( array ) { - - let points; - - if ( array instanceof Float32Array ) { - - points = array; - - } else if ( Array.isArray( array ) ) { - - points = new Float32Array( array ); - - } - - this.setAttribute( 'instancePosition', new InstancedBufferAttribute( points, 3 ) ); // xyz - - // - - this.computeBoundingBox(); - this.computeBoundingSphere(); - - return this; - - } - - setColors( array ) { - - let colors; - - if ( array instanceof Float32Array ) { - - colors = array; - - } else if ( Array.isArray( array ) ) { - - colors = new Float32Array( array ); - - } - - this.setAttribute( 'instanceColor', new InstancedBufferAttribute( colors, 3 ) ); // rgb - - return this; - - } - - computeBoundingBox() { - - if ( this.boundingBox === null ) { - - this.boundingBox = new Box3(); - - } - - const pos = this.attributes.instancePosition; - - if ( pos !== undefined ) { - - this.boundingBox.setFromBufferAttribute( pos ); - - } - - } - - computeBoundingSphere() { - - if ( this.boundingSphere === null ) { - - this.boundingSphere = new Sphere(); - - } - - if ( this.boundingBox === null ) { - - this.computeBoundingBox(); - - } - - const pos = this.attributes.instancePosition; - - if ( pos !== undefined ) { - - const center = this.boundingSphere.center; - - this.boundingBox.getCenter( center ); - - let maxRadiusSq = 0; - - for ( let i = 0, il = pos.count; i < il; i ++ ) { - - _vector.fromBufferAttribute( pos, i ); - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) ); - - } - - this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); - - if ( isNaN( this.boundingSphere.radius ) ) { - - console.error( 'THREE.InstancedPointsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.', this ); - - } - - } - - } - - toJSON() { - - // todo - - } - -} - -export default InstancedPointsGeometry; diff --git a/three/addons/geometries/ParametricGeometries.js b/three/addons/geometries/ParametricGeometries.js deleted file mode 100644 index 6716735..0000000 --- a/three/addons/geometries/ParametricGeometries.js +++ /dev/null @@ -1,254 +0,0 @@ -import { - Curve, - Vector3 -} from 'three'; - -import { ParametricGeometry } from './ParametricGeometry.js'; - -/** - * Experimenting of primitive geometry creation using Surface Parametric equations - */ - -const ParametricGeometries = { - - klein: function ( v, u, target ) { - - u *= Math.PI; - v *= 2 * Math.PI; - - u = u * 2; - let x, z; - if ( u < Math.PI ) { - - x = 3 * Math.cos( u ) * ( 1 + Math.sin( u ) ) + ( 2 * ( 1 - Math.cos( u ) / 2 ) ) * Math.cos( u ) * Math.cos( v ); - z = - 8 * Math.sin( u ) - 2 * ( 1 - Math.cos( u ) / 2 ) * Math.sin( u ) * Math.cos( v ); - - } else { - - x = 3 * Math.cos( u ) * ( 1 + Math.sin( u ) ) + ( 2 * ( 1 - Math.cos( u ) / 2 ) ) * Math.cos( v + Math.PI ); - z = - 8 * Math.sin( u ); - - } - - const y = - 2 * ( 1 - Math.cos( u ) / 2 ) * Math.sin( v ); - - target.set( x, y, z ); - - }, - - plane: function ( width, height ) { - - return function ( u, v, target ) { - - const x = u * width; - const y = 0; - const z = v * height; - - target.set( x, y, z ); - - }; - - }, - - mobius: function ( u, t, target ) { - - // flat mobius strip - // http://www.wolframalpha.com/input/?i=M%C3%B6bius+strip+parametric+equations&lk=1&a=ClashPrefs_*Surface.MoebiusStrip.SurfaceProperty.ParametricEquations- - u = u - 0.5; - const v = 2 * Math.PI * t; - - const a = 2; - - const x = Math.cos( v ) * ( a + u * Math.cos( v / 2 ) ); - const y = Math.sin( v ) * ( a + u * Math.cos( v / 2 ) ); - const z = u * Math.sin( v / 2 ); - - target.set( x, y, z ); - - }, - - mobius3d: function ( u, t, target ) { - - // volumetric mobius strip - - u *= Math.PI; - t *= 2 * Math.PI; - - u = u * 2; - const phi = u / 2; - const major = 2.25, a = 0.125, b = 0.65; - - let x = a * Math.cos( t ) * Math.cos( phi ) - b * Math.sin( t ) * Math.sin( phi ); - const z = a * Math.cos( t ) * Math.sin( phi ) + b * Math.sin( t ) * Math.cos( phi ); - const y = ( major + x ) * Math.sin( u ); - x = ( major + x ) * Math.cos( u ); - - target.set( x, y, z ); - - } - -}; - - -/********************************************* - * - * Parametric Replacement for TubeGeometry - * - *********************************************/ - -ParametricGeometries.TubeGeometry = class TubeGeometry extends ParametricGeometry { - - constructor( path, segments = 64, radius = 1, segmentsRadius = 8, closed = false ) { - - const numpoints = segments + 1; - - const frames = path.computeFrenetFrames( segments, closed ), - tangents = frames.tangents, - normals = frames.normals, - binormals = frames.binormals; - - const position = new Vector3(); - - function ParametricTube( u, v, target ) { - - v *= 2 * Math.PI; - - const i = Math.floor( u * ( numpoints - 1 ) ); - - path.getPointAt( u, position ); - - const normal = normals[ i ]; - const binormal = binormals[ i ]; - - const cx = - radius * Math.cos( v ); // TODO: Hack: Negating it so it faces outside. - const cy = radius * Math.sin( v ); - - position.x += cx * normal.x + cy * binormal.x; - position.y += cx * normal.y + cy * binormal.y; - position.z += cx * normal.z + cy * binormal.z; - - target.copy( position ); - - } - - super( ParametricTube, segments, segmentsRadius ); - - // proxy internals - - this.tangents = tangents; - this.normals = normals; - this.binormals = binormals; - - this.path = path; - this.segments = segments; - this.radius = radius; - this.segmentsRadius = segmentsRadius; - this.closed = closed; - - } - -}; - - -/********************************************* - * - * Parametric Replacement for TorusKnotGeometry - * - *********************************************/ -ParametricGeometries.TorusKnotGeometry = class TorusKnotGeometry extends ParametricGeometries.TubeGeometry { - - constructor( radius = 200, tube = 40, segmentsT = 64, segmentsR = 8, p = 2, q = 3 ) { - - class TorusKnotCurve extends Curve { - - getPoint( t, optionalTarget = new Vector3() ) { - - const point = optionalTarget; - - t *= Math.PI * 2; - - const r = 0.5; - - const x = ( 1 + r * Math.cos( q * t ) ) * Math.cos( p * t ); - const y = ( 1 + r * Math.cos( q * t ) ) * Math.sin( p * t ); - const z = r * Math.sin( q * t ); - - return point.set( x, y, z ).multiplyScalar( radius ); - - } - - } - - const segments = segmentsT; - const radiusSegments = segmentsR; - const extrudePath = new TorusKnotCurve(); - - super( extrudePath, segments, tube, radiusSegments, true, false ); - - this.radius = radius; - this.tube = tube; - this.segmentsT = segmentsT; - this.segmentsR = segmentsR; - this.p = p; - this.q = q; - - } - -}; - -/********************************************* - * - * Parametric Replacement for SphereGeometry - * - *********************************************/ -ParametricGeometries.SphereGeometry = class SphereGeometry extends ParametricGeometry { - - constructor( size, u, v ) { - - function sphere( u, v, target ) { - - u *= Math.PI; - v *= 2 * Math.PI; - - const x = size * Math.sin( u ) * Math.cos( v ); - const y = size * Math.sin( u ) * Math.sin( v ); - const z = size * Math.cos( u ); - - target.set( x, y, z ); - - } - - super( sphere, u, v ); - - } - -}; - - -/********************************************* - * - * Parametric Replacement for PlaneGeometry - * - *********************************************/ - -ParametricGeometries.PlaneGeometry = class PlaneGeometry extends ParametricGeometry { - - constructor( width, depth, segmentsWidth, segmentsDepth ) { - - function plane( u, v, target ) { - - const x = u * width; - const y = 0; - const z = v * depth; - - target.set( x, y, z ); - - } - - super( plane, segmentsWidth, segmentsDepth ); - - } - -}; - -export { ParametricGeometries }; diff --git a/three/addons/geometries/ParametricGeometry.js b/three/addons/geometries/ParametricGeometry.js deleted file mode 100644 index 8f726b2..0000000 --- a/three/addons/geometries/ParametricGeometry.js +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Parametric Surfaces Geometry - * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html - */ - -import { - BufferGeometry, - Float32BufferAttribute, - Vector3 -} from 'three'; - -class ParametricGeometry extends BufferGeometry { - - constructor( func = ( u, v, target ) => target.set( u, v, Math.cos( u ) * Math.sin( v ) ), slices = 8, stacks = 8 ) { - - super(); - - this.type = 'ParametricGeometry'; - - this.parameters = { - func: func, - slices: slices, - stacks: stacks - }; - - // buffers - - const indices = []; - const vertices = []; - const normals = []; - const uvs = []; - - const EPS = 0.00001; - - const normal = new Vector3(); - - const p0 = new Vector3(), p1 = new Vector3(); - const pu = new Vector3(), pv = new Vector3(); - - // generate vertices, normals and uvs - - const sliceCount = slices + 1; - - for ( let i = 0; i <= stacks; i ++ ) { - - const v = i / stacks; - - for ( let j = 0; j <= slices; j ++ ) { - - const u = j / slices; - - // vertex - - func( u, v, p0 ); - vertices.push( p0.x, p0.y, p0.z ); - - // normal - - // approximate tangent vectors via finite differences - - if ( u - EPS >= 0 ) { - - func( u - EPS, v, p1 ); - pu.subVectors( p0, p1 ); - - } else { - - func( u + EPS, v, p1 ); - pu.subVectors( p1, p0 ); - - } - - if ( v - EPS >= 0 ) { - - func( u, v - EPS, p1 ); - pv.subVectors( p0, p1 ); - - } else { - - func( u, v + EPS, p1 ); - pv.subVectors( p1, p0 ); - - } - - // cross product of tangent vectors returns surface normal - - normal.crossVectors( pu, pv ).normalize(); - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( u, v ); - - } - - } - - // generate indices - - for ( let i = 0; i < stacks; i ++ ) { - - for ( let j = 0; j < slices; j ++ ) { - - const a = i * sliceCount + j; - const b = i * sliceCount + j + 1; - const c = ( i + 1 ) * sliceCount + j + 1; - const d = ( i + 1 ) * sliceCount + j; - - // faces one and two - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - copy( source ) { - - super.copy( source ); - - this.parameters = Object.assign( {}, source.parameters ); - - return this; - - } - -} - -export { ParametricGeometry }; diff --git a/three/addons/geometries/RoundedBoxGeometry.js b/three/addons/geometries/RoundedBoxGeometry.js deleted file mode 100644 index 8baa168..0000000 --- a/three/addons/geometries/RoundedBoxGeometry.js +++ /dev/null @@ -1,155 +0,0 @@ -import { - BoxGeometry, - Vector3 -} from 'three'; - -const _tempNormal = new Vector3(); - -function getUv( faceDirVector, normal, uvAxis, projectionAxis, radius, sideLength ) { - - const totArcLength = 2 * Math.PI * radius / 4; - - // length of the planes between the arcs on each axis - const centerLength = Math.max( sideLength - 2 * radius, 0 ); - const halfArc = Math.PI / 4; - - // Get the vector projected onto the Y plane - _tempNormal.copy( normal ); - _tempNormal[ projectionAxis ] = 0; - _tempNormal.normalize(); - - // total amount of UV space alloted to a single arc - const arcUvRatio = 0.5 * totArcLength / ( totArcLength + centerLength ); - - // the distance along one arc the point is at - const arcAngleRatio = 1.0 - ( _tempNormal.angleTo( faceDirVector ) / halfArc ); - - if ( Math.sign( _tempNormal[ uvAxis ] ) === 1 ) { - - return arcAngleRatio * arcUvRatio; - - } else { - - // total amount of UV space alloted to the plane between the arcs - const lenUv = centerLength / ( totArcLength + centerLength ); - return lenUv + arcUvRatio + arcUvRatio * ( 1.0 - arcAngleRatio ); - - } - -} - -class RoundedBoxGeometry extends BoxGeometry { - - constructor( width = 1, height = 1, depth = 1, segments = 2, radius = 0.1 ) { - - // ensure segments is odd so we have a plane connecting the rounded corners - segments = segments * 2 + 1; - - // ensure radius isn't bigger than shortest side - radius = Math.min( width / 2, height / 2, depth / 2, radius ); - - super( 1, 1, 1, segments, segments, segments ); - - // if we just have one segment we're the same as a regular box - if ( segments === 1 ) return; - - const geometry2 = this.toNonIndexed(); - - this.index = null; - this.attributes.position = geometry2.attributes.position; - this.attributes.normal = geometry2.attributes.normal; - this.attributes.uv = geometry2.attributes.uv; - - // - - const position = new Vector3(); - const normal = new Vector3(); - - const box = new Vector3( width, height, depth ).divideScalar( 2 ).subScalar( radius ); - - const positions = this.attributes.position.array; - const normals = this.attributes.normal.array; - const uvs = this.attributes.uv.array; - - const faceTris = positions.length / 6; - const faceDirVector = new Vector3(); - const halfSegmentSize = 0.5 / segments; - - for ( let i = 0, j = 0; i < positions.length; i += 3, j += 2 ) { - - position.fromArray( positions, i ); - normal.copy( position ); - normal.x -= Math.sign( normal.x ) * halfSegmentSize; - normal.y -= Math.sign( normal.y ) * halfSegmentSize; - normal.z -= Math.sign( normal.z ) * halfSegmentSize; - normal.normalize(); - - positions[ i + 0 ] = box.x * Math.sign( position.x ) + normal.x * radius; - positions[ i + 1 ] = box.y * Math.sign( position.y ) + normal.y * radius; - positions[ i + 2 ] = box.z * Math.sign( position.z ) + normal.z * radius; - - normals[ i + 0 ] = normal.x; - normals[ i + 1 ] = normal.y; - normals[ i + 2 ] = normal.z; - - const side = Math.floor( i / faceTris ); - - switch ( side ) { - - case 0: // right - - // generate UVs along Z then Y - faceDirVector.set( 1, 0, 0 ); - uvs[ j + 0 ] = getUv( faceDirVector, normal, 'z', 'y', radius, depth ); - uvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'y', 'z', radius, height ); - break; - - case 1: // left - - // generate UVs along Z then Y - faceDirVector.set( - 1, 0, 0 ); - uvs[ j + 0 ] = 1.0 - getUv( faceDirVector, normal, 'z', 'y', radius, depth ); - uvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'y', 'z', radius, height ); - break; - - case 2: // top - - // generate UVs along X then Z - faceDirVector.set( 0, 1, 0 ); - uvs[ j + 0 ] = 1.0 - getUv( faceDirVector, normal, 'x', 'z', radius, width ); - uvs[ j + 1 ] = getUv( faceDirVector, normal, 'z', 'x', radius, depth ); - break; - - case 3: // bottom - - // generate UVs along X then Z - faceDirVector.set( 0, - 1, 0 ); - uvs[ j + 0 ] = 1.0 - getUv( faceDirVector, normal, 'x', 'z', radius, width ); - uvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'z', 'x', radius, depth ); - break; - - case 4: // front - - // generate UVs along X then Y - faceDirVector.set( 0, 0, 1 ); - uvs[ j + 0 ] = 1.0 - getUv( faceDirVector, normal, 'x', 'y', radius, width ); - uvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'y', 'x', radius, height ); - break; - - case 5: // back - - // generate UVs along X then Y - faceDirVector.set( 0, 0, - 1 ); - uvs[ j + 0 ] = getUv( faceDirVector, normal, 'x', 'y', radius, width ); - uvs[ j + 1 ] = 1.0 - getUv( faceDirVector, normal, 'y', 'x', radius, height ); - break; - - } - - } - - } - -} - -export { RoundedBoxGeometry }; diff --git a/three/addons/geometries/SDFGeometryGenerator.js b/three/addons/geometries/SDFGeometryGenerator.js deleted file mode 100644 index e80c9a3..0000000 --- a/three/addons/geometries/SDFGeometryGenerator.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * @author santiago / @glitch_life - * wrapper of https://www.npmjs.com/package/isosurface by https://github.com/mikolalysenko - * - * Returns BufferGeometry from SDF - */ - -import { - BufferAttribute, - BufferGeometry, - FloatType, - Mesh, - OrthographicCamera, - PlaneGeometry, - Scene, - ShaderMaterial, - Vector2, - WebGLRenderTarget -} from 'three'; - -import { surfaceNet } from './../libs/surfaceNet.js'; - -class SDFGeometryGenerator { - - constructor( renderer ) { - - this.renderer = renderer; - - } - - generate( res = 64, distFunc = 'float dist( vec3 p ){ return length(p) - 0.5; }', bounds = 1 ) { - - let w, h; - if ( res == 8 ) [ w, h ] = [ 32, 16 ]; - else if ( res == 16 ) [ w, h ] = [ 64, 64 ]; - else if ( res == 32 ) [ w, h ] = [ 256, 128 ]; - else if ( res == 64 ) [ w, h ] = [ 512, 512 ]; - else if ( res == 128 ) [ w, h ] = [ 2048, 1024 ]; - else if ( res == 256 ) [ w, h ] = [ 4096, 4096 ]; - else if ( res == 512 ) [ w, h ] = [ 16384, 8096 ]; - else if ( res == 1024 ) [ w, h ] = [ 32768, 32768 ]; - else throw new Error( 'THREE.SDFGeometryGenerator: Resolution must be in range 8 < res < 1024 and must be ^2' ); - - const maxTexSize = this.renderer.capabilities.maxTextureSize; - - if ( w > maxTexSize || h > maxTexSize ) throw new Error( 'THREE.SDFGeometryGenerator: Your device does not support this resolution ( ' + res + ' ), decrease [res] param.' ); - - const [ tilesX, tilesY ] = [ ( w / res ), ( h / res ) ]; - - const sdfCompute = ` - varying vec2 vUv; - uniform float tileNum; - uniform float bounds; - [#dist#] - void main() { gl_FragColor=vec4( ( dist( vec3( vUv, tileNum ) * 2.0 * bounds - vec3( bounds ) ) < 0.00001 ) ? 1.0 : 0.0 ); } - `; - - const sdfRT = this.computeSDF( w, h, tilesX, tilesY, bounds, sdfCompute.replace( '[#dist#]', distFunc ) ); - - const read = new Float32Array( w * h * 4 ); - this.renderer.readRenderTargetPixels( sdfRT, 0, 0, w, h, read ); - sdfRT.dispose(); - - // - - const mesh = surfaceNet( [ res, res, res ], ( x, y, z ) => { - - x = ( x + bounds ) * ( res / ( bounds * 2 ) ); - y = ( y + bounds ) * ( res / ( bounds * 2 ) ); - z = ( z + bounds ) * ( res / ( bounds * 2 ) ); - let p = ( x + ( z % tilesX ) * res ) + y * w + ( Math.floor( z / tilesX ) * res * w ); - p *= 4; - return ( read[ p + 3 ] > 0 ) ? - 0.000000001 : 1; - - }, [[ - bounds, - bounds, - bounds ], [ bounds, bounds, bounds ]] ); - - const ps = [], ids = []; - const geometry = new BufferGeometry(); - mesh.positions.forEach( p => { - - ps.push( p[ 0 ], p[ 1 ], p[ 2 ] ); - - } ); - mesh.cells.forEach( p => ids.push( p[ 0 ], p[ 1 ], p[ 2 ] ) ); - geometry.setAttribute( 'position', new BufferAttribute( new Float32Array( ps ), 3 ) ); - geometry.setIndex( ids ); - - return geometry; - - } - - computeSDF( width, height, tilesX, tilesY, bounds, shader ) { - - const rt = new WebGLRenderTarget( width, height, { type: FloatType } ); - const scn = new Scene(); - const cam = new OrthographicCamera(); - const tiles = tilesX * tilesY; - let currentTile = 0; - - Object.assign( cam, { left: width / - 2, right: width / 2, top: height / 2, bottom: height / - 2 } ).updateProjectionMatrix(); - cam.position.z = 2; - - const tileSize = width / tilesX; - const geometry = new PlaneGeometry( tileSize, tileSize ); - - while ( currentTile ++ < tiles ) { - - const c = currentTile - 1; - const [ px, py ] = [ ( tileSize ) / 2 + ( c % tilesX ) * ( tileSize ) - width / 2, ( tileSize ) / 2 + Math.floor( c / tilesX ) * ( tileSize ) - height / 2 ]; - const compPlane = new Mesh( geometry, new ShaderMaterial( { - uniforms: { - res: { value: new Vector2( width, height ) }, - tileNum: { value: c / ( tilesX * tilesY - 1 ) }, - bounds: { value: bounds } - }, - vertexShader: 'varying vec2 vUv;void main(){vUv=uv;gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0);}', - fragmentShader: shader - } ) ); - compPlane.position.set( px, py, 0 ); - scn.add( compPlane ); - - } - - this.renderer.setRenderTarget( rt ); - this.renderer.render( scn, cam ); - this.renderer.setRenderTarget( null ); - - // - - geometry.dispose(); - - scn.traverse( function ( object ) { - - if ( object.material !== undefined ) object.material.dispose(); - - } ); - - return rt; - - } - -} - -export { SDFGeometryGenerator }; diff --git a/three/addons/geometries/TeapotGeometry.js b/three/addons/geometries/TeapotGeometry.js deleted file mode 100644 index b6b5ff1..0000000 --- a/three/addons/geometries/TeapotGeometry.js +++ /dev/null @@ -1,704 +0,0 @@ -import { - BufferAttribute, - BufferGeometry, - Matrix4, - Vector3, - Vector4 -} from 'three'; - -/** - * Tessellates the famous Utah teapot database by Martin Newell into triangles. - * - * Parameters: size = 50, segments = 10, bottom = true, lid = true, body = true, - * fitLid = false, blinn = true - * - * size is a relative scale: I've scaled the teapot to fit vertically between -1 and 1. - * Think of it as a "radius". - * segments - number of line segments to subdivide each patch edge; - * 1 is possible but gives degenerates, so two is the real minimum. - * bottom - boolean, if true (default) then the bottom patches are added. Some consider - * adding the bottom heresy, so set this to "false" to adhere to the One True Way. - * lid - to remove the lid and look inside, set to true. - * body - to remove the body and leave the lid, set this and "bottom" to false. - * fitLid - the lid is a tad small in the original. This stretches it a bit so you can't - * see the teapot's insides through the gap. - * blinn - Jim Blinn scaled the original data vertically by dividing by about 1.3 to look - * nicer. If you want to see the original teapot, similar to the real-world model, set - * this to false. True by default. - * See http://en.wikipedia.org/wiki/File:Original_Utah_Teapot.jpg for the original - * real-world teapot (from http://en.wikipedia.org/wiki/Utah_teapot). - * - * Note that the bottom (the last four patches) is not flat - blame Frank Crow, not me. - * - * The teapot should normally be rendered as a double sided object, since for some - * patches both sides can be seen, e.g., the gap around the lid and inside the spout. - * - * Segments 'n' determines the number of triangles output. - * Total triangles = 32*2*n*n - 8*n [degenerates at the top and bottom cusps are deleted] - * - * size_factor # triangles - * 1 56 - * 2 240 - * 3 552 - * 4 992 - * - * 10 6320 - * 20 25440 - * 30 57360 - * - * Code converted from my ancient SPD software, http://tog.acm.org/resources/SPD/ - * Created for the Udacity course "Interactive Rendering", http://bit.ly/ericity - * YouTube video on teapot history: https://www.youtube.com/watch?v=DxMfblPzFNc - * - * See https://en.wikipedia.org/wiki/Utah_teapot for the history of the teapot - * - */ - -class TeapotGeometry extends BufferGeometry { - - constructor( size = 50, segments = 10, bottom = true, lid = true, body = true, fitLid = true, blinn = true ) { - - // 32 * 4 * 4 Bezier spline patches - const teapotPatches = [ - /*rim*/ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 3, 16, 17, 18, 7, 19, 20, 21, 11, 22, 23, 24, 15, 25, 26, 27, - 18, 28, 29, 30, 21, 31, 32, 33, 24, 34, 35, 36, 27, 37, 38, 39, - 30, 40, 41, 0, 33, 42, 43, 4, 36, 44, 45, 8, 39, 46, 47, 12, - /*body*/ - 12, 13, 14, 15, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 15, 25, 26, 27, 51, 60, 61, 62, 55, 63, 64, 65, 59, 66, 67, 68, - 27, 37, 38, 39, 62, 69, 70, 71, 65, 72, 73, 74, 68, 75, 76, 77, - 39, 46, 47, 12, 71, 78, 79, 48, 74, 80, 81, 52, 77, 82, 83, 56, - 56, 57, 58, 59, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 59, 66, 67, 68, 87, 96, 97, 98, 91, 99, 100, 101, 95, 102, 103, 104, - 68, 75, 76, 77, 98, 105, 106, 107, 101, 108, 109, 110, 104, 111, 112, 113, - 77, 82, 83, 56, 107, 114, 115, 84, 110, 116, 117, 88, 113, 118, 119, 92, - /*handle*/ - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 123, 136, 137, 120, 127, 138, 139, 124, 131, 140, 141, 128, 135, 142, 143, 132, - 132, 133, 134, 135, 144, 145, 146, 147, 148, 149, 150, 151, 68, 152, 153, 154, - 135, 142, 143, 132, 147, 155, 156, 144, 151, 157, 158, 148, 154, 159, 160, 68, - /*spout*/ - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 164, 177, 178, 161, 168, 179, 180, 165, 172, 181, 182, 169, 176, 183, 184, 173, - 173, 174, 175, 176, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 176, 183, 184, 173, 188, 197, 198, 185, 192, 199, 200, 189, 196, 201, 202, 193, - /*lid*/ - 203, 203, 203, 203, 204, 205, 206, 207, 208, 208, 208, 208, 209, 210, 211, 212, - 203, 203, 203, 203, 207, 213, 214, 215, 208, 208, 208, 208, 212, 216, 217, 218, - 203, 203, 203, 203, 215, 219, 220, 221, 208, 208, 208, 208, 218, 222, 223, 224, - 203, 203, 203, 203, 221, 225, 226, 204, 208, 208, 208, 208, 224, 227, 228, 209, - 209, 210, 211, 212, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 212, 216, 217, 218, 232, 241, 242, 243, 236, 244, 245, 246, 240, 247, 248, 249, - 218, 222, 223, 224, 243, 250, 251, 252, 246, 253, 254, 255, 249, 256, 257, 258, - 224, 227, 228, 209, 252, 259, 260, 229, 255, 261, 262, 233, 258, 263, 264, 237, - /*bottom*/ - 265, 265, 265, 265, 266, 267, 268, 269, 270, 271, 272, 273, 92, 119, 118, 113, - 265, 265, 265, 265, 269, 274, 275, 276, 273, 277, 278, 279, 113, 112, 111, 104, - 265, 265, 265, 265, 276, 280, 281, 282, 279, 283, 284, 285, 104, 103, 102, 95, - 265, 265, 265, 265, 282, 286, 287, 266, 285, 288, 289, 270, 95, 94, 93, 92 - ]; - - const teapotVertices = [ - 1.4, 0, 2.4, - 1.4, - 0.784, 2.4, - 0.784, - 1.4, 2.4, - 0, - 1.4, 2.4, - 1.3375, 0, 2.53125, - 1.3375, - 0.749, 2.53125, - 0.749, - 1.3375, 2.53125, - 0, - 1.3375, 2.53125, - 1.4375, 0, 2.53125, - 1.4375, - 0.805, 2.53125, - 0.805, - 1.4375, 2.53125, - 0, - 1.4375, 2.53125, - 1.5, 0, 2.4, - 1.5, - 0.84, 2.4, - 0.84, - 1.5, 2.4, - 0, - 1.5, 2.4, - - 0.784, - 1.4, 2.4, - - 1.4, - 0.784, 2.4, - - 1.4, 0, 2.4, - - 0.749, - 1.3375, 2.53125, - - 1.3375, - 0.749, 2.53125, - - 1.3375, 0, 2.53125, - - 0.805, - 1.4375, 2.53125, - - 1.4375, - 0.805, 2.53125, - - 1.4375, 0, 2.53125, - - 0.84, - 1.5, 2.4, - - 1.5, - 0.84, 2.4, - - 1.5, 0, 2.4, - - 1.4, 0.784, 2.4, - - 0.784, 1.4, 2.4, - 0, 1.4, 2.4, - - 1.3375, 0.749, 2.53125, - - 0.749, 1.3375, 2.53125, - 0, 1.3375, 2.53125, - - 1.4375, 0.805, 2.53125, - - 0.805, 1.4375, 2.53125, - 0, 1.4375, 2.53125, - - 1.5, 0.84, 2.4, - - 0.84, 1.5, 2.4, - 0, 1.5, 2.4, - 0.784, 1.4, 2.4, - 1.4, 0.784, 2.4, - 0.749, 1.3375, 2.53125, - 1.3375, 0.749, 2.53125, - 0.805, 1.4375, 2.53125, - 1.4375, 0.805, 2.53125, - 0.84, 1.5, 2.4, - 1.5, 0.84, 2.4, - 1.75, 0, 1.875, - 1.75, - 0.98, 1.875, - 0.98, - 1.75, 1.875, - 0, - 1.75, 1.875, - 2, 0, 1.35, - 2, - 1.12, 1.35, - 1.12, - 2, 1.35, - 0, - 2, 1.35, - 2, 0, 0.9, - 2, - 1.12, 0.9, - 1.12, - 2, 0.9, - 0, - 2, 0.9, - - 0.98, - 1.75, 1.875, - - 1.75, - 0.98, 1.875, - - 1.75, 0, 1.875, - - 1.12, - 2, 1.35, - - 2, - 1.12, 1.35, - - 2, 0, 1.35, - - 1.12, - 2, 0.9, - - 2, - 1.12, 0.9, - - 2, 0, 0.9, - - 1.75, 0.98, 1.875, - - 0.98, 1.75, 1.875, - 0, 1.75, 1.875, - - 2, 1.12, 1.35, - - 1.12, 2, 1.35, - 0, 2, 1.35, - - 2, 1.12, 0.9, - - 1.12, 2, 0.9, - 0, 2, 0.9, - 0.98, 1.75, 1.875, - 1.75, 0.98, 1.875, - 1.12, 2, 1.35, - 2, 1.12, 1.35, - 1.12, 2, 0.9, - 2, 1.12, 0.9, - 2, 0, 0.45, - 2, - 1.12, 0.45, - 1.12, - 2, 0.45, - 0, - 2, 0.45, - 1.5, 0, 0.225, - 1.5, - 0.84, 0.225, - 0.84, - 1.5, 0.225, - 0, - 1.5, 0.225, - 1.5, 0, 0.15, - 1.5, - 0.84, 0.15, - 0.84, - 1.5, 0.15, - 0, - 1.5, 0.15, - - 1.12, - 2, 0.45, - - 2, - 1.12, 0.45, - - 2, 0, 0.45, - - 0.84, - 1.5, 0.225, - - 1.5, - 0.84, 0.225, - - 1.5, 0, 0.225, - - 0.84, - 1.5, 0.15, - - 1.5, - 0.84, 0.15, - - 1.5, 0, 0.15, - - 2, 1.12, 0.45, - - 1.12, 2, 0.45, - 0, 2, 0.45, - - 1.5, 0.84, 0.225, - - 0.84, 1.5, 0.225, - 0, 1.5, 0.225, - - 1.5, 0.84, 0.15, - - 0.84, 1.5, 0.15, - 0, 1.5, 0.15, - 1.12, 2, 0.45, - 2, 1.12, 0.45, - 0.84, 1.5, 0.225, - 1.5, 0.84, 0.225, - 0.84, 1.5, 0.15, - 1.5, 0.84, 0.15, - - 1.6, 0, 2.025, - - 1.6, - 0.3, 2.025, - - 1.5, - 0.3, 2.25, - - 1.5, 0, 2.25, - - 2.3, 0, 2.025, - - 2.3, - 0.3, 2.025, - - 2.5, - 0.3, 2.25, - - 2.5, 0, 2.25, - - 2.7, 0, 2.025, - - 2.7, - 0.3, 2.025, - - 3, - 0.3, 2.25, - - 3, 0, 2.25, - - 2.7, 0, 1.8, - - 2.7, - 0.3, 1.8, - - 3, - 0.3, 1.8, - - 3, 0, 1.8, - - 1.5, 0.3, 2.25, - - 1.6, 0.3, 2.025, - - 2.5, 0.3, 2.25, - - 2.3, 0.3, 2.025, - - 3, 0.3, 2.25, - - 2.7, 0.3, 2.025, - - 3, 0.3, 1.8, - - 2.7, 0.3, 1.8, - - 2.7, 0, 1.575, - - 2.7, - 0.3, 1.575, - - 3, - 0.3, 1.35, - - 3, 0, 1.35, - - 2.5, 0, 1.125, - - 2.5, - 0.3, 1.125, - - 2.65, - 0.3, 0.9375, - - 2.65, 0, 0.9375, - - 2, - 0.3, 0.9, - - 1.9, - 0.3, 0.6, - - 1.9, 0, 0.6, - - 3, 0.3, 1.35, - - 2.7, 0.3, 1.575, - - 2.65, 0.3, 0.9375, - - 2.5, 0.3, 1.125, - - 1.9, 0.3, 0.6, - - 2, 0.3, 0.9, - 1.7, 0, 1.425, - 1.7, - 0.66, 1.425, - 1.7, - 0.66, 0.6, - 1.7, 0, 0.6, - 2.6, 0, 1.425, - 2.6, - 0.66, 1.425, - 3.1, - 0.66, 0.825, - 3.1, 0, 0.825, - 2.3, 0, 2.1, - 2.3, - 0.25, 2.1, - 2.4, - 0.25, 2.025, - 2.4, 0, 2.025, - 2.7, 0, 2.4, - 2.7, - 0.25, 2.4, - 3.3, - 0.25, 2.4, - 3.3, 0, 2.4, - 1.7, 0.66, 0.6, - 1.7, 0.66, 1.425, - 3.1, 0.66, 0.825, - 2.6, 0.66, 1.425, - 2.4, 0.25, 2.025, - 2.3, 0.25, 2.1, - 3.3, 0.25, 2.4, - 2.7, 0.25, 2.4, - 2.8, 0, 2.475, - 2.8, - 0.25, 2.475, - 3.525, - 0.25, 2.49375, - 3.525, 0, 2.49375, - 2.9, 0, 2.475, - 2.9, - 0.15, 2.475, - 3.45, - 0.15, 2.5125, - 3.45, 0, 2.5125, - 2.8, 0, 2.4, - 2.8, - 0.15, 2.4, - 3.2, - 0.15, 2.4, - 3.2, 0, 2.4, - 3.525, 0.25, 2.49375, - 2.8, 0.25, 2.475, - 3.45, 0.15, 2.5125, - 2.9, 0.15, 2.475, - 3.2, 0.15, 2.4, - 2.8, 0.15, 2.4, - 0, 0, 3.15, - 0.8, 0, 3.15, - 0.8, - 0.45, 3.15, - 0.45, - 0.8, 3.15, - 0, - 0.8, 3.15, - 0, 0, 2.85, - 0.2, 0, 2.7, - 0.2, - 0.112, 2.7, - 0.112, - 0.2, 2.7, - 0, - 0.2, 2.7, - - 0.45, - 0.8, 3.15, - - 0.8, - 0.45, 3.15, - - 0.8, 0, 3.15, - - 0.112, - 0.2, 2.7, - - 0.2, - 0.112, 2.7, - - 0.2, 0, 2.7, - - 0.8, 0.45, 3.15, - - 0.45, 0.8, 3.15, - 0, 0.8, 3.15, - - 0.2, 0.112, 2.7, - - 0.112, 0.2, 2.7, - 0, 0.2, 2.7, - 0.45, 0.8, 3.15, - 0.8, 0.45, 3.15, - 0.112, 0.2, 2.7, - 0.2, 0.112, 2.7, - 0.4, 0, 2.55, - 0.4, - 0.224, 2.55, - 0.224, - 0.4, 2.55, - 0, - 0.4, 2.55, - 1.3, 0, 2.55, - 1.3, - 0.728, 2.55, - 0.728, - 1.3, 2.55, - 0, - 1.3, 2.55, - 1.3, 0, 2.4, - 1.3, - 0.728, 2.4, - 0.728, - 1.3, 2.4, - 0, - 1.3, 2.4, - - 0.224, - 0.4, 2.55, - - 0.4, - 0.224, 2.55, - - 0.4, 0, 2.55, - - 0.728, - 1.3, 2.55, - - 1.3, - 0.728, 2.55, - - 1.3, 0, 2.55, - - 0.728, - 1.3, 2.4, - - 1.3, - 0.728, 2.4, - - 1.3, 0, 2.4, - - 0.4, 0.224, 2.55, - - 0.224, 0.4, 2.55, - 0, 0.4, 2.55, - - 1.3, 0.728, 2.55, - - 0.728, 1.3, 2.55, - 0, 1.3, 2.55, - - 1.3, 0.728, 2.4, - - 0.728, 1.3, 2.4, - 0, 1.3, 2.4, - 0.224, 0.4, 2.55, - 0.4, 0.224, 2.55, - 0.728, 1.3, 2.55, - 1.3, 0.728, 2.55, - 0.728, 1.3, 2.4, - 1.3, 0.728, 2.4, - 0, 0, 0, - 1.425, 0, 0, - 1.425, 0.798, 0, - 0.798, 1.425, 0, - 0, 1.425, 0, - 1.5, 0, 0.075, - 1.5, 0.84, 0.075, - 0.84, 1.5, 0.075, - 0, 1.5, 0.075, - - 0.798, 1.425, 0, - - 1.425, 0.798, 0, - - 1.425, 0, 0, - - 0.84, 1.5, 0.075, - - 1.5, 0.84, 0.075, - - 1.5, 0, 0.075, - - 1.425, - 0.798, 0, - - 0.798, - 1.425, 0, - 0, - 1.425, 0, - - 1.5, - 0.84, 0.075, - - 0.84, - 1.5, 0.075, - 0, - 1.5, 0.075, - 0.798, - 1.425, 0, - 1.425, - 0.798, 0, - 0.84, - 1.5, 0.075, - 1.5, - 0.84, 0.075 - ]; - - super(); - - // number of segments per patch - segments = Math.max( 2, Math.floor( segments ) ); - - // Jim Blinn scaled the teapot down in size by about 1.3 for - // some rendering tests. He liked the new proportions that he kept - // the data in this form. The model was distributed with these new - // proportions and became the norm. Trivia: comparing images of the - // real teapot and the computer model, the ratio for the bowl of the - // real teapot is more like 1.25, but since 1.3 is the traditional - // value given, we use it here. - const blinnScale = 1.3; - - // scale the size to be the real scaling factor - const maxHeight = 3.15 * ( blinn ? 1 : blinnScale ); - - const maxHeight2 = maxHeight / 2; - const trueSize = size / maxHeight2; - - // Number of elements depends on what is needed. Subtract degenerate - // triangles at tip of bottom and lid out in advance. - let numTriangles = bottom ? ( 8 * segments - 4 ) * segments : 0; - numTriangles += lid ? ( 16 * segments - 4 ) * segments : 0; - numTriangles += body ? 40 * segments * segments : 0; - - const indices = new Uint32Array( numTriangles * 3 ); - - let numVertices = bottom ? 4 : 0; - numVertices += lid ? 8 : 0; - numVertices += body ? 20 : 0; - numVertices *= ( segments + 1 ) * ( segments + 1 ); - - const vertices = new Float32Array( numVertices * 3 ); - const normals = new Float32Array( numVertices * 3 ); - const uvs = new Float32Array( numVertices * 2 ); - - // Bezier form - const ms = new Matrix4(); - ms.set( - - 1.0, 3.0, - 3.0, 1.0, - 3.0, - 6.0, 3.0, 0.0, - - 3.0, 3.0, 0.0, 0.0, - 1.0, 0.0, 0.0, 0.0 ); - - const g = []; - - const sp = []; - const tp = []; - const dsp = []; - const dtp = []; - - // M * G * M matrix, sort of see - // http://www.cs.helsinki.fi/group/goa/mallinnus/curves/surfaces.html - const mgm = []; - - const vert = []; - const sdir = []; - const tdir = []; - - const norm = new Vector3(); - - let tcoord; - - let sval; - let tval; - let p; - let dsval = 0; - let dtval = 0; - - const normOut = new Vector3(); - - const gmx = new Matrix4(); - const tmtx = new Matrix4(); - - const vsp = new Vector4(); - const vtp = new Vector4(); - const vdsp = new Vector4(); - const vdtp = new Vector4(); - - const vsdir = new Vector3(); - const vtdir = new Vector3(); - - const mst = ms.clone(); - mst.transpose(); - - // internal function: test if triangle has any matching vertices; - // if so, don't save triangle, since it won't display anything. - const notDegenerate = ( vtx1, vtx2, vtx3 ) => // if any vertex matches, return false - ! ( ( ( vertices[ vtx1 * 3 ] === vertices[ vtx2 * 3 ] ) && - ( vertices[ vtx1 * 3 + 1 ] === vertices[ vtx2 * 3 + 1 ] ) && - ( vertices[ vtx1 * 3 + 2 ] === vertices[ vtx2 * 3 + 2 ] ) ) || - ( ( vertices[ vtx1 * 3 ] === vertices[ vtx3 * 3 ] ) && - ( vertices[ vtx1 * 3 + 1 ] === vertices[ vtx3 * 3 + 1 ] ) && - ( vertices[ vtx1 * 3 + 2 ] === vertices[ vtx3 * 3 + 2 ] ) ) || ( vertices[ vtx2 * 3 ] === vertices[ vtx3 * 3 ] ) && - ( vertices[ vtx2 * 3 + 1 ] === vertices[ vtx3 * 3 + 1 ] ) && - ( vertices[ vtx2 * 3 + 2 ] === vertices[ vtx3 * 3 + 2 ] ) ); - - - for ( let i = 0; i < 3; i ++ ) { - - mgm[ i ] = new Matrix4(); - - } - - const minPatches = body ? 0 : 20; - const maxPatches = bottom ? 32 : 28; - - const vertPerRow = segments + 1; - - let surfCount = 0; - - let vertCount = 0; - let normCount = 0; - let uvCount = 0; - - let indexCount = 0; - - for ( let surf = minPatches; surf < maxPatches; surf ++ ) { - - // lid is in the middle of the data, patches 20-27, - // so ignore it for this part of the loop if the lid is not desired - if ( lid || ( surf < 20 || surf >= 28 ) ) { - - // get M * G * M matrix for x,y,z - for ( let i = 0; i < 3; i ++ ) { - - // get control patches - for ( let r = 0; r < 4; r ++ ) { - - for ( let c = 0; c < 4; c ++ ) { - - // transposed - g[ c * 4 + r ] = teapotVertices[ teapotPatches[ surf * 16 + r * 4 + c ] * 3 + i ]; - - // is the lid to be made larger, and is this a point on the lid - // that is X or Y? - if ( fitLid && ( surf >= 20 && surf < 28 ) && ( i !== 2 ) ) { - - // increase XY size by 7.7%, found empirically. I don't - // increase Z so that the teapot will continue to fit in the - // space -1 to 1 for Y (Y is up for the final model). - g[ c * 4 + r ] *= 1.077; - - } - - // Blinn "fixed" the teapot by dividing Z by blinnScale, and that's the - // data we now use. The original teapot is taller. Fix it: - if ( ! blinn && ( i === 2 ) ) { - - g[ c * 4 + r ] *= blinnScale; - - } - - } - - } - - gmx.set( g[ 0 ], g[ 1 ], g[ 2 ], g[ 3 ], g[ 4 ], g[ 5 ], g[ 6 ], g[ 7 ], g[ 8 ], g[ 9 ], g[ 10 ], g[ 11 ], g[ 12 ], g[ 13 ], g[ 14 ], g[ 15 ] ); - - tmtx.multiplyMatrices( gmx, ms ); - mgm[ i ].multiplyMatrices( mst, tmtx ); - - } - - // step along, get points, and output - for ( let sstep = 0; sstep <= segments; sstep ++ ) { - - const s = sstep / segments; - - for ( let tstep = 0; tstep <= segments; tstep ++ ) { - - const t = tstep / segments; - - // point from basis - // get power vectors and their derivatives - for ( p = 4, sval = tval = 1.0; p --; ) { - - sp[ p ] = sval; - tp[ p ] = tval; - sval *= s; - tval *= t; - - if ( p === 3 ) { - - dsp[ p ] = dtp[ p ] = 0.0; - dsval = dtval = 1.0; - - } else { - - dsp[ p ] = dsval * ( 3 - p ); - dtp[ p ] = dtval * ( 3 - p ); - dsval *= s; - dtval *= t; - - } - - } - - vsp.fromArray( sp ); - vtp.fromArray( tp ); - vdsp.fromArray( dsp ); - vdtp.fromArray( dtp ); - - // do for x,y,z - for ( let i = 0; i < 3; i ++ ) { - - // multiply power vectors times matrix to get value - tcoord = vsp.clone(); - tcoord.applyMatrix4( mgm[ i ] ); - vert[ i ] = tcoord.dot( vtp ); - - // get s and t tangent vectors - tcoord = vdsp.clone(); - tcoord.applyMatrix4( mgm[ i ] ); - sdir[ i ] = tcoord.dot( vtp ); - - tcoord = vsp.clone(); - tcoord.applyMatrix4( mgm[ i ] ); - tdir[ i ] = tcoord.dot( vdtp ); - - } - - // find normal - vsdir.fromArray( sdir ); - vtdir.fromArray( tdir ); - norm.crossVectors( vtdir, vsdir ); - norm.normalize(); - - // if X and Z length is 0, at the cusp, so point the normal up or down, depending on patch number - if ( vert[ 0 ] === 0 && vert[ 1 ] === 0 ) { - - // if above the middle of the teapot, normal points up, else down - normOut.set( 0, vert[ 2 ] > maxHeight2 ? 1 : - 1, 0 ); - - } else { - - // standard output: rotate on X axis - normOut.set( norm.x, norm.z, - norm.y ); - - } - - // store it all - vertices[ vertCount ++ ] = trueSize * vert[ 0 ]; - vertices[ vertCount ++ ] = trueSize * ( vert[ 2 ] - maxHeight2 ); - vertices[ vertCount ++ ] = - trueSize * vert[ 1 ]; - - normals[ normCount ++ ] = normOut.x; - normals[ normCount ++ ] = normOut.y; - normals[ normCount ++ ] = normOut.z; - - uvs[ uvCount ++ ] = 1 - t; - uvs[ uvCount ++ ] = 1 - s; - - } - - } - - // save the faces - for ( let sstep = 0; sstep < segments; sstep ++ ) { - - for ( let tstep = 0; tstep < segments; tstep ++ ) { - - const v1 = surfCount * vertPerRow * vertPerRow + sstep * vertPerRow + tstep; - const v2 = v1 + 1; - const v3 = v2 + vertPerRow; - const v4 = v1 + vertPerRow; - - // Normals and UVs cannot be shared. Without clone(), you can see the consequences - // of sharing if you call geometry.applyMatrix4( matrix ). - if ( notDegenerate( v1, v2, v3 ) ) { - - indices[ indexCount ++ ] = v1; - indices[ indexCount ++ ] = v2; - indices[ indexCount ++ ] = v3; - - } - - if ( notDegenerate( v1, v3, v4 ) ) { - - indices[ indexCount ++ ] = v1; - indices[ indexCount ++ ] = v3; - indices[ indexCount ++ ] = v4; - - } - - } - - } - - // increment only if a surface was used - surfCount ++; - - } - - } - - this.setIndex( new BufferAttribute( indices, 1 ) ); - this.setAttribute( 'position', new BufferAttribute( vertices, 3 ) ); - this.setAttribute( 'normal', new BufferAttribute( normals, 3 ) ); - this.setAttribute( 'uv', new BufferAttribute( uvs, 2 ) ); - - this.computeBoundingSphere(); - - } - -} - -export { TeapotGeometry }; diff --git a/three/addons/geometries/TextGeometry.js b/three/addons/geometries/TextGeometry.js deleted file mode 100644 index 5275c03..0000000 --- a/three/addons/geometries/TextGeometry.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Text = 3D Text - * - * parameters = { - * font: , // font - * - * size: , // size of the text - * height: , // thickness to extrude text - * curveSegments: , // number of points on the curves - * - * bevelEnabled: , // turn on bevel - * bevelThickness: , // how deep into text bevel goes - * bevelSize: , // how far from text outline (including bevelOffset) is bevel - * bevelOffset: // how far from text outline does bevel start - * } - */ - -import { - ExtrudeGeometry -} from 'three'; - -class TextGeometry extends ExtrudeGeometry { - - constructor( text, parameters = {} ) { - - const font = parameters.font; - - if ( font === undefined ) { - - super(); // generate default extrude geometry - - } else { - - const shapes = font.generateShapes( text, parameters.size ); - - // translate parameters to ExtrudeGeometry API - - parameters.depth = parameters.height !== undefined ? parameters.height : 50; - - // defaults - - if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10; - if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8; - if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false; - - super( shapes, parameters ); - - } - - this.type = 'TextGeometry'; - - } - -} - - -export { TextGeometry }; diff --git a/three/addons/helpers/LightProbeHelper.js b/three/addons/helpers/LightProbeHelper.js deleted file mode 100644 index 8120488..0000000 --- a/three/addons/helpers/LightProbeHelper.js +++ /dev/null @@ -1,130 +0,0 @@ -import { - Mesh, - ShaderMaterial, - SphereGeometry -} from 'three'; - -class LightProbeHelper extends Mesh { - - constructor( lightProbe, size ) { - - const material = new ShaderMaterial( { - - type: 'LightProbeHelperMaterial', - - uniforms: { - - sh: { value: lightProbe.sh.coefficients }, // by reference - - intensity: { value: lightProbe.intensity } - - }, - - vertexShader: [ - - 'varying vec3 vNormal;', - - 'void main() {', - - ' vNormal = normalize( normalMatrix * normal );', - - ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', - - '}', - - ].join( '\n' ), - - fragmentShader: [ - - '#define RECIPROCAL_PI 0.318309886', - - 'vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {', - - ' // matrix is assumed to be orthogonal', - - ' return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );', - - '}', - - '// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf', - 'vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {', - - ' // normal is assumed to have unit length', - - ' float x = normal.x, y = normal.y, z = normal.z;', - - ' // band 0', - ' vec3 result = shCoefficients[ 0 ] * 0.886227;', - - ' // band 1', - ' result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;', - ' result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;', - ' result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;', - - ' // band 2', - ' result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;', - ' result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;', - ' result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );', - ' result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;', - ' result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );', - - ' return result;', - - '}', - - 'uniform vec3 sh[ 9 ]; // sh coefficients', - - 'uniform float intensity; // light probe intensity', - - 'varying vec3 vNormal;', - - 'void main() {', - - ' vec3 normal = normalize( vNormal );', - - ' vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );', - - ' vec3 irradiance = shGetIrradianceAt( worldNormal, sh );', - - ' vec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;', - - ' gl_FragColor = linearToOutputTexel( vec4( outgoingLight, 1.0 ) );', - - '}' - - ].join( '\n' ) - - } ); - - const geometry = new SphereGeometry( 1, 32, 16 ); - - super( geometry, material ); - - this.lightProbe = lightProbe; - this.size = size; - this.type = 'LightProbeHelper'; - - this.onBeforeRender(); - - } - - dispose() { - - this.geometry.dispose(); - this.material.dispose(); - - } - - onBeforeRender() { - - this.position.copy( this.lightProbe.position ); - - this.scale.set( 1, 1, 1 ).multiplyScalar( this.size ); - - this.material.uniforms.intensity.value = this.lightProbe.intensity; - - } - -} - -export { LightProbeHelper }; diff --git a/three/addons/helpers/OctreeHelper.js b/three/addons/helpers/OctreeHelper.js deleted file mode 100644 index 972942c..0000000 --- a/three/addons/helpers/OctreeHelper.js +++ /dev/null @@ -1,73 +0,0 @@ -import { - LineSegments, - BufferGeometry, - Float32BufferAttribute, - LineBasicMaterial -} from 'three'; - -class OctreeHelper extends LineSegments { - - constructor( octree, color = 0xffff00 ) { - - super( new BufferGeometry(), new LineBasicMaterial( { color: color, toneMapped: false } ) ); - - this.octree = octree; - this.color = color; - - this.type = 'OctreeHelper'; - - this.update(); - - } - - update() { - - const vertices = []; - - function traverse( tree ) { - - for ( let i = 0; i < tree.length; i ++ ) { - - const min = tree[ i ].box.min; - const max = tree[ i ].box.max; - - vertices.push( max.x, max.y, max.z ); vertices.push( min.x, max.y, max.z ); // 0, 1 - vertices.push( min.x, max.y, max.z ); vertices.push( min.x, min.y, max.z ); // 1, 2 - vertices.push( min.x, min.y, max.z ); vertices.push( max.x, min.y, max.z ); // 2, 3 - vertices.push( max.x, min.y, max.z ); vertices.push( max.x, max.y, max.z ); // 3, 0 - - vertices.push( max.x, max.y, min.z ); vertices.push( min.x, max.y, min.z ); // 4, 5 - vertices.push( min.x, max.y, min.z ); vertices.push( min.x, min.y, min.z ); // 5, 6 - vertices.push( min.x, min.y, min.z ); vertices.push( max.x, min.y, min.z ); // 6, 7 - vertices.push( max.x, min.y, min.z ); vertices.push( max.x, max.y, min.z ); // 7, 4 - - vertices.push( max.x, max.y, max.z ); vertices.push( max.x, max.y, min.z ); // 0, 4 - vertices.push( min.x, max.y, max.z ); vertices.push( min.x, max.y, min.z ); // 1, 5 - vertices.push( min.x, min.y, max.z ); vertices.push( min.x, min.y, min.z ); // 2, 6 - vertices.push( max.x, min.y, max.z ); vertices.push( max.x, min.y, min.z ); // 3, 7 - - traverse( tree[ i ].subTrees ); - - } - - } - - traverse( this.octree.subTrees ); - - this.geometry.dispose(); - - this.geometry = new BufferGeometry(); - this.geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - - } - - dispose() { - - this.geometry.dispose(); - this.material.dispose(); - - } - -} - -export { OctreeHelper }; diff --git a/three/addons/helpers/PositionalAudioHelper.js b/three/addons/helpers/PositionalAudioHelper.js deleted file mode 100644 index 0a20ea5..0000000 --- a/three/addons/helpers/PositionalAudioHelper.js +++ /dev/null @@ -1,109 +0,0 @@ -import { - BufferGeometry, - BufferAttribute, - LineBasicMaterial, - Line, - MathUtils -} from 'three'; - -class PositionalAudioHelper extends Line { - - constructor( audio, range = 1, divisionsInnerAngle = 16, divisionsOuterAngle = 2 ) { - - const geometry = new BufferGeometry(); - const divisions = divisionsInnerAngle + divisionsOuterAngle * 2; - const positions = new Float32Array( ( divisions * 3 + 3 ) * 3 ); - geometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) ); - - const materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } ); - const materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } ); - - super( geometry, [ materialOuterAngle, materialInnerAngle ] ); - - this.audio = audio; - this.range = range; - this.divisionsInnerAngle = divisionsInnerAngle; - this.divisionsOuterAngle = divisionsOuterAngle; - this.type = 'PositionalAudioHelper'; - - this.update(); - - } - - update() { - - const audio = this.audio; - const range = this.range; - const divisionsInnerAngle = this.divisionsInnerAngle; - const divisionsOuterAngle = this.divisionsOuterAngle; - - const coneInnerAngle = MathUtils.degToRad( audio.panner.coneInnerAngle ); - const coneOuterAngle = MathUtils.degToRad( audio.panner.coneOuterAngle ); - - const halfConeInnerAngle = coneInnerAngle / 2; - const halfConeOuterAngle = coneOuterAngle / 2; - - let start = 0; - let count = 0; - let i; - let stride; - - const geometry = this.geometry; - const positionAttribute = geometry.attributes.position; - - geometry.clearGroups(); - - // - - function generateSegment( from, to, divisions, materialIndex ) { - - const step = ( to - from ) / divisions; - - positionAttribute.setXYZ( start, 0, 0, 0 ); - count ++; - - for ( i = from; i < to; i += step ) { - - stride = start + count; - - positionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range ); - positionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range ); - positionAttribute.setXYZ( stride + 2, 0, 0, 0 ); - - count += 3; - - } - - geometry.addGroup( start, count, materialIndex ); - - start += count; - count = 0; - - } - - // - - generateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 ); - generateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 ); - generateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 ); - - // - - positionAttribute.needsUpdate = true; - - if ( coneInnerAngle === coneOuterAngle ) this.material[ 0 ].visible = false; - - } - - dispose() { - - this.geometry.dispose(); - this.material[ 0 ].dispose(); - this.material[ 1 ].dispose(); - - } - -} - - -export { PositionalAudioHelper }; diff --git a/three/addons/helpers/RectAreaLightHelper.js b/three/addons/helpers/RectAreaLightHelper.js deleted file mode 100644 index 416fe1b..0000000 --- a/three/addons/helpers/RectAreaLightHelper.js +++ /dev/null @@ -1,85 +0,0 @@ -import { - BackSide, - BufferGeometry, - Float32BufferAttribute, - Line, - LineBasicMaterial, - Mesh, - MeshBasicMaterial -} from 'three'; - -/** - * This helper must be added as a child of the light - */ - -class RectAreaLightHelper extends Line { - - constructor( light, color ) { - - const positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ]; - - const geometry = new BufferGeometry(); - geometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - geometry.computeBoundingSphere(); - - const material = new LineBasicMaterial( { fog: false } ); - - super( geometry, material ); - - this.light = light; - this.color = color; // optional hardwired color for the helper - this.type = 'RectAreaLightHelper'; - - // - - const positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ]; - - const geometry2 = new BufferGeometry(); - geometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); - geometry2.computeBoundingSphere(); - - this.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) ); - - } - - updateMatrixWorld() { - - this.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 ); - - if ( this.color !== undefined ) { - - this.material.color.set( this.color ); - this.children[ 0 ].material.color.set( this.color ); - - } else { - - this.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity ); - - // prevent hue shift - const c = this.material.color; - const max = Math.max( c.r, c.g, c.b ); - if ( max > 1 ) c.multiplyScalar( 1 / max ); - - this.children[ 0 ].material.color.copy( this.material.color ); - - } - - // ignore world scale on light - this.matrixWorld.extractRotation( this.light.matrixWorld ).scale( this.scale ).copyPosition( this.light.matrixWorld ); - - this.children[ 0 ].matrixWorld.copy( this.matrixWorld ); - - } - - dispose() { - - this.geometry.dispose(); - this.material.dispose(); - this.children[ 0 ].geometry.dispose(); - this.children[ 0 ].material.dispose(); - - } - -} - -export { RectAreaLightHelper }; diff --git a/three/addons/helpers/TextureHelper.js b/three/addons/helpers/TextureHelper.js deleted file mode 100644 index 00f8e53..0000000 --- a/three/addons/helpers/TextureHelper.js +++ /dev/null @@ -1,237 +0,0 @@ -import { - BoxGeometry, - BufferAttribute, - DoubleSide, - Mesh, - PlaneGeometry, - ShaderMaterial, - Vector3, -} from 'three'; -import { mergeGeometries } from '../utils/BufferGeometryUtils.js'; - -class TextureHelper extends Mesh { - - constructor( texture, width = 1, height = 1, depth = 1 ) { - - const material = new ShaderMaterial( { - - type: 'TextureHelperMaterial', - - side: DoubleSide, - transparent: true, - - uniforms: { - - map: { value: texture }, - alpha: { value: getAlpha( texture ) }, - - }, - - vertexShader: [ - - 'attribute vec3 uvw;', - - 'varying vec3 vUvw;', - - 'void main() {', - - ' vUvw = uvw;', - - ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', - - '}', - - ].join( '\n' ), - - fragmentShader: [ - - 'precision highp float;', - - 'precision highp sampler2DArray;', - - 'precision highp sampler3D;', - - 'uniform {samplerType} map;', - - 'uniform float alpha;', - - 'varying vec3 vUvw;', - - 'vec4 textureHelper( in sampler2D map ) { return texture( map, vUvw.xy ); }', - - 'vec4 textureHelper( in sampler2DArray map ) { return texture( map, vUvw ); }', - - 'vec4 textureHelper( in sampler3D map ) { return texture( map, vUvw ); }', - - 'vec4 textureHelper( in samplerCube map ) { return texture( map, vUvw ); }', - - 'void main() {', - - ' gl_FragColor = linearToOutputTexel( vec4( textureHelper( map ).xyz, alpha ) );', - - '}' - - ].join( '\n' ).replace( '{samplerType}', getSamplerType( texture ) ) - - } ); - - const geometry = texture.isCubeTexture - ? createCubeGeometry( width, height, depth ) - : createSliceGeometry( texture, width, height, depth ); - - super( geometry, material ); - - this.texture = texture; - this.type = 'TextureHelper'; - - } - - dispose() { - - this.geometry.dispose(); - this.material.dispose(); - - } - -} - -function getSamplerType( texture ) { - - if ( texture.isCubeTexture ) { - - return 'samplerCube'; - - } else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) { - - return 'sampler2DArray'; - - } else if ( texture.isData3DTexture || texture.isCompressed3DTexture ) { - - return 'sampler3D'; - - } else { - - return 'sampler2D'; - - } - -} - -function getImageCount( texture ) { - - if ( texture.isCubeTexture ) { - - return 6; - - } else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) { - - return texture.image.depth; - - } else if ( texture.isData3DTexture || texture.isCompressed3DTexture ) { - - return texture.image.depth; - - } else { - - return 1; - - } - -} - -function getAlpha( texture ) { - - if ( texture.isCubeTexture ) { - - return 1; - - } else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) { - - return Math.max( 1 / texture.image.depth, 0.25 ); - - } else if ( texture.isData3DTexture || texture.isCompressed3DTexture ) { - - return Math.max( 1 / texture.image.depth, 0.25 ); - - } else { - - return 1; - - } - -} - -function createCubeGeometry( width, height, depth ) { - - const geometry = new BoxGeometry( width, height, depth ); - - const position = geometry.attributes.position; - const uv = geometry.attributes.uv; - const uvw = new BufferAttribute( new Float32Array( uv.count * 3 ), 3 ); - - const _direction = new Vector3(); - - for ( let j = 0, jl = uv.count; j < jl; ++ j ) { - - _direction.fromBufferAttribute( position, j ).normalize(); - - const u = _direction.x; - const v = _direction.y; - const w = _direction.z; - - uvw.setXYZ( j, u, v, w ); - - } - - geometry.deleteAttribute( 'uv' ); - geometry.setAttribute( 'uvw', uvw ); - - return geometry; - -} - -function createSliceGeometry( texture, width, height, depth ) { - - const sliceCount = getImageCount( texture ); - - const geometries = []; - - for ( let i = 0; i < sliceCount; ++ i ) { - - const geometry = new PlaneGeometry( width, height ); - - if ( sliceCount > 1 ) { - - geometry.translate( 0, 0, depth * ( i / ( sliceCount - 1 ) - 0.5 ) ); - - } - - const uv = geometry.attributes.uv; - const uvw = new BufferAttribute( new Float32Array( uv.count * 3 ), 3 ); - - for ( let j = 0, jl = uv.count; j < jl; ++ j ) { - - const u = uv.getX( j ); - const v = texture.flipY ? uv.getY( j ) : 1 - uv.getY( j ); - const w = sliceCount === 1 - ? 1 - : texture.isDataArrayTexture || texture.isCompressedArrayTexture - ? i - : i / ( sliceCount - 1 ); - - uvw.setXYZ( j, u, v, w ); - - } - - geometry.deleteAttribute( 'uv' ); - geometry.setAttribute( 'uvw', uvw ); - - geometries.push( geometry ); - - } - - return mergeGeometries( geometries ); - -} - -export { TextureHelper }; \ No newline at end of file diff --git a/three/addons/helpers/VertexNormalsHelper.js b/three/addons/helpers/VertexNormalsHelper.js deleted file mode 100644 index bfe41ab..0000000 --- a/three/addons/helpers/VertexNormalsHelper.js +++ /dev/null @@ -1,96 +0,0 @@ -import { - BufferGeometry, - Float32BufferAttribute, - LineSegments, - LineBasicMaterial, - Matrix3, - Vector3 -} from 'three'; - -const _v1 = new Vector3(); -const _v2 = new Vector3(); -const _normalMatrix = new Matrix3(); - -class VertexNormalsHelper extends LineSegments { - - constructor( object, size = 1, color = 0xff0000 ) { - - const geometry = new BufferGeometry(); - - const nNormals = object.geometry.attributes.normal.count; - const positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); - - geometry.setAttribute( 'position', positions ); - - super( geometry, new LineBasicMaterial( { color, toneMapped: false } ) ); - - this.object = object; - this.size = size; - this.type = 'VertexNormalsHelper'; - - // - - this.matrixAutoUpdate = false; - - this.update(); - - } - - update() { - - this.object.updateMatrixWorld( true ); - - _normalMatrix.getNormalMatrix( this.object.matrixWorld ); - - const matrixWorld = this.object.matrixWorld; - - const position = this.geometry.attributes.position; - - // - - const objGeometry = this.object.geometry; - - if ( objGeometry ) { - - const objPos = objGeometry.attributes.position; - - const objNorm = objGeometry.attributes.normal; - - let idx = 0; - - // for simplicity, ignore index and drawcalls, and render every normal - - for ( let j = 0, jl = objPos.count; j < jl; j ++ ) { - - _v1.fromBufferAttribute( objPos, j ).applyMatrix4( matrixWorld ); - - _v2.fromBufferAttribute( objNorm, j ); - - _v2.applyMatrix3( _normalMatrix ).normalize().multiplyScalar( this.size ).add( _v1 ); - - position.setXYZ( idx, _v1.x, _v1.y, _v1.z ); - - idx = idx + 1; - - position.setXYZ( idx, _v2.x, _v2.y, _v2.z ); - - idx = idx + 1; - - } - - } - - position.needsUpdate = true; - - } - - dispose() { - - this.geometry.dispose(); - this.material.dispose(); - - } - -} - -export { VertexNormalsHelper }; diff --git a/three/addons/helpers/VertexTangentsHelper.js b/three/addons/helpers/VertexTangentsHelper.js deleted file mode 100644 index 1ad413f..0000000 --- a/three/addons/helpers/VertexTangentsHelper.js +++ /dev/null @@ -1,88 +0,0 @@ -import { - BufferGeometry, - Float32BufferAttribute, - LineSegments, - LineBasicMaterial, - Vector3 -} from 'three'; - -const _v1 = new Vector3(); -const _v2 = new Vector3(); - -class VertexTangentsHelper extends LineSegments { - - constructor( object, size = 1, color = 0x00ffff ) { - - const geometry = new BufferGeometry(); - - const nTangents = object.geometry.attributes.tangent.count; - const positions = new Float32BufferAttribute( nTangents * 2 * 3, 3 ); - - geometry.setAttribute( 'position', positions ); - - super( geometry, new LineBasicMaterial( { color, toneMapped: false } ) ); - - this.object = object; - this.size = size; - this.type = 'VertexTangentsHelper'; - - // - - this.matrixAutoUpdate = false; - - this.update(); - - } - - update() { - - this.object.updateMatrixWorld( true ); - - const matrixWorld = this.object.matrixWorld; - - const position = this.geometry.attributes.position; - - // - - const objGeometry = this.object.geometry; - - const objPos = objGeometry.attributes.position; - - const objTan = objGeometry.attributes.tangent; - - let idx = 0; - - // for simplicity, ignore index and drawcalls, and render every tangent - - for ( let j = 0, jl = objPos.count; j < jl; j ++ ) { - - _v1.fromBufferAttribute( objPos, j ).applyMatrix4( matrixWorld ); - - _v2.fromBufferAttribute( objTan, j ); - - _v2.transformDirection( matrixWorld ).multiplyScalar( this.size ).add( _v1 ); - - position.setXYZ( idx, _v1.x, _v1.y, _v1.z ); - - idx = idx + 1; - - position.setXYZ( idx, _v2.x, _v2.y, _v2.z ); - - idx = idx + 1; - - } - - position.needsUpdate = true; - - } - - dispose() { - - this.geometry.dispose(); - this.material.dispose(); - - } - -} - -export { VertexTangentsHelper }; diff --git a/three/addons/helpers/ViewHelper.js b/three/addons/helpers/ViewHelper.js deleted file mode 100644 index 077a922..0000000 --- a/three/addons/helpers/ViewHelper.js +++ /dev/null @@ -1,333 +0,0 @@ -import { - BoxGeometry, - CanvasTexture, - Color, - Euler, - Mesh, - MeshBasicMaterial, - Object3D, - OrthographicCamera, - Quaternion, - Raycaster, - Sprite, - SpriteMaterial, - Vector2, - Vector3, - Vector4 -} from 'three'; - -class ViewHelper extends Object3D { - - constructor( camera, domElement ) { - - super(); - - this.isViewHelper = true; - - this.animating = false; - this.center = new Vector3(); - - const color1 = new Color( '#ff3653' ); - const color2 = new Color( '#8adb00' ); - const color3 = new Color( '#2c8fff' ); - - const interactiveObjects = []; - const raycaster = new Raycaster(); - const mouse = new Vector2(); - const dummy = new Object3D(); - - const orthoCamera = new OrthographicCamera( - 2, 2, 2, - 2, 0, 4 ); - orthoCamera.position.set( 0, 0, 2 ); - - const geometry = new BoxGeometry( 0.8, 0.05, 0.05 ).translate( 0.4, 0, 0 ); - - const xAxis = new Mesh( geometry, getAxisMaterial( color1 ) ); - const yAxis = new Mesh( geometry, getAxisMaterial( color2 ) ); - const zAxis = new Mesh( geometry, getAxisMaterial( color3 ) ); - - yAxis.rotation.z = Math.PI / 2; - zAxis.rotation.y = - Math.PI / 2; - - this.add( xAxis ); - this.add( zAxis ); - this.add( yAxis ); - - const posXAxisHelper = new Sprite( getSpriteMaterial( color1, 'X' ) ); - posXAxisHelper.userData.type = 'posX'; - const posYAxisHelper = new Sprite( getSpriteMaterial( color2, 'Y' ) ); - posYAxisHelper.userData.type = 'posY'; - const posZAxisHelper = new Sprite( getSpriteMaterial( color3, 'Z' ) ); - posZAxisHelper.userData.type = 'posZ'; - const negXAxisHelper = new Sprite( getSpriteMaterial( color1 ) ); - negXAxisHelper.userData.type = 'negX'; - const negYAxisHelper = new Sprite( getSpriteMaterial( color2 ) ); - negYAxisHelper.userData.type = 'negY'; - const negZAxisHelper = new Sprite( getSpriteMaterial( color3 ) ); - negZAxisHelper.userData.type = 'negZ'; - - posXAxisHelper.position.x = 1; - posYAxisHelper.position.y = 1; - posZAxisHelper.position.z = 1; - negXAxisHelper.position.x = - 1; - negXAxisHelper.scale.setScalar( 0.8 ); - negYAxisHelper.position.y = - 1; - negYAxisHelper.scale.setScalar( 0.8 ); - negZAxisHelper.position.z = - 1; - negZAxisHelper.scale.setScalar( 0.8 ); - - this.add( posXAxisHelper ); - this.add( posYAxisHelper ); - this.add( posZAxisHelper ); - this.add( negXAxisHelper ); - this.add( negYAxisHelper ); - this.add( negZAxisHelper ); - - interactiveObjects.push( posXAxisHelper ); - interactiveObjects.push( posYAxisHelper ); - interactiveObjects.push( posZAxisHelper ); - interactiveObjects.push( negXAxisHelper ); - interactiveObjects.push( negYAxisHelper ); - interactiveObjects.push( negZAxisHelper ); - - const point = new Vector3(); - const dim = 128; - const turnRate = 2 * Math.PI; // turn rate in angles per second - - this.render = function ( renderer ) { - - this.quaternion.copy( camera.quaternion ).invert(); - this.updateMatrixWorld(); - - point.set( 0, 0, 1 ); - point.applyQuaternion( camera.quaternion ); - - if ( point.x >= 0 ) { - - posXAxisHelper.material.opacity = 1; - negXAxisHelper.material.opacity = 0.5; - - } else { - - posXAxisHelper.material.opacity = 0.5; - negXAxisHelper.material.opacity = 1; - - } - - if ( point.y >= 0 ) { - - posYAxisHelper.material.opacity = 1; - negYAxisHelper.material.opacity = 0.5; - - } else { - - posYAxisHelper.material.opacity = 0.5; - negYAxisHelper.material.opacity = 1; - - } - - if ( point.z >= 0 ) { - - posZAxisHelper.material.opacity = 1; - negZAxisHelper.material.opacity = 0.5; - - } else { - - posZAxisHelper.material.opacity = 0.5; - negZAxisHelper.material.opacity = 1; - - } - - // - - const x = domElement.offsetWidth - dim; - - renderer.clearDepth(); - - renderer.getViewport( viewport ); - renderer.setViewport( x, 0, dim, dim ); - - renderer.render( this, orthoCamera ); - - renderer.setViewport( viewport.x, viewport.y, viewport.z, viewport.w ); - - }; - - const targetPosition = new Vector3(); - const targetQuaternion = new Quaternion(); - - const q1 = new Quaternion(); - const q2 = new Quaternion(); - const viewport = new Vector4(); - let radius = 0; - - this.handleClick = function ( event ) { - - if ( this.animating === true ) return false; - - const rect = domElement.getBoundingClientRect(); - const offsetX = rect.left + ( domElement.offsetWidth - dim ); - const offsetY = rect.top + ( domElement.offsetHeight - dim ); - mouse.x = ( ( event.clientX - offsetX ) / ( rect.right - offsetX ) ) * 2 - 1; - mouse.y = - ( ( event.clientY - offsetY ) / ( rect.bottom - offsetY ) ) * 2 + 1; - - raycaster.setFromCamera( mouse, orthoCamera ); - - const intersects = raycaster.intersectObjects( interactiveObjects ); - - if ( intersects.length > 0 ) { - - const intersection = intersects[ 0 ]; - const object = intersection.object; - - prepareAnimationData( object, this.center ); - - this.animating = true; - - return true; - - } else { - - return false; - - } - - }; - - this.update = function ( delta ) { - - const step = delta * turnRate; - - // animate position by doing a slerp and then scaling the position on the unit sphere - - q1.rotateTowards( q2, step ); - camera.position.set( 0, 0, 1 ).applyQuaternion( q1 ).multiplyScalar( radius ).add( this.center ); - - // animate orientation - - camera.quaternion.rotateTowards( targetQuaternion, step ); - - if ( q1.angleTo( q2 ) === 0 ) { - - this.animating = false; - - } - - }; - - this.dispose = function () { - - geometry.dispose(); - - xAxis.material.dispose(); - yAxis.material.dispose(); - zAxis.material.dispose(); - - posXAxisHelper.material.map.dispose(); - posYAxisHelper.material.map.dispose(); - posZAxisHelper.material.map.dispose(); - negXAxisHelper.material.map.dispose(); - negYAxisHelper.material.map.dispose(); - negZAxisHelper.material.map.dispose(); - - posXAxisHelper.material.dispose(); - posYAxisHelper.material.dispose(); - posZAxisHelper.material.dispose(); - negXAxisHelper.material.dispose(); - negYAxisHelper.material.dispose(); - negZAxisHelper.material.dispose(); - - }; - - function prepareAnimationData( object, focusPoint ) { - - switch ( object.userData.type ) { - - case 'posX': - targetPosition.set( 1, 0, 0 ); - targetQuaternion.setFromEuler( new Euler( 0, Math.PI * 0.5, 0 ) ); - break; - - case 'posY': - targetPosition.set( 0, 1, 0 ); - targetQuaternion.setFromEuler( new Euler( - Math.PI * 0.5, 0, 0 ) ); - break; - - case 'posZ': - targetPosition.set( 0, 0, 1 ); - targetQuaternion.setFromEuler( new Euler() ); - break; - - case 'negX': - targetPosition.set( - 1, 0, 0 ); - targetQuaternion.setFromEuler( new Euler( 0, - Math.PI * 0.5, 0 ) ); - break; - - case 'negY': - targetPosition.set( 0, - 1, 0 ); - targetQuaternion.setFromEuler( new Euler( Math.PI * 0.5, 0, 0 ) ); - break; - - case 'negZ': - targetPosition.set( 0, 0, - 1 ); - targetQuaternion.setFromEuler( new Euler( 0, Math.PI, 0 ) ); - break; - - default: - console.error( 'ViewHelper: Invalid axis.' ); - - } - - // - - radius = camera.position.distanceTo( focusPoint ); - targetPosition.multiplyScalar( radius ).add( focusPoint ); - - dummy.position.copy( focusPoint ); - - dummy.lookAt( camera.position ); - q1.copy( dummy.quaternion ); - - dummy.lookAt( targetPosition ); - q2.copy( dummy.quaternion ); - - } - - function getAxisMaterial( color ) { - - return new MeshBasicMaterial( { color: color, toneMapped: false } ); - - } - - function getSpriteMaterial( color, text = null ) { - - const canvas = document.createElement( 'canvas' ); - canvas.width = 64; - canvas.height = 64; - - const context = canvas.getContext( '2d' ); - context.beginPath(); - context.arc( 32, 32, 16, 0, 2 * Math.PI ); - context.closePath(); - context.fillStyle = color.getStyle(); - context.fill(); - - if ( text !== null ) { - - context.font = '24px Arial'; - context.textAlign = 'center'; - context.fillStyle = '#000000'; - context.fillText( text, 32, 41 ); - - } - - const texture = new CanvasTexture( canvas ); - - return new SpriteMaterial( { map: texture, toneMapped: false } ); - - } - - } - -} - -export { ViewHelper }; diff --git a/three/addons/interactive/HTMLMesh.js b/three/addons/interactive/HTMLMesh.js deleted file mode 100644 index 7e43039..0000000 --- a/three/addons/interactive/HTMLMesh.js +++ /dev/null @@ -1,572 +0,0 @@ -import { - CanvasTexture, - LinearFilter, - Mesh, - MeshBasicMaterial, - PlaneGeometry, - SRGBColorSpace, - Color -} from 'three'; - -class HTMLMesh extends Mesh { - - constructor( dom ) { - - const texture = new HTMLTexture( dom ); - - const geometry = new PlaneGeometry( texture.image.width * 0.001, texture.image.height * 0.001 ); - const material = new MeshBasicMaterial( { map: texture, toneMapped: false, transparent: true } ); - - super( geometry, material ); - - function onEvent( event ) { - - material.map.dispatchDOMEvent( event ); - - } - - this.addEventListener( 'mousedown', onEvent ); - this.addEventListener( 'mousemove', onEvent ); - this.addEventListener( 'mouseup', onEvent ); - this.addEventListener( 'click', onEvent ); - - this.dispose = function () { - - geometry.dispose(); - material.dispose(); - - material.map.dispose(); - - canvases.delete( dom ); - - this.removeEventListener( 'mousedown', onEvent ); - this.removeEventListener( 'mousemove', onEvent ); - this.removeEventListener( 'mouseup', onEvent ); - this.removeEventListener( 'click', onEvent ); - - }; - - } - -} - -class HTMLTexture extends CanvasTexture { - - constructor( dom ) { - - super( html2canvas( dom ) ); - - this.dom = dom; - - this.anisotropy = 16; - this.colorSpace = SRGBColorSpace; - this.minFilter = LinearFilter; - this.magFilter = LinearFilter; - - // Create an observer on the DOM, and run html2canvas update in the next loop - const observer = new MutationObserver( () => { - - if ( ! this.scheduleUpdate ) { - - // ideally should use xr.requestAnimationFrame, here setTimeout to avoid passing the renderer - this.scheduleUpdate = setTimeout( () => this.update(), 16 ); - - } - - } ); - - const config = { attributes: true, childList: true, subtree: true, characterData: true }; - observer.observe( dom, config ); - - this.observer = observer; - - } - - dispatchDOMEvent( event ) { - - if ( event.data ) { - - htmlevent( this.dom, event.type, event.data.x, event.data.y ); - - } - - } - - update() { - - this.image = html2canvas( this.dom ); - this.needsUpdate = true; - - this.scheduleUpdate = null; - - } - - dispose() { - - if ( this.observer ) { - - this.observer.disconnect(); - - } - - this.scheduleUpdate = clearTimeout( this.scheduleUpdate ); - - super.dispose(); - - } - -} - - -// - -const canvases = new WeakMap(); - -function html2canvas( element ) { - - const range = document.createRange(); - const color = new Color(); - - function Clipper( context ) { - - const clips = []; - let isClipping = false; - - function doClip() { - - if ( isClipping ) { - - isClipping = false; - context.restore(); - - } - - if ( clips.length === 0 ) return; - - let minX = - Infinity, minY = - Infinity; - let maxX = Infinity, maxY = Infinity; - - for ( let i = 0; i < clips.length; i ++ ) { - - const clip = clips[ i ]; - - minX = Math.max( minX, clip.x ); - minY = Math.max( minY, clip.y ); - maxX = Math.min( maxX, clip.x + clip.width ); - maxY = Math.min( maxY, clip.y + clip.height ); - - } - - context.save(); - context.beginPath(); - context.rect( minX, minY, maxX - minX, maxY - minY ); - context.clip(); - - isClipping = true; - - } - - return { - - add: function ( clip ) { - - clips.push( clip ); - doClip(); - - }, - - remove: function () { - - clips.pop(); - doClip(); - - } - - }; - - } - - function drawText( style, x, y, string ) { - - if ( string !== '' ) { - - if ( style.textTransform === 'uppercase' ) { - - string = string.toUpperCase(); - - } - - context.font = style.fontWeight + ' ' + style.fontSize + ' ' + style.fontFamily; - context.textBaseline = 'top'; - context.fillStyle = style.color; - context.fillText( string, x, y + parseFloat( style.fontSize ) * 0.1 ); - - } - - } - - function buildRectPath( x, y, w, h, r ) { - - if ( w < 2 * r ) r = w / 2; - if ( h < 2 * r ) r = h / 2; - - context.beginPath(); - context.moveTo( x + r, y ); - context.arcTo( x + w, y, x + w, y + h, r ); - context.arcTo( x + w, y + h, x, y + h, r ); - context.arcTo( x, y + h, x, y, r ); - context.arcTo( x, y, x + w, y, r ); - context.closePath(); - - } - - function drawBorder( style, which, x, y, width, height ) { - - const borderWidth = style[ which + 'Width' ]; - const borderStyle = style[ which + 'Style' ]; - const borderColor = style[ which + 'Color' ]; - - if ( borderWidth !== '0px' && borderStyle !== 'none' && borderColor !== 'transparent' && borderColor !== 'rgba(0, 0, 0, 0)' ) { - - context.strokeStyle = borderColor; - context.lineWidth = parseFloat( borderWidth ); - context.beginPath(); - context.moveTo( x, y ); - context.lineTo( x + width, y + height ); - context.stroke(); - - } - - } - - function drawElement( element, style ) { - - let x = 0, y = 0, width = 0, height = 0; - - if ( element.nodeType === Node.TEXT_NODE ) { - - // text - - range.selectNode( element ); - - const rect = range.getBoundingClientRect(); - - x = rect.left - offset.left - 0.5; - y = rect.top - offset.top - 0.5; - width = rect.width; - height = rect.height; - - drawText( style, x, y, element.nodeValue.trim() ); - - } else if ( element.nodeType === Node.COMMENT_NODE ) { - - return; - - } else if ( element instanceof HTMLCanvasElement ) { - - // Canvas element - if ( element.style.display === 'none' ) return; - - const rect = element.getBoundingClientRect(); - - x = rect.left - offset.left - 0.5; - y = rect.top - offset.top - 0.5; - - context.save(); - const dpr = window.devicePixelRatio; - context.scale( 1 / dpr, 1 / dpr ); - context.drawImage( element, x, y ); - context.restore(); - - } else if ( element instanceof HTMLImageElement ) { - - if ( element.style.display === 'none' ) return; - - const rect = element.getBoundingClientRect(); - - x = rect.left - offset.left - 0.5; - y = rect.top - offset.top - 0.5; - width = rect.width; - height = rect.height; - - context.drawImage( element, x, y, width, height ); - - } else { - - if ( element.style.display === 'none' ) return; - - const rect = element.getBoundingClientRect(); - - x = rect.left - offset.left - 0.5; - y = rect.top - offset.top - 0.5; - width = rect.width; - height = rect.height; - - style = window.getComputedStyle( element ); - - // Get the border of the element used for fill and border - - buildRectPath( x, y, width, height, parseFloat( style.borderRadius ) ); - - const backgroundColor = style.backgroundColor; - - if ( backgroundColor !== 'transparent' && backgroundColor !== 'rgba(0, 0, 0, 0)' ) { - - context.fillStyle = backgroundColor; - context.fill(); - - } - - // If all the borders match then stroke the round rectangle - - const borders = [ 'borderTop', 'borderLeft', 'borderBottom', 'borderRight' ]; - - let match = true; - let prevBorder = null; - - for ( const border of borders ) { - - if ( prevBorder !== null ) { - - match = ( style[ border + 'Width' ] === style[ prevBorder + 'Width' ] ) && - ( style[ border + 'Color' ] === style[ prevBorder + 'Color' ] ) && - ( style[ border + 'Style' ] === style[ prevBorder + 'Style' ] ); - - } - - if ( match === false ) break; - - prevBorder = border; - - } - - if ( match === true ) { - - // They all match so stroke the rectangle from before allows for border-radius - - const width = parseFloat( style.borderTopWidth ); - - if ( style.borderTopWidth !== '0px' && style.borderTopStyle !== 'none' && style.borderTopColor !== 'transparent' && style.borderTopColor !== 'rgba(0, 0, 0, 0)' ) { - - context.strokeStyle = style.borderTopColor; - context.lineWidth = width; - context.stroke(); - - } - - } else { - - // Otherwise draw individual borders - - drawBorder( style, 'borderTop', x, y, width, 0 ); - drawBorder( style, 'borderLeft', x, y, 0, height ); - drawBorder( style, 'borderBottom', x, y + height, width, 0 ); - drawBorder( style, 'borderRight', x + width, y, 0, height ); - - } - - if ( element instanceof HTMLInputElement ) { - - let accentColor = style.accentColor; - - if ( accentColor === undefined || accentColor === 'auto' ) accentColor = style.color; - - color.set( accentColor ); - - const luminance = Math.sqrt( 0.299 * ( color.r ** 2 ) + 0.587 * ( color.g ** 2 ) + 0.114 * ( color.b ** 2 ) ); - const accentTextColor = luminance < 0.5 ? 'white' : '#111111'; - - if ( element.type === 'radio' ) { - - buildRectPath( x, y, width, height, height ); - - context.fillStyle = 'white'; - context.strokeStyle = accentColor; - context.lineWidth = 1; - context.fill(); - context.stroke(); - - if ( element.checked ) { - - buildRectPath( x + 2, y + 2, width - 4, height - 4, height ); - - context.fillStyle = accentColor; - context.strokeStyle = accentTextColor; - context.lineWidth = 2; - context.fill(); - context.stroke(); - - } - - } - - if ( element.type === 'checkbox' ) { - - buildRectPath( x, y, width, height, 2 ); - - context.fillStyle = element.checked ? accentColor : 'white'; - context.strokeStyle = element.checked ? accentTextColor : accentColor; - context.lineWidth = 1; - context.stroke(); - context.fill(); - - if ( element.checked ) { - - const currentTextAlign = context.textAlign; - - context.textAlign = 'center'; - - const properties = { - color: accentTextColor, - fontFamily: style.fontFamily, - fontSize: height + 'px', - fontWeight: 'bold' - }; - - drawText( properties, x + ( width / 2 ), y, '✔' ); - - context.textAlign = currentTextAlign; - - } - - } - - if ( element.type === 'range' ) { - - const [ min, max, value ] = [ 'min', 'max', 'value' ].map( property => parseFloat( element[ property ] ) ); - const position = ( ( value - min ) / ( max - min ) ) * ( width - height ); - - buildRectPath( x, y + ( height / 4 ), width, height / 2, height / 4 ); - context.fillStyle = accentTextColor; - context.strokeStyle = accentColor; - context.lineWidth = 1; - context.fill(); - context.stroke(); - - buildRectPath( x, y + ( height / 4 ), position + ( height / 2 ), height / 2, height / 4 ); - context.fillStyle = accentColor; - context.fill(); - - buildRectPath( x + position, y, height, height, height / 2 ); - context.fillStyle = accentColor; - context.fill(); - - } - - if ( element.type === 'color' || element.type === 'text' || element.type === 'number' ) { - - clipper.add( { x: x, y: y, width: width, height: height } ); - - drawText( style, x + parseInt( style.paddingLeft ), y + parseInt( style.paddingTop ), element.value ); - - clipper.remove(); - - } - - } - - } - - /* - // debug - context.strokeStyle = '#' + Math.random().toString( 16 ).slice( - 3 ); - context.strokeRect( x - 0.5, y - 0.5, width + 1, height + 1 ); - */ - - const isClipping = style.overflow === 'auto' || style.overflow === 'hidden'; - - if ( isClipping ) clipper.add( { x: x, y: y, width: width, height: height } ); - - for ( let i = 0; i < element.childNodes.length; i ++ ) { - - drawElement( element.childNodes[ i ], style ); - - } - - if ( isClipping ) clipper.remove(); - - } - - const offset = element.getBoundingClientRect(); - - let canvas = canvases.get( element ); - - if ( canvas === undefined ) { - - canvas = document.createElement( 'canvas' ); - canvas.width = offset.width; - canvas.height = offset.height; - canvases.set( element, canvas ); - - } - - const context = canvas.getContext( '2d'/*, { alpha: false }*/ ); - - const clipper = new Clipper( context ); - - // console.time( 'drawElement' ); - - context.clearRect( 0, 0, canvas.width, canvas.height ); - - drawElement( element ); - - // console.timeEnd( 'drawElement' ); - - return canvas; - -} - -function htmlevent( element, event, x, y ) { - - const mouseEventInit = { - clientX: ( x * element.offsetWidth ) + element.offsetLeft, - clientY: ( y * element.offsetHeight ) + element.offsetTop, - view: element.ownerDocument.defaultView - }; - - window.dispatchEvent( new MouseEvent( event, mouseEventInit ) ); - - const rect = element.getBoundingClientRect(); - - x = x * rect.width + rect.left; - y = y * rect.height + rect.top; - - function traverse( element ) { - - if ( element.nodeType !== Node.TEXT_NODE && element.nodeType !== Node.COMMENT_NODE ) { - - const rect = element.getBoundingClientRect(); - - if ( x > rect.left && x < rect.right && y > rect.top && y < rect.bottom ) { - - element.dispatchEvent( new MouseEvent( event, mouseEventInit ) ); - - if ( element instanceof HTMLInputElement && element.type === 'range' && ( event === 'mousedown' || event === 'click' ) ) { - - const [ min, max ] = [ 'min', 'max' ].map( property => parseFloat( element[ property ] ) ); - - const width = rect.width; - const offsetX = x - rect.x; - const proportion = offsetX / width; - element.value = min + ( max - min ) * proportion; - element.dispatchEvent( new InputEvent( 'input', { bubbles: true } ) ); - - } - - } - - for ( let i = 0; i < element.childNodes.length; i ++ ) { - - traverse( element.childNodes[ i ] ); - - } - - } - - } - - traverse( element ); - -} - -export { HTMLMesh }; diff --git a/three/addons/interactive/InteractiveGroup.js b/three/addons/interactive/InteractiveGroup.js deleted file mode 100644 index a8d7b30..0000000 --- a/three/addons/interactive/InteractiveGroup.js +++ /dev/null @@ -1,116 +0,0 @@ -import { - Group, - Matrix4, - Raycaster, - Vector2 -} from 'three'; - -const _pointer = new Vector2(); -const _event = { type: '', data: _pointer }; - -class InteractiveGroup extends Group { - - constructor( renderer, camera ) { - - super(); - - const scope = this; - - const raycaster = new Raycaster(); - const tempMatrix = new Matrix4(); - - // Pointer Events - - const element = renderer.domElement; - - function onPointerEvent( event ) { - - event.stopPropagation(); - - const rect = renderer.domElement.getBoundingClientRect(); - - _pointer.x = ( event.clientX - rect.left ) / rect.width * 2 - 1; - _pointer.y = - ( event.clientY - rect.top ) / rect.height * 2 + 1; - - raycaster.setFromCamera( _pointer, camera ); - - const intersects = raycaster.intersectObjects( scope.children, false ); - - if ( intersects.length > 0 ) { - - const intersection = intersects[ 0 ]; - - const object = intersection.object; - const uv = intersection.uv; - - _event.type = event.type; - _event.data.set( uv.x, 1 - uv.y ); - - object.dispatchEvent( _event ); - - } - - } - - element.addEventListener( 'pointerdown', onPointerEvent ); - element.addEventListener( 'pointerup', onPointerEvent ); - element.addEventListener( 'pointermove', onPointerEvent ); - element.addEventListener( 'mousedown', onPointerEvent ); - element.addEventListener( 'mouseup', onPointerEvent ); - element.addEventListener( 'mousemove', onPointerEvent ); - element.addEventListener( 'click', onPointerEvent ); - - // WebXR Controller Events - // TODO: Dispatch pointerevents too - - const events = { - 'move': 'mousemove', - 'select': 'click', - 'selectstart': 'mousedown', - 'selectend': 'mouseup' - }; - - function onXRControllerEvent( event ) { - - const controller = event.target; - - tempMatrix.identity().extractRotation( controller.matrixWorld ); - - raycaster.ray.origin.setFromMatrixPosition( controller.matrixWorld ); - raycaster.ray.direction.set( 0, 0, - 1 ).applyMatrix4( tempMatrix ); - - const intersections = raycaster.intersectObjects( scope.children, false ); - - if ( intersections.length > 0 ) { - - const intersection = intersections[ 0 ]; - - const object = intersection.object; - const uv = intersection.uv; - - _event.type = events[ event.type ]; - _event.data.set( uv.x, 1 - uv.y ); - - object.dispatchEvent( _event ); - - } - - } - - const controller1 = renderer.xr.getController( 0 ); - controller1.addEventListener( 'move', onXRControllerEvent ); - controller1.addEventListener( 'select', onXRControllerEvent ); - controller1.addEventListener( 'selectstart', onXRControllerEvent ); - controller1.addEventListener( 'selectend', onXRControllerEvent ); - - const controller2 = renderer.xr.getController( 1 ); - controller2.addEventListener( 'move', onXRControllerEvent ); - controller2.addEventListener( 'select', onXRControllerEvent ); - controller2.addEventListener( 'selectstart', onXRControllerEvent ); - controller2.addEventListener( 'selectend', onXRControllerEvent ); - - } - -} - -export { InteractiveGroup }; diff --git a/three/addons/interactive/SelectionBox.js b/three/addons/interactive/SelectionBox.js deleted file mode 100644 index 597b9b2..0000000 --- a/three/addons/interactive/SelectionBox.js +++ /dev/null @@ -1,227 +0,0 @@ -import { - Frustum, - Vector3, - Matrix4, - Quaternion, -} from 'three'; - -/** - * This is a class to check whether objects are in a selection area in 3D space - */ - -const _frustum = new Frustum(); -const _center = new Vector3(); - -const _tmpPoint = new Vector3(); - -const _vecNear = new Vector3(); -const _vecTopLeft = new Vector3(); -const _vecTopRight = new Vector3(); -const _vecDownRight = new Vector3(); -const _vecDownLeft = new Vector3(); - -const _vecFarTopLeft = new Vector3(); -const _vecFarTopRight = new Vector3(); -const _vecFarDownRight = new Vector3(); -const _vecFarDownLeft = new Vector3(); - -const _vectemp1 = new Vector3(); -const _vectemp2 = new Vector3(); -const _vectemp3 = new Vector3(); - -const _matrix = new Matrix4(); -const _quaternion = new Quaternion(); -const _scale = new Vector3(); - -class SelectionBox { - - constructor( camera, scene, deep = Number.MAX_VALUE ) { - - this.camera = camera; - this.scene = scene; - this.startPoint = new Vector3(); - this.endPoint = new Vector3(); - this.collection = []; - this.instances = {}; - this.deep = deep; - - } - - select( startPoint, endPoint ) { - - this.startPoint = startPoint || this.startPoint; - this.endPoint = endPoint || this.endPoint; - this.collection = []; - - this.updateFrustum( this.startPoint, this.endPoint ); - this.searchChildInFrustum( _frustum, this.scene ); - - return this.collection; - - } - - updateFrustum( startPoint, endPoint ) { - - startPoint = startPoint || this.startPoint; - endPoint = endPoint || this.endPoint; - - // Avoid invalid frustum - - if ( startPoint.x === endPoint.x ) { - - endPoint.x += Number.EPSILON; - - } - - if ( startPoint.y === endPoint.y ) { - - endPoint.y += Number.EPSILON; - - } - - this.camera.updateProjectionMatrix(); - this.camera.updateMatrixWorld(); - - if ( this.camera.isPerspectiveCamera ) { - - _tmpPoint.copy( startPoint ); - _tmpPoint.x = Math.min( startPoint.x, endPoint.x ); - _tmpPoint.y = Math.max( startPoint.y, endPoint.y ); - endPoint.x = Math.max( startPoint.x, endPoint.x ); - endPoint.y = Math.min( startPoint.y, endPoint.y ); - - _vecNear.setFromMatrixPosition( this.camera.matrixWorld ); - _vecTopLeft.copy( _tmpPoint ); - _vecTopRight.set( endPoint.x, _tmpPoint.y, 0 ); - _vecDownRight.copy( endPoint ); - _vecDownLeft.set( _tmpPoint.x, endPoint.y, 0 ); - - _vecTopLeft.unproject( this.camera ); - _vecTopRight.unproject( this.camera ); - _vecDownRight.unproject( this.camera ); - _vecDownLeft.unproject( this.camera ); - - _vectemp1.copy( _vecTopLeft ).sub( _vecNear ); - _vectemp2.copy( _vecTopRight ).sub( _vecNear ); - _vectemp3.copy( _vecDownRight ).sub( _vecNear ); - _vectemp1.normalize(); - _vectemp2.normalize(); - _vectemp3.normalize(); - - _vectemp1.multiplyScalar( this.deep ); - _vectemp2.multiplyScalar( this.deep ); - _vectemp3.multiplyScalar( this.deep ); - _vectemp1.add( _vecNear ); - _vectemp2.add( _vecNear ); - _vectemp3.add( _vecNear ); - - const planes = _frustum.planes; - - planes[ 0 ].setFromCoplanarPoints( _vecNear, _vecTopLeft, _vecTopRight ); - planes[ 1 ].setFromCoplanarPoints( _vecNear, _vecTopRight, _vecDownRight ); - planes[ 2 ].setFromCoplanarPoints( _vecDownRight, _vecDownLeft, _vecNear ); - planes[ 3 ].setFromCoplanarPoints( _vecDownLeft, _vecTopLeft, _vecNear ); - planes[ 4 ].setFromCoplanarPoints( _vecTopRight, _vecDownRight, _vecDownLeft ); - planes[ 5 ].setFromCoplanarPoints( _vectemp3, _vectemp2, _vectemp1 ); - planes[ 5 ].normal.multiplyScalar( - 1 ); - - } else if ( this.camera.isOrthographicCamera ) { - - const left = Math.min( startPoint.x, endPoint.x ); - const top = Math.max( startPoint.y, endPoint.y ); - const right = Math.max( startPoint.x, endPoint.x ); - const down = Math.min( startPoint.y, endPoint.y ); - - _vecTopLeft.set( left, top, - 1 ); - _vecTopRight.set( right, top, - 1 ); - _vecDownRight.set( right, down, - 1 ); - _vecDownLeft.set( left, down, - 1 ); - - _vecFarTopLeft.set( left, top, 1 ); - _vecFarTopRight.set( right, top, 1 ); - _vecFarDownRight.set( right, down, 1 ); - _vecFarDownLeft.set( left, down, 1 ); - - _vecTopLeft.unproject( this.camera ); - _vecTopRight.unproject( this.camera ); - _vecDownRight.unproject( this.camera ); - _vecDownLeft.unproject( this.camera ); - - _vecFarTopLeft.unproject( this.camera ); - _vecFarTopRight.unproject( this.camera ); - _vecFarDownRight.unproject( this.camera ); - _vecFarDownLeft.unproject( this.camera ); - - const planes = _frustum.planes; - - planes[ 0 ].setFromCoplanarPoints( _vecTopLeft, _vecFarTopLeft, _vecFarTopRight ); - planes[ 1 ].setFromCoplanarPoints( _vecTopRight, _vecFarTopRight, _vecFarDownRight ); - planes[ 2 ].setFromCoplanarPoints( _vecFarDownRight, _vecFarDownLeft, _vecDownLeft ); - planes[ 3 ].setFromCoplanarPoints( _vecFarDownLeft, _vecFarTopLeft, _vecTopLeft ); - planes[ 4 ].setFromCoplanarPoints( _vecTopRight, _vecDownRight, _vecDownLeft ); - planes[ 5 ].setFromCoplanarPoints( _vecFarDownRight, _vecFarTopRight, _vecFarTopLeft ); - planes[ 5 ].normal.multiplyScalar( - 1 ); - - } else { - - console.error( 'THREE.SelectionBox: Unsupported camera type.' ); - - } - - } - - searchChildInFrustum( frustum, object ) { - - if ( object.isMesh || object.isLine || object.isPoints ) { - - if ( object.isInstancedMesh ) { - - this.instances[ object.uuid ] = []; - - for ( let instanceId = 0; instanceId < object.count; instanceId ++ ) { - - object.getMatrixAt( instanceId, _matrix ); - _matrix.decompose( _center, _quaternion, _scale ); - _center.applyMatrix4( object.matrixWorld ); - - if ( frustum.containsPoint( _center ) ) { - - this.instances[ object.uuid ].push( instanceId ); - - } - - } - - } else { - - if ( object.geometry.boundingSphere === null ) object.geometry.computeBoundingSphere(); - - _center.copy( object.geometry.boundingSphere.center ); - - _center.applyMatrix4( object.matrixWorld ); - - if ( frustum.containsPoint( _center ) ) { - - this.collection.push( object ); - - } - - } - - } - - if ( object.children.length > 0 ) { - - for ( let x = 0; x < object.children.length; x ++ ) { - - this.searchChildInFrustum( frustum, object.children[ x ] ); - - } - - } - - } - -} - -export { SelectionBox }; diff --git a/three/addons/interactive/SelectionHelper.js b/three/addons/interactive/SelectionHelper.js deleted file mode 100644 index 613094e..0000000 --- a/three/addons/interactive/SelectionHelper.js +++ /dev/null @@ -1,104 +0,0 @@ -import { Vector2 } from 'three'; - -class SelectionHelper { - - constructor( renderer, cssClassName ) { - - this.element = document.createElement( 'div' ); - this.element.classList.add( cssClassName ); - this.element.style.pointerEvents = 'none'; - - this.renderer = renderer; - - this.startPoint = new Vector2(); - this.pointTopLeft = new Vector2(); - this.pointBottomRight = new Vector2(); - - this.isDown = false; - this.enabled = true; - - this.onPointerDown = function ( event ) { - - if ( this.enabled === false ) return; - - this.isDown = true; - this.onSelectStart( event ); - - }.bind( this ); - - this.onPointerMove = function ( event ) { - - if ( this.enabled === false ) return; - - if ( this.isDown ) { - - this.onSelectMove( event ); - - } - - }.bind( this ); - - this.onPointerUp = function ( ) { - - if ( this.enabled === false ) return; - - this.isDown = false; - this.onSelectOver(); - - }.bind( this ); - - this.renderer.domElement.addEventListener( 'pointerdown', this.onPointerDown ); - this.renderer.domElement.addEventListener( 'pointermove', this.onPointerMove ); - this.renderer.domElement.addEventListener( 'pointerup', this.onPointerUp ); - - } - - dispose() { - - this.renderer.domElement.removeEventListener( 'pointerdown', this.onPointerDown ); - this.renderer.domElement.removeEventListener( 'pointermove', this.onPointerMove ); - this.renderer.domElement.removeEventListener( 'pointerup', this.onPointerUp ); - - } - - onSelectStart( event ) { - - this.element.style.display = 'none'; - - this.renderer.domElement.parentElement.appendChild( this.element ); - - this.element.style.left = event.clientX + 'px'; - this.element.style.top = event.clientY + 'px'; - this.element.style.width = '0px'; - this.element.style.height = '0px'; - - this.startPoint.x = event.clientX; - this.startPoint.y = event.clientY; - - } - - onSelectMove( event ) { - - this.element.style.display = 'block'; - - this.pointBottomRight.x = Math.max( this.startPoint.x, event.clientX ); - this.pointBottomRight.y = Math.max( this.startPoint.y, event.clientY ); - this.pointTopLeft.x = Math.min( this.startPoint.x, event.clientX ); - this.pointTopLeft.y = Math.min( this.startPoint.y, event.clientY ); - - this.element.style.left = this.pointTopLeft.x + 'px'; - this.element.style.top = this.pointTopLeft.y + 'px'; - this.element.style.width = ( this.pointBottomRight.x - this.pointTopLeft.x ) + 'px'; - this.element.style.height = ( this.pointBottomRight.y - this.pointTopLeft.y ) + 'px'; - - } - - onSelectOver() { - - this.element.parentElement.removeChild( this.element ); - - } - -} - -export { SelectionHelper }; diff --git a/three/addons/libs/ammo.wasm.js b/three/addons/libs/ammo.wasm.js deleted file mode 100644 index a7f835c..0000000 --- a/three/addons/libs/ammo.wasm.js +++ /dev/null @@ -1,822 +0,0 @@ - -// This is ammo.js, a port of Bullet Physics to JavaScript. zlib licensed. - -var Ammo = (function() { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(Ammo) { - Ammo = Ammo || {}; - - -var b;b||(b=typeof Ammo !== 'undefined' ? Ammo : {});var ba;b.ready=new Promise(function(a){ba=a});var ca={},da;for(da in b)b.hasOwnProperty(da)&&(ca[da]=b[da]);var ea=!1,fa=!1,ha=!1,ia=!1;ea="object"===typeof window;fa="function"===typeof importScripts;ha="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node;ia=!ea&&!ha&&!fa;var ja="",ka,la,ma,na; -if(ha)ja=fa?require("path").dirname(ja)+"/":__dirname+"/",ka=function(a,c){ma||(ma=require("fs"));na||(na=require("path"));a=na.normalize(a);return ma.readFileSync(a,c?null:"utf8")},la=function(a){a=ka(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a},1>=2;d=za[a++];)Xa.push(105>d?Ca[++c>>1]:Aa[c]),++c;return Xa}var Za={f:function(){oa()},c:function(a,c,d){c=Ya(c,d);return Va[a].apply(null,c)},a:function(a,c,d){c=Ya(c,d);return Va[a].apply(null,c)},d:function(a,c,d){za.copyWithin(a,c,c+d)},e:function(){oa("OOM")},b:function(a){var c=Date.now();Aa[a>>2]=c/1E3|0;Aa[a+4>>2]=c%1E3*1E3|0;return 0},memory:sa,table:ua}; -(function(){function a(g){b.asm=g.exports;Ma--;b.monitorRunDependencies&&b.monitorRunDependencies(Ma);0==Ma&&(null!==Na&&(clearInterval(Na),Na=null),Oa&&(g=Oa,Oa=null,g()))}function c(g){a(g.instance)}function d(g){return Ua().then(function(n){return WebAssembly.instantiate(n,e)}).then(g,function(n){qa("failed to asynchronously prepare wasm: "+n);oa(n)})}var e={a:Za};Ma++;b.monitorRunDependencies&&b.monitorRunDependencies(Ma);if(b.instantiateWasm)try{return b.instantiateWasm(e,a)}catch(g){return qa("Module.instantiateWasm callback failed with error: "+ -g),!1}(function(){if(ra||"function"!==typeof WebAssembly.instantiateStreaming||Ra()||Pa("file://")||"function"!==typeof fetch)return d(c);fetch(Qa,{credentials:"same-origin"}).then(function(g){return WebAssembly.instantiateStreaming(g,e).then(c,function(n){qa("wasm streaming compile failed: "+n);qa("falling back to ArrayBuffer instantiation");return d(c)})})})();return{}})();var Wa=b.___wasm_call_ctors=function(){return(Wa=b.___wasm_call_ctors=b.asm.g).apply(null,arguments)}; -b.___em_js__array_bounds_check_error=function(){return(b.___em_js__array_bounds_check_error=b.asm.h).apply(null,arguments)}; -var $a=b._emscripten_bind_btCollisionWorld_getDispatcher_0=function(){return($a=b._emscripten_bind_btCollisionWorld_getDispatcher_0=b.asm.i).apply(null,arguments)},ab=b._emscripten_bind_btCollisionWorld_rayTest_3=function(){return(ab=b._emscripten_bind_btCollisionWorld_rayTest_3=b.asm.j).apply(null,arguments)},bb=b._emscripten_bind_btCollisionWorld_getPairCache_0=function(){return(bb=b._emscripten_bind_btCollisionWorld_getPairCache_0=b.asm.k).apply(null,arguments)},cb=b._emscripten_bind_btCollisionWorld_getDispatchInfo_0= -function(){return(cb=b._emscripten_bind_btCollisionWorld_getDispatchInfo_0=b.asm.l).apply(null,arguments)},db=b._emscripten_bind_btCollisionWorld_addCollisionObject_1=function(){return(db=b._emscripten_bind_btCollisionWorld_addCollisionObject_1=b.asm.m).apply(null,arguments)},eb=b._emscripten_bind_btCollisionWorld_addCollisionObject_2=function(){return(eb=b._emscripten_bind_btCollisionWorld_addCollisionObject_2=b.asm.n).apply(null,arguments)},fb=b._emscripten_bind_btCollisionWorld_addCollisionObject_3= -function(){return(fb=b._emscripten_bind_btCollisionWorld_addCollisionObject_3=b.asm.o).apply(null,arguments)},gb=b._emscripten_bind_btCollisionWorld_removeCollisionObject_1=function(){return(gb=b._emscripten_bind_btCollisionWorld_removeCollisionObject_1=b.asm.p).apply(null,arguments)},hb=b._emscripten_bind_btCollisionWorld_getBroadphase_0=function(){return(hb=b._emscripten_bind_btCollisionWorld_getBroadphase_0=b.asm.q).apply(null,arguments)},ib=b._emscripten_bind_btCollisionWorld_convexSweepTest_5= -function(){return(ib=b._emscripten_bind_btCollisionWorld_convexSweepTest_5=b.asm.r).apply(null,arguments)},jb=b._emscripten_bind_btCollisionWorld_contactPairTest_3=function(){return(jb=b._emscripten_bind_btCollisionWorld_contactPairTest_3=b.asm.s).apply(null,arguments)},kb=b._emscripten_bind_btCollisionWorld_contactTest_2=function(){return(kb=b._emscripten_bind_btCollisionWorld_contactTest_2=b.asm.t).apply(null,arguments)},lb=b._emscripten_bind_btCollisionWorld_updateSingleAabb_1=function(){return(lb= -b._emscripten_bind_btCollisionWorld_updateSingleAabb_1=b.asm.u).apply(null,arguments)},mb=b._emscripten_bind_btCollisionWorld_setDebugDrawer_1=function(){return(mb=b._emscripten_bind_btCollisionWorld_setDebugDrawer_1=b.asm.v).apply(null,arguments)},nb=b._emscripten_bind_btCollisionWorld_getDebugDrawer_0=function(){return(nb=b._emscripten_bind_btCollisionWorld_getDebugDrawer_0=b.asm.w).apply(null,arguments)},ob=b._emscripten_bind_btCollisionWorld_debugDrawWorld_0=function(){return(ob=b._emscripten_bind_btCollisionWorld_debugDrawWorld_0= -b.asm.x).apply(null,arguments)},pb=b._emscripten_bind_btCollisionWorld_debugDrawObject_3=function(){return(pb=b._emscripten_bind_btCollisionWorld_debugDrawObject_3=b.asm.y).apply(null,arguments)},qb=b._emscripten_bind_btCollisionWorld___destroy___0=function(){return(qb=b._emscripten_bind_btCollisionWorld___destroy___0=b.asm.z).apply(null,arguments)},rb=b._emscripten_bind_btCollisionShape_setLocalScaling_1=function(){return(rb=b._emscripten_bind_btCollisionShape_setLocalScaling_1=b.asm.A).apply(null, -arguments)},sb=b._emscripten_bind_btCollisionShape_getLocalScaling_0=function(){return(sb=b._emscripten_bind_btCollisionShape_getLocalScaling_0=b.asm.B).apply(null,arguments)},tb=b._emscripten_bind_btCollisionShape_calculateLocalInertia_2=function(){return(tb=b._emscripten_bind_btCollisionShape_calculateLocalInertia_2=b.asm.C).apply(null,arguments)},ub=b._emscripten_bind_btCollisionShape_setMargin_1=function(){return(ub=b._emscripten_bind_btCollisionShape_setMargin_1=b.asm.D).apply(null,arguments)}, -vb=b._emscripten_bind_btCollisionShape_getMargin_0=function(){return(vb=b._emscripten_bind_btCollisionShape_getMargin_0=b.asm.E).apply(null,arguments)},wb=b._emscripten_bind_btCollisionShape___destroy___0=function(){return(wb=b._emscripten_bind_btCollisionShape___destroy___0=b.asm.F).apply(null,arguments)},xb=b._emscripten_bind_btCollisionObject_setAnisotropicFriction_2=function(){return(xb=b._emscripten_bind_btCollisionObject_setAnisotropicFriction_2=b.asm.G).apply(null,arguments)},yb=b._emscripten_bind_btCollisionObject_getCollisionShape_0= -function(){return(yb=b._emscripten_bind_btCollisionObject_getCollisionShape_0=b.asm.H).apply(null,arguments)},zb=b._emscripten_bind_btCollisionObject_setContactProcessingThreshold_1=function(){return(zb=b._emscripten_bind_btCollisionObject_setContactProcessingThreshold_1=b.asm.I).apply(null,arguments)},Ab=b._emscripten_bind_btCollisionObject_setActivationState_1=function(){return(Ab=b._emscripten_bind_btCollisionObject_setActivationState_1=b.asm.J).apply(null,arguments)},Bb=b._emscripten_bind_btCollisionObject_forceActivationState_1= -function(){return(Bb=b._emscripten_bind_btCollisionObject_forceActivationState_1=b.asm.K).apply(null,arguments)},Cb=b._emscripten_bind_btCollisionObject_activate_0=function(){return(Cb=b._emscripten_bind_btCollisionObject_activate_0=b.asm.L).apply(null,arguments)},Db=b._emscripten_bind_btCollisionObject_activate_1=function(){return(Db=b._emscripten_bind_btCollisionObject_activate_1=b.asm.M).apply(null,arguments)},Eb=b._emscripten_bind_btCollisionObject_isActive_0=function(){return(Eb=b._emscripten_bind_btCollisionObject_isActive_0= -b.asm.N).apply(null,arguments)},Fb=b._emscripten_bind_btCollisionObject_isKinematicObject_0=function(){return(Fb=b._emscripten_bind_btCollisionObject_isKinematicObject_0=b.asm.O).apply(null,arguments)},Gb=b._emscripten_bind_btCollisionObject_isStaticObject_0=function(){return(Gb=b._emscripten_bind_btCollisionObject_isStaticObject_0=b.asm.P).apply(null,arguments)},Hb=b._emscripten_bind_btCollisionObject_isStaticOrKinematicObject_0=function(){return(Hb=b._emscripten_bind_btCollisionObject_isStaticOrKinematicObject_0= -b.asm.Q).apply(null,arguments)},Ib=b._emscripten_bind_btCollisionObject_getRestitution_0=function(){return(Ib=b._emscripten_bind_btCollisionObject_getRestitution_0=b.asm.R).apply(null,arguments)},Jb=b._emscripten_bind_btCollisionObject_getFriction_0=function(){return(Jb=b._emscripten_bind_btCollisionObject_getFriction_0=b.asm.S).apply(null,arguments)},Kb=b._emscripten_bind_btCollisionObject_getRollingFriction_0=function(){return(Kb=b._emscripten_bind_btCollisionObject_getRollingFriction_0=b.asm.T).apply(null, -arguments)},Lb=b._emscripten_bind_btCollisionObject_setRestitution_1=function(){return(Lb=b._emscripten_bind_btCollisionObject_setRestitution_1=b.asm.U).apply(null,arguments)},Mb=b._emscripten_bind_btCollisionObject_setFriction_1=function(){return(Mb=b._emscripten_bind_btCollisionObject_setFriction_1=b.asm.V).apply(null,arguments)},Nb=b._emscripten_bind_btCollisionObject_setRollingFriction_1=function(){return(Nb=b._emscripten_bind_btCollisionObject_setRollingFriction_1=b.asm.W).apply(null,arguments)}, -Ob=b._emscripten_bind_btCollisionObject_getWorldTransform_0=function(){return(Ob=b._emscripten_bind_btCollisionObject_getWorldTransform_0=b.asm.X).apply(null,arguments)},Pb=b._emscripten_bind_btCollisionObject_getCollisionFlags_0=function(){return(Pb=b._emscripten_bind_btCollisionObject_getCollisionFlags_0=b.asm.Y).apply(null,arguments)},Qb=b._emscripten_bind_btCollisionObject_setCollisionFlags_1=function(){return(Qb=b._emscripten_bind_btCollisionObject_setCollisionFlags_1=b.asm.Z).apply(null,arguments)}, -Sb=b._emscripten_bind_btCollisionObject_setWorldTransform_1=function(){return(Sb=b._emscripten_bind_btCollisionObject_setWorldTransform_1=b.asm._).apply(null,arguments)},Tb=b._emscripten_bind_btCollisionObject_setCollisionShape_1=function(){return(Tb=b._emscripten_bind_btCollisionObject_setCollisionShape_1=b.asm.$).apply(null,arguments)},Ub=b._emscripten_bind_btCollisionObject_setCcdMotionThreshold_1=function(){return(Ub=b._emscripten_bind_btCollisionObject_setCcdMotionThreshold_1=b.asm.aa).apply(null, -arguments)},Vb=b._emscripten_bind_btCollisionObject_setCcdSweptSphereRadius_1=function(){return(Vb=b._emscripten_bind_btCollisionObject_setCcdSweptSphereRadius_1=b.asm.ba).apply(null,arguments)},Wb=b._emscripten_bind_btCollisionObject_getUserIndex_0=function(){return(Wb=b._emscripten_bind_btCollisionObject_getUserIndex_0=b.asm.ca).apply(null,arguments)},Xb=b._emscripten_bind_btCollisionObject_setUserIndex_1=function(){return(Xb=b._emscripten_bind_btCollisionObject_setUserIndex_1=b.asm.da).apply(null, -arguments)},Yb=b._emscripten_bind_btCollisionObject_getUserPointer_0=function(){return(Yb=b._emscripten_bind_btCollisionObject_getUserPointer_0=b.asm.ea).apply(null,arguments)},Zb=b._emscripten_bind_btCollisionObject_setUserPointer_1=function(){return(Zb=b._emscripten_bind_btCollisionObject_setUserPointer_1=b.asm.fa).apply(null,arguments)},$b=b._emscripten_bind_btCollisionObject_getBroadphaseHandle_0=function(){return($b=b._emscripten_bind_btCollisionObject_getBroadphaseHandle_0=b.asm.ga).apply(null, -arguments)},ac=b._emscripten_bind_btCollisionObject___destroy___0=function(){return(ac=b._emscripten_bind_btCollisionObject___destroy___0=b.asm.ha).apply(null,arguments)},bc=b._emscripten_bind_btDynamicsWorld_addAction_1=function(){return(bc=b._emscripten_bind_btDynamicsWorld_addAction_1=b.asm.ia).apply(null,arguments)},cc=b._emscripten_bind_btDynamicsWorld_removeAction_1=function(){return(cc=b._emscripten_bind_btDynamicsWorld_removeAction_1=b.asm.ja).apply(null,arguments)},dc=b._emscripten_bind_btDynamicsWorld_getSolverInfo_0= -function(){return(dc=b._emscripten_bind_btDynamicsWorld_getSolverInfo_0=b.asm.ka).apply(null,arguments)},ec=b._emscripten_bind_btDynamicsWorld_setInternalTickCallback_1=function(){return(ec=b._emscripten_bind_btDynamicsWorld_setInternalTickCallback_1=b.asm.la).apply(null,arguments)},fc=b._emscripten_bind_btDynamicsWorld_setInternalTickCallback_2=function(){return(fc=b._emscripten_bind_btDynamicsWorld_setInternalTickCallback_2=b.asm.ma).apply(null,arguments)},hc=b._emscripten_bind_btDynamicsWorld_setInternalTickCallback_3= -function(){return(hc=b._emscripten_bind_btDynamicsWorld_setInternalTickCallback_3=b.asm.na).apply(null,arguments)},ic=b._emscripten_bind_btDynamicsWorld_getDispatcher_0=function(){return(ic=b._emscripten_bind_btDynamicsWorld_getDispatcher_0=b.asm.oa).apply(null,arguments)},jc=b._emscripten_bind_btDynamicsWorld_rayTest_3=function(){return(jc=b._emscripten_bind_btDynamicsWorld_rayTest_3=b.asm.pa).apply(null,arguments)},kc=b._emscripten_bind_btDynamicsWorld_getPairCache_0=function(){return(kc=b._emscripten_bind_btDynamicsWorld_getPairCache_0= -b.asm.qa).apply(null,arguments)},lc=b._emscripten_bind_btDynamicsWorld_getDispatchInfo_0=function(){return(lc=b._emscripten_bind_btDynamicsWorld_getDispatchInfo_0=b.asm.ra).apply(null,arguments)},mc=b._emscripten_bind_btDynamicsWorld_addCollisionObject_1=function(){return(mc=b._emscripten_bind_btDynamicsWorld_addCollisionObject_1=b.asm.sa).apply(null,arguments)},nc=b._emscripten_bind_btDynamicsWorld_addCollisionObject_2=function(){return(nc=b._emscripten_bind_btDynamicsWorld_addCollisionObject_2= -b.asm.ta).apply(null,arguments)},oc=b._emscripten_bind_btDynamicsWorld_addCollisionObject_3=function(){return(oc=b._emscripten_bind_btDynamicsWorld_addCollisionObject_3=b.asm.ua).apply(null,arguments)},pc=b._emscripten_bind_btDynamicsWorld_removeCollisionObject_1=function(){return(pc=b._emscripten_bind_btDynamicsWorld_removeCollisionObject_1=b.asm.va).apply(null,arguments)},qc=b._emscripten_bind_btDynamicsWorld_getBroadphase_0=function(){return(qc=b._emscripten_bind_btDynamicsWorld_getBroadphase_0= -b.asm.wa).apply(null,arguments)},rc=b._emscripten_bind_btDynamicsWorld_convexSweepTest_5=function(){return(rc=b._emscripten_bind_btDynamicsWorld_convexSweepTest_5=b.asm.xa).apply(null,arguments)},sc=b._emscripten_bind_btDynamicsWorld_contactPairTest_3=function(){return(sc=b._emscripten_bind_btDynamicsWorld_contactPairTest_3=b.asm.ya).apply(null,arguments)},tc=b._emscripten_bind_btDynamicsWorld_contactTest_2=function(){return(tc=b._emscripten_bind_btDynamicsWorld_contactTest_2=b.asm.za).apply(null, -arguments)},uc=b._emscripten_bind_btDynamicsWorld_updateSingleAabb_1=function(){return(uc=b._emscripten_bind_btDynamicsWorld_updateSingleAabb_1=b.asm.Aa).apply(null,arguments)},vc=b._emscripten_bind_btDynamicsWorld_setDebugDrawer_1=function(){return(vc=b._emscripten_bind_btDynamicsWorld_setDebugDrawer_1=b.asm.Ba).apply(null,arguments)},wc=b._emscripten_bind_btDynamicsWorld_getDebugDrawer_0=function(){return(wc=b._emscripten_bind_btDynamicsWorld_getDebugDrawer_0=b.asm.Ca).apply(null,arguments)},xc= -b._emscripten_bind_btDynamicsWorld_debugDrawWorld_0=function(){return(xc=b._emscripten_bind_btDynamicsWorld_debugDrawWorld_0=b.asm.Da).apply(null,arguments)},yc=b._emscripten_bind_btDynamicsWorld_debugDrawObject_3=function(){return(yc=b._emscripten_bind_btDynamicsWorld_debugDrawObject_3=b.asm.Ea).apply(null,arguments)},zc=b._emscripten_bind_btDynamicsWorld___destroy___0=function(){return(zc=b._emscripten_bind_btDynamicsWorld___destroy___0=b.asm.Fa).apply(null,arguments)},Ac=b._emscripten_bind_btTypedConstraint_enableFeedback_1= -function(){return(Ac=b._emscripten_bind_btTypedConstraint_enableFeedback_1=b.asm.Ga).apply(null,arguments)},Bc=b._emscripten_bind_btTypedConstraint_getBreakingImpulseThreshold_0=function(){return(Bc=b._emscripten_bind_btTypedConstraint_getBreakingImpulseThreshold_0=b.asm.Ha).apply(null,arguments)},Cc=b._emscripten_bind_btTypedConstraint_setBreakingImpulseThreshold_1=function(){return(Cc=b._emscripten_bind_btTypedConstraint_setBreakingImpulseThreshold_1=b.asm.Ia).apply(null,arguments)},Dc=b._emscripten_bind_btTypedConstraint_getParam_2= -function(){return(Dc=b._emscripten_bind_btTypedConstraint_getParam_2=b.asm.Ja).apply(null,arguments)},Ec=b._emscripten_bind_btTypedConstraint_setParam_3=function(){return(Ec=b._emscripten_bind_btTypedConstraint_setParam_3=b.asm.Ka).apply(null,arguments)},Fc=b._emscripten_bind_btTypedConstraint___destroy___0=function(){return(Fc=b._emscripten_bind_btTypedConstraint___destroy___0=b.asm.La).apply(null,arguments)},Gc=b._emscripten_bind_btConcaveShape_setLocalScaling_1=function(){return(Gc=b._emscripten_bind_btConcaveShape_setLocalScaling_1= -b.asm.Ma).apply(null,arguments)},Hc=b._emscripten_bind_btConcaveShape_getLocalScaling_0=function(){return(Hc=b._emscripten_bind_btConcaveShape_getLocalScaling_0=b.asm.Na).apply(null,arguments)},Ic=b._emscripten_bind_btConcaveShape_calculateLocalInertia_2=function(){return(Ic=b._emscripten_bind_btConcaveShape_calculateLocalInertia_2=b.asm.Oa).apply(null,arguments)},Jc=b._emscripten_bind_btConcaveShape___destroy___0=function(){return(Jc=b._emscripten_bind_btConcaveShape___destroy___0=b.asm.Pa).apply(null, -arguments)},Kc=b._emscripten_bind_btCapsuleShape_btCapsuleShape_2=function(){return(Kc=b._emscripten_bind_btCapsuleShape_btCapsuleShape_2=b.asm.Qa).apply(null,arguments)},Lc=b._emscripten_bind_btCapsuleShape_setMargin_1=function(){return(Lc=b._emscripten_bind_btCapsuleShape_setMargin_1=b.asm.Ra).apply(null,arguments)},Mc=b._emscripten_bind_btCapsuleShape_getMargin_0=function(){return(Mc=b._emscripten_bind_btCapsuleShape_getMargin_0=b.asm.Sa).apply(null,arguments)},Nc=b._emscripten_bind_btCapsuleShape_getUpAxis_0= -function(){return(Nc=b._emscripten_bind_btCapsuleShape_getUpAxis_0=b.asm.Ta).apply(null,arguments)},Oc=b._emscripten_bind_btCapsuleShape_getRadius_0=function(){return(Oc=b._emscripten_bind_btCapsuleShape_getRadius_0=b.asm.Ua).apply(null,arguments)},Pc=b._emscripten_bind_btCapsuleShape_getHalfHeight_0=function(){return(Pc=b._emscripten_bind_btCapsuleShape_getHalfHeight_0=b.asm.Va).apply(null,arguments)},Qc=b._emscripten_bind_btCapsuleShape_setLocalScaling_1=function(){return(Qc=b._emscripten_bind_btCapsuleShape_setLocalScaling_1= -b.asm.Wa).apply(null,arguments)},Rc=b._emscripten_bind_btCapsuleShape_getLocalScaling_0=function(){return(Rc=b._emscripten_bind_btCapsuleShape_getLocalScaling_0=b.asm.Xa).apply(null,arguments)},Sc=b._emscripten_bind_btCapsuleShape_calculateLocalInertia_2=function(){return(Sc=b._emscripten_bind_btCapsuleShape_calculateLocalInertia_2=b.asm.Ya).apply(null,arguments)},Tc=b._emscripten_bind_btCapsuleShape___destroy___0=function(){return(Tc=b._emscripten_bind_btCapsuleShape___destroy___0=b.asm.Za).apply(null, -arguments)},Uc=b._emscripten_bind_btIDebugDraw_drawLine_3=function(){return(Uc=b._emscripten_bind_btIDebugDraw_drawLine_3=b.asm._a).apply(null,arguments)},Vc=b._emscripten_bind_btIDebugDraw_drawContactPoint_5=function(){return(Vc=b._emscripten_bind_btIDebugDraw_drawContactPoint_5=b.asm.$a).apply(null,arguments)},Wc=b._emscripten_bind_btIDebugDraw_reportErrorWarning_1=function(){return(Wc=b._emscripten_bind_btIDebugDraw_reportErrorWarning_1=b.asm.ab).apply(null,arguments)},Xc=b._emscripten_bind_btIDebugDraw_draw3dText_2= -function(){return(Xc=b._emscripten_bind_btIDebugDraw_draw3dText_2=b.asm.bb).apply(null,arguments)},Yc=b._emscripten_bind_btIDebugDraw_setDebugMode_1=function(){return(Yc=b._emscripten_bind_btIDebugDraw_setDebugMode_1=b.asm.cb).apply(null,arguments)},Zc=b._emscripten_bind_btIDebugDraw_getDebugMode_0=function(){return(Zc=b._emscripten_bind_btIDebugDraw_getDebugMode_0=b.asm.db).apply(null,arguments)},$c=b._emscripten_bind_btIDebugDraw___destroy___0=function(){return($c=b._emscripten_bind_btIDebugDraw___destroy___0= -b.asm.eb).apply(null,arguments)},ad=b._emscripten_bind_btDefaultCollisionConfiguration_btDefaultCollisionConfiguration_0=function(){return(ad=b._emscripten_bind_btDefaultCollisionConfiguration_btDefaultCollisionConfiguration_0=b.asm.fb).apply(null,arguments)},bd=b._emscripten_bind_btDefaultCollisionConfiguration_btDefaultCollisionConfiguration_1=function(){return(bd=b._emscripten_bind_btDefaultCollisionConfiguration_btDefaultCollisionConfiguration_1=b.asm.gb).apply(null,arguments)},cd=b._emscripten_bind_btDefaultCollisionConfiguration___destroy___0= -function(){return(cd=b._emscripten_bind_btDefaultCollisionConfiguration___destroy___0=b.asm.hb).apply(null,arguments)},dd=b._emscripten_bind_btTriangleMeshShape_setLocalScaling_1=function(){return(dd=b._emscripten_bind_btTriangleMeshShape_setLocalScaling_1=b.asm.ib).apply(null,arguments)},ed=b._emscripten_bind_btTriangleMeshShape_getLocalScaling_0=function(){return(ed=b._emscripten_bind_btTriangleMeshShape_getLocalScaling_0=b.asm.jb).apply(null,arguments)},fd=b._emscripten_bind_btTriangleMeshShape_calculateLocalInertia_2= -function(){return(fd=b._emscripten_bind_btTriangleMeshShape_calculateLocalInertia_2=b.asm.kb).apply(null,arguments)},gd=b._emscripten_bind_btTriangleMeshShape___destroy___0=function(){return(gd=b._emscripten_bind_btTriangleMeshShape___destroy___0=b.asm.lb).apply(null,arguments)},hd=b._emscripten_bind_btGhostObject_btGhostObject_0=function(){return(hd=b._emscripten_bind_btGhostObject_btGhostObject_0=b.asm.mb).apply(null,arguments)},id=b._emscripten_bind_btGhostObject_getNumOverlappingObjects_0=function(){return(id= -b._emscripten_bind_btGhostObject_getNumOverlappingObjects_0=b.asm.nb).apply(null,arguments)},jd=b._emscripten_bind_btGhostObject_getOverlappingObject_1=function(){return(jd=b._emscripten_bind_btGhostObject_getOverlappingObject_1=b.asm.ob).apply(null,arguments)},kd=b._emscripten_bind_btGhostObject_setAnisotropicFriction_2=function(){return(kd=b._emscripten_bind_btGhostObject_setAnisotropicFriction_2=b.asm.pb).apply(null,arguments)},ld=b._emscripten_bind_btGhostObject_getCollisionShape_0=function(){return(ld= -b._emscripten_bind_btGhostObject_getCollisionShape_0=b.asm.qb).apply(null,arguments)},md=b._emscripten_bind_btGhostObject_setContactProcessingThreshold_1=function(){return(md=b._emscripten_bind_btGhostObject_setContactProcessingThreshold_1=b.asm.rb).apply(null,arguments)},nd=b._emscripten_bind_btGhostObject_setActivationState_1=function(){return(nd=b._emscripten_bind_btGhostObject_setActivationState_1=b.asm.sb).apply(null,arguments)},od=b._emscripten_bind_btGhostObject_forceActivationState_1=function(){return(od= -b._emscripten_bind_btGhostObject_forceActivationState_1=b.asm.tb).apply(null,arguments)},pd=b._emscripten_bind_btGhostObject_activate_0=function(){return(pd=b._emscripten_bind_btGhostObject_activate_0=b.asm.ub).apply(null,arguments)},qd=b._emscripten_bind_btGhostObject_activate_1=function(){return(qd=b._emscripten_bind_btGhostObject_activate_1=b.asm.vb).apply(null,arguments)},rd=b._emscripten_bind_btGhostObject_isActive_0=function(){return(rd=b._emscripten_bind_btGhostObject_isActive_0=b.asm.wb).apply(null, -arguments)},sd=b._emscripten_bind_btGhostObject_isKinematicObject_0=function(){return(sd=b._emscripten_bind_btGhostObject_isKinematicObject_0=b.asm.xb).apply(null,arguments)},td=b._emscripten_bind_btGhostObject_isStaticObject_0=function(){return(td=b._emscripten_bind_btGhostObject_isStaticObject_0=b.asm.yb).apply(null,arguments)},ud=b._emscripten_bind_btGhostObject_isStaticOrKinematicObject_0=function(){return(ud=b._emscripten_bind_btGhostObject_isStaticOrKinematicObject_0=b.asm.zb).apply(null,arguments)}, -vd=b._emscripten_bind_btGhostObject_getRestitution_0=function(){return(vd=b._emscripten_bind_btGhostObject_getRestitution_0=b.asm.Ab).apply(null,arguments)},wd=b._emscripten_bind_btGhostObject_getFriction_0=function(){return(wd=b._emscripten_bind_btGhostObject_getFriction_0=b.asm.Bb).apply(null,arguments)},xd=b._emscripten_bind_btGhostObject_getRollingFriction_0=function(){return(xd=b._emscripten_bind_btGhostObject_getRollingFriction_0=b.asm.Cb).apply(null,arguments)},yd=b._emscripten_bind_btGhostObject_setRestitution_1= -function(){return(yd=b._emscripten_bind_btGhostObject_setRestitution_1=b.asm.Db).apply(null,arguments)},zd=b._emscripten_bind_btGhostObject_setFriction_1=function(){return(zd=b._emscripten_bind_btGhostObject_setFriction_1=b.asm.Eb).apply(null,arguments)},Ad=b._emscripten_bind_btGhostObject_setRollingFriction_1=function(){return(Ad=b._emscripten_bind_btGhostObject_setRollingFriction_1=b.asm.Fb).apply(null,arguments)},Bd=b._emscripten_bind_btGhostObject_getWorldTransform_0=function(){return(Bd=b._emscripten_bind_btGhostObject_getWorldTransform_0= -b.asm.Gb).apply(null,arguments)},Cd=b._emscripten_bind_btGhostObject_getCollisionFlags_0=function(){return(Cd=b._emscripten_bind_btGhostObject_getCollisionFlags_0=b.asm.Hb).apply(null,arguments)},Dd=b._emscripten_bind_btGhostObject_setCollisionFlags_1=function(){return(Dd=b._emscripten_bind_btGhostObject_setCollisionFlags_1=b.asm.Ib).apply(null,arguments)},Ed=b._emscripten_bind_btGhostObject_setWorldTransform_1=function(){return(Ed=b._emscripten_bind_btGhostObject_setWorldTransform_1=b.asm.Jb).apply(null, -arguments)},Fd=b._emscripten_bind_btGhostObject_setCollisionShape_1=function(){return(Fd=b._emscripten_bind_btGhostObject_setCollisionShape_1=b.asm.Kb).apply(null,arguments)},Gd=b._emscripten_bind_btGhostObject_setCcdMotionThreshold_1=function(){return(Gd=b._emscripten_bind_btGhostObject_setCcdMotionThreshold_1=b.asm.Lb).apply(null,arguments)},Hd=b._emscripten_bind_btGhostObject_setCcdSweptSphereRadius_1=function(){return(Hd=b._emscripten_bind_btGhostObject_setCcdSweptSphereRadius_1=b.asm.Mb).apply(null, -arguments)},Id=b._emscripten_bind_btGhostObject_getUserIndex_0=function(){return(Id=b._emscripten_bind_btGhostObject_getUserIndex_0=b.asm.Nb).apply(null,arguments)},Jd=b._emscripten_bind_btGhostObject_setUserIndex_1=function(){return(Jd=b._emscripten_bind_btGhostObject_setUserIndex_1=b.asm.Ob).apply(null,arguments)},Kd=b._emscripten_bind_btGhostObject_getUserPointer_0=function(){return(Kd=b._emscripten_bind_btGhostObject_getUserPointer_0=b.asm.Pb).apply(null,arguments)},Ld=b._emscripten_bind_btGhostObject_setUserPointer_1= -function(){return(Ld=b._emscripten_bind_btGhostObject_setUserPointer_1=b.asm.Qb).apply(null,arguments)},Md=b._emscripten_bind_btGhostObject_getBroadphaseHandle_0=function(){return(Md=b._emscripten_bind_btGhostObject_getBroadphaseHandle_0=b.asm.Rb).apply(null,arguments)},Nd=b._emscripten_bind_btGhostObject___destroy___0=function(){return(Nd=b._emscripten_bind_btGhostObject___destroy___0=b.asm.Sb).apply(null,arguments)},Od=b._emscripten_bind_btConeShape_btConeShape_2=function(){return(Od=b._emscripten_bind_btConeShape_btConeShape_2= -b.asm.Tb).apply(null,arguments)},Pd=b._emscripten_bind_btConeShape_setLocalScaling_1=function(){return(Pd=b._emscripten_bind_btConeShape_setLocalScaling_1=b.asm.Ub).apply(null,arguments)},Qd=b._emscripten_bind_btConeShape_getLocalScaling_0=function(){return(Qd=b._emscripten_bind_btConeShape_getLocalScaling_0=b.asm.Vb).apply(null,arguments)},Rd=b._emscripten_bind_btConeShape_calculateLocalInertia_2=function(){return(Rd=b._emscripten_bind_btConeShape_calculateLocalInertia_2=b.asm.Wb).apply(null,arguments)}, -Sd=b._emscripten_bind_btConeShape___destroy___0=function(){return(Sd=b._emscripten_bind_btConeShape___destroy___0=b.asm.Xb).apply(null,arguments)},Td=b._emscripten_bind_btActionInterface_updateAction_2=function(){return(Td=b._emscripten_bind_btActionInterface_updateAction_2=b.asm.Yb).apply(null,arguments)},Ud=b._emscripten_bind_btActionInterface___destroy___0=function(){return(Ud=b._emscripten_bind_btActionInterface___destroy___0=b.asm.Zb).apply(null,arguments)},Vd=b._emscripten_bind_btVector3_btVector3_0= -function(){return(Vd=b._emscripten_bind_btVector3_btVector3_0=b.asm._b).apply(null,arguments)},Wd=b._emscripten_bind_btVector3_btVector3_3=function(){return(Wd=b._emscripten_bind_btVector3_btVector3_3=b.asm.$b).apply(null,arguments)},Xd=b._emscripten_bind_btVector3_length_0=function(){return(Xd=b._emscripten_bind_btVector3_length_0=b.asm.ac).apply(null,arguments)},Yd=b._emscripten_bind_btVector3_x_0=function(){return(Yd=b._emscripten_bind_btVector3_x_0=b.asm.bc).apply(null,arguments)},Zd=b._emscripten_bind_btVector3_y_0= -function(){return(Zd=b._emscripten_bind_btVector3_y_0=b.asm.cc).apply(null,arguments)},$d=b._emscripten_bind_btVector3_z_0=function(){return($d=b._emscripten_bind_btVector3_z_0=b.asm.dc).apply(null,arguments)},ae=b._emscripten_bind_btVector3_setX_1=function(){return(ae=b._emscripten_bind_btVector3_setX_1=b.asm.ec).apply(null,arguments)},be=b._emscripten_bind_btVector3_setY_1=function(){return(be=b._emscripten_bind_btVector3_setY_1=b.asm.fc).apply(null,arguments)},ce=b._emscripten_bind_btVector3_setZ_1= -function(){return(ce=b._emscripten_bind_btVector3_setZ_1=b.asm.gc).apply(null,arguments)},de=b._emscripten_bind_btVector3_setValue_3=function(){return(de=b._emscripten_bind_btVector3_setValue_3=b.asm.hc).apply(null,arguments)},ee=b._emscripten_bind_btVector3_normalize_0=function(){return(ee=b._emscripten_bind_btVector3_normalize_0=b.asm.ic).apply(null,arguments)},fe=b._emscripten_bind_btVector3_rotate_2=function(){return(fe=b._emscripten_bind_btVector3_rotate_2=b.asm.jc).apply(null,arguments)},ge= -b._emscripten_bind_btVector3_dot_1=function(){return(ge=b._emscripten_bind_btVector3_dot_1=b.asm.kc).apply(null,arguments)},he=b._emscripten_bind_btVector3_op_mul_1=function(){return(he=b._emscripten_bind_btVector3_op_mul_1=b.asm.lc).apply(null,arguments)},ie=b._emscripten_bind_btVector3_op_add_1=function(){return(ie=b._emscripten_bind_btVector3_op_add_1=b.asm.mc).apply(null,arguments)},je=b._emscripten_bind_btVector3_op_sub_1=function(){return(je=b._emscripten_bind_btVector3_op_sub_1=b.asm.nc).apply(null, -arguments)},ke=b._emscripten_bind_btVector3___destroy___0=function(){return(ke=b._emscripten_bind_btVector3___destroy___0=b.asm.oc).apply(null,arguments)},le=b._emscripten_bind_btVehicleRaycaster_castRay_3=function(){return(le=b._emscripten_bind_btVehicleRaycaster_castRay_3=b.asm.pc).apply(null,arguments)},me=b._emscripten_bind_btVehicleRaycaster___destroy___0=function(){return(me=b._emscripten_bind_btVehicleRaycaster___destroy___0=b.asm.qc).apply(null,arguments)},ne=b._emscripten_bind_btQuadWord_x_0= -function(){return(ne=b._emscripten_bind_btQuadWord_x_0=b.asm.rc).apply(null,arguments)},oe=b._emscripten_bind_btQuadWord_y_0=function(){return(oe=b._emscripten_bind_btQuadWord_y_0=b.asm.sc).apply(null,arguments)},pe=b._emscripten_bind_btQuadWord_z_0=function(){return(pe=b._emscripten_bind_btQuadWord_z_0=b.asm.tc).apply(null,arguments)},qe=b._emscripten_bind_btQuadWord_w_0=function(){return(qe=b._emscripten_bind_btQuadWord_w_0=b.asm.uc).apply(null,arguments)},re=b._emscripten_bind_btQuadWord_setX_1= -function(){return(re=b._emscripten_bind_btQuadWord_setX_1=b.asm.vc).apply(null,arguments)},se=b._emscripten_bind_btQuadWord_setY_1=function(){return(se=b._emscripten_bind_btQuadWord_setY_1=b.asm.wc).apply(null,arguments)},te=b._emscripten_bind_btQuadWord_setZ_1=function(){return(te=b._emscripten_bind_btQuadWord_setZ_1=b.asm.xc).apply(null,arguments)},ue=b._emscripten_bind_btQuadWord_setW_1=function(){return(ue=b._emscripten_bind_btQuadWord_setW_1=b.asm.yc).apply(null,arguments)},ve=b._emscripten_bind_btQuadWord___destroy___0= -function(){return(ve=b._emscripten_bind_btQuadWord___destroy___0=b.asm.zc).apply(null,arguments)},we=b._emscripten_bind_btCylinderShape_btCylinderShape_1=function(){return(we=b._emscripten_bind_btCylinderShape_btCylinderShape_1=b.asm.Ac).apply(null,arguments)},xe=b._emscripten_bind_btCylinderShape_setMargin_1=function(){return(xe=b._emscripten_bind_btCylinderShape_setMargin_1=b.asm.Bc).apply(null,arguments)},ye=b._emscripten_bind_btCylinderShape_getMargin_0=function(){return(ye=b._emscripten_bind_btCylinderShape_getMargin_0= -b.asm.Cc).apply(null,arguments)},ze=b._emscripten_bind_btCylinderShape_setLocalScaling_1=function(){return(ze=b._emscripten_bind_btCylinderShape_setLocalScaling_1=b.asm.Dc).apply(null,arguments)},Ae=b._emscripten_bind_btCylinderShape_getLocalScaling_0=function(){return(Ae=b._emscripten_bind_btCylinderShape_getLocalScaling_0=b.asm.Ec).apply(null,arguments)},Be=b._emscripten_bind_btCylinderShape_calculateLocalInertia_2=function(){return(Be=b._emscripten_bind_btCylinderShape_calculateLocalInertia_2= -b.asm.Fc).apply(null,arguments)},Ce=b._emscripten_bind_btCylinderShape___destroy___0=function(){return(Ce=b._emscripten_bind_btCylinderShape___destroy___0=b.asm.Gc).apply(null,arguments)},De=b._emscripten_bind_btDiscreteDynamicsWorld_btDiscreteDynamicsWorld_4=function(){return(De=b._emscripten_bind_btDiscreteDynamicsWorld_btDiscreteDynamicsWorld_4=b.asm.Hc).apply(null,arguments)},Ee=b._emscripten_bind_btDiscreteDynamicsWorld_setGravity_1=function(){return(Ee=b._emscripten_bind_btDiscreteDynamicsWorld_setGravity_1= -b.asm.Ic).apply(null,arguments)},Fe=b._emscripten_bind_btDiscreteDynamicsWorld_getGravity_0=function(){return(Fe=b._emscripten_bind_btDiscreteDynamicsWorld_getGravity_0=b.asm.Jc).apply(null,arguments)},Ge=b._emscripten_bind_btDiscreteDynamicsWorld_addRigidBody_1=function(){return(Ge=b._emscripten_bind_btDiscreteDynamicsWorld_addRigidBody_1=b.asm.Kc).apply(null,arguments)},He=b._emscripten_bind_btDiscreteDynamicsWorld_addRigidBody_3=function(){return(He=b._emscripten_bind_btDiscreteDynamicsWorld_addRigidBody_3= -b.asm.Lc).apply(null,arguments)},Ie=b._emscripten_bind_btDiscreteDynamicsWorld_removeRigidBody_1=function(){return(Ie=b._emscripten_bind_btDiscreteDynamicsWorld_removeRigidBody_1=b.asm.Mc).apply(null,arguments)},Je=b._emscripten_bind_btDiscreteDynamicsWorld_addConstraint_1=function(){return(Je=b._emscripten_bind_btDiscreteDynamicsWorld_addConstraint_1=b.asm.Nc).apply(null,arguments)},Ke=b._emscripten_bind_btDiscreteDynamicsWorld_addConstraint_2=function(){return(Ke=b._emscripten_bind_btDiscreteDynamicsWorld_addConstraint_2= -b.asm.Oc).apply(null,arguments)},Le=b._emscripten_bind_btDiscreteDynamicsWorld_removeConstraint_1=function(){return(Le=b._emscripten_bind_btDiscreteDynamicsWorld_removeConstraint_1=b.asm.Pc).apply(null,arguments)},Me=b._emscripten_bind_btDiscreteDynamicsWorld_stepSimulation_1=function(){return(Me=b._emscripten_bind_btDiscreteDynamicsWorld_stepSimulation_1=b.asm.Qc).apply(null,arguments)},Ne=b._emscripten_bind_btDiscreteDynamicsWorld_stepSimulation_2=function(){return(Ne=b._emscripten_bind_btDiscreteDynamicsWorld_stepSimulation_2= -b.asm.Rc).apply(null,arguments)},Oe=b._emscripten_bind_btDiscreteDynamicsWorld_stepSimulation_3=function(){return(Oe=b._emscripten_bind_btDiscreteDynamicsWorld_stepSimulation_3=b.asm.Sc).apply(null,arguments)},Pe=b._emscripten_bind_btDiscreteDynamicsWorld_setContactAddedCallback_1=function(){return(Pe=b._emscripten_bind_btDiscreteDynamicsWorld_setContactAddedCallback_1=b.asm.Tc).apply(null,arguments)},Qe=b._emscripten_bind_btDiscreteDynamicsWorld_setContactProcessedCallback_1=function(){return(Qe= -b._emscripten_bind_btDiscreteDynamicsWorld_setContactProcessedCallback_1=b.asm.Uc).apply(null,arguments)},Re=b._emscripten_bind_btDiscreteDynamicsWorld_setContactDestroyedCallback_1=function(){return(Re=b._emscripten_bind_btDiscreteDynamicsWorld_setContactDestroyedCallback_1=b.asm.Vc).apply(null,arguments)},Se=b._emscripten_bind_btDiscreteDynamicsWorld_getDispatcher_0=function(){return(Se=b._emscripten_bind_btDiscreteDynamicsWorld_getDispatcher_0=b.asm.Wc).apply(null,arguments)},Te=b._emscripten_bind_btDiscreteDynamicsWorld_rayTest_3= -function(){return(Te=b._emscripten_bind_btDiscreteDynamicsWorld_rayTest_3=b.asm.Xc).apply(null,arguments)},Ue=b._emscripten_bind_btDiscreteDynamicsWorld_getPairCache_0=function(){return(Ue=b._emscripten_bind_btDiscreteDynamicsWorld_getPairCache_0=b.asm.Yc).apply(null,arguments)},Ve=b._emscripten_bind_btDiscreteDynamicsWorld_getDispatchInfo_0=function(){return(Ve=b._emscripten_bind_btDiscreteDynamicsWorld_getDispatchInfo_0=b.asm.Zc).apply(null,arguments)},We=b._emscripten_bind_btDiscreteDynamicsWorld_addCollisionObject_1= -function(){return(We=b._emscripten_bind_btDiscreteDynamicsWorld_addCollisionObject_1=b.asm._c).apply(null,arguments)},Xe=b._emscripten_bind_btDiscreteDynamicsWorld_addCollisionObject_2=function(){return(Xe=b._emscripten_bind_btDiscreteDynamicsWorld_addCollisionObject_2=b.asm.$c).apply(null,arguments)},Ye=b._emscripten_bind_btDiscreteDynamicsWorld_addCollisionObject_3=function(){return(Ye=b._emscripten_bind_btDiscreteDynamicsWorld_addCollisionObject_3=b.asm.ad).apply(null,arguments)},Ze=b._emscripten_bind_btDiscreteDynamicsWorld_removeCollisionObject_1= -function(){return(Ze=b._emscripten_bind_btDiscreteDynamicsWorld_removeCollisionObject_1=b.asm.bd).apply(null,arguments)},$e=b._emscripten_bind_btDiscreteDynamicsWorld_getBroadphase_0=function(){return($e=b._emscripten_bind_btDiscreteDynamicsWorld_getBroadphase_0=b.asm.cd).apply(null,arguments)},af=b._emscripten_bind_btDiscreteDynamicsWorld_convexSweepTest_5=function(){return(af=b._emscripten_bind_btDiscreteDynamicsWorld_convexSweepTest_5=b.asm.dd).apply(null,arguments)},bf=b._emscripten_bind_btDiscreteDynamicsWorld_contactPairTest_3= -function(){return(bf=b._emscripten_bind_btDiscreteDynamicsWorld_contactPairTest_3=b.asm.ed).apply(null,arguments)},cf=b._emscripten_bind_btDiscreteDynamicsWorld_contactTest_2=function(){return(cf=b._emscripten_bind_btDiscreteDynamicsWorld_contactTest_2=b.asm.fd).apply(null,arguments)},df=b._emscripten_bind_btDiscreteDynamicsWorld_updateSingleAabb_1=function(){return(df=b._emscripten_bind_btDiscreteDynamicsWorld_updateSingleAabb_1=b.asm.gd).apply(null,arguments)},ef=b._emscripten_bind_btDiscreteDynamicsWorld_setDebugDrawer_1= -function(){return(ef=b._emscripten_bind_btDiscreteDynamicsWorld_setDebugDrawer_1=b.asm.hd).apply(null,arguments)},ff=b._emscripten_bind_btDiscreteDynamicsWorld_getDebugDrawer_0=function(){return(ff=b._emscripten_bind_btDiscreteDynamicsWorld_getDebugDrawer_0=b.asm.id).apply(null,arguments)},gf=b._emscripten_bind_btDiscreteDynamicsWorld_debugDrawWorld_0=function(){return(gf=b._emscripten_bind_btDiscreteDynamicsWorld_debugDrawWorld_0=b.asm.jd).apply(null,arguments)},hf=b._emscripten_bind_btDiscreteDynamicsWorld_debugDrawObject_3= -function(){return(hf=b._emscripten_bind_btDiscreteDynamicsWorld_debugDrawObject_3=b.asm.kd).apply(null,arguments)},jf=b._emscripten_bind_btDiscreteDynamicsWorld_addAction_1=function(){return(jf=b._emscripten_bind_btDiscreteDynamicsWorld_addAction_1=b.asm.ld).apply(null,arguments)},kf=b._emscripten_bind_btDiscreteDynamicsWorld_removeAction_1=function(){return(kf=b._emscripten_bind_btDiscreteDynamicsWorld_removeAction_1=b.asm.md).apply(null,arguments)},lf=b._emscripten_bind_btDiscreteDynamicsWorld_getSolverInfo_0= -function(){return(lf=b._emscripten_bind_btDiscreteDynamicsWorld_getSolverInfo_0=b.asm.nd).apply(null,arguments)},mf=b._emscripten_bind_btDiscreteDynamicsWorld_setInternalTickCallback_1=function(){return(mf=b._emscripten_bind_btDiscreteDynamicsWorld_setInternalTickCallback_1=b.asm.od).apply(null,arguments)},nf=b._emscripten_bind_btDiscreteDynamicsWorld_setInternalTickCallback_2=function(){return(nf=b._emscripten_bind_btDiscreteDynamicsWorld_setInternalTickCallback_2=b.asm.pd).apply(null,arguments)}, -of=b._emscripten_bind_btDiscreteDynamicsWorld_setInternalTickCallback_3=function(){return(of=b._emscripten_bind_btDiscreteDynamicsWorld_setInternalTickCallback_3=b.asm.qd).apply(null,arguments)},pf=b._emscripten_bind_btDiscreteDynamicsWorld___destroy___0=function(){return(pf=b._emscripten_bind_btDiscreteDynamicsWorld___destroy___0=b.asm.rd).apply(null,arguments)},qf=b._emscripten_bind_btConvexShape_setLocalScaling_1=function(){return(qf=b._emscripten_bind_btConvexShape_setLocalScaling_1=b.asm.sd).apply(null, -arguments)},rf=b._emscripten_bind_btConvexShape_getLocalScaling_0=function(){return(rf=b._emscripten_bind_btConvexShape_getLocalScaling_0=b.asm.td).apply(null,arguments)},sf=b._emscripten_bind_btConvexShape_calculateLocalInertia_2=function(){return(sf=b._emscripten_bind_btConvexShape_calculateLocalInertia_2=b.asm.ud).apply(null,arguments)},tf=b._emscripten_bind_btConvexShape_setMargin_1=function(){return(tf=b._emscripten_bind_btConvexShape_setMargin_1=b.asm.vd).apply(null,arguments)},uf=b._emscripten_bind_btConvexShape_getMargin_0= -function(){return(uf=b._emscripten_bind_btConvexShape_getMargin_0=b.asm.wd).apply(null,arguments)},vf=b._emscripten_bind_btConvexShape___destroy___0=function(){return(vf=b._emscripten_bind_btConvexShape___destroy___0=b.asm.xd).apply(null,arguments)},wf=b._emscripten_bind_btDispatcher_getNumManifolds_0=function(){return(wf=b._emscripten_bind_btDispatcher_getNumManifolds_0=b.asm.yd).apply(null,arguments)},xf=b._emscripten_bind_btDispatcher_getManifoldByIndexInternal_1=function(){return(xf=b._emscripten_bind_btDispatcher_getManifoldByIndexInternal_1= -b.asm.zd).apply(null,arguments)},yf=b._emscripten_bind_btDispatcher___destroy___0=function(){return(yf=b._emscripten_bind_btDispatcher___destroy___0=b.asm.Ad).apply(null,arguments)},zf=b._emscripten_bind_btGeneric6DofConstraint_btGeneric6DofConstraint_3=function(){return(zf=b._emscripten_bind_btGeneric6DofConstraint_btGeneric6DofConstraint_3=b.asm.Bd).apply(null,arguments)},Af=b._emscripten_bind_btGeneric6DofConstraint_btGeneric6DofConstraint_5=function(){return(Af=b._emscripten_bind_btGeneric6DofConstraint_btGeneric6DofConstraint_5= -b.asm.Cd).apply(null,arguments)},Bf=b._emscripten_bind_btGeneric6DofConstraint_setLinearLowerLimit_1=function(){return(Bf=b._emscripten_bind_btGeneric6DofConstraint_setLinearLowerLimit_1=b.asm.Dd).apply(null,arguments)},Cf=b._emscripten_bind_btGeneric6DofConstraint_setLinearUpperLimit_1=function(){return(Cf=b._emscripten_bind_btGeneric6DofConstraint_setLinearUpperLimit_1=b.asm.Ed).apply(null,arguments)},Df=b._emscripten_bind_btGeneric6DofConstraint_setAngularLowerLimit_1=function(){return(Df=b._emscripten_bind_btGeneric6DofConstraint_setAngularLowerLimit_1= -b.asm.Fd).apply(null,arguments)},Ef=b._emscripten_bind_btGeneric6DofConstraint_setAngularUpperLimit_1=function(){return(Ef=b._emscripten_bind_btGeneric6DofConstraint_setAngularUpperLimit_1=b.asm.Gd).apply(null,arguments)},Ff=b._emscripten_bind_btGeneric6DofConstraint_getFrameOffsetA_0=function(){return(Ff=b._emscripten_bind_btGeneric6DofConstraint_getFrameOffsetA_0=b.asm.Hd).apply(null,arguments)},Gf=b._emscripten_bind_btGeneric6DofConstraint_enableFeedback_1=function(){return(Gf=b._emscripten_bind_btGeneric6DofConstraint_enableFeedback_1= -b.asm.Id).apply(null,arguments)},Hf=b._emscripten_bind_btGeneric6DofConstraint_getBreakingImpulseThreshold_0=function(){return(Hf=b._emscripten_bind_btGeneric6DofConstraint_getBreakingImpulseThreshold_0=b.asm.Jd).apply(null,arguments)},If=b._emscripten_bind_btGeneric6DofConstraint_setBreakingImpulseThreshold_1=function(){return(If=b._emscripten_bind_btGeneric6DofConstraint_setBreakingImpulseThreshold_1=b.asm.Kd).apply(null,arguments)},Jf=b._emscripten_bind_btGeneric6DofConstraint_getParam_2=function(){return(Jf= -b._emscripten_bind_btGeneric6DofConstraint_getParam_2=b.asm.Ld).apply(null,arguments)},Kf=b._emscripten_bind_btGeneric6DofConstraint_setParam_3=function(){return(Kf=b._emscripten_bind_btGeneric6DofConstraint_setParam_3=b.asm.Md).apply(null,arguments)},Lf=b._emscripten_bind_btGeneric6DofConstraint___destroy___0=function(){return(Lf=b._emscripten_bind_btGeneric6DofConstraint___destroy___0=b.asm.Nd).apply(null,arguments)},Mf=b._emscripten_bind_btStridingMeshInterface_setScaling_1=function(){return(Mf= -b._emscripten_bind_btStridingMeshInterface_setScaling_1=b.asm.Od).apply(null,arguments)},Nf=b._emscripten_bind_btStridingMeshInterface___destroy___0=function(){return(Nf=b._emscripten_bind_btStridingMeshInterface___destroy___0=b.asm.Pd).apply(null,arguments)},Of=b._emscripten_bind_btMotionState_getWorldTransform_1=function(){return(Of=b._emscripten_bind_btMotionState_getWorldTransform_1=b.asm.Qd).apply(null,arguments)},Pf=b._emscripten_bind_btMotionState_setWorldTransform_1=function(){return(Pf=b._emscripten_bind_btMotionState_setWorldTransform_1= -b.asm.Rd).apply(null,arguments)},Qf=b._emscripten_bind_btMotionState___destroy___0=function(){return(Qf=b._emscripten_bind_btMotionState___destroy___0=b.asm.Sd).apply(null,arguments)},Rf=b._emscripten_bind_ConvexResultCallback_hasHit_0=function(){return(Rf=b._emscripten_bind_ConvexResultCallback_hasHit_0=b.asm.Td).apply(null,arguments)},Sf=b._emscripten_bind_ConvexResultCallback_get_m_collisionFilterGroup_0=function(){return(Sf=b._emscripten_bind_ConvexResultCallback_get_m_collisionFilterGroup_0= -b.asm.Ud).apply(null,arguments)},Tf=b._emscripten_bind_ConvexResultCallback_set_m_collisionFilterGroup_1=function(){return(Tf=b._emscripten_bind_ConvexResultCallback_set_m_collisionFilterGroup_1=b.asm.Vd).apply(null,arguments)},Uf=b._emscripten_bind_ConvexResultCallback_get_m_collisionFilterMask_0=function(){return(Uf=b._emscripten_bind_ConvexResultCallback_get_m_collisionFilterMask_0=b.asm.Wd).apply(null,arguments)},Vf=b._emscripten_bind_ConvexResultCallback_set_m_collisionFilterMask_1=function(){return(Vf= -b._emscripten_bind_ConvexResultCallback_set_m_collisionFilterMask_1=b.asm.Xd).apply(null,arguments)},Wf=b._emscripten_bind_ConvexResultCallback_get_m_closestHitFraction_0=function(){return(Wf=b._emscripten_bind_ConvexResultCallback_get_m_closestHitFraction_0=b.asm.Yd).apply(null,arguments)},Xf=b._emscripten_bind_ConvexResultCallback_set_m_closestHitFraction_1=function(){return(Xf=b._emscripten_bind_ConvexResultCallback_set_m_closestHitFraction_1=b.asm.Zd).apply(null,arguments)},Yf=b._emscripten_bind_ConvexResultCallback___destroy___0= -function(){return(Yf=b._emscripten_bind_ConvexResultCallback___destroy___0=b.asm._d).apply(null,arguments)},Zf=b._emscripten_bind_ContactResultCallback_addSingleResult_7=function(){return(Zf=b._emscripten_bind_ContactResultCallback_addSingleResult_7=b.asm.$d).apply(null,arguments)},$f=b._emscripten_bind_ContactResultCallback___destroy___0=function(){return($f=b._emscripten_bind_ContactResultCallback___destroy___0=b.asm.ae).apply(null,arguments)},ag=b._emscripten_bind_btSoftBodySolver___destroy___0= -function(){return(ag=b._emscripten_bind_btSoftBodySolver___destroy___0=b.asm.be).apply(null,arguments)},bg=b._emscripten_bind_RayResultCallback_hasHit_0=function(){return(bg=b._emscripten_bind_RayResultCallback_hasHit_0=b.asm.ce).apply(null,arguments)},cg=b._emscripten_bind_RayResultCallback_get_m_collisionFilterGroup_0=function(){return(cg=b._emscripten_bind_RayResultCallback_get_m_collisionFilterGroup_0=b.asm.de).apply(null,arguments)},dg=b._emscripten_bind_RayResultCallback_set_m_collisionFilterGroup_1= -function(){return(dg=b._emscripten_bind_RayResultCallback_set_m_collisionFilterGroup_1=b.asm.ee).apply(null,arguments)},eg=b._emscripten_bind_RayResultCallback_get_m_collisionFilterMask_0=function(){return(eg=b._emscripten_bind_RayResultCallback_get_m_collisionFilterMask_0=b.asm.fe).apply(null,arguments)},fg=b._emscripten_bind_RayResultCallback_set_m_collisionFilterMask_1=function(){return(fg=b._emscripten_bind_RayResultCallback_set_m_collisionFilterMask_1=b.asm.ge).apply(null,arguments)},gg=b._emscripten_bind_RayResultCallback_get_m_closestHitFraction_0= -function(){return(gg=b._emscripten_bind_RayResultCallback_get_m_closestHitFraction_0=b.asm.he).apply(null,arguments)},hg=b._emscripten_bind_RayResultCallback_set_m_closestHitFraction_1=function(){return(hg=b._emscripten_bind_RayResultCallback_set_m_closestHitFraction_1=b.asm.ie).apply(null,arguments)},ig=b._emscripten_bind_RayResultCallback_get_m_collisionObject_0=function(){return(ig=b._emscripten_bind_RayResultCallback_get_m_collisionObject_0=b.asm.je).apply(null,arguments)},jg=b._emscripten_bind_RayResultCallback_set_m_collisionObject_1= -function(){return(jg=b._emscripten_bind_RayResultCallback_set_m_collisionObject_1=b.asm.ke).apply(null,arguments)},kg=b._emscripten_bind_RayResultCallback___destroy___0=function(){return(kg=b._emscripten_bind_RayResultCallback___destroy___0=b.asm.le).apply(null,arguments)},lg=b._emscripten_bind_btMatrix3x3_setEulerZYX_3=function(){return(lg=b._emscripten_bind_btMatrix3x3_setEulerZYX_3=b.asm.me).apply(null,arguments)},mg=b._emscripten_bind_btMatrix3x3_getRotation_1=function(){return(mg=b._emscripten_bind_btMatrix3x3_getRotation_1= -b.asm.ne).apply(null,arguments)},ng=b._emscripten_bind_btMatrix3x3_getRow_1=function(){return(ng=b._emscripten_bind_btMatrix3x3_getRow_1=b.asm.oe).apply(null,arguments)},og=b._emscripten_bind_btMatrix3x3___destroy___0=function(){return(og=b._emscripten_bind_btMatrix3x3___destroy___0=b.asm.pe).apply(null,arguments)},pg=b._emscripten_bind_btScalarArray_size_0=function(){return(pg=b._emscripten_bind_btScalarArray_size_0=b.asm.qe).apply(null,arguments)},qg=b._emscripten_bind_btScalarArray_at_1=function(){return(qg= -b._emscripten_bind_btScalarArray_at_1=b.asm.re).apply(null,arguments)},rg=b._emscripten_bind_btScalarArray___destroy___0=function(){return(rg=b._emscripten_bind_btScalarArray___destroy___0=b.asm.se).apply(null,arguments)},sg=b._emscripten_bind_Material_get_m_kLST_0=function(){return(sg=b._emscripten_bind_Material_get_m_kLST_0=b.asm.te).apply(null,arguments)},tg=b._emscripten_bind_Material_set_m_kLST_1=function(){return(tg=b._emscripten_bind_Material_set_m_kLST_1=b.asm.ue).apply(null,arguments)},ug= -b._emscripten_bind_Material_get_m_kAST_0=function(){return(ug=b._emscripten_bind_Material_get_m_kAST_0=b.asm.ve).apply(null,arguments)},vg=b._emscripten_bind_Material_set_m_kAST_1=function(){return(vg=b._emscripten_bind_Material_set_m_kAST_1=b.asm.we).apply(null,arguments)},wg=b._emscripten_bind_Material_get_m_kVST_0=function(){return(wg=b._emscripten_bind_Material_get_m_kVST_0=b.asm.xe).apply(null,arguments)},xg=b._emscripten_bind_Material_set_m_kVST_1=function(){return(xg=b._emscripten_bind_Material_set_m_kVST_1= -b.asm.ye).apply(null,arguments)},yg=b._emscripten_bind_Material_get_m_flags_0=function(){return(yg=b._emscripten_bind_Material_get_m_flags_0=b.asm.ze).apply(null,arguments)},zg=b._emscripten_bind_Material_set_m_flags_1=function(){return(zg=b._emscripten_bind_Material_set_m_flags_1=b.asm.Ae).apply(null,arguments)},Ag=b._emscripten_bind_Material___destroy___0=function(){return(Ag=b._emscripten_bind_Material___destroy___0=b.asm.Be).apply(null,arguments)},Bg=b._emscripten_bind_btDispatcherInfo_get_m_timeStep_0= -function(){return(Bg=b._emscripten_bind_btDispatcherInfo_get_m_timeStep_0=b.asm.Ce).apply(null,arguments)},Cg=b._emscripten_bind_btDispatcherInfo_set_m_timeStep_1=function(){return(Cg=b._emscripten_bind_btDispatcherInfo_set_m_timeStep_1=b.asm.De).apply(null,arguments)},Dg=b._emscripten_bind_btDispatcherInfo_get_m_stepCount_0=function(){return(Dg=b._emscripten_bind_btDispatcherInfo_get_m_stepCount_0=b.asm.Ee).apply(null,arguments)},Eg=b._emscripten_bind_btDispatcherInfo_set_m_stepCount_1=function(){return(Eg= -b._emscripten_bind_btDispatcherInfo_set_m_stepCount_1=b.asm.Fe).apply(null,arguments)},Fg=b._emscripten_bind_btDispatcherInfo_get_m_dispatchFunc_0=function(){return(Fg=b._emscripten_bind_btDispatcherInfo_get_m_dispatchFunc_0=b.asm.Ge).apply(null,arguments)},Gg=b._emscripten_bind_btDispatcherInfo_set_m_dispatchFunc_1=function(){return(Gg=b._emscripten_bind_btDispatcherInfo_set_m_dispatchFunc_1=b.asm.He).apply(null,arguments)},Hg=b._emscripten_bind_btDispatcherInfo_get_m_timeOfImpact_0=function(){return(Hg= -b._emscripten_bind_btDispatcherInfo_get_m_timeOfImpact_0=b.asm.Ie).apply(null,arguments)},Ig=b._emscripten_bind_btDispatcherInfo_set_m_timeOfImpact_1=function(){return(Ig=b._emscripten_bind_btDispatcherInfo_set_m_timeOfImpact_1=b.asm.Je).apply(null,arguments)},Jg=b._emscripten_bind_btDispatcherInfo_get_m_useContinuous_0=function(){return(Jg=b._emscripten_bind_btDispatcherInfo_get_m_useContinuous_0=b.asm.Ke).apply(null,arguments)},Kg=b._emscripten_bind_btDispatcherInfo_set_m_useContinuous_1=function(){return(Kg= -b._emscripten_bind_btDispatcherInfo_set_m_useContinuous_1=b.asm.Le).apply(null,arguments)},Lg=b._emscripten_bind_btDispatcherInfo_get_m_enableSatConvex_0=function(){return(Lg=b._emscripten_bind_btDispatcherInfo_get_m_enableSatConvex_0=b.asm.Me).apply(null,arguments)},Mg=b._emscripten_bind_btDispatcherInfo_set_m_enableSatConvex_1=function(){return(Mg=b._emscripten_bind_btDispatcherInfo_set_m_enableSatConvex_1=b.asm.Ne).apply(null,arguments)},Ng=b._emscripten_bind_btDispatcherInfo_get_m_enableSPU_0= -function(){return(Ng=b._emscripten_bind_btDispatcherInfo_get_m_enableSPU_0=b.asm.Oe).apply(null,arguments)},Og=b._emscripten_bind_btDispatcherInfo_set_m_enableSPU_1=function(){return(Og=b._emscripten_bind_btDispatcherInfo_set_m_enableSPU_1=b.asm.Pe).apply(null,arguments)},Pg=b._emscripten_bind_btDispatcherInfo_get_m_useEpa_0=function(){return(Pg=b._emscripten_bind_btDispatcherInfo_get_m_useEpa_0=b.asm.Qe).apply(null,arguments)},Qg=b._emscripten_bind_btDispatcherInfo_set_m_useEpa_1=function(){return(Qg= -b._emscripten_bind_btDispatcherInfo_set_m_useEpa_1=b.asm.Re).apply(null,arguments)},Rg=b._emscripten_bind_btDispatcherInfo_get_m_allowedCcdPenetration_0=function(){return(Rg=b._emscripten_bind_btDispatcherInfo_get_m_allowedCcdPenetration_0=b.asm.Se).apply(null,arguments)},Sg=b._emscripten_bind_btDispatcherInfo_set_m_allowedCcdPenetration_1=function(){return(Sg=b._emscripten_bind_btDispatcherInfo_set_m_allowedCcdPenetration_1=b.asm.Te).apply(null,arguments)},Tg=b._emscripten_bind_btDispatcherInfo_get_m_useConvexConservativeDistanceUtil_0= -function(){return(Tg=b._emscripten_bind_btDispatcherInfo_get_m_useConvexConservativeDistanceUtil_0=b.asm.Ue).apply(null,arguments)},Ug=b._emscripten_bind_btDispatcherInfo_set_m_useConvexConservativeDistanceUtil_1=function(){return(Ug=b._emscripten_bind_btDispatcherInfo_set_m_useConvexConservativeDistanceUtil_1=b.asm.Ve).apply(null,arguments)},Vg=b._emscripten_bind_btDispatcherInfo_get_m_convexConservativeDistanceThreshold_0=function(){return(Vg=b._emscripten_bind_btDispatcherInfo_get_m_convexConservativeDistanceThreshold_0= -b.asm.We).apply(null,arguments)},Wg=b._emscripten_bind_btDispatcherInfo_set_m_convexConservativeDistanceThreshold_1=function(){return(Wg=b._emscripten_bind_btDispatcherInfo_set_m_convexConservativeDistanceThreshold_1=b.asm.Xe).apply(null,arguments)},Xg=b._emscripten_bind_btDispatcherInfo___destroy___0=function(){return(Xg=b._emscripten_bind_btDispatcherInfo___destroy___0=b.asm.Ye).apply(null,arguments)},Yg=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_chassisConnectionCS_0=function(){return(Yg= -b._emscripten_bind_btWheelInfoConstructionInfo_get_m_chassisConnectionCS_0=b.asm.Ze).apply(null,arguments)},Zg=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_chassisConnectionCS_1=function(){return(Zg=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_chassisConnectionCS_1=b.asm._e).apply(null,arguments)},$g=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelDirectionCS_0=function(){return($g=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelDirectionCS_0=b.asm.$e).apply(null, -arguments)},ah=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelDirectionCS_1=function(){return(ah=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelDirectionCS_1=b.asm.af).apply(null,arguments)},bh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelAxleCS_0=function(){return(bh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelAxleCS_0=b.asm.bf).apply(null,arguments)},ch=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelAxleCS_1=function(){return(ch=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelAxleCS_1= -b.asm.cf).apply(null,arguments)},dh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_suspensionRestLength_0=function(){return(dh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_suspensionRestLength_0=b.asm.df).apply(null,arguments)},eh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_suspensionRestLength_1=function(){return(eh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_suspensionRestLength_1=b.asm.ef).apply(null,arguments)},fh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_maxSuspensionTravelCm_0= -function(){return(fh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_maxSuspensionTravelCm_0=b.asm.ff).apply(null,arguments)},gh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_maxSuspensionTravelCm_1=function(){return(gh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_maxSuspensionTravelCm_1=b.asm.gf).apply(null,arguments)},hh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelRadius_0=function(){return(hh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelRadius_0=b.asm.hf).apply(null, -arguments)},ih=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelRadius_1=function(){return(ih=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelRadius_1=b.asm.jf).apply(null,arguments)},jh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_suspensionStiffness_0=function(){return(jh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_suspensionStiffness_0=b.asm.kf).apply(null,arguments)},kh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_suspensionStiffness_1=function(){return(kh= -b._emscripten_bind_btWheelInfoConstructionInfo_set_m_suspensionStiffness_1=b.asm.lf).apply(null,arguments)},lh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelsDampingCompression_0=function(){return(lh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelsDampingCompression_0=b.asm.mf).apply(null,arguments)},mh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelsDampingCompression_1=function(){return(mh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelsDampingCompression_1= -b.asm.nf).apply(null,arguments)},nh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelsDampingRelaxation_0=function(){return(nh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_wheelsDampingRelaxation_0=b.asm.of).apply(null,arguments)},oh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelsDampingRelaxation_1=function(){return(oh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_wheelsDampingRelaxation_1=b.asm.pf).apply(null,arguments)},ph=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_frictionSlip_0= -function(){return(ph=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_frictionSlip_0=b.asm.qf).apply(null,arguments)},qh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_frictionSlip_1=function(){return(qh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_frictionSlip_1=b.asm.rf).apply(null,arguments)},rh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_maxSuspensionForce_0=function(){return(rh=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_maxSuspensionForce_0=b.asm.sf).apply(null, -arguments)},sh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_maxSuspensionForce_1=function(){return(sh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_maxSuspensionForce_1=b.asm.tf).apply(null,arguments)},th=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_bIsFrontWheel_0=function(){return(th=b._emscripten_bind_btWheelInfoConstructionInfo_get_m_bIsFrontWheel_0=b.asm.uf).apply(null,arguments)},uh=b._emscripten_bind_btWheelInfoConstructionInfo_set_m_bIsFrontWheel_1=function(){return(uh= -b._emscripten_bind_btWheelInfoConstructionInfo_set_m_bIsFrontWheel_1=b.asm.vf).apply(null,arguments)},vh=b._emscripten_bind_btWheelInfoConstructionInfo___destroy___0=function(){return(vh=b._emscripten_bind_btWheelInfoConstructionInfo___destroy___0=b.asm.wf).apply(null,arguments)},wh=b._emscripten_bind_btConvexTriangleMeshShape_btConvexTriangleMeshShape_1=function(){return(wh=b._emscripten_bind_btConvexTriangleMeshShape_btConvexTriangleMeshShape_1=b.asm.xf).apply(null,arguments)},xh=b._emscripten_bind_btConvexTriangleMeshShape_btConvexTriangleMeshShape_2= -function(){return(xh=b._emscripten_bind_btConvexTriangleMeshShape_btConvexTriangleMeshShape_2=b.asm.yf).apply(null,arguments)},yh=b._emscripten_bind_btConvexTriangleMeshShape_setLocalScaling_1=function(){return(yh=b._emscripten_bind_btConvexTriangleMeshShape_setLocalScaling_1=b.asm.zf).apply(null,arguments)},zh=b._emscripten_bind_btConvexTriangleMeshShape_getLocalScaling_0=function(){return(zh=b._emscripten_bind_btConvexTriangleMeshShape_getLocalScaling_0=b.asm.Af).apply(null,arguments)},Ah=b._emscripten_bind_btConvexTriangleMeshShape_calculateLocalInertia_2= -function(){return(Ah=b._emscripten_bind_btConvexTriangleMeshShape_calculateLocalInertia_2=b.asm.Bf).apply(null,arguments)},Bh=b._emscripten_bind_btConvexTriangleMeshShape_setMargin_1=function(){return(Bh=b._emscripten_bind_btConvexTriangleMeshShape_setMargin_1=b.asm.Cf).apply(null,arguments)},Ch=b._emscripten_bind_btConvexTriangleMeshShape_getMargin_0=function(){return(Ch=b._emscripten_bind_btConvexTriangleMeshShape_getMargin_0=b.asm.Df).apply(null,arguments)},Dh=b._emscripten_bind_btConvexTriangleMeshShape___destroy___0= -function(){return(Dh=b._emscripten_bind_btConvexTriangleMeshShape___destroy___0=b.asm.Ef).apply(null,arguments)},Eh=b._emscripten_bind_btBroadphaseInterface_getOverlappingPairCache_0=function(){return(Eh=b._emscripten_bind_btBroadphaseInterface_getOverlappingPairCache_0=b.asm.Ff).apply(null,arguments)},Fh=b._emscripten_bind_btBroadphaseInterface___destroy___0=function(){return(Fh=b._emscripten_bind_btBroadphaseInterface___destroy___0=b.asm.Gf).apply(null,arguments)},Gh=b._emscripten_bind_btRigidBodyConstructionInfo_btRigidBodyConstructionInfo_3= -function(){return(Gh=b._emscripten_bind_btRigidBodyConstructionInfo_btRigidBodyConstructionInfo_3=b.asm.Hf).apply(null,arguments)},Hh=b._emscripten_bind_btRigidBodyConstructionInfo_btRigidBodyConstructionInfo_4=function(){return(Hh=b._emscripten_bind_btRigidBodyConstructionInfo_btRigidBodyConstructionInfo_4=b.asm.If).apply(null,arguments)},Ih=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_linearDamping_0=function(){return(Ih=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_linearDamping_0= -b.asm.Jf).apply(null,arguments)},Jh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_linearDamping_1=function(){return(Jh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_linearDamping_1=b.asm.Kf).apply(null,arguments)},Kh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_angularDamping_0=function(){return(Kh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_angularDamping_0=b.asm.Lf).apply(null,arguments)},Lh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_angularDamping_1=function(){return(Lh= -b._emscripten_bind_btRigidBodyConstructionInfo_set_m_angularDamping_1=b.asm.Mf).apply(null,arguments)},Mh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_friction_0=function(){return(Mh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_friction_0=b.asm.Nf).apply(null,arguments)},Nh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_friction_1=function(){return(Nh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_friction_1=b.asm.Of).apply(null,arguments)},Oh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_rollingFriction_0= -function(){return(Oh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_rollingFriction_0=b.asm.Pf).apply(null,arguments)},Ph=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_rollingFriction_1=function(){return(Ph=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_rollingFriction_1=b.asm.Qf).apply(null,arguments)},Qh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_restitution_0=function(){return(Qh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_restitution_0=b.asm.Rf).apply(null, -arguments)},Rh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_restitution_1=function(){return(Rh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_restitution_1=b.asm.Sf).apply(null,arguments)},Sh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_linearSleepingThreshold_0=function(){return(Sh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_linearSleepingThreshold_0=b.asm.Tf).apply(null,arguments)},Th=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_linearSleepingThreshold_1=function(){return(Th= -b._emscripten_bind_btRigidBodyConstructionInfo_set_m_linearSleepingThreshold_1=b.asm.Uf).apply(null,arguments)},Uh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_angularSleepingThreshold_0=function(){return(Uh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_angularSleepingThreshold_0=b.asm.Vf).apply(null,arguments)},Vh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_angularSleepingThreshold_1=function(){return(Vh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_angularSleepingThreshold_1= -b.asm.Wf).apply(null,arguments)},Wh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalDamping_0=function(){return(Wh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalDamping_0=b.asm.Xf).apply(null,arguments)},Xh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalDamping_1=function(){return(Xh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalDamping_1=b.asm.Yf).apply(null,arguments)},Yh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalDampingFactor_0= -function(){return(Yh=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalDampingFactor_0=b.asm.Zf).apply(null,arguments)},Zh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalDampingFactor_1=function(){return(Zh=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalDampingFactor_1=b.asm._f).apply(null,arguments)},$h=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalLinearDampingThresholdSqr_0=function(){return($h=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalLinearDampingThresholdSqr_0= -b.asm.$f).apply(null,arguments)},ai=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalLinearDampingThresholdSqr_1=function(){return(ai=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalLinearDampingThresholdSqr_1=b.asm.ag).apply(null,arguments)},bi=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalAngularDampingThresholdSqr_0=function(){return(bi=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalAngularDampingThresholdSqr_0=b.asm.bg).apply(null, -arguments)},ci=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalAngularDampingThresholdSqr_1=function(){return(ci=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalAngularDampingThresholdSqr_1=b.asm.cg).apply(null,arguments)},di=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalAngularDampingFactor_0=function(){return(di=b._emscripten_bind_btRigidBodyConstructionInfo_get_m_additionalAngularDampingFactor_0=b.asm.dg).apply(null,arguments)},ei=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalAngularDampingFactor_1= -function(){return(ei=b._emscripten_bind_btRigidBodyConstructionInfo_set_m_additionalAngularDampingFactor_1=b.asm.eg).apply(null,arguments)},fi=b._emscripten_bind_btRigidBodyConstructionInfo___destroy___0=function(){return(fi=b._emscripten_bind_btRigidBodyConstructionInfo___destroy___0=b.asm.fg).apply(null,arguments)},gi=b._emscripten_bind_btCollisionConfiguration___destroy___0=function(){return(gi=b._emscripten_bind_btCollisionConfiguration___destroy___0=b.asm.gg).apply(null,arguments)},hi=b._emscripten_bind_btPersistentManifold_btPersistentManifold_0= -function(){return(hi=b._emscripten_bind_btPersistentManifold_btPersistentManifold_0=b.asm.hg).apply(null,arguments)},ii=b._emscripten_bind_btPersistentManifold_getBody0_0=function(){return(ii=b._emscripten_bind_btPersistentManifold_getBody0_0=b.asm.ig).apply(null,arguments)},ji=b._emscripten_bind_btPersistentManifold_getBody1_0=function(){return(ji=b._emscripten_bind_btPersistentManifold_getBody1_0=b.asm.jg).apply(null,arguments)},ki=b._emscripten_bind_btPersistentManifold_getNumContacts_0=function(){return(ki= -b._emscripten_bind_btPersistentManifold_getNumContacts_0=b.asm.kg).apply(null,arguments)},li=b._emscripten_bind_btPersistentManifold_getContactPoint_1=function(){return(li=b._emscripten_bind_btPersistentManifold_getContactPoint_1=b.asm.lg).apply(null,arguments)},mi=b._emscripten_bind_btPersistentManifold___destroy___0=function(){return(mi=b._emscripten_bind_btPersistentManifold___destroy___0=b.asm.mg).apply(null,arguments)},ni=b._emscripten_bind_btCompoundShape_btCompoundShape_0=function(){return(ni= -b._emscripten_bind_btCompoundShape_btCompoundShape_0=b.asm.ng).apply(null,arguments)},oi=b._emscripten_bind_btCompoundShape_btCompoundShape_1=function(){return(oi=b._emscripten_bind_btCompoundShape_btCompoundShape_1=b.asm.og).apply(null,arguments)},pi=b._emscripten_bind_btCompoundShape_addChildShape_2=function(){return(pi=b._emscripten_bind_btCompoundShape_addChildShape_2=b.asm.pg).apply(null,arguments)},qi=b._emscripten_bind_btCompoundShape_removeChildShape_1=function(){return(qi=b._emscripten_bind_btCompoundShape_removeChildShape_1= -b.asm.qg).apply(null,arguments)},ri=b._emscripten_bind_btCompoundShape_removeChildShapeByIndex_1=function(){return(ri=b._emscripten_bind_btCompoundShape_removeChildShapeByIndex_1=b.asm.rg).apply(null,arguments)},si=b._emscripten_bind_btCompoundShape_getNumChildShapes_0=function(){return(si=b._emscripten_bind_btCompoundShape_getNumChildShapes_0=b.asm.sg).apply(null,arguments)},ti=b._emscripten_bind_btCompoundShape_getChildShape_1=function(){return(ti=b._emscripten_bind_btCompoundShape_getChildShape_1= -b.asm.tg).apply(null,arguments)},ui=b._emscripten_bind_btCompoundShape_updateChildTransform_2=function(){return(ui=b._emscripten_bind_btCompoundShape_updateChildTransform_2=b.asm.ug).apply(null,arguments)},vi=b._emscripten_bind_btCompoundShape_updateChildTransform_3=function(){return(vi=b._emscripten_bind_btCompoundShape_updateChildTransform_3=b.asm.vg).apply(null,arguments)},wi=b._emscripten_bind_btCompoundShape_setMargin_1=function(){return(wi=b._emscripten_bind_btCompoundShape_setMargin_1=b.asm.wg).apply(null, -arguments)},xi=b._emscripten_bind_btCompoundShape_getMargin_0=function(){return(xi=b._emscripten_bind_btCompoundShape_getMargin_0=b.asm.xg).apply(null,arguments)},yi=b._emscripten_bind_btCompoundShape_setLocalScaling_1=function(){return(yi=b._emscripten_bind_btCompoundShape_setLocalScaling_1=b.asm.yg).apply(null,arguments)},zi=b._emscripten_bind_btCompoundShape_getLocalScaling_0=function(){return(zi=b._emscripten_bind_btCompoundShape_getLocalScaling_0=b.asm.zg).apply(null,arguments)},Ai=b._emscripten_bind_btCompoundShape_calculateLocalInertia_2= -function(){return(Ai=b._emscripten_bind_btCompoundShape_calculateLocalInertia_2=b.asm.Ag).apply(null,arguments)},Bi=b._emscripten_bind_btCompoundShape___destroy___0=function(){return(Bi=b._emscripten_bind_btCompoundShape___destroy___0=b.asm.Bg).apply(null,arguments)},Ci=b._emscripten_bind_ClosestConvexResultCallback_ClosestConvexResultCallback_2=function(){return(Ci=b._emscripten_bind_ClosestConvexResultCallback_ClosestConvexResultCallback_2=b.asm.Cg).apply(null,arguments)},Di=b._emscripten_bind_ClosestConvexResultCallback_hasHit_0= -function(){return(Di=b._emscripten_bind_ClosestConvexResultCallback_hasHit_0=b.asm.Dg).apply(null,arguments)},Ei=b._emscripten_bind_ClosestConvexResultCallback_get_m_convexFromWorld_0=function(){return(Ei=b._emscripten_bind_ClosestConvexResultCallback_get_m_convexFromWorld_0=b.asm.Eg).apply(null,arguments)},Fi=b._emscripten_bind_ClosestConvexResultCallback_set_m_convexFromWorld_1=function(){return(Fi=b._emscripten_bind_ClosestConvexResultCallback_set_m_convexFromWorld_1=b.asm.Fg).apply(null,arguments)}, -Gi=b._emscripten_bind_ClosestConvexResultCallback_get_m_convexToWorld_0=function(){return(Gi=b._emscripten_bind_ClosestConvexResultCallback_get_m_convexToWorld_0=b.asm.Gg).apply(null,arguments)},Hi=b._emscripten_bind_ClosestConvexResultCallback_set_m_convexToWorld_1=function(){return(Hi=b._emscripten_bind_ClosestConvexResultCallback_set_m_convexToWorld_1=b.asm.Hg).apply(null,arguments)},Ii=b._emscripten_bind_ClosestConvexResultCallback_get_m_hitNormalWorld_0=function(){return(Ii=b._emscripten_bind_ClosestConvexResultCallback_get_m_hitNormalWorld_0= -b.asm.Ig).apply(null,arguments)},Ji=b._emscripten_bind_ClosestConvexResultCallback_set_m_hitNormalWorld_1=function(){return(Ji=b._emscripten_bind_ClosestConvexResultCallback_set_m_hitNormalWorld_1=b.asm.Jg).apply(null,arguments)},Ki=b._emscripten_bind_ClosestConvexResultCallback_get_m_hitPointWorld_0=function(){return(Ki=b._emscripten_bind_ClosestConvexResultCallback_get_m_hitPointWorld_0=b.asm.Kg).apply(null,arguments)},Li=b._emscripten_bind_ClosestConvexResultCallback_set_m_hitPointWorld_1=function(){return(Li= -b._emscripten_bind_ClosestConvexResultCallback_set_m_hitPointWorld_1=b.asm.Lg).apply(null,arguments)},Mi=b._emscripten_bind_ClosestConvexResultCallback_get_m_collisionFilterGroup_0=function(){return(Mi=b._emscripten_bind_ClosestConvexResultCallback_get_m_collisionFilterGroup_0=b.asm.Mg).apply(null,arguments)},Ni=b._emscripten_bind_ClosestConvexResultCallback_set_m_collisionFilterGroup_1=function(){return(Ni=b._emscripten_bind_ClosestConvexResultCallback_set_m_collisionFilterGroup_1=b.asm.Ng).apply(null, -arguments)},Oi=b._emscripten_bind_ClosestConvexResultCallback_get_m_collisionFilterMask_0=function(){return(Oi=b._emscripten_bind_ClosestConvexResultCallback_get_m_collisionFilterMask_0=b.asm.Og).apply(null,arguments)},Pi=b._emscripten_bind_ClosestConvexResultCallback_set_m_collisionFilterMask_1=function(){return(Pi=b._emscripten_bind_ClosestConvexResultCallback_set_m_collisionFilterMask_1=b.asm.Pg).apply(null,arguments)},Qi=b._emscripten_bind_ClosestConvexResultCallback_get_m_closestHitFraction_0= -function(){return(Qi=b._emscripten_bind_ClosestConvexResultCallback_get_m_closestHitFraction_0=b.asm.Qg).apply(null,arguments)},Ri=b._emscripten_bind_ClosestConvexResultCallback_set_m_closestHitFraction_1=function(){return(Ri=b._emscripten_bind_ClosestConvexResultCallback_set_m_closestHitFraction_1=b.asm.Rg).apply(null,arguments)},Si=b._emscripten_bind_ClosestConvexResultCallback___destroy___0=function(){return(Si=b._emscripten_bind_ClosestConvexResultCallback___destroy___0=b.asm.Sg).apply(null,arguments)}, -Ti=b._emscripten_bind_AllHitsRayResultCallback_AllHitsRayResultCallback_2=function(){return(Ti=b._emscripten_bind_AllHitsRayResultCallback_AllHitsRayResultCallback_2=b.asm.Tg).apply(null,arguments)},Ui=b._emscripten_bind_AllHitsRayResultCallback_hasHit_0=function(){return(Ui=b._emscripten_bind_AllHitsRayResultCallback_hasHit_0=b.asm.Ug).apply(null,arguments)},Vi=b._emscripten_bind_AllHitsRayResultCallback_get_m_collisionObjects_0=function(){return(Vi=b._emscripten_bind_AllHitsRayResultCallback_get_m_collisionObjects_0= -b.asm.Vg).apply(null,arguments)},Wi=b._emscripten_bind_AllHitsRayResultCallback_set_m_collisionObjects_1=function(){return(Wi=b._emscripten_bind_AllHitsRayResultCallback_set_m_collisionObjects_1=b.asm.Wg).apply(null,arguments)},Xi=b._emscripten_bind_AllHitsRayResultCallback_get_m_rayFromWorld_0=function(){return(Xi=b._emscripten_bind_AllHitsRayResultCallback_get_m_rayFromWorld_0=b.asm.Xg).apply(null,arguments)},Yi=b._emscripten_bind_AllHitsRayResultCallback_set_m_rayFromWorld_1=function(){return(Yi= -b._emscripten_bind_AllHitsRayResultCallback_set_m_rayFromWorld_1=b.asm.Yg).apply(null,arguments)},Zi=b._emscripten_bind_AllHitsRayResultCallback_get_m_rayToWorld_0=function(){return(Zi=b._emscripten_bind_AllHitsRayResultCallback_get_m_rayToWorld_0=b.asm.Zg).apply(null,arguments)},$i=b._emscripten_bind_AllHitsRayResultCallback_set_m_rayToWorld_1=function(){return($i=b._emscripten_bind_AllHitsRayResultCallback_set_m_rayToWorld_1=b.asm._g).apply(null,arguments)},aj=b._emscripten_bind_AllHitsRayResultCallback_get_m_hitNormalWorld_0= -function(){return(aj=b._emscripten_bind_AllHitsRayResultCallback_get_m_hitNormalWorld_0=b.asm.$g).apply(null,arguments)},bj=b._emscripten_bind_AllHitsRayResultCallback_set_m_hitNormalWorld_1=function(){return(bj=b._emscripten_bind_AllHitsRayResultCallback_set_m_hitNormalWorld_1=b.asm.ah).apply(null,arguments)},cj=b._emscripten_bind_AllHitsRayResultCallback_get_m_hitPointWorld_0=function(){return(cj=b._emscripten_bind_AllHitsRayResultCallback_get_m_hitPointWorld_0=b.asm.bh).apply(null,arguments)}, -dj=b._emscripten_bind_AllHitsRayResultCallback_set_m_hitPointWorld_1=function(){return(dj=b._emscripten_bind_AllHitsRayResultCallback_set_m_hitPointWorld_1=b.asm.ch).apply(null,arguments)},ej=b._emscripten_bind_AllHitsRayResultCallback_get_m_hitFractions_0=function(){return(ej=b._emscripten_bind_AllHitsRayResultCallback_get_m_hitFractions_0=b.asm.dh).apply(null,arguments)},fj=b._emscripten_bind_AllHitsRayResultCallback_set_m_hitFractions_1=function(){return(fj=b._emscripten_bind_AllHitsRayResultCallback_set_m_hitFractions_1= -b.asm.eh).apply(null,arguments)},gj=b._emscripten_bind_AllHitsRayResultCallback_get_m_collisionFilterGroup_0=function(){return(gj=b._emscripten_bind_AllHitsRayResultCallback_get_m_collisionFilterGroup_0=b.asm.fh).apply(null,arguments)},hj=b._emscripten_bind_AllHitsRayResultCallback_set_m_collisionFilterGroup_1=function(){return(hj=b._emscripten_bind_AllHitsRayResultCallback_set_m_collisionFilterGroup_1=b.asm.gh).apply(null,arguments)},ij=b._emscripten_bind_AllHitsRayResultCallback_get_m_collisionFilterMask_0= -function(){return(ij=b._emscripten_bind_AllHitsRayResultCallback_get_m_collisionFilterMask_0=b.asm.hh).apply(null,arguments)},jj=b._emscripten_bind_AllHitsRayResultCallback_set_m_collisionFilterMask_1=function(){return(jj=b._emscripten_bind_AllHitsRayResultCallback_set_m_collisionFilterMask_1=b.asm.ih).apply(null,arguments)},kj=b._emscripten_bind_AllHitsRayResultCallback_get_m_closestHitFraction_0=function(){return(kj=b._emscripten_bind_AllHitsRayResultCallback_get_m_closestHitFraction_0=b.asm.jh).apply(null, -arguments)},lj=b._emscripten_bind_AllHitsRayResultCallback_set_m_closestHitFraction_1=function(){return(lj=b._emscripten_bind_AllHitsRayResultCallback_set_m_closestHitFraction_1=b.asm.kh).apply(null,arguments)},mj=b._emscripten_bind_AllHitsRayResultCallback_get_m_collisionObject_0=function(){return(mj=b._emscripten_bind_AllHitsRayResultCallback_get_m_collisionObject_0=b.asm.lh).apply(null,arguments)},nj=b._emscripten_bind_AllHitsRayResultCallback_set_m_collisionObject_1=function(){return(nj=b._emscripten_bind_AllHitsRayResultCallback_set_m_collisionObject_1= -b.asm.mh).apply(null,arguments)},oj=b._emscripten_bind_AllHitsRayResultCallback___destroy___0=function(){return(oj=b._emscripten_bind_AllHitsRayResultCallback___destroy___0=b.asm.nh).apply(null,arguments)},pj=b._emscripten_bind_tMaterialArray_size_0=function(){return(pj=b._emscripten_bind_tMaterialArray_size_0=b.asm.oh).apply(null,arguments)},qj=b._emscripten_bind_tMaterialArray_at_1=function(){return(qj=b._emscripten_bind_tMaterialArray_at_1=b.asm.ph).apply(null,arguments)},rj=b._emscripten_bind_tMaterialArray___destroy___0= -function(){return(rj=b._emscripten_bind_tMaterialArray___destroy___0=b.asm.qh).apply(null,arguments)},sj=b._emscripten_bind_btDefaultVehicleRaycaster_btDefaultVehicleRaycaster_1=function(){return(sj=b._emscripten_bind_btDefaultVehicleRaycaster_btDefaultVehicleRaycaster_1=b.asm.rh).apply(null,arguments)},tj=b._emscripten_bind_btDefaultVehicleRaycaster_castRay_3=function(){return(tj=b._emscripten_bind_btDefaultVehicleRaycaster_castRay_3=b.asm.sh).apply(null,arguments)},uj=b._emscripten_bind_btDefaultVehicleRaycaster___destroy___0= -function(){return(uj=b._emscripten_bind_btDefaultVehicleRaycaster___destroy___0=b.asm.th).apply(null,arguments)},vj=b._emscripten_bind_btEmptyShape_btEmptyShape_0=function(){return(vj=b._emscripten_bind_btEmptyShape_btEmptyShape_0=b.asm.uh).apply(null,arguments)},wj=b._emscripten_bind_btEmptyShape_setLocalScaling_1=function(){return(wj=b._emscripten_bind_btEmptyShape_setLocalScaling_1=b.asm.vh).apply(null,arguments)},xj=b._emscripten_bind_btEmptyShape_getLocalScaling_0=function(){return(xj=b._emscripten_bind_btEmptyShape_getLocalScaling_0= -b.asm.wh).apply(null,arguments)},yj=b._emscripten_bind_btEmptyShape_calculateLocalInertia_2=function(){return(yj=b._emscripten_bind_btEmptyShape_calculateLocalInertia_2=b.asm.xh).apply(null,arguments)},zj=b._emscripten_bind_btEmptyShape___destroy___0=function(){return(zj=b._emscripten_bind_btEmptyShape___destroy___0=b.asm.yh).apply(null,arguments)},Aj=b._emscripten_bind_btConstraintSetting_btConstraintSetting_0=function(){return(Aj=b._emscripten_bind_btConstraintSetting_btConstraintSetting_0=b.asm.zh).apply(null, -arguments)},Bj=b._emscripten_bind_btConstraintSetting_get_m_tau_0=function(){return(Bj=b._emscripten_bind_btConstraintSetting_get_m_tau_0=b.asm.Ah).apply(null,arguments)},Cj=b._emscripten_bind_btConstraintSetting_set_m_tau_1=function(){return(Cj=b._emscripten_bind_btConstraintSetting_set_m_tau_1=b.asm.Bh).apply(null,arguments)},Dj=b._emscripten_bind_btConstraintSetting_get_m_damping_0=function(){return(Dj=b._emscripten_bind_btConstraintSetting_get_m_damping_0=b.asm.Ch).apply(null,arguments)},Ej=b._emscripten_bind_btConstraintSetting_set_m_damping_1= -function(){return(Ej=b._emscripten_bind_btConstraintSetting_set_m_damping_1=b.asm.Dh).apply(null,arguments)},Fj=b._emscripten_bind_btConstraintSetting_get_m_impulseClamp_0=function(){return(Fj=b._emscripten_bind_btConstraintSetting_get_m_impulseClamp_0=b.asm.Eh).apply(null,arguments)},Gj=b._emscripten_bind_btConstraintSetting_set_m_impulseClamp_1=function(){return(Gj=b._emscripten_bind_btConstraintSetting_set_m_impulseClamp_1=b.asm.Fh).apply(null,arguments)},Hj=b._emscripten_bind_btConstraintSetting___destroy___0= -function(){return(Hj=b._emscripten_bind_btConstraintSetting___destroy___0=b.asm.Gh).apply(null,arguments)},Ij=b._emscripten_bind_LocalShapeInfo_get_m_shapePart_0=function(){return(Ij=b._emscripten_bind_LocalShapeInfo_get_m_shapePart_0=b.asm.Hh).apply(null,arguments)},Jj=b._emscripten_bind_LocalShapeInfo_set_m_shapePart_1=function(){return(Jj=b._emscripten_bind_LocalShapeInfo_set_m_shapePart_1=b.asm.Ih).apply(null,arguments)},Kj=b._emscripten_bind_LocalShapeInfo_get_m_triangleIndex_0=function(){return(Kj= -b._emscripten_bind_LocalShapeInfo_get_m_triangleIndex_0=b.asm.Jh).apply(null,arguments)},Lj=b._emscripten_bind_LocalShapeInfo_set_m_triangleIndex_1=function(){return(Lj=b._emscripten_bind_LocalShapeInfo_set_m_triangleIndex_1=b.asm.Kh).apply(null,arguments)},Mj=b._emscripten_bind_LocalShapeInfo___destroy___0=function(){return(Mj=b._emscripten_bind_LocalShapeInfo___destroy___0=b.asm.Lh).apply(null,arguments)},Nj=b._emscripten_bind_btRigidBody_btRigidBody_1=function(){return(Nj=b._emscripten_bind_btRigidBody_btRigidBody_1= -b.asm.Mh).apply(null,arguments)},Oj=b._emscripten_bind_btRigidBody_getCenterOfMassTransform_0=function(){return(Oj=b._emscripten_bind_btRigidBody_getCenterOfMassTransform_0=b.asm.Nh).apply(null,arguments)},Pj=b._emscripten_bind_btRigidBody_setCenterOfMassTransform_1=function(){return(Pj=b._emscripten_bind_btRigidBody_setCenterOfMassTransform_1=b.asm.Oh).apply(null,arguments)},Qj=b._emscripten_bind_btRigidBody_setSleepingThresholds_2=function(){return(Qj=b._emscripten_bind_btRigidBody_setSleepingThresholds_2= -b.asm.Ph).apply(null,arguments)},Rj=b._emscripten_bind_btRigidBody_getLinearDamping_0=function(){return(Rj=b._emscripten_bind_btRigidBody_getLinearDamping_0=b.asm.Qh).apply(null,arguments)},Sj=b._emscripten_bind_btRigidBody_getAngularDamping_0=function(){return(Sj=b._emscripten_bind_btRigidBody_getAngularDamping_0=b.asm.Rh).apply(null,arguments)},Tj=b._emscripten_bind_btRigidBody_setDamping_2=function(){return(Tj=b._emscripten_bind_btRigidBody_setDamping_2=b.asm.Sh).apply(null,arguments)},Uj=b._emscripten_bind_btRigidBody_setMassProps_2= -function(){return(Uj=b._emscripten_bind_btRigidBody_setMassProps_2=b.asm.Th).apply(null,arguments)},Vj=b._emscripten_bind_btRigidBody_getLinearFactor_0=function(){return(Vj=b._emscripten_bind_btRigidBody_getLinearFactor_0=b.asm.Uh).apply(null,arguments)},Wj=b._emscripten_bind_btRigidBody_setLinearFactor_1=function(){return(Wj=b._emscripten_bind_btRigidBody_setLinearFactor_1=b.asm.Vh).apply(null,arguments)},Xj=b._emscripten_bind_btRigidBody_applyTorque_1=function(){return(Xj=b._emscripten_bind_btRigidBody_applyTorque_1= -b.asm.Wh).apply(null,arguments)},Yj=b._emscripten_bind_btRigidBody_applyLocalTorque_1=function(){return(Yj=b._emscripten_bind_btRigidBody_applyLocalTorque_1=b.asm.Xh).apply(null,arguments)},Zj=b._emscripten_bind_btRigidBody_applyForce_2=function(){return(Zj=b._emscripten_bind_btRigidBody_applyForce_2=b.asm.Yh).apply(null,arguments)},ak=b._emscripten_bind_btRigidBody_applyCentralForce_1=function(){return(ak=b._emscripten_bind_btRigidBody_applyCentralForce_1=b.asm.Zh).apply(null,arguments)},bk=b._emscripten_bind_btRigidBody_applyCentralLocalForce_1= -function(){return(bk=b._emscripten_bind_btRigidBody_applyCentralLocalForce_1=b.asm._h).apply(null,arguments)},ck=b._emscripten_bind_btRigidBody_applyTorqueImpulse_1=function(){return(ck=b._emscripten_bind_btRigidBody_applyTorqueImpulse_1=b.asm.$h).apply(null,arguments)},dk=b._emscripten_bind_btRigidBody_applyImpulse_2=function(){return(dk=b._emscripten_bind_btRigidBody_applyImpulse_2=b.asm.ai).apply(null,arguments)},ek=b._emscripten_bind_btRigidBody_applyCentralImpulse_1=function(){return(ek=b._emscripten_bind_btRigidBody_applyCentralImpulse_1= -b.asm.bi).apply(null,arguments)},fk=b._emscripten_bind_btRigidBody_updateInertiaTensor_0=function(){return(fk=b._emscripten_bind_btRigidBody_updateInertiaTensor_0=b.asm.ci).apply(null,arguments)},gk=b._emscripten_bind_btRigidBody_getLinearVelocity_0=function(){return(gk=b._emscripten_bind_btRigidBody_getLinearVelocity_0=b.asm.di).apply(null,arguments)},hk=b._emscripten_bind_btRigidBody_getAngularVelocity_0=function(){return(hk=b._emscripten_bind_btRigidBody_getAngularVelocity_0=b.asm.ei).apply(null, -arguments)},ik=b._emscripten_bind_btRigidBody_setLinearVelocity_1=function(){return(ik=b._emscripten_bind_btRigidBody_setLinearVelocity_1=b.asm.fi).apply(null,arguments)},jk=b._emscripten_bind_btRigidBody_setAngularVelocity_1=function(){return(jk=b._emscripten_bind_btRigidBody_setAngularVelocity_1=b.asm.gi).apply(null,arguments)},kk=b._emscripten_bind_btRigidBody_getMotionState_0=function(){return(kk=b._emscripten_bind_btRigidBody_getMotionState_0=b.asm.hi).apply(null,arguments)},lk=b._emscripten_bind_btRigidBody_setMotionState_1= -function(){return(lk=b._emscripten_bind_btRigidBody_setMotionState_1=b.asm.ii).apply(null,arguments)},mk=b._emscripten_bind_btRigidBody_getAngularFactor_0=function(){return(mk=b._emscripten_bind_btRigidBody_getAngularFactor_0=b.asm.ji).apply(null,arguments)},nk=b._emscripten_bind_btRigidBody_setAngularFactor_1=function(){return(nk=b._emscripten_bind_btRigidBody_setAngularFactor_1=b.asm.ki).apply(null,arguments)},ok=b._emscripten_bind_btRigidBody_upcast_1=function(){return(ok=b._emscripten_bind_btRigidBody_upcast_1= -b.asm.li).apply(null,arguments)},pk=b._emscripten_bind_btRigidBody_getAabb_2=function(){return(pk=b._emscripten_bind_btRigidBody_getAabb_2=b.asm.mi).apply(null,arguments)},qk=b._emscripten_bind_btRigidBody_applyGravity_0=function(){return(qk=b._emscripten_bind_btRigidBody_applyGravity_0=b.asm.ni).apply(null,arguments)},rk=b._emscripten_bind_btRigidBody_getGravity_0=function(){return(rk=b._emscripten_bind_btRigidBody_getGravity_0=b.asm.oi).apply(null,arguments)},sk=b._emscripten_bind_btRigidBody_setGravity_1= -function(){return(sk=b._emscripten_bind_btRigidBody_setGravity_1=b.asm.pi).apply(null,arguments)},tk=b._emscripten_bind_btRigidBody_getBroadphaseProxy_0=function(){return(tk=b._emscripten_bind_btRigidBody_getBroadphaseProxy_0=b.asm.qi).apply(null,arguments)},uk=b._emscripten_bind_btRigidBody_clearForces_0=function(){return(uk=b._emscripten_bind_btRigidBody_clearForces_0=b.asm.ri).apply(null,arguments)},vk=b._emscripten_bind_btRigidBody_setAnisotropicFriction_2=function(){return(vk=b._emscripten_bind_btRigidBody_setAnisotropicFriction_2= -b.asm.si).apply(null,arguments)},wk=b._emscripten_bind_btRigidBody_getCollisionShape_0=function(){return(wk=b._emscripten_bind_btRigidBody_getCollisionShape_0=b.asm.ti).apply(null,arguments)},xk=b._emscripten_bind_btRigidBody_setContactProcessingThreshold_1=function(){return(xk=b._emscripten_bind_btRigidBody_setContactProcessingThreshold_1=b.asm.ui).apply(null,arguments)},yk=b._emscripten_bind_btRigidBody_setActivationState_1=function(){return(yk=b._emscripten_bind_btRigidBody_setActivationState_1= -b.asm.vi).apply(null,arguments)},zk=b._emscripten_bind_btRigidBody_forceActivationState_1=function(){return(zk=b._emscripten_bind_btRigidBody_forceActivationState_1=b.asm.wi).apply(null,arguments)},Ak=b._emscripten_bind_btRigidBody_activate_0=function(){return(Ak=b._emscripten_bind_btRigidBody_activate_0=b.asm.xi).apply(null,arguments)},Bk=b._emscripten_bind_btRigidBody_activate_1=function(){return(Bk=b._emscripten_bind_btRigidBody_activate_1=b.asm.yi).apply(null,arguments)},Ck=b._emscripten_bind_btRigidBody_isActive_0= -function(){return(Ck=b._emscripten_bind_btRigidBody_isActive_0=b.asm.zi).apply(null,arguments)},Dk=b._emscripten_bind_btRigidBody_isKinematicObject_0=function(){return(Dk=b._emscripten_bind_btRigidBody_isKinematicObject_0=b.asm.Ai).apply(null,arguments)},Ek=b._emscripten_bind_btRigidBody_isStaticObject_0=function(){return(Ek=b._emscripten_bind_btRigidBody_isStaticObject_0=b.asm.Bi).apply(null,arguments)},Fk=b._emscripten_bind_btRigidBody_isStaticOrKinematicObject_0=function(){return(Fk=b._emscripten_bind_btRigidBody_isStaticOrKinematicObject_0= -b.asm.Ci).apply(null,arguments)},Gk=b._emscripten_bind_btRigidBody_getRestitution_0=function(){return(Gk=b._emscripten_bind_btRigidBody_getRestitution_0=b.asm.Di).apply(null,arguments)},Hk=b._emscripten_bind_btRigidBody_getFriction_0=function(){return(Hk=b._emscripten_bind_btRigidBody_getFriction_0=b.asm.Ei).apply(null,arguments)},Ik=b._emscripten_bind_btRigidBody_getRollingFriction_0=function(){return(Ik=b._emscripten_bind_btRigidBody_getRollingFriction_0=b.asm.Fi).apply(null,arguments)},Jk=b._emscripten_bind_btRigidBody_setRestitution_1= -function(){return(Jk=b._emscripten_bind_btRigidBody_setRestitution_1=b.asm.Gi).apply(null,arguments)},Kk=b._emscripten_bind_btRigidBody_setFriction_1=function(){return(Kk=b._emscripten_bind_btRigidBody_setFriction_1=b.asm.Hi).apply(null,arguments)},Lk=b._emscripten_bind_btRigidBody_setRollingFriction_1=function(){return(Lk=b._emscripten_bind_btRigidBody_setRollingFriction_1=b.asm.Ii).apply(null,arguments)},Mk=b._emscripten_bind_btRigidBody_getWorldTransform_0=function(){return(Mk=b._emscripten_bind_btRigidBody_getWorldTransform_0= -b.asm.Ji).apply(null,arguments)},Nk=b._emscripten_bind_btRigidBody_getCollisionFlags_0=function(){return(Nk=b._emscripten_bind_btRigidBody_getCollisionFlags_0=b.asm.Ki).apply(null,arguments)},Ok=b._emscripten_bind_btRigidBody_setCollisionFlags_1=function(){return(Ok=b._emscripten_bind_btRigidBody_setCollisionFlags_1=b.asm.Li).apply(null,arguments)},Pk=b._emscripten_bind_btRigidBody_setWorldTransform_1=function(){return(Pk=b._emscripten_bind_btRigidBody_setWorldTransform_1=b.asm.Mi).apply(null,arguments)}, -Qk=b._emscripten_bind_btRigidBody_setCollisionShape_1=function(){return(Qk=b._emscripten_bind_btRigidBody_setCollisionShape_1=b.asm.Ni).apply(null,arguments)},Rk=b._emscripten_bind_btRigidBody_setCcdMotionThreshold_1=function(){return(Rk=b._emscripten_bind_btRigidBody_setCcdMotionThreshold_1=b.asm.Oi).apply(null,arguments)},Sk=b._emscripten_bind_btRigidBody_setCcdSweptSphereRadius_1=function(){return(Sk=b._emscripten_bind_btRigidBody_setCcdSweptSphereRadius_1=b.asm.Pi).apply(null,arguments)},Tk=b._emscripten_bind_btRigidBody_getUserIndex_0= -function(){return(Tk=b._emscripten_bind_btRigidBody_getUserIndex_0=b.asm.Qi).apply(null,arguments)},Uk=b._emscripten_bind_btRigidBody_setUserIndex_1=function(){return(Uk=b._emscripten_bind_btRigidBody_setUserIndex_1=b.asm.Ri).apply(null,arguments)},Vk=b._emscripten_bind_btRigidBody_getUserPointer_0=function(){return(Vk=b._emscripten_bind_btRigidBody_getUserPointer_0=b.asm.Si).apply(null,arguments)},Wk=b._emscripten_bind_btRigidBody_setUserPointer_1=function(){return(Wk=b._emscripten_bind_btRigidBody_setUserPointer_1= -b.asm.Ti).apply(null,arguments)},Xk=b._emscripten_bind_btRigidBody_getBroadphaseHandle_0=function(){return(Xk=b._emscripten_bind_btRigidBody_getBroadphaseHandle_0=b.asm.Ui).apply(null,arguments)},Yk=b._emscripten_bind_btRigidBody___destroy___0=function(){return(Yk=b._emscripten_bind_btRigidBody___destroy___0=b.asm.Vi).apply(null,arguments)},Zk=b._emscripten_bind_btIndexedMeshArray_size_0=function(){return(Zk=b._emscripten_bind_btIndexedMeshArray_size_0=b.asm.Wi).apply(null,arguments)},$k=b._emscripten_bind_btIndexedMeshArray_at_1= -function(){return($k=b._emscripten_bind_btIndexedMeshArray_at_1=b.asm.Xi).apply(null,arguments)},al=b._emscripten_bind_btIndexedMeshArray___destroy___0=function(){return(al=b._emscripten_bind_btIndexedMeshArray___destroy___0=b.asm.Yi).apply(null,arguments)},bl=b._emscripten_bind_btDbvtBroadphase_btDbvtBroadphase_0=function(){return(bl=b._emscripten_bind_btDbvtBroadphase_btDbvtBroadphase_0=b.asm.Zi).apply(null,arguments)},cl=b._emscripten_bind_btDbvtBroadphase___destroy___0=function(){return(cl=b._emscripten_bind_btDbvtBroadphase___destroy___0= -b.asm._i).apply(null,arguments)},dl=b._emscripten_bind_btHeightfieldTerrainShape_btHeightfieldTerrainShape_9=function(){return(dl=b._emscripten_bind_btHeightfieldTerrainShape_btHeightfieldTerrainShape_9=b.asm.$i).apply(null,arguments)},el=b._emscripten_bind_btHeightfieldTerrainShape_setMargin_1=function(){return(el=b._emscripten_bind_btHeightfieldTerrainShape_setMargin_1=b.asm.aj).apply(null,arguments)},fl=b._emscripten_bind_btHeightfieldTerrainShape_getMargin_0=function(){return(fl=b._emscripten_bind_btHeightfieldTerrainShape_getMargin_0= -b.asm.bj).apply(null,arguments)},gl=b._emscripten_bind_btHeightfieldTerrainShape_setLocalScaling_1=function(){return(gl=b._emscripten_bind_btHeightfieldTerrainShape_setLocalScaling_1=b.asm.cj).apply(null,arguments)},hl=b._emscripten_bind_btHeightfieldTerrainShape_getLocalScaling_0=function(){return(hl=b._emscripten_bind_btHeightfieldTerrainShape_getLocalScaling_0=b.asm.dj).apply(null,arguments)},il=b._emscripten_bind_btHeightfieldTerrainShape_calculateLocalInertia_2=function(){return(il=b._emscripten_bind_btHeightfieldTerrainShape_calculateLocalInertia_2= -b.asm.ej).apply(null,arguments)},jl=b._emscripten_bind_btHeightfieldTerrainShape___destroy___0=function(){return(jl=b._emscripten_bind_btHeightfieldTerrainShape___destroy___0=b.asm.fj).apply(null,arguments)},kl=b._emscripten_bind_btDefaultSoftBodySolver_btDefaultSoftBodySolver_0=function(){return(kl=b._emscripten_bind_btDefaultSoftBodySolver_btDefaultSoftBodySolver_0=b.asm.gj).apply(null,arguments)},ll=b._emscripten_bind_btDefaultSoftBodySolver___destroy___0=function(){return(ll=b._emscripten_bind_btDefaultSoftBodySolver___destroy___0= -b.asm.hj).apply(null,arguments)},ml=b._emscripten_bind_btCollisionDispatcher_btCollisionDispatcher_1=function(){return(ml=b._emscripten_bind_btCollisionDispatcher_btCollisionDispatcher_1=b.asm.ij).apply(null,arguments)},nl=b._emscripten_bind_btCollisionDispatcher_getNumManifolds_0=function(){return(nl=b._emscripten_bind_btCollisionDispatcher_getNumManifolds_0=b.asm.jj).apply(null,arguments)},ol=b._emscripten_bind_btCollisionDispatcher_getManifoldByIndexInternal_1=function(){return(ol=b._emscripten_bind_btCollisionDispatcher_getManifoldByIndexInternal_1= -b.asm.kj).apply(null,arguments)},pl=b._emscripten_bind_btCollisionDispatcher___destroy___0=function(){return(pl=b._emscripten_bind_btCollisionDispatcher___destroy___0=b.asm.lj).apply(null,arguments)},ql=b._emscripten_bind_btAxisSweep3_btAxisSweep3_2=function(){return(ql=b._emscripten_bind_btAxisSweep3_btAxisSweep3_2=b.asm.mj).apply(null,arguments)},rl=b._emscripten_bind_btAxisSweep3_btAxisSweep3_3=function(){return(rl=b._emscripten_bind_btAxisSweep3_btAxisSweep3_3=b.asm.nj).apply(null,arguments)}, -sl=b._emscripten_bind_btAxisSweep3_btAxisSweep3_4=function(){return(sl=b._emscripten_bind_btAxisSweep3_btAxisSweep3_4=b.asm.oj).apply(null,arguments)},tl=b._emscripten_bind_btAxisSweep3_btAxisSweep3_5=function(){return(tl=b._emscripten_bind_btAxisSweep3_btAxisSweep3_5=b.asm.pj).apply(null,arguments)},ul=b._emscripten_bind_btAxisSweep3___destroy___0=function(){return(ul=b._emscripten_bind_btAxisSweep3___destroy___0=b.asm.qj).apply(null,arguments)},vl=b._emscripten_bind_VoidPtr___destroy___0=function(){return(vl= -b._emscripten_bind_VoidPtr___destroy___0=b.asm.rj).apply(null,arguments)},wl=b._emscripten_bind_btSoftBodyWorldInfo_btSoftBodyWorldInfo_0=function(){return(wl=b._emscripten_bind_btSoftBodyWorldInfo_btSoftBodyWorldInfo_0=b.asm.sj).apply(null,arguments)},xl=b._emscripten_bind_btSoftBodyWorldInfo_get_air_density_0=function(){return(xl=b._emscripten_bind_btSoftBodyWorldInfo_get_air_density_0=b.asm.tj).apply(null,arguments)},yl=b._emscripten_bind_btSoftBodyWorldInfo_set_air_density_1=function(){return(yl= -b._emscripten_bind_btSoftBodyWorldInfo_set_air_density_1=b.asm.uj).apply(null,arguments)},zl=b._emscripten_bind_btSoftBodyWorldInfo_get_water_density_0=function(){return(zl=b._emscripten_bind_btSoftBodyWorldInfo_get_water_density_0=b.asm.vj).apply(null,arguments)},Al=b._emscripten_bind_btSoftBodyWorldInfo_set_water_density_1=function(){return(Al=b._emscripten_bind_btSoftBodyWorldInfo_set_water_density_1=b.asm.wj).apply(null,arguments)},Bl=b._emscripten_bind_btSoftBodyWorldInfo_get_water_offset_0= -function(){return(Bl=b._emscripten_bind_btSoftBodyWorldInfo_get_water_offset_0=b.asm.xj).apply(null,arguments)},Cl=b._emscripten_bind_btSoftBodyWorldInfo_set_water_offset_1=function(){return(Cl=b._emscripten_bind_btSoftBodyWorldInfo_set_water_offset_1=b.asm.yj).apply(null,arguments)},Dl=b._emscripten_bind_btSoftBodyWorldInfo_get_m_maxDisplacement_0=function(){return(Dl=b._emscripten_bind_btSoftBodyWorldInfo_get_m_maxDisplacement_0=b.asm.zj).apply(null,arguments)},El=b._emscripten_bind_btSoftBodyWorldInfo_set_m_maxDisplacement_1= -function(){return(El=b._emscripten_bind_btSoftBodyWorldInfo_set_m_maxDisplacement_1=b.asm.Aj).apply(null,arguments)},Fl=b._emscripten_bind_btSoftBodyWorldInfo_get_water_normal_0=function(){return(Fl=b._emscripten_bind_btSoftBodyWorldInfo_get_water_normal_0=b.asm.Bj).apply(null,arguments)},Gl=b._emscripten_bind_btSoftBodyWorldInfo_set_water_normal_1=function(){return(Gl=b._emscripten_bind_btSoftBodyWorldInfo_set_water_normal_1=b.asm.Cj).apply(null,arguments)},Hl=b._emscripten_bind_btSoftBodyWorldInfo_get_m_broadphase_0= -function(){return(Hl=b._emscripten_bind_btSoftBodyWorldInfo_get_m_broadphase_0=b.asm.Dj).apply(null,arguments)},Il=b._emscripten_bind_btSoftBodyWorldInfo_set_m_broadphase_1=function(){return(Il=b._emscripten_bind_btSoftBodyWorldInfo_set_m_broadphase_1=b.asm.Ej).apply(null,arguments)},Jl=b._emscripten_bind_btSoftBodyWorldInfo_get_m_dispatcher_0=function(){return(Jl=b._emscripten_bind_btSoftBodyWorldInfo_get_m_dispatcher_0=b.asm.Fj).apply(null,arguments)},Kl=b._emscripten_bind_btSoftBodyWorldInfo_set_m_dispatcher_1= -function(){return(Kl=b._emscripten_bind_btSoftBodyWorldInfo_set_m_dispatcher_1=b.asm.Gj).apply(null,arguments)},Ll=b._emscripten_bind_btSoftBodyWorldInfo_get_m_gravity_0=function(){return(Ll=b._emscripten_bind_btSoftBodyWorldInfo_get_m_gravity_0=b.asm.Hj).apply(null,arguments)},Ml=b._emscripten_bind_btSoftBodyWorldInfo_set_m_gravity_1=function(){return(Ml=b._emscripten_bind_btSoftBodyWorldInfo_set_m_gravity_1=b.asm.Ij).apply(null,arguments)},Nl=b._emscripten_bind_btSoftBodyWorldInfo___destroy___0= -function(){return(Nl=b._emscripten_bind_btSoftBodyWorldInfo___destroy___0=b.asm.Jj).apply(null,arguments)},Ol=b._emscripten_bind_btConeTwistConstraint_btConeTwistConstraint_2=function(){return(Ol=b._emscripten_bind_btConeTwistConstraint_btConeTwistConstraint_2=b.asm.Kj).apply(null,arguments)},Pl=b._emscripten_bind_btConeTwistConstraint_btConeTwistConstraint_4=function(){return(Pl=b._emscripten_bind_btConeTwistConstraint_btConeTwistConstraint_4=b.asm.Lj).apply(null,arguments)},Ql=b._emscripten_bind_btConeTwistConstraint_setLimit_2= -function(){return(Ql=b._emscripten_bind_btConeTwistConstraint_setLimit_2=b.asm.Mj).apply(null,arguments)},Rl=b._emscripten_bind_btConeTwistConstraint_setAngularOnly_1=function(){return(Rl=b._emscripten_bind_btConeTwistConstraint_setAngularOnly_1=b.asm.Nj).apply(null,arguments)},Sl=b._emscripten_bind_btConeTwistConstraint_setDamping_1=function(){return(Sl=b._emscripten_bind_btConeTwistConstraint_setDamping_1=b.asm.Oj).apply(null,arguments)},Tl=b._emscripten_bind_btConeTwistConstraint_enableMotor_1= -function(){return(Tl=b._emscripten_bind_btConeTwistConstraint_enableMotor_1=b.asm.Pj).apply(null,arguments)},Ul=b._emscripten_bind_btConeTwistConstraint_setMaxMotorImpulse_1=function(){return(Ul=b._emscripten_bind_btConeTwistConstraint_setMaxMotorImpulse_1=b.asm.Qj).apply(null,arguments)},Vl=b._emscripten_bind_btConeTwistConstraint_setMaxMotorImpulseNormalized_1=function(){return(Vl=b._emscripten_bind_btConeTwistConstraint_setMaxMotorImpulseNormalized_1=b.asm.Rj).apply(null,arguments)},Wl=b._emscripten_bind_btConeTwistConstraint_setMotorTarget_1= -function(){return(Wl=b._emscripten_bind_btConeTwistConstraint_setMotorTarget_1=b.asm.Sj).apply(null,arguments)},Xl=b._emscripten_bind_btConeTwistConstraint_setMotorTargetInConstraintSpace_1=function(){return(Xl=b._emscripten_bind_btConeTwistConstraint_setMotorTargetInConstraintSpace_1=b.asm.Tj).apply(null,arguments)},Yl=b._emscripten_bind_btConeTwistConstraint_enableFeedback_1=function(){return(Yl=b._emscripten_bind_btConeTwistConstraint_enableFeedback_1=b.asm.Uj).apply(null,arguments)},Zl=b._emscripten_bind_btConeTwistConstraint_getBreakingImpulseThreshold_0= -function(){return(Zl=b._emscripten_bind_btConeTwistConstraint_getBreakingImpulseThreshold_0=b.asm.Vj).apply(null,arguments)},$l=b._emscripten_bind_btConeTwistConstraint_setBreakingImpulseThreshold_1=function(){return($l=b._emscripten_bind_btConeTwistConstraint_setBreakingImpulseThreshold_1=b.asm.Wj).apply(null,arguments)},am=b._emscripten_bind_btConeTwistConstraint_getParam_2=function(){return(am=b._emscripten_bind_btConeTwistConstraint_getParam_2=b.asm.Xj).apply(null,arguments)},bm=b._emscripten_bind_btConeTwistConstraint_setParam_3= -function(){return(bm=b._emscripten_bind_btConeTwistConstraint_setParam_3=b.asm.Yj).apply(null,arguments)},cm=b._emscripten_bind_btConeTwistConstraint___destroy___0=function(){return(cm=b._emscripten_bind_btConeTwistConstraint___destroy___0=b.asm.Zj).apply(null,arguments)},dm=b._emscripten_bind_btHingeConstraint_btHingeConstraint_2=function(){return(dm=b._emscripten_bind_btHingeConstraint_btHingeConstraint_2=b.asm._j).apply(null,arguments)},em=b._emscripten_bind_btHingeConstraint_btHingeConstraint_3= -function(){return(em=b._emscripten_bind_btHingeConstraint_btHingeConstraint_3=b.asm.$j).apply(null,arguments)},fm=b._emscripten_bind_btHingeConstraint_btHingeConstraint_4=function(){return(fm=b._emscripten_bind_btHingeConstraint_btHingeConstraint_4=b.asm.ak).apply(null,arguments)},gm=b._emscripten_bind_btHingeConstraint_btHingeConstraint_5=function(){return(gm=b._emscripten_bind_btHingeConstraint_btHingeConstraint_5=b.asm.bk).apply(null,arguments)},hm=b._emscripten_bind_btHingeConstraint_btHingeConstraint_6= -function(){return(hm=b._emscripten_bind_btHingeConstraint_btHingeConstraint_6=b.asm.ck).apply(null,arguments)},im=b._emscripten_bind_btHingeConstraint_btHingeConstraint_7=function(){return(im=b._emscripten_bind_btHingeConstraint_btHingeConstraint_7=b.asm.dk).apply(null,arguments)},jm=b._emscripten_bind_btHingeConstraint_setLimit_4=function(){return(jm=b._emscripten_bind_btHingeConstraint_setLimit_4=b.asm.ek).apply(null,arguments)},km=b._emscripten_bind_btHingeConstraint_setLimit_5=function(){return(km= -b._emscripten_bind_btHingeConstraint_setLimit_5=b.asm.fk).apply(null,arguments)},lm=b._emscripten_bind_btHingeConstraint_enableAngularMotor_3=function(){return(lm=b._emscripten_bind_btHingeConstraint_enableAngularMotor_3=b.asm.gk).apply(null,arguments)},mm=b._emscripten_bind_btHingeConstraint_setAngularOnly_1=function(){return(mm=b._emscripten_bind_btHingeConstraint_setAngularOnly_1=b.asm.hk).apply(null,arguments)},nm=b._emscripten_bind_btHingeConstraint_enableMotor_1=function(){return(nm=b._emscripten_bind_btHingeConstraint_enableMotor_1= -b.asm.ik).apply(null,arguments)},om=b._emscripten_bind_btHingeConstraint_setMaxMotorImpulse_1=function(){return(om=b._emscripten_bind_btHingeConstraint_setMaxMotorImpulse_1=b.asm.jk).apply(null,arguments)},pm=b._emscripten_bind_btHingeConstraint_setMotorTarget_2=function(){return(pm=b._emscripten_bind_btHingeConstraint_setMotorTarget_2=b.asm.kk).apply(null,arguments)},qm=b._emscripten_bind_btHingeConstraint_enableFeedback_1=function(){return(qm=b._emscripten_bind_btHingeConstraint_enableFeedback_1= -b.asm.lk).apply(null,arguments)},rm=b._emscripten_bind_btHingeConstraint_getBreakingImpulseThreshold_0=function(){return(rm=b._emscripten_bind_btHingeConstraint_getBreakingImpulseThreshold_0=b.asm.mk).apply(null,arguments)},sm=b._emscripten_bind_btHingeConstraint_setBreakingImpulseThreshold_1=function(){return(sm=b._emscripten_bind_btHingeConstraint_setBreakingImpulseThreshold_1=b.asm.nk).apply(null,arguments)},tm=b._emscripten_bind_btHingeConstraint_getParam_2=function(){return(tm=b._emscripten_bind_btHingeConstraint_getParam_2= -b.asm.ok).apply(null,arguments)},um=b._emscripten_bind_btHingeConstraint_setParam_3=function(){return(um=b._emscripten_bind_btHingeConstraint_setParam_3=b.asm.pk).apply(null,arguments)},wm=b._emscripten_bind_btHingeConstraint___destroy___0=function(){return(wm=b._emscripten_bind_btHingeConstraint___destroy___0=b.asm.qk).apply(null,arguments)},xm=b._emscripten_bind_btConeShapeZ_btConeShapeZ_2=function(){return(xm=b._emscripten_bind_btConeShapeZ_btConeShapeZ_2=b.asm.rk).apply(null,arguments)},ym=b._emscripten_bind_btConeShapeZ_setLocalScaling_1= -function(){return(ym=b._emscripten_bind_btConeShapeZ_setLocalScaling_1=b.asm.sk).apply(null,arguments)},zm=b._emscripten_bind_btConeShapeZ_getLocalScaling_0=function(){return(zm=b._emscripten_bind_btConeShapeZ_getLocalScaling_0=b.asm.tk).apply(null,arguments)},Am=b._emscripten_bind_btConeShapeZ_calculateLocalInertia_2=function(){return(Am=b._emscripten_bind_btConeShapeZ_calculateLocalInertia_2=b.asm.uk).apply(null,arguments)},Bm=b._emscripten_bind_btConeShapeZ___destroy___0=function(){return(Bm=b._emscripten_bind_btConeShapeZ___destroy___0= -b.asm.vk).apply(null,arguments)},Cm=b._emscripten_bind_btConeShapeX_btConeShapeX_2=function(){return(Cm=b._emscripten_bind_btConeShapeX_btConeShapeX_2=b.asm.wk).apply(null,arguments)},Dm=b._emscripten_bind_btConeShapeX_setLocalScaling_1=function(){return(Dm=b._emscripten_bind_btConeShapeX_setLocalScaling_1=b.asm.xk).apply(null,arguments)},Em=b._emscripten_bind_btConeShapeX_getLocalScaling_0=function(){return(Em=b._emscripten_bind_btConeShapeX_getLocalScaling_0=b.asm.yk).apply(null,arguments)},Fm= -b._emscripten_bind_btConeShapeX_calculateLocalInertia_2=function(){return(Fm=b._emscripten_bind_btConeShapeX_calculateLocalInertia_2=b.asm.zk).apply(null,arguments)},Gm=b._emscripten_bind_btConeShapeX___destroy___0=function(){return(Gm=b._emscripten_bind_btConeShapeX___destroy___0=b.asm.Ak).apply(null,arguments)},Hm=b._emscripten_bind_btTriangleMesh_btTriangleMesh_0=function(){return(Hm=b._emscripten_bind_btTriangleMesh_btTriangleMesh_0=b.asm.Bk).apply(null,arguments)},Im=b._emscripten_bind_btTriangleMesh_btTriangleMesh_1= -function(){return(Im=b._emscripten_bind_btTriangleMesh_btTriangleMesh_1=b.asm.Ck).apply(null,arguments)},Jm=b._emscripten_bind_btTriangleMesh_btTriangleMesh_2=function(){return(Jm=b._emscripten_bind_btTriangleMesh_btTriangleMesh_2=b.asm.Dk).apply(null,arguments)},Km=b._emscripten_bind_btTriangleMesh_addTriangle_3=function(){return(Km=b._emscripten_bind_btTriangleMesh_addTriangle_3=b.asm.Ek).apply(null,arguments)},Lm=b._emscripten_bind_btTriangleMesh_addTriangle_4=function(){return(Lm=b._emscripten_bind_btTriangleMesh_addTriangle_4= -b.asm.Fk).apply(null,arguments)},Mm=b._emscripten_bind_btTriangleMesh_findOrAddVertex_2=function(){return(Mm=b._emscripten_bind_btTriangleMesh_findOrAddVertex_2=b.asm.Gk).apply(null,arguments)},Nm=b._emscripten_bind_btTriangleMesh_addIndex_1=function(){return(Nm=b._emscripten_bind_btTriangleMesh_addIndex_1=b.asm.Hk).apply(null,arguments)},Om=b._emscripten_bind_btTriangleMesh_getIndexedMeshArray_0=function(){return(Om=b._emscripten_bind_btTriangleMesh_getIndexedMeshArray_0=b.asm.Ik).apply(null,arguments)}, -Pm=b._emscripten_bind_btTriangleMesh_setScaling_1=function(){return(Pm=b._emscripten_bind_btTriangleMesh_setScaling_1=b.asm.Jk).apply(null,arguments)},Qm=b._emscripten_bind_btTriangleMesh___destroy___0=function(){return(Qm=b._emscripten_bind_btTriangleMesh___destroy___0=b.asm.Kk).apply(null,arguments)},Rm=b._emscripten_bind_btConvexHullShape_btConvexHullShape_0=function(){return(Rm=b._emscripten_bind_btConvexHullShape_btConvexHullShape_0=b.asm.Lk).apply(null,arguments)},Sm=b._emscripten_bind_btConvexHullShape_btConvexHullShape_1= -function(){return(Sm=b._emscripten_bind_btConvexHullShape_btConvexHullShape_1=b.asm.Mk).apply(null,arguments)},Tm=b._emscripten_bind_btConvexHullShape_btConvexHullShape_2=function(){return(Tm=b._emscripten_bind_btConvexHullShape_btConvexHullShape_2=b.asm.Nk).apply(null,arguments)},Um=b._emscripten_bind_btConvexHullShape_addPoint_1=function(){return(Um=b._emscripten_bind_btConvexHullShape_addPoint_1=b.asm.Ok).apply(null,arguments)},Vm=b._emscripten_bind_btConvexHullShape_addPoint_2=function(){return(Vm= -b._emscripten_bind_btConvexHullShape_addPoint_2=b.asm.Pk).apply(null,arguments)},Wm=b._emscripten_bind_btConvexHullShape_setMargin_1=function(){return(Wm=b._emscripten_bind_btConvexHullShape_setMargin_1=b.asm.Qk).apply(null,arguments)},Xm=b._emscripten_bind_btConvexHullShape_getMargin_0=function(){return(Xm=b._emscripten_bind_btConvexHullShape_getMargin_0=b.asm.Rk).apply(null,arguments)},Ym=b._emscripten_bind_btConvexHullShape_getNumVertices_0=function(){return(Ym=b._emscripten_bind_btConvexHullShape_getNumVertices_0= -b.asm.Sk).apply(null,arguments)},Zm=b._emscripten_bind_btConvexHullShape_initializePolyhedralFeatures_1=function(){return(Zm=b._emscripten_bind_btConvexHullShape_initializePolyhedralFeatures_1=b.asm.Tk).apply(null,arguments)},$m=b._emscripten_bind_btConvexHullShape_recalcLocalAabb_0=function(){return($m=b._emscripten_bind_btConvexHullShape_recalcLocalAabb_0=b.asm.Uk).apply(null,arguments)},an=b._emscripten_bind_btConvexHullShape_getConvexPolyhedron_0=function(){return(an=b._emscripten_bind_btConvexHullShape_getConvexPolyhedron_0= -b.asm.Vk).apply(null,arguments)},bn=b._emscripten_bind_btConvexHullShape_setLocalScaling_1=function(){return(bn=b._emscripten_bind_btConvexHullShape_setLocalScaling_1=b.asm.Wk).apply(null,arguments)},cn=b._emscripten_bind_btConvexHullShape_getLocalScaling_0=function(){return(cn=b._emscripten_bind_btConvexHullShape_getLocalScaling_0=b.asm.Xk).apply(null,arguments)},dn=b._emscripten_bind_btConvexHullShape_calculateLocalInertia_2=function(){return(dn=b._emscripten_bind_btConvexHullShape_calculateLocalInertia_2= -b.asm.Yk).apply(null,arguments)},en=b._emscripten_bind_btConvexHullShape___destroy___0=function(){return(en=b._emscripten_bind_btConvexHullShape___destroy___0=b.asm.Zk).apply(null,arguments)},fn=b._emscripten_bind_btVehicleTuning_btVehicleTuning_0=function(){return(fn=b._emscripten_bind_btVehicleTuning_btVehicleTuning_0=b.asm._k).apply(null,arguments)},gn=b._emscripten_bind_btVehicleTuning_get_m_suspensionStiffness_0=function(){return(gn=b._emscripten_bind_btVehicleTuning_get_m_suspensionStiffness_0= -b.asm.$k).apply(null,arguments)},hn=b._emscripten_bind_btVehicleTuning_set_m_suspensionStiffness_1=function(){return(hn=b._emscripten_bind_btVehicleTuning_set_m_suspensionStiffness_1=b.asm.al).apply(null,arguments)},jn=b._emscripten_bind_btVehicleTuning_get_m_suspensionCompression_0=function(){return(jn=b._emscripten_bind_btVehicleTuning_get_m_suspensionCompression_0=b.asm.bl).apply(null,arguments)},kn=b._emscripten_bind_btVehicleTuning_set_m_suspensionCompression_1=function(){return(kn=b._emscripten_bind_btVehicleTuning_set_m_suspensionCompression_1= -b.asm.cl).apply(null,arguments)},ln=b._emscripten_bind_btVehicleTuning_get_m_suspensionDamping_0=function(){return(ln=b._emscripten_bind_btVehicleTuning_get_m_suspensionDamping_0=b.asm.dl).apply(null,arguments)},mn=b._emscripten_bind_btVehicleTuning_set_m_suspensionDamping_1=function(){return(mn=b._emscripten_bind_btVehicleTuning_set_m_suspensionDamping_1=b.asm.el).apply(null,arguments)},nn=b._emscripten_bind_btVehicleTuning_get_m_maxSuspensionTravelCm_0=function(){return(nn=b._emscripten_bind_btVehicleTuning_get_m_maxSuspensionTravelCm_0= -b.asm.fl).apply(null,arguments)},on=b._emscripten_bind_btVehicleTuning_set_m_maxSuspensionTravelCm_1=function(){return(on=b._emscripten_bind_btVehicleTuning_set_m_maxSuspensionTravelCm_1=b.asm.gl).apply(null,arguments)},pn=b._emscripten_bind_btVehicleTuning_get_m_frictionSlip_0=function(){return(pn=b._emscripten_bind_btVehicleTuning_get_m_frictionSlip_0=b.asm.hl).apply(null,arguments)},qn=b._emscripten_bind_btVehicleTuning_set_m_frictionSlip_1=function(){return(qn=b._emscripten_bind_btVehicleTuning_set_m_frictionSlip_1= -b.asm.il).apply(null,arguments)},rn=b._emscripten_bind_btVehicleTuning_get_m_maxSuspensionForce_0=function(){return(rn=b._emscripten_bind_btVehicleTuning_get_m_maxSuspensionForce_0=b.asm.jl).apply(null,arguments)},sn=b._emscripten_bind_btVehicleTuning_set_m_maxSuspensionForce_1=function(){return(sn=b._emscripten_bind_btVehicleTuning_set_m_maxSuspensionForce_1=b.asm.kl).apply(null,arguments)},tn=b._emscripten_bind_btCollisionObjectWrapper_getWorldTransform_0=function(){return(tn=b._emscripten_bind_btCollisionObjectWrapper_getWorldTransform_0= -b.asm.ll).apply(null,arguments)},un=b._emscripten_bind_btCollisionObjectWrapper_getCollisionObject_0=function(){return(un=b._emscripten_bind_btCollisionObjectWrapper_getCollisionObject_0=b.asm.ml).apply(null,arguments)},vn=b._emscripten_bind_btCollisionObjectWrapper_getCollisionShape_0=function(){return(vn=b._emscripten_bind_btCollisionObjectWrapper_getCollisionShape_0=b.asm.nl).apply(null,arguments)},wn=b._emscripten_bind_btShapeHull_btShapeHull_1=function(){return(wn=b._emscripten_bind_btShapeHull_btShapeHull_1= -b.asm.ol).apply(null,arguments)},xn=b._emscripten_bind_btShapeHull_buildHull_1=function(){return(xn=b._emscripten_bind_btShapeHull_buildHull_1=b.asm.pl).apply(null,arguments)},yn=b._emscripten_bind_btShapeHull_numVertices_0=function(){return(yn=b._emscripten_bind_btShapeHull_numVertices_0=b.asm.ql).apply(null,arguments)},zn=b._emscripten_bind_btShapeHull_getVertexPointer_0=function(){return(zn=b._emscripten_bind_btShapeHull_getVertexPointer_0=b.asm.rl).apply(null,arguments)},An=b._emscripten_bind_btShapeHull___destroy___0= -function(){return(An=b._emscripten_bind_btShapeHull___destroy___0=b.asm.sl).apply(null,arguments)},Bn=b._emscripten_bind_btDefaultMotionState_btDefaultMotionState_0=function(){return(Bn=b._emscripten_bind_btDefaultMotionState_btDefaultMotionState_0=b.asm.tl).apply(null,arguments)},Cn=b._emscripten_bind_btDefaultMotionState_btDefaultMotionState_1=function(){return(Cn=b._emscripten_bind_btDefaultMotionState_btDefaultMotionState_1=b.asm.ul).apply(null,arguments)},Dn=b._emscripten_bind_btDefaultMotionState_btDefaultMotionState_2= -function(){return(Dn=b._emscripten_bind_btDefaultMotionState_btDefaultMotionState_2=b.asm.vl).apply(null,arguments)},En=b._emscripten_bind_btDefaultMotionState_getWorldTransform_1=function(){return(En=b._emscripten_bind_btDefaultMotionState_getWorldTransform_1=b.asm.wl).apply(null,arguments)},Fn=b._emscripten_bind_btDefaultMotionState_setWorldTransform_1=function(){return(Fn=b._emscripten_bind_btDefaultMotionState_setWorldTransform_1=b.asm.xl).apply(null,arguments)},Gn=b._emscripten_bind_btDefaultMotionState_get_m_graphicsWorldTrans_0= -function(){return(Gn=b._emscripten_bind_btDefaultMotionState_get_m_graphicsWorldTrans_0=b.asm.yl).apply(null,arguments)},Hn=b._emscripten_bind_btDefaultMotionState_set_m_graphicsWorldTrans_1=function(){return(Hn=b._emscripten_bind_btDefaultMotionState_set_m_graphicsWorldTrans_1=b.asm.zl).apply(null,arguments)},In=b._emscripten_bind_btDefaultMotionState___destroy___0=function(){return(In=b._emscripten_bind_btDefaultMotionState___destroy___0=b.asm.Al).apply(null,arguments)},Jn=b._emscripten_bind_btWheelInfo_btWheelInfo_1= -function(){return(Jn=b._emscripten_bind_btWheelInfo_btWheelInfo_1=b.asm.Bl).apply(null,arguments)},Kn=b._emscripten_bind_btWheelInfo_getSuspensionRestLength_0=function(){return(Kn=b._emscripten_bind_btWheelInfo_getSuspensionRestLength_0=b.asm.Cl).apply(null,arguments)},Ln=b._emscripten_bind_btWheelInfo_updateWheel_2=function(){return(Ln=b._emscripten_bind_btWheelInfo_updateWheel_2=b.asm.Dl).apply(null,arguments)},Mn=b._emscripten_bind_btWheelInfo_get_m_suspensionStiffness_0=function(){return(Mn=b._emscripten_bind_btWheelInfo_get_m_suspensionStiffness_0= -b.asm.El).apply(null,arguments)},Nn=b._emscripten_bind_btWheelInfo_set_m_suspensionStiffness_1=function(){return(Nn=b._emscripten_bind_btWheelInfo_set_m_suspensionStiffness_1=b.asm.Fl).apply(null,arguments)},On=b._emscripten_bind_btWheelInfo_get_m_frictionSlip_0=function(){return(On=b._emscripten_bind_btWheelInfo_get_m_frictionSlip_0=b.asm.Gl).apply(null,arguments)},Pn=b._emscripten_bind_btWheelInfo_set_m_frictionSlip_1=function(){return(Pn=b._emscripten_bind_btWheelInfo_set_m_frictionSlip_1=b.asm.Hl).apply(null, -arguments)},Qn=b._emscripten_bind_btWheelInfo_get_m_engineForce_0=function(){return(Qn=b._emscripten_bind_btWheelInfo_get_m_engineForce_0=b.asm.Il).apply(null,arguments)},Rn=b._emscripten_bind_btWheelInfo_set_m_engineForce_1=function(){return(Rn=b._emscripten_bind_btWheelInfo_set_m_engineForce_1=b.asm.Jl).apply(null,arguments)},Sn=b._emscripten_bind_btWheelInfo_get_m_rollInfluence_0=function(){return(Sn=b._emscripten_bind_btWheelInfo_get_m_rollInfluence_0=b.asm.Kl).apply(null,arguments)},Tn=b._emscripten_bind_btWheelInfo_set_m_rollInfluence_1= -function(){return(Tn=b._emscripten_bind_btWheelInfo_set_m_rollInfluence_1=b.asm.Ll).apply(null,arguments)},Un=b._emscripten_bind_btWheelInfo_get_m_suspensionRestLength1_0=function(){return(Un=b._emscripten_bind_btWheelInfo_get_m_suspensionRestLength1_0=b.asm.Ml).apply(null,arguments)},Vn=b._emscripten_bind_btWheelInfo_set_m_suspensionRestLength1_1=function(){return(Vn=b._emscripten_bind_btWheelInfo_set_m_suspensionRestLength1_1=b.asm.Nl).apply(null,arguments)},Wn=b._emscripten_bind_btWheelInfo_get_m_wheelsRadius_0= -function(){return(Wn=b._emscripten_bind_btWheelInfo_get_m_wheelsRadius_0=b.asm.Ol).apply(null,arguments)},Xn=b._emscripten_bind_btWheelInfo_set_m_wheelsRadius_1=function(){return(Xn=b._emscripten_bind_btWheelInfo_set_m_wheelsRadius_1=b.asm.Pl).apply(null,arguments)},Yn=b._emscripten_bind_btWheelInfo_get_m_wheelsDampingCompression_0=function(){return(Yn=b._emscripten_bind_btWheelInfo_get_m_wheelsDampingCompression_0=b.asm.Ql).apply(null,arguments)},Zn=b._emscripten_bind_btWheelInfo_set_m_wheelsDampingCompression_1= -function(){return(Zn=b._emscripten_bind_btWheelInfo_set_m_wheelsDampingCompression_1=b.asm.Rl).apply(null,arguments)},$n=b._emscripten_bind_btWheelInfo_get_m_wheelsDampingRelaxation_0=function(){return($n=b._emscripten_bind_btWheelInfo_get_m_wheelsDampingRelaxation_0=b.asm.Sl).apply(null,arguments)},ao=b._emscripten_bind_btWheelInfo_set_m_wheelsDampingRelaxation_1=function(){return(ao=b._emscripten_bind_btWheelInfo_set_m_wheelsDampingRelaxation_1=b.asm.Tl).apply(null,arguments)},bo=b._emscripten_bind_btWheelInfo_get_m_steering_0= -function(){return(bo=b._emscripten_bind_btWheelInfo_get_m_steering_0=b.asm.Ul).apply(null,arguments)},co=b._emscripten_bind_btWheelInfo_set_m_steering_1=function(){return(co=b._emscripten_bind_btWheelInfo_set_m_steering_1=b.asm.Vl).apply(null,arguments)},eo=b._emscripten_bind_btWheelInfo_get_m_maxSuspensionForce_0=function(){return(eo=b._emscripten_bind_btWheelInfo_get_m_maxSuspensionForce_0=b.asm.Wl).apply(null,arguments)},fo=b._emscripten_bind_btWheelInfo_set_m_maxSuspensionForce_1=function(){return(fo= -b._emscripten_bind_btWheelInfo_set_m_maxSuspensionForce_1=b.asm.Xl).apply(null,arguments)},go=b._emscripten_bind_btWheelInfo_get_m_maxSuspensionTravelCm_0=function(){return(go=b._emscripten_bind_btWheelInfo_get_m_maxSuspensionTravelCm_0=b.asm.Yl).apply(null,arguments)},ho=b._emscripten_bind_btWheelInfo_set_m_maxSuspensionTravelCm_1=function(){return(ho=b._emscripten_bind_btWheelInfo_set_m_maxSuspensionTravelCm_1=b.asm.Zl).apply(null,arguments)},io=b._emscripten_bind_btWheelInfo_get_m_wheelsSuspensionForce_0= -function(){return(io=b._emscripten_bind_btWheelInfo_get_m_wheelsSuspensionForce_0=b.asm._l).apply(null,arguments)},jo=b._emscripten_bind_btWheelInfo_set_m_wheelsSuspensionForce_1=function(){return(jo=b._emscripten_bind_btWheelInfo_set_m_wheelsSuspensionForce_1=b.asm.$l).apply(null,arguments)},ko=b._emscripten_bind_btWheelInfo_get_m_bIsFrontWheel_0=function(){return(ko=b._emscripten_bind_btWheelInfo_get_m_bIsFrontWheel_0=b.asm.am).apply(null,arguments)},lo=b._emscripten_bind_btWheelInfo_set_m_bIsFrontWheel_1= -function(){return(lo=b._emscripten_bind_btWheelInfo_set_m_bIsFrontWheel_1=b.asm.bm).apply(null,arguments)},mo=b._emscripten_bind_btWheelInfo_get_m_raycastInfo_0=function(){return(mo=b._emscripten_bind_btWheelInfo_get_m_raycastInfo_0=b.asm.cm).apply(null,arguments)},no=b._emscripten_bind_btWheelInfo_set_m_raycastInfo_1=function(){return(no=b._emscripten_bind_btWheelInfo_set_m_raycastInfo_1=b.asm.dm).apply(null,arguments)},oo=b._emscripten_bind_btWheelInfo_get_m_chassisConnectionPointCS_0=function(){return(oo= -b._emscripten_bind_btWheelInfo_get_m_chassisConnectionPointCS_0=b.asm.em).apply(null,arguments)},po=b._emscripten_bind_btWheelInfo_set_m_chassisConnectionPointCS_1=function(){return(po=b._emscripten_bind_btWheelInfo_set_m_chassisConnectionPointCS_1=b.asm.fm).apply(null,arguments)},qo=b._emscripten_bind_btWheelInfo_get_m_worldTransform_0=function(){return(qo=b._emscripten_bind_btWheelInfo_get_m_worldTransform_0=b.asm.gm).apply(null,arguments)},ro=b._emscripten_bind_btWheelInfo_set_m_worldTransform_1= -function(){return(ro=b._emscripten_bind_btWheelInfo_set_m_worldTransform_1=b.asm.hm).apply(null,arguments)},so=b._emscripten_bind_btWheelInfo_get_m_wheelDirectionCS_0=function(){return(so=b._emscripten_bind_btWheelInfo_get_m_wheelDirectionCS_0=b.asm.im).apply(null,arguments)},to=b._emscripten_bind_btWheelInfo_set_m_wheelDirectionCS_1=function(){return(to=b._emscripten_bind_btWheelInfo_set_m_wheelDirectionCS_1=b.asm.jm).apply(null,arguments)},uo=b._emscripten_bind_btWheelInfo_get_m_wheelAxleCS_0=function(){return(uo= -b._emscripten_bind_btWheelInfo_get_m_wheelAxleCS_0=b.asm.km).apply(null,arguments)},vo=b._emscripten_bind_btWheelInfo_set_m_wheelAxleCS_1=function(){return(vo=b._emscripten_bind_btWheelInfo_set_m_wheelAxleCS_1=b.asm.lm).apply(null,arguments)},wo=b._emscripten_bind_btWheelInfo_get_m_rotation_0=function(){return(wo=b._emscripten_bind_btWheelInfo_get_m_rotation_0=b.asm.mm).apply(null,arguments)},xo=b._emscripten_bind_btWheelInfo_set_m_rotation_1=function(){return(xo=b._emscripten_bind_btWheelInfo_set_m_rotation_1= -b.asm.nm).apply(null,arguments)},yo=b._emscripten_bind_btWheelInfo_get_m_deltaRotation_0=function(){return(yo=b._emscripten_bind_btWheelInfo_get_m_deltaRotation_0=b.asm.om).apply(null,arguments)},zo=b._emscripten_bind_btWheelInfo_set_m_deltaRotation_1=function(){return(zo=b._emscripten_bind_btWheelInfo_set_m_deltaRotation_1=b.asm.pm).apply(null,arguments)},Ao=b._emscripten_bind_btWheelInfo_get_m_brake_0=function(){return(Ao=b._emscripten_bind_btWheelInfo_get_m_brake_0=b.asm.qm).apply(null,arguments)}, -Bo=b._emscripten_bind_btWheelInfo_set_m_brake_1=function(){return(Bo=b._emscripten_bind_btWheelInfo_set_m_brake_1=b.asm.rm).apply(null,arguments)},Co=b._emscripten_bind_btWheelInfo_get_m_clippedInvContactDotSuspension_0=function(){return(Co=b._emscripten_bind_btWheelInfo_get_m_clippedInvContactDotSuspension_0=b.asm.sm).apply(null,arguments)},Do=b._emscripten_bind_btWheelInfo_set_m_clippedInvContactDotSuspension_1=function(){return(Do=b._emscripten_bind_btWheelInfo_set_m_clippedInvContactDotSuspension_1= -b.asm.tm).apply(null,arguments)},Eo=b._emscripten_bind_btWheelInfo_get_m_suspensionRelativeVelocity_0=function(){return(Eo=b._emscripten_bind_btWheelInfo_get_m_suspensionRelativeVelocity_0=b.asm.um).apply(null,arguments)},Fo=b._emscripten_bind_btWheelInfo_set_m_suspensionRelativeVelocity_1=function(){return(Fo=b._emscripten_bind_btWheelInfo_set_m_suspensionRelativeVelocity_1=b.asm.vm).apply(null,arguments)},Go=b._emscripten_bind_btWheelInfo_get_m_skidInfo_0=function(){return(Go=b._emscripten_bind_btWheelInfo_get_m_skidInfo_0= -b.asm.wm).apply(null,arguments)},Ho=b._emscripten_bind_btWheelInfo_set_m_skidInfo_1=function(){return(Ho=b._emscripten_bind_btWheelInfo_set_m_skidInfo_1=b.asm.xm).apply(null,arguments)},Io=b._emscripten_bind_btWheelInfo___destroy___0=function(){return(Io=b._emscripten_bind_btWheelInfo___destroy___0=b.asm.ym).apply(null,arguments)},Jo=b._emscripten_bind_btVector4_btVector4_0=function(){return(Jo=b._emscripten_bind_btVector4_btVector4_0=b.asm.zm).apply(null,arguments)},Ko=b._emscripten_bind_btVector4_btVector4_4= -function(){return(Ko=b._emscripten_bind_btVector4_btVector4_4=b.asm.Am).apply(null,arguments)},Lo=b._emscripten_bind_btVector4_w_0=function(){return(Lo=b._emscripten_bind_btVector4_w_0=b.asm.Bm).apply(null,arguments)},Mo=b._emscripten_bind_btVector4_setValue_4=function(){return(Mo=b._emscripten_bind_btVector4_setValue_4=b.asm.Cm).apply(null,arguments)},No=b._emscripten_bind_btVector4_length_0=function(){return(No=b._emscripten_bind_btVector4_length_0=b.asm.Dm).apply(null,arguments)},Oo=b._emscripten_bind_btVector4_x_0= -function(){return(Oo=b._emscripten_bind_btVector4_x_0=b.asm.Em).apply(null,arguments)},Po=b._emscripten_bind_btVector4_y_0=function(){return(Po=b._emscripten_bind_btVector4_y_0=b.asm.Fm).apply(null,arguments)},Qo=b._emscripten_bind_btVector4_z_0=function(){return(Qo=b._emscripten_bind_btVector4_z_0=b.asm.Gm).apply(null,arguments)},Ro=b._emscripten_bind_btVector4_setX_1=function(){return(Ro=b._emscripten_bind_btVector4_setX_1=b.asm.Hm).apply(null,arguments)},So=b._emscripten_bind_btVector4_setY_1= -function(){return(So=b._emscripten_bind_btVector4_setY_1=b.asm.Im).apply(null,arguments)},To=b._emscripten_bind_btVector4_setZ_1=function(){return(To=b._emscripten_bind_btVector4_setZ_1=b.asm.Jm).apply(null,arguments)},Uo=b._emscripten_bind_btVector4_normalize_0=function(){return(Uo=b._emscripten_bind_btVector4_normalize_0=b.asm.Km).apply(null,arguments)},Vo=b._emscripten_bind_btVector4_rotate_2=function(){return(Vo=b._emscripten_bind_btVector4_rotate_2=b.asm.Lm).apply(null,arguments)},Wo=b._emscripten_bind_btVector4_dot_1= -function(){return(Wo=b._emscripten_bind_btVector4_dot_1=b.asm.Mm).apply(null,arguments)},Xo=b._emscripten_bind_btVector4_op_mul_1=function(){return(Xo=b._emscripten_bind_btVector4_op_mul_1=b.asm.Nm).apply(null,arguments)},Yo=b._emscripten_bind_btVector4_op_add_1=function(){return(Yo=b._emscripten_bind_btVector4_op_add_1=b.asm.Om).apply(null,arguments)},Zo=b._emscripten_bind_btVector4_op_sub_1=function(){return(Zo=b._emscripten_bind_btVector4_op_sub_1=b.asm.Pm).apply(null,arguments)},$o=b._emscripten_bind_btVector4___destroy___0= -function(){return($o=b._emscripten_bind_btVector4___destroy___0=b.asm.Qm).apply(null,arguments)},ap=b._emscripten_bind_btDefaultCollisionConstructionInfo_btDefaultCollisionConstructionInfo_0=function(){return(ap=b._emscripten_bind_btDefaultCollisionConstructionInfo_btDefaultCollisionConstructionInfo_0=b.asm.Rm).apply(null,arguments)},bp=b._emscripten_bind_btDefaultCollisionConstructionInfo___destroy___0=function(){return(bp=b._emscripten_bind_btDefaultCollisionConstructionInfo___destroy___0=b.asm.Sm).apply(null, -arguments)},cp=b._emscripten_bind_Anchor_get_m_node_0=function(){return(cp=b._emscripten_bind_Anchor_get_m_node_0=b.asm.Tm).apply(null,arguments)},dp=b._emscripten_bind_Anchor_set_m_node_1=function(){return(dp=b._emscripten_bind_Anchor_set_m_node_1=b.asm.Um).apply(null,arguments)},ep=b._emscripten_bind_Anchor_get_m_local_0=function(){return(ep=b._emscripten_bind_Anchor_get_m_local_0=b.asm.Vm).apply(null,arguments)},fp=b._emscripten_bind_Anchor_set_m_local_1=function(){return(fp=b._emscripten_bind_Anchor_set_m_local_1= -b.asm.Wm).apply(null,arguments)},gp=b._emscripten_bind_Anchor_get_m_body_0=function(){return(gp=b._emscripten_bind_Anchor_get_m_body_0=b.asm.Xm).apply(null,arguments)},hp=b._emscripten_bind_Anchor_set_m_body_1=function(){return(hp=b._emscripten_bind_Anchor_set_m_body_1=b.asm.Ym).apply(null,arguments)},ip=b._emscripten_bind_Anchor_get_m_influence_0=function(){return(ip=b._emscripten_bind_Anchor_get_m_influence_0=b.asm.Zm).apply(null,arguments)},jp=b._emscripten_bind_Anchor_set_m_influence_1=function(){return(jp= -b._emscripten_bind_Anchor_set_m_influence_1=b.asm._m).apply(null,arguments)},kp=b._emscripten_bind_Anchor_get_m_c0_0=function(){return(kp=b._emscripten_bind_Anchor_get_m_c0_0=b.asm.$m).apply(null,arguments)},lp=b._emscripten_bind_Anchor_set_m_c0_1=function(){return(lp=b._emscripten_bind_Anchor_set_m_c0_1=b.asm.an).apply(null,arguments)},mp=b._emscripten_bind_Anchor_get_m_c1_0=function(){return(mp=b._emscripten_bind_Anchor_get_m_c1_0=b.asm.bn).apply(null,arguments)},np=b._emscripten_bind_Anchor_set_m_c1_1= -function(){return(np=b._emscripten_bind_Anchor_set_m_c1_1=b.asm.cn).apply(null,arguments)},op=b._emscripten_bind_Anchor_get_m_c2_0=function(){return(op=b._emscripten_bind_Anchor_get_m_c2_0=b.asm.dn).apply(null,arguments)},pp=b._emscripten_bind_Anchor_set_m_c2_1=function(){return(pp=b._emscripten_bind_Anchor_set_m_c2_1=b.asm.en).apply(null,arguments)},qp=b._emscripten_bind_Anchor___destroy___0=function(){return(qp=b._emscripten_bind_Anchor___destroy___0=b.asm.fn).apply(null,arguments)},rp=b._emscripten_bind_btVehicleRaycasterResult_get_m_hitPointInWorld_0= -function(){return(rp=b._emscripten_bind_btVehicleRaycasterResult_get_m_hitPointInWorld_0=b.asm.gn).apply(null,arguments)},sp=b._emscripten_bind_btVehicleRaycasterResult_set_m_hitPointInWorld_1=function(){return(sp=b._emscripten_bind_btVehicleRaycasterResult_set_m_hitPointInWorld_1=b.asm.hn).apply(null,arguments)},tp=b._emscripten_bind_btVehicleRaycasterResult_get_m_hitNormalInWorld_0=function(){return(tp=b._emscripten_bind_btVehicleRaycasterResult_get_m_hitNormalInWorld_0=b.asm.jn).apply(null,arguments)}, -up=b._emscripten_bind_btVehicleRaycasterResult_set_m_hitNormalInWorld_1=function(){return(up=b._emscripten_bind_btVehicleRaycasterResult_set_m_hitNormalInWorld_1=b.asm.kn).apply(null,arguments)},vp=b._emscripten_bind_btVehicleRaycasterResult_get_m_distFraction_0=function(){return(vp=b._emscripten_bind_btVehicleRaycasterResult_get_m_distFraction_0=b.asm.ln).apply(null,arguments)},wp=b._emscripten_bind_btVehicleRaycasterResult_set_m_distFraction_1=function(){return(wp=b._emscripten_bind_btVehicleRaycasterResult_set_m_distFraction_1= -b.asm.mn).apply(null,arguments)},xp=b._emscripten_bind_btVehicleRaycasterResult___destroy___0=function(){return(xp=b._emscripten_bind_btVehicleRaycasterResult___destroy___0=b.asm.nn).apply(null,arguments)},yp=b._emscripten_bind_btVector3Array_size_0=function(){return(yp=b._emscripten_bind_btVector3Array_size_0=b.asm.on).apply(null,arguments)},zp=b._emscripten_bind_btVector3Array_at_1=function(){return(zp=b._emscripten_bind_btVector3Array_at_1=b.asm.pn).apply(null,arguments)},Ap=b._emscripten_bind_btVector3Array___destroy___0= -function(){return(Ap=b._emscripten_bind_btVector3Array___destroy___0=b.asm.qn).apply(null,arguments)},Bp=b._emscripten_bind_btConstraintSolver___destroy___0=function(){return(Bp=b._emscripten_bind_btConstraintSolver___destroy___0=b.asm.rn).apply(null,arguments)},Cp=b._emscripten_bind_btRaycastVehicle_btRaycastVehicle_3=function(){return(Cp=b._emscripten_bind_btRaycastVehicle_btRaycastVehicle_3=b.asm.sn).apply(null,arguments)},Dp=b._emscripten_bind_btRaycastVehicle_applyEngineForce_2=function(){return(Dp= -b._emscripten_bind_btRaycastVehicle_applyEngineForce_2=b.asm.tn).apply(null,arguments)},Ep=b._emscripten_bind_btRaycastVehicle_setSteeringValue_2=function(){return(Ep=b._emscripten_bind_btRaycastVehicle_setSteeringValue_2=b.asm.un).apply(null,arguments)},Fp=b._emscripten_bind_btRaycastVehicle_getWheelTransformWS_1=function(){return(Fp=b._emscripten_bind_btRaycastVehicle_getWheelTransformWS_1=b.asm.vn).apply(null,arguments)},Gp=b._emscripten_bind_btRaycastVehicle_updateWheelTransform_2=function(){return(Gp= -b._emscripten_bind_btRaycastVehicle_updateWheelTransform_2=b.asm.wn).apply(null,arguments)},Hp=b._emscripten_bind_btRaycastVehicle_addWheel_7=function(){return(Hp=b._emscripten_bind_btRaycastVehicle_addWheel_7=b.asm.xn).apply(null,arguments)},Ip=b._emscripten_bind_btRaycastVehicle_getNumWheels_0=function(){return(Ip=b._emscripten_bind_btRaycastVehicle_getNumWheels_0=b.asm.yn).apply(null,arguments)},Jp=b._emscripten_bind_btRaycastVehicle_getRigidBody_0=function(){return(Jp=b._emscripten_bind_btRaycastVehicle_getRigidBody_0= -b.asm.zn).apply(null,arguments)},Kp=b._emscripten_bind_btRaycastVehicle_getWheelInfo_1=function(){return(Kp=b._emscripten_bind_btRaycastVehicle_getWheelInfo_1=b.asm.An).apply(null,arguments)},Lp=b._emscripten_bind_btRaycastVehicle_setBrake_2=function(){return(Lp=b._emscripten_bind_btRaycastVehicle_setBrake_2=b.asm.Bn).apply(null,arguments)},Mp=b._emscripten_bind_btRaycastVehicle_setCoordinateSystem_3=function(){return(Mp=b._emscripten_bind_btRaycastVehicle_setCoordinateSystem_3=b.asm.Cn).apply(null, -arguments)},Np=b._emscripten_bind_btRaycastVehicle_getCurrentSpeedKmHour_0=function(){return(Np=b._emscripten_bind_btRaycastVehicle_getCurrentSpeedKmHour_0=b.asm.Dn).apply(null,arguments)},Op=b._emscripten_bind_btRaycastVehicle_getChassisWorldTransform_0=function(){return(Op=b._emscripten_bind_btRaycastVehicle_getChassisWorldTransform_0=b.asm.En).apply(null,arguments)},Pp=b._emscripten_bind_btRaycastVehicle_rayCast_1=function(){return(Pp=b._emscripten_bind_btRaycastVehicle_rayCast_1=b.asm.Fn).apply(null, -arguments)},Qp=b._emscripten_bind_btRaycastVehicle_updateVehicle_1=function(){return(Qp=b._emscripten_bind_btRaycastVehicle_updateVehicle_1=b.asm.Gn).apply(null,arguments)},Rp=b._emscripten_bind_btRaycastVehicle_resetSuspension_0=function(){return(Rp=b._emscripten_bind_btRaycastVehicle_resetSuspension_0=b.asm.Hn).apply(null,arguments)},Sp=b._emscripten_bind_btRaycastVehicle_getSteeringValue_1=function(){return(Sp=b._emscripten_bind_btRaycastVehicle_getSteeringValue_1=b.asm.In).apply(null,arguments)}, -Tp=b._emscripten_bind_btRaycastVehicle_updateWheelTransformsWS_1=function(){return(Tp=b._emscripten_bind_btRaycastVehicle_updateWheelTransformsWS_1=b.asm.Jn).apply(null,arguments)},Up=b._emscripten_bind_btRaycastVehicle_updateWheelTransformsWS_2=function(){return(Up=b._emscripten_bind_btRaycastVehicle_updateWheelTransformsWS_2=b.asm.Kn).apply(null,arguments)},Vp=b._emscripten_bind_btRaycastVehicle_setPitchControl_1=function(){return(Vp=b._emscripten_bind_btRaycastVehicle_setPitchControl_1=b.asm.Ln).apply(null, -arguments)},Wp=b._emscripten_bind_btRaycastVehicle_updateSuspension_1=function(){return(Wp=b._emscripten_bind_btRaycastVehicle_updateSuspension_1=b.asm.Mn).apply(null,arguments)},Xp=b._emscripten_bind_btRaycastVehicle_updateFriction_1=function(){return(Xp=b._emscripten_bind_btRaycastVehicle_updateFriction_1=b.asm.Nn).apply(null,arguments)},Yp=b._emscripten_bind_btRaycastVehicle_getRightAxis_0=function(){return(Yp=b._emscripten_bind_btRaycastVehicle_getRightAxis_0=b.asm.On).apply(null,arguments)}, -Zp=b._emscripten_bind_btRaycastVehicle_getUpAxis_0=function(){return(Zp=b._emscripten_bind_btRaycastVehicle_getUpAxis_0=b.asm.Pn).apply(null,arguments)},$p=b._emscripten_bind_btRaycastVehicle_getForwardAxis_0=function(){return($p=b._emscripten_bind_btRaycastVehicle_getForwardAxis_0=b.asm.Qn).apply(null,arguments)},aq=b._emscripten_bind_btRaycastVehicle_getForwardVector_0=function(){return(aq=b._emscripten_bind_btRaycastVehicle_getForwardVector_0=b.asm.Rn).apply(null,arguments)},bq=b._emscripten_bind_btRaycastVehicle_getUserConstraintType_0= -function(){return(bq=b._emscripten_bind_btRaycastVehicle_getUserConstraintType_0=b.asm.Sn).apply(null,arguments)},cq=b._emscripten_bind_btRaycastVehicle_setUserConstraintType_1=function(){return(cq=b._emscripten_bind_btRaycastVehicle_setUserConstraintType_1=b.asm.Tn).apply(null,arguments)},dq=b._emscripten_bind_btRaycastVehicle_setUserConstraintId_1=function(){return(dq=b._emscripten_bind_btRaycastVehicle_setUserConstraintId_1=b.asm.Un).apply(null,arguments)},eq=b._emscripten_bind_btRaycastVehicle_getUserConstraintId_0= -function(){return(eq=b._emscripten_bind_btRaycastVehicle_getUserConstraintId_0=b.asm.Vn).apply(null,arguments)},fq=b._emscripten_bind_btRaycastVehicle_updateAction_2=function(){return(fq=b._emscripten_bind_btRaycastVehicle_updateAction_2=b.asm.Wn).apply(null,arguments)},gq=b._emscripten_bind_btRaycastVehicle___destroy___0=function(){return(gq=b._emscripten_bind_btRaycastVehicle___destroy___0=b.asm.Xn).apply(null,arguments)},hq=b._emscripten_bind_btCylinderShapeX_btCylinderShapeX_1=function(){return(hq= -b._emscripten_bind_btCylinderShapeX_btCylinderShapeX_1=b.asm.Yn).apply(null,arguments)},iq=b._emscripten_bind_btCylinderShapeX_setMargin_1=function(){return(iq=b._emscripten_bind_btCylinderShapeX_setMargin_1=b.asm.Zn).apply(null,arguments)},jq=b._emscripten_bind_btCylinderShapeX_getMargin_0=function(){return(jq=b._emscripten_bind_btCylinderShapeX_getMargin_0=b.asm._n).apply(null,arguments)},kq=b._emscripten_bind_btCylinderShapeX_setLocalScaling_1=function(){return(kq=b._emscripten_bind_btCylinderShapeX_setLocalScaling_1= -b.asm.$n).apply(null,arguments)},lq=b._emscripten_bind_btCylinderShapeX_getLocalScaling_0=function(){return(lq=b._emscripten_bind_btCylinderShapeX_getLocalScaling_0=b.asm.ao).apply(null,arguments)},mq=b._emscripten_bind_btCylinderShapeX_calculateLocalInertia_2=function(){return(mq=b._emscripten_bind_btCylinderShapeX_calculateLocalInertia_2=b.asm.bo).apply(null,arguments)},nq=b._emscripten_bind_btCylinderShapeX___destroy___0=function(){return(nq=b._emscripten_bind_btCylinderShapeX___destroy___0=b.asm.co).apply(null, -arguments)},oq=b._emscripten_bind_btCylinderShapeZ_btCylinderShapeZ_1=function(){return(oq=b._emscripten_bind_btCylinderShapeZ_btCylinderShapeZ_1=b.asm.eo).apply(null,arguments)},pq=b._emscripten_bind_btCylinderShapeZ_setMargin_1=function(){return(pq=b._emscripten_bind_btCylinderShapeZ_setMargin_1=b.asm.fo).apply(null,arguments)},qq=b._emscripten_bind_btCylinderShapeZ_getMargin_0=function(){return(qq=b._emscripten_bind_btCylinderShapeZ_getMargin_0=b.asm.go).apply(null,arguments)},rq=b._emscripten_bind_btCylinderShapeZ_setLocalScaling_1= -function(){return(rq=b._emscripten_bind_btCylinderShapeZ_setLocalScaling_1=b.asm.ho).apply(null,arguments)},sq=b._emscripten_bind_btCylinderShapeZ_getLocalScaling_0=function(){return(sq=b._emscripten_bind_btCylinderShapeZ_getLocalScaling_0=b.asm.io).apply(null,arguments)},tq=b._emscripten_bind_btCylinderShapeZ_calculateLocalInertia_2=function(){return(tq=b._emscripten_bind_btCylinderShapeZ_calculateLocalInertia_2=b.asm.jo).apply(null,arguments)},uq=b._emscripten_bind_btCylinderShapeZ___destroy___0= -function(){return(uq=b._emscripten_bind_btCylinderShapeZ___destroy___0=b.asm.ko).apply(null,arguments)},vq=b._emscripten_bind_btConvexPolyhedron_get_m_vertices_0=function(){return(vq=b._emscripten_bind_btConvexPolyhedron_get_m_vertices_0=b.asm.lo).apply(null,arguments)},wq=b._emscripten_bind_btConvexPolyhedron_set_m_vertices_1=function(){return(wq=b._emscripten_bind_btConvexPolyhedron_set_m_vertices_1=b.asm.mo).apply(null,arguments)},xq=b._emscripten_bind_btConvexPolyhedron_get_m_faces_0=function(){return(xq= -b._emscripten_bind_btConvexPolyhedron_get_m_faces_0=b.asm.no).apply(null,arguments)},yq=b._emscripten_bind_btConvexPolyhedron_set_m_faces_1=function(){return(yq=b._emscripten_bind_btConvexPolyhedron_set_m_faces_1=b.asm.oo).apply(null,arguments)},zq=b._emscripten_bind_btConvexPolyhedron___destroy___0=function(){return(zq=b._emscripten_bind_btConvexPolyhedron___destroy___0=b.asm.po).apply(null,arguments)},Aq=b._emscripten_bind_btSequentialImpulseConstraintSolver_btSequentialImpulseConstraintSolver_0= -function(){return(Aq=b._emscripten_bind_btSequentialImpulseConstraintSolver_btSequentialImpulseConstraintSolver_0=b.asm.qo).apply(null,arguments)},Bq=b._emscripten_bind_btSequentialImpulseConstraintSolver___destroy___0=function(){return(Bq=b._emscripten_bind_btSequentialImpulseConstraintSolver___destroy___0=b.asm.ro).apply(null,arguments)},Cq=b._emscripten_bind_tAnchorArray_size_0=function(){return(Cq=b._emscripten_bind_tAnchorArray_size_0=b.asm.so).apply(null,arguments)},Dq=b._emscripten_bind_tAnchorArray_at_1= -function(){return(Dq=b._emscripten_bind_tAnchorArray_at_1=b.asm.to).apply(null,arguments)},Eq=b._emscripten_bind_tAnchorArray_clear_0=function(){return(Eq=b._emscripten_bind_tAnchorArray_clear_0=b.asm.uo).apply(null,arguments)},Fq=b._emscripten_bind_tAnchorArray_push_back_1=function(){return(Fq=b._emscripten_bind_tAnchorArray_push_back_1=b.asm.vo).apply(null,arguments)},Gq=b._emscripten_bind_tAnchorArray_pop_back_0=function(){return(Gq=b._emscripten_bind_tAnchorArray_pop_back_0=b.asm.wo).apply(null, -arguments)},Hq=b._emscripten_bind_tAnchorArray___destroy___0=function(){return(Hq=b._emscripten_bind_tAnchorArray___destroy___0=b.asm.xo).apply(null,arguments)},Iq=b._emscripten_bind_RaycastInfo_get_m_contactNormalWS_0=function(){return(Iq=b._emscripten_bind_RaycastInfo_get_m_contactNormalWS_0=b.asm.yo).apply(null,arguments)},Jq=b._emscripten_bind_RaycastInfo_set_m_contactNormalWS_1=function(){return(Jq=b._emscripten_bind_RaycastInfo_set_m_contactNormalWS_1=b.asm.zo).apply(null,arguments)},Kq=b._emscripten_bind_RaycastInfo_get_m_contactPointWS_0= -function(){return(Kq=b._emscripten_bind_RaycastInfo_get_m_contactPointWS_0=b.asm.Ao).apply(null,arguments)},Lq=b._emscripten_bind_RaycastInfo_set_m_contactPointWS_1=function(){return(Lq=b._emscripten_bind_RaycastInfo_set_m_contactPointWS_1=b.asm.Bo).apply(null,arguments)},Mq=b._emscripten_bind_RaycastInfo_get_m_suspensionLength_0=function(){return(Mq=b._emscripten_bind_RaycastInfo_get_m_suspensionLength_0=b.asm.Co).apply(null,arguments)},Nq=b._emscripten_bind_RaycastInfo_set_m_suspensionLength_1= -function(){return(Nq=b._emscripten_bind_RaycastInfo_set_m_suspensionLength_1=b.asm.Do).apply(null,arguments)},Oq=b._emscripten_bind_RaycastInfo_get_m_hardPointWS_0=function(){return(Oq=b._emscripten_bind_RaycastInfo_get_m_hardPointWS_0=b.asm.Eo).apply(null,arguments)},Pq=b._emscripten_bind_RaycastInfo_set_m_hardPointWS_1=function(){return(Pq=b._emscripten_bind_RaycastInfo_set_m_hardPointWS_1=b.asm.Fo).apply(null,arguments)},Qq=b._emscripten_bind_RaycastInfo_get_m_wheelDirectionWS_0=function(){return(Qq= -b._emscripten_bind_RaycastInfo_get_m_wheelDirectionWS_0=b.asm.Go).apply(null,arguments)},Rq=b._emscripten_bind_RaycastInfo_set_m_wheelDirectionWS_1=function(){return(Rq=b._emscripten_bind_RaycastInfo_set_m_wheelDirectionWS_1=b.asm.Ho).apply(null,arguments)},Sq=b._emscripten_bind_RaycastInfo_get_m_wheelAxleWS_0=function(){return(Sq=b._emscripten_bind_RaycastInfo_get_m_wheelAxleWS_0=b.asm.Io).apply(null,arguments)},Tq=b._emscripten_bind_RaycastInfo_set_m_wheelAxleWS_1=function(){return(Tq=b._emscripten_bind_RaycastInfo_set_m_wheelAxleWS_1= -b.asm.Jo).apply(null,arguments)},Uq=b._emscripten_bind_RaycastInfo_get_m_isInContact_0=function(){return(Uq=b._emscripten_bind_RaycastInfo_get_m_isInContact_0=b.asm.Ko).apply(null,arguments)},Vq=b._emscripten_bind_RaycastInfo_set_m_isInContact_1=function(){return(Vq=b._emscripten_bind_RaycastInfo_set_m_isInContact_1=b.asm.Lo).apply(null,arguments)},Wq=b._emscripten_bind_RaycastInfo_get_m_groundObject_0=function(){return(Wq=b._emscripten_bind_RaycastInfo_get_m_groundObject_0=b.asm.Mo).apply(null,arguments)}, -Xq=b._emscripten_bind_RaycastInfo_set_m_groundObject_1=function(){return(Xq=b._emscripten_bind_RaycastInfo_set_m_groundObject_1=b.asm.No).apply(null,arguments)},Yq=b._emscripten_bind_RaycastInfo___destroy___0=function(){return(Yq=b._emscripten_bind_RaycastInfo___destroy___0=b.asm.Oo).apply(null,arguments)},Zq=b._emscripten_bind_btMultiSphereShape_btMultiSphereShape_3=function(){return(Zq=b._emscripten_bind_btMultiSphereShape_btMultiSphereShape_3=b.asm.Po).apply(null,arguments)},$q=b._emscripten_bind_btMultiSphereShape_setLocalScaling_1= -function(){return($q=b._emscripten_bind_btMultiSphereShape_setLocalScaling_1=b.asm.Qo).apply(null,arguments)},ar=b._emscripten_bind_btMultiSphereShape_getLocalScaling_0=function(){return(ar=b._emscripten_bind_btMultiSphereShape_getLocalScaling_0=b.asm.Ro).apply(null,arguments)},br=b._emscripten_bind_btMultiSphereShape_calculateLocalInertia_2=function(){return(br=b._emscripten_bind_btMultiSphereShape_calculateLocalInertia_2=b.asm.So).apply(null,arguments)},cr=b._emscripten_bind_btMultiSphereShape___destroy___0= -function(){return(cr=b._emscripten_bind_btMultiSphereShape___destroy___0=b.asm.To).apply(null,arguments)},dr=b._emscripten_bind_btSoftBody_btSoftBody_4=function(){return(dr=b._emscripten_bind_btSoftBody_btSoftBody_4=b.asm.Uo).apply(null,arguments)},er=b._emscripten_bind_btSoftBody_checkLink_2=function(){return(er=b._emscripten_bind_btSoftBody_checkLink_2=b.asm.Vo).apply(null,arguments)},fr=b._emscripten_bind_btSoftBody_checkFace_3=function(){return(fr=b._emscripten_bind_btSoftBody_checkFace_3=b.asm.Wo).apply(null, -arguments)},gr=b._emscripten_bind_btSoftBody_appendMaterial_0=function(){return(gr=b._emscripten_bind_btSoftBody_appendMaterial_0=b.asm.Xo).apply(null,arguments)},hr=b._emscripten_bind_btSoftBody_appendNode_2=function(){return(hr=b._emscripten_bind_btSoftBody_appendNode_2=b.asm.Yo).apply(null,arguments)},ir=b._emscripten_bind_btSoftBody_appendLink_4=function(){return(ir=b._emscripten_bind_btSoftBody_appendLink_4=b.asm.Zo).apply(null,arguments)},jr=b._emscripten_bind_btSoftBody_appendFace_4=function(){return(jr= -b._emscripten_bind_btSoftBody_appendFace_4=b.asm._o).apply(null,arguments)},kr=b._emscripten_bind_btSoftBody_appendTetra_5=function(){return(kr=b._emscripten_bind_btSoftBody_appendTetra_5=b.asm.$o).apply(null,arguments)},lr=b._emscripten_bind_btSoftBody_appendAnchor_4=function(){return(lr=b._emscripten_bind_btSoftBody_appendAnchor_4=b.asm.ap).apply(null,arguments)},mr=b._emscripten_bind_btSoftBody_addForce_1=function(){return(mr=b._emscripten_bind_btSoftBody_addForce_1=b.asm.bp).apply(null,arguments)}, -nr=b._emscripten_bind_btSoftBody_addForce_2=function(){return(nr=b._emscripten_bind_btSoftBody_addForce_2=b.asm.cp).apply(null,arguments)},or=b._emscripten_bind_btSoftBody_addAeroForceToNode_2=function(){return(or=b._emscripten_bind_btSoftBody_addAeroForceToNode_2=b.asm.dp).apply(null,arguments)},pr=b._emscripten_bind_btSoftBody_getTotalMass_0=function(){return(pr=b._emscripten_bind_btSoftBody_getTotalMass_0=b.asm.ep).apply(null,arguments)},qr=b._emscripten_bind_btSoftBody_setTotalMass_2=function(){return(qr= -b._emscripten_bind_btSoftBody_setTotalMass_2=b.asm.fp).apply(null,arguments)},rr=b._emscripten_bind_btSoftBody_setMass_2=function(){return(rr=b._emscripten_bind_btSoftBody_setMass_2=b.asm.gp).apply(null,arguments)},sr=b._emscripten_bind_btSoftBody_transform_1=function(){return(sr=b._emscripten_bind_btSoftBody_transform_1=b.asm.hp).apply(null,arguments)},tr=b._emscripten_bind_btSoftBody_translate_1=function(){return(tr=b._emscripten_bind_btSoftBody_translate_1=b.asm.ip).apply(null,arguments)},ur=b._emscripten_bind_btSoftBody_rotate_1= -function(){return(ur=b._emscripten_bind_btSoftBody_rotate_1=b.asm.jp).apply(null,arguments)},vr=b._emscripten_bind_btSoftBody_scale_1=function(){return(vr=b._emscripten_bind_btSoftBody_scale_1=b.asm.kp).apply(null,arguments)},wr=b._emscripten_bind_btSoftBody_generateClusters_1=function(){return(wr=b._emscripten_bind_btSoftBody_generateClusters_1=b.asm.lp).apply(null,arguments)},xr=b._emscripten_bind_btSoftBody_generateClusters_2=function(){return(xr=b._emscripten_bind_btSoftBody_generateClusters_2= -b.asm.mp).apply(null,arguments)},yr=b._emscripten_bind_btSoftBody_generateBendingConstraints_2=function(){return(yr=b._emscripten_bind_btSoftBody_generateBendingConstraints_2=b.asm.np).apply(null,arguments)},zr=b._emscripten_bind_btSoftBody_upcast_1=function(){return(zr=b._emscripten_bind_btSoftBody_upcast_1=b.asm.op).apply(null,arguments)},Ar=b._emscripten_bind_btSoftBody_setAnisotropicFriction_2=function(){return(Ar=b._emscripten_bind_btSoftBody_setAnisotropicFriction_2=b.asm.pp).apply(null,arguments)}, -Br=b._emscripten_bind_btSoftBody_getCollisionShape_0=function(){return(Br=b._emscripten_bind_btSoftBody_getCollisionShape_0=b.asm.qp).apply(null,arguments)},Cr=b._emscripten_bind_btSoftBody_setContactProcessingThreshold_1=function(){return(Cr=b._emscripten_bind_btSoftBody_setContactProcessingThreshold_1=b.asm.rp).apply(null,arguments)},Dr=b._emscripten_bind_btSoftBody_setActivationState_1=function(){return(Dr=b._emscripten_bind_btSoftBody_setActivationState_1=b.asm.sp).apply(null,arguments)},Er=b._emscripten_bind_btSoftBody_forceActivationState_1= -function(){return(Er=b._emscripten_bind_btSoftBody_forceActivationState_1=b.asm.tp).apply(null,arguments)},Fr=b._emscripten_bind_btSoftBody_activate_0=function(){return(Fr=b._emscripten_bind_btSoftBody_activate_0=b.asm.up).apply(null,arguments)},Gr=b._emscripten_bind_btSoftBody_activate_1=function(){return(Gr=b._emscripten_bind_btSoftBody_activate_1=b.asm.vp).apply(null,arguments)},Hr=b._emscripten_bind_btSoftBody_isActive_0=function(){return(Hr=b._emscripten_bind_btSoftBody_isActive_0=b.asm.wp).apply(null, -arguments)},Ir=b._emscripten_bind_btSoftBody_isKinematicObject_0=function(){return(Ir=b._emscripten_bind_btSoftBody_isKinematicObject_0=b.asm.xp).apply(null,arguments)},Jr=b._emscripten_bind_btSoftBody_isStaticObject_0=function(){return(Jr=b._emscripten_bind_btSoftBody_isStaticObject_0=b.asm.yp).apply(null,arguments)},Kr=b._emscripten_bind_btSoftBody_isStaticOrKinematicObject_0=function(){return(Kr=b._emscripten_bind_btSoftBody_isStaticOrKinematicObject_0=b.asm.zp).apply(null,arguments)},Lr=b._emscripten_bind_btSoftBody_getRestitution_0= -function(){return(Lr=b._emscripten_bind_btSoftBody_getRestitution_0=b.asm.Ap).apply(null,arguments)},Mr=b._emscripten_bind_btSoftBody_getFriction_0=function(){return(Mr=b._emscripten_bind_btSoftBody_getFriction_0=b.asm.Bp).apply(null,arguments)},Nr=b._emscripten_bind_btSoftBody_getRollingFriction_0=function(){return(Nr=b._emscripten_bind_btSoftBody_getRollingFriction_0=b.asm.Cp).apply(null,arguments)},Or=b._emscripten_bind_btSoftBody_setRestitution_1=function(){return(Or=b._emscripten_bind_btSoftBody_setRestitution_1= -b.asm.Dp).apply(null,arguments)},Pr=b._emscripten_bind_btSoftBody_setFriction_1=function(){return(Pr=b._emscripten_bind_btSoftBody_setFriction_1=b.asm.Ep).apply(null,arguments)},Qr=b._emscripten_bind_btSoftBody_setRollingFriction_1=function(){return(Qr=b._emscripten_bind_btSoftBody_setRollingFriction_1=b.asm.Fp).apply(null,arguments)},Rr=b._emscripten_bind_btSoftBody_getWorldTransform_0=function(){return(Rr=b._emscripten_bind_btSoftBody_getWorldTransform_0=b.asm.Gp).apply(null,arguments)},Sr=b._emscripten_bind_btSoftBody_getCollisionFlags_0= -function(){return(Sr=b._emscripten_bind_btSoftBody_getCollisionFlags_0=b.asm.Hp).apply(null,arguments)},Tr=b._emscripten_bind_btSoftBody_setCollisionFlags_1=function(){return(Tr=b._emscripten_bind_btSoftBody_setCollisionFlags_1=b.asm.Ip).apply(null,arguments)},Ur=b._emscripten_bind_btSoftBody_setWorldTransform_1=function(){return(Ur=b._emscripten_bind_btSoftBody_setWorldTransform_1=b.asm.Jp).apply(null,arguments)},Vr=b._emscripten_bind_btSoftBody_setCollisionShape_1=function(){return(Vr=b._emscripten_bind_btSoftBody_setCollisionShape_1= -b.asm.Kp).apply(null,arguments)},Wr=b._emscripten_bind_btSoftBody_setCcdMotionThreshold_1=function(){return(Wr=b._emscripten_bind_btSoftBody_setCcdMotionThreshold_1=b.asm.Lp).apply(null,arguments)},Xr=b._emscripten_bind_btSoftBody_setCcdSweptSphereRadius_1=function(){return(Xr=b._emscripten_bind_btSoftBody_setCcdSweptSphereRadius_1=b.asm.Mp).apply(null,arguments)},Yr=b._emscripten_bind_btSoftBody_getUserIndex_0=function(){return(Yr=b._emscripten_bind_btSoftBody_getUserIndex_0=b.asm.Np).apply(null, -arguments)},Zr=b._emscripten_bind_btSoftBody_setUserIndex_1=function(){return(Zr=b._emscripten_bind_btSoftBody_setUserIndex_1=b.asm.Op).apply(null,arguments)},$r=b._emscripten_bind_btSoftBody_getUserPointer_0=function(){return($r=b._emscripten_bind_btSoftBody_getUserPointer_0=b.asm.Pp).apply(null,arguments)},as=b._emscripten_bind_btSoftBody_setUserPointer_1=function(){return(as=b._emscripten_bind_btSoftBody_setUserPointer_1=b.asm.Qp).apply(null,arguments)},bs=b._emscripten_bind_btSoftBody_getBroadphaseHandle_0= -function(){return(bs=b._emscripten_bind_btSoftBody_getBroadphaseHandle_0=b.asm.Rp).apply(null,arguments)},cs=b._emscripten_bind_btSoftBody_get_m_cfg_0=function(){return(cs=b._emscripten_bind_btSoftBody_get_m_cfg_0=b.asm.Sp).apply(null,arguments)},ds=b._emscripten_bind_btSoftBody_set_m_cfg_1=function(){return(ds=b._emscripten_bind_btSoftBody_set_m_cfg_1=b.asm.Tp).apply(null,arguments)},es=b._emscripten_bind_btSoftBody_get_m_nodes_0=function(){return(es=b._emscripten_bind_btSoftBody_get_m_nodes_0=b.asm.Up).apply(null, -arguments)},gs=b._emscripten_bind_btSoftBody_set_m_nodes_1=function(){return(gs=b._emscripten_bind_btSoftBody_set_m_nodes_1=b.asm.Vp).apply(null,arguments)},hs=b._emscripten_bind_btSoftBody_get_m_faces_0=function(){return(hs=b._emscripten_bind_btSoftBody_get_m_faces_0=b.asm.Wp).apply(null,arguments)},is=b._emscripten_bind_btSoftBody_set_m_faces_1=function(){return(is=b._emscripten_bind_btSoftBody_set_m_faces_1=b.asm.Xp).apply(null,arguments)},js=b._emscripten_bind_btSoftBody_get_m_materials_0=function(){return(js= -b._emscripten_bind_btSoftBody_get_m_materials_0=b.asm.Yp).apply(null,arguments)},ks=b._emscripten_bind_btSoftBody_set_m_materials_1=function(){return(ks=b._emscripten_bind_btSoftBody_set_m_materials_1=b.asm.Zp).apply(null,arguments)},ls=b._emscripten_bind_btSoftBody_get_m_anchors_0=function(){return(ls=b._emscripten_bind_btSoftBody_get_m_anchors_0=b.asm._p).apply(null,arguments)},ms=b._emscripten_bind_btSoftBody_set_m_anchors_1=function(){return(ms=b._emscripten_bind_btSoftBody_set_m_anchors_1=b.asm.$p).apply(null, -arguments)},ns=b._emscripten_bind_btSoftBody___destroy___0=function(){return(ns=b._emscripten_bind_btSoftBody___destroy___0=b.asm.aq).apply(null,arguments)},ps=b._emscripten_bind_btIntArray_size_0=function(){return(ps=b._emscripten_bind_btIntArray_size_0=b.asm.bq).apply(null,arguments)},qs=b._emscripten_bind_btIntArray_at_1=function(){return(qs=b._emscripten_bind_btIntArray_at_1=b.asm.cq).apply(null,arguments)},rs=b._emscripten_bind_btIntArray___destroy___0=function(){return(rs=b._emscripten_bind_btIntArray___destroy___0= -b.asm.dq).apply(null,arguments)},ss=b._emscripten_bind_Config_get_kVCF_0=function(){return(ss=b._emscripten_bind_Config_get_kVCF_0=b.asm.eq).apply(null,arguments)},ts=b._emscripten_bind_Config_set_kVCF_1=function(){return(ts=b._emscripten_bind_Config_set_kVCF_1=b.asm.fq).apply(null,arguments)},us=b._emscripten_bind_Config_get_kDP_0=function(){return(us=b._emscripten_bind_Config_get_kDP_0=b.asm.gq).apply(null,arguments)},vs=b._emscripten_bind_Config_set_kDP_1=function(){return(vs=b._emscripten_bind_Config_set_kDP_1= -b.asm.hq).apply(null,arguments)},xs=b._emscripten_bind_Config_get_kDG_0=function(){return(xs=b._emscripten_bind_Config_get_kDG_0=b.asm.iq).apply(null,arguments)},ys=b._emscripten_bind_Config_set_kDG_1=function(){return(ys=b._emscripten_bind_Config_set_kDG_1=b.asm.jq).apply(null,arguments)},zs=b._emscripten_bind_Config_get_kLF_0=function(){return(zs=b._emscripten_bind_Config_get_kLF_0=b.asm.kq).apply(null,arguments)},As=b._emscripten_bind_Config_set_kLF_1=function(){return(As=b._emscripten_bind_Config_set_kLF_1= -b.asm.lq).apply(null,arguments)},Bs=b._emscripten_bind_Config_get_kPR_0=function(){return(Bs=b._emscripten_bind_Config_get_kPR_0=b.asm.mq).apply(null,arguments)},Cs=b._emscripten_bind_Config_set_kPR_1=function(){return(Cs=b._emscripten_bind_Config_set_kPR_1=b.asm.nq).apply(null,arguments)},Ds=b._emscripten_bind_Config_get_kVC_0=function(){return(Ds=b._emscripten_bind_Config_get_kVC_0=b.asm.oq).apply(null,arguments)},Es=b._emscripten_bind_Config_set_kVC_1=function(){return(Es=b._emscripten_bind_Config_set_kVC_1= -b.asm.pq).apply(null,arguments)},Fs=b._emscripten_bind_Config_get_kDF_0=function(){return(Fs=b._emscripten_bind_Config_get_kDF_0=b.asm.qq).apply(null,arguments)},Gs=b._emscripten_bind_Config_set_kDF_1=function(){return(Gs=b._emscripten_bind_Config_set_kDF_1=b.asm.rq).apply(null,arguments)},Hs=b._emscripten_bind_Config_get_kMT_0=function(){return(Hs=b._emscripten_bind_Config_get_kMT_0=b.asm.sq).apply(null,arguments)},Is=b._emscripten_bind_Config_set_kMT_1=function(){return(Is=b._emscripten_bind_Config_set_kMT_1= -b.asm.tq).apply(null,arguments)},Js=b._emscripten_bind_Config_get_kCHR_0=function(){return(Js=b._emscripten_bind_Config_get_kCHR_0=b.asm.uq).apply(null,arguments)},Ks=b._emscripten_bind_Config_set_kCHR_1=function(){return(Ks=b._emscripten_bind_Config_set_kCHR_1=b.asm.vq).apply(null,arguments)},Ls=b._emscripten_bind_Config_get_kKHR_0=function(){return(Ls=b._emscripten_bind_Config_get_kKHR_0=b.asm.wq).apply(null,arguments)},Ms=b._emscripten_bind_Config_set_kKHR_1=function(){return(Ms=b._emscripten_bind_Config_set_kKHR_1= -b.asm.xq).apply(null,arguments)},Ns=b._emscripten_bind_Config_get_kSHR_0=function(){return(Ns=b._emscripten_bind_Config_get_kSHR_0=b.asm.yq).apply(null,arguments)},Os=b._emscripten_bind_Config_set_kSHR_1=function(){return(Os=b._emscripten_bind_Config_set_kSHR_1=b.asm.zq).apply(null,arguments)},Ps=b._emscripten_bind_Config_get_kAHR_0=function(){return(Ps=b._emscripten_bind_Config_get_kAHR_0=b.asm.Aq).apply(null,arguments)},Qs=b._emscripten_bind_Config_set_kAHR_1=function(){return(Qs=b._emscripten_bind_Config_set_kAHR_1= -b.asm.Bq).apply(null,arguments)},Rs=b._emscripten_bind_Config_get_kSRHR_CL_0=function(){return(Rs=b._emscripten_bind_Config_get_kSRHR_CL_0=b.asm.Cq).apply(null,arguments)},Ss=b._emscripten_bind_Config_set_kSRHR_CL_1=function(){return(Ss=b._emscripten_bind_Config_set_kSRHR_CL_1=b.asm.Dq).apply(null,arguments)},Ts=b._emscripten_bind_Config_get_kSKHR_CL_0=function(){return(Ts=b._emscripten_bind_Config_get_kSKHR_CL_0=b.asm.Eq).apply(null,arguments)},Us=b._emscripten_bind_Config_set_kSKHR_CL_1=function(){return(Us= -b._emscripten_bind_Config_set_kSKHR_CL_1=b.asm.Fq).apply(null,arguments)},Vs=b._emscripten_bind_Config_get_kSSHR_CL_0=function(){return(Vs=b._emscripten_bind_Config_get_kSSHR_CL_0=b.asm.Gq).apply(null,arguments)},Ws=b._emscripten_bind_Config_set_kSSHR_CL_1=function(){return(Ws=b._emscripten_bind_Config_set_kSSHR_CL_1=b.asm.Hq).apply(null,arguments)},Xs=b._emscripten_bind_Config_get_kSR_SPLT_CL_0=function(){return(Xs=b._emscripten_bind_Config_get_kSR_SPLT_CL_0=b.asm.Iq).apply(null,arguments)},Ys=b._emscripten_bind_Config_set_kSR_SPLT_CL_1= -function(){return(Ys=b._emscripten_bind_Config_set_kSR_SPLT_CL_1=b.asm.Jq).apply(null,arguments)},Zs=b._emscripten_bind_Config_get_kSK_SPLT_CL_0=function(){return(Zs=b._emscripten_bind_Config_get_kSK_SPLT_CL_0=b.asm.Kq).apply(null,arguments)},$s=b._emscripten_bind_Config_set_kSK_SPLT_CL_1=function(){return($s=b._emscripten_bind_Config_set_kSK_SPLT_CL_1=b.asm.Lq).apply(null,arguments)},at=b._emscripten_bind_Config_get_kSS_SPLT_CL_0=function(){return(at=b._emscripten_bind_Config_get_kSS_SPLT_CL_0=b.asm.Mq).apply(null, -arguments)},bt=b._emscripten_bind_Config_set_kSS_SPLT_CL_1=function(){return(bt=b._emscripten_bind_Config_set_kSS_SPLT_CL_1=b.asm.Nq).apply(null,arguments)},ct=b._emscripten_bind_Config_get_maxvolume_0=function(){return(ct=b._emscripten_bind_Config_get_maxvolume_0=b.asm.Oq).apply(null,arguments)},dt=b._emscripten_bind_Config_set_maxvolume_1=function(){return(dt=b._emscripten_bind_Config_set_maxvolume_1=b.asm.Pq).apply(null,arguments)},et=b._emscripten_bind_Config_get_timescale_0=function(){return(et= -b._emscripten_bind_Config_get_timescale_0=b.asm.Qq).apply(null,arguments)},ft=b._emscripten_bind_Config_set_timescale_1=function(){return(ft=b._emscripten_bind_Config_set_timescale_1=b.asm.Rq).apply(null,arguments)},gt=b._emscripten_bind_Config_get_viterations_0=function(){return(gt=b._emscripten_bind_Config_get_viterations_0=b.asm.Sq).apply(null,arguments)},ht=b._emscripten_bind_Config_set_viterations_1=function(){return(ht=b._emscripten_bind_Config_set_viterations_1=b.asm.Tq).apply(null,arguments)}, -it=b._emscripten_bind_Config_get_piterations_0=function(){return(it=b._emscripten_bind_Config_get_piterations_0=b.asm.Uq).apply(null,arguments)},jt=b._emscripten_bind_Config_set_piterations_1=function(){return(jt=b._emscripten_bind_Config_set_piterations_1=b.asm.Vq).apply(null,arguments)},kt=b._emscripten_bind_Config_get_diterations_0=function(){return(kt=b._emscripten_bind_Config_get_diterations_0=b.asm.Wq).apply(null,arguments)},lt=b._emscripten_bind_Config_set_diterations_1=function(){return(lt= -b._emscripten_bind_Config_set_diterations_1=b.asm.Xq).apply(null,arguments)},mt=b._emscripten_bind_Config_get_citerations_0=function(){return(mt=b._emscripten_bind_Config_get_citerations_0=b.asm.Yq).apply(null,arguments)},nt=b._emscripten_bind_Config_set_citerations_1=function(){return(nt=b._emscripten_bind_Config_set_citerations_1=b.asm.Zq).apply(null,arguments)},ot=b._emscripten_bind_Config_get_collisions_0=function(){return(ot=b._emscripten_bind_Config_get_collisions_0=b.asm._q).apply(null,arguments)}, -pt=b._emscripten_bind_Config_set_collisions_1=function(){return(pt=b._emscripten_bind_Config_set_collisions_1=b.asm.$q).apply(null,arguments)},qt=b._emscripten_bind_Config___destroy___0=function(){return(qt=b._emscripten_bind_Config___destroy___0=b.asm.ar).apply(null,arguments)},rt=b._emscripten_bind_Node_get_m_x_0=function(){return(rt=b._emscripten_bind_Node_get_m_x_0=b.asm.br).apply(null,arguments)},st=b._emscripten_bind_Node_set_m_x_1=function(){return(st=b._emscripten_bind_Node_set_m_x_1=b.asm.cr).apply(null, -arguments)},tt=b._emscripten_bind_Node_get_m_q_0=function(){return(tt=b._emscripten_bind_Node_get_m_q_0=b.asm.dr).apply(null,arguments)},ut=b._emscripten_bind_Node_set_m_q_1=function(){return(ut=b._emscripten_bind_Node_set_m_q_1=b.asm.er).apply(null,arguments)},vt=b._emscripten_bind_Node_get_m_v_0=function(){return(vt=b._emscripten_bind_Node_get_m_v_0=b.asm.fr).apply(null,arguments)},wt=b._emscripten_bind_Node_set_m_v_1=function(){return(wt=b._emscripten_bind_Node_set_m_v_1=b.asm.gr).apply(null,arguments)}, -xt=b._emscripten_bind_Node_get_m_f_0=function(){return(xt=b._emscripten_bind_Node_get_m_f_0=b.asm.hr).apply(null,arguments)},yt=b._emscripten_bind_Node_set_m_f_1=function(){return(yt=b._emscripten_bind_Node_set_m_f_1=b.asm.ir).apply(null,arguments)},zt=b._emscripten_bind_Node_get_m_n_0=function(){return(zt=b._emscripten_bind_Node_get_m_n_0=b.asm.jr).apply(null,arguments)},At=b._emscripten_bind_Node_set_m_n_1=function(){return(At=b._emscripten_bind_Node_set_m_n_1=b.asm.kr).apply(null,arguments)},Bt= -b._emscripten_bind_Node_get_m_im_0=function(){return(Bt=b._emscripten_bind_Node_get_m_im_0=b.asm.lr).apply(null,arguments)},Ct=b._emscripten_bind_Node_set_m_im_1=function(){return(Ct=b._emscripten_bind_Node_set_m_im_1=b.asm.mr).apply(null,arguments)},Dt=b._emscripten_bind_Node_get_m_area_0=function(){return(Dt=b._emscripten_bind_Node_get_m_area_0=b.asm.nr).apply(null,arguments)},Et=b._emscripten_bind_Node_set_m_area_1=function(){return(Et=b._emscripten_bind_Node_set_m_area_1=b.asm.or).apply(null, -arguments)},Ft=b._emscripten_bind_Node___destroy___0=function(){return(Ft=b._emscripten_bind_Node___destroy___0=b.asm.pr).apply(null,arguments)},Gt=b._emscripten_bind_btGhostPairCallback_btGhostPairCallback_0=function(){return(Gt=b._emscripten_bind_btGhostPairCallback_btGhostPairCallback_0=b.asm.qr).apply(null,arguments)},Ht=b._emscripten_bind_btGhostPairCallback___destroy___0=function(){return(Ht=b._emscripten_bind_btGhostPairCallback___destroy___0=b.asm.rr).apply(null,arguments)},It=b._emscripten_bind_btOverlappingPairCallback___destroy___0= -function(){return(It=b._emscripten_bind_btOverlappingPairCallback___destroy___0=b.asm.sr).apply(null,arguments)},Jt=b._emscripten_bind_btKinematicCharacterController_btKinematicCharacterController_3=function(){return(Jt=b._emscripten_bind_btKinematicCharacterController_btKinematicCharacterController_3=b.asm.tr).apply(null,arguments)},Kt=b._emscripten_bind_btKinematicCharacterController_btKinematicCharacterController_4=function(){return(Kt=b._emscripten_bind_btKinematicCharacterController_btKinematicCharacterController_4= -b.asm.ur).apply(null,arguments)},Lt=b._emscripten_bind_btKinematicCharacterController_setUpAxis_1=function(){return(Lt=b._emscripten_bind_btKinematicCharacterController_setUpAxis_1=b.asm.vr).apply(null,arguments)},Mt=b._emscripten_bind_btKinematicCharacterController_setWalkDirection_1=function(){return(Mt=b._emscripten_bind_btKinematicCharacterController_setWalkDirection_1=b.asm.wr).apply(null,arguments)},Nt=b._emscripten_bind_btKinematicCharacterController_setVelocityForTimeInterval_2=function(){return(Nt= -b._emscripten_bind_btKinematicCharacterController_setVelocityForTimeInterval_2=b.asm.xr).apply(null,arguments)},Ot=b._emscripten_bind_btKinematicCharacterController_warp_1=function(){return(Ot=b._emscripten_bind_btKinematicCharacterController_warp_1=b.asm.yr).apply(null,arguments)},Pt=b._emscripten_bind_btKinematicCharacterController_preStep_1=function(){return(Pt=b._emscripten_bind_btKinematicCharacterController_preStep_1=b.asm.zr).apply(null,arguments)},Qt=b._emscripten_bind_btKinematicCharacterController_playerStep_2= -function(){return(Qt=b._emscripten_bind_btKinematicCharacterController_playerStep_2=b.asm.Ar).apply(null,arguments)},Rt=b._emscripten_bind_btKinematicCharacterController_setFallSpeed_1=function(){return(Rt=b._emscripten_bind_btKinematicCharacterController_setFallSpeed_1=b.asm.Br).apply(null,arguments)},St=b._emscripten_bind_btKinematicCharacterController_setJumpSpeed_1=function(){return(St=b._emscripten_bind_btKinematicCharacterController_setJumpSpeed_1=b.asm.Cr).apply(null,arguments)},Tt=b._emscripten_bind_btKinematicCharacterController_setMaxJumpHeight_1= -function(){return(Tt=b._emscripten_bind_btKinematicCharacterController_setMaxJumpHeight_1=b.asm.Dr).apply(null,arguments)},Ut=b._emscripten_bind_btKinematicCharacterController_canJump_0=function(){return(Ut=b._emscripten_bind_btKinematicCharacterController_canJump_0=b.asm.Er).apply(null,arguments)},Vt=b._emscripten_bind_btKinematicCharacterController_jump_0=function(){return(Vt=b._emscripten_bind_btKinematicCharacterController_jump_0=b.asm.Fr).apply(null,arguments)},Wt=b._emscripten_bind_btKinematicCharacterController_setGravity_1= -function(){return(Wt=b._emscripten_bind_btKinematicCharacterController_setGravity_1=b.asm.Gr).apply(null,arguments)},Xt=b._emscripten_bind_btKinematicCharacterController_getGravity_0=function(){return(Xt=b._emscripten_bind_btKinematicCharacterController_getGravity_0=b.asm.Hr).apply(null,arguments)},Yt=b._emscripten_bind_btKinematicCharacterController_setMaxSlope_1=function(){return(Yt=b._emscripten_bind_btKinematicCharacterController_setMaxSlope_1=b.asm.Ir).apply(null,arguments)},Zt=b._emscripten_bind_btKinematicCharacterController_getMaxSlope_0= -function(){return(Zt=b._emscripten_bind_btKinematicCharacterController_getMaxSlope_0=b.asm.Jr).apply(null,arguments)},$t=b._emscripten_bind_btKinematicCharacterController_getGhostObject_0=function(){return($t=b._emscripten_bind_btKinematicCharacterController_getGhostObject_0=b.asm.Kr).apply(null,arguments)},au=b._emscripten_bind_btKinematicCharacterController_setUseGhostSweepTest_1=function(){return(au=b._emscripten_bind_btKinematicCharacterController_setUseGhostSweepTest_1=b.asm.Lr).apply(null,arguments)}, -bu=b._emscripten_bind_btKinematicCharacterController_onGround_0=function(){return(bu=b._emscripten_bind_btKinematicCharacterController_onGround_0=b.asm.Mr).apply(null,arguments)},cu=b._emscripten_bind_btKinematicCharacterController_setUpInterpolate_1=function(){return(cu=b._emscripten_bind_btKinematicCharacterController_setUpInterpolate_1=b.asm.Nr).apply(null,arguments)},du=b._emscripten_bind_btKinematicCharacterController_updateAction_2=function(){return(du=b._emscripten_bind_btKinematicCharacterController_updateAction_2= -b.asm.Or).apply(null,arguments)},eu=b._emscripten_bind_btKinematicCharacterController___destroy___0=function(){return(eu=b._emscripten_bind_btKinematicCharacterController___destroy___0=b.asm.Pr).apply(null,arguments)},fu=b._emscripten_bind_btSoftBodyArray_size_0=function(){return(fu=b._emscripten_bind_btSoftBodyArray_size_0=b.asm.Qr).apply(null,arguments)},gu=b._emscripten_bind_btSoftBodyArray_at_1=function(){return(gu=b._emscripten_bind_btSoftBodyArray_at_1=b.asm.Rr).apply(null,arguments)},hu=b._emscripten_bind_btSoftBodyArray___destroy___0= -function(){return(hu=b._emscripten_bind_btSoftBodyArray___destroy___0=b.asm.Sr).apply(null,arguments)},iu=b._emscripten_bind_btFaceArray_size_0=function(){return(iu=b._emscripten_bind_btFaceArray_size_0=b.asm.Tr).apply(null,arguments)},ju=b._emscripten_bind_btFaceArray_at_1=function(){return(ju=b._emscripten_bind_btFaceArray_at_1=b.asm.Ur).apply(null,arguments)},ku=b._emscripten_bind_btFaceArray___destroy___0=function(){return(ku=b._emscripten_bind_btFaceArray___destroy___0=b.asm.Vr).apply(null,arguments)}, -lu=b._emscripten_bind_btStaticPlaneShape_btStaticPlaneShape_2=function(){return(lu=b._emscripten_bind_btStaticPlaneShape_btStaticPlaneShape_2=b.asm.Wr).apply(null,arguments)},mu=b._emscripten_bind_btStaticPlaneShape_setLocalScaling_1=function(){return(mu=b._emscripten_bind_btStaticPlaneShape_setLocalScaling_1=b.asm.Xr).apply(null,arguments)},nu=b._emscripten_bind_btStaticPlaneShape_getLocalScaling_0=function(){return(nu=b._emscripten_bind_btStaticPlaneShape_getLocalScaling_0=b.asm.Yr).apply(null, -arguments)},ou=b._emscripten_bind_btStaticPlaneShape_calculateLocalInertia_2=function(){return(ou=b._emscripten_bind_btStaticPlaneShape_calculateLocalInertia_2=b.asm.Zr).apply(null,arguments)},pu=b._emscripten_bind_btStaticPlaneShape___destroy___0=function(){return(pu=b._emscripten_bind_btStaticPlaneShape___destroy___0=b.asm._r).apply(null,arguments)},qu=b._emscripten_bind_btOverlappingPairCache_setInternalGhostPairCallback_1=function(){return(qu=b._emscripten_bind_btOverlappingPairCache_setInternalGhostPairCallback_1= -b.asm.$r).apply(null,arguments)},ru=b._emscripten_bind_btOverlappingPairCache_getNumOverlappingPairs_0=function(){return(ru=b._emscripten_bind_btOverlappingPairCache_getNumOverlappingPairs_0=b.asm.as).apply(null,arguments)},su=b._emscripten_bind_btOverlappingPairCache___destroy___0=function(){return(su=b._emscripten_bind_btOverlappingPairCache___destroy___0=b.asm.bs).apply(null,arguments)},tu=b._emscripten_bind_btIndexedMesh_get_m_numTriangles_0=function(){return(tu=b._emscripten_bind_btIndexedMesh_get_m_numTriangles_0= -b.asm.cs).apply(null,arguments)},uu=b._emscripten_bind_btIndexedMesh_set_m_numTriangles_1=function(){return(uu=b._emscripten_bind_btIndexedMesh_set_m_numTriangles_1=b.asm.ds).apply(null,arguments)},vu=b._emscripten_bind_btIndexedMesh___destroy___0=function(){return(vu=b._emscripten_bind_btIndexedMesh___destroy___0=b.asm.es).apply(null,arguments)},wu=b._emscripten_bind_btSoftRigidDynamicsWorld_btSoftRigidDynamicsWorld_5=function(){return(wu=b._emscripten_bind_btSoftRigidDynamicsWorld_btSoftRigidDynamicsWorld_5= -b.asm.fs).apply(null,arguments)},xu=b._emscripten_bind_btSoftRigidDynamicsWorld_addSoftBody_3=function(){return(xu=b._emscripten_bind_btSoftRigidDynamicsWorld_addSoftBody_3=b.asm.gs).apply(null,arguments)},yu=b._emscripten_bind_btSoftRigidDynamicsWorld_removeSoftBody_1=function(){return(yu=b._emscripten_bind_btSoftRigidDynamicsWorld_removeSoftBody_1=b.asm.hs).apply(null,arguments)},zu=b._emscripten_bind_btSoftRigidDynamicsWorld_removeCollisionObject_1=function(){return(zu=b._emscripten_bind_btSoftRigidDynamicsWorld_removeCollisionObject_1= -b.asm.is).apply(null,arguments)},Au=b._emscripten_bind_btSoftRigidDynamicsWorld_getWorldInfo_0=function(){return(Au=b._emscripten_bind_btSoftRigidDynamicsWorld_getWorldInfo_0=b.asm.js).apply(null,arguments)},Bu=b._emscripten_bind_btSoftRigidDynamicsWorld_getSoftBodyArray_0=function(){return(Bu=b._emscripten_bind_btSoftRigidDynamicsWorld_getSoftBodyArray_0=b.asm.ks).apply(null,arguments)},Cu=b._emscripten_bind_btSoftRigidDynamicsWorld_getDispatcher_0=function(){return(Cu=b._emscripten_bind_btSoftRigidDynamicsWorld_getDispatcher_0= -b.asm.ls).apply(null,arguments)},Du=b._emscripten_bind_btSoftRigidDynamicsWorld_rayTest_3=function(){return(Du=b._emscripten_bind_btSoftRigidDynamicsWorld_rayTest_3=b.asm.ms).apply(null,arguments)},Eu=b._emscripten_bind_btSoftRigidDynamicsWorld_getPairCache_0=function(){return(Eu=b._emscripten_bind_btSoftRigidDynamicsWorld_getPairCache_0=b.asm.ns).apply(null,arguments)},Fu=b._emscripten_bind_btSoftRigidDynamicsWorld_getDispatchInfo_0=function(){return(Fu=b._emscripten_bind_btSoftRigidDynamicsWorld_getDispatchInfo_0= -b.asm.os).apply(null,arguments)},Gu=b._emscripten_bind_btSoftRigidDynamicsWorld_addCollisionObject_1=function(){return(Gu=b._emscripten_bind_btSoftRigidDynamicsWorld_addCollisionObject_1=b.asm.ps).apply(null,arguments)},Hu=b._emscripten_bind_btSoftRigidDynamicsWorld_addCollisionObject_2=function(){return(Hu=b._emscripten_bind_btSoftRigidDynamicsWorld_addCollisionObject_2=b.asm.qs).apply(null,arguments)},Iu=b._emscripten_bind_btSoftRigidDynamicsWorld_addCollisionObject_3=function(){return(Iu=b._emscripten_bind_btSoftRigidDynamicsWorld_addCollisionObject_3= -b.asm.rs).apply(null,arguments)},Ju=b._emscripten_bind_btSoftRigidDynamicsWorld_getBroadphase_0=function(){return(Ju=b._emscripten_bind_btSoftRigidDynamicsWorld_getBroadphase_0=b.asm.ss).apply(null,arguments)},Ku=b._emscripten_bind_btSoftRigidDynamicsWorld_convexSweepTest_5=function(){return(Ku=b._emscripten_bind_btSoftRigidDynamicsWorld_convexSweepTest_5=b.asm.ts).apply(null,arguments)},Lu=b._emscripten_bind_btSoftRigidDynamicsWorld_contactPairTest_3=function(){return(Lu=b._emscripten_bind_btSoftRigidDynamicsWorld_contactPairTest_3= -b.asm.us).apply(null,arguments)},Mu=b._emscripten_bind_btSoftRigidDynamicsWorld_contactTest_2=function(){return(Mu=b._emscripten_bind_btSoftRigidDynamicsWorld_contactTest_2=b.asm.vs).apply(null,arguments)},Nu=b._emscripten_bind_btSoftRigidDynamicsWorld_updateSingleAabb_1=function(){return(Nu=b._emscripten_bind_btSoftRigidDynamicsWorld_updateSingleAabb_1=b.asm.ws).apply(null,arguments)},Ou=b._emscripten_bind_btSoftRigidDynamicsWorld_setDebugDrawer_1=function(){return(Ou=b._emscripten_bind_btSoftRigidDynamicsWorld_setDebugDrawer_1= -b.asm.xs).apply(null,arguments)},Pu=b._emscripten_bind_btSoftRigidDynamicsWorld_getDebugDrawer_0=function(){return(Pu=b._emscripten_bind_btSoftRigidDynamicsWorld_getDebugDrawer_0=b.asm.ys).apply(null,arguments)},Qu=b._emscripten_bind_btSoftRigidDynamicsWorld_debugDrawWorld_0=function(){return(Qu=b._emscripten_bind_btSoftRigidDynamicsWorld_debugDrawWorld_0=b.asm.zs).apply(null,arguments)},Ru=b._emscripten_bind_btSoftRigidDynamicsWorld_debugDrawObject_3=function(){return(Ru=b._emscripten_bind_btSoftRigidDynamicsWorld_debugDrawObject_3= -b.asm.As).apply(null,arguments)},Su=b._emscripten_bind_btSoftRigidDynamicsWorld_setGravity_1=function(){return(Su=b._emscripten_bind_btSoftRigidDynamicsWorld_setGravity_1=b.asm.Bs).apply(null,arguments)},Tu=b._emscripten_bind_btSoftRigidDynamicsWorld_getGravity_0=function(){return(Tu=b._emscripten_bind_btSoftRigidDynamicsWorld_getGravity_0=b.asm.Cs).apply(null,arguments)},Uu=b._emscripten_bind_btSoftRigidDynamicsWorld_addRigidBody_1=function(){return(Uu=b._emscripten_bind_btSoftRigidDynamicsWorld_addRigidBody_1= -b.asm.Ds).apply(null,arguments)},Vu=b._emscripten_bind_btSoftRigidDynamicsWorld_addRigidBody_3=function(){return(Vu=b._emscripten_bind_btSoftRigidDynamicsWorld_addRigidBody_3=b.asm.Es).apply(null,arguments)},Wu=b._emscripten_bind_btSoftRigidDynamicsWorld_removeRigidBody_1=function(){return(Wu=b._emscripten_bind_btSoftRigidDynamicsWorld_removeRigidBody_1=b.asm.Fs).apply(null,arguments)},Xu=b._emscripten_bind_btSoftRigidDynamicsWorld_addConstraint_1=function(){return(Xu=b._emscripten_bind_btSoftRigidDynamicsWorld_addConstraint_1= -b.asm.Gs).apply(null,arguments)},Yu=b._emscripten_bind_btSoftRigidDynamicsWorld_addConstraint_2=function(){return(Yu=b._emscripten_bind_btSoftRigidDynamicsWorld_addConstraint_2=b.asm.Hs).apply(null,arguments)},Zu=b._emscripten_bind_btSoftRigidDynamicsWorld_removeConstraint_1=function(){return(Zu=b._emscripten_bind_btSoftRigidDynamicsWorld_removeConstraint_1=b.asm.Is).apply(null,arguments)},$u=b._emscripten_bind_btSoftRigidDynamicsWorld_stepSimulation_1=function(){return($u=b._emscripten_bind_btSoftRigidDynamicsWorld_stepSimulation_1= -b.asm.Js).apply(null,arguments)},av=b._emscripten_bind_btSoftRigidDynamicsWorld_stepSimulation_2=function(){return(av=b._emscripten_bind_btSoftRigidDynamicsWorld_stepSimulation_2=b.asm.Ks).apply(null,arguments)},bv=b._emscripten_bind_btSoftRigidDynamicsWorld_stepSimulation_3=function(){return(bv=b._emscripten_bind_btSoftRigidDynamicsWorld_stepSimulation_3=b.asm.Ls).apply(null,arguments)},cv=b._emscripten_bind_btSoftRigidDynamicsWorld_setContactAddedCallback_1=function(){return(cv=b._emscripten_bind_btSoftRigidDynamicsWorld_setContactAddedCallback_1= -b.asm.Ms).apply(null,arguments)},dv=b._emscripten_bind_btSoftRigidDynamicsWorld_setContactProcessedCallback_1=function(){return(dv=b._emscripten_bind_btSoftRigidDynamicsWorld_setContactProcessedCallback_1=b.asm.Ns).apply(null,arguments)},ev=b._emscripten_bind_btSoftRigidDynamicsWorld_setContactDestroyedCallback_1=function(){return(ev=b._emscripten_bind_btSoftRigidDynamicsWorld_setContactDestroyedCallback_1=b.asm.Os).apply(null,arguments)},fv=b._emscripten_bind_btSoftRigidDynamicsWorld_addAction_1= -function(){return(fv=b._emscripten_bind_btSoftRigidDynamicsWorld_addAction_1=b.asm.Ps).apply(null,arguments)},gv=b._emscripten_bind_btSoftRigidDynamicsWorld_removeAction_1=function(){return(gv=b._emscripten_bind_btSoftRigidDynamicsWorld_removeAction_1=b.asm.Qs).apply(null,arguments)},hv=b._emscripten_bind_btSoftRigidDynamicsWorld_getSolverInfo_0=function(){return(hv=b._emscripten_bind_btSoftRigidDynamicsWorld_getSolverInfo_0=b.asm.Rs).apply(null,arguments)},iv=b._emscripten_bind_btSoftRigidDynamicsWorld_setInternalTickCallback_1= -function(){return(iv=b._emscripten_bind_btSoftRigidDynamicsWorld_setInternalTickCallback_1=b.asm.Ss).apply(null,arguments)},jv=b._emscripten_bind_btSoftRigidDynamicsWorld_setInternalTickCallback_2=function(){return(jv=b._emscripten_bind_btSoftRigidDynamicsWorld_setInternalTickCallback_2=b.asm.Ts).apply(null,arguments)},kv=b._emscripten_bind_btSoftRigidDynamicsWorld_setInternalTickCallback_3=function(){return(kv=b._emscripten_bind_btSoftRigidDynamicsWorld_setInternalTickCallback_3=b.asm.Us).apply(null, -arguments)},lv=b._emscripten_bind_btSoftRigidDynamicsWorld___destroy___0=function(){return(lv=b._emscripten_bind_btSoftRigidDynamicsWorld___destroy___0=b.asm.Vs).apply(null,arguments)},mv=b._emscripten_bind_btFixedConstraint_btFixedConstraint_4=function(){return(mv=b._emscripten_bind_btFixedConstraint_btFixedConstraint_4=b.asm.Ws).apply(null,arguments)},nv=b._emscripten_bind_btFixedConstraint_enableFeedback_1=function(){return(nv=b._emscripten_bind_btFixedConstraint_enableFeedback_1=b.asm.Xs).apply(null, -arguments)},ov=b._emscripten_bind_btFixedConstraint_getBreakingImpulseThreshold_0=function(){return(ov=b._emscripten_bind_btFixedConstraint_getBreakingImpulseThreshold_0=b.asm.Ys).apply(null,arguments)},pv=b._emscripten_bind_btFixedConstraint_setBreakingImpulseThreshold_1=function(){return(pv=b._emscripten_bind_btFixedConstraint_setBreakingImpulseThreshold_1=b.asm.Zs).apply(null,arguments)},qv=b._emscripten_bind_btFixedConstraint_getParam_2=function(){return(qv=b._emscripten_bind_btFixedConstraint_getParam_2= -b.asm._s).apply(null,arguments)},rv=b._emscripten_bind_btFixedConstraint_setParam_3=function(){return(rv=b._emscripten_bind_btFixedConstraint_setParam_3=b.asm.$s).apply(null,arguments)},sv=b._emscripten_bind_btFixedConstraint___destroy___0=function(){return(sv=b._emscripten_bind_btFixedConstraint___destroy___0=b.asm.at).apply(null,arguments)},tv=b._emscripten_bind_btTransform_btTransform_0=function(){return(tv=b._emscripten_bind_btTransform_btTransform_0=b.asm.bt).apply(null,arguments)},uv=b._emscripten_bind_btTransform_btTransform_2= -function(){return(uv=b._emscripten_bind_btTransform_btTransform_2=b.asm.ct).apply(null,arguments)},vv=b._emscripten_bind_btTransform_setIdentity_0=function(){return(vv=b._emscripten_bind_btTransform_setIdentity_0=b.asm.dt).apply(null,arguments)},wv=b._emscripten_bind_btTransform_setOrigin_1=function(){return(wv=b._emscripten_bind_btTransform_setOrigin_1=b.asm.et).apply(null,arguments)},xv=b._emscripten_bind_btTransform_setRotation_1=function(){return(xv=b._emscripten_bind_btTransform_setRotation_1= -b.asm.ft).apply(null,arguments)},yv=b._emscripten_bind_btTransform_getOrigin_0=function(){return(yv=b._emscripten_bind_btTransform_getOrigin_0=b.asm.gt).apply(null,arguments)},zv=b._emscripten_bind_btTransform_getRotation_0=function(){return(zv=b._emscripten_bind_btTransform_getRotation_0=b.asm.ht).apply(null,arguments)},Av=b._emscripten_bind_btTransform_getBasis_0=function(){return(Av=b._emscripten_bind_btTransform_getBasis_0=b.asm.it).apply(null,arguments)},Bv=b._emscripten_bind_btTransform_setFromOpenGLMatrix_1= -function(){return(Bv=b._emscripten_bind_btTransform_setFromOpenGLMatrix_1=b.asm.jt).apply(null,arguments)},Cv=b._emscripten_bind_btTransform_inverse_0=function(){return(Cv=b._emscripten_bind_btTransform_inverse_0=b.asm.kt).apply(null,arguments)},Dv=b._emscripten_bind_btTransform_op_mul_1=function(){return(Dv=b._emscripten_bind_btTransform_op_mul_1=b.asm.lt).apply(null,arguments)},Ev=b._emscripten_bind_btTransform___destroy___0=function(){return(Ev=b._emscripten_bind_btTransform___destroy___0=b.asm.mt).apply(null, -arguments)},Fv=b._emscripten_bind_ClosestRayResultCallback_ClosestRayResultCallback_2=function(){return(Fv=b._emscripten_bind_ClosestRayResultCallback_ClosestRayResultCallback_2=b.asm.nt).apply(null,arguments)},Gv=b._emscripten_bind_ClosestRayResultCallback_hasHit_0=function(){return(Gv=b._emscripten_bind_ClosestRayResultCallback_hasHit_0=b.asm.ot).apply(null,arguments)},Hv=b._emscripten_bind_ClosestRayResultCallback_get_m_rayFromWorld_0=function(){return(Hv=b._emscripten_bind_ClosestRayResultCallback_get_m_rayFromWorld_0= -b.asm.pt).apply(null,arguments)},Iv=b._emscripten_bind_ClosestRayResultCallback_set_m_rayFromWorld_1=function(){return(Iv=b._emscripten_bind_ClosestRayResultCallback_set_m_rayFromWorld_1=b.asm.qt).apply(null,arguments)},Jv=b._emscripten_bind_ClosestRayResultCallback_get_m_rayToWorld_0=function(){return(Jv=b._emscripten_bind_ClosestRayResultCallback_get_m_rayToWorld_0=b.asm.rt).apply(null,arguments)},Kv=b._emscripten_bind_ClosestRayResultCallback_set_m_rayToWorld_1=function(){return(Kv=b._emscripten_bind_ClosestRayResultCallback_set_m_rayToWorld_1= -b.asm.st).apply(null,arguments)},Lv=b._emscripten_bind_ClosestRayResultCallback_get_m_hitNormalWorld_0=function(){return(Lv=b._emscripten_bind_ClosestRayResultCallback_get_m_hitNormalWorld_0=b.asm.tt).apply(null,arguments)},Mv=b._emscripten_bind_ClosestRayResultCallback_set_m_hitNormalWorld_1=function(){return(Mv=b._emscripten_bind_ClosestRayResultCallback_set_m_hitNormalWorld_1=b.asm.ut).apply(null,arguments)},Nv=b._emscripten_bind_ClosestRayResultCallback_get_m_hitPointWorld_0=function(){return(Nv= -b._emscripten_bind_ClosestRayResultCallback_get_m_hitPointWorld_0=b.asm.vt).apply(null,arguments)},Ov=b._emscripten_bind_ClosestRayResultCallback_set_m_hitPointWorld_1=function(){return(Ov=b._emscripten_bind_ClosestRayResultCallback_set_m_hitPointWorld_1=b.asm.wt).apply(null,arguments)},Pv=b._emscripten_bind_ClosestRayResultCallback_get_m_collisionFilterGroup_0=function(){return(Pv=b._emscripten_bind_ClosestRayResultCallback_get_m_collisionFilterGroup_0=b.asm.xt).apply(null,arguments)},Qv=b._emscripten_bind_ClosestRayResultCallback_set_m_collisionFilterGroup_1= -function(){return(Qv=b._emscripten_bind_ClosestRayResultCallback_set_m_collisionFilterGroup_1=b.asm.yt).apply(null,arguments)},Rv=b._emscripten_bind_ClosestRayResultCallback_get_m_collisionFilterMask_0=function(){return(Rv=b._emscripten_bind_ClosestRayResultCallback_get_m_collisionFilterMask_0=b.asm.zt).apply(null,arguments)},Sv=b._emscripten_bind_ClosestRayResultCallback_set_m_collisionFilterMask_1=function(){return(Sv=b._emscripten_bind_ClosestRayResultCallback_set_m_collisionFilterMask_1=b.asm.At).apply(null, -arguments)},Tv=b._emscripten_bind_ClosestRayResultCallback_get_m_closestHitFraction_0=function(){return(Tv=b._emscripten_bind_ClosestRayResultCallback_get_m_closestHitFraction_0=b.asm.Bt).apply(null,arguments)},Uv=b._emscripten_bind_ClosestRayResultCallback_set_m_closestHitFraction_1=function(){return(Uv=b._emscripten_bind_ClosestRayResultCallback_set_m_closestHitFraction_1=b.asm.Ct).apply(null,arguments)},Vv=b._emscripten_bind_ClosestRayResultCallback_get_m_collisionObject_0=function(){return(Vv= -b._emscripten_bind_ClosestRayResultCallback_get_m_collisionObject_0=b.asm.Dt).apply(null,arguments)},Wv=b._emscripten_bind_ClosestRayResultCallback_set_m_collisionObject_1=function(){return(Wv=b._emscripten_bind_ClosestRayResultCallback_set_m_collisionObject_1=b.asm.Et).apply(null,arguments)},Xv=b._emscripten_bind_ClosestRayResultCallback___destroy___0=function(){return(Xv=b._emscripten_bind_ClosestRayResultCallback___destroy___0=b.asm.Ft).apply(null,arguments)},Yv=b._emscripten_bind_btSoftBodyRigidBodyCollisionConfiguration_btSoftBodyRigidBodyCollisionConfiguration_0= -function(){return(Yv=b._emscripten_bind_btSoftBodyRigidBodyCollisionConfiguration_btSoftBodyRigidBodyCollisionConfiguration_0=b.asm.Gt).apply(null,arguments)},Zv=b._emscripten_bind_btSoftBodyRigidBodyCollisionConfiguration_btSoftBodyRigidBodyCollisionConfiguration_1=function(){return(Zv=b._emscripten_bind_btSoftBodyRigidBodyCollisionConfiguration_btSoftBodyRigidBodyCollisionConfiguration_1=b.asm.Ht).apply(null,arguments)},$v=b._emscripten_bind_btSoftBodyRigidBodyCollisionConfiguration___destroy___0= -function(){return($v=b._emscripten_bind_btSoftBodyRigidBodyCollisionConfiguration___destroy___0=b.asm.It).apply(null,arguments)},aw=b._emscripten_bind_ConcreteContactResultCallback_ConcreteContactResultCallback_0=function(){return(aw=b._emscripten_bind_ConcreteContactResultCallback_ConcreteContactResultCallback_0=b.asm.Jt).apply(null,arguments)},bw=b._emscripten_bind_ConcreteContactResultCallback_addSingleResult_7=function(){return(bw=b._emscripten_bind_ConcreteContactResultCallback_addSingleResult_7= -b.asm.Kt).apply(null,arguments)},cw=b._emscripten_bind_ConcreteContactResultCallback___destroy___0=function(){return(cw=b._emscripten_bind_ConcreteContactResultCallback___destroy___0=b.asm.Lt).apply(null,arguments)},dw=b._emscripten_bind_btBvhTriangleMeshShape_btBvhTriangleMeshShape_2=function(){return(dw=b._emscripten_bind_btBvhTriangleMeshShape_btBvhTriangleMeshShape_2=b.asm.Mt).apply(null,arguments)},ew=b._emscripten_bind_btBvhTriangleMeshShape_btBvhTriangleMeshShape_3=function(){return(ew=b._emscripten_bind_btBvhTriangleMeshShape_btBvhTriangleMeshShape_3= -b.asm.Nt).apply(null,arguments)},fw=b._emscripten_bind_btBvhTriangleMeshShape_setLocalScaling_1=function(){return(fw=b._emscripten_bind_btBvhTriangleMeshShape_setLocalScaling_1=b.asm.Ot).apply(null,arguments)},gw=b._emscripten_bind_btBvhTriangleMeshShape_getLocalScaling_0=function(){return(gw=b._emscripten_bind_btBvhTriangleMeshShape_getLocalScaling_0=b.asm.Pt).apply(null,arguments)},hw=b._emscripten_bind_btBvhTriangleMeshShape_calculateLocalInertia_2=function(){return(hw=b._emscripten_bind_btBvhTriangleMeshShape_calculateLocalInertia_2= -b.asm.Qt).apply(null,arguments)},iw=b._emscripten_bind_btBvhTriangleMeshShape___destroy___0=function(){return(iw=b._emscripten_bind_btBvhTriangleMeshShape___destroy___0=b.asm.Rt).apply(null,arguments)},jw=b._emscripten_bind_btConstCollisionObjectArray_size_0=function(){return(jw=b._emscripten_bind_btConstCollisionObjectArray_size_0=b.asm.St).apply(null,arguments)},kw=b._emscripten_bind_btConstCollisionObjectArray_at_1=function(){return(kw=b._emscripten_bind_btConstCollisionObjectArray_at_1=b.asm.Tt).apply(null, -arguments)},lw=b._emscripten_bind_btConstCollisionObjectArray___destroy___0=function(){return(lw=b._emscripten_bind_btConstCollisionObjectArray___destroy___0=b.asm.Ut).apply(null,arguments)},mw=b._emscripten_bind_btSliderConstraint_btSliderConstraint_3=function(){return(mw=b._emscripten_bind_btSliderConstraint_btSliderConstraint_3=b.asm.Vt).apply(null,arguments)},nw=b._emscripten_bind_btSliderConstraint_btSliderConstraint_5=function(){return(nw=b._emscripten_bind_btSliderConstraint_btSliderConstraint_5= -b.asm.Wt).apply(null,arguments)},ow=b._emscripten_bind_btSliderConstraint_setLowerLinLimit_1=function(){return(ow=b._emscripten_bind_btSliderConstraint_setLowerLinLimit_1=b.asm.Xt).apply(null,arguments)},pw=b._emscripten_bind_btSliderConstraint_setUpperLinLimit_1=function(){return(pw=b._emscripten_bind_btSliderConstraint_setUpperLinLimit_1=b.asm.Yt).apply(null,arguments)},qw=b._emscripten_bind_btSliderConstraint_setLowerAngLimit_1=function(){return(qw=b._emscripten_bind_btSliderConstraint_setLowerAngLimit_1= -b.asm.Zt).apply(null,arguments)},rw=b._emscripten_bind_btSliderConstraint_setUpperAngLimit_1=function(){return(rw=b._emscripten_bind_btSliderConstraint_setUpperAngLimit_1=b.asm._t).apply(null,arguments)},sw=b._emscripten_bind_btSliderConstraint_enableFeedback_1=function(){return(sw=b._emscripten_bind_btSliderConstraint_enableFeedback_1=b.asm.$t).apply(null,arguments)},tw=b._emscripten_bind_btSliderConstraint_getBreakingImpulseThreshold_0=function(){return(tw=b._emscripten_bind_btSliderConstraint_getBreakingImpulseThreshold_0= -b.asm.au).apply(null,arguments)},uw=b._emscripten_bind_btSliderConstraint_setBreakingImpulseThreshold_1=function(){return(uw=b._emscripten_bind_btSliderConstraint_setBreakingImpulseThreshold_1=b.asm.bu).apply(null,arguments)},vw=b._emscripten_bind_btSliderConstraint_getParam_2=function(){return(vw=b._emscripten_bind_btSliderConstraint_getParam_2=b.asm.cu).apply(null,arguments)},ww=b._emscripten_bind_btSliderConstraint_setParam_3=function(){return(ww=b._emscripten_bind_btSliderConstraint_setParam_3= -b.asm.du).apply(null,arguments)},xw=b._emscripten_bind_btSliderConstraint___destroy___0=function(){return(xw=b._emscripten_bind_btSliderConstraint___destroy___0=b.asm.eu).apply(null,arguments)},yw=b._emscripten_bind_btPairCachingGhostObject_btPairCachingGhostObject_0=function(){return(yw=b._emscripten_bind_btPairCachingGhostObject_btPairCachingGhostObject_0=b.asm.fu).apply(null,arguments)},zw=b._emscripten_bind_btPairCachingGhostObject_setAnisotropicFriction_2=function(){return(zw=b._emscripten_bind_btPairCachingGhostObject_setAnisotropicFriction_2= -b.asm.gu).apply(null,arguments)},Aw=b._emscripten_bind_btPairCachingGhostObject_getCollisionShape_0=function(){return(Aw=b._emscripten_bind_btPairCachingGhostObject_getCollisionShape_0=b.asm.hu).apply(null,arguments)},Bw=b._emscripten_bind_btPairCachingGhostObject_setContactProcessingThreshold_1=function(){return(Bw=b._emscripten_bind_btPairCachingGhostObject_setContactProcessingThreshold_1=b.asm.iu).apply(null,arguments)},Cw=b._emscripten_bind_btPairCachingGhostObject_setActivationState_1=function(){return(Cw= -b._emscripten_bind_btPairCachingGhostObject_setActivationState_1=b.asm.ju).apply(null,arguments)},Dw=b._emscripten_bind_btPairCachingGhostObject_forceActivationState_1=function(){return(Dw=b._emscripten_bind_btPairCachingGhostObject_forceActivationState_1=b.asm.ku).apply(null,arguments)},Ew=b._emscripten_bind_btPairCachingGhostObject_activate_0=function(){return(Ew=b._emscripten_bind_btPairCachingGhostObject_activate_0=b.asm.lu).apply(null,arguments)},Fw=b._emscripten_bind_btPairCachingGhostObject_activate_1= -function(){return(Fw=b._emscripten_bind_btPairCachingGhostObject_activate_1=b.asm.mu).apply(null,arguments)},Gw=b._emscripten_bind_btPairCachingGhostObject_isActive_0=function(){return(Gw=b._emscripten_bind_btPairCachingGhostObject_isActive_0=b.asm.nu).apply(null,arguments)},Hw=b._emscripten_bind_btPairCachingGhostObject_isKinematicObject_0=function(){return(Hw=b._emscripten_bind_btPairCachingGhostObject_isKinematicObject_0=b.asm.ou).apply(null,arguments)},Iw=b._emscripten_bind_btPairCachingGhostObject_isStaticObject_0= -function(){return(Iw=b._emscripten_bind_btPairCachingGhostObject_isStaticObject_0=b.asm.pu).apply(null,arguments)},Jw=b._emscripten_bind_btPairCachingGhostObject_isStaticOrKinematicObject_0=function(){return(Jw=b._emscripten_bind_btPairCachingGhostObject_isStaticOrKinematicObject_0=b.asm.qu).apply(null,arguments)},Kw=b._emscripten_bind_btPairCachingGhostObject_getRestitution_0=function(){return(Kw=b._emscripten_bind_btPairCachingGhostObject_getRestitution_0=b.asm.ru).apply(null,arguments)},Lw=b._emscripten_bind_btPairCachingGhostObject_getFriction_0= -function(){return(Lw=b._emscripten_bind_btPairCachingGhostObject_getFriction_0=b.asm.su).apply(null,arguments)},Mw=b._emscripten_bind_btPairCachingGhostObject_getRollingFriction_0=function(){return(Mw=b._emscripten_bind_btPairCachingGhostObject_getRollingFriction_0=b.asm.tu).apply(null,arguments)},Nw=b._emscripten_bind_btPairCachingGhostObject_setRestitution_1=function(){return(Nw=b._emscripten_bind_btPairCachingGhostObject_setRestitution_1=b.asm.uu).apply(null,arguments)},Ow=b._emscripten_bind_btPairCachingGhostObject_setFriction_1= -function(){return(Ow=b._emscripten_bind_btPairCachingGhostObject_setFriction_1=b.asm.vu).apply(null,arguments)},Pw=b._emscripten_bind_btPairCachingGhostObject_setRollingFriction_1=function(){return(Pw=b._emscripten_bind_btPairCachingGhostObject_setRollingFriction_1=b.asm.wu).apply(null,arguments)},Qw=b._emscripten_bind_btPairCachingGhostObject_getWorldTransform_0=function(){return(Qw=b._emscripten_bind_btPairCachingGhostObject_getWorldTransform_0=b.asm.xu).apply(null,arguments)},Rw=b._emscripten_bind_btPairCachingGhostObject_getCollisionFlags_0= -function(){return(Rw=b._emscripten_bind_btPairCachingGhostObject_getCollisionFlags_0=b.asm.yu).apply(null,arguments)},Sw=b._emscripten_bind_btPairCachingGhostObject_setCollisionFlags_1=function(){return(Sw=b._emscripten_bind_btPairCachingGhostObject_setCollisionFlags_1=b.asm.zu).apply(null,arguments)},Tw=b._emscripten_bind_btPairCachingGhostObject_setWorldTransform_1=function(){return(Tw=b._emscripten_bind_btPairCachingGhostObject_setWorldTransform_1=b.asm.Au).apply(null,arguments)},Uw=b._emscripten_bind_btPairCachingGhostObject_setCollisionShape_1= -function(){return(Uw=b._emscripten_bind_btPairCachingGhostObject_setCollisionShape_1=b.asm.Bu).apply(null,arguments)},Vw=b._emscripten_bind_btPairCachingGhostObject_setCcdMotionThreshold_1=function(){return(Vw=b._emscripten_bind_btPairCachingGhostObject_setCcdMotionThreshold_1=b.asm.Cu).apply(null,arguments)},Ww=b._emscripten_bind_btPairCachingGhostObject_setCcdSweptSphereRadius_1=function(){return(Ww=b._emscripten_bind_btPairCachingGhostObject_setCcdSweptSphereRadius_1=b.asm.Du).apply(null,arguments)}, -Xw=b._emscripten_bind_btPairCachingGhostObject_getUserIndex_0=function(){return(Xw=b._emscripten_bind_btPairCachingGhostObject_getUserIndex_0=b.asm.Eu).apply(null,arguments)},Yw=b._emscripten_bind_btPairCachingGhostObject_setUserIndex_1=function(){return(Yw=b._emscripten_bind_btPairCachingGhostObject_setUserIndex_1=b.asm.Fu).apply(null,arguments)},Zw=b._emscripten_bind_btPairCachingGhostObject_getUserPointer_0=function(){return(Zw=b._emscripten_bind_btPairCachingGhostObject_getUserPointer_0=b.asm.Gu).apply(null, -arguments)},$w=b._emscripten_bind_btPairCachingGhostObject_setUserPointer_1=function(){return($w=b._emscripten_bind_btPairCachingGhostObject_setUserPointer_1=b.asm.Hu).apply(null,arguments)},ax=b._emscripten_bind_btPairCachingGhostObject_getBroadphaseHandle_0=function(){return(ax=b._emscripten_bind_btPairCachingGhostObject_getBroadphaseHandle_0=b.asm.Iu).apply(null,arguments)},bx=b._emscripten_bind_btPairCachingGhostObject_getNumOverlappingObjects_0=function(){return(bx=b._emscripten_bind_btPairCachingGhostObject_getNumOverlappingObjects_0= -b.asm.Ju).apply(null,arguments)},cx=b._emscripten_bind_btPairCachingGhostObject_getOverlappingObject_1=function(){return(cx=b._emscripten_bind_btPairCachingGhostObject_getOverlappingObject_1=b.asm.Ku).apply(null,arguments)},dx=b._emscripten_bind_btPairCachingGhostObject___destroy___0=function(){return(dx=b._emscripten_bind_btPairCachingGhostObject___destroy___0=b.asm.Lu).apply(null,arguments)},ex=b._emscripten_bind_btManifoldPoint_getPositionWorldOnA_0=function(){return(ex=b._emscripten_bind_btManifoldPoint_getPositionWorldOnA_0= -b.asm.Mu).apply(null,arguments)},fx=b._emscripten_bind_btManifoldPoint_getPositionWorldOnB_0=function(){return(fx=b._emscripten_bind_btManifoldPoint_getPositionWorldOnB_0=b.asm.Nu).apply(null,arguments)},gx=b._emscripten_bind_btManifoldPoint_getAppliedImpulse_0=function(){return(gx=b._emscripten_bind_btManifoldPoint_getAppliedImpulse_0=b.asm.Ou).apply(null,arguments)},hx=b._emscripten_bind_btManifoldPoint_getDistance_0=function(){return(hx=b._emscripten_bind_btManifoldPoint_getDistance_0=b.asm.Pu).apply(null, -arguments)},ix=b._emscripten_bind_btManifoldPoint_get_m_localPointA_0=function(){return(ix=b._emscripten_bind_btManifoldPoint_get_m_localPointA_0=b.asm.Qu).apply(null,arguments)},jx=b._emscripten_bind_btManifoldPoint_set_m_localPointA_1=function(){return(jx=b._emscripten_bind_btManifoldPoint_set_m_localPointA_1=b.asm.Ru).apply(null,arguments)},kx=b._emscripten_bind_btManifoldPoint_get_m_localPointB_0=function(){return(kx=b._emscripten_bind_btManifoldPoint_get_m_localPointB_0=b.asm.Su).apply(null, -arguments)},lx=b._emscripten_bind_btManifoldPoint_set_m_localPointB_1=function(){return(lx=b._emscripten_bind_btManifoldPoint_set_m_localPointB_1=b.asm.Tu).apply(null,arguments)},mx=b._emscripten_bind_btManifoldPoint_get_m_positionWorldOnB_0=function(){return(mx=b._emscripten_bind_btManifoldPoint_get_m_positionWorldOnB_0=b.asm.Uu).apply(null,arguments)},nx=b._emscripten_bind_btManifoldPoint_set_m_positionWorldOnB_1=function(){return(nx=b._emscripten_bind_btManifoldPoint_set_m_positionWorldOnB_1=b.asm.Vu).apply(null, -arguments)},ox=b._emscripten_bind_btManifoldPoint_get_m_positionWorldOnA_0=function(){return(ox=b._emscripten_bind_btManifoldPoint_get_m_positionWorldOnA_0=b.asm.Wu).apply(null,arguments)},px=b._emscripten_bind_btManifoldPoint_set_m_positionWorldOnA_1=function(){return(px=b._emscripten_bind_btManifoldPoint_set_m_positionWorldOnA_1=b.asm.Xu).apply(null,arguments)},qx=b._emscripten_bind_btManifoldPoint_get_m_normalWorldOnB_0=function(){return(qx=b._emscripten_bind_btManifoldPoint_get_m_normalWorldOnB_0= -b.asm.Yu).apply(null,arguments)},rx=b._emscripten_bind_btManifoldPoint_set_m_normalWorldOnB_1=function(){return(rx=b._emscripten_bind_btManifoldPoint_set_m_normalWorldOnB_1=b.asm.Zu).apply(null,arguments)},sx=b._emscripten_bind_btManifoldPoint_get_m_userPersistentData_0=function(){return(sx=b._emscripten_bind_btManifoldPoint_get_m_userPersistentData_0=b.asm._u).apply(null,arguments)},tx=b._emscripten_bind_btManifoldPoint_set_m_userPersistentData_1=function(){return(tx=b._emscripten_bind_btManifoldPoint_set_m_userPersistentData_1= -b.asm.$u).apply(null,arguments)},ux=b._emscripten_bind_btManifoldPoint___destroy___0=function(){return(ux=b._emscripten_bind_btManifoldPoint___destroy___0=b.asm.av).apply(null,arguments)},vx=b._emscripten_bind_btPoint2PointConstraint_btPoint2PointConstraint_2=function(){return(vx=b._emscripten_bind_btPoint2PointConstraint_btPoint2PointConstraint_2=b.asm.bv).apply(null,arguments)},wx=b._emscripten_bind_btPoint2PointConstraint_btPoint2PointConstraint_4=function(){return(wx=b._emscripten_bind_btPoint2PointConstraint_btPoint2PointConstraint_4= -b.asm.cv).apply(null,arguments)},xx=b._emscripten_bind_btPoint2PointConstraint_setPivotA_1=function(){return(xx=b._emscripten_bind_btPoint2PointConstraint_setPivotA_1=b.asm.dv).apply(null,arguments)},yx=b._emscripten_bind_btPoint2PointConstraint_setPivotB_1=function(){return(yx=b._emscripten_bind_btPoint2PointConstraint_setPivotB_1=b.asm.ev).apply(null,arguments)},zx=b._emscripten_bind_btPoint2PointConstraint_getPivotInA_0=function(){return(zx=b._emscripten_bind_btPoint2PointConstraint_getPivotInA_0= -b.asm.fv).apply(null,arguments)},Ax=b._emscripten_bind_btPoint2PointConstraint_getPivotInB_0=function(){return(Ax=b._emscripten_bind_btPoint2PointConstraint_getPivotInB_0=b.asm.gv).apply(null,arguments)},Bx=b._emscripten_bind_btPoint2PointConstraint_enableFeedback_1=function(){return(Bx=b._emscripten_bind_btPoint2PointConstraint_enableFeedback_1=b.asm.hv).apply(null,arguments)},Cx=b._emscripten_bind_btPoint2PointConstraint_getBreakingImpulseThreshold_0=function(){return(Cx=b._emscripten_bind_btPoint2PointConstraint_getBreakingImpulseThreshold_0= -b.asm.iv).apply(null,arguments)},Dx=b._emscripten_bind_btPoint2PointConstraint_setBreakingImpulseThreshold_1=function(){return(Dx=b._emscripten_bind_btPoint2PointConstraint_setBreakingImpulseThreshold_1=b.asm.jv).apply(null,arguments)},Ex=b._emscripten_bind_btPoint2PointConstraint_getParam_2=function(){return(Ex=b._emscripten_bind_btPoint2PointConstraint_getParam_2=b.asm.kv).apply(null,arguments)},Fx=b._emscripten_bind_btPoint2PointConstraint_setParam_3=function(){return(Fx=b._emscripten_bind_btPoint2PointConstraint_setParam_3= -b.asm.lv).apply(null,arguments)},Gx=b._emscripten_bind_btPoint2PointConstraint_get_m_setting_0=function(){return(Gx=b._emscripten_bind_btPoint2PointConstraint_get_m_setting_0=b.asm.mv).apply(null,arguments)},Hx=b._emscripten_bind_btPoint2PointConstraint_set_m_setting_1=function(){return(Hx=b._emscripten_bind_btPoint2PointConstraint_set_m_setting_1=b.asm.nv).apply(null,arguments)},Ix=b._emscripten_bind_btPoint2PointConstraint___destroy___0=function(){return(Ix=b._emscripten_bind_btPoint2PointConstraint___destroy___0= -b.asm.ov).apply(null,arguments)},Jx=b._emscripten_bind_btSoftBodyHelpers_btSoftBodyHelpers_0=function(){return(Jx=b._emscripten_bind_btSoftBodyHelpers_btSoftBodyHelpers_0=b.asm.pv).apply(null,arguments)},Kx=b._emscripten_bind_btSoftBodyHelpers_CreateRope_5=function(){return(Kx=b._emscripten_bind_btSoftBodyHelpers_CreateRope_5=b.asm.qv).apply(null,arguments)},Lx=b._emscripten_bind_btSoftBodyHelpers_CreatePatch_9=function(){return(Lx=b._emscripten_bind_btSoftBodyHelpers_CreatePatch_9=b.asm.rv).apply(null, -arguments)},Mx=b._emscripten_bind_btSoftBodyHelpers_CreatePatchUV_10=function(){return(Mx=b._emscripten_bind_btSoftBodyHelpers_CreatePatchUV_10=b.asm.sv).apply(null,arguments)},Nx=b._emscripten_bind_btSoftBodyHelpers_CreateEllipsoid_4=function(){return(Nx=b._emscripten_bind_btSoftBodyHelpers_CreateEllipsoid_4=b.asm.tv).apply(null,arguments)},Ox=b._emscripten_bind_btSoftBodyHelpers_CreateFromTriMesh_5=function(){return(Ox=b._emscripten_bind_btSoftBodyHelpers_CreateFromTriMesh_5=b.asm.uv).apply(null, -arguments)},Px=b._emscripten_bind_btSoftBodyHelpers_CreateFromConvexHull_4=function(){return(Px=b._emscripten_bind_btSoftBodyHelpers_CreateFromConvexHull_4=b.asm.vv).apply(null,arguments)},Qx=b._emscripten_bind_btSoftBodyHelpers___destroy___0=function(){return(Qx=b._emscripten_bind_btSoftBodyHelpers___destroy___0=b.asm.wv).apply(null,arguments)},Rx=b._emscripten_bind_btBroadphaseProxy_get_m_collisionFilterGroup_0=function(){return(Rx=b._emscripten_bind_btBroadphaseProxy_get_m_collisionFilterGroup_0= -b.asm.xv).apply(null,arguments)},Sx=b._emscripten_bind_btBroadphaseProxy_set_m_collisionFilterGroup_1=function(){return(Sx=b._emscripten_bind_btBroadphaseProxy_set_m_collisionFilterGroup_1=b.asm.yv).apply(null,arguments)},Tx=b._emscripten_bind_btBroadphaseProxy_get_m_collisionFilterMask_0=function(){return(Tx=b._emscripten_bind_btBroadphaseProxy_get_m_collisionFilterMask_0=b.asm.zv).apply(null,arguments)},Ux=b._emscripten_bind_btBroadphaseProxy_set_m_collisionFilterMask_1=function(){return(Ux=b._emscripten_bind_btBroadphaseProxy_set_m_collisionFilterMask_1= -b.asm.Av).apply(null,arguments)},Vx=b._emscripten_bind_btBroadphaseProxy___destroy___0=function(){return(Vx=b._emscripten_bind_btBroadphaseProxy___destroy___0=b.asm.Bv).apply(null,arguments)},Wx=b._emscripten_bind_tNodeArray_size_0=function(){return(Wx=b._emscripten_bind_tNodeArray_size_0=b.asm.Cv).apply(null,arguments)},Xx=b._emscripten_bind_tNodeArray_at_1=function(){return(Xx=b._emscripten_bind_tNodeArray_at_1=b.asm.Dv).apply(null,arguments)},Yx=b._emscripten_bind_tNodeArray___destroy___0=function(){return(Yx= -b._emscripten_bind_tNodeArray___destroy___0=b.asm.Ev).apply(null,arguments)},Zx=b._emscripten_bind_btBoxShape_btBoxShape_1=function(){return(Zx=b._emscripten_bind_btBoxShape_btBoxShape_1=b.asm.Fv).apply(null,arguments)},$x=b._emscripten_bind_btBoxShape_setMargin_1=function(){return($x=b._emscripten_bind_btBoxShape_setMargin_1=b.asm.Gv).apply(null,arguments)},ay=b._emscripten_bind_btBoxShape_getMargin_0=function(){return(ay=b._emscripten_bind_btBoxShape_getMargin_0=b.asm.Hv).apply(null,arguments)}, -by=b._emscripten_bind_btBoxShape_setLocalScaling_1=function(){return(by=b._emscripten_bind_btBoxShape_setLocalScaling_1=b.asm.Iv).apply(null,arguments)},cy=b._emscripten_bind_btBoxShape_getLocalScaling_0=function(){return(cy=b._emscripten_bind_btBoxShape_getLocalScaling_0=b.asm.Jv).apply(null,arguments)},dy=b._emscripten_bind_btBoxShape_calculateLocalInertia_2=function(){return(dy=b._emscripten_bind_btBoxShape_calculateLocalInertia_2=b.asm.Kv).apply(null,arguments)},ey=b._emscripten_bind_btBoxShape___destroy___0= -function(){return(ey=b._emscripten_bind_btBoxShape___destroy___0=b.asm.Lv).apply(null,arguments)},fy=b._emscripten_bind_btFace_get_m_indices_0=function(){return(fy=b._emscripten_bind_btFace_get_m_indices_0=b.asm.Mv).apply(null,arguments)},gy=b._emscripten_bind_btFace_set_m_indices_1=function(){return(gy=b._emscripten_bind_btFace_set_m_indices_1=b.asm.Nv).apply(null,arguments)},hy=b._emscripten_bind_btFace_get_m_plane_1=function(){return(hy=b._emscripten_bind_btFace_get_m_plane_1=b.asm.Ov).apply(null, -arguments)},iy=b._emscripten_bind_btFace_set_m_plane_2=function(){return(iy=b._emscripten_bind_btFace_set_m_plane_2=b.asm.Pv).apply(null,arguments)},jy=b._emscripten_bind_btFace___destroy___0=function(){return(jy=b._emscripten_bind_btFace___destroy___0=b.asm.Qv).apply(null,arguments)},ky=b._emscripten_bind_DebugDrawer_DebugDrawer_0=function(){return(ky=b._emscripten_bind_DebugDrawer_DebugDrawer_0=b.asm.Rv).apply(null,arguments)},ly=b._emscripten_bind_DebugDrawer_drawLine_3=function(){return(ly=b._emscripten_bind_DebugDrawer_drawLine_3= -b.asm.Sv).apply(null,arguments)},my=b._emscripten_bind_DebugDrawer_drawContactPoint_5=function(){return(my=b._emscripten_bind_DebugDrawer_drawContactPoint_5=b.asm.Tv).apply(null,arguments)},ny=b._emscripten_bind_DebugDrawer_reportErrorWarning_1=function(){return(ny=b._emscripten_bind_DebugDrawer_reportErrorWarning_1=b.asm.Uv).apply(null,arguments)},oy=b._emscripten_bind_DebugDrawer_draw3dText_2=function(){return(oy=b._emscripten_bind_DebugDrawer_draw3dText_2=b.asm.Vv).apply(null,arguments)},py=b._emscripten_bind_DebugDrawer_setDebugMode_1= -function(){return(py=b._emscripten_bind_DebugDrawer_setDebugMode_1=b.asm.Wv).apply(null,arguments)},qy=b._emscripten_bind_DebugDrawer_getDebugMode_0=function(){return(qy=b._emscripten_bind_DebugDrawer_getDebugMode_0=b.asm.Xv).apply(null,arguments)},ry=b._emscripten_bind_DebugDrawer___destroy___0=function(){return(ry=b._emscripten_bind_DebugDrawer___destroy___0=b.asm.Yv).apply(null,arguments)},sy=b._emscripten_bind_btCapsuleShapeX_btCapsuleShapeX_2=function(){return(sy=b._emscripten_bind_btCapsuleShapeX_btCapsuleShapeX_2= -b.asm.Zv).apply(null,arguments)},ty=b._emscripten_bind_btCapsuleShapeX_setMargin_1=function(){return(ty=b._emscripten_bind_btCapsuleShapeX_setMargin_1=b.asm._v).apply(null,arguments)},uy=b._emscripten_bind_btCapsuleShapeX_getMargin_0=function(){return(uy=b._emscripten_bind_btCapsuleShapeX_getMargin_0=b.asm.$v).apply(null,arguments)},vy=b._emscripten_bind_btCapsuleShapeX_getUpAxis_0=function(){return(vy=b._emscripten_bind_btCapsuleShapeX_getUpAxis_0=b.asm.aw).apply(null,arguments)},wy=b._emscripten_bind_btCapsuleShapeX_getRadius_0= -function(){return(wy=b._emscripten_bind_btCapsuleShapeX_getRadius_0=b.asm.bw).apply(null,arguments)},xy=b._emscripten_bind_btCapsuleShapeX_getHalfHeight_0=function(){return(xy=b._emscripten_bind_btCapsuleShapeX_getHalfHeight_0=b.asm.cw).apply(null,arguments)},yy=b._emscripten_bind_btCapsuleShapeX_setLocalScaling_1=function(){return(yy=b._emscripten_bind_btCapsuleShapeX_setLocalScaling_1=b.asm.dw).apply(null,arguments)},zy=b._emscripten_bind_btCapsuleShapeX_getLocalScaling_0=function(){return(zy=b._emscripten_bind_btCapsuleShapeX_getLocalScaling_0= -b.asm.ew).apply(null,arguments)},Ay=b._emscripten_bind_btCapsuleShapeX_calculateLocalInertia_2=function(){return(Ay=b._emscripten_bind_btCapsuleShapeX_calculateLocalInertia_2=b.asm.fw).apply(null,arguments)},By=b._emscripten_bind_btCapsuleShapeX___destroy___0=function(){return(By=b._emscripten_bind_btCapsuleShapeX___destroy___0=b.asm.gw).apply(null,arguments)},Cy=b._emscripten_bind_btQuaternion_btQuaternion_4=function(){return(Cy=b._emscripten_bind_btQuaternion_btQuaternion_4=b.asm.hw).apply(null, -arguments)},Dy=b._emscripten_bind_btQuaternion_setValue_4=function(){return(Dy=b._emscripten_bind_btQuaternion_setValue_4=b.asm.iw).apply(null,arguments)},Ey=b._emscripten_bind_btQuaternion_setEulerZYX_3=function(){return(Ey=b._emscripten_bind_btQuaternion_setEulerZYX_3=b.asm.jw).apply(null,arguments)},Fy=b._emscripten_bind_btQuaternion_setRotation_2=function(){return(Fy=b._emscripten_bind_btQuaternion_setRotation_2=b.asm.kw).apply(null,arguments)},Gy=b._emscripten_bind_btQuaternion_normalize_0=function(){return(Gy= -b._emscripten_bind_btQuaternion_normalize_0=b.asm.lw).apply(null,arguments)},Hy=b._emscripten_bind_btQuaternion_length2_0=function(){return(Hy=b._emscripten_bind_btQuaternion_length2_0=b.asm.mw).apply(null,arguments)},Iy=b._emscripten_bind_btQuaternion_length_0=function(){return(Iy=b._emscripten_bind_btQuaternion_length_0=b.asm.nw).apply(null,arguments)},Jy=b._emscripten_bind_btQuaternion_dot_1=function(){return(Jy=b._emscripten_bind_btQuaternion_dot_1=b.asm.ow).apply(null,arguments)},Ky=b._emscripten_bind_btQuaternion_normalized_0= -function(){return(Ky=b._emscripten_bind_btQuaternion_normalized_0=b.asm.pw).apply(null,arguments)},Ly=b._emscripten_bind_btQuaternion_getAxis_0=function(){return(Ly=b._emscripten_bind_btQuaternion_getAxis_0=b.asm.qw).apply(null,arguments)},My=b._emscripten_bind_btQuaternion_inverse_0=function(){return(My=b._emscripten_bind_btQuaternion_inverse_0=b.asm.rw).apply(null,arguments)},Ny=b._emscripten_bind_btQuaternion_getAngle_0=function(){return(Ny=b._emscripten_bind_btQuaternion_getAngle_0=b.asm.sw).apply(null, -arguments)},Oy=b._emscripten_bind_btQuaternion_getAngleShortestPath_0=function(){return(Oy=b._emscripten_bind_btQuaternion_getAngleShortestPath_0=b.asm.tw).apply(null,arguments)},Py=b._emscripten_bind_btQuaternion_angle_1=function(){return(Py=b._emscripten_bind_btQuaternion_angle_1=b.asm.uw).apply(null,arguments)},Qy=b._emscripten_bind_btQuaternion_angleShortestPath_1=function(){return(Qy=b._emscripten_bind_btQuaternion_angleShortestPath_1=b.asm.vw).apply(null,arguments)},Ry=b._emscripten_bind_btQuaternion_op_add_1= -function(){return(Ry=b._emscripten_bind_btQuaternion_op_add_1=b.asm.ww).apply(null,arguments)},Sy=b._emscripten_bind_btQuaternion_op_sub_1=function(){return(Sy=b._emscripten_bind_btQuaternion_op_sub_1=b.asm.xw).apply(null,arguments)},Ty=b._emscripten_bind_btQuaternion_op_mul_1=function(){return(Ty=b._emscripten_bind_btQuaternion_op_mul_1=b.asm.yw).apply(null,arguments)},Uy=b._emscripten_bind_btQuaternion_op_mulq_1=function(){return(Uy=b._emscripten_bind_btQuaternion_op_mulq_1=b.asm.zw).apply(null, -arguments)},Vy=b._emscripten_bind_btQuaternion_op_div_1=function(){return(Vy=b._emscripten_bind_btQuaternion_op_div_1=b.asm.Aw).apply(null,arguments)},Wy=b._emscripten_bind_btQuaternion_x_0=function(){return(Wy=b._emscripten_bind_btQuaternion_x_0=b.asm.Bw).apply(null,arguments)},Xy=b._emscripten_bind_btQuaternion_y_0=function(){return(Xy=b._emscripten_bind_btQuaternion_y_0=b.asm.Cw).apply(null,arguments)},Yy=b._emscripten_bind_btQuaternion_z_0=function(){return(Yy=b._emscripten_bind_btQuaternion_z_0= -b.asm.Dw).apply(null,arguments)},Zy=b._emscripten_bind_btQuaternion_w_0=function(){return(Zy=b._emscripten_bind_btQuaternion_w_0=b.asm.Ew).apply(null,arguments)},$y=b._emscripten_bind_btQuaternion_setX_1=function(){return($y=b._emscripten_bind_btQuaternion_setX_1=b.asm.Fw).apply(null,arguments)},az=b._emscripten_bind_btQuaternion_setY_1=function(){return(az=b._emscripten_bind_btQuaternion_setY_1=b.asm.Gw).apply(null,arguments)},bz=b._emscripten_bind_btQuaternion_setZ_1=function(){return(bz=b._emscripten_bind_btQuaternion_setZ_1= -b.asm.Hw).apply(null,arguments)},cz=b._emscripten_bind_btQuaternion_setW_1=function(){return(cz=b._emscripten_bind_btQuaternion_setW_1=b.asm.Iw).apply(null,arguments)},dz=b._emscripten_bind_btQuaternion___destroy___0=function(){return(dz=b._emscripten_bind_btQuaternion___destroy___0=b.asm.Jw).apply(null,arguments)},ez=b._emscripten_bind_btCapsuleShapeZ_btCapsuleShapeZ_2=function(){return(ez=b._emscripten_bind_btCapsuleShapeZ_btCapsuleShapeZ_2=b.asm.Kw).apply(null,arguments)},fz=b._emscripten_bind_btCapsuleShapeZ_setMargin_1= -function(){return(fz=b._emscripten_bind_btCapsuleShapeZ_setMargin_1=b.asm.Lw).apply(null,arguments)},gz=b._emscripten_bind_btCapsuleShapeZ_getMargin_0=function(){return(gz=b._emscripten_bind_btCapsuleShapeZ_getMargin_0=b.asm.Mw).apply(null,arguments)},hz=b._emscripten_bind_btCapsuleShapeZ_getUpAxis_0=function(){return(hz=b._emscripten_bind_btCapsuleShapeZ_getUpAxis_0=b.asm.Nw).apply(null,arguments)},iz=b._emscripten_bind_btCapsuleShapeZ_getRadius_0=function(){return(iz=b._emscripten_bind_btCapsuleShapeZ_getRadius_0= -b.asm.Ow).apply(null,arguments)},jz=b._emscripten_bind_btCapsuleShapeZ_getHalfHeight_0=function(){return(jz=b._emscripten_bind_btCapsuleShapeZ_getHalfHeight_0=b.asm.Pw).apply(null,arguments)},kz=b._emscripten_bind_btCapsuleShapeZ_setLocalScaling_1=function(){return(kz=b._emscripten_bind_btCapsuleShapeZ_setLocalScaling_1=b.asm.Qw).apply(null,arguments)},lz=b._emscripten_bind_btCapsuleShapeZ_getLocalScaling_0=function(){return(lz=b._emscripten_bind_btCapsuleShapeZ_getLocalScaling_0=b.asm.Rw).apply(null, -arguments)},mz=b._emscripten_bind_btCapsuleShapeZ_calculateLocalInertia_2=function(){return(mz=b._emscripten_bind_btCapsuleShapeZ_calculateLocalInertia_2=b.asm.Sw).apply(null,arguments)},nz=b._emscripten_bind_btCapsuleShapeZ___destroy___0=function(){return(nz=b._emscripten_bind_btCapsuleShapeZ___destroy___0=b.asm.Tw).apply(null,arguments)},oz=b._emscripten_bind_btContactSolverInfo_get_m_splitImpulse_0=function(){return(oz=b._emscripten_bind_btContactSolverInfo_get_m_splitImpulse_0=b.asm.Uw).apply(null, -arguments)},pz=b._emscripten_bind_btContactSolverInfo_set_m_splitImpulse_1=function(){return(pz=b._emscripten_bind_btContactSolverInfo_set_m_splitImpulse_1=b.asm.Vw).apply(null,arguments)},qz=b._emscripten_bind_btContactSolverInfo_get_m_splitImpulsePenetrationThreshold_0=function(){return(qz=b._emscripten_bind_btContactSolverInfo_get_m_splitImpulsePenetrationThreshold_0=b.asm.Ww).apply(null,arguments)},rz=b._emscripten_bind_btContactSolverInfo_set_m_splitImpulsePenetrationThreshold_1=function(){return(rz= -b._emscripten_bind_btContactSolverInfo_set_m_splitImpulsePenetrationThreshold_1=b.asm.Xw).apply(null,arguments)},sz=b._emscripten_bind_btContactSolverInfo_get_m_numIterations_0=function(){return(sz=b._emscripten_bind_btContactSolverInfo_get_m_numIterations_0=b.asm.Yw).apply(null,arguments)},tz=b._emscripten_bind_btContactSolverInfo_set_m_numIterations_1=function(){return(tz=b._emscripten_bind_btContactSolverInfo_set_m_numIterations_1=b.asm.Zw).apply(null,arguments)},uz=b._emscripten_bind_btContactSolverInfo___destroy___0= -function(){return(uz=b._emscripten_bind_btContactSolverInfo___destroy___0=b.asm._w).apply(null,arguments)},vz=b._emscripten_bind_btGeneric6DofSpringConstraint_btGeneric6DofSpringConstraint_3=function(){return(vz=b._emscripten_bind_btGeneric6DofSpringConstraint_btGeneric6DofSpringConstraint_3=b.asm.$w).apply(null,arguments)},wz=b._emscripten_bind_btGeneric6DofSpringConstraint_btGeneric6DofSpringConstraint_5=function(){return(wz=b._emscripten_bind_btGeneric6DofSpringConstraint_btGeneric6DofSpringConstraint_5= -b.asm.ax).apply(null,arguments)},xz=b._emscripten_bind_btGeneric6DofSpringConstraint_enableSpring_2=function(){return(xz=b._emscripten_bind_btGeneric6DofSpringConstraint_enableSpring_2=b.asm.bx).apply(null,arguments)},yz=b._emscripten_bind_btGeneric6DofSpringConstraint_setStiffness_2=function(){return(yz=b._emscripten_bind_btGeneric6DofSpringConstraint_setStiffness_2=b.asm.cx).apply(null,arguments)},zz=b._emscripten_bind_btGeneric6DofSpringConstraint_setDamping_2=function(){return(zz=b._emscripten_bind_btGeneric6DofSpringConstraint_setDamping_2= -b.asm.dx).apply(null,arguments)},Az=b._emscripten_bind_btGeneric6DofSpringConstraint_setEquilibriumPoint_0=function(){return(Az=b._emscripten_bind_btGeneric6DofSpringConstraint_setEquilibriumPoint_0=b.asm.ex).apply(null,arguments)},Bz=b._emscripten_bind_btGeneric6DofSpringConstraint_setEquilibriumPoint_1=function(){return(Bz=b._emscripten_bind_btGeneric6DofSpringConstraint_setEquilibriumPoint_1=b.asm.fx).apply(null,arguments)},Cz=b._emscripten_bind_btGeneric6DofSpringConstraint_setEquilibriumPoint_2= -function(){return(Cz=b._emscripten_bind_btGeneric6DofSpringConstraint_setEquilibriumPoint_2=b.asm.gx).apply(null,arguments)},Dz=b._emscripten_bind_btGeneric6DofSpringConstraint_setLinearLowerLimit_1=function(){return(Dz=b._emscripten_bind_btGeneric6DofSpringConstraint_setLinearLowerLimit_1=b.asm.hx).apply(null,arguments)},Ez=b._emscripten_bind_btGeneric6DofSpringConstraint_setLinearUpperLimit_1=function(){return(Ez=b._emscripten_bind_btGeneric6DofSpringConstraint_setLinearUpperLimit_1=b.asm.ix).apply(null, -arguments)},Fz=b._emscripten_bind_btGeneric6DofSpringConstraint_setAngularLowerLimit_1=function(){return(Fz=b._emscripten_bind_btGeneric6DofSpringConstraint_setAngularLowerLimit_1=b.asm.jx).apply(null,arguments)},Gz=b._emscripten_bind_btGeneric6DofSpringConstraint_setAngularUpperLimit_1=function(){return(Gz=b._emscripten_bind_btGeneric6DofSpringConstraint_setAngularUpperLimit_1=b.asm.kx).apply(null,arguments)},Hz=b._emscripten_bind_btGeneric6DofSpringConstraint_getFrameOffsetA_0=function(){return(Hz= -b._emscripten_bind_btGeneric6DofSpringConstraint_getFrameOffsetA_0=b.asm.lx).apply(null,arguments)},Iz=b._emscripten_bind_btGeneric6DofSpringConstraint_enableFeedback_1=function(){return(Iz=b._emscripten_bind_btGeneric6DofSpringConstraint_enableFeedback_1=b.asm.mx).apply(null,arguments)},Jz=b._emscripten_bind_btGeneric6DofSpringConstraint_getBreakingImpulseThreshold_0=function(){return(Jz=b._emscripten_bind_btGeneric6DofSpringConstraint_getBreakingImpulseThreshold_0=b.asm.nx).apply(null,arguments)}, -Kz=b._emscripten_bind_btGeneric6DofSpringConstraint_setBreakingImpulseThreshold_1=function(){return(Kz=b._emscripten_bind_btGeneric6DofSpringConstraint_setBreakingImpulseThreshold_1=b.asm.ox).apply(null,arguments)},Lz=b._emscripten_bind_btGeneric6DofSpringConstraint_getParam_2=function(){return(Lz=b._emscripten_bind_btGeneric6DofSpringConstraint_getParam_2=b.asm.px).apply(null,arguments)},Mz=b._emscripten_bind_btGeneric6DofSpringConstraint_setParam_3=function(){return(Mz=b._emscripten_bind_btGeneric6DofSpringConstraint_setParam_3= -b.asm.qx).apply(null,arguments)},Nz=b._emscripten_bind_btGeneric6DofSpringConstraint___destroy___0=function(){return(Nz=b._emscripten_bind_btGeneric6DofSpringConstraint___destroy___0=b.asm.rx).apply(null,arguments)},Oz=b._emscripten_bind_btSphereShape_btSphereShape_1=function(){return(Oz=b._emscripten_bind_btSphereShape_btSphereShape_1=b.asm.sx).apply(null,arguments)},Pz=b._emscripten_bind_btSphereShape_setMargin_1=function(){return(Pz=b._emscripten_bind_btSphereShape_setMargin_1=b.asm.tx).apply(null, -arguments)},Qz=b._emscripten_bind_btSphereShape_getMargin_0=function(){return(Qz=b._emscripten_bind_btSphereShape_getMargin_0=b.asm.ux).apply(null,arguments)},Rz=b._emscripten_bind_btSphereShape_setLocalScaling_1=function(){return(Rz=b._emscripten_bind_btSphereShape_setLocalScaling_1=b.asm.vx).apply(null,arguments)},Sz=b._emscripten_bind_btSphereShape_getLocalScaling_0=function(){return(Sz=b._emscripten_bind_btSphereShape_getLocalScaling_0=b.asm.wx).apply(null,arguments)},Tz=b._emscripten_bind_btSphereShape_calculateLocalInertia_2= -function(){return(Tz=b._emscripten_bind_btSphereShape_calculateLocalInertia_2=b.asm.xx).apply(null,arguments)},Uz=b._emscripten_bind_btSphereShape___destroy___0=function(){return(Uz=b._emscripten_bind_btSphereShape___destroy___0=b.asm.yx).apply(null,arguments)},Vz=b._emscripten_bind_Face_get_m_n_1=function(){return(Vz=b._emscripten_bind_Face_get_m_n_1=b.asm.zx).apply(null,arguments)},Wz=b._emscripten_bind_Face_set_m_n_2=function(){return(Wz=b._emscripten_bind_Face_set_m_n_2=b.asm.Ax).apply(null,arguments)}, -Xz=b._emscripten_bind_Face_get_m_normal_0=function(){return(Xz=b._emscripten_bind_Face_get_m_normal_0=b.asm.Bx).apply(null,arguments)},Yz=b._emscripten_bind_Face_set_m_normal_1=function(){return(Yz=b._emscripten_bind_Face_set_m_normal_1=b.asm.Cx).apply(null,arguments)},Zz=b._emscripten_bind_Face_get_m_ra_0=function(){return(Zz=b._emscripten_bind_Face_get_m_ra_0=b.asm.Dx).apply(null,arguments)},$z=b._emscripten_bind_Face_set_m_ra_1=function(){return($z=b._emscripten_bind_Face_set_m_ra_1=b.asm.Ex).apply(null, -arguments)},aA=b._emscripten_bind_Face___destroy___0=function(){return(aA=b._emscripten_bind_Face___destroy___0=b.asm.Fx).apply(null,arguments)},bA=b._emscripten_bind_tFaceArray_size_0=function(){return(bA=b._emscripten_bind_tFaceArray_size_0=b.asm.Gx).apply(null,arguments)},cA=b._emscripten_bind_tFaceArray_at_1=function(){return(cA=b._emscripten_bind_tFaceArray_at_1=b.asm.Hx).apply(null,arguments)},dA=b._emscripten_bind_tFaceArray___destroy___0=function(){return(dA=b._emscripten_bind_tFaceArray___destroy___0= -b.asm.Ix).apply(null,arguments)},eA=b._emscripten_bind_LocalConvexResult_LocalConvexResult_5=function(){return(eA=b._emscripten_bind_LocalConvexResult_LocalConvexResult_5=b.asm.Jx).apply(null,arguments)},fA=b._emscripten_bind_LocalConvexResult_get_m_hitCollisionObject_0=function(){return(fA=b._emscripten_bind_LocalConvexResult_get_m_hitCollisionObject_0=b.asm.Kx).apply(null,arguments)},gA=b._emscripten_bind_LocalConvexResult_set_m_hitCollisionObject_1=function(){return(gA=b._emscripten_bind_LocalConvexResult_set_m_hitCollisionObject_1= -b.asm.Lx).apply(null,arguments)},hA=b._emscripten_bind_LocalConvexResult_get_m_localShapeInfo_0=function(){return(hA=b._emscripten_bind_LocalConvexResult_get_m_localShapeInfo_0=b.asm.Mx).apply(null,arguments)},iA=b._emscripten_bind_LocalConvexResult_set_m_localShapeInfo_1=function(){return(iA=b._emscripten_bind_LocalConvexResult_set_m_localShapeInfo_1=b.asm.Nx).apply(null,arguments)},jA=b._emscripten_bind_LocalConvexResult_get_m_hitNormalLocal_0=function(){return(jA=b._emscripten_bind_LocalConvexResult_get_m_hitNormalLocal_0= -b.asm.Ox).apply(null,arguments)},kA=b._emscripten_bind_LocalConvexResult_set_m_hitNormalLocal_1=function(){return(kA=b._emscripten_bind_LocalConvexResult_set_m_hitNormalLocal_1=b.asm.Px).apply(null,arguments)},lA=b._emscripten_bind_LocalConvexResult_get_m_hitPointLocal_0=function(){return(lA=b._emscripten_bind_LocalConvexResult_get_m_hitPointLocal_0=b.asm.Qx).apply(null,arguments)},mA=b._emscripten_bind_LocalConvexResult_set_m_hitPointLocal_1=function(){return(mA=b._emscripten_bind_LocalConvexResult_set_m_hitPointLocal_1= -b.asm.Rx).apply(null,arguments)},nA=b._emscripten_bind_LocalConvexResult_get_m_hitFraction_0=function(){return(nA=b._emscripten_bind_LocalConvexResult_get_m_hitFraction_0=b.asm.Sx).apply(null,arguments)},oA=b._emscripten_bind_LocalConvexResult_set_m_hitFraction_1=function(){return(oA=b._emscripten_bind_LocalConvexResult_set_m_hitFraction_1=b.asm.Tx).apply(null,arguments)},pA=b._emscripten_bind_LocalConvexResult___destroy___0=function(){return(pA=b._emscripten_bind_LocalConvexResult___destroy___0= -b.asm.Ux).apply(null,arguments)},qA=b._emscripten_enum_btConstraintParams_BT_CONSTRAINT_ERP=function(){return(qA=b._emscripten_enum_btConstraintParams_BT_CONSTRAINT_ERP=b.asm.Vx).apply(null,arguments)},rA=b._emscripten_enum_btConstraintParams_BT_CONSTRAINT_STOP_ERP=function(){return(rA=b._emscripten_enum_btConstraintParams_BT_CONSTRAINT_STOP_ERP=b.asm.Wx).apply(null,arguments)},sA=b._emscripten_enum_btConstraintParams_BT_CONSTRAINT_CFM=function(){return(sA=b._emscripten_enum_btConstraintParams_BT_CONSTRAINT_CFM= -b.asm.Xx).apply(null,arguments)},tA=b._emscripten_enum_btConstraintParams_BT_CONSTRAINT_STOP_CFM=function(){return(tA=b._emscripten_enum_btConstraintParams_BT_CONSTRAINT_STOP_CFM=b.asm.Yx).apply(null,arguments)},uA=b._emscripten_enum_PHY_ScalarType_PHY_FLOAT=function(){return(uA=b._emscripten_enum_PHY_ScalarType_PHY_FLOAT=b.asm.Zx).apply(null,arguments)},vA=b._emscripten_enum_PHY_ScalarType_PHY_DOUBLE=function(){return(vA=b._emscripten_enum_PHY_ScalarType_PHY_DOUBLE=b.asm._x).apply(null,arguments)}, -wA=b._emscripten_enum_PHY_ScalarType_PHY_INTEGER=function(){return(wA=b._emscripten_enum_PHY_ScalarType_PHY_INTEGER=b.asm.$x).apply(null,arguments)},xA=b._emscripten_enum_PHY_ScalarType_PHY_SHORT=function(){return(xA=b._emscripten_enum_PHY_ScalarType_PHY_SHORT=b.asm.ay).apply(null,arguments)},yA=b._emscripten_enum_PHY_ScalarType_PHY_FIXEDPOINT88=function(){return(yA=b._emscripten_enum_PHY_ScalarType_PHY_FIXEDPOINT88=b.asm.by).apply(null,arguments)},zA=b._emscripten_enum_PHY_ScalarType_PHY_UCHAR=function(){return(zA= -b._emscripten_enum_PHY_ScalarType_PHY_UCHAR=b.asm.cy).apply(null,arguments)};b._malloc=function(){return(b._malloc=b.asm.dy).apply(null,arguments)};b._free=function(){return(b._free=b.asm.ey).apply(null,arguments)};b.dynCall_vi=function(){return(b.dynCall_vi=b.asm.fy).apply(null,arguments)};b.dynCall_v=function(){return(b.dynCall_v=b.asm.gy).apply(null,arguments)}; -b.UTF8ToString=function(a,c){if(a){var d=a+c;for(c=a;za[c]&&!(c>=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}a=d}}else a="";return a};var AA; -Oa=function BA(){AA||CA();AA||(Oa=BA)}; -function CA(){function a(){if(!AA&&(AA=!0,b.calledRun=!0,!va)){Ka=!0;Fa(Ha);Fa(Ia);ba(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var c=b.postRun.shift();Ja.unshift(c)}Fa(Ja)}}if(!(0=EA?(assert(0>>=0;switch(c.BYTES_PER_ELEMENT){case 2:d>>>=1;break;case 4:d>>>=2;break;case 8:d>>>=3}for(var e=0;e=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4}c=Array(c+1);e=c.length;d=0;if(0=n){var F=a.charCodeAt(++g);n=65536+((n&1023)<<10)|F&1023}if(127>=n){if(d>=e)break;c[d++]=n}else{if(2047>=n){if(d+1>=e)break;c[d++]=192|n>>6}else{if(65535>=n){if(d+2>=e)break;c[d++]=224| -n>>12}else{if(d+3>=e)break;c[d++]=240|n>>18;c[d++]=128|n>>12&63}c[d++]=128|n>>6&63}c[d++]=128|n&63}}c[d]=0}a=JA(c,ya);KA(c,ya,a)}return a}function MA(a){if("object"===typeof a){var c=JA(a,Ba);KA(a,Ba,c);return c}return a}function NA(){throw"cannot construct a btCollisionWorld, no constructor in IDL";}NA.prototype=Object.create(f.prototype);NA.prototype.constructor=NA;NA.prototype.iy=NA;NA.jy={};b.btCollisionWorld=NA;NA.prototype.getDispatcher=function(){return k($a(this.hy),OA)}; -NA.prototype.rayTest=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);ab(e,a,c,d)};NA.prototype.getPairCache=function(){return k(bb(this.hy),PA)};NA.prototype.getDispatchInfo=function(){return k(cb(this.hy),l)}; -NA.prototype.addCollisionObject=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?db(e,a):void 0===d?eb(e,a,c):fb(e,a,c,d)};NA.prototype.removeCollisionObject=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);gb(c,a)};NA.prototype.getBroadphase=function(){return k(hb(this.hy),QA)}; -NA.prototype.convexSweepTest=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);ib(n,a,c,d,e,g)};NA.prototype.contactPairTest=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);jb(e,a,c,d)}; -NA.prototype.contactTest=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);kb(d,a,c)};NA.prototype.updateSingleAabb=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);lb(c,a)};NA.prototype.setDebugDrawer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);mb(c,a)};NA.prototype.getDebugDrawer=function(){return k(nb(this.hy),RA)};NA.prototype.debugDrawWorld=function(){ob(this.hy)}; -NA.prototype.debugDrawObject=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);pb(e,a,c,d)};NA.prototype.__destroy__=function(){qb(this.hy)};function m(){throw"cannot construct a btCollisionShape, no constructor in IDL";}m.prototype=Object.create(f.prototype);m.prototype.constructor=m;m.prototype.iy=m;m.jy={};b.btCollisionShape=m; -m.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);rb(c,a)};m.prototype.getLocalScaling=function(){return k(sb(this.hy),p)};m.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);tb(d,a,c)};m.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ub(c,a)};m.prototype.getMargin=function(){return vb(this.hy)};m.prototype.__destroy__=function(){wb(this.hy)}; -function q(){throw"cannot construct a btCollisionObject, no constructor in IDL";}q.prototype=Object.create(f.prototype);q.prototype.constructor=q;q.prototype.iy=q;q.jy={};b.btCollisionObject=q;q.prototype.setAnisotropicFriction=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);xb(d,a,c)};q.prototype.getCollisionShape=function(){return k(yb(this.hy),m)}; -q.prototype.setContactProcessingThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);zb(c,a)};q.prototype.setActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ab(c,a)};q.prototype.forceActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Bb(c,a)};q.prototype.activate=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);void 0===a?Cb(c):Db(c,a)};q.prototype.isActive=function(){return!!Eb(this.hy)};q.prototype.isKinematicObject=function(){return!!Fb(this.hy)}; -q.prototype.isStaticObject=function(){return!!Gb(this.hy)};q.prototype.isStaticOrKinematicObject=function(){return!!Hb(this.hy)};q.prototype.getRestitution=function(){return Ib(this.hy)};q.prototype.getFriction=function(){return Jb(this.hy)};q.prototype.getRollingFriction=function(){return Kb(this.hy)};q.prototype.setRestitution=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Lb(c,a)};q.prototype.setFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Mb(c,a)}; -q.prototype.setRollingFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Nb(c,a)};q.prototype.getWorldTransform=function(){return k(Ob(this.hy),r)};q.prototype.getCollisionFlags=function(){return Pb(this.hy)};q.prototype.setCollisionFlags=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qb(c,a)};q.prototype.setWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Sb(c,a)}; -q.prototype.setCollisionShape=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Tb(c,a)};q.prototype.setCcdMotionThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ub(c,a)};q.prototype.setCcdSweptSphereRadius=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vb(c,a)};q.prototype.getUserIndex=function(){return Wb(this.hy)};q.prototype.setUserIndex=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xb(c,a)}; -q.prototype.getUserPointer=function(){return k(Yb(this.hy),SA)};q.prototype.setUserPointer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Zb(c,a)};q.prototype.getBroadphaseHandle=function(){return k($b(this.hy),t)};q.prototype.__destroy__=function(){ac(this.hy)};function u(){throw"cannot construct a btDynamicsWorld, no constructor in IDL";}u.prototype=Object.create(NA.prototype);u.prototype.constructor=u;u.prototype.iy=u;u.jy={};b.btDynamicsWorld=u; -u.prototype.addAction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);bc(c,a)};u.prototype.removeAction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);cc(c,a)};u.prototype.getSolverInfo=function(){return k(dc(this.hy),v)};u.prototype.setInternalTickCallback=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?ec(e,a):void 0===d?fc(e,a,c):hc(e,a,c,d)}; -u.prototype.getDispatcher=function(){return k(ic(this.hy),OA)};u.prototype.rayTest=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);jc(e,a,c,d)};u.prototype.getPairCache=function(){return k(kc(this.hy),PA)};u.prototype.getDispatchInfo=function(){return k(lc(this.hy),l)}; -u.prototype.addCollisionObject=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?mc(e,a):void 0===d?nc(e,a,c):oc(e,a,c,d)};u.prototype.removeCollisionObject=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);pc(c,a)};u.prototype.getBroadphase=function(){return k(qc(this.hy),QA)}; -u.prototype.convexSweepTest=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);rc(n,a,c,d,e,g)};u.prototype.contactPairTest=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);sc(e,a,c,d)}; -u.prototype.contactTest=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);tc(d,a,c)};u.prototype.updateSingleAabb=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);uc(c,a)};u.prototype.setDebugDrawer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);vc(c,a)};u.prototype.getDebugDrawer=function(){return k(wc(this.hy),RA)};u.prototype.debugDrawWorld=function(){xc(this.hy)}; -u.prototype.debugDrawObject=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);yc(e,a,c,d)};u.prototype.__destroy__=function(){zc(this.hy)};function TA(){throw"cannot construct a btTypedConstraint, no constructor in IDL";}TA.prototype=Object.create(f.prototype);TA.prototype.constructor=TA;TA.prototype.iy=TA;TA.jy={};b.btTypedConstraint=TA; -TA.prototype.enableFeedback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ac(c,a)};TA.prototype.getBreakingImpulseThreshold=function(){return Bc(this.hy)};TA.prototype.setBreakingImpulseThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Cc(c,a)};TA.prototype.getParam=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return Dc(d,a,c)}; -TA.prototype.setParam=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Ec(e,a,c,d)};TA.prototype.__destroy__=function(){Fc(this.hy)};function UA(){throw"cannot construct a btConcaveShape, no constructor in IDL";}UA.prototype=Object.create(m.prototype);UA.prototype.constructor=UA;UA.prototype.iy=UA;UA.jy={};b.btConcaveShape=UA; -UA.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Gc(c,a)};UA.prototype.getLocalScaling=function(){return k(Hc(this.hy),p)};UA.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Ic(d,a,c)};UA.prototype.__destroy__=function(){Jc(this.hy)};function VA(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=Kc(a,c);h(VA)[this.hy]=this}VA.prototype=Object.create(m.prototype); -VA.prototype.constructor=VA;VA.prototype.iy=VA;VA.jy={};b.btCapsuleShape=VA;VA.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Lc(c,a)};VA.prototype.getMargin=function(){return Mc(this.hy)};VA.prototype.getUpAxis=function(){return Nc(this.hy)};VA.prototype.getRadius=function(){return Oc(this.hy)};VA.prototype.getHalfHeight=function(){return Pc(this.hy)};VA.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qc(c,a)}; -VA.prototype.getLocalScaling=function(){return k(Rc(this.hy),p)};VA.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Sc(d,a,c)};VA.prototype.__destroy__=function(){Tc(this.hy)};function RA(){throw"cannot construct a btIDebugDraw, no constructor in IDL";}RA.prototype=Object.create(f.prototype);RA.prototype.constructor=RA;RA.prototype.iy=RA;RA.jy={};b.btIDebugDraw=RA; -RA.prototype.drawLine=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Uc(e,a,c,d)};RA.prototype.drawContactPoint=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);Vc(n,a,c,d,e,g)}; -RA.prototype.reportErrorWarning=function(a){var c=this.hy;IA();a=a&&"object"===typeof a?a.hy:LA(a);Wc(c,a)};RA.prototype.draw3dText=function(a,c){var d=this.hy;IA();a&&"object"===typeof a&&(a=a.hy);c=c&&"object"===typeof c?c.hy:LA(c);Xc(d,a,c)};RA.prototype.setDebugMode=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Yc(c,a)};RA.prototype.getDebugMode=function(){return Zc(this.hy)};RA.prototype.__destroy__=function(){$c(this.hy)}; -function WA(a){a&&"object"===typeof a&&(a=a.hy);this.hy=void 0===a?ad():bd(a);h(WA)[this.hy]=this}WA.prototype=Object.create(f.prototype);WA.prototype.constructor=WA;WA.prototype.iy=WA;WA.jy={};b.btDefaultCollisionConfiguration=WA;WA.prototype.__destroy__=function(){cd(this.hy)};function XA(){throw"cannot construct a btTriangleMeshShape, no constructor in IDL";}XA.prototype=Object.create(UA.prototype);XA.prototype.constructor=XA;XA.prototype.iy=XA;XA.jy={};b.btTriangleMeshShape=XA; -XA.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);dd(c,a)};XA.prototype.getLocalScaling=function(){return k(ed(this.hy),p)};XA.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);fd(d,a,c)};XA.prototype.__destroy__=function(){gd(this.hy)};function w(){this.hy=hd();h(w)[this.hy]=this}w.prototype=Object.create(q.prototype);w.prototype.constructor=w;w.prototype.iy=w;w.jy={}; -b.btGhostObject=w;w.prototype.getNumOverlappingObjects=function(){return id(this.hy)};w.prototype.getOverlappingObject=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(jd(c,a),q)};w.prototype.setAnisotropicFriction=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);kd(d,a,c)};w.prototype.getCollisionShape=function(){return k(ld(this.hy),m)}; -w.prototype.setContactProcessingThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);md(c,a)};w.prototype.setActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);nd(c,a)};w.prototype.forceActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);od(c,a)};w.prototype.activate=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);void 0===a?pd(c):qd(c,a)};w.prototype.isActive=function(){return!!rd(this.hy)};w.prototype.isKinematicObject=function(){return!!sd(this.hy)}; -w.prototype.isStaticObject=function(){return!!td(this.hy)};w.prototype.isStaticOrKinematicObject=function(){return!!ud(this.hy)};w.prototype.getRestitution=function(){return vd(this.hy)};w.prototype.getFriction=function(){return wd(this.hy)};w.prototype.getRollingFriction=function(){return xd(this.hy)};w.prototype.setRestitution=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yd(c,a)};w.prototype.setFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);zd(c,a)}; -w.prototype.setRollingFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ad(c,a)};w.prototype.getWorldTransform=function(){return k(Bd(this.hy),r)};w.prototype.getCollisionFlags=function(){return Cd(this.hy)};w.prototype.setCollisionFlags=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Dd(c,a)};w.prototype.setWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ed(c,a)}; -w.prototype.setCollisionShape=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Fd(c,a)};w.prototype.setCcdMotionThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Gd(c,a)};w.prototype.setCcdSweptSphereRadius=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Hd(c,a)};w.prototype.getUserIndex=function(){return Id(this.hy)};w.prototype.setUserIndex=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Jd(c,a)}; -w.prototype.getUserPointer=function(){return k(Kd(this.hy),SA)};w.prototype.setUserPointer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ld(c,a)};w.prototype.getBroadphaseHandle=function(){return k(Md(this.hy),t)};w.prototype.__destroy__=function(){Nd(this.hy)};function YA(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=Od(a,c);h(YA)[this.hy]=this}YA.prototype=Object.create(m.prototype);YA.prototype.constructor=YA;YA.prototype.iy=YA;YA.jy={}; -b.btConeShape=YA;YA.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pd(c,a)};YA.prototype.getLocalScaling=function(){return k(Qd(this.hy),p)};YA.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Rd(d,a,c)};YA.prototype.__destroy__=function(){Sd(this.hy)};function ZA(){throw"cannot construct a btActionInterface, no constructor in IDL";}ZA.prototype=Object.create(f.prototype); -ZA.prototype.constructor=ZA;ZA.prototype.iy=ZA;ZA.jy={};b.btActionInterface=ZA;ZA.prototype.updateAction=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Td(d,a,c)};ZA.prototype.__destroy__=function(){Ud(this.hy)}; -function p(a,c,d){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);this.hy=void 0===a?Vd():void 0===c?_emscripten_bind_btVector3_btVector3_1(a):void 0===d?_emscripten_bind_btVector3_btVector3_2(a,c):Wd(a,c,d);h(p)[this.hy]=this}p.prototype=Object.create(f.prototype);p.prototype.constructor=p;p.prototype.iy=p;p.jy={};b.btVector3=p;p.prototype.length=p.prototype.length=function(){return Xd(this.hy)};p.prototype.x=p.prototype.x=function(){return Yd(this.hy)}; -p.prototype.y=p.prototype.y=function(){return Zd(this.hy)};p.prototype.z=p.prototype.z=function(){return $d(this.hy)};p.prototype.setX=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ae(c,a)};p.prototype.setY=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);be(c,a)};p.prototype.setZ=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ce(c,a)}; -p.prototype.setValue=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);de(e,a,c,d)};p.prototype.normalize=p.prototype.normalize=function(){ee(this.hy)};p.prototype.rotate=p.prototype.rotate=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return k(fe(d,a,c),p)};p.prototype.dot=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return ge(c,a)}; -p.prototype.op_mul=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(he(c,a),p)};p.prototype.op_add=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(ie(c,a),p)};p.prototype.op_sub=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(je(c,a),p)};p.prototype.__destroy__=function(){ke(this.hy)};function $A(){throw"cannot construct a btVehicleRaycaster, no constructor in IDL";}$A.prototype=Object.create(f.prototype);$A.prototype.constructor=$A; -$A.prototype.iy=$A;$A.jy={};b.btVehicleRaycaster=$A;$A.prototype.castRay=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);le(e,a,c,d)};$A.prototype.__destroy__=function(){me(this.hy)};function aB(){throw"cannot construct a btQuadWord, no constructor in IDL";}aB.prototype=Object.create(f.prototype);aB.prototype.constructor=aB;aB.prototype.iy=aB;aB.jy={};b.btQuadWord=aB;aB.prototype.x=aB.prototype.x=function(){return ne(this.hy)}; -aB.prototype.y=aB.prototype.y=function(){return oe(this.hy)};aB.prototype.z=aB.prototype.z=function(){return pe(this.hy)};aB.prototype.w=function(){return qe(this.hy)};aB.prototype.setX=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);re(c,a)};aB.prototype.setY=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);se(c,a)};aB.prototype.setZ=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);te(c,a)}; -aB.prototype.setW=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ue(c,a)};aB.prototype.__destroy__=function(){ve(this.hy)};function bB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=we(a);h(bB)[this.hy]=this}bB.prototype=Object.create(m.prototype);bB.prototype.constructor=bB;bB.prototype.iy=bB;bB.jy={};b.btCylinderShape=bB;bB.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);xe(c,a)};bB.prototype.getMargin=function(){return ye(this.hy)}; -bB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ze(c,a)};bB.prototype.getLocalScaling=function(){return k(Ae(this.hy),p)};bB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Be(d,a,c)};bB.prototype.__destroy__=function(){Ce(this.hy)}; -function x(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);this.hy=De(a,c,d,e);h(x)[this.hy]=this}x.prototype=Object.create(u.prototype);x.prototype.constructor=x;x.prototype.iy=x;x.jy={};b.btDiscreteDynamicsWorld=x;x.prototype.setGravity=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ee(c,a)};x.prototype.getGravity=function(){return k(Fe(this.hy),p)}; -x.prototype.addRigidBody=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?Ge(e,a):void 0===d?_emscripten_bind_btDiscreteDynamicsWorld_addRigidBody_2(e,a,c):He(e,a,c,d)};x.prototype.removeRigidBody=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ie(c,a)}; -x.prototype.addConstraint=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);void 0===c?Je(d,a):Ke(d,a,c)};x.prototype.removeConstraint=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Le(c,a)};x.prototype.stepSimulation=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);return void 0===c?Me(e,a):void 0===d?Ne(e,a,c):Oe(e,a,c,d)}; -x.prototype.setContactAddedCallback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pe(c,a)};x.prototype.setContactProcessedCallback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qe(c,a)};x.prototype.setContactDestroyedCallback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Re(c,a)};x.prototype.getDispatcher=function(){return k(Se(this.hy),OA)}; -x.prototype.rayTest=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Te(e,a,c,d)};x.prototype.getPairCache=function(){return k(Ue(this.hy),PA)};x.prototype.getDispatchInfo=function(){return k(Ve(this.hy),l)};x.prototype.addCollisionObject=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?We(e,a):void 0===d?Xe(e,a,c):Ye(e,a,c,d)}; -x.prototype.removeCollisionObject=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ze(c,a)};x.prototype.getBroadphase=function(){return k($e(this.hy),QA)};x.prototype.convexSweepTest=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);af(n,a,c,d,e,g)}; -x.prototype.contactPairTest=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);bf(e,a,c,d)};x.prototype.contactTest=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);cf(d,a,c)};x.prototype.updateSingleAabb=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);df(c,a)};x.prototype.setDebugDrawer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ef(c,a)}; -x.prototype.getDebugDrawer=function(){return k(ff(this.hy),RA)};x.prototype.debugDrawWorld=function(){gf(this.hy)};x.prototype.debugDrawObject=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);hf(e,a,c,d)};x.prototype.addAction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);jf(c,a)};x.prototype.removeAction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);kf(c,a)}; -x.prototype.getSolverInfo=function(){return k(lf(this.hy),v)};x.prototype.setInternalTickCallback=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?mf(e,a):void 0===d?nf(e,a,c):of(e,a,c,d)};x.prototype.__destroy__=function(){pf(this.hy)};function cB(){throw"cannot construct a btConvexShape, no constructor in IDL";}cB.prototype=Object.create(m.prototype);cB.prototype.constructor=cB;cB.prototype.iy=cB;cB.jy={}; -b.btConvexShape=cB;cB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);qf(c,a)};cB.prototype.getLocalScaling=function(){return k(rf(this.hy),p)};cB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);sf(d,a,c)};cB.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);tf(c,a)};cB.prototype.getMargin=function(){return uf(this.hy)};cB.prototype.__destroy__=function(){vf(this.hy)}; -function OA(){throw"cannot construct a btDispatcher, no constructor in IDL";}OA.prototype=Object.create(f.prototype);OA.prototype.constructor=OA;OA.prototype.iy=OA;OA.jy={};b.btDispatcher=OA;OA.prototype.getNumManifolds=function(){return wf(this.hy)};OA.prototype.getManifoldByIndexInternal=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(xf(c,a),dB)};OA.prototype.__destroy__=function(){yf(this.hy)}; -function eB(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);this.hy=void 0===e?zf(a,c,d):void 0===g?_emscripten_bind_btGeneric6DofConstraint_btGeneric6DofConstraint_4(a,c,d,e):Af(a,c,d,e,g);h(eB)[this.hy]=this}eB.prototype=Object.create(TA.prototype);eB.prototype.constructor=eB;eB.prototype.iy=eB;eB.jy={};b.btGeneric6DofConstraint=eB; -eB.prototype.setLinearLowerLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Bf(c,a)};eB.prototype.setLinearUpperLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Cf(c,a)};eB.prototype.setAngularLowerLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Df(c,a)};eB.prototype.setAngularUpperLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ef(c,a)};eB.prototype.getFrameOffsetA=function(){return k(Ff(this.hy),r)}; -eB.prototype.enableFeedback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Gf(c,a)};eB.prototype.getBreakingImpulseThreshold=function(){return Hf(this.hy)};eB.prototype.setBreakingImpulseThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);If(c,a)};eB.prototype.getParam=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return Jf(d,a,c)}; -eB.prototype.setParam=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Kf(e,a,c,d)};eB.prototype.__destroy__=function(){Lf(this.hy)};function fB(){throw"cannot construct a btStridingMeshInterface, no constructor in IDL";}fB.prototype=Object.create(f.prototype);fB.prototype.constructor=fB;fB.prototype.iy=fB;fB.jy={};b.btStridingMeshInterface=fB; -fB.prototype.setScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Mf(c,a)};fB.prototype.__destroy__=function(){Nf(this.hy)};function gB(){throw"cannot construct a btMotionState, no constructor in IDL";}gB.prototype=Object.create(f.prototype);gB.prototype.constructor=gB;gB.prototype.iy=gB;gB.jy={};b.btMotionState=gB;gB.prototype.getWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Of(c,a)}; -gB.prototype.setWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pf(c,a)};gB.prototype.__destroy__=function(){Qf(this.hy)};function y(){throw"cannot construct a ConvexResultCallback, no constructor in IDL";}y.prototype=Object.create(f.prototype);y.prototype.constructor=y;y.prototype.iy=y;y.jy={};b.ConvexResultCallback=y;y.prototype.hasHit=function(){return!!Rf(this.hy)};y.prototype.get_m_collisionFilterGroup=y.prototype.ky=function(){return Sf(this.hy)}; -y.prototype.set_m_collisionFilterGroup=y.prototype.my=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Tf(c,a)};Object.defineProperty(y.prototype,"m_collisionFilterGroup",{get:y.prototype.ky,set:y.prototype.my});y.prototype.get_m_collisionFilterMask=y.prototype.ly=function(){return Uf(this.hy)};y.prototype.set_m_collisionFilterMask=y.prototype.ny=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vf(c,a)}; -Object.defineProperty(y.prototype,"m_collisionFilterMask",{get:y.prototype.ly,set:y.prototype.ny});y.prototype.get_m_closestHitFraction=y.prototype.oy=function(){return Wf(this.hy)};y.prototype.set_m_closestHitFraction=y.prototype.py=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xf(c,a)};Object.defineProperty(y.prototype,"m_closestHitFraction",{get:y.prototype.oy,set:y.prototype.py});y.prototype.__destroy__=function(){Yf(this.hy)}; -function hB(){throw"cannot construct a ContactResultCallback, no constructor in IDL";}hB.prototype=Object.create(f.prototype);hB.prototype.constructor=hB;hB.prototype.iy=hB;hB.jy={};b.ContactResultCallback=hB; -hB.prototype.addSingleResult=function(a,c,d,e,g,n,F){var aa=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);n&&"object"===typeof n&&(n=n.hy);F&&"object"===typeof F&&(F=F.hy);return Zf(aa,a,c,d,e,g,n,F)};hB.prototype.__destroy__=function(){$f(this.hy)};function iB(){throw"cannot construct a btSoftBodySolver, no constructor in IDL";}iB.prototype=Object.create(f.prototype); -iB.prototype.constructor=iB;iB.prototype.iy=iB;iB.jy={};b.btSoftBodySolver=iB;iB.prototype.__destroy__=function(){ag(this.hy)};function z(){throw"cannot construct a RayResultCallback, no constructor in IDL";}z.prototype=Object.create(f.prototype);z.prototype.constructor=z;z.prototype.iy=z;z.jy={};b.RayResultCallback=z;z.prototype.hasHit=function(){return!!bg(this.hy)};z.prototype.get_m_collisionFilterGroup=z.prototype.ky=function(){return cg(this.hy)}; -z.prototype.set_m_collisionFilterGroup=z.prototype.my=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);dg(c,a)};Object.defineProperty(z.prototype,"m_collisionFilterGroup",{get:z.prototype.ky,set:z.prototype.my});z.prototype.get_m_collisionFilterMask=z.prototype.ly=function(){return eg(this.hy)};z.prototype.set_m_collisionFilterMask=z.prototype.ny=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);fg(c,a)}; -Object.defineProperty(z.prototype,"m_collisionFilterMask",{get:z.prototype.ly,set:z.prototype.ny});z.prototype.get_m_closestHitFraction=z.prototype.oy=function(){return gg(this.hy)};z.prototype.set_m_closestHitFraction=z.prototype.py=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);hg(c,a)};Object.defineProperty(z.prototype,"m_closestHitFraction",{get:z.prototype.oy,set:z.prototype.py});z.prototype.get_m_collisionObject=z.prototype.qy=function(){return k(ig(this.hy),q)}; -z.prototype.set_m_collisionObject=z.prototype.xy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);jg(c,a)};Object.defineProperty(z.prototype,"m_collisionObject",{get:z.prototype.qy,set:z.prototype.xy});z.prototype.__destroy__=function(){kg(this.hy)};function jB(){throw"cannot construct a btMatrix3x3, no constructor in IDL";}jB.prototype=Object.create(f.prototype);jB.prototype.constructor=jB;jB.prototype.iy=jB;jB.jy={};b.btMatrix3x3=jB; -jB.prototype.setEulerZYX=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);lg(e,a,c,d)};jB.prototype.getRotation=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);mg(c,a)};jB.prototype.getRow=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(ng(c,a),p)};jB.prototype.__destroy__=function(){og(this.hy)};function kB(){throw"cannot construct a btScalarArray, no constructor in IDL";}kB.prototype=Object.create(f.prototype); -kB.prototype.constructor=kB;kB.prototype.iy=kB;kB.jy={};b.btScalarArray=kB;kB.prototype.size=kB.prototype.size=function(){return pg(this.hy)};kB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return qg(c,a)};kB.prototype.__destroy__=function(){rg(this.hy)};function A(){throw"cannot construct a Material, no constructor in IDL";}A.prototype=Object.create(f.prototype);A.prototype.constructor=A;A.prototype.iy=A;A.jy={};b.Material=A;A.prototype.get_m_kLST=A.prototype.vA=function(){return sg(this.hy)}; -A.prototype.set_m_kLST=A.prototype.bD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);tg(c,a)};Object.defineProperty(A.prototype,"m_kLST",{get:A.prototype.vA,set:A.prototype.bD});A.prototype.get_m_kAST=A.prototype.uA=function(){return ug(this.hy)};A.prototype.set_m_kAST=A.prototype.aD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);vg(c,a)};Object.defineProperty(A.prototype,"m_kAST",{get:A.prototype.uA,set:A.prototype.aD});A.prototype.get_m_kVST=A.prototype.wA=function(){return wg(this.hy)}; -A.prototype.set_m_kVST=A.prototype.cD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);xg(c,a)};Object.defineProperty(A.prototype,"m_kVST",{get:A.prototype.wA,set:A.prototype.cD});A.prototype.get_m_flags=A.prototype.cA=function(){return yg(this.hy)};A.prototype.set_m_flags=A.prototype.JC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);zg(c,a)};Object.defineProperty(A.prototype,"m_flags",{get:A.prototype.cA,set:A.prototype.JC});A.prototype.__destroy__=function(){Ag(this.hy)}; -function l(){throw"cannot construct a btDispatcherInfo, no constructor in IDL";}l.prototype=Object.create(f.prototype);l.prototype.constructor=l;l.prototype.iy=l;l.jy={};b.btDispatcherInfo=l;l.prototype.get_m_timeStep=l.prototype.jB=function(){return Bg(this.hy)};l.prototype.set_m_timeStep=l.prototype.QD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Cg(c,a)};Object.defineProperty(l.prototype,"m_timeStep",{get:l.prototype.jB,set:l.prototype.QD}); -l.prototype.get_m_stepCount=l.prototype.aB=function(){return Dg(this.hy)};l.prototype.set_m_stepCount=l.prototype.HD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Eg(c,a)};Object.defineProperty(l.prototype,"m_stepCount",{get:l.prototype.aB,set:l.prototype.HD});l.prototype.get_m_dispatchFunc=l.prototype.Wz=function(){return Fg(this.hy)};l.prototype.set_m_dispatchFunc=l.prototype.CC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Gg(c,a)}; -Object.defineProperty(l.prototype,"m_dispatchFunc",{get:l.prototype.Wz,set:l.prototype.CC});l.prototype.get_m_timeOfImpact=l.prototype.iB=function(){return Hg(this.hy)};l.prototype.set_m_timeOfImpact=l.prototype.PD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ig(c,a)};Object.defineProperty(l.prototype,"m_timeOfImpact",{get:l.prototype.iB,set:l.prototype.PD});l.prototype.get_m_useContinuous=l.prototype.lB=function(){return!!Jg(this.hy)}; -l.prototype.set_m_useContinuous=l.prototype.SD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Kg(c,a)};Object.defineProperty(l.prototype,"m_useContinuous",{get:l.prototype.lB,set:l.prototype.SD});l.prototype.get_m_enableSatConvex=l.prototype.$z=function(){return!!Lg(this.hy)};l.prototype.set_m_enableSatConvex=l.prototype.GC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Mg(c,a)};Object.defineProperty(l.prototype,"m_enableSatConvex",{get:l.prototype.$z,set:l.prototype.GC}); -l.prototype.get_m_enableSPU=l.prototype.Zz=function(){return!!Ng(this.hy)};l.prototype.set_m_enableSPU=l.prototype.FC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Og(c,a)};Object.defineProperty(l.prototype,"m_enableSPU",{get:l.prototype.Zz,set:l.prototype.FC});l.prototype.get_m_useEpa=l.prototype.nB=function(){return!!Pg(this.hy)};l.prototype.set_m_useEpa=l.prototype.UD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qg(c,a)}; -Object.defineProperty(l.prototype,"m_useEpa",{get:l.prototype.nB,set:l.prototype.UD});l.prototype.get_m_allowedCcdPenetration=l.prototype.zz=function(){return Rg(this.hy)};l.prototype.set_m_allowedCcdPenetration=l.prototype.fC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Sg(c,a)};Object.defineProperty(l.prototype,"m_allowedCcdPenetration",{get:l.prototype.zz,set:l.prototype.fC});l.prototype.get_m_useConvexConservativeDistanceUtil=l.prototype.mB=function(){return!!Tg(this.hy)}; -l.prototype.set_m_useConvexConservativeDistanceUtil=l.prototype.TD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ug(c,a)};Object.defineProperty(l.prototype,"m_useConvexConservativeDistanceUtil",{get:l.prototype.mB,set:l.prototype.TD});l.prototype.get_m_convexConservativeDistanceThreshold=l.prototype.Rz=function(){return Vg(this.hy)};l.prototype.set_m_convexConservativeDistanceThreshold=l.prototype.xC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wg(c,a)}; -Object.defineProperty(l.prototype,"m_convexConservativeDistanceThreshold",{get:l.prototype.Rz,set:l.prototype.xC});l.prototype.__destroy__=function(){Xg(this.hy)};function B(){throw"cannot construct a btWheelInfoConstructionInfo, no constructor in IDL";}B.prototype=Object.create(f.prototype);B.prototype.constructor=B;B.prototype.iy=B;B.jy={};b.btWheelInfoConstructionInfo=B;B.prototype.get_m_chassisConnectionCS=B.prototype.Lz=function(){return k(Yg(this.hy),p)}; -B.prototype.set_m_chassisConnectionCS=B.prototype.rC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Zg(c,a)};Object.defineProperty(B.prototype,"m_chassisConnectionCS",{get:B.prototype.Lz,set:B.prototype.rC});B.prototype.get_m_wheelDirectionCS=B.prototype.Ly=function(){return k($g(this.hy),p)};B.prototype.set_m_wheelDirectionCS=B.prototype.Uy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ah(c,a)};Object.defineProperty(B.prototype,"m_wheelDirectionCS",{get:B.prototype.Ly,set:B.prototype.Uy}); -B.prototype.get_m_wheelAxleCS=B.prototype.Ky=function(){return k(bh(this.hy),p)};B.prototype.set_m_wheelAxleCS=B.prototype.Ty=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ch(c,a)};Object.defineProperty(B.prototype,"m_wheelAxleCS",{get:B.prototype.Ky,set:B.prototype.Ty});B.prototype.get_m_suspensionRestLength=B.prototype.fB=function(){return dh(this.hy)};B.prototype.set_m_suspensionRestLength=B.prototype.MD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);eh(c,a)}; -Object.defineProperty(B.prototype,"m_suspensionRestLength",{get:B.prototype.fB,set:B.prototype.MD});B.prototype.get_m_maxSuspensionTravelCm=B.prototype.vy=function(){return fh(this.hy)};B.prototype.set_m_maxSuspensionTravelCm=B.prototype.Cy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);gh(c,a)};Object.defineProperty(B.prototype,"m_maxSuspensionTravelCm",{get:B.prototype.vy,set:B.prototype.Cy});B.prototype.get_m_wheelRadius=B.prototype.tB=function(){return hh(this.hy)}; -B.prototype.set_m_wheelRadius=B.prototype.$D=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ih(c,a)};Object.defineProperty(B.prototype,"m_wheelRadius",{get:B.prototype.tB,set:B.prototype.$D});B.prototype.get_m_suspensionStiffness=B.prototype.wy=function(){return jh(this.hy)};B.prototype.set_m_suspensionStiffness=B.prototype.Dy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);kh(c,a)};Object.defineProperty(B.prototype,"m_suspensionStiffness",{get:B.prototype.wy,set:B.prototype.Dy}); -B.prototype.get_m_wheelsDampingCompression=B.prototype.My=function(){return lh(this.hy)};B.prototype.set_m_wheelsDampingCompression=B.prototype.Vy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);mh(c,a)};Object.defineProperty(B.prototype,"m_wheelsDampingCompression",{get:B.prototype.My,set:B.prototype.Vy});B.prototype.get_m_wheelsDampingRelaxation=B.prototype.Ny=function(){return nh(this.hy)}; -B.prototype.set_m_wheelsDampingRelaxation=B.prototype.Wy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);oh(c,a)};Object.defineProperty(B.prototype,"m_wheelsDampingRelaxation",{get:B.prototype.Ny,set:B.prototype.Wy});B.prototype.get_m_frictionSlip=B.prototype.ry=function(){return ph(this.hy)};B.prototype.set_m_frictionSlip=B.prototype.yy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);qh(c,a)};Object.defineProperty(B.prototype,"m_frictionSlip",{get:B.prototype.ry,set:B.prototype.yy}); -B.prototype.get_m_maxSuspensionForce=B.prototype.uy=function(){return rh(this.hy)};B.prototype.set_m_maxSuspensionForce=B.prototype.By=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);sh(c,a)};Object.defineProperty(B.prototype,"m_maxSuspensionForce",{get:B.prototype.uy,set:B.prototype.By});B.prototype.get_m_bIsFrontWheel=B.prototype.Fy=function(){return!!th(this.hy)};B.prototype.set_m_bIsFrontWheel=B.prototype.Oy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);uh(c,a)}; -Object.defineProperty(B.prototype,"m_bIsFrontWheel",{get:B.prototype.Fy,set:B.prototype.Oy});B.prototype.__destroy__=function(){vh(this.hy)};function lB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=void 0===c?wh(a):xh(a,c);h(lB)[this.hy]=this}lB.prototype=Object.create(cB.prototype);lB.prototype.constructor=lB;lB.prototype.iy=lB;lB.jy={};b.btConvexTriangleMeshShape=lB;lB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yh(c,a)}; -lB.prototype.getLocalScaling=function(){return k(zh(this.hy),p)};lB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Ah(d,a,c)};lB.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Bh(c,a)};lB.prototype.getMargin=function(){return Ch(this.hy)};lB.prototype.__destroy__=function(){Dh(this.hy)};function QA(){throw"cannot construct a btBroadphaseInterface, no constructor in IDL";}QA.prototype=Object.create(f.prototype); -QA.prototype.constructor=QA;QA.prototype.iy=QA;QA.jy={};b.btBroadphaseInterface=QA;QA.prototype.getOverlappingPairCache=function(){return k(Eh(this.hy),PA)};QA.prototype.__destroy__=function(){Fh(this.hy)};function C(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);this.hy=void 0===e?Gh(a,c,d):Hh(a,c,d,e);h(C)[this.hy]=this}C.prototype=Object.create(f.prototype);C.prototype.constructor=C;C.prototype.iy=C; -C.jy={};b.btRigidBodyConstructionInfo=C;C.prototype.get_m_linearDamping=C.prototype.xA=function(){return Ih(this.hy)};C.prototype.set_m_linearDamping=C.prototype.dD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Jh(c,a)};Object.defineProperty(C.prototype,"m_linearDamping",{get:C.prototype.xA,set:C.prototype.dD});C.prototype.get_m_angularDamping=C.prototype.Bz=function(){return Kh(this.hy)}; -C.prototype.set_m_angularDamping=C.prototype.hC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Lh(c,a)};Object.defineProperty(C.prototype,"m_angularDamping",{get:C.prototype.Bz,set:C.prototype.hC});C.prototype.get_m_friction=C.prototype.dA=function(){return Mh(this.hy)};C.prototype.set_m_friction=C.prototype.KC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Nh(c,a)};Object.defineProperty(C.prototype,"m_friction",{get:C.prototype.dA,set:C.prototype.KC}); -C.prototype.get_m_rollingFriction=C.prototype.TA=function(){return Oh(this.hy)};C.prototype.set_m_rollingFriction=C.prototype.zD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ph(c,a)};Object.defineProperty(C.prototype,"m_rollingFriction",{get:C.prototype.TA,set:C.prototype.zD});C.prototype.get_m_restitution=C.prototype.RA=function(){return Qh(this.hy)};C.prototype.set_m_restitution=C.prototype.xD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Rh(c,a)}; -Object.defineProperty(C.prototype,"m_restitution",{get:C.prototype.RA,set:C.prototype.xD});C.prototype.get_m_linearSleepingThreshold=C.prototype.yA=function(){return Sh(this.hy)};C.prototype.set_m_linearSleepingThreshold=C.prototype.eD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Th(c,a)};Object.defineProperty(C.prototype,"m_linearSleepingThreshold",{get:C.prototype.yA,set:C.prototype.eD});C.prototype.get_m_angularSleepingThreshold=C.prototype.Cz=function(){return Uh(this.hy)}; -C.prototype.set_m_angularSleepingThreshold=C.prototype.iC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vh(c,a)};Object.defineProperty(C.prototype,"m_angularSleepingThreshold",{get:C.prototype.Cz,set:C.prototype.iC});C.prototype.get_m_additionalDamping=C.prototype.wz=function(){return!!Wh(this.hy)};C.prototype.set_m_additionalDamping=C.prototype.cC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xh(c,a)}; -Object.defineProperty(C.prototype,"m_additionalDamping",{get:C.prototype.wz,set:C.prototype.cC});C.prototype.get_m_additionalDampingFactor=C.prototype.xz=function(){return Yh(this.hy)};C.prototype.set_m_additionalDampingFactor=C.prototype.dC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Zh(c,a)};Object.defineProperty(C.prototype,"m_additionalDampingFactor",{get:C.prototype.xz,set:C.prototype.dC});C.prototype.get_m_additionalLinearDampingThresholdSqr=C.prototype.yz=function(){return $h(this.hy)}; -C.prototype.set_m_additionalLinearDampingThresholdSqr=C.prototype.eC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ai(c,a)};Object.defineProperty(C.prototype,"m_additionalLinearDampingThresholdSqr",{get:C.prototype.yz,set:C.prototype.eC});C.prototype.get_m_additionalAngularDampingThresholdSqr=C.prototype.vz=function(){return bi(this.hy)};C.prototype.set_m_additionalAngularDampingThresholdSqr=C.prototype.bC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ci(c,a)}; -Object.defineProperty(C.prototype,"m_additionalAngularDampingThresholdSqr",{get:C.prototype.vz,set:C.prototype.bC});C.prototype.get_m_additionalAngularDampingFactor=C.prototype.uz=function(){return di(this.hy)};C.prototype.set_m_additionalAngularDampingFactor=C.prototype.aC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ei(c,a)};Object.defineProperty(C.prototype,"m_additionalAngularDampingFactor",{get:C.prototype.uz,set:C.prototype.aC});C.prototype.__destroy__=function(){fi(this.hy)}; -function mB(){throw"cannot construct a btCollisionConfiguration, no constructor in IDL";}mB.prototype=Object.create(f.prototype);mB.prototype.constructor=mB;mB.prototype.iy=mB;mB.jy={};b.btCollisionConfiguration=mB;mB.prototype.__destroy__=function(){gi(this.hy)};function dB(){this.hy=hi();h(dB)[this.hy]=this}dB.prototype=Object.create(f.prototype);dB.prototype.constructor=dB;dB.prototype.iy=dB;dB.jy={};b.btPersistentManifold=dB;dB.prototype.getBody0=function(){return k(ii(this.hy),q)}; -dB.prototype.getBody1=function(){return k(ji(this.hy),q)};dB.prototype.getNumContacts=function(){return ki(this.hy)};dB.prototype.getContactPoint=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(li(c,a),D)};dB.prototype.__destroy__=function(){mi(this.hy)};function nB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=void 0===a?ni():oi(a);h(nB)[this.hy]=this}nB.prototype=Object.create(m.prototype);nB.prototype.constructor=nB;nB.prototype.iy=nB;nB.jy={};b.btCompoundShape=nB; -nB.prototype.addChildShape=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);pi(d,a,c)};nB.prototype.removeChildShape=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);qi(c,a)};nB.prototype.removeChildShapeByIndex=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ri(c,a)};nB.prototype.getNumChildShapes=function(){return si(this.hy)};nB.prototype.getChildShape=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(ti(c,a),m)}; -nB.prototype.updateChildTransform=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===d?ui(e,a,c):vi(e,a,c,d)};nB.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);wi(c,a)};nB.prototype.getMargin=function(){return xi(this.hy)};nB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yi(c,a)};nB.prototype.getLocalScaling=function(){return k(zi(this.hy),p)}; -nB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Ai(d,a,c)};nB.prototype.__destroy__=function(){Bi(this.hy)};function E(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=Ci(a,c);h(E)[this.hy]=this}E.prototype=Object.create(y.prototype);E.prototype.constructor=E;E.prototype.iy=E;E.jy={};b.ClosestConvexResultCallback=E;E.prototype.hasHit=function(){return!!Di(this.hy)}; -E.prototype.get_m_convexFromWorld=E.prototype.Sz=function(){return k(Ei(this.hy),p)};E.prototype.set_m_convexFromWorld=E.prototype.yC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Fi(c,a)};Object.defineProperty(E.prototype,"m_convexFromWorld",{get:E.prototype.Sz,set:E.prototype.yC});E.prototype.get_m_convexToWorld=E.prototype.Tz=function(){return k(Gi(this.hy),p)};E.prototype.set_m_convexToWorld=E.prototype.zC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Hi(c,a)}; -Object.defineProperty(E.prototype,"m_convexToWorld",{get:E.prototype.Tz,set:E.prototype.zC});E.prototype.get_m_hitNormalWorld=E.prototype.sy=function(){return k(Ii(this.hy),p)};E.prototype.set_m_hitNormalWorld=E.prototype.zy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ji(c,a)};Object.defineProperty(E.prototype,"m_hitNormalWorld",{get:E.prototype.sy,set:E.prototype.zy});E.prototype.get_m_hitPointWorld=E.prototype.ty=function(){return k(Ki(this.hy),p)}; -E.prototype.set_m_hitPointWorld=E.prototype.Ay=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Li(c,a)};Object.defineProperty(E.prototype,"m_hitPointWorld",{get:E.prototype.ty,set:E.prototype.Ay});E.prototype.get_m_collisionFilterGroup=E.prototype.ky=function(){return Mi(this.hy)};E.prototype.set_m_collisionFilterGroup=E.prototype.my=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ni(c,a)};Object.defineProperty(E.prototype,"m_collisionFilterGroup",{get:E.prototype.ky,set:E.prototype.my}); -E.prototype.get_m_collisionFilterMask=E.prototype.ly=function(){return Oi(this.hy)};E.prototype.set_m_collisionFilterMask=E.prototype.ny=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pi(c,a)};Object.defineProperty(E.prototype,"m_collisionFilterMask",{get:E.prototype.ly,set:E.prototype.ny});E.prototype.get_m_closestHitFraction=E.prototype.oy=function(){return Qi(this.hy)}; -E.prototype.set_m_closestHitFraction=E.prototype.py=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ri(c,a)};Object.defineProperty(E.prototype,"m_closestHitFraction",{get:E.prototype.oy,set:E.prototype.py});E.prototype.__destroy__=function(){Si(this.hy)};function G(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=Ti(a,c);h(G)[this.hy]=this}G.prototype=Object.create(z.prototype);G.prototype.constructor=G;G.prototype.iy=G;G.jy={};b.AllHitsRayResultCallback=G; -G.prototype.hasHit=function(){return!!Ui(this.hy)};G.prototype.get_m_collisionObjects=G.prototype.Oz=function(){return k(Vi(this.hy),oB)};G.prototype.set_m_collisionObjects=G.prototype.uC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wi(c,a)};Object.defineProperty(G.prototype,"m_collisionObjects",{get:G.prototype.Oz,set:G.prototype.uC});G.prototype.get_m_rayFromWorld=G.prototype.Iy=function(){return k(Xi(this.hy),p)}; -G.prototype.set_m_rayFromWorld=G.prototype.Ry=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Yi(c,a)};Object.defineProperty(G.prototype,"m_rayFromWorld",{get:G.prototype.Iy,set:G.prototype.Ry});G.prototype.get_m_rayToWorld=G.prototype.Jy=function(){return k(Zi(this.hy),p)};G.prototype.set_m_rayToWorld=G.prototype.Sy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);$i(c,a)};Object.defineProperty(G.prototype,"m_rayToWorld",{get:G.prototype.Jy,set:G.prototype.Sy}); -G.prototype.get_m_hitNormalWorld=G.prototype.sy=function(){return k(aj(this.hy),pB)};G.prototype.set_m_hitNormalWorld=G.prototype.zy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);bj(c,a)};Object.defineProperty(G.prototype,"m_hitNormalWorld",{get:G.prototype.sy,set:G.prototype.zy});G.prototype.get_m_hitPointWorld=G.prototype.ty=function(){return k(cj(this.hy),pB)};G.prototype.set_m_hitPointWorld=G.prototype.Ay=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);dj(c,a)}; -Object.defineProperty(G.prototype,"m_hitPointWorld",{get:G.prototype.ty,set:G.prototype.Ay});G.prototype.get_m_hitFractions=G.prototype.kA=function(){return k(ej(this.hy),kB)};G.prototype.set_m_hitFractions=G.prototype.RC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);fj(c,a)};Object.defineProperty(G.prototype,"m_hitFractions",{get:G.prototype.kA,set:G.prototype.RC});G.prototype.get_m_collisionFilterGroup=G.prototype.ky=function(){return gj(this.hy)}; -G.prototype.set_m_collisionFilterGroup=G.prototype.my=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);hj(c,a)};Object.defineProperty(G.prototype,"m_collisionFilterGroup",{get:G.prototype.ky,set:G.prototype.my});G.prototype.get_m_collisionFilterMask=G.prototype.ly=function(){return ij(this.hy)};G.prototype.set_m_collisionFilterMask=G.prototype.ny=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);jj(c,a)}; -Object.defineProperty(G.prototype,"m_collisionFilterMask",{get:G.prototype.ly,set:G.prototype.ny});G.prototype.get_m_closestHitFraction=G.prototype.oy=function(){return kj(this.hy)};G.prototype.set_m_closestHitFraction=G.prototype.py=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);lj(c,a)};Object.defineProperty(G.prototype,"m_closestHitFraction",{get:G.prototype.oy,set:G.prototype.py});G.prototype.get_m_collisionObject=G.prototype.qy=function(){return k(mj(this.hy),q)}; -G.prototype.set_m_collisionObject=G.prototype.xy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);nj(c,a)};Object.defineProperty(G.prototype,"m_collisionObject",{get:G.prototype.qy,set:G.prototype.xy});G.prototype.__destroy__=function(){oj(this.hy)};function qB(){throw"cannot construct a tMaterialArray, no constructor in IDL";}qB.prototype=Object.create(f.prototype);qB.prototype.constructor=qB;qB.prototype.iy=qB;qB.jy={};b.tMaterialArray=qB;qB.prototype.size=qB.prototype.size=function(){return pj(this.hy)}; -qB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(qj(c,a),A)};qB.prototype.__destroy__=function(){rj(this.hy)};function rB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=sj(a);h(rB)[this.hy]=this}rB.prototype=Object.create($A.prototype);rB.prototype.constructor=rB;rB.prototype.iy=rB;rB.jy={};b.btDefaultVehicleRaycaster=rB; -rB.prototype.castRay=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);tj(e,a,c,d)};rB.prototype.__destroy__=function(){uj(this.hy)};function sB(){this.hy=vj();h(sB)[this.hy]=this}sB.prototype=Object.create(UA.prototype);sB.prototype.constructor=sB;sB.prototype.iy=sB;sB.jy={};b.btEmptyShape=sB;sB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);wj(c,a)}; -sB.prototype.getLocalScaling=function(){return k(xj(this.hy),p)};sB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);yj(d,a,c)};sB.prototype.__destroy__=function(){zj(this.hy)};function H(){this.hy=Aj();h(H)[this.hy]=this}H.prototype=Object.create(f.prototype);H.prototype.constructor=H;H.prototype.iy=H;H.jy={};b.btConstraintSetting=H;H.prototype.get_m_tau=H.prototype.hB=function(){return Bj(this.hy)}; -H.prototype.set_m_tau=H.prototype.OD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Cj(c,a)};Object.defineProperty(H.prototype,"m_tau",{get:H.prototype.hB,set:H.prototype.OD});H.prototype.get_m_damping=H.prototype.Uz=function(){return Dj(this.hy)};H.prototype.set_m_damping=H.prototype.AC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ej(c,a)};Object.defineProperty(H.prototype,"m_damping",{get:H.prototype.Uz,set:H.prototype.AC}); -H.prototype.get_m_impulseClamp=H.prototype.qA=function(){return Fj(this.hy)};H.prototype.set_m_impulseClamp=H.prototype.XC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Gj(c,a)};Object.defineProperty(H.prototype,"m_impulseClamp",{get:H.prototype.qA,set:H.prototype.XC});H.prototype.__destroy__=function(){Hj(this.hy)};function tB(){throw"cannot construct a LocalShapeInfo, no constructor in IDL";}tB.prototype=Object.create(f.prototype);tB.prototype.constructor=tB;tB.prototype.iy=tB; -tB.jy={};b.LocalShapeInfo=tB;tB.prototype.get_m_shapePart=tB.prototype.WA=function(){return Ij(this.hy)};tB.prototype.set_m_shapePart=tB.prototype.CD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Jj(c,a)};Object.defineProperty(tB.prototype,"m_shapePart",{get:tB.prototype.WA,set:tB.prototype.CD});tB.prototype.get_m_triangleIndex=tB.prototype.kB=function(){return Kj(this.hy)}; -tB.prototype.set_m_triangleIndex=tB.prototype.RD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Lj(c,a)};Object.defineProperty(tB.prototype,"m_triangleIndex",{get:tB.prototype.kB,set:tB.prototype.RD});tB.prototype.__destroy__=function(){Mj(this.hy)};function I(a){a&&"object"===typeof a&&(a=a.hy);this.hy=Nj(a);h(I)[this.hy]=this}I.prototype=Object.create(q.prototype);I.prototype.constructor=I;I.prototype.iy=I;I.jy={};b.btRigidBody=I; -I.prototype.getCenterOfMassTransform=function(){return k(Oj(this.hy),r)};I.prototype.setCenterOfMassTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pj(c,a)};I.prototype.setSleepingThresholds=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Qj(d,a,c)};I.prototype.getLinearDamping=function(){return Rj(this.hy)};I.prototype.getAngularDamping=function(){return Sj(this.hy)}; -I.prototype.setDamping=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Tj(d,a,c)};I.prototype.setMassProps=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Uj(d,a,c)};I.prototype.getLinearFactor=function(){return k(Vj(this.hy),p)};I.prototype.setLinearFactor=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wj(c,a)}; -I.prototype.applyTorque=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xj(c,a)};I.prototype.applyLocalTorque=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Yj(c,a)};I.prototype.applyForce=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Zj(d,a,c)};I.prototype.applyCentralForce=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ak(c,a)}; -I.prototype.applyCentralLocalForce=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);bk(c,a)};I.prototype.applyTorqueImpulse=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ck(c,a)};I.prototype.applyImpulse=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);dk(d,a,c)};I.prototype.applyCentralImpulse=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ek(c,a)};I.prototype.updateInertiaTensor=function(){fk(this.hy)}; -I.prototype.getLinearVelocity=function(){return k(gk(this.hy),p)};I.prototype.getAngularVelocity=function(){return k(hk(this.hy),p)};I.prototype.setLinearVelocity=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ik(c,a)};I.prototype.setAngularVelocity=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);jk(c,a)};I.prototype.getMotionState=function(){return k(kk(this.hy),gB)};I.prototype.setMotionState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);lk(c,a)}; -I.prototype.getAngularFactor=function(){return k(mk(this.hy),p)};I.prototype.setAngularFactor=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);nk(c,a)};I.prototype.upcast=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(ok(c,a),I)};I.prototype.getAabb=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);pk(d,a,c)};I.prototype.applyGravity=function(){qk(this.hy)};I.prototype.getGravity=function(){return k(rk(this.hy),p)}; -I.prototype.setGravity=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);sk(c,a)};I.prototype.getBroadphaseProxy=function(){return k(tk(this.hy),t)};I.prototype.clearForces=function(){uk(this.hy)};I.prototype.setAnisotropicFriction=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);vk(d,a,c)};I.prototype.getCollisionShape=function(){return k(wk(this.hy),m)}; -I.prototype.setContactProcessingThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);xk(c,a)};I.prototype.setActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yk(c,a)};I.prototype.forceActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);zk(c,a)};I.prototype.activate=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);void 0===a?Ak(c):Bk(c,a)};I.prototype.isActive=function(){return!!Ck(this.hy)};I.prototype.isKinematicObject=function(){return!!Dk(this.hy)}; -I.prototype.isStaticObject=function(){return!!Ek(this.hy)};I.prototype.isStaticOrKinematicObject=function(){return!!Fk(this.hy)};I.prototype.getRestitution=function(){return Gk(this.hy)};I.prototype.getFriction=function(){return Hk(this.hy)};I.prototype.getRollingFriction=function(){return Ik(this.hy)};I.prototype.setRestitution=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Jk(c,a)};I.prototype.setFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Kk(c,a)}; -I.prototype.setRollingFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Lk(c,a)};I.prototype.getWorldTransform=function(){return k(Mk(this.hy),r)};I.prototype.getCollisionFlags=function(){return Nk(this.hy)};I.prototype.setCollisionFlags=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ok(c,a)};I.prototype.setWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pk(c,a)}; -I.prototype.setCollisionShape=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qk(c,a)};I.prototype.setCcdMotionThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Rk(c,a)};I.prototype.setCcdSweptSphereRadius=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Sk(c,a)};I.prototype.getUserIndex=function(){return Tk(this.hy)};I.prototype.setUserIndex=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Uk(c,a)}; -I.prototype.getUserPointer=function(){return k(Vk(this.hy),SA)};I.prototype.setUserPointer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wk(c,a)};I.prototype.getBroadphaseHandle=function(){return k(Xk(this.hy),t)};I.prototype.__destroy__=function(){Yk(this.hy)};function uB(){throw"cannot construct a btIndexedMeshArray, no constructor in IDL";}uB.prototype=Object.create(f.prototype);uB.prototype.constructor=uB;uB.prototype.iy=uB;uB.jy={};b.btIndexedMeshArray=uB; -uB.prototype.size=uB.prototype.size=function(){return Zk(this.hy)};uB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k($k(c,a),vB)};uB.prototype.__destroy__=function(){al(this.hy)};function wB(){this.hy=bl();h(wB)[this.hy]=this}wB.prototype=Object.create(f.prototype);wB.prototype.constructor=wB;wB.prototype.iy=wB;wB.jy={};b.btDbvtBroadphase=wB;wB.prototype.__destroy__=function(){cl(this.hy)}; -function xB(a,c,d,e,g,n,F,aa,ta){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);n&&"object"===typeof n&&(n=n.hy);F&&"object"===typeof F&&(F=F.hy);aa&&"object"===typeof aa&&(aa=aa.hy);ta&&"object"===typeof ta&&(ta=ta.hy);this.hy=dl(a,c,d,e,g,n,F,aa,ta);h(xB)[this.hy]=this}xB.prototype=Object.create(UA.prototype);xB.prototype.constructor=xB;xB.prototype.iy=xB;xB.jy={}; -b.btHeightfieldTerrainShape=xB;xB.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);el(c,a)};xB.prototype.getMargin=function(){return fl(this.hy)};xB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);gl(c,a)};xB.prototype.getLocalScaling=function(){return k(hl(this.hy),p)};xB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);il(d,a,c)}; -xB.prototype.__destroy__=function(){jl(this.hy)};function yB(){this.hy=kl();h(yB)[this.hy]=this}yB.prototype=Object.create(iB.prototype);yB.prototype.constructor=yB;yB.prototype.iy=yB;yB.jy={};b.btDefaultSoftBodySolver=yB;yB.prototype.__destroy__=function(){ll(this.hy)};function zB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=ml(a);h(zB)[this.hy]=this}zB.prototype=Object.create(OA.prototype);zB.prototype.constructor=zB;zB.prototype.iy=zB;zB.jy={};b.btCollisionDispatcher=zB; -zB.prototype.getNumManifolds=function(){return nl(this.hy)};zB.prototype.getManifoldByIndexInternal=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(ol(c,a),dB)};zB.prototype.__destroy__=function(){pl(this.hy)}; -function AB(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);this.hy=void 0===d?ql(a,c):void 0===e?rl(a,c,d):void 0===g?sl(a,c,d,e):tl(a,c,d,e,g);h(AB)[this.hy]=this}AB.prototype=Object.create(f.prototype);AB.prototype.constructor=AB;AB.prototype.iy=AB;AB.jy={};b.btAxisSweep3=AB;AB.prototype.__destroy__=function(){ul(this.hy)}; -function SA(){throw"cannot construct a VoidPtr, no constructor in IDL";}SA.prototype=Object.create(f.prototype);SA.prototype.constructor=SA;SA.prototype.iy=SA;SA.jy={};b.VoidPtr=SA;SA.prototype.__destroy__=function(){vl(this.hy)};function J(){this.hy=wl();h(J)[this.hy]=this}J.prototype=Object.create(f.prototype);J.prototype.constructor=J;J.prototype.iy=J;J.jy={};b.btSoftBodyWorldInfo=J;J.prototype.get_air_density=J.prototype.Yy=function(){return xl(this.hy)}; -J.prototype.set_air_density=J.prototype.FB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yl(c,a)};Object.defineProperty(J.prototype,"air_density",{get:J.prototype.Yy,set:J.prototype.FB});J.prototype.get_water_density=J.prototype.CB=function(){return zl(this.hy)};J.prototype.set_water_density=J.prototype.iE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Al(c,a)};Object.defineProperty(J.prototype,"water_density",{get:J.prototype.CB,set:J.prototype.iE}); -J.prototype.get_water_offset=J.prototype.EB=function(){return Bl(this.hy)};J.prototype.set_water_offset=J.prototype.kE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Cl(c,a)};Object.defineProperty(J.prototype,"water_offset",{get:J.prototype.EB,set:J.prototype.kE});J.prototype.get_m_maxDisplacement=J.prototype.EA=function(){return Dl(this.hy)};J.prototype.set_m_maxDisplacement=J.prototype.kD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);El(c,a)}; -Object.defineProperty(J.prototype,"m_maxDisplacement",{get:J.prototype.EA,set:J.prototype.kD});J.prototype.get_water_normal=J.prototype.DB=function(){return k(Fl(this.hy),p)};J.prototype.set_water_normal=J.prototype.jE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Gl(c,a)};Object.defineProperty(J.prototype,"water_normal",{get:J.prototype.DB,set:J.prototype.jE});J.prototype.get_m_broadphase=J.prototype.Gz=function(){return k(Hl(this.hy),QA)}; -J.prototype.set_m_broadphase=J.prototype.mC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Il(c,a)};Object.defineProperty(J.prototype,"m_broadphase",{get:J.prototype.Gz,set:J.prototype.mC});J.prototype.get_m_dispatcher=J.prototype.Xz=function(){return k(Jl(this.hy),OA)};J.prototype.set_m_dispatcher=J.prototype.DC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Kl(c,a)};Object.defineProperty(J.prototype,"m_dispatcher",{get:J.prototype.Xz,set:J.prototype.DC}); -J.prototype.get_m_gravity=J.prototype.fA=function(){return k(Ll(this.hy),p)};J.prototype.set_m_gravity=J.prototype.MC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ml(c,a)};Object.defineProperty(J.prototype,"m_gravity",{get:J.prototype.fA,set:J.prototype.MC});J.prototype.__destroy__=function(){Nl(this.hy)}; -function BB(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);this.hy=void 0===d?Ol(a,c):void 0===e?_emscripten_bind_btConeTwistConstraint_btConeTwistConstraint_3(a,c,d):Pl(a,c,d,e);h(BB)[this.hy]=this}BB.prototype=Object.create(TA.prototype);BB.prototype.constructor=BB;BB.prototype.iy=BB;BB.jy={};b.btConeTwistConstraint=BB; -BB.prototype.setLimit=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Ql(d,a,c)};BB.prototype.setAngularOnly=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Rl(c,a)};BB.prototype.setDamping=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Sl(c,a)};BB.prototype.enableMotor=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Tl(c,a)}; -BB.prototype.setMaxMotorImpulse=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ul(c,a)};BB.prototype.setMaxMotorImpulseNormalized=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vl(c,a)};BB.prototype.setMotorTarget=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wl(c,a)};BB.prototype.setMotorTargetInConstraintSpace=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xl(c,a)}; -BB.prototype.enableFeedback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Yl(c,a)};BB.prototype.getBreakingImpulseThreshold=function(){return Zl(this.hy)};BB.prototype.setBreakingImpulseThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);$l(c,a)};BB.prototype.getParam=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return am(d,a,c)}; -BB.prototype.setParam=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);bm(e,a,c,d)};BB.prototype.__destroy__=function(){cm(this.hy)}; -function CB(a,c,d,e,g,n,F){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);n&&"object"===typeof n&&(n=n.hy);F&&"object"===typeof F&&(F=F.hy);this.hy=void 0===d?dm(a,c):void 0===e?em(a,c,d):void 0===g?fm(a,c,d,e):void 0===n?gm(a,c,d,e,g):void 0===F?hm(a,c,d,e,g,n):im(a,c,d,e,g,n,F);h(CB)[this.hy]=this}CB.prototype=Object.create(TA.prototype);CB.prototype.constructor=CB; -CB.prototype.iy=CB;CB.jy={};b.btHingeConstraint=CB;CB.prototype.setLimit=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);void 0===g?jm(n,a,c,d,e):km(n,a,c,d,e,g)};CB.prototype.enableAngularMotor=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);lm(e,a,c,d)}; -CB.prototype.setAngularOnly=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);mm(c,a)};CB.prototype.enableMotor=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);nm(c,a)};CB.prototype.setMaxMotorImpulse=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);om(c,a)};CB.prototype.setMotorTarget=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);pm(d,a,c)}; -CB.prototype.enableFeedback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);qm(c,a)};CB.prototype.getBreakingImpulseThreshold=function(){return rm(this.hy)};CB.prototype.setBreakingImpulseThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);sm(c,a)};CB.prototype.getParam=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return tm(d,a,c)}; -CB.prototype.setParam=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);um(e,a,c,d)};CB.prototype.__destroy__=function(){wm(this.hy)};function DB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=xm(a,c);h(DB)[this.hy]=this}DB.prototype=Object.create(YA.prototype);DB.prototype.constructor=DB;DB.prototype.iy=DB;DB.jy={};b.btConeShapeZ=DB; -DB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ym(c,a)};DB.prototype.getLocalScaling=function(){return k(zm(this.hy),p)};DB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Am(d,a,c)};DB.prototype.__destroy__=function(){Bm(this.hy)};function EB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=Cm(a,c);h(EB)[this.hy]=this}EB.prototype=Object.create(YA.prototype); -EB.prototype.constructor=EB;EB.prototype.iy=EB;EB.jy={};b.btConeShapeX=EB;EB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Dm(c,a)};EB.prototype.getLocalScaling=function(){return k(Em(this.hy),p)};EB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Fm(d,a,c)};EB.prototype.__destroy__=function(){Gm(this.hy)}; -function FB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=void 0===a?Hm():void 0===c?Im(a):Jm(a,c);h(FB)[this.hy]=this}FB.prototype=Object.create(fB.prototype);FB.prototype.constructor=FB;FB.prototype.iy=FB;FB.jy={};b.btTriangleMesh=FB;FB.prototype.addTriangle=function(a,c,d,e){var g=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);void 0===e?Km(g,a,c,d):Lm(g,a,c,d,e)}; -FB.prototype.findOrAddVertex=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return Mm(d,a,c)};FB.prototype.addIndex=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Nm(c,a)};FB.prototype.getIndexedMeshArray=function(){return k(Om(this.hy),uB)};FB.prototype.setScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pm(c,a)};FB.prototype.__destroy__=function(){Qm(this.hy)}; -function GB(a,c){IA();"object"==typeof a&&(a=MA(a));c&&"object"===typeof c&&(c=c.hy);this.hy=void 0===a?Rm():void 0===c?Sm(a):Tm(a,c);h(GB)[this.hy]=this}GB.prototype=Object.create(m.prototype);GB.prototype.constructor=GB;GB.prototype.iy=GB;GB.jy={};b.btConvexHullShape=GB;GB.prototype.addPoint=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);void 0===c?Um(d,a):Vm(d,a,c)}; -GB.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wm(c,a)};GB.prototype.getMargin=function(){return Xm(this.hy)};GB.prototype.getNumVertices=function(){return Ym(this.hy)};GB.prototype.initializePolyhedralFeatures=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return!!Zm(c,a)};GB.prototype.recalcLocalAabb=function(){$m(this.hy)};GB.prototype.getConvexPolyhedron=function(){return k(an(this.hy),HB)}; -GB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);bn(c,a)};GB.prototype.getLocalScaling=function(){return k(cn(this.hy),p)};GB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);dn(d,a,c)};GB.prototype.__destroy__=function(){en(this.hy)};function K(){this.hy=fn();h(K)[this.hy]=this}K.prototype=Object.create(f.prototype);K.prototype.constructor=K;K.prototype.iy=K;K.jy={}; -b.btVehicleTuning=K;K.prototype.get_m_suspensionStiffness=K.prototype.wy=function(){return gn(this.hy)};K.prototype.set_m_suspensionStiffness=K.prototype.Dy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);hn(c,a)};Object.defineProperty(K.prototype,"m_suspensionStiffness",{get:K.prototype.wy,set:K.prototype.Dy});K.prototype.get_m_suspensionCompression=K.prototype.bB=function(){return jn(this.hy)}; -K.prototype.set_m_suspensionCompression=K.prototype.ID=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);kn(c,a)};Object.defineProperty(K.prototype,"m_suspensionCompression",{get:K.prototype.bB,set:K.prototype.ID});K.prototype.get_m_suspensionDamping=K.prototype.cB=function(){return ln(this.hy)};K.prototype.set_m_suspensionDamping=K.prototype.JD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);mn(c,a)}; -Object.defineProperty(K.prototype,"m_suspensionDamping",{get:K.prototype.cB,set:K.prototype.JD});K.prototype.get_m_maxSuspensionTravelCm=K.prototype.vy=function(){return nn(this.hy)};K.prototype.set_m_maxSuspensionTravelCm=K.prototype.Cy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);on(c,a)};Object.defineProperty(K.prototype,"m_maxSuspensionTravelCm",{get:K.prototype.vy,set:K.prototype.Cy});K.prototype.get_m_frictionSlip=K.prototype.ry=function(){return pn(this.hy)}; -K.prototype.set_m_frictionSlip=K.prototype.yy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);qn(c,a)};Object.defineProperty(K.prototype,"m_frictionSlip",{get:K.prototype.ry,set:K.prototype.yy});K.prototype.get_m_maxSuspensionForce=K.prototype.uy=function(){return rn(this.hy)};K.prototype.set_m_maxSuspensionForce=K.prototype.By=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);sn(c,a)};Object.defineProperty(K.prototype,"m_maxSuspensionForce",{get:K.prototype.uy,set:K.prototype.By}); -function IB(){throw"cannot construct a btCollisionObjectWrapper, no constructor in IDL";}IB.prototype=Object.create(f.prototype);IB.prototype.constructor=IB;IB.prototype.iy=IB;IB.jy={};b.btCollisionObjectWrapper=IB;IB.prototype.getWorldTransform=function(){return k(tn(this.hy),r)};IB.prototype.getCollisionObject=function(){return k(un(this.hy),q)};IB.prototype.getCollisionShape=function(){return k(vn(this.hy),m)};function JB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=wn(a);h(JB)[this.hy]=this} -JB.prototype=Object.create(f.prototype);JB.prototype.constructor=JB;JB.prototype.iy=JB;JB.jy={};b.btShapeHull=JB;JB.prototype.buildHull=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return!!xn(c,a)};JB.prototype.numVertices=function(){return yn(this.hy)};JB.prototype.getVertexPointer=function(){return k(zn(this.hy),p)};JB.prototype.__destroy__=function(){An(this.hy)}; -function KB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=void 0===a?Bn():void 0===c?Cn(a):Dn(a,c);h(KB)[this.hy]=this}KB.prototype=Object.create(gB.prototype);KB.prototype.constructor=KB;KB.prototype.iy=KB;KB.jy={};b.btDefaultMotionState=KB;KB.prototype.getWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);En(c,a)};KB.prototype.setWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Fn(c,a)}; -KB.prototype.get_m_graphicsWorldTrans=KB.prototype.eA=function(){return k(Gn(this.hy),r)};KB.prototype.set_m_graphicsWorldTrans=KB.prototype.LC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Hn(c,a)};Object.defineProperty(KB.prototype,"m_graphicsWorldTrans",{get:KB.prototype.eA,set:KB.prototype.LC});KB.prototype.__destroy__=function(){In(this.hy)};function L(a){a&&"object"===typeof a&&(a=a.hy);this.hy=Jn(a);h(L)[this.hy]=this}L.prototype=Object.create(f.prototype); -L.prototype.constructor=L;L.prototype.iy=L;L.jy={};b.btWheelInfo=L;L.prototype.getSuspensionRestLength=function(){return Kn(this.hy)};L.prototype.updateWheel=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Ln(d,a,c)};L.prototype.get_m_suspensionStiffness=L.prototype.wy=function(){return Mn(this.hy)};L.prototype.set_m_suspensionStiffness=L.prototype.Dy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Nn(c,a)}; -Object.defineProperty(L.prototype,"m_suspensionStiffness",{get:L.prototype.wy,set:L.prototype.Dy});L.prototype.get_m_frictionSlip=L.prototype.ry=function(){return On(this.hy)};L.prototype.set_m_frictionSlip=L.prototype.yy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pn(c,a)};Object.defineProperty(L.prototype,"m_frictionSlip",{get:L.prototype.ry,set:L.prototype.yy});L.prototype.get_m_engineForce=L.prototype.aA=function(){return Qn(this.hy)}; -L.prototype.set_m_engineForce=L.prototype.HC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Rn(c,a)};Object.defineProperty(L.prototype,"m_engineForce",{get:L.prototype.aA,set:L.prototype.HC});L.prototype.get_m_rollInfluence=L.prototype.SA=function(){return Sn(this.hy)};L.prototype.set_m_rollInfluence=L.prototype.yD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Tn(c,a)};Object.defineProperty(L.prototype,"m_rollInfluence",{get:L.prototype.SA,set:L.prototype.yD}); -L.prototype.get_m_suspensionRestLength1=L.prototype.gB=function(){return Un(this.hy)};L.prototype.set_m_suspensionRestLength1=L.prototype.ND=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vn(c,a)};Object.defineProperty(L.prototype,"m_suspensionRestLength1",{get:L.prototype.gB,set:L.prototype.ND});L.prototype.get_m_wheelsRadius=L.prototype.uB=function(){return Wn(this.hy)};L.prototype.set_m_wheelsRadius=L.prototype.aE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xn(c,a)}; -Object.defineProperty(L.prototype,"m_wheelsRadius",{get:L.prototype.uB,set:L.prototype.aE});L.prototype.get_m_wheelsDampingCompression=L.prototype.My=function(){return Yn(this.hy)};L.prototype.set_m_wheelsDampingCompression=L.prototype.Vy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Zn(c,a)};Object.defineProperty(L.prototype,"m_wheelsDampingCompression",{get:L.prototype.My,set:L.prototype.Vy});L.prototype.get_m_wheelsDampingRelaxation=L.prototype.Ny=function(){return $n(this.hy)}; -L.prototype.set_m_wheelsDampingRelaxation=L.prototype.Wy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ao(c,a)};Object.defineProperty(L.prototype,"m_wheelsDampingRelaxation",{get:L.prototype.Ny,set:L.prototype.Wy});L.prototype.get_m_steering=L.prototype.$A=function(){return bo(this.hy)};L.prototype.set_m_steering=L.prototype.GD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);co(c,a)};Object.defineProperty(L.prototype,"m_steering",{get:L.prototype.$A,set:L.prototype.GD}); -L.prototype.get_m_maxSuspensionForce=L.prototype.uy=function(){return eo(this.hy)};L.prototype.set_m_maxSuspensionForce=L.prototype.By=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);fo(c,a)};Object.defineProperty(L.prototype,"m_maxSuspensionForce",{get:L.prototype.uy,set:L.prototype.By});L.prototype.get_m_maxSuspensionTravelCm=L.prototype.vy=function(){return go(this.hy)}; -L.prototype.set_m_maxSuspensionTravelCm=L.prototype.Cy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ho(c,a)};Object.defineProperty(L.prototype,"m_maxSuspensionTravelCm",{get:L.prototype.vy,set:L.prototype.Cy});L.prototype.get_m_wheelsSuspensionForce=L.prototype.vB=function(){return io(this.hy)};L.prototype.set_m_wheelsSuspensionForce=L.prototype.bE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);jo(c,a)}; -Object.defineProperty(L.prototype,"m_wheelsSuspensionForce",{get:L.prototype.vB,set:L.prototype.bE});L.prototype.get_m_bIsFrontWheel=L.prototype.Fy=function(){return!!ko(this.hy)};L.prototype.set_m_bIsFrontWheel=L.prototype.Oy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);lo(c,a)};Object.defineProperty(L.prototype,"m_bIsFrontWheel",{get:L.prototype.Fy,set:L.prototype.Oy});L.prototype.get_m_raycastInfo=L.prototype.QA=function(){return k(mo(this.hy),M)}; -L.prototype.set_m_raycastInfo=L.prototype.wD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);no(c,a)};Object.defineProperty(L.prototype,"m_raycastInfo",{get:L.prototype.QA,set:L.prototype.wD});L.prototype.get_m_chassisConnectionPointCS=L.prototype.Mz=function(){return k(oo(this.hy),p)};L.prototype.set_m_chassisConnectionPointCS=L.prototype.sC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);po(c,a)}; -Object.defineProperty(L.prototype,"m_chassisConnectionPointCS",{get:L.prototype.Mz,set:L.prototype.sC});L.prototype.get_m_worldTransform=L.prototype.wB=function(){return k(qo(this.hy),r)};L.prototype.set_m_worldTransform=L.prototype.cE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ro(c,a)};Object.defineProperty(L.prototype,"m_worldTransform",{get:L.prototype.wB,set:L.prototype.cE});L.prototype.get_m_wheelDirectionCS=L.prototype.Ly=function(){return k(so(this.hy),p)}; -L.prototype.set_m_wheelDirectionCS=L.prototype.Uy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);to(c,a)};Object.defineProperty(L.prototype,"m_wheelDirectionCS",{get:L.prototype.Ly,set:L.prototype.Uy});L.prototype.get_m_wheelAxleCS=L.prototype.Ky=function(){return k(uo(this.hy),p)};L.prototype.set_m_wheelAxleCS=L.prototype.Ty=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);vo(c,a)};Object.defineProperty(L.prototype,"m_wheelAxleCS",{get:L.prototype.Ky,set:L.prototype.Ty}); -L.prototype.get_m_rotation=L.prototype.UA=function(){return wo(this.hy)};L.prototype.set_m_rotation=L.prototype.AD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);xo(c,a)};Object.defineProperty(L.prototype,"m_rotation",{get:L.prototype.UA,set:L.prototype.AD});L.prototype.get_m_deltaRotation=L.prototype.Vz=function(){return yo(this.hy)};L.prototype.set_m_deltaRotation=L.prototype.BC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);zo(c,a)}; -Object.defineProperty(L.prototype,"m_deltaRotation",{get:L.prototype.Vz,set:L.prototype.BC});L.prototype.get_m_brake=L.prototype.Fz=function(){return Ao(this.hy)};L.prototype.set_m_brake=L.prototype.lC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Bo(c,a)};Object.defineProperty(L.prototype,"m_brake",{get:L.prototype.Fz,set:L.prototype.lC});L.prototype.get_m_clippedInvContactDotSuspension=L.prototype.Nz=function(){return Co(this.hy)}; -L.prototype.set_m_clippedInvContactDotSuspension=L.prototype.tC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Do(c,a)};Object.defineProperty(L.prototype,"m_clippedInvContactDotSuspension",{get:L.prototype.Nz,set:L.prototype.tC});L.prototype.get_m_suspensionRelativeVelocity=L.prototype.eB=function(){return Eo(this.hy)};L.prototype.set_m_suspensionRelativeVelocity=L.prototype.LD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Fo(c,a)}; -Object.defineProperty(L.prototype,"m_suspensionRelativeVelocity",{get:L.prototype.eB,set:L.prototype.LD});L.prototype.get_m_skidInfo=L.prototype.XA=function(){return Go(this.hy)};L.prototype.set_m_skidInfo=L.prototype.DD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ho(c,a)};Object.defineProperty(L.prototype,"m_skidInfo",{get:L.prototype.XA,set:L.prototype.DD});L.prototype.__destroy__=function(){Io(this.hy)}; -function N(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);this.hy=void 0===a?Jo():void 0===c?_emscripten_bind_btVector4_btVector4_1(a):void 0===d?_emscripten_bind_btVector4_btVector4_2(a,c):void 0===e?_emscripten_bind_btVector4_btVector4_3(a,c,d):Ko(a,c,d,e);h(N)[this.hy]=this}N.prototype=Object.create(p.prototype);N.prototype.constructor=N;N.prototype.iy=N;N.jy={};b.btVector4=N;N.prototype.w=function(){return Lo(this.hy)}; -N.prototype.setValue=function(a,c,d,e){var g=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);Mo(g,a,c,d,e)};N.prototype.length=N.prototype.length=function(){return No(this.hy)};N.prototype.x=N.prototype.x=function(){return Oo(this.hy)};N.prototype.y=N.prototype.y=function(){return Po(this.hy)};N.prototype.z=N.prototype.z=function(){return Qo(this.hy)}; -N.prototype.setX=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ro(c,a)};N.prototype.setY=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);So(c,a)};N.prototype.setZ=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);To(c,a)};N.prototype.normalize=N.prototype.normalize=function(){Uo(this.hy)};N.prototype.rotate=N.prototype.rotate=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return k(Vo(d,a,c),p)}; -N.prototype.dot=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return Wo(c,a)};N.prototype.op_mul=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Xo(c,a),p)};N.prototype.op_add=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Yo(c,a),p)};N.prototype.op_sub=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Zo(c,a),p)};N.prototype.__destroy__=function(){$o(this.hy)};function LB(){this.hy=ap();h(LB)[this.hy]=this}LB.prototype=Object.create(f.prototype); -LB.prototype.constructor=LB;LB.prototype.iy=LB;LB.jy={};b.btDefaultCollisionConstructionInfo=LB;LB.prototype.__destroy__=function(){bp(this.hy)};function O(){throw"cannot construct a Anchor, no constructor in IDL";}O.prototype=Object.create(f.prototype);O.prototype.constructor=O;O.prototype.iy=O;O.jy={};b.Anchor=O;O.prototype.get_m_node=O.prototype.FA=function(){return k(cp(this.hy),Node)};O.prototype.set_m_node=O.prototype.lD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);dp(c,a)}; -Object.defineProperty(O.prototype,"m_node",{get:O.prototype.FA,set:O.prototype.lD});O.prototype.get_m_local=O.prototype.zA=function(){return k(ep(this.hy),p)};O.prototype.set_m_local=O.prototype.fD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);fp(c,a)};Object.defineProperty(O.prototype,"m_local",{get:O.prototype.zA,set:O.prototype.fD});O.prototype.get_m_body=O.prototype.Ez=function(){return k(gp(this.hy),I)}; -O.prototype.set_m_body=O.prototype.kC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);hp(c,a)};Object.defineProperty(O.prototype,"m_body",{get:O.prototype.Ez,set:O.prototype.kC});O.prototype.get_m_influence=O.prototype.sA=function(){return ip(this.hy)};O.prototype.set_m_influence=O.prototype.ZC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);jp(c,a)};Object.defineProperty(O.prototype,"m_influence",{get:O.prototype.sA,set:O.prototype.ZC}); -O.prototype.get_m_c0=O.prototype.Hz=function(){return k(kp(this.hy),jB)};O.prototype.set_m_c0=O.prototype.nC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);lp(c,a)};Object.defineProperty(O.prototype,"m_c0",{get:O.prototype.Hz,set:O.prototype.nC});O.prototype.get_m_c1=O.prototype.Iz=function(){return k(mp(this.hy),p)};O.prototype.set_m_c1=O.prototype.oC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);np(c,a)};Object.defineProperty(O.prototype,"m_c1",{get:O.prototype.Iz,set:O.prototype.oC}); -O.prototype.get_m_c2=O.prototype.Jz=function(){return op(this.hy)};O.prototype.set_m_c2=O.prototype.pC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);pp(c,a)};Object.defineProperty(O.prototype,"m_c2",{get:O.prototype.Jz,set:O.prototype.pC});O.prototype.__destroy__=function(){qp(this.hy)};function P(){throw"cannot construct a btVehicleRaycasterResult, no constructor in IDL";}P.prototype=Object.create(f.prototype);P.prototype.constructor=P;P.prototype.iy=P;P.jy={}; -b.btVehicleRaycasterResult=P;P.prototype.get_m_hitPointInWorld=P.prototype.nA=function(){return k(rp(this.hy),p)};P.prototype.set_m_hitPointInWorld=P.prototype.UC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);sp(c,a)};Object.defineProperty(P.prototype,"m_hitPointInWorld",{get:P.prototype.nA,set:P.prototype.UC});P.prototype.get_m_hitNormalInWorld=P.prototype.lA=function(){return k(tp(this.hy),p)}; -P.prototype.set_m_hitNormalInWorld=P.prototype.SC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);up(c,a)};Object.defineProperty(P.prototype,"m_hitNormalInWorld",{get:P.prototype.lA,set:P.prototype.SC});P.prototype.get_m_distFraction=P.prototype.Yz=function(){return vp(this.hy)};P.prototype.set_m_distFraction=P.prototype.EC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);wp(c,a)};Object.defineProperty(P.prototype,"m_distFraction",{get:P.prototype.Yz,set:P.prototype.EC}); -P.prototype.__destroy__=function(){xp(this.hy)};function pB(){throw"cannot construct a btVector3Array, no constructor in IDL";}pB.prototype=Object.create(f.prototype);pB.prototype.constructor=pB;pB.prototype.iy=pB;pB.jy={};b.btVector3Array=pB;pB.prototype.size=pB.prototype.size=function(){return yp(this.hy)};pB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(zp(c,a),p)};pB.prototype.__destroy__=function(){Ap(this.hy)}; -function MB(){throw"cannot construct a btConstraintSolver, no constructor in IDL";}MB.prototype=Object.create(f.prototype);MB.prototype.constructor=MB;MB.prototype.iy=MB;MB.jy={};b.btConstraintSolver=MB;MB.prototype.__destroy__=function(){Bp(this.hy)};function Q(a,c,d){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);this.hy=Cp(a,c,d);h(Q)[this.hy]=this}Q.prototype=Object.create(ZA.prototype);Q.prototype.constructor=Q;Q.prototype.iy=Q;Q.jy={}; -b.btRaycastVehicle=Q;Q.prototype.applyEngineForce=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Dp(d,a,c)};Q.prototype.setSteeringValue=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Ep(d,a,c)};Q.prototype.getWheelTransformWS=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Fp(c,a),r)}; -Q.prototype.updateWheelTransform=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Gp(d,a,c)};Q.prototype.addWheel=function(a,c,d,e,g,n,F){var aa=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);n&&"object"===typeof n&&(n=n.hy);F&&"object"===typeof F&&(F=F.hy);return k(Hp(aa,a,c,d,e,g,n,F),L)};Q.prototype.getNumWheels=function(){return Ip(this.hy)}; -Q.prototype.getRigidBody=function(){return k(Jp(this.hy),I)};Q.prototype.getWheelInfo=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Kp(c,a),L)};Q.prototype.setBrake=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Lp(d,a,c)};Q.prototype.setCoordinateSystem=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Mp(e,a,c,d)};Q.prototype.getCurrentSpeedKmHour=function(){return Np(this.hy)}; -Q.prototype.getChassisWorldTransform=function(){return k(Op(this.hy),r)};Q.prototype.rayCast=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return Pp(c,a)};Q.prototype.updateVehicle=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qp(c,a)};Q.prototype.resetSuspension=function(){Rp(this.hy)};Q.prototype.getSteeringValue=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return Sp(c,a)}; -Q.prototype.updateWheelTransformsWS=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);void 0===c?Tp(d,a):Up(d,a,c)};Q.prototype.setPitchControl=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vp(c,a)};Q.prototype.updateSuspension=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wp(c,a)};Q.prototype.updateFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xp(c,a)};Q.prototype.getRightAxis=function(){return Yp(this.hy)}; -Q.prototype.getUpAxis=function(){return Zp(this.hy)};Q.prototype.getForwardAxis=function(){return $p(this.hy)};Q.prototype.getForwardVector=function(){return k(aq(this.hy),p)};Q.prototype.getUserConstraintType=function(){return bq(this.hy)};Q.prototype.setUserConstraintType=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);cq(c,a)};Q.prototype.setUserConstraintId=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);dq(c,a)};Q.prototype.getUserConstraintId=function(){return eq(this.hy)}; -Q.prototype.updateAction=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);fq(d,a,c)};Q.prototype.__destroy__=function(){gq(this.hy)};function NB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=hq(a);h(NB)[this.hy]=this}NB.prototype=Object.create(bB.prototype);NB.prototype.constructor=NB;NB.prototype.iy=NB;NB.jy={};b.btCylinderShapeX=NB;NB.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);iq(c,a)};NB.prototype.getMargin=function(){return jq(this.hy)}; -NB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);kq(c,a)};NB.prototype.getLocalScaling=function(){return k(lq(this.hy),p)};NB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);mq(d,a,c)};NB.prototype.__destroy__=function(){nq(this.hy)};function OB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=oq(a);h(OB)[this.hy]=this}OB.prototype=Object.create(bB.prototype);OB.prototype.constructor=OB; -OB.prototype.iy=OB;OB.jy={};b.btCylinderShapeZ=OB;OB.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);pq(c,a)};OB.prototype.getMargin=function(){return qq(this.hy)};OB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);rq(c,a)};OB.prototype.getLocalScaling=function(){return k(sq(this.hy),p)};OB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);tq(d,a,c)}; -OB.prototype.__destroy__=function(){uq(this.hy)};function HB(){throw"cannot construct a btConvexPolyhedron, no constructor in IDL";}HB.prototype=Object.create(f.prototype);HB.prototype.constructor=HB;HB.prototype.iy=HB;HB.jy={};b.btConvexPolyhedron=HB;HB.prototype.get_m_vertices=HB.prototype.qB=function(){return k(vq(this.hy),pB)};HB.prototype.set_m_vertices=HB.prototype.XD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);wq(c,a)}; -Object.defineProperty(HB.prototype,"m_vertices",{get:HB.prototype.qB,set:HB.prototype.XD});HB.prototype.get_m_faces=HB.prototype.Gy=function(){return k(xq(this.hy),PB)};HB.prototype.set_m_faces=HB.prototype.Py=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yq(c,a)};Object.defineProperty(HB.prototype,"m_faces",{get:HB.prototype.Gy,set:HB.prototype.Py});HB.prototype.__destroy__=function(){zq(this.hy)};function QB(){this.hy=Aq();h(QB)[this.hy]=this}QB.prototype=Object.create(f.prototype); -QB.prototype.constructor=QB;QB.prototype.iy=QB;QB.jy={};b.btSequentialImpulseConstraintSolver=QB;QB.prototype.__destroy__=function(){Bq(this.hy)};function RB(){throw"cannot construct a tAnchorArray, no constructor in IDL";}RB.prototype=Object.create(f.prototype);RB.prototype.constructor=RB;RB.prototype.iy=RB;RB.jy={};b.tAnchorArray=RB;RB.prototype.size=RB.prototype.size=function(){return Cq(this.hy)};RB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Dq(c,a),O)}; -RB.prototype.clear=RB.prototype.clear=function(){Eq(this.hy)};RB.prototype.push_back=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Fq(c,a)};RB.prototype.pop_back=function(){Gq(this.hy)};RB.prototype.__destroy__=function(){Hq(this.hy)};function M(){throw"cannot construct a RaycastInfo, no constructor in IDL";}M.prototype=Object.create(f.prototype);M.prototype.constructor=M;M.prototype.iy=M;M.jy={};b.RaycastInfo=M; -M.prototype.get_m_contactNormalWS=M.prototype.Pz=function(){return k(Iq(this.hy),p)};M.prototype.set_m_contactNormalWS=M.prototype.vC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Jq(c,a)};Object.defineProperty(M.prototype,"m_contactNormalWS",{get:M.prototype.Pz,set:M.prototype.vC});M.prototype.get_m_contactPointWS=M.prototype.Qz=function(){return k(Kq(this.hy),p)};M.prototype.set_m_contactPointWS=M.prototype.wC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Lq(c,a)}; -Object.defineProperty(M.prototype,"m_contactPointWS",{get:M.prototype.Qz,set:M.prototype.wC});M.prototype.get_m_suspensionLength=M.prototype.dB=function(){return Mq(this.hy)};M.prototype.set_m_suspensionLength=M.prototype.KD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Nq(c,a)};Object.defineProperty(M.prototype,"m_suspensionLength",{get:M.prototype.dB,set:M.prototype.KD});M.prototype.get_m_hardPointWS=M.prototype.hA=function(){return k(Oq(this.hy),p)}; -M.prototype.set_m_hardPointWS=M.prototype.OC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pq(c,a)};Object.defineProperty(M.prototype,"m_hardPointWS",{get:M.prototype.hA,set:M.prototype.OC});M.prototype.get_m_wheelDirectionWS=M.prototype.sB=function(){return k(Qq(this.hy),p)};M.prototype.set_m_wheelDirectionWS=M.prototype.ZD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Rq(c,a)};Object.defineProperty(M.prototype,"m_wheelDirectionWS",{get:M.prototype.sB,set:M.prototype.ZD}); -M.prototype.get_m_wheelAxleWS=M.prototype.rB=function(){return k(Sq(this.hy),p)};M.prototype.set_m_wheelAxleWS=M.prototype.YD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Tq(c,a)};Object.defineProperty(M.prototype,"m_wheelAxleWS",{get:M.prototype.rB,set:M.prototype.YD});M.prototype.get_m_isInContact=M.prototype.tA=function(){return!!Uq(this.hy)};M.prototype.set_m_isInContact=M.prototype.$C=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vq(c,a)}; -Object.defineProperty(M.prototype,"m_isInContact",{get:M.prototype.tA,set:M.prototype.$C});M.prototype.get_m_groundObject=M.prototype.gA=function(){return Wq(this.hy)};M.prototype.set_m_groundObject=M.prototype.NC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xq(c,a)};Object.defineProperty(M.prototype,"m_groundObject",{get:M.prototype.gA,set:M.prototype.NC});M.prototype.__destroy__=function(){Yq(this.hy)}; -function SB(a,c,d){IA();a&&"object"===typeof a&&(a=a.hy);"object"==typeof c&&(c=MA(c));d&&"object"===typeof d&&(d=d.hy);this.hy=Zq(a,c,d);h(SB)[this.hy]=this}SB.prototype=Object.create(m.prototype);SB.prototype.constructor=SB;SB.prototype.iy=SB;SB.jy={};b.btMultiSphereShape=SB;SB.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);$q(c,a)};SB.prototype.getLocalScaling=function(){return k(ar(this.hy),p)}; -SB.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);br(d,a,c)};SB.prototype.__destroy__=function(){cr(this.hy)};function R(a,c,d,e){IA();a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);"object"==typeof e&&(e=MA(e));this.hy=dr(a,c,d,e);h(R)[this.hy]=this}R.prototype=Object.create(q.prototype);R.prototype.constructor=R;R.prototype.iy=R;R.jy={};b.btSoftBody=R; -R.prototype.checkLink=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return!!er(d,a,c)};R.prototype.checkFace=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);return!!fr(e,a,c,d)};R.prototype.appendMaterial=function(){return k(gr(this.hy),A)};R.prototype.appendNode=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);hr(d,a,c)}; -R.prototype.appendLink=function(a,c,d,e){var g=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);ir(g,a,c,d,e)};R.prototype.appendFace=function(a,c,d,e){var g=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);jr(g,a,c,d,e)}; -R.prototype.appendTetra=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);kr(n,a,c,d,e,g)};R.prototype.appendAnchor=function(a,c,d,e){var g=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);lr(g,a,c,d,e)}; -R.prototype.addForce=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);void 0===c?mr(d,a):nr(d,a,c)};R.prototype.addAeroForceToNode=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);or(d,a,c)};R.prototype.getTotalMass=function(){return pr(this.hy)};R.prototype.setTotalMass=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);qr(d,a,c)}; -R.prototype.setMass=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);rr(d,a,c)};R.prototype.transform=R.prototype.transform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);sr(c,a)};R.prototype.translate=R.prototype.translate=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);tr(c,a)};R.prototype.rotate=R.prototype.rotate=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ur(c,a)}; -R.prototype.scale=R.prototype.scale=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);vr(c,a)};R.prototype.generateClusters=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return void 0===c?wr(d,a):xr(d,a,c)};R.prototype.generateBendingConstraints=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return yr(d,a,c)}; -R.prototype.upcast=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(zr(c,a),R)};R.prototype.setAnisotropicFriction=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Ar(d,a,c)};R.prototype.getCollisionShape=function(){return k(Br(this.hy),m)};R.prototype.setContactProcessingThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Cr(c,a)}; -R.prototype.setActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Dr(c,a)};R.prototype.forceActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Er(c,a)};R.prototype.activate=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);void 0===a?Fr(c):Gr(c,a)};R.prototype.isActive=function(){return!!Hr(this.hy)};R.prototype.isKinematicObject=function(){return!!Ir(this.hy)};R.prototype.isStaticObject=function(){return!!Jr(this.hy)}; -R.prototype.isStaticOrKinematicObject=function(){return!!Kr(this.hy)};R.prototype.getRestitution=function(){return Lr(this.hy)};R.prototype.getFriction=function(){return Mr(this.hy)};R.prototype.getRollingFriction=function(){return Nr(this.hy)};R.prototype.setRestitution=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Or(c,a)};R.prototype.setFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pr(c,a)}; -R.prototype.setRollingFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qr(c,a)};R.prototype.getWorldTransform=function(){return k(Rr(this.hy),r)};R.prototype.getCollisionFlags=function(){return Sr(this.hy)};R.prototype.setCollisionFlags=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Tr(c,a)};R.prototype.setWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ur(c,a)}; -R.prototype.setCollisionShape=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vr(c,a)};R.prototype.setCcdMotionThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wr(c,a)};R.prototype.setCcdSweptSphereRadius=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Xr(c,a)};R.prototype.getUserIndex=function(){return Yr(this.hy)};R.prototype.setUserIndex=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Zr(c,a)}; -R.prototype.getUserPointer=function(){return k($r(this.hy),SA)};R.prototype.setUserPointer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);as(c,a)};R.prototype.getBroadphaseHandle=function(){return k(bs(this.hy),t)};R.prototype.get_m_cfg=R.prototype.Kz=function(){return k(cs(this.hy),S)};R.prototype.set_m_cfg=R.prototype.qC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ds(c,a)};Object.defineProperty(R.prototype,"m_cfg",{get:R.prototype.Kz,set:R.prototype.qC}); -R.prototype.get_m_nodes=R.prototype.GA=function(){return k(es(this.hy),TB)};R.prototype.set_m_nodes=R.prototype.mD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);gs(c,a)};Object.defineProperty(R.prototype,"m_nodes",{get:R.prototype.GA,set:R.prototype.mD});R.prototype.get_m_faces=R.prototype.Gy=function(){return k(hs(this.hy),UB)};R.prototype.set_m_faces=R.prototype.Py=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);is(c,a)}; -Object.defineProperty(R.prototype,"m_faces",{get:R.prototype.Gy,set:R.prototype.Py});R.prototype.get_m_materials=R.prototype.DA=function(){return k(js(this.hy),qB)};R.prototype.set_m_materials=R.prototype.jD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ks(c,a)};Object.defineProperty(R.prototype,"m_materials",{get:R.prototype.DA,set:R.prototype.jD});R.prototype.get_m_anchors=R.prototype.Az=function(){return k(ls(this.hy),RB)}; -R.prototype.set_m_anchors=R.prototype.gC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ms(c,a)};Object.defineProperty(R.prototype,"m_anchors",{get:R.prototype.Az,set:R.prototype.gC});R.prototype.__destroy__=function(){ns(this.hy)};function VB(){throw"cannot construct a btIntArray, no constructor in IDL";}VB.prototype=Object.create(f.prototype);VB.prototype.constructor=VB;VB.prototype.iy=VB;VB.jy={};b.btIntArray=VB;VB.prototype.size=VB.prototype.size=function(){return ps(this.hy)}; -VB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return qs(c,a)};VB.prototype.__destroy__=function(){rs(this.hy)};function S(){throw"cannot construct a Config, no constructor in IDL";}S.prototype=Object.create(f.prototype);S.prototype.constructor=S;S.prototype.iy=S;S.jy={};b.Config=S;S.prototype.get_kVCF=S.prototype.sz=function(){return ss(this.hy)};S.prototype.set_kVCF=S.prototype.$B=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ts(c,a)}; -Object.defineProperty(S.prototype,"kVCF",{get:S.prototype.sz,set:S.prototype.$B});S.prototype.get_kDP=S.prototype.fz=function(){return us(this.hy)};S.prototype.set_kDP=S.prototype.NB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);vs(c,a)};Object.defineProperty(S.prototype,"kDP",{get:S.prototype.fz,set:S.prototype.NB});S.prototype.get_kDG=S.prototype.ez=function(){return xs(this.hy)};S.prototype.set_kDG=S.prototype.MB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ys(c,a)}; -Object.defineProperty(S.prototype,"kDG",{get:S.prototype.ez,set:S.prototype.MB});S.prototype.get_kLF=S.prototype.hz=function(){return zs(this.hy)};S.prototype.set_kLF=S.prototype.PB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);As(c,a)};Object.defineProperty(S.prototype,"kLF",{get:S.prototype.hz,set:S.prototype.PB});S.prototype.get_kPR=S.prototype.jz=function(){return Bs(this.hy)};S.prototype.set_kPR=S.prototype.RB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Cs(c,a)}; -Object.defineProperty(S.prototype,"kPR",{get:S.prototype.jz,set:S.prototype.RB});S.prototype.get_kVC=S.prototype.rz=function(){return Ds(this.hy)};S.prototype.set_kVC=S.prototype.ZB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Es(c,a)};Object.defineProperty(S.prototype,"kVC",{get:S.prototype.rz,set:S.prototype.ZB});S.prototype.get_kDF=S.prototype.dz=function(){return Fs(this.hy)};S.prototype.set_kDF=S.prototype.LB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Gs(c,a)}; -Object.defineProperty(S.prototype,"kDF",{get:S.prototype.dz,set:S.prototype.LB});S.prototype.get_kMT=S.prototype.iz=function(){return Hs(this.hy)};S.prototype.set_kMT=S.prototype.QB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Is(c,a)};Object.defineProperty(S.prototype,"kMT",{get:S.prototype.iz,set:S.prototype.QB});S.prototype.get_kCHR=S.prototype.cz=function(){return Js(this.hy)};S.prototype.set_kCHR=S.prototype.KB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ks(c,a)}; -Object.defineProperty(S.prototype,"kCHR",{get:S.prototype.cz,set:S.prototype.KB});S.prototype.get_kKHR=S.prototype.gz=function(){return Ls(this.hy)};S.prototype.set_kKHR=S.prototype.OB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ms(c,a)};Object.defineProperty(S.prototype,"kKHR",{get:S.prototype.gz,set:S.prototype.OB});S.prototype.get_kSHR=S.prototype.kz=function(){return Ns(this.hy)}; -S.prototype.set_kSHR=S.prototype.SB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Os(c,a)};Object.defineProperty(S.prototype,"kSHR",{get:S.prototype.kz,set:S.prototype.SB});S.prototype.get_kAHR=S.prototype.bz=function(){return Ps(this.hy)};S.prototype.set_kAHR=S.prototype.JB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qs(c,a)};Object.defineProperty(S.prototype,"kAHR",{get:S.prototype.bz,set:S.prototype.JB});S.prototype.get_kSRHR_CL=S.prototype.nz=function(){return Rs(this.hy)}; -S.prototype.set_kSRHR_CL=S.prototype.VB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ss(c,a)};Object.defineProperty(S.prototype,"kSRHR_CL",{get:S.prototype.nz,set:S.prototype.VB});S.prototype.get_kSKHR_CL=S.prototype.lz=function(){return Ts(this.hy)};S.prototype.set_kSKHR_CL=S.prototype.TB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Us(c,a)};Object.defineProperty(S.prototype,"kSKHR_CL",{get:S.prototype.lz,set:S.prototype.TB});S.prototype.get_kSSHR_CL=S.prototype.pz=function(){return Vs(this.hy)}; -S.prototype.set_kSSHR_CL=S.prototype.XB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ws(c,a)};Object.defineProperty(S.prototype,"kSSHR_CL",{get:S.prototype.pz,set:S.prototype.XB});S.prototype.get_kSR_SPLT_CL=S.prototype.oz=function(){return Xs(this.hy)};S.prototype.set_kSR_SPLT_CL=S.prototype.WB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ys(c,a)};Object.defineProperty(S.prototype,"kSR_SPLT_CL",{get:S.prototype.oz,set:S.prototype.WB}); -S.prototype.get_kSK_SPLT_CL=S.prototype.mz=function(){return Zs(this.hy)};S.prototype.set_kSK_SPLT_CL=S.prototype.UB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);$s(c,a)};Object.defineProperty(S.prototype,"kSK_SPLT_CL",{get:S.prototype.mz,set:S.prototype.UB});S.prototype.get_kSS_SPLT_CL=S.prototype.qz=function(){return at(this.hy)};S.prototype.set_kSS_SPLT_CL=S.prototype.YB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);bt(c,a)}; -Object.defineProperty(S.prototype,"kSS_SPLT_CL",{get:S.prototype.qz,set:S.prototype.YB});S.prototype.get_maxvolume=S.prototype.yB=function(){return ct(this.hy)};S.prototype.set_maxvolume=S.prototype.eE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);dt(c,a)};Object.defineProperty(S.prototype,"maxvolume",{get:S.prototype.yB,set:S.prototype.eE});S.prototype.get_timescale=S.prototype.AB=function(){return et(this.hy)}; -S.prototype.set_timescale=S.prototype.gE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ft(c,a)};Object.defineProperty(S.prototype,"timescale",{get:S.prototype.AB,set:S.prototype.gE});S.prototype.get_viterations=S.prototype.BB=function(){return gt(this.hy)};S.prototype.set_viterations=S.prototype.hE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ht(c,a)};Object.defineProperty(S.prototype,"viterations",{get:S.prototype.BB,set:S.prototype.hE}); -S.prototype.get_piterations=S.prototype.zB=function(){return it(this.hy)};S.prototype.set_piterations=S.prototype.fE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);jt(c,a)};Object.defineProperty(S.prototype,"piterations",{get:S.prototype.zB,set:S.prototype.fE});S.prototype.get_diterations=S.prototype.az=function(){return kt(this.hy)};S.prototype.set_diterations=S.prototype.IB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);lt(c,a)}; -Object.defineProperty(S.prototype,"diterations",{get:S.prototype.az,set:S.prototype.IB});S.prototype.get_citerations=S.prototype.Zy=function(){return mt(this.hy)};S.prototype.set_citerations=S.prototype.GB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);nt(c,a)};Object.defineProperty(S.prototype,"citerations",{get:S.prototype.Zy,set:S.prototype.GB});S.prototype.get_collisions=S.prototype.$y=function(){return ot(this.hy)}; -S.prototype.set_collisions=S.prototype.HB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);pt(c,a)};Object.defineProperty(S.prototype,"collisions",{get:S.prototype.$y,set:S.prototype.HB});S.prototype.__destroy__=function(){qt(this.hy)};function Node(){throw"cannot construct a Node, no constructor in IDL";}Node.prototype=Object.create(f.prototype);Node.prototype.constructor=Node;Node.prototype.iy=Node;Node.jy={};b.Node=Node; -Node.prototype.get_m_x=Node.prototype.xB=function(){return k(rt(this.hy),p)};Node.prototype.set_m_x=Node.prototype.dE=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);st(c,a)};Object.defineProperty(Node.prototype,"m_x",{get:Node.prototype.xB,set:Node.prototype.dE});Node.prototype.get_m_q=Node.prototype.OA=function(){return k(tt(this.hy),p)};Node.prototype.set_m_q=Node.prototype.uD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ut(c,a)}; -Object.defineProperty(Node.prototype,"m_q",{get:Node.prototype.OA,set:Node.prototype.uD});Node.prototype.get_m_v=Node.prototype.pB=function(){return k(vt(this.hy),p)};Node.prototype.set_m_v=Node.prototype.WD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);wt(c,a)};Object.defineProperty(Node.prototype,"m_v",{get:Node.prototype.pB,set:Node.prototype.WD});Node.prototype.get_m_f=Node.prototype.bA=function(){return k(xt(this.hy),p)}; -Node.prototype.set_m_f=Node.prototype.IC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yt(c,a)};Object.defineProperty(Node.prototype,"m_f",{get:Node.prototype.bA,set:Node.prototype.IC});Node.prototype.get_m_n=Node.prototype.Hy=function(){return k(zt(this.hy),p)};Node.prototype.set_m_n=Node.prototype.Qy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);At(c,a)};Object.defineProperty(Node.prototype,"m_n",{get:Node.prototype.Hy,set:Node.prototype.Qy}); -Node.prototype.get_m_im=Node.prototype.pA=function(){return Bt(this.hy)};Node.prototype.set_m_im=Node.prototype.WC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ct(c,a)};Object.defineProperty(Node.prototype,"m_im",{get:Node.prototype.pA,set:Node.prototype.WC});Node.prototype.get_m_area=Node.prototype.Dz=function(){return Dt(this.hy)};Node.prototype.set_m_area=Node.prototype.jC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Et(c,a)}; -Object.defineProperty(Node.prototype,"m_area",{get:Node.prototype.Dz,set:Node.prototype.jC});Node.prototype.__destroy__=function(){Ft(this.hy)};function WB(){this.hy=Gt();h(WB)[this.hy]=this}WB.prototype=Object.create(f.prototype);WB.prototype.constructor=WB;WB.prototype.iy=WB;WB.jy={};b.btGhostPairCallback=WB;WB.prototype.__destroy__=function(){Ht(this.hy)};function XB(){throw"cannot construct a btOverlappingPairCallback, no constructor in IDL";}XB.prototype=Object.create(f.prototype); -XB.prototype.constructor=XB;XB.prototype.iy=XB;XB.jy={};b.btOverlappingPairCallback=XB;XB.prototype.__destroy__=function(){It(this.hy)};function T(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);this.hy=void 0===e?Jt(a,c,d):Kt(a,c,d,e);h(T)[this.hy]=this}T.prototype=Object.create(ZA.prototype);T.prototype.constructor=T;T.prototype.iy=T;T.jy={};b.btKinematicCharacterController=T; -T.prototype.setUpAxis=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Lt(c,a)};T.prototype.setWalkDirection=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Mt(c,a)};T.prototype.setVelocityForTimeInterval=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Nt(d,a,c)};T.prototype.warp=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ot(c,a)};T.prototype.preStep=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pt(c,a)}; -T.prototype.playerStep=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Qt(d,a,c)};T.prototype.setFallSpeed=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Rt(c,a)};T.prototype.setJumpSpeed=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);St(c,a)};T.prototype.setMaxJumpHeight=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Tt(c,a)};T.prototype.canJump=function(){return!!Ut(this.hy)};T.prototype.jump=function(){Vt(this.hy)}; -T.prototype.setGravity=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wt(c,a)};T.prototype.getGravity=function(){return Xt(this.hy)};T.prototype.setMaxSlope=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Yt(c,a)};T.prototype.getMaxSlope=function(){return Zt(this.hy)};T.prototype.getGhostObject=function(){return k($t(this.hy),U)};T.prototype.setUseGhostSweepTest=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);au(c,a)};T.prototype.onGround=function(){return!!bu(this.hy)}; -T.prototype.setUpInterpolate=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);cu(c,a)};T.prototype.updateAction=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);du(d,a,c)};T.prototype.__destroy__=function(){eu(this.hy)};function YB(){throw"cannot construct a btSoftBodyArray, no constructor in IDL";}YB.prototype=Object.create(f.prototype);YB.prototype.constructor=YB;YB.prototype.iy=YB;YB.jy={};b.btSoftBodyArray=YB; -YB.prototype.size=YB.prototype.size=function(){return fu(this.hy)};YB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(gu(c,a),R)};YB.prototype.__destroy__=function(){hu(this.hy)};function PB(){throw"cannot construct a btFaceArray, no constructor in IDL";}PB.prototype=Object.create(f.prototype);PB.prototype.constructor=PB;PB.prototype.iy=PB;PB.jy={};b.btFaceArray=PB;PB.prototype.size=PB.prototype.size=function(){return iu(this.hy)}; -PB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(ju(c,a),ZB)};PB.prototype.__destroy__=function(){ku(this.hy)};function $B(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=lu(a,c);h($B)[this.hy]=this}$B.prototype=Object.create(UA.prototype);$B.prototype.constructor=$B;$B.prototype.iy=$B;$B.jy={};b.btStaticPlaneShape=$B;$B.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);mu(c,a)}; -$B.prototype.getLocalScaling=function(){return k(nu(this.hy),p)};$B.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);ou(d,a,c)};$B.prototype.__destroy__=function(){pu(this.hy)};function PA(){throw"cannot construct a btOverlappingPairCache, no constructor in IDL";}PA.prototype=Object.create(f.prototype);PA.prototype.constructor=PA;PA.prototype.iy=PA;PA.jy={};b.btOverlappingPairCache=PA; -PA.prototype.setInternalGhostPairCallback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);qu(c,a)};PA.prototype.getNumOverlappingPairs=function(){return ru(this.hy)};PA.prototype.__destroy__=function(){su(this.hy)};function vB(){throw"cannot construct a btIndexedMesh, no constructor in IDL";}vB.prototype=Object.create(f.prototype);vB.prototype.constructor=vB;vB.prototype.iy=vB;vB.jy={};b.btIndexedMesh=vB;vB.prototype.get_m_numTriangles=vB.prototype.KA=function(){return tu(this.hy)}; -vB.prototype.set_m_numTriangles=vB.prototype.qD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);uu(c,a)};Object.defineProperty(vB.prototype,"m_numTriangles",{get:vB.prototype.KA,set:vB.prototype.qD});vB.prototype.__destroy__=function(){vu(this.hy)};function V(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);this.hy=wu(a,c,d,e,g);h(V)[this.hy]=this}V.prototype=Object.create(x.prototype); -V.prototype.constructor=V;V.prototype.iy=V;V.jy={};b.btSoftRigidDynamicsWorld=V;V.prototype.addSoftBody=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);xu(e,a,c,d)};V.prototype.removeSoftBody=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yu(c,a)};V.prototype.removeCollisionObject=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);zu(c,a)};V.prototype.getWorldInfo=function(){return k(Au(this.hy),J)}; -V.prototype.getSoftBodyArray=function(){return k(Bu(this.hy),YB)};V.prototype.getDispatcher=function(){return k(Cu(this.hy),OA)};V.prototype.rayTest=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Du(e,a,c,d)};V.prototype.getPairCache=function(){return k(Eu(this.hy),PA)};V.prototype.getDispatchInfo=function(){return k(Fu(this.hy),l)}; -V.prototype.addCollisionObject=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?Gu(e,a):void 0===d?Hu(e,a,c):Iu(e,a,c,d)};V.prototype.getBroadphase=function(){return k(Ju(this.hy),QA)}; -V.prototype.convexSweepTest=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);Ku(n,a,c,d,e,g)};V.prototype.contactPairTest=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Lu(e,a,c,d)}; -V.prototype.contactTest=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Mu(d,a,c)};V.prototype.updateSingleAabb=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Nu(c,a)};V.prototype.setDebugDrawer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ou(c,a)};V.prototype.getDebugDrawer=function(){return k(Pu(this.hy),RA)};V.prototype.debugDrawWorld=function(){Qu(this.hy)}; -V.prototype.debugDrawObject=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Ru(e,a,c,d)};V.prototype.setGravity=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Su(c,a)};V.prototype.getGravity=function(){return k(Tu(this.hy),p)}; -V.prototype.addRigidBody=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?Uu(e,a):void 0===d?_emscripten_bind_btSoftRigidDynamicsWorld_addRigidBody_2(e,a,c):Vu(e,a,c,d)};V.prototype.removeRigidBody=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wu(c,a)}; -V.prototype.addConstraint=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);void 0===c?Xu(d,a):Yu(d,a,c)};V.prototype.removeConstraint=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Zu(c,a)};V.prototype.stepSimulation=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);return void 0===c?$u(e,a):void 0===d?av(e,a,c):bv(e,a,c,d)}; -V.prototype.setContactAddedCallback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);cv(c,a)};V.prototype.setContactProcessedCallback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);dv(c,a)};V.prototype.setContactDestroyedCallback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ev(c,a)};V.prototype.addAction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);fv(c,a)};V.prototype.removeAction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);gv(c,a)}; -V.prototype.getSolverInfo=function(){return k(hv(this.hy),v)};V.prototype.setInternalTickCallback=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);void 0===c?iv(e,a):void 0===d?jv(e,a,c):kv(e,a,c,d)};V.prototype.__destroy__=function(){lv(this.hy)}; -function aC(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);this.hy=mv(a,c,d,e);h(aC)[this.hy]=this}aC.prototype=Object.create(TA.prototype);aC.prototype.constructor=aC;aC.prototype.iy=aC;aC.jy={};b.btFixedConstraint=aC;aC.prototype.enableFeedback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);nv(c,a)};aC.prototype.getBreakingImpulseThreshold=function(){return ov(this.hy)}; -aC.prototype.setBreakingImpulseThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);pv(c,a)};aC.prototype.getParam=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return qv(d,a,c)};aC.prototype.setParam=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);rv(e,a,c,d)};aC.prototype.__destroy__=function(){sv(this.hy)}; -function r(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=void 0===a?tv():void 0===c?_emscripten_bind_btTransform_btTransform_1(a):uv(a,c);h(r)[this.hy]=this}r.prototype=Object.create(f.prototype);r.prototype.constructor=r;r.prototype.iy=r;r.jy={};b.btTransform=r;r.prototype.setIdentity=function(){vv(this.hy)};r.prototype.setOrigin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);wv(c,a)}; -r.prototype.setRotation=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);xv(c,a)};r.prototype.getOrigin=function(){return k(yv(this.hy),p)};r.prototype.getRotation=function(){return k(zv(this.hy),W)};r.prototype.getBasis=function(){return k(Av(this.hy),jB)};r.prototype.setFromOpenGLMatrix=function(a){var c=this.hy;IA();"object"==typeof a&&(a=MA(a));Bv(c,a)};r.prototype.inverse=r.prototype.inverse=function(){return k(Cv(this.hy),r)}; -r.prototype.op_mul=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Dv(c,a),r)};r.prototype.__destroy__=function(){Ev(this.hy)};function X(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=Fv(a,c);h(X)[this.hy]=this}X.prototype=Object.create(z.prototype);X.prototype.constructor=X;X.prototype.iy=X;X.jy={};b.ClosestRayResultCallback=X;X.prototype.hasHit=function(){return!!Gv(this.hy)}; -X.prototype.get_m_rayFromWorld=X.prototype.Iy=function(){return k(Hv(this.hy),p)};X.prototype.set_m_rayFromWorld=X.prototype.Ry=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Iv(c,a)};Object.defineProperty(X.prototype,"m_rayFromWorld",{get:X.prototype.Iy,set:X.prototype.Ry});X.prototype.get_m_rayToWorld=X.prototype.Jy=function(){return k(Jv(this.hy),p)};X.prototype.set_m_rayToWorld=X.prototype.Sy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Kv(c,a)}; -Object.defineProperty(X.prototype,"m_rayToWorld",{get:X.prototype.Jy,set:X.prototype.Sy});X.prototype.get_m_hitNormalWorld=X.prototype.sy=function(){return k(Lv(this.hy),p)};X.prototype.set_m_hitNormalWorld=X.prototype.zy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Mv(c,a)};Object.defineProperty(X.prototype,"m_hitNormalWorld",{get:X.prototype.sy,set:X.prototype.zy});X.prototype.get_m_hitPointWorld=X.prototype.ty=function(){return k(Nv(this.hy),p)}; -X.prototype.set_m_hitPointWorld=X.prototype.Ay=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ov(c,a)};Object.defineProperty(X.prototype,"m_hitPointWorld",{get:X.prototype.ty,set:X.prototype.Ay});X.prototype.get_m_collisionFilterGroup=X.prototype.ky=function(){return Pv(this.hy)};X.prototype.set_m_collisionFilterGroup=X.prototype.my=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Qv(c,a)};Object.defineProperty(X.prototype,"m_collisionFilterGroup",{get:X.prototype.ky,set:X.prototype.my}); -X.prototype.get_m_collisionFilterMask=X.prototype.ly=function(){return Rv(this.hy)};X.prototype.set_m_collisionFilterMask=X.prototype.ny=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Sv(c,a)};Object.defineProperty(X.prototype,"m_collisionFilterMask",{get:X.prototype.ly,set:X.prototype.ny});X.prototype.get_m_closestHitFraction=X.prototype.oy=function(){return Tv(this.hy)}; -X.prototype.set_m_closestHitFraction=X.prototype.py=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Uv(c,a)};Object.defineProperty(X.prototype,"m_closestHitFraction",{get:X.prototype.oy,set:X.prototype.py});X.prototype.get_m_collisionObject=X.prototype.qy=function(){return k(Vv(this.hy),q)};X.prototype.set_m_collisionObject=X.prototype.xy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Wv(c,a)};Object.defineProperty(X.prototype,"m_collisionObject",{get:X.prototype.qy,set:X.prototype.xy}); -X.prototype.__destroy__=function(){Xv(this.hy)};function bC(a){a&&"object"===typeof a&&(a=a.hy);this.hy=void 0===a?Yv():Zv(a);h(bC)[this.hy]=this}bC.prototype=Object.create(WA.prototype);bC.prototype.constructor=bC;bC.prototype.iy=bC;bC.jy={};b.btSoftBodyRigidBodyCollisionConfiguration=bC;bC.prototype.__destroy__=function(){$v(this.hy)};function cC(){this.hy=aw();h(cC)[this.hy]=this}cC.prototype=Object.create(hB.prototype);cC.prototype.constructor=cC;cC.prototype.iy=cC;cC.jy={}; -b.ConcreteContactResultCallback=cC;cC.prototype.addSingleResult=function(a,c,d,e,g,n,F){var aa=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);n&&"object"===typeof n&&(n=n.hy);F&&"object"===typeof F&&(F=F.hy);return bw(aa,a,c,d,e,g,n,F)};cC.prototype.__destroy__=function(){cw(this.hy)}; -function dC(a,c,d){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);this.hy=void 0===d?dw(a,c):ew(a,c,d);h(dC)[this.hy]=this}dC.prototype=Object.create(XA.prototype);dC.prototype.constructor=dC;dC.prototype.iy=dC;dC.jy={};b.btBvhTriangleMeshShape=dC;dC.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);fw(c,a)};dC.prototype.getLocalScaling=function(){return k(gw(this.hy),p)}; -dC.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);hw(d,a,c)};dC.prototype.__destroy__=function(){iw(this.hy)};function oB(){throw"cannot construct a btConstCollisionObjectArray, no constructor in IDL";}oB.prototype=Object.create(f.prototype);oB.prototype.constructor=oB;oB.prototype.iy=oB;oB.jy={};b.btConstCollisionObjectArray=oB;oB.prototype.size=oB.prototype.size=function(){return jw(this.hy)}; -oB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(kw(c,a),q)};oB.prototype.__destroy__=function(){lw(this.hy)};function eC(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);this.hy=void 0===e?mw(a,c,d):void 0===g?_emscripten_bind_btSliderConstraint_btSliderConstraint_4(a,c,d,e):nw(a,c,d,e,g);h(eC)[this.hy]=this}eC.prototype=Object.create(TA.prototype); -eC.prototype.constructor=eC;eC.prototype.iy=eC;eC.jy={};b.btSliderConstraint=eC;eC.prototype.setLowerLinLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ow(c,a)};eC.prototype.setUpperLinLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);pw(c,a)};eC.prototype.setLowerAngLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);qw(c,a)};eC.prototype.setUpperAngLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);rw(c,a)}; -eC.prototype.enableFeedback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);sw(c,a)};eC.prototype.getBreakingImpulseThreshold=function(){return tw(this.hy)};eC.prototype.setBreakingImpulseThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);uw(c,a)};eC.prototype.getParam=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return vw(d,a,c)}; -eC.prototype.setParam=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);ww(e,a,c,d)};eC.prototype.__destroy__=function(){xw(this.hy)};function U(){this.hy=yw();h(U)[this.hy]=this}U.prototype=Object.create(w.prototype);U.prototype.constructor=U;U.prototype.iy=U;U.jy={};b.btPairCachingGhostObject=U; -U.prototype.setAnisotropicFriction=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);zw(d,a,c)};U.prototype.getCollisionShape=function(){return k(Aw(this.hy),m)};U.prototype.setContactProcessingThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Bw(c,a)};U.prototype.setActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Cw(c,a)}; -U.prototype.forceActivationState=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Dw(c,a)};U.prototype.activate=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);void 0===a?Ew(c):Fw(c,a)};U.prototype.isActive=function(){return!!Gw(this.hy)};U.prototype.isKinematicObject=function(){return!!Hw(this.hy)};U.prototype.isStaticObject=function(){return!!Iw(this.hy)};U.prototype.isStaticOrKinematicObject=function(){return!!Jw(this.hy)};U.prototype.getRestitution=function(){return Kw(this.hy)}; -U.prototype.getFriction=function(){return Lw(this.hy)};U.prototype.getRollingFriction=function(){return Mw(this.hy)};U.prototype.setRestitution=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Nw(c,a)};U.prototype.setFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ow(c,a)};U.prototype.setRollingFriction=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pw(c,a)};U.prototype.getWorldTransform=function(){return k(Qw(this.hy),r)};U.prototype.getCollisionFlags=function(){return Rw(this.hy)}; -U.prototype.setCollisionFlags=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Sw(c,a)};U.prototype.setWorldTransform=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Tw(c,a)};U.prototype.setCollisionShape=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Uw(c,a)};U.prototype.setCcdMotionThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Vw(c,a)};U.prototype.setCcdSweptSphereRadius=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ww(c,a)}; -U.prototype.getUserIndex=function(){return Xw(this.hy)};U.prototype.setUserIndex=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Yw(c,a)};U.prototype.getUserPointer=function(){return k(Zw(this.hy),SA)};U.prototype.setUserPointer=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);$w(c,a)};U.prototype.getBroadphaseHandle=function(){return k(ax(this.hy),t)};U.prototype.getNumOverlappingObjects=function(){return bx(this.hy)}; -U.prototype.getOverlappingObject=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(cx(c,a),q)};U.prototype.__destroy__=function(){dx(this.hy)};function D(){throw"cannot construct a btManifoldPoint, no constructor in IDL";}D.prototype=Object.create(f.prototype);D.prototype.constructor=D;D.prototype.iy=D;D.jy={};b.btManifoldPoint=D;D.prototype.getPositionWorldOnA=function(){return k(ex(this.hy),p)};D.prototype.getPositionWorldOnB=function(){return k(fx(this.hy),p)}; -D.prototype.getAppliedImpulse=function(){return gx(this.hy)};D.prototype.getDistance=function(){return hx(this.hy)};D.prototype.get_m_localPointA=D.prototype.AA=function(){return k(ix(this.hy),p)};D.prototype.set_m_localPointA=D.prototype.gD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);jx(c,a)};Object.defineProperty(D.prototype,"m_localPointA",{get:D.prototype.AA,set:D.prototype.gD});D.prototype.get_m_localPointB=D.prototype.BA=function(){return k(kx(this.hy),p)}; -D.prototype.set_m_localPointB=D.prototype.hD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);lx(c,a)};Object.defineProperty(D.prototype,"m_localPointB",{get:D.prototype.BA,set:D.prototype.hD});D.prototype.get_m_positionWorldOnB=D.prototype.NA=function(){return k(mx(this.hy),p)};D.prototype.set_m_positionWorldOnB=D.prototype.tD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);nx(c,a)};Object.defineProperty(D.prototype,"m_positionWorldOnB",{get:D.prototype.NA,set:D.prototype.tD}); -D.prototype.get_m_positionWorldOnA=D.prototype.MA=function(){return k(ox(this.hy),p)};D.prototype.set_m_positionWorldOnA=D.prototype.sD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);px(c,a)};Object.defineProperty(D.prototype,"m_positionWorldOnA",{get:D.prototype.MA,set:D.prototype.sD});D.prototype.get_m_normalWorldOnB=D.prototype.IA=function(){return k(qx(this.hy),p)};D.prototype.set_m_normalWorldOnB=D.prototype.oD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);rx(c,a)}; -Object.defineProperty(D.prototype,"m_normalWorldOnB",{get:D.prototype.IA,set:D.prototype.oD});D.prototype.get_m_userPersistentData=D.prototype.oB=function(){return sx(this.hy)};D.prototype.set_m_userPersistentData=D.prototype.VD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);tx(c,a)};Object.defineProperty(D.prototype,"m_userPersistentData",{get:D.prototype.oB,set:D.prototype.VD});D.prototype.__destroy__=function(){ux(this.hy)}; -function fC(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);this.hy=void 0===d?vx(a,c):void 0===e?_emscripten_bind_btPoint2PointConstraint_btPoint2PointConstraint_3(a,c,d):wx(a,c,d,e);h(fC)[this.hy]=this}fC.prototype=Object.create(TA.prototype);fC.prototype.constructor=fC;fC.prototype.iy=fC;fC.jy={};b.btPoint2PointConstraint=fC; -fC.prototype.setPivotA=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);xx(c,a)};fC.prototype.setPivotB=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yx(c,a)};fC.prototype.getPivotInA=function(){return k(zx(this.hy),p)};fC.prototype.getPivotInB=function(){return k(Ax(this.hy),p)};fC.prototype.enableFeedback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Bx(c,a)};fC.prototype.getBreakingImpulseThreshold=function(){return Cx(this.hy)}; -fC.prototype.setBreakingImpulseThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Dx(c,a)};fC.prototype.getParam=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return Ex(d,a,c)};fC.prototype.setParam=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Fx(e,a,c,d)};fC.prototype.get_m_setting=fC.prototype.VA=function(){return k(Gx(this.hy),H)}; -fC.prototype.set_m_setting=fC.prototype.BD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Hx(c,a)};Object.defineProperty(fC.prototype,"m_setting",{get:fC.prototype.VA,set:fC.prototype.BD});fC.prototype.__destroy__=function(){Ix(this.hy)};function gC(){this.hy=Jx();h(gC)[this.hy]=this}gC.prototype=Object.create(f.prototype);gC.prototype.constructor=gC;gC.prototype.iy=gC;gC.jy={};b.btSoftBodyHelpers=gC; -gC.prototype.CreateRope=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);return k(Kx(n,a,c,d,e,g),R)}; -gC.prototype.CreatePatch=function(a,c,d,e,g,n,F,aa,ta){var Rb=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);n&&"object"===typeof n&&(n=n.hy);F&&"object"===typeof F&&(F=F.hy);aa&&"object"===typeof aa&&(aa=aa.hy);ta&&"object"===typeof ta&&(ta=ta.hy);return k(Lx(Rb,a,c,d,e,g,n,F,aa,ta),R)}; -gC.prototype.CreatePatchUV=function(a,c,d,e,g,n,F,aa,ta,Rb){var nC=this.hy;IA();a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);n&&"object"===typeof n&&(n=n.hy);F&&"object"===typeof F&&(F=F.hy);aa&&"object"===typeof aa&&(aa=aa.hy);ta&&"object"===typeof ta&&(ta=ta.hy);"object"==typeof Rb&&(Rb=MA(Rb));return k(Mx(nC,a,c,d,e,g,n,F,aa,ta,Rb),R)}; -gC.prototype.CreateEllipsoid=function(a,c,d,e){var g=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);return k(Nx(g,a,c,d,e),R)}; -gC.prototype.CreateFromTriMesh=function(a,c,d,e,g){var n=this.hy;IA();a&&"object"===typeof a&&(a=a.hy);"object"==typeof c&&(c=MA(c));if("object"==typeof d&&"object"===typeof d){var F=JA(d,Aa);KA(d,Aa,F);d=F}e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);return k(Ox(n,a,c,d,e,g),R)}; -gC.prototype.CreateFromConvexHull=function(a,c,d,e){var g=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);return k(Px(g,a,c,d,e),R)};gC.prototype.__destroy__=function(){Qx(this.hy)};function t(){throw"cannot construct a btBroadphaseProxy, no constructor in IDL";}t.prototype=Object.create(f.prototype);t.prototype.constructor=t;t.prototype.iy=t;t.jy={};b.btBroadphaseProxy=t; -t.prototype.get_m_collisionFilterGroup=t.prototype.ky=function(){return Rx(this.hy)};t.prototype.set_m_collisionFilterGroup=t.prototype.my=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Sx(c,a)};Object.defineProperty(t.prototype,"m_collisionFilterGroup",{get:t.prototype.ky,set:t.prototype.my});t.prototype.get_m_collisionFilterMask=t.prototype.ly=function(){return Tx(this.hy)}; -t.prototype.set_m_collisionFilterMask=t.prototype.ny=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ux(c,a)};Object.defineProperty(t.prototype,"m_collisionFilterMask",{get:t.prototype.ly,set:t.prototype.ny});t.prototype.__destroy__=function(){Vx(this.hy)};function TB(){throw"cannot construct a tNodeArray, no constructor in IDL";}TB.prototype=Object.create(f.prototype);TB.prototype.constructor=TB;TB.prototype.iy=TB;TB.jy={};b.tNodeArray=TB;TB.prototype.size=TB.prototype.size=function(){return Wx(this.hy)}; -TB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Xx(c,a),Node)};TB.prototype.__destroy__=function(){Yx(this.hy)};function hC(a){a&&"object"===typeof a&&(a=a.hy);this.hy=Zx(a);h(hC)[this.hy]=this}hC.prototype=Object.create(m.prototype);hC.prototype.constructor=hC;hC.prototype.iy=hC;hC.jy={};b.btBoxShape=hC;hC.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);$x(c,a)};hC.prototype.getMargin=function(){return ay(this.hy)}; -hC.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);by(c,a)};hC.prototype.getLocalScaling=function(){return k(cy(this.hy),p)};hC.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);dy(d,a,c)};hC.prototype.__destroy__=function(){ey(this.hy)};function ZB(){throw"cannot construct a btFace, no constructor in IDL";}ZB.prototype=Object.create(f.prototype);ZB.prototype.constructor=ZB; -ZB.prototype.iy=ZB;ZB.jy={};b.btFace=ZB;ZB.prototype.get_m_indices=ZB.prototype.rA=function(){return k(fy(this.hy),VB)};ZB.prototype.set_m_indices=ZB.prototype.YC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);gy(c,a)};Object.defineProperty(ZB.prototype,"m_indices",{get:ZB.prototype.rA,set:ZB.prototype.YC});ZB.prototype.get_m_plane=ZB.prototype.LA=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return hy(c,a)}; -ZB.prototype.set_m_plane=ZB.prototype.rD=function(a,c){var d=this.hy;IA();a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);iy(d,a,c)};Object.defineProperty(ZB.prototype,"m_plane",{get:ZB.prototype.LA,set:ZB.prototype.rD});ZB.prototype.__destroy__=function(){jy(this.hy)};function iC(){this.hy=ky();h(iC)[this.hy]=this}iC.prototype=Object.create(RA.prototype);iC.prototype.constructor=iC;iC.prototype.iy=iC;iC.jy={};b.DebugDrawer=iC; -iC.prototype.drawLine=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);ly(e,a,c,d)};iC.prototype.drawContactPoint=function(a,c,d,e,g){var n=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);my(n,a,c,d,e,g)}; -iC.prototype.reportErrorWarning=function(a){var c=this.hy;IA();a=a&&"object"===typeof a?a.hy:LA(a);ny(c,a)};iC.prototype.draw3dText=function(a,c){var d=this.hy;IA();a&&"object"===typeof a&&(a=a.hy);c=c&&"object"===typeof c?c.hy:LA(c);oy(d,a,c)};iC.prototype.setDebugMode=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);py(c,a)};iC.prototype.getDebugMode=function(){return qy(this.hy)};iC.prototype.__destroy__=function(){ry(this.hy)}; -function jC(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=sy(a,c);h(jC)[this.hy]=this}jC.prototype=Object.create(VA.prototype);jC.prototype.constructor=jC;jC.prototype.iy=jC;jC.jy={};b.btCapsuleShapeX=jC;jC.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);ty(c,a)};jC.prototype.getMargin=function(){return uy(this.hy)};jC.prototype.getUpAxis=function(){return vy(this.hy)};jC.prototype.getRadius=function(){return wy(this.hy)}; -jC.prototype.getHalfHeight=function(){return xy(this.hy)};jC.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);yy(c,a)};jC.prototype.getLocalScaling=function(){return k(zy(this.hy),p)};jC.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Ay(d,a,c)};jC.prototype.__destroy__=function(){By(this.hy)}; -function W(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);this.hy=Cy(a,c,d,e);h(W)[this.hy]=this}W.prototype=Object.create(aB.prototype);W.prototype.constructor=W;W.prototype.iy=W;W.jy={};b.btQuaternion=W;W.prototype.setValue=function(a,c,d,e){var g=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);Dy(g,a,c,d,e)}; -W.prototype.setEulerZYX=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Ey(e,a,c,d)};W.prototype.setRotation=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Fy(d,a,c)};W.prototype.normalize=W.prototype.normalize=function(){Gy(this.hy)};W.prototype.length2=function(){return Hy(this.hy)};W.prototype.length=W.prototype.length=function(){return Iy(this.hy)}; -W.prototype.dot=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return Jy(c,a)};W.prototype.normalized=function(){return k(Ky(this.hy),W)};W.prototype.getAxis=function(){return k(Ly(this.hy),p)};W.prototype.inverse=W.prototype.inverse=function(){return k(My(this.hy),W)};W.prototype.getAngle=function(){return Ny(this.hy)};W.prototype.getAngleShortestPath=function(){return Oy(this.hy)}; -W.prototype.angle=W.prototype.angle=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return Py(c,a)};W.prototype.angleShortestPath=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return Qy(c,a)};W.prototype.op_add=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Ry(c,a),W)};W.prototype.op_sub=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Sy(c,a),W)}; -W.prototype.op_mul=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Ty(c,a),W)};W.prototype.op_mulq=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Uy(c,a),W)};W.prototype.op_div=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Vy(c,a),W)};W.prototype.x=W.prototype.x=function(){return Wy(this.hy)};W.prototype.y=W.prototype.y=function(){return Xy(this.hy)};W.prototype.z=W.prototype.z=function(){return Yy(this.hy)};W.prototype.w=function(){return Zy(this.hy)}; -W.prototype.setX=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);$y(c,a)};W.prototype.setY=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);az(c,a)};W.prototype.setZ=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);bz(c,a)};W.prototype.setW=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);cz(c,a)};W.prototype.__destroy__=function(){dz(this.hy)}; -function kC(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);this.hy=ez(a,c);h(kC)[this.hy]=this}kC.prototype=Object.create(VA.prototype);kC.prototype.constructor=kC;kC.prototype.iy=kC;kC.jy={};b.btCapsuleShapeZ=kC;kC.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);fz(c,a)};kC.prototype.getMargin=function(){return gz(this.hy)};kC.prototype.getUpAxis=function(){return hz(this.hy)};kC.prototype.getRadius=function(){return iz(this.hy)}; -kC.prototype.getHalfHeight=function(){return jz(this.hy)};kC.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);kz(c,a)};kC.prototype.getLocalScaling=function(){return k(lz(this.hy),p)};kC.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);mz(d,a,c)};kC.prototype.__destroy__=function(){nz(this.hy)};function v(){throw"cannot construct a btContactSolverInfo, no constructor in IDL";} -v.prototype=Object.create(f.prototype);v.prototype.constructor=v;v.prototype.iy=v;v.jy={};b.btContactSolverInfo=v;v.prototype.get_m_splitImpulse=v.prototype.YA=function(){return!!oz(this.hy)};v.prototype.set_m_splitImpulse=v.prototype.ED=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);pz(c,a)};Object.defineProperty(v.prototype,"m_splitImpulse",{get:v.prototype.YA,set:v.prototype.ED});v.prototype.get_m_splitImpulsePenetrationThreshold=v.prototype.ZA=function(){return qz(this.hy)}; -v.prototype.set_m_splitImpulsePenetrationThreshold=v.prototype.FD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);rz(c,a)};Object.defineProperty(v.prototype,"m_splitImpulsePenetrationThreshold",{get:v.prototype.ZA,set:v.prototype.FD});v.prototype.get_m_numIterations=v.prototype.JA=function(){return sz(this.hy)};v.prototype.set_m_numIterations=v.prototype.pD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);tz(c,a)}; -Object.defineProperty(v.prototype,"m_numIterations",{get:v.prototype.JA,set:v.prototype.pD});v.prototype.__destroy__=function(){uz(this.hy)};function lC(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);this.hy=void 0===e?vz(a,c,d):void 0===g?_emscripten_bind_btGeneric6DofSpringConstraint_btGeneric6DofSpringConstraint_4(a,c,d,e):wz(a,c,d,e,g);h(lC)[this.hy]=this} -lC.prototype=Object.create(eB.prototype);lC.prototype.constructor=lC;lC.prototype.iy=lC;lC.jy={};b.btGeneric6DofSpringConstraint=lC;lC.prototype.enableSpring=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);xz(d,a,c)};lC.prototype.setStiffness=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);yz(d,a,c)}; -lC.prototype.setDamping=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);zz(d,a,c)};lC.prototype.setEquilibriumPoint=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);void 0===a?Az(d):void 0===c?Bz(d,a):Cz(d,a,c)};lC.prototype.setLinearLowerLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Dz(c,a)}; -lC.prototype.setLinearUpperLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Ez(c,a)};lC.prototype.setAngularLowerLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Fz(c,a)};lC.prototype.setAngularUpperLimit=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Gz(c,a)};lC.prototype.getFrameOffsetA=function(){return k(Hz(this.hy),r)};lC.prototype.enableFeedback=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Iz(c,a)}; -lC.prototype.getBreakingImpulseThreshold=function(){return Jz(this.hy)};lC.prototype.setBreakingImpulseThreshold=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Kz(c,a)};lC.prototype.getParam=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);return Lz(d,a,c)};lC.prototype.setParam=function(a,c,d){var e=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);Mz(e,a,c,d)}; -lC.prototype.__destroy__=function(){Nz(this.hy)};function mC(a){a&&"object"===typeof a&&(a=a.hy);this.hy=Oz(a);h(mC)[this.hy]=this}mC.prototype=Object.create(m.prototype);mC.prototype.constructor=mC;mC.prototype.iy=mC;mC.jy={};b.btSphereShape=mC;mC.prototype.setMargin=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Pz(c,a)};mC.prototype.getMargin=function(){return Qz(this.hy)};mC.prototype.setLocalScaling=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Rz(c,a)}; -mC.prototype.getLocalScaling=function(){return k(Sz(this.hy),p)};mC.prototype.calculateLocalInertia=function(a,c){var d=this.hy;a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Tz(d,a,c)};mC.prototype.__destroy__=function(){Uz(this.hy)};function Y(){throw"cannot construct a Face, no constructor in IDL";}Y.prototype=Object.create(f.prototype);Y.prototype.constructor=Y;Y.prototype.iy=Y;Y.jy={};b.Face=Y; -Y.prototype.get_m_n=Y.prototype.Hy=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(Vz(c,a),Node)};Y.prototype.set_m_n=Y.prototype.Qy=function(a,c){var d=this.hy;IA();a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);Wz(d,a,c)};Object.defineProperty(Y.prototype,"m_n",{get:Y.prototype.Hy,set:Y.prototype.Qy});Y.prototype.get_m_normal=Y.prototype.HA=function(){return k(Xz(this.hy),p)}; -Y.prototype.set_m_normal=Y.prototype.nD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);Yz(c,a)};Object.defineProperty(Y.prototype,"m_normal",{get:Y.prototype.HA,set:Y.prototype.nD});Y.prototype.get_m_ra=Y.prototype.PA=function(){return Zz(this.hy)};Y.prototype.set_m_ra=Y.prototype.vD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);$z(c,a)};Object.defineProperty(Y.prototype,"m_ra",{get:Y.prototype.PA,set:Y.prototype.vD});Y.prototype.__destroy__=function(){aA(this.hy)}; -function UB(){throw"cannot construct a tFaceArray, no constructor in IDL";}UB.prototype=Object.create(f.prototype);UB.prototype.constructor=UB;UB.prototype.iy=UB;UB.jy={};b.tFaceArray=UB;UB.prototype.size=UB.prototype.size=function(){return bA(this.hy)};UB.prototype.at=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);return k(cA(c,a),Y)};UB.prototype.__destroy__=function(){dA(this.hy)}; -function Z(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&&(c=c.hy);d&&"object"===typeof d&&(d=d.hy);e&&"object"===typeof e&&(e=e.hy);g&&"object"===typeof g&&(g=g.hy);this.hy=eA(a,c,d,e,g);h(Z)[this.hy]=this}Z.prototype=Object.create(f.prototype);Z.prototype.constructor=Z;Z.prototype.iy=Z;Z.jy={};b.LocalConvexResult=Z;Z.prototype.get_m_hitCollisionObject=Z.prototype.iA=function(){return k(fA(this.hy),q)}; -Z.prototype.set_m_hitCollisionObject=Z.prototype.PC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);gA(c,a)};Object.defineProperty(Z.prototype,"m_hitCollisionObject",{get:Z.prototype.iA,set:Z.prototype.PC});Z.prototype.get_m_localShapeInfo=Z.prototype.CA=function(){return k(hA(this.hy),tB)};Z.prototype.set_m_localShapeInfo=Z.prototype.iD=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);iA(c,a)};Object.defineProperty(Z.prototype,"m_localShapeInfo",{get:Z.prototype.CA,set:Z.prototype.iD}); -Z.prototype.get_m_hitNormalLocal=Z.prototype.mA=function(){return k(jA(this.hy),p)};Z.prototype.set_m_hitNormalLocal=Z.prototype.TC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);kA(c,a)};Object.defineProperty(Z.prototype,"m_hitNormalLocal",{get:Z.prototype.mA,set:Z.prototype.TC});Z.prototype.get_m_hitPointLocal=Z.prototype.oA=function(){return k(lA(this.hy),p)};Z.prototype.set_m_hitPointLocal=Z.prototype.VC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);mA(c,a)}; -Object.defineProperty(Z.prototype,"m_hitPointLocal",{get:Z.prototype.oA,set:Z.prototype.VC});Z.prototype.get_m_hitFraction=Z.prototype.jA=function(){return nA(this.hy)};Z.prototype.set_m_hitFraction=Z.prototype.QC=function(a){var c=this.hy;a&&"object"===typeof a&&(a=a.hy);oA(c,a)};Object.defineProperty(Z.prototype,"m_hitFraction",{get:Z.prototype.jA,set:Z.prototype.QC});Z.prototype.__destroy__=function(){pA(this.hy)}; -(function(){function a(){b.BT_CONSTRAINT_ERP=qA();b.BT_CONSTRAINT_STOP_ERP=rA();b.BT_CONSTRAINT_CFM=sA();b.BT_CONSTRAINT_STOP_CFM=tA();b.PHY_FLOAT=uA();b.PHY_DOUBLE=vA();b.PHY_INTEGER=wA();b.PHY_SHORT=xA();b.PHY_FIXEDPOINT88=yA();b.PHY_UCHAR=zA()}Ka?a():Ia.unshift(a)})();this.Ammo=b; - - - return Ammo.ready -} -); -})(); -if (typeof exports === 'object' && typeof module === 'object') - module.exports = Ammo; - else if (typeof define === 'function' && define['amd']) - define([], function() { return Ammo; }); - else if (typeof exports === 'object') - exports["Ammo"] = Ammo; - diff --git a/three/addons/libs/ammo.wasm.wasm b/three/addons/libs/ammo.wasm.wasm deleted file mode 100644 index fb4eff284d1f8b32ba9817027d0652860604d436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651386 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

eKer0<`BP&yL-RXx}I~Q3+30jaUi2 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

jLGs0LqF!WjASSBdpd9XB&sG$ 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%0AVXbIDeV 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 z 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�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

7U;%l}=+8W1_Ik-Y6E%s2g#S4p}@2+%$p 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["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(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);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}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 len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}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}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}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}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=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 initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}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)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}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["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="basis_transcoder.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return Promise.resolve().then(getBinary)}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["K"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["L"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var structRegistrations={};function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationGroup=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function attachFinalizer(handle){if("undefined"===typeof FinalizationGroup){attachFinalizer=function(handle){return handle};return handle}finalizationGroup=new FinalizationGroup(function(iter){for(var result=iter.next();!result.done;result=iter.next()){var $$=result.value;if(!$$.ptr){console.warn("object already deleted: "+$$.ptr)}else{releaseClassHandle($$)}}});attachFinalizer=function(handle){finalizationGroup.register(handle,handle.$$,handle.$$);return handle};detachFinalizer=function(handle){finalizationGroup.unregister(handle.$$)};return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}var delayFunction=undefined;var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}var registeredPointers={};function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,__emval_register(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+_embind_repr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}return Module["dynCall_"+sig].call(null,ptr)}function dynCall(sig,ptr,args){if(sig.indexOf("j")!=-1){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}function getDynCaller(sig,ptr){assert(sig.indexOf("j")>=0,"getDynCaller should only be called with i64 sigs");var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i>2)+i])}return array}function __embind_register_class_constructor(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor){assert(argCount>0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);var args=[rawConstructor];var destructors=[];whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=function unboundTypeHandler(){throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){classType.registeredClass.constructor_body[argCount-1]=function constructor_body(){if(arguments.length!==argCount-1){throwBindingError(humanName+" called with "+arguments.length+" arguments, expected "+(argCount-1))}destructors.length=0;args.length=argCount;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i>1])};case 2:return function(pointer){var heap=signed?HEAP32:HEAPU32;return this["fromWireType"](heap[pointer>>2])};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_enum(rawType,name,size,isSigned){var shift=getShiftFromSize(size);name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name:name,constructor:ctor,"fromWireType":function(c){return this.constructor.values[c]},"toWireType":function(destructors,c){return c.value},"argPackAdvance":8,"readValueFromPointer":enumReadValueFromPointer(name,shift,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function __embind_register_enum_value(rawEnumType,name,enumValue){var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(enumType.name+"_"+name,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value}function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn){var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError("Cannot call "+name+" due to unbound types",argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,function(argTypes){var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn),argCount-1);return[]})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.indexOf("unsigned")!=-1;registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){structRegistrations[rawType]={name:readLatin1String(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structRegistrations[structType].fields.push({fieldName:readLatin1String(fieldName),getterReturnType:getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext:getterContext,setterArgumentType:setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext:setterContext})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function requireHandle(handle){if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value}function __emval_as(handle,returnType,destructorsRef){handle=requireHandle(handle);returnType=requireRegisteredType(returnType,"emval::as");var destructors=[];var rd=__emval_register(destructors);HEAP32[destructorsRef>>2]=rd;return returnType["toWireType"](destructors,handle)}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}else{return symbol}}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=requireHandle(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_get_global(){if(typeof globalThis==="object"){return globalThis}return function(){return Function}()("return this")()}function __emval_get_global(name){if(name===0){return __emval_register(emval_get_global())}else{name=getStringOrSymbol(name);return __emval_register(emval_get_global()[name])}}function __emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function __emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2)+i],"parameter "+i)}return a}function __emval_get_method_caller(argCount,argTypes){var types=__emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var params=["retType"];var args=[retType];var argsList="";for(var i=0;i4){emval_handle_array[handle].refcount+=1}}function craftEmvalAllocator(argCount){var argsList="";for(var i=0;i>> 2) + "+i+'], "parameter '+i+'");\n'+"var arg"+i+" = argType"+i+".readValueFromPointer(args);\n"+"args += argType"+i+"['argPackAdvance'];\n"}functionBody+="var obj = new constructor("+argsList+");\n"+"return __emval_register(obj);\n"+"}\n";return new Function("requireRegisteredType","Module","__emval_register",functionBody)(requireRegisteredType,Module,__emval_register)}var emval_newers={};function __emval_new(handle,argCount,argTypes,args){handle=requireHandle(handle);var newer=emval_newers[argCount];if(!newer){newer=craftEmvalAllocator(argCount);emval_newers[argCount]=newer}return newer(handle,argTypes,args)}function __emval_new_cstring(v){return __emval_register(getStringOrSymbol(v))}function __emval_run_destructors(handle){var destructors=emval_handle_array[handle].value;runDestructors(destructors);__emval_decref(handle)}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _setTempRet0($i){setTempRet0($i|0)}InternalError=Module["InternalError"]=extendError(Error,"InternalError");embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");init_ClassHandle();init_RegisteredPointer();init_embind();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();__ATINIT__.push({func:function(){___wasm_call_ctors()}});var asmLibraryArg={"t":__embind_finalize_value_object,"I":__embind_register_bool,"x":__embind_register_class,"w":__embind_register_class_constructor,"d":__embind_register_class_function,"k":__embind_register_constant,"H":__embind_register_emval,"n":__embind_register_enum,"a":__embind_register_enum_value,"A":__embind_register_float,"i":__embind_register_function,"j":__embind_register_integer,"h":__embind_register_memory_view,"B":__embind_register_std_string,"v":__embind_register_std_wstring,"u":__embind_register_value_object,"c":__embind_register_value_object_field,"J":__embind_register_void,"m":__emval_as,"s":__emval_call_void_method,"b":__emval_decref,"y":__emval_get_global,"p":__emval_get_method_caller,"r":__emval_get_module_property,"e":__emval_get_property,"g":__emval_incref,"q":__emval_new,"f":__emval_new_cstring,"l":__emval_run_destructors,"o":_abort,"E":_emscripten_memcpy_big,"F":_emscripten_resize_heap,"G":_fd_close,"C":_fd_seek,"z":_fd_write,"D":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["M"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["N"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["O"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["P"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["Q"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["R"]).apply(null,arguments)};var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); - - - return BASIS.ready -} -); -})(); -if (typeof exports === 'object' && typeof module === 'object') - module.exports = BASIS; -else if (typeof define === 'function' && define['amd']) - define([], function() { return BASIS; }); -else if (typeof exports === 'object') - exports["BASIS"] = BASIS; diff --git a/three/addons/libs/basis/basis_transcoder.wasm b/three/addons/libs/basis/basis_transcoder.wasm deleted file mode 100644 index 4b9c3437170cf226600057096490d0a2fa8d74ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499935 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:{}},t(e.exports,e)),e.exports);var Er=R(Pt=>{"use strict";Object.defineProperty(Pt,"__esModule",{value:!0});Pt.VERSION=void 0;Pt.VERSION="9.0.1"});var k=R((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(t,e){for(var r=0,n=e.length,i=t.length;r{(function(t,e){typeof define=="function"&&define.amd?define([],e):typeof St=="object"&&St.exports?St.exports=e():t.regexpToAst=e()})(typeof self!="undefined"?self:sn,function(){function t(){}t.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},t.prototype.restoreState=function(u){this.idx=u.idx,this.input=u.input,this.groupIdx=u.groupIdx},t.prototype.pattern=function(u){this.idx=0,this.input=u,this.groupIdx=0,this.consumeChar("/");var d=this.disjunction();this.consumeChar("/");for(var A={type:"Flags",loc:{begin:this.idx,end:u.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(A,"global");break;case"i":o(A,"ignoreCase");break;case"m":o(A,"multiLine");break;case"u":o(A,"unicode");break;case"y":o(A,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:A,value:d,loc:this.loc(0)}},t.prototype.disjunction=function(){var u=[],d=this.idx;for(u.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),u.push(this.alternative());return{type:"Disjunction",value:u,loc:this.loc(d)}},t.prototype.alternative=function(){for(var u=[],d=this.idx;this.isTerm();)u.push(this.term());return{type:"Alternative",value:u,loc:this.loc(d)}},t.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},t.prototype.assertion=function(){var u=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(u)};case"$":return{type:"EndAnchor",loc:this.loc(u)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(u)};case"B":return{type:"NonWordBoundary",loc:this.loc(u)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var d;switch(this.popChar()){case"=":d="Lookahead";break;case"!":d="NegativeLookahead";break}s(d);var A=this.disjunction();return this.consumeChar(")"),{type:d,value:A,loc:this.loc(u)}}c()},t.prototype.quantifier=function(u){var d,A=this.idx;switch(this.popChar()){case"*":d={atLeast:0,atMost:Infinity};break;case"+":d={atLeast:1,atMost:Infinity};break;case"?":d={atLeast:0,atMost:1};break;case"{":var _=this.integerIncludingZero();switch(this.popChar()){case"}":d={atLeast:_,atMost:_};break;case",":var g;this.isDigit()?(g=this.integerIncludingZero(),d={atLeast:_,atMost:g}):d={atLeast:_,atMost:Infinity},this.consumeChar("}");break}if(u===!0&&d===void 0)return;s(d);break}if(!(u===!0&&d===void 0))return s(d),this.peekChar(0)==="?"?(this.consumeChar("?"),d.greedy=!1):d.greedy=!0,d.type="Quantifier",d.loc=this.loc(A),d},t.prototype.atom=function(){var u,d=this.idx;switch(this.peekChar()){case".":u=this.dotAll();break;case"\\":u=this.atomEscape();break;case"[":u=this.characterClass();break;case"(":u=this.group();break}return u===void 0&&this.isPatternCharacter()&&(u=this.patternCharacter()),s(u),u.loc=this.loc(d),this.isQuantifier()&&(u.quantifier=this.quantifier()),u},t.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[i(` -`),i("\r"),i("\u2028"),i("\u2029")]}},t.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},t.prototype.decimalEscapeAtom=function(){var u=this.positiveInteger();return{type:"GroupBackReference",value:u}},t.prototype.characterClassEscape=function(){var u,d=!1;switch(this.popChar()){case"d":u=p;break;case"D":u=p,d=!0;break;case"s":u=m;break;case"S":u=m,d=!0;break;case"w":u=l;break;case"W":u=l,d=!0;break}return s(u),{type:"Set",value:u,complement:d}},t.prototype.controlEscapeAtom=function(){var u;switch(this.popChar()){case"f":u=i("\f");break;case"n":u=i(` -`);break;case"r":u=i("\r");break;case"t":u=i(" ");break;case"v":u=i("\v");break}return s(u),{type:"Character",value:u}},t.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var u=this.popChar();if(/[a-zA-Z]/.test(u)===!1)throw Error("Invalid ");var d=u.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:d}},t.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:i("\0")}},t.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},t.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},t.prototype.identityEscapeAtom=function(){var u=this.popChar();return{type:"Character",value:i(u)}},t.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var u=this.popChar();return{type:"Character",value:i(u)}}},t.prototype.characterClass=function(){var u=[],d=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),d=!0);this.isClassAtom();){var A=this.classAtom(),_=A.type==="Character";if(_&&this.isRangeDash()){this.consumeChar("-");var g=this.classAtom(),y=g.type==="Character";if(y){if(g.value=this.input.length)throw Error("Unexpected end of input");this.idx++},t.prototype.loc=function(u){return{begin:u,end:this.idx}};var e=/[0-9a-fA-F]/,r=/[0-9]/,n=/[1-9]/;function i(u){return u.charCodeAt(0)}function a(u,d){u.length!==void 0?u.forEach(function(A){d.push(A)}):d.push(u)}function o(u,d){if(u[d]===!0)throw"duplicate flag "+d;u[d]=!0}function s(u){if(u===void 0)throw Error("Internal Error - Should never get here!")}function c(){throw Error("Internal Error - Should never get here!")}var f,p=[];for(f=i("0");f<=i("9");f++)p.push(f);var l=[i("_")].concat(p);for(f=i("a");f<=i("z");f++)l.push(f);for(f=i("A");f<=i("Z");f++)l.push(f);var m=[i(" "),i("\f"),i(` -`),i("\r"),i(" "),i("\v"),i(" "),i("\xA0"),i("\u1680"),i("\u2000"),i("\u2001"),i("\u2002"),i("\u2003"),i("\u2004"),i("\u2005"),i("\u2006"),i("\u2007"),i("\u2008"),i("\u2009"),i("\u200A"),i("\u2028"),i("\u2029"),i("\u202F"),i("\u205F"),i("\u3000"),i("\uFEFF")];function v(){}return v.prototype.visitChildren=function(u){for(var d in u){var A=u[d];u.hasOwnProperty(d)&&(A.type!==void 0?this.visit(A):Array.isArray(A)&&A.forEach(function(_){this.visit(_)},this))}},v.prototype.visit=function(u){switch(u.type){case"Pattern":this.visitPattern(u);break;case"Flags":this.visitFlags(u);break;case"Disjunction":this.visitDisjunction(u);break;case"Alternative":this.visitAlternative(u);break;case"StartAnchor":this.visitStartAnchor(u);break;case"EndAnchor":this.visitEndAnchor(u);break;case"WordBoundary":this.visitWordBoundary(u);break;case"NonWordBoundary":this.visitNonWordBoundary(u);break;case"Lookahead":this.visitLookahead(u);break;case"NegativeLookahead":this.visitNegativeLookahead(u);break;case"Character":this.visitCharacter(u);break;case"Set":this.visitSet(u);break;case"Group":this.visitGroup(u);break;case"GroupBackReference":this.visitGroupBackReference(u);break;case"Quantifier":this.visitQuantifier(u);break}this.visitChildren(u)},v.prototype.visitPattern=function(u){},v.prototype.visitFlags=function(u){},v.prototype.visitDisjunction=function(u){},v.prototype.visitAlternative=function(u){},v.prototype.visitStartAnchor=function(u){},v.prototype.visitEndAnchor=function(u){},v.prototype.visitWordBoundary=function(u){},v.prototype.visitNonWordBoundary=function(u){},v.prototype.visitLookahead=function(u){},v.prototype.visitNegativeLookahead=function(u){},v.prototype.visitCharacter=function(u){},v.prototype.visitSet=function(u){},v.prototype.visitGroup=function(u){},v.prototype.visitGroupBackReference=function(u){},v.prototype.visitQuantifier=function(u){},{RegExpParser:t,BaseRegExpVisitor:v,VERSION:"0.5.0"}})});var Lt=R(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.clearRegExpParserCache=He.getRegExpAst=void 0;var Ga=xt(),Ct={},Wa=new Ga.RegExpParser;function Ba(t){var e=t.toString();if(Ct.hasOwnProperty(e))return Ct[e];var r=Wa.pattern(e);return Ct[e]=r,r}He.getRegExpAst=Ba;function qa(){Ct={}}He.clearRegExpParserCache=qa});var pn=R(re=>{"use strict";var ja=re&&re.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(re,"__esModule",{value:!0});re.canMatchCharCode=re.firstCharOptimizedIndices=re.getOptimizedStartCodesIndices=re.failedOptimizationPrefixMsg=void 0;var un=xt(),pe=k(),cn=Lt(),Ce=Tr(),ln="Complement Sets are not supported for first char optimization";re.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function Va(t,e){e===void 0&&(e=!1);try{var r=cn.getRegExpAst(t),n=Mt(r.value,{},r.flags.ignoreCase);return n}catch(a){if(a.message===ln)e&&pe.PRINT_WARNING(""+re.failedOptimizationPrefixMsg+(" Unable to optimize: < "+t.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var i="";e&&(i=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),pe.PRINT_ERROR(re.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+t.toString()+` > -`)+(" Using the regexp-to-ast library version: "+un.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+i)}}return[]}re.getOptimizedStartCodesIndices=Va;function Mt(t,e,r){switch(t.type){case"Disjunction":for(var n=0;n=Ce.minOptimizationVal)for(var m=p.from>=Ce.minOptimizationVal?p.from:Ce.minOptimizationVal,v=p.to,u=Ce.charCodeToOptimizedIndex(m),d=Ce.charCodeToOptimizedIndex(v),A=u;A<=d;A++)e[A]=A}}});break;case"Group":Mt(o.value,e,r);break;default:throw Error("Non Exhaustive Match")}var s=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&yr(o)===!1||o.type!=="Group"&&s===!1)break}break;default:throw Error("non exhaustive match!")}return pe.values(e)}re.firstCharOptimizedIndices=Mt;function bt(t,e,r){var n=Ce.charCodeToOptimizedIndex(t);e[n]=n,r===!0&&Ka(t,e)}function Ka(t,e){var r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){var i=Ce.charCodeToOptimizedIndex(n.charCodeAt(0));e[i]=i}else{var a=r.toLowerCase();if(a!==r){var i=Ce.charCodeToOptimizedIndex(a.charCodeAt(0));e[i]=i}}}function fn(t,e){return pe.find(t.value,function(r){if(typeof r=="number")return pe.contains(e,r);var n=r;return pe.find(e,function(i){return n.from<=i&&i<=n.to})!==void 0})}function yr(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?pe.isArray(t.value)?pe.every(t.value,yr):yr(t.value):!1}var za=function(t){ja(e,t);function e(r){var n=t.call(this)||this;return n.targetCharCodes=r,n.found=!1,n}return e.prototype.visitChildren=function(r){if(this.found!==!0){switch(r.type){case"Lookahead":this.visitLookahead(r);return;case"NegativeLookahead":this.visitNegativeLookahead(r);return}t.prototype.visitChildren.call(this,r)}},e.prototype.visitCharacter=function(r){pe.contains(this.targetCharCodes,r.value)&&(this.found=!0)},e.prototype.visitSet=function(r){r.complement?fn(r,this.targetCharCodes)===void 0&&(this.found=!0):fn(r,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(un.BaseRegExpVisitor);function Ha(t,e){if(e instanceof RegExp){var r=cn.getRegExpAst(e),n=new za(t);return n.visit(r),n.found}else return pe.find(e,function(i){return pe.contains(t,i.charCodeAt(0))})!==void 0}re.canMatchCharCode=Ha});var Tr=R(T=>{"use strict";var hn=T&&T.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(T,"__esModule",{value:!0});T.charCodeToOptimizedIndex=T.minOptimizationVal=T.buildLineBreakIssueMessage=T.LineTerminatorOptimizedTester=T.isShortPattern=T.isCustomPattern=T.cloneEmptyGroups=T.performWarningRuntimeChecks=T.performRuntimeChecks=T.addStickyFlag=T.addStartOfInput=T.findUnreachablePatterns=T.findModesThatDoNotExist=T.findInvalidGroupType=T.findDuplicatePatterns=T.findUnsupportedFlags=T.findStartOfInputAnchor=T.findEmptyMatchRegExps=T.findEndOfInputAnchor=T.findInvalidPatterns=T.findMissingPatterns=T.validatePatterns=T.analyzeTokenTypes=T.enableSticky=T.disableSticky=T.SUPPORT_STICKY=T.MODES=T.DEFAULT_MODE=void 0;var dn=xt(),F=ft(),h=k(),Ye=pn(),vn=Lt(),Ae="PATTERN";T.DEFAULT_MODE="defaultMode";T.MODES="modes";T.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function Ya(){T.SUPPORT_STICKY=!1}T.disableSticky=Ya;function Xa(){T.SUPPORT_STICKY=!0}T.enableSticky=Xa;function Za(t,e){e=h.defaults(e,{useSticky:T.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(g,y){return y()}});var r=e.tracer;r("initCharCodeToOptimizedIndexMap",function(){$a()});var n;r("Reject Lexer.NA",function(){n=h.reject(t,function(g){return g[Ae]===F.Lexer.NA})});var i=!1,a;r("Transform Patterns",function(){i=!1,a=h.map(n,function(g){var y=g[Ae];if(h.isRegExp(y)){var b=y.source;return b.length===1&&b!=="^"&&b!=="$"&&b!=="."&&!y.ignoreCase?b:b.length===2&&b[0]==="\\"&&!h.contains(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],b[1])?b[1]:e.useSticky?gr(y):_r(y)}else{if(h.isFunction(y))return i=!0,{exec:y};if(h.has(y,"exec"))return i=!0,y;if(typeof y=="string"){if(y.length===1)return y;var L=y.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),se=new RegExp(L);return e.useSticky?gr(se):_r(se)}else throw Error("non exhaustive match")}})});var o,s,c,f,p;r("misc mapping",function(){o=h.map(n,function(g){return g.tokenTypeIdx}),s=h.map(n,function(g){var y=g.GROUP;if(y!==F.Lexer.SKIPPED){if(h.isString(y))return y;if(h.isUndefined(y))return!1;throw Error("non exhaustive match")}}),c=h.map(n,function(g){var y=g.LONGER_ALT;if(y){var b=h.indexOf(n,y);return b}}),f=h.map(n,function(g){return g.PUSH_MODE}),p=h.map(n,function(g){return h.has(g,"POP_MODE")})});var l;r("Line Terminator Handling",function(){var g=Tn(e.lineTerminatorCharacters);l=h.map(n,function(y){return!1}),e.positionTracking!=="onlyOffset"&&(l=h.map(n,function(y){if(h.has(y,"LINE_BREAKS"))return y.LINE_BREAKS;if(En(y,g)===!1)return Ye.canMatchCharCode(g,y.PATTERN)}))});var m,v,u,d;r("Misc Mapping #2",function(){m=h.map(n,Ar),v=h.map(a,mn),u=h.reduce(n,function(g,y){var b=y.GROUP;return h.isString(b)&&b!==F.Lexer.SKIPPED&&(g[b]=[]),g},{}),d=h.map(a,function(g,y){return{pattern:a[y],longerAlt:c[y],canLineTerminator:l[y],isCustom:m[y],short:v[y],group:s[y],push:f[y],pop:p[y],tokenTypeIdx:o[y],tokenType:n[y]}})});var A=!0,_=[];return e.safeMode||r("First Char Optimization",function(){_=h.reduce(n,function(g,y,b){if(typeof y.PATTERN=="string"){var L=y.PATTERN.charCodeAt(0),se=Or(L);Rr(g,se,d[b])}else if(h.isArray(y.START_CHARS_HINT)){var fe;h.forEach(y.START_CHARS_HINT,function(ue){var Q=typeof ue=="string"?ue.charCodeAt(0):ue,te=Or(Q);fe!==te&&(fe=te,Rr(g,te,d[b]))})}else if(h.isRegExp(y.PATTERN))if(y.PATTERN.unicode)A=!1,e.ensureOptimizations&&h.PRINT_ERROR(""+Ye.failedOptimizationPrefixMsg+(" Unable to analyze < "+y.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var Z=Ye.getOptimizedStartCodesIndices(y.PATTERN,e.ensureOptimizations);h.isEmpty(Z)&&(A=!1),h.forEach(Z,function(ue){Rr(g,ue,d[b])})}else e.ensureOptimizations&&h.PRINT_ERROR(""+Ye.failedOptimizationPrefixMsg+(" TokenType: <"+y.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),A=!1;return g},[])}),r("ArrayPacking",function(){_=h.packArray(_)}),{emptyGroups:u,patternIdxToConfig:d,charCodeToPatternIdxToConfig:_,hasCustom:i,canBeOptimized:A}}T.analyzeTokenTypes=Za;function Ja(t,e){var r=[],n=yn(t);r=r.concat(n.errors);var i=_n(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(Qa(a)),r=r.concat(gn(a)),r=r.concat(An(a,e)),r=r.concat(Rn(a)),r}T.validatePatterns=Ja;function Qa(t){var e=[],r=h.filter(t,function(n){return h.isRegExp(n[Ae])});return e=e.concat(On(r)),e=e.concat(In(r)),e=e.concat(kn(r)),e=e.concat(Pn(r)),e=e.concat(Nn(r)),e}function yn(t){var e=h.filter(t,function(i){return!h.has(i,Ae)}),r=h.map(e,function(i){return{message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:F.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[i]}}),n=h.difference(t,e);return{errors:r,valid:n}}T.findMissingPatterns=yn;function _n(t){var e=h.filter(t,function(i){var a=i[Ae];return!h.isRegExp(a)&&!h.isFunction(a)&&!h.has(a,"exec")&&!h.isString(a)}),r=h.map(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:F.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[i]}}),n=h.difference(t,e);return{errors:r,valid:n}}T.findInvalidPatterns=_n;var eo=/[^\\][\$]/;function On(t){var e=function(i){hn(a,i);function a(){var o=i!==null&&i.apply(this,arguments)||this;return o.found=!1,o}return a.prototype.visitEndAnchor=function(o){this.found=!0},a}(dn.BaseRegExpVisitor),r=h.filter(t,function(i){var a=i[Ae];try{var o=vn.getRegExpAst(a),s=new e;return s.visit(o),s.found}catch(c){return eo.test(a.source)}}),n=h.map(r,function(i){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:F.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[i]}});return n}T.findEndOfInputAnchor=On;function Nn(t){var e=h.filter(t,function(n){var i=n[Ae];return i.test("")}),r=h.map(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:F.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[n]}});return r}T.findEmptyMatchRegExps=Nn;var to=/[^\\[][\^]|^\^/;function In(t){var e=function(i){hn(a,i);function a(){var o=i!==null&&i.apply(this,arguments)||this;return o.found=!1,o}return a.prototype.visitStartAnchor=function(o){this.found=!0},a}(dn.BaseRegExpVisitor),r=h.filter(t,function(i){var a=i[Ae];try{var o=vn.getRegExpAst(a),s=new e;return s.visit(o),s.found}catch(c){return to.test(a.source)}}),n=h.map(r,function(i){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:F.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[i]}});return n}T.findStartOfInputAnchor=In;function kn(t){var e=h.filter(t,function(n){var i=n[Ae];return i instanceof RegExp&&(i.multiline||i.global)}),r=h.map(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:F.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}});return r}T.findUnsupportedFlags=kn;function Pn(t){var e=[],r=h.map(t,function(a){return h.reduce(t,function(o,s){return a.PATTERN.source===s.PATTERN.source&&!h.contains(e,s)&&s.PATTERN!==F.Lexer.NA&&(e.push(s),o.push(s)),o},[])});r=h.compact(r);var n=h.filter(r,function(a){return a.length>1}),i=h.map(n,function(a){var o=h.map(a,function(c){return c.name}),s=h.first(a).PATTERN;return{message:"The same RegExp pattern ->"+s+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:F.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}});return i}T.findDuplicatePatterns=Pn;function gn(t){var e=h.filter(t,function(n){if(!h.has(n,"GROUP"))return!1;var i=n.GROUP;return i!==F.Lexer.SKIPPED&&i!==F.Lexer.NA&&!h.isString(i)}),r=h.map(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:F.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}});return r}T.findInvalidGroupType=gn;function An(t,e){var r=h.filter(t,function(i){return i.PUSH_MODE!==void 0&&!h.contains(e,i.PUSH_MODE)}),n=h.map(r,function(i){var a="Token Type: ->"+i.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+i.PUSH_MODE+"<-which does not exist";return{message:a,type:F.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}});return n}T.findModesThatDoNotExist=An;function Rn(t){var e=[],r=h.reduce(t,function(n,i,a){var o=i.PATTERN;return o===F.Lexer.NA||(h.isString(o)?n.push({str:o,idx:a,tokenType:i}):h.isRegExp(o)&&no(o)&&n.push({str:o.source,idx:a,tokenType:i})),n},[]);return h.forEach(t,function(n,i){h.forEach(r,function(a){var o=a.str,s=a.idx,c=a.tokenType;if(i"+n.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:f,type:F.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[n,c]})}})}),e}T.findUnreachablePatterns=Rn;function ro(t,e){if(h.isRegExp(e)){var r=e.exec(t);return r!==null&&r.index===0}else{if(h.isFunction(e))return e(t,0,[],{});if(h.has(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function no(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return h.find(e,function(r){return t.source.indexOf(r)!==-1})===void 0}function _r(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}T.addStartOfInput=_r;function gr(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}T.addStickyFlag=gr;function io(t,e,r){var n=[];return h.has(t,T.DEFAULT_MODE)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+T.DEFAULT_MODE+`> property in its definition -`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),h.has(t,T.MODES)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+T.MODES+`> property in its definition -`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),h.has(t,T.MODES)&&h.has(t,T.DEFAULT_MODE)&&!h.has(t.modes,t.defaultMode)&&n.push({message:"A MultiMode Lexer cannot be initialized with a "+T.DEFAULT_MODE+": <"+t.defaultMode+`>which does not exist -`,type:F.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),h.has(t,T.MODES)&&h.forEach(t.modes,function(i,a){h.forEach(i,function(o,s){h.isUndefined(o)&&n.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+a+"> at index: <"+s+`> -`),type:F.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),n}T.performRuntimeChecks=io;function ao(t,e,r){var n=[],i=!1,a=h.compact(h.flatten(h.mapValues(t.modes,function(c){return c}))),o=h.reject(a,function(c){return c[Ae]===F.Lexer.NA}),s=Tn(r);return e&&h.forEach(o,function(c){var f=En(c,s);if(f!==!1){var p=Sn(c,f),l={message:p,type:f.issue,tokenType:c};n.push(l)}else h.has(c,"LINE_BREAKS")?c.LINE_BREAKS===!0&&(i=!0):Ye.canMatchCharCode(s,c.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:F.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),n}T.performWarningRuntimeChecks=ao;function oo(t){var e={},r=h.keys(t);return h.forEach(r,function(n){var i=t[n];if(h.isArray(i))e[n]=[];else throw Error("non exhaustive match")}),e}T.cloneEmptyGroups=oo;function Ar(t){var e=t.PATTERN;if(h.isRegExp(e))return!1;if(h.isFunction(e))return!0;if(h.has(e,"exec"))return!0;if(h.isString(e))return!1;throw Error("non exhaustive match")}T.isCustomPattern=Ar;function mn(t){return h.isString(t)&&t.length===1?t.charCodeAt(0):!1}T.isShortPattern=mn;T.LineTerminatorOptimizedTester={test:function(t){for(var e=t.length,r=this.lastIndex;r Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===F.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+t.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}T.buildLineBreakIssueMessage=Sn;function Tn(t){var e=h.map(t,function(r){return h.isString(r)&&r.length>0?r.charCodeAt(0):r});return e}function Rr(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}T.minOptimizationVal=256;var Ft=[];function Or(t){return t255?255+~~(t/255):t}}});var Xe=R(N=>{"use strict";Object.defineProperty(N,"__esModule",{value:!0});N.isTokenType=N.hasExtendingTokensTypesMapProperty=N.hasExtendingTokensTypesProperty=N.hasCategoriesProperty=N.hasShortKeyProperty=N.singleAssignCategoriesToksMap=N.assignCategoriesMapProp=N.assignCategoriesTokensProp=N.assignTokenDefaultProps=N.expandCategories=N.augmentTokenTypes=N.tokenIdxToClass=N.tokenShortNameIdx=N.tokenStructuredMatcherNoCategories=N.tokenStructuredMatcher=void 0;var V=k();function so(t,e){var r=t.tokenTypeIdx;return r===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[r]===!0}N.tokenStructuredMatcher=so;function uo(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}N.tokenStructuredMatcherNoCategories=uo;N.tokenShortNameIdx=1;N.tokenIdxToClass={};function co(t){var e=xn(t);Cn(e),Mn(e),Ln(e),V.forEach(e,function(r){r.isParent=r.categoryMatches.length>0})}N.augmentTokenTypes=co;function xn(t){for(var e=V.cloneArr(t),r=t,n=!0;n;){r=V.compact(V.flatten(V.map(r,function(a){return a.CATEGORIES})));var i=V.difference(r,e);e=e.concat(i),V.isEmpty(i)?n=!1:r=i}return e}N.expandCategories=xn;function Cn(t){V.forEach(t,function(e){bn(e)||(N.tokenIdxToClass[N.tokenShortNameIdx]=e,e.tokenTypeIdx=N.tokenShortNameIdx++),Nr(e)&&!V.isArray(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Nr(e)||(e.CATEGORIES=[]),Fn(e)||(e.categoryMatches=[]),wn(e)||(e.categoryMatchesMap={})})}N.assignTokenDefaultProps=Cn;function Ln(t){V.forEach(t,function(e){e.categoryMatches=[],V.forEach(e.categoryMatchesMap,function(r,n){e.categoryMatches.push(N.tokenIdxToClass[n].tokenTypeIdx)})})}N.assignCategoriesTokensProp=Ln;function Mn(t){V.forEach(t,function(e){Ir([],e)})}N.assignCategoriesMapProp=Mn;function Ir(t,e){V.forEach(t,function(r){e.categoryMatchesMap[r.tokenTypeIdx]=!0}),V.forEach(e.CATEGORIES,function(r){var n=t.concat(e);V.contains(n,r)||Ir(n,r)})}N.singleAssignCategoriesToksMap=Ir;function bn(t){return V.has(t,"tokenTypeIdx")}N.hasShortKeyProperty=bn;function Nr(t){return V.has(t,"CATEGORIES")}N.hasCategoriesProperty=Nr;function Fn(t){return V.has(t,"categoryMatches")}N.hasExtendingTokensTypesProperty=Fn;function wn(t){return V.has(t,"categoryMatchesMap")}N.hasExtendingTokensTypesMapProperty=wn;function lo(t){return V.has(t,"tokenTypeIdx")}N.isTokenType=lo});var kr=R(wt=>{"use strict";Object.defineProperty(wt,"__esModule",{value:!0});wt.defaultLexerErrorProvider=void 0;wt.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,r,n,i){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+r+" characters.")}}});var ft=R(qe=>{"use strict";Object.defineProperty(qe,"__esModule",{value:!0});qe.Lexer=qe.LexerDefinitionErrorType=void 0;var Ee=Tr(),w=k(),fo=Xe(),po=kr(),ho=Lt(),vo;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(vo=qe.LexerDefinitionErrorType||(qe.LexerDefinitionErrorType={}));var pt={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:po.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(pt);var mo=function(){function t(e,r){var n=this;if(r===void 0&&(r=pt),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=w.merge(pt,r);var i=this.config.traceInitPerf;i===!0?(this.traceInitMaxIdent=Infinity,this.traceInitPerf=!0):typeof i=="number"&&(this.traceInitMaxIdent=i,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var a,o=!0;n.TRACE_INIT("Lexer Config handling",function(){if(n.config.lineTerminatorsPattern===pt.lineTerminatorsPattern)n.config.lineTerminatorsPattern=Ee.LineTerminatorOptimizedTester;else if(n.config.lineTerminatorCharacters===pt.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');n.trackStartLines=/full|onlyStart/i.test(n.config.positionTracking),n.trackEndLines=/full/i.test(n.config.positionTracking),w.isArray(e)?(a={modes:{}},a.modes[Ee.DEFAULT_MODE]=w.cloneArr(e),a[Ee.DEFAULT_MODE]=Ee.DEFAULT_MODE):(o=!1,a=w.cloneObj(e))}),n.config.skipValidations===!1&&(n.TRACE_INIT("performRuntimeChecks",function(){n.lexerDefinitionErrors=n.lexerDefinitionErrors.concat(Ee.performRuntimeChecks(a,n.trackStartLines,n.config.lineTerminatorCharacters))}),n.TRACE_INIT("performWarningRuntimeChecks",function(){n.lexerDefinitionWarning=n.lexerDefinitionWarning.concat(Ee.performWarningRuntimeChecks(a,n.trackStartLines,n.config.lineTerminatorCharacters))})),a.modes=a.modes?a.modes:{},w.forEach(a.modes,function(p,l){a.modes[l]=w.reject(p,function(m){return w.isUndefined(m)})});var s=w.keys(a.modes);if(w.forEach(a.modes,function(p,l){n.TRACE_INIT("Mode: <"+l+"> processing",function(){if(n.modes.push(l),n.config.skipValidations===!1&&n.TRACE_INIT("validatePatterns",function(){n.lexerDefinitionErrors=n.lexerDefinitionErrors.concat(Ee.validatePatterns(p,s))}),w.isEmpty(n.lexerDefinitionErrors)){fo.augmentTokenTypes(p);var m;n.TRACE_INIT("analyzeTokenTypes",function(){m=Ee.analyzeTokenTypes(p,{lineTerminatorCharacters:n.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:n.TRACE_INIT.bind(n)})}),n.patternIdxToConfig[l]=m.patternIdxToConfig,n.charCodeToPatternIdxToConfig[l]=m.charCodeToPatternIdxToConfig,n.emptyGroups=w.merge(n.emptyGroups,m.emptyGroups),n.hasCustom=m.hasCustom||n.hasCustom,n.canModeBeOptimized[l]=m.canBeOptimized}})}),n.defaultMode=a.defaultMode,!w.isEmpty(n.lexerDefinitionErrors)&&!n.config.deferDefinitionErrorsHandling){var c=w.map(n.lexerDefinitionErrors,function(p){return p.message}),f=c.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+f)}w.forEach(n.lexerDefinitionWarning,function(p){w.PRINT_WARNING(p.message)}),n.TRACE_INIT("Choosing sub-methods implementations",function(){if(Ee.SUPPORT_STICKY?(n.chopInput=w.IDENTITY,n.match=n.matchWithTest):(n.updateLastIndex=w.NOOP,n.match=n.matchWithExec),o&&(n.handleModes=w.NOOP),n.trackStartLines===!1&&(n.computeNewColumn=w.IDENTITY),n.trackEndLines===!1&&(n.updateTokenEndLineColumnLocation=w.NOOP),/full/i.test(n.config.positionTracking))n.createTokenInstance=n.createFullToken;else if(/onlyStart/i.test(n.config.positionTracking))n.createTokenInstance=n.createStartOnlyToken;else if(/onlyOffset/i.test(n.config.positionTracking))n.createTokenInstance=n.createOffsetOnlyToken;else throw Error('Invalid config option: "'+n.config.positionTracking+'"');n.hasCustom?(n.addToken=n.addTokenUsingPush,n.handlePayload=n.handlePayloadWithCustom):(n.addToken=n.addTokenUsingMemberAccess,n.handlePayload=n.handlePayloadNoCustom)}),n.TRACE_INIT("Failed Optimization Warnings",function(){var p=w.reduce(n.canModeBeOptimized,function(l,m,v){return m===!1&&l.push(v),l},[]);if(r.ensureOptimizations&&!w.isEmpty(p))throw Error("Lexer Modes: < "+p.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),n.TRACE_INIT("clearRegExpParserCache",function(){ho.clearRegExpParserCache()}),n.TRACE_INIT("toFastProperties",function(){w.toFastProperties(n)})})}return t.prototype.tokenize=function(e,r){if(r===void 0&&(r=this.defaultMode),!w.isEmpty(this.lexerDefinitionErrors)){var n=w.map(this.lexerDefinitionErrors,function(o){return o.message}),i=n.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+i)}var a=this.tokenizeInternal(e,r);return a},t.prototype.tokenizeInternal=function(e,r){var n=this,i,a,o,s,c,f,p,l,m,v,u,d,A,_,g,y=e,b=y.length,L=0,se=0,fe=this.hasCustom?0:Math.floor(e.length/10),Z=new Array(fe),ue=[],Q=this.trackStartLines?1:void 0,te=this.trackStartLines?1:void 0,xe=Ee.cloneEmptyGroups(this.emptyGroups),it=this.trackStartLines,at=this.config.lineTerminatorsPattern,Ke=0,we=[],ot=[],It=[],Qr=[];Object.freeze(Qr);var st=void 0;function Jr(){return we}function en(J){var lt=Ee.charCodeToOptimizedIndex(J),ze=ot[lt];return ze===void 0?Qr:ze}var wa=function(J){if(It.length===1&&J.tokenType.PUSH_MODE===void 0){var lt=n.config.errorMessageProvider.buildUnableToPopLexerModeMessage(J);ue.push({offset:J.startOffset,line:J.startLine!==void 0?J.startLine:void 0,column:J.startColumn!==void 0?J.startColumn:void 0,length:J.image.length,message:lt})}else{It.pop();var ze=w.last(It);we=n.patternIdxToConfig[ze],ot=n.charCodeToPatternIdxToConfig[ze],Ke=we.length;var Ua=n.canModeBeOptimized[ze]&&n.config.safeMode===!1;ot&&Ua?st=en:st=Jr}};function tn(J){It.push(J),ot=this.charCodeToPatternIdxToConfig[J],we=this.patternIdxToConfig[J],Ke=we.length,Ke=we.length;var lt=this.canModeBeOptimized[J]&&this.config.safeMode===!1;ot&<?st=en:st=Jr}tn.call(this,r);for(var me;Lc.length&&(c=o,f=p,me=fr)}break}}if(c!==null){if(l=c.length,m=me.group,m!==void 0&&(v=me.tokenTypeIdx,u=this.createTokenInstance(c,L,v,me.tokenType,Q,te,l),this.handlePayload(u,f),m===!1?se=this.addToken(Z,se,u):xe[m].push(u)),e=this.chopInput(e,l),L=L+l,te=this.computeNewColumn(te,l),it===!0&&me.canLineTerminator===!0){var kt=0,hr=void 0,dr=void 0;at.lastIndex=0;do hr=at.test(c),hr===!0&&(dr=at.lastIndex-1,kt++);while(hr===!0);kt!==0&&(Q=Q+kt,te=l-dr,this.updateTokenEndLineColumnLocation(u,m,dr,kt,Q,te,l))}this.handleModes(me,wa,tn,u)}else{for(var vr=L,an=Q,on=te,ct=!1;!ct&&L <"+e+">");var i=w.timer(r),a=i.time,o=i.value,s=a>10?console.warn:console.log;return this.traceInitIndent time: "+a+"ms"),this.traceInitIndent--,o}else return r()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();qe.Lexer=mo});var Ue=R(H=>{"use strict";Object.defineProperty(H,"__esModule",{value:!0});H.tokenMatcher=H.createTokenInstance=H.EOF=H.createToken=H.hasTokenLabel=H.tokenName=H.tokenLabel=void 0;var Te=k(),Eo=ft(),Pr=Xe();function To(t){return Dn(t)?t.LABEL:t.name}H.tokenLabel=To;function yo(t){return t.name}H.tokenName=yo;function Dn(t){return Te.isString(t.LABEL)&&t.LABEL!==""}H.hasTokenLabel=Dn;var _o="parent",Un="categories",Gn="label",Wn="group",Bn="push_mode",qn="pop_mode",jn="longer_alt",Vn="line_breaks",Kn="start_chars_hint";function zn(t){return go(t)}H.createToken=zn;function go(t){var e=t.pattern,r={};if(r.name=t.name,Te.isUndefined(e)||(r.PATTERN=e),Te.has(t,_o))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return Te.has(t,Un)&&(r.CATEGORIES=t[Un]),Pr.augmentTokenTypes([r]),Te.has(t,Gn)&&(r.LABEL=t[Gn]),Te.has(t,Wn)&&(r.GROUP=t[Wn]),Te.has(t,qn)&&(r.POP_MODE=t[qn]),Te.has(t,Bn)&&(r.PUSH_MODE=t[Bn]),Te.has(t,jn)&&(r.LONGER_ALT=t[jn]),Te.has(t,Vn)&&(r.LINE_BREAKS=t[Vn]),Te.has(t,Kn)&&(r.START_CHARS_HINT=t[Kn]),r}H.EOF=zn({name:"EOF",pattern:Eo.Lexer.NA});Pr.augmentTokenTypes([H.EOF]);function Ao(t,e,r,n,i,a,o,s){return{image:e,startOffset:r,endOffset:n,startLine:i,endLine:a,startColumn:o,endColumn:s,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}H.createTokenInstance=Ao;function Ro(t,e){return Pr.tokenStructuredMatcher(t,e)}H.tokenMatcher=Ro});var ne=R(S=>{"use strict";var Le=S&&S.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(S,"__esModule",{value:!0});S.serializeProduction=S.serializeGrammar=S.Terminal=S.Alternation=S.RepetitionWithSeparator=S.Repetition=S.RepetitionMandatoryWithSeparator=S.RepetitionMandatory=S.Option=S.Alternative=S.Rule=S.NonTerminal=S.AbstractProduction=void 0;var G=k(),Oo=Ue(),Re=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),G.forEach(this.definition,function(r){r.accept(e)})},t}();S.AbstractProduction=Re;var Hn=function(t){Le(e,t);function e(r){var n=t.call(this,[])||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(r){},enumerable:!1,configurable:!0}),e.prototype.accept=function(r){r.visit(this)},e}(Re);S.NonTerminal=Hn;var Yn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.orgText="",G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Rule=Yn;var Xn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.ignoreAmbiguities=!1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Alternative=Xn;var $n=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Option=$n;var Zn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionMandatory=Zn;var Qn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionMandatoryWithSeparator=Qn;var Jn=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.Repetition=Jn;var ei=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return e}(Re);S.RepetitionWithSeparator=ei;var ti=function(t){Le(e,t);function e(r){var n=t.call(this,r.definition)||this;return n.idx=1,n.ignoreAmbiguities=!1,n.hasPredicates=!1,G.assign(n,G.pick(r,function(i){return i!==void 0})),n}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(r){this._definition=r},enumerable:!1,configurable:!0}),e}(Re);S.Alternation=ti;var Dt=function(){function t(e){this.idx=1,G.assign(this,G.pick(e,function(r){return r!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();S.Terminal=Dt;function No(t){return G.map(t,ht)}S.serializeGrammar=No;function ht(t){function e(i){return G.map(i,ht)}if(t instanceof Hn)return{type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};if(t instanceof Xn)return{type:"Alternative",definition:e(t.definition)};if(t instanceof $n)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Zn)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Qn)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:ht(new Dt({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ei)return{type:"RepetitionWithSeparator",idx:t.idx,separator:ht(new Dt({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof Jn)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof ti)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof Dt){var r={type:"Terminal",name:t.terminalType.name,label:Oo.tokenLabel(t.terminalType),idx:t.idx},n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=G.isRegExp(n)?n.source:n),r}else{if(t instanceof Yn)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}S.serializeProduction=ht});var Gt=R(Ut=>{"use strict";Object.defineProperty(Ut,"__esModule",{value:!0});Ut.RestWalker=void 0;var Sr=k(),ie=ne(),Io=function(){function t(){}return t.prototype.walk=function(e,r){var n=this;r===void 0&&(r=[]),Sr.forEach(e.definition,function(i,a){var o=Sr.drop(e.definition,a+1);if(i instanceof ie.NonTerminal)n.walkProdRef(i,o,r);else if(i instanceof ie.Terminal)n.walkTerminal(i,o,r);else if(i instanceof ie.Alternative)n.walkFlat(i,o,r);else if(i instanceof ie.Option)n.walkOption(i,o,r);else if(i instanceof ie.RepetitionMandatory)n.walkAtLeastOne(i,o,r);else if(i instanceof ie.RepetitionMandatoryWithSeparator)n.walkAtLeastOneSep(i,o,r);else if(i instanceof ie.RepetitionWithSeparator)n.walkManySep(i,o,r);else if(i instanceof ie.Repetition)n.walkMany(i,o,r);else if(i instanceof ie.Alternation)n.walkOr(i,o,r);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,r,n){},t.prototype.walkProdRef=function(e,r,n){},t.prototype.walkFlat=function(e,r,n){var i=r.concat(n);this.walk(e,i)},t.prototype.walkOption=function(e,r,n){var i=r.concat(n);this.walk(e,i)},t.prototype.walkAtLeastOne=function(e,r,n){var i=[new ie.Option({definition:e.definition})].concat(r,n);this.walk(e,i)},t.prototype.walkAtLeastOneSep=function(e,r,n){var i=ri(e,r,n);this.walk(e,i)},t.prototype.walkMany=function(e,r,n){var i=[new ie.Option({definition:e.definition})].concat(r,n);this.walk(e,i)},t.prototype.walkManySep=function(e,r,n){var i=ri(e,r,n);this.walk(e,i)},t.prototype.walkOr=function(e,r,n){var i=this,a=r.concat(n);Sr.forEach(e.definition,function(o){var s=new ie.Alternative({definition:[o]});i.walk(s,a)})},t}();Ut.RestWalker=Io;function ri(t,e,r){var n=[new ie.Option({definition:[new ie.Terminal({terminalType:t.separator})].concat(t.definition)})],i=n.concat(e,r);return i}});var $e=R(Wt=>{"use strict";Object.defineProperty(Wt,"__esModule",{value:!0});Wt.GAstVisitor=void 0;var Oe=ne(),ko=function(){function t(){}return t.prototype.visit=function(e){var r=e;switch(r.constructor){case Oe.NonTerminal:return this.visitNonTerminal(r);case Oe.Alternative:return this.visitAlternative(r);case Oe.Option:return this.visitOption(r);case Oe.RepetitionMandatory:return this.visitRepetitionMandatory(r);case Oe.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(r);case Oe.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(r);case Oe.Repetition:return this.visitRepetition(r);case Oe.Alternation:return this.visitAlternation(r);case Oe.Terminal:return this.visitTerminal(r);case Oe.Rule:return this.visitRule(r);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}();Wt.GAstVisitor=ko});var vt=R(X=>{"use strict";var Po=X&&X.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(X,"__esModule",{value:!0});X.collectMethods=X.DslMethodsCollectorVisitor=X.getProductionDslName=X.isBranchingProd=X.isOptionalProd=X.isSequenceProd=void 0;var dt=k(),W=ne(),So=$e();function xo(t){return t instanceof W.Alternative||t instanceof W.Option||t instanceof W.Repetition||t instanceof W.RepetitionMandatory||t instanceof W.RepetitionMandatoryWithSeparator||t instanceof W.RepetitionWithSeparator||t instanceof W.Terminal||t instanceof W.Rule}X.isSequenceProd=xo;function xr(t,e){e===void 0&&(e=[]);var r=t instanceof W.Option||t instanceof W.Repetition||t instanceof W.RepetitionWithSeparator;return r?!0:t instanceof W.Alternation?dt.some(t.definition,function(n){return xr(n,e)}):t instanceof W.NonTerminal&&dt.contains(e,t)?!1:t instanceof W.AbstractProduction?(t instanceof W.NonTerminal&&e.push(t),dt.every(t.definition,function(n){return xr(n,e)})):!1}X.isOptionalProd=xr;function Co(t){return t instanceof W.Alternation}X.isBranchingProd=Co;function Lo(t){if(t instanceof W.NonTerminal)return"SUBRULE";if(t instanceof W.Option)return"OPTION";if(t instanceof W.Alternation)return"OR";if(t instanceof W.RepetitionMandatory)return"AT_LEAST_ONE";if(t instanceof W.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(t instanceof W.RepetitionWithSeparator)return"MANY_SEP";if(t instanceof W.Repetition)return"MANY";if(t instanceof W.Terminal)return"CONSUME";throw Error("non exhaustive match")}X.getProductionDslName=Lo;var ni=function(t){Po(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.separator="-",r.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},r}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(r){var n=r.terminalType.name+this.separator+"Terminal";dt.has(this.dslMethods,n)||(this.dslMethods[n]=[]),this.dslMethods[n].push(r)},e.prototype.visitNonTerminal=function(r){var n=r.nonTerminalName+this.separator+"Terminal";dt.has(this.dslMethods,n)||(this.dslMethods[n]=[]),this.dslMethods[n].push(r)},e.prototype.visitOption=function(r){this.dslMethods.option.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.dslMethods.repetitionWithSeparator.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.dslMethods.repetitionMandatory.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.dslMethods.repetitionMandatoryWithSeparator.push(r)},e.prototype.visitRepetition=function(r){this.dslMethods.repetition.push(r)},e.prototype.visitAlternation=function(r){this.dslMethods.alternation.push(r)},e}(So.GAstVisitor);X.DslMethodsCollectorVisitor=ni;var Bt=new ni;function Mo(t){Bt.reset(),t.accept(Bt);var e=Bt.dslMethods;return Bt.reset(),e}X.collectMethods=Mo});var Lr=R(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.firstForTerminal=Ne.firstForBranching=Ne.firstForSequence=Ne.first=void 0;var qt=k(),ii=ne(),Cr=vt();function jt(t){if(t instanceof ii.NonTerminal)return jt(t.referencedRule);if(t instanceof ii.Terminal)return si(t);if(Cr.isSequenceProd(t))return ai(t);if(Cr.isBranchingProd(t))return oi(t);throw Error("non exhaustive match")}Ne.first=jt;function ai(t){for(var e=[],r=t.definition,n=0,i=r.length>n,a,o=!0;i&&o;)a=r[n],o=Cr.isOptionalProd(a),e=e.concat(jt(a)),n=n+1,i=r.length>n;return qt.uniq(e)}Ne.firstForSequence=ai;function oi(t){var e=qt.map(t.definition,function(r){return jt(r)});return qt.uniq(qt.flatten(e))}Ne.firstForBranching=oi;function si(t){return[t.terminalType]}Ne.firstForTerminal=si});var Mr=R(Vt=>{"use strict";Object.defineProperty(Vt,"__esModule",{value:!0});Vt.IN=void 0;Vt.IN="_~IN~_"});var pi=R(he=>{"use strict";var bo=he&&he.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(he,"__esModule",{value:!0});he.buildInProdFollowPrefix=he.buildBetweenProdsFollowPrefix=he.computeAllProdsFollows=he.ResyncFollowsWalker=void 0;var Fo=Gt(),wo=Lr(),ui=k(),ci=Mr(),Do=ne(),fi=function(t){bo(e,t);function e(r){var n=t.call(this)||this;return n.topProd=r,n.follows={},n}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(r,n,i){},e.prototype.walkProdRef=function(r,n,i){var a=li(r.referencedRule,r.idx)+this.topProd.name,o=n.concat(i),s=new Do.Alternative({definition:o}),c=wo.first(s);this.follows[a]=c},e}(Fo.RestWalker);he.ResyncFollowsWalker=fi;function Uo(t){var e={};return ui.forEach(t,function(r){var n=new fi(r).startWalking();ui.assign(e,n)}),e}he.computeAllProdsFollows=Uo;function li(t,e){return t.name+e+ci.IN}he.buildBetweenProdsFollowPrefix=li;function Go(t){var e=t.terminalType.name;return e+t.idx+ci.IN}he.buildInProdFollowPrefix=Go});var mt=R(Me=>{"use strict";Object.defineProperty(Me,"__esModule",{value:!0});Me.defaultGrammarValidatorErrorProvider=Me.defaultGrammarResolverErrorProvider=Me.defaultParserErrorProvider=void 0;var Ze=Ue(),Wo=k(),ye=k(),br=ne(),hi=vt();Me.defaultParserErrorProvider={buildMismatchTokenMessage:function(t){var e=t.expected,r=t.actual,n=t.previous,i=t.ruleName,a=Ze.hasTokenLabel(e),o=a?"--> "+Ze.tokenLabel(e)+" <--":"token of type --> "+e.name+" <--",s="Expecting "+o+" but found --> '"+r.image+"' <--";return s},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant,r=t.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,r=t.actual,n=t.previous,i=t.customUserDescription,a=t.ruleName,o="Expecting: ",s=ye.first(r).image,c=` -but found: '`+s+"'";if(i)return o+i+c;var f=ye.reduce(e,function(v,u){return v.concat(u)},[]),p=ye.map(f,function(v){return"["+ye.map(v,function(u){return Ze.tokenLabel(u)}).join(", ")+"]"}),l=ye.map(p,function(v,u){return" "+(u+1)+". "+v}),m=`one of these possible Token sequences: -`+l.join(` -`);return o+m+c},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,r=t.actual,n=t.customUserDescription,i=t.ruleName,a="Expecting: ",o=ye.first(r).image,s=` -but found: '`+o+"'";if(n)return a+n+s;var c=ye.map(e,function(p){return"["+ye.map(p,function(l){return Ze.tokenLabel(l)}).join(",")+"]"}),f=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+c.join(" ,")+">");return a+f+s}};Object.freeze(Me.defaultParserErrorProvider);Me.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(t,e){var r="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-";return r}};Me.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(t,e){function r(p){return p instanceof br.Terminal?p.terminalType.name:p instanceof br.NonTerminal?p.nonTerminalName:""}var n=t.name,i=ye.first(e),a=i.idx,o=hi.getProductionDslName(i),s=r(i),c=a>0,f="->"+o+(c?a:"")+"<- "+(s?"with argument: ->"+s+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+n+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return f=f.replace(/[ \t]+/g," "),f=f.replace(/\s\s+/g,` -`),f},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=ye.map(t.prefixPath,function(i){return Ze.tokenLabel(i)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return n},buildAlternationAmbiguityError:function(t){var e=ye.map(t.prefixPath,function(i){return Ze.tokenLabel(i)}).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,n},buildEmptyRepetitionError:function(t){var e=hi.getProductionDslName(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var r="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return r},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+t.topLevelRule.name+`> Rule. - has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,r=Wo.map(t.leftRecursionPath,function(a){return a.name}),n=e+" --> "+r.concat([e]).join(" --> "),i=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+n+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return i},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof br.Rule?e=t.topLevelRule.name:e=t.topLevelRule;var r="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return r}}});var mi=R(Ge=>{"use strict";var Bo=Ge&&Ge.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Ge,"__esModule",{value:!0});Ge.GastRefResolverVisitor=Ge.resolveGrammar=void 0;var qo=ce(),di=k(),jo=$e();function Vo(t,e){var r=new vi(t,e);return r.resolveRefs(),r.errors}Ge.resolveGrammar=Vo;var vi=function(t){Bo(e,t);function e(r,n){var i=t.call(this)||this;return i.nameToTopRule=r,i.errMsgProvider=n,i.errors=[],i}return e.prototype.resolveRefs=function(){var r=this;di.forEach(di.values(this.nameToTopRule),function(n){r.currTopLevel=n,n.accept(r)})},e.prototype.visitNonTerminal=function(r){var n=this.nameToTopRule[r.nonTerminalName];if(n)r.referencedRule=n;else{var i=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,r);this.errors.push({message:i,type:qo.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:r.nonTerminalName})}},e}(jo.GAstVisitor);Ge.GastRefResolverVisitor=vi});var Tt=R(j=>{"use strict";var je=j&&j.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(j,"__esModule",{value:!0});j.nextPossibleTokensAfter=j.possiblePathsFrom=j.NextTerminalAfterAtLeastOneSepWalker=j.NextTerminalAfterAtLeastOneWalker=j.NextTerminalAfterManySepWalker=j.NextTerminalAfterManyWalker=j.AbstractNextTerminalAfterProductionWalker=j.NextAfterTokenWalker=j.AbstractNextPossibleTokensWalker=void 0;var Ei=Gt(),I=k(),Ko=Lr(),O=ne(),Ti=function(t){je(e,t);function e(r,n){var i=t.call(this)||this;return i.topProd=r,i.path=n,i.possibleTokTypes=[],i.nextProductionName="",i.nextProductionOccurrence=0,i.found=!1,i.isAtEndOfPath=!1,i}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=I.cloneArr(this.path.ruleStack).reverse(),this.occurrenceStack=I.cloneArr(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(r,n){n===void 0&&(n=[]),this.found||t.prototype.walk.call(this,r,n)},e.prototype.walkProdRef=function(r,n,i){if(r.referencedRule.name===this.nextProductionName&&r.idx===this.nextProductionOccurrence){var a=n.concat(i);this.updateExpectedNext(),this.walk(r.referencedRule,a)}},e.prototype.updateExpectedNext=function(){I.isEmpty(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(Ei.RestWalker);j.AbstractNextPossibleTokensWalker=Ti;var zo=function(t){je(e,t);function e(r,n){var i=t.call(this,r,n)||this;return i.path=n,i.nextTerminalName="",i.nextTerminalOccurrence=0,i.nextTerminalName=i.path.lastTok.name,i.nextTerminalOccurrence=i.path.lastTokOccurrence,i}return e.prototype.walkTerminal=function(r,n,i){if(this.isAtEndOfPath&&r.terminalType.name===this.nextTerminalName&&r.idx===this.nextTerminalOccurrence&&!this.found){var a=n.concat(i),o=new O.Alternative({definition:a});this.possibleTokTypes=Ko.first(o),this.found=!0}},e}(Ti);j.NextAfterTokenWalker=zo;var Et=function(t){je(e,t);function e(r,n){var i=t.call(this)||this;return i.topRule=r,i.occurrence=n,i.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},i}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(Ei.RestWalker);j.AbstractNextTerminalAfterProductionWalker=Et;var Ho=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkMany.call(this,r,n,i)},e}(Et);j.NextTerminalAfterManyWalker=Ho;var Yo=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkManySep.call(this,r,n,i)},e}(Et);j.NextTerminalAfterManySepWalker=Yo;var Xo=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOne.call(this,r,n,i)},e}(Et);j.NextTerminalAfterAtLeastOneWalker=Xo;var $o=function(t){je(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(r,n,i){if(r.idx===this.occurrence){var a=I.first(n.concat(i));this.result.isEndOfRule=a===void 0,a instanceof O.Terminal&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOneSep.call(this,r,n,i)},e}(Et);j.NextTerminalAfterAtLeastOneSepWalker=$o;function yi(t,e,r){r===void 0&&(r=[]),r=I.cloneArr(r);var n=[],i=0;function a(f){return f.concat(I.drop(t,i+1))}function o(f){var p=yi(a(f),e,r);return n.concat(p)}for(;r.length=0;it--){var at=_.definition[it],Ke={idx:u,def:at.definition.concat(I.drop(v)),ruleStack:d,occurrenceStack:A};l.push(Ke),l.push(o)}else if(_ instanceof O.Alternative)l.push({idx:u,def:_.definition.concat(I.drop(v)),ruleStack:d,occurrenceStack:A});else if(_ instanceof O.Rule)l.push(Zo(_,u,d,A));else throw Error("non exhaustive match")}}return p}j.nextPossibleTokensAfter=Qo;function Zo(t,e,r,n){var i=I.cloneArr(r);i.push(t.name);var a=I.cloneArr(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}});var yt=R(C=>{"use strict";var _i=C&&C.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(C,"__esModule",{value:!0});C.areTokenCategoriesNotUsed=C.isStrictPrefixOfPath=C.containsPath=C.getLookaheadPathsForOptionalProd=C.getLookaheadPathsForOr=C.lookAheadSequenceFromAlternatives=C.buildSingleAlternativeLookaheadFunction=C.buildAlternativesLookAheadFunc=C.buildLookaheadFuncForOptionalProd=C.buildLookaheadFuncForOr=C.getProdType=C.PROD_TYPE=void 0;var D=k(),gi=Tt(),Jo=Gt(),Kt=Xe(),We=ne(),es=$e(),z;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(z=C.PROD_TYPE||(C.PROD_TYPE={}));function ts(t){if(t instanceof We.Option)return z.OPTION;if(t instanceof We.Repetition)return z.REPETITION;if(t instanceof We.RepetitionMandatory)return z.REPETITION_MANDATORY;if(t instanceof We.RepetitionMandatoryWithSeparator)return z.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof We.RepetitionWithSeparator)return z.REPETITION_WITH_SEPARATOR;if(t instanceof We.Alternation)return z.ALTERNATION;throw Error("non exhaustive match")}C.getProdType=ts;function rs(t,e,r,n,i,a){var o=Ai(t,e,r),s=Fr(o)?Kt.tokenStructuredMatcherNoCategories:Kt.tokenStructuredMatcher;return a(o,n,s,i)}C.buildLookaheadFuncForOr=rs;function ns(t,e,r,n,i,a){var o=Ri(t,e,i,r),s=Fr(o)?Kt.tokenStructuredMatcherNoCategories:Kt.tokenStructuredMatcher;return a(o[0],s,n)}C.buildLookaheadFuncForOptionalProd=ns;function is(t,e,r,n){var i=t.length,a=D.every(t,function(c){return D.every(c,function(f){return f.length===1})});if(e)return function(c){for(var f=D.map(c,function(y){return y.GATE}),p=0;p{"use strict";var Ur=x&&x.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(x,"__esModule",{value:!0});x.checkPrefixAlternativesAmbiguities=x.validateSomeNonEmptyLookaheadPath=x.validateTooManyAlts=x.RepetionCollector=x.validateAmbiguousAlternationAlternatives=x.validateEmptyOrAlternative=x.getFirstNoneTerminal=x.validateNoLeftRecursion=x.validateRuleIsOverridden=x.validateRuleDoesNotAlreadyExist=x.OccurrenceValidationCollector=x.identifyProductionForDuplicates=x.validateGrammar=void 0;var M=k(),B=k(),Ie=ce(),Gr=vt(),Qe=yt(),cs=Tt(),_e=ne(),Wr=$e();function ps(t,e,r,n,i){var a=M.map(t,function(v){return ls(v,n)}),o=M.map(t,function(v){return Br(v,v,n)}),s=[],c=[],f=[];B.every(o,B.isEmpty)&&(s=B.map(t,function(v){return Pi(v,n)}),c=B.map(t,function(v){return Si(v,e,n)}),f=Ci(t,e,n));var p=fs(t,r,n),l=B.map(t,function(v){return xi(v,n)}),m=B.map(t,function(v){return ki(v,t,i,n)});return M.flatten(a.concat(f,o,s,c,p,l,m))}x.validateGrammar=ps;function ls(t,e){var r=new bi;t.accept(r);var n=r.allProductions,i=M.groupBy(n,Li),a=M.pick(i,function(s){return s.length>1}),o=M.map(M.values(a),function(s){var c=M.first(s),f=e.buildDuplicateFoundError(t,s),p=Gr.getProductionDslName(c),l={message:f,type:Ie.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:p,occurrence:c.idx},m=Mi(c);return m&&(l.parameter=m),l});return o}function Li(t){return Gr.getProductionDslName(t)+"_#_"+t.idx+"_#_"+Mi(t)}x.identifyProductionForDuplicates=Li;function Mi(t){return t instanceof _e.Terminal?t.terminalType.name:t instanceof _e.NonTerminal?t.nonTerminalName:""}var bi=function(t){Ur(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitNonTerminal=function(r){this.allProductions.push(r)},e.prototype.visitOption=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e.prototype.visitAlternation=function(r){this.allProductions.push(r)},e.prototype.visitTerminal=function(r){this.allProductions.push(r)},e}(Wr.GAstVisitor);x.OccurrenceValidationCollector=bi;function ki(t,e,r,n){var i=[],a=B.reduce(e,function(s,c){return c.name===t.name?s+1:s},0);if(a>1){var o=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:o,type:Ie.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}x.validateRuleDoesNotAlreadyExist=ki;function hs(t,e,r){var n=[],i;return M.contains(e,t)||(i="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+r+"<-as it is not defined in any of the super grammars ",n.push({message:i,type:Ie.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:t})),n}x.validateRuleIsOverridden=hs;function Br(t,e,r,n){n===void 0&&(n=[]);var i=[],a=_t(e.definition);if(M.isEmpty(a))return[];var o=t.name,s=M.contains(a,t);s&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:Ie.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var c=M.difference(a,n.concat([t])),f=M.map(c,function(p){var l=M.cloneArr(n);return l.push(p),Br(t,p,r,l)});return i.concat(M.flatten(f))}x.validateNoLeftRecursion=Br;function _t(t){var e=[];if(M.isEmpty(t))return e;var r=M.first(t);if(r instanceof _e.NonTerminal)e.push(r.referencedRule);else if(r instanceof _e.Alternative||r instanceof _e.Option||r instanceof _e.RepetitionMandatory||r instanceof _e.RepetitionMandatoryWithSeparator||r instanceof _e.RepetitionWithSeparator||r instanceof _e.Repetition)e=e.concat(_t(r.definition));else if(r instanceof _e.Alternation)e=M.flatten(M.map(r.definition,function(o){return _t(o.definition)}));else if(!(r instanceof _e.Terminal))throw Error("non exhaustive match");var n=Gr.isOptionalProd(r),i=t.length>1;if(n&&i){var a=M.drop(t);return e.concat(_t(a))}else return e}x.getFirstNoneTerminal=_t;var qr=function(t){Ur(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.alternations=[],r}return e.prototype.visitAlternation=function(r){this.alternations.push(r)},e}(Wr.GAstVisitor);function Pi(t,e){var r=new qr;t.accept(r);var n=r.alternations,i=M.reduce(n,function(a,o){var s=M.dropRight(o.definition),c=M.map(s,function(f,p){var l=cs.nextPossibleTokensAfter([f],[],null,1);return M.isEmpty(l)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:o,emptyChoiceIdx:p}),type:Ie.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:o.idx,alternative:p+1}:null});return a.concat(M.compact(c))},[]);return i}x.validateEmptyOrAlternative=Pi;function Si(t,e,r){var n=new qr;t.accept(n);var i=n.alternations;i=B.reject(i,function(o){return o.ignoreAmbiguities===!0});var a=M.reduce(i,function(o,s){var c=s.idx,f=s.maxLookahead||e,p=Qe.getLookaheadPathsForOr(c,t,f,s),l=ds(p,s,t,r),m=Fi(p,s,t,r);return o.concat(l,m)},[]);return a}x.validateAmbiguousAlternationAlternatives=Si;var wi=function(t){Ur(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.allProductions=[],r}return e.prototype.visitRepetitionWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatory=function(r){this.allProductions.push(r)},e.prototype.visitRepetitionMandatoryWithSeparator=function(r){this.allProductions.push(r)},e.prototype.visitRepetition=function(r){this.allProductions.push(r)},e}(Wr.GAstVisitor);x.RepetionCollector=wi;function xi(t,e){var r=new qr;t.accept(r);var n=r.alternations,i=M.reduce(n,function(a,o){return o.definition.length>255&&a.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:o}),type:Ie.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:t.name,occurrence:o.idx}),a},[]);return i}x.validateTooManyAlts=xi;function Ci(t,e,r){var n=[];return B.forEach(t,function(i){var a=new wi;i.accept(a);var o=a.allProductions;B.forEach(o,function(s){var c=Qe.getProdType(s),f=s.maxLookahead||e,p=s.idx,l=Qe.getLookaheadPathsForOptionalProd(p,i,c,f),m=l[0];if(B.isEmpty(B.flatten(m))){var v=r.buildEmptyRepetitionError({topLevelRule:i,repetition:s});n.push({message:v,type:Ie.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}x.validateSomeNonEmptyLookaheadPath=Ci;function ds(t,e,r,n){var i=[],a=B.reduce(t,function(s,c,f){return e.definition[f].ignoreAmbiguities===!0||B.forEach(c,function(p){var l=[f];B.forEach(t,function(m,v){f!==v&&Qe.containsPath(m,p)&&e.definition[v].ignoreAmbiguities!==!0&&l.push(v)}),l.length>1&&!Qe.containsPath(i,p)&&(i.push(p),s.push({alts:l,path:p}))}),s},[]),o=M.map(a,function(s){var c=B.map(s.alts,function(p){return p+1}),f=n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:c,prefixPath:s.path});return{message:f,type:Ie.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:[s.alts]}});return o}function Fi(t,e,r,n){var i=[],a=B.reduce(t,function(o,s,c){var f=B.map(s,function(p){return{idx:c,path:p}});return o.concat(f)},[]);return B.forEach(a,function(o){var s=e.definition[o.idx];if(s.ignoreAmbiguities!==!0){var c=o.idx,f=o.path,p=B.findAll(a,function(m){return e.definition[m.idx].ignoreAmbiguities!==!0&&m.idx{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.validateGrammar=Je.resolveGrammar=void 0;var Vr=k(),vs=mi(),ms=jr(),Di=mt();function Es(t){t=Vr.defaults(t,{errMsgProvider:Di.defaultGrammarResolverErrorProvider});var e={};return Vr.forEach(t.rules,function(r){e[r.name]=r}),vs.resolveGrammar(e,t.errMsgProvider)}Je.resolveGrammar=Es;function Ts(t){return t=Vr.defaults(t,{errMsgProvider:Di.defaultGrammarValidatorErrorProvider}),ms.validateGrammar(t.rules,t.maxLookahead,t.tokenTypes,t.errMsgProvider,t.grammarName)}Je.validateGrammar=Ts});var et=R(ae=>{"use strict";var gt=ae&&ae.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(ae,"__esModule",{value:!0});ae.EarlyExitException=ae.NotAllInputParsedException=ae.NoViableAltException=ae.MismatchedTokenException=ae.isRecognitionException=void 0;var ys=k(),Gi="MismatchedTokenException",Wi="NoViableAltException",Bi="EarlyExitException",qi="NotAllInputParsedException",ji=[Gi,Wi,Bi,qi];Object.freeze(ji);function _s(t){return ys.contains(ji,t.name)}ae.isRecognitionException=_s;var zt=function(t){gt(e,t);function e(r,n){var i=this.constructor,a=t.call(this,r)||this;return a.token=n,a.resyncedTokens=[],Object.setPrototypeOf(a,i.prototype),Error.captureStackTrace&&Error.captureStackTrace(a,a.constructor),a}return e}(Error),gs=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Gi,a}return e}(zt);ae.MismatchedTokenException=gs;var As=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Wi,a}return e}(zt);ae.NoViableAltException=As;var Rs=function(t){gt(e,t);function e(r,n){var i=t.call(this,r,n)||this;return i.name=qi,i}return e}(zt);ae.NotAllInputParsedException=Rs;var Os=function(t){gt(e,t);function e(r,n,i){var a=t.call(this,r,n)||this;return a.previousToken=i,a.name=Bi,a}return e}(zt);ae.EarlyExitException=Os});var zr=R($=>{"use strict";Object.defineProperty($,"__esModule",{value:!0});$.attemptInRepetitionRecovery=$.Recoverable=$.InRuleRecoveryException=$.IN_RULE_RECOVERY_EXCEPTION=$.EOF_FOLLOW_KEY=void 0;var Ht=Ue(),de=k(),Ns=et(),Is=Mr(),ks=ce();$.EOF_FOLLOW_KEY={};$.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function Kr(t){this.name=$.IN_RULE_RECOVERY_EXCEPTION,this.message=t}$.InRuleRecoveryException=Kr;Kr.prototype=Error.prototype;var Ps=function(){function t(){}return t.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=de.has(e,"recoveryEnabled")?e.recoveryEnabled:ks.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=Vi)},t.prototype.getTokenToInsert=function(e){var r=Ht.createTokenInstance(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r},t.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},t.prototype.tryInRepetitionRecovery=function(e,r,n,i){for(var a=this,o=this.findReSyncTokenType(),s=this.exportLexerState(),c=[],f=!1,p=this.LA(1),l=this.LA(1),m=function(){var v=a.LA(0),u=a.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:p,previous:v,ruleName:a.getCurrRuleFullName()}),d=new Ns.MismatchedTokenException(u,p,a.LA(0));d.resyncedTokens=de.dropRight(c),a.SAVE_ERROR(d)};!f;)if(this.tokenMatcher(l,i)){m();return}else if(n.call(this)){m(),e.apply(this,r);return}else this.tokenMatcher(l,o)?f=!0:(l=this.SKIP_TOKEN(),this.addToResyncTokens(l,c));this.importLexerState(s)},t.prototype.shouldInRepetitionRecoveryBeTried=function(e,r,n){return!(n===!1||e===void 0||r===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))},t.prototype.getFollowsForInRuleRecovery=function(e,r){var n=this.getCurrentGrammarPath(e,r),i=this.getNextPossibleTokenTypes(n);return i},t.prototype.tryInRuleRecovery=function(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r)){var n=this.getTokenToInsert(e);return n}if(this.canRecoverWithSingleTokenDeletion(e)){var i=this.SKIP_TOKEN();return this.consumeToken(),i}throw new Kr("sad sad panda")},t.prototype.canPerformInRuleRecovery=function(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)},t.prototype.canRecoverWithSingleTokenInsertion=function(e,r){var n=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||de.isEmpty(r))return!1;var i=this.LA(1),a=de.find(r,function(o){return n.tokenMatcher(i,o)})!==void 0;return a},t.prototype.canRecoverWithSingleTokenDeletion=function(e){var r=this.tokenMatcher(this.LA(2),e);return r},t.prototype.isInCurrentRuleReSyncSet=function(e){var r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return de.contains(n,e)},t.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),r=this.LA(1),n=2;;){var i=r.tokenType;if(de.contains(e,i))return i;r=this.LA(n),n++}},t.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return $.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}},t.prototype.buildFullFollowKeyStack=function(){var e=this,r=this.RULE_STACK,n=this.RULE_OCCURRENCE_STACK;return de.map(r,function(i,a){return a===0?$.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(i),idxInCallingRule:n[a],inRule:e.shortRuleNameToFullName(r[a-1])}})},t.prototype.flattenFollowSet=function(){var e=this,r=de.map(this.buildFullFollowKeyStack(),function(n){return e.getFollowSetFromFollowKey(n)});return de.flatten(r)},t.prototype.getFollowSetFromFollowKey=function(e){if(e===$.EOF_FOLLOW_KEY)return[Ht.EOF];var r=e.ruleName+e.idxInCallingRule+Is.IN+e.inRule;return this.resyncFollows[r]},t.prototype.addToResyncTokens=function(e,r){return this.tokenMatcher(e,Ht.EOF)||r.push(e),r},t.prototype.reSyncTo=function(e){for(var r=[],n=this.LA(1);this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return de.dropRight(r)},t.prototype.attemptInRepetitionRecovery=function(e,r,n,i,a,o,s){},t.prototype.getCurrentGrammarPath=function(e,r){var n=this.getHumanReadableRuleStack(),i=de.cloneArr(this.RULE_OCCURRENCE_STACK),a={ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r};return a},t.prototype.getHumanReadableRuleStack=function(){var e=this;return de.map(this.RULE_STACK,function(r){return e.shortRuleNameToFullName(r)})},t}();$.Recoverable=Ps;function Vi(t,e,r,n,i,a,o){var s=this.getKeyForAutomaticLookahead(n,i),c=this.firstAfterRepMap[s];if(c===void 0){var f=this.getCurrRuleFullName(),p=this.getGAstProductions()[f],l=new a(p,i);c=l.startWalking(),this.firstAfterRepMap[s]=c}var m=c.token,v=c.occurrence,u=c.isEndOfRule;this.RULE_STACK.length===1&&u&&m===void 0&&(m=Ht.EOF,v=1),this.shouldInRepetitionRecoveryBeTried(m,v,o)&&this.tryInRepetitionRecovery(t,e,r,m)}$.attemptInRepetitionRecovery=Vi});var Yt=R(P=>{"use strict";Object.defineProperty(P,"__esModule",{value:!0});P.getKeyForAutomaticLookahead=P.AT_LEAST_ONE_SEP_IDX=P.MANY_SEP_IDX=P.AT_LEAST_ONE_IDX=P.MANY_IDX=P.OPTION_IDX=P.OR_IDX=P.BITS_FOR_ALT_IDX=P.BITS_FOR_RULE_IDX=P.BITS_FOR_OCCURRENCE_IDX=P.BITS_FOR_METHOD_TYPE=void 0;P.BITS_FOR_METHOD_TYPE=4;P.BITS_FOR_OCCURRENCE_IDX=8;P.BITS_FOR_RULE_IDX=12;P.BITS_FOR_ALT_IDX=8;P.OR_IDX=1<{"use strict";Object.defineProperty(Xt,"__esModule",{value:!0});Xt.LooksAhead=void 0;var be=yt(),ge=k(),Ki=ce(),Fe=Yt(),Ve=vt(),xs=function(){function t(){}return t.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=ge.has(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Ki.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=ge.has(e,"maxLookahead")?e.maxLookahead:Ki.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=ge.isES2015MapSupported()?new Map:[],ge.isES2015MapSupported()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},t.prototype.preComputeLookaheadFunctions=function(e){var r=this;ge.forEach(e,function(n){r.TRACE_INIT(n.name+" Rule Lookahead",function(){var i=Ve.collectMethods(n),a=i.alternation,o=i.repetition,s=i.option,c=i.repetitionMandatory,f=i.repetitionMandatoryWithSeparator,p=i.repetitionWithSeparator;ge.forEach(a,function(l){var m=l.idx===0?"":l.idx;r.TRACE_INIT(""+Ve.getProductionDslName(l)+m,function(){var v=be.buildLookaheadFuncForOr(l.idx,n,l.maxLookahead||r.maxLookahead,l.hasPredicates,r.dynamicTokensEnabled,r.lookAheadBuilderForAlternatives),u=Fe.getKeyForAutomaticLookahead(r.fullRuleNameToShort[n.name],Fe.OR_IDX,l.idx);r.setLaFuncCache(u,v)})}),ge.forEach(o,function(l){r.computeLookaheadFunc(n,l.idx,Fe.MANY_IDX,be.PROD_TYPE.REPETITION,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(s,function(l){r.computeLookaheadFunc(n,l.idx,Fe.OPTION_IDX,be.PROD_TYPE.OPTION,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(c,function(l){r.computeLookaheadFunc(n,l.idx,Fe.AT_LEAST_ONE_IDX,be.PROD_TYPE.REPETITION_MANDATORY,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(f,function(l){r.computeLookaheadFunc(n,l.idx,Fe.AT_LEAST_ONE_SEP_IDX,be.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,l.maxLookahead,Ve.getProductionDslName(l))}),ge.forEach(p,function(l){r.computeLookaheadFunc(n,l.idx,Fe.MANY_SEP_IDX,be.PROD_TYPE.REPETITION_WITH_SEPARATOR,l.maxLookahead,Ve.getProductionDslName(l))})})})},t.prototype.computeLookaheadFunc=function(e,r,n,i,a,o){var s=this;this.TRACE_INIT(""+o+(r===0?"":r),function(){var c=be.buildLookaheadFuncForOptionalProd(r,e,a||s.maxLookahead,s.dynamicTokensEnabled,i,s.lookAheadBuilderForOptional),f=Fe.getKeyForAutomaticLookahead(s.fullRuleNameToShort[e.name],n,r);s.setLaFuncCache(f,c)})},t.prototype.lookAheadBuilderForOptional=function(e,r,n){return be.buildSingleAlternativeLookaheadFunction(e,r,n)},t.prototype.lookAheadBuilderForAlternatives=function(e,r,n,i){return be.buildAlternativesLookAheadFunc(e,r,n,i)},t.prototype.getKeyForAutomaticLookahead=function(e,r){var n=this.getLastExplicitRuleShortName();return Fe.getKeyForAutomaticLookahead(n,e,r)},t.prototype.getLaFuncFromCache=function(e){},t.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},t.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},t.prototype.setLaFuncCache=function(e,r){},t.prototype.setLaFuncCacheUsingMap=function(e,r){this.lookAheadFuncsCache.set(e,r)},t.prototype.setLaFuncUsingObj=function(e,r){this.lookAheadFuncsCache[e]=r},t}();Xt.LooksAhead=xs});var Hi=R(ke=>{"use strict";Object.defineProperty(ke,"__esModule",{value:!0});ke.addNoneTerminalToCst=ke.addTerminalToCst=ke.setNodeLocationFull=ke.setNodeLocationOnlyOffset=void 0;function Cs(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.defineNameProp=Be.functionName=Be.classNameFromInstance=void 0;var Fs=k();function ws(t){return Yi(t.constructor)}Be.classNameFromInstance=ws;var Xi="name";function Yi(t){var e=t.name;return e||"anonymous"}Be.functionName=Yi;function Ds(t,e){var r=Object.getOwnPropertyDescriptor(t,Xi);return Fs.isUndefined(r)||r.configurable?(Object.defineProperty(t,Xi,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}Be.defineNameProp=Ds});var ea=R(Y=>{"use strict";Object.defineProperty(Y,"__esModule",{value:!0});Y.validateRedundantMethods=Y.validateMissingCstMethods=Y.validateVisitor=Y.CstVisitorDefinitionError=Y.createBaseVisitorConstructorWithDefaults=Y.createBaseSemanticVisitorConstructor=Y.defaultVisit=void 0;var ve=k(),At=Hr();function $i(t,e){for(var r=ve.keys(t),n=r.length,i=0;i: - `+(""+a.join(` - -`).replace(/\n/g,` - `)))}}};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}Y.createBaseSemanticVisitorConstructor=Us;function Gs(t,e,r){var n=function(){};At.defineNameProp(n,t+"BaseSemanticsWithDefaults");var i=Object.create(r.prototype);return ve.forEach(e,function(a){i[a]=$i}),n.prototype=i,n.prototype.constructor=n,n}Y.createBaseVisitorConstructorWithDefaults=Gs;var Yr;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(Yr=Y.CstVisitorDefinitionError||(Y.CstVisitorDefinitionError={}));function Zi(t,e){var r=Qi(t,e),n=Ji(t,e);return r.concat(n)}Y.validateVisitor=Zi;function Qi(t,e){var r=ve.map(e,function(n){if(!ve.isFunction(t[n]))return{msg:"Missing visitor method: <"+n+"> on "+At.functionName(t.constructor)+" CST Visitor.",type:Yr.MISSING_METHOD,methodName:n}});return ve.compact(r)}Y.validateMissingCstMethods=Qi;var Ws=["constructor","visit","validateVisitor"];function Ji(t,e){var r=[];for(var n in t)ve.isFunction(t[n])&&!ve.contains(Ws,n)&&!ve.contains(e,n)&&r.push({msg:"Redundant visitor method: <"+n+"> on "+At.functionName(t.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:Yr.REDUNDANT_METHOD,methodName:n});return r}Y.validateRedundantMethods=Ji});var ra=R($t=>{"use strict";Object.defineProperty($t,"__esModule",{value:!0});$t.TreeBuilder=void 0;var tt=Hi(),K=k(),ta=ea(),Bs=ce(),qs=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=K.has(e,"nodeLocationTracking")?e.nodeLocationTracking:Bs.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=K.NOOP,this.cstFinallyStateUpdate=K.NOOP,this.cstPostTerminal=K.NOOP,this.cstPostNonTerminal=K.NOOP,this.cstPostRule=K.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=tt.setNodeLocationFull,this.setNodeLocationFromNode=tt.setNodeLocationFull,this.cstPostRule=K.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=K.NOOP,this.setNodeLocationFromNode=K.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=tt.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=tt.setNodeLocationOnlyOffset,this.cstPostRule=K.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=K.NOOP,this.setNodeLocationFromNode=K.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=K.NOOP,this.setNodeLocationFromNode=K.NOOP,this.cstPostRule=K.NOOP,this.setInitialNodeLocation=K.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,r){var n={name:e,children:{}};this.setInitialNodeLocation(n),this.CST_STACK.push(n)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN},t.prototype.cstPostTerminal=function(e,r){var n=this.CST_STACK[this.CST_STACK.length-1];tt.addTerminalToCst(n,r,e),this.setNodeLocationFromToken(n.location,r)},t.prototype.cstPostNonTerminal=function(e,r){var n=this.CST_STACK[this.CST_STACK.length-1];tt.addNoneTerminalToCst(n,r,e),this.setNodeLocationFromNode(n.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if(K.isUndefined(this.baseCstVisitorConstructor)){var e=ta.createBaseSemanticVisitorConstructor(this.className,K.keys(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if(K.isUndefined(this.baseCstVisitorWithDefaultsConstructor)){var e=ta.createBaseVisitorConstructorWithDefaults(this.className,K.keys(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}();$t.TreeBuilder=qs});var ia=R(Zt=>{"use strict";Object.defineProperty(Zt,"__esModule",{value:!0});Zt.LexerAdapter=void 0;var na=ce(),js=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):na.END_OF_FILE},t.prototype.LA=function(e){var r=this.currIdx+e;return r<0||this.tokVectorLength<=r?na.END_OF_FILE:this.tokVector[r]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}();Zt.LexerAdapter=js});var oa=R(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Qt.RecognizerApi=void 0;var aa=k(),Vs=et(),Xr=ce(),Ks=mt(),zs=jr(),Hs=ne(),Ys=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,r,n){return this.consumeInternal(r,e,n)},t.prototype.subrule=function(e,r,n){return this.subruleInternal(r,e,n)},t.prototype.option=function(e,r){return this.optionInternal(r,e)},t.prototype.or=function(e,r){return this.orInternal(r,e)},t.prototype.many=function(e,r){return this.manyInternal(e,r)},t.prototype.atLeastOne=function(e,r){return this.atLeastOneInternal(e,r)},t.prototype.CONSUME=function(e,r){return this.consumeInternal(e,0,r)},t.prototype.CONSUME1=function(e,r){return this.consumeInternal(e,1,r)},t.prototype.CONSUME2=function(e,r){return this.consumeInternal(e,2,r)},t.prototype.CONSUME3=function(e,r){return this.consumeInternal(e,3,r)},t.prototype.CONSUME4=function(e,r){return this.consumeInternal(e,4,r)},t.prototype.CONSUME5=function(e,r){return this.consumeInternal(e,5,r)},t.prototype.CONSUME6=function(e,r){return this.consumeInternal(e,6,r)},t.prototype.CONSUME7=function(e,r){return this.consumeInternal(e,7,r)},t.prototype.CONSUME8=function(e,r){return this.consumeInternal(e,8,r)},t.prototype.CONSUME9=function(e,r){return this.consumeInternal(e,9,r)},t.prototype.SUBRULE=function(e,r){return this.subruleInternal(e,0,r)},t.prototype.SUBRULE1=function(e,r){return this.subruleInternal(e,1,r)},t.prototype.SUBRULE2=function(e,r){return this.subruleInternal(e,2,r)},t.prototype.SUBRULE3=function(e,r){return this.subruleInternal(e,3,r)},t.prototype.SUBRULE4=function(e,r){return this.subruleInternal(e,4,r)},t.prototype.SUBRULE5=function(e,r){return this.subruleInternal(e,5,r)},t.prototype.SUBRULE6=function(e,r){return this.subruleInternal(e,6,r)},t.prototype.SUBRULE7=function(e,r){return this.subruleInternal(e,7,r)},t.prototype.SUBRULE8=function(e,r){return this.subruleInternal(e,8,r)},t.prototype.SUBRULE9=function(e,r){return this.subruleInternal(e,9,r)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,r,n){if(n===void 0&&(n=Xr.DEFAULT_RULE_CONFIG),aa.contains(this.definedRulesNames,e)){var i=Ks.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),a={message:i,type:Xr.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);var o=this.defineRule(e,r,n);return this[e]=o,o},t.prototype.OVERRIDE_RULE=function(e,r,n){n===void 0&&(n=Xr.DEFAULT_RULE_CONFIG);var i=[];i=i.concat(zs.validateRuleIsOverridden(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(i);var a=this.defineRule(e,r,n);return this[e]=a,a},t.prototype.BACKTRACK=function(e,r){return function(){this.isBackTrackingStack.push(1);var n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(Vs.isRecognitionException(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return Hs.serializeGrammar(aa.values(this.gastProductionsCache))},t}();Qt.RecognizerApi=Ys});var la=R(Jt=>{"use strict";Object.defineProperty(Jt,"__esModule",{value:!0});Jt.RecognizerEngine=void 0;var q=k(),le=Yt(),er=et(),sa=yt(),rt=Tt(),ua=ce(),Xs=zr(),ca=Ue(),Rt=Xe(),$s=Hr(),Zs=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,r){if(this.className=$s.classNameFromInstance(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Rt.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},q.has(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if(q.isArray(e)){if(q.isEmpty(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if(q.isArray(e))this.tokensMap=q.reduce(e,function(o,s){return o[s.name]=s,o},{});else if(q.has(e,"modes")&&q.every(q.flatten(q.values(e.modes)),Rt.isTokenType)){var n=q.flatten(q.values(e.modes)),i=q.uniq(n);this.tokensMap=q.reduce(i,function(o,s){return o[s.name]=s,o},{})}else if(q.isObject(e))this.tokensMap=q.cloneObj(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=ca.EOF;var a=q.every(q.values(e),function(o){return q.isEmpty(o.categoryMatches)});this.tokenMatcher=a?Rt.tokenStructuredMatcherNoCategories:Rt.tokenStructuredMatcher,Rt.augmentTokenTypes(q.values(this.tokensMap))},t.prototype.defineRule=function(e,r,n){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var i=q.has(n,"resyncEnabled")?n.resyncEnabled:ua.DEFAULT_RULE_CONFIG.resyncEnabled,a=q.has(n,"recoveryValueFunc")?n.recoveryValueFunc:ua.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<r},t.prototype.orInternal=function(e,r){var n=this.getKeyForAutomaticLookahead(le.OR_IDX,r),i=q.isArray(e)?e:e.DEF,a=this.getLaFuncFromCache(n),o=a.call(this,i);if(o!==void 0){var s=i[o];return s.ALT.call(this)}this.raiseNoAltException(r,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new er.NotAllInputParsedException(r,e))}},t.prototype.subruleInternal=function(e,r,n){var i;try{var a=n!==void 0?n.ARGS:void 0;return i=e.call(this,r,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(o){this.subruleInternalError(o,n,e.ruleName)}},t.prototype.subruleInternalError=function(e,r,n){throw er.isRecognitionException(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,r,n){var i;try{var a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(o){i=this.consumeInternalRecovery(e,r,o)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i},t.prototype.consumeInternalError=function(e,r,n){var i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new er.MismatchedTokenException(i,r,a))},t.prototype.consumeInternalRecovery=function(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){var i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===Xs.IN_RULE_RECOVERY_EXCEPTION?n:a}}else throw n},t.prototype.saveRecogState=function(){var e=this.errors,r=q.cloneArr(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),ca.EOF)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}();Jt.RecognizerEngine=Zs});var pa=R(tr=>{"use strict";Object.defineProperty(tr,"__esModule",{value:!0});tr.ErrorHandler=void 0;var $r=et(),Zr=k(),fa=yt(),Qs=ce(),Js=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=Zr.has(e,"errorMessageProvider")?e.errorMessageProvider:Qs.DEFAULT_PARSER_CONFIG.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if($r.isRecognitionException(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:Zr.cloneArr(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return Zr.cloneArr(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,r,n){for(var i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],o=fa.getLookaheadPathsForOptionalProd(e,a,r,this.maxLookahead),s=o[0],c=[],f=1;f<=this.maxLookahead;f++)c.push(this.LA(f));var p=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:s,actual:c,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new $r.EarlyExitException(p,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,r){for(var n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=fa.getLookaheadPathsForOr(e,i,this.maxLookahead),o=[],s=1;s<=this.maxLookahead;s++)o.push(this.LA(s));var c=this.LA(0),f=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:o,previous:c,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new $r.NoViableAltException(f,this.LA(1),c))},t}();tr.ErrorHandler=Js});var va=R(rr=>{"use strict";Object.defineProperty(rr,"__esModule",{value:!0});rr.ContentAssist=void 0;var ha=Tt(),da=k(),eu=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,r){var n=this.gastProductionsCache[e];if(da.isUndefined(n))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return ha.nextPossibleTokensAfter([n],r,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var r=da.first(e.ruleStack),n=this.getGAstProductions(),i=n[r],a=new ha.NextAfterTokenWalker(i,e).startWalking();return a},t}();rr.ContentAssist=eu});var Ra=R(nr=>{"use strict";Object.defineProperty(nr,"__esModule",{value:!0});nr.GastRecorder=void 0;var oe=k(),Pe=ne(),tu=ft(),ma=Xe(),Ea=Ue(),ru=ce(),nu=Yt(),ir={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(ir);var Ta=!0,ya=Math.pow(2,nu.BITS_FOR_OCCURRENCE_IDX)-1,_a=Ea.createToken({name:"RECORDING_PHASE_TOKEN",pattern:tu.Lexer.NA});ma.augmentTokenTypes([_a]);var ga=Ea.createTokenInstance(_a,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(ga);var iu={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},ou=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var r=function(i){var a=i>0?i:"";e["CONSUME"+a]=function(o,s){return this.consumeInternalRecord(o,i,s)},e["SUBRULE"+a]=function(o,s){return this.subruleInternalRecord(o,i,s)},e["OPTION"+a]=function(o){return this.optionInternalRecord(o,i)},e["OR"+a]=function(o){return this.orInternalRecord(o,i)},e["MANY"+a]=function(o){this.manyInternalRecord(i,o)},e["MANY_SEP"+a]=function(o){this.manySepFirstInternalRecord(i,o)},e["AT_LEAST_ONE"+a]=function(o){this.atLeastOneInternalRecord(i,o)},e["AT_LEAST_ONE_SEP"+a]=function(o){this.atLeastOneSepFirstInternalRecord(i,o)}},n=0;n<10;n++)r(n);e.consume=function(i,a,o){return this.consumeInternalRecord(a,i,o)},e.subrule=function(i,a,o){return this.subruleInternalRecord(a,i,o)},e.option=function(i,a){return this.optionInternalRecord(a,i)},e.or=function(i,a){return this.orInternalRecord(a,i)},e.many=function(i,a){this.manyInternalRecord(i,a)},e.atLeastOne=function(i,a){this.atLeastOneInternalRecord(i,a)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var r=0;r<10;r++){var n=r>0?r:"";delete e["CONSUME"+n],delete e["SUBRULE"+n],delete e["OPTION"+n],delete e["OR"+n],delete e["MANY"+n],delete e["MANY_SEP"+n],delete e["AT_LEAST_ONE"+n],delete e["AT_LEAST_ONE_SEP"+n]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,r){return function(){return!0}},t.prototype.LA_RECORD=function(e){return ru.END_OF_FILE},t.prototype.topLevelRuleRecord=function(e,r){try{var n=new Pe.Rule({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(i){if(i.KNOWN_RECORDER_ERROR!==!0)try{i.message=i.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch(a){throw i}throw i}},t.prototype.optionInternalRecord=function(e,r){return Ot.call(this,Pe.Option,e,r)},t.prototype.atLeastOneInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionMandatory,r,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionMandatoryWithSeparator,r,e,Ta)},t.prototype.manyInternalRecord=function(e,r){Ot.call(this,Pe.Repetition,r,e)},t.prototype.manySepFirstInternalRecord=function(e,r){Ot.call(this,Pe.RepetitionWithSeparator,r,e,Ta)},t.prototype.orInternalRecord=function(e,r){return au.call(this,e,r)},t.prototype.subruleInternalRecord=function(e,r,n){if(ar(r),!e||oe.has(e,"ruleName")===!1){var i=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=oe.peek(this.recordingProdStack),o=e.ruleName,s=new Pe.NonTerminal({idx:r,nonTerminalName:o,referencedRule:void 0});return a.definition.push(s),this.outputCst?iu:ir},t.prototype.consumeInternalRecord=function(e,r,n){if(ar(r),!ma.hasShortKeyProperty(e)){var i=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=oe.peek(this.recordingProdStack),o=new Pe.Terminal({idx:r,terminalType:e});return a.definition.push(o),ga},t}();nr.GastRecorder=ou;function Ot(t,e,r,n){n===void 0&&(n=!1),ar(r);var i=oe.peek(this.recordingProdStack),a=oe.isFunction(e)?e:e.DEF,o=new t({definition:[],idx:r});return n&&(o.separator=e.SEP),oe.has(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),a.call(this),i.definition.push(o),this.recordingProdStack.pop(),ir}function au(t,e){var r=this;ar(e);var n=oe.peek(this.recordingProdStack),i=oe.isArray(t)===!1,a=i===!1?t:t.DEF,o=new Pe.Alternation({definition:[],idx:e,ignoreAmbiguities:i&&t.IGNORE_AMBIGUITIES===!0});oe.has(t,"MAX_LOOKAHEAD")&&(o.maxLookahead=t.MAX_LOOKAHEAD);var s=oe.some(a,function(c){return oe.isFunction(c.GATE)});return o.hasPredicates=s,n.definition.push(o),oe.forEach(a,function(c){var f=new Pe.Alternative({definition:[]});o.definition.push(f),oe.has(c,"IGNORE_AMBIGUITIES")?f.ignoreAmbiguities=c.IGNORE_AMBIGUITIES:oe.has(c,"GATE")&&(f.ignoreAmbiguities=!0),r.recordingProdStack.push(f),c.ALT.call(r),r.recordingProdStack.pop()}),ir}function Aa(t){return t===0?"":""+t}function ar(t){if(t<0||t>ya){var e=new Error("Invalid DSL Method idx value: <"+t+`> - `+("Idx value must be a none negative value smaller than "+(ya+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var Na=R(or=>{"use strict";Object.defineProperty(or,"__esModule",{value:!0});or.PerformanceTracer=void 0;var Oa=k(),su=ce(),uu=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if(Oa.has(e,"traceInitPerf")){var r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:Infinity,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=su.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;var n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var i=Oa.timer(r),a=i.time,o=i.value,s=a>10?console.warn:console.log;return this.traceInitIndent time: "+a+"ms"),this.traceInitIndent--,o}else return r()},t}();or.PerformanceTracer=uu});var Ia=R(sr=>{"use strict";Object.defineProperty(sr,"__esModule",{value:!0});sr.applyMixins=void 0;function cu(t,e){e.forEach(function(r){var n=r.prototype;Object.getOwnPropertyNames(n).forEach(function(i){if(i!=="constructor"){var a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]}})})}sr.applyMixins=cu});var ce=R(U=>{"use strict";var ka=U&&U.__extends||function(){var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},t(e,r)};return function(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");t(e,r);function n(){this.constructor=e}e.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(U,"__esModule",{value:!0});U.EmbeddedActionsParser=U.CstParser=U.Parser=U.EMPTY_ALT=U.ParserDefinitionErrorType=U.DEFAULT_RULE_CONFIG=U.DEFAULT_PARSER_CONFIG=U.END_OF_FILE=void 0;var ee=k(),lu=pi(),Pa=Ue(),Sa=mt(),xa=Ui(),fu=zr(),pu=zi(),hu=ra(),du=ia(),vu=oa(),mu=la(),Eu=pa(),Tu=va(),yu=Ra(),_u=Na(),gu=Ia();U.END_OF_FILE=Pa.createTokenInstance(Pa.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(U.END_OF_FILE);U.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Sa.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});U.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var Au;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(Au=U.ParserDefinitionErrorType||(U.ParserDefinitionErrorType={}));function Ru(t){return t===void 0&&(t=void 0),function(){return t}}U.EMPTY_ALT=Ru;var ur=function(){function t(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;var n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),ee.has(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=ee.has(r,"skipValidations")?r.skipValidations:U.DEFAULT_PARSER_CONFIG.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var r;e.selfAnalysisDone=!0;var n=e.className;e.TRACE_INIT("toFastProps",function(){ee.toFastProperties(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),ee.forEach(e.definedRulesNames,function(a){var o=e[a],s=o.originalGrammarAction,c=void 0;e.TRACE_INIT(a+" Rule",function(){c=e.topLevelRuleRecord(a,s)}),e.gastProductionsCache[a]=c})}finally{e.disableRecording()}});var i=[];if(e.TRACE_INIT("Grammar Resolving",function(){i=xa.resolveGrammar({rules:ee.values(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(i)}),e.TRACE_INIT("Grammar Validations",function(){if(ee.isEmpty(i)&&e.skipValidations===!1){var a=xa.validateGrammar({rules:ee.values(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:ee.values(e.tokensMap),errMsgProvider:Sa.defaultGrammarValidatorErrorProvider,grammarName:n});e.definitionErrors=e.definitionErrors.concat(a)}}),ee.isEmpty(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var a=lu.computeAllProdsFollows(ee.values(e.gastProductionsCache));e.resyncFollows=a}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions(ee.values(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ee.isEmpty(e.definitionErrors))throw r=ee.map(e.definitionErrors,function(a){return a.message}),new Error(`Parser Definition Errors detected: - `+r.join(` -------------------------------- -`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();U.Parser=ur;gu.applyMixins(ur,[fu.Recoverable,pu.LooksAhead,hu.TreeBuilder,du.LexerAdapter,mu.RecognizerEngine,vu.RecognizerApi,Eu.ErrorHandler,Tu.ContentAssist,yu.GastRecorder,_u.PerformanceTracer]);var Ou=function(t){ka(e,t);function e(r,n){n===void 0&&(n=U.DEFAULT_PARSER_CONFIG);var i=this,a=ee.cloneObj(n);return a.outputCst=!0,i=t.call(this,r,a)||this,i}return e}(ur);U.CstParser=Ou;var Nu=function(t){ka(e,t);function e(r,n){n===void 0&&(n=U.DEFAULT_PARSER_CONFIG);var i=this,a=ee.cloneObj(n);return a.outputCst=!1,i=t.call(this,r,a)||this,i}return e}(ur);U.EmbeddedActionsParser=Nu});var La=R(cr=>{"use strict";Object.defineProperty(cr,"__esModule",{value:!0});cr.createSyntaxDiagramsCode=void 0;var Ca=Er();function Iu(t,e){var r=e===void 0?{}:e,n=r.resourceBase,i=n===void 0?"https://unpkg.com/chevrotain@"+Ca.VERSION+"/diagrams/":n,a=r.css,o=a===void 0?"https://unpkg.com/chevrotain@"+Ca.VERSION+"/diagrams/diagrams.css":a,s=` - - - - - -`,c=` - -`,f=` - - - - -`,p=` -

-`,l=` - -`,m=` - -`;return s+c+f+p+l+m}cr.createSyntaxDiagramsCode=Iu});var Fa=R(E=>{"use strict";Object.defineProperty(E,"__esModule",{value:!0});E.Parser=E.createSyntaxDiagramsCode=E.clearCache=E.GAstVisitor=E.serializeProduction=E.serializeGrammar=E.Terminal=E.Rule=E.RepetitionWithSeparator=E.RepetitionMandatoryWithSeparator=E.RepetitionMandatory=E.Repetition=E.Option=E.NonTerminal=E.Alternative=E.Alternation=E.defaultLexerErrorProvider=E.NoViableAltException=E.NotAllInputParsedException=E.MismatchedTokenException=E.isRecognitionException=E.EarlyExitException=E.defaultParserErrorProvider=E.tokenName=E.tokenMatcher=E.tokenLabel=E.EOF=E.createTokenInstance=E.createToken=E.LexerDefinitionErrorType=E.Lexer=E.EMPTY_ALT=E.ParserDefinitionErrorType=E.EmbeddedActionsParser=E.CstParser=E.VERSION=void 0;var ku=Er();Object.defineProperty(E,"VERSION",{enumerable:!0,get:function(){return ku.VERSION}});var lr=ce();Object.defineProperty(E,"CstParser",{enumerable:!0,get:function(){return lr.CstParser}});Object.defineProperty(E,"EmbeddedActionsParser",{enumerable:!0,get:function(){return lr.EmbeddedActionsParser}});Object.defineProperty(E,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return lr.ParserDefinitionErrorType}});Object.defineProperty(E,"EMPTY_ALT",{enumerable:!0,get:function(){return lr.EMPTY_ALT}});var Ma=ft();Object.defineProperty(E,"Lexer",{enumerable:!0,get:function(){return Ma.Lexer}});Object.defineProperty(E,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return Ma.LexerDefinitionErrorType}});var nt=Ue();Object.defineProperty(E,"createToken",{enumerable:!0,get:function(){return nt.createToken}});Object.defineProperty(E,"createTokenInstance",{enumerable:!0,get:function(){return nt.createTokenInstance}});Object.defineProperty(E,"EOF",{enumerable:!0,get:function(){return nt.EOF}});Object.defineProperty(E,"tokenLabel",{enumerable:!0,get:function(){return nt.tokenLabel}});Object.defineProperty(E,"tokenMatcher",{enumerable:!0,get:function(){return nt.tokenMatcher}});Object.defineProperty(E,"tokenName",{enumerable:!0,get:function(){return nt.tokenName}});var Pu=mt();Object.defineProperty(E,"defaultParserErrorProvider",{enumerable:!0,get:function(){return Pu.defaultParserErrorProvider}});var Nt=et();Object.defineProperty(E,"EarlyExitException",{enumerable:!0,get:function(){return Nt.EarlyExitException}});Object.defineProperty(E,"isRecognitionException",{enumerable:!0,get:function(){return Nt.isRecognitionException}});Object.defineProperty(E,"MismatchedTokenException",{enumerable:!0,get:function(){return Nt.MismatchedTokenException}});Object.defineProperty(E,"NotAllInputParsedException",{enumerable:!0,get:function(){return Nt.NotAllInputParsedException}});Object.defineProperty(E,"NoViableAltException",{enumerable:!0,get:function(){return Nt.NoViableAltException}});var Su=kr();Object.defineProperty(E,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return Su.defaultLexerErrorProvider}});var Se=ne();Object.defineProperty(E,"Alternation",{enumerable:!0,get:function(){return Se.Alternation}});Object.defineProperty(E,"Alternative",{enumerable:!0,get:function(){return Se.Alternative}});Object.defineProperty(E,"NonTerminal",{enumerable:!0,get:function(){return Se.NonTerminal}});Object.defineProperty(E,"Option",{enumerable:!0,get:function(){return Se.Option}});Object.defineProperty(E,"Repetition",{enumerable:!0,get:function(){return Se.Repetition}});Object.defineProperty(E,"RepetitionMandatory",{enumerable:!0,get:function(){return Se.RepetitionMandatory}});Object.defineProperty(E,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return Se.RepetitionMandatoryWithSeparator}});Object.defineProperty(E,"RepetitionWithSeparator",{enumerable:!0,get:function(){return Se.RepetitionWithSeparator}});Object.defineProperty(E,"Rule",{enumerable:!0,get:function(){return Se.Rule}});Object.defineProperty(E,"Terminal",{enumerable:!0,get:function(){return Se.Terminal}});var ba=ne();Object.defineProperty(E,"serializeGrammar",{enumerable:!0,get:function(){return ba.serializeGrammar}});Object.defineProperty(E,"serializeProduction",{enumerable:!0,get:function(){return ba.serializeProduction}});var xu=$e();Object.defineProperty(E,"GAstVisitor",{enumerable:!0,get:function(){return xu.GAstVisitor}});function Cu(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API. - It performs no action other than printing this message. - Please avoid using it as it will be completely removed in the future`)}E.clearCache=Cu;var Lu=La();Object.defineProperty(E,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return Lu.createSyntaxDiagramsCode}});var Mu=function(){function t(){throw new Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead. -See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return t}();E.Parser=Mu});export default Fa(); diff --git a/three/addons/libs/draco/README.md b/three/addons/libs/draco/README.md deleted file mode 100644 index 6dfa1d3..0000000 --- a/three/addons/libs/draco/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Draco 3D Data Compression - -Draco is an open-source library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics. - -[Website](https://google.github.io/draco/) | [GitHub](https://github.com/google/draco) - -## Contents - -This folder contains three utilities: - -* `draco_decoder.js` — Emscripten-compiled decoder, compatible with any modern browser. -* `draco_decoder.wasm` — WebAssembly decoder, compatible with newer browsers and devices. -* `draco_wasm_wrapper.js` — JavaScript wrapper for the WASM decoder. - -Each file is provided in two variations: - -* **Default:** Latest stable builds, tracking the project's [master branch](https://github.com/google/draco). -* **glTF:** Builds targeted by the [glTF mesh compression extension](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression), tracking the [corresponding Draco branch](https://github.com/google/draco/tree/gltf_2.0_draco_extension). - -Either variation may be used with `THREE.DRACOLoader`: - -```js -var dracoLoader = new THREE.DRACOLoader(); -dracoLoader.setDecoderPath('path/to/decoders/'); -dracoLoader.setDecoderConfig({type: 'js'}); // (Optional) Override detection of WASM support. -``` - -Further [documentation on GitHub](https://github.com/google/draco/tree/master/javascript/example#static-loading-javascript-decoder). - -## License - -[Apache License 2.0](https://github.com/google/draco/blob/master/LICENSE) diff --git a/three/addons/libs/draco/draco_decoder.js b/three/addons/libs/draco/draco_decoder.js deleted file mode 100644 index 6629469..0000000 --- a/three/addons/libs/draco/draco_decoder.js +++ /dev/null @@ -1,34 +0,0 @@ - -var DracoDecoderModule = (() => { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(DracoDecoderModule = {}) { - -var Module=typeof DracoDecoderModule!="undefined"?DracoDecoderModule:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var isRuntimeInitialized=false;var isModuleParsed=false;Module["onRuntimeInitialized"]=function(){isRuntimeInitialized=true;if(isModuleParsed){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}};Module["onModuleParsed"]=function(){isModuleParsed=true;if(isRuntimeInitialized){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}};function isVersionSupported(versionString){if(typeof versionString!=="string")return false;const version=versionString.split(".");if(version.length<2||version.length>3)return false;if(version[0]==1&&version[1]>=0&&version[1]<=5)return true;if(version[0]!=0||version[1]>10)return false;return true}Module["isVersionSupported"]=isVersionSupported;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function(binary){},Instance:function(module,info){this.exports=( -// EMSCRIPTEN_START_ASM -function instantiate(na){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2];s=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;a:{b:{c:{if(g>>>0>k>>>0&(d|0)>=(s|0)|(d|0)>(s|0)){break c}d=e+H[b>>2]|0;H[a>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;if(K[a>>2]>31){break c}s=H[b+8>>2];y=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>s>>>0&(d|0)>=(y|0)|(d|0)>(y|0)){break c}d=e+H[b>>2]|0;H[a+4>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;s=H[b+8>>2];y=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>s>>>0&(d|0)>=(y|0)|(d|0)>(y|0)){break c}d=e+H[b>>2]|0;H[a+12>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;d=H[a+20>>2];x=H[a+12>>2];if((x|0)!=(d|0)?d:0){break c}s=H[b+8>>2];y=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>s>>>0&(d|0)>=(y|0)|(d|0)>(y|0)){break c}d=e+H[b>>2]|0;e=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[a+16>>2]=e;g=H[b+20>>2];d=H[b+16>>2]+4|0;g=d>>>0<4?g+1|0:g;H[b+16>>2]=d;H[b+20>>2]=g;if(e>>>0>=7){H[B>>2]=e;Qd(1713,B);break c}H[B+664>>2]=c;d:{if(!x){break d}e:{k=H[c>>2];if(x>>>0<=(H[c+8>>2]-k|0)/12>>>0){break e}if(x>>>0<357913942){l=H[c+4>>2];d=N(x,12);e=pa(d);g=d+e|0;e=e+N((l-k|0)/12|0,12)|0;d=e;if((k|0)!=(l|0)){while(1){d=d-12|0;l=l-12|0;H[d>>2]=H[l>>2];H[d+4>>2]=H[l+4>>2];H[d+8>>2]=H[l+8>>2];if((k|0)!=(l|0)){continue}break}}H[c+8>>2]=g;H[c+4>>2]=e;H[c>>2]=d;if(!k){break e}oa(k);break e}break b}f:{switch(H[a+16>>2]){case 0:i=wb(B+8|0,3);z=B+664|0;k=H[b+8>>2];n=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;g:{if(g>>>0>k>>>0&(d|0)>=(n|0)|(d|0)>(n|0)){break g}d=e+H[b>>2]|0;H[i>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;if(K[i>>2]>32){break g}n=H[b+8>>2];s=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>n>>>0&(d|0)>=(s|0)|(d|0)>(s|0)){break g}d=e+H[b>>2]|0;e=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[i+4>>2]=e;g=H[b+20>>2];d=H[b+16>>2]+4|0;g=d>>>0<4?g+1|0:g;H[b+16>>2]=d;H[b+20>>2]=g;if(!e){break g}H[i+8>>2]=0;if(!ua(i+16|0,b)){break g}if(!ua(i+36|0,b)){break g}if(!ua(i+56|0,b)){break g}if(!ua(i+76|0,b)){break g}A=H[i+4>>2];d=0;g=0;f=ca-32|0;ca=f;m=H[i+12>>2];H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;if(m){if(m>>>0>=1073741824){break b}b=m<<2;g=pa(b);H[f+8>>2]=g;d=b+g|0;H[f+16>>2]=d;ra(g,0,b);H[f+12>>2]=d}e=H[i+120>>2];b=H[e>>2];if(b){H[e+4>>2]=b;oa(b);m=H[i+12>>2];g=H[f+8>>2];d=H[f+12>>2]}H[e+4>>2]=d;H[e>>2]=g;H[e+8>>2]=H[f+16>>2];g=0;H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;h:{if(m){if(m>>>0>=1073741824){break b}b=m<<2;w=pa(b);H[f+8>>2]=w;g=b+w|0;H[f+16>>2]=g;ra(w,0,b);H[f+12>>2]=g}d=H[i+132>>2];b=H[d>>2];if(b){H[d+4>>2]=b;oa(b);w=H[f+8>>2];g=H[f+12>>2]}H[d+4>>2]=g;H[d>>2]=w;H[d+8>>2]=H[f+16>>2];H[f+24>>2]=0;H[f+28>>2]=0;H[f+16>>2]=0;H[f+20>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;xa(f+8|0);d=H[f+24>>2]+H[f+28>>2]|0;b=(d>>>0)/341|0;b=H[H[f+12>>2]+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;H[b+4>>2]=0;H[b+8>>2]=0;H[b>>2]=A;m=H[f+28>>2]+1|0;H[f+28>>2]=m;i:{if(!m){break i}y=i+96|0;while(1){n=H[f+12>>2];g=H[f+24>>2];e=m-1|0;d=g+e|0;b=(d>>>0)/341|0;b=H[n+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;o=H[b+8>>2];k=H[b+4>>2];t=H[b>>2];H[f+28>>2]=e;b=H[f+16>>2];if((((b|0)!=(n|0)?N(b-n>>2,341)-1|0:0)-(g+m|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[f+16>>2]=H[f+16>>2]-4}b=0;if(t>>>0>A>>>0){break i}d=H[i+12>>2];m=(k|0)!=(d-1|0)?k+1|0:0;if(m>>>0>=d>>>0){break i}q=N(o,12);p=q+H[i+132>>2]|0;l=q+H[i+120>>2]|0;g=H[i>>2];r=m<<2;e=H[r+H[p>>2]>>2];j:{k:{if((g|0)==(e|0)){if(!t){break k}while(1){d=H[l>>2];x=H[d+8>>2];s=H[d+4>>2];n=H[d>>2];q=H[z>>2];m=H[q+4>>2];d=H[q+8>>2];l:{if(m>>>0>>0){H[m+8>>2]=x;H[m+4>>2]=s;H[m>>2]=n;H[q+4>>2]=m+12;break l}r=H[q>>2];g=(m-r|0)/12|0;k=g+1|0;if(k>>>0>=357913942){break b}e=(d-r|0)/12|0;d=e<<1;k=e>>>0>=178956970?357913941:d>>>0>k>>>0?d:k;if(k){if(k>>>0>=357913942){break a}d=pa(N(k,12))}else{d=0}w=d+N(g,12)|0;H[w+8>>2]=x;H[w+4>>2]=s;H[w>>2]=n;e=w+12|0;if((m|0)!=(r|0)){while(1){w=w-12|0;m=m-12|0;H[w>>2]=H[m>>2];H[w+4>>2]=H[m+4>>2];H[w+8>>2]=H[m+8>>2];if((m|0)!=(r|0)){continue}break}}H[q+8>>2]=d+N(k,12);H[q+4>>2]=e;H[q>>2]=w;if(!r){break l}oa(r)}H[i+8>>2]=H[i+8>>2]+1;b=b+1|0;if((t|0)!=(b|0)){continue}break}break k}m:{n:{o:{p:{if(t>>>0<=2){d=H[i+108>>2];H[d>>2]=m;w=1;g=H[i+12>>2];if(g>>>0>1){break p}break m}if(K[i+8>>2]>K[i+4>>2]){break i}b=H[i+120>>2];s=o+1|0;x=N(s,12);d=b+x|0;if((d|0)!=(l|0)){Aa(d,H[l>>2],H[l+4>>2]);b=H[i+120>>2]}b=r+H[b+x>>2]|0;H[b>>2]=H[b>>2]+(1<>2];e=32-k|0;q:{if((n|0)<=(e|0)){e=H[i+28>>2];if((e|0)==H[i+20>>2]){break o}d=H[e>>2];b=k+n|0;H[i+32>>2]=b;w=d<>>32-n|0;if((b|0)!=32){break q}H[i+32>>2]=0;H[i+28>>2]=e+4;break q}g=H[i+28>>2];b=g+4|0;if((b|0)==H[i+20>>2]){break o}d=H[g>>2];H[i+28>>2]=b;b=n-e|0;H[i+32>>2]=b;w=H[g+4>>2]>>>32-b|d<>>32-n}d=t>>>1|0;if(w>>>0>d>>>0){break i}break n}while(1){m=(g-1|0)!=(m|0)?m+1|0:0;H[d+(w<<2)>>2]=m;g=H[i+12>>2];w=w+1|0;if(g>>>0>w>>>0){continue}break}break m}d=t>>>1|0;w=0}r:{s:{e=d-w|0;b=t-e|0;t:{if((b|0)==(e|0)){b=e;break t}n=H[i+88>>2];if((n|0)==H[i+80>>2]){break s}k=H[n>>2];g=H[i+92>>2];d=g+1|0;H[i+92>>2]=d;g=k&-2147483648>>>g;u:{if((d|0)==32){H[i+92>>2]=0;H[i+88>>2]=n+4;if(g){break u}break s}if(!g){break s}}}d=b;b=e;break r}d=e}n=H[i+132>>2];k=n+q|0;g=H[k>>2];e=g+r|0;H[e>>2]=H[e>>2]+1;Aa(n+x|0,g,H[k+4>>2]);if(b){g=H[f+28>>2]+H[f+24>>2]|0;e=H[f+16>>2];w=H[f+12>>2];if((g|0)==(((e|0)!=(w|0)?N(e-w>>2,341)-1|0:0)|0)){xa(f+8|0);w=H[f+12>>2];g=H[f+24>>2]+H[f+28>>2]|0}e=(g>>>0)/341|0;e=H[(e<<2)+w>>2]+N(g-N(e,341)|0,12)|0;H[e+8>>2]=o;H[e+4>>2]=m;H[e>>2]=b;H[f+28>>2]=H[f+28>>2]+1}if(!d){break k}g=H[f+28>>2]+H[f+24>>2]|0;b=H[f+16>>2];w=H[f+12>>2];if((g|0)==(((b|0)!=(w|0)?N(b-w>>2,341)-1|0:0)|0)){xa(f+8|0);w=H[f+12>>2];g=H[f+24>>2]+H[f+28>>2]|0}b=(g>>>0)/341|0;b=H[(b<<2)+w>>2]+N(g-N(b,341)|0,12)|0;H[b+8>>2]=s;H[b+4>>2]=m;H[b>>2]=d;m=H[f+28>>2]+1|0;H[f+28>>2]=m;break j}if(!t){break k}while(1){if(H[i+12>>2]){o=H[i+40>>2];n=H[p>>2];w=H[i+96>>2];k=H[i+108>>2];m=0;while(1){q=k+(m<<2)|0;H[w+(H[q>>2]<<2)>>2]=0;g=H[i>>2];e=H[q>>2]<<2;d=H[e+n>>2];v:{if((g|0)==(d|0)){break v}r=e+w|0;u=g-d|0;x=H[i+52>>2];g=32-x|0;if((u|0)<=(g|0)){e=H[i+48>>2];if((e|0)==(o|0)){break i}H[r>>2]=H[e>>2]<>>32-u;d=u+H[i+52>>2]|0;H[i+52>>2]=d;if((d|0)!=32){break v}H[i+52>>2]=0;H[i+48>>2]=e+4;break v}s=H[i+48>>2];d=s+4|0;if((d|0)==(o|0)){break i}e=H[s>>2];H[i+48>>2]=d;d=u-g|0;H[i+52>>2]=d;H[r>>2]=H[s+4>>2]>>>32-d|e<>>32-u}e=H[q>>2]<<2;d=e+w|0;H[d>>2]=H[d>>2]|H[e+H[l>>2]>>2];m=m+1|0;if(m>>>0>2]){continue}break}}jb(z,y);H[i+8>>2]=H[i+8>>2]+1;b=b+1|0;if((t|0)!=(b|0)){continue}break}}m=H[f+28>>2]}if(m){continue}break}}H[f+28>>2]=0;w=H[f+16>>2];m=H[f+12>>2];g=w-m|0;if(g>>>0>=9){while(1){oa(H[m>>2]);m=H[f+12>>2]+4|0;H[f+12>>2]=m;w=H[f+16>>2];g=w-m|0;if(g>>>0>8){continue}break}}b=170;w:{switch((g>>>2|0)-1|0){case 1:b=341;case 0:H[f+24>>2]=b;break;default:break w}}x:{if((m|0)==(w|0)){break x}while(1){oa(H[m>>2]);m=m+4|0;if((w|0)!=(m|0)){continue}break}d=H[f+16>>2];b=H[f+12>>2];if((d|0)==(b|0)){break x}H[f+16>>2]=d+((b-d|0)+3&-4)}b=H[f+8>>2];if(b){oa(b)}ca=f+32|0;break h}}xb(i);break d;case 1:i=wb(B+8|0,3);A=B+664|0;k=H[b+8>>2];n=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;y:{if(g>>>0>k>>>0&(d|0)>=(n|0)|(d|0)>(n|0)){break y}d=e+H[b>>2]|0;H[i>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;if(K[i>>2]>32){break y}n=H[b+8>>2];s=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>n>>>0&(d|0)>=(s|0)|(d|0)>(s|0)){break y}d=e+H[b>>2]|0;e=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[i+4>>2]=e;g=H[b+20>>2];d=H[b+16>>2]+4|0;g=d>>>0<4?g+1|0:g;H[b+16>>2]=d;H[b+20>>2]=g;if(!e){break y}H[i+8>>2]=0;if(!ua(i+16|0,b)){break y}if(!ua(i+36|0,b)){break y}if(!ua(i+56|0,b)){break y}if(!ua(i+76|0,b)){break y}p=H[i+4>>2];d=0;f=ca-32|0;ca=f;m=H[i+12>>2];H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;if(m){if(m>>>0>=1073741824){break b}b=m<<2;t=pa(b);H[f+8>>2]=t;d=b+t|0;H[f+16>>2]=d;ra(t,0,b);H[f+12>>2]=d}e=H[i+120>>2];b=H[e>>2];if(b){H[e+4>>2]=b;oa(b);m=H[i+12>>2];t=H[f+8>>2];d=H[f+12>>2]}H[e+4>>2]=d;H[e>>2]=t;H[e+8>>2]=H[f+16>>2];t=0;H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;z:{if(m){if(m>>>0>=1073741824){break b}b=m<<2;o=pa(b);H[f+8>>2]=o;t=b+o|0;H[f+16>>2]=t;ra(o,0,b);H[f+12>>2]=t}d=H[i+132>>2];b=H[d>>2];if(b){H[d+4>>2]=b;oa(b);t=H[f+12>>2];o=H[f+8>>2]}H[d+4>>2]=t;H[d>>2]=o;H[d+8>>2]=H[f+16>>2];H[f+24>>2]=0;H[f+28>>2]=0;H[f+16>>2]=0;H[f+20>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;xa(f+8|0);d=H[f+24>>2]+H[f+28>>2]|0;b=(d>>>0)/341|0;b=H[H[f+12>>2]+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;H[b+4>>2]=0;H[b+8>>2]=0;H[b>>2]=p;m=H[f+28>>2]+1|0;H[f+28>>2]=m;A:{if(!m){break A}s=i+96|0;while(1){k=H[f+12>>2];g=H[f+24>>2];e=m-1|0;d=g+e|0;b=(d>>>0)/341|0;b=H[k+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;q=H[b+8>>2];d=H[b+4>>2];l=H[b>>2];H[f+28>>2]=e;b=H[f+16>>2];if((((b|0)!=(k|0)?N(b-k>>2,341)-1|0:0)-(g+m|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[f+16>>2]=H[f+16>>2]-4}if(l>>>0>p>>>0){break A}b=H[i+12>>2];m=(d|0)!=(b-1|0)?d+1|0:0;if(m>>>0>=b>>>0){break A}b=H[i+120>>2];r=N(q,12);u=b+r|0;e=H[i>>2];x=m<<2;n=r+H[i+132>>2]|0;d=H[x+H[n>>2]>>2];B:{C:{if((e|0)==(d|0)){x=0;if(!l){break C}while(1){b=H[u>>2];y=H[b+8>>2];n=H[b+4>>2];k=H[b>>2];q=H[A>>2];m=H[q+4>>2];b=H[q+8>>2];D:{if(m>>>0>>0){H[m+8>>2]=y;H[m+4>>2]=n;H[m>>2]=k;H[q+4>>2]=m+12;break D}r=H[q>>2];e=(m-r|0)/12|0;g=e+1|0;if(g>>>0>=357913942){break b}d=(b-r|0)/12|0;b=d<<1;g=d>>>0>=178956970?357913941:b>>>0>g>>>0?b:g;if(g){if(g>>>0>=357913942){break a}b=pa(N(g,12))}else{b=0}o=b+N(e,12)|0;H[o+8>>2]=y;H[o+4>>2]=n;H[o>>2]=k;d=o+12|0;if((m|0)!=(r|0)){while(1){o=o-12|0;m=m-12|0;H[o>>2]=H[m>>2];H[o+4>>2]=H[m+4>>2];H[o+8>>2]=H[m+8>>2];if((m|0)!=(r|0)){continue}break}}H[q+8>>2]=b+N(g,12);H[q+4>>2]=d;H[q>>2]=o;if(!r){break D}oa(r)}H[i+8>>2]=H[i+8>>2]+1;x=x+1|0;if((l|0)!=(x|0)){continue}break}break C}E:{F:{G:{H:{if(l>>>0<=2){b=H[i+108>>2];H[b>>2]=m;o=1;t=H[i+12>>2];if(t>>>0>1){break H}break E}if(K[i+8>>2]>K[i+4>>2]){break A}k=b;b=r+12|0;Aa(k+b|0,H[u>>2],H[u+4>>2]);b=x+H[b+H[i+120>>2]>>2]|0;H[b>>2]=H[b>>2]+(1<>2];e=32-k|0;I:{if((n|0)<=(e|0)){e=H[i+28>>2];if((e|0)==H[i+20>>2]){break G}d=H[e>>2];b=k+n|0;H[i+32>>2]=b;d=d<>>32-n|0;if((b|0)!=32){break I}H[i+32>>2]=0;H[i+28>>2]=e+4;break I}g=H[i+28>>2];b=g+4|0;if((b|0)==H[i+20>>2]){break G}d=H[g>>2];H[i+28>>2]=b;b=n-e|0;H[i+32>>2]=b;d=H[g+4>>2]>>>32-b|d<>>32-n}o=l>>>1|0;if(o>>>0>>0){break A}break F}while(1){m=(t-1|0)!=(m|0)?m+1|0:0;H[b+(o<<2)>>2]=m;o=o+1|0;t=H[i+12>>2];if(o>>>0>>0){continue}break}break E}o=l>>>1|0;d=0}y=q+1|0;J:{K:{e=o-d|0;d=l-e|0;L:{if((d|0)==(e|0)){b=e;break L}n=H[i+88>>2];if((n|0)==H[i+80>>2]){break K}k=H[n>>2];g=H[i+92>>2];b=g+1|0;H[i+92>>2]=b;g=k&-2147483648>>>g;M:{if((b|0)==32){H[i+92>>2]=0;H[i+88>>2]=n+4;if(g){break M}break K}if(!g){break K}}b=d}d=e;break J}b=e}n=H[i+132>>2];k=n+r|0;g=H[k>>2];e=g+x|0;H[e>>2]=H[e>>2]+1;Aa(n+N(y,12)|0,g,H[k+4>>2]);if(d){t=H[f+28>>2]+H[f+24>>2]|0;e=H[f+16>>2];o=H[f+12>>2];if((t|0)==(((e|0)!=(o|0)?N(e-o>>2,341)-1|0:0)|0)){xa(f+8|0);t=H[f+24>>2]+H[f+28>>2]|0;o=H[f+12>>2]}e=(t>>>0)/341|0;e=H[o+(e<<2)>>2]+N(t-N(e,341)|0,12)|0;H[e+8>>2]=q;H[e+4>>2]=m;H[e>>2]=d;H[f+28>>2]=H[f+28>>2]+1}if(!b){break C}t=H[f+28>>2]+H[f+24>>2]|0;d=H[f+16>>2];o=H[f+12>>2];if((t|0)==(((d|0)!=(o|0)?N(d-o>>2,341)-1|0:0)|0)){xa(f+8|0);t=H[f+24>>2]+H[f+28>>2]|0;o=H[f+12>>2]}d=(t>>>0)/341|0;d=H[o+(d<<2)>>2]+N(t-N(d,341)|0,12)|0;H[d+8>>2]=y;H[d+4>>2]=m;H[d>>2]=b;m=H[f+28>>2]+1|0;H[f+28>>2]=m;break B}t=0;if(!l){break C}while(1){if(H[i+12>>2]){o=H[i+40>>2];k=H[n>>2];z=H[i+96>>2];g=H[i+108>>2];m=0;while(1){q=g+(m<<2)|0;H[z+(H[q>>2]<<2)>>2]=0;e=H[i>>2];d=H[q>>2]<<2;b=H[d+k>>2];N:{if((e|0)==(b|0)){break N}r=d+z|0;w=e-b|0;x=H[i+52>>2];e=32-x|0;if((w|0)<=(e|0)){d=H[i+48>>2];if((d|0)==(o|0)){break A}H[r>>2]=H[d>>2]<>>32-w;b=w+H[i+52>>2]|0;H[i+52>>2]=b;if((b|0)!=32){break N}H[i+52>>2]=0;H[i+48>>2]=d+4;break N}y=H[i+48>>2];b=y+4|0;if((b|0)==(o|0)){break A}d=H[y>>2];H[i+48>>2]=b;b=w-e|0;H[i+52>>2]=b;H[r>>2]=H[y+4>>2]>>>32-b|d<>>32-w}d=H[q>>2]<<2;b=d+z|0;H[b>>2]=H[b>>2]|H[d+H[u>>2]>>2];m=m+1|0;if(m>>>0>2]){continue}break}}jb(A,s);H[i+8>>2]=H[i+8>>2]+1;t=t+1|0;if((l|0)!=(t|0)){continue}break}}m=H[f+28>>2]}if(m){continue}break}}H[f+28>>2]=0;o=H[f+16>>2];m=H[f+12>>2];t=o-m|0;if(t>>>0>=9){while(1){oa(H[m>>2]);m=H[f+12>>2]+4|0;H[f+12>>2]=m;o=H[f+16>>2];t=o-m|0;if(t>>>0>8){continue}break}}b=170;O:{switch((t>>>2|0)-1|0){case 1:b=341;case 0:H[f+24>>2]=b;break;default:break O}}P:{if((m|0)==(o|0)){break P}while(1){oa(H[m>>2]);m=m+4|0;if((o|0)!=(m|0)){continue}break}d=H[f+16>>2];b=H[f+12>>2];if((d|0)==(b|0)){break P}H[f+16>>2]=d+((b-d|0)+3&-4)}b=H[f+8>>2];if(b){oa(b)}ca=f+32|0;break z}}xb(i);break d;case 2:f=ub(B+8|0,3);w=B+664|0;k=H[b+8>>2];n=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;Q:{if(g>>>0>k>>>0&(d|0)>=(n|0)|(d|0)>(n|0)){break Q}d=e+H[b>>2]|0;H[f>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;if(K[f>>2]>32){break Q}n=H[b+8>>2];s=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>n>>>0&(d|0)>=(s|0)|(d|0)>(s|0)){break Q}d=e+H[b>>2]|0;e=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[f+4>>2]=e;g=H[b+20>>2];d=H[b+16>>2]+4|0;g=d>>>0<4?g+1|0:g;H[b+16>>2]=d;H[b+20>>2]=g;if(!e){break Q}H[f+8>>2]=0;if(!ta(f+16|0,b)){break Q}if(!ua(f+32|0,b)){break Q}if(!ua(f+52|0,b)){break Q}if(!ua(f+72|0,b)){break Q}z=H[f+4>>2];g=0;b=0;h=ca-32|0;ca=h;j=H[f+12>>2];H[h+16>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;if(j){if(j>>>0>=1073741824){break b}d=j<<2;g=pa(d);H[h+8>>2]=g;b=d+g|0;H[h+16>>2]=b;ra(g,0,d);H[h+12>>2]=b}e=H[f+116>>2];d=H[e>>2];if(d){H[e+4>>2]=d;oa(d);j=H[f+12>>2];g=H[h+8>>2];b=H[h+12>>2]}H[e+4>>2]=b;H[e>>2]=g;H[e+8>>2]=H[h+16>>2];g=0;H[h+16>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;R:{if(j){if(j>>>0>=1073741824){break b}b=j<<2;u=pa(b);H[h+8>>2]=u;g=b+u|0;H[h+16>>2]=g;ra(u,0,b);H[h+12>>2]=g}d=H[f+128>>2];b=H[d>>2];if(b){H[d+4>>2]=b;oa(b);u=H[h+8>>2];g=H[h+12>>2]}H[d+4>>2]=g;H[d>>2]=u;H[d+8>>2]=H[h+16>>2];H[h+24>>2]=0;H[h+28>>2]=0;H[h+16>>2]=0;H[h+20>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;xa(h+8|0);d=H[h+24>>2]+H[h+28>>2]|0;b=(d>>>0)/341|0;b=H[H[h+12>>2]+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;H[b+4>>2]=0;H[b+8>>2]=0;H[b>>2]=z;j=H[h+28>>2]+1|0;H[h+28>>2]=j;S:{if(!j){break S}x=f+92|0;y=f+16|0;while(1){n=H[h+12>>2];g=H[h+24>>2];e=j-1|0;d=g+e|0;b=(d>>>0)/341|0;b=H[n+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;p=H[b+8>>2];k=H[b+4>>2];i=H[b>>2];H[h+28>>2]=e;b=H[h+16>>2];if((((b|0)!=(n|0)?N(b-n>>2,341)-1|0:0)-(g+j|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[h+16>>2]=H[h+16>>2]-4}d=0;if(i>>>0>z>>>0){break S}b=H[f+12>>2];j=(k|0)!=(b-1|0)?k+1|0:0;if(j>>>0>=b>>>0){break S}o=N(p,12);A=o+H[f+128>>2]|0;t=o+H[f+116>>2]|0;g=H[f>>2];q=j<<2;e=H[q+H[A>>2]>>2];T:{if((g|0)==(e|0)){if(!i){break T}while(1){b=H[t>>2];r=H[b+8>>2];s=H[b+4>>2];n=H[b>>2];o=H[w>>2];j=H[o+4>>2];b=H[o+8>>2];U:{if(j>>>0>>0){H[j+8>>2]=r;H[j+4>>2]=s;H[j>>2]=n;H[o+4>>2]=j+12;break U}q=H[o>>2];g=(j-q|0)/12|0;k=g+1|0;if(k>>>0>=357913942){break b}e=(b-q|0)/12|0;b=e<<1;k=e>>>0>=178956970?357913941:b>>>0>k>>>0?b:k;if(k){if(k>>>0>=357913942){break a}b=pa(N(k,12))}else{b=0}u=b+N(g,12)|0;H[u+8>>2]=r;H[u+4>>2]=s;H[u>>2]=n;e=u+12|0;if((j|0)!=(q|0)){while(1){u=u-12|0;j=j-12|0;H[u>>2]=H[j>>2];H[u+4>>2]=H[j+4>>2];H[u+8>>2]=H[j+8>>2];if((j|0)!=(q|0)){continue}break}}H[o+8>>2]=b+N(k,12);H[o+4>>2]=e;H[o>>2]=u;if(!q){break U}oa(q)}H[f+8>>2]=H[f+8>>2]+1;d=d+1|0;if((i|0)!=(d|0)){continue}break}break T}V:{W:{X:{Y:{if(i>>>0<=2){b=H[f+104>>2];H[b>>2]=j;u=1;g=H[f+12>>2];if(g>>>0>1){break Y}break V}if(K[f+8>>2]>K[f+4>>2]){break S}b=H[f+116>>2];s=p+1|0;r=N(s,12);d=b+r|0;if((d|0)!=(t|0)){Aa(d,H[t>>2],H[t+4>>2]);b=H[f+116>>2]}b=q+H[b+r>>2]|0;H[b>>2]=H[b>>2]+(1<>2]=0;pc(y,Q(i)^31,h+4|0);d=i>>>1|0;b=H[h+4>>2];if(d>>>0>>0){break S}e=d-b|0;d=i-e|0;Z:{if((d|0)==(e|0)){b=e;break Z}n=H[f+84>>2];if((n|0)==H[f+76>>2]){break X}k=H[n>>2];g=H[f+88>>2];b=g+1|0;H[f+88>>2]=b;g=k&-2147483648>>>g;_:{if((b|0)==32){H[f+88>>2]=0;H[f+84>>2]=n+4;if(g){break _}break X}if(!g){break X}}b=d}d=e;break W}while(1){j=(g-1|0)!=(j|0)?j+1|0:0;H[b+(u<<2)>>2]=j;g=H[f+12>>2];u=u+1|0;if(g>>>0>u>>>0){continue}break}break V}b=e}n=H[f+128>>2];k=n+o|0;g=H[k>>2];e=g+q|0;H[e>>2]=H[e>>2]+1;Aa(n+r|0,g,H[k+4>>2]);if(d){g=H[h+28>>2]+H[h+24>>2]|0;e=H[h+16>>2];u=H[h+12>>2];if((g|0)==(((e|0)!=(u|0)?N(e-u>>2,341)-1|0:0)|0)){xa(h+8|0);u=H[h+12>>2];g=H[h+24>>2]+H[h+28>>2]|0}e=(g>>>0)/341|0;e=H[(e<<2)+u>>2]+N(g-N(e,341)|0,12)|0;H[e+8>>2]=p;H[e+4>>2]=j;H[e>>2]=d;H[h+28>>2]=H[h+28>>2]+1}if(!b){break T}g=H[h+28>>2]+H[h+24>>2]|0;d=H[h+16>>2];u=H[h+12>>2];if((g|0)==(((d|0)!=(u|0)?N(d-u>>2,341)-1|0:0)|0)){xa(h+8|0);u=H[h+12>>2];g=H[h+24>>2]+H[h+28>>2]|0}d=(g>>>0)/341|0;d=H[(d<<2)+u>>2]+N(g-N(d,341)|0,12)|0;H[d+8>>2]=s;H[d+4>>2]=j;H[d>>2]=b;H[h+28>>2]=H[h+28>>2]+1;break T}if(!i){break T}while(1){if(H[f+12>>2]){p=H[f+36>>2];n=H[A>>2];u=H[f+92>>2];k=H[f+104>>2];j=0;while(1){o=k+(j<<2)|0;H[u+(H[o>>2]<<2)>>2]=0;g=H[f>>2];e=H[o>>2]<<2;b=H[e+n>>2];$:{if((g|0)==(b|0)){break $}q=e+u|0;l=g-b|0;r=H[f+48>>2];g=32-r|0;if((l|0)<=(g|0)){e=H[f+44>>2];if((e|0)==(p|0)){break S}H[q>>2]=H[e>>2]<>>32-l;b=l+H[f+48>>2]|0;H[f+48>>2]=b;if((b|0)!=32){break $}H[f+48>>2]=0;H[f+44>>2]=e+4;break $}s=H[f+44>>2];b=s+4|0;if((b|0)==(p|0)){break S}e=H[s>>2];H[f+44>>2]=b;b=l-g|0;H[f+48>>2]=b;H[q>>2]=H[s+4>>2]>>>32-b|e<>>32-l}e=H[o>>2]<<2;b=e+u|0;H[b>>2]=H[b>>2]|H[e+H[t>>2]>>2];j=j+1|0;if(j>>>0>2]){continue}break}}jb(w,x);H[f+8>>2]=H[f+8>>2]+1;d=d+1|0;if((i|0)!=(d|0)){continue}break}}j=H[h+28>>2];if(j){continue}break}}H[h+28>>2]=0;u=H[h+16>>2];j=H[h+12>>2];g=u-j|0;if(g>>>0>=9){while(1){oa(H[j>>2]);j=H[h+12>>2]+4|0;H[h+12>>2]=j;u=H[h+16>>2];g=u-j|0;if(g>>>0>8){continue}break}}b=170;aa:{switch((g>>>2|0)-1|0){case 1:b=341;case 0:H[h+24>>2]=b;break;default:break aa}}ba:{if((j|0)==(u|0)){break ba}while(1){oa(H[j>>2]);j=j+4|0;if((u|0)!=(j|0)){continue}break}d=H[h+16>>2];b=H[h+12>>2];if((d|0)==(b|0)){break ba}H[h+16>>2]=d+((b-d|0)+3&-4)}b=H[h+8>>2];if(b){oa(b)}ca=h+32|0;break R}}vb(f);break d;case 3:i=ub(B+8|0,3);z=B+664|0;k=H[b+8>>2];n=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;ca:{if(g>>>0>k>>>0&(d|0)>=(n|0)|(d|0)>(n|0)){break ca}d=e+H[b>>2]|0;H[i>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;if(K[i>>2]>32){break ca}n=H[b+8>>2];s=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>n>>>0&(d|0)>=(s|0)|(d|0)>(s|0)){break ca}d=e+H[b>>2]|0;e=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[i+4>>2]=e;g=H[b+20>>2];d=H[b+16>>2]+4|0;g=d>>>0<4?g+1|0:g;H[b+16>>2]=d;H[b+20>>2]=g;if(!e){break ca}H[i+8>>2]=0;if(!ta(i+16|0,b)){break ca}if(!ua(i+32|0,b)){break ca}if(!ua(i+52|0,b)){break ca}if(!ua(i+72|0,b)){break ca}A=H[i+4>>2];d=0;f=ca-32|0;ca=f;j=H[i+12>>2];H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;if(j){if(j>>>0>=1073741824){break b}b=j<<2;m=pa(b);H[f+8>>2]=m;d=b+m|0;H[f+16>>2]=d;ra(m,0,b);H[f+12>>2]=d}e=H[i+116>>2];b=H[e>>2];if(b){H[e+4>>2]=b;oa(b);j=H[i+12>>2];m=H[f+8>>2];d=H[f+12>>2]}H[e+4>>2]=d;H[e>>2]=m;H[e+8>>2]=H[f+16>>2];m=0;H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;da:{if(j){if(j>>>0>=1073741824){break b}b=j<<2;p=pa(b);H[f+8>>2]=p;m=b+p|0;H[f+16>>2]=m;ra(p,0,b);H[f+12>>2]=m}d=H[i+128>>2];b=H[d>>2];if(b){H[d+4>>2]=b;oa(b);m=H[f+12>>2];p=H[f+8>>2]}H[d+4>>2]=m;H[d>>2]=p;H[d+8>>2]=H[f+16>>2];H[f+24>>2]=0;H[f+28>>2]=0;H[f+16>>2]=0;H[f+20>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;xa(f+8|0);d=H[f+24>>2]+H[f+28>>2]|0;b=(d>>>0)/341|0;b=H[H[f+12>>2]+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;H[b+4>>2]=0;H[b+8>>2]=0;H[b>>2]=A;j=H[f+28>>2]+1|0;H[f+28>>2]=j;ea:{if(!j){break ea}y=i+92|0;s=i+16|0;while(1){k=H[f+12>>2];g=H[f+24>>2];e=j-1|0;d=g+e|0;b=(d>>>0)/341|0;b=H[k+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;o=H[b+8>>2];d=H[b+4>>2];t=H[b>>2];H[f+28>>2]=e;b=H[f+16>>2];if((((b|0)!=(k|0)?N(b-k>>2,341)-1|0:0)-(g+j|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[f+16>>2]=H[f+16>>2]-4}if(t>>>0>A>>>0){break ea}b=H[i+12>>2];j=(d|0)!=(b-1|0)?d+1|0:0;if(j>>>0>=b>>>0){break ea}b=H[i+116>>2];q=N(o,12);l=b+q|0;e=H[i>>2];r=j<<2;n=q+H[i+128>>2]|0;d=H[r+H[n>>2]>>2];fa:{if((e|0)==(d|0)){r=0;if(!t){break fa}while(1){b=H[l>>2];x=H[b+8>>2];n=H[b+4>>2];k=H[b>>2];o=H[z>>2];j=H[o+4>>2];b=H[o+8>>2];ga:{if(j>>>0>>0){H[j+8>>2]=x;H[j+4>>2]=n;H[j>>2]=k;H[o+4>>2]=j+12;break ga}q=H[o>>2];e=(j-q|0)/12|0;g=e+1|0;if(g>>>0>=357913942){break b}d=(b-q|0)/12|0;b=d<<1;g=d>>>0>=178956970?357913941:b>>>0>g>>>0?b:g;if(g){if(g>>>0>=357913942){break a}b=pa(N(g,12))}else{b=0}p=b+N(e,12)|0;H[p+8>>2]=x;H[p+4>>2]=n;H[p>>2]=k;d=p+12|0;if((j|0)!=(q|0)){while(1){p=p-12|0;j=j-12|0;H[p>>2]=H[j>>2];H[p+4>>2]=H[j+4>>2];H[p+8>>2]=H[j+8>>2];if((j|0)!=(q|0)){continue}break}}H[o+8>>2]=b+N(g,12);H[o+4>>2]=d;H[o>>2]=p;if(!q){break ga}oa(q)}H[i+8>>2]=H[i+8>>2]+1;r=r+1|0;if((t|0)!=(r|0)){continue}break}break fa}ha:{ia:{ja:{ka:{if(t>>>0<=2){b=H[i+104>>2];H[b>>2]=j;p=1;m=H[i+12>>2];if(m>>>0>1){break ka}break ha}if(K[i+8>>2]>K[i+4>>2]){break ea}k=b;b=q+12|0;Aa(k+b|0,H[l>>2],H[l+4>>2]);b=r+H[b+H[i+116>>2]>>2]|0;H[b>>2]=H[b>>2]+(1<>2]=0;pc(s,Q(t)^31,f+4|0);d=t>>>1|0;b=H[f+4>>2];if(d>>>0>>0){break ea}x=o+1|0;e=d-b|0;d=t-e|0;la:{if((d|0)==(e|0)){b=e;break la}n=H[i+84>>2];if((n|0)==H[i+76>>2]){break ja}k=H[n>>2];g=H[i+88>>2];b=g+1|0;H[i+88>>2]=b;g=k&-2147483648>>>g;ma:{if((b|0)==32){H[i+88>>2]=0;H[i+84>>2]=n+4;if(g){break ma}break ja}if(!g){break ja}}b=d}d=e;break ia}while(1){j=(m-1|0)!=(j|0)?j+1|0:0;H[b+(p<<2)>>2]=j;m=H[i+12>>2];p=p+1|0;if(m>>>0>p>>>0){continue}break}break ha}b=e}n=H[i+128>>2];k=n+q|0;g=H[k>>2];e=g+r|0;H[e>>2]=H[e>>2]+1;Aa(n+N(x,12)|0,g,H[k+4>>2]);if(d){m=H[f+28>>2]+H[f+24>>2]|0;e=H[f+16>>2];p=H[f+12>>2];if((m|0)==(((e|0)!=(p|0)?N(e-p>>2,341)-1|0:0)|0)){xa(f+8|0);m=H[f+24>>2]+H[f+28>>2]|0;p=H[f+12>>2]}e=(m>>>0)/341|0;e=H[p+(e<<2)>>2]+N(m-N(e,341)|0,12)|0;H[e+8>>2]=o;H[e+4>>2]=j;H[e>>2]=d;H[f+28>>2]=H[f+28>>2]+1}if(!b){break fa}m=H[f+28>>2]+H[f+24>>2]|0;d=H[f+16>>2];p=H[f+12>>2];if((m|0)==(((d|0)!=(p|0)?N(d-p>>2,341)-1|0:0)|0)){xa(f+8|0);m=H[f+24>>2]+H[f+28>>2]|0;p=H[f+12>>2]}d=(m>>>0)/341|0;d=H[p+(d<<2)>>2]+N(m-N(d,341)|0,12)|0;H[d+8>>2]=x;H[d+4>>2]=j;H[d>>2]=b;H[f+28>>2]=H[f+28>>2]+1;break fa}m=0;if(!t){break fa}while(1){if(H[i+12>>2]){p=H[i+36>>2];k=H[n>>2];w=H[i+92>>2];g=H[i+104>>2];j=0;while(1){o=g+(j<<2)|0;H[w+(H[o>>2]<<2)>>2]=0;e=H[i>>2];d=H[o>>2]<<2;b=H[d+k>>2];na:{if((e|0)==(b|0)){break na}q=d+w|0;u=e-b|0;r=H[i+48>>2];e=32-r|0;if((u|0)<=(e|0)){d=H[i+44>>2];if((d|0)==(p|0)){break ea}H[q>>2]=H[d>>2]<>>32-u;b=u+H[i+48>>2]|0;H[i+48>>2]=b;if((b|0)!=32){break na}H[i+48>>2]=0;H[i+44>>2]=d+4;break na}x=H[i+44>>2];b=x+4|0;if((b|0)==(p|0)){break ea}d=H[x>>2];H[i+44>>2]=b;b=u-e|0;H[i+48>>2]=b;H[q>>2]=H[x+4>>2]>>>32-b|d<>>32-u}d=H[o>>2]<<2;b=d+w|0;H[b>>2]=H[b>>2]|H[d+H[l>>2]>>2];j=j+1|0;if(j>>>0>2]){continue}break}}jb(z,y);H[i+8>>2]=H[i+8>>2]+1;m=m+1|0;if((t|0)!=(m|0)){continue}break}}j=H[f+28>>2];if(j){continue}break}}H[f+28>>2]=0;p=H[f+16>>2];j=H[f+12>>2];m=p-j|0;if(m>>>0>=9){while(1){oa(H[j>>2]);j=H[f+12>>2]+4|0;H[f+12>>2]=j;p=H[f+16>>2];m=p-j|0;if(m>>>0>8){continue}break}}b=170;oa:{switch((m>>>2|0)-1|0){case 1:b=341;case 0:H[f+24>>2]=b;break;default:break oa}}pa:{if((j|0)==(p|0)){break pa}while(1){oa(H[j>>2]);j=j+4|0;if((p|0)!=(j|0)){continue}break}d=H[f+16>>2];b=H[f+12>>2];if((d|0)==(b|0)){break pa}H[f+16>>2]=d+((b-d|0)+3&-4)}b=H[f+8>>2];if(b){oa(b)}ca=f+32|0;break da}}vb(i);break d;case 4:f=$a(B+8|0,3);w=B+664|0;k=H[b+8>>2];n=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;qa:{if(g>>>0>k>>>0&(d|0)>=(n|0)|(d|0)>(n|0)){break qa}d=e+H[b>>2]|0;H[f>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;if(K[f>>2]>32){break qa}n=H[b+8>>2];s=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>n>>>0&(d|0)>=(s|0)|(d|0)>(s|0)){break qa}d=e+H[b>>2]|0;e=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[f+4>>2]=e;g=H[b+20>>2];d=H[b+16>>2]+4|0;g=d>>>0<4?g+1|0:g;H[b+16>>2]=d;H[b+20>>2]=g;if(!e){break qa}H[f+8>>2]=0;if(!sb(f+16|0,b)){break qa}if(!ua(f+544|0,b)){break qa}if(!ua(f+564|0,b)){break qa}if(!ua(f+584|0,b)){break qa}z=H[f+4>>2];l=0;b=0;h=ca-32|0;ca=h;d=H[f+12>>2];H[h+16>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;if(d){if(d>>>0>=1073741824){break b}e=d<<2;l=pa(e);H[h+8>>2]=l;b=e+l|0;H[h+16>>2]=b;ra(l,0,e);H[h+12>>2]=b}g=H[f+628>>2];e=H[g>>2];if(e){H[g+4>>2]=e;oa(e);d=H[f+12>>2];l=H[h+8>>2];b=H[h+12>>2]}H[g+4>>2]=b;H[g>>2]=l;H[g+8>>2]=H[h+16>>2];l=0;H[h+16>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;ra:{if(d){if(d>>>0>=1073741824){break b}b=d<<2;j=pa(b);H[h+8>>2]=j;l=b+j|0;H[h+16>>2]=l;ra(j,0,b);H[h+12>>2]=l}d=H[f+640>>2];b=H[d>>2];if(b){H[d+4>>2]=b;oa(b);j=H[h+8>>2];l=H[h+12>>2]}H[d+4>>2]=l;H[d>>2]=j;H[d+8>>2]=H[h+16>>2];H[h+24>>2]=0;H[h+28>>2]=0;H[h+16>>2]=0;H[h+20>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;xa(h+8|0);d=H[h+24>>2]+H[h+28>>2]|0;b=(d>>>0)/341|0;b=H[H[h+12>>2]+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;H[b+4>>2]=0;H[b+8>>2]=0;H[b>>2]=z;d=H[h+28>>2]+1|0;H[h+28>>2]=d;sa:{if(!d){break sa}x=f+604|0;y=f+16|0;while(1){n=H[h+12>>2];k=H[h+24>>2];g=d-1|0;e=k+g|0;b=(e>>>0)/341|0;b=H[n+(b<<2)>>2]+N(e-N(b,341)|0,12)|0;p=H[b+8>>2];e=H[b+4>>2];i=H[b>>2];H[h+28>>2]=g;b=H[h+16>>2];if((((b|0)!=(n|0)?N(b-n>>2,341)-1|0:0)-(d+k|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[h+16>>2]=H[h+16>>2]-4}if(i>>>0>z>>>0){break sa}b=H[f+12>>2];j=(e|0)!=(b-1|0)?e+1|0:0;if(j>>>0>=b>>>0){break sa}o=N(p,12);A=o+H[f+640>>2]|0;t=o+H[f+628>>2]|0;g=H[f>>2];q=j<<2;e=H[q+H[A>>2]>>2];ta:{ua:{if((g|0)==(e|0)){o=0;if(!i){break ua}while(1){b=H[t>>2];r=H[b+8>>2];s=H[b+4>>2];n=H[b>>2];p=H[w>>2];d=H[p+4>>2];b=H[p+8>>2];va:{if(d>>>0>>0){H[d+8>>2]=r;H[d+4>>2]=s;H[d>>2]=n;H[p+4>>2]=d+12;break va}q=H[p>>2];g=(d-q|0)/12|0;k=g+1|0;if(k>>>0>=357913942){break b}e=(b-q|0)/12|0;b=e<<1;k=e>>>0>=178956970?357913941:b>>>0>k>>>0?b:k;if(k){if(k>>>0>=357913942){break a}b=pa(N(k,12))}else{b=0}j=b+N(g,12)|0;H[j+8>>2]=r;H[j+4>>2]=s;H[j>>2]=n;e=j+12|0;if((d|0)!=(q|0)){while(1){j=j-12|0;d=d-12|0;H[j>>2]=H[d>>2];H[j+4>>2]=H[d+4>>2];H[j+8>>2]=H[d+8>>2];if((d|0)!=(q|0)){continue}break}}H[p+8>>2]=b+N(k,12);H[p+4>>2]=e;H[p>>2]=j;if(!q){break va}oa(q)}H[f+8>>2]=H[f+8>>2]+1;o=o+1|0;if((i|0)!=(o|0)){continue}break}break ua}wa:{xa:{ya:{if(i>>>0<=2){b=H[f+616>>2];H[b>>2]=j;d=1;l=H[f+12>>2];if(l>>>0>1){break ya}break wa}if(K[f+8>>2]>K[f+4>>2]){break sa}b=H[f+628>>2];s=p+1|0;r=N(s,12);d=b+r|0;if((d|0)!=(t|0)){Aa(d,H[t>>2],H[t+4>>2]);b=H[f+628>>2]}b=q+H[b+r>>2]|0;H[b>>2]=H[b>>2]+(1<>>1|0;break xa}while(1){l=Ba(y+(d<<4)|0)|l<<1;d=d+1|0;if((b|0)!=(d|0)){continue}break}d=i>>>1|0;if(l>>>0<=d>>>0){break xa}break sa}while(1){j=(l-1|0)!=(j|0)?j+1|0:0;H[b+(d<<2)>>2]=j;d=d+1|0;l=H[f+12>>2];if(d>>>0>>0){continue}break}break wa}za:{Aa:{e=d-l|0;d=i-e|0;Ba:{if((d|0)==(e|0)){b=e;break Ba}n=H[f+596>>2];if((n|0)==H[f+588>>2]){break Aa}k=H[n>>2];g=H[f+600>>2];b=g+1|0;H[f+600>>2]=b;g=k&-2147483648>>>g;Ca:{if((b|0)==32){H[f+600>>2]=0;H[f+596>>2]=n+4;if(g){break Ca}break Aa}if(!g){break Aa}}b=d}d=e;break za}b=e}n=H[f+640>>2];k=n+o|0;g=H[k>>2];e=g+q|0;H[e>>2]=H[e>>2]+1;Aa(n+r|0,g,H[k+4>>2]);if(d){g=H[h+28>>2]+H[h+24>>2]|0;e=H[h+16>>2];l=H[h+12>>2];if((g|0)==(((e|0)!=(l|0)?N(e-l>>2,341)-1|0:0)|0)){xa(h+8|0);l=H[h+12>>2];g=H[h+24>>2]+H[h+28>>2]|0}e=(g>>>0)/341|0;e=H[(e<<2)+l>>2]+N(g-N(e,341)|0,12)|0;H[e+8>>2]=p;H[e+4>>2]=j;H[e>>2]=d;H[h+28>>2]=H[h+28>>2]+1}if(!b){break ua}l=H[h+28>>2]+H[h+24>>2]|0;e=H[h+16>>2];d=H[h+12>>2];if((l|0)==(((d|0)!=(e|0)?N(e-d>>2,341)-1|0:0)|0)){xa(h+8|0);l=H[h+24>>2]+H[h+28>>2]|0;e=H[h+12>>2]}else{e=d}d=(l>>>0)/341|0;d=H[e+(d<<2)>>2]+N(l-N(d,341)|0,12)|0;H[d+8>>2]=s;H[d+4>>2]=j;H[d>>2]=b;d=H[h+28>>2]+1|0;H[h+28>>2]=d;break ta}j=0;if(!i){break ua}while(1){if(H[f+12>>2]){p=H[f+548>>2];n=H[A>>2];u=H[f+604>>2];k=H[f+616>>2];d=0;while(1){o=k+(d<<2)|0;H[u+(H[o>>2]<<2)>>2]=0;g=H[f>>2];e=H[o>>2]<<2;b=H[e+n>>2];Da:{if((g|0)==(b|0)){break Da}q=e+u|0;l=g-b|0;r=H[f+560>>2];g=32-r|0;if((l|0)<=(g|0)){e=H[f+556>>2];if((e|0)==(p|0)){break sa}H[q>>2]=H[e>>2]<>>32-l;b=l+H[f+560>>2]|0;H[f+560>>2]=b;if((b|0)!=32){break Da}H[f+560>>2]=0;H[f+556>>2]=e+4;break Da}s=H[f+556>>2];b=s+4|0;if((b|0)==(p|0)){break sa}e=H[s>>2];H[f+556>>2]=b;b=l-g|0;H[f+560>>2]=b;H[q>>2]=H[s+4>>2]>>>32-b|e<>>32-l}e=H[o>>2]<<2;b=e+u|0;H[b>>2]=H[b>>2]|H[e+H[t>>2]>>2];d=d+1|0;if(d>>>0>2]){continue}break}}jb(w,x);H[f+8>>2]=H[f+8>>2]+1;j=j+1|0;if((i|0)!=(j|0)){continue}break}}d=H[h+28>>2]}if(d){continue}break}}H[h+28>>2]=0;j=H[h+16>>2];d=H[h+12>>2];l=j-d|0;if(l>>>0>=9){while(1){oa(H[d>>2]);d=H[h+12>>2]+4|0;H[h+12>>2]=d;j=H[h+16>>2];l=j-d|0;if(l>>>0>8){continue}break}}b=170;Ea:{switch((l>>>2|0)-1|0){case 1:b=341;case 0:H[h+24>>2]=b;break;default:break Ea}}Fa:{if((d|0)==(j|0)){break Fa}while(1){oa(H[d>>2]);d=d+4|0;if((j|0)!=(d|0)){continue}break}d=H[h+16>>2];b=H[h+12>>2];if((d|0)==(b|0)){break Fa}H[h+16>>2]=d+((b-d|0)+3&-4)}b=H[h+8>>2];if(b){oa(b)}ca=h+32|0;break ra}}ab(f);break d;case 5:f=$a(B+8|0,3);w=B+664|0;k=H[b+8>>2];n=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;Ga:{if(g>>>0>k>>>0&(d|0)>=(n|0)|(d|0)>(n|0)){break Ga}d=e+H[b>>2]|0;H[f>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;if(K[f>>2]>32){break Ga}n=H[b+8>>2];s=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>n>>>0&(d|0)>=(s|0)|(d|0)>(s|0)){break Ga}d=e+H[b>>2]|0;e=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[f+4>>2]=e;g=H[b+20>>2];d=H[b+16>>2]+4|0;g=d>>>0<4?g+1|0:g;H[b+16>>2]=d;H[b+20>>2]=g;if(!e){break Ga}H[f+8>>2]=0;if(!sb(f+16|0,b)){break Ga}if(!ua(f+544|0,b)){break Ga}if(!ua(f+564|0,b)){break Ga}if(!ua(f+584|0,b)){break Ga}z=H[f+4>>2];l=0;b=0;h=ca-32|0;ca=h;d=H[f+12>>2];H[h+16>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;if(d){if(d>>>0>=1073741824){break b}e=d<<2;l=pa(e);H[h+8>>2]=l;b=e+l|0;H[h+16>>2]=b;ra(l,0,e);H[h+12>>2]=b}g=H[f+628>>2];e=H[g>>2];if(e){H[g+4>>2]=e;oa(e);d=H[f+12>>2];l=H[h+8>>2];b=H[h+12>>2]}H[g+4>>2]=b;H[g>>2]=l;H[g+8>>2]=H[h+16>>2];l=0;H[h+16>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;Ha:{if(d){if(d>>>0>=1073741824){break b}b=d<<2;p=pa(b);H[h+8>>2]=p;l=b+p|0;H[h+16>>2]=l;ra(p,0,b);H[h+12>>2]=l}d=H[f+640>>2];b=H[d>>2];if(b){H[d+4>>2]=b;oa(b);l=H[h+12>>2];p=H[h+8>>2]}H[d+4>>2]=l;H[d>>2]=p;H[d+8>>2]=H[h+16>>2];H[h+24>>2]=0;H[h+28>>2]=0;H[h+16>>2]=0;H[h+20>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;xa(h+8|0);d=H[h+24>>2]+H[h+28>>2]|0;b=(d>>>0)/341|0;b=H[H[h+12>>2]+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;H[b+4>>2]=0;H[b+8>>2]=0;H[b>>2]=z;d=H[h+28>>2]+1|0;H[h+28>>2]=d;Ia:{if(!d){break Ia}x=f+604|0;y=f+16|0;while(1){n=H[h+12>>2];k=H[h+24>>2];g=d-1|0;e=k+g|0;b=(e>>>0)/341|0;b=H[n+(b<<2)>>2]+N(e-N(b,341)|0,12)|0;o=H[b+8>>2];e=H[b+4>>2];i=H[b>>2];H[h+28>>2]=g;b=H[h+16>>2];if((((b|0)!=(n|0)?N(b-n>>2,341)-1|0:0)-(d+k|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[h+16>>2]=H[h+16>>2]-4}if(i>>>0>z>>>0){break Ia}m=0;b=H[f+12>>2];p=(e|0)!=(b-1|0)?e+1|0:0;if(p>>>0>=b>>>0){break Ia}b=H[f+628>>2];q=N(o,12);t=b+q|0;e=H[f>>2];r=p<<2;s=q+H[f+640>>2]|0;d=H[r+H[s>>2]>>2];Ja:{Ka:{if((e|0)==(d|0)){if(!i){break Ka}while(1){b=H[t>>2];r=H[b+8>>2];s=H[b+4>>2];n=H[b>>2];o=H[w>>2];d=H[o+4>>2];b=H[o+8>>2];La:{if(d>>>0>>0){H[d+8>>2]=r;H[d+4>>2]=s;H[d>>2]=n;H[o+4>>2]=d+12;break La}q=H[o>>2];g=(d-q|0)/12|0;k=g+1|0;if(k>>>0>=357913942){break b}e=(b-q|0)/12|0;b=e<<1;k=e>>>0>=178956970?357913941:b>>>0>k>>>0?b:k;if(k){if(k>>>0>=357913942){break a}b=pa(N(k,12))}else{b=0}p=b+N(g,12)|0;H[p+8>>2]=r;H[p+4>>2]=s;H[p>>2]=n;e=p+12|0;if((d|0)!=(q|0)){while(1){p=p-12|0;d=d-12|0;H[p>>2]=H[d>>2];H[p+4>>2]=H[d+4>>2];H[p+8>>2]=H[d+8>>2];if((d|0)!=(q|0)){continue}break}}H[o+8>>2]=b+N(k,12);H[o+4>>2]=e;H[o>>2]=p;if(!q){break La}oa(q)}H[f+8>>2]=H[f+8>>2]+1;m=m+1|0;if((i|0)!=(m|0)){continue}break}break Ka}Ma:{Na:{Oa:{if(i>>>0<=2){b=H[f+616>>2];H[b>>2]=p;d=1;l=H[f+12>>2];if(l>>>0>1){break Oa}break Ma}if(K[f+8>>2]>K[f+4>>2]){break Ia}k=b;b=q+12|0;Aa(k+b|0,H[t>>2],H[t+4>>2]);b=r+H[b+H[f+628>>2]>>2]|0;H[b>>2]=H[b>>2]+(1<>>1|0;break Na}while(1){l=Ba(y+(d<<4)|0)|l<<1;d=d+1|0;if((b|0)!=(d|0)){continue}break}d=i>>>1|0;if(l>>>0<=d>>>0){break Na}break Ia}while(1){p=(l-1|0)!=(p|0)?p+1|0:0;H[b+(d<<2)>>2]=p;d=d+1|0;l=H[f+12>>2];if(d>>>0>>0){continue}break}break Ma}s=o+1|0;Pa:{Qa:{e=d-l|0;d=i-e|0;Ra:{if((d|0)==(e|0)){b=e;break Ra}n=H[f+596>>2];if((n|0)==H[f+588>>2]){break Qa}k=H[n>>2];g=H[f+600>>2];b=g+1|0;H[f+600>>2]=b;g=k&-2147483648>>>g;Sa:{if((b|0)==32){H[f+600>>2]=0;H[f+596>>2]=n+4;if(g){break Sa}break Qa}if(!g){break Qa}}b=d}d=e;break Pa}b=e}n=H[f+640>>2];k=n+q|0;g=H[k>>2];e=g+r|0;H[e>>2]=H[e>>2]+1;Aa(n+N(s,12)|0,g,H[k+4>>2]);if(d){m=H[h+28>>2]+H[h+24>>2]|0;e=H[h+16>>2];l=H[h+12>>2];if((m|0)==(((e|0)!=(l|0)?N(e-l>>2,341)-1|0:0)|0)){xa(h+8|0);m=H[h+24>>2]+H[h+28>>2]|0;l=H[h+12>>2]}e=(m>>>0)/341|0;e=H[l+(e<<2)>>2]+N(m-N(e,341)|0,12)|0;H[e+8>>2]=o;H[e+4>>2]=p;H[e>>2]=d;H[h+28>>2]=H[h+28>>2]+1}if(!b){break Ka}l=H[h+28>>2]+H[h+24>>2]|0;e=H[h+16>>2];d=H[h+12>>2];if((l|0)==(((d|0)!=(e|0)?N(e-d>>2,341)-1|0:0)|0)){xa(h+8|0);l=H[h+24>>2]+H[h+28>>2]|0;e=H[h+12>>2]}else{e=d}d=(l>>>0)/341|0;d=H[e+(d<<2)>>2]+N(l-N(d,341)|0,12)|0;H[d+8>>2]=s;H[d+4>>2]=p;H[d>>2]=b;d=H[h+28>>2]+1|0;H[h+28>>2]=d;break Ja}if(!i){break Ka}while(1){if(H[f+12>>2]){A=H[f+548>>2];n=H[s>>2];u=H[f+604>>2];k=H[f+616>>2];d=0;while(1){p=k+(d<<2)|0;H[u+(H[p>>2]<<2)>>2]=0;g=H[f>>2];e=H[p>>2]<<2;b=H[e+n>>2];Ta:{if((g|0)==(b|0)){break Ta}o=e+u|0;l=g-b|0;q=H[f+560>>2];g=32-q|0;if((l|0)<=(g|0)){e=H[f+556>>2];if((e|0)==(A|0)){break Ia}H[o>>2]=H[e>>2]<>>32-l;b=l+H[f+560>>2]|0;H[f+560>>2]=b;if((b|0)!=32){break Ta}H[f+560>>2]=0;H[f+556>>2]=e+4;break Ta}r=H[f+556>>2];b=r+4|0;if((b|0)==(A|0)){break Ia}e=H[r>>2];H[f+556>>2]=b;b=l-g|0;H[f+560>>2]=b;H[o>>2]=H[r+4>>2]>>>32-b|e<>>32-l}e=H[p>>2]<<2;b=e+u|0;H[b>>2]=H[b>>2]|H[e+H[t>>2]>>2];d=d+1|0;if(d>>>0>2]){continue}break}}jb(w,x);H[f+8>>2]=H[f+8>>2]+1;m=m+1|0;if((i|0)!=(m|0)){continue}break}}d=H[h+28>>2]}if(d){continue}break}}H[h+28>>2]=0;p=H[h+16>>2];d=H[h+12>>2];l=p-d|0;if(l>>>0>=9){while(1){oa(H[d>>2]);d=H[h+12>>2]+4|0;H[h+12>>2]=d;p=H[h+16>>2];l=p-d|0;if(l>>>0>8){continue}break}}b=170;Ua:{switch((l>>>2|0)-1|0){case 1:b=341;case 0:H[h+24>>2]=b;break;default:break Ua}}Va:{if((d|0)==(p|0)){break Va}while(1){oa(H[d>>2]);d=d+4|0;if((p|0)!=(d|0)){continue}break}d=H[h+16>>2];b=H[h+12>>2];if((d|0)==(b|0)){break Va}H[h+16>>2]=d+((b-d|0)+3&-4)}b=H[h+8>>2];if(b){oa(b)}ca=h+32|0;break Ha}}ab(f);break d;case 6:break f;default:break c}}f=$a(B+8|0,3);w=B+664|0;k=H[b+8>>2];n=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;Wa:{if(g>>>0>k>>>0&(d|0)>=(n|0)|(d|0)>(n|0)){break Wa}d=e+H[b>>2]|0;H[f>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[b+20>>2];k=d;g=H[b+16>>2];e=g+4|0;d=e>>>0<4?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;if(K[f>>2]>32){break Wa}n=H[b+8>>2];s=H[b+12>>2];d=k;g=g+8|0;d=g>>>0<8?d+1|0:d;if(g>>>0>n>>>0&(d|0)>=(s|0)|(d|0)>(s|0)){break Wa}d=e+H[b>>2]|0;e=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[f+4>>2]=e;g=H[b+20>>2];d=H[b+16>>2]+4|0;g=d>>>0<4?g+1|0:g;H[b+16>>2]=d;H[b+20>>2]=g;if(!e){break Wa}H[f+8>>2]=0;if(!sb(f+16|0,b)){break Wa}if(!ua(f+544|0,b)){break Wa}if(!ua(f+564|0,b)){break Wa}if(!ua(f+584|0,b)){break Wa}z=H[f+4>>2];l=0;b=0;h=ca-32|0;ca=h;d=H[f+12>>2];H[h+16>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;if(d){if(d>>>0>=1073741824){break b}e=d<<2;l=pa(e);H[h+8>>2]=l;b=e+l|0;H[h+16>>2]=b;ra(l,0,e);H[h+12>>2]=b}g=H[f+628>>2];e=H[g>>2];if(e){H[g+4>>2]=e;oa(e);d=H[f+12>>2];l=H[h+8>>2];b=H[h+12>>2]}H[g+4>>2]=b;H[g>>2]=l;H[g+8>>2]=H[h+16>>2];l=0;H[h+16>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;Xa:{if(d){if(d>>>0>=1073741824){break b}b=d<<2;j=pa(b);H[h+8>>2]=j;l=b+j|0;H[h+16>>2]=l;ra(j,0,b);H[h+12>>2]=l}d=H[f+640>>2];b=H[d>>2];if(b){H[d+4>>2]=b;oa(b);j=H[h+8>>2];l=H[h+12>>2]}H[d+4>>2]=l;H[d>>2]=j;H[d+8>>2]=H[h+16>>2];H[h+24>>2]=0;H[h+28>>2]=0;H[h+16>>2]=0;H[h+20>>2]=0;H[h+8>>2]=0;H[h+12>>2]=0;xa(h+8|0);d=H[h+24>>2]+H[h+28>>2]|0;b=(d>>>0)/341|0;b=H[H[h+12>>2]+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;H[b+4>>2]=0;H[b+8>>2]=0;H[b>>2]=z;d=H[h+28>>2]+1|0;H[h+28>>2]=d;Ya:{if(!d){break Ya}x=f+604|0;y=f+16|0;while(1){n=H[h+12>>2];k=H[h+24>>2];g=d-1|0;e=k+g|0;b=(e>>>0)/341|0;b=H[n+(b<<2)>>2]+N(e-N(b,341)|0,12)|0;p=H[b+8>>2];i=H[b>>2];H[h+28>>2]=g;b=H[h+16>>2];if((((b|0)!=(n|0)?N(b-n>>2,341)-1|0:0)-(d+k|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[h+16>>2]=H[h+16>>2]-4}if(i>>>0>z>>>0){break Ya}b=H[f+628>>2];o=N(p,12);A=o+H[f+640>>2]|0;j=Vd(f,i,A);if(j>>>0>=K[f+12>>2]){break Ya}t=b+o|0;g=H[f>>2];q=j<<2;e=H[q+H[A>>2]>>2];Za:{_a:{if((g|0)==(e|0)){o=0;if(!i){break _a}while(1){b=H[t>>2];r=H[b+8>>2];s=H[b+4>>2];n=H[b>>2];p=H[w>>2];d=H[p+4>>2];b=H[p+8>>2];$a:{if(d>>>0>>0){H[d+8>>2]=r;H[d+4>>2]=s;H[d>>2]=n;H[p+4>>2]=d+12;break $a}q=H[p>>2];g=(d-q|0)/12|0;k=g+1|0;if(k>>>0>=357913942){break b}e=(b-q|0)/12|0;b=e<<1;k=e>>>0>=178956970?357913941:b>>>0>k>>>0?b:k;if(k){if(k>>>0>=357913942){break a}b=pa(N(k,12))}else{b=0}j=b+N(g,12)|0;H[j+8>>2]=r;H[j+4>>2]=s;H[j>>2]=n;e=j+12|0;if((d|0)!=(q|0)){while(1){j=j-12|0;d=d-12|0;H[j>>2]=H[d>>2];H[j+4>>2]=H[d+4>>2];H[j+8>>2]=H[d+8>>2];if((d|0)!=(q|0)){continue}break}}H[p+8>>2]=b+N(k,12);H[p+4>>2]=e;H[p>>2]=j;if(!q){break $a}oa(q)}H[f+8>>2]=H[f+8>>2]+1;o=o+1|0;if((i|0)!=(o|0)){continue}break}break _a}ab:{bb:{cb:{if(i>>>0<=2){b=H[f+616>>2];H[b>>2]=j;d=1;l=H[f+12>>2];if(l>>>0>1){break cb}break ab}if(K[f+8>>2]>K[f+4>>2]){break Ya}b=H[f+628>>2];s=p+1|0;r=N(s,12);d=b+r|0;if((d|0)!=(t|0)){Aa(d,H[t>>2],H[t+4>>2]);b=H[f+628>>2]}b=q+H[b+r>>2]|0;H[b>>2]=H[b>>2]+(1<>>1|0;break bb}while(1){l=Ba(y+(d<<4)|0)|l<<1;d=d+1|0;if((b|0)!=(d|0)){continue}break}d=i>>>1|0;if(l>>>0<=d>>>0){break bb}break Ya}while(1){j=(l-1|0)!=(j|0)?j+1|0:0;H[b+(d<<2)>>2]=j;d=d+1|0;l=H[f+12>>2];if(d>>>0>>0){continue}break}break ab}db:{eb:{e=d-l|0;d=i-e|0;fb:{if((d|0)==(e|0)){b=e;break fb}n=H[f+596>>2];if((n|0)==H[f+588>>2]){break eb}k=H[n>>2];g=H[f+600>>2];b=g+1|0;H[f+600>>2]=b;g=k&-2147483648>>>g;gb:{if((b|0)==32){H[f+600>>2]=0;H[f+596>>2]=n+4;if(g){break gb}break eb}if(!g){break eb}}b=d}d=e;break db}b=e}n=H[f+640>>2];k=n+o|0;g=H[k>>2];e=g+q|0;H[e>>2]=H[e>>2]+1;Aa(n+r|0,g,H[k+4>>2]);if(d){g=H[h+28>>2]+H[h+24>>2]|0;e=H[h+16>>2];l=H[h+12>>2];if((g|0)==(((e|0)!=(l|0)?N(e-l>>2,341)-1|0:0)|0)){xa(h+8|0);l=H[h+12>>2];g=H[h+24>>2]+H[h+28>>2]|0}e=(g>>>0)/341|0;e=H[(e<<2)+l>>2]+N(g-N(e,341)|0,12)|0;H[e+8>>2]=p;H[e+4>>2]=j;H[e>>2]=d;H[h+28>>2]=H[h+28>>2]+1}if(!b){break _a}l=H[h+28>>2]+H[h+24>>2]|0;e=H[h+16>>2];d=H[h+12>>2];if((l|0)==(((d|0)!=(e|0)?N(e-d>>2,341)-1|0:0)|0)){xa(h+8|0);l=H[h+24>>2]+H[h+28>>2]|0;e=H[h+12>>2]}else{e=d}d=(l>>>0)/341|0;d=H[e+(d<<2)>>2]+N(l-N(d,341)|0,12)|0;H[d+8>>2]=s;H[d+4>>2]=j;H[d>>2]=b;d=H[h+28>>2]+1|0;H[h+28>>2]=d;break Za}j=0;if(!i){break _a}while(1){if(H[f+12>>2]){p=H[f+548>>2];n=H[A>>2];u=H[f+604>>2];k=H[f+616>>2];d=0;while(1){o=k+(d<<2)|0;H[u+(H[o>>2]<<2)>>2]=0;g=H[f>>2];e=H[o>>2]<<2;b=H[e+n>>2];hb:{if((g|0)==(b|0)){break hb}q=e+u|0;l=g-b|0;r=H[f+560>>2];g=32-r|0;if((l|0)<=(g|0)){e=H[f+556>>2];if((e|0)==(p|0)){break Ya}H[q>>2]=H[e>>2]<>>32-l;b=l+H[f+560>>2]|0;H[f+560>>2]=b;if((b|0)!=32){break hb}H[f+560>>2]=0;H[f+556>>2]=e+4;break hb}s=H[f+556>>2];b=s+4|0;if((b|0)==(p|0)){break Ya}e=H[s>>2];H[f+556>>2]=b;b=l-g|0;H[f+560>>2]=b;H[q>>2]=H[s+4>>2]>>>32-b|e<>>32-l}e=H[o>>2]<<2;b=e+u|0;H[b>>2]=H[b>>2]|H[e+H[t>>2]>>2];d=d+1|0;if(d>>>0>2]){continue}break}}jb(w,x);H[f+8>>2]=H[f+8>>2]+1;j=j+1|0;if((i|0)!=(j|0)){continue}break}}d=H[h+28>>2]}if(d){continue}break}}H[h+28>>2]=0;j=H[h+16>>2];d=H[h+12>>2];l=j-d|0;if(l>>>0>=9){while(1){oa(H[d>>2]);d=H[h+12>>2]+4|0;H[h+12>>2]=d;j=H[h+16>>2];l=j-d|0;if(l>>>0>8){continue}break}}b=170;ib:{switch((l>>>2|0)-1|0){case 1:b=341;case 0:H[h+24>>2]=b;break;default:break ib}}jb:{if((d|0)==(j|0)){break jb}while(1){oa(H[d>>2]);d=d+4|0;if((j|0)!=(d|0)){continue}break}d=H[h+16>>2];b=H[h+12>>2];if((d|0)==(b|0)){break jb}H[h+16>>2]=d+((b-d|0)+3&-4)}b=H[h+8>>2];if(b){oa(b)}ca=h+32|0;break Xa}}ab(f)}n=H[a+12>>2]==((H[c+4>>2]-H[c>>2]|0)/12|0)}ca=B+672|0;return n}sa();v()}wa();v()}function kd(a,b,c,d){var 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;if(!a){return 1}e=H[c+20>>2];g=H[c+12>>2];i=H[c+16>>2];a:{if((e|0)>=(g|0)&i>>>0>=K[c+8>>2]|(e|0)>(g|0)){break a}g=I[i+H[c>>2]|0];i=i+1|0;e=i?e:e+1|0;H[c+16>>2]=i;H[c+20>>2]=e;b:{switch(g|0){case 0:e=a;f=b;i=d;a=0;d=0;m=ca+-64|0;ca=m;H[m+56>>2]=0;H[m+48>>2]=0;H[m+52>>2]=0;H[m+40>>2]=0;H[m+44>>2]=0;H[m+32>>2]=0;H[m+36>>2]=0;H[m+24>>2]=0;H[m+28>>2]=0;H[m+16>>2]=0;H[m+20>>2]=0;H[m+8>>2]=0;H[m+12>>2]=0;c:{if(!Ne(m+8|0,c)){break c}if(!Me(m+8|0,c)|(H[m+20>>2]?0:e)){break c}Db(c,0,0);if(e){s=f<<2;t=H[m+36>>2];w=H[m+48>>2];x=H[m+24>>2];l=H[m+56>>2];j=H[m+52>>2];while(1){d:{if(l>>>0>16383){break d}while(1){if((j|0)<=0){break d}j=j-1|0;H[m+52>>2]=j;l=I[j+w|0]|l<<8;H[m+56>>2]=l;if(l>>>0<16384){continue}break}}a=l&4095;r=H[(a<<2)+x>>2];b=(r<<3)+t|0;l=(N(H[b>>2],l>>>12|0)+a|0)-H[b+4>>2]|0;H[m+56>>2]=l;if((f|0)>0){a=0;if(!I[c+36|0]|r>>>0>32){break c}g=d+f|0;e:{if(!r){ra(i+(d<<2)|0,0,s);break e}y=r&-2;z=r&1;b=H[c+32>>2];h=H[c+28>>2];n=H[c+24>>2];while(1){k=0;a=b;o=0;q=0;if((r|0)!=1){while(1){p=n+(a>>>3|0)|0;f:{if(p>>>0>=h>>>0){p=0;break f}p=I[p|0];b=a+1|0;H[c+32>>2]=b;p=p>>>(a&7)&1;a=b}p=p<>>3|0)|0;if(u>>>0>>0){o=I[u|0];b=a+1|0;H[c+32>>2]=b;o=o>>>(a&7)&1;a=b}u=k|1;k=k+2|0;o=p|o<>>3|0)|0;if(p>>>0>>0){p=I[p|0];b=a+1|0;H[c+32>>2]=b;a=p>>>(a&7)&1}else{a=0}o=a<>2]=o;d=d+1|0;if((g|0)!=(d|0)){continue}break}}d=g}v=f+v|0;if(e>>>0>v>>>0){continue}break}}F[c+36|0]=0;b=H[c+20>>2];e=0;d=H[c+32>>2]+7|0;e=d>>>0<7?1:e;d=(e&7)<<29|d>>>3;a=d+H[c+16>>2]|0;e=(e>>>3|0)+b|0;H[c+16>>2]=a;H[c+20>>2]=a>>>0>>0?e+1|0:e;a=1}b=H[m+36>>2];if(b){H[m+40>>2]=b;oa(b)}b=H[m+24>>2];if(b){H[m+28>>2]=b;oa(b)}b=H[m+8>>2];if(b){H[m+12>>2]=b;oa(b)}ca=m- -64|0;return a;case 1:break b;default:break a}}b=0;e=H[c+20>>2];g=H[c+12>>2];i=H[c+16>>2];g:{if((e|0)>=(g|0)&i>>>0>=K[c+8>>2]|(e|0)>(g|0)){break g}g=I[i+H[c>>2]|0];i=i+1|0;e=i?e:e+1|0;H[c+16>>2]=i;H[c+20>>2]=e;h:{switch(g-1|0){case 8:g=a;r=d;i=ca+-64|0;ca=i;H[i+56>>2]=0;H[i+48>>2]=0;H[i+52>>2]=0;H[i+40>>2]=0;H[i+44>>2]=0;H[i+32>>2]=0;H[i+36>>2]=0;H[i+24>>2]=0;H[i+28>>2]=0;H[i+16>>2]=0;H[i+20>>2]=0;H[i+8>>2]=0;H[i+12>>2]=0;j=i+8|0;a=J[c+38>>1];i:{j:{if(!a){break j}k:{if(a>>>0<=511){d=H[c+8>>2];b=H[c+12>>2];e=H[c+20>>2];a=H[c+16>>2];f=a+4|0;e=f>>>0<4?e+1|0:e;if(d>>>0>>0&(b|0)<=(e|0)|(b|0)<(e|0)){break j}a=a+H[c>>2]|0;h=I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24);H[j+12>>2]=h;e=H[c+20>>2];f=H[c+16>>2]+4|0;e=f>>>0<4?e+1|0:e;H[c+16>>2]=f;H[c+20>>2]=e;break k}if(!hb(1,j+12|0,c)){break j}f=H[c+16>>2];e=H[c+20>>2];h=H[j+12>>2]}a=H[c+8>>2];d=a-f|0;a=H[c+12>>2]-((a>>>0>>0)+e|0)|0;if(d>>>0>>6>>>0&(a|0)<=0|(a|0)<0){break j}b=H[j>>2];a=H[j+4>>2]-b>>2;l:{if(a>>>0>>0){ya(j,h-a|0);h=H[j+12>>2];break l}if(a>>>0<=h>>>0){break l}H[j+4>>2]=b+(h<<2)}d=1;if(!h){break i}f=H[c+16>>2];e=H[c+20>>2];s=H[j>>2];m=H[c+8>>2];n=H[c+12>>2];b=0;while(1){d=0;if((e|0)>=(n|0)&f>>>0>=m>>>0|(e|0)>(n|0)){break i}d=H[c>>2];p=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=p>>>2|0;l=0;m:{n:{o:{p:{t=p&3;switch(t|0){case 0:break n;case 3:break p;default:break o}}a=a+b|0;d=0;if(a>>>0>=h>>>0){break i}ra(s+(b<<2)|0,0,(p&252)+4|0);b=a;break m}while(1){if((f|0)==(m|0)&(e|0)==(n|0)){break j}h=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=h<<(l<<3|6)|a;l=l+1|0;if((t|0)!=(l|0)){continue}break}}H[s+(b<<2)>>2]=a}b=b+1|0;h=H[j+12>>2];if(b>>>0>>0){continue}break}a=j+16|0;n=H[j>>2];d=H[j+16>>2];b=H[j+20>>2]-d|0;q:{if(b>>>0<=32767){ya(a,8192-(b>>>2|0)|0);break q}if((b|0)==32768){break q}H[j+20>>2]=d+32768}d=j+28|0;b=H[d>>2];f=H[j+32>>2]-b>>3;r:{if(f>>>0>>0){ob(d,h-f|0);b=H[d>>2];break r}if(f>>>0>h>>>0){H[j+32>>2]=(h<<3)+b}if(!h){break j}}m=H[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;j=H[e>>2];l=(f<<3)+b|0;a=d;H[l+4>>2]=a;H[l>>2]=j;e=H[e>>2];d=e+a|0;if(d>>>0>8192){break j}s:{if(a>>>0>=d>>>0){break s}l=0;j=e&7;if(j){while(1){H[m+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((j|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break s}while(1){e=m+(a<<2)|0;H[e>>2]=f;H[e+28>>2]=f;H[e+24>>2]=f;H[e+20>>2]=f;H[e+16>>2]=f;H[e+12>>2]=f;H[e+8>>2]=f;H[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((h|0)!=(f|0)){continue}break}k=(d|0)==8192}d=k}t:{if(!d|(H[i+20>>2]?0:g)){break t}d=0;m=ca-16|0;ca=m;u:{v:{if(J[c+38>>1]<=511){b=H[c+8>>2];a=H[c+12>>2];h=a;e=H[c+20>>2];k=H[c+16>>2];f=k+8|0;e=f>>>0<8?e+1|0:e;if(b>>>0>>0&(a|0)<=(e|0)|(a|0)<(e|0)){break u}k=k+H[c>>2]|0;a=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);k=I[k+4|0]|I[k+5|0]<<8|(I[k+6|0]<<16|I[k+7|0]<<24);H[c+16>>2]=f;H[c+20>>2]=e;break v}if(!gb(1,m+8|0,c)){break u}f=H[c+16>>2];e=H[c+20>>2];b=H[c+8>>2];h=H[c+12>>2];a=H[m+8>>2];k=H[m+12>>2]}j=b-f|0;b=h-((b>>>0>>0)+e|0)|0;if((b|0)==(k|0)&a>>>0>j>>>0|b>>>0>>0){break u}e=e+k|0;b=a+f|0;e=b>>>0>>0?e+1|0:e;H[c+16>>2]=b;H[c+20>>2]=e;if((a|0)<=0){break u}b=H[c>>2]+f|0;H[i+48>>2]=b;c=a-1|0;f=c+b|0;e=I[f|0];w:{if(e>>>0<=63){H[i+52>>2]=c;a=I[f|0]&63;break w}x:{switch((e>>>6|0)-1|0){case 0:if(a>>>0<2){break u}a=a-2|0;H[i+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8&16128|I[a|0];break w;case 1:if(a>>>0<3){break u}a=a-3|0;H[i+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8|I[a+2|0]<<16&4128768|I[a|0];break w;default:break x}}a=a-4|0;H[i+52>>2]=a;a=a+b|0;a=(I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24))&1073741823}H[i+56>>2]=a+32768;d=a>>>0<8355840}ca=m+16|0;if(!d){break t}if(!g){o=1;break t}b=H[i+52>>2];a=H[i+56>>2];c=H[i+36>>2];d=H[i+48>>2];f=H[i+24>>2];while(1){y:{if(a>>>0>32767){break y}while(1){if((b|0)<=0){break y}b=b-1|0;H[i+52>>2]=b;a=I[b+d|0]|a<<8;H[i+56>>2]=a;if(a>>>0<32768){continue}break}}e=a&8191;o=H[f+(e<<2)>>2];k=c+(o<<3)|0;a=(N(H[k>>2],a>>>13|0)+e|0)-H[k+4>>2]|0;H[i+56>>2]=a;H[r+(q<<2)>>2]=o;o=1;q=q+1|0;if((g|0)!=(q|0)){continue}break}}a=H[i+36>>2];if(a){H[i+40>>2]=a;oa(a)}a=H[i+24>>2];if(a){H[i+28>>2]=a;oa(a)}a=H[i+8>>2];if(a){H[i+12>>2]=a;oa(a)}ca=i- -64|0;b=o;break g;case 9:m=a;r=d;g=ca+-64|0;ca=g;H[g+56>>2]=0;H[g+48>>2]=0;H[g+52>>2]=0;H[g+40>>2]=0;H[g+44>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;H[g+24>>2]=0;H[g+28>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;j=g+8|0;a=J[c+38>>1];z:{A:{if(!a){break A}B:{if(a>>>0<=511){d=H[c+8>>2];b=H[c+12>>2];e=H[c+20>>2];a=H[c+16>>2];f=a+4|0;e=f>>>0<4?e+1|0:e;if(d>>>0>>0&(b|0)<=(e|0)|(b|0)<(e|0)){break A}a=a+H[c>>2]|0;h=I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24);H[j+12>>2]=h;e=H[c+20>>2];f=H[c+16>>2]+4|0;e=f>>>0<4?e+1|0:e;H[c+16>>2]=f;H[c+20>>2]=e;break B}if(!hb(1,j+12|0,c)){break A}f=H[c+16>>2];e=H[c+20>>2];h=H[j+12>>2]}a=H[c+8>>2];d=a-f|0;a=H[c+12>>2]-((a>>>0>>0)+e|0)|0;if(d>>>0>>6>>>0&(a|0)<=0|(a|0)<0){break A}b=H[j>>2];a=H[j+4>>2]-b>>2;C:{if(a>>>0>>0){ya(j,h-a|0);h=H[j+12>>2];break C}if(a>>>0<=h>>>0){break C}H[j+4>>2]=b+(h<<2)}d=1;if(!h){break z}f=H[c+16>>2];e=H[c+20>>2];s=H[j>>2];i=H[c+8>>2];n=H[c+12>>2];b=0;while(1){d=0;if((e|0)>=(n|0)&f>>>0>=i>>>0|(e|0)>(n|0)){break z}d=H[c>>2];p=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=p>>>2|0;l=0;D:{E:{F:{G:{t=p&3;switch(t|0){case 0:break E;case 3:break G;default:break F}}a=a+b|0;d=0;if(a>>>0>=h>>>0){break z}ra(s+(b<<2)|0,0,(p&252)+4|0);b=a;break D}while(1){if((f|0)==(i|0)&(e|0)==(n|0)){break A}h=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=h<<(l<<3|6)|a;l=l+1|0;if((t|0)!=(l|0)){continue}break}}H[s+(b<<2)>>2]=a}b=b+1|0;h=H[j+12>>2];if(b>>>0>>0){continue}break}a=j+16|0;n=H[j>>2];d=H[j+16>>2];b=H[j+20>>2]-d|0;H:{if(b>>>0<=131071){ya(a,32768-(b>>>2|0)|0);break H}if((b|0)==131072){break H}H[j+20>>2]=d+131072}d=j+28|0;b=H[d>>2];f=H[j+32>>2]-b>>3;I:{if(f>>>0>>0){ob(d,h-f|0);b=H[d>>2];break I}if(f>>>0>h>>>0){H[j+32>>2]=(h<<3)+b}if(!h){break A}}i=H[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;j=H[e>>2];l=(f<<3)+b|0;a=d;H[l+4>>2]=a;H[l>>2]=j;e=H[e>>2];d=e+a|0;if(d>>>0>32768){break A}J:{if(a>>>0>=d>>>0){break J}l=0;j=e&7;if(j){while(1){H[i+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((j|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break J}while(1){e=i+(a<<2)|0;H[e>>2]=f;H[e+28>>2]=f;H[e+24>>2]=f;H[e+20>>2]=f;H[e+16>>2]=f;H[e+12>>2]=f;H[e+8>>2]=f;H[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((h|0)!=(f|0)){continue}break}k=(d|0)==32768}d=k}K:{if(!d|(H[g+20>>2]?0:m)){break K}d=0;j=ca-16|0;ca=j;L:{M:{if(J[c+38>>1]<=511){b=H[c+8>>2];a=H[c+12>>2];h=a;e=H[c+20>>2];k=H[c+16>>2];f=k+8|0;e=f>>>0<8?e+1|0:e;if(b>>>0>>0&(a|0)<=(e|0)|(a|0)<(e|0)){break L}k=k+H[c>>2]|0;a=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);k=I[k+4|0]|I[k+5|0]<<8|(I[k+6|0]<<16|I[k+7|0]<<24);H[c+16>>2]=f;H[c+20>>2]=e;break M}if(!gb(1,j+8|0,c)){break L}f=H[c+16>>2];e=H[c+20>>2];b=H[c+8>>2];h=H[c+12>>2];a=H[j+8>>2];k=H[j+12>>2]}i=b-f|0;b=h-((b>>>0>>0)+e|0)|0;if((b|0)==(k|0)&a>>>0>i>>>0|b>>>0>>0){break L}i=e+k|0;b=a+f|0;i=b>>>0>>0?i+1|0:i;H[c+16>>2]=b;H[c+20>>2]=i;if((a|0)<=0){break L}b=H[c>>2]+f|0;H[g+48>>2]=b;c=a-1|0;f=c+b|0;e=I[f|0];N:{if(e>>>0<=63){H[g+52>>2]=c;a=I[f|0]&63;break N}O:{switch((e>>>6|0)-1|0){case 0:if(a>>>0<2){break L}a=a-2|0;H[g+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8&16128|I[a|0];break N;case 1:if(a>>>0<3){break L}a=a-3|0;H[g+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8|I[a+2|0]<<16&4128768|I[a|0];break N;default:break O}}a=a-4|0;H[g+52>>2]=a;a=a+b|0;a=(I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24))&1073741823}H[g+56>>2]=a+131072;d=a>>>0<33423360}ca=j+16|0;if(!d){break K}if(!m){o=1;break K}b=H[g+52>>2];a=H[g+56>>2];c=H[g+36>>2];d=H[g+48>>2];f=H[g+24>>2];while(1){P:{if(a>>>0>131071){break P}while(1){if((b|0)<=0){break P}b=b-1|0;H[g+52>>2]=b;a=I[b+d|0]|a<<8;H[g+56>>2]=a;if(a>>>0<131072){continue}break}}e=a&32767;o=H[f+(e<<2)>>2];k=c+(o<<3)|0;a=(N(H[k>>2],a>>>15|0)+e|0)-H[k+4>>2]|0;H[g+56>>2]=a;H[r+(q<<2)>>2]=o;o=1;q=q+1|0;if((m|0)!=(q|0)){continue}break}}a=H[g+36>>2];if(a){H[g+40>>2]=a;oa(a)}a=H[g+24>>2];if(a){H[g+28>>2]=a;oa(a)}a=H[g+8>>2];if(a){H[g+12>>2]=a;oa(a)}ca=g- -64|0;b=o;break g;case 10:m=a;j=d;g=ca+-64|0;ca=g;H[g+56>>2]=0;H[g+48>>2]=0;H[g+52>>2]=0;H[g+40>>2]=0;H[g+44>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;H[g+24>>2]=0;H[g+28>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;n=g+8|0;a=J[c+38>>1];Q:{R:{if(!a){break R}S:{if(a>>>0<=511){d=H[c+8>>2];b=H[c+12>>2];e=H[c+20>>2];a=H[c+16>>2];f=a+4|0;e=f>>>0<4?e+1|0:e;if(d>>>0>>0&(b|0)<=(e|0)|(b|0)<(e|0)){break R}a=a+H[c>>2]|0;h=I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24);H[n+12>>2]=h;e=H[c+20>>2];f=H[c+16>>2]+4|0;e=f>>>0<4?e+1|0:e;H[c+16>>2]=f;H[c+20>>2]=e;break S}if(!hb(1,n+12|0,c)){break R}f=H[c+16>>2];e=H[c+20>>2];h=H[n+12>>2]}a=H[c+8>>2];d=a-f|0;a=H[c+12>>2]-((a>>>0>>0)+e|0)|0;if(d>>>0>>6>>>0&(a|0)<=0|(a|0)<0){break R}b=H[n>>2];a=H[n+4>>2]-b>>2;T:{if(a>>>0>>0){ya(n,h-a|0);h=H[n+12>>2];break T}if(a>>>0<=h>>>0){break T}H[n+4>>2]=b+(h<<2)}d=1;if(!h){break Q}f=H[c+16>>2];e=H[c+20>>2];t=H[n>>2];r=H[c+8>>2];p=H[c+12>>2];b=0;while(1){d=0;if((e|0)>=(p|0)&f>>>0>=r>>>0|(e|0)>(p|0)){break Q}d=H[c>>2];s=I[d+f|0];f=f+1|0;i=f?e:e+1|0;H[c+16>>2]=f;e=i;H[c+20>>2]=e;a=s>>>2|0;l=0;U:{V:{W:{X:{i=s&3;switch(i|0){case 0:break V;case 3:break X;default:break W}}a=a+b|0;d=0;if(a>>>0>=h>>>0){break Q}ra(t+(b<<2)|0,0,(s&252)+4|0);b=a;break U}while(1){if((f|0)==(r|0)&(e|0)==(p|0)){break R}h=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=h<<(l<<3|6)|a;l=l+1|0;if((i|0)!=(l|0)){continue}break}}H[t+(b<<2)>>2]=a}b=b+1|0;h=H[n+12>>2];if(b>>>0>>0){continue}break}a=n+16|0;r=H[n>>2];d=H[n+16>>2];b=H[n+20>>2]-d|0;Y:{if(b>>>0<=262143){ya(a,65536-(b>>>2|0)|0);break Y}if((b|0)==262144){break Y}H[n+20>>2]=d+262144}d=n+28|0;b=H[d>>2];f=H[n+32>>2]-b>>3;Z:{if(f>>>0>>0){ob(d,h-f|0);b=H[d>>2];break Z}if(f>>>0>h>>>0){H[n+32>>2]=(h<<3)+b}if(!h){break R}}i=H[a>>2];f=0;d=0;while(1){e=r+(f<<2)|0;l=H[e>>2];n=(f<<3)+b|0;a=d;H[n+4>>2]=a;H[n>>2]=l;e=H[e>>2];d=e+a|0;if(d>>>0>65536){break R}_:{if(a>>>0>=d>>>0){break _}l=0;n=e&7;if(n){while(1){H[i+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((n|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break _}while(1){e=i+(a<<2)|0;H[e>>2]=f;H[e+28>>2]=f;H[e+24>>2]=f;H[e+20>>2]=f;H[e+16>>2]=f;H[e+12>>2]=f;H[e+8>>2]=f;H[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((h|0)!=(f|0)){continue}break}k=(d|0)==65536}d=k}$:{if(!d|(H[g+20>>2]?0:m)){break $}d=0;i=ca-16|0;ca=i;aa:{ba:{if(J[c+38>>1]<=511){b=H[c+8>>2];a=H[c+12>>2];h=a;e=H[c+20>>2];k=H[c+16>>2];f=k+8|0;e=f>>>0<8?e+1|0:e;if(b>>>0>>0&(a|0)<=(e|0)|(a|0)<(e|0)){break aa}k=k+H[c>>2]|0;a=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);k=I[k+4|0]|I[k+5|0]<<8|(I[k+6|0]<<16|I[k+7|0]<<24);H[c+16>>2]=f;H[c+20>>2]=e;break ba}if(!gb(1,i+8|0,c)){break aa}f=H[c+16>>2];e=H[c+20>>2];b=H[c+8>>2];h=H[c+12>>2];a=H[i+8>>2];k=H[i+12>>2]}r=b-f|0;b=h-((b>>>0>>0)+e|0)|0;if((b|0)==(k|0)&a>>>0>r>>>0|b>>>0>>0){break aa}e=e+k|0;b=a+f|0;e=b>>>0>>0?e+1|0:e;H[c+16>>2]=b;H[c+20>>2]=e;if((a|0)<=0){break aa}b=H[c>>2]+f|0;H[g+48>>2]=b;c=a-1|0;f=c+b|0;e=I[f|0];ca:{if(e>>>0<=63){H[g+52>>2]=c;a=I[f|0]&63;break ca}da:{switch((e>>>6|0)-1|0){case 0:if(a>>>0<2){break aa}a=a-2|0;H[g+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8&16128|I[a|0];break ca;case 1:if(a>>>0<3){break aa}a=a-3|0;H[g+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8|I[a+2|0]<<16&4128768|I[a|0];break ca;default:break da}}a=a-4|0;H[g+52>>2]=a;a=a+b|0;a=(I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24))&1073741823}H[g+56>>2]=a+262144;d=a>>>0<66846720}ca=i+16|0;if(!d){break $}if(!m){o=1;break $}b=H[g+52>>2];a=H[g+56>>2];c=H[g+36>>2];d=H[g+48>>2];f=H[g+24>>2];while(1){ea:{if(a>>>0>262143){break ea}while(1){if((b|0)<=0){break ea}b=b-1|0;H[g+52>>2]=b;a=I[b+d|0]|a<<8;H[g+56>>2]=a;if(a>>>0<262144){continue}break}}e=a&65535;o=H[f+(e<<2)>>2];k=c+(o<<3)|0;a=(N(H[k>>2],a>>>16|0)+e|0)-H[k+4>>2]|0;H[g+56>>2]=a;H[j+(q<<2)>>2]=o;o=1;q=q+1|0;if((m|0)!=(q|0)){continue}break}}a=H[g+36>>2];if(a){H[g+40>>2]=a;oa(a)}a=H[g+24>>2];if(a){H[g+28>>2]=a;oa(a)}a=H[g+8>>2];if(a){H[g+12>>2]=a;oa(a)}ca=g- -64|0;b=o;break g;case 11:m=a;r=d;g=ca+-64|0;ca=g;H[g+56>>2]=0;H[g+48>>2]=0;H[g+52>>2]=0;H[g+40>>2]=0;H[g+44>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;H[g+24>>2]=0;H[g+28>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;j=g+8|0;a=J[c+38>>1];fa:{ga:{if(!a){break ga}ha:{if(a>>>0<=511){d=H[c+8>>2];b=H[c+12>>2];e=H[c+20>>2];a=H[c+16>>2];f=a+4|0;e=f>>>0<4?e+1|0:e;if(d>>>0>>0&(b|0)<=(e|0)|(b|0)<(e|0)){break ga}a=a+H[c>>2]|0;h=I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24);H[j+12>>2]=h;i=H[c+20>>2];f=H[c+16>>2]+4|0;i=f>>>0<4?i+1|0:i;H[c+16>>2]=f;e=i;H[c+20>>2]=e;break ha}if(!hb(1,j+12|0,c)){break ga}f=H[c+16>>2];e=H[c+20>>2];h=H[j+12>>2]}a=H[c+8>>2];d=a-f|0;a=H[c+12>>2]-((a>>>0>>0)+e|0)|0;if(d>>>0>>6>>>0&(a|0)<=0|(a|0)<0){break ga}b=H[j>>2];a=H[j+4>>2]-b>>2;ia:{if(a>>>0>>0){ya(j,h-a|0);h=H[j+12>>2];break ia}if(a>>>0<=h>>>0){break ia}H[j+4>>2]=b+(h<<2)}d=1;if(!h){break fa}f=H[c+16>>2];e=H[c+20>>2];s=H[j>>2];i=H[c+8>>2];n=H[c+12>>2];b=0;while(1){d=0;if((e|0)>=(n|0)&f>>>0>=i>>>0|(e|0)>(n|0)){break fa}d=H[c>>2];p=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=p>>>2|0;l=0;ja:{ka:{la:{ma:{t=p&3;switch(t|0){case 0:break ka;case 3:break ma;default:break la}}a=a+b|0;d=0;if(a>>>0>=h>>>0){break fa}ra(s+(b<<2)|0,0,(p&252)+4|0);b=a;break ja}while(1){if((f|0)==(i|0)&(e|0)==(n|0)){break ga}h=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=h<<(l<<3|6)|a;l=l+1|0;if((t|0)!=(l|0)){continue}break}}H[s+(b<<2)>>2]=a}b=b+1|0;h=H[j+12>>2];if(b>>>0>>0){continue}break}a=j+16|0;n=H[j>>2];d=H[j+16>>2];b=H[j+20>>2]-d|0;na:{if(b>>>0<=1048575){ya(a,262144-(b>>>2|0)|0);break na}if((b|0)==1048576){break na}H[j+20>>2]=d- -1048576}d=j+28|0;b=H[d>>2];f=H[j+32>>2]-b>>3;oa:{if(f>>>0>>0){ob(d,h-f|0);b=H[d>>2];break oa}if(f>>>0>h>>>0){H[j+32>>2]=(h<<3)+b}if(!h){break ga}}i=H[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;j=H[e>>2];l=(f<<3)+b|0;a=d;H[l+4>>2]=a;H[l>>2]=j;e=H[e>>2];d=e+a|0;if(d>>>0>262144){break ga}pa:{if(a>>>0>=d>>>0){break pa}l=0;j=e&7;if(j){while(1){H[i+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((j|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break pa}while(1){e=i+(a<<2)|0;H[e>>2]=f;H[e+28>>2]=f;H[e+24>>2]=f;H[e+20>>2]=f;H[e+16>>2]=f;H[e+12>>2]=f;H[e+8>>2]=f;H[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((h|0)!=(f|0)){continue}break}k=(d|0)==262144}d=k}qa:{if(!d|(H[g+20>>2]?0:m)){break qa}d=0;j=ca-16|0;ca=j;ra:{sa:{if(J[c+38>>1]<=511){b=H[c+8>>2];a=H[c+12>>2];h=a;i=H[c+20>>2];k=H[c+16>>2];f=k+8|0;i=f>>>0<8?i+1|0:i;e=i;if(b>>>0>>0&(e|0)>=(a|0)|(a|0)<(e|0)){break ra}k=k+H[c>>2]|0;a=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);k=I[k+4|0]|I[k+5|0]<<8|(I[k+6|0]<<16|I[k+7|0]<<24);H[c+16>>2]=f;H[c+20>>2]=e;break sa}if(!gb(1,j+8|0,c)){break ra}f=H[c+16>>2];e=H[c+20>>2];b=H[c+8>>2];h=H[c+12>>2];a=H[j+8>>2];k=H[j+12>>2]}i=b-f|0;b=h-((b>>>0>>0)+e|0)|0;if((b|0)==(k|0)&a>>>0>i>>>0|b>>>0>>0){break ra}e=e+k|0;b=a+f|0;e=b>>>0>>0?e+1|0:e;H[c+16>>2]=b;H[c+20>>2]=e;if((a|0)<=0){break ra}b=H[c>>2]+f|0;H[g+48>>2]=b;c=a-1|0;f=c+b|0;e=I[f|0];ta:{if(e>>>0<=63){H[g+52>>2]=c;a=I[f|0]&63;break ta}ua:{switch((e>>>6|0)-1|0){case 0:if(a>>>0<2){break ra}a=a-2|0;H[g+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8&16128|I[a|0];break ta;case 1:if(a>>>0<3){break ra}a=a-3|0;H[g+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8|I[a+2|0]<<16&4128768|I[a|0];break ta;default:break ua}}a=a-4|0;H[g+52>>2]=a;a=a+b|0;a=(I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24))&1073741823}H[g+56>>2]=a- -1048576;d=a>>>0<267386880}ca=j+16|0;if(!d){break qa}if(!m){o=1;break qa}b=H[g+52>>2];a=H[g+56>>2];c=H[g+36>>2];d=H[g+48>>2];f=H[g+24>>2];while(1){va:{if(a>>>0>1048575){break va}while(1){if((b|0)<=0){break va}b=b-1|0;H[g+52>>2]=b;a=I[b+d|0]|a<<8;H[g+56>>2]=a;if(a>>>0<1048576){continue}break}}e=a&262143;o=H[f+(e<<2)>>2];k=c+(o<<3)|0;a=(N(H[k>>2],a>>>18|0)+e|0)-H[k+4>>2]|0;H[g+56>>2]=a;H[r+(q<<2)>>2]=o;o=1;q=q+1|0;if((m|0)!=(q|0)){continue}break}}a=H[g+36>>2];if(a){H[g+40>>2]=a;oa(a)}a=H[g+24>>2];if(a){H[g+28>>2]=a;oa(a)}a=H[g+8>>2];if(a){H[g+12>>2]=a;oa(a)}ca=g- -64|0;b=o;break g;case 12:m=a;r=d;g=ca+-64|0;ca=g;H[g+56>>2]=0;H[g+48>>2]=0;H[g+52>>2]=0;H[g+40>>2]=0;H[g+44>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;H[g+24>>2]=0;H[g+28>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;j=g+8|0;a=J[c+38>>1];wa:{xa:{if(!a){break xa}ya:{if(a>>>0<=511){d=H[c+8>>2];b=H[c+12>>2];i=H[c+20>>2];a=H[c+16>>2];f=a+4|0;i=f>>>0<4?i+1|0:i;if(d>>>0>>0&(b|0)<=(i|0)|(b|0)<(i|0)){break xa}a=a+H[c>>2]|0;h=I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24);H[j+12>>2]=h;e=H[c+20>>2];f=H[c+16>>2]+4|0;e=f>>>0<4?e+1|0:e;H[c+16>>2]=f;H[c+20>>2]=e;break ya}if(!hb(1,j+12|0,c)){break xa}f=H[c+16>>2];e=H[c+20>>2];h=H[j+12>>2]}a=H[c+8>>2];d=a-f|0;a=H[c+12>>2]-((a>>>0>>0)+e|0)|0;if(d>>>0>>6>>>0&(a|0)<=0|(a|0)<0){break xa}b=H[j>>2];a=H[j+4>>2]-b>>2;za:{if(a>>>0>>0){ya(j,h-a|0);h=H[j+12>>2];break za}if(a>>>0<=h>>>0){break za}H[j+4>>2]=b+(h<<2)}d=1;if(!h){break wa}f=H[c+16>>2];e=H[c+20>>2];s=H[j>>2];i=H[c+8>>2];n=H[c+12>>2];b=0;while(1){d=0;if((e|0)>=(n|0)&f>>>0>=i>>>0|(e|0)>(n|0)){break wa}d=H[c>>2];p=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=p>>>2|0;l=0;Aa:{Ba:{Ca:{Da:{t=p&3;switch(t|0){case 0:break Ba;case 3:break Da;default:break Ca}}a=a+b|0;d=0;if(a>>>0>=h>>>0){break wa}ra(s+(b<<2)|0,0,(p&252)+4|0);b=a;break Aa}while(1){if((f|0)==(i|0)&(e|0)==(n|0)){break xa}h=I[d+f|0];f=f+1|0;e=f?e:e+1|0;H[c+16>>2]=f;H[c+20>>2]=e;a=h<<(l<<3|6)|a;l=l+1|0;if((t|0)!=(l|0)){continue}break}}H[s+(b<<2)>>2]=a}b=b+1|0;h=H[j+12>>2];if(b>>>0>>0){continue}break}a=j+16|0;n=H[j>>2];d=H[j+16>>2];b=H[j+20>>2]-d|0;Ea:{if(b>>>0<=2097151){ya(a,524288-(b>>>2|0)|0);break Ea}if((b|0)==2097152){break Ea}H[j+20>>2]=d+2097152}d=j+28|0;b=H[d>>2];f=H[j+32>>2]-b>>3;Fa:{if(f>>>0>>0){ob(d,h-f|0);b=H[d>>2];break Fa}if(f>>>0>h>>>0){H[j+32>>2]=(h<<3)+b}if(!h){break xa}}i=H[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;j=H[e>>2];l=(f<<3)+b|0;a=d;H[l+4>>2]=a;H[l>>2]=j;e=H[e>>2];d=e+a|0;if(d>>>0>524288){break xa}Ga:{if(a>>>0>=d>>>0){break Ga}l=0;j=e&7;if(j){while(1){H[i+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((j|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break Ga}while(1){e=i+(a<<2)|0;H[e>>2]=f;H[e+28>>2]=f;H[e+24>>2]=f;H[e+20>>2]=f;H[e+16>>2]=f;H[e+12>>2]=f;H[e+8>>2]=f;H[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((h|0)!=(f|0)){continue}break}k=(d|0)==524288}d=k}Ha:{if(!d|(H[g+20>>2]?0:m)){break Ha}d=0;i=ca-16|0;ca=i;Ia:{Ja:{if(J[c+38>>1]<=511){b=H[c+8>>2];a=H[c+12>>2];h=a;e=H[c+20>>2];k=H[c+16>>2];f=k+8|0;e=f>>>0<8?e+1|0:e;if(b>>>0>>0&(a|0)<=(e|0)|(a|0)<(e|0)){break Ia}k=k+H[c>>2]|0;a=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);k=I[k+4|0]|I[k+5|0]<<8|(I[k+6|0]<<16|I[k+7|0]<<24);H[c+16>>2]=f;H[c+20>>2]=e;break Ja}if(!gb(1,i+8|0,c)){break Ia}f=H[c+16>>2];e=H[c+20>>2];b=H[c+8>>2];h=H[c+12>>2];a=H[i+8>>2];k=H[i+12>>2]}j=b-f|0;b=h-((b>>>0>>0)+e|0)|0;if((b|0)==(k|0)&a>>>0>j>>>0|b>>>0>>0){break Ia}e=e+k|0;b=a+f|0;e=b>>>0>>0?e+1|0:e;H[c+16>>2]=b;H[c+20>>2]=e;if((a|0)<=0){break Ia}b=H[c>>2]+f|0;H[g+48>>2]=b;c=a-1|0;f=c+b|0;e=I[f|0];Ka:{if(e>>>0<=63){H[g+52>>2]=c;a=I[f|0]&63;break Ka}La:{switch((e>>>6|0)-1|0){case 0:if(a>>>0<2){break Ia}a=a-2|0;H[g+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8&16128|I[a|0];break Ka;case 1:if(a>>>0<3){break Ia}a=a-3|0;H[g+52>>2]=a;a=a+b|0;a=I[a+1|0]<<8|I[a+2|0]<<16&4128768|I[a|0];break Ka;default:break La}}a=a-4|0;H[g+52>>2]=a;a=a+b|0;a=(I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24))&1073741823}H[g+56>>2]=a+2097152;d=a>>>0<534773760}ca=i+16|0;if(!d){break Ha}if(!m){o=1;break Ha}b=H[g+52>>2];a=H[g+56>>2];c=H[g+36>>2];d=H[g+48>>2];f=H[g+24>>2];while(1){Ma:{if(a>>>0>2097151){break Ma}while(1){if((b|0)<=0){break Ma}b=b-1|0;H[g+52>>2]=b;a=I[b+d|0]|a<<8;H[g+56>>2]=a;if(a>>>0<2097152){continue}break}}e=a&524287;o=H[f+(e<<2)>>2];k=c+(o<<3)|0;a=(N(H[k>>2],a>>>19|0)+e|0)-H[k+4>>2]|0;H[g+56>>2]=a;H[r+(q<<2)>>2]=o;o=1;q=q+1|0;if((m|0)!=(q|0)){continue}break}}a=H[g+36>>2];if(a){H[g+40>>2]=a;oa(a)}a=H[g+24>>2];if(a){H[g+28>>2]=a;oa(a)}a=H[g+8>>2];if(a){H[g+12>>2]=a;oa(a)}ca=g- -64|0;b=o;break g;case 17:b=Le(a,c,d);break g;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:b=ca+-64|0;ca=b;H[b+56>>2]=0;H[b+48>>2]=0;H[b+52>>2]=0;H[b+40>>2]=0;H[b+44>>2]=0;H[b+32>>2]=0;H[b+36>>2]=0;H[b+24>>2]=0;H[b+28>>2]=0;H[b+16>>2]=0;H[b+20>>2]=0;H[b+8>>2]=0;H[b+12>>2]=0;Na:{if(!Ne(b+8|0,c)|(H[b+20>>2]?0:a)){break Na}if(!Me(b+8|0,c)){break Na}if(!a){f=1;break Na}e=H[b+52>>2];c=H[b+56>>2];k=H[b+36>>2];i=H[b+48>>2];g=H[b+24>>2];while(1){Oa:{if(c>>>0>16383){break Oa}while(1){if((e|0)<=0){break Oa}e=e-1|0;H[b+52>>2]=e;c=I[e+i|0]|c<<8;H[b+56>>2]=c;if(c>>>0<16384){continue}break}}f=c&4095;m=H[g+(f<<2)>>2];r=k+(m<<3)|0;c=(N(H[r>>2],c>>>12|0)+f|0)-H[r+4>>2]|0;H[b+56>>2]=c;H[(o<<2)+d>>2]=m;f=1;o=o+1|0;if((o|0)!=(a|0)){continue}break}}a=H[b+36>>2];if(a){H[b+40>>2]=a;oa(a)}a=H[b+24>>2];if(a){H[b+28>>2]=a;oa(a)}a=H[b+8>>2];if(a){H[b+12>>2]=a;oa(a)}ca=b- -64|0;b=f;break g;case 13:case 14:case 15:case 16:break h;default:break g}}b=Le(a,c,d)}f=b}return f}function gi(a){a=a|0;var 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,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,L=0,M=0,O=0,P=0,Q=0,R=0;s=ca+-64|0;ca=s;H[a+132>>2]=0;if(H[a+148>>2]){c=H[a+144>>2];if(c){while(1){d=H[c>>2];oa(c);c=d;if(c){continue}break}}c=0;H[a+144>>2]=0;d=H[a+140>>2];a:{if(!d){break a}if(d>>>0>=4){g=d&-4;while(1){e=c<<2;H[e+H[a+136>>2]>>2]=0;H[H[a+136>>2]+(e|4)>>2]=0;H[H[a+136>>2]+(e|8)>>2]=0;H[H[a+136>>2]+(e|12)>>2]=0;c=c+4|0;b=b+4|0;if((g|0)!=(b|0)){continue}break}}b=d&3;if(!b){break a}while(1){H[H[a+136>>2]+(c<<2)>>2]=0;c=c+1|0;u=u+1|0;if((b|0)!=(u|0)){continue}break}}H[a+148>>2]=0}b:{c:{d:{c=H[a+4>>2];u=I[c+36|0];b=u<<8|I[c+37|0];if(b>>>0<=513){i=H[c+32>>2];e:{if(b>>>0<=511){b=H[i+20>>2];e=H[i+16>>2];d=e+4|0;b=d>>>0<4?b+1|0:b;g=b;h=H[i+12>>2];if(K[i+8>>2]>>0&(b|0)>=(h|0)|(b|0)>(h|0)){break d}b=e+H[i>>2]|0;b=I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24);H[i+16>>2]=d;H[i+20>>2]=g;break e}if(!Ea(1,s,i)){break d}c=H[a+4>>2];u=I[c+36|0];b=H[s>>2]}H[a+132>>2]=b}g=H[c+32>>2];f:{g:{h:{if((u&255)>>>0<=1){u=0;d=H[g+20>>2];e=H[g+16>>2];b=e+4|0;d=b>>>0<4?d+1|0:d;i=H[g+12>>2];if(K[g+8>>2]>>0&(i|0)<=(d|0)|(d|0)>(i|0)){break c}e=e+H[g>>2]|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[s+60>>2]=e;H[g+16>>2]=b;H[g+20>>2]=d;H[a+156>>2]=e;n=a+156|0;break h}u=0;if(!Ea(1,s+60|0,g)){break c}c=H[a+4>>2];b=I[c+36|0];H[a+156>>2]=H[s+60>>2];n=a+156|0;if(b>>>0>1){break g}}g=H[c+32>>2];h=H[g+8>>2];i=H[g+12>>2];c=H[g+20>>2];d=H[g+16>>2];b=d+4|0;c=b>>>0<4?c+1|0:c;e=b;if(b>>>0>h>>>0&(c|0)>=(i|0)|(c|0)>(i|0)){break c}b=d+H[g>>2]|0;b=I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24);H[s+56>>2]=b;H[g+16>>2]=e;H[g+20>>2]=c;break f}if(!Ea(1,s+56|0,H[c+32>>2])){break c}b=H[s+56>>2]}if(b>>>0>1431655765|K[n>>2]>N(b,3)>>>0){break c}f=H[a+4>>2];g=H[f+32>>2];c=g;e=H[c+8>>2];i=H[c+16>>2];j=H[c+12>>2];d=H[c+20>>2];c=d;if((j|0)<=(c|0)&e>>>0<=i>>>0|(c|0)>(j|0)){break c}n=H[g>>2];o=I[n+i|0];h=i+1|0;c=h?c:c+1|0;H[g+16>>2]=h;H[g+20>>2]=c;i:{if(I[f+36|0]<=1){f=e;c=j;e=i+5|0;d=e>>>0<5?d+1|0:d;if((c|0)<=(d|0)&e>>>0>f>>>0|(c|0)<(d|0)){break c}c=h+n|0;n=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[s+52>>2]=n;H[g+16>>2]=e;H[g+20>>2]=d;break i}if(!Ea(1,s+52|0,g)){break c}n=H[s+52>>2]}if(b>>>0>>0|((n>>>0)/3|0)+n>>>0>>0){break c}c=H[a+4>>2];i=H[c+32>>2];j:{if(I[c+36|0]<=1){c=H[i+20>>2];e=H[i+16>>2];d=e+4|0;c=d>>>0<4?c+1|0:c;g=d;f=K[i+8>>2]>>0;d=H[i+12>>2];if(f&(d|0)<=(c|0)|(c|0)>(d|0)){break c}d=e+H[i>>2]|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[s+48>>2]=d;H[i+16>>2]=g;H[i+20>>2]=c;break j}if(!Ea(1,s+48|0,i)){break c}d=H[s+48>>2]}if(d>>>0>n>>>0){break c}H[a+28>>2]=H[a+24>>2];e=$b(pa(88));c=H[a+8>>2];H[a+8>>2]=e;if(c){cb(c);if(!H[a+8>>2]){break c}}H[a+164>>2]=H[a+160>>2];Jb(a+160|0,b);H[a+176>>2]=H[a+172>>2];Jb(a+172|0,b);H[a- -64>>2]=0;H[a+92>>2]=-1;H[a+84>>2]=-1;H[a+88>>2]=-1;H[a+40>>2]=H[a+36>>2];H[a+52>>2]=H[a+48>>2];H[a+76>>2]=H[a+72>>2];B=a+216|0;ed(B);dd(B,o);if(!Lc(H[a+8>>2],b,H[a+156>>2]+d|0)){break c}c=H[a+156>>2];F[s|0]=1;Oa(a+120|0,c+d|0,s);c=H[a+4>>2];b=J[c+36>>1];b=(b<<8|b>>>8)&65535;k:{if(b>>>0<=513){i=H[c+32>>2];l:{if(b>>>0<=511){b=H[i+20>>2];e=H[i+16>>2];c=e+4|0;b=c>>>0<4?b+1|0:b;g=b;h=H[i+12>>2];if(K[i+8>>2]>>0&(b|0)>=(h|0)|(b|0)>(h|0)){break c}b=e+H[i>>2]|0;b=I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24);H[i+16>>2]=c;H[i+20>>2]=g;break l}if(!Ea(1,s+44|0,i)){break c}b=H[s+44>>2]}if(!b){break c}c=H[H[a+4>>2]+32>>2];e=H[c+8>>2];g=H[c+16>>2];i=e-g|0;c=H[c+12>>2]-(H[c+20>>2]+(e>>>0>>0)|0)|0;if((c|0)<=0&b>>>0>i>>>0|(c|0)<0){break c}c=Ha(s);e=H[H[a+4>>2]+32>>2];g=H[e+16>>2];i=(g+H[e>>2]|0)+b|0;g=H[e+8>>2]-g|0;G[c+38>>1]=J[e+38>>1];H[c>>2]=i;H[c+16>>2]=0;H[c+20>>2]=0;H[c+8>>2]=g-b;H[c+12>>2]=0;C=Ib(a,c);if((C|0)==-1){break c}M=C>>31;break k}C=-1;M=-1;if((Ib(a,H[c+32>>2])|0)==-1){break c}}e=a+232|0;Ee(e,a);H[a+372>>2]=o;H[a+384>>2]=H[a+156>>2]+d;O=Ha(s);g=O;b=0;j=ca-16|0;ca=j;m:{n:{c=H[e+144>>2];c=J[(ea[H[H[c>>2]+32>>2]](c)|0)+36>>1];if(((c<<8|c>>>8)&65535)>>>0<=513){c=H[e+4>>2];H[e+40>>2]=H[e>>2];H[e+44>>2]=c;c=H[e+36>>2];H[e+72>>2]=H[e+32>>2];H[e+76>>2]=c;d=H[e+28>>2];c=e- -64|0;H[c>>2]=H[e+24>>2];H[c+4>>2]=d;c=H[e+20>>2];H[e+56>>2]=H[e+16>>2];H[e+60>>2]=c;c=H[e+12>>2];H[e+48>>2]=H[e+8>>2];H[e+52>>2]=c;if(!Db(e+40|0,1,j+8|0)){break n}c=H[e+44>>2];H[e>>2]=H[e+40>>2];H[e+4>>2]=c;c=H[e+76>>2];H[e+32>>2]=H[e+72>>2];H[e+36>>2]=c;c=H[e+68>>2];H[e+24>>2]=H[e+64>>2];H[e+28>>2]=c;c=H[e+60>>2];h=c;d=H[e+56>>2];H[e+16>>2]=d;H[e+20>>2]=c;i=H[e+52>>2];f=i;c=H[e+48>>2];H[e+8>>2]=c;H[e+12>>2]=f;o=c-d|0;k=H[j+12>>2];c=f-((c>>>0>>0)+h|0)|0;i=H[j+8>>2];if((k|0)==(c|0)&o>>>0>>0|c>>>0>>0){break n}c=h+k|0;f=d;d=d+i|0;c=f>>>0>d>>>0?c+1|0:c;H[e+16>>2]=d;H[e+20>>2]=c}o:{if(J[e+38>>1]<=513){c=H[e+4>>2];H[e+96>>2]=H[e>>2];H[e+100>>2]=c;c=H[e+36>>2];H[e+128>>2]=H[e+32>>2];H[e+132>>2]=c;c=H[e+28>>2];H[e+120>>2]=H[e+24>>2];H[e+124>>2]=c;c=H[e+20>>2];H[e+112>>2]=H[e+16>>2];H[e+116>>2]=c;c=H[e+12>>2];H[e+104>>2]=H[e+8>>2];H[e+108>>2]=c;if(!Db(e+96|0,1,j+8|0)){break n}c=H[e+100>>2];H[e>>2]=H[e+96>>2];H[e+4>>2]=c;c=H[e+132>>2];H[e+32>>2]=H[e+128>>2];H[e+36>>2]=c;c=H[e+124>>2];H[e+24>>2]=H[e+120>>2];H[e+28>>2]=c;d=H[e+116>>2];h=d;c=H[e+112>>2];H[e+16>>2]=c;H[e+20>>2]=d;i=H[e+108>>2];f=i;d=H[e+104>>2];H[e+8>>2]=d;H[e+12>>2]=f;o=d-c|0;k=H[j+12>>2];d=f-((c>>>0>d>>>0)+h|0)|0;i=H[j+8>>2];if((k|0)==(d|0)&o>>>0>>0|d>>>0>>0){break n}d=h+k|0;f=c;c=c+i|0;d=f>>>0>c>>>0?d+1|0:d;H[e+16>>2]=c;H[e+20>>2]=d;break o}if(!ta(e+80|0,e)){break m}}if(!Fe(e)){break m}c=H[e+4>>2];H[g>>2]=H[e>>2];H[g+4>>2]=c;c=H[e+36>>2];H[g+32>>2]=H[e+32>>2];H[g+36>>2]=c;c=H[e+28>>2];H[g+24>>2]=H[e+24>>2];H[g+28>>2]=c;c=H[e+20>>2];H[g+16>>2]=H[e+16>>2];H[g+20>>2]=c;c=H[e+12>>2];H[g+8>>2]=H[e+8>>2];H[g+12>>2]=c;c=H[e+144>>2];c=J[(ea[H[H[c>>2]+32>>2]](c)|0)+36>>1];p:{if(((c<<8|c>>>8)&65535)>>>0<=513){c=H[e+144>>2];q:{if(I[(ea[H[H[c>>2]+32>>2]](c)|0)+36|0]<=1){c=H[g+20>>2];i=H[g+16>>2];d=i+4|0;c=d>>>0<4?c+1|0:c;h=d;f=K[g+8>>2]>>0;d=H[g+12>>2];if(f&(d|0)<=(c|0)|(c|0)>(d|0)){break m}d=i+H[g>>2]|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[g+16>>2]=h;H[g+20>>2]=c;break q}if(!Ea(1,j+8|0,g)){break m}d=H[j+8>>2]}c=H[e+152>>2];if(d>>>0>=c>>>0){break m}d=H[g+20>>2];h=H[g+12>>2];i=H[g+16>>2];if((d|0)>=(h|0)&i>>>0>=K[g+8>>2]|(d|0)>(h|0)){break m}h=I[i+H[g>>2]|0];i=i+1|0;d=i?d:d+1|0;H[g+16>>2]=i;H[g+20>>2]=d;if(h){break m}H[e+176>>2]=2;H[e+180>>2]=7;break p}H[e+176>>2]=2;H[e+180>>2]=7;c=H[e+152>>2]}if((c|0)<0){break m}H[j+8>>2]=0;b=2;h=H[e+156>>2];i=H[e+160>>2]-h>>2;r:{if(i>>>0>>0){Pa(e+156|0,c-i|0,j+8|0);b=H[e+176>>2];d=H[e+180>>2];break r}d=7;if(c>>>0>=i>>>0){break r}H[e+160>>2]=h+(c<<2)}i=e+184|0;b=(d-b|0)+1|0;c=H[e+188>>2];h=H[e+184>>2];d=(c-h|0)/12|0;s:{if(b>>>0>d>>>0){o=0;d=b-d|0;f=H[i+8>>2];c=H[i+4>>2];t:{if(d>>>0<=(f-c|0)/12>>>0){if(d){b=c;c=N(d,12)-12|0;c=(c-((c>>>0)%12|0)|0)+12|0;c=ra(b,0,c)+c|0}H[i+4>>2]=c;break t}u:{v:{w:{h=H[i>>2];k=(c-h|0)/12|0;b=k+d|0;if(b>>>0<357913942){f=(f-h|0)/12|0;l=f<<1;f=f>>>0>=178956970?357913941:b>>>0>>0?l:b;if(f){if(f>>>0>=357913942){break w}o=pa(N(f,12))}b=N(k,12)+o|0;d=N(d,12)-12|0;k=(d-((d>>>0)%12|0)|0)+12|0;d=ra(b,0,k);k=d+k|0;f=N(f,12)+o|0;if((c|0)==(h|0)){break v}while(1){b=b-12|0;c=c-12|0;H[b>>2]=H[c>>2];H[b+4>>2]=H[c+4>>2];H[b+8>>2]=H[c+8>>2];H[c+8>>2]=0;H[c>>2]=0;H[c+4>>2]=0;if((c|0)!=(h|0)){continue}break}H[i+8>>2]=f;d=H[i+4>>2];H[i+4>>2]=k;c=H[i>>2];H[i>>2]=b;if((c|0)==(d|0)){break u}while(1){b=d-12|0;h=H[b>>2];if(h){H[d-8>>2]=h;oa(h)}d=b;if((b|0)!=(c|0)){continue}break}break u}break b}wa();v()}H[i+8>>2]=f;H[i+4>>2]=k;H[i>>2]=d}if(c){oa(c)}}d=H[e+188>>2];break s}if(b>>>0>=d>>>0){d=c;break s}d=h+N(b,12)|0;if((d|0)!=(c|0)){while(1){b=c-12|0;h=H[b>>2];if(h){H[c-8>>2]=h;oa(h)}c=b;if((d|0)!=(b|0)){continue}break}}H[e+188>>2]=d}f=e+196|0;b=H[e+184>>2];c=(d-b|0)/12|0;o=H[e+196>>2];h=H[e+200>>2]-o>>2;x:{if(c>>>0>h>>>0){ya(f,c-h|0);b=H[e+184>>2];d=H[e+188>>2];break x}if(c>>>0>=h>>>0){break x}H[e+200>>2]=o+(c<<2)}if((b|0)==(d|0)){b=1;break m}c=0;while(1){if(!Ea(1,j+8|0,g)){break n}b=H[e+148>>2];d=(H[b+4>>2]-H[b>>2]>>2>>>0)/3|0;b=H[j+8>>2];if(d>>>0>>0){break n}if(b){k=N(c,12);h=k+H[i>>2]|0;d=H[h>>2];o=H[h+4>>2]-d>>2;y:{if(o>>>0>>0){ya(h,b-o|0);d=H[k+H[i>>2]>>2];break y}if(b>>>0>=o>>>0){break y}H[h+4>>2]=(b<<2)+d}kd(b,1,g,d);H[H[f>>2]+(c<<2)>>2]=b}b=1;c=c+1|0;if(c>>>0<(H[e+188>>2]-H[e+184>>2]|0)/12>>>0){continue}break}break m}b=0}ca=j+16|0;z:{if(!b){break z}d=0;c=0;g=0;i=0;o=0;l=ca-96|0;ca=l;H[l+72>>2]=0;H[l+64>>2]=0;H[l+68>>2]=0;H[l+48>>2]=0;H[l+52>>2]=0;H[l+40>>2]=0;H[l+44>>2]=0;H[l+56>>2]=1065353216;H[l+32>>2]=0;H[l+24>>2]=0;H[l+28>>2]=0;j=a;L=H[a+124>>2];A:{B:{C:{D:{E:{if((n|0)<=0){break E}r=j+232|0;P=H[j+216>>2]!=H[j+220>>2];D=1;while(1){h=i;i=h+1|0;a=H[r+172>>2];F:{G:{if((a|0)!=-1){b=H[r+196>>2]+(a<<2)|0;f=H[b>>2];a=f-1|0;H[b>>2]=a;b=9;if((f|0)<=0){break F}a=H[H[H[r+184>>2]+N(H[r+172>>2],12)>>2]+(a<<2)>>2];if(a>>>0>4){break F}b=H[(a<<2)+12144>>2];break G}b=7;a=H[r+144>>2];a=J[(ea[H[H[a>>2]+32>>2]](a)|0)+36>>1];if(((a<<8|a>>>8)&65535)>>>0>513|!I[r+76|0]){break G}b=0;m=H[r- -64>>2];k=H[r+72>>2];a=m+(k>>>3|0)|0;p=H[r+68>>2];if(a>>>0>=p>>>0){break G}f=I[a|0];a=k+1|0;H[r+72>>2]=a;f=f>>>(k&7)&1;if(!f){break G}q=a>>>3|0;b=m+q|0;H:{if(b>>>0>=p>>>0){b=a;a=0;break H}t=I[b|0];b=k+2|0;H[r+72>>2]=b;q=b>>>3|0;a=t>>>(a&7)&1}k=m+q|0;if(k>>>0

>>0){k=I[k|0];H[r+72>>2]=b+1;b=k>>>(b&7)<<1&2}else{b=0}b=(a|b)<<1|f}H[r+168>>2]=b}a=b;I:{J:{if(!a){if((c|0)==(g|0)){b=-1;break D}d=-1;m=H[j+8>>2];t=H[m+24>>2];D=c-4|0;f=H[D>>2];a=-1;K:{if((f|0)==-1){break K}k=f+1|0;k=(k>>>0)%3|0?k:f-2|0;a=-1;if((k|0)==-1){break K}a=H[H[m>>2]+(k<<2)>>2]}b=H[t+(a<<2)>>2];if((b|0)!=-1){d=b+1|0;d=(d>>>0)%3|0?d:b-2|0}if((d|0)==(f|0)){b=-1;break D}if((f|0)!=-1){b=-1;if(H[H[m+12>>2]+(f<<2)>>2]!=-1){break D}}k=H[m+12>>2];if((d|0)!=-1){b=-1;if(H[k+(d<<2)>>2]!=-1){break D}}p=N(h,3);b=p+1|0;H[k+(f<<2)>>2]=b;w=b<<2;H[w+k>>2]=f;q=p+2|0;H[k+(d<<2)>>2]=q;y=q<<2;H[y+k>>2]=d;k=-1;h=-1;L:{if((f|0)==-1){break L}M:{if((f>>>0)%3|0){b=f-1|0;break M}b=f+2|0;h=-1;if((b|0)==-1){break L}}h=H[H[m>>2]+(b<<2)>>2]}N:{if((d|0)==-1){break N}b=d+1|0;b=(b>>>0)%3|0?b:d-2|0;if((b|0)==-1){break N}k=H[H[m>>2]+(b<<2)>>2]}b=-1;if((a|0)==(h|0)|(a|0)==(k|0)){break D}b=H[m>>2];H[b+(p<<2)>>2]=a;H[b+w>>2]=k;H[b+y>>2]=h;if((h|0)!=-1){H[t+(h<<2)>>2]=q}b=H[j+120>>2]+(a>>>3&536870908)|0;d=H[b>>2];Q=b,R=Vj(a)&d,H[Q>>2]=R;H[D>>2]=p;k=H[c-4>>2];break J}b=-1;O:{P:{Q:{R:{S:{T:{U:{V:{W:{switch(a-1|0){case 2:case 4:if((c|0)==(g|0)){break D}t=c-4|0;d=H[t>>2];f=H[j+8>>2];m=H[f+12>>2];if((d|0)!=-1&H[m+(d<<2)>>2]!=-1){break D}k=N(h,3);p=(a|0)==5;q=k+(p?2:1)|0;w=q<<2;H[w+m>>2]=d;H[m+(d<<2)>>2]=q;Ka(f+24|0,11424);a=H[j+8>>2];m=H[a+24>>2];if(H[a+28>>2]-m>>2>(L|0)){break D}a=H[a>>2];y=a+w|0;b=H[f+28>>2];f=H[f+24>>2];w=(b-f>>2)-1|0;H[y>>2]=w;if((b|0)!=(f|0)){H[m+(w<<2)>>2]=q}b=p?k:k+2|0;q=a+(k+p<<2)|0;X:{if((d|0)==-1){H[a+(b<<2)>>2]=-1;b=-1;break X}Y:{Z:{_:{if((d>>>0)%3|0){f=d-1|0;break _}f=d+2|0;if((f|0)==-1){break Z}}f=H[a+(f<<2)>>2];H[a+(b<<2)>>2]=f;if((f|0)==-1){break Y}H[m+(f<<2)>>2]=b;break Y}H[a+(b<<2)>>2]=-1}f=d+1|0;d=(f>>>0)%3|0?f:d-2|0;b=-1;if((d|0)==-1){break X}b=H[a+(d<<2)>>2]}H[q>>2]=b;H[t>>2]=k;break V;case 0:if((c|0)==(d|0)){break D}a=c-4|0;m=H[a>>2];H[l+68>>2]=a;p=H[l+44>>2];$:{if(!p){c=a;break $}f=H[l+40>>2];q=Uj(p)>>>0>1;b=h&p+2147483647;aa:{if(!q){break aa}b=h;if(b>>>0

>>0){break aa}b=(h>>>0)%(p>>>0)|0}k=b;b=H[f+(k<<2)>>2];if(!b){c=a;break $}b=H[b>>2];if(!b){c=a;break $}ba:{if(!q){f=p-1|0;while(1){p=H[b+4>>2];ca:{if((p|0)!=(h|0)){if((k|0)==(f&p)){break ca}c=a;break $}if((h|0)==H[b+8>>2]){break ba}}b=H[b>>2];if(b){continue}break}c=a;break $}while(1){f=H[b+4>>2];da:{if((f|0)!=(h|0)){if(f>>>0>=p>>>0){f=(f>>>0)%(p>>>0)|0}if((f|0)==(k|0)){break da}c=a;break $}if((h|0)==H[b+8>>2]){break ba}}b=H[b>>2];if(b){continue}break}c=a;break $}if((a|0)!=(x|0)){H[a>>2]=H[b+12>>2];H[l+68>>2]=c;break $}a=x-d|0;g=a>>2;c=g+1|0;if(c>>>0>=1073741824){break b}f=a>>>1|0;f=a>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break B}a=pa(f<<2)}else{a=0}g=a+(g<<2)|0;H[g>>2]=H[b+12>>2];c=g+4|0;if((d|0)!=(x|0)){while(1){g=g-4|0;x=x-4|0;H[g>>2]=H[x>>2];if((d|0)!=(x|0)){continue}break}}x=a+(f<<2)|0;H[l+72>>2]=x;H[l+68>>2]=c;H[l+64>>2]=g;if(d){oa(d)}}if((c|0)==(g|0)){break P}w=c-4|0;a=H[w>>2];if((a|0)==(m|0)){break P}b=(a|0)==-1;p=H[j+8>>2];if(!b&H[H[p+12>>2]+(a<<2)>>2]!=-1){break P}q=H[p+12>>2];if((m|0)!=-1&H[q+(m<<2)>>2]!=-1){break P}k=N(h,3);t=k+2|0;H[q+(a<<2)>>2]=t;h=t<<2;H[h+q>>2]=a;d=k+1|0;H[q+(m<<2)>>2]=d;y=d<<2;H[y+q>>2]=m;if(b){break T}if((a>>>0)%3|0){f=a-1|0;break S}f=a+2|0;if((f|0)!=-1){break S}d=H[p>>2];f=-1;break R;case 6:break W;default:break D}}k=H[j+8>>2];Ka(k+24|0,11424);f=H[j+8>>2];a=N(h,3);m=H[k+28>>2];p=H[k+24>>2];q=m-p|0;k=q>>2;t=k-1|0;H[H[f>>2]+(a<<2)>>2]=t;Ka(f+24|0,11424);w=a+1|0;H[H[f>>2]+(w<<2)>>2]=(H[f+28>>2]-H[f+24>>2]>>2)-1;f=H[j+8>>2];Ka(f+24|0,11424);y=a+2|0;H[H[f>>2]+(y<<2)>>2]=(H[f+28>>2]-H[f+24>>2]>>2)-1;E=H[j+8>>2];f=H[E+24>>2];if(H[E+28>>2]-f>>2>(L|0)){break D}ea:{fa:{if((m|0)!=(p|0)){H[f+(t<<2)>>2]=a;b=0;if((q|0)==-4){break fa}}H[f+(k<<2)>>2]=w;b=k+1|0;if((b|0)==-1){break ea}}H[f+(b<<2)>>2]=y}if((c|0)!=(x|0)){H[c>>2]=a;c=c+4|0;H[l+68>>2]=c;break U}b=c-d|0;k=b>>2;g=k+1|0;if(g>>>0>=1073741824){break b}f=b>>>1|0;b=b>>>0>=2147483644?1073741823:g>>>0>>0?f:g;if(b){if(b>>>0>=1073741824){break B}f=pa(b<<2)}else{f=0}g=f+(k<<2)|0;H[g>>2]=a;x=f+(b<<2)|0;a=g+4|0;if((c|0)!=(d|0)){while(1){g=g-4|0;c=c-4|0;H[g>>2]=H[c>>2];if((c|0)!=(d|0)){continue}break}}H[l+72>>2]=x;H[l+68>>2]=a;H[l+64>>2]=g;if(d){oa(d)}c=a}d=g}Ce(r,H[c-4>>2]);a=H[j+40>>2];if((a|0)==H[j+36>>2]){break I}b=a-12|0;f=H[b+4>>2];h=(h^-1)+n|0;if(f>>>0>h>>>0){break P}if((f|0)!=(h|0)){break I}k=I[a-4|0];f=H[b>>2];H[j+40>>2]=b;if((f|0)<0){break P}m=c-4|0;a=H[m>>2];H[l+20>>2]=(f^-1)+n;b=l+20|0;H[l+88>>2]=b;Gb(l,l+40|0,b,l+88|0);f=H[l>>2];ga:{if(k&1){b=-1;if((a|0)==-1){break ga}b=a+1|0;b=(b>>>0)%3|0?b:a-2|0;break ga}b=-1;if((a|0)==-1){break ga}b=a-1|0;if((a>>>0)%3|0){break ga}b=a+2|0}H[f+12>>2]=b;b=H[j+40>>2];if((b|0)==H[j+36>>2]){break I}while(1){a=b-12|0;f=H[a+4>>2];if(f>>>0>h>>>0){break P}if((f|0)!=(h|0)){break I}f=I[b-4|0];b=H[a>>2];H[j+40>>2]=a;if((b|0)<0){break P}a=H[m>>2];H[l+20>>2]=(b^-1)+n;b=l+20|0;H[l+88>>2]=b;Gb(l,l+40|0,b,l+88|0);k=H[l>>2];ha:{if(f&1){b=-1;if((a|0)==-1){break ha}b=a+1|0;b=(b>>>0)%3|0?b:a-2|0;break ha}b=-1;if((a|0)==-1){break ha}b=a-1|0;if((a>>>0)%3|0){break ha}b=a+2|0}H[k+12>>2]=b;b=H[j+40>>2];if((b|0)!=H[j+36>>2]){continue}break}break I}f=-1;d=H[p>>2];H[d+(k<<2)>>2]=-1;b=-1;break Q}d=H[p>>2];f=H[d+(f<<2)>>2]}H[(k<<2)+d>>2]=f;E=a+1|0;a=(E>>>0)%3|0?E:a-2|0;b=-1;if((a|0)==-1){break Q}b=H[(a<<2)+d>>2]}H[d+y>>2]=b;ia:{if((m|0)==-1){H[d+h>>2]=-1;t=-1;a=-1;break ia}ja:{ka:{la:{if((m>>>0)%3|0){b=m-1|0;break la}b=m+2|0;if((b|0)==-1){break ka}}a=H[(b<<2)+d>>2];H[d+h>>2]=a;if((a|0)==-1){break ja}H[H[p+24>>2]+(a<<2)>>2]=t;break ja}H[d+h>>2]=-1}t=-1;b=m+1|0;b=(b>>>0)%3|0?b:m-2|0;a=-1;if((b|0)==-1){break ia}t=H[(b<<2)+d>>2];a=b}b=H[j+388>>2];h=f<<2;m=b+h|0;y=b;b=t<<2;H[m>>2]=H[m>>2]+H[y+b>>2];m=b;b=H[p+24>>2];m=m+b|0;if((f|0)!=-1){H[b+h>>2]=H[m>>2]}b=a;while(1){if((b|0)==-1){break O}H[(b<<2)+d>>2]=f;p=b+1|0;b=(p>>>0)%3|0?p:b-2|0;h=-1;ma:{if((b|0)==-1){break ma}b=H[q+(b<<2)>>2];h=-1;if((b|0)==-1){break ma}h=b+1|0;h=(h>>>0)%3|0?h:b-2|0}b=h;if((a|0)!=(b|0)){continue}break}}b=-1;if(!D){break E}break D}H[m>>2]=-1;na:{if(P){break na}if((z|0)!=(A|0)){H[A>>2]=t;A=A+4|0;H[l+28>>2]=A;break na}a=z-o|0;h=a>>2;b=h+1|0;if(b>>>0>=1073741824){break b}d=a>>>1|0;d=a>>>0>=2147483644?1073741823:b>>>0>>0?d:b;if(d){if(d>>>0>=1073741824){break B}a=pa(d<<2)}else{a=0}b=a+(h<<2)|0;H[b>>2]=t;A=b+4|0;if((o|0)!=(z|0)){while(1){b=b-4|0;z=z-4|0;H[b>>2]=H[z>>2];if((o|0)!=(z|0)){continue}break}}z=a+(d<<2)|0;H[l+32>>2]=z;H[l+28>>2]=A;H[l+24>>2]=b;if(o){oa(o)}o=b}H[w>>2]=k}Ce(r,k);d=g}D=(i|0)<(n|0);if((i|0)!=(n|0)){continue}break}i=n}b=-1;d=H[j+8>>2];if(H[d+28>>2]-H[d+24>>2]>>2>(L|0)){break D}if((c|0)!=(g|0)){x=j+72|0;h=j+60|0;p=j+312|0;while(1){c=c-4|0;o=H[c>>2];H[l+68>>2]=c;oa:{pa:{qa:{if(J[j+270>>1]<=513){if(!I[j+364|0]){break pa}a=H[j+360>>2];b=H[j+352>>2]+(a>>>3|0)|0;if(b>>>0>=K[j+356>>2]){break qa}b=I[b|0];H[j+360>>2]=a+1;if(!(b>>>(a&7)&1)){break qa}break pa}if(Ba(p)){break pa}}b=H[j+64>>2];a=H[j+68>>2];if((b|0)==a<<5){if((b+1|0)<0){break b}if(b>>>0<=1073741822){a=a<<6;b=(b&-32)+32|0;a=a>>>0>b>>>0?a:b}else{a=2147483647}pb(h,a);b=H[j+64>>2]}H[j+64>>2]=b+1;a=H[j+60>>2]+(b>>>3&536870908)|0;d=H[a>>2];Q=a,R=Vj(b)&d,H[Q>>2]=R;b=H[j+76>>2];if((b|0)!=H[j+80>>2]){H[b>>2]=o;H[j+76>>2]=b+4;break oa}d=H[x>>2];a=b-d|0;k=a>>2;f=k+1|0;if(f>>>0<1073741824){n=a>>>1|0;n=a>>>0>=2147483644?1073741823:f>>>0>>0?n:f;if(n){if(n>>>0>=1073741824){break B}a=pa(n<<2)}else{a=0}f=a+(k<<2)|0;H[f>>2]=o;o=f+4|0;if((b|0)!=(d|0)){while(1){f=f-4|0;b=b-4|0;H[f>>2]=H[b>>2];if((b|0)!=(d|0)){continue}break}}H[j+80>>2]=a+(n<<2);H[j+76>>2]=o;H[j+72>>2]=f;if(!d){break oa}oa(d);break oa}break b}m=H[j+8>>2];r=H[m>>2];if(((H[m+4>>2]-r>>2>>>0)/3|0)<=(i|0)){b=-1;break D}d=-1;q=H[m+24>>2];n=-1;ra:{if((o|0)==-1){break ra}g=o+1|0;g=(g>>>0)%3|0?g:o-2|0;n=-1;if((g|0)==-1){break ra}n=H[r+(g<<2)>>2]}a=H[q+(n<<2)>>2];sa:{if((a|0)==-1){k=1;f=-1;break sa}k=1;f=-1;b=a+1|0;a=(b>>>0)%3|0?b:a-2|0;if((a|0)==-1){break sa}k=0;d=a;b=a+1|0;b=(b>>>0)%3|0?b:a-2|0;if((b|0)!=-1){f=H[r+(b<<2)>>2]}}b=-1;g=-1;a=H[q+(f<<2)>>2];if((a|0)!=-1){g=a+1|0;g=(g>>>0)%3|0?g:a-2|0}if((d|0)==(o|0)|(g|0)==(o|0)|((o|0)!=-1&H[H[m+12>>2]+(o<<2)>>2]!=-1|(d|0)==(g|0))){break D}if(!k&H[H[m+12>>2]+(d<<2)>>2]!=-1){break D}k=-1;a=H[m+12>>2];m=-1;ta:{if((g|0)==-1){break ta}if(H[a+(g<<2)>>2]!=-1){break D}b=g+1|0;b=(b>>>0)%3|0?b:g-2|0;m=-1;if((b|0)==-1){break ta}m=H[r+(b<<2)>>2]}b=N(i,3);H[l>>2]=b;H[a+(b<<2)>>2]=o;H[a+(o<<2)>>2]=b;b=H[l>>2]+1|0;H[a+(b<<2)>>2]=d;H[a+(d<<2)>>2]=b;b=H[l>>2]+2|0;H[a+(b<<2)>>2]=g;H[a+(g<<2)>>2]=b;a=H[l>>2];H[r+(a<<2)>>2]=f;b=a+1|0;d=r+(b<<2)|0;H[d>>2]=m;g=a+2|0;o=r+(g<<2)|0;H[o>>2]=n;a=H[j+120>>2];f=b?f:-1;n=a+(f>>>3&536870908)|0;r=H[n>>2];Q=n,R=Vj(f)&r,H[Q>>2]=R;k=(b|0)!=-1?H[d>>2]:k;b=a+(k>>>3&536870908)|0;d=H[b>>2];Q=b,R=Vj(k)&d,H[Q>>2]=R;b=-1;b=(g|0)!=-1?H[o>>2]:b;a=a+(b>>>3&536870908)|0;d=H[a>>2];Q=a,R=Vj(b)&d,H[Q>>2]=R;F[l+88|0]=1;_c(h,l+88|0);Ka(x,l);i=i+1|0;g=H[l+64>>2]}if((c|0)!=(g|0)){continue}break}d=H[j+8>>2]}b=-1;if(((H[d+4>>2]-H[d>>2]>>2>>>0)/3|0)!=(i|0)){break D}b=H[d+28>>2]-H[d+24>>2]>>2;i=H[l+24>>2];f=H[l+28>>2];if((i|0)==(f|0)){break C}while(1){a=H[i>>2];h=H[d+24>>2];c=b-1|0;g=h+(c<<2)|0;if(H[g>>2]==-1){while(1){c=b-2|0;b=b-1|0;g=h+(c<<2)|0;if(H[g>>2]==-1){continue}break}}if(a>>>0<=c>>>0){H[l>>2]=d;g=H[g>>2];F[l+12|0]=1;H[l+8>>2]=g;H[l+4>>2]=g;if((g|0)!=-1){while(1){d=H[H[j+8>>2]>>2]+(g<<2)|0;if(H[d>>2]!=(c|0)){b=-1;break D}H[d>>2]=a;uc(l);g=H[l+8>>2];if((g|0)!=-1){continue}break}d=H[j+8>>2]}h=H[d+24>>2];g=h+(c<<2)|0;if((a|0)!=-1){H[h+(a<<2)>>2]=H[g>>2]}H[g>>2]=-1;g=1<>2];a=h+(a>>>3&536870908)|0;h=h+(c>>>3&536870908)|0;c=1<>2]&c){g=g|H[a>>2]}else{g=H[a>>2]&(g^-1)}H[a>>2]=g;H[h>>2]=H[h>>2]&(c^-1);b=b-1|0}i=i+4|0;if((f|0)!=(i|0)){continue}break}}i=H[l+24>>2]}if(i){oa(i)}a=H[l+48>>2];if(a){while(1){c=H[a>>2];oa(a);a=c;if(a){continue}break}}a=H[l+40>>2];H[l+40>>2]=0;if(a){oa(a)}a=H[l+64>>2];if(a){H[l+68>>2]=a;oa(a)}ca=l+96|0;break A}wa();v()}if((b|0)==-1){break z}a=O;c=H[a+16>>2];d=c+H[a>>2]|0;c=H[a+8>>2]-c|0;a=H[H[j+4>>2]+32>>2];G[a+38>>1]=J[a+38>>1];H[a>>2]=d;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=c;H[a+12>>2]=0;a=H[j+4>>2];c=J[a+36>>1];g=c<<8|c>>>8;if((g&65535)>>>0<=513){a=H[a+32>>2];c=H[a+16>>2];d=M+H[a+20>>2]|0;c=c+C|0;d=c>>>0>>0?d+1|0:d;H[a+16>>2]=c;H[a+20>>2]=d}ua:{if(H[j+216>>2]==H[j+220>>2]){break ua}c=H[j+8>>2];a=H[c>>2];c=H[c+4>>2];va:{if((g&65535)>>>0>=513){if((a|0)==(c|0)){break ua}c=0;break va}if((a|0)==(c|0)){break ua}c=0;while(1){if(cd(j,c)){c=c+3|0;a=H[j+8>>2];if(c>>>0>2]-H[a>>2]>>2>>>0){continue}break ua}break}break z}while(1){if(bd(j,c)){c=c+3|0;a=H[j+8>>2];if(c>>>0>2]-H[a>>2]>>2>>>0){continue}break ua}break}break z}ad(e);c=H[j+216>>2];if((c|0)!=H[j+220>>2]){n=0;while(1){d=N(n,144);Jc((d+c|0)+4|0,H[j+8>>2]);a=H[B>>2];e=a+d|0;c=H[e+132>>2];e=H[e+136>>2];if((c|0)!=(e|0)){while(1){Hc((d+H[B>>2]|0)+4|0,H[c>>2]);c=c+4|0;if((e|0)!=(c|0)){continue}break}a=H[B>>2]}if(!Ic((a+d|0)+4|0)){break z}n=n+1|0;c=H[j+216>>2];if(n>>>0<(H[j+220>>2]-c|0)/144>>>0){continue}break}}a=H[j+8>>2];Hb(j+184|0,H[a+28>>2]-H[a+24>>2]>>2);u=H[j+216>>2];if((u|0)!=H[j+220>>2]){c=0;while(1){a=N(c,144)+u|0;d=H[a+60>>2]-H[a+56>>2]>>2;f=a+104|0;a=H[j+8>>2];a=H[a+28>>2]-H[a+24>>2]>>2;Hb(f,(a|0)<(d|0)?d:a);c=c+1|0;u=H[j+216>>2];if(c>>>0<(H[j+220>>2]-u|0)/144>>>0){continue}break}}u=$c(j,b)}break c}u=0}ca=s- -64|0;return u|0}sa();v()}function ii(a){a=a|0;var 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,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,L=0,M=0,O=0,P=0,Q=0,R=0,S=0;u=ca+-64|0;ca=u;H[a+132>>2]=0;if(H[a+148>>2]){c=H[a+144>>2];if(c){while(1){b=H[c>>2];oa(c);c=b;if(b){continue}break}}c=0;H[a+144>>2]=0;l=H[a+140>>2];a:{if(!l){break a}if(l>>>0>=4){b=l&-4;while(1){e=c<<2;H[e+H[a+136>>2]>>2]=0;H[H[a+136>>2]+(e|4)>>2]=0;H[H[a+136>>2]+(e|8)>>2]=0;H[H[a+136>>2]+(e|12)>>2]=0;c=c+4|0;f=f+4|0;if((b|0)!=(f|0)){continue}break}}b=l&3;if(!b){break a}while(1){H[H[a+136>>2]+(c<<2)>>2]=0;c=c+1|0;w=w+1|0;if((b|0)!=(w|0)){continue}break}}H[a+148>>2]=0}b:{c:{c=H[a+4>>2];w=I[c+36|0];b=w<<8|I[c+37|0];if(b>>>0<=513){g=H[c+32>>2];d:{if(b>>>0<=511){f=H[g+20>>2];l=H[g+16>>2];e=l+4|0;f=e>>>0<4?f+1|0:f;b=f;d=H[g+12>>2];if(K[g+8>>2]>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break c}f=l+H[g>>2]|0;f=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[g+16>>2]=e;H[g+20>>2]=b;break d}if(!Ea(1,u,g)){break c}c=H[a+4>>2];w=I[c+36|0];f=H[u>>2]}H[a+132>>2]=f}d=H[c+32>>2];e:{f:{g:{if((w&255)>>>0<=1){w=0;b=H[d+20>>2];e=H[d+16>>2];f=e+4|0;b=f>>>0<4?b+1|0:b;l=H[d+12>>2];if(K[d+8>>2]>>0&(l|0)<=(b|0)|(b|0)>(l|0)){break b}e=e+H[d>>2]|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[u+60>>2]=e;H[d+16>>2]=f;H[d+20>>2]=b;H[a+156>>2]=e;t=a+156|0;break g}w=0;if(!Ea(1,u+60|0,d)){break b}c=H[a+4>>2];b=I[c+36|0];H[a+156>>2]=H[u+60>>2];t=a+156|0;if(b>>>0>1){break f}}d=H[c+32>>2];e=H[d+8>>2];l=H[d+12>>2];c=H[d+20>>2];f=H[d+16>>2];b=f+4|0;c=b>>>0<4?c+1|0:c;if(b>>>0>e>>>0&(c|0)>=(l|0)|(c|0)>(l|0)){break b}f=f+H[d>>2]|0;f=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[u+56>>2]=f;H[d+16>>2]=b;H[d+20>>2]=c;break e}if(!Ea(1,u+56|0,H[c+32>>2])){break b}f=H[u+56>>2]}if(f>>>0>1431655765|K[t>>2]>N(f,3)>>>0){break b}E=H[a+4>>2];x=H[E+32>>2];c=H[x+8>>2];d=H[x+12>>2];b=H[x+20>>2];h=H[x+16>>2];if((d|0)<=(b|0)&h>>>0>=c>>>0|(b|0)>(d|0)){break b}j=H[x>>2];k=I[j+h|0];e=x;l=h+1|0;g=l?b:b+1|0;H[e+16>>2]=l;H[e+20>>2]=g;h:{if(I[E+36|0]<=1){e=c;c=h+5|0;b=c>>>0<5?b+1|0:b;if(c>>>0>e>>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break b}e=j+l|0;t=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[u+52>>2]=t;H[x+16>>2]=c;H[x+20>>2]=b;break h}if(!Ea(1,u+52|0,x)){break b}t=H[u+52>>2]}if(f>>>0>>0|((t>>>0)/3|0)+t>>>0>>0){break b}c=H[a+4>>2];d=H[c+32>>2];i:{if(I[c+36|0]<=1){c=H[d+20>>2];b=H[d+16>>2];e=b+4|0;c=e>>>0<4?c+1|0:c;l=H[d+12>>2];if(K[d+8>>2]>>0&(l|0)<=(c|0)|(c|0)>(l|0)){break b}b=b+H[d>>2]|0;b=I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24);H[u+48>>2]=b;H[d+16>>2]=e;H[d+20>>2]=c;break i}if(!Ea(1,u+48|0,d)){break b}b=H[u+48>>2]}if(b>>>0>t>>>0){break b}H[a+28>>2]=H[a+24>>2];c=$b(pa(88));e=H[a+8>>2];H[a+8>>2]=c;if(e){cb(e);if(!H[a+8>>2]){break b}}H[a+164>>2]=H[a+160>>2];Jb(a+160|0,f);H[a+176>>2]=H[a+172>>2];Jb(a+172|0,f);H[a- -64>>2]=0;H[a+92>>2]=-1;H[a+84>>2]=-1;H[a+88>>2]=-1;H[a+40>>2]=H[a+36>>2];H[a+52>>2]=H[a+48>>2];H[a+76>>2]=H[a+72>>2];M=a+216|0;ed(M);dd(M,k);if(!Lc(H[a+8>>2],f,H[a+156>>2]+b|0)){break b}c=H[a+156>>2];F[u|0]=1;Oa(a+120|0,b+c|0,u);f=H[a+4>>2];c=J[f+36>>1];c=(c<<8|c>>>8)&65535;j:{if(c>>>0<=513){g=H[f+32>>2];k:{if(c>>>0<=511){f=H[g+20>>2];l=H[g+16>>2];e=l+4|0;f=e>>>0<4?f+1|0:f;c=f;d=H[g+12>>2];if(K[g+8>>2]>>0&(c|0)>=(d|0)|(c|0)>(d|0)){break b}f=l+H[g>>2]|0;f=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[g+16>>2]=e;H[g+20>>2]=c;break k}if(!Ea(1,u+44|0,g)){break b}f=H[u+44>>2]}if(!f){break b}d=H[H[a+4>>2]+32>>2];l=H[d+8>>2];c=H[d+16>>2];e=l-c|0;c=H[d+12>>2]-(H[d+20>>2]+(c>>>0>l>>>0)|0)|0;if((c|0)<=0&f>>>0>e>>>0|(c|0)<0){break b}g=Ha(u);d=H[H[a+4>>2]+32>>2];l=H[d+16>>2];e=(l+H[d>>2]|0)+f|0;c=H[d+8>>2]-l|0;G[g+38>>1]=J[d+38>>1];H[g>>2]=e;H[g+16>>2]=0;H[g+20>>2]=0;H[g+8>>2]=c-f;H[g+12>>2]=0;c=Ib(a,g);if((c|0)==-1){break b}E=c;P=c>>31;break j}E=-1;P=-1;if((Ib(a,H[f+32>>2])|0)==-1){break b}}B=a+232|0;Ee(B,a);H[a+372>>2]=k;H[a+384>>2]=H[a+156>>2]+b;x=Ha(u);g=x;d=0;l=ca-16|0;ca=l;l:{if(!Ge(B,g)){break l}b=H[g+20>>2];f=H[g+16>>2];c=f+4|0;b=c>>>0<4?b+1|0:b;e=H[g+12>>2];if(K[g+8>>2]>>0&(e|0)<=(b|0)|(b|0)>(e|0)){break l}f=f+H[g>>2]|0;f=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[g+16>>2]=c;H[g+20>>2]=b;if((f|0)<0){break l}b=f;f=H[B+152>>2];if((b|0)>=(f|0)){break l}H[l+12>>2]=0;c=H[B+156>>2];b=H[B+160>>2]-c>>2;m:{if(b>>>0>>0){Pa(B+156|0,f-b|0,l+12|0);break m}if(b>>>0<=f>>>0){break m}H[B+160>>2]=c+(f<<2)}d=ta(B+168|0,g)}ca=l+16|0;n:{if(!d){break n}d=0;c=0;f=0;l=0;i=ca-96|0;ca=i;H[i+72>>2]=0;H[i+64>>2]=0;H[i+68>>2]=0;H[i+48>>2]=0;H[i+52>>2]=0;H[i+40>>2]=0;H[i+44>>2]=0;H[i+56>>2]=1065353216;H[i+32>>2]=0;H[i+24>>2]=0;H[i+28>>2]=0;g=a;O=H[a+124>>2];o:{p:{q:{r:{s:{t:{if((t|0)<=0){break t}z=g+400|0;Q=g+232|0;C=H[g+216>>2]!=H[g+220>>2];y=1;while(1){e=l;l=e+1|0;u:{v:{w:{x:{y:{if(H[g+420>>2]!=-1){if(Ba(z)){break y}}if(!I[g+308|0]){break x}z:{o=H[g+296>>2];r=H[g+304>>2];a=o+(r>>>3|0)|0;k=H[g+300>>2];if(a>>>0>=k>>>0){break z}b=I[a|0];a=r+1|0;H[g+304>>2]=a;h=b>>>(r&7)&1;if(!h){break z}n=a>>>3|0;b=o+n|0;A:{if(b>>>0>=k>>>0){b=a;a=0;break A}j=I[b|0];b=r+2|0;H[g+304>>2]=b;n=b>>>3|0;a=j>>>(a&7)&1}j=n+o|0;if(j>>>0>>0){j=I[j|0];H[g+304>>2]=b+1;b=j>>>(b&7)<<1&2}else{b=0}p=(a|b)<<1|h;H[g+416>>2]=p;break w}H[g+416>>2]=0;break x}p=H[g+420>>2];H[g+416>>2]=p;if(p){break w}}if((c|0)==(f|0)){b=-1;break s}p=-1;n=H[g+8>>2];o=H[n+24>>2];j=c-4|0;m=H[j>>2];d=-1;B:{if((m|0)==-1){break B}b=m+1|0;b=(b>>>0)%3|0?b:m-2|0;d=-1;if((b|0)==-1){break B}d=H[H[n>>2]+(b<<2)>>2]}b=H[o+(d<<2)>>2];if((b|0)!=-1){a=b+1|0;p=(a>>>0)%3|0?a:b-2|0}if((m|0)==(p|0)){b=-1;break s}if((m|0)!=-1){b=-1;if(H[H[n+12>>2]+(m<<2)>>2]!=-1){break s}}k=H[n+12>>2];if((p|0)!=-1){b=-1;if(H[k+(p<<2)>>2]!=-1){break s}}q=N(e,3);a=q+1|0;H[k+(m<<2)>>2]=a;h=a<<2;H[h+k>>2]=m;r=q+2|0;H[k+(p<<2)>>2]=r;e=r<<2;H[e+k>>2]=p;k=-1;a=-1;C:{if((m|0)==-1){break C}D:{if((m>>>0)%3|0){b=m-1|0;break D}b=m+2|0;a=-1;if((b|0)==-1){break C}}a=H[H[n>>2]+(b<<2)>>2]}E:{if((p|0)==-1){break E}b=p+1|0;b=(b>>>0)%3|0?b:p-2|0;if((b|0)==-1){break E}k=H[H[n>>2]+(b<<2)>>2]}b=-1;if((a|0)==(d|0)|(d|0)==(k|0)){break s}b=H[n>>2];H[b+(q<<2)>>2]=d;H[b+h>>2]=k;H[b+e>>2]=a;if((a|0)!=-1){H[o+(a<<2)>>2]=r}b=H[g+120>>2]+(d>>>3&536870908)|0;a=H[b>>2];R=b,S=Vj(d)&a,H[R>>2]=S;H[j>>2]=q;p=H[c-4>>2];break v}b=-1;F:{G:{H:{I:{J:{K:{L:{M:{N:{O:{P:{switch(p-1|0){case 2:case 4:if((c|0)==(f|0)){break s}h=c-4|0;m=H[h>>2];r=H[g+8>>2];d=H[r+12>>2];if((m|0)!=-1&H[d+(m<<2)>>2]!=-1){break s}q=N(e,3);k=(p|0)==5;j=q+(k?2:1)|0;a=j<<2;H[a+d>>2]=m;H[d+(m<<2)>>2]=j;Ka(r+24|0,11424);d=H[g+8>>2];o=H[d+24>>2];if(H[d+28>>2]-o>>2>(O|0)){break s}n=H[d>>2];p=n+a|0;d=H[r+28>>2];b=H[r+24>>2];a=(d-b>>2)-1|0;H[p>>2]=a;if((b|0)!=(d|0)){H[o+(a<<2)>>2]=j}d=k?q:q+2|0;j=n+(k+q<<2)|0;Q:{if((m|0)==-1){H[n+(d<<2)>>2]=-1;b=-1;break Q}R:{S:{T:{if((m>>>0)%3|0){a=m-1|0;break T}a=m+2|0;if((a|0)==-1){break S}}a=H[n+(a<<2)>>2];H[n+(d<<2)>>2]=a;if((a|0)==-1){break R}H[o+(a<<2)>>2]=d;break R}H[n+(d<<2)>>2]=-1}a=m+1|0;a=(a>>>0)%3|0?a:m-2|0;b=-1;if((a|0)==-1){break Q}b=H[n+(a<<2)>>2]}H[j>>2]=b;H[h>>2]=q;break O;case 0:if((c|0)==(d|0)){break s}a=c-4|0;m=H[a>>2];H[i+68>>2]=a;k=H[i+44>>2];U:{if(!k){c=a;break U}o=H[i+40>>2];h=Uj(k)>>>0>1;b=e&k+2147483647;V:{if(!h){break V}b=e;if(b>>>0>>0){break V}b=(e>>>0)%(k>>>0)|0}j=b;b=H[o+(j<<2)>>2];if(!b){c=a;break U}b=H[b>>2];if(!b){c=a;break U}W:{if(!h){k=k-1|0;while(1){h=H[b+4>>2];X:{if((h|0)!=(e|0)){if((j|0)==(h&k)){break X}c=a;break U}if((e|0)==H[b+8>>2]){break W}}b=H[b>>2];if(b){continue}break}c=a;break U}while(1){h=H[b+4>>2];Y:{if((h|0)!=(e|0)){if(h>>>0>=k>>>0){h=(h>>>0)%(k>>>0)|0}if((h|0)==(j|0)){break Y}c=a;break U}if((e|0)==H[b+8>>2]){break W}}b=H[b>>2];if(b){continue}break}c=a;break U}if((a|0)!=(A|0)){H[a>>2]=H[b+12>>2];H[i+68>>2]=c;break U}h=A-d|0;c=h>>2;f=c+1|0;if(f>>>0>=1073741824){break M}a=h>>>1|0;h=h>>>0>=2147483644?1073741823:a>>>0>f>>>0?a:f;if(h){if(h>>>0>=1073741824){break p}a=pa(h<<2)}else{a=0}f=a+(c<<2)|0;H[f>>2]=H[b+12>>2];c=f+4|0;if((d|0)!=(A|0)){while(1){f=f-4|0;A=A-4|0;H[f>>2]=H[A>>2];if((d|0)!=(A|0)){continue}break}}A=a+(h<<2)|0;H[i+72>>2]=A;H[i+68>>2]=c;H[i+64>>2]=f;if(d){oa(d)}}if((c|0)==(f|0)){break G}j=c-4|0;n=H[j>>2];if((n|0)==(m|0)){break G}d=(n|0)==-1;q=H[g+8>>2];if(!d&H[H[q+12>>2]+(n<<2)>>2]!=-1){break G}r=H[q+12>>2];if((m|0)!=-1&H[r+(m<<2)>>2]!=-1){break G}p=N(e,3);e=p+2|0;H[r+(n<<2)>>2]=e;o=e<<2;H[o+r>>2]=n;a=p+1|0;H[r+(m<<2)>>2]=a;b=a<<2;H[b+r>>2]=m;if(d){break L}if((n>>>0)%3|0){k=n-1|0;break J}k=n+2|0;if((k|0)!=-1){break J}d=H[q>>2];a=-1;break I;case 6:break P;default:break s}}a=H[g+8>>2];Ka(a+24|0,11424);h=H[g+8>>2];p=N(e,3);q=H[a+28>>2];r=H[a+24>>2];o=q-r|0;n=o>>2;k=n-1|0;H[H[h>>2]+(p<<2)>>2]=k;Ka(h+24|0,11424);j=p+1|0;H[H[h>>2]+(j<<2)>>2]=(H[h+28>>2]-H[h+24>>2]>>2)-1;a=H[g+8>>2];Ka(a+24|0,11424);h=p+2|0;H[H[a>>2]+(h<<2)>>2]=(H[a+28>>2]-H[a+24>>2]>>2)-1;a=H[g+8>>2];m=H[a+24>>2];if(H[a+28>>2]-m>>2>(O|0)){break s}Z:{_:{if((q|0)!=(r|0)){H[m+(k<<2)>>2]=p;b=0;if((o|0)==-4){break _}}H[m+(n<<2)>>2]=j;b=n+1|0;if((b|0)==-1){break Z}}H[m+(b<<2)>>2]=h}if((c|0)!=(A|0)){H[c>>2]=p;c=c+4|0;H[i+68>>2]=c;break N}h=c-d|0;b=h>>2;f=b+1|0;if(f>>>0>=1073741824){break K}a=h>>>1|0;h=h>>>0>=2147483644?1073741823:a>>>0>f>>>0?a:f;if(h){if(h>>>0>=1073741824){break p}a=pa(h<<2)}else{a=0}f=a+(b<<2)|0;H[f>>2]=p;A=a+(h<<2)|0;a=f+4|0;if((c|0)!=(d|0)){while(1){f=f-4|0;c=c-4|0;H[f>>2]=H[c>>2];if((c|0)!=(d|0)){continue}break}}H[i+72>>2]=A;H[i+68>>2]=a;H[i+64>>2]=f;if(d){oa(d)}c=a}d=f}De(Q,H[c-4>>2]);h=H[g+40>>2];if((h|0)==H[g+36>>2]){break u}b=h-12|0;a=H[b+4>>2];k=(e^-1)+t|0;if(a>>>0>k>>>0){break G}if((a|0)!=(k|0)){break u}e=I[h-4|0];a=H[b>>2];H[g+40>>2]=b;if((a|0)<0){break G}h=c-4|0;j=H[h>>2];H[i+20>>2]=(a^-1)+t;a=i+20|0;H[i+88>>2]=a;Gb(i,i+40|0,a,i+88|0);b=H[i>>2];$:{if(e&1){a=-1;if((j|0)==-1){break $}a=j+1|0;a=(a>>>0)%3|0?a:j-2|0;break $}a=-1;if((j|0)==-1){break $}a=j-1|0;if((j>>>0)%3|0){break $}a=j+2|0}H[b+12>>2]=a;b=H[g+40>>2];if((b|0)==H[g+36>>2]){break u}while(1){j=b-12|0;a=H[j+4>>2];if(a>>>0>k>>>0){break G}if((a|0)!=(k|0)){break u}e=I[b-4|0];a=H[j>>2];H[g+40>>2]=j;if((a|0)<0){break G}j=H[h>>2];H[i+20>>2]=(a^-1)+t;a=i+20|0;H[i+88>>2]=a;Gb(i,i+40|0,a,i+88|0);b=H[i>>2];aa:{if(e&1){a=-1;if((j|0)==-1){break aa}a=j+1|0;a=(a>>>0)%3|0?a:j-2|0;break aa}a=-1;if((j|0)==-1){break aa}a=j-1|0;if((j>>>0)%3|0){break aa}a=j+2|0}H[b+12>>2]=a;b=H[g+40>>2];if((b|0)!=H[g+36>>2]){continue}break}break u}sa();v()}k=-1;d=H[q>>2];H[d+(p<<2)>>2]=-1;h=-1;break H}sa();v()}d=H[q>>2];a=H[d+(k<<2)>>2]}k=a;H[(p<<2)+d>>2]=a;a=n+1|0;a=(a>>>0)%3|0?a:n-2|0;h=-1;if((a|0)==-1){break H}h=H[(a<<2)+d>>2]}H[b+d>>2]=h;ba:{if((m|0)==-1){H[d+o>>2]=-1;n=-1;a=-1;break ba}ca:{da:{ea:{if((m>>>0)%3|0){b=m-1|0;break ea}b=m+2|0;if((b|0)==-1){break da}}a=H[(b<<2)+d>>2];H[d+o>>2]=a;if((a|0)==-1){break ca}H[H[q+24>>2]+(a<<2)>>2]=e;break ca}H[d+o>>2]=-1}n=-1;b=m+1|0;b=(b>>>0)%3|0?b:m-2|0;a=-1;if((b|0)==-1){break ba}n=H[(b<<2)+d>>2];a=b}h=H[g+388>>2];e=k<<2;b=h+e|0;o=b;m=H[b>>2];b=n<<2;H[o>>2]=m+H[b+h>>2];h=b;b=H[q+24>>2];o=h+b|0;if((k|0)!=-1){H[b+e>>2]=H[o>>2]}b=a;while(1){if((b|0)==-1){break F}H[(b<<2)+d>>2]=k;h=b+1|0;b=(h>>>0)%3|0?h:b-2|0;e=-1;fa:{if((b|0)==-1){break fa}h=H[r+(b<<2)>>2];e=-1;if((h|0)==-1){break fa}b=h+1|0;e=(b>>>0)%3|0?b:h-2|0}b=e;if((a|0)!=(b|0)){continue}break}}b=-1;if(!(y&1)){break t}break s}H[o>>2]=-1;ga:{if(C){break ga}if((D|0)!=(L|0)){H[L>>2]=n;L=L+4|0;H[i+28>>2]=L;break ga}d=D-s|0;b=d>>2;e=b+1|0;if(e>>>0>=1073741824){break q}a=d>>>1|0;e=d>>>0>=2147483644?1073741823:a>>>0>e>>>0?a:e;if(e){if(e>>>0>=1073741824){break p}a=pa(e<<2)}else{a=0}b=a+(b<<2)|0;H[b>>2]=n;L=b+4|0;if((s|0)!=(D|0)){while(1){b=b-4|0;D=D-4|0;H[b>>2]=H[D>>2];if((s|0)!=(D|0)){continue}break}}D=a+(e<<2)|0;H[i+32>>2]=D;H[i+28>>2]=L;H[i+24>>2]=b;if(s){oa(s)}s=b}H[j>>2]=p}De(Q,p);d=f}y=(l|0)<(t|0);if((l|0)!=(t|0)){continue}break}l=t}b=-1;y=H[g+8>>2];if(H[y+28>>2]-H[y+24>>2]>>2>(O|0)){break s}if((c|0)!=(f|0)){r=g+72|0;j=g+60|0;t=g+312|0;while(1){c=c-4|0;z=H[c>>2];H[i+68>>2]=c;ha:{ia:{ja:{if(J[g+270>>1]<=513){if(!I[g+364|0]){break ia}b=H[g+360>>2];a=H[g+352>>2]+(b>>>3|0)|0;if(a>>>0>=K[g+356>>2]){break ja}a=I[a|0];H[g+360>>2]=b+1;if(!(a>>>(b&7)&1)){break ja}break ia}if(Ba(t)){break ia}}ka:{la:{b=H[g+64>>2];e=H[g+68>>2];if((b|0)==e<<5){if((b+1|0)<0){break la}if(b>>>0<=1073741822){e=e<<6;b=(b&-32)+32|0;a=b>>>0>>0?e:b}else{a=2147483647}pb(j,a);b=H[g+64>>2]}H[g+64>>2]=b+1;e=H[g+60>>2]+(b>>>3&536870908)|0;a=H[e>>2];R=e,S=Vj(b)&a,H[R>>2]=S;b=H[g+76>>2];if((b|0)!=H[g+80>>2]){H[b>>2]=z;H[g+76>>2]=b+4;break ha}s=H[r>>2];h=b-s|0;e=h>>2;d=e+1|0;if(d>>>0>=1073741824){break ka}a=h>>>1|0;h=h>>>0>=2147483644?1073741823:a>>>0>d>>>0?a:d;if(h){if(h>>>0>=1073741824){break p}a=pa(h<<2)}else{a=0}d=a+(e<<2)|0;H[d>>2]=z;e=d+4|0;if((b|0)!=(s|0)){while(1){d=d-4|0;b=b-4|0;H[d>>2]=H[b>>2];if((b|0)!=(s|0)){continue}break}}H[g+80>>2]=a+(h<<2);H[g+76>>2]=e;H[g+72>>2]=d;if(!s){break ha}oa(s);break ha}sa();v()}sa();v()}q=H[g+8>>2];C=H[q>>2];if(((H[q+4>>2]-C>>2>>>0)/3|0)<=(l|0)){b=-1;break s}f=-1;b=-1;d=-1;s=H[q+24>>2];e=-1;ma:{if((z|0)==-1){break ma}a=z+1|0;a=(a>>>0)%3|0?a:z-2|0;e=-1;if((a|0)==-1){break ma}e=H[C+(a<<2)>>2]}o=H[s+(e<<2)>>2];na:{if((o|0)==-1){k=1;a=-1;break na}k=1;h=o+1|0;h=(h>>>0)%3|0?h:o-2|0;a=-1;if((h|0)==-1){break na}k=0;a=h+1|0;f=h;a=(a>>>0)%3|0?a:f-2|0;if((a|0)!=-1){a=H[C+(a<<2)>>2]}else{a=-1}}h=H[(a<<2)+s>>2];if((h|0)!=-1){d=h+1|0;d=(d>>>0)%3|0?d:h-2|0}if((f|0)==(z|0)|(d|0)==(z|0)|((z|0)!=-1&H[H[q+12>>2]+(z<<2)>>2]!=-1|(d|0)==(f|0))){break s}if(!k&H[H[q+12>>2]+(f<<2)>>2]!=-1){break s}k=-1;s=H[q+12>>2];h=-1;oa:{if((d|0)==-1){break oa}if(H[s+(d<<2)>>2]!=-1){break s}b=d+1|0;b=(b>>>0)%3|0?b:d-2|0;h=-1;if((b|0)==-1){break oa}h=H[C+(b<<2)>>2]}b=N(l,3);H[i>>2]=b;H[s+(b<<2)>>2]=z;H[s+(z<<2)>>2]=b;b=H[i>>2]+1|0;H[s+(b<<2)>>2]=f;H[s+(f<<2)>>2]=b;b=H[i>>2]+2|0;H[s+(b<<2)>>2]=d;H[s+(d<<2)>>2]=b;b=H[i>>2];H[C+(b<<2)>>2]=a;o=b+1|0;s=C+(o<<2)|0;H[s>>2]=h;h=b+2|0;d=C+(h<<2)|0;H[d>>2]=e;e=H[g+120>>2];f=o?a:-1;b=e+(f>>>3&536870908)|0;a=H[b>>2];R=b,S=Vj(f)&a,H[R>>2]=S;k=(o|0)!=-1?H[s>>2]:k;b=e+(k>>>3&536870908)|0;a=H[b>>2];R=b,S=Vj(k)&a,H[R>>2]=S;b=-1;b=(h|0)!=-1?H[d>>2]:b;f=e+(b>>>3&536870908)|0;a=H[f>>2];R=f,S=Vj(b)&a,H[R>>2]=S;F[i+88|0]=1;_c(j,i+88|0);Ka(r,i);l=l+1|0;f=H[i+64>>2]}if((c|0)!=(f|0)){continue}break}y=H[g+8>>2]}b=-1;if(((H[y+4>>2]-H[y>>2]>>2>>>0)/3|0)!=(l|0)){break s}b=H[y+28>>2]-H[y+24>>2]>>2;l=H[i+24>>2];e=H[i+28>>2];if((l|0)==(e|0)){break r}while(1){j=H[l>>2];a=H[y+24>>2];c=b-1|0;d=a+(c<<2)|0;if(H[d>>2]==-1){while(1){c=b-2|0;b=b-1|0;d=a+(c<<2)|0;if(H[d>>2]==-1){continue}break}}if(c>>>0>=j>>>0){H[i>>2]=y;d=H[d>>2];F[i+12|0]=1;H[i+8>>2]=d;H[i+4>>2]=d;if((d|0)!=-1){while(1){a=H[H[g+8>>2]>>2]+(d<<2)|0;if(H[a>>2]!=(c|0)){b=-1;break s}H[a>>2]=j;uc(i);d=H[i+8>>2];if((d|0)!=-1){continue}break}y=H[g+8>>2]}a=H[y+24>>2];f=a+(c<<2)|0;if((j|0)!=-1){H[a+(j<<2)>>2]=H[f>>2]}H[f>>2]=-1;h=1<>2];f=a+(j>>>3&536870908)|0;d=a+(c>>>3&536870908)|0;a=1<>2]&a){c=h|H[f>>2]}else{c=H[f>>2]&(h^-1)}H[f>>2]=c;H[d>>2]=H[d>>2]&(a^-1);b=b-1|0}l=l+4|0;if((e|0)!=(l|0)){continue}break}}l=H[i+24>>2]}if(l){oa(l)}a=H[i+48>>2];if(a){while(1){c=H[a>>2];oa(a);a=c;if(a){continue}break}}a=H[i+40>>2];H[i+40>>2]=0;if(a){oa(a)}a=H[i+64>>2];if(a){H[i+68>>2]=a;oa(a)}ca=i+96|0;break o}sa();v()}wa();v()}f=b;if((b|0)==-1){break n}b=H[x+16>>2];c=b+H[x>>2]|0;a=H[x+8>>2]-b|0;b=H[H[g+4>>2]+32>>2];G[b+38>>1]=J[b+38>>1];H[b>>2]=c;H[b+16>>2]=0;H[b+20>>2]=0;H[b+8>>2]=a;H[b+12>>2]=0;b=H[g+4>>2];a=J[b+36>>1];c=a<<8|a>>>8;if((c&65535)>>>0<=513){b=H[b+32>>2];e=b;a=H[b+16>>2];b=P+H[b+20>>2]|0;a=a+E|0;b=a>>>0>>0?b+1|0:b;H[e+16>>2]=a;H[e+20>>2]=b}pa:{if(H[g+216>>2]==H[g+220>>2]){break pa}a=H[g+8>>2];b=H[a>>2];a=H[a+4>>2];qa:{if((c&65535)>>>0>=513){if((a|0)==(b|0)){break pa}c=0;break qa}if((a|0)==(b|0)){break pa}c=0;while(1){if(cd(g,c)){c=c+3|0;a=H[g+8>>2];if(c>>>0>2]-H[a>>2]>>2>>>0){continue}break pa}break}break n}while(1){if(bd(g,c)){c=c+3|0;a=H[g+8>>2];if(c>>>0>2]-H[a>>2]>>2>>>0){continue}break pa}break}break n}ad(B);c=H[g+216>>2];if((c|0)!=H[g+220>>2]){t=0;while(1){e=N(t,144);Jc((e+c|0)+4|0,H[g+8>>2]);a=H[M>>2];b=a+e|0;c=H[b+132>>2];b=H[b+136>>2];if((c|0)!=(b|0)){while(1){Hc((e+H[M>>2]|0)+4|0,H[c>>2]);c=c+4|0;if((b|0)!=(c|0)){continue}break}a=H[M>>2]}if(!Ic((a+e|0)+4|0)){break n}t=t+1|0;c=H[g+216>>2];if(t>>>0<(H[g+220>>2]-c|0)/144>>>0){continue}break}}a=H[g+8>>2];Hb(g+184|0,H[a+28>>2]-H[a+24>>2]>>2);w=H[g+216>>2];if((w|0)!=H[g+220>>2]){c=0;while(1){a=N(c,144)+w|0;b=H[a+60>>2]-H[a+56>>2]>>2;e=a+104|0;a=H[g+8>>2];a=H[a+28>>2]-H[a+24>>2]>>2;Hb(e,(a|0)<(b|0)?b:a);c=c+1|0;w=H[g+216>>2];if(c>>>0<(H[g+220>>2]-w|0)/144>>>0){continue}break}}w=$c(g,f)}break b}w=0}ca=u- -64|0;return w|0}function ki(a){a=a|0;var 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,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,L=0,M=0,O=0,P=0,Q=0;t=ca+-64|0;ca=t;H[a+132>>2]=0;if(H[a+148>>2]){d=H[a+144>>2];if(d){while(1){b=H[d>>2];oa(d);d=b;if(b){continue}break}}d=0;H[a+144>>2]=0;k=H[a+140>>2];a:{if(!k){break a}if(k>>>0>=4){b=k&-4;while(1){c=d<<2;H[c+H[a+136>>2]>>2]=0;H[H[a+136>>2]+(c|4)>>2]=0;H[H[a+136>>2]+(c|8)>>2]=0;H[H[a+136>>2]+(c|12)>>2]=0;d=d+4|0;e=e+4|0;if((b|0)!=(e|0)){continue}break}}b=k&3;if(!b){break a}while(1){H[H[a+136>>2]+(d<<2)>>2]=0;d=d+1|0;x=x+1|0;if((b|0)!=(x|0)){continue}break}}H[a+148>>2]=0}b:{c:{d=H[a+4>>2];x=I[d+36|0];b=x<<8|I[d+37|0];if(b>>>0<=513){f=H[d+32>>2];d:{if(b>>>0<=511){b=H[f+20>>2];e=H[f+16>>2];c=e+4|0;b=c>>>0<4?b+1|0:b;k=H[f+12>>2];if(K[f+8>>2]>>0&(k|0)<=(b|0)|(b|0)>(k|0)){break c}e=e+H[f>>2]|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[f+16>>2]=c;H[f+20>>2]=b;break d}if(!Ea(1,t,f)){break c}d=H[a+4>>2];x=I[d+36|0];e=H[t>>2]}H[a+132>>2]=e}f=H[d+32>>2];e:{f:{g:{if((x&255)>>>0<=1){x=0;b=H[f+20>>2];c=H[f+16>>2];e=c+4|0;b=e>>>0<4?b+1|0:b;k=H[f+12>>2];if(K[f+8>>2]>>0&(k|0)<=(b|0)|(b|0)>(k|0)){break b}c=c+H[f>>2]|0;c=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[t+60>>2]=c;H[f+16>>2]=e;H[f+20>>2]=b;H[a+156>>2]=c;l=a+156|0;break g}x=0;if(!Ea(1,t+60|0,f)){break b}d=H[a+4>>2];b=I[d+36|0];H[a+156>>2]=H[t+60>>2];l=a+156|0;if(b>>>0>1){break f}}f=H[d+32>>2];c=H[f+8>>2];k=H[f+12>>2];d=H[f+20>>2];e=H[f+16>>2];b=e+4|0;d=b>>>0<4?d+1|0:d;if(b>>>0>c>>>0&(d|0)>=(k|0)|(d|0)>(k|0)){break b}e=e+H[f>>2]|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[t+56>>2]=e;H[f+16>>2]=b;H[f+20>>2]=d;break e}if(!Ea(1,t+56|0,H[d+32>>2])){break b}e=H[t+56>>2]}if(e>>>0>1431655765|K[l>>2]>N(e,3)>>>0){break b}j=H[a+4>>2];y=H[j+32>>2];d=H[y+8>>2];f=H[y+12>>2];b=H[y+20>>2];m=H[y+16>>2];if((f|0)<=(b|0)&m>>>0>=d>>>0|(b|0)>(f|0)){break b}l=H[y>>2];g=I[l+m|0];c=y;k=m+1|0;C=k?b:b+1|0;H[c+16>>2]=k;H[c+20>>2]=C;h:{if(I[j+36|0]<=1){c=d;d=m+5|0;b=d>>>0<5?b+1|0:b;if(c>>>0>>0&(b|0)>=(f|0)|(b|0)>(f|0)){break b}c=k+l|0;l=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[t+52>>2]=l;H[y+16>>2]=d;H[y+20>>2]=b;break h}if(!Ea(1,t+52|0,y)){break b}l=H[t+52>>2]}if(e>>>0>>0|((l>>>0)/3|0)+l>>>0>>0){break b}d=H[a+4>>2];f=H[d+32>>2];i:{if(I[d+36|0]<=1){d=H[f+20>>2];b=H[f+16>>2];c=b+4|0;d=c>>>0<4?d+1|0:d;k=H[f+12>>2];if(K[f+8>>2]>>0&(k|0)<=(d|0)|(d|0)>(k|0)){break b}b=b+H[f>>2]|0;b=I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24);H[t+48>>2]=b;H[f+16>>2]=c;H[f+20>>2]=d;break i}if(!Ea(1,t+48|0,f)){break b}b=H[t+48>>2]}if(b>>>0>l>>>0){break b}H[a+28>>2]=H[a+24>>2];d=$b(pa(88));c=H[a+8>>2];H[a+8>>2]=d;if(c){cb(c);if(!H[a+8>>2]){break b}}H[a+164>>2]=H[a+160>>2];Jb(a+160|0,e);H[a+176>>2]=H[a+172>>2];Jb(a+172|0,e);H[a- -64>>2]=0;H[a+92>>2]=-1;H[a+84>>2]=-1;H[a+88>>2]=-1;H[a+40>>2]=H[a+36>>2];H[a+52>>2]=H[a+48>>2];H[a+76>>2]=H[a+72>>2];E=a+216|0;ed(E);dd(E,g);if(!Lc(H[a+8>>2],e,H[a+156>>2]+b|0)){break b}d=H[a+156>>2];F[t|0]=1;Oa(a+120|0,b+d|0,t);b=H[a+4>>2];d=J[b+36>>1];d=(d<<8|d>>>8)&65535;j:{if(d>>>0<=513){k=H[b+32>>2];k:{if(d>>>0<=511){b=H[k+20>>2];e=H[k+16>>2];d=e+4|0;b=d>>>0<4?b+1|0:b;c=H[k+12>>2];if(K[k+8>>2]>>0&(c|0)<=(b|0)|(b|0)>(c|0)){break b}e=e+H[k>>2]|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[k+16>>2]=d;H[k+20>>2]=b;break k}if(!Ea(1,t+44|0,k)){break b}e=H[t+44>>2]}if(!e){break b}k=H[H[a+4>>2]+32>>2];c=H[k+8>>2];d=H[k+16>>2];b=c-d|0;d=H[k+12>>2]-(H[k+20>>2]+(c>>>0>>0)|0)|0;if(b>>>0>>0&(d|0)<=0|(d|0)<0){break b}f=Ha(t);k=H[H[a+4>>2]+32>>2];c=H[k+16>>2];b=(c+H[k>>2]|0)+e|0;d=H[k+8>>2]-c|0;G[f+38>>1]=J[k+38>>1];H[f>>2]=b;H[f+16>>2]=0;H[f+20>>2]=0;H[f+8>>2]=d-e;H[f+12>>2]=0;d=Ib(a,f);if((d|0)==-1){break b}y=d;M=d>>31;break j}y=-1;M=-1;if((Ib(a,H[b+32>>2])|0)==-1){break b}}O=a+232|0;e=O;H[e+144>>2]=a;d=H[(ea[H[H[a>>2]+32>>2]](a)|0)+32>>2];b=H[d>>2]+H[d+16>>2]|0;d=H[(ea[H[H[a>>2]+32>>2]](a)|0)+32>>2];d=H[d+8>>2]-H[d+16>>2]|0;P=e,Q=J[H[(ea[H[H[a>>2]+32>>2]](a)|0)+32>>2]+38>>1],G[P+38>>1]=Q;H[e>>2]=b;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=d;H[e+12>>2]=0;H[a+372>>2]=g;C=Ha(t);l:{if(!Ge(e,C)){break l}b=0;d=0;e=0;k=0;i=ca-96|0;ca=i;H[i+72>>2]=0;H[i+64>>2]=0;H[i+68>>2]=0;H[i+48>>2]=0;H[i+52>>2]=0;H[i+40>>2]=0;H[i+44>>2]=0;H[i+56>>2]=1065353216;H[i+32>>2]=0;H[i+24>>2]=0;H[i+28>>2]=0;h=a;L=H[a+124>>2];m:{n:{o:{p:{q:{r:{if((l|0)<=0){break r}A=H[h+216>>2]!=H[h+220>>2];s=1;while(1){f=k;k=f+1|0;s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{if(!I[h+308|0]){break G}u=H[h+296>>2];g=H[h+304>>2];a=u+(g>>>3|0)|0;p=H[h+300>>2];if(a>>>0>=p>>>0){break G}c=I[a|0];a=g+1|0;H[h+304>>2]=a;m=c>>>(g&7)&1;if(!m){break G}n=0;j=a>>>3|0;c=u+j|0;H:{if(c>>>0>=p>>>0){g=a;a=0;break H}c=I[c|0];g=g+2|0;H[h+304>>2]=g;j=g>>>3|0;a=c>>>(a&7)&1}c=j+u|0;if(c>>>0

>>0){c=I[c|0];H[h+304>>2]=g+1;n=c>>>(g&7)<<1&2}j=-1;a=m|(a|n)<<1;switch(a-1|0){case 6:break D;case 0:break E;case 2:case 4:break F;default:break q}}if((d|0)==(e|0)){j=-1;break q}g=-1;q=H[h+8>>2];u=H[q+24>>2];p=d-4|0;s=H[p>>2];c=-1;I:{if((s|0)==-1){break I}b=s+1|0;b=(b>>>0)%3|0?b:s-2|0;c=-1;if((b|0)==-1){break I}c=H[H[q>>2]+(b<<2)>>2]}b=H[u+(c<<2)>>2];if((b|0)!=-1){a=b+1|0;g=(a>>>0)%3|0?a:b-2|0}if((g|0)==(s|0)){j=-1;break q}if((s|0)!=-1){j=-1;if(H[H[q+12>>2]+(s<<2)>>2]!=-1){break q}}b=H[q+12>>2];if((g|0)!=-1){j=-1;if(H[b+(g<<2)>>2]!=-1){break q}}n=N(f,3);a=n+1|0;H[b+(s<<2)>>2]=a;m=a<<2;H[m+b>>2]=s;r=n+2|0;H[b+(g<<2)>>2]=r;f=r<<2;H[f+b>>2]=g;o=-1;a=-1;J:{if((s|0)==-1){break J}K:{if((s>>>0)%3|0){b=s-1|0;break K}b=s+2|0;a=-1;if((b|0)==-1){break J}}a=H[H[q>>2]+(b<<2)>>2]}L:{if((g|0)==-1){break L}b=g+1|0;b=(b>>>0)%3|0?b:g-2|0;if((b|0)==-1){break L}o=H[H[q>>2]+(b<<2)>>2]}j=-1;if((a|0)==(c|0)|(c|0)==(o|0)){break q}b=H[q>>2];H[b+(n<<2)>>2]=c;H[b+m>>2]=o;H[b+f>>2]=a;if((a|0)!=-1){H[u+(a<<2)>>2]=r}b=H[h+120>>2]+(c>>>3&536870908)|0;a=H[b>>2];P=b,Q=Vj(c)&a,H[P>>2]=Q;H[p>>2]=n;b=e;break s}if((d|0)==(e|0)){break q}m=d-4|0;n=H[m>>2];r=H[h+8>>2];b=H[r+12>>2];if((n|0)!=-1&H[b+(n<<2)>>2]!=-1){break q}o=N(f,3);p=(a|0)==5;g=o+(p?2:1)|0;a=g<<2;H[a+b>>2]=n;H[b+(n<<2)>>2]=g;Ka(r+24|0,11424);b=H[h+8>>2];u=H[b+24>>2];if(H[b+28>>2]-u>>2>(L|0)){break q}j=H[b>>2];q=j+a|0;c=H[r+28>>2];b=H[r+24>>2];a=(c-b>>2)-1|0;H[q>>2]=a;if((b|0)!=(c|0)){H[u+(a<<2)>>2]=g}c=p?o:o+2|0;g=j+(o+p<<2)|0;M:{if((n|0)==-1){H[j+(c<<2)>>2]=-1;b=-1;break M}N:{O:{P:{if((n>>>0)%3|0){a=n-1|0;break P}a=n+2|0;if((a|0)==-1){break O}}a=H[j+(a<<2)>>2];H[j+(c<<2)>>2]=a;if((a|0)==-1){break N}H[u+(a<<2)>>2]=c;break N}H[j+(c<<2)>>2]=-1}a=n+1|0;a=(a>>>0)%3|0?a:n-2|0;b=-1;if((a|0)==-1){break M}b=H[j+(a<<2)>>2]}H[g>>2]=b;H[m>>2]=o;b=e;break y}if((b|0)==(d|0)){break q}a=d-4|0;q=H[a>>2];H[i+68>>2]=a;p=H[i+44>>2];Q:{if(!p){d=a;break Q}g=H[i+40>>2];j=Uj(p)>>>0>1;c=f&p+2147483647;R:{if(!j){break R}c=f;if(c>>>0

>>0){break R}c=(f>>>0)%(p>>>0)|0}m=c;c=H[g+(m<<2)>>2];if(!c){d=a;break Q}g=H[c>>2];if(!g){d=a;break Q}S:{if(!j){j=p-1|0;while(1){c=H[g+4>>2];T:{if((c|0)!=(f|0)){if((m|0)==(c&j)){break T}d=a;break Q}if((f|0)==H[g+8>>2]){break S}}g=H[g>>2];if(g){continue}break}d=a;break Q}while(1){c=H[g+4>>2];U:{if((c|0)!=(f|0)){if(c>>>0>=p>>>0){c=(c>>>0)%(p>>>0)|0}if((c|0)==(m|0)){break U}d=a;break Q}if((f|0)==H[g+8>>2]){break S}}g=H[g>>2];if(g){continue}break}d=a;break Q}if((a|0)!=(z|0)){H[a>>2]=H[g+12>>2];H[i+68>>2]=d;break Q}c=z-b|0;d=c>>2;e=d+1|0;if(e>>>0>=1073741824){break C}a=c>>>1|0;c=c>>>0>=2147483644?1073741823:a>>>0>e>>>0?a:e;if(c){if(c>>>0>=1073741824){break n}a=pa(c<<2)}else{a=0}e=a+(d<<2)|0;H[e>>2]=H[g+12>>2];d=e+4|0;if((b|0)!=(z|0)){while(1){e=e-4|0;z=z-4|0;H[e>>2]=H[z>>2];if((b|0)!=(z|0)){continue}break}}z=a+(c<<2)|0;H[i+72>>2]=z;H[i+68>>2]=d;H[i+64>>2]=e;if(b){oa(b)}}if((d|0)==(e|0)){break u}g=d-4|0;n=H[g>>2];if((n|0)==(q|0)){break u}b=(n|0)==-1;o=H[h+8>>2];if(!b&H[H[o+12>>2]+(n<<2)>>2]!=-1){break u}r=H[o+12>>2];if((q|0)!=-1&H[r+(q<<2)>>2]!=-1){break u}u=N(f,3);f=u+2|0;H[r+(n<<2)>>2]=f;p=f<<2;H[p+r>>2]=n;a=u+1|0;H[r+(q<<2)>>2]=a;c=a<<2;H[c+r>>2]=q;if(b){break B}if((n>>>0)%3|0){m=n-1|0;break x}m=n+2|0;if((m|0)!=-1){break x}a=H[o>>2];b=-1;break w}a=H[h+8>>2];Ka(a+24|0,11424);c=H[h+8>>2];q=N(f,3);r=H[a+28>>2];u=H[a+24>>2];p=r-u|0;o=p>>2;g=o-1|0;H[H[c>>2]+(q<<2)>>2]=g;Ka(c+24|0,11424);m=q+1|0;H[H[c>>2]+(m<<2)>>2]=(H[c+28>>2]-H[c+24>>2]>>2)-1;a=H[h+8>>2];Ka(a+24|0,11424);c=q+2|0;H[H[a>>2]+(c<<2)>>2]=(H[a+28>>2]-H[a+24>>2]>>2)-1;a=H[h+8>>2];n=H[a+24>>2];if(H[a+28>>2]-n>>2>(L|0)){break q}V:{W:{if((r|0)!=(u|0)){H[n+(g<<2)>>2]=q;j=0;if((p|0)==-4){break W}}H[n+(o<<2)>>2]=m;j=o+1|0;if((j|0)==-1){break V}}H[n+(j<<2)>>2]=c}if((d|0)!=(z|0)){H[d>>2]=q;d=d+4|0;H[i+68>>2]=d;break y}m=d-b|0;e=m>>2;c=e+1|0;if(c>>>0>=1073741824){break A}a=m>>>1|0;c=m>>>0>=2147483644?1073741823:a>>>0>c>>>0?a:c;if(c){if(c>>>0>=1073741824){break n}a=pa(c<<2)}else{a=0}e=a+(e<<2)|0;H[e>>2]=q;z=a+(c<<2)|0;a=e+4|0;if((b|0)!=(d|0)){while(1){e=e-4|0;d=d-4|0;H[e>>2]=H[d>>2];if((b|0)!=(d|0)){continue}break}}H[i+72>>2]=z;H[i+68>>2]=a;H[i+64>>2]=e;if(!b){break z}oa(b);break z}sa();v()}m=-1;a=H[o>>2];H[a+(u<<2)>>2]=-1;j=-1;break v}sa();v()}d=a;b=e}m=H[h+40>>2];if((m|0)==H[h+36>>2]){break s}c=m-12|0;a=H[c+4>>2];j=(f^-1)+l|0;if(a>>>0>j>>>0){break u}if((a|0)!=(j|0)){break s}f=I[m-4|0];a=H[c>>2];H[h+40>>2]=c;if((a|0)<0){break u}m=d-4|0;g=H[m>>2];H[i+20>>2]=(a^-1)+l;a=i+20|0;H[i+88>>2]=a;Gb(i,i+40|0,a,i+88|0);c=H[i>>2];X:{if(f&1){a=-1;if((g|0)==-1){break X}a=g+1|0;a=(a>>>0)%3|0?a:g-2|0;break X}a=-1;if((g|0)==-1){break X}a=g-1|0;if((g>>>0)%3|0){break X}a=g+2|0}H[c+12>>2]=a;g=H[h+40>>2];if((g|0)==H[h+36>>2]){break s}while(1){c=g-12|0;a=H[c+4>>2];if(a>>>0>j>>>0){break u}if((a|0)!=(j|0)){break s}f=I[g-4|0];a=H[c>>2];H[h+40>>2]=c;if((a|0)<0){break u}g=H[m>>2];H[i+20>>2]=(a^-1)+l;a=i+20|0;H[i+88>>2]=a;Gb(i,i+40|0,a,i+88|0);c=H[i>>2];Y:{if(f&1){a=-1;if((g|0)==-1){break Y}a=g+1|0;a=(a>>>0)%3|0?a:g-2|0;break Y}a=-1;if((g|0)==-1){break Y}a=g-1|0;if((g>>>0)%3|0){break Y}a=g+2|0}H[c+12>>2]=a;g=H[h+40>>2];if((g|0)!=H[h+36>>2]){continue}break}break s}a=H[o>>2];b=H[a+(m<<2)>>2]}m=b;H[(u<<2)+a>>2]=b;b=n+1|0;b=(b>>>0)%3|0?b:n-2|0;j=-1;if((b|0)==-1){break v}j=H[(b<<2)+a>>2]}H[a+c>>2]=j;Z:{if((q|0)==-1){H[a+p>>2]=-1;n=-1;c=-1;break Z}_:{$:{aa:{if((q>>>0)%3|0){b=q-1|0;break aa}b=q+2|0;if((b|0)==-1){break $}}b=H[(b<<2)+a>>2];H[a+p>>2]=b;if((b|0)==-1){break _}H[H[o+24>>2]+(b<<2)>>2]=f;break _}H[a+p>>2]=-1}n=-1;b=q+1|0;b=(b>>>0)%3|0?b:q-2|0;c=-1;if((b|0)==-1){break Z}n=H[(b<<2)+a>>2];c=b}b=H[o+24>>2];p=b+(n<<2)|0;if((m|0)!=-1){H[b+(m<<2)>>2]=H[p>>2]}b=c;while(1){if((b|0)==-1){break t}H[(b<<2)+a>>2]=m;j=b+1|0;b=(j>>>0)%3|0?j:b-2|0;f=-1;ba:{if((b|0)==-1){break ba}j=H[r+(b<<2)>>2];f=-1;if((j|0)==-1){break ba}b=j+1|0;f=(b>>>0)%3|0?b:j-2|0}b=f;if((c|0)!=(b|0)){continue}break}}j=-1;if(!(s&1)){break r}break q}H[p>>2]=-1;ca:{if(A){break ca}if((B|0)!=(D|0)){H[D>>2]=n;D=D+4|0;H[i+28>>2]=D;break ca}f=B-w|0;b=f>>2;c=b+1|0;if(c>>>0>=1073741824){break o}a=f>>>1|0;c=f>>>0>=2147483644?1073741823:a>>>0>c>>>0?a:c;if(c){if(c>>>0>=1073741824){break n}a=pa(c<<2)}else{a=0}b=a+(b<<2)|0;H[b>>2]=n;D=b+4|0;if((w|0)!=(B|0)){while(1){b=b-4|0;B=B-4|0;H[b>>2]=H[B>>2];if((w|0)!=(B|0)){continue}break}}B=a+(c<<2)|0;H[i+32>>2]=B;H[i+28>>2]=D;H[i+24>>2]=b;if(w){oa(w)}w=b}H[g>>2]=u;b=e}s=(k|0)<(l|0);if((k|0)!=(l|0)){continue}break}k=l}j=-1;a=H[h+8>>2];if(H[a+28>>2]-H[a+24>>2]>>2>(L|0)){break q}if((d|0)!=(e|0)){u=h+72|0;m=h+60|0;p=h+312|0;while(1){d=d-4|0;o=H[d>>2];H[i+68>>2]=d;da:{ea:{fa:{if(J[h+270>>1]<=513){if(!I[h+364|0]){break ea}b=H[h+360>>2];a=H[h+352>>2]+(b>>>3|0)|0;if(a>>>0>=K[h+356>>2]){break fa}a=I[a|0];H[h+360>>2]=b+1;if(!(a>>>(b&7)&1)){break fa}break ea}if(Ba(p)){break ea}}ga:{ha:{b=H[h+64>>2];c=H[h+68>>2];if((b|0)==c<<5){if((b+1|0)<0){break ha}if(b>>>0<=1073741822){c=c<<6;b=(b&-32)+32|0;a=b>>>0>>0?c:b}else{a=2147483647}pb(m,a);b=H[h+64>>2]}H[h+64>>2]=b+1;c=H[h+60>>2]+(b>>>3&536870908)|0;a=H[c>>2];P=c,Q=Vj(b)&a,H[P>>2]=Q;b=H[h+76>>2];if((b|0)!=H[h+80>>2]){H[b>>2]=o;H[h+76>>2]=b+4;break da}l=H[u>>2];w=b-l|0;c=w>>2;f=c+1|0;if(f>>>0>=1073741824){break ga}a=w>>>1|0;f=w>>>0>=2147483644?1073741823:a>>>0>f>>>0?a:f;if(f){if(f>>>0>=1073741824){break n}a=pa(f<<2)}else{a=0}g=a+(c<<2)|0;H[g>>2]=o;c=g+4|0;if((b|0)!=(l|0)){while(1){g=g-4|0;b=b-4|0;H[g>>2]=H[b>>2];if((b|0)!=(l|0)){continue}break}}H[h+80>>2]=a+(f<<2);H[h+76>>2]=c;H[h+72>>2]=g;if(!l){break da}oa(l);break da}sa();v()}sa();v()}r=H[h+8>>2];A=H[r>>2];if(((H[r+4>>2]-A>>2>>>0)/3|0)<=(k|0)){j=-1;break q}a=-1;j=-1;b=-1;w=H[r+24>>2];f=-1;ia:{if((o|0)==-1){break ia}e=o+1|0;e=(e>>>0)%3|0?e:o-2|0;f=-1;if((e|0)==-1){break ia}f=H[A+(e<<2)>>2]}l=H[w+(f<<2)>>2];ja:{if((l|0)==-1){g=1;e=-1;break ja}g=1;c=l+1|0;c=(c>>>0)%3|0?c:l-2|0;e=-1;if((c|0)==-1){break ja}g=0;a=c;e=a+1|0;e=(e>>>0)%3|0?e:a-2|0;if((e|0)!=-1){e=H[A+(e<<2)>>2]}else{e=-1}}c=H[(e<<2)+w>>2];if((c|0)!=-1){b=c+1|0;b=(b>>>0)%3|0?b:c-2|0}if((a|0)==(o|0)|(b|0)==(o|0)|((o|0)!=-1&H[H[r+12>>2]+(o<<2)>>2]!=-1|(a|0)==(b|0))){break q}if(!g&H[H[r+12>>2]+(a<<2)>>2]!=-1){break q}g=-1;l=H[r+12>>2];w=-1;ka:{if((b|0)==-1){break ka}if(H[l+(b<<2)>>2]!=-1){break q}c=b+1|0;c=(c>>>0)%3|0?c:b-2|0;w=-1;if((c|0)==-1){break ka}w=H[A+(c<<2)>>2]}c=N(k,3);H[i>>2]=c;H[l+(c<<2)>>2]=o;H[l+(o<<2)>>2]=c;c=H[i>>2]+1|0;H[l+(c<<2)>>2]=a;H[l+(a<<2)>>2]=c;a=H[i>>2]+2|0;H[l+(a<<2)>>2]=b;H[l+(b<<2)>>2]=a;a=H[i>>2];H[A+(a<<2)>>2]=e;j=a+1|0;l=A+(j<<2)|0;H[l>>2]=w;w=a+2|0;c=A+(w<<2)|0;H[c>>2]=f;f=H[h+120>>2];e=j?e:-1;b=f+(e>>>3&536870908)|0;a=H[b>>2];P=b,Q=Vj(e)&a,H[P>>2]=Q;g=(j|0)!=-1?H[l>>2]:g;b=f+(g>>>3&536870908)|0;a=H[b>>2];P=b,Q=Vj(g)&a,H[P>>2]=Q;b=-1;b=(w|0)!=-1?H[c>>2]:b;e=f+(b>>>3&536870908)|0;a=H[e>>2];P=e,Q=Vj(b)&a,H[P>>2]=Q;F[i+88|0]=1;_c(m,i+88|0);Ka(u,i);k=k+1|0;e=H[i+64>>2]}if((d|0)!=(e|0)){continue}break}a=H[h+8>>2]}j=-1;if(((H[a+4>>2]-H[a>>2]>>2>>>0)/3|0)!=(k|0)){break q}j=H[a+28>>2]-H[a+24>>2]>>2;s=H[i+24>>2];c=H[i+28>>2];if((s|0)==(c|0)){break p}while(1){k=H[s>>2];d=H[a+24>>2];b=j-1|0;g=d+(b<<2)|0;if(H[g>>2]==-1){while(1){b=j-2|0;j=j-1|0;g=d+(b<<2)|0;if(H[g>>2]==-1){continue}break}}if(b>>>0>=k>>>0){H[i>>2]=a;g=H[g>>2];F[i+12|0]=1;H[i+8>>2]=g;H[i+4>>2]=g;if((g|0)!=-1){while(1){a=H[H[h+8>>2]>>2]+(g<<2)|0;if(H[a>>2]!=(b|0)){j=-1;break q}H[a>>2]=k;uc(i);g=H[i+8>>2];if((g|0)!=-1){continue}break}a=H[h+8>>2]}d=H[a+24>>2];e=d+(b<<2)|0;if((k|0)!=-1){H[d+(k<<2)>>2]=H[e>>2]}H[e>>2]=-1;f=1<>2];e=d+(k>>>3&536870908)|0;k=d+(b>>>3&536870908)|0;d=1<>2]&d){b=f|H[e>>2]}else{b=H[e>>2]&(f^-1)}H[e>>2]=b;H[k>>2]=H[k>>2]&(d^-1);j=j-1|0}s=s+4|0;if((c|0)!=(s|0)){continue}break}}s=H[i+24>>2]}if(s){oa(s)}a=H[i+48>>2];if(a){while(1){d=H[a>>2];oa(a);a=d;if(a){continue}break}}a=H[i+40>>2];H[i+40>>2]=0;if(a){oa(a)}a=H[i+64>>2];if(a){H[i+68>>2]=a;oa(a)}ca=i+96|0;a=j;break m}sa();v()}wa();v()}e=a;if((a|0)==-1){break l}b=H[C+16>>2];d=b+H[C>>2]|0;a=H[C+8>>2]-b|0;b=H[H[h+4>>2]+32>>2];G[b+38>>1]=J[b+38>>1];H[b>>2]=d;H[b+16>>2]=0;H[b+20>>2]=0;H[b+8>>2]=a;H[b+12>>2]=0;b=H[h+4>>2];a=J[b+36>>1];d=a<<8|a>>>8;if((d&65535)>>>0<=513){b=H[b+32>>2];c=b;a=H[b+16>>2];b=M+H[b+20>>2]|0;a=a+y|0;b=a>>>0>>0?b+1|0:b;H[c+16>>2]=a;H[c+20>>2]=b}la:{if(H[h+216>>2]==H[h+220>>2]){break la}a=H[h+8>>2];b=H[a>>2];a=H[a+4>>2];ma:{if((d&65535)>>>0>=513){if((a|0)==(b|0)){break la}d=0;break ma}if((a|0)==(b|0)){break la}d=0;while(1){if(cd(h,d)){d=d+3|0;a=H[h+8>>2];if(d>>>0>2]-H[a>>2]>>2>>>0){continue}break la}break}break l}while(1){if(bd(h,d)){d=d+3|0;a=H[h+8>>2];if(d>>>0>2]-H[a>>2]>>2>>>0){continue}break la}break}break l}ad(O);d=H[h+216>>2];if((d|0)!=H[h+220>>2]){l=0;while(1){c=N(l,144);Jc((c+d|0)+4|0,H[h+8>>2]);a=H[E>>2];b=a+c|0;d=H[b+132>>2];b=H[b+136>>2];if((d|0)!=(b|0)){while(1){Hc((c+H[E>>2]|0)+4|0,H[d>>2]);d=d+4|0;if((b|0)!=(d|0)){continue}break}a=H[E>>2]}if(!Ic((a+c|0)+4|0)){break l}l=l+1|0;d=H[h+216>>2];if(l>>>0<(H[h+220>>2]-d|0)/144>>>0){continue}break}}a=H[h+8>>2];Hb(h+184|0,H[a+28>>2]-H[a+24>>2]>>2);x=H[h+216>>2];if((x|0)!=H[h+220>>2]){d=0;while(1){a=N(d,144)+x|0;b=H[a+60>>2]-H[a+56>>2]>>2;c=a+104|0;a=H[h+8>>2];a=H[a+28>>2]-H[a+24>>2]>>2;Hb(c,(a|0)<(b|0)?b:a);d=d+1|0;x=H[h+216>>2];if(d>>>0<(H[h+220>>2]-x|0)/144>>>0){continue}break}}x=$c(h,e)}break b}x=0}ca=t- -64|0;return x|0}function Bg(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,J=0,K=0,L=0,M=0,O=0;B=c;c=0;m=ca-96|0;ca=m;l=m+16|0;ra(l,0,76);H[m+92>>2]=-1;H[m+8>>2]=0;H[m>>2]=0;H[m+4>>2]=0;r=ca-16|0;ca=r;H[l+68>>2]=0;H[l+72>>2]=0;H[l>>2]=b;s=ca-16|0;ca=s;u=b;a=H[b+20>>2];a:{if((H[b+24>>2]-a|0)<=0){break a}a=H[a>>2];if((a|0)==-1){break a}c=H[H[u+8>>2]+(a<<2)>>2]}b:{c:{d:{if(!c){a=0;break d}a=H[u+100>>2];e=H[u+96>>2];H[s+8>>2]=0;H[s>>2]=0;H[s+4>>2]=0;f=a-e|0;b=(f|0)/12|0;e:{if((a|0)==(e|0)){break e}if(b>>>0>=357913942){break c}d=pa(f);H[s>>2]=d;H[s+8>>2]=d+N(b,12);a=0;n=d;f=f-12|0;d=(f-((f>>>0)%12|0)|0)+12|0;f=ra(n,0,d);H[s+4>>2]=d+f;if(I[c+84|0]){c=b>>>0<=1?1:b;h=c&1;if(b>>>0>=2){g=c&-2;c=0;while(1){d=N(a,12);b=d+e|0;i=H[b+4>>2];j=H[b>>2];d=d+f|0;H[d+8>>2]=H[b+8>>2];H[d>>2]=j;H[d+4>>2]=i;d=N(a|1,12);b=d+e|0;i=H[b+4>>2];j=H[b>>2];d=d+f|0;H[d+8>>2]=H[b+8>>2];H[d>>2]=j;H[d+4>>2]=i;a=a+2|0;c=c+2|0;if((g|0)!=(c|0)){continue}break}}if(!h){break e}b=N(a,12);a=b+e|0;c=H[a+4>>2];e=H[a>>2];b=b+f|0;H[b+8>>2]=H[a+8>>2];H[b>>2]=e;H[b+4>>2]=c;break e}h=b>>>0<=1?1:b;a=H[c+68>>2];c=0;while(1){d=N(c,12);b=d+e|0;g=H[a+(H[b>>2]<<2)>>2];i=H[a+(H[b+4>>2]<<2)>>2];d=d+f|0;H[d+8>>2]=H[a+(H[b+8>>2]<<2)>>2];H[d+4>>2]=i;H[d>>2]=g;c=c+1|0;if((h|0)!=(c|0)){continue}break}}d=0;E=ca-16|0;ca=E;h=pa(88);$b(h);C=ca-16|0;ca=C;H[h+80>>2]=0;H[h+84>>2]=0;a=H[h+76>>2];H[h+76>>2]=0;if(a){oa(a)}H[h+68>>2]=0;H[h+72>>2]=0;b=h- -64|0;a=H[b>>2];H[b>>2]=0;if(a){oa(a)}g=H[s+4>>2];b=H[s>>2];c=(g-b|0)/12|0;a=N(c,3);f=H[h>>2];e=H[h+4>>2]-f>>2;f:{if(a>>>0>e>>>0){ue(h,a-e|0);g=H[s+4>>2];b=H[s>>2];c=(g-b|0)/12|0;break f}if(a>>>0>=e>>>0){break f}H[h+4>>2]=f+(a<<2)}g:{if((b|0)==(g|0)){break g}e=c>>>0<=1?1:c;g=e&1;a=H[h>>2];if(c>>>0>=2){i=e&-2;c=0;while(1){e=N(d,12);j=e+a|0;f=b+e|0;H[j>>2]=H[f>>2];H[a+(e|4)>>2]=H[f+4>>2];H[j+8>>2]=H[f+8>>2];f=N(d|1,12);e=f+a|0;f=b+f|0;H[e>>2]=H[f>>2];H[e+4>>2]=H[f+4>>2];H[e+8>>2]=H[f+8>>2];d=d+2|0;c=c+2|0;if((i|0)!=(c|0)){continue}break}}if(!g){break g}c=N(d,12);a=c+a|0;b=b+c|0;H[a>>2]=H[b>>2];H[a+4>>2]=H[b+4>>2];H[a+8>>2]=H[b+8>>2]}H[C+12>>2]=-1;a=0;e=0;g=0;f=ca-32|0;ca=f;h:{i:{w=C+12|0;j:{if(!w){break j}c=H[h+4>>2];j=H[h>>2];d=c-j|0;i=d>>2;n=H[h+12>>2];b=H[h+16>>2]-n>>2;k:{if(i>>>0>b>>>0){qb(h+12|0,i-b|0,13652);c=H[h+4>>2];j=H[h>>2];d=c-j|0;i=d>>2;break k}if(b>>>0<=i>>>0){break k}H[h+16>>2]=n+(i<<2)}H[f+24>>2]=0;H[f+16>>2]=0;H[f+20>>2]=0;b=(c|0)==(j|0);if(!b){if((d|0)<0){break i}e=pa(d);H[f+20>>2]=e;H[f+16>>2]=e;H[f+24>>2]=(i<<2)+e}l:{m:{n:{o:{p:{if(d){while(1){i=H[(a<<2)+j>>2];b=H[f+20>>2]-e>>2;q:{if(i>>>0>>0){break q}H[f>>2]=0;d=i+1|0;if(d>>>0>b>>>0){Pa(f+16|0,d-b|0,f);j=H[h>>2];c=H[h+4>>2];e=H[f+16>>2];break q}if(b>>>0<=d>>>0){break q}H[f+20>>2]=(d<<2)+e}b=(i<<2)+e|0;H[b>>2]=H[b>>2]+1;a=a+1|0;d=c-j|0;i=d>>2;if(a>>>0>>0){continue}break}break p}d=0;if(!b){break o}break n}if((c|0)==(j|0)){d=0;break n}if(d>>>0>=2147483645){break m}}d=pa(d<<1);ra(d,255,i<<3)}H[f+8>>2]=0;H[f>>2]=0;H[f+4>>2]=0;b=H[f+20>>2];a=b-e|0;t=a>>2;r:{s:{if((b|0)==(e|0)){break s}if((a|0)<0){break r}q=pa(a);H[f>>2]=q;H[f+8>>2]=(t<<2)+q;b=ra(q,0,a);H[f+4>>2]=b+a;c=t>>>0<=1?1:t;n=c&3;a=0;if(c-1>>>0>=3){o=c&-4;while(1){c=g<<2;H[c+b>>2]=a;x=c|4;a=H[c+e>>2]+a|0;H[x+b>>2]=a;y=c|8;a=a+H[e+x>>2]|0;H[y+b>>2]=a;c=c|12;a=a+H[e+y>>2]|0;H[c+b>>2]=a;a=a+H[c+e>>2]|0;g=g+4|0;p=p+4|0;if((o|0)!=(p|0)){continue}break}}if(!n){break s}while(1){c=g<<2;H[c+b>>2]=a;g=g+1|0;a=H[c+e>>2]+a|0;k=k+1|0;if((n|0)!=(k|0)){continue}break}}if(!i){break l}x=H[h+40>>2];y=H[h+12>>2];n=0;while(1){G=n<<2;a=G+j|0;k=-1;c=n+1|0;b=(c>>>0)%3|0?c:n-2|0;if((b|0)!=-1){k=H[(b<<2)+j>>2]}b=H[a>>2];t:{u:{if(!((n>>>0)%3|0)){p=-1;a=n+2|0;if((a|0)!=-1){p=H[(a<<2)+j>>2]}if(!((b|0)==(k|0)|(b|0)==(p|0))&(k|0)!=(p|0)){break u}x=x+1|0;H[h+40>>2]=x;c=n+3|0;break t}p=H[a-4>>2]}a=p<<2;A=H[a+e>>2];v:{w:{if((A|0)<=0){break w}a=H[a+q>>2];g=0;while(1){o=(a<<3)+d|0;z=H[o>>2];if((z|0)==-1){break w}x:{if((k|0)!=(z|0)){break x}o=H[o+4>>2];if((o|0)!=-1){z=H[(o<<2)+j>>2]}else{z=-1}if((z|0)==(b|0)){break x}while(1){y:{b=a;g=g+1|0;if((A|0)<=(g|0)){break y}a=b+1|0;J=(a<<3)+d|0;z=H[J>>2];K=(b<<3)+d|0;H[K+4>>2]=H[J+4>>2];H[K>>2]=z;if((z|0)!=-1){continue}}break}H[(b<<3)+d>>2]=-1;if((o|0)==-1){break w}H[y+G>>2]=o;H[y+(o<<2)>>2]=n;break v}a=a+1|0;g=g+1|0;if((A|0)!=(g|0)){continue}break}}a=k<<2;k=H[a+e>>2];if((k|0)<=0){break v}a=H[a+q>>2];g=0;while(1){b=(a<<3)+d|0;if(H[b>>2]==-1){H[b>>2]=p;H[b+4>>2]=n;break v}a=a+1|0;g=g+1|0;if((k|0)!=(g|0)){continue}break}}}n=c;if(n>>>0>>0){continue}break}break l}break i}sa();v()}H[w>>2]=t;if(q){oa(q)}if(d){oa(d)}a=H[f+16>>2];if(!a){break j}H[f+20>>2]=a;oa(a)}ca=f+32|0;x=(w|0)!=0;if(x){k=ca-32|0;ca=k;a=H[h>>2];g=H[h+4>>2];H[k+24>>2]=0;H[k+16>>2]=0;H[k+20>>2]=0;if((a|0)==(g|0)){c=g}else{a=g-a|0;if((a|0)<0){break i}a=a>>2;b=(a-1>>>5|0)+1|0;c=pa(b<<2);H[k+24>>2]=b;H[k+20>>2]=0;H[k+16>>2]=c;Mc(k+16|0,a);g=H[h>>2];c=H[h+4>>2]}H[k+8>>2]=0;H[k>>2]=0;while(1){z:{o=0;i=0;if((c|0)==(g|0)){break z}while(1){b=H[k+16>>2];A:{if(H[b+(i>>>3&536870908)>>2]>>>i&1){break A}c=H[k>>2];H[k+4>>2]=c;e=H[h+12>>2];a=i;while(1){B:{f=a+1|0;d=a;a=(f>>>0)%3|0?f:a-2|0;if((a|0)==-1){break B}a=H[e+(a<<2)>>2];if((a|0)==-1){break B}f=a+1|0;a=(f>>>0)%3|0?f:a-2|0;if((i|0)==(a|0)|(a|0)==-1){break B}if(!(H[b+(a>>>3&536870908)>>2]>>>a&1)){continue}}break}j=d;C:{D:{E:{while(1){a=H[k+16>>2]+(j>>>3&536870908)|0;H[a>>2]=H[a>>2]|1<>>0)%3|0?a:j-2|0;g=H[h>>2];y=(j>>>0)%3|0;b=(y?-1:2)+j|0;n=H[k>>2];A=(n|0)==(c|0);F:{if(A){break F}w=H[(f<<2)+g>>2];q=H[h+12>>2];a=n;if((b|0)!=-1){e=q+(b<<2)|0;while(1){G:{if((w|0)!=H[a>>2]){break G}p=H[a+4>>2];t=H[e>>2];if((p|0)==(t|0)){break G}e=b;c=-1;a=-1;if((p|0)==-1){break C}break D}a=a+8|0;if((c|0)!=(a|0)){continue}break}break F}while(1){if((w|0)==H[a>>2]){t=-1;e=-1;p=H[a+4>>2];if((p|0)!=-1){break D}}a=a+8|0;if((c|0)!=(a|0)){continue}break}}b=H[(b<<2)+g>>2];H:{if(H[k+8>>2]!=(c|0)){H[c>>2]=b;H[c+4>>2]=f;c=c+8|0;H[k+4>>2]=c;break H}a=c-n|0;p=a>>3;e=p+1|0;if(e>>>0>=536870912){break i}g=a>>>2|0;g=a>>>0>=2147483640?536870911:e>>>0>>0?g:e;if(g){if(g>>>0>=536870912){break E}e=pa(g<<3)}else{e=0}a=e+(p<<3)|0;H[a>>2]=b;H[a+4>>2]=f;b=a+8|0;if(!A){while(1){c=c-8|0;f=H[c+4>>2];a=a-8|0;H[a>>2]=H[c>>2];H[a+4>>2]=f;if((c|0)!=(n|0)){continue}break}c=H[k>>2]}H[k+8>>2]=e+(g<<3);H[k+4>>2]=b;H[k>>2]=a;if(c){oa(c)}c=b}I:{J:{if(y){a=j-1|0;break J}a=j+2|0;if((a|0)==-1){break I}}a=H[H[h+12>>2]+(a<<2)>>2];if((a|0)==-1){break I}j=a+((a>>>0)%3|0?-1:2)|0;if((d|0)==(j|0)){break I}if((j|0)!=-1){continue}}break}g=H[h>>2];break A}wa();v()}c=H[q+(p<<2)>>2];b=e;a=p}if((t|0)!=-1){H[q+(t<<2)>>2]=-1}if((c|0)!=-1){H[q+(c<<2)>>2]=-1}H[q+(b<<2)>>2]=-1;H[q+(a<<2)>>2]=-1;o=1}i=i+1|0;c=H[h+4>>2];if(i>>>0>2>>>0){continue}break}if(o){continue}}break}a=H[k>>2];if(a){oa(a)}a=H[k+16>>2];if(a){oa(a)}ca=k+32|0;n=0;g=ca-32|0;ca=g;e=H[C+12>>2];H[h+36>>2]=e;p=h+24|0;b=H[h+24>>2];a=H[h+28>>2]-b>>2;K:{L:{if(a>>>0>>0){qb(p,e-a|0,13652);H[g+24>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;break L}if(a>>>0>e>>>0){H[h+28>>2]=b+(e<<2)}H[g+24>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;if(!e){break K}}if((e|0)<0){break i}a=(e-1>>>5|0)+1|0;b=pa(a<<2);H[g+24>>2]=a;H[g+20>>2]=0;H[g+16>>2]=b;Mc(g+16|0,e)}a=H[h>>2];b=H[h+4>>2];H[g+8>>2]=0;H[g>>2]=0;H[g+4>>2]=0;M:{if((a|0)==(b|0)){a=b}else{a=b-a|0;if((a|0)<0){break i}a=a>>2;b=(a-1>>>5|0)+1|0;c=pa(b<<2);H[g+8>>2]=b;H[g+4>>2]=0;H[g>>2]=c;Mc(g,a);b=H[h>>2];a=H[h+4>>2]}if(a-b>>>0<12){break M}N:{while(1){q=N(n,3);d=(q<<2)+b|0;f=H[d>>2];c=-1;i=q+1|0;if((i|0)!=-1){c=H[(i<<2)+b>>2]}O:{if((c|0)==(f|0)){break O}i=f;f=H[d+8>>2];if((i|0)==(f|0)|(c|0)==(f|0)){break O}k=0;i=H[g>>2];while(1){f=k+q|0;if(!(H[(f>>>3&536870908)+i>>2]>>>f&1)){a=H[(f<<2)+b>>2];c=1<>2];b=a>>>5|0;i=H[d+(b<<2)>>2];t=c&i;if(t){c=H[h+28>>2];P:{if((c|0)!=H[h+32>>2]){H[c>>2]=-1;H[h+28>>2]=c+4;break P}i=H[p>>2];b=c-i|0;o=b>>2;d=o+1|0;if(d>>>0>=1073741824){break i}j=b>>>1|0;j=b>>>0>=2147483644?1073741823:d>>>0>>0?j:d;if(j){if(j>>>0>=1073741824){break N}b=pa(j<<2)}else{b=0}d=b+(o<<2)|0;H[d>>2]=-1;o=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;H[d>>2]=H[c>>2];if((c|0)!=(i|0)){continue}break}}H[h+32>>2]=b+(j<<2);H[h+28>>2]=o;H[h+24>>2]=d;if(!i){break P}oa(i)}c=H[h+52>>2];Q:{if((c|0)!=H[h+56>>2]){H[c>>2]=a;H[h+52>>2]=c+4;break Q}i=H[h+48>>2];b=c-i|0;o=b>>2;d=o+1|0;if(d>>>0>=1073741824){break i}j=b>>>1|0;j=b>>>0>=2147483644?1073741823:d>>>0>>0?j:d;if(j){if(j>>>0>=1073741824){break N}b=pa(j<<2)}else{b=0}d=b+(o<<2)|0;H[d>>2]=a;a=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;H[d>>2]=H[c>>2];if((c|0)!=(i|0)){continue}break}}H[h+56>>2]=b+(j<<2);H[h+52>>2]=a;H[h+48>>2]=d;if(!i){break Q}oa(i)}c=H[g+20>>2];a=H[g+24>>2];if((c|0)==a<<5){if((c+1|0)<0){break i}b=g+16|0;if(c>>>0<=1073741822){a=a<<6;c=(c&-32)+32|0;a=a>>>0>c>>>0?a:c}else{a=2147483647}pb(b,a);c=H[g+20>>2]}H[g+20>>2]=c+1;d=H[g+16>>2];a=d+(c>>>3&536870908)|0;b=H[a>>2];M=a,O=Vj(c)&b,H[M>>2]=O;c=1<>>5|0;i=H[(b<<2)+d>>2];a=e;e=a+1|0}H[(b<<2)+d>>2]=c|i;o=H[h+24>>2]+(a<<2)|0;j=H[h+12>>2];b=H[h>>2];i=H[g>>2];c=f;R:{S:{T:{while(1){if((c|0)==-1){break T}d=(c>>>3&536870908)+i|0;H[d>>2]=H[d>>2]|1<>2]=c;if(t){H[(c<<2)+b>>2]=a}w=c+1|0;c=(w>>>0)%3|0?w:c-2|0;d=-1;U:{if((c|0)==-1){break U}c=H[j+(c<<2)>>2];d=-1;if((c|0)==-1){break U}d=c+1|0;d=(d>>>0)%3|0?d:c-2|0}c=d;if((f|0)!=(c|0)){continue}break}if((f|0)!=-1){break R}c=1;break S}if((f>>>0)%3|0){c=f-1|0;break S}c=f+2|0;if((c|0)==-1){break R}}c=H[j+(c<<2)>>2];if((c|0)==-1){break R}V:{if((c>>>0)%3|0){c=c-1|0;break V}c=c+2|0;if((c|0)==-1){break R}}f=H[h+12>>2];b=H[h>>2];while(1){d=(c>>>3&536870908)+i|0;H[d>>2]=H[d>>2]|1<>2]=a}W:{if((c>>>0)%3|0){c=c-1|0;break W}c=c+2|0;if((c|0)==-1){break R}}c=H[f+(c<<2)>>2];if((c|0)==-1){break R}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)!=-1){continue}break}}}k=k+1|0;if((k|0)!=3){continue}break}b=H[h>>2];a=H[h+4>>2]}n=n+1|0;if(n>>>0<(a-b>>2>>>0)/3>>>0){continue}break}break M}wa();v()}c=0;H[h+44>>2]=0;a=H[g+16>>2];b=H[g+20>>2];if(b){e=b&31;b=(b>>>3&536870908)+a|0;d=a;i=0;while(1){if(!(H[d>>2]>>>c&1)){i=i+1|0;H[h+44>>2]=i}f=(c|0)==31;c=f?0:c+1|0;d=(f<<2)+d|0;if((b|0)!=(d|0)|(c|0)!=(e|0)){continue}break}}b=H[g>>2];if(b){oa(b);a=H[g+16>>2]}if(a){oa(a)}ca=g+32|0}ca=C+16|0;if(!x){H[E+8>>2]=0;cb(h);h=0}ca=E+16|0;a=h;break h}sa();v()}b=H[s>>2];if(!b){break d}H[s+4>>2]=b;oa(b)}ca=s+16|0;break b}sa();v()}c=H[l+4>>2];b=a;H[l+4>>2]=a;if(c){cb(c);b=H[l+4>>2]}X:{if(!b){break X}a=H[u+100>>2];c=H[u+96>>2];F[r+12|0]=0;Oa(l+56|0,(a-c|0)/12|0,r+12|0);a=H[u+100>>2];c=H[u+96>>2];if((a|0)==(c|0)){break X}while(1){if(!(H[H[l+56>>2]+(D>>>3&536870908)>>2]>>>D&1)){a=N(D,3);Gc(l,0,a);c=H[l+8>>2];e=H[l+12>>2];Gc(l,1,a+1|0);f=H[l+20>>2];d=H[l+24>>2];Gc(l,2,a+2|0);n=(c|0)==(e|0)?-1:0;a=d-f>>2;c=e-c>>2;e=a>>>0>c>>>0;c=H[l+36>>2]-H[l+32>>2]>>2>>>0>(e?a:c)>>>0?2:e?1:n;Y:{if(H[l+68>>2]<=0){break Y}H[r+12>>2]=H[l+76>>2];H[r+8>>2]=m;bb(r+8|0,r+12|0);a=H[((c<<2)+l|0)+44>>2];if((a|0)<0){a=-1}else{e=(a>>>0)/3|0;a=H[(H[H[l>>2]+96>>2]+N(e,12)|0)+(a-N(e,3)<<2)>>2]}H[r+12>>2]=a;H[r+8>>2]=m;bb(r+8|0,r+12|0);e=H[l+72>>2];H[l+72>>2]=e+2;if(!(e&1)){break Y}H[r+12>>2]=a;H[r+8>>2]=m;bb(r+8|0,r+12|0);H[l+72>>2]=H[l+72>>2]+1}d=0;e=ca-16|0;ca=e;H[l+68>>2]=H[l+68>>2]+1;a=N(c,12)+l|0;a=H[a+12>>2]-H[a+8>>2]|0;if((a|0)>0){a=a>>>2|0;h=a>>>0<=1?1:a;c=H[((c<<2)+l|0)+44>>2];while(1){a=c;f=(a>>>0)/3|0;c=(a|0)==-1;g=c?-1:f;i=H[l+56>>2]+(g>>>3&536870908)|0;H[i>>2]=H[i>>2]|1<>2]=H[l+72>>2]+1;Z:{_:{$:{aa:{ba:{if(!d){ca:{if((a|0)>=0){H[e+12>>2]=H[(H[H[l>>2]+96>>2]+N(f,12)|0)+((a>>>0)%3<<2)>>2];H[e+8>>2]=m;bb(e+8|0,e+12|0);break ca}H[e+12>>2]=-1;H[e+8>>2]=m;bb(e+8|0,e+12|0);if(c){break ba}}c=-1;f=a+1|0;f=(f>>>0)%3|0?f:a-2|0;if((f|0)>=0){g=(f>>>0)/3|0;f=H[(H[H[l>>2]+96>>2]+N(g,12)|0)+(f-N(g,3)<<2)>>2]}else{f=-1}H[e+12>>2]=f;H[e+8>>2]=m;bb(e+8|0,e+12|0);f=((a>>>0)%3|0?-1:2)+a|0;if((f|0)<0){break aa}c=(f>>>0)/3|0;c=H[(H[H[l>>2]+96>>2]+N(c,12)|0)+(f-N(c,3)<<2)>>2];break aa}c=(a|0)<0?-1:H[(H[H[l>>2]+96>>2]+N(f,12)|0)+((a>>>0)%3<<2)>>2];H[l+76>>2]=c;H[e+12>>2]=c;H[e+8>>2]=m;bb(e+8|0,e+12|0);if(d&1){c=-1;if((a|0)==-1){break Z}if((N(f,3)|0)!=(a|0)){a=a-1|0;break _}a=a+2|0;break $}c=-1;if((a|0)==-1){break Z}c=a+1|0;a=(c>>>0)%3|0?c:a-2|0;break $}c=-1;H[e+12>>2]=-1;H[e+8>>2]=m;bb(e+8|0,e+12|0)}H[l+76>>2]=c;H[e+12>>2]=c;H[e+8>>2]=m;bb(e+8|0,e+12|0)}c=-1;if((a|0)==-1){break Z}}c=H[H[H[l+4>>2]+12>>2]+(a<<2)>>2]}d=d+1|0;if((h|0)!=(d|0)){continue}break}}ca=e+16|0;c=H[u+96>>2];a=H[u+100>>2]}D=D+1|0;if(D>>>0<(a-c|0)/12>>>0){continue}break}}ca=r+16|0;da:{if(b){a=H[B>>2];if(a){H[B+4>>2]=a;oa(a)}H[B>>2]=H[m>>2];H[B+4>>2]=H[m+4>>2];H[B+8>>2]=H[m+8>>2];L=H[m+84>>2];break da}a=H[m>>2];if(!a){break da}H[m+4>>2]=a;oa(a)}a=H[m+72>>2];if(a){oa(a)}a=H[m+48>>2];if(a){H[m+52>>2]=a;oa(a)}a=H[m+36>>2];if(a){H[m+40>>2]=a;oa(a)}a=H[m+24>>2];if(a){H[m+28>>2]=a;oa(a)}a=H[m+20>>2];H[m+20>>2]=0;if(a){cb(a)}ca=m+96|0;return L|0}function qg(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=b;a=0;b=0;a:{b:{switch(d-1|0){case 0:j=H[i+80>>2];h=I[c+24|0];c:{if((N(j,h)|0)!=(e|0)){break c}d=H[c+28>>2]!=1;b=I[c+84|0];if(!(d|!b)){qa(f,H[H[c>>2]>>2]+H[c+48>>2]|0,e);b=1;break c}if(h){a=pa(h);ra(a,0,h)}d:{if(!j){b=1;break d}if(!d){if(h){d=0;e=0;while(1){i=d+f|0;k=H[H[c>>2]>>2];m=H[c+48>>2];g=H[c+40>>2];b=Rj(g,H[c+44>>2],I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],0);n=b;b=b+m|0;qa(i,qa(a,b+k|0,g),h);d=d+h|0;b=1;e=e+1|0;if((j|0)!=(e|0)){continue}break}break d}if(b){b=1;h=H[c>>2];e=H[c+48>>2];f=H[c+40>>2];i=H[c+44>>2];if((j|0)!=1){g=j&-2;c=0;d=0;while(1){k=H[h>>2];m=Rj(f,i,c,0)+e|0;k=qa(a,k+m|0,f);m=H[h>>2];n=Rj(f,i,c|1,0)+e|0;qa(k,m+n|0,f);c=c+2|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}g=c}if(!(j&1)){break d}c=H[h>>2];d=Rj(g,0,f,i)+e|0;qa(a,c+d|0,f);break d}b=1;h=H[c>>2];e=H[c+48>>2];g=H[c+68>>2];f=H[c+40>>2];i=H[c+44>>2];c=0;if((j|0)!=1){k=j&-2;d=0;while(1){m=H[h>>2];n=c<<2;l=Rj(f,i,H[n+g>>2],0)+e|0;m=qa(a,m+l|0,f);l=H[h>>2];n=Rj(f,i,H[g+(n|4)>>2],0)+e|0;qa(m,l+n|0,f);c=c+2|0;d=d+2|0;if((k|0)!=(d|0)){continue}break}}if(!(j&1)){break d}d=H[h>>2];c=Rj(f,i,H[g+(c<<2)>>2],0)+e|0;qa(a,c+d|0,f);break d}b=0;if(!h){d=0;while(1){if(!ic(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],a)){break d}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break d}d=0;e=0;while(1){if(!ic(c,I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],F[c+24|0],a)){break d}qa(d+f|0,a,h);d=d+h|0;e=e+1|0;b=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}}if(!a){break c}oa(a)}break a;case 2:n=I[c+24|0];l=n<<1;j=H[i+80>>2];e:{if((N(l,j)|0)!=(e|0)){break e}i=H[c+28>>2]!=3;d=I[c+84|0];if(!(i|!d)){qa(f,H[H[c>>2]>>2]+H[c+48>>2]|0,e);a=1;break e}f:{if(!n){e=0;break f}e=pa(l);ra(e,0,l)}g:{if(!j){a=1;break g}if(!i){o=H[c+68>>2];k=H[c>>2];b=H[c+48>>2];i=H[c+40>>2];m=H[c+44>>2];if(n){if(!d){c=0;d=0;while(1){a=1;g=H[k>>2];p=Rj(i,m,H[o+(d<<2)>>2],0)+b|0;qa((c<<1)+f|0,qa(e,g+p|0,i),l);c=c+n|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break g}c=0;while(1){a=1;o=H[k>>2];p=Rj(g,h,i,m)+b|0;qa((c<<1)+f|0,qa(e,o+p|0,i),l);c=c+n|0;d=h;g=g+1|0;d=g?d:d+1|0;h=d;if((j|0)!=(g|0)|d){continue}break}break g}if(!d){a=1;c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=H[k>>2];g=c<<2;n=Rj(i,m,H[g+o>>2],0)+b|0;h=qa(e,h+n|0,i);n=H[k>>2];g=Rj(i,m,H[o+(g|4)>>2],0)+b|0;qa(h,g+n|0,i);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break g}d=H[k>>2];b=Rj(i,m,H[o+(c<<2)>>2],0)+b|0;qa(e,b+d|0,i);break g}n=j&1;a=1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){d=H[k>>2];l=Rj(g,h,i,m)+b|0;d=qa(e,d+l|0,i);l=H[k>>2];o=Rj(i,m,g|1,h)+b|0;qa(d,l+o|0,i);g=g+2|0;h=g>>>0<2?h+1|0:h;f=f+2|0;d=f>>>0<2?c+1|0:c;c=d;if((f|0)!=(j|0)|c){continue}break}}if(!n){break g}c=H[k>>2];b=Rj(g,h,i,m)+b|0;qa(e,b+c|0,i);break g}if(!n){d=0;while(1){if(!gc(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],e)){break g}d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break g}d=0;while(1){if(!gc(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],e)){break g}qa((b<<1)+f|0,e,l);b=b+n|0;d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break e}oa(e)}b=a;break a;case 4:l=I[c+24|0];o=l<<2;j=H[i+80>>2];h:{if((N(o,j)|0)!=(e|0)){break h}i=H[c+28>>2]!=5;d=I[c+84|0];if(!(i|!d)){qa(f,H[H[c>>2]>>2]+H[c+48>>2]|0,e);b=1;break h}i:{if(!l){e=0;break i}e=pa(o);ra(e,0,o)}b=1;j:{if(!j){break j}if(!i){a=H[c+68>>2];m=H[c>>2];i=H[c+48>>2];k=H[c+40>>2];n=H[c+44>>2];if(l){if(!d){c=0;d=0;while(1){g=H[m>>2];p=Rj(k,n,H[a+(d<<2)>>2],0)+i|0;qa((c<<2)+f|0,qa(e,g+p|0,k),o);c=c+l|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break j}c=0;while(1){d=H[m>>2];p=Rj(g,h,k,n)+i|0;qa((c<<2)+f|0,qa(e,d+p|0,k),o);c=c+l|0;g=g+1|0;a=g?h:h+1|0;h=a;if((j|0)!=(g|0)|h){continue}break}break j}if(!d){c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=H[m>>2];g=c<<2;l=Rj(k,n,H[g+a>>2],0)+i|0;h=qa(e,h+l|0,k);l=H[m>>2];g=Rj(k,n,H[a+(g|4)>>2],0)+i|0;qa(h,g+l|0,k);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break j}d=H[m>>2];a=Rj(k,n,H[a+(c<<2)>>2],0)+i|0;qa(e,a+d|0,k);break j}l=j&1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){a=H[m>>2];d=Rj(g,h,k,n)+i|0;a=qa(e,a+d|0,k);d=H[m>>2];o=Rj(k,n,g|1,h)+i|0;qa(a,d+o|0,k);d=h;g=g+2|0;h=g>>>0<2?d+1|0:d;f=f+2|0;a=f>>>0<2?c+1|0:c;c=a;if((f|0)!=(j|0)|c){continue}break}}if(!l){break j}a=H[m>>2];c=Rj(g,h,k,n)+i|0;qa(e,a+c|0,k);break j}b=0;if(!l){d=0;while(1){if(!ec(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],e)){break j}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break j}d=0;while(1){if(!ec(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],e)){break j}qa((a<<2)+f|0,e,o);a=a+l|0;d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break h}oa(e)}break a;case 1:j=H[i+80>>2];h=I[c+24|0];k:{if((N(j,h)|0)!=(e|0)){break k}d=H[c+28>>2]!=2;b=I[c+84|0];if(!(d|!b)){qa(f,H[H[c>>2]>>2]+H[c+48>>2]|0,e);b=1;break k}if(h){a=pa(h);ra(a,0,h)}l:{if(!j){b=1;break l}if(!d){if(h){d=0;e=0;while(1){i=d+f|0;k=H[H[c>>2]>>2];m=H[c+48>>2];g=H[c+40>>2];b=Rj(g,H[c+44>>2],I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],0);n=b;b=b+m|0;qa(i,qa(a,b+k|0,g),h);d=d+h|0;b=1;e=e+1|0;if((j|0)!=(e|0)){continue}break}break l}if(b){b=1;h=H[c>>2];e=H[c+48>>2];f=H[c+40>>2];i=H[c+44>>2];if((j|0)!=1){g=j&-2;c=0;d=0;while(1){k=H[h>>2];m=Rj(f,i,c,0)+e|0;k=qa(a,k+m|0,f);m=H[h>>2];n=Rj(f,i,c|1,0)+e|0;qa(k,m+n|0,f);c=c+2|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}g=c}if(!(j&1)){break l}c=H[h>>2];d=Rj(g,0,f,i)+e|0;qa(a,c+d|0,f);break l}b=1;h=H[c>>2];e=H[c+48>>2];g=H[c+68>>2];f=H[c+40>>2];i=H[c+44>>2];c=0;if((j|0)!=1){k=j&-2;d=0;while(1){m=H[h>>2];n=c<<2;l=Rj(f,i,H[n+g>>2],0)+e|0;m=qa(a,m+l|0,f);l=H[h>>2];n=Rj(f,i,H[g+(n|4)>>2],0)+e|0;qa(m,l+n|0,f);c=c+2|0;d=d+2|0;if((k|0)!=(d|0)){continue}break}}if(!(j&1)){break l}d=H[h>>2];c=Rj(f,i,H[g+(c<<2)>>2],0)+e|0;qa(a,c+d|0,f);break l}b=0;if(!h){d=0;while(1){if(!hc(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],a)){break l}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break l}d=0;e=0;while(1){if(!hc(c,I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],F[c+24|0],a)){break l}qa(d+f|0,a,h);d=d+h|0;e=e+1|0;b=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}}if(!a){break k}oa(a)}break a;case 3:n=I[c+24|0];l=n<<1;j=H[i+80>>2];m:{if((N(l,j)|0)!=(e|0)){break m}i=H[c+28>>2]!=4;d=I[c+84|0];if(!(i|!d)){qa(f,H[H[c>>2]>>2]+H[c+48>>2]|0,e);a=1;break m}n:{if(!n){e=0;break n}e=pa(l);ra(e,0,l)}o:{if(!j){a=1;break o}if(!i){o=H[c+68>>2];k=H[c>>2];b=H[c+48>>2];i=H[c+40>>2];m=H[c+44>>2];if(n){if(!d){c=0;d=0;while(1){a=1;g=H[k>>2];p=Rj(i,m,H[o+(d<<2)>>2],0)+b|0;qa((c<<1)+f|0,qa(e,g+p|0,i),l);c=c+n|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break o}c=0;while(1){a=1;o=H[k>>2];p=Rj(g,h,i,m)+b|0;qa((c<<1)+f|0,qa(e,o+p|0,i),l);c=c+n|0;d=h;g=g+1|0;d=g?d:d+1|0;h=d;if((j|0)!=(g|0)|d){continue}break}break o}if(!d){a=1;c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=H[k>>2];g=c<<2;n=Rj(i,m,H[g+o>>2],0)+b|0;h=qa(e,h+n|0,i);n=H[k>>2];g=Rj(i,m,H[o+(g|4)>>2],0)+b|0;qa(h,g+n|0,i);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break o}d=H[k>>2];b=Rj(i,m,H[o+(c<<2)>>2],0)+b|0;qa(e,b+d|0,i);break o}n=j&1;a=1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){d=H[k>>2];l=Rj(g,h,i,m)+b|0;d=qa(e,d+l|0,i);l=H[k>>2];o=Rj(i,m,g|1,h)+b|0;qa(d,l+o|0,i);g=g+2|0;h=g>>>0<2?h+1|0:h;f=f+2|0;d=f>>>0<2?c+1|0:c;c=d;if((f|0)!=(j|0)|c){continue}break}}if(!n){break o}c=H[k>>2];b=Rj(g,h,i,m)+b|0;qa(e,b+c|0,i);break o}if(!n){d=0;while(1){if(!fc(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],e)){break o}d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break o}d=0;while(1){if(!fc(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],e)){break o}qa((b<<1)+f|0,e,l);b=b+n|0;d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break m}oa(e)}b=a;break a;case 5:l=I[c+24|0];o=l<<2;j=H[i+80>>2];p:{if((N(o,j)|0)!=(e|0)){break p}i=H[c+28>>2]!=6;d=I[c+84|0];if(!(i|!d)){qa(f,H[H[c>>2]>>2]+H[c+48>>2]|0,e);b=1;break p}q:{if(!l){e=0;break q}e=pa(o);ra(e,0,o)}b=1;r:{if(!j){break r}if(!i){a=H[c+68>>2];m=H[c>>2];i=H[c+48>>2];k=H[c+40>>2];n=H[c+44>>2];if(l){if(!d){c=0;d=0;while(1){g=H[m>>2];p=Rj(k,n,H[a+(d<<2)>>2],0)+i|0;qa((c<<2)+f|0,qa(e,g+p|0,k),o);c=c+l|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break r}c=0;while(1){d=H[m>>2];p=Rj(g,h,k,n)+i|0;qa((c<<2)+f|0,qa(e,d+p|0,k),o);c=c+l|0;g=g+1|0;a=g?h:h+1|0;h=a;if((j|0)!=(g|0)|h){continue}break}break r}if(!d){c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=H[m>>2];g=c<<2;l=Rj(k,n,H[g+a>>2],0)+i|0;h=qa(e,h+l|0,k);l=H[m>>2];g=Rj(k,n,H[a+(g|4)>>2],0)+i|0;qa(h,g+l|0,k);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break r}d=H[m>>2];a=Rj(k,n,H[a+(c<<2)>>2],0)+i|0;qa(e,a+d|0,k);break r}l=j&1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){a=H[m>>2];d=Rj(g,h,k,n)+i|0;a=qa(e,a+d|0,k);d=H[m>>2];o=Rj(k,n,g|1,h)+i|0;qa(a,d+o|0,k);d=h;g=g+2|0;h=g>>>0<2?d+1|0:d;f=f+2|0;a=f>>>0<2?c+1|0:c;c=a;if((f|0)!=(j|0)|c){continue}break}}if(!l){break r}a=H[m>>2];c=Rj(g,h,k,n)+i|0;qa(e,a+c|0,k);break r}b=0;if(!l){d=0;while(1){if(!dc(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],e)){break r}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break r}d=0;while(1){if(!dc(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],e)){break r}qa((a<<2)+f|0,e,o);a=a+l|0;d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break p}oa(e)}break a;case 8:p=I[c+24|0];q=p<<2;k=H[i+80>>2];s:{if((N(q,k)|0)!=(e|0)){break s}i=H[c+28>>2];t:{if(!p){break t}a=pa(q);d=a;m=q-4|0;l=(m>>>2|0)+1&7;if(l){e=0;while(1){H[d>>2]=-1073741824;d=d+4|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}if(m>>>0<28){break t}e=(p<<2)+a|0;while(1){H[d+24>>2]=-1073741824;H[d+28>>2]=-1073741824;H[d+16>>2]=-1073741824;H[d+20>>2]=-1073741824;H[d+8>>2]=-1073741824;H[d+12>>2]=-1073741824;H[d>>2]=-1073741824;H[d+4>>2]=-1073741824;d=d+32|0;if((e|0)!=(d|0)){continue}break}}u:{if(!k){b=1;break u}if((i|0)==9){r=H[c+68>>2];l=H[c>>2];i=H[c+48>>2];s=I[c+84|0];m=H[c+44>>2];c=H[c+40>>2];o=c;if(p){e=0;d=0;while(1){h=(e<<2)+f|0;g=H[l>>2];b=Rj(c,m,s?d:H[r+(d<<2)>>2],0)+i|0;qa(h,qa(a,b+g|0,o),q);e=e+p|0;b=1;d=d+1|0;if((k|0)!=(d|0)){continue}break}break u}if(!s){b=1;d=0;if((k|0)!=1){f=k&-2;e=0;while(1){h=H[l>>2];g=d<<2;j=Rj(c,m,H[g+r>>2],0)+i|0;h=qa(a,h+j|0,o);j=H[l>>2];g=Rj(c,m,H[r+(g|4)>>2],0)+i|0;qa(h,j+g|0,o);d=d+2|0;e=e+2|0;if((f|0)!=(e|0)){continue}break}}if(!(k&1)){break u}e=H[l>>2];c=Rj(c,m,H[r+(d<<2)>>2],0)+i|0;qa(a,c+e|0,o);break u}f=k&1;b=1;if((k|0)!=1){k=k&-2;while(1){d=H[l>>2];e=Rj(g,h,c,m)+i|0;d=qa(a,d+e|0,o);e=H[l>>2];p=Rj(c,m,g|1,h)+i|0;qa(d,e+p|0,o);g=g+2|0;h=g>>>0<2?h+1|0:h;d=j;e=n+2|0;d=e>>>0<2?d+1|0:d;n=e;j=d;if((e|0)!=(k|0)|d){continue}break}}if(!f){break u}d=H[l>>2];c=Rj(g,h,c,m)+i|0;qa(a,c+d|0,o);break u}if(!p){d=0;while(1){if(!Va(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],a)){break u}d=d+1|0;b=k>>>0<=d>>>0;if((d|0)!=(k|0)){continue}break}break u}e=0;d=0;while(1){if(!Va(c,I[c+84|0]?d:H[H[c+68>>2]+(d<<2)>>2],F[c+24|0],a)){break u}qa((e<<2)+f|0,a,q);e=e+p|0;d=d+1|0;b=k>>>0<=d>>>0;if((d|0)!=(k|0)){continue}break}}if(!a){break s}oa(a)}a=b;break;default:break b}}b=a}return b|0}function ef(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,k=0,l=0;i=ca-48|0;ca=i;a:{b:{if((c|0)!=1){break b}c=H[a+4>>2];g=H[a+12>>2];H[i+40>>2]=0;a=i;H[a+32>>2]=0;H[a+36>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;e=a+8|0;c:{if((b|0)==-2){break c}l=H[H[H[c+4>>2]+8>>2]+(g<<2)>>2];if((ea[H[H[c>>2]+8>>2]](c)|0)==1){a=J[c+36>>1];j=(a<<8|a>>>8)&65535;a=0;h=ca-32|0;ca=h;d=H[H[H[c+4>>2]+8>>2]+(g<<2)>>2];d:{if((ea[H[H[c>>2]+8>>2]](c)|0)!=1|b-1>>>0>5){break d}k=ea[H[H[c>>2]+36>>2]](c)|0;f=ea[H[H[c>>2]+44>>2]](c,g)|0;if(!k|!f){break d}a=ea[H[H[c>>2]+40>>2]](c,g)|0;if(a){c=H[c+44>>2];H[h+12>>2]=a;H[h+8>>2]=c;H[h+20>>2]=f;H[h+16>>2]=f+12;c=h+8|0;a=0;e:{f:{switch(b-1|0){case 0:a=pa(60);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a>>2]=2564;break e;case 1:a=pa(60);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a>>2]=3328;break e;case 3:a=pa(112);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a+60>>2]=0;H[a+64>>2]=0;H[a>>2]=3564;H[a+68>>2]=0;H[a+72>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+84>>2]=0;H[a+88>>2]=0;H[a+92>>2]=0;H[a+96>>2]=0;H[a+100>>2]=0;H[a+104>>2]=0;H[a+108>>2]=0;break e;case 2:a=pa(92);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a+60>>2]=0;H[a+64>>2]=0;H[a>>2]=3812;H[a+68>>2]=0;H[a+72>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+84>>2]=0;H[a+88>>2]=j;break e;case 4:a=pa(104);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a+84>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+60>>2]=0;H[a+64>>2]=0;H[a>>2]=4040;b=H[c+4>>2];H[a+88>>2]=H[c>>2];H[a+92>>2]=b;b=H[c+12>>2];H[a+96>>2]=H[c+8>>2];H[a+100>>2]=b;break e;case 5:break f;default:break e}}a=pa(128);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;g:{b=H[e+28>>2];d=H[e+24>>2];if((b|0)!=(d|0)){d=b-d|0;if((d|0)<0){break a}b=pa(d);H[a+36>>2]=b;H[a+32>>2]=b;H[a+40>>2]=(d&-4)+b;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}}H[a+36>>2]=b}H[a>>2]=3216;b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;b=a- -64|0;H[b>>2]=0;H[b+4>>2]=0;H[a+60>>2]=4904;H[a>>2]=4276;b=H[c+4>>2];H[a+72>>2]=H[c>>2];H[a+76>>2]=b;b=H[c+12>>2];H[a+80>>2]=H[c+8>>2];H[a+84>>2]=b;H[a+104>>2]=1065353216;H[a+108>>2]=-1;H[a+96>>2]=-1;H[a+100>>2]=-1;H[a+88>>2]=1;H[a+92>>2]=-1;H[a+60>>2]=4512;H[a+112>>2]=0;H[a+116>>2]=0;F[a+117|0]=0;F[a+118|0]=0;F[a+119|0]=0;F[a+120|0]=0;F[a+121|0]=0;F[a+122|0]=0;F[a+123|0]=0;F[a+124|0]=0;break g}}break d}a=H[c+44>>2];H[h+12>>2]=k;H[h+8>>2]=a;H[h+20>>2]=f;H[h+16>>2]=f+12;c=h+8|0;a=0;h:{i:{switch(b-1|0){case 0:a=pa(60);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a>>2]=4932;break h;case 1:a=pa(60);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a>>2]=5356;break h;case 3:a=pa(112);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a+60>>2]=0;H[a+64>>2]=0;H[a>>2]=5580;H[a+68>>2]=0;H[a+72>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+84>>2]=0;H[a+88>>2]=0;H[a+92>>2]=0;H[a+96>>2]=0;H[a+100>>2]=0;H[a+104>>2]=0;H[a+108>>2]=0;break h;case 2:a=pa(92);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a+60>>2]=0;H[a+64>>2]=0;H[a>>2]=5816;H[a+68>>2]=0;H[a+72>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+84>>2]=0;H[a+88>>2]=j;break h;case 4:a=pa(104);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){g=f-d|0;if((g|0)<0){break a}b=pa(g);H[a+32>>2]=b;H[a+40>>2]=(g&-4)+b;while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}H[a+36>>2]=b}b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;H[a+84>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+60>>2]=0;H[a+64>>2]=0;H[a>>2]=6032;b=H[c+4>>2];H[a+88>>2]=H[c>>2];H[a+92>>2]=b;b=H[c+12>>2];H[a+96>>2]=H[c+8>>2];H[a+100>>2]=b;break h;case 5:break i;default:break h}}a=pa(128);H[a+4>>2]=d;H[a>>2]=3272;b=H[e+4>>2];H[a+8>>2]=H[e>>2];H[a+12>>2]=b;b=H[e+12>>2];H[a+16>>2]=H[e+8>>2];H[a+20>>2]=b;b=H[e+20>>2];H[a+24>>2]=H[e+16>>2];H[a+28>>2]=b;H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;j:{b=H[e+28>>2];d=H[e+24>>2];if((b|0)!=(d|0)){d=b-d|0;if((d|0)<0){break a}b=pa(d);H[a+36>>2]=b;H[a+32>>2]=b;H[a+40>>2]=(d&-4)+b;d=H[e+24>>2];f=H[e+28>>2];if((d|0)!=(f|0)){while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((f|0)!=(d|0)){continue}break}}H[a+36>>2]=b}H[a>>2]=5300;b=H[c+4>>2];H[a+44>>2]=H[c>>2];H[a+48>>2]=b;b=H[c+12>>2];H[a+52>>2]=H[c+8>>2];H[a+56>>2]=b;b=a- -64|0;H[b>>2]=0;H[b+4>>2]=0;H[a+60>>2]=6840;H[a>>2]=6256;b=H[c+4>>2];H[a+72>>2]=H[c>>2];H[a+76>>2]=b;b=H[c+12>>2];H[a+80>>2]=H[c+8>>2];H[a+84>>2]=b;H[a+104>>2]=1065353216;H[a+108>>2]=-1;H[a+96>>2]=-1;H[a+100>>2]=-1;H[a+88>>2]=1;H[a+92>>2]=-1;H[a+60>>2]=6476;H[a+112>>2]=0;H[a+116>>2]=0;F[a+117|0]=0;F[a+118|0]=0;F[a+119|0]=0;F[a+120|0]=0;F[a+121|0]=0;F[a+122|0]=0;F[a+123|0]=0;F[a+124|0]=0;break j}}}ca=h+32|0;d=a;if(a){break c}}d=pa(44);H[d+4>>2]=l;H[d>>2]=3272;a=H[e+4>>2];H[d+8>>2]=H[e>>2];H[d+12>>2]=a;a=H[e+12>>2];H[d+16>>2]=H[e+8>>2];H[d+20>>2]=a;a=H[e+20>>2];H[d+24>>2]=H[e+16>>2];H[d+28>>2]=a;H[d+40>>2]=0;H[d+32>>2]=0;H[d+36>>2]=0;c=H[e+24>>2];a=H[e+28>>2];if((c|0)!=(a|0)){b=a-c|0;if((b|0)<0){break a}e=pa(b);H[d+32>>2]=e;H[d+40>>2]=(b&-4)+e;while(1){H[e>>2]=H[c>>2];e=e+4|0;c=c+4|0;if((a|0)!=(c|0)){continue}break}H[d+36>>2]=e}H[d>>2]=6868;break c}e=d;a=H[i+32>>2];if(!a){break b}H[i+36>>2]=a;oa(a)}ca=i+48|0;return e|0}sa();v()}function Ec(a){a=a|0;var 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;l=ca-16|0;ca=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{if(a>>>0<=244){g=H[4298];h=a>>>0<11?16:a+11&-8;c=h>>>3|0;b=g>>>c|0;if(b&3){c=c+((b^-1)&1)|0;a=c<<3;b=a+17232|0;d=H[a+17240>>2];a=H[d+8>>2];j:{if((b|0)==(a|0)){m=17192,n=Vj(c)&g,H[m>>2]=n;break j}H[a+12>>2]=b;H[b+8>>2]=a}a=d+8|0;b=c<<3;H[d+4>>2]=b|3;b=b+d|0;H[b+4>>2]=H[b+4>>2]|1;break a}k=H[4300];if(k>>>0>=h>>>0){break i}if(b){a=2<>2];a=H[e+8>>2];k:{if((b|0)==(a|0)){g=Vj(d)&g;H[4298]=g;break k}H[a+12>>2]=b;H[b+8>>2]=a}H[e+4>>2]=h|3;c=e+h|0;a=d<<3;d=a-h|0;H[c+4>>2]=d|1;H[a+e>>2]=d;if(k){b=(k&-8)+17232|0;f=H[4303];a=1<<(k>>>3);l:{if(!(a&g)){H[4298]=a|g;a=b;break l}a=H[b+8>>2]}H[b+8>>2]=f;H[a+12>>2]=f;H[f+12>>2]=b;H[f+8>>2]=a}a=e+8|0;H[4303]=c;H[4300]=d;break a}j=H[4299];if(!j){break i}c=H[(Qj(0-j&j)<<2)+17496>>2];f=(H[c+4>>2]&-8)-h|0;b=c;while(1){m:{a=H[b+16>>2];if(!a){a=H[b+20>>2];if(!a){break m}}b=(H[a+4>>2]&-8)-h|0;d=b>>>0>>0;f=d?b:f;c=d?a:c;b=a;continue}break}i=H[c+24>>2];d=H[c+12>>2];if((d|0)!=(c|0)){a=H[c+8>>2];H[a+12>>2]=d;H[d+8>>2]=a;break b}b=c+20|0;a=H[b>>2];if(!a){a=H[c+16>>2];if(!a){break h}b=c+16|0}while(1){e=b;d=a;b=a+20|0;a=H[b>>2];if(a){continue}b=d+16|0;a=H[d+16>>2];if(a){continue}break}H[e>>2]=0;break b}h=-1;if(a>>>0>4294967231){break i}a=a+11|0;h=a&-8;j=H[4299];if(!j){break i}f=0-h|0;g=0;n:{if(h>>>0<256){break n}g=31;if(h>>>0>16777215){break n}a=Q(a>>>8|0);g=((h>>>38-a&1)-(a<<1)|0)+62|0}b=H[(g<<2)+17496>>2];o:{p:{q:{if(!b){a=0;break q}a=0;c=h<<((g|0)!=31?25-(g>>>1|0)|0:0);while(1){r:{e=(H[b+4>>2]&-8)-h|0;if(e>>>0>=f>>>0){break r}d=b;f=e;if(e){break r}f=0;a=b;break p}e=H[b+20>>2];b=H[((c>>>29&4)+b|0)+16>>2];a=e?(e|0)==(b|0)?a:e:a;c=c<<1;if(b){continue}break}}if(!(a|d)){d=0;a=2<>2]}if(!a){break o}}while(1){b=(H[a+4>>2]&-8)-h|0;c=b>>>0>>0;f=c?b:f;d=c?a:d;b=H[a+16>>2];if(b){a=b}else{a=H[a+20>>2]}if(a){continue}break}}if(!d|H[4300]-h>>>0<=f>>>0){break i}g=H[d+24>>2];c=H[d+12>>2];if((d|0)!=(c|0)){a=H[d+8>>2];H[a+12>>2]=c;H[c+8>>2]=a;break c}b=d+20|0;a=H[b>>2];if(!a){a=H[d+16>>2];if(!a){break g}b=d+16|0}while(1){e=b;c=a;b=a+20|0;a=H[b>>2];if(a){continue}b=c+16|0;a=H[c+16>>2];if(a){continue}break}H[e>>2]=0;break c}a=H[4300];if(a>>>0>=h>>>0){d=H[4303];b=a-h|0;s:{if(b>>>0>=16){c=d+h|0;H[c+4>>2]=b|1;H[a+d>>2]=b;H[d+4>>2]=h|3;break s}H[d+4>>2]=a|3;a=a+d|0;H[a+4>>2]=H[a+4>>2]|1;c=0;b=0}H[4300]=b;H[4303]=c;a=d+8|0;break a}i=H[4301];if(i>>>0>h>>>0){b=i-h|0;H[4301]=b;c=H[4304];a=c+h|0;H[4304]=a;H[a+4>>2]=b|1;H[c+4>>2]=h|3;a=c+8|0;break a}a=0;j=h+47|0;if(H[4416]){c=H[4418]}else{H[4419]=-1;H[4420]=-1;H[4417]=4096;H[4418]=4096;H[4416]=l+12&-16^1431655768;H[4421]=0;H[4409]=0;c=4096}e=j+c|0;f=0-c|0;b=e&f;if(b>>>0<=h>>>0){break a}d=H[4408];if(d){c=H[4406];g=c+b|0;if(d>>>0>>0|c>>>0>=g>>>0){break a}}t:{if(!(I[17636]&4)){u:{v:{w:{x:{d=H[4304];if(d){a=17640;while(1){c=H[a>>2];if(c>>>0<=d>>>0&d>>>0>2]>>>0){break x}a=H[a+8>>2];if(a){continue}break}}c=zb(0);if((c|0)==-1){break u}g=b;d=H[4417];a=d-1|0;if(a&c){g=(b-c|0)+(a+c&0-d)|0}if(g>>>0<=h>>>0){break u}d=H[4408];if(d){a=H[4406];f=a+g|0;if(d>>>0>>0|a>>>0>=f>>>0){break u}}a=zb(g);if((c|0)!=(a|0)){break w}break t}g=f&e-i;c=zb(g);if((c|0)==(H[a>>2]+H[a+4>>2]|0)){break v}a=c}if((a|0)==-1){break u}if(h+48>>>0<=g>>>0){c=a;break t}c=H[4418];c=c+(j-g|0)&0-c;if((zb(c)|0)==-1){break u}g=c+g|0;c=a;break t}if((c|0)!=-1){break t}}H[4409]=H[4409]|4}c=zb(b);a=zb(0);if((c|0)==-1|(a|0)==-1|a>>>0<=c>>>0){break d}g=a-c|0;if(g>>>0<=h+40>>>0){break d}}a=H[4406]+g|0;H[4406]=a;if(a>>>0>K[4407]){H[4407]=a}y:{e=H[4304];if(e){a=17640;while(1){d=H[a>>2];b=H[a+4>>2];if((d+b|0)==(c|0)){break y}a=H[a+8>>2];if(a){continue}break}break f}a=H[4302];if(!(a>>>0<=c>>>0?a:0)){H[4302]=c}a=0;H[4411]=g;H[4410]=c;H[4306]=-1;H[4307]=H[4416];H[4413]=0;while(1){d=a<<3;b=d+17232|0;H[d+17240>>2]=b;H[d+17244>>2]=b;a=a+1|0;if((a|0)!=32){continue}break}d=g-40|0;a=c+8&7?-8-c&7:0;b=d-a|0;H[4301]=b;a=a+c|0;H[4304]=a;H[a+4>>2]=b|1;H[(c+d|0)+4>>2]=40;H[4305]=H[4420];break e}if(I[a+12|0]&8|d>>>0>e>>>0|c>>>0<=e>>>0){break f}H[a+4>>2]=b+g;a=e+8&7?-8-e&7:0;c=a+e|0;H[4304]=c;b=H[4301]+g|0;a=b-a|0;H[4301]=a;H[c+4>>2]=a|1;H[(b+e|0)+4>>2]=40;H[4305]=H[4420];break e}d=0;break b}c=0;break c}if(K[4302]>c>>>0){H[4302]=c}b=c+g|0;a=17640;z:{A:{B:{C:{D:{E:{while(1){if((b|0)!=H[a>>2]){a=H[a+8>>2];if(a){continue}break E}break}if(!(I[a+12|0]&8)){break D}}a=17640;while(1){b=H[a>>2];if(b>>>0<=e>>>0){f=b+H[a+4>>2]|0;if(f>>>0>e>>>0){break C}}a=H[a+8>>2];continue}}H[a>>2]=c;H[a+4>>2]=H[a+4>>2]+g;j=(c+8&7?-8-c&7:0)+c|0;H[j+4>>2]=h|3;g=b+(b+8&7?-8-b&7:0)|0;i=h+j|0;a=g-i|0;if((e|0)==(g|0)){H[4304]=i;a=H[4301]+a|0;H[4301]=a;H[i+4>>2]=a|1;break A}if(H[4303]==(g|0)){H[4303]=i;a=H[4300]+a|0;H[4300]=a;H[i+4>>2]=a|1;H[a+i>>2]=a;break A}f=H[g+4>>2];if((f&3)==1){e=f&-8;F:{if(f>>>0<=255){d=H[g+8>>2];b=f>>>3|0;c=H[g+12>>2];if((c|0)==(d|0)){m=17192,n=H[4298]&Vj(b),H[m>>2]=n;break F}H[d+12>>2]=c;H[c+8>>2]=d;break F}h=H[g+24>>2];c=H[g+12>>2];G:{if((g|0)!=(c|0)){b=H[g+8>>2];H[b+12>>2]=c;H[c+8>>2]=b;break G}H:{f=g+20|0;b=H[f>>2];if(b){break H}f=g+16|0;b=H[f>>2];if(b){break H}c=0;break G}while(1){d=f;c=b;f=c+20|0;b=H[f>>2];if(b){continue}f=c+16|0;b=H[c+16>>2];if(b){continue}break}H[d>>2]=0}if(!h){break F}d=H[g+28>>2];b=(d<<2)+17496|0;I:{if(H[b>>2]==(g|0)){H[b>>2]=c;if(c){break I}m=17196,n=H[4299]&Vj(d),H[m>>2]=n;break F}H[h+(H[h+16>>2]==(g|0)?16:20)>>2]=c;if(!c){break F}}H[c+24>>2]=h;b=H[g+16>>2];if(b){H[c+16>>2]=b;H[b+24>>2]=c}b=H[g+20>>2];if(!b){break F}H[c+20>>2]=b;H[b+24>>2]=c}g=e+g|0;f=H[g+4>>2];a=a+e|0}H[g+4>>2]=f&-2;H[i+4>>2]=a|1;H[a+i>>2]=a;if(a>>>0<=255){b=(a&-8)+17232|0;c=H[4298];a=1<<(a>>>3);J:{if(!(c&a)){H[4298]=a|c;a=b;break J}a=H[b+8>>2]}H[b+8>>2]=i;H[a+12>>2]=i;H[i+12>>2]=b;H[i+8>>2]=a;break A}f=31;if(a>>>0<=16777215){b=Q(a>>>8|0);f=((a>>>38-b&1)-(b<<1)|0)+62|0}H[i+28>>2]=f;H[i+16>>2]=0;H[i+20>>2]=0;b=(f<<2)+17496|0;d=H[4299];c=1<>2]=i;break K}f=a<<((f|0)!=31?25-(f>>>1|0)|0:0);c=H[b>>2];while(1){b=c;if((H[c+4>>2]&-8)==(a|0)){break B}c=f>>>29|0;f=f<<1;d=(c&4)+b|0;c=H[d+16>>2];if(c){continue}break}H[d+16>>2]=i}H[i+24>>2]=b;H[i+12>>2]=i;H[i+8>>2]=i;break A}d=g-40|0;a=c+8&7?-8-c&7:0;b=d-a|0;H[4301]=b;a=a+c|0;H[4304]=a;H[a+4>>2]=b|1;H[(c+d|0)+4>>2]=40;H[4305]=H[4420];a=(f+(f-39&7?39-f&7:0)|0)-47|0;d=a>>>0>>0?e:a;H[d+4>>2]=27;a=H[4413];H[d+16>>2]=H[4412];H[d+20>>2]=a;a=H[4411];H[d+8>>2]=H[4410];H[d+12>>2]=a;H[4412]=d+8;H[4411]=g;H[4410]=c;H[4413]=0;a=d+24|0;while(1){H[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((d|0)==(e|0)){break e}H[d+4>>2]=H[d+4>>2]&-2;f=d-e|0;H[e+4>>2]=f|1;H[d>>2]=f;if(f>>>0<=255){b=(f&-8)+17232|0;c=H[4298];a=1<<(f>>>3);L:{if(!(c&a)){H[4298]=a|c;a=b;break L}a=H[b+8>>2]}H[b+8>>2]=e;H[a+12>>2]=e;H[e+12>>2]=b;H[e+8>>2]=a;break e}a=31;if(f>>>0<=16777215){a=Q(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}H[e+28>>2]=a;H[e+16>>2]=0;H[e+20>>2]=0;b=(a<<2)+17496|0;d=H[4299];c=1<>2]=e;break M}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);d=H[b>>2];while(1){b=d;if((f|0)==(H[b+4>>2]&-8)){break z}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;d=H[c+16>>2];if(d){continue}break}H[c+16>>2]=e}H[e+24>>2]=b;H[e+12>>2]=e;H[e+8>>2]=e;break e}a=H[b+8>>2];H[a+12>>2]=i;H[b+8>>2]=i;H[i+24>>2]=0;H[i+12>>2]=b;H[i+8>>2]=a}a=j+8|0;break a}a=H[b+8>>2];H[a+12>>2]=e;H[b+8>>2]=e;H[e+24>>2]=0;H[e+12>>2]=b;H[e+8>>2]=a}a=H[4301];if(a>>>0<=h>>>0){break d}b=a-h|0;H[4301]=b;c=H[4304];a=c+h|0;H[4304]=a;H[a+4>>2]=b|1;H[c+4>>2]=h|3;a=c+8|0;break a}H[3992]=48;a=0;break a}N:{if(!g){break N}b=H[d+28>>2];a=(b<<2)+17496|0;O:{if(H[a>>2]==(d|0)){H[a>>2]=c;if(c){break O}j=Vj(b)&j;H[4299]=j;break N}H[g+(H[g+16>>2]==(d|0)?16:20)>>2]=c;if(!c){break N}}H[c+24>>2]=g;a=H[d+16>>2];if(a){H[c+16>>2]=a;H[a+24>>2]=c}a=H[d+20>>2];if(!a){break N}H[c+20>>2]=a;H[a+24>>2]=c}P:{if(f>>>0<=15){a=f+h|0;H[d+4>>2]=a|3;a=a+d|0;H[a+4>>2]=H[a+4>>2]|1;break P}H[d+4>>2]=h|3;e=d+h|0;H[e+4>>2]=f|1;H[e+f>>2]=f;if(f>>>0<=255){b=(f&-8)+17232|0;c=H[4298];a=1<<(f>>>3);Q:{if(!(c&a)){H[4298]=a|c;a=b;break Q}a=H[b+8>>2]}H[b+8>>2]=e;H[a+12>>2]=e;H[e+12>>2]=b;H[e+8>>2]=a;break P}a=31;if(f>>>0<=16777215){a=Q(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}H[e+28>>2]=a;H[e+16>>2]=0;H[e+20>>2]=0;b=(a<<2)+17496|0;R:{c=1<>2]=e;break S}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);h=H[b>>2];while(1){b=h;if((H[b+4>>2]&-8)==(f|0)){break R}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;h=H[c+16>>2];if(h){continue}break}H[c+16>>2]=e}H[e+24>>2]=b;H[e+12>>2]=e;H[e+8>>2]=e;break P}a=H[b+8>>2];H[a+12>>2]=e;H[b+8>>2]=e;H[e+24>>2]=0;H[e+12>>2]=b;H[e+8>>2]=a}a=d+8|0;break a}T:{if(!i){break T}b=H[c+28>>2];a=(b<<2)+17496|0;U:{if(H[a>>2]==(c|0)){H[a>>2]=d;if(d){break U}m=17196,n=Vj(b)&j,H[m>>2]=n;break T}H[i+(H[i+16>>2]==(c|0)?16:20)>>2]=d;if(!d){break T}}H[d+24>>2]=i;a=H[c+16>>2];if(a){H[d+16>>2]=a;H[a+24>>2]=d}a=H[c+20>>2];if(!a){break T}H[d+20>>2]=a;H[a+24>>2]=d}V:{if(f>>>0<=15){a=f+h|0;H[c+4>>2]=a|3;a=a+c|0;H[a+4>>2]=H[a+4>>2]|1;break V}H[c+4>>2]=h|3;d=c+h|0;H[d+4>>2]=f|1;H[d+f>>2]=f;if(k){b=(k&-8)+17232|0;e=H[4303];a=1<<(k>>>3);W:{if(!(a&g)){H[4298]=a|g;a=b;break W}a=H[b+8>>2]}H[b+8>>2]=e;H[a+12>>2]=e;H[e+12>>2]=b;H[e+8>>2]=a}H[4303]=d;H[4300]=f}a=c+8|0}ca=l+16|0;return a|0}function ce(a,b){var 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,w=0,x=0,y=0,z=0,A=0;m=ca-32|0;ca=m;o=pa(12);H[o+8>>2]=0;H[o+4>>2]=b;H[o>>2]=0;s=o+12|0;b=s;a:{b:{c:{while(1){b=b-12|0;w=H[b+8>>2];j=H[b+4>>2];t=H[b>>2];if(t){if((w|0)>1e3){break a}H[m+24>>2]=0;H[m+16>>2]=0;H[m+20>>2]=0;d=1;c=H[a>>2];e=H[c+8>>2];h=H[c+12>>2];g=H[c+20>>2];f=H[c+16>>2];d:{if((h|0)<=(g|0)&f>>>0>=e>>>0|(g|0)>(h|0)){break d}e=I[f+H[c>>2]|0];h=c;c=g;f=f+1|0;c=f?c:c+1|0;H[h+16>>2]=f;H[h+20>>2]=c;Cc(m+16|0,e);if(e){c=H[a>>2];n=Dc(m+16|0);p=H[c+8>>2];g=H[c+12>>2];h=H[c+20>>2];f=H[c+16>>2];k=f+e|0;h=k>>>0>>0?h+1|0:h;if((g|0)<=(h|0)&k>>>0>p>>>0|(g|0)<(h|0)){break d}qa(n,f+H[c>>2]|0,e);d=H[c+20>>2];f=e;e=e+H[c+16>>2]|0;d=f>>>0>e>>>0?d+1|0:d;H[c+16>>2]=e;H[c+20>>2]=d}j=pa(24);c=j;H[c+4>>2]=0;H[c+8>>2]=0;c=c+16|0;H[c>>2]=0;H[c+4>>2]=0;H[j>>2]=j+4;H[j+12>>2]=c;e=ca-32|0;ca=e;h=t+12|0;c=m+16|0;u=nb(h,c);i=t+16|0;e:{if((u|0)==(i|0)){H[e+16>>2]=c;f:{g:{d=H[h+4>>2];h:{if(!d){f=h+4|0;c=f;break h}f=I[c+11|0];g=f<<24>>24<0;n=g?H[c>>2]:c;g=g?H[c+4>>2]:f;while(1){c=d;d=I[c+27|0];f=d<<24>>24<0;d=f?H[c+20>>2]:d;p=d>>>0>>0;i:{j:{k:{l:{k=p?d:g;m:{if(k){f=f?H[c+16>>2]:c+16|0;q=Fa(n,f,k);if(!q){if(d>>>0>g>>>0){break m}break l}if((q|0)>=0){break l}break m}if(d>>>0<=g>>>0){break k}}f=c;d=H[c>>2];if(d){continue}break h}d=Fa(f,n,k);if(d){break j}}if(p){break i}break g}if((d|0)>=0){break g}}d=H[c+4>>2];if(d){continue}break}f=c+4|0}d=pa(32);n=d+16|0;g=H[e+16>>2];n:{if(F[g+11|0]>=0){p=H[g+4>>2];H[n>>2]=H[g>>2];H[n+4>>2]=p;H[n+8>>2]=H[g+8>>2];break n}za(n,H[g>>2],H[g+4>>2])}H[d+8>>2]=c;H[d>>2]=0;H[d+4>>2]=0;H[d+28>>2]=0;H[f>>2]=d;c=d;g=H[H[h>>2]>>2];if(g){H[h>>2]=g;c=H[f>>2]}Sb(H[h+4>>2],c);H[h+8>>2]=H[h+8>>2]+1;c=1;break f}d=c;c=0}F[e+28|0]=c;H[e+24>>2]=d;d=H[e+24>>2];c=H[d+28>>2];H[d+28>>2]=j;if(!c){break e}Ra(c+12|0,H[c+16>>2]);Qa(c,H[c+4>>2]);oa(c);break e}if(!j){break e}Ra(j+12|0,H[j+16>>2]);Qa(j,H[j+4>>2]);oa(j)}ca=e+32|0;d=(i|0)!=(u|0)}if(F[m+27|0]<0){oa(H[m+16>>2])}if(d){break a}}if(!j){break a}H[m+16>>2]=0;if(!Bb(1,m+16|0,H[a>>2])){break a}q=0;x=H[m+16>>2];if(x){while(1){d=0;i=ca-32|0;ca=i;H[i+24>>2]=0;H[i+16>>2]=0;H[i+20>>2]=0;c=H[a>>2];f=H[c+8>>2];o:{p:{h=H[c+12>>2];g=H[c+20>>2];e=H[c+16>>2];q:{if((h|0)<=(g|0)&e>>>0>=f>>>0|(g|0)>(h|0)){break q}f=I[e+H[c>>2]|0];h=c;c=g;e=e+1|0;c=e?c:c+1|0;H[h+16>>2]=e;H[h+20>>2]=c;Cc(i+16|0,f);if(f){e=H[a>>2];n=Dc(i+16|0);p=H[e+8>>2];g=H[e+12>>2];c=H[e+20>>2];h=H[e+16>>2];k=h+f|0;c=k>>>0>>0?c+1|0:c;if(k>>>0>p>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break q}qa(n,h+H[e>>2]|0,f);c=H[e+20>>2];g=f;f=f+H[e+16>>2]|0;c=g>>>0>f>>>0?c+1|0:c;H[e+16>>2]=f;H[e+20>>2]=c}H[i+12>>2]=0;if(!Bb(1,i+12|0,H[a>>2])){break q}f=H[i+12>>2];if(!f){break q}e=H[a>>2];c=H[e+8>>2];h=H[e+16>>2];g=c-h|0;c=H[e+12>>2]-(H[e+20>>2]+(c>>>0>>0)|0)|0;if((c|0)<=0&f>>>0>g>>>0|(c|0)<0){break q}H[i+8>>2]=0;H[i>>2]=0;H[i+4>>2]=0;if((f|0)<0){break p}d=pa(f);H[i>>2]=d;c=d+f|0;H[i+8>>2]=c;l=ra(d,0,f);H[i+4>>2]=c;h=H[e+12>>2];y=h;p=H[e+8>>2];c=H[e+20>>2];k=H[e+16>>2];g=f+k|0;c=g>>>0>>0?c+1|0:c;u=g;n=c;r:{if((c|0)<=(h|0)&g>>>0<=p>>>0|(c|0)<(h|0)){qa(l,H[e>>2]+k|0,f);d=H[e+20>>2];c=f+H[e+16>>2]|0;d=c>>>0>>0?d+1|0:d;H[e+16>>2]=c;H[e+20>>2]=d;h=ca-48|0;ca=h;e=nb(j,i+16|0);if((e|0)!=(j+4|0)){c=H[e+4>>2];s:{if(!c){c=e;while(1){d=H[c+8>>2];f=H[d>>2]!=(c|0);c=d;if(f){continue}break}break s}while(1){d=c;c=H[c>>2];if(c){continue}break}}if((e|0)==H[j>>2]){H[j>>2]=d}H[j+8>>2]=H[j+8>>2]-1;f=H[j+4>>2];t:{u:{g=e;d=e;e=H[d>>2];if(e){c=H[g+4>>2];if(!c){break u}while(1){d=c;c=H[c>>2];if(c){continue}break}}e=H[d+4>>2];if(e){break u}e=0;k=1;break t}H[e+8>>2]=H[d+8>>2];k=0}l=H[d+8>>2];c=H[l>>2];v:{if((d|0)==(c|0)){H[l>>2]=e;if((d|0)==(f|0)){c=0;f=e;break v}c=H[l+4>>2];break v}H[l+4>>2]=e}r=!I[d+12|0];if((d|0)!=(g|0)){l=H[g+8>>2];H[d+8>>2]=l;H[l+(((g|0)!=H[H[g+8>>2]>>2])<<2)>>2]=d;l=H[g>>2];H[d>>2]=l;H[l+8>>2]=d;l=H[g+4>>2];H[d+4>>2]=l;if(l){H[l+8>>2]=d}F[d+12|0]=I[g+12|0];f=(f|0)==(g|0)?d:f}w:{if(r|!f){break w}if(k){while(1){e=I[c+12|0];x:{d=H[c+8>>2];if(H[d>>2]!=(c|0)){if(!e){F[c+12|0]=1;F[d+12|0]=0;e=H[d+4>>2];k=H[e>>2];H[d+4>>2]=k;if(k){H[k+8>>2]=d}H[e+8>>2]=H[d+8>>2];k=H[d+8>>2];H[(((d|0)!=H[k>>2])<<2)+k>>2]=e;H[e>>2]=d;H[d+8>>2]=e;d=c;c=H[c>>2];f=(c|0)==(f|0)?d:f;c=H[c+4>>2]}y:{z:{d=H[c>>2];A:{if(!(I[d+12|0]?0:d)){e=H[c+4>>2];if(I[e+12|0]?0:e){break A}F[c+12|0]=0;c=H[c+8>>2];B:{if((f|0)==(c|0)){c=f;break B}if(I[c+12|0]){break x}}F[c+12|0]=1;break w}e=H[c+4>>2];if(!e){break z}}if(I[e+12|0]){break z}d=c;break y}F[d+12|0]=1;F[c+12|0]=0;e=H[d+4>>2];H[c>>2]=e;if(e){H[e+8>>2]=c}H[d+8>>2]=H[c+8>>2];e=H[c+8>>2];H[((H[e>>2]!=(c|0))<<2)+e>>2]=d;H[d+4>>2]=c;H[c+8>>2]=d;e=c}c=H[d+8>>2];F[d+12|0]=I[c+12|0];F[c+12|0]=1;F[e+12|0]=1;d=H[c+4>>2];e=H[d>>2];H[c+4>>2]=e;if(e){H[e+8>>2]=c}H[d+8>>2]=H[c+8>>2];e=H[c+8>>2];H[(((c|0)!=H[e>>2])<<2)+e>>2]=d;H[d>>2]=c;H[c+8>>2]=d;break w}if(!e){F[c+12|0]=1;F[d+12|0]=0;e=H[c+4>>2];H[d>>2]=e;if(e){H[e+8>>2]=d}H[c+8>>2]=H[d+8>>2];e=H[d+8>>2];H[(((d|0)!=H[e>>2])<<2)+e>>2]=c;H[c+4>>2]=d;H[d+8>>2]=c;f=(d|0)==(f|0)?c:f;c=H[d>>2]}e=H[c>>2];C:{if(!(!e|I[e+12|0])){d=c;break C}d=H[c+4>>2];if(!(I[d+12|0]?0:d)){F[c+12|0]=0;c=H[c+8>>2];if((c|0)!=(f|0)?I[c+12|0]:0){break x}F[c+12|0]=1;break w}if(e){if(!I[e+12|0]){d=c;break C}d=H[c+4>>2]}F[d+12|0]=1;F[c+12|0]=0;e=H[d>>2];H[c+4>>2]=e;if(e){H[e+8>>2]=c}H[d+8>>2]=H[c+8>>2];e=H[c+8>>2];H[((H[e>>2]!=(c|0))<<2)+e>>2]=d;H[d>>2]=c;H[c+8>>2]=d;e=c}c=H[d+8>>2];F[d+12|0]=I[c+12|0];F[c+12|0]=1;F[e+12|0]=1;d=H[c>>2];e=H[d+4>>2];H[c>>2]=e;if(e){H[e+8>>2]=c}H[d+8>>2]=H[c+8>>2];e=H[c+8>>2];H[(((c|0)!=H[e>>2])<<2)+e>>2]=d;H[d+4>>2]=c;H[c+8>>2]=d;break w}d=c;c=H[c+8>>2];c=H[(((d|0)==H[c>>2])<<2)+c>>2];continue}}F[e+12|0]=1}c=H[g+28>>2];if(c){H[g+32>>2]=c;oa(c)}if(F[g+27|0]<0){oa(H[g+16>>2])}oa(g)}H[h+8>>2]=0;H[h>>2]=0;H[h+4>>2]=0;c=H[i+4>>2];d=H[i>>2];f=c-d|0;e=0;D:{E:{if((c|0)!=(d|0)){if((f|0)<0){break E}e=pa(f);c=ra(e,0,f);g=c+f|0;H[h+8>>2]=g;H[h+4>>2]=g;H[h>>2]=c;c=d}qa(e,c,f);F:{if(F[i+27|0]>=0){H[h+24>>2]=H[i+24>>2];c=H[i+20>>2];H[h+16>>2]=H[i+16>>2];H[h+20>>2]=c;break F}za(h+16|0,H[i+16>>2],H[i+20>>2])}ae(h+28|0,h);f=h+16|0;c=f;G:{H:{d=H[j+4>>2];I:{if(!d){e=j+4|0;c=e;break I}e=I[c+11|0];g=e<<24>>24<0;k=g?H[c>>2]:c;g=g?H[c+4>>2]:e;while(1){c=d;d=I[c+27|0];e=d<<24>>24<0;d=e?H[c+20>>2]:d;l=d>>>0>>0;J:{K:{L:{M:{r=l?d:g;N:{if(r){e=e?H[c+16>>2]:c+16|0;z=Fa(k,e,r);if(!z){if(d>>>0>g>>>0){break N}break M}if((z|0)>=0){break M}break N}if(d>>>0<=g>>>0){break L}}e=c;d=H[c>>2];if(d){continue}break I}d=Fa(e,k,r);if(d){break K}}if(l){break J}break H}if((d|0)>=0){break H}}d=H[c+4>>2];if(d){continue}break}e=c+4|0}d=pa(40);H[d+24>>2]=H[f+8>>2];g=H[f+4>>2];H[d+16>>2]=H[f>>2];H[d+20>>2]=g;H[f>>2]=0;H[f+4>>2]=0;H[f+8>>2]=0;ae(d+28|0,f+12|0);H[d+8>>2]=c;H[d>>2]=0;H[d+4>>2]=0;H[e>>2]=d;c=d;f=H[H[j>>2]>>2];if(f){H[j>>2]=f;c=H[e>>2]}Sb(H[j+4>>2],c);H[j+8>>2]=H[j+8>>2]+1;c=1;break G}d=c;c=0}F[h+44|0]=c;H[h+40>>2]=d;c=H[h+28>>2];if(c){H[h+32>>2]=c;oa(c)}if(F[h+27|0]<0){oa(H[h+16>>2])}c=H[h>>2];if(c){H[h+4>>2]=c;oa(c)}ca=h+48|0;break D}sa();v()}d=H[i>>2];if(!d){break r}}H[i+4>>2]=d;oa(d)}d=(n|0)<=(y|0)&p>>>0>=u>>>0|(n|0)<(y|0)}if(F[i+27|0]<0){oa(H[i+16>>2])}ca=i+32|0;break o}sa();v()}if(!d){break a}q=q+1|0;if((x|0)!=(q|0)){continue}break}}H[m+12>>2]=0;if(!Bb(1,m+12|0,H[a>>2])){break a}c=H[a>>2];e=H[c+8>>2];f=H[c+16>>2];h=e-f|0;d=H[m+12>>2];c=H[c+12>>2]-(H[c+20>>2]+(e>>>0>>0)|0)|0;if(h>>>0>>0&(c|0)<=0|(c|0)<0){break a}if(d){q=0;h=((t|0)!=0)+w|0;while(1){O:{if(b>>>0>>0){H[b+8>>2]=h;H[b+4>>2]=0;H[b>>2]=j;b=b+12|0;d=H[m+12>>2];break O}c=b-o|0;g=(c|0)/12|0;b=g+1|0;if(b>>>0>=357913942){break c}e=(s-o|0)/12|0;f=e<<1;e=e>>>0>=178956970?357913941:b>>>0>>0?f:b;if(e){if(e>>>0>=357913942){break b}f=pa(N(e,12))}else{f=0}b=f+N(g,12)|0;H[b+8>>2]=h;H[b+4>>2]=0;H[b>>2]=j;c=va(b+N((c|0)/-12|0,12)|0,o,c);s=f+N(e,12)|0;b=b+12|0;if(o){oa(o)}o=c}q=q+1|0;if(q>>>0>>0){continue}break}}if((b|0)!=(o|0)){continue}break}A=1;break a}sa();v()}wa();v()}if(o){oa(o)}ca=m+32|0;return A}function Af(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,k=0,l=0,m=0,n=0,o=0,p=O(0),q=0,r=0;e=ca-720|0;ca=e;a:{b:{c:{d:{e:{f:{g:{h:{i:{if(J[b+38>>1]>=515){H[e+680>>2]=0;H[e+672>>2]=0;H[e+676>>2]=0;if((ea[H[H[a>>2]+24>>2]](a)|0)<=0){break d}while(1){c=ea[H[H[a>>2]+20>>2]](a,n)|0;d=H[H[H[(ea[H[H[a>>2]+28>>2]](a)|0)+4>>2]+8>>2]+(c<<2)>>2];if(H[d+28>>2]==9){f=H[e+672>>2];c=H[e+676>>2]-f>>2;k=I[d+24|0];j:{if(c>>>0>>0){ya(e+672|0,k-c|0);break j}if(c>>>0<=k>>>0){break j}H[e+676>>2]=f+(k<<2)}j=0;i=H[b+8>>2];h=H[b+12>>2];c=H[b+20>>2];d=k<<2;f=H[b+16>>2];l=f+d|0;c=d>>>0>l>>>0?c+1|0:c;if(i>>>0>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break b}qa(H[e+672>>2],f+H[b>>2]|0,d);c=H[b+20>>2];f=d;d=d+H[b+16>>2]|0;c=f>>>0>d>>>0?c+1|0:c;i=d;H[b+16>>2]=d;H[b+20>>2]=c;l=H[b+12>>2];g=H[b+8>>2];h=d+4|0;f=h>>>0<4?c+1|0:c;d=f;if(g>>>0>>0&(d|0)>=(l|0)|(d|0)>(l|0)){break b}o=H[b>>2];f=o+i|0;f=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[b+16>>2]=h;H[b+20>>2]=d;if(g>>>0<=h>>>0&(d|0)>=(l|0)|(d|0)>(l|0)){break b}d=I[h+o|0];h=i+5|0;c=h>>>0<5?c+1|0:c;H[b+16>>2]=h;H[b+20>>2]=c;if(d>>>0>31){break b}p=(A(2,f),B());H[e+20>>2]=-1;H[e+16>>2]=1832;H[e+32>>2]=0;H[e+36>>2]=0;H[e+24>>2]=0;H[e+28>>2]=0;c=H[e+672>>2];o=d-1|0;if(o>>>0<=29){H[e+20>>2]=d;k:{h=c+(k<<2)|0;l=h-c|0;f=l>>2;i=H[e+32>>2];d=H[e+24>>2];if(f>>>0<=i-d>>2>>>0){i=H[e+28>>2]-d|0;l=i>>2;i=f>>>0>l>>>0?c+i|0:h;g=i-c|0;if((c|0)!=(i|0)){va(d,c,g)}if(f>>>0>l>>>0){c=h-i|0;d=H[e+28>>2];if((h|0)!=(i|0)){va(d,i,c)}H[e+28>>2]=c+d;break k}H[e+28>>2]=d+g;break k}if(d){H[e+28>>2]=d;oa(d);H[e+32>>2]=0;H[e+24>>2]=0;H[e+28>>2]=0;i=0}l:{if((l|0)<0){break l}d=i>>>1|0;d=i>>>0>=2147483644?1073741823:d>>>0>f>>>0?d:f;if(d>>>0>=1073741824){break l}i=d<<2;d=pa(i);H[e+28>>2]=d;H[e+24>>2]=d;H[e+32>>2]=d+i;if((c|0)!=(h|0)){qa(d,c,l)}H[e+28>>2]=d+(f<<2);break k}sa();v()}L[e+36>>2]=p}m:{if(o>>>0>=30){break m}if(!Xc(e+16|0,H[H[a+60>>2]+((H[a+40>>2]-H[a+36>>2]|0)/24<<2)>>2])){break m}c=H[a+40>>2];n:{if((c|0)!=H[a+44>>2]){H[c>>2]=1832;d=H[e+20>>2];H[c+16>>2]=0;H[c+8>>2]=0;H[c+12>>2]=0;H[c+4>>2]=d;d=H[e+28>>2];f=H[e+24>>2];if((d|0)!=(f|0)){d=d-f|0;if((d|0)<0){break i}g=pa(d);H[c+12>>2]=g;H[c+8>>2]=g;H[c+16>>2]=(d&-4)+g;k=H[e+24>>2];d=H[e+28>>2];if((k|0)!=(d|0)){while(1){L[g>>2]=L[k>>2];g=g+4|0;k=k+4|0;if((d|0)!=(k|0)){continue}break}}H[c+12>>2]=g}L[c+20>>2]=L[e+36>>2];H[a+40>>2]=c+24;break n}d=0;o:{p:{q:{r:{j=H[a+40>>2];f=H[a+36>>2];i=(j-f|0)/24|0;c=i+1|0;if(c>>>0<178956971){h=(H[a+44>>2]-f|0)/24|0;l=h<<1;h=h>>>0>=89478485?178956970:c>>>0>>0?l:c;if(h){if(h>>>0>=178956971){break r}d=pa(N(h,24))}g=N(i,24)+d|0;H[g>>2]=1832;c=H[e+20>>2];H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;H[g+4>>2]=c;c=H[e+24>>2];i=H[e+28>>2];if((c|0)!=(i|0)){l=i-c|0;if((l|0)<0){break q}k=pa(l);H[g+8>>2]=k;H[g+16>>2]=(l&-4)+k;while(1){L[k>>2]=L[c>>2];k=k+4|0;c=c+4|0;if((i|0)!=(c|0)){continue}break}H[g+12>>2]=k}c=N(h,24)+d|0;L[g+20>>2]=L[e+36>>2];d=g+24|0;if((f|0)==(j|0)){break p}while(1){g=g-24|0;H[g>>2]=1832;j=j-24|0;H[g+4>>2]=H[j+4>>2];H[g+8>>2]=H[j+8>>2];H[g+12>>2]=H[j+12>>2];H[g+16>>2]=H[j+16>>2];H[j+16>>2]=0;H[j+8>>2]=0;H[j+12>>2]=0;L[g+20>>2]=L[j+20>>2];if((f|0)!=(j|0)){continue}break}H[a+44>>2]=c;k=H[a+40>>2];H[a+40>>2]=d;j=H[a+36>>2];H[a+36>>2]=g;if((j|0)==(k|0)){break o}while(1){k=k-24|0;ea[H[H[k>>2]>>2]](k)|0;if((j|0)!=(k|0)){continue}break}break o}sa();v()}wa();v()}sa();v()}H[a+44>>2]=c;H[a+40>>2]=d;H[a+36>>2]=g}if(j){oa(j)}}j=1}H[e+16>>2]=1832;c=H[e+24>>2];if(c){H[e+28>>2]=c;oa(c)}if(!j){break c}}n=n+1|0;if((ea[H[H[a>>2]+24>>2]](a)|0)>(n|0)){continue}break}break d}k=ea[H[H[a>>2]+24>>2]](a)|0;H[e+712>>2]=0;H[e+704>>2]=0;H[e+708>>2]=0;if(k){if(k>>>0>=214748365){break h}c=N(k,20);d=pa(c);H[e+704>>2]=d;H[e+712>>2]=c+d;c=c-20|0;c=(c-((c>>>0)%20|0)|0)+20|0;q=e,r=ra(d,0,c)+c|0,H[q+708>>2]=r;while(1){c=ea[H[H[a>>2]+20>>2]](a,m)|0;d=H[H[H[(ea[H[H[a>>2]+28>>2]](a)|0)+4>>2]+8>>2]+(c<<2)>>2];f=H[d+28>>2];c=f-1|0;if(c>>>0<=10){c=H[(c<<2)+13584>>2]}else{c=-1}h=(c|0)>0?c:0;if(h>>>0>4){break f}c=H[e+704>>2]+N(m,20)|0;i=I[d+24|0];H[c+16>>2]=i;H[c+12>>2]=h;H[c+8>>2]=f;H[c+4>>2]=g;H[c>>2]=d;g=g+i|0;m=m+1|0;if((k|0)!=(m|0)){continue}break}}c=ea[H[H[a>>2]+20>>2]](a,0)|0;m=H[H[H[(ea[H[H[a>>2]+28>>2]](a)|0)+4>>2]+8>>2]+(c<<2)>>2];F[m+84|0]=1;H[m+72>>2]=H[m+68>>2];h=H[b+12>>2];c=h;d=H[b+20>>2];f=H[b+8>>2];i=H[b+16>>2];if((c|0)<=(d|0)&f>>>0<=i>>>0|(c|0)<(d|0)){break f}n=H[b>>2];o=I[n+i|0];c=d;l=i+1|0;c=l?c:c+1|0;H[b+16>>2]=l;H[b+20>>2]=c;s:{switch(o|0){case 0:a=H[e+704>>2];if((H[e+708>>2]-a|0)!=20){break e}if(H[a+16>>2]!=3){break f}t:{if(f>>>0<=l>>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break t}c=d;a=i+2|0;c=a>>>0<2?c+1|0:c;l=a;H[b+16>>2]=a;H[b+20>>2]=c;c=d;a=i+6|0;c=a>>>0<6?c+1|0:c;if(a>>>0>f>>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break t}d=l+n|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=a;H[b+20>>2]=c;mb(m,d);j=e+672|0;H[j+20>>2]=0;H[j+12>>2]=0;H[j+16>>2]=0;H[j>>2]=0;H[j+4>>2]=0;H[j+20>>2]=d;d=Ac(e+16|0,e+704|0);k=0;g=ca-32|0;ca=g;H[g+24>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;f=H[b+12>>2];m=f;i=H[b+8>>2];c=H[b+20>>2];l=c;h=H[b+16>>2];a=h+4|0;c=a>>>0<4?c+1|0:c;u:{if(a>>>0>i>>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break u}n=H[b>>2];f=n+h|0;f=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[b+16>>2]=a;H[b+20>>2]=c;v:{w:{switch(f-2|0){case 1:if((c|0)>=(m|0)&a>>>0>=i>>>0|(c|0)>(m|0)){break u}a=F[a+n|0];c=l;f=h+5|0;c=f>>>0<5?c+1|0:c;H[b+16>>2]=f;H[b+20>>2]=c;H[j+8>>2]=a;if((a|0)==1){if(Ud(j,b,g+16|0)){break v}break u}Rd(1799,23,H[3443]);break u;default:Rd(1774,24,H[3443]);break u;case 0:break w}}if(!Ud(j,b,g+16|0)){break u}}H[g+8>>2]=H[g+16>>2];H[g>>2]=H[g+20>>2];c=ca-32|0;ca=c;a=H[j>>2];p=L[j+4>>2];H[c+24>>2]=1065353216;h=-1<0){L[c+24>>2]=p/O(a|0)}m=H[g+8>>2];n=H[g>>2];if((m|0)!=(n|0)){a=H[d+28>>2];while(1){b=H[m>>2];f=H[m+4>>2];p=L[c+24>>2];L[c+16>>2]=p*O(H[m+8>>2]-h|0);L[c+12>>2]=p*O(f-h|0);L[c+8>>2]=p*O(b-h|0);b=a;i=H[d+16>>2];f=H[i>>2];if(!I[f+84|0]){b=H[H[f+68>>2]+(a<<2)>>2]}if(K[f+80>>2]>b>>>0){a=H[f+40>>2];qa(H[H[f>>2]>>2]+N(a,b)|0,(c+8|0)+(H[i+4>>2]<<2)|0,a);n=H[g>>2];a=H[d+28>>2]}a=a+1|0;H[d+28>>2]=a;m=m+12|0;if((n|0)!=(m|0)){continue}break}}ca=c+32|0;k=1}a=H[g+16>>2];if(a){H[g+20>>2]=a;oa(a)}ca=g+32|0;yc(d);j=1;if(k){break f}}j=0;break f;case 1:break s;default:break f}}if(f>>>0<=l>>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break f}o=I[l+n|0];c=d;l=i+2|0;c=l>>>0<2?c+1|0:c;H[b+16>>2]=l;H[b+20>>2]=c;if(o>>>0>=7){H[e>>2]=o;Qd(1651,e);break f}c=d;d=i+6|0;c=d>>>0<6?c+1|0:c;if(d>>>0>f>>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break f}f=l+n|0;f=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[b+16>>2]=d;H[b+20>>2]=c;if(k){m=0;while(1){c=ea[H[H[a>>2]+20>>2]](a,m)|0;c=H[H[H[(ea[H[H[a>>2]+28>>2]](a)|0)+4>>2]+8>>2]+(c<<2)>>2];mb(c,f);F[c+84|0]=1;H[c+72>>2]=H[c+68>>2];m=m+1|0;if((k|0)!=(m|0)){continue}break}}a=Ac(e+672|0,e+704|0);x:{y:{switch(o|0){case 1:c=wb(e+16|0,g);b=zd(c,b,a,-1);xb(c);if(!b){break g}break x;case 2:c=ub(e+16|0,g);b=yd(c,b,a,-1);vb(c);if(!b){break g}break x;case 3:c=ub(e+16|0,g);b=xd(c,b,a,-1);vb(c);if(!b){break g}break x;case 4:c=$a(e+16|0,g);b=wd(c,b,a,-1);ab(c);if(!b){break g}break x;case 5:c=$a(e+16|0,g);b=vd(c,b,a,-1);ab(c);if(!b){break g}break x;case 6:c=$a(e+16|0,g);b=ud(c,b,a,-1);ab(c);if(b){break x}break g;case 0:break y;default:break g}}c=wb(e+16|0,g);b=Bd(c,b,a,-1);xb(c);if(!b){break g}}yc(a);j=1;break f}sa();v()}sa();v()}yc(a)}a=H[e+704>>2]}if(!a){break a}H[e+708>>2]=a;oa(a);break a}j=1;if(H[a+52>>2]==H[a+48>>2]){break b}while(1){if(!td(1,e+16|0,b)){break c}c=H[a+48>>2];d=H[e+16>>2];H[c+(m<<2)>>2]=d>>>1^0-(d&1);m=m+1|0;if(m>>>0>2]-c>>2>>>0){continue}break}break b}j=0}a=H[e+672>>2];if(!a){break a}H[e+676>>2]=a;oa(a)}ca=e+720|0;return j|0}function te(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=ca-32|0;ca=h;H[b+32>>2]=d;H[b+40>>2]=c;H[b+4>>2]=e;nc(a,d,h+16|0);a:{if(H[a>>2]){break a}if(F[a+15|0]<0){oa(H[a+4>>2])}d=I[h+23|0];if((ea[H[H[b>>2]+8>>2]](b)|0)!=(d|0)){b=pa(64);F[b+50|0]=0;c=I[1314]|I[1315]<<8;F[b+48|0]=c;F[b+49|0]=c>>>8;c=I[1310]|I[1311]<<8|(I[1312]<<16|I[1313]<<24);d=I[1306]|I[1307]<<8|(I[1308]<<16|I[1309]<<24);F[b+40|0]=d;F[b+41|0]=d>>>8;F[b+42|0]=d>>>16;F[b+43|0]=d>>>24;F[b+44|0]=c;F[b+45|0]=c>>>8;F[b+46|0]=c>>>16;F[b+47|0]=c>>>24;c=I[1302]|I[1303]<<8|(I[1304]<<16|I[1305]<<24);d=I[1298]|I[1299]<<8|(I[1300]<<16|I[1301]<<24);F[b+32|0]=d;F[b+33|0]=d>>>8;F[b+34|0]=d>>>16;F[b+35|0]=d>>>24;F[b+36|0]=c;F[b+37|0]=c>>>8;F[b+38|0]=c>>>16;F[b+39|0]=c>>>24;c=I[1294]|I[1295]<<8|(I[1296]<<16|I[1297]<<24);d=I[1290]|I[1291]<<8|(I[1292]<<16|I[1293]<<24);F[b+24|0]=d;F[b+25|0]=d>>>8;F[b+26|0]=d>>>16;F[b+27|0]=d>>>24;F[b+28|0]=c;F[b+29|0]=c>>>8;F[b+30|0]=c>>>16;F[b+31|0]=c>>>24;c=I[1286]|I[1287]<<8|(I[1288]<<16|I[1289]<<24);d=I[1282]|I[1283]<<8|(I[1284]<<16|I[1285]<<24);F[b+16|0]=d;F[b+17|0]=d>>>8;F[b+18|0]=d>>>16;F[b+19|0]=d>>>24;F[b+20|0]=c;F[b+21|0]=c>>>8;F[b+22|0]=c>>>16;F[b+23|0]=c>>>24;c=I[1278]|I[1279]<<8|(I[1280]<<16|I[1281]<<24);d=I[1274]|I[1275]<<8|(I[1276]<<16|I[1277]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=c;F[b+13|0]=c>>>8;F[b+14|0]=c>>>16;F[b+15|0]=c>>>24;c=I[1270]|I[1271]<<8|(I[1272]<<16|I[1273]<<24);d=I[1266]|I[1267]<<8|(I[1268]<<16|I[1269]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=c;F[b+5|0]=c>>>8;F[b+6|0]=c>>>16;F[b+7|0]=c>>>24;H[a>>2]=-1;za(a+4|0,b,50);oa(b);break a}c=I[h+21|0];F[b+36|0]=c;e=I[h+22|0];F[b+37|0]=e;if((c-3&255)>>>0<=253){b=pa(32);F[b+22|0]=0;c=I[1427]|I[1428]<<8|(I[1429]<<16|I[1430]<<24);d=I[1423]|I[1424]<<8|(I[1425]<<16|I[1426]<<24);F[b+14|0]=d;F[b+15|0]=d>>>8;F[b+16|0]=d>>>16;F[b+17|0]=d>>>24;F[b+18|0]=c;F[b+19|0]=c>>>8;F[b+20|0]=c>>>16;F[b+21|0]=c>>>24;c=I[1421]|I[1422]<<8|(I[1423]<<16|I[1424]<<24);d=I[1417]|I[1418]<<8|(I[1419]<<16|I[1420]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=c;F[b+13|0]=c>>>8;F[b+14|0]=c>>>16;F[b+15|0]=c>>>24;c=I[1413]|I[1414]<<8|(I[1415]<<16|I[1416]<<24);d=I[1409]|I[1410]<<8|(I[1411]<<16|I[1412]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=c;F[b+5|0]=c>>>8;F[b+6|0]=c>>>16;F[b+7|0]=c>>>24;H[a>>2]=-5;za(a+4|0,b,22);oa(b);break a}if(!((c|0)!=2|e>>>0<=(d?2:3)>>>0)){b=pa(32);F[b+22|0]=0;c=I[1404]|I[1405]<<8|(I[1406]<<16|I[1407]<<24);d=I[1400]|I[1401]<<8|(I[1402]<<16|I[1403]<<24);F[b+14|0]=d;F[b+15|0]=d>>>8;F[b+16|0]=d>>>16;F[b+17|0]=d>>>24;F[b+18|0]=c;F[b+19|0]=c>>>8;F[b+20|0]=c>>>16;F[b+21|0]=c>>>24;c=I[1398]|I[1399]<<8|(I[1400]<<16|I[1401]<<24);d=I[1394]|I[1395]<<8|(I[1396]<<16|I[1397]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=c;F[b+13|0]=c>>>8;F[b+14|0]=c>>>16;F[b+15|0]=c>>>24;c=I[1390]|I[1391]<<8|(I[1392]<<16|I[1393]<<24);d=I[1386]|I[1387]<<8|(I[1388]<<16|I[1389]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=c;F[b+5|0]=c>>>8;F[b+6|0]=c>>>16;F[b+7|0]=c>>>24;H[a>>2]=-5;za(a+4|0,b,22);oa(b);break a}c=e|c<<8;G[H[b+32>>2]+38>>1]=c;b:{if((c&65535)>>>0<259|G[h+26>>1]>=0){break b}i=ca-16|0;ca=i;e=pa(36);c=e;H[c+4>>2]=0;H[c+8>>2]=0;H[c+24>>2]=0;H[c+28>>2]=0;c=c+16|0;H[c>>2]=0;H[c+4>>2]=0;H[e>>2]=e+4;H[e+32>>2]=0;H[e+12>>2]=c;H[i>>2]=0;d=H[b+32>>2];j=ca-16|0;ca=j;c=0;c:{if(!e){break c}H[i>>2]=d;H[j+12>>2]=0;c=0;if(!Bb(1,j+12|0,d)){break c}m=H[j+12>>2];if(m){while(1){d:{if(Bb(1,j+8|0,H[i>>2])){c=pa(28);H[c+4>>2]=0;H[c+8>>2]=0;d=c+16|0;H[d>>2]=0;H[d+4>>2]=0;H[c>>2]=c+4;H[c+12>>2]=d;H[c+24>>2]=H[j+8>>2];if(ce(i,c)){break d}Ra(c+12|0,H[c+16>>2]);Qa(c,H[c+4>>2]);oa(c)}c=0;break c}f=ca-16|0;ca=f;H[f+8>>2]=c;e:{if(!c){break e}d=H[e+28>>2];f:{if(d>>>0>2]){H[f+8>>2]=0;H[d>>2]=c;H[e+28>>2]=d+4;break f}d=0;g:{h:{i:{g=H[e+24>>2];l=H[e+28>>2]-g>>2;c=l+1|0;if(c>>>0<1073741824){g=H[e+32>>2]-g|0;k=g>>>1|0;g=g>>>0>=2147483644?1073741823:c>>>0>>0?k:c;if(g){if(g>>>0>=1073741824){break i}d=pa(g<<2)}k=H[f+8>>2];H[f+8>>2]=0;c=(l<<2)+d|0;H[c>>2]=k;g=(g<<2)+d|0;l=c+4|0;d=H[e+28>>2];k=H[e+24>>2];if((d|0)==(k|0)){break h}while(1){d=d-4|0;o=H[d>>2];H[d>>2]=0;c=c-4|0;H[c>>2]=o;if((d|0)!=(k|0)){continue}break}H[e+32>>2]=g;g=H[e+28>>2];H[e+28>>2]=l;d=H[e+24>>2];H[e+24>>2]=c;if((d|0)==(g|0)){break g}while(1){g=g-4|0;c=H[g>>2];H[g>>2]=0;if(c){Ra(c+12|0,H[c+16>>2]);Qa(c,H[c+4>>2]);oa(c)}if((d|0)!=(g|0)){continue}break}break g}sa();v()}wa();v()}H[e+32>>2]=g;H[e+28>>2]=l;H[e+24>>2]=c}if(d){oa(d)}}c=H[f+8>>2];H[f+8>>2]=0;if(!c){break e}Ra(c+12|0,H[c+16>>2]);Qa(c,H[c+4>>2]);oa(c)}ca=f+16|0;n=n+1|0;if((m|0)!=(n|0)){continue}break}}c=ce(i,e)}ca=j+16|0;j:{if(c){d=H[b+4>>2];c=H[d+4>>2];H[d+4>>2]=e;if(c){Uc(c)}H[a>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;break j}c=pa(32);F[c+26|0]=0;d=I[1579]|I[1580]<<8;F[c+24|0]=d;F[c+25|0]=d>>>8;d=I[1575]|I[1576]<<8|(I[1577]<<16|I[1578]<<24);f=I[1571]|I[1572]<<8|(I[1573]<<16|I[1574]<<24);F[c+16|0]=f;F[c+17|0]=f>>>8;F[c+18|0]=f>>>16;F[c+19|0]=f>>>24;F[c+20|0]=d;F[c+21|0]=d>>>8;F[c+22|0]=d>>>16;F[c+23|0]=d>>>24;d=I[1567]|I[1568]<<8|(I[1569]<<16|I[1570]<<24);f=I[1563]|I[1564]<<8|(I[1565]<<16|I[1566]<<24);F[c+8|0]=f;F[c+9|0]=f>>>8;F[c+10|0]=f>>>16;F[c+11|0]=f>>>24;F[c+12|0]=d;F[c+13|0]=d>>>8;F[c+14|0]=d>>>16;F[c+15|0]=d>>>24;d=I[1559]|I[1560]<<8|(I[1561]<<16|I[1562]<<24);f=I[1555]|I[1556]<<8|(I[1557]<<16|I[1558]<<24);F[c|0]=f;F[c+1|0]=f>>>8;F[c+2|0]=f>>>16;F[c+3|0]=f>>>24;F[c+4|0]=d;F[c+5|0]=d>>>8;F[c+6|0]=d>>>16;F[c+7|0]=d>>>24;H[a>>2]=-1;za(a+4|0,c,26);oa(c);H[i+8>>2]=0;Uc(e)}ca=i+16|0;if(H[a>>2]){break a}if(F[a+15|0]>=0){break b}oa(H[a+4>>2])}if(!(ea[H[H[b>>2]+12>>2]](b)|0)){b=pa(48);F[b+33|0]=0;F[b+32|0]=I[1384];c=I[1380]|I[1381]<<8|(I[1382]<<16|I[1383]<<24);d=I[1376]|I[1377]<<8|(I[1378]<<16|I[1379]<<24);F[b+24|0]=d;F[b+25|0]=d>>>8;F[b+26|0]=d>>>16;F[b+27|0]=d>>>24;F[b+28|0]=c;F[b+29|0]=c>>>8;F[b+30|0]=c>>>16;F[b+31|0]=c>>>24;c=I[1372]|I[1373]<<8|(I[1374]<<16|I[1375]<<24);d=I[1368]|I[1369]<<8|(I[1370]<<16|I[1371]<<24);F[b+16|0]=d;F[b+17|0]=d>>>8;F[b+18|0]=d>>>16;F[b+19|0]=d>>>24;F[b+20|0]=c;F[b+21|0]=c>>>8;F[b+22|0]=c>>>16;F[b+23|0]=c>>>24;c=I[1364]|I[1365]<<8|(I[1366]<<16|I[1367]<<24);d=I[1360]|I[1361]<<8|(I[1362]<<16|I[1363]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=c;F[b+13|0]=c>>>8;F[b+14|0]=c>>>16;F[b+15|0]=c>>>24;c=I[1356]|I[1357]<<8|(I[1358]<<16|I[1359]<<24);d=I[1352]|I[1353]<<8|(I[1354]<<16|I[1355]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=c;F[b+5|0]=c>>>8;F[b+6|0]=c>>>16;F[b+7|0]=c>>>24;H[a>>2]=-1;za(a+4|0,b,33);oa(b);break a}if(!(ea[H[H[b>>2]+20>>2]](b)|0)){b=mc(h,1582);H[a>>2]=-1;a=a+4|0;if(F[b+11|0]>=0){c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;H[a+8>>2]=H[b+8>>2];break a}za(a,H[b>>2],H[b+4>>2]);if(F[b+11|0]>=0){break a}oa(H[b>>2]);break a}if(!(ea[H[H[b>>2]+24>>2]](b)|0)){b=mc(h,1317);H[a>>2]=-1;a=a+4|0;if(F[b+11|0]>=0){c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;H[a+8>>2]=H[b+8>>2];break a}za(a,H[b>>2],H[b+4>>2]);if(F[b+11|0]>=0){break a}oa(H[b>>2]);break a}H[a>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0}ca=h+32|0}function pg(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0;m=ca-16|0;ca=m;H[m+12>>2]=b;b=pa(32);H[m>>2]=b;H[m+4>>2]=24;H[m+8>>2]=-2147483616;c=I[1206]|I[1207]<<8|(I[1208]<<16|I[1209]<<24);d=I[1202]|I[1203]<<8|(I[1204]<<16|I[1205]<<24);F[b+16|0]=d;F[b+17|0]=d>>>8;F[b+18|0]=d>>>16;F[b+19|0]=d>>>24;F[b+20|0]=c;F[b+21|0]=c>>>8;F[b+22|0]=c>>>16;F[b+23|0]=c>>>24;c=I[1198]|I[1199]<<8|(I[1200]<<16|I[1201]<<24);d=I[1194]|I[1195]<<8|(I[1196]<<16|I[1197]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=c;F[b+13|0]=c>>>8;F[b+14|0]=c>>>16;F[b+15|0]=c>>>24;c=I[1190]|I[1191]<<8|(I[1192]<<16|I[1193]<<24);d=I[1186]|I[1187]<<8|(I[1188]<<16|I[1189]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=c;F[b+5|0]=c>>>8;F[b+6|0]=c>>>16;F[b+7|0]=c>>>24;F[b+24|0]=0;l=ca-48|0;ca=l;f=H[m+12>>2];d=a;a=a+16|0;b=H[a>>2];a:{b:{if(!b){break b}c=a;while(1){e=(f|0)>H[b+16>>2];c=e?c:b;b=H[(e?b+4|0:b)>>2];if(b){continue}break}if((a|0)==(c|0)){break b}if((f|0)>=H[c+16>>2]){break a}}H[l+28>>2]=0;H[l+32>>2]=0;y=l+24|0;H[l+24>>2]=y|4;a=l+16|0;H[a>>2]=0;H[a+4>>2]=0;H[l+8>>2]=f;H[l+12>>2]=a;t=l+8|0;a=t;x=ca-16|0;ca=x;u=d+12|0;c=H[u+4>>2];c:{d:{if(!c){o=u+4|0;d=o;break d}a=H[a>>2];while(1){d=c;b=H[c+16>>2];if((b|0)>(a|0)){o=d;c=H[d>>2];if(c){continue}break d}if((a|0)<=(b|0)){g=d;a=0;break c}c=H[d+4>>2];if(c){continue}break}o=d+4|0}g=pa(32);b=H[t>>2];q=g+24|0;a=q;H[a>>2]=0;H[a+4>>2]=0;H[g+16>>2]=b;r=g+20|0;H[r>>2]=a;c=H[t+4>>2];z=t+8|0;if((c|0)!=(z|0)){while(1){p=ca-16|0;ca=p;a=p+8|0;k=c+16|0;e:{f:{g:{h:{i:{j:{k:{f=q;e=r+4|0;l:{if((f|0)==(e|0)){break l}b=I[f+27|0];h=b<<24>>24<0;i=I[k+11|0];n=i<<24>>24;j=(n|0)<0;i=j?H[k+4>>2]:i;b=h?H[f+20>>2]:b;s=i>>>0>b>>>0;w=s?b:i;if(w){j=j?H[k>>2]:k;h=h?H[f+16>>2]:f+16|0;A=Fa(j,h,w);if(!A){if(b>>>0>i>>>0){break l}break k}if((A|0)>=0){break k}break l}if(b>>>0<=i>>>0){break j}}h=H[f>>2];m:{a=f;n:{if((a|0)==H[r>>2]){break n}o:{if(!h){b=f;while(1){a=H[b+8>>2];i=H[a>>2]==(b|0);b=a;if(i){continue}break}break o}b=h;while(1){a=b;b=H[b+4>>2];if(b){continue}break}}i=I[k+11|0];s=i<<24>>24;b=(s|0)<0;j=I[a+27|0];n=j<<24>>24<0;p:{i=b?H[k+4>>2]:i;j=n?H[a+20>>2]:j;w=i>>>0>>0?i:j;if(w){b=Fa(n?H[a+16>>2]:a+16|0,b?H[k>>2]:k,w);if(b){break p}}if(i>>>0>j>>>0){break n}break m}if((b|0)>=0){break m}}if(!h){H[p+12>>2]=f;a=f;break e}H[p+12>>2]=a;a=a+4|0;break e}b=H[e>>2];if(!b){H[p+12>>2]=e;a=e;break e}h=(s|0)<0?H[k>>2]:k;f=e;while(1){a=b;b=I[b+27|0];e=b<<24>>24<0;b=e?H[a+20>>2]:b;k=b>>>0>>0;q:{r:{s:{t:{n=k?b:i;u:{if(n){e=e?H[a+16>>2]:a+16|0;j=Fa(h,e,n);if(!j){if(b>>>0>i>>>0){break u}break t}if((j|0)>=0){break t}break u}if(b>>>0<=i>>>0){break s}}f=a;b=H[a>>2];if(b){continue}break g}b=Fa(e,h,n);if(b){break r}}if(k){break q}break g}if((b|0)>=0){break g}}f=a+4|0;b=H[a+4>>2];if(b){continue}break}break g}b=Fa(h,j,w);if(b){break i}}if(s){break h}break f}if((b|0)>=0){break f}}h=H[f+4>>2];v:{if(!h){b=f;while(1){a=H[b+8>>2];j=H[a>>2]!=(b|0);b=a;if(j){continue}break}break v}b=h;while(1){a=b;b=H[b>>2];if(b){continue}break}}w:{x:{if((a|0)==(e|0)){break x}j=I[a+27|0];b=j<<24>>24<0;y:{j=b?H[a+20>>2]:j;s=i>>>0>j>>>0?j:i;if(s){b=Fa((n|0)<0?H[k>>2]:k,b?H[a+16>>2]:a+16|0,s);if(b){break y}}if(i>>>0>>0){break x}break w}if((b|0)>=0){break w}}if(!h){H[p+12>>2]=f;a=f+4|0;break e}H[p+12>>2]=a;break e}b=H[e>>2];if(!b){H[p+12>>2]=e;a=e;break e}h=(n|0)<0?H[k>>2]:k;f=e;while(1){a=b;b=I[b+27|0];e=b<<24>>24<0;b=e?H[a+20>>2]:b;k=b>>>0>>0;z:{A:{B:{C:{n=k?b:i;D:{if(n){e=e?H[a+16>>2]:a+16|0;j=Fa(h,e,n);if(!j){if(b>>>0>i>>>0){break D}break C}if((j|0)>=0){break C}break D}if(b>>>0<=i>>>0){break B}}f=a;b=H[a>>2];if(b){continue}break g}b=Fa(e,h,n);if(b){break A}}if(k){break z}break g}if((b|0)>=0){break g}}f=a+4|0;b=H[a+4>>2];if(b){continue}break}}H[p+12>>2]=a;a=f;break e}H[p+12>>2]=f;H[a>>2]=f}f=a;a=H[a>>2];if(a){b=0}else{a=pa(40);b=a+16|0;E:{if(F[c+27|0]>=0){e=H[c+20>>2];H[b>>2]=H[c+16>>2];H[b+4>>2]=e;H[b+8>>2]=H[c+24>>2];break E}za(b,H[c+16>>2],H[c+20>>2])}b=a+28|0;F:{if(F[c+39|0]>=0){e=H[c+32>>2];H[b>>2]=H[c+28>>2];H[b+4>>2]=e;H[b+8>>2]=H[c+36>>2];break F}za(b,H[c+28>>2],H[c+32>>2])}H[a+8>>2]=H[p+12>>2];H[a>>2]=0;H[a+4>>2]=0;H[f>>2]=a;b=a;e=H[H[r>>2]>>2];if(e){H[r>>2]=e;b=H[f>>2]}Sb(H[r+4>>2],b);H[r+8>>2]=H[r+8>>2]+1;b=1}F[x+12|0]=b;H[x+8>>2]=a;ca=p+16|0;b=H[c+4>>2];G:{if(b){while(1){c=b;b=H[b>>2];if(b){continue}break G}}while(1){a=c;c=H[c+8>>2];if((a|0)!=H[c>>2]){continue}break}}if((c|0)!=(z|0)){continue}break}}H[g+8>>2]=d;H[g>>2]=0;H[g+4>>2]=0;H[o>>2]=g;c=g;a=H[H[u>>2]>>2];if(a){H[u>>2]=a;c=H[o>>2]}Sb(H[u+4>>2],c);H[u+8>>2]=H[u+8>>2]+1;a=1}F[l+44|0]=a;H[l+40>>2]=g;ca=x+16|0;c=H[l+40>>2];Kb(t|4,H[l+16>>2]);Kb(y,H[l+28>>2])}f=ca-48|0;ca=f;d=f+8|0;g=ca-32|0;ca=g;o=g+32|0;b=o;a=g+21|0;H:{if((b|0)==(a|0)){break H}}e=b-a|0;I:{if((e|0)<=9){h=61;if((e|0)<(K[3660]<=1|0)){break I}}F[a|0]=49;b=a+1|0;h=0}H[g+12>>2]=h;H[g+8>>2]=b;h=ca-16|0;ca=h;e=ca-16|0;ca=e;J:{q=H[g+8>>2];g=q-a|0;if(g>>>0<=2147483631){K:{if(g>>>0<11){F[d+11|0]=g|I[d+11|0]&128;F[d+11|0]=I[d+11|0]&127;b=d;break K}t=e+8|0;if(g>>>0>=11){k=g+16&-16;b=k-1|0;b=(b|0)==11?k:b}else{b=10}Zb(t,b+1|0);b=H[e+8>>2];H[d>>2]=b;H[d+8>>2]=H[d+8>>2]&-2147483648|H[e+12>>2]&2147483647;H[d+8>>2]=H[d+8>>2]|-2147483648;H[d+4>>2]=g}while(1){if((a|0)!=(q|0)){F[b|0]=I[a|0];b=b+1|0;a=a+1|0;continue}break}F[e+7|0]=0;F[b|0]=I[e+7|0];ca=e+16|0;break J}Na();v()}ca=h+16|0;ca=o;H[f+32>>2]=m;L:{M:{a=c+20|0;d=H[a+4>>2];N:{if(!d){g=a+4|0;c=g;break N}b=I[m+11|0];c=b<<24>>24<0;e=c?H[m>>2]:m;b=c?H[m+4>>2]:b;while(1){c=d;d=I[c+27|0];g=d<<24>>24<0;d=g?H[c+20>>2]:d;o=d>>>0>>0;O:{P:{Q:{R:{h=o?d:b;S:{if(h){g=g?H[c+16>>2]:c+16|0;q=Fa(e,g,h);if(!q){if(b>>>0>>0){break S}break R}if((q|0)>=0){break R}break S}if(b>>>0>=d>>>0){break Q}}g=c;d=H[c>>2];if(d){continue}break N}d=Fa(g,e,h);if(d){break P}}if(o){break O}break M}if((d|0)>=0){break M}}d=H[c+4>>2];if(d){continue}break}g=c+4|0}d=pa(40);e=d+16|0;b=H[f+32>>2];T:{if(F[b+11|0]>=0){o=H[b+4>>2];H[e>>2]=H[b>>2];H[e+4>>2]=o;H[e+8>>2]=H[b+8>>2];break T}za(e,H[b>>2],H[b+4>>2])}H[d+8>>2]=c;H[d>>2]=0;H[d+4>>2]=0;H[d+36>>2]=0;H[d+28>>2]=0;H[d+32>>2]=0;H[g>>2]=d;c=d;b=H[H[a>>2]>>2];if(b){H[a>>2]=b;c=H[g>>2]}Sb(H[a+4>>2],c);H[a+8>>2]=H[a+8>>2]+1;a=1;break L}d=c;a=0}F[f+44|0]=a;H[f+40>>2]=d;a=H[f+40>>2];if(F[a+39|0]<0){oa(H[a+28>>2])}b=H[f+12>>2];H[a+28>>2]=H[f+8>>2];H[a+32>>2]=b;H[a+36>>2]=H[f+16>>2];ca=f+48|0;ca=l+48|0;if(F[m+11|0]<0){oa(H[m>>2])}ca=m+16|0}function Bd(a,b,c,d){var 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;j=H[b+8>>2];e=H[b+12>>2];g=H[b+20>>2];h=H[b+16>>2];k=h+4|0;g=k>>>0<4?g+1|0:g;a:{if(j>>>0>>0&(e|0)<=(g|0)|(e|0)<(g|0)){break a}h=h+H[b>>2]|0;H[a>>2]=I[h|0]|I[h+1|0]<<8|(I[h+2|0]<<16|I[h+3|0]<<24);h=H[b+20>>2];e=h;j=H[b+16>>2];g=j+4|0;h=g>>>0<4?e+1|0:e;H[b+16>>2]=g;H[b+20>>2]=h;if(K[a>>2]>32){break a}l=H[b+8>>2];k=H[b+12>>2];h=e;e=j+8|0;h=e>>>0<8?h+1|0:h;if(e>>>0>l>>>0&(h|0)>=(k|0)|(h|0)>(k|0)){break a}h=H[b>>2]+g|0;g=I[h|0]|I[h+1|0]<<8|(I[h+2|0]<<16|I[h+3|0]<<24);H[a+4>>2]=g;h=H[b+20>>2];e=H[b+16>>2]+4|0;h=e>>>0<4?h+1|0:h;H[b+16>>2]=e;H[b+20>>2]=h;if(!g){return 1}if(d>>>0>>0){break a}H[a+8>>2]=0;if(!ua(a+16|0,b)){break a}if(!ua(a+36|0,b)){break a}if(!ua(a+56|0,b)){break a}if(!ua(a+76|0,b)){break a}s=H[a+4>>2];h=c;b=0;g=0;e=ca-32|0;ca=e;d=a;a=H[a+12>>2];H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;b:{c:{if(a){if(a>>>0>=1073741824){break c}c=a<<2;b=pa(c);H[e+8>>2]=b;g=b+c|0;H[e+16>>2]=g;ra(b,0,c);H[e+12>>2]=g}c=H[d+120>>2];i=H[c>>2];if(i){H[c+4>>2]=i;oa(i);g=H[e+12>>2];b=H[e+8>>2];a=H[d+12>>2]}H[c+4>>2]=g;H[c>>2]=b;H[c+8>>2]=H[e+16>>2];b=0;H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;d:{if(a){if(a>>>0>=1073741824){break d}a=a<<2;f=pa(a);H[e+8>>2]=f;b=a+f|0;H[e+16>>2]=b;ra(f,0,a);H[e+12>>2]=b}a=H[d+132>>2];c=H[a>>2];if(c){H[a+4>>2]=c;oa(c);f=H[e+8>>2];b=H[e+12>>2]}H[a+4>>2]=b;H[a>>2]=f;H[a+8>>2]=H[e+16>>2];H[e+24>>2]=0;H[e+28>>2]=0;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;xa(e+8|0);a=H[e+24>>2]+H[e+28>>2]|0;b=(a>>>0)/341|0;a=H[H[e+12>>2]+(b<<2)>>2]+N(a-N(b,341)|0,12)|0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=s;c=1;a=H[e+28>>2]+1|0;H[e+28>>2]=a;e:{if(!a){break e}while(1){b=H[e+12>>2];f=H[e+24>>2];k=a-1|0;c=f+k|0;i=(c>>>0)/341|0;c=H[b+(i<<2)>>2]+N(c-N(i,341)|0,12)|0;g=H[c+8>>2];i=H[c+4>>2];j=H[c>>2];H[e+28>>2]=k;c=H[e+16>>2];if((((b|0)!=(c|0)?N(c-b>>2,341)-1|0:0)-(a+f|0)|0)+1>>>0>=682){oa(H[c-4>>2]);H[e+16>>2]=H[e+16>>2]-4}c=0;if(j>>>0>s>>>0){break e}b=H[d+12>>2];a=(b-1|0)!=(i|0)?i+1|0:0;if(a>>>0>=b>>>0){break e}f=N(g,12);o=f+H[d+132>>2]|0;k=f+H[d+120>>2]|0;i=H[d>>2];l=a<<2;m=H[l+H[o>>2]>>2];f:{g:{if((i|0)==(m|0)){if(!j){break g}o=0;b=H[h+20>>2];g=H[h+16>>2];if((b|0)==(g|0)){a=H[d+8>>2];H[h+28>>2]=j+H[h+28>>2];H[d+8>>2]=a+j;break g}while(1){c=(b|0)==(g|0);a=b;i=0;b=g;h:{if(c){break h}while(1){f=H[h+28>>2];b=a;c=N(i,20)+g|0;l=H[c>>2];if(!I[l+84|0]){f=H[H[l+68>>2]+(f<<2)>>2]}if(K[l+80>>2]<=f>>>0){break h}m=H[k>>2]+(H[c+4>>2]<<2)|0;g=H[c+12>>2];b=m;i:{if(g>>>0>3){break i}a=0;b=H[h+12>>2];if(!H[c+16>>2]){break i}while(1){b=qa(b,m+(a<<2)|0,g);g=H[c+12>>2];b=b+g|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[h+12>>2]}a=H[l+40>>2];qa(H[H[l>>2]>>2]+N(a,f)|0,b,a);i=i+1|0;a=H[h+20>>2];b=a;g=H[h+16>>2];if(i>>>0<(b-g|0)/20>>>0){continue}break}}H[h+28>>2]=H[h+28>>2]+1;H[d+8>>2]=H[d+8>>2]+1;o=o+1|0;if((j|0)!=(o|0)){continue}break}break g}j:{k:{l:{m:{if(j>>>0<=2){c=H[d+108>>2];H[c>>2]=a;f=1;b=H[d+12>>2];if(b>>>0>1){break m}break j}if(K[d+8>>2]>K[d+4>>2]){break e}b=H[d+120>>2];n=g+1|0;o=N(n,12);p=b+o|0;if((p|0)!=(k|0)){Aa(p,H[k>>2],H[k+4>>2]);b=H[d+120>>2]}b=l+H[b+o>>2]|0;H[b>>2]=H[b>>2]+(1<>2];m=32-i|0;n:{if((b|0)<=(m|0)){k=H[d+28>>2];if((k|0)==H[d+20>>2]){break l}m=H[k>>2];p=b+i|0;H[d+32>>2]=p;b=m<>>32-b|0;if((p|0)!=32){break n}H[d+32>>2]=0;H[d+28>>2]=k+4;break n}k=H[d+28>>2];p=k+4|0;if((p|0)==H[d+20>>2]){break l}r=H[k>>2];H[d+28>>2]=p;m=b-m|0;H[d+32>>2]=m;b=H[k+4>>2]>>>32-m|r<>>32-b}i=j>>>1|0;if(i>>>0>>0){break e}break k}while(1){a=(b-1|0)!=(a|0)?a+1|0:0;H[c+(f<<2)>>2]=a;b=H[d+12>>2];f=f+1|0;if(b>>>0>f>>>0){continue}break}break j}i=j>>>1|0;b=0}o:{p:{b=i-b|0;c=j-b|0;q:{if((c|0)==(b|0)){c=b;break q}i=H[d+88>>2];if((i|0)==H[d+80>>2]){break p}j=H[i>>2];k=H[d+92>>2];m=k+1|0;H[d+92>>2]=m;j=j&-2147483648>>>k;r:{if((m|0)==32){H[d+92>>2]=0;H[d+88>>2]=i+4;if(j){break r}break p}if(!j){break p}}}i=c;c=b;break o}i=b}b=H[d+132>>2];j=b+f|0;f=H[j>>2];k=f+l|0;H[k>>2]=H[k>>2]+1;Aa(b+o|0,f,H[j+4>>2]);if(c){b=H[e+28>>2]+H[e+24>>2]|0;j=H[e+16>>2];f=H[e+12>>2];if((b|0)==(((f|0)!=(j|0)?N(j-f>>2,341)-1|0:0)|0)){xa(e+8|0);f=H[e+12>>2];b=H[e+24>>2]+H[e+28>>2]|0}j=(b>>>0)/341|0;b=H[(j<<2)+f>>2]+N(b-N(j,341)|0,12)|0;H[b+8>>2]=g;H[b+4>>2]=a;H[b>>2]=c;H[e+28>>2]=H[e+28>>2]+1}if(!i){break g}b=H[e+28>>2]+H[e+24>>2]|0;c=H[e+16>>2];f=H[e+12>>2];if((b|0)==(((c|0)!=(f|0)?N(c-f>>2,341)-1|0:0)|0)){xa(e+8|0);f=H[e+12>>2];b=H[e+24>>2]+H[e+28>>2]|0}c=(b>>>0)/341|0;b=H[(c<<2)+f>>2]+N(b-N(c,341)|0,12)|0;H[b+8>>2]=n;H[b+4>>2]=a;H[b>>2]=i;a=H[e+28>>2]+1|0;H[e+28>>2]=a;break f}m=0;if(!j){break g}while(1){if(H[d+12>>2]){i=H[d+40>>2];p=H[o>>2];c=H[d+96>>2];r=H[d+108>>2];a=0;while(1){g=r+(a<<2)|0;H[c+(H[g>>2]<<2)>>2]=0;b=H[d>>2];f=H[g>>2]<<2;l=H[f+p>>2];s:{if((b|0)==(l|0)){break s}f=c+f|0;b=b-l|0;l=H[d+52>>2];q=32-l|0;if((b|0)<=(q|0)){n=H[d+48>>2];if((n|0)==(i|0)){c=0;break e}H[f>>2]=H[n>>2]<>>32-b;b=b+H[d+52>>2]|0;H[d+52>>2]=b;if((b|0)!=32){break s}H[d+52>>2]=0;H[d+48>>2]=n+4;break s}n=H[d+48>>2];t=n+4|0;if((i|0)==(t|0)){c=0;break e}u=H[n>>2];H[d+48>>2]=t;q=b-q|0;H[d+52>>2]=q;H[f>>2]=H[n+4>>2]>>>32-q|u<>>32-b}b=H[g>>2]<<2;g=b+c|0;H[g>>2]=H[g>>2]|H[b+H[k>>2]>>2];a=a+1|0;if(a>>>0>2]){continue}break}}i=0;a=H[h+16>>2];t:{if((a|0)==H[h+20>>2]){break t}while(1){f=H[h+28>>2];c=N(i,20)+a|0;l=H[c>>2];if(!I[l+84|0]){f=H[H[l+68>>2]+(f<<2)>>2]}if(K[l+80>>2]<=f>>>0){break t}n=H[d+96>>2]+(H[c+4>>2]<<2)|0;g=H[c+12>>2];b=n;u:{if(g>>>0>3){break u}a=0;b=H[h+12>>2];if(!H[c+16>>2]){break u}while(1){b=qa(b,n+(a<<2)|0,g);g=H[c+12>>2];b=b+g|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[h+12>>2]}a=H[l+40>>2];qa(H[H[l>>2]>>2]+N(a,f)|0,b,a);i=i+1|0;a=H[h+16>>2];if(i>>>0<(H[h+20>>2]-a|0)/20>>>0){continue}break}}H[h+28>>2]=H[h+28>>2]+1;H[d+8>>2]=H[d+8>>2]+1;m=m+1|0;if((j|0)!=(m|0)){continue}break}}a=H[e+28>>2]}if(a){continue}break}c=1}H[e+28>>2]=0;f=H[e+16>>2];a=H[e+12>>2];b=f-a|0;if(b>>>0>=9){while(1){oa(H[a>>2]);a=H[e+12>>2]+4|0;H[e+12>>2]=a;f=H[e+16>>2];b=f-a|0;if(b>>>0>8){continue}break}}g=170;v:{switch((b>>>2|0)-1|0){case 1:g=341;case 0:H[e+24>>2]=g;break;default:break v}}w:{if((a|0)==(f|0)){break w}while(1){oa(H[a>>2]);a=a+4|0;if((f|0)!=(a|0)){continue}break}a=H[e+16>>2];b=H[e+12>>2];if((a|0)==(b|0)){break w}H[e+16>>2]=a+((b-a|0)+3&-4)}a=H[e+8>>2];if(a){oa(a)}ca=e+32|0;break b}sa();v()}sa();v()}i=c}return i}function zd(a,b,c,d){var 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;j=H[b+8>>2];l=H[b+12>>2];k=H[b+20>>2];i=H[b+16>>2];f=i+4|0;k=f>>>0<4?k+1|0:k;a:{if(f>>>0>j>>>0&(k|0)>=(l|0)|(k|0)>(l|0)){break a}i=i+H[b>>2]|0;H[a>>2]=I[i|0]|I[i+1|0]<<8|(I[i+2|0]<<16|I[i+3|0]<<24);i=H[b+20>>2];j=i;f=H[b+16>>2];i=f+4|0;l=i>>>0<4?j+1|0:j;H[b+16>>2]=i;H[b+20>>2]=l;if(K[a>>2]>32){break a}l=H[b+8>>2];k=H[b+12>>2];f=f+8|0;j=f>>>0<8?j+1|0:j;if((k|0)<=(j|0)&f>>>0>l>>>0|(k|0)<(j|0)){break a}i=H[b>>2]+i|0;f=I[i|0]|I[i+1|0]<<8|(I[i+2|0]<<16|I[i+3|0]<<24);H[a+4>>2]=f;j=H[b+20>>2];i=H[b+16>>2]+4|0;j=i>>>0<4?j+1|0:j;H[b+16>>2]=i;H[b+20>>2]=j;if(!f){return 1}if(d>>>0>>0){break a}H[a+8>>2]=0;if(!ua(a+16|0,b)){break a}if(!ua(a+36|0,b)){break a}if(!ua(a+56|0,b)){break a}if(!ua(a+76|0,b)){break a}t=H[a+4>>2];i=c;b=0;c=0;e=ca-32|0;ca=e;f=a;a=H[a+12>>2];H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;b:{c:{if(a){if(a>>>0>=1073741824){break c}d=a<<2;b=pa(d);H[e+8>>2]=b;c=b+d|0;H[e+16>>2]=c;ra(b,0,d);H[e+12>>2]=c}g=H[f+120>>2];d=H[g>>2];if(d){H[g+4>>2]=d;oa(d);c=H[e+12>>2];b=H[e+8>>2];a=H[f+12>>2]}H[g+4>>2]=c;H[g>>2]=b;H[g+8>>2]=H[e+16>>2];b=0;H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;d:{if(a){if(a>>>0>=1073741824){break d}a=a<<2;h=pa(a);H[e+8>>2]=h;b=a+h|0;H[e+16>>2]=b;ra(h,0,a);H[e+12>>2]=b}c=H[f+132>>2];a=H[c>>2];if(a){H[c+4>>2]=a;oa(a);h=H[e+8>>2];b=H[e+12>>2]}H[c+4>>2]=b;H[c>>2]=h;H[c+8>>2]=H[e+16>>2];H[e+24>>2]=0;H[e+28>>2]=0;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;xa(e+8|0);b=H[e+24>>2]+H[e+28>>2]|0;a=(b>>>0)/341|0;a=H[H[e+12>>2]+(a<<2)>>2]+N(b-N(a,341)|0,12)|0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=t;d=1;a=H[e+28>>2]+1|0;H[e+28>>2]=a;e:{if(!a){break e}while(1){j=H[e+12>>2];g=H[e+24>>2];d=a-1|0;c=g+d|0;b=(c>>>0)/341|0;b=H[j+(b<<2)>>2]+N(c-N(b,341)|0,12)|0;n=H[b+8>>2];c=H[b+4>>2];m=H[b>>2];H[e+28>>2]=d;b=H[e+16>>2];if((((b|0)!=(j|0)?N(b-j>>2,341)-1|0:0)-(a+g|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[e+16>>2]=H[e+16>>2]-4}if(m>>>0>t>>>0){d=0;break e}d=0;b=H[f+12>>2];a=(c|0)!=(b-1|0)?c+1|0:0;if(a>>>0>=b>>>0){break e}b=H[f+120>>2];o=N(n,12);q=b+o|0;g=H[f>>2];h=a<<2;l=o+H[f+132>>2]|0;c=H[h+H[l>>2]>>2];f:{g:{if((g|0)==(c|0)){if(!m){break g}h=0;b=H[i+20>>2];c=H[i+16>>2];if((b|0)==(c|0)){a=H[f+8>>2];H[i+28>>2]=m+H[i+28>>2];H[f+8>>2]=a+m;break g}while(1){d=(b|0)==(c|0);a=b;g=0;b=c;h:{if(d){break h}while(1){d=H[i+28>>2];b=a;k=N(g,20)+c|0;l=H[k>>2];if(!I[l+84|0]){d=H[H[l+68>>2]+(d<<2)>>2]}if(K[l+80>>2]<=d>>>0){break h}j=H[q>>2]+(H[k+4>>2]<<2)|0;c=H[k+12>>2];b=j;i:{if(c>>>0>3){break i}a=0;b=H[i+12>>2];if(!H[k+16>>2]){break i}while(1){b=qa(b,j+(a<<2)|0,c);c=H[k+12>>2];b=b+c|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[i+12>>2]}a=H[l+40>>2];qa(H[H[l>>2]>>2]+N(a,d)|0,b,a);g=g+1|0;a=H[i+20>>2];b=a;c=H[i+16>>2];if(g>>>0<(b-c|0)/20>>>0){continue}break}}H[i+28>>2]=H[i+28>>2]+1;H[f+8>>2]=H[f+8>>2]+1;h=h+1|0;if((m|0)!=(h|0)){continue}break}break g}j:{k:{l:{m:{if(m>>>0<=2){c=H[f+108>>2];H[c>>2]=a;h=1;b=H[f+12>>2];if(b>>>0>1){break m}break j}if(K[f+8>>2]>K[f+4>>2]){break e}j=b;b=o+12|0;Aa(j+b|0,H[q>>2],H[q+4>>2]);b=h+H[b+H[f+120>>2]>>2]|0;H[b>>2]=H[b>>2]+(1<>2];g=32-l|0;n:{if((k|0)<=(g|0)){g=H[f+28>>2];if((g|0)==H[f+20>>2]){break l}c=H[g>>2];b=k+l|0;H[f+32>>2]=b;c=c<>>32-k|0;if((b|0)!=32){break n}H[f+32>>2]=0;H[f+28>>2]=g+4;break n}j=H[f+28>>2];b=j+4|0;if((b|0)==H[f+20>>2]){break l}c=H[j>>2];H[f+28>>2]=b;b=k-g|0;H[f+32>>2]=b;c=H[j+4>>2]>>>32-b|c<>>32-k}g=m>>>1|0;if(g>>>0>>0){break e}break k}while(1){a=(b-1|0)!=(a|0)?a+1|0:0;H[c+(h<<2)>>2]=a;b=H[f+12>>2];h=h+1|0;if(b>>>0>h>>>0){continue}break}break j}g=m>>>1|0;c=0}k=n+1|0;o:{p:{b=g-c|0;c=m-b|0;q:{if((c|0)==(b|0)){c=b;break q}l=H[f+88>>2];if((l|0)==H[f+80>>2]){break p}j=H[l>>2];g=H[f+92>>2];d=g+1|0;H[f+92>>2]=d;g=j&-2147483648>>>g;r:{if((d|0)==32){H[f+92>>2]=0;H[f+88>>2]=l+4;if(g){break r}break p}if(!g){break p}}}g=c;c=b;break o}g=b}l=H[f+132>>2];j=l+o|0;d=H[j>>2];b=d+h|0;H[b>>2]=H[b>>2]+1;Aa(l+N(k,12)|0,d,H[j+4>>2]);if(c){b=H[e+28>>2]+H[e+24>>2]|0;d=H[e+16>>2];h=H[e+12>>2];if((b|0)==(((d|0)!=(h|0)?N(d-h>>2,341)-1|0:0)|0)){xa(e+8|0);h=H[e+12>>2];b=H[e+24>>2]+H[e+28>>2]|0}d=(b>>>0)/341|0;b=H[(d<<2)+h>>2]+N(b-N(d,341)|0,12)|0;H[b+8>>2]=n;H[b+4>>2]=a;H[b>>2]=c;H[e+28>>2]=H[e+28>>2]+1}if(!g){break g}b=H[e+28>>2]+H[e+24>>2]|0;c=H[e+16>>2];h=H[e+12>>2];if((b|0)==(((c|0)!=(h|0)?N(c-h>>2,341)-1|0:0)|0)){xa(e+8|0);h=H[e+12>>2];b=H[e+24>>2]+H[e+28>>2]|0}c=(b>>>0)/341|0;b=H[(c<<2)+h>>2]+N(b-N(c,341)|0,12)|0;H[b+8>>2]=k;H[b+4>>2]=a;H[b>>2]=g;a=H[e+28>>2]+1|0;H[e+28>>2]=a;break f}r=0;if(!m){break g}while(1){if(H[f+12>>2]){u=H[f+40>>2];j=H[l>>2];s=H[f+96>>2];g=H[f+108>>2];a=0;while(1){n=(a<<2)+g|0;H[s+(H[n>>2]<<2)>>2]=0;d=H[f>>2];c=H[n>>2]<<2;b=H[c+j>>2];s:{if((d|0)==(b|0)){break s}o=c+s|0;p=d-b|0;h=H[f+52>>2];d=32-h|0;if((p|0)<=(d|0)){c=H[f+48>>2];if((c|0)==(u|0)){d=0;break e}H[o>>2]=H[c>>2]<>>32-p;b=p+H[f+52>>2]|0;H[f+52>>2]=b;if((b|0)!=32){break s}H[f+52>>2]=0;H[f+48>>2]=c+4;break s}k=H[f+48>>2];b=k+4|0;if((u|0)==(b|0)){d=0;break e}c=H[k>>2];H[f+48>>2]=b;b=p-d|0;H[f+52>>2]=b;H[o>>2]=H[k+4>>2]>>>32-b|c<>>32-p}c=H[n>>2]<<2;b=c+s|0;H[b>>2]=H[b>>2]|H[c+H[q>>2]>>2];a=a+1|0;if(a>>>0>2]){continue}break}}g=0;a=H[i+16>>2];t:{if((a|0)==H[i+20>>2]){break t}while(1){d=H[i+28>>2];h=N(g,20)+a|0;k=H[h>>2];if(!I[k+84|0]){d=H[H[k+68>>2]+(d<<2)>>2]}if(K[k+80>>2]<=d>>>0){break t}j=H[f+96>>2]+(H[h+4>>2]<<2)|0;c=H[h+12>>2];b=j;u:{if(c>>>0>3){break u}a=0;b=H[i+12>>2];if(!H[h+16>>2]){break u}while(1){b=qa(b,j+(a<<2)|0,c);c=H[h+12>>2];b=b+c|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[i+12>>2]}a=H[k+40>>2];qa(H[H[k>>2]>>2]+N(a,d)|0,b,a);g=g+1|0;a=H[i+16>>2];if(g>>>0<(H[i+20>>2]-a|0)/20>>>0){continue}break}}H[i+28>>2]=H[i+28>>2]+1;H[f+8>>2]=H[f+8>>2]+1;r=r+1|0;if((m|0)!=(r|0)){continue}break}}a=H[e+28>>2]}if(a){continue}break}d=1}H[e+28>>2]=0;h=H[e+16>>2];a=H[e+12>>2];b=h-a|0;if(b>>>0>=9){while(1){oa(H[a>>2]);a=H[e+12>>2]+4|0;H[e+12>>2]=a;h=H[e+16>>2];b=h-a|0;if(b>>>0>8){continue}break}}c=170;v:{switch((b>>>2|0)-1|0){case 1:c=341;case 0:H[e+24>>2]=c;break;default:break v}}w:{if((a|0)==(h|0)){break w}while(1){oa(H[a>>2]);a=a+4|0;if((h|0)!=(a|0)){continue}break}b=H[e+16>>2];a=H[e+12>>2];if((b|0)==(a|0)){break w}H[e+16>>2]=b+((a-b|0)+3&-4)}a=H[e+8>>2];if(a){oa(a)}ca=e+32|0;g=d;break b}sa();v()}sa();v()}}return g}function wd(a,b,c,d){var 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,w=0;i=H[b+8>>2];j=H[b+12>>2];n=H[b+20>>2];e=H[b+16>>2];h=e+4|0;n=h>>>0<4?n+1|0:n;a:{if(i>>>0>>0&(j|0)<=(n|0)|(j|0)<(n|0)){break a}e=e+H[b>>2]|0;H[a>>2]=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);e=H[b+20>>2];i=e;h=H[b+16>>2];e=h+4|0;j=e>>>0<4?i+1|0:i;H[b+16>>2]=e;H[b+20>>2]=j;if(K[a>>2]>32){break a}j=H[b+8>>2];n=H[b+12>>2];h=h+8|0;i=h>>>0<8?i+1|0:i;if(h>>>0>j>>>0&(i|0)>=(n|0)|(i|0)>(n|0)){break a}e=H[b>>2]+e|0;h=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[a+4>>2]=h;i=H[b+20>>2];e=H[b+16>>2]+4|0;i=e>>>0<4?i+1|0:i;H[b+16>>2]=e;H[b+20>>2]=i;if(!h){return 1}if(d>>>0>>0){break a}H[a+8>>2]=0;if(!sb(a+16|0,b)){break a}if(!ua(a+544|0,b)){break a}if(!ua(a+564|0,b)){break a}if(!ua(a+584|0,b)){break a}u=H[a+4>>2];d=c;b=0;c=0;f=ca-32|0;ca=f;g=a;a=H[a+12>>2];H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;b:{c:{if(a){if(a>>>0>=1073741824){break c}e=a<<2;b=pa(e);H[f+8>>2]=b;c=b+e|0;H[f+16>>2]=c;ra(b,0,e);H[f+12>>2]=c}h=H[g+628>>2];e=H[h>>2];if(e){H[h+4>>2]=e;oa(e);c=H[f+12>>2];b=H[f+8>>2];a=H[g+12>>2]}H[h+4>>2]=c;H[h>>2]=b;H[h+8>>2]=H[f+16>>2];b=0;H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;d:{if(a){if(a>>>0>=1073741824){break d}a=a<<2;k=pa(a);H[f+8>>2]=k;b=a+k|0;H[f+16>>2]=b;ra(k,0,a);H[f+12>>2]=b}c=H[g+640>>2];a=H[c>>2];if(a){H[c+4>>2]=a;oa(a);k=H[f+8>>2];b=H[f+12>>2]}H[c+4>>2]=b;H[c>>2]=k;H[c+8>>2]=H[f+16>>2];H[f+24>>2]=0;H[f+28>>2]=0;H[f+16>>2]=0;H[f+20>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;xa(f+8|0);b=H[f+24>>2]+H[f+28>>2]|0;a=(b>>>0)/341|0;a=H[H[f+12>>2]+(a<<2)>>2]+N(b-N(a,341)|0,12)|0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=u;c=1;a=H[f+28>>2]+1|0;H[f+28>>2]=a;e:{if(!a){break e}n=g+16|0;while(1){j=H[f+12>>2];h=H[f+24>>2];e=a-1|0;c=h+e|0;b=(c>>>0)/341|0;b=H[j+(b<<2)>>2]+N(c-N(b,341)|0,12)|0;q=H[b+8>>2];i=H[b+4>>2];o=H[b>>2];H[f+28>>2]=e;b=H[f+16>>2];if((((b|0)!=(j|0)?N(b-j>>2,341)-1|0:0)-(a+h|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[f+16>>2]=H[f+16>>2]-4}c=0;if(o>>>0>u>>>0){break e}a=H[g+12>>2];k=(i|0)!=(a-1|0)?i+1|0:0;if(k>>>0>=a>>>0){break e}p=N(q,12);w=p+H[g+640>>2]|0;r=p+H[g+628>>2]|0;h=H[g>>2];l=k<<2;e=H[l+H[w>>2]>>2];f:{g:{if((h|0)==(e|0)){if(!o){break g}c=H[d+16>>2];b=H[d+20>>2];m=0;while(1){e=(b|0)==(c|0);a=b;j=0;b=c;h:{if(e){break h}while(1){l=H[d+28>>2];b=a;i=N(j,20)+c|0;h=H[i>>2];if(!I[h+84|0]){l=H[H[h+68>>2]+(l<<2)>>2]}if(K[h+80>>2]<=l>>>0){break h}e=H[r>>2]+(H[i+4>>2]<<2)|0;c=H[i+12>>2];b=e;i:{if(c>>>0>3){break i}a=0;b=H[d+12>>2];if(!H[i+16>>2]){break i}while(1){b=qa(b,e+(a<<2)|0,c);c=H[i+12>>2];b=b+c|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[d+12>>2]}a=H[h+40>>2];qa(H[H[h>>2]>>2]+N(a,l)|0,b,a);a=H[d+20>>2];b=a;j=j+1|0;c=H[d+16>>2];if(j>>>0<(a-c|0)/20>>>0){continue}break}}H[d+28>>2]=H[d+28>>2]+1;H[g+8>>2]=H[g+8>>2]+1;m=m+1|0;if((o|0)!=(m|0)){continue}break}break g}j:{k:{l:{if(o>>>0<=2){c=H[g+616>>2];H[c>>2]=k;a=1;b=H[g+12>>2];if(b>>>0>1){break l}break j}if(K[g+8>>2]>K[g+4>>2]){break e}a=H[g+628>>2];j=q+1|0;m=N(j,12);b=a+m|0;if((b|0)!=(r|0)){Aa(b,H[r>>2],H[r+4>>2]);a=H[g+628>>2]}a=l+H[a+m>>2]|0;H[a>>2]=H[a>>2]+(1<>>1|0;break k}while(1){b=Ba((a<<4)+n|0)|b<<1;a=a+1|0;if((c|0)!=(a|0)){continue}break}a=o>>>1|0;if(b>>>0<=a>>>0){break k}c=0;break e}while(1){k=(b-1|0)!=(k|0)?k+1|0:0;H[c+(a<<2)>>2]=k;a=a+1|0;b=H[g+12>>2];if(a>>>0>>0){continue}break}break j}m:{n:{b=a-b|0;a=o-b|0;o:{if((a|0)==(b|0)){a=b;break o}i=H[g+596>>2];if((i|0)==H[g+588>>2]){break n}h=H[i>>2];e=H[g+600>>2];c=e+1|0;H[g+600>>2]=c;e=h&-2147483648>>>e;p:{if((c|0)==32){H[g+600>>2]=0;H[g+596>>2]=i+4;if(e){break p}break n}if(!e){break n}}}c=a;a=b;break m}c=b}i=H[g+640>>2];h=i+p|0;e=H[h>>2];b=e+l|0;H[b>>2]=H[b>>2]+1;Aa(i+m|0,e,H[h+4>>2]);if(a){m=H[f+28>>2]+H[f+24>>2]|0;e=H[f+16>>2];b=H[f+12>>2];if((m|0)==(((b|0)!=(e|0)?N(e-b>>2,341)-1|0:0)|0)){xa(f+8|0);m=H[f+24>>2]+H[f+28>>2]|0;e=H[f+12>>2]}else{e=b}b=(m>>>0)/341|0;b=H[e+(b<<2)>>2]+N(m-N(b,341)|0,12)|0;H[b+8>>2]=q;H[b+4>>2]=k;H[b>>2]=a;H[f+28>>2]=H[f+28>>2]+1}if(!c){break g}b=H[f+28>>2]+H[f+24>>2]|0;e=H[f+16>>2];a=H[f+12>>2];if((b|0)==(((a|0)!=(e|0)?N(e-a>>2,341)-1|0:0)|0)){xa(f+8|0);b=H[f+24>>2]+H[f+28>>2]|0;e=H[f+12>>2]}else{e=a}a=(b>>>0)/341|0;a=H[e+(a<<2)>>2]+N(b-N(a,341)|0,12)|0;H[a+8>>2]=j;H[a+4>>2]=k;H[a>>2]=c;a=H[f+28>>2]+1|0;H[f+28>>2]=a;break f}k=0;if(!o){break g}while(1){if(H[g+12>>2]){q=H[g+548>>2];i=H[w>>2];t=H[g+604>>2];h=H[g+616>>2];a=0;while(1){p=(a<<2)+h|0;H[t+(H[p>>2]<<2)>>2]=0;e=H[g>>2];c=H[p>>2]<<2;b=H[c+i>>2];q:{if((e|0)==(b|0)){break q}l=c+t|0;s=e-b|0;m=H[g+560>>2];e=32-m|0;if((s|0)<=(e|0)){c=H[g+556>>2];if((c|0)==(q|0)){c=0;break e}H[l>>2]=H[c>>2]<>>32-s;b=s+H[g+560>>2]|0;H[g+560>>2]=b;if((b|0)!=32){break q}H[g+560>>2]=0;H[g+556>>2]=c+4;break q}j=H[g+556>>2];b=j+4|0;if((q|0)==(b|0)){c=0;break e}c=H[j>>2];H[g+556>>2]=b;b=s-e|0;H[g+560>>2]=b;H[l>>2]=H[j+4>>2]>>>32-b|c<>>32-s}c=H[p>>2]<<2;b=c+t|0;H[b>>2]=H[b>>2]|H[c+H[r>>2]>>2];a=a+1|0;if(a>>>0>2]){continue}break}}j=0;a=H[d+16>>2];r:{if((a|0)==H[d+20>>2]){break r}while(1){l=H[d+28>>2];i=N(j,20)+a|0;h=H[i>>2];if(!I[h+84|0]){l=H[H[h+68>>2]+(l<<2)>>2]}if(K[h+80>>2]<=l>>>0){break r}e=H[g+604>>2]+(H[i+4>>2]<<2)|0;c=H[i+12>>2];b=e;s:{if(c>>>0>3){break s}a=0;b=H[d+12>>2];if(!H[i+16>>2]){break s}while(1){b=qa(b,e+(a<<2)|0,c);c=H[i+12>>2];b=b+c|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[d+12>>2]}a=H[h+40>>2];qa(H[H[h>>2]>>2]+N(a,l)|0,b,a);j=j+1|0;a=H[d+16>>2];if(j>>>0<(H[d+20>>2]-a|0)/20>>>0){continue}break}}H[d+28>>2]=H[d+28>>2]+1;H[g+8>>2]=H[g+8>>2]+1;k=k+1|0;if((o|0)!=(k|0)){continue}break}}a=H[f+28>>2]}if(a){continue}break}c=1}H[f+28>>2]=0;k=H[f+16>>2];a=H[f+12>>2];b=k-a|0;if(b>>>0>=9){while(1){oa(H[a>>2]);a=H[f+12>>2]+4|0;H[f+12>>2]=a;k=H[f+16>>2];b=k-a|0;if(b>>>0>8){continue}break}}d=170;t:{switch((b>>>2|0)-1|0){case 1:d=341;case 0:H[f+24>>2]=d;break;default:break t}}u:{if((a|0)==(k|0)){break u}while(1){oa(H[a>>2]);a=a+4|0;if((k|0)!=(a|0)){continue}break}b=H[f+16>>2];a=H[f+12>>2];if((b|0)==(a|0)){break u}H[f+16>>2]=b+((a-b|0)+3&-4)}a=H[f+8>>2];if(a){oa(a)}ca=f+32|0;break b}sa();v()}sa();v()}g=c}return g}function ud(a,b,c,d){var 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,w=0;i=H[b+8>>2];k=H[b+12>>2];o=H[b+20>>2];e=H[b+16>>2];h=e+4|0;o=h>>>0<4?o+1|0:o;a:{if(i>>>0>>0&(k|0)<=(o|0)|(k|0)<(o|0)){break a}e=e+H[b>>2]|0;H[a>>2]=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);e=H[b+20>>2];i=e;h=H[b+16>>2];e=h+4|0;k=e>>>0<4?i+1|0:i;H[b+16>>2]=e;H[b+20>>2]=k;if(K[a>>2]>32){break a}k=H[b+8>>2];o=H[b+12>>2];h=h+8|0;i=h>>>0<8?i+1|0:i;if(h>>>0>k>>>0&(i|0)>=(o|0)|(i|0)>(o|0)){break a}e=H[b>>2]+e|0;h=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[a+4>>2]=h;i=H[b+20>>2];e=H[b+16>>2]+4|0;i=e>>>0<4?i+1|0:i;H[b+16>>2]=e;H[b+20>>2]=i;if(!h){return 1}if(d>>>0>>0){break a}H[a+8>>2]=0;if(!sb(a+16|0,b)){break a}if(!ua(a+544|0,b)){break a}if(!ua(a+564|0,b)){break a}if(!ua(a+584|0,b)){break a}w=H[a+4>>2];d=c;b=0;c=0;f=ca-32|0;ca=f;g=a;a=H[a+12>>2];H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;b:{c:{if(a){if(a>>>0>=1073741824){break c}e=a<<2;b=pa(e);H[f+8>>2]=b;c=b+e|0;H[f+16>>2]=c;ra(b,0,e);H[f+12>>2]=c}h=H[g+628>>2];e=H[h>>2];if(e){H[h+4>>2]=e;oa(e);c=H[f+12>>2];b=H[f+8>>2];a=H[g+12>>2]}H[h+4>>2]=c;H[h>>2]=b;H[h+8>>2]=H[f+16>>2];b=0;H[f+16>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;d:{if(a){if(a>>>0>=1073741824){break d}a=a<<2;j=pa(a);H[f+8>>2]=j;b=a+j|0;H[f+16>>2]=b;ra(j,0,a);H[f+12>>2]=b}c=H[g+640>>2];a=H[c>>2];if(a){H[c+4>>2]=a;oa(a);j=H[f+8>>2];b=H[f+12>>2]}H[c+4>>2]=b;H[c>>2]=j;H[c+8>>2]=H[f+16>>2];H[f+24>>2]=0;H[f+28>>2]=0;H[f+16>>2]=0;H[f+20>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;xa(f+8|0);b=H[f+24>>2]+H[f+28>>2]|0;a=(b>>>0)/341|0;a=H[H[f+12>>2]+(a<<2)>>2]+N(b-N(a,341)|0,12)|0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=w;c=1;a=H[f+28>>2]+1|0;H[f+28>>2]=a;e:{if(!a){break e}o=g+16|0;while(1){i=H[f+12>>2];h=H[f+24>>2];e=a-1|0;c=h+e|0;b=(c>>>0)/341|0;b=H[i+(b<<2)>>2]+N(c-N(b,341)|0,12)|0;q=H[b+8>>2];n=H[b>>2];H[f+28>>2]=e;b=H[f+16>>2];if((((b|0)!=(i|0)?N(b-i>>2,341)-1|0:0)-(a+h|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[f+16>>2]=H[f+16>>2]-4}c=0;if(n>>>0>w>>>0){break e}a=H[g+628>>2];p=N(q,12);t=p+H[g+640>>2]|0;j=Vd(g,n,t);if(j>>>0>=K[g+12>>2]){break e}r=a+p|0;h=H[g>>2];l=j<<2;e=H[l+H[t>>2]>>2];f:{g:{if((h|0)==(e|0)){if(!n){break g}c=H[d+16>>2];b=H[d+20>>2];m=0;while(1){e=(b|0)==(c|0);a=b;k=0;b=c;h:{if(e){break h}while(1){l=H[d+28>>2];b=a;i=N(k,20)+c|0;h=H[i>>2];if(!I[h+84|0]){l=H[H[h+68>>2]+(l<<2)>>2]}if(K[h+80>>2]<=l>>>0){break h}e=H[r>>2]+(H[i+4>>2]<<2)|0;c=H[i+12>>2];b=e;i:{if(c>>>0>3){break i}a=0;b=H[d+12>>2];if(!H[i+16>>2]){break i}while(1){b=qa(b,e+(a<<2)|0,c);c=H[i+12>>2];b=b+c|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[d+12>>2]}a=H[h+40>>2];qa(H[H[h>>2]>>2]+N(a,l)|0,b,a);a=H[d+20>>2];b=a;k=k+1|0;c=H[d+16>>2];if(k>>>0<(a-c|0)/20>>>0){continue}break}}H[d+28>>2]=H[d+28>>2]+1;H[g+8>>2]=H[g+8>>2]+1;m=m+1|0;if((n|0)!=(m|0)){continue}break}break g}j:{k:{l:{if(n>>>0<=2){c=H[g+616>>2];H[c>>2]=j;a=1;b=H[g+12>>2];if(b>>>0>1){break l}break j}if(K[g+8>>2]>K[g+4>>2]){break e}a=H[g+628>>2];k=q+1|0;m=N(k,12);b=a+m|0;if((b|0)!=(r|0)){Aa(b,H[r>>2],H[r+4>>2]);a=H[g+628>>2]}a=l+H[a+m>>2]|0;H[a>>2]=H[a>>2]+(1<>>1|0;break k}while(1){b=Ba((a<<4)+o|0)|b<<1;a=a+1|0;if((c|0)!=(a|0)){continue}break}a=n>>>1|0;if(b>>>0<=a>>>0){break k}c=0;break e}while(1){j=(b-1|0)!=(j|0)?j+1|0:0;H[c+(a<<2)>>2]=j;a=a+1|0;b=H[g+12>>2];if(a>>>0>>0){continue}break}break j}m:{n:{b=a-b|0;a=n-b|0;o:{if((a|0)==(b|0)){a=b;break o}i=H[g+596>>2];if((i|0)==H[g+588>>2]){break n}h=H[i>>2];e=H[g+600>>2];c=e+1|0;H[g+600>>2]=c;e=h&-2147483648>>>e;p:{if((c|0)==32){H[g+600>>2]=0;H[g+596>>2]=i+4;if(e){break p}break n}if(!e){break n}}}c=a;a=b;break m}c=b}i=H[g+640>>2];h=i+p|0;e=H[h>>2];b=e+l|0;H[b>>2]=H[b>>2]+1;Aa(i+m|0,e,H[h+4>>2]);if(a){m=H[f+28>>2]+H[f+24>>2]|0;e=H[f+16>>2];b=H[f+12>>2];if((m|0)==(((b|0)!=(e|0)?N(e-b>>2,341)-1|0:0)|0)){xa(f+8|0);m=H[f+24>>2]+H[f+28>>2]|0;e=H[f+12>>2]}else{e=b}b=(m>>>0)/341|0;b=H[e+(b<<2)>>2]+N(m-N(b,341)|0,12)|0;H[b+8>>2]=q;H[b+4>>2]=j;H[b>>2]=a;H[f+28>>2]=H[f+28>>2]+1}if(!c){break g}b=H[f+28>>2]+H[f+24>>2]|0;e=H[f+16>>2];a=H[f+12>>2];if((b|0)==(((a|0)!=(e|0)?N(e-a>>2,341)-1|0:0)|0)){xa(f+8|0);b=H[f+24>>2]+H[f+28>>2]|0;e=H[f+12>>2]}else{e=a}a=(b>>>0)/341|0;a=H[e+(a<<2)>>2]+N(b-N(a,341)|0,12)|0;H[a+8>>2]=k;H[a+4>>2]=j;H[a>>2]=c;a=H[f+28>>2]+1|0;H[f+28>>2]=a;break f}j=0;if(!n){break g}while(1){if(H[g+12>>2]){q=H[g+548>>2];i=H[t>>2];u=H[g+604>>2];h=H[g+616>>2];a=0;while(1){p=(a<<2)+h|0;H[u+(H[p>>2]<<2)>>2]=0;e=H[g>>2];c=H[p>>2]<<2;b=H[c+i>>2];q:{if((e|0)==(b|0)){break q}l=c+u|0;s=e-b|0;m=H[g+560>>2];e=32-m|0;if((s|0)<=(e|0)){c=H[g+556>>2];if((c|0)==(q|0)){c=0;break e}H[l>>2]=H[c>>2]<>>32-s;b=s+H[g+560>>2]|0;H[g+560>>2]=b;if((b|0)!=32){break q}H[g+560>>2]=0;H[g+556>>2]=c+4;break q}k=H[g+556>>2];b=k+4|0;if((q|0)==(b|0)){c=0;break e}c=H[k>>2];H[g+556>>2]=b;b=s-e|0;H[g+560>>2]=b;H[l>>2]=H[k+4>>2]>>>32-b|c<>>32-s}c=H[p>>2]<<2;b=c+u|0;H[b>>2]=H[b>>2]|H[c+H[r>>2]>>2];a=a+1|0;if(a>>>0>2]){continue}break}}k=0;a=H[d+16>>2];r:{if((a|0)==H[d+20>>2]){break r}while(1){l=H[d+28>>2];i=N(k,20)+a|0;h=H[i>>2];if(!I[h+84|0]){l=H[H[h+68>>2]+(l<<2)>>2]}if(K[h+80>>2]<=l>>>0){break r}e=H[g+604>>2]+(H[i+4>>2]<<2)|0;c=H[i+12>>2];b=e;s:{if(c>>>0>3){break s}a=0;b=H[d+12>>2];if(!H[i+16>>2]){break s}while(1){b=qa(b,e+(a<<2)|0,c);c=H[i+12>>2];b=b+c|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[d+12>>2]}a=H[h+40>>2];qa(H[H[h>>2]>>2]+N(a,l)|0,b,a);k=k+1|0;a=H[d+16>>2];if(k>>>0<(H[d+20>>2]-a|0)/20>>>0){continue}break}}H[d+28>>2]=H[d+28>>2]+1;H[g+8>>2]=H[g+8>>2]+1;j=j+1|0;if((n|0)!=(j|0)){continue}break}}a=H[f+28>>2]}if(a){continue}break}c=1}H[f+28>>2]=0;j=H[f+16>>2];a=H[f+12>>2];b=j-a|0;if(b>>>0>=9){while(1){oa(H[a>>2]);a=H[f+12>>2]+4|0;H[f+12>>2]=a;j=H[f+16>>2];b=j-a|0;if(b>>>0>8){continue}break}}d=170;t:{switch((b>>>2|0)-1|0){case 1:d=341;case 0:H[f+24>>2]=d;break;default:break t}}u:{if((a|0)==(j|0)){break u}while(1){oa(H[a>>2]);a=a+4|0;if((j|0)!=(a|0)){continue}break}b=H[f+16>>2];a=H[f+12>>2];if((b|0)==(a|0)){break u}H[f+16>>2]=b+((a-b|0)+3&-4)}a=H[f+8>>2];if(a){oa(a)}ca=f+32|0;break b}sa();v()}sa();v()}g=c}return g}function vd(a,b,c,d){var 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,w=0;i=H[b+8>>2];k=H[b+12>>2];m=H[b+20>>2];f=H[b+16>>2];h=f+4|0;m=h>>>0<4?m+1|0:m;a:{if(i>>>0>>0&(k|0)<=(m|0)|(k|0)<(m|0)){break a}f=f+H[b>>2]|0;H[a>>2]=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);f=H[b+20>>2];i=f;h=H[b+16>>2];f=h+4|0;k=f>>>0<4?i+1|0:i;H[b+16>>2]=f;H[b+20>>2]=k;if(K[a>>2]>32){break a}k=H[b+8>>2];m=H[b+12>>2];h=h+8|0;i=h>>>0<8?i+1|0:i;if(h>>>0>k>>>0&(i|0)>=(m|0)|(i|0)>(m|0)){break a}f=f+H[b>>2]|0;h=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[a+4>>2]=h;i=H[b+20>>2];f=H[b+16>>2]+4|0;i=f>>>0<4?i+1|0:i;H[b+16>>2]=f;H[b+20>>2]=i;if(!h){return 1}if(d>>>0>>0){break a}H[a+8>>2]=0;if(!sb(a+16|0,b)){break a}if(!ua(a+544|0,b)){break a}if(!ua(a+564|0,b)){break a}if(!ua(a+584|0,b)){break a}u=H[a+4>>2];b=0;e=ca-32|0;ca=e;f=a;a=H[a+12>>2];H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;b:{c:{if(a){if(a>>>0>=1073741824){break c}d=a<<2;b=pa(d);H[e+8>>2]=b;g=b+d|0;H[e+16>>2]=g;ra(b,0,d);H[e+12>>2]=g}h=H[f+628>>2];d=H[h>>2];if(d){H[h+4>>2]=d;oa(d);g=H[e+12>>2];b=H[e+8>>2];a=H[f+12>>2]}H[h+4>>2]=g;H[h>>2]=b;H[h+8>>2]=H[e+16>>2];b=0;H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;d:{if(a){if(a>>>0>=1073741824){break d}a=a<<2;j=pa(a);H[e+8>>2]=j;b=a+j|0;H[e+16>>2]=b;ra(j,0,a);H[e+12>>2]=b}d=H[f+640>>2];a=H[d>>2];if(a){H[d+4>>2]=a;oa(a);j=H[e+8>>2];b=H[e+12>>2]}H[d+4>>2]=b;H[d>>2]=j;H[d+8>>2]=H[e+16>>2];H[e+24>>2]=0;H[e+28>>2]=0;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;xa(e+8|0);b=H[e+24>>2]+H[e+28>>2]|0;a=(b>>>0)/341|0;a=H[H[e+12>>2]+(a<<2)>>2]+N(b-N(a,341)|0,12)|0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=u;d=1;a=H[e+28>>2]+1|0;H[e+28>>2]=a;e:{if(!a){break e}m=f+16|0;while(1){k=H[e+12>>2];h=H[e+24>>2];g=a-1|0;d=h+g|0;b=(d>>>0)/341|0;b=H[k+(b<<2)>>2]+N(d-N(b,341)|0,12)|0;q=H[b+8>>2];i=H[b+4>>2];n=H[b>>2];H[e+28>>2]=g;b=H[e+16>>2];if((((b|0)!=(k|0)?N(b-k>>2,341)-1|0:0)-(a+h|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[e+16>>2]=H[e+16>>2]-4}if(n>>>0>u>>>0){d=0;break e}d=0;a=H[f+12>>2];j=(i|0)!=(a-1|0)?i+1|0:0;if(j>>>0>=a>>>0){break e}a=H[f+628>>2];o=N(q,12);s=a+o|0;g=H[f>>2];l=j<<2;k=o+H[f+640>>2]|0;b=H[l+H[k>>2]>>2];f:{g:{if((g|0)==(b|0)){if(!n){break g}g=H[c+16>>2];b=H[c+20>>2];p=0;while(1){d=(b|0)==(g|0);a=b;j=0;b=g;h:{if(d){break h}while(1){d=H[c+28>>2];b=a;k=N(j,20)+g|0;i=H[k>>2];if(!I[i+84|0]){d=H[H[i+68>>2]+(d<<2)>>2]}if(K[i+80>>2]<=d>>>0){break h}h=H[s>>2]+(H[k+4>>2]<<2)|0;g=H[k+12>>2];b=h;i:{if(g>>>0>3){break i}a=0;b=H[c+12>>2];if(!H[k+16>>2]){break i}while(1){b=qa(b,h+(a<<2)|0,g);g=H[k+12>>2];b=b+g|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[c+12>>2]}a=H[i+40>>2];qa(H[H[i>>2]>>2]+N(a,d)|0,b,a);a=H[c+20>>2];b=a;j=j+1|0;g=H[c+16>>2];if(j>>>0<(a-g|0)/20>>>0){continue}break}}H[c+28>>2]=H[c+28>>2]+1;H[f+8>>2]=H[f+8>>2]+1;p=p+1|0;if((p|0)!=(n|0)){continue}break}break g}j:{k:{l:{if(n>>>0<=2){d=H[f+616>>2];H[d>>2]=j;a=1;b=H[f+12>>2];if(b>>>0>1){break l}break j}if(K[f+8>>2]>K[f+4>>2]){break e}d=a;a=o+12|0;Aa(d+a|0,H[s>>2],H[s+4>>2]);a=l+H[a+H[f+628>>2]>>2]|0;H[a>>2]=H[a>>2]+(1<>>1|0;break k}while(1){b=Ba((a<<4)+m|0)|b<<1;a=a+1|0;if((d|0)!=(a|0)){continue}break}a=n>>>1|0;if(b>>>0<=a>>>0){break k}d=0;break e}while(1){j=(b-1|0)!=(j|0)?j+1|0:0;H[d+(a<<2)>>2]=j;a=a+1|0;b=H[f+12>>2];if(a>>>0>>0){continue}break}break j}k=q+1|0;m:{n:{b=a-b|0;a=n-b|0;o:{if((a|0)==(b|0)){a=b;break o}i=H[f+596>>2];if((i|0)==H[f+588>>2]){break n}h=H[i>>2];g=H[f+600>>2];d=g+1|0;H[f+600>>2]=d;g=h&-2147483648>>>g;p:{if((d|0)==32){H[f+600>>2]=0;H[f+596>>2]=i+4;if(g){break p}break n}if(!g){break n}}}d=a;a=b;break m}d=b}i=H[f+640>>2];h=i+o|0;g=H[h>>2];b=g+l|0;H[b>>2]=H[b>>2]+1;Aa(i+N(k,12)|0,g,H[h+4>>2]);if(a){h=H[e+28>>2]+H[e+24>>2]|0;g=H[e+16>>2];b=H[e+12>>2];if((h|0)==(((b|0)!=(g|0)?N(g-b>>2,341)-1|0:0)|0)){xa(e+8|0);h=H[e+24>>2]+H[e+28>>2]|0;g=H[e+12>>2]}else{g=b}b=(h>>>0)/341|0;b=H[g+(b<<2)>>2]+N(h-N(b,341)|0,12)|0;H[b+8>>2]=q;H[b+4>>2]=j;H[b>>2]=a;H[e+28>>2]=H[e+28>>2]+1}if(!d){break g}b=H[e+28>>2]+H[e+24>>2]|0;g=H[e+16>>2];a=H[e+12>>2];if((b|0)==(((a|0)!=(g|0)?N(g-a>>2,341)-1|0:0)|0)){xa(e+8|0);b=H[e+24>>2]+H[e+28>>2]|0;g=H[e+12>>2]}else{g=a}a=(b>>>0)/341|0;a=H[g+(a<<2)>>2]+N(b-N(a,341)|0,12)|0;H[a+8>>2]=k;H[a+4>>2]=j;H[a>>2]=d;a=H[e+28>>2]+1|0;H[e+28>>2]=a;break f}p=0;if(!n){break g}while(1){if(H[f+12>>2]){w=H[f+548>>2];i=H[k>>2];t=H[f+604>>2];h=H[f+616>>2];a=0;while(1){j=h+(a<<2)|0;H[(H[j>>2]<<2)+t>>2]=0;g=H[f>>2];d=H[j>>2]<<2;b=H[d+i>>2];q:{if((g|0)==(b|0)){break q}q=d+t|0;r=g-b|0;o=H[f+560>>2];g=32-o|0;if((r|0)<=(g|0)){d=H[f+556>>2];if((d|0)==(w|0)){d=0;break e}H[q>>2]=H[d>>2]<>>32-r;b=H[f+560>>2]+r|0;H[f+560>>2]=b;if((b|0)!=32){break q}H[f+560>>2]=0;H[f+556>>2]=d+4;break q}l=H[f+556>>2];b=l+4|0;if((b|0)==(w|0)){d=0;break e}d=H[l>>2];H[f+556>>2]=b;b=r-g|0;H[f+560>>2]=b;H[q>>2]=H[l+4>>2]>>>32-b|d<>>32-r}d=H[j>>2]<<2;b=d+t|0;H[b>>2]=H[b>>2]|H[d+H[s>>2]>>2];a=a+1|0;if(a>>>0>2]){continue}break}}j=0;a=H[c+16>>2];r:{if((a|0)==H[c+20>>2]){break r}while(1){d=H[c+28>>2];l=N(j,20)+a|0;i=H[l>>2];if(!I[i+84|0]){d=H[H[i+68>>2]+(d<<2)>>2]}if(K[i+80>>2]<=d>>>0){break r}h=H[f+604>>2]+(H[l+4>>2]<<2)|0;g=H[l+12>>2];b=h;s:{if(g>>>0>3){break s}a=0;b=H[c+12>>2];if(!H[l+16>>2]){break s}while(1){b=qa(b,h+(a<<2)|0,g);g=H[l+12>>2];b=b+g|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[c+12>>2]}a=H[i+40>>2];qa(H[H[i>>2]>>2]+N(a,d)|0,b,a);j=j+1|0;a=H[c+16>>2];if(j>>>0<(H[c+20>>2]-a|0)/20>>>0){continue}break}}H[c+28>>2]=H[c+28>>2]+1;H[f+8>>2]=H[f+8>>2]+1;p=p+1|0;if((p|0)!=(n|0)){continue}break}}a=H[e+28>>2]}if(a){continue}break}d=1}H[e+28>>2]=0;j=H[e+16>>2];a=H[e+12>>2];b=j-a|0;if(b>>>0>=9){while(1){oa(H[a>>2]);a=H[e+12>>2]+4|0;H[e+12>>2]=a;j=H[e+16>>2];b=j-a|0;if(b>>>0>8){continue}break}}g=170;t:{switch((b>>>2|0)-1|0){case 1:g=341;case 0:H[e+24>>2]=g;break;default:break t}}u:{if((a|0)==(j|0)){break u}while(1){oa(H[a>>2]);a=a+4|0;if((j|0)!=(a|0)){continue}break}b=H[e+16>>2];a=H[e+12>>2];if((b|0)==(a|0)){break u}H[e+16>>2]=b+((a-b|0)+3&-4)}a=H[e+8>>2];if(a){oa(a)}ca=e+32|0;break b}sa();v()}sa();v()}g=d}return g}function yd(a,b,c,d){var 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,w=0;j=H[b+8>>2];e=H[b+12>>2];g=H[b+20>>2];h=H[b+16>>2];l=h+4|0;g=l>>>0<4?g+1|0:g;a:{if(j>>>0>>0&(e|0)<=(g|0)|(e|0)<(g|0)){break a}h=h+H[b>>2]|0;H[a>>2]=I[h|0]|I[h+1|0]<<8|(I[h+2|0]<<16|I[h+3|0]<<24);h=H[b+20>>2];e=h;j=H[b+16>>2];g=j+4|0;h=g>>>0<4?e+1|0:e;H[b+16>>2]=g;H[b+20>>2]=h;if(K[a>>2]>32){break a}k=H[b+8>>2];l=H[b+12>>2];h=e;e=j+8|0;h=e>>>0<8?h+1|0:h;if(e>>>0>k>>>0&(h|0)>=(l|0)|(h|0)>(l|0)){break a}h=H[b>>2]+g|0;g=I[h|0]|I[h+1|0]<<8|(I[h+2|0]<<16|I[h+3|0]<<24);H[a+4>>2]=g;h=H[b+20>>2];e=H[b+16>>2]+4|0;h=e>>>0<4?h+1|0:h;H[b+16>>2]=e;H[b+20>>2]=h;if(!g){return 1}if(d>>>0>>0){break a}H[a+8>>2]=0;if(!ta(a+16|0,b)){break a}if(!ua(a+32|0,b)){break a}if(!ua(a+52|0,b)){break a}if(!ua(a+72|0,b)){break a}r=H[a+4>>2];h=c;b=0;g=0;e=ca-32|0;ca=e;d=a;a=H[a+12>>2];H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;b:{c:{if(a){if(a>>>0>=1073741824){break c}c=a<<2;b=pa(c);H[e+8>>2]=b;g=b+c|0;H[e+16>>2]=g;ra(b,0,c);H[e+12>>2]=g}c=H[d+116>>2];i=H[c>>2];if(i){H[c+4>>2]=i;oa(i);g=H[e+12>>2];b=H[e+8>>2];a=H[d+12>>2]}H[c+4>>2]=g;H[c>>2]=b;H[c+8>>2]=H[e+16>>2];b=0;H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;d:{if(a){if(a>>>0>=1073741824){break d}a=a<<2;f=pa(a);H[e+8>>2]=f;b=a+f|0;H[e+16>>2]=b;ra(f,0,a);H[e+12>>2]=b}a=H[d+128>>2];c=H[a>>2];if(c){H[a+4>>2]=c;oa(c);f=H[e+8>>2];b=H[e+12>>2]}H[a+4>>2]=b;H[a>>2]=f;H[a+8>>2]=H[e+16>>2];H[e+24>>2]=0;H[e+28>>2]=0;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;xa(e+8|0);a=H[e+24>>2]+H[e+28>>2]|0;b=(a>>>0)/341|0;a=H[H[e+12>>2]+(b<<2)>>2]+N(a-N(b,341)|0,12)|0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=r;c=1;a=H[e+28>>2]+1|0;H[e+28>>2]=a;e:{if(!a){break e}t=d+16|0;while(1){b=H[e+12>>2];f=H[e+24>>2];l=a-1|0;c=f+l|0;i=(c>>>0)/341|0;c=H[b+(i<<2)>>2]+N(c-N(i,341)|0,12)|0;g=H[c+8>>2];i=H[c+4>>2];j=H[c>>2];H[e+28>>2]=l;c=H[e+16>>2];if((((b|0)!=(c|0)?N(c-b>>2,341)-1|0:0)-(a+f|0)|0)+1>>>0>=682){oa(H[c-4>>2]);H[e+16>>2]=H[e+16>>2]-4}c=0;if(j>>>0>r>>>0){break e}b=H[d+12>>2];a=(b-1|0)!=(i|0)?i+1|0:0;if(a>>>0>=b>>>0){break e}f=N(g,12);o=f+H[d+128>>2]|0;l=f+H[d+116>>2]|0;i=H[d>>2];k=a<<2;n=H[k+H[o>>2]>>2];f:{if((i|0)==(n|0)){if(!j){break f}o=0;b=H[h+20>>2];g=H[h+16>>2];if((b|0)==(g|0)){a=H[d+8>>2];H[h+28>>2]=j+H[h+28>>2];H[d+8>>2]=a+j;break f}while(1){c=(b|0)==(g|0);a=b;i=0;b=g;g:{if(c){break g}while(1){f=H[h+28>>2];b=a;c=N(i,20)+g|0;k=H[c>>2];if(!I[k+84|0]){f=H[H[k+68>>2]+(f<<2)>>2]}if(K[k+80>>2]<=f>>>0){break g}n=H[l>>2]+(H[c+4>>2]<<2)|0;g=H[c+12>>2];b=n;h:{if(g>>>0>3){break h}a=0;b=H[h+12>>2];if(!H[c+16>>2]){break h}while(1){b=qa(b,n+(a<<2)|0,g);g=H[c+12>>2];b=b+g|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[h+12>>2]}a=H[k+40>>2];qa(H[H[k>>2]>>2]+N(a,f)|0,b,a);i=i+1|0;a=H[h+20>>2];b=a;g=H[h+16>>2];if(i>>>0<(b-g|0)/20>>>0){continue}break}}H[h+28>>2]=H[h+28>>2]+1;H[d+8>>2]=H[d+8>>2]+1;o=o+1|0;if((j|0)!=(o|0)){continue}break}break f}i:{j:{k:{l:{if(j>>>0<=2){c=H[d+104>>2];H[c>>2]=a;f=1;b=H[d+12>>2];if(b>>>0>1){break l}break i}if(K[d+8>>2]>K[d+4>>2]){break e}b=H[d+116>>2];m=g+1|0;o=N(m,12);q=b+o|0;if((q|0)!=(l|0)){Aa(q,H[l>>2],H[l+4>>2]);b=H[d+116>>2]}b=k+H[b+o>>2]|0;H[b>>2]=H[b>>2]+(1<>2]=0;pc(t,Q(j)^31,e+4|0);b=j>>>1|0;i=H[e+4>>2];if(b>>>0>>0){break e}b=b-i|0;c=j-b|0;m:{if((c|0)==(b|0)){c=b;break m}i=H[d+84>>2];if((i|0)==H[d+76>>2]){break k}j=H[i>>2];l=H[d+88>>2];n=l+1|0;H[d+88>>2]=n;j=j&-2147483648>>>l;n:{if((n|0)==32){H[d+88>>2]=0;H[d+84>>2]=i+4;if(j){break n}break k}if(!j){break k}}}i=c;c=b;break j}while(1){a=(b-1|0)!=(a|0)?a+1|0:0;H[c+(f<<2)>>2]=a;b=H[d+12>>2];f=f+1|0;if(b>>>0>f>>>0){continue}break}break i}i=b}b=H[d+128>>2];j=b+f|0;f=H[j>>2];l=f+k|0;H[l>>2]=H[l>>2]+1;Aa(b+o|0,f,H[j+4>>2]);if(c){b=H[e+28>>2]+H[e+24>>2]|0;j=H[e+16>>2];f=H[e+12>>2];if((b|0)==(((f|0)!=(j|0)?N(j-f>>2,341)-1|0:0)|0)){xa(e+8|0);f=H[e+12>>2];b=H[e+24>>2]+H[e+28>>2]|0}j=(b>>>0)/341|0;b=H[(j<<2)+f>>2]+N(b-N(j,341)|0,12)|0;H[b+8>>2]=g;H[b+4>>2]=a;H[b>>2]=c;H[e+28>>2]=H[e+28>>2]+1}if(!i){break f}b=H[e+28>>2]+H[e+24>>2]|0;c=H[e+16>>2];f=H[e+12>>2];if((b|0)==(((c|0)!=(f|0)?N(c-f>>2,341)-1|0:0)|0)){xa(e+8|0);f=H[e+12>>2];b=H[e+24>>2]+H[e+28>>2]|0}c=(b>>>0)/341|0;b=H[(c<<2)+f>>2]+N(b-N(c,341)|0,12)|0;H[b+8>>2]=m;H[b+4>>2]=a;H[b>>2]=i;H[e+28>>2]=H[e+28>>2]+1;break f}n=0;if(!j){break f}while(1){if(H[d+12>>2]){i=H[d+36>>2];q=H[o>>2];c=H[d+92>>2];u=H[d+104>>2];a=0;while(1){g=(a<<2)+u|0;H[c+(H[g>>2]<<2)>>2]=0;b=H[d>>2];f=H[g>>2]<<2;k=H[f+q>>2];o:{if((b|0)==(k|0)){break o}f=c+f|0;b=b-k|0;k=H[d+48>>2];p=32-k|0;if((b|0)<=(p|0)){m=H[d+44>>2];if((m|0)==(i|0)){c=0;break e}H[f>>2]=H[m>>2]<>>32-b;b=b+H[d+48>>2]|0;H[d+48>>2]=b;if((b|0)!=32){break o}H[d+48>>2]=0;H[d+44>>2]=m+4;break o}m=H[d+44>>2];s=m+4|0;if((i|0)==(s|0)){c=0;break e}w=H[m>>2];H[d+44>>2]=s;p=b-p|0;H[d+48>>2]=p;H[f>>2]=H[m+4>>2]>>>32-p|w<>>32-b}b=H[g>>2]<<2;g=b+c|0;H[g>>2]=H[g>>2]|H[b+H[l>>2]>>2];a=a+1|0;if(a>>>0>2]){continue}break}}i=0;a=H[h+16>>2];p:{if((a|0)==H[h+20>>2]){break p}while(1){f=H[h+28>>2];c=N(i,20)+a|0;k=H[c>>2];if(!I[k+84|0]){f=H[H[k+68>>2]+(f<<2)>>2]}if(K[k+80>>2]<=f>>>0){break p}m=H[d+92>>2]+(H[c+4>>2]<<2)|0;g=H[c+12>>2];b=m;q:{if(g>>>0>3){break q}a=0;b=H[h+12>>2];if(!H[c+16>>2]){break q}while(1){b=qa(b,m+(a<<2)|0,g);g=H[c+12>>2];b=b+g|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[h+12>>2]}a=H[k+40>>2];qa(H[H[k>>2]>>2]+N(a,f)|0,b,a);i=i+1|0;a=H[h+16>>2];if(i>>>0<(H[h+20>>2]-a|0)/20>>>0){continue}break}}H[h+28>>2]=H[h+28>>2]+1;H[d+8>>2]=H[d+8>>2]+1;n=n+1|0;if((j|0)!=(n|0)){continue}break}}a=H[e+28>>2];if(a){continue}break}c=1}H[e+28>>2]=0;f=H[e+16>>2];a=H[e+12>>2];b=f-a|0;if(b>>>0>=9){while(1){oa(H[a>>2]);a=H[e+12>>2]+4|0;H[e+12>>2]=a;f=H[e+16>>2];b=f-a|0;if(b>>>0>8){continue}break}}g=170;r:{switch((b>>>2|0)-1|0){case 1:g=341;case 0:H[e+24>>2]=g;break;default:break r}}s:{if((a|0)==(f|0)){break s}while(1){oa(H[a>>2]);a=a+4|0;if((f|0)!=(a|0)){continue}break}a=H[e+16>>2];b=H[e+12>>2];if((a|0)==(b|0)){break s}H[e+16>>2]=a+((b-a|0)+3&-4)}a=H[e+8>>2];if(a){oa(a)}ca=e+32|0;break b}sa();v()}sa();v()}i=c}return i}function xd(a,b,c,d){var 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,w=0;i=H[b+8>>2];k=H[b+12>>2];n=H[b+20>>2];h=H[b+16>>2];f=h+4|0;n=f>>>0<4?n+1|0:n;a:{if((k|0)<=(n|0)&f>>>0>i>>>0|(k|0)<(n|0)){break a}h=h+H[b>>2]|0;H[a>>2]=I[h|0]|I[h+1|0]<<8|(I[h+2|0]<<16|I[h+3|0]<<24);h=H[b+20>>2];i=h;f=H[b+16>>2];h=f+4|0;k=h>>>0<4?i+1|0:i;H[b+16>>2]=h;H[b+20>>2]=k;if(K[a>>2]>32){break a}k=H[b+8>>2];n=H[b+12>>2];f=f+8|0;i=f>>>0<8?i+1|0:i;if(f>>>0>k>>>0&(i|0)>=(n|0)|(i|0)>(n|0)){break a}h=H[b>>2]+h|0;f=I[h|0]|I[h+1|0]<<8|(I[h+2|0]<<16|I[h+3|0]<<24);H[a+4>>2]=f;i=H[b+20>>2];h=H[b+16>>2]+4|0;i=h>>>0<4?i+1|0:i;H[b+16>>2]=h;H[b+20>>2]=i;if(!f){return 1}if(d>>>0>>0){break a}H[a+8>>2]=0;if(!ta(a+16|0,b)){break a}if(!ua(a+32|0,b)){break a}if(!ua(a+52|0,b)){break a}if(!ua(a+72|0,b)){break a}u=H[a+4>>2];h=c;b=0;c=0;e=ca-32|0;ca=e;f=a;a=H[a+12>>2];H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;b:{c:{if(a){if(a>>>0>=1073741824){break c}d=a<<2;b=pa(d);H[e+8>>2]=b;c=b+d|0;H[e+16>>2]=c;ra(b,0,d);H[e+12>>2]=c}j=H[f+116>>2];d=H[j>>2];if(d){H[j+4>>2]=d;oa(d);c=H[e+12>>2];b=H[e+8>>2];a=H[f+12>>2]}H[j+4>>2]=c;H[j>>2]=b;H[j+8>>2]=H[e+16>>2];b=0;H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;d:{if(a){if(a>>>0>=1073741824){break d}a=a<<2;g=pa(a);H[e+8>>2]=g;b=a+g|0;H[e+16>>2]=b;ra(g,0,a);H[e+12>>2]=b}c=H[f+128>>2];a=H[c>>2];if(a){H[c+4>>2]=a;oa(a);g=H[e+8>>2];b=H[e+12>>2]}H[c+4>>2]=b;H[c>>2]=g;H[c+8>>2]=H[e+16>>2];H[e+24>>2]=0;H[e+28>>2]=0;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;xa(e+8|0);b=H[e+24>>2]+H[e+28>>2]|0;a=(b>>>0)/341|0;a=H[H[e+12>>2]+(a<<2)>>2]+N(b-N(a,341)|0,12)|0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=u;d=1;a=H[e+28>>2]+1|0;H[e+28>>2]=a;e:{if(!a){break e}n=f+16|0;while(1){i=H[e+12>>2];j=H[e+24>>2];d=a-1|0;c=j+d|0;b=(c>>>0)/341|0;b=H[i+(b<<2)>>2]+N(c-N(b,341)|0,12)|0;o=H[b+8>>2];c=H[b+4>>2];m=H[b>>2];H[e+28>>2]=d;b=H[e+16>>2];if((((b|0)!=(i|0)?N(b-i>>2,341)-1|0:0)-(a+j|0)|0)+1>>>0>=682){oa(H[b-4>>2]);H[e+16>>2]=H[e+16>>2]-4}if(m>>>0>u>>>0){d=0;break e}d=0;b=H[f+12>>2];a=(c|0)!=(b-1|0)?c+1|0:0;if(a>>>0>=b>>>0){break e}b=H[f+116>>2];p=N(o,12);r=b+p|0;j=H[f>>2];g=a<<2;k=p+H[f+128>>2]|0;c=H[g+H[k>>2]>>2];f:{if((j|0)==(c|0)){if(!m){break f}b=H[h+20>>2];c=H[h+16>>2];if((b|0)==(c|0)){a=H[f+8>>2];H[h+28>>2]=m+H[h+28>>2];H[f+8>>2]=a+m;break f}while(1){i=(b|0)==(c|0);a=b;j=0;b=c;g:{if(i){break g}while(1){g=H[h+28>>2];b=a;l=N(j,20)+c|0;k=H[l>>2];if(!I[k+84|0]){g=H[H[k+68>>2]+(g<<2)>>2]}if(K[k+80>>2]<=g>>>0){break g}i=H[r>>2]+(H[l+4>>2]<<2)|0;c=H[l+12>>2];b=i;h:{if(c>>>0>3){break h}a=0;b=H[h+12>>2];if(!H[l+16>>2]){break h}while(1){b=qa(b,i+(a<<2)|0,c);c=H[l+12>>2];b=b+c|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[h+12>>2]}a=H[k+40>>2];qa(H[H[k>>2]>>2]+N(a,g)|0,b,a);j=j+1|0;a=H[h+20>>2];b=a;c=H[h+16>>2];if(j>>>0<(b-c|0)/20>>>0){continue}break}}H[h+28>>2]=H[h+28>>2]+1;H[f+8>>2]=H[f+8>>2]+1;d=d+1|0;if((m|0)!=(d|0)){continue}break}break f}i:{j:{k:{l:{if(m>>>0<=2){c=H[f+104>>2];H[c>>2]=a;g=1;b=H[f+12>>2];if(b>>>0>1){break l}break i}if(K[f+8>>2]>K[f+4>>2]){break e}i=b;b=p+12|0;Aa(i+b|0,H[r>>2],H[r+4>>2]);b=g+H[b+H[f+116>>2]>>2]|0;H[b>>2]=H[b>>2]+(1<>2]=0;pc(n,Q(m)^31,e+4|0);c=m>>>1|0;b=H[e+4>>2];if(c>>>0>>0){break e}l=o+1|0;b=c-b|0;c=m-b|0;m:{if((c|0)==(b|0)){c=b;break m}k=H[f+84>>2];if((k|0)==H[f+76>>2]){break k}i=H[k>>2];j=H[f+88>>2];d=j+1|0;H[f+88>>2]=d;j=i&-2147483648>>>j;n:{if((d|0)==32){H[f+88>>2]=0;H[f+84>>2]=k+4;if(j){break n}break k}if(!j){break k}}}j=c;c=b;break j}while(1){a=(b-1|0)!=(a|0)?a+1|0:0;H[c+(g<<2)>>2]=a;b=H[f+12>>2];g=g+1|0;if(b>>>0>g>>>0){continue}break}break i}j=b}k=H[f+128>>2];i=k+p|0;d=H[i>>2];b=d+g|0;H[b>>2]=H[b>>2]+1;Aa(k+N(l,12)|0,d,H[i+4>>2]);if(c){b=H[e+28>>2]+H[e+24>>2]|0;d=H[e+16>>2];g=H[e+12>>2];if((b|0)==(((d|0)!=(g|0)?N(d-g>>2,341)-1|0:0)|0)){xa(e+8|0);g=H[e+12>>2];b=H[e+24>>2]+H[e+28>>2]|0}d=(b>>>0)/341|0;b=H[(d<<2)+g>>2]+N(b-N(d,341)|0,12)|0;H[b+8>>2]=o;H[b+4>>2]=a;H[b>>2]=c;H[e+28>>2]=H[e+28>>2]+1}if(!j){break f}b=H[e+28>>2]+H[e+24>>2]|0;c=H[e+16>>2];g=H[e+12>>2];if((b|0)==(((c|0)!=(g|0)?N(c-g>>2,341)-1|0:0)|0)){xa(e+8|0);g=H[e+12>>2];b=H[e+24>>2]+H[e+28>>2]|0}c=(b>>>0)/341|0;b=H[(c<<2)+g>>2]+N(b-N(c,341)|0,12)|0;H[b+8>>2]=l;H[b+4>>2]=a;H[b>>2]=j;H[e+28>>2]=H[e+28>>2]+1;break f}s=0;if(!m){break f}while(1){if(H[f+12>>2]){w=H[f+36>>2];i=H[k>>2];t=H[f+92>>2];j=H[f+104>>2];a=0;while(1){o=(a<<2)+j|0;H[t+(H[o>>2]<<2)>>2]=0;d=H[f>>2];c=H[o>>2]<<2;b=H[c+i>>2];o:{if((d|0)==(b|0)){break o}p=c+t|0;q=d-b|0;g=H[f+48>>2];d=32-g|0;if((q|0)<=(d|0)){c=H[f+44>>2];if((c|0)==(w|0)){d=0;break e}H[p>>2]=H[c>>2]<>>32-q;b=q+H[f+48>>2]|0;H[f+48>>2]=b;if((b|0)!=32){break o}H[f+48>>2]=0;H[f+44>>2]=c+4;break o}l=H[f+44>>2];b=l+4|0;if((w|0)==(b|0)){d=0;break e}c=H[l>>2];H[f+44>>2]=b;b=q-d|0;H[f+48>>2]=b;H[p>>2]=H[l+4>>2]>>>32-b|c<>>32-q}c=H[o>>2]<<2;b=c+t|0;H[b>>2]=H[b>>2]|H[c+H[r>>2]>>2];a=a+1|0;if(a>>>0>2]){continue}break}}j=0;a=H[h+16>>2];p:{if((a|0)==H[h+20>>2]){break p}while(1){g=H[h+28>>2];l=N(j,20)+a|0;i=H[l>>2];if(!I[i+84|0]){g=H[H[i+68>>2]+(g<<2)>>2]}if(K[i+80>>2]<=g>>>0){break p}d=H[f+92>>2]+(H[l+4>>2]<<2)|0;c=H[l+12>>2];b=d;q:{if(c>>>0>3){break q}a=0;b=H[h+12>>2];if(!H[l+16>>2]){break q}while(1){b=qa(b,d+(a<<2)|0,c);c=H[l+12>>2];b=b+c|0;a=a+1|0;if(a>>>0>2]){continue}break}b=H[h+12>>2]}a=H[i+40>>2];qa(H[H[i>>2]>>2]+N(a,g)|0,b,a);j=j+1|0;a=H[h+16>>2];if(j>>>0<(H[h+20>>2]-a|0)/20>>>0){continue}break}}H[h+28>>2]=H[h+28>>2]+1;H[f+8>>2]=H[f+8>>2]+1;s=s+1|0;if((m|0)!=(s|0)){continue}break}}a=H[e+28>>2];if(a){continue}break}d=1}H[e+28>>2]=0;g=H[e+16>>2];a=H[e+12>>2];b=g-a|0;if(b>>>0>=9){while(1){oa(H[a>>2]);a=H[e+12>>2]+4|0;H[e+12>>2]=a;g=H[e+16>>2];b=g-a|0;if(b>>>0>8){continue}break}}c=170;r:{switch((b>>>2|0)-1|0){case 1:c=341;case 0:H[e+24>>2]=c;break;default:break r}}s:{if((a|0)==(g|0)){break s}while(1){oa(H[a>>2]);a=a+4|0;if((g|0)!=(a|0)){continue}break}b=H[e+16>>2];a=H[e+12>>2];if((b|0)==(a|0)){break s}H[e+16>>2]=b+((a-b|0)+3&-4)}a=H[e+8>>2];if(a){oa(a)}ca=e+32|0;j=d;break b}sa();v()}sa();v()}}return j}function $c(a,b){var 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,w=0;h=ca-32|0;ca=h;g=H[H[a+4>>2]+44>>2];c=H[a+8>>2];d=H[c>>2];c=H[c+4>>2];H[h+24>>2]=0;H[h+16>>2]=0;H[h+20>>2]=0;d=(c-d>>2>>>0)/3|0;c=H[g+96>>2];f=(H[g+100>>2]-c|0)/12|0;a:{if(d>>>0>f>>>0){e=d-f|0;i=H[g+104>>2];c=H[g+100>>2];if(e>>>0<=(i-c|0)/12>>>0){b:{if(!e){break b}d=c;f=N(e,12)-12|0;i=((f>>>0)/12|0)+1&3;if(i){while(1){l=H[h+20>>2];H[d>>2]=H[h+16>>2];H[d+4>>2]=l;H[d+8>>2]=H[h+24>>2];d=d+12|0;j=j+1|0;if((i|0)!=(j|0)){continue}break}}c=N(e,12)+c|0;if(f>>>0<36){break b}while(1){f=H[h+20>>2];H[d>>2]=H[h+16>>2];H[d+4>>2]=f;H[d+8>>2]=H[h+24>>2];H[d+20>>2]=H[h+24>>2];f=H[h+20>>2];H[d+12>>2]=H[h+16>>2];H[d+16>>2]=f;H[d+32>>2]=H[h+24>>2];f=H[h+20>>2];H[d+24>>2]=H[h+16>>2];H[d+28>>2]=f;f=H[h+20>>2];H[d+36>>2]=H[h+16>>2];H[d+40>>2]=f;H[d+44>>2]=H[h+24>>2];d=d+48|0;if((d|0)!=(c|0)){continue}break}}H[g+100>>2]=c;break a}c:{f=H[g+96>>2];n=(c-f|0)/12|0;d=n+e|0;if(d>>>0<357913942){f=(i-f|0)/12|0;i=f<<1;i=f>>>0>=178956970?357913941:d>>>0>>0?i:d;if(i){if(i>>>0>=357913942){break c}l=pa(N(i,12))}f=N(n,12)+l|0;d=f;e=N(e,12);n=e-12|0;q=((n>>>0)/12|0)+1&3;if(q){while(1){r=H[h+20>>2];H[d>>2]=H[h+16>>2];H[d+4>>2]=r;H[d+8>>2]=H[h+24>>2];d=d+12|0;j=j+1|0;if((q|0)!=(j|0)){continue}break}}e=e+f|0;if(n>>>0>=36){while(1){j=H[h+20>>2];H[d>>2]=H[h+16>>2];H[d+4>>2]=j;H[d+8>>2]=H[h+24>>2];H[d+20>>2]=H[h+24>>2];j=H[h+20>>2];H[d+12>>2]=H[h+16>>2];H[d+16>>2]=j;H[d+32>>2]=H[h+24>>2];j=H[h+20>>2];H[d+24>>2]=H[h+16>>2];H[d+28>>2]=j;j=H[h+20>>2];H[d+36>>2]=H[h+16>>2];H[d+40>>2]=j;H[d+44>>2]=H[h+24>>2];d=d+48|0;if((e|0)!=(d|0)){continue}break}}j=H[g+96>>2];if((j|0)!=(c|0)){while(1){c=c-12|0;n=H[c+4>>2];f=f-12|0;d=f;H[d>>2]=H[c>>2];H[d+4>>2]=n;H[d+8>>2]=H[c+8>>2];if((c|0)!=(j|0)){continue}break}c=H[g+96>>2]}H[g+104>>2]=N(i,12)+l;H[g+100>>2]=e;H[g+96>>2]=f;if(c){oa(c)}break a}sa();v()}wa();v()}if(d>>>0>=f>>>0){break a}H[g+100>>2]=c+N(d,12)}d:{if(H[a+216>>2]==H[a+220>>2]){j=H[a+4>>2];c=H[j+44>>2];d=H[c+100>>2];f=H[c+96>>2];if((d|0)!=(f|0)){c=(d-f|0)/12|0;o=c>>>0<=1?1:c;c=0;while(1){d=H[a+8>>2];i=f+N(c,12)|0;g=N(c,3);e:{f:{if((g|0)==-1){e=H[(H[d>>2]+(g<<2)|0)+4>>2];k=-1;g=1;break f}e=-1;k=H[H[d>>2]+(g<<2)>>2];l=g+1|0;if((l|0)==-1){g=0;break f}e=H[H[d>>2]+(l<<2)>>2];g=g+2|0;m=-1;if((g|0)==-1){break e}}m=H[H[d>>2]+(g<<2)>>2]}H[i+8>>2]=m;H[i+4>>2]=e;H[i>>2]=k;c=c+1|0;if((o|0)!=(c|0)){continue}break}}H[H[j+4>>2]+80>>2]=b;c=1;break d}d=0;H[h+24>>2]=0;H[h+16>>2]=0;H[h+20>>2]=0;l=H[a+8>>2];c=H[l>>2];g=H[l+4>>2];H[h+8>>2]=0;H[h>>2]=0;H[h+4>>2]=0;b=0;g:{h:{i:{j:{k:{l:{if((c|0)!=(g|0)){c=g-c|0;if((c|0)<0){break l}b=pa(c);H[h>>2]=b;H[h+8>>2]=(c&-4)+b;u=h,w=ra(b,0,c)+c|0,H[u+4>>2]=w}c=H[l+24>>2];if((H[l+28>>2]-c|0)<4){break h}f=0;while(1){g=H[(p<<2)+c>>2];m:{if((g|0)==-1){break m}n:{if(H[H[a+120>>2]+(p>>>3&536870908)>>2]>>>p&1){break n}n=H[a+216>>2];c=H[a+220>>2];if((n|0)==(c|0)){break n}e=g+2|0;i=(g>>>0)%3|0;q=i?g-1|0:e;c=(c-n|0)/144|0;r=c>>>0<=1?1:c;j=0;t=(i|0)!=0|(e|0)!=-1;while(1){s=g<<2;i=N(j,144)+n|0;c=H[s+H[H[i+68>>2]>>2]>>2];o:{if(!(H[H[i+16>>2]+(c>>>3&536870908)>>2]>>>c&1)){break o}c=-1;p:{if(!t){break p}e=H[H[l+12>>2]+(q<<2)>>2];c=-1;if((e|0)==-1){break p}c=e-1|0;if((e>>>0)%3|0){break p}c=e+2|0}if((g|0)==(c|0)){break o}e=s;s=H[i+32>>2];i=H[e+s>>2];while(1){e=0;if((c|0)==-1){break g}if((i|0)!=H[s+(c<<2)>>2]){g=c;break n}q:{r:{if((c>>>0)%3|0){e=c-1|0;break r}e=c+2|0;m=-1;if((e|0)==-1){break q}}c=H[H[l+12>>2]+(e<<2)>>2];m=-1;if((c|0)==-1){break q}m=c-1|0;if((c>>>0)%3|0){break q}m=c+2|0}c=m;if((g|0)!=(c|0)){continue}break}}j=j+1|0;if((r|0)!=(j|0)){continue}break}}i=k-f|0;e=i>>2;H[(g<<2)+b>>2]=e;s:{if(k>>>0>>0){H[k>>2]=g;k=k+4|0;H[h+20>>2]=k;break s}c=e+1|0;if(c>>>0>=1073741824){break k}d=o-f|0;k=d>>>1|0;c=d>>>0>=2147483644?1073741823:c>>>0>>0?k:c;if(c){if(c>>>0>=1073741824){break j}d=pa(c<<2)}else{d=0}e=d+(e<<2)|0;H[e>>2]=g;m=c<<2;c=va(d,f,i);o=m+c|0;H[h+24>>2]=o;k=e+4|0;H[h+20>>2]=k;H[h+16>>2]=c;if(f){oa(f);l=H[a+8>>2]}f=c}if((g|0)==-1){break m}t:{if((g>>>0)%3|0){c=g-1|0;break t}c=g+2|0;if((c|0)==-1){break m}}c=H[H[l+12>>2]+(c<<2)>>2];if((c|0)==-1){break m}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)==-1){break m}e=g;if((c|0)==(g|0)){break m}while(1){i=c;u:{v:{c=H[a+220>>2];j=H[a+216>>2];if((c|0)==(j|0)){break v}c=(c-j|0)/144|0;n=c>>>0<=1?1:c;c=0;while(1){q=H[(j+N(c,144)|0)+32>>2];r=i<<2;if(H[q+r>>2]==H[q+(e<<2)>>2]){c=c+1|0;if((n|0)!=(c|0)){continue}break v}break}j=k-d|0;e=j>>2;H[b+r>>2]=e;if(k>>>0>>0){H[k>>2]=i;k=k+4|0;H[h+20>>2]=k;f=d;break u}c=e+1|0;if(c>>>0>=1073741824){break i}f=o-d|0;k=f>>>1|0;c=f>>>0>=2147483644?1073741823:c>>>0>>0?k:c;if(c){if(c>>>0>=1073741824){break j}f=pa(c<<2)}else{f=0}e=f+(e<<2)|0;H[e>>2]=i;m=c<<2;c=va(f,d,j);o=m+c|0;H[h+24>>2]=o;k=e+4|0;H[h+20>>2]=k;H[h+16>>2]=c;if(!d){d=c;break u}oa(d);l=H[a+8>>2];d=c;break u}H[(i<<2)+b>>2]=H[(e<<2)+b>>2]}if((i|0)==-1){break m}w:{if((i>>>0)%3|0){c=i-1|0;break w}c=i+2|0;if((c|0)==-1){break m}}c=H[H[l+12>>2]+(c<<2)>>2];if((c|0)==-1){break m}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)==-1){break m}e=i;if((c|0)!=(g|0)){continue}break}}p=p+1|0;c=H[l+24>>2];if((p|0)>2]-c>>2){continue}break}break h}sa();v()}sa();v()}wa();v()}sa();v()}i=H[a+4>>2];a=H[i+44>>2];c=H[a+100>>2];a=H[a+96>>2];x:{if((c|0)==(a|0)){break x}g=(c-a|0)/12|0;f=g>>>0<=1?1:g;l=f&1;c=0;if(g>>>0>=2){j=f&-2;g=0;while(1){e=N(c,12);f=e+b|0;o=H[f>>2];p=H[f+4>>2];e=a+e|0;H[e+8>>2]=H[f+8>>2];H[e>>2]=o;H[e+4>>2]=p;e=N(c|1,12);f=e+b|0;o=H[f>>2];p=H[f+4>>2];e=a+e|0;H[e+8>>2]=H[f+8>>2];H[e>>2]=o;H[e+4>>2]=p;c=c+2|0;g=g+2|0;if((j|0)!=(g|0)){continue}break}}if(!l){break x}g=N(c,12);c=g+b|0;f=H[c>>2];e=H[c+4>>2];a=a+g|0;H[a+8>>2]=H[c+8>>2];H[a>>2]=f;H[a+4>>2]=e}H[H[i+4>>2]+80>>2]=k-d>>2;e=1}c=e;if(b){oa(b)}if(!d){break d}H[h+20>>2]=d;oa(d)}ca=h+32|0;return c}function Fj(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0;g=ca+-64|0;ca=g;H[a+8>>2]=e;y=a+32|0;f=H[y>>2];d=H[a+36>>2]-f>>2;a:{b:{if(d>>>0>>0){ya(y,e-d|0);H[g+56>>2]=0;H[g+60>>2]=0;H[g+48>>2]=0;H[g+52>>2]=0;H[g+40>>2]=0;H[g+44>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;H[g+24>>2]=0;H[g+28>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;H[g>>2]=0;break b}if(d>>>0>e>>>0){H[a+36>>2]=f+(e<<2)}H[g+56>>2]=0;H[g+60>>2]=0;H[g+48>>2]=0;H[g+52>>2]=0;H[g+40>>2]=0;H[g+44>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;H[g+24>>2]=0;H[g+28>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;H[g>>2]=0;d=0;if(!e){break a}}Pa(g+16|0,e,g);h=H[g+28>>2];d=H[g+32>>2]}H[g>>2]=0;d=d-h>>2;c:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break c}H[g+32>>2]=(e<<2)+h;break c}Pa(g+16|12,e-d|0,g)}H[g>>2]=0;f=H[g+40>>2];d=H[g+44>>2]-f>>2;d:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break d}H[g+44>>2]=f+(e<<2);break d}Pa(g+40|0,e-d|0,g)}H[g>>2]=0;f=H[g+52>>2];d=H[g+56>>2]-f>>2;e:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break e}H[g+56>>2]=f+(e<<2);break e}Pa(g+52|0,e-d|0,g)}f:{if(H[a+8>>2]<=0){break f}i=H[g+16>>2];j=H[a+32>>2];h=0;while(1){d=h<<2;f=H[d+i>>2];m=H[a+16>>2];g:{if((f|0)>(m|0)){H[d+j>>2]=m;break g}d=d+j|0;m=H[a+12>>2];if((m|0)>(f|0)){H[d>>2]=m;break g}H[d>>2]=f}h=h+1|0;d=H[a+8>>2];if((h|0)<(d|0)){continue}break}if((d|0)<=0){break f}d=0;while(1){i=d<<2;f=i+c|0;i=H[b+i>>2]+H[j+i>>2]|0;H[f>>2]=i;h:{if((i|0)>H[a+16>>2]){i=i-H[a+20>>2]|0}else{if((i|0)>=H[a+12>>2]){break h}i=i+H[a+20>>2]|0}H[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}}G=H[a+52>>2];t=H[a+48>>2];z=pa(16);d=z;H[d>>2]=0;H[d+4>>2]=0;H[d+8>>2]=0;H[d+12>>2]=0;H[g+8>>2]=0;H[g>>2]=0;H[g+4>>2]=0;i:{if(e){if(e>>>0>=1073741824){break i}d=e<<2;r=pa(d);H[g>>2]=r;H[g+8>>2]=d+r;ra(r,0,d)}A=1;d=H[a+56>>2];B=H[d>>2];d=H[d+4>>2]-B|0;j:{if((d|0)<8){break j}w=d>>2;I=(w|0)<=2?2:w;J=w>>>0<=1?1:w;C=e&-2;D=e&1;K=e&-4;E=e&3;F=e-1|0;L=e<<2;M=e>>>0<4;A=0;m=1;while(1){k:{l:{m:{n:{if((m|0)!=(J|0)){o:{p:{f=H[(m<<2)+B>>2];if((f|0)==-1){break p}k=1;d=f+2|0;j=(f>>>0)%3|0;x=j?f-1|0:d;s=1<>2];O=n+(x>>>3&536870908)|0;i=0;P=(j|0)!=0|(d|0)!=-1;d=f;q:{while(1){r:{if(H[n+(d>>>3&536870908)>>2]>>>d&1){break r}j=H[H[H[t+64>>2]+12>>2]+(d<<2)>>2];if((j|0)==-1){break r}l=H[G>>2];h=H[t+28>>2];p=H[l+(H[h+(j<<2)>>2]<<2)>>2];if((p|0)>=(m|0)){break r}q=j+1|0;q=H[l+(H[h+(((q>>>0)%3|0?q:j-2|0)<<2)>>2]<<2)>>2];if((q|0)>=(m|0)){break r}h=H[l+(H[h+(j+((j>>>0)%3|0?-1:2)<<2)>>2]<<2)>>2];if((h|0)>=(m|0)){break r}s:{if(!e){break s}j=H[(g+16|0)+N(i,12)>>2];l=N(e,h);q=N(e,q);p=N(e,p);h=0;o=0;if(F){while(1){H[j+(h<<2)>>2]=(H[(h+l<<2)+c>>2]+H[(h+q<<2)+c>>2]|0)-H[(h+p<<2)+c>>2];u=h|1;H[j+(u<<2)>>2]=(H[(l+u<<2)+c>>2]+H[(q+u<<2)+c>>2]|0)-H[(p+u<<2)+c>>2];h=h+2|0;o=o+2|0;if((C|0)!=(o|0)){continue}break}}if(!D){break s}H[j+(h<<2)>>2]=(H[(h+l<<2)+c>>2]+H[(h+q<<2)+c>>2]|0)-H[(h+p<<2)+c>>2]}j=4;i=i+1|0;if((i|0)==4){break q}}t:{if(k&1){h=d-2|0;j=d+1|0;d=-1;j=(j>>>0)%3|0?j:h;if((j|0)==-1|H[n+(j>>>3&536870908)>>2]>>>j&1){break t}j=H[H[H[t+64>>2]+12>>2]+(j<<2)>>2];if((j|0)==-1){break t}d=j+1|0;d=(d>>>0)%3|0?d:j-2|0;break t}u:{if((d>>>0)%3|0){h=d-1|0;break u}h=d+2|0;d=-1;if((h|0)==-1){break t}}d=-1;if(H[n+(h>>>3&536870908)>>2]>>>h&1){break t}j=H[H[H[t+64>>2]+12>>2]+(h<<2)>>2];if((j|0)==-1){break t}if((j>>>0)%3|0){d=j-1|0;break t}d=j+2|0}v:{if((d|0)==(f|0)){break v}if((d|0)==-1&k){if(!P|s&H[O>>2]){break v}d=H[H[H[t+64>>2]+12>>2]+(x<<2)>>2];if((d|0)==-1){break v}k=0;d=(d>>>0)%3|0?d-1|0:d+2|0}if((d|0)!=-1){continue}}break}j=i;if((j|0)<=0){break p}}if(e){ra(r,0,L)}d=j-1|0;q=(d<<2)+z|0;d=N(d,12)+a|0;u=d;x=H[d- -64>>2];k=0;d=H[g>>2];f=0;while(1){i=H[q>>2];H[q>>2]=i+1;if(i>>>0>=x>>>0){break j}w:{if(H[H[u+60>>2]+(i>>>3&536870908)>>2]>>>i&1){break w}f=f+1|0;if(!e){break w}n=H[(g+16|0)+N(k,12)>>2];i=0;h=0;p=0;if(!M){while(1){l=h<<2;o=l+d|0;H[o>>2]=H[l+n>>2]+H[o>>2];o=l|4;s=o+d|0;H[s>>2]=H[n+o>>2]+H[s>>2];o=l|8;s=o+d|0;H[s>>2]=H[n+o>>2]+H[s>>2];l=l|12;o=l+d|0;H[o>>2]=H[l+n>>2]+H[o>>2];h=h+4|0;p=p+4|0;if((K|0)!=(p|0)){continue}break}}if(!E){break w}while(1){l=h<<2;p=l+d|0;H[p>>2]=H[l+n>>2]+H[p>>2];h=h+1|0;i=i+1|0;if((E|0)!=(i|0)){continue}break}}k=k+1|0;if((k|0)!=(j|0)){continue}break}i=N(e,m);if(!f){break o}if(!e){break l}h=0;d=0;if(F){break n}break m}i=N(e,m)}if(H[a+8>>2]<=0){break k}k=(N(m-1|0,e)<<2)+c|0;j=H[y>>2];h=0;while(1){d=h<<2;f=H[d+k>>2];n=H[a+16>>2];x:{if((f|0)>(n|0)){H[d+j>>2]=n;break x}d=d+j|0;n=H[a+12>>2];if((n|0)>(f|0)){H[d>>2]=n;break x}H[d>>2]=f}h=h+1|0;f=H[a+8>>2];if((h|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=i<<2;h=f+c|0;k=b+f|0;while(1){i=d<<2;f=i+h|0;i=H[i+k>>2]+H[j+i>>2]|0;H[f>>2]=i;y:{if((i|0)>H[a+16>>2]){i=i-H[a+20>>2]|0}else{if((i|0)>=H[a+12>>2]){break y}i=i+H[a+20>>2]|0}H[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}break k}Ca();v()}while(1){j=h<<2;k=j+r|0;H[k>>2]=H[k>>2]/(f|0);j=(j|4)+r|0;H[j>>2]=H[j>>2]/(f|0);h=h+2|0;d=d+2|0;if((C|0)!=(d|0)){continue}break}}if(!D){break l}d=(h<<2)+r|0;H[d>>2]=H[d>>2]/(f|0)}if(H[a+8>>2]<=0){break k}j=H[y>>2];h=0;while(1){d=h<<2;f=H[d+r>>2];k=H[a+16>>2];z:{if((f|0)>(k|0)){H[d+j>>2]=k;break z}d=d+j|0;k=H[a+12>>2];if((k|0)>(f|0)){H[d>>2]=k;break z}H[d>>2]=f}h=h+1|0;f=H[a+8>>2];if((h|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=i<<2;h=f+c|0;k=b+f|0;while(1){i=d<<2;f=i+h|0;i=H[i+k>>2]+H[j+i>>2]|0;H[f>>2]=i;A:{if((i|0)>H[a+16>>2]){i=i-H[a+20>>2]|0}else{if((i|0)>=H[a+12>>2]){break A}i=i+H[a+20>>2]|0}H[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}}m=m+1|0;A=(w|0)<=(m|0);if((m|0)!=(I|0)){continue}break}}a=H[g>>2];if(a){oa(a)}oa(z);a=H[g+52>>2];if(a){H[g+56>>2]=a;oa(a)}a=H[g+40>>2];if(a){H[g+44>>2]=a;oa(a)}a=H[g+28>>2];if(a){H[g+32>>2]=a;oa(a)}a=H[g+16>>2];if(a){H[g+20>>2]=a;oa(a)}ca=g- -64|0;return A|0}sa();v()}function oj(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0;h=ca+-64|0;ca=h;H[a+8>>2]=e;x=a+32|0;f=H[x>>2];d=H[a+36>>2]-f>>2;a:{b:{if(d>>>0>>0){ya(x,e-d|0);H[h+56>>2]=0;H[h+60>>2]=0;H[h+48>>2]=0;H[h+52>>2]=0;H[h+40>>2]=0;H[h+44>>2]=0;H[h+32>>2]=0;H[h+36>>2]=0;H[h+24>>2]=0;H[h+28>>2]=0;H[h+16>>2]=0;H[h+20>>2]=0;H[h>>2]=0;break b}if(d>>>0>e>>>0){H[a+36>>2]=f+(e<<2)}H[h+56>>2]=0;H[h+60>>2]=0;H[h+48>>2]=0;H[h+52>>2]=0;H[h+40>>2]=0;H[h+44>>2]=0;H[h+32>>2]=0;H[h+36>>2]=0;H[h+24>>2]=0;H[h+28>>2]=0;H[h+16>>2]=0;H[h+20>>2]=0;H[h>>2]=0;d=0;if(!e){break a}}Pa(h+16|0,e,h);i=H[h+28>>2];d=H[h+32>>2]}H[h>>2]=0;d=d-i>>2;c:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break c}H[h+32>>2]=(e<<2)+i;break c}Pa(h+16|12,e-d|0,h)}H[h>>2]=0;f=H[h+40>>2];d=H[h+44>>2]-f>>2;d:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break d}H[h+44>>2]=f+(e<<2);break d}Pa(h+40|0,e-d|0,h)}H[h>>2]=0;f=H[h+52>>2];d=H[h+56>>2]-f>>2;e:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break e}H[h+56>>2]=f+(e<<2);break e}Pa(h+52|0,e-d|0,h)}f:{if(H[a+8>>2]<=0){break f}g=H[h+16>>2];j=H[a+32>>2];i=0;while(1){d=i<<2;f=H[d+g>>2];m=H[a+16>>2];g:{if((f|0)>(m|0)){H[d+j>>2]=m;break g}d=d+j|0;m=H[a+12>>2];if((m|0)>(f|0)){H[d>>2]=m;break g}H[d>>2]=f}i=i+1|0;d=H[a+8>>2];if((i|0)<(d|0)){continue}break}if((d|0)<=0){break f}d=0;while(1){g=d<<2;f=g+c|0;g=H[b+g>>2]+H[g+j>>2]|0;H[f>>2]=g;h:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break h}g=g+H[a+20>>2]|0}H[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}}G=H[a+52>>2];A=H[a+48>>2];y=pa(16);d=y;H[d>>2]=0;H[d+4>>2]=0;H[d+8>>2]=0;H[d+12>>2]=0;H[h+8>>2]=0;H[h>>2]=0;H[h+4>>2]=0;i:{if(e){if(e>>>0>=1073741824){break i}d=e<<2;t=pa(d);H[h>>2]=t;H[h+8>>2]=d+t;ra(t,0,d)}z=1;d=H[a+56>>2];B=H[d>>2];d=H[d+4>>2]-B|0;j:{if((d|0)<8){break j}w=d>>2;I=(w|0)<=2?2:w;J=w>>>0<=1?1:w;C=e&-2;D=e&1;K=e&-4;E=e&3;F=e-1|0;L=e<<2;M=e>>>0<4;z=0;m=1;while(1){k:{l:{m:{n:{if((m|0)!=(J|0)){o:{p:{f=H[(m<<2)+B>>2];if((f|0)==-1){break p}n=H[A+12>>2];d=f+2|0;g=(f>>>0)%3|0;q=n+((g?f-1|0:d)<<2)|0;j=0;u=(g|0)!=0|(d|0)!=-1;k=1;d=f;q:{while(1){g=H[n+(d<<2)>>2];r:{if((g|0)==-1){break r}l=-1;p=H[G>>2];r=H[A>>2];i=p+(H[r+(g<<2)>>2]<<2)|0;o=g+1|0;o=(o>>>0)%3|0?o:g-2|0;if((o|0)!=-1){l=H[r+(o<<2)>>2]}o=H[i>>2];s:{t:{if((g>>>0)%3|0){i=g-1|0;break t}i=g+2|0;s=-1;if((i|0)==-1){break s}}s=H[r+(i<<2)>>2]}if((m|0)<=(o|0)){break r}i=H[p+(l<<2)>>2];if((i|0)>=(m|0)){break r}l=H[p+(s<<2)>>2];if((l|0)>=(m|0)){break r}g=H[(h+16|0)+N(j,12)>>2];u:{if(!e){break u}l=N(e,l);r=N(e,i);p=N(e,o);i=0;s=0;if(F){while(1){H[g+(i<<2)>>2]=(H[(i+l<<2)+c>>2]+H[(i+r<<2)+c>>2]|0)-H[(i+p<<2)+c>>2];o=i|1;H[g+(o<<2)>>2]=(H[(l+o<<2)+c>>2]+H[(o+r<<2)+c>>2]|0)-H[(o+p<<2)+c>>2];i=i+2|0;s=s+2|0;if((C|0)!=(s|0)){continue}break}}if(!D){break u}H[g+(i<<2)>>2]=(H[(i+l<<2)+c>>2]+H[(i+r<<2)+c>>2]|0)-H[(i+p<<2)+c>>2]}g=4;j=j+1|0;if((j|0)==4){break q}}v:{if(k&1){i=d+1|0;d=(i>>>0)%3|0?i:d-2|0;g=-1;if((d|0)==-1){break v}d=H[n+(d<<2)>>2];g=-1;if((d|0)==-1){break v}g=d+1|0;g=(g>>>0)%3|0?g:d-2|0;break v}w:{if((d>>>0)%3|0){i=d-1|0;break w}i=d+2|0;g=-1;if((i|0)==-1){break v}}d=H[n+(i<<2)>>2];g=-1;if((d|0)==-1){break v}g=d-1|0;if((d>>>0)%3|0){break v}g=d+2|0}d=g;x:{if((f|0)==(d|0)){break x}if((d|0)==-1&k){if(!u){break x}d=H[q>>2];if((d|0)==-1){break x}k=0;d=(d>>>0)%3|0?d-1|0:d+2|0}if((d|0)!=-1){continue}}break}g=j;if((g|0)<=0){break p}}if(e){ra(t,0,L)}d=g-1|0;r=(d<<2)+y|0;d=N(d,12)+a|0;o=d;s=H[d- -64>>2];k=0;d=H[h>>2];f=0;while(1){j=H[r>>2];H[r>>2]=j+1;if(j>>>0>=s>>>0){break j}y:{if(H[H[o+60>>2]+(j>>>3&536870908)>>2]>>>j&1){break y}f=f+1|0;if(!e){break y}j=H[(h+16|0)+N(k,12)>>2];l=0;i=0;p=0;if(!M){while(1){n=i<<2;q=n+d|0;H[q>>2]=H[j+n>>2]+H[q>>2];q=n|4;u=q+d|0;H[u>>2]=H[j+q>>2]+H[u>>2];q=n|8;u=q+d|0;H[u>>2]=H[j+q>>2]+H[u>>2];n=n|12;q=n+d|0;H[q>>2]=H[j+n>>2]+H[q>>2];i=i+4|0;p=p+4|0;if((K|0)!=(p|0)){continue}break}}if(!E){break y}while(1){n=i<<2;p=n+d|0;H[p>>2]=H[j+n>>2]+H[p>>2];i=i+1|0;l=l+1|0;if((E|0)!=(l|0)){continue}break}}k=k+1|0;if((k|0)!=(g|0)){continue}break}g=N(e,m);if(!f){break o}if(!e){break l}i=0;d=0;if(F){break n}break m}g=N(e,m)}if(H[a+8>>2]<=0){break k}k=(N(m-1|0,e)<<2)+c|0;j=H[x>>2];i=0;while(1){d=i<<2;f=H[d+k>>2];l=H[a+16>>2];z:{if((f|0)>(l|0)){H[d+j>>2]=l;break z}d=d+j|0;l=H[a+12>>2];if((l|0)>(f|0)){H[d>>2]=l;break z}H[d>>2]=f}i=i+1|0;f=H[a+8>>2];if((i|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=g<<2;i=f+c|0;k=b+f|0;while(1){g=d<<2;f=g+i|0;g=H[g+k>>2]+H[g+j>>2]|0;H[f>>2]=g;A:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break A}g=g+H[a+20>>2]|0}H[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}break k}Ca();v()}while(1){j=i<<2;k=j+t|0;H[k>>2]=H[k>>2]/(f|0);j=(j|4)+t|0;H[j>>2]=H[j>>2]/(f|0);i=i+2|0;d=d+2|0;if((C|0)!=(d|0)){continue}break}}if(!D){break l}d=(i<<2)+t|0;H[d>>2]=H[d>>2]/(f|0)}if(H[a+8>>2]<=0){break k}j=H[x>>2];i=0;while(1){d=i<<2;f=H[d+t>>2];k=H[a+16>>2];B:{if((f|0)>(k|0)){H[d+j>>2]=k;break B}d=d+j|0;k=H[a+12>>2];if((k|0)>(f|0)){H[d>>2]=k;break B}H[d>>2]=f}i=i+1|0;f=H[a+8>>2];if((i|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=g<<2;i=f+c|0;k=b+f|0;while(1){g=d<<2;f=g+i|0;g=H[g+k>>2]+H[g+j>>2]|0;H[f>>2]=g;C:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break C}g=g+H[a+20>>2]|0}H[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}}m=m+1|0;z=(w|0)<=(m|0);if((m|0)!=(I|0)){continue}break}}a=H[h>>2];if(a){oa(a)}oa(y);a=H[h+52>>2];if(a){H[h+56>>2]=a;oa(a)}a=H[h+40>>2];if(a){H[h+44>>2]=a;oa(a)}a=H[h+28>>2];if(a){H[h+32>>2]=a;oa(a)}a=H[h+16>>2];if(a){H[h+20>>2]=a;oa(a)}ca=h- -64|0;return z|0}sa();v()}function Od(a,b,c,d,e){var 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,w=0,x=0,y=0,z=0,A=0,B=0;i=ca-80|0;ca=i;H[i+76>>2]=b;y=i+55|0;r=i+56|0;a:{b:{c:{d:{e:while(1){h=b;if((o^2147483647)<(f|0)){break d}o=f+o|0;f:{g:{h:{f=h;g=I[f|0];if(g){while(1){i:{b=g&255;j:{if(!b){b=f;break j}if((b|0)!=37){break i}g=f;while(1){if(I[g+1|0]!=37){b=g;break j}f=f+1|0;j=I[g+2|0];b=g+2|0;g=b;if((j|0)==37){continue}break}}f=f-h|0;x=o^2147483647;if((f|0)>(x|0)){break d}if(a){Ab(a,h,f)}if(f){continue e}H[i+76>>2]=b;f=b+1|0;p=-1;if(!(I[b+2|0]!=36|F[b+1|0]-48>>>0>=10)){p=F[b+1|0]-48|0;s=1;f=b+3|0}H[i+76>>2]=f;n=0;g=F[f|0];b=g-32|0;k:{if(b>>>0>31){k=f;break k}k=f;b=1<>2]=k;n=b|n;g=F[f+1|0];b=g-32|0;if(b>>>0>=32){break k}f=k;b=1<>>0>=10)){H[((F[k+1|0]<<2)+e|0)-192>>2]=10;g=k+3|0;s=1;b=H[((F[k+1|0]<<3)+d|0)-384>>2];break m}if(s){break h}g=k+1|0;if(!a){H[i+76>>2]=g;s=0;q=0;break l}b=H[c>>2];H[c>>2]=b+4;s=0;b=H[b>>2]}H[i+76>>2]=g;q=b;if((b|0)>=0){break l}q=0-q|0;n=n|8192;break l}q=Nd(i+76|0);if((q|0)<0){break d}g=H[i+76>>2]}f=0;m=-1;n:{if(I[g|0]!=46){b=g;u=0;break n}if(I[g+1|0]==42){o:{if(!(I[g+3|0]!=36|F[g+2|0]-48>>>0>=10)){H[((F[g+2|0]<<2)+e|0)-192>>2]=10;b=g+4|0;m=H[((F[g+2|0]<<3)+d|0)-384>>2];break o}if(s){break h}b=g+2|0;m=0;if(!a){break o}j=H[c>>2];H[c>>2]=j+4;m=H[j>>2]}H[i+76>>2]=b;u=(m^-1)>>>31|0;break n}H[i+76>>2]=g+1;m=Nd(i+76|0);b=H[i+76>>2];u=1}while(1){g=f;k=28;l=b;f=F[b|0];if(f-123>>>0<4294967238){break c}b=l+1|0;f=I[(f+N(g,58)|0)+13711|0];if(f-1>>>0<8){continue}break}H[i+76>>2]=b;p:{q:{if((f|0)!=27){if(!f){break c}if((p|0)>=0){H[(p<<2)+e>>2]=f;j=(p<<3)+d|0;f=H[j+4>>2];H[i+64>>2]=H[j>>2];H[i+68>>2]=f;break q}if(!a){break f}Md(i- -64|0,f,c);break p}if((p|0)>=0){break c}}f=0;if(!a){continue e}}j=n&-65537;n=n&8192?j:n;p=0;t=1132;k=r;r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{f=F[l|0];f=g?(f&15)==3?f&-33:f:f;switch(f-88|0){case 11:break r;case 9:case 13:case 14:case 15:break s;case 27:break x;case 12:case 17:break A;case 23:break B;case 0:case 32:break C;case 24:break D;case 22:break E;case 29:break F;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break g;default:break G}}H:{switch(f-65|0){case 0:case 4:case 5:case 6:break s;case 2:break v;case 1:case 3:break g;default:break H}}if((f|0)==83){break w}break g}l=H[i+64>>2];j=H[i+68>>2];t=1132;break z}f=0;I:{switch(g&255){case 0:H[H[i+64>>2]>>2]=o;continue e;case 1:H[H[i+64>>2]>>2]=o;continue e;case 2:h=H[i+64>>2];H[h>>2]=o;H[h+4>>2]=o>>31;continue e;case 3:G[H[i+64>>2]>>1]=o;continue e;case 4:F[H[i+64>>2]]=o;continue e;case 6:H[H[i+64>>2]>>2]=o;continue e;case 7:break I;default:continue e}}h=H[i+64>>2];H[h>>2]=o;H[h+4>>2]=o>>31;continue e}m=m>>>0<=8?8:m;n=n|8;f=120}h=r;l=H[i+64>>2];j=H[i+68>>2];if(l|j){z=f&32;while(1){h=h-1|0;F[h|0]=z|I[(l&15)+14240|0];w=!j&l>>>0>15|(j|0)!=0;g=j;j=g>>>4|0;l=(g&15)<<28|l>>>4;if(w){continue}break}}if(!(H[i+64>>2]|H[i+68>>2])|!(n&8)){break y}t=(f>>>4|0)+1132|0;p=2;break y}f=r;h=H[i+68>>2];j=h;l=H[i+64>>2];if(h|l){while(1){f=f-1|0;F[f|0]=l&7|48;g=!j&l>>>0>7|(j|0)!=0;h=j;j=h>>>3|0;l=(h&7)<<29|l>>>3;if(g){continue}break}}h=f;if(!(n&8)){break y}f=r-h|0;m=(f|0)<(m|0)?m:f+1|0;break y}l=H[i+64>>2];h=H[i+68>>2];j=h;if((h|0)<0){f=0-(((l|0)!=0)+j|0)|0;j=f;l=0-l|0;H[i+64>>2]=l;H[i+68>>2]=f;p=1;t=1132;break z}if(n&2048){p=1;t=1133;break z}p=n&1;t=p?1134:1132}g=r;if(j){while(1){g=g-1|0;f=j;w=Tj(l,f,10,0);h=da;A=g,B=l-Rj(w,h,10,0)|48,F[A|0]=B;l=w;j=h;if(f>>>0>9){continue}break}}h=l;if(h){while(1){g=g-1|0;f=(h>>>0)/10|0;F[g|0]=h-N(f,10)|48;j=h>>>0>9;h=f;if(j){continue}break}}h=g}if((m|0)<0?u:0){break d}n=u?n&-65537:n;f=H[i+64>>2];j=H[i+68>>2];if(!(m|(f|j)!=0)){h=r;m=0;break g}f=!(f|j)+(r-h|0)|0;m=(f|0)<(m|0)?m:f;break g}g=m>>>0>=2147483647?2147483647:m;k=g;n=(g|0)!=0;h=H[i+64>>2];h=h?h:1614;f=h;J:{K:{L:{M:{if(!(f&3)|!g){break M}while(1){if(!I[f|0]){break L}k=k-1|0;n=(k|0)!=0;f=f+1|0;if(!(f&3)){break M}if(k){continue}break}}if(!n){break K}if(!(!I[f|0]|k>>>0<4)){while(1){l=H[f>>2];if((l^-1)&l-16843009&-2139062144){break L}f=f+4|0;k=k-4|0;if(k>>>0>3){continue}break}}if(!k){break K}}while(1){if(!I[f|0]){break J}f=f+1|0;k=k-1|0;if(k){continue}break}}f=0}f=f?f-h|0:g;k=f+h|0;if((m|0)>=0){n=j;m=f;break g}n=j;m=f;if(I[k|0]){break d}break g}if(m){g=H[i+64>>2];break u}f=0;ib(a,32,q,0,n);break t}H[i+12>>2]=0;H[i+8>>2]=H[i+64>>2];g=i+8|0;H[i+64>>2]=g;m=-1}f=0;N:{while(1){h=H[g>>2];if(!h){break N}j=Ld(i+4|0,h);h=(j|0)<0;if(!(h|j>>>0>m-f>>>0)){g=g+4|0;f=f+j|0;if(m>>>0>f>>>0){continue}break N}break}if(h){break b}}k=61;if((f|0)<0){break c}ib(a,32,q,f,n);if(!f){f=0;break t}k=0;g=H[i+64>>2];while(1){h=H[g>>2];if(!h){break t}h=Ld(i+4|0,h);k=h+k|0;if(k>>>0>f>>>0){break t}Ab(a,i+4|0,h);g=g+4|0;if(f>>>0>k>>>0){continue}break}}ib(a,32,q,f,n^8192);f=(f|0)<(q|0)?q:f;continue e}if((m|0)<0?u:0){break d}v()}F[i+55|0]=H[i+64>>2];m=1;h=y;n=j;break g}g=I[f+1|0];f=f+1|0;continue}}if(a){break a}if(!s){break f}f=1;while(1){a=H[(f<<2)+e>>2];if(a){Md((f<<3)+d|0,a,c);o=1;f=f+1|0;if((f|0)!=10){continue}break a}break}o=1;if(f>>>0>=10){break a}while(1){if(H[(f<<2)+e>>2]){break h}f=f+1|0;if((f|0)!=10){continue}break}break a}k=28;break c}l=k-h|0;j=(m|0)>(l|0)?m:l;if((j|0)>(p^2147483647)){break d}k=61;g=j+p|0;f=(g|0)<(q|0)?q:g;if((x|0)<(f|0)){break c}ib(a,32,f,g,n);Ab(a,t,p);ib(a,48,f,g,n^65536);ib(a,48,j,l,0);Ab(a,h,l);ib(a,32,f,g,n^8192);continue}break}o=0;break a}k=61}H[3992]=k}o=-1}ca=i+80|0;return o}function hj(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=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;a:{b:{if((e|0)!=2){break b}H[a+8>>2]=2;H[a- -64>>2]=f;M=a+32|0;e=H[M>>2];d=H[a+36>>2]-e|0;c:{if(d>>>0<=7){ya(M,2-(d>>>2|0)|0);break c}if((d|0)==8){break c}H[a+36>>2]=e+8}i=1;d=H[a+56>>2];d=H[d+4>>2]-H[d>>2]|0;if((d|0)<=0){break b}o=a+60|0;d=d>>>2|0;X=d>>>0<=1?1:d;Y=a+68|0;d=0;while(1){f=H[a+56>>2];e=H[f>>2];if(H[f+4>>2]-e>>2>>>0<=d>>>0){break a}k=ca-80|0;ca=k;f=-1;d:{e:{e=H[e+(d<<2)>>2];if((e|0)==-1){break e}i=H[o+32>>2];g=e+1|0;g=(g>>>0)%3|0?g:e-2|0;if((g|0)!=-1){f=H[H[i>>2]+(g<<2)>>2]}p=-1;e=e+((e>>>0)%3|0?-1:2)|0;if((e|0)!=-1){p=H[H[i>>2]+(e<<2)>>2]}i=H[o+36>>2];e=H[i>>2];i=H[i+4>>2]-e>>2;if(i>>>0<=f>>>0|i>>>0<=p>>>0){break e}f:{g:{h:{i:{j:{k:{j=H[e+(p<<2)>>2];f=H[e+(f<<2)>>2];if((j|0)>=(d|0)|(f|0)>=(d|0)){break k}i=(j<<3)+c|0;w=H[i+4>>2];g=(f<<3)+c|0;e=H[g+4>>2];l=H[i>>2];i=H[g>>2];if(!((l|0)!=(i|0)|(e|0)!=(w|0))){H[o+8>>2]=i;H[o+12>>2]=e;break j}p=H[H[o+4>>2]+(d<<2)>>2];H[k+72>>2]=0;H[k+76>>2]=0;g=k- -64|0;H[g>>2]=0;H[g+4>>2]=0;H[k+56>>2]=0;H[k+60>>2]=0;g=H[o>>2];if(!I[g+84|0]){p=H[H[g+68>>2]+(p<<2)>>2]}Sa(g,p,F[g+24|0],k+56|0);p=H[H[o+4>>2]+(f<<2)>>2];H[k+48>>2]=0;H[k+52>>2]=0;H[k+40>>2]=0;H[k+44>>2]=0;H[k+32>>2]=0;H[k+36>>2]=0;g=H[o>>2];if(!I[g+84|0]){p=H[H[g+68>>2]+(p<<2)>>2]}Sa(g,p,F[g+24|0],k+32|0);p=H[H[o+4>>2]+(j<<2)>>2];H[k+24>>2]=0;H[k+28>>2]=0;H[k+16>>2]=0;H[k+20>>2]=0;H[k+8>>2]=0;H[k+12>>2]=0;g=H[o>>2];if(!I[g+84|0]){p=H[H[g+68>>2]+(p<<2)>>2]}Sa(g,p,F[g+24|0],k+8|0);g=H[k+16>>2];n=H[k+40>>2];x=g-n|0;N=H[k+44>>2];g=H[k+20>>2]-(N+(g>>>0>>0)|0)|0;E=g;j=Rj(x,g,x,g);q=da;g=H[k+8>>2];z=H[k+32>>2];A=g-z|0;O=H[k+36>>2];g=H[k+12>>2]-(O+(g>>>0>>0)|0)|0;G=g;h=j;j=Rj(A,g,A,g);g=h+j|0;h=da+q|0;h=g>>>0>>0?h+1|0:h;j=H[k+24>>2];B=H[k+48>>2];C=j-B|0;P=H[k+52>>2];j=H[k+28>>2]-(P+(j>>>0>>0)|0)|0;J=j;m=g;g=Rj(C,j,C,j);r=m+g|0;h=da+h|0;s=g>>>0>r>>>0?h+1|0:h;if(!(s|r)){break k}p=0;D=Tj(-1,2147483647,r,s);f=i>>31;R=f;h=f>>31;Q=i;g=h;q=i^g;i=q-g|0;f=(f^g)-((g>>>0>q>>>0)+g|0)|0;g=f;f=e>>31;S=f;K=e;e=f>>31;q=K^e;m=q-e|0;h=f>>31;e=(h^f)-((e>>>0>q>>>0)+h|0)|0;f=(g|0)==(e|0)&i>>>0>m>>>0|e>>>0>>0;i=f?i:m;j=da;e=f?g:e;if((j|0)==(e|0)&i>>>0>D>>>0|e>>>0>j>>>0){break f}i=H[k+64>>2];T=H[k+68>>2];e=Rj(i-n|0,T-((i>>>0>>0)+N|0)|0,x,E);f=da;g=H[k+56>>2];U=H[k+60>>2];j=Rj(g-z|0,U-((g>>>0>>0)+O|0)|0,A,G);e=j+e|0;h=da+f|0;h=e>>>0>>0?h+1|0:h;f=e;m=H[k+72>>2];V=H[k+76>>2];e=Rj(m-B|0,V-((m>>>0>>0)+P|0)|0,C,J);j=f+e|0;f=da+h|0;q=e>>>0>j>>>0?f+1|0:f;e=l;D=e-Q|0;e=(e>>31)-((e>>>0>>0)+R|0)|0;W=e;l=e>>31;y=l^D;f=y-l|0;h=e>>31;e=(h^e)-((l>>>0>y>>>0)+h|0)|0;h=e;y=w-K|0;e=(w>>31)-((w>>>0>>0)+S|0)|0;w=e;l=f;t=e>>31;u=t^y;L=u-t|0;f=e>>31;e=(f^e)-((t>>>0>u>>>0)+f|0)|0;f=(h|0)==(e|0)&l>>>0>L>>>0|e>>>0>>0;f=Tj(-1,2147483647,f?l:L,f?h:e)>>>0>>0;e=da;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break f}e=G>>31;f=e;l=e^A;e=l-e|0;f=(f^G)-((f>>>0>l>>>0)+f|0)|0;h=E>>31;t=h^x;u=t-h|0;l=(h^E)-((h>>>0>t>>>0)+h|0)|0;h=(f|0)==(l|0)&e>>>0>u>>>0|f>>>0>l>>>0;e=h?e:u;f=h?f:l;h=J>>31;L=e;t=h^C;u=t-h|0;l=(h^J)-((h>>>0>t>>>0)+h|0)|0;e=(f|0)==(l|0)&e>>>0>u>>>0|f>>>0>l>>>0;f=Tj(-1,2147483647,e?L:u,e?f:l)>>>0>>0;e=da;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break f}l=1;e=0;f=n;n=Sj(Rj(j,q,x,E),da,r,s);f=f+n|0;h=da+N|0;h=f>>>0>>0?h+1|0:h;n=i-f|0;f=T-((f>>>0>i>>>0)+h|0)|0;n=Rj(n,f,n,f);x=da;f=g;h=Sj(Rj(j,q,A,G),da,r,s);i=h+z|0;g=da+O|0;g=h>>>0>i>>>0?g+1|0:g;h=f-i|0;f=U-((f>>>0>>0)+g|0)|0;g=Rj(h,f,h,f);i=g+n|0;f=da+x|0;f=g>>>0>i>>>0?f+1|0:f;n=i;g=Sj(Rj(j,q,C,J),da,r,s);i=g+B|0;h=da+P|0;h=g>>>0>i>>>0?h+1|0:h;g=m-i|0;i=V-((i>>>0>m>>>0)+h|0)|0;m=Rj(g,i,g,i);i=m+n|0;g=da+f|0;f=Rj(i,i>>>0>>0?g+1|0:g,r,s);i=da;m=i;if(!i&f>>>0<=1){break i}h=f;while(1){g=e<<1|l>>>31;l=l<<1;e=g;n=!i&h>>>0>7|(i|0)!=0;h=(i&3)<<30|h>>>2;i=i>>>2|0;if(n){continue}break}break h}if((d|0)>(f|0)){e=f<<1}else{if((d|0)<=0){H[o+8>>2]=0;H[o+12>>2]=0;break j}e=(d<<1)-2|0}e=(e<<2)+c|0;H[o+8>>2]=H[e>>2];H[o+12>>2]=H[e+4>>2]}p=1;break f}e=m;l=f;if(f-1|0){break g}}while(1){i=Tj(f,m,l,e);h=e+da|0;e=i+l|0;h=e>>>0>>0?h+1|0:h;l=(h&1)<<31|e>>>1;e=h>>>1|0;i=Rj(l,e,l,e);g=da;if((m|0)==(g|0)&f>>>0>>0|g>>>0>m>>>0){continue}break}}f=H[o+20>>2];if(!f){break f}g=f-1|0;h=H[H[o+16>>2]+(g>>>3&536870908)>>2];H[o+20>>2]=g;p=1;f=Rj(j,q,y,w);i=da;n=Rj(r,s,K,S);m=n+f|0;f=da+i|0;f=m>>>0>>0?f+1|0:f;i=Rj(l,e,D,W);g=h>>>g&1;h=g?0-i|0:i;m=h+m|0;n=f;f=da;i=n+(g?0-(f+((i|0)!=0)|0)|0:f)|0;Z=o,_=Sj(m,h>>>0>m>>>0?i+1|0:i,r,s),H[Z+12>>2]=_;f=Rj(j,q,D,W);i=da;j=Rj(r,s,Q,R);f=j+f|0;h=da+i|0;e=Rj(l,e,y,w);i=0-e|0;l=da;h=(f>>>0>>0?h+1|0:h)+(g?l:0-(((e|0)!=0)+l|0)|0)|0;i=g?e:i;f=i+f|0;Z=o,_=Sj(f,f>>>0>>0?h+1|0:h,r,s),H[Z+8>>2]=_}ca=k+80|0;e=p;break d}Ca();v()}i=e;if(!e){return 0}l:{if(H[a+8>>2]<=0){break l}l=H[M>>2];e=0;while(1){f=e<<2;g=H[f+Y>>2];j=H[a+16>>2];m:{if((g|0)>(j|0)){H[f+l>>2]=j;break m}f=f+l|0;j=H[a+12>>2];if((j|0)>(g|0)){H[f>>2]=j;break m}H[f>>2]=g}e=e+1|0;g=H[a+8>>2];if((e|0)<(g|0)){continue}break}f=0;if((g|0)<=0){break l}e=d<<3;j=e+c|0;q=b+e|0;while(1){g=f<<2;e=g+j|0;g=H[g+q>>2]+H[g+l>>2]|0;H[e>>2]=g;n:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break n}g=g+H[a+20>>2]|0}H[e>>2]=g}f=f+1|0;if((f|0)>2]){continue}break}}d=d+1|0;if((X|0)!=(d|0)){continue}break}}return i|0}Ca();v()}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,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,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=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;a:{b:{if((e|0)!=2){break b}H[a+8>>2]=2;H[a- -64>>2]=f;M=a+32|0;e=H[M>>2];d=H[a+36>>2]-e|0;c:{if(d>>>0<=7){ya(M,2-(d>>>2|0)|0);break c}if((d|0)==8){break c}H[a+36>>2]=e+8}p=1;d=H[a+56>>2];d=H[d+4>>2]-H[d>>2]|0;if((d|0)<=0){break b}o=a+60|0;d=d>>>2|0;X=d>>>0<=1?1:d;Y=a+68|0;d=0;while(1){e=H[a+56>>2];h=H[e>>2];if(H[e+4>>2]-h>>2>>>0<=d>>>0){break a}k=ca-80|0;ca=k;f=-1;h=H[h+(d<<2)>>2];e=-1;d:{if((h|0)==-1){break d}e=h+1|0;f=(e>>>0)%3|0?e:h-2|0;e=h-1|0;if((h>>>0)%3|0){break d}e=h+2|0}g=H[o+36>>2];h=H[g>>2];e:{f:{g:{h:{i:{g=H[g+4>>2]-h>>2;i=f<<2;f=H[H[o+32>>2]+28>>2];j=H[i+f>>2];if(g>>>0<=j>>>0){break i}e=H[f+(e<<2)>>2];if(e>>>0>=g>>>0){break i}j:{k:{l=H[h+(e<<2)>>2];f=H[h+(j<<2)>>2];if((l|0)>=(d|0)|(f|0)>=(d|0)){break k}h=(l<<3)+c|0;w=H[h+4>>2];g=(f<<3)+c|0;e=H[g+4>>2];j=H[h>>2];h=H[g>>2];if(!((j|0)!=(h|0)|(e|0)!=(w|0))){H[o+8>>2]=h;H[o+12>>2]=e;break j}p=H[H[o+4>>2]+(d<<2)>>2];H[k+72>>2]=0;H[k+76>>2]=0;g=k- -64|0;H[g>>2]=0;H[g+4>>2]=0;H[k+56>>2]=0;H[k+60>>2]=0;g=H[o>>2];if(!I[g+84|0]){p=H[H[g+68>>2]+(p<<2)>>2]}Sa(g,p,F[g+24|0],k+56|0);p=H[H[o+4>>2]+(f<<2)>>2];H[k+48>>2]=0;H[k+52>>2]=0;H[k+40>>2]=0;H[k+44>>2]=0;H[k+32>>2]=0;H[k+36>>2]=0;g=H[o>>2];if(!I[g+84|0]){p=H[H[g+68>>2]+(p<<2)>>2]}Sa(g,p,F[g+24|0],k+32|0);p=H[H[o+4>>2]+(l<<2)>>2];H[k+24>>2]=0;H[k+28>>2]=0;H[k+16>>2]=0;H[k+20>>2]=0;H[k+8>>2]=0;H[k+12>>2]=0;g=H[o>>2];if(!I[g+84|0]){p=H[H[g+68>>2]+(p<<2)>>2]}Sa(g,p,F[g+24|0],k+8|0);g=H[k+16>>2];n=H[k+40>>2];x=g-n|0;N=H[k+44>>2];g=H[k+20>>2]-(N+(g>>>0>>0)|0)|0;E=g;l=Rj(x,g,x,g);q=da;g=H[k+8>>2];z=H[k+32>>2];A=g-z|0;O=H[k+36>>2];g=H[k+12>>2]-(O+(g>>>0>>0)|0)|0;G=g;i=l;l=Rj(A,g,A,g);g=i+l|0;i=da+q|0;i=g>>>0>>0?i+1|0:i;l=H[k+24>>2];B=H[k+48>>2];C=l-B|0;P=H[k+52>>2];l=H[k+28>>2]-(P+(l>>>0>>0)|0)|0;J=l;m=g;g=Rj(C,l,C,l);r=m+g|0;i=da+i|0;s=g>>>0>r>>>0?i+1|0:i;if(!(s|r)){break k}p=0;D=Tj(-1,2147483647,r,s);f=h>>31;R=f;i=f>>31;Q=h;g=i;q=h^g;h=q-g|0;f=(f^g)-((g>>>0>q>>>0)+g|0)|0;g=f;f=e>>31;S=f;K=e;e=f>>31;q=K^e;m=q-e|0;i=f>>31;e=(i^f)-((e>>>0>q>>>0)+i|0)|0;f=(g|0)==(e|0)&h>>>0>m>>>0|e>>>0>>0;h=f?h:m;l=da;e=f?g:e;if((l|0)==(e|0)&h>>>0>D>>>0|e>>>0>l>>>0){break e}h=H[k+64>>2];T=H[k+68>>2];e=Rj(h-n|0,T-((h>>>0>>0)+N|0)|0,x,E);f=da;g=H[k+56>>2];U=H[k+60>>2];l=Rj(g-z|0,U-((g>>>0>>0)+O|0)|0,A,G);e=l+e|0;i=da+f|0;i=e>>>0>>0?i+1|0:i;f=e;m=H[k+72>>2];V=H[k+76>>2];e=Rj(m-B|0,V-((m>>>0>>0)+P|0)|0,C,J);l=f+e|0;f=da+i|0;q=e>>>0>l>>>0?f+1|0:f;e=j;D=e-Q|0;e=(e>>31)-((e>>>0>>0)+R|0)|0;W=e;j=e>>31;y=j^D;f=y-j|0;i=e>>31;e=(i^e)-((j>>>0>y>>>0)+i|0)|0;i=e;y=w-K|0;e=(w>>31)-((w>>>0>>0)+S|0)|0;w=e;j=f;t=e>>31;u=t^y;L=u-t|0;f=e>>31;e=(f^e)-((t>>>0>u>>>0)+f|0)|0;f=(i|0)==(e|0)&j>>>0>L>>>0|e>>>0>>0;f=Tj(-1,2147483647,f?j:L,f?i:e)>>>0>>0;e=da;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break e}e=G>>31;f=e;j=e^A;e=j-e|0;f=(f^G)-((f>>>0>j>>>0)+f|0)|0;i=E>>31;t=i^x;u=t-i|0;j=(i^E)-((i>>>0>t>>>0)+i|0)|0;i=(f|0)==(j|0)&e>>>0>u>>>0|f>>>0>j>>>0;e=i?e:u;f=i?f:j;i=J>>31;L=e;t=i^C;u=t-i|0;j=(i^J)-((i>>>0>t>>>0)+i|0)|0;e=(f|0)==(j|0)&e>>>0>u>>>0|f>>>0>j>>>0;f=Tj(-1,2147483647,e?L:u,e?f:j)>>>0>>0;e=da;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break e}j=1;e=0;f=n;n=Sj(Rj(l,q,x,E),da,r,s);f=f+n|0;i=da+N|0;i=f>>>0>>0?i+1|0:i;n=h-f|0;f=T-((f>>>0>h>>>0)+i|0)|0;n=Rj(n,f,n,f);x=da;f=g;i=Sj(Rj(l,q,A,G),da,r,s);h=i+z|0;g=da+O|0;g=h>>>0>>0?g+1|0:g;i=f-h|0;f=U-((f>>>0>>0)+g|0)|0;g=Rj(i,f,i,f);h=g+n|0;f=da+x|0;f=h>>>0>>0?f+1|0:f;n=h;g=Sj(Rj(l,q,C,J),da,r,s);h=g+B|0;i=da+P|0;i=h>>>0>>0?i+1|0:i;g=m-h|0;h=V-((h>>>0>m>>>0)+i|0)|0;m=Rj(g,h,g,h);h=m+n|0;g=da+f|0;f=Rj(h,h>>>0>>0?g+1|0:g,r,s);h=da;m=h;if(!h&f>>>0<=1){break h}i=f;while(1){g=e<<1|j>>>31;j=j<<1;e=g;n=!h&i>>>0>7|(h|0)!=0;i=(h&3)<<30|i>>>2;h=h>>>2|0;if(n){continue}break}break g}if((d|0)>(f|0)){e=f<<1}else{if((d|0)<=0){H[o+8>>2]=0;H[o+12>>2]=0;break j}e=(d<<1)-2|0}e=(e<<2)+c|0;H[o+8>>2]=H[e>>2];H[o+12>>2]=H[e+4>>2]}p=1;break e}Ca();v()}e=m;j=f;if(f-1|0){break f}}while(1){h=Tj(f,m,j,e);i=e+da|0;e=h+j|0;i=e>>>0>>0?i+1|0:i;j=(i&1)<<31|e>>>1;e=i>>>1|0;h=Rj(j,e,j,e);g=da;if((m|0)==(g|0)&f>>>0>>0|g>>>0>m>>>0){continue}break}}f=H[o+20>>2];if(!f){break e}g=f-1|0;i=H[H[o+16>>2]+(g>>>3&536870908)>>2];H[o+20>>2]=g;p=1;f=Rj(l,q,y,w);h=da;n=Rj(r,s,K,S);m=n+f|0;f=da+h|0;f=m>>>0>>0?f+1|0:f;h=Rj(j,e,D,W);g=i>>>g&1;i=g?0-h|0:h;m=i+m|0;n=f;f=da;h=n+(g?0-(f+((h|0)!=0)|0)|0:f)|0;Z=o,_=Sj(m,i>>>0>m>>>0?h+1|0:h,r,s),H[Z+12>>2]=_;f=Rj(l,q,D,W);h=da;l=Rj(r,s,Q,R);f=l+f|0;i=da+h|0;e=Rj(j,e,y,w);h=0-e|0;j=da;i=(f>>>0>>0?i+1|0:i)+(g?j:0-(((e|0)!=0)+j|0)|0)|0;h=g?e:h;f=h+f|0;Z=o,_=Sj(f,f>>>0>>0?i+1|0:i,r,s),H[Z+8>>2]=_}ca=k+80|0;if(!p){return 0}l:{if(H[a+8>>2]<=0){break l}g=H[M>>2];e=0;while(1){f=e<<2;h=H[f+Y>>2];j=H[a+16>>2];m:{if((h|0)>(j|0)){H[f+g>>2]=j;break m}f=f+g|0;j=H[a+12>>2];if((j|0)>(h|0)){H[f>>2]=j;break m}H[f>>2]=h}e=e+1|0;h=H[a+8>>2];if((e|0)<(h|0)){continue}break}f=0;if((h|0)<=0){break l}e=d<<3;j=e+c|0;l=b+e|0;while(1){h=f<<2;e=h+j|0;h=H[h+l>>2]+H[h+g>>2]|0;H[e>>2]=h;n:{if((h|0)>H[a+16>>2]){i=h-H[a+20>>2]|0}else{if((h|0)>=H[a+12>>2]){break n}i=h+H[a+20>>2]|0}H[e>>2]=i}f=f+1|0;if((f|0)>2]){continue}break}}d=d+1|0;if((X|0)!=(d|0)){continue}break}}return p|0}Ca();v()}function $a(a,b){var c=0,d=0,e=0,f=0,g=0;e=ca-16|0;ca=e;H[a+12>>2]=b;H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;d=a+16|0;H[d>>2]=0;H[d+4>>2]=0;F[d+5|0]=0;F[d+6|0]=0;F[d+7|0]=0;F[d+8|0]=0;F[d+9|0]=0;F[d+10|0]=0;F[d+11|0]=0;F[d+12|0]=0;c=d+16|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+32|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+48|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d- -64|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+80|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+96|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+112|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+128|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+144|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+160|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+176|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+192|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+208|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+224|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+240|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+256|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+272|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+288|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+304|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+320|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+336|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+352|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+368|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+384|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+400|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+416|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+432|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+448|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+464|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c=d+480|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;d=d+496|0;H[d>>2]=0;H[d+4>>2]=0;F[d+5|0]=0;F[d+6|0]=0;F[d+7|0]=0;F[d+8|0]=0;F[d+9|0]=0;F[d+10|0]=0;F[d+11|0]=0;F[d+12|0]=0;H[a+528>>2]=0;H[a+532>>2]=0;F[a+533|0]=0;F[a+534|0]=0;F[a+535|0]=0;F[a+536|0]=0;F[a+537|0]=0;F[a+538|0]=0;F[a+539|0]=0;F[a+540|0]=0;H[a+544>>2]=0;H[a+548>>2]=0;H[a+560>>2]=0;H[a+552>>2]=0;H[a+556>>2]=0;H[a+564>>2]=0;H[a+568>>2]=0;H[a+580>>2]=0;H[a+572>>2]=0;H[a+576>>2]=0;H[a+584>>2]=0;H[a+588>>2]=0;H[a+600>>2]=0;H[a+592>>2]=0;H[a+596>>2]=0;H[a+612>>2]=0;H[a+604>>2]=0;H[a+608>>2]=0;g=a+628|0;a:{b:{if(b){if(b>>>0<1073741824){break b}sa();v()}H[a+616>>2]=0;H[a+620>>2]=0;H[a+624>>2]=0;H[e+8>>2]=0;H[e>>2]=0;H[e+4>>2]=0;d=1;break a}d=b<<2;c=pa(d);H[a+604>>2]=c;f=c+d|0;H[a+612>>2]=f;ra(c,0,d);H[a+624>>2]=0;H[a+616>>2]=0;H[a+620>>2]=0;H[a+608>>2]=f;c=pa(d);H[a+616>>2]=c;f=c+d|0;H[a+624>>2]=f;ra(c,0,d);H[a+620>>2]=f;c=pa(d);H[e>>2]=c;f=c+d|0;H[e+8>>2]=f;ra(c,0,d);H[e+4>>2]=f;d=b<<5|1}tb(g,d,e);c=H[e>>2];if(c){H[e+4>>2]=c;oa(c)}H[e+8>>2]=0;H[e>>2]=0;H[e+4>>2]=0;if(b){b=b<<2;c=pa(b);H[e>>2]=c;f=b+c|0;H[e+8>>2]=f;ra(c,0,b);H[e+4>>2]=f}tb(a+640|0,d,e);b=H[e>>2];if(b){H[e+4>>2]=b;oa(b)}ca=e+16|0;return a}function gc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=O(0),n=O(0),o=0;a:{b:{if(!d){break b}c:{switch(H[a+28>>2]-1|0){case 0:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}G[(g<<1)+d>>1]=F[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}G[(g<<1)+d>>1]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}G[(g<<1)+d>>1]=J[b>>1];b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=G[b>>1];if((e|0)<0){break b}G[(g<<1)+d>>1]=e;b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=H[b>>2];if(e+32768>>>0>65535){break b}G[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=H[b>>2];if(e>>>0>32767){break b}G[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;k=H[e+4>>2];while(1){if(b>>>0>=k>>>0){break b}h=H[b+4>>2];e=H[b>>2];i=e+32768|0;h=i>>>0<32768?h+1|0:h;if(!h&i>>>0>65535|h){break b}G[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=H[b+4>>2];e=H[b>>2];if(!k&e>>>0>32767|k){break b}G[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=I[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=H[a>>2];j=H[e>>2];g=j;f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=H[e+4>>2];e=f-j|0;if(!I[a+32|0]){j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=L[g>>2];if(m>=O(32767)|m>1]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=L[g>>2];if(m>=O(32767)|mO(1)){break d}e=(b<<1)+d|0;l=T(+m*32767+.5);f:{if(P(l)<2147483648){i=~~l;break f}i=-2147483648}G[e>>1]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=1;if(c>>>0<=e>>>0){break d}ra((e<<1)+d|0,0,c-e<<1)}return j;case 9:g:{h:{e=I[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=H[a>>2];j=H[e>>2];g=j;f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=H[e+4>>2];e=f-j|0;if(!I[a+32|0]){j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=M[g>>3];if(l>=32767|l<-32768|l!=l){break g}o=P(l);if(o==Infinity){break g}e=(b<<1)+d|0;if(o<2147483648){i=~~l}else{i=-2147483648}G[e>>1]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=M[g>>3];if(l>=32767|l<-32768|(P(l)==Infinity|l!=l)){break g}if(l<0|l>1){break g}e=(b<<1)+d|0;l=T(l*32767+.5);i:{if(P(l)<2147483648){i=~~l;break i}i=-2147483648}G[e>>1]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=1;if(c>>>0<=e>>>0){break g}ra((e<<1)+d|0,0,c-e<<1)}return j;case 10:break c;default:break b}}e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}G[(g<<1)+d>>1]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}ra((e<<1)+d|0,0,(c&255)-e<<1)}return j}ra((e<<1)+d|0,0,(c&255)-e<<1);return 1}function ec(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=O(0),n=O(0),o=0;a:{b:{if(!d){break b}c:{switch(H[a+28>>2]-1|0){case 0:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=F[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=G[b>>1];b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=J[b>>1];b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=H[b>>2];b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=H[b>>2];if((e|0)<0){break b}H[(g<<2)+d>>2]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;k=H[e+4>>2];while(1){if(b>>>0>=k>>>0){break b}h=H[b+4>>2];e=H[b>>2];if(e- -2147483648>>>0<2147483648?h+1|0:h){break b}H[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=H[b+4>>2];e=H[b>>2];if(!k&e>>>0>2147483647|k){break b}H[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=I[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=H[a>>2];j=H[e>>2];g=j;f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=H[e+4>>2];e=f-j|0;if(!I[a+32|0]){j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=L[g>>2];if(m>=O(2147483648)|m>2]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=L[g>>2];if(m>=O(2147483648)|mO(1)){break d}e=(b<<2)+d|0;l=T(+m*2147483647+.5);f:{if(P(l)<2147483648){i=~~l;break f}i=-2147483648}H[e>>2]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=1;if(c>>>0<=e>>>0){break d}ra((e<<2)+d|0,0,c-e<<2)}return j;case 9:g:{h:{e=I[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=H[a>>2];j=H[e>>2];g=j;f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=H[e+4>>2];e=f-j|0;if(!I[a+32|0]){j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=M[g>>3];if(l>=2147483647|l<-2147483648|l!=l){break g}o=P(l);if(o==Infinity){break g}e=(b<<2)+d|0;if(o<2147483648){i=~~l}else{i=-2147483648}H[e>>2]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=M[g>>3];if(l>=2147483647|l<-2147483648|(P(l)==Infinity|l!=l)){break g}if(l<0|l>1){break g}e=(b<<2)+d|0;l=T(l*2147483647+.5);i:{if(P(l)<2147483648){i=~~l;break i}i=-2147483648}H[e>>2]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=1;if(c>>>0<=e>>>0){break g}ra((e<<2)+d|0,0,c-e<<2)}return j;case 10:break c;default:break b}}e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}ra((e<<2)+d|0,0,(c&255)-e<<2)}return j}ra((e<<2)+d|0,0,(c&255)-e<<2);return 1}function fc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=O(0);a:{b:{if(!d){break b}c:{switch(H[a+28>>2]-1|0){case 0:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=F[b|0];if((e|0)<0){break b}G[(g<<1)+d>>1]=e&255;b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}G[(g<<1)+d>>1]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=G[b>>1];if((e|0)<0){break b}G[(g<<1)+d>>1]=e;b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}G[(g<<1)+d>>1]=J[b>>1];b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=H[b>>2];if(e>>>0>65535){break b}G[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=H[b>>2];if(e>>>0>65535){break b}G[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=H[b+4>>2];e=H[b>>2];if(!k&e>>>0>65535|k){break b}G[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=H[b+4>>2];e=H[b>>2];if(!k&e>>>0>65535|k){break b}G[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=I[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=H[a>>2];l=H[e>>2];g=l;f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=H[e+4>>2];e=f-l|0;if(!I[a+32|0]){l=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=L[g>>2];if(m>=O(65535)|m=O(0)){i=~~m>>>0}else{i=0}G[e>>1]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}l=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=L[g>>2];if(m>=O(65535)|mO(1)){break d}e=(b<<1)+d|0;j=T(+m*65535+.5);f:{if(j<4294967296&j>=0){i=~~j>>>0;break f}i=0}G[e>>1]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}l=1;if(c>>>0<=e>>>0){break d}ra((e<<1)+d|0,0,c-e<<1)}return l;case 9:g:{h:{e=I[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=H[a>>2];l=H[e>>2];g=l;f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=H[e+4>>2];e=f-l|0;if(!I[a+32|0]){l=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=M[g>>3];if(j>=65535|j<0|(P(j)==Infinity|j!=j)){break g}e=(b<<1)+d|0;if(j<4294967296&j>=0){i=~~j>>>0}else{i=0}G[e>>1]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}l=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=M[g>>3];if(j>=65535|j<0|(P(j)==Infinity|j!=j)){break g}if(j>1){break g}e=(b<<1)+d|0;j=T(j*65535+.5);i:{if(j<4294967296&j>=0){i=~~j>>>0;break i}i=0}G[e>>1]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}l=1;if(c>>>0<=e>>>0){break g}ra((e<<1)+d|0,0,c-e<<1)}return l;case 10:break c;default:break b}}e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];k=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}G[(g<<1)+d>>1]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}ra((e<<1)+d|0,0,(c&255)-e<<1)}return l}ra((e<<1)+d|0,0,(c&255)-e<<1);return 1}function Sa(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=O(0),l=0,m=0,n=O(0),o=0;a:{if(!d){break a}b:{c:{switch(H[a+28>>2]-1|0){case 0:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=F[b|0];H[e>>2]=i;H[e+4>>2]=i>>31;b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 1:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;H[e>>2]=I[b|0];H[e+4>>2]=0;b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 2:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=G[b>>1];H[e>>2]=i;H[e+4>>2]=i>>31;b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 3:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;H[e>>2]=J[b>>1];H[e+4>>2]=0;b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 4:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=H[b>>2];H[e>>2]=i;H[e+4>>2]=i>>31;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 5:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;H[e>>2]=H[b>>2];H[e+4>>2]=0;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 6:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}i=H[b+4>>2];e=(g<<3)+d|0;H[e>>2]=H[b>>2];H[e+4>>2]=i;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 7:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=H[b>>2];i=H[b+4>>2];if((i|0)<0){break a}j=(g<<3)+d|0;H[j>>2]=e;H[j+4>>2]=i;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 8:d:{e=I[a+24|0];f=c&255;if(!(e>>>0>>0?e:f)){break d}if(I[a+32|0]){break a}e=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+e|0;e=H[a>>2];i=H[e+4>>2];e=H[e>>2];if((b|0)>=(i-e|0)){break a}g=b+e|0;h=c&255;b=0;while(1){k=L[g>>2];if(k>=O(0x8000000000000000)|k=O(1)?~~(k>O(0)?O(R(O(T(O(k*O(2.3283064365386963e-10)))),O(4294967296))):O(U(O(O(k-O(~~k>>>0>>>0))*O(2.3283064365386963e-10)))))>>>0:0;m=~~k>>>0;break e}j=-2147483648;m=0}H[e>>2]=m;H[e+4>>2]=j;b=b+1|0;e=I[a+24|0];if(b>>>0>=(e>>>0>>0?e:h)>>>0){break d}g=g+4|0;if(i>>>0>g>>>0){continue}break}break a}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 9:f:{e=I[a+24|0];f=c&255;if(!(e>>>0>>0?e:f)){break f}if(I[a+32|0]){break a}e=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+e|0;e=H[a>>2];i=H[e+4>>2];e=H[e>>2];if((b|0)>=(i-e|0)){break a}g=b+e|0;h=c&255;b=0;while(1){l=M[g>>3];if(l>=0x8000000000000000|l<-0x8000000000000000|l!=l){break a}o=P(l);if(o==Infinity){break a}e=(b<<3)+d|0;g:{if(o<0x8000000000000000){j=P(l)>=1?~~(l>0?R(T(l*2.3283064365386963e-10),4294967295):U((l-+(~~l>>>0>>>0))*2.3283064365386963e-10))>>>0:0;m=~~l>>>0;break g}j=-2147483648;m=0}H[e>>2]=m;H[e+4>>2]=j;b=b+1|0;e=I[a+24|0];if(b>>>0>=(e>>>0>>0?e:h)>>>0){break f}g=g+8|0;if(i>>>0>g>>>0){continue}break}break a}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 10:break c;default:break a}}e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;H[e>>2]=I[b|0];H[e+4>>2]=0;b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0}ra(d,0,a<<3)}}function Oj(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,k=0,l=0,m=0,n=0,o=0;j=a;a:{b:{c:{d:{e:{f:{g:{h:{a=H[a+8>>2];switch(H[a+28>>2]-1|0){case 4:break c;case 5:break d;case 2:break e;case 3:break f;case 0:break g;case 1:break h;default:break a}}f=I[a+24|0];c=pa(f);a=H[j+16>>2];if(H[a+80>>2]){g=H[H[a>>2]>>2]+H[a+48>>2]|0}else{g=0}if(!b){break b}if(f){o=f&252;l=f&3;h=f>>>0<4;while(1){a=0;e=0;if(!h){while(1){k=g+(d<<2)|0;F[a+c|0]=H[k>>2];F[(a|1)+c|0]=H[k+4>>2];F[(a|2)+c|0]=H[k+8>>2];F[(a|3)+c|0]=H[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){F[a+c|0]=H[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}qa(H[H[H[j+8>>2]+64>>2]>>2]+m|0,c,f);m=f+m|0;n=n+1|0;if((n|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,f);a=a+f|0;qa(a+H[H[H[j+8>>2]+64>>2]>>2]|0,c,f);a=a+f|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,f);break b}f=I[a+24|0];c=pa(f);a=H[j+16>>2];if(H[a+80>>2]){g=H[H[a>>2]>>2]+H[a+48>>2]|0}else{g=0}if(!b){break b}if(f){o=f&252;l=f&3;h=f>>>0<4;while(1){a=0;e=0;if(!h){while(1){k=g+(d<<2)|0;F[a+c|0]=H[k>>2];F[(a|1)+c|0]=H[k+4>>2];F[(a|2)+c|0]=H[k+8>>2];F[(a|3)+c|0]=H[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){F[a+c|0]=H[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}qa(H[H[H[j+8>>2]+64>>2]>>2]+m|0,c,f);m=f+m|0;n=n+1|0;if((n|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,f);a=a+f|0;qa(a+H[H[H[j+8>>2]+64>>2]>>2]|0,c,f);a=a+f|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,f);break b}h=I[a+24|0];i=h<<1;c=pa(i);a=H[j+16>>2];if(H[a+80>>2]){g=H[H[a>>2]>>2]+H[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<1;k=g+(d<<2)|0;G[f+c>>1]=H[k>>2];G[(f|2)+c>>1]=H[k+4>>2];G[(f|4)+c>>1]=H[k+8>>2];G[(f|6)+c>>1]=H[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){G[(a<<1)+c>>1]=H[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}qa(H[H[H[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;qa(a+H[H[H[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=I[a+24|0];i=h<<1;c=pa(i);a=H[j+16>>2];if(H[a+80>>2]){g=H[H[a>>2]>>2]+H[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<1;k=g+(d<<2)|0;G[f+c>>1]=H[k>>2];G[(f|2)+c>>1]=H[k+4>>2];G[(f|4)+c>>1]=H[k+8>>2];G[(f|6)+c>>1]=H[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){G[(a<<1)+c>>1]=H[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}qa(H[H[H[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;qa(a+H[H[H[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=I[a+24|0];i=h<<2;c=pa(i);a=H[j+16>>2];if(H[a+80>>2]){g=H[H[a>>2]>>2]+H[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<2;k=g+(d<<2)|0;H[f+c>>2]=H[k>>2];H[(f|4)+c>>2]=H[k+4>>2];H[(f|8)+c>>2]=H[k+8>>2];H[(f|12)+c>>2]=H[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){H[(a<<2)+c>>2]=H[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}qa(H[H[H[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;qa(a+H[H[H[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=I[a+24|0];i=h<<2;c=pa(i);a=H[j+16>>2];if(H[a+80>>2]){g=H[H[a>>2]>>2]+H[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<2;k=g+(d<<2)|0;H[f+c>>2]=H[k>>2];H[(f|4)+c>>2]=H[k+4>>2];H[(f|8)+c>>2]=H[k+8>>2];H[(f|12)+c>>2]=H[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){H[(a<<2)+c>>2]=H[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}qa(H[H[H[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;qa(a+H[H[H[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}qa(H[H[H[j+8>>2]+64>>2]>>2]+a|0,c,i)}oa(c);c=1}return c|0}function dc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=O(0);a:{b:{if(!d){break b}c:{switch(H[a+28>>2]-1|0){case 0:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=F[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=G[b>>1];b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=J[b>>1];b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=H[b>>2];b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=H[b>>2];b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=H[b>>2];if(H[b+4>>2]){break b}H[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=H[b>>2];if(H[b+4>>2]){break b}H[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=I[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=H[a>>2];k=H[e>>2];g=k;f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=H[e+4>>2];e=f-k|0;if(!I[a+32|0]){k=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=L[g>>2];if(m>=O(4294967296)|m=O(0)){i=~~m>>>0}else{i=0}H[e>>2]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}k=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=L[g>>2];if(m>=O(4294967296)|mO(1)){break d}e=(b<<2)+d|0;j=T(+m*4294967295+.5);f:{if(j<4294967296&j>=0){i=~~j>>>0;break f}i=0}H[e>>2]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}k=1;if(c>>>0<=e>>>0){break d}ra((e<<2)+d|0,0,c-e<<2)}return k;case 9:g:{h:{e=I[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=H[a>>2];k=H[e>>2];g=k;f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=H[e+4>>2];e=f-k|0;if(!I[a+32|0]){k=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=M[g>>3];if(j>=4294967295|j<0|(P(j)==Infinity|j!=j)){break g}e=(b<<2)+d|0;if(j<4294967296&j>=0){i=~~j>>>0}else{i=0}H[e>>2]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}k=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=M[g>>3];if(j>=4294967295|j<0|(P(j)==Infinity|j!=j)){break g}if(j>1){break g}e=(b<<2)+d|0;j=T(j*4294967295+.5);i:{if(j<4294967296&j>=0){i=~~j>>>0;break i}i=0}H[e>>2]=i;b=b+1|0;e=I[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}k=1;if(c>>>0<=e>>>0){break g}ra((e<<2)+d|0,0,c-e<<2)}return k;case 10:break c;default:break b}}e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];h=H[e>>2];l=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=H[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}H[(g<<2)+d>>2]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ra((e<<2)+d|0,0,(c&255)-e<<2)}return k}ra((e<<2)+d|0,0,(c&255)-e<<2);return 1}function ye(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{if(H[a+92>>2]==H[a+88>>2]){break e}c=H[a+52>>2];f:{if((c|0)!=H[a+56>>2]){H[c>>2]=b;H[a+52>>2]=c+4;break f}h=H[a+48>>2];g=c-h|0;d=g>>2;f=d+1|0;if(f>>>0>=1073741824){break a}e=g>>>1|0;g=g>>>0>=2147483644?1073741823:f>>>0>>0?e:f;if(g){if(g>>>0>=1073741824){break d}e=pa(g<<2)}else{e=0}f=e+(d<<2)|0;H[f>>2]=b;d=f+4|0;if((c|0)!=(h|0)){while(1){f=f-4|0;c=c-4|0;H[f>>2]=H[c>>2];if((c|0)!=(h|0)){continue}break}}H[a+56>>2]=e+(g<<2);H[a+52>>2]=d;H[a+48>>2]=f;if(!h){break f}oa(h)}H[a+84>>2]=0;c=-1;e=-1;g:{if((b|0)==-1){break g}d=H[a+4>>2];e=b+1|0;e=(e>>>0)%3|0?e:b-2|0;if((e|0)!=-1){c=H[H[d>>2]+(e<<2)>>2]}h:{if((b>>>0)%3|0){l=b-1|0;break h}l=b+2|0;e=-1;if((l|0)==-1){break g}}e=H[H[d>>2]+(l<<2)>>2]}i=e>>>3&536870908;d=H[a+36>>2];h=d+(c>>>3&536870908)|0;g=H[h>>2];f=1<>2]=f|g;f=a+8|0;if((b|0)!=-1){d=b+1|0;d=(d>>>0)%3|0?d:b-2|0}else{d=-1}Ua(f,c,d);d=H[a+36>>2]}f=d+i|0;d=H[f>>2];c=1<>2]=c|d;d=a+8|0;c=-1;i:{if((b|0)==-1){break i}c=b-1|0;if((b>>>0)%3|0){break i}c=b+2|0}Ua(d,e,c)}c=-1;c=(b|0)!=-1?H[H[H[a+4>>2]>>2]+(b<<2)>>2]:c;f=H[a+36>>2]+(c>>>3&536870908)|0;d=H[f>>2];e=1<>2]=d|e;Ua(a+8|0,c,b)}d=H[a+84>>2];if((d|0)>2){break e}while(1){e=N(d,12)+a|0;b=H[e+52>>2];if((b|0)==H[e+48>>2]){d=d+1|0;if((d|0)!=3){continue}break e}b=b-4|0;c=H[b>>2];H[e+52>>2]=b;H[a+84>>2]=d;if((c|0)==-1){break e}f=H[a+24>>2];b=(c>>>0)/3|0;j:{if(H[f+(b>>>3&268435452)>>2]>>>b&1){break j}k:{while(1){k=(c>>>0)/3|0;b=(k>>>3&268435452)+f|0;H[b>>2]=H[b>>2]|1<>2]>>2]+(c<<2)>>2]:d;f=H[a+36>>2]+(d>>>3&536870908)|0;e=H[f>>2];b=1<>2]=b|e;i=H[(H[H[a+16>>2]+96>>2]+N(k,12)|0)+((c>>>0)%3<<2)>>2];l=H[H[a+20>>2]+4>>2];f=H[l+4>>2];t:{if((f|0)!=H[l+8>>2]){H[f>>2]=i;H[l+4>>2]=f+4;break t}j=H[l>>2];h=f-j|0;g=h>>2;e=g+1|0;if(e>>>0>=1073741824){break s}b=h>>>1|0;h=h>>>0>=2147483644?1073741823:b>>>0>e>>>0?b:e;if(h){if(h>>>0>=1073741824){break d}e=pa(h<<2)}else{e=0}b=e+(g<<2)|0;H[b>>2]=i;g=b+4|0;if((f|0)!=(j|0)){while(1){b=b-4|0;f=f-4|0;H[b>>2]=H[f>>2];if((f|0)!=(j|0)){continue}break}}H[l+8>>2]=e+(h<<2);H[l+4>>2]=g;H[l>>2]=b;if(!j){break t}oa(j)}j=H[a+12>>2];f=H[j+4>>2];u:{if((f|0)!=H[j+8>>2]){H[f>>2]=c;H[j+4>>2]=f+4;break u}i=H[j>>2];h=f-i|0;g=h>>2;e=g+1|0;if(e>>>0>=1073741824){break r}b=h>>>1|0;h=h>>>0>=2147483644?1073741823:b>>>0>e>>>0?b:e;if(h){if(h>>>0>=1073741824){break d}e=pa(h<<2)}else{e=0}b=e+(g<<2)|0;H[b>>2]=c;g=b+4|0;if((f|0)!=(i|0)){while(1){b=b-4|0;f=f-4|0;H[b>>2]=H[f>>2];if((f|0)!=(i|0)){continue}break}}H[j+8>>2]=e+(h<<2);H[j+4>>2]=g;H[j>>2]=b;if(!i){break u}oa(i)}b=H[a+12>>2];H[H[b+12>>2]+(d<<2)>>2]=H[b+24>>2];H[b+24>>2]=H[b+24>>2]+1}if((c|0)==-1){break k}g=H[a+4>>2];f=-1;b=c+1|0;b=(b>>>0)%3|0?b:c-2|0;if((b|0)!=-1){f=H[H[g+12>>2]+(b<<2)>>2]}v:{w:{if((N(k,3)|0)!=(c|0)){d=c-1|0;break w}d=c+2|0;c=-1;if((d|0)==-1){break v}}c=H[H[g+12>>2]+(d<<2)>>2]}d=(c|0)==-1;e=(c>>>0)/3|0;if((f|0)!=-1){b=(f>>>0)/3|0;b=H[H[a+24>>2]+(b>>>3&268435452)>>2]&1<>2]+(b>>>3&536870908)>>2]>>>b&1){break x}k=0;b=H[H[g>>2]+(c<<2)>>2];if(!(H[H[a+36>>2]+(b>>>3&536870908)>>2]>>>b&1)){b=H[a+88>>2]+(b<<2)|0;e=H[b>>2];H[b>>2]=e+1;k=(e|0)<=0?2:1}if(H[a+84>>2]>=(k|0)&l){break m}j=N(k,12)+a|0;b=H[j+52>>2];y:{if((b|0)!=H[j+56>>2]){H[b>>2]=c;H[j+52>>2]=b+4;break y}i=H[j+48>>2];h=b-i|0;d=h>>2;g=d+1|0;if(g>>>0>=1073741824){break c}e=h>>>1|0;g=h>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break d}e=pa(g<<2)}else{e=0}d=e+(d<<2)|0;H[d>>2]=c;c=d+4|0;if((b|0)!=(i|0)){while(1){d=d-4|0;b=b-4|0;H[d>>2]=H[b>>2];if((b|0)!=(i|0)){continue}break}}H[j+48>>2]=d;H[j+52>>2]=c;H[j+56>>2]=e+(g<<2);if(!i){break y}oa(i)}if(H[a+84>>2]<=(k|0)){break x}H[a+84>>2]=k}if(l){break k}c=-1;if((f|0)==-1){break n}}c=H[H[H[a+4>>2]>>2]+(f<<2)>>2]}b=0;if(!(H[H[a+36>>2]+(c>>>3&536870908)>>2]>>>c&1)){b=H[a+88>>2]+(c<<2)|0;c=H[b>>2];H[b>>2]=c+1;b=(c|0)<=0?2:1}if(H[a+84>>2]<(b|0)){break l}c=f}f=H[a+24>>2];continue}break}k=N(b,12)+a|0;c=H[k+52>>2];z:{if((c|0)!=H[k+56>>2]){H[c>>2]=f;H[k+52>>2]=c+4;break z}i=H[k+48>>2];h=c-i|0;d=h>>2;g=d+1|0;if(g>>>0>=1073741824){break b}e=h>>>1|0;g=h>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break d}e=pa(g<<2)}else{e=0}d=e+(d<<2)|0;H[d>>2]=f;f=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;H[d>>2]=H[c>>2];if((c|0)!=(i|0)){continue}break}}H[k+48>>2]=d;H[k+52>>2]=f;H[k+56>>2]=e+(g<<2);if(!i){break z}oa(i)}d=H[a+84>>2];if((d|0)<=(b|0)){break j}H[a+84>>2]=b;d=b;break j}d=H[a+84>>2]}if((d|0)<3){continue}break}}return 1}wa();v()}sa();v()}sa();v()}sa();v()}function gd(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=ca-96|0;ca=n;o=H[a+4>>2];d=H[o+32>>2];i=H[d+8>>2];j=H[d+12>>2];e=j;c=H[d+20>>2];f=H[d+16>>2];a:{if((e|0)<=(c|0)&f>>>0>=i>>>0|(c|0)>(e|0)){break a}p=H[d>>2];g=I[p+f|0];h=f+1|0;e=h?c:c+1|0;H[d+16>>2]=h;H[d+20>>2]=e;if((e|0)>=(j|0)&h>>>0>=i>>>0|(e|0)>(j|0)){break a}m=I[h+p|0];h=f+2|0;e=h>>>0<2?c+1|0:c;H[d+16>>2]=h;H[d+20>>2]=e;l=g<<24>>24;b:{if((l|0)>=0){k=H[a+216>>2];if(g>>>0>=(H[a+220>>2]-k|0)/144>>>0){break a}k=k+N(g,144)|0;if(H[k>>2]<0){break b}break a}if(H[a+212>>2]>=0){break a}k=a+212|0}H[k>>2]=b;c:{d:{e:{f:{g:{h:{k=J[o+36>>1];i:{if(((k<<8|k>>>8)&65535)>>>0>=258){if((e|0)>=(j|0)&h>>>0>=i>>>0|(e|0)>(j|0)){break a}e=I[h+p|0];f=f+3|0;c=f>>>0<3?c+1|0:c;H[d+16>>2]=f;H[d+20>>2]=c;if(e>>>0>1){break a}d=e>>>0<2?e:0;if(!m){break i}if(!d){break h}break a}if(m){break g}d=0}if((l|0)<0){e=a+184|0}else{c=H[a+216>>2]+N(g,144)|0;F[c+100|0]=0;e=c+104|0}if((d|0)!=1){break e}c=ca-112|0;ca=c;h=H[H[a+4>>2]+44>>2];d=pa(120);H[d>>2]=12172;H[d+4>>2]=0;H[d+116>>2]=0;H[d+112>>2]=e;H[d+108>>2]=h;H[d+12>>2]=0;H[d+16>>2]=0;H[d+20>>2]=0;H[d+24>>2]=0;H[d+28>>2]=0;H[d+32>>2]=0;H[d+36>>2]=0;H[d+40>>2]=0;H[d+44>>2]=0;H[d+48>>2]=0;H[d+52>>2]=0;H[d+56>>2]=0;H[d+60>>2]=0;H[d+8>>2]=12384;f=d- -64|0;H[f>>2]=0;H[f+4>>2]=0;H[d+72>>2]=0;H[d+76>>2]=0;H[d+80>>2]=0;H[d+84>>2]=0;H[d+88>>2]=0;H[d+104>>2]=0;H[d+96>>2]=0;H[d+100>>2]=0;f=H[a+8>>2];H[c+48>>2]=0;H[c+52>>2]=0;H[c+40>>2]=0;H[c+44>>2]=0;i=c+32|0;H[i>>2]=0;H[i+4>>2]=0;H[c+24>>2]=0;H[c+28>>2]=0;g=c- -64|0;H[g>>2]=0;H[g+4>>2]=0;H[c+72>>2]=0;H[c+76>>2]=0;H[c+80>>2]=0;H[c+84>>2]=0;H[c+88>>2]=0;H[c+104>>2]=0;H[c+16>>2]=0;H[c+20>>2]=0;H[c+56>>2]=0;H[c+60>>2]=0;H[c+8>>2]=12384;H[c+96>>2]=0;H[c+100>>2]=0;H[c+12>>2]=f;g=H[f>>2];j=H[f+4>>2];F[c+111|0]=0;m=i;i=c+111|0;Oa(m,(j-g>>2>>>0)/3|0,i);g=H[c+12>>2];j=H[g+28>>2];g=H[g+24>>2];F[c+111|0]=0;Oa(c+44|0,j-g>>2,i);H[c+28>>2]=d;H[c+24>>2]=h;H[c+20>>2]=e;H[c+16>>2]=f;f=d+8|0;e=c+8|0;fd(f,e);j:{if((e|0)==(f|0)){H[d+92>>2]=H[e+84>>2];break j}Cb(d+56|0,H[e+48>>2],H[e+52>>2]);Cb(d+68|0,H[e+60>>2],H[e- -64>>2]);Cb(d+80|0,H[e+72>>2],H[e+76>>2]);H[d+92>>2]=H[e+84>>2];Aa(d+96|0,H[e+88>>2],H[e+92>>2])}H[c+8>>2]=12384;e=H[c+96>>2];if(e){H[c+100>>2]=e;oa(e)}e=H[c+80>>2];if(e){H[c+84>>2]=e;oa(e)}e=H[c+68>>2];if(e){H[c+72>>2]=e;oa(e)}e=H[c+56>>2];if(e){H[c+60>>2]=e;oa(e)}H[c+8>>2]=12620;e=H[c+44>>2];if(e){oa(e)}e=H[c+32>>2];if(e){oa(e)}ca=c+112|0;break d}if((l|0)>=0){break f}break a}if((l|0)<0){break a}}e=H[a+216>>2];c=H[o+44>>2];d=pa(80);H[d>>2]=12932;H[d+4>>2]=0;H[d+76>>2]=0;H[d+68>>2]=c;H[d+8>>2]=11872;H[d+12>>2]=0;H[d+16>>2]=0;H[d+20>>2]=0;H[d+24>>2]=0;H[d+28>>2]=0;H[d+32>>2]=0;H[d+36>>2]=0;H[d+40>>2]=0;H[d+44>>2]=0;H[d+48>>2]=0;H[d+52>>2]=0;e=e+N(g,144)|0;f=e+104|0;H[d+72>>2]=f;H[d- -64>>2]=0;H[d+56>>2]=0;H[d+60>>2]=0;H[n+24>>2]=c;c=n;H[c+68>>2]=0;H[c+72>>2]=0;H[c+60>>2]=0;H[c+64>>2]=0;H[c+52>>2]=0;H[c+56>>2]=0;H[c+44>>2]=0;H[c+48>>2]=0;H[c+84>>2]=0;H[c+88>>2]=0;H[c+76>>2]=0;H[c+80>>2]=0;H[c+28>>2]=d;h=H[c+28>>2];H[c+8>>2]=H[c+24>>2];H[c+12>>2]=h;H[c+20>>2]=f;f=e+4|0;H[c+16>>2]=f;H[c+36>>2]=0;H[c+40>>2]=0;H[c+32>>2]=11872;e=H[c+20>>2];H[c>>2]=H[c+16>>2];H[c+4>>2]=e;e=c+32|0;Ie(e,f,c);c=d+8|0;fd(c,e);if((c|0)!=(e|0)){Cb(d+56|0,H[e+48>>2],H[e+52>>2])}He(e);break c}c=ca+-64|0;ca=c;h=H[H[a+4>>2]+44>>2];d=pa(80);H[d>>2]=12640;H[d+4>>2]=0;H[d+76>>2]=0;H[d+72>>2]=e;H[d+68>>2]=h;H[d+8>>2]=12804;H[d+12>>2]=0;H[d+16>>2]=0;H[d+20>>2]=0;H[d+24>>2]=0;H[d+28>>2]=0;H[d+32>>2]=0;H[d+36>>2]=0;H[d+40>>2]=0;H[d+44>>2]=0;H[d+48>>2]=0;H[d+52>>2]=0;H[d- -64>>2]=0;i=d+56|0;f=i;H[f>>2]=0;H[f+4>>2]=0;f=H[a+8>>2];H[c+40>>2]=0;H[c+44>>2]=0;H[c+32>>2]=0;H[c+36>>2]=0;g=c+24|0;H[g>>2]=0;H[g+4>>2]=0;H[c+16>>2]=0;H[c+20>>2]=0;H[c+56>>2]=0;H[c+8>>2]=0;H[c+12>>2]=0;H[c+48>>2]=0;H[c+52>>2]=0;H[c>>2]=12804;H[c+4>>2]=f;j=H[f>>2];l=H[f+4>>2];F[c+63|0]=0;m=g;g=c+63|0;Oa(m,(l-j>>2>>>0)/3|0,g);j=H[c+4>>2];l=H[j+28>>2];j=H[j+24>>2];F[c+63|0]=0;Oa(c+36|0,l-j>>2,g);H[c+20>>2]=d;H[c+16>>2]=h;H[c+12>>2]=e;H[c+8>>2]=f;fd(d+8|0,c);Cb(i,H[c+48>>2],H[c+52>>2]);H[c>>2]=12804;e=H[c+48>>2];if(e){H[c+52>>2]=e;oa(e)}H[c>>2]=12620;e=H[c+36>>2];if(e){oa(e)}e=H[c+24>>2];if(e){oa(e)}ca=c- -64|0}if(!d){break a}}d=od(pa(64),d);c=H[a+4>>2];a=d;d=b;k:{l:{if((d|0)>=0){h=c+8|0;b=H[c+12>>2];i=H[c+8>>2];e=b-i>>2;m:{if((e|0)>(d|0)){break m}f=d+1|0;if(d>>>0>=e>>>0){Vb(h,f-e|0);break m}if(e>>>0<=f>>>0){break m}f=i+(f<<2)|0;if((f|0)!=(b|0)){while(1){b=b-4|0;e=H[b>>2];H[b>>2]=0;if(e){ea[H[H[e>>2]+4>>2]](e)}if((b|0)!=(f|0)){continue}break}}H[c+12>>2]=f}c=H[h>>2]+(d<<2)|0;b=H[c>>2];H[c>>2]=a;if(b){break l}break k}b=a;if(!a){break k}}ea[H[H[b>>2]+4>>2]](b)}q=(d^-1)>>>31|0}ca=n+96|0;return q|0}function Kd(a){var b=0,c=0,d=0,e=0,f=0,g=0;e=ca-16|0;ca=e;H[e+12>>2]=a;a:{if(a>>>0<=211){d=H[Jd(14256,14448,e+12|0)>>2];break a}if(a>>>0>=4294967292){X();v()}f=(a>>>0)/210|0;d=N(f,210);H[e+8>>2]=a-d;g=Jd(14448,14640,e+8|0)-14448>>2;while(1){d=H[(g<<2)+14448>>2]+d|0;a=5;while(1){b:{if((a|0)==47){a=211;while(1){b=(d>>>0)/(a>>>0)|0;if(b>>>0>>0){break a}if((N(a,b)|0)==(d|0)){break b}b=a+10|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+12|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+16|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+18|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+22|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+28|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+30|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+36|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+40|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+42|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+46|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+52|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+58|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+60|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+66|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+70|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+72|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+78|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+82|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+88|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+96|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+100|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+102|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+106|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+108|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+112|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+120|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+126|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+130|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+136|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+138|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+142|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+148|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+150|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+156|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+162|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+166|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+168|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+172|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+178|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+180|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+186|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+190|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+192|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+196|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+198|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((N(b,c)|0)==(d|0)){break b}b=a+208|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}a=a+210|0;if((N(b,c)|0)!=(d|0)){continue}break}break b}b=H[(a<<2)+14256>>2];c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}a=a+1|0;if((N(b,c)|0)!=(d|0)){continue}}break}d=g+1|0;a=(d|0)==48;g=a?0:d;f=a+f|0;d=N(f,210);continue}}ca=e+16|0;return d}function Ib(a,b){var 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;j=ca-16|0;ca=j;a:{b:{c:{d:{if(I[H[a+4>>2]+36|0]<=1){k=-1;c=H[b+20>>2];d=H[b+16>>2];e=d+4|0;c=e>>>0<4?c+1|0:c;g=H[b+12>>2];if(K[b+8>>2]>>0&(g|0)<=(c|0)|(c|0)>(g|0)){break c}d=d+H[b>>2]|0;l=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[j+12>>2]=l;H[b+16>>2]=e;H[b+20>>2]=c;break d}k=-1;if(!Ea(1,j+12|0,b)){break c}l=H[j+12>>2]}e:{f:{g:{h:{i:{if(!l){break i}c=H[a+8>>2];if((H[c+4>>2]-H[c>>2]>>2>>>0)/3>>>0>>0){break c}c=J[H[a+4>>2]+36>>1];if(((c<<8|c>>>8)&65535)>>>0>=258){j:{while(1){if(!Ea(1,j+8|0,b)){break c}c=H[j+8>>2];if(!Ea(1,j+8|0,b)){break c}f=c+f|0;c=H[j+8>>2];if(f>>>0>>0){break c}g=f-c|0;c=H[a+40>>2];k:{if((c|0)!=H[a+44>>2]){H[c+4>>2]=f;H[c>>2]=g;H[a+40>>2]=c+12;l=H[j+12>>2];break k}m=H[a+36>>2];d=c-m|0;o=(d|0)/12|0;e=o+1|0;if(e>>>0>=357913942){break j}c=o<<1;h=o>>>0>=178956970?357913941:c>>>0>e>>>0?c:e;if(h){if(h>>>0>=357913942){break b}i=pa(N(h,12))}else{i=0}e=i+N(o,12)|0;H[e+4>>2]=f;H[e>>2]=g;c=va(e+N((d|0)/-12|0,12)|0,m,d);H[a+44>>2]=i+N(h,12);H[a+40>>2]=e+12;H[a+36>>2]=c;if(!m){break k}oa(m)}p=p+1|0;if(l>>>0>p>>>0){continue}break}k=0;Db(b,0,0);if(l){while(1){e=I[b+36|0];c=J[H[a+4>>2]+36>>1];l:{m:{if(((c<<8|c>>>8)&65535)>>>0<=513){if(!e){break l}p=0;c=H[b+32>>2];n=c>>>3|0;g=H[b+24>>2];e=n+g|0;d=H[b+28>>2];n:{if(e>>>0>=d>>>0){f=c;break n}e=I[e|0];f=c+1|0;H[b+32>>2]=f;n=f>>>3|0;p=e>>>(c&7)&1}if(d>>>0>g+n>>>0){break m}break l}if(!e){break l}p=0;f=H[b+32>>2];c=H[b+24>>2]+(f>>>3|0)|0;if(c>>>0>=K[b+28>>2]){break l}p=I[c|0]>>>(f&7)&1}H[b+32>>2]=f+1}c=H[a+36>>2]+N(k,12)|0;F[c+8|0]=I[c+8|0]&254|p&1;k=k+1|0;if((k|0)!=(l|0)){continue}break}}F[b+36|0]=0;f=H[b+20>>2];e=0;d=H[b+32>>2]+7|0;e=d>>>0<7?1:e;c=e>>>3|0;e=(e&7)<<29|d>>>3;d=e+H[b+16>>2]|0;c=c+f|0;H[b+16>>2]=d;H[b+20>>2]=d>>>0>>0?c+1|0:c;break i}sa();v()}while(1){d=H[b+8>>2];c=H[b+12>>2];g=c;c=H[b+20>>2];e=c;h=H[b+16>>2];f=h+4|0;c=f>>>0<4?c+1|0:c;i=f;if(f>>>0>d>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break c}m=H[b>>2];f=m+h|0;o=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[b+16>>2]=i;H[b+20>>2]=c;c=e;f=h+8|0;c=f>>>0<8?c+1|0:c;if(d>>>0>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break c}i=i+m|0;i=I[i|0]|I[i+1|0]<<8|(I[i+2|0]<<16|I[i+3|0]<<24);H[b+16>>2]=f;H[b+20>>2]=c;if(d>>>0<=f>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break c}d=I[f+m|0];c=h+9|0;e=c>>>0<9?e+1|0:e;H[b+16>>2]=c;H[b+20>>2]=e;f=d&1;c=H[a+40>>2];o:{if((c|0)!=H[a+44>>2]){F[c+8|0]=f;H[c+4>>2]=i;H[c>>2]=o;H[a+40>>2]=c+12;l=H[j+12>>2];break o}m=H[a+36>>2];d=c-m|0;h=(d|0)/12|0;e=h+1|0;if(e>>>0>=357913942){break h}c=h<<1;g=h>>>0>=178956970?357913941:c>>>0>e>>>0?c:e;if(g){if(g>>>0>=357913942){break b}e=pa(N(g,12))}else{e=0}h=e+N(h,12)|0;F[h+8|0]=f;H[h+4>>2]=i;H[h>>2]=o;c=va(h+N((d|0)/-12|0,12)|0,m,d);H[a+44>>2]=e+N(g,12);H[a+40>>2]=h+12;H[a+36>>2]=c;if(!m){break o}oa(m)}n=n+1|0;if(l>>>0>n>>>0){continue}break}}H[j+8>>2]=0;c=J[H[a+4>>2]+36>>1];c=(c<<8|c>>>8)&65535;p:{if(c>>>0<=511){k=-1;c=H[b+20>>2];d=H[b+16>>2];e=d+4|0;c=e>>>0<4?c+1|0:c;f=H[b+12>>2];if(K[b+8>>2]>>0&(f|0)<=(c|0)|(c|0)>(f|0)){break c}d=d+H[b>>2]|0;f=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;break p}if((c|0)!=512){break e}k=-1;if(!Ea(1,j+8|0,b)){break c}f=H[j+8>>2]}if(!f){break e}c=J[H[a+4>>2]+36>>1];if(((c<<8|c>>>8)&65535)>>>0<258){break f}n=0;l=0;while(1){if(!Ea(1,j+4|0,b)){break c}l=H[j+4>>2]+l|0;c=H[a+52>>2];q:{if((c|0)!=H[a+56>>2]){H[c>>2]=l;H[a+52>>2]=c+4;break q}i=H[a+48>>2];g=c-i|0;e=g>>2;d=e+1|0;if(d>>>0>=1073741824){break g}c=g>>>1|0;d=g>>>0>=2147483644?1073741823:c>>>0>d>>>0?c:d;if(d){if(d>>>0>=1073741824){break b}c=pa(d<<2)}else{c=0}e=c+(e<<2)|0;H[e>>2]=l;c=va(c,i,g);H[a+56>>2]=c+(d<<2);H[a+52>>2]=e+4;H[a+48>>2]=c;if(!i){break q}oa(i)}n=n+1|0;if((n|0)!=(f|0)){continue}break}break e}sa();v()}sa();v()}k=0;while(1){c=H[b+20>>2];d=H[b+16>>2];e=d+4|0;c=e>>>0<4?c+1|0:c;g=H[b+12>>2];if(K[b+8>>2]>>0&(g|0)<=(c|0)|(c|0)>(g|0)){k=-1;break c}d=d+H[b>>2]|0;g=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;c=H[a+52>>2];r:{if((c|0)!=H[a+56>>2]){H[c>>2]=g;H[a+52>>2]=c+4;break r}h=H[a+48>>2];i=c-h|0;e=i>>2;d=e+1|0;if(d>>>0>=1073741824){break a}c=i>>>1|0;d=i>>>0>=2147483644?1073741823:c>>>0>d>>>0?c:d;if(d){if(d>>>0>=1073741824){break b}c=pa(d<<2)}else{c=0}e=c+(e<<2)|0;H[e>>2]=g;c=va(c,h,i);H[a+56>>2]=c+(d<<2);H[a+52>>2]=e+4;H[a+48>>2]=c;if(!h){break r}oa(h)}k=k+1|0;if((k|0)!=(f|0)){continue}break}}k=H[b+16>>2]}ca=j+16|0;return k}wa();v()}sa();v()}function Va(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=O(0),k=0,l=0;a:{if(!d){break a}b:{c:{switch(H[a+28>>2]-1|0){case 0:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];i=I[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=O(F[b|0]);L[(h<<2)+d>>2]=i?O(j/O(127)):j;b=b+1|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 1:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];i=I[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=O(I[b|0]);L[(h<<2)+d>>2]=i?O(j/O(255)):j;b=b+1|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 2:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];i=I[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=O(G[b>>1]);L[(h<<2)+d>>2]=i?O(j/O(32767)):j;b=b+2|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 3:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];i=I[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=O(J[b>>1]);L[(h<<2)+d>>2]=i?O(j/O(65535)):j;b=b+2|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 4:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];i=I[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=O(H[b>>2]);L[(h<<2)+d>>2]=i?O(j*O(4.656612873077393e-10)):j;b=b+4|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 5:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];i=I[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=O(K[b>>2]);L[(h<<2)+d>>2]=i?O(j*O(2.3283064365386963e-10)):j;b=b+4|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 6:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];i=I[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=O(+K[b>>2]+ +H[b+4>>2]*4294967296);L[(h<<2)+d>>2]=i?O(j*O(10842021724855044e-35)):j;b=b+8|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 7:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];i=I[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=O(+K[b>>2]+ +K[b+4>>2]*4294967296);L[(h<<2)+d>>2]=i?O(j*O(5.421010862427522e-20)):j;b=b+8|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 8:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}L[(h<<2)+d>>2]=L[b>>2];b=b+4|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 9:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}L[(h<<2)+d>>2]=M[b>>3];b=b+8|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 10:break c;default:break a}}e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[a>>2];g=H[e>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=H[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}L[(h<<2)+d>>2]=I[b|0]?O(1):O(0);b=b+1|0;h=h+1|0;e=I[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0}ra(d,0,a<<2)}return l}function ic(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=O(0),m=O(0);a:{b:{if(!d){break b}c:{switch(H[a+28>>2]-1|0){case 0:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}F[d+g|0]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){return 0}e=F[b|0];if((e|0)<0){break b}F[d+g|0]=e;b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}e=J[b>>1];if((e+128&65535)>>>0>255){break b}F[d+g|0]=e;b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}e=J[b>>1];if(e>>>0>127){break b}F[d+g|0]=e;b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>2];if(e+128>>>0>255){break b}F[d+g|0]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>2];if(e>>>0>127){break b}F[d+g|0]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}i=H[b+4>>2];e=H[b>>2];h=e+128|0;i=h>>>0<128?i+1|0:i;if(!i&h>>>0>255|i){break b}F[d+g|0]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}i=H[b+4>>2];e=H[b>>2];if(!i&e>>>0>127|i){break b}F[d+g|0]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:e=I[a+24|0];c=c&255;d:{if(c>>>0>e>>>0?e:c){e=H[H[a>>2]>>2];f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+f|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break d}l=L[b>>2];if(l>=O(127)|lO(1)){break d}j=T(+l*127+.5);if(!(P(j)<2147483648)){break f}h=~~j;break e}if(!(m>>0<(c>>>0>e>>>0?e:c)>>>0){continue}break}}k=1;if(c>>>0<=e>>>0){break d}ra(d+e|0,0,c-e|0)}return k;case 9:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}j=M[b>>3];if(j>=127|j<-128|(P(j)==Infinity|j!=j)){break b}e=d+g|0;if(I[a+32|0]){if(j<0|j>1){break b}j=T(j*127+.5)}g:{if(P(j)<2147483648){h=~~j;break g}h=-2147483648}F[e|0]=h;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 10:break c;default:break b}}e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}F[d+g|0]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ra(d+e|0,0,(c&255)-e|0)}return k}ra(d+e|0,0,(c&255)-e|0);return 1}function hc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=O(0);a:{b:{if(!d){break b}c:{switch(H[a+28>>2]-1|0){case 0:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){return 0}e=F[b|0];if((e|0)<0){break b}F[d+g|0]=e;b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}F[d+g|0]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}e=J[b>>1];if(e>>>0>255){break b}F[d+g|0]=e;b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}e=J[b>>1];if(e>>>0>255){break b}F[d+g|0]=e;b=b+2|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>2];if(e>>>0>255){break b}F[d+g|0]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>2];if(e>>>0>255){break b}F[d+g|0]=e;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}i=H[b+4>>2];e=H[b>>2];if(!i&e>>>0>255|i){break b}F[d+g|0]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}i=H[b+4>>2];e=H[b>>2];if(!i&e>>>0>255|i){break b}F[d+g|0]=e;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:e=I[a+24|0];c=c&255;d:{if(c>>>0>e>>>0?e:c){e=H[H[a>>2]>>2];f=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+f|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break d}l=L[b>>2];if(l>=O(255)|lO(1)){break d}j=T(+l*255+.5);if(!(j<4294967296&j>=0)){break f}h=~~j>>>0;break e}if(!(l=O(0))){break f}h=~~l>>>0;break e}h=0}F[e|0]=h;b=b+4|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(c>>>0>e>>>0?e:c)>>>0){continue}break}}k=1;if(c>>>0<=e>>>0){break d}ra(d+e|0,0,c-e|0)}return k;case 9:e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}j=M[b>>3];if(j>=255|j<0|(P(j)==Infinity|j!=j)){break b}e=d+g|0;if(I[a+32|0]){if(j>1){break b}j=T(j*255+.5)}g:{if(j<4294967296&j>=0){h=~~j>>>0;break g}h=0}F[e|0]=h;b=b+8|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 10:break c;default:break b}}e=I[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=H[H[a>>2]>>2];i=H[a+48>>2];b=Rj(H[a+40>>2],H[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(K[H[a>>2]+4>>2]<=b>>>0){break b}F[d+g|0]=I[b|0];b=b+1|0;g=g+1|0;e=I[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ra(d+e|0,0,(c&255)-e|0)}return k}ra(d+e|0,0,(c&255)-e|0);return 1}function Hh(a){a=a|0;var 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;g=ca-32|0;ca=g;i=H[a+32>>2];b=J[a+36>>1];a:{b:{if(((b<<8|b>>>8)&65535)>>>0<=513){b=H[i+8>>2];d=H[i+12>>2];c=b;b=H[i+20>>2];e=b;j=H[i+16>>2];f=j+4|0;b=f>>>0<4?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break a}n=H[i>>2];k=n+j|0;k=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);H[i+16>>2]=f;H[i+20>>2]=b;h=c;c=d;b=e;d=j+8|0;b=d>>>0<8?b+1|0:b;if(d>>>0>h>>>0&(b|0)>=(c|0)|(b|0)>(c|0)){break a}c=f+n|0;n=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[i+16>>2]=d;H[i+20>>2]=b;break b}if(!Fb(1,g+28|0,i)){break a}if(!Fb(1,g+24|0,H[a+32>>2])){break a}k=H[g+28>>2];n=H[g+24>>2]}if(k>>>0>1431655765){break a}d=H[a+32>>2];b=d;j=H[b+8>>2];c=H[b+16>>2];f=H[b+12>>2];b=H[b+20>>2];e=Sj(j-c|0,f-(b+(c>>>0>j>>>0)|0)|0,3,0);if(!da&e>>>0>>0){break a}e=Rj(k,0,3,0);if(!da&e>>>0>>0|((b|0)>=(f|0)&c>>>0>=j>>>0|(b|0)>(f|0))){break a}j=I[c+H[d>>2]|0];c=c+1|0;b=c?b:b+1|0;H[d+16>>2]=c;H[d+20>>2]=b;c:{d:{if(!j){d=0;c=ca-32|0;ca=c;H[c+24>>2]=0;H[c+16>>2]=0;H[c+20>>2]=0;e:{f:{b=N(k,3);if(b){if(b>>>0>=1073741824){break f}j=N(k,12);d=pa(j);ra(d,0,j)}b=kd(b,1,H[a+32>>2],d);g:{h:{if(!(!k|!b)){j=0;while(1){i:{b=(j<<2)+d|0;f=H[b>>2];e=f>>>1|0;f=(f&1?0-e|0:e)+l|0;if((f|0)<0){break i}H[c>>2]=f;e=H[b+4>>2];h=e>>>1|0;f=f+(e&1?0-h|0:h)|0;if((f|0)<0){break i}H[c+4>>2]=f;b=H[b+8>>2];e=b>>>1|0;l=f+(b&1?0-e|0:e)|0;if((l|0)<0){break i}H[c+8>>2]=l;Rb(H[a+44>>2]+96|0,c);j=j+3|0;b=1;o=o+1|0;if((o|0)!=(k|0)){continue}break h}break}b=0;break h}if(!d){break g}}oa(d)}ca=c+32|0;break e}sa();v()}if(b){break d}break a}if(n>>>0<=255){if(!k){break d}while(1){j:{H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;d=H[a+32>>2];b=d;j=H[b+16>>2];e=H[b+8>>2];c=H[b+20>>2];h=H[b+12>>2];b=h;if(e>>>0<=j>>>0&(c|0)>=(b|0)|(b|0)<(c|0)){break j}i=H[d>>2];l=I[i+j|0];b=c;f=j+1|0;b=f?b:b+1|0;H[d+16>>2]=f;H[d+20>>2]=b;H[g+8>>2]=l;l=e>>>0>>0&(c|0)>=(h|0)|(c|0)>(h|0);e=l?j:e;h=l?c:h;if((e|0)==(f|0)&(h|0)==(b|0)){break j}l=I[f+i|0];b=c;f=j+2|0;b=f>>>0<2?b+1|0:b;H[d+16>>2]=f;H[d+20>>2]=b;H[g+12>>2]=l;if((e|0)==(f|0)&(b|0)==(h|0)){break j}f=I[f+i|0];b=c;c=j+3|0;b=c>>>0<3?b+1|0:b;H[d+16>>2]=c;H[d+20>>2]=b;H[g+16>>2]=f;Rb(H[a+44>>2]+96|0,g+8|0);m=m+1|0;if((m|0)!=(k|0)){continue}break d}break}m=0;break a}if(n>>>0<=65535){if(!k){break d}while(1){k:{H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;i=H[a+32>>2];b=i;c=H[b+8>>2];d=H[b+12>>2];f=H[b+16>>2];b=H[b+20>>2];j=b;e=f+2|0;b=e>>>0<2?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break k}l=H[i>>2];h=l+f|0;h=I[h|0]|I[h+1|0]<<8;H[i+16>>2]=e;H[i+20>>2]=b;H[g+8>>2]=h;b=j;h=f+4|0;b=h>>>0<4?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break k}e=e+l|0;e=I[e|0]|I[e+1|0]<<8;H[i+16>>2]=h;H[i+20>>2]=b;H[g+12>>2]=e;e=c;b=j;c=f+6|0;b=c>>>0<6?b+1|0:b;if(c>>>0>e>>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break k}d=h+l|0;d=I[d|0]|I[d+1|0]<<8;H[i+16>>2]=c;H[i+20>>2]=b;H[g+16>>2]=d;Rb(H[a+44>>2]+96|0,g+8|0);m=m+1|0;if((m|0)!=(k|0)){continue}break d}break}m=0;break a}l:{if(n>>>0>2097151){break l}b=J[a+36>>1];if(((b<<8|b>>>8)&65535)>>>0<514){break l}if(!k){break d}while(1){m:{H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;if(!Fb(1,g+4|0,H[a+32>>2])){break m}H[g+8>>2]=H[g+4>>2];if(!Fb(1,g+4|0,H[a+32>>2])){break m}H[g+12>>2]=H[g+4>>2];if(!Fb(1,g+4|0,H[a+32>>2])){break m}H[g+16>>2]=H[g+4>>2];Rb(H[a+44>>2]+96|0,g+8|0);m=m+1|0;if((m|0)!=(k|0)){continue}break d}break}m=0;break a}if(!k){break d}while(1){H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;i=H[a+32>>2];b=i;c=H[b+8>>2];d=H[b+12>>2];f=H[b+16>>2];b=H[b+20>>2];j=b;e=f+4|0;b=e>>>0<4?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break c}l=H[i>>2];h=l+f|0;h=I[h|0]|I[h+1|0]<<8|(I[h+2|0]<<16|I[h+3|0]<<24);H[i+16>>2]=e;H[i+20>>2]=b;H[g+8>>2]=h;b=j;h=f+8|0;b=h>>>0<8?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break c}e=e+l|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[i+16>>2]=h;H[i+20>>2]=b;H[g+12>>2]=e;e=c;b=j;c=f+12|0;b=c>>>0<12?b+1|0:b;if(c>>>0>e>>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break c}d=h+l|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[i+16>>2]=c;H[i+20>>2]=b;H[g+16>>2]=d;Rb(H[a+44>>2]+96|0,g+8|0);m=m+1|0;if((m|0)!=(k|0)){continue}break}}H[H[a+4>>2]+80>>2]=n;m=1;break a}m=0}ca=g+32|0;return m|0}function zf(a){a=a|0;var 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=O(0),w=0;p=ca-16|0;ca=p;a:{if(!(H[a+60>>2]!=H[a- -64>>2]|H[a+48>>2]!=H[a+52>>2])){j=1;break a}j=1;if((ea[H[H[a>>2]+24>>2]](a)|0)<=0){break a}while(1){b:{b=ea[H[H[a>>2]+20>>2]](a,w)|0;c:{d:{e:{f=H[H[H[(ea[H[H[a>>2]+28>>2]](a)|0)+4>>2]+8>>2]+(b<<2)>>2];switch(H[f+28>>2]-1|0){case 8:break d;case 0:case 2:case 4:break e;default:break c}}b=I[f+24|0];f:{if(!b){n=0;j=0;break f}j=0;b=b<<2;n=pa(b);ra(n,0,b);b=I[f+24|0];if(!b){break f}b=b<<2;j=pa(b);ra(j,0,b)}g:{h:{i:{switch(H[f+28>>2]-1|0){case 4:i=0;h=0;d=0;b=0;k=0;e=I[f+24|0];j:{if(!e){g=0;break j}e=e<<2;h=pa(e);ra(h,0,e);g=pa(e);ra(g,0,e)}k:{if(H[f+80>>2]){while(1){o=H[f>>2];c=H[o>>2];m=H[f+48>>2];e=H[f+40>>2];l=Rj(e,H[f+44>>2],d,b);m=m+l|0;s=c+m|0;c=e;m=qa(h,s,c);l=I[f+24|0];if(l){t=H[a+48>>2];e=0;while(1){r=e<<2;s=H[r+m>>2];if((s|0)<0){break k}H[g+r>>2]=s+H[t+(e+u<<2)>>2];e=e+1|0;if((l|0)!=(e|0)){continue}break}}qa(H[o>>2]+N(d,c)|0,g,c);d=d+1|0;b=d?b:b+1|0;if(!b&K[f+80>>2]>d>>>0){continue}break}}k=1}if(g){oa(g)}if(h){oa(h)}if(k){break h}break g;case 2:g=0;e=0;d=0;b=0;c=I[f+24|0];if(c){c=c<<1;e=pa(c);ra(e,0,c);g=pa(c);ra(g,0,c)}if(H[f+80>>2]){while(1){l=H[f>>2];h=H[l>>2];i=H[f+48>>2];c=H[f+40>>2];k=Rj(c,H[f+44>>2],d,b);i=i+k|0;k=qa(e,h+i|0,c);o=I[f+24|0];l:{if(!o){break l}m=H[a+48>>2];h=0;if((o|0)!=1){t=o&254;i=0;while(1){r=h<<1;G[r+g>>1]=J[k+r>>1]+J[m+(h+u<<2)>>1];r=h|1;s=r<<1;G[s+g>>1]=J[k+s>>1]+J[m+(r+u<<2)>>1];h=h+2|0;i=i+2|0;if((t|0)!=(i|0)){continue}break}}if(!(o&1)){break l}i=h<<1;G[i+g>>1]=J[i+k>>1]+J[m+(h+u<<2)>>1]}qa(H[l>>2]+N(d,c)|0,g,c);d=d+1|0;b=d?b:b+1|0;if(!b&K[f+80>>2]>d>>>0){continue}break}}if(g){oa(g)}if(e){oa(e)}break h;case 0:break i;default:break h}}h=0;e=0;d=0;b=0;c=I[f+24|0];if(c){e=pa(c);ra(e,0,c);h=pa(c);ra(h,0,c)}if(H[f+80>>2]){while(1){t=H[f>>2];g=H[t>>2];i=H[f+48>>2];c=H[f+40>>2];k=Rj(c,H[f+44>>2],d,b);i=i+k|0;k=qa(e,g+i|0,c);o=I[f+24|0];m:{if(!o){break m}m=H[a+48>>2];g=0;if((o|0)!=1){r=o&254;i=0;while(1){F[g+h|0]=I[g+k|0]+I[m+(g+u<<2)|0];l=g|1;F[l+h|0]=I[k+l|0]+I[m+(l+u<<2)|0];g=g+2|0;i=i+2|0;if((r|0)!=(i|0)){continue}break}}if(!(o&1)){break m}F[g+h|0]=I[g+k|0]+I[m+(g+u<<2)|0]}qa(H[t>>2]+N(d,c)|0,h,c);d=d+1|0;b=d?b:b+1|0;if(!b&K[f+80>>2]>d>>>0){continue}break}}if(h){oa(h)}if(e){oa(e)}}u=I[f+24|0]+u|0;i=1}if(j){oa(j)}if(n){oa(n)}if(i){break c}j=0;break a}e=H[H[a+60>>2]+(q<<2)>>2];h=H[a+36>>2];g=H[(ea[H[H[a>>2]+28>>2]](a)|0)+40>>2];H[p+12>>2]=H[f+56>>2];b=pa(32);H[p>>2]=b;H[p+4>>2]=24;H[p+8>>2]=-2147483616;d=I[1206]|I[1207]<<8|(I[1208]<<16|I[1209]<<24);c=I[1202]|I[1203]<<8|(I[1204]<<16|I[1205]<<24);F[b+16|0]=c;F[b+17|0]=c>>>8;F[b+18|0]=c>>>16;F[b+19|0]=c>>>24;F[b+20|0]=d;F[b+21|0]=d>>>8;F[b+22|0]=d>>>16;F[b+23|0]=d>>>24;d=I[1198]|I[1199]<<8|(I[1200]<<16|I[1201]<<24);c=I[1194]|I[1195]<<8|(I[1196]<<16|I[1197]<<24);F[b+8|0]=c;F[b+9|0]=c>>>8;F[b+10|0]=c>>>16;F[b+11|0]=c>>>24;F[b+12|0]=d;F[b+13|0]=d>>>8;F[b+14|0]=d>>>16;F[b+15|0]=d>>>24;d=I[1190]|I[1191]<<8|(I[1192]<<16|I[1193]<<24);c=I[1186]|I[1187]<<8|(I[1188]<<16|I[1189]<<24);F[b|0]=c;F[b+1|0]=c>>>8;F[b+2|0]=c>>>16;F[b+3|0]=c>>>24;F[b+4|0]=d;F[b+5|0]=d>>>8;F[b+6|0]=d>>>16;F[b+7|0]=d>>>24;F[b+24|0]=0;d=sd(g,p+12|0,p);if(F[p+11|0]<0){oa(H[p>>2])}b=q+1|0;n:{if(d){oe(f,e);break n}g=h+N(q,24)|0;q=H[g+4>>2];c=I[f+24|0];h=c<<2;d=pa(h);H[p>>2]=1065353216;v=L[g+20>>2];q=-1<0){L[p>>2]=v/O(q|0)}if((q|0)<=0){break b}o:{if(!H[e+80>>2]){break o}if(!c){n=0;j=0;while(1){qa(H[H[f+64>>2]>>2]+j|0,d,h);j=h+j|0;n=n+1|0;if(n>>>0>2]){continue}break}break o}o=H[H[e>>2]>>2]+H[e+48>>2]|0;t=c&254;r=c&1;i=0;k=0;j=0;while(1){q=H[g+8>>2];v=L[p>>2];n=0;m=0;if((c|0)!=1){while(1){l=n<<2;s=o+(j<<2)|0;L[l+d>>2]=O(v*O(H[s>>2]))+L[l+q>>2];l=l|4;L[l+d>>2]=O(v*O(H[s+4>>2]))+L[l+q>>2];n=n+2|0;j=j+2|0;m=m+2|0;if((t|0)!=(m|0)){continue}break}}if(r){n=n<<2;L[n+d>>2]=O(v*O(H[o+(j<<2)>>2]))+L[n+q>>2];j=j+1|0}qa(H[H[f+64>>2]>>2]+k|0,d,h);k=h+k|0;i=i+1|0;if(i>>>0>2]){continue}break}}oa(d)}q=b}j=1;w=w+1|0;if((ea[H[H[a>>2]+24>>2]](a)|0)>(w|0)){continue}break a}break}oa(d);j=0}ca=p+16|0;return j|0}function Le(a,b,c){var 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;g=ca+-64|0;ca=g;H[g+56>>2]=0;H[g+48>>2]=0;H[g+52>>2]=0;H[g+40>>2]=0;H[g+44>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;H[g+24>>2]=0;H[g+28>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;j=g+8|0;d=J[b+38>>1];a:{b:{if(!d){break b}c:{if(d>>>0<=511){h=H[b+8>>2];f=H[b+12>>2];e=H[b+20>>2];d=H[b+16>>2];i=d+4|0;e=i>>>0<4?e+1|0:e;if(h>>>0>>0&(e|0)>=(f|0)|(e|0)>(f|0)){break b}d=d+H[b>>2]|0;l=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[j+12>>2]=l;e=H[b+20>>2];d=H[b+16>>2]+4|0;e=d>>>0<4?e+1|0:e;H[b+16>>2]=d;H[b+20>>2]=e;break c}if(!hb(1,j+12|0,b)){break b}d=H[b+16>>2];e=H[b+20>>2];l=H[j+12>>2]}f=H[b+8>>2];i=f-d|0;d=H[b+12>>2]-((d>>>0>f>>>0)+e|0)|0;if(i>>>0>>6>>>0&(d|0)<=0|(d|0)<0){break b}e=H[j>>2];d=H[j+4>>2]-e>>2;d:{if(d>>>0>>0){ya(j,l-d|0);l=H[j+12>>2];break d}if(d>>>0<=l>>>0){break d}H[j+4>>2]=e+(l<<2)}i=1;if(!l){break a}d=H[b+16>>2];e=H[b+20>>2];r=H[j>>2];k=H[b+8>>2];o=H[b+12>>2];h=0;while(1){i=0;if((e|0)>=(o|0)&d>>>0>=k>>>0|(e|0)>(o|0)){break a}i=H[b>>2];p=I[i+d|0];d=d+1|0;e=d?e:e+1|0;H[b+16>>2]=d;H[b+20>>2]=e;f=p>>>2|0;m=0;e:{f:{g:{h:{s=p&3;switch(s|0){case 0:break f;case 3:break h;default:break g}}f=f+h|0;i=0;if(f>>>0>=l>>>0){break a}ra(r+(h<<2)|0,0,(p&252)+4|0);h=f;break e}while(1){if((d|0)==(k|0)&(e|0)==(o|0)){break b}l=I[d+i|0];d=d+1|0;e=d?e:e+1|0;H[b+16>>2]=d;H[b+20>>2]=e;f=l<<(m<<3|6)|f;m=m+1|0;if((s|0)!=(m|0)){continue}break}}H[r+(h<<2)>>2]=f}l=H[j+12>>2];h=h+1|0;if(l>>>0>h>>>0){continue}break}d=j+16|0;o=H[j>>2];f=H[j+16>>2];e=H[j+20>>2]-f|0;i:{if(e>>>0<=4194303){ya(d,1048576-(e>>>2|0)|0);break i}if((e|0)==4194304){break i}H[j+20>>2]=f+4194304}e=j+28|0;h=H[e>>2];f=H[j+32>>2]-h>>3;j:{if(f>>>0>>0){ob(e,l-f|0);h=H[e>>2];break j}if(f>>>0>l>>>0){H[j+32>>2]=(l<<3)+h}if(!l){break b}}k=H[d>>2];d=0;i=0;while(1){e=o+(d<<2)|0;j=H[e>>2];m=(d<<3)+h|0;f=i;H[m+4>>2]=f;H[m>>2]=j;e=H[e>>2];i=e+f|0;if(i>>>0>1048576){break b}k:{if(f>>>0>=i>>>0){break k}m=0;j=e&7;if(j){while(1){H[k+(f<<2)>>2]=d;f=f+1|0;m=m+1|0;if((j|0)!=(m|0)){continue}break}}if(e-1>>>0<=6){break k}while(1){e=k+(f<<2)|0;H[e>>2]=d;H[e+28>>2]=d;H[e+24>>2]=d;H[e+20>>2]=d;H[e+16>>2]=d;H[e+12>>2]=d;H[e+8>>2]=d;H[e+4>>2]=d;f=f+8|0;if((i|0)!=(f|0)){continue}break}}d=d+1|0;if((l|0)!=(d|0)){continue}break}n=(i|0)==1048576}i=n}l:{if(!i|(H[g+20>>2]?0:a)){break l}i=0;n=ca-16|0;ca=n;m:{n:{if(J[b+38>>1]<=511){h=H[b+8>>2];f=H[b+12>>2];j=f;e=H[b+20>>2];k=H[b+16>>2];d=k+8|0;e=d>>>0<8?e+1|0:e;if(d>>>0>h>>>0&(e|0)>=(f|0)|(e|0)>(f|0)){break m}k=k+H[b>>2]|0;f=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);k=I[k+4|0]|I[k+5|0]<<8|(I[k+6|0]<<16|I[k+7|0]<<24);H[b+16>>2]=d;H[b+20>>2]=e;break n}if(!gb(1,n+8|0,b)){break m}d=H[b+16>>2];e=H[b+20>>2];h=H[b+8>>2];j=H[b+12>>2];f=H[n+8>>2];k=H[n+12>>2]}l=h-d|0;h=j-((d>>>0>h>>>0)+e|0)|0;if((h|0)==(k|0)&f>>>0>l>>>0|h>>>0>>0){break m}e=e+k|0;h=d+f|0;e=h>>>0>>0?e+1|0:e;H[b+16>>2]=h;H[b+20>>2]=e;if((f|0)<=0){break m}b=H[b>>2]+d|0;H[g+48>>2]=b;d=f-1|0;e=d+b|0;h=I[e|0];o:{if(h>>>0<=63){H[g+52>>2]=d;b=I[e|0]&63;break o}p:{switch((h>>>6|0)-1|0){case 0:if(f>>>0<2){break m}d=f-2|0;H[g+52>>2]=d;b=b+d|0;b=I[b+1|0]<<8&16128|I[b|0];break o;case 1:if(f>>>0<3){break m}d=f-3|0;H[g+52>>2]=d;b=b+d|0;b=I[b+1|0]<<8|I[b+2|0]<<16&4128768|I[b|0];break o;default:break p}}d=f-4|0;H[g+52>>2]=d;b=b+d|0;b=(I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24))&1073741823}H[g+56>>2]=b+4194304;i=b>>>0<1069547520}ca=n+16|0;if(!i){break l}if(!a){t=1;break l}b=H[g+52>>2];f=H[g+56>>2];d=H[g+36>>2];e=H[g+48>>2];h=H[g+24>>2];while(1){q:{if(f>>>0>4194303){break q}while(1){if((b|0)<=0){break q}b=b-1|0;H[g+52>>2]=b;f=I[b+e|0]|f<<8;H[g+56>>2]=f;if(f>>>0<4194304){continue}break}}i=f&1048575;k=H[h+(i<<2)>>2];n=d+(k<<3)|0;f=(N(H[n>>2],f>>>20|0)+i|0)-H[n+4>>2]|0;H[g+56>>2]=f;H[(q<<2)+c>>2]=k;t=1;q=q+1|0;if((q|0)!=(a|0)){continue}break}}a=H[g+36>>2];if(a){H[g+40>>2]=a;oa(a)}a=H[g+24>>2];if(a){H[g+28>>2]=a;oa(a)}a=H[g+8>>2];if(a){H[g+12>>2]=a;oa(a)}ca=g- -64|0;return t}function nc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=ca-48|0;ca=e;f=J[6677]|J[6678]<<16;d=J[6675]|J[6676]<<16;G[e+38>>1]=d;G[e+40>>1]=d>>>16;G[e+42>>1]=f;G[e+44>>1]=f>>>16;d=H[3337];H[e+32>>2]=H[3336];H[e+36>>2]=d;d=H[3335];H[e+24>>2]=H[3334];H[e+28>>2]=d;d=H[3333];H[e+16>>2]=H[3332];H[e+20>>2]=d;g=H[b+8>>2];i=H[b+12>>2];h=H[b+20>>2];d=H[b+16>>2];f=d+5|0;h=f>>>0<5?h+1|0:h;a:{b:{if(g>>>0>>0&(h|0)>=(i|0)|(h|0)>(i|0)){d=Ma(e+16|0);if(d>>>0>=2147483632){break a}c:{d:{if(d>>>0>=11){b=(d|15)+1|0;c=pa(b);H[e+8>>2]=b|-2147483648;H[e>>2]=c;H[e+4>>2]=d;b=c+d|0;break d}F[e+11|0]=d;b=d+e|0;c=e;if(!d){break c}}qa(c,e+16|0,d)}F[b|0]=0;H[a>>2]=-2;b=a+4|0;if(F[e+11|0]>=0){a=H[e+4>>2];H[b>>2]=H[e>>2];H[b+4>>2]=a;H[b+8>>2]=H[e+8>>2];break b}za(b,H[e>>2],H[e+4>>2]);if(F[e+11|0]>=0){break b}oa(H[e>>2]);break b}f=d+H[b>>2]|0;d=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);F[c|0]=d;F[c+1|0]=d>>>8;F[c+2|0]=d>>>16;F[c+3|0]=d>>>24;F[c+4|0]=I[f+4|0];d=H[b+20>>2];f=H[b+16>>2]+5|0;d=f>>>0<5?d+1|0:d;H[b+16>>2]=f;H[b+20>>2]=d;if(Fa(c,1260,5)){d=pa(32);F[d+17|0]=0;F[d+16|0]=I[1496];c=I[1492]|I[1493]<<8|(I[1494]<<16|I[1495]<<24);b=I[1488]|I[1489]<<8|(I[1490]<<16|I[1491]<<24);F[d+8|0]=b;F[d+9|0]=b>>>8;F[d+10|0]=b>>>16;F[d+11|0]=b>>>24;F[d+12|0]=c;F[d+13|0]=c>>>8;F[d+14|0]=c>>>16;F[d+15|0]=c>>>24;c=I[1484]|I[1485]<<8|(I[1486]<<16|I[1487]<<24);b=I[1480]|I[1481]<<8|(I[1482]<<16|I[1483]<<24);F[d|0]=b;F[d+1|0]=b>>>8;F[d+2|0]=b>>>16;F[d+3|0]=b>>>24;F[d+4|0]=c;F[d+5|0]=c>>>8;F[d+6|0]=c>>>16;F[d+7|0]=c>>>24;H[a>>2]=-1;za(a+4|0,d,17);oa(d);break b}g=H[b+12>>2];if((g|0)<=(d|0)&K[b+8>>2]<=f>>>0|(d|0)>(g|0)){d=Ma(e+16|0);if(d>>>0>=2147483632){break a}e:{f:{if(d>>>0>=11){b=(d|15)+1|0;c=pa(b);H[e+8>>2]=b|-2147483648;H[e>>2]=c;H[e+4>>2]=d;b=c+d|0;break f}F[e+11|0]=d;b=d+e|0;c=e;if(!d){break e}}qa(c,e+16|0,d)}F[b|0]=0;H[a>>2]=-2;b=a+4|0;if(F[e+11|0]>=0){a=H[e+4>>2];H[b>>2]=H[e>>2];H[b+4>>2]=a;H[b+8>>2]=H[e+8>>2];break b}za(b,H[e>>2],H[e+4>>2]);if(F[e+11|0]>=0){break b}oa(H[e>>2]);break b}F[c+5|0]=I[f+H[b>>2]|0];g=H[b+20>>2];d=H[b+16>>2]+1|0;g=d?g:g+1|0;H[b+16>>2]=d;H[b+20>>2]=g;f=H[b+12>>2];if((f|0)<=(g|0)&K[b+8>>2]<=d>>>0|(g|0)>(f|0)){d=Ma(e+16|0);if(d>>>0>=2147483632){break a}g:{h:{if(d>>>0>=11){b=(d|15)+1|0;c=pa(b);H[e+8>>2]=b|-2147483648;H[e>>2]=c;H[e+4>>2]=d;b=c+d|0;break h}F[e+11|0]=d;b=d+e|0;c=e;if(!d){break g}}qa(c,e+16|0,d)}F[b|0]=0;H[a>>2]=-2;b=a+4|0;if(F[e+11|0]>=0){a=H[e+4>>2];H[b>>2]=H[e>>2];H[b+4>>2]=a;H[b+8>>2]=H[e+8>>2];break b}za(b,H[e>>2],H[e+4>>2]);if(F[e+11|0]>=0){break b}oa(H[e>>2]);break b}F[c+6|0]=I[d+H[b>>2]|0];h=H[b+20>>2];d=H[b+16>>2]+1|0;h=d?h:h+1|0;H[b+16>>2]=d;H[b+20>>2]=h;f=H[b+12>>2];if((f|0)<=(h|0)&K[b+8>>2]<=d>>>0|(f|0)<(h|0)){d=Ma(e+16|0);if(d>>>0>=2147483632){break a}i:{j:{if(d>>>0>=11){b=(d|15)+1|0;c=pa(b);H[e+8>>2]=b|-2147483648;H[e>>2]=c;H[e+4>>2]=d;b=c+d|0;break j}F[e+11|0]=d;b=d+e|0;c=e;if(!d){break i}}qa(c,e+16|0,d)}F[b|0]=0;H[a>>2]=-2;b=a+4|0;if(F[e+11|0]>=0){a=H[e+4>>2];H[b>>2]=H[e>>2];H[b+4>>2]=a;H[b+8>>2]=H[e+8>>2];break b}za(b,H[e>>2],H[e+4>>2]);if(F[e+11|0]>=0){break b}oa(H[e>>2]);break b}F[c+7|0]=I[d+H[b>>2]|0];g=H[b+20>>2];d=H[b+16>>2]+1|0;g=d?g:g+1|0;H[b+16>>2]=d;H[b+20>>2]=g;f=H[b+12>>2];if((f|0)<=(g|0)&K[b+8>>2]<=d>>>0|(g|0)>(f|0)){c=mc(e,e+16|0);H[a>>2]=-2;b=a+4|0;if(F[c+11|0]>=0){a=H[c+4>>2];H[b>>2]=H[c>>2];H[b+4>>2]=a;H[b+8>>2]=H[c+8>>2];break b}za(b,H[c>>2],H[c+4>>2]);if(F[c+11|0]>=0){break b}oa(H[c>>2]);break b}F[c+8|0]=I[d+H[b>>2]|0];d=H[b+20>>2];g=H[b+16>>2];f=g+1|0;i=f?d:d+1|0;H[b+16>>2]=f;H[b+20>>2]=i;i=H[b+8>>2];h=H[b+12>>2];g=g+3|0;d=g>>>0<3?d+1|0:d;if(g>>>0>i>>>0&(d|0)>=(h|0)|(d|0)>(h|0)){c=mc(e,e+16|0);H[a>>2]=-2;b=a+4|0;if(F[c+11|0]>=0){a=H[c+4>>2];H[b>>2]=H[c>>2];H[b+4>>2]=a;H[b+8>>2]=H[c+8>>2];break b}za(b,H[c>>2],H[c+4>>2]);if(F[c+11|0]>=0){break b}oa(H[c>>2]);break b}d=c;c=H[b>>2]+f|0;G[d+10>>1]=I[c|0]|I[c+1|0]<<8;g=H[b+20>>2];c=H[b+16>>2]+2|0;g=c>>>0<2?g+1|0:g;H[b+16>>2]=c;H[b+20>>2]=g;H[a+8>>2]=0;H[a+12>>2]=0;H[a>>2]=0;H[a+4>>2]=0}ca=e+48|0;return}Na();v()}function Nb(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0;e=ca-96|0;ca=e;f=H[a+16>>2];F[e+92|0]=1;H[e+88>>2]=b;H[e+84>>2]=b;H[e+80>>2]=f;j=H[a+20>>2];d=H[j>>2];a:{b:{f=H[H[f+28>>2]+(b<<2)>>2];if(f>>>0>2]-d>>2>>>0){d=H[H[a+8>>2]+(H[d+(f<<2)>>2]<<2)>>2];f=H[a+4>>2];if(!I[f+84|0]){d=H[H[f+68>>2]+(d<<2)>>2]}H[e+72>>2]=0;H[e+76>>2]=0;j=e- -64|0;H[j>>2]=0;H[j+4>>2]=0;H[e+56>>2]=0;H[e+60>>2]=0;Sa(f,d,F[f+24|0],e+56|0);if((b|0)!=-1){f=b+1|0;j=(f>>>0)%3|0?f:b-2|0;m=((b>>>0)%3|0?-1:2)+b|0;while(1){d=j;f=m;c:{if(!H[a+28>>2]){break c}f=b+1|0;d=(f>>>0)%3|0?f:b-2|0;f=b-1|0;if((b>>>0)%3|0){break c}f=b+2|0}n=H[a+20>>2];b=H[n>>2];d=H[H[H[a+16>>2]+28>>2]+(d<<2)>>2];if(d>>>0>=H[n+4>>2]-b>>2>>>0){break b}d=H[H[a+8>>2]+(H[b+(d<<2)>>2]<<2)>>2];b=H[a+4>>2];if(!I[b+84|0]){d=H[H[b+68>>2]+(d<<2)>>2]}H[e+48>>2]=0;H[e+52>>2]=0;H[e+40>>2]=0;H[e+44>>2]=0;H[e+32>>2]=0;H[e+36>>2]=0;Sa(b,d,F[b+24|0],e+32|0);d=H[a+20>>2];b=H[d>>2];f=H[H[H[a+16>>2]+28>>2]+(f<<2)>>2];if(f>>>0>=H[d+4>>2]-b>>2>>>0){break a}d=H[H[a+8>>2]+(H[b+(f<<2)>>2]<<2)>>2];b=H[a+4>>2];if(!I[b+84|0]){d=H[H[b+68>>2]+(d<<2)>>2]}H[e+24>>2]=0;H[e+28>>2]=0;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;Sa(b,d,F[b+24|0],e+8|0);g=H[e+8>>2];b=H[e+56>>2];d=g-b|0;p=H[e+60>>2];t=H[e+12>>2]-(p+(b>>>0>g>>>0)|0)|0;h=H[e+40>>2];f=H[e+64>>2];n=h-f|0;u=H[e+68>>2];y=H[e+44>>2]-(u+(f>>>0>h>>>0)|0)|0;g=Rj(d,t,n,y);w=o-g|0;x=i-(da+(g>>>0>o>>>0)|0)|0;i=w;h=H[e+16>>2];g=h-f|0;u=H[e+20>>2]-((f>>>0>h>>>0)+u|0)|0;k=H[e+32>>2];h=k-b|0;w=H[e+36>>2]-((b>>>0>k>>>0)+p|0)|0;b=Rj(g,u,h,w);o=i+b|0;i=da+x|0;i=b>>>0>o>>>0?i+1|0:i;b=l;l=d;p=t;k=H[e+48>>2];f=H[e+72>>2];d=k-f|0;t=H[e+76>>2];x=H[e+52>>2]-(t+(f>>>0>k>>>0)|0)|0;l=Rj(l,p,d,x);k=b+l|0;b=da+q|0;b=k>>>0>>0?b+1|0:b;l=H[e+24>>2];p=l-f|0;f=H[e+28>>2]-((f>>>0>l>>>0)+t|0)|0;q=Rj(p,f,h,w);l=k-q|0;q=b-(da+(k>>>0>>0)|0)|0;b=Rj(g,u,d,x);d=r-b|0;b=s-(da+(b>>>0>r>>>0)|0)|0;s=Rj(p,f,n,y);r=s+d|0;b=da+b|0;s=r>>>0>>0?b+1|0:b;b=H[e+88>>2];f=H[e+80>>2];d:{if(I[e+92|0]){e:{f:{g:{h:{if((b|0)==-1){break h}d=b+1|0;b=(d>>>0)%3|0?d:b-2|0;if((b|0)==-1|H[H[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break h}b=H[H[H[f+64>>2]+12>>2]+(b<<2)>>2];if((b|0)!=-1){break g}}H[e+88>>2]=-1;break f}d=b+1|0;b=(d>>>0)%3|0?d:b-2|0;H[e+88>>2]=b;if((b|0)!=-1){break e}}b=H[e+84>>2];d=-1;i:{if((b|0)==-1){break i}j:{if((b>>>0)%3|0){b=b-1|0;break j}b=b+2|0;d=-1;if((b|0)==-1){break i}}d=-1;if(H[H[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break i}b=H[H[H[f+64>>2]+12>>2]+(b<<2)>>2];d=-1;if((b|0)==-1){break i}d=b-1|0;if((b>>>0)%3|0){break i}d=b+2|0}F[e+92|0]=0;H[e+88>>2]=d;break d}if((b|0)!=H[e+84>>2]){break d}H[e+88>>2]=-1;break d}d=-1;k:{if((b|0)==-1){break k}l:{if((b>>>0)%3|0){b=b-1|0;break l}b=b+2|0;d=-1;if((b|0)==-1){break k}}d=-1;if(H[H[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break k}b=H[H[H[f+64>>2]+12>>2]+(b<<2)>>2];d=-1;if((b|0)==-1){break k}d=b-1|0;if((b>>>0)%3|0){break k}d=b+2|0}H[e+88>>2]=d}b=H[e+88>>2];if((b|0)!=-1){continue}break}}b=s>>31;f=b^r;d=f-b|0;b=(b^s)-((b>>>0>f>>>0)+b|0)|0;m=-1;f=2147483647;g=q>>31;h=g^l;j=h-g|0;n=(g^q)-((h>>>0>>0)+g|0)|0;h=n;k=j^-1;g=h^2147483647;n=i;m:{n:{if(!H[a+28>>2]){if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break m}b=b+h|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;f=a;g=i;a=g>>31;d=a;m=d^o;a=m-d|0;i=a;d=(d^g)-((d>>>0>m>>>0)+d|0)|0;a=a+f|0;d=d^2147483647;i=(d|0)==(b|0)&(i^-1)>>>0>>0|b>>>0>d>>>0;a=i?-1:a;if(!(i&0)&(a|0)<=536870912|(a|0)<536870912){break m}b=0;a=a>>>29|0;break n}o:{if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break o}b=b+h|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;k=i;d=i>>31;h=d^o;i=h-d|0;j=(d^k)-((d>>>0>h>>>0)+d|0)|0;g=j^2147483647;d=a;a=i;if((g|0)==(b|0)&d>>>0>(a^-1)>>>0|b>>>0>g>>>0){break o}b=b+j|0;m=a+d|0;b=m>>>0>>0?b+1|0:b;f=b;if(!b&m>>>0<536870913){break m}}b=f>>>29|0;a=(f&536870911)<<3|m>>>29}o=Sj(o,n,a,b);l=Sj(l,q,a,b);r=Sj(r,s,a,b)}H[c+8>>2]=o;H[c+4>>2]=l;H[c>>2]=r;ca=e+96|0;return}Ca();v()}Ca();v()}Ca();v()}function Jj(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;H[a+8>>2]=e;r=a+32|0;g=H[r>>2];f=H[a+36>>2]-g>>2;a:{if(f>>>0>>0){ya(r,e-f|0);d=H[a+8>>2];break a}d=e;if(d>>>0>=f>>>0){break a}H[a+36>>2]=g+(e<<2);d=e}w=e<<2;f=e>>>0>1073741823?-1:w;m=ra(pa(f),0,f);p=ra(pa(f),0,f);b:{if((d|0)<=0){break b}i=H[a+32>>2];while(1){d=h<<2;f=H[d+m>>2];g=H[a+16>>2];c:{if((f|0)>(g|0)){H[d+i>>2]=g;break c}d=d+i|0;g=H[a+12>>2];if((g|0)>(f|0)){H[d>>2]=g;break c}H[d>>2]=f}d=H[a+8>>2];h=h+1|0;if((d|0)>(h|0)){continue}break}if((d|0)<=0){break b}f=0;while(1){g=f<<2;d=g+c|0;g=H[b+g>>2]+H[g+i>>2]|0;H[d>>2]=g;d:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break d}g=g+H[a+20>>2]|0}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}f=H[a+56>>2];x=H[f>>2];f=H[f+4>>2]-x|0;if((f|0)>=5){D=H[a+52>>2];s=H[a+48>>2];u=f>>>2|0;E=u>>>0<=2?2:u;y=e&-2;z=e&1;F=e&-4;A=e&3;B=e-1|0;n=1;while(1){e:{f:{g:{h:{if((n|0)!=(u|0)){g=H[(n<<2)+x>>2];t=(e|0)<=0;if(!t){ra(m,0,w)}if((g|0)==-1){i=N(e,n);break f}C=H[s>>2];l=0;f=g;while(1){i:{if(H[(f>>>3&536870908)+C>>2]>>>f&1){break i}i=H[H[H[s+64>>2]+12>>2]+(f<<2)>>2];if((i|0)==-1){break i}j=H[D>>2];h=H[s+28>>2];o=H[j+(H[h+(i<<2)>>2]<<2)>>2];if((o|0)>=(n|0)){break i}k=i+1|0;k=H[j+(H[h+(((k>>>0)%3|0?k:i-2|0)<<2)>>2]<<2)>>2];if((k|0)>=(n|0)){break i}i=H[j+(H[h+(i+((i>>>0)%3|0?-1:2)<<2)>>2]<<2)>>2];if((i|0)>=(n|0)){break i}j:{if(t){break j}i=N(e,i);j=N(e,k);o=N(e,o);h=0;q=0;if(B){while(1){H[(h<<2)+p>>2]=(H[(h+i<<2)+c>>2]+H[(h+j<<2)+c>>2]|0)-H[(h+o<<2)+c>>2];k=h|1;H[(k<<2)+p>>2]=(H[(i+k<<2)+c>>2]+H[(j+k<<2)+c>>2]|0)-H[(k+o<<2)+c>>2];h=h+2|0;q=q+2|0;if((y|0)!=(q|0)){continue}break}}if(z){H[(h<<2)+p>>2]=(H[(h+i<<2)+c>>2]+H[(h+j<<2)+c>>2]|0)-H[(h+o<<2)+c>>2]}if(t){break j}o=0;h=0;i=0;if(e>>>0>3){while(1){j=h<<2;k=j+m|0;H[k>>2]=H[j+p>>2]+H[k>>2];k=j|4;q=k+m|0;H[q>>2]=H[k+p>>2]+H[q>>2];k=j|8;q=k+m|0;H[q>>2]=H[k+p>>2]+H[q>>2];j=j|12;k=j+m|0;H[k>>2]=H[j+p>>2]+H[k>>2];h=h+4|0;i=i+4|0;if((F|0)!=(i|0)){continue}break}}if(!A){break j}while(1){i=h<<2;j=i+m|0;H[j>>2]=H[i+p>>2]+H[j>>2];h=h+1|0;o=o+1|0;if((A|0)!=(o|0)){continue}break}}l=l+1|0}k:{l:{if((f>>>0)%3|0){h=f-1|0;break l}h=f+2|0;i=-1;if((h|0)==-1){break k}}i=-1;if(H[(h>>>3&536870908)+C>>2]>>>h&1){break k}f=H[H[H[s+64>>2]+12>>2]+(h<<2)>>2];i=-1;if((f|0)==-1){break k}i=f-1|0;if((f>>>0)%3|0){break k}i=f+2|0}f=i;if((g|0)!=(f|0)&(f|0)!=-1){continue}break}i=N(e,n);if(!l){break f}if(t){break g}h=0;f=0;if(!B){break h}while(1){g=h<<2;j=g+m|0;H[j>>2]=H[j>>2]/(l|0);g=(g|4)+m|0;H[g>>2]=H[g>>2]/(l|0);h=h+2|0;f=f+2|0;if((y|0)!=(f|0)){continue}break}break h}Ca();v()}if(!z){break g}f=(h<<2)+m|0;H[f>>2]=H[f>>2]/(l|0)}if((d|0)<=0){break e}l=H[r>>2];h=0;while(1){d=h<<2;f=H[d+m>>2];g=H[a+16>>2];m:{if((f|0)>(g|0)){H[d+l>>2]=g;break m}d=d+l|0;g=H[a+12>>2];if((g|0)>(f|0)){H[d>>2]=g;break m}H[d>>2]=f}d=H[a+8>>2];h=h+1|0;if((d|0)>(h|0)){continue}break}f=0;if((d|0)<=0){break e}d=i<<2;i=d+c|0;h=b+d|0;while(1){g=f<<2;d=g+i|0;g=H[h+g>>2]+H[g+l>>2]|0;H[d>>2]=g;n:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break n}g=g+H[a+20>>2]|0}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}break e}if((d|0)<=0){break e}g=(N(n-1|0,e)<<2)+c|0;l=H[r>>2];h=0;while(1){d=h<<2;f=H[d+g>>2];j=H[a+16>>2];o:{if((f|0)>(j|0)){H[d+l>>2]=j;break o}d=d+l|0;j=H[a+12>>2];if((j|0)>(f|0)){H[d>>2]=j;break o}H[d>>2]=f}d=H[a+8>>2];h=h+1|0;if((d|0)>(h|0)){continue}break}f=0;if((d|0)<=0){break e}d=i<<2;i=d+c|0;h=b+d|0;while(1){g=f<<2;d=g+i|0;g=H[h+g>>2]+H[g+l>>2]|0;H[d>>2]=g;p:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break p}g=g+H[a+20>>2]|0}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}n=n+1|0;if((E|0)!=(n|0)){continue}break}}oa(p);oa(m);return 1}function sj(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;H[a+8>>2]=e;r=a+32|0;f=H[r>>2];j=H[a+36>>2]-f>>2;a:{if(j>>>0>>0){ya(r,e-j|0);d=H[a+8>>2];break a}d=e;if(e>>>0>=j>>>0){break a}H[a+36>>2]=f+(e<<2);d=e}u=e<<2;f=e>>>0>1073741823?-1:u;m=ra(pa(f),0,f);p=ra(pa(f),0,f);b:{if((d|0)<=0){break b}i=H[a+32>>2];while(1){f=h<<2;j=H[f+m>>2];d=H[a+16>>2];c:{if((j|0)>(d|0)){H[f+i>>2]=d;break c}f=f+i|0;d=H[a+12>>2];if((d|0)>(j|0)){H[f>>2]=d;break c}H[f>>2]=j}d=H[a+8>>2];h=h+1|0;if((d|0)>(h|0)){continue}break}if((d|0)<=0){break b}f=0;while(1){j=f<<2;d=j+c|0;j=H[b+j>>2]+H[j+i>>2]|0;H[d>>2]=j;d:{if((j|0)>H[a+16>>2]){j=j-H[a+20>>2]|0}else{if((j|0)>=H[a+12>>2]){break d}j=j+H[a+20>>2]|0}H[d>>2]=j}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}f=H[a+56>>2];w=H[f>>2];f=H[f+4>>2]-w|0;if((f|0)>=5){D=H[a+52>>2];x=H[a+48>>2];t=f>>>2|0;E=t>>>0<=2?2:t;y=e&-2;z=e&1;F=e&-4;A=e&3;B=e-1|0;n=1;while(1){e:{f:{g:{h:{if((n|0)!=(t|0)){j=H[(n<<2)+w>>2];s=(e|0)<=0;if(!s){ra(m,0,u)}if((j|0)==-1){g=N(e,n);break f}C=H[x+12>>2];q=0;f=j;while(1){h=H[(f<<2)+C>>2];i:{if((h|0)==-1){break i}o=H[D>>2];l=H[x>>2];k=H[o+(H[l+(h<<2)>>2]<<2)>>2];i=h+1|0;i=(i>>>0)%3|0?i:h-2|0;if((i|0)!=-1){g=H[l+(i<<2)>>2]}else{g=-1}j:{k:{if((h>>>0)%3|0){h=h-1|0;break k}h=h+2|0;i=-1;if((h|0)==-1){break j}}i=H[l+(h<<2)>>2]}if((k|0)>=(n|0)){break i}g=H[(g<<2)+o>>2];if((g|0)>=(n|0)){break i}i=H[o+(i<<2)>>2];if((i|0)>=(n|0)){break i}l:{if(s){break l}l=N(e,i);o=N(e,g);k=N(e,k);h=0;i=0;if(B){while(1){H[(h<<2)+p>>2]=(H[(h+l<<2)+c>>2]+H[(h+o<<2)+c>>2]|0)-H[(h+k<<2)+c>>2];g=h|1;H[(g<<2)+p>>2]=(H[(g+l<<2)+c>>2]+H[(g+o<<2)+c>>2]|0)-H[(g+k<<2)+c>>2];h=h+2|0;i=i+2|0;if((y|0)!=(i|0)){continue}break}}if(z){H[(h<<2)+p>>2]=(H[(h+l<<2)+c>>2]+H[(h+o<<2)+c>>2]|0)-H[(h+k<<2)+c>>2]}if(s){break l}o=0;h=0;k=0;if(e>>>0>3){while(1){l=h<<2;i=l+m|0;H[i>>2]=H[l+p>>2]+H[i>>2];g=l|4;i=g+m|0;H[i>>2]=H[g+p>>2]+H[i>>2];g=l|8;i=g+m|0;H[i>>2]=H[g+p>>2]+H[i>>2];g=l|12;i=g+m|0;H[i>>2]=H[g+p>>2]+H[i>>2];h=h+4|0;k=k+4|0;if((F|0)!=(k|0)){continue}break}}if(!A){break l}while(1){g=h<<2;i=g+m|0;H[i>>2]=H[g+p>>2]+H[i>>2];h=h+1|0;o=o+1|0;if((A|0)!=(o|0)){continue}break}}q=q+1|0}m:{n:{if((f>>>0)%3|0){h=f-1|0;break n}h=f+2|0;g=-1;if((h|0)==-1){break m}}f=H[(h<<2)+C>>2];g=-1;if((f|0)==-1){break m}g=f-1|0;if((f>>>0)%3|0){break m}g=f+2|0}f=g;if((j|0)!=(f|0)&(f|0)!=-1){continue}break}g=N(e,n);if(!q){break f}if(s){break g}h=0;f=0;if(!B){break h}while(1){i=h<<2;j=i+m|0;H[j>>2]=H[j>>2]/(q|0);j=(i|4)+m|0;H[j>>2]=H[j>>2]/(q|0);h=h+2|0;f=f+2|0;if((y|0)!=(f|0)){continue}break}break h}Ca();v()}if(!z){break g}f=(h<<2)+m|0;H[f>>2]=H[f>>2]/(q|0)}if((d|0)<=0){break e}k=H[r>>2];h=0;while(1){f=h<<2;j=H[f+m>>2];d=H[a+16>>2];o:{if((j|0)>(d|0)){H[f+k>>2]=d;break o}f=f+k|0;d=H[a+12>>2];if((d|0)>(j|0)){H[f>>2]=d;break o}H[f>>2]=j}d=H[a+8>>2];h=h+1|0;if((d|0)>(h|0)){continue}break}f=0;if((d|0)<=0){break e}d=g<<2;i=d+c|0;j=b+d|0;while(1){g=f<<2;d=g+i|0;g=H[g+j>>2]+H[g+k>>2]|0;H[d>>2]=g;p:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break p}g=g+H[a+20>>2]|0}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}break e}if((d|0)<=0){break e}f=(N(n-1|0,e)<<2)+c|0;k=H[r>>2];h=0;while(1){j=h<<2;i=H[j+f>>2];d=H[a+16>>2];q:{if((i|0)>(d|0)){H[j+k>>2]=d;break q}j=j+k|0;d=H[a+12>>2];if((d|0)>(i|0)){H[j>>2]=d;break q}H[j>>2]=i}d=H[a+8>>2];h=h+1|0;if((d|0)>(h|0)){continue}break}f=0;if((d|0)<=0){break e}d=g<<2;i=d+c|0;j=b+d|0;while(1){g=f<<2;d=g+i|0;g=H[g+j>>2]+H[g+k>>2]|0;H[d>>2]=g;r:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break r}g=g+H[a+20>>2]|0}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}n=n+1|0;if((E|0)!=(n|0)){continue}break}}oa(p);oa(m);return 1}function xa(a){var 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;f=ca-32|0;ca=f;a:{b=H[a+16>>2];b:{if(b>>>0>=341){H[a+16>>2]=b-341;b=H[a+4>>2];j=H[b>>2];c=b+4|0;H[a+4>>2]=c;b=H[a+8>>2];c:{if((b|0)!=H[a+12>>2]){d=b;break c}k=H[a>>2];if(k>>>0>>0){e=((c-k>>2)+1|0)/-2<<2;b=b-c|0;d=va(e+c|0,c,b)+b|0;H[a+8>>2]=d;H[a+4>>2]=e+H[a+4>>2];break c}d=(b|0)==(k|0)?1:b-k>>1;if(d>>>0>=1073741824){break a}e=d<<2;h=pa(e);l=e+h|0;e=h+(d&-4)|0;d=e;d:{if((b|0)==(c|0)){break d}b=b-c|0;m=b&-4;i=b-4|0;g=(i>>>2|0)+1&7;e:{if(!g){b=e;break e}d=0;b=e;while(1){H[b>>2]=H[c>>2];c=c+4|0;b=b+4|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}d=e+m|0;if(i>>>0<28){break d}while(1){H[b>>2]=H[c>>2];H[b+4>>2]=H[c+4>>2];H[b+8>>2]=H[c+8>>2];H[b+12>>2]=H[c+12>>2];H[b+16>>2]=H[c+16>>2];H[b+20>>2]=H[c+20>>2];H[b+24>>2]=H[c+24>>2];H[b+28>>2]=H[c+28>>2];c=c+32|0;b=b+32|0;if((d|0)!=(b|0)){continue}break}}H[a+12>>2]=l;H[a+8>>2]=d;H[a+4>>2]=e;H[a>>2]=h;if(!k){break c}oa(k);d=H[a+8>>2]}H[d>>2]=j;H[a+8>>2]=H[a+8>>2]+4;break b}c=H[a+8>>2];b=H[a+4>>2];l=c-b|0;h=l>>2;g=H[a+12>>2];d=H[a>>2];e=g-d|0;if(h>>>0>2>>>0){if((c|0)!=(g|0)){n=f,o=pa(4092),H[n+8>>2]=o;d=a;f:{g:{b=H[a+8>>2];h:{if((b|0)!=H[a+12>>2]){e=b;break h}c=H[d+4>>2];h=H[d>>2];if(c>>>0>h>>>0){g=((c-h>>2)+1|0)/-2<<2;a=b-c|0;e=va(g+c|0,c,a)+a|0;H[d+8>>2]=e;H[d+4>>2]=g+H[d+4>>2];break h}e=(b|0)==(h|0)?1:b-h>>1;if(e>>>0>=1073741824){break g}a=e<<2;j=pa(a);l=a+j|0;a=j+(e&-4)|0;e=a;i:{if((b|0)==(c|0)){break i}b=b-c|0;m=b&-4;i=b-4|0;g=(i>>>2|0)+1&7;j:{if(!g){b=a;break j}e=0;b=a;while(1){H[b>>2]=H[c>>2];c=c+4|0;b=b+4|0;e=e+1|0;if((g|0)!=(e|0)){continue}break}}e=a+m|0;if(i>>>0<28){break i}while(1){H[b>>2]=H[c>>2];H[b+4>>2]=H[c+4>>2];H[b+8>>2]=H[c+8>>2];H[b+12>>2]=H[c+12>>2];H[b+16>>2]=H[c+16>>2];H[b+20>>2]=H[c+20>>2];H[b+24>>2]=H[c+24>>2];H[b+28>>2]=H[c+28>>2];c=c+32|0;b=b+32|0;if((e|0)!=(b|0)){continue}break}}H[d+12>>2]=l;H[d+8>>2]=e;H[d+4>>2]=a;H[d>>2]=j;if(!h){break h}oa(h);e=H[d+8>>2]}H[e>>2]=H[f+8>>2];H[d+8>>2]=H[d+8>>2]+4;break f}wa();v()}break b}n=f,o=pa(4092),H[n+8>>2]=o;qd(a,f+8|0);b=H[a+4>>2];j=H[b>>2];c=b+4|0;H[a+4>>2]=c;b=H[a+8>>2];k:{if((b|0)!=H[a+12>>2]){d=b;break k}k=H[a>>2];if(k>>>0>>0){e=((c-k>>2)+1|0)/-2<<2;b=b-c|0;d=va(e+c|0,c,b)+b|0;H[a+8>>2]=d;H[a+4>>2]=e+H[a+4>>2];break k}d=(b|0)==(k|0)?1:b-k>>1;if(d>>>0>=1073741824){break a}e=d<<2;h=pa(e);l=e+h|0;e=h+(d&-4)|0;d=e;l:{if((b|0)==(c|0)){break l}b=b-c|0;m=b&-4;i=b-4|0;g=(i>>>2|0)+1&7;m:{if(!g){b=e;break m}d=0;b=e;while(1){H[b>>2]=H[c>>2];c=c+4|0;b=b+4|0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}d=e+m|0;if(i>>>0<28){break l}while(1){H[b>>2]=H[c>>2];H[b+4>>2]=H[c+4>>2];H[b+8>>2]=H[c+8>>2];H[b+12>>2]=H[c+12>>2];H[b+16>>2]=H[c+16>>2];H[b+20>>2]=H[c+20>>2];H[b+24>>2]=H[c+24>>2];H[b+28>>2]=H[c+28>>2];c=c+32|0;b=b+32|0;if((d|0)!=(b|0)){continue}break}}H[a+12>>2]=l;H[a+8>>2]=d;H[a+4>>2]=e;H[a>>2]=h;if(!k){break k}oa(k);d=H[a+8>>2]}H[d>>2]=j;H[a+8>>2]=H[a+8>>2]+4;break b}H[f+24>>2]=a+12;m=(d|0)==(g|0)?1:e>>1;if(m>>>0>=1073741824){break a}e=m<<2;g=pa(e);H[f+8>>2]=g;j=e+g|0;H[f+20>>2]=j;d=(h<<2)+g|0;H[f+12>>2]=d;i=pa(4092);n:{if((h|0)!=(m|0)){break n}if((l|0)>0){d=((h+1|0)/-2<<2)+d|0;H[f+12>>2]=d;break n}d=(b|0)==(c|0)?1:l>>1;if(d>>>0>=1073741824){break a}b=d<<2;e=pa(b);H[f+8>>2]=e;j=b+e|0;H[f+20>>2]=j;d=e+(d&-4)|0;H[f+12>>2]=d;oa(g);b=H[a+4>>2];c=H[a+8>>2];g=e}H[d>>2]=i;i=d+4|0;H[f+16>>2]=i;e=b;if((b|0)!=(c|0)){while(1){c=c-4|0;qd(f+8|0,c);if(H[a+4>>2]!=(c|0)){continue}break}j=H[f+20>>2];i=H[f+16>>2];d=H[f+12>>2];g=H[f+8>>2];e=c;b=H[a+8>>2]}c=H[a>>2];H[a>>2]=g;H[f+8>>2]=c;H[a+4>>2]=d;H[f+12>>2]=e;H[a+8>>2]=i;H[f+16>>2]=b;d=H[a+12>>2];H[a+12>>2]=j;H[f+20>>2]=d;if((b|0)!=(e|0)){H[f+16>>2]=((e-b|0)+3&-4)+b}if(!c){break b}oa(c)}ca=f+32|0;return}wa();v()}function Aj(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=O(0),j=0,k=0,l=0,m=O(0),n=O(0),o=O(0),p=O(0),q=O(0),r=0,s=O(0),t=O(0),u=O(0),w=O(0),x=0,y=O(0),z=O(0),A=O(0),B=0;a:{b:{if((e|0)!=2){break b}H[a+64>>2]=f;H[a+72>>2]=2;e=pa(8);d=H[a+68>>2];H[a+68>>2]=e;if(d){oa(d)}H[a+8>>2]=2;x=a+32|0;e=H[x>>2];d=H[a+36>>2]-e|0;c:{if(d>>>0<=7){ya(x,2-(d>>>2|0)|0);break c}if((d|0)==8){break c}H[a+36>>2]=e+8}h=1;d=H[a+56>>2];d=H[d+4>>2]-H[d>>2]|0;if((d|0)<=0){break b}d=d>>>2|0;B=d>>>0<=1?1:d;d=0;while(1){e=H[a+56>>2];h=H[e>>2];if(H[e+4>>2]-h>>2>>>0<=d>>>0){break a}q=O(0);g=ca-48|0;ca=g;e=-1;h=H[h+(d<<2)>>2];f=-1;d:{if((h|0)==-1){break d}e=h+1|0;e=(e>>>0)%3|0?e:h-2|0;f=h-1|0;if((h>>>0)%3|0){break d}f=h+2|0}j=H[a+52>>2];h=H[j>>2];e:{f:{j=H[j+4>>2]-h>>2;l=e<<2;e=H[H[a+48>>2]+28>>2];r=H[l+e>>2];if(j>>>0<=r>>>0){break f}e=H[e+(f<<2)>>2];if(e>>>0>=j>>>0){break f}j=H[h+(e<<2)>>2];f=H[h+(r<<2)>>2];g:{if(!((j|0)>=(d|0)|(f|0)>=(d|0))){e=H[a+72>>2];h=(N(e,j)<<2)+c|0;m=O(H[h+4>>2]);e=(N(e,f)<<2)+c|0;p=O(H[e+4>>2]);y=O(H[e>>2]);n=O(H[h>>2]);if(!(y!=n|m!=p)){h=+m>2147483647;e=H[a+68>>2];if(O(P(m))>2]=m2147483647;if(O(P(n))>2]=n>2]+(d<<2)>>2];H[g+40>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;h=H[a+60>>2];if(!I[h+84|0]){e=H[H[h+68>>2]+(e<<2)>>2]}Va(h,e,F[h+24|0],g+32|0);f=H[H[a+64>>2]+(f<<2)>>2];H[g+24>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;e=H[a+60>>2];if(!I[e+84|0]){f=H[H[e+68>>2]+(f<<2)>>2]}Va(e,f,F[e+24|0],g+16|0);f=H[H[a+64>>2]+(j<<2)>>2];H[g+8>>2]=0;H[g>>2]=0;H[g+4>>2]=0;e=H[a+60>>2];if(!I[e+84|0]){f=H[H[e+68>>2]+(f<<2)>>2]}Va(e,f,F[e+24|0],g);o=L[g+24>>2];s=O(L[g+8>>2]-o);t=L[g+20>>2];u=O(L[g+4>>2]-t);A=L[g+16>>2];w=O(L[g>>2]-A);z=O(O(s*s)+O(O(u*u)+O(O(w*w)+O(0))));h:{if(H[a+88>>2]>=258){i=O(0);if(!(z>O(0))){break h}}i=O(L[g+40>>2]-o);o=O(L[g+36>>2]-t);t=O(L[g+32>>2]-A);q=O(O(O(s*i)+O(O(u*o)+O(O(w*t)+O(0))))/z);i=O(i-O(s*q));s=O(i*i);i=O(o-O(u*q));o=O(i*i);i=O(t-O(w*q));i=O(W(O(O(s+O(o+O(O(i*i)+O(0))))/z)))}f=H[a+80>>2];if(f){e=f-1|0;h=H[H[a+76>>2]+(e>>>3&536870908)>>2];H[a+80>>2]=e;m=O(m-p);o=O(O(m*q)+p);n=O(n-y);p=O(n*i);e=h>>>e&1;p=O(o+(e?p:O(-p)));i=O(i*m);k=T(+O(O(O(n*q)+y)+(e?O(-i):i))+.5);i:{if(k<-2147483648|k!=k|k>2147483647){e=H[a+68>>2];H[e>>2]=-2147483648;break i}e=H[a+68>>2];if(P(k)<2147483648){h=~~k}else{h=-2147483648}H[e>>2]=h}k=T(+p+.5);j=k>2147483647;if(P(k)<2147483648){h=~~k}else{h=-2147483648}H[e+4>>2]=k<-2147483648?-2147483648:k!=k?-2147483648:j?-2147483648:h}f=(f|0)!=0;break g}j:{if((d|0)>(f|0)){e=H[a+72>>2];h=N(f,e);break j}if((d|0)<=0){f=1;if(H[a+72>>2]<=0){break g}h=H[a+68>>2];e=0;while(1){H[h+(e<<2)>>2]=0;e=e+1|0;if((e|0)>2]){continue}break}break g}e=H[a+72>>2];h=N(e,d-1|0)}f=1;if((e|0)<=0){break g}j=H[a+68>>2];e=0;while(1){H[j+(e<<2)>>2]=H[(e+h<<2)+c>>2];e=e+1|0;if((e|0)>2]){continue}break}}ca=g+48|0;break e}Ca();v()}h=f;if(!h){return 0}k:{if(H[a+8>>2]<=0){break k}r=H[a+68>>2];j=H[x>>2];e=0;while(1){f=e<<2;g=H[f+r>>2];l=H[a+16>>2];l:{if((g|0)>(l|0)){H[f+j>>2]=l;break l}f=f+j|0;l=H[a+12>>2];if((l|0)>(g|0)){H[f>>2]=l;break l}H[f>>2]=g}e=e+1|0;g=H[a+8>>2];if((e|0)<(g|0)){continue}break}f=0;if((g|0)<=0){break k}e=d<<3;r=e+c|0;l=b+e|0;while(1){g=f<<2;e=g+r|0;g=H[g+l>>2]+H[g+j>>2]|0;H[e>>2]=g;m:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break m}g=g+H[a+20>>2]|0}H[e>>2]=g}f=f+1|0;if((f|0)>2]){continue}break}}d=d+1|0;if((B|0)!=(d|0)){continue}break}}return h|0}Ca();v()}function kj(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=O(0),j=0,k=0,l=O(0),m=O(0),n=O(0),o=O(0),p=0,q=O(0),r=O(0),s=O(0),t=O(0),u=O(0),w=0,x=O(0),y=O(0),z=0,A=O(0),B=0;a:{b:{if((e|0)!=2){break b}H[a+64>>2]=f;H[a+72>>2]=2;e=pa(8);d=H[a+68>>2];H[a+68>>2]=e;if(d){oa(d)}H[a+8>>2]=2;w=a+32|0;e=H[w>>2];d=H[a+36>>2]-e|0;c:{if(d>>>0<=7){ya(w,2-(d>>>2|0)|0);break c}if((d|0)==8){break c}H[a+36>>2]=e+8}h=1;d=H[a+56>>2];d=H[d+4>>2]-H[d>>2]|0;if((d|0)<=0){break b}d=d>>>2|0;B=d>>>0<=1?1:d;d=0;while(1){f=H[a+56>>2];e=H[f>>2];if(H[f+4>>2]-e>>2>>>0<=d>>>0){break a}q=O(0);g=ca-48|0;ca=g;h=-1;d:{e:{e=H[e+(d<<2)>>2];if((e|0)==-1){break e}j=H[a+48>>2];f=e+1|0;f=(f>>>0)%3|0?f:e-2|0;if((f|0)!=-1){h=H[H[j>>2]+(f<<2)>>2]}f=-1;e=e+((e>>>0)%3|0?-1:2)|0;if((e|0)!=-1){f=H[H[j>>2]+(e<<2)>>2]}e=H[a+52>>2];j=H[e>>2];e=H[e+4>>2]-j>>2;if(e>>>0<=h>>>0|e>>>0<=f>>>0){break e}e=H[j+(h<<2)>>2];j=H[j+(f<<2)>>2];f:{if(!((d|0)<=(e|0)|(j|0)>=(d|0))){f=H[a+72>>2];h=(N(f,j)<<2)+c|0;l=O(H[h+4>>2]);f=(N(e,f)<<2)+c|0;o=O(H[f+4>>2]);x=O(H[f>>2]);m=O(H[h>>2]);if(!(x!=m|l!=o)){h=+l>2147483647;e=H[a+68>>2];if(O(P(l))>2]=l2147483647;if(O(P(m))>2]=m>2]+(d<<2)>>2];H[g+40>>2]=0;H[g+32>>2]=0;H[g+36>>2]=0;h=H[a+60>>2];if(!I[h+84|0]){f=H[H[h+68>>2]+(f<<2)>>2]}Va(h,f,F[h+24|0],g+32|0);f=H[H[a+64>>2]+(e<<2)>>2];H[g+24>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;e=H[a+60>>2];if(!I[e+84|0]){f=H[H[e+68>>2]+(f<<2)>>2]}Va(e,f,F[e+24|0],g+16|0);h=H[H[a+64>>2]+(j<<2)>>2];H[g+8>>2]=0;H[g>>2]=0;H[g+4>>2]=0;e=H[a+60>>2];if(!I[e+84|0]){h=H[H[e+68>>2]+(h<<2)>>2]}Va(e,h,F[e+24|0],g);n=L[g+24>>2];r=O(L[g+8>>2]-n);s=L[g+20>>2];t=O(L[g+4>>2]-s);A=L[g+16>>2];u=O(L[g>>2]-A);y=O(O(r*r)+O(O(t*t)+O(O(u*u)+O(0))));g:{if(H[a+88>>2]>=258){i=O(0);if(!(y>O(0))){break g}}i=O(L[g+40>>2]-n);n=O(L[g+36>>2]-s);s=O(L[g+32>>2]-A);q=O(O(O(r*i)+O(O(t*n)+O(O(u*s)+O(0))))/y);i=O(i-O(r*q));r=O(i*i);i=O(n-O(t*q));n=O(i*i);i=O(s-O(u*q));i=O(W(O(O(r+O(n+O(O(i*i)+O(0))))/y)))}e=H[a+80>>2];if(e){f=e-1|0;h=H[H[a+76>>2]+(f>>>3&536870908)>>2];H[a+80>>2]=f;l=O(l-o);n=O(O(l*q)+o);m=O(m-x);o=O(m*i);f=h>>>f&1;o=O(n+(f?o:O(-o)));i=O(i*l);k=T(+O(O(O(m*q)+x)+(f?O(-i):i))+.5);h:{if(k<-2147483648|k!=k|k>2147483647){h=H[a+68>>2];H[h>>2]=-2147483648;break h}h=H[a+68>>2];if(P(k)<2147483648){f=~~k}else{f=-2147483648}H[h>>2]=f}k=T(+o+.5);j=k>2147483647;if(P(k)<2147483648){f=~~k}else{f=-2147483648}H[h+4>>2]=k<-2147483648?-2147483648:k!=k?-2147483648:j?-2147483648:f}h=(e|0)!=0;break f}i:{if((d|0)>(e|0)){f=H[a+72>>2];e=N(e,f);break i}if((d|0)<=0){h=1;if(H[a+72>>2]<=0){break f}e=H[a+68>>2];f=0;while(1){H[e+(f<<2)>>2]=0;f=f+1|0;if((f|0)>2]){continue}break}break f}f=H[a+72>>2];e=N(f,d-1|0)}h=1;if((f|0)<=0){break f}j=H[a+68>>2];f=0;while(1){H[j+(f<<2)>>2]=H[(e+f<<2)+c>>2];f=f+1|0;if((f|0)>2]){continue}break}}ca=g+48|0;break d}Ca();v()}if(!h){return 0}j:{if(H[a+8>>2]<=0){break j}z=H[a+68>>2];j=H[w>>2];e=0;while(1){f=e<<2;g=H[f+z>>2];p=H[a+16>>2];k:{if((g|0)>(p|0)){H[f+j>>2]=p;break k}f=f+j|0;p=H[a+12>>2];if((p|0)>(g|0)){H[f>>2]=p;break k}H[f>>2]=g}e=e+1|0;g=H[a+8>>2];if((e|0)<(g|0)){continue}break}f=0;if((g|0)<=0){break j}e=d<<3;z=e+c|0;p=b+e|0;while(1){g=f<<2;e=g+z|0;g=H[g+p>>2]+H[g+j>>2]|0;H[e>>2]=g;l:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break l}g=g+H[a+20>>2]|0}H[e>>2]=g}f=f+1|0;if((f|0)>2]){continue}break}}d=d+1|0;if((B|0)!=(d|0)){continue}break}}return h|0}Ca();v()}function Of(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=ca-704|0;ca=f;n=1;a:{b:{c:{d:{if(J[b+38>>1]<515){break d}n=0;c=H[b+20>>2];d=H[b+12>>2];g=H[b+16>>2];if((c|0)>=(d|0)&g>>>0>=K[b+8>>2]|(c|0)>(d|0)){break d}p=I[H[b>>2]+g|0];g=g+1|0;c=g?c:c+1|0;H[b+16>>2]=g;H[b+20>>2]=c;g=H[H[(ea[H[H[a>>2]+28>>2]](a)|0)+4>>2]+80>>2];c=ea[H[H[a>>2]+24>>2]](a)|0;H[f+40>>2]=0;H[f+32>>2]=0;H[f+36>>2]=0;if(c){if(c>>>0>=214748365){break c}c=N(c,20);d=pa(c);H[f+32>>2]=d;H[f+40>>2]=c+d;c=c-20|0;c=(c-((c>>>0)%20|0)|0)+20|0;q=f,r=ra(d,0,c)+c|0,H[q+36>>2]=r}e:{if((ea[H[H[a>>2]+24>>2]](a)|0)>0){while(1){c=ea[H[H[a>>2]+20>>2]](a,l)|0;c=H[H[H[(ea[H[H[a>>2]+28>>2]](a)|0)+4>>2]+8>>2]+(c<<2)>>2];mb(c,g);F[c+84|0]=1;H[c+72>>2]=H[c+68>>2];d=H[c+28>>2];if(d>>>0>9){break e}f:{g:{h:{e=1<>2],d,6,0,i,i>>31);c=jc(pa(96),e);H[f>>2]=c;F[c+84|0]=1;H[c+72>>2]=H[c+68>>2];mb(c,g);c=H[a+64>>2];if(c>>>0>=K[a+68>>2]){break h}d=H[f>>2];H[f>>2]=0;H[c>>2]=d;c=c+4|0;H[a+64>>2]=c;break g}j=0;if(!I[c+24|0]){break f}while(1){d=H[a+52>>2];i=H[a+56>>2];i:{if(d>>>0>>0){H[d>>2]=0;H[a+52>>2]=d+4;break i}e=d;d=H[a+48>>2];m=e-d|0;k=m>>2;e=k+1|0;if(e>>>0>=1073741824){break b}o=k<<2;i=i-d|0;k=i>>>1|0;e=i>>>0>=2147483644?1073741823:e>>>0>>0?k:e;if(e){if(e>>>0>=1073741824){break a}i=pa(e<<2)}else{i=0}k=o+i|0;H[k>>2]=0;o=e<<2;e=va(i,d,m);H[a+56>>2]=o+e;H[a+52>>2]=k+4;H[a+48>>2]=e;if(!d){break i}oa(d)}j=j+1|0;if(j>>>0>2];i=H[a+64>>2]-e>>2;d=i+1|0;if(d>>>0<1073741824){e=H[a+68>>2]-e|0;j=e>>>1|0;e=e>>>0>=2147483644?1073741823:d>>>0>>0?j:d;if(e){if(e>>>0>=1073741824){break l}c=pa(e<<2)}j=H[f>>2];H[f>>2]=0;d=(i<<2)+c|0;H[d>>2]=j;e=(e<<2)+c|0;i=d+4|0;c=H[a+64>>2];j=H[a+60>>2];if((c|0)==(j|0)){break k}while(1){c=c-4|0;m=H[c>>2];H[c>>2]=0;d=d-4|0;H[d>>2]=m;if((c|0)!=(j|0)){continue}break}H[a+68>>2]=e;e=H[a+64>>2];H[a+64>>2]=i;c=H[a+60>>2];H[a+60>>2]=d;if((c|0)==(e|0)){break j}while(1){e=e-4|0;d=H[e>>2];H[e>>2]=0;if(d){Ga(d)}if((c|0)!=(e|0)){continue}break}break j}sa();v()}wa();v()}H[a+68>>2]=e;H[a+64>>2]=i;H[a+60>>2]=d}if(c){oa(c)}c=H[a+64>>2]}c=H[c-4>>2];d=H[f>>2];H[f>>2]=0;if(!d){break f}Ga(d)}i=H[c+28>>2];d=i-1|0;if(d>>>0<=10){e=H[(d<<2)+13584>>2]}else{e=-1}d=H[f+32>>2]+N(l,20)|0;j=I[c+24|0];H[d+16>>2]=j;H[d+12>>2]=(e|0)>0?e:0;H[d+8>>2]=i;H[d+4>>2]=h;H[d>>2]=c;h=h+j|0;l=l+1|0;if((ea[H[H[a>>2]+24>>2]](a)|0)>(l|0)){continue}break}}a=Ac(f,f+32|0);m:{n:{o:{switch(p|0){case 0:c=wb(f+48|0,h);b=Bd(c,b,a,g);h=H[c+8>>2];xb(c);if(!b){break m}if((h|0)==(g|0)){break n}break m;case 1:c=wb(f+48|0,h);b=zd(c,b,a,g);h=H[c+8>>2];xb(c);if(!b){break m}if((h|0)==(g|0)){break n}break m;case 2:c=ub(f+48|0,h);b=yd(c,b,a,g);h=H[c+8>>2];vb(c);if(!b){break m}if((h|0)==(g|0)){break n}break m;case 3:c=ub(f+48|0,h);b=xd(c,b,a,g);h=H[c+8>>2];vb(c);if(!b){break m}if((h|0)==(g|0)){break n}break m;case 4:c=$a(f+48|0,h);b=wd(c,b,a,g);h=H[c+8>>2];ab(c);if(!b){break m}if((h|0)==(g|0)){break n}break m;case 5:c=$a(f+48|0,h);b=vd(c,b,a,g);h=H[c+8>>2];ab(c);if(!b){break m}if((h|0)==(g|0)){break n}break m;case 6:break o;default:break m}}c=$a(f+48|0,h);b=ud(c,b,a,g);h=H[c+8>>2];ab(c);if(!b|(h|0)!=(g|0)){break m}}n=1}b=H[a+16>>2];if(b){H[a+20>>2]=b;oa(b)}b=H[a>>2];if(!b){break e}H[a+4>>2]=b;oa(b)}a=H[f+32>>2];if(!a){break d}H[f+36>>2]=a;oa(a)}ca=f+704|0;return n|0}sa();v()}sa();v()}wa();v()}function Zi(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;e=ca-32|0;ca=e;a:{b:{switch(c-2|0){case 0:c=H[a+4>>2];f=H[a+12>>2];H[e+24>>2]=-1;H[e+16>>2]=-1;H[e+20>>2]=1065353216;H[e+8>>2]=-1;H[e+12>>2]=-1;if((b|0)==-2){break a}i=H[H[H[c+4>>2]+8>>2]+(f<<2)>>2];if((ea[H[H[c>>2]+8>>2]](c)|0)==1){h=H[H[H[c+4>>2]+8>>2]+(f<<2)>>2];c:{if((ea[H[H[c>>2]+8>>2]](c)|0)!=1|b-1>>>0>5){break c}g=ea[H[H[c>>2]+36>>2]](c)|0;a=ea[H[H[c>>2]+44>>2]](c,f)|0;if(!g|!a){break c}f=ea[H[H[c>>2]+40>>2]](c,f)|0;d:{if(f){if((b|0)!=6){break c}b=H[c+44>>2];d=pa(112);H[d+4>>2]=h;c=H[e+12>>2];H[d+8>>2]=H[e+8>>2];H[d+12>>2]=c;c=H[e+20>>2];H[d+16>>2]=H[e+16>>2];H[d+20>>2]=c;H[d+24>>2]=H[e+24>>2];H[d+40>>2]=a;c=a+12|0;H[d+36>>2]=c;H[d+32>>2]=f;H[d+28>>2]=b;H[d+68>>2]=a;H[d- -64>>2]=c;H[d+60>>2]=f;H[d+56>>2]=b;H[d+48>>2]=0;H[d+52>>2]=0;H[d>>2]=7144;H[d+88>>2]=1065353216;H[d+92>>2]=-1;H[d+80>>2]=-1;H[d+84>>2]=-1;H[d+72>>2]=1;H[d+76>>2]=-1;H[d+44>>2]=7668;a=d+96|0;break d}if((b|0)!=6){break c}b=H[c+44>>2];d=pa(112);H[d+4>>2]=h;c=H[e+12>>2];H[d+8>>2]=H[e+8>>2];H[d+12>>2]=c;c=H[e+20>>2];H[d+16>>2]=H[e+16>>2];H[d+20>>2]=c;H[d+24>>2]=H[e+24>>2];H[d+40>>2]=a;c=a+12|0;H[d+36>>2]=c;H[d+32>>2]=g;H[d+28>>2]=b;H[d+68>>2]=a;H[d- -64>>2]=c;H[d+60>>2]=g;H[d+56>>2]=b;H[d+48>>2]=0;H[d+52>>2]=0;H[d>>2]=8080;H[d+88>>2]=1065353216;H[d+92>>2]=-1;H[d+80>>2]=-1;H[d+84>>2]=-1;H[d+72>>2]=1;H[d+76>>2]=-1;H[d+44>>2]=8472;a=d+96|0}H[a>>2]=0;H[a+4>>2]=0;F[a+5|0]=0;F[a+6|0]=0;F[a+7|0]=0;F[a+8|0]=0;F[a+9|0]=0;F[a+10|0]=0;F[a+11|0]=0;F[a+12|0]=0}if(d){break a}}d=pa(28);H[d+4>>2]=i;a=H[e+12>>2];H[d+8>>2]=H[e+8>>2];H[d+12>>2]=a;a=H[e+20>>2];H[d+16>>2]=H[e+16>>2];H[d+20>>2]=a;H[d+24>>2]=H[e+24>>2];H[d>>2]=8860;break a;case 1:break b;default:break a}}c=H[a+4>>2];f=H[a+12>>2];H[e+24>>2]=-1;H[e+16>>2]=-1;H[e+20>>2]=1065353216;H[e+8>>2]=-1;H[e+12>>2]=-1;if((b|0)==-2){break a}i=H[H[H[c+4>>2]+8>>2]+(f<<2)>>2];if((ea[H[H[c>>2]+8>>2]](c)|0)==1){h=H[H[H[c+4>>2]+8>>2]+(f<<2)>>2];e:{if((ea[H[H[c>>2]+8>>2]](c)|0)!=1|b-1>>>0>5){break e}g=ea[H[H[c>>2]+36>>2]](c)|0;a=ea[H[H[c>>2]+44>>2]](c,f)|0;if(!g|!a){break e}f=ea[H[H[c>>2]+40>>2]](c,f)|0;f:{if(f){if((b|0)!=6){break e}b=H[c+44>>2];d=pa(112);H[d+4>>2]=h;c=H[e+12>>2];H[d+8>>2]=H[e+8>>2];H[d+12>>2]=c;c=H[e+20>>2];H[d+16>>2]=H[e+16>>2];H[d+20>>2]=c;H[d+24>>2]=H[e+24>>2];H[d+40>>2]=a;c=a+12|0;H[d+36>>2]=c;H[d+32>>2]=f;H[d+28>>2]=b;H[d+68>>2]=a;H[d- -64>>2]=c;H[d+60>>2]=f;H[d+56>>2]=b;H[d+48>>2]=0;H[d+52>>2]=0;H[d>>2]=9028;H[d+88>>2]=1065353216;H[d+92>>2]=-1;H[d+80>>2]=-1;H[d+84>>2]=-1;H[d+72>>2]=1;H[d+76>>2]=-1;H[d+44>>2]=9592;a=d+96|0;break f}if((b|0)!=6){break e}b=H[c+44>>2];d=pa(112);H[d+4>>2]=h;c=H[e+12>>2];H[d+8>>2]=H[e+8>>2];H[d+12>>2]=c;c=H[e+20>>2];H[d+16>>2]=H[e+16>>2];H[d+20>>2]=c;H[d+24>>2]=H[e+24>>2];H[d+40>>2]=a;c=a+12|0;H[d+36>>2]=c;H[d+32>>2]=g;H[d+28>>2]=b;H[d+68>>2]=a;H[d- -64>>2]=c;H[d+60>>2]=g;H[d+56>>2]=b;H[d+48>>2]=0;H[d+52>>2]=0;H[d>>2]=10032;H[d+88>>2]=1065353216;H[d+92>>2]=-1;H[d+80>>2]=-1;H[d+84>>2]=-1;H[d+72>>2]=1;H[d+76>>2]=-1;H[d+44>>2]=10452;a=d+96|0}H[a>>2]=0;H[a+4>>2]=0;F[a+5|0]=0;F[a+6|0]=0;F[a+7|0]=0;F[a+8|0]=0;F[a+9|0]=0;F[a+10|0]=0;F[a+11|0]=0;F[a+12|0]=0}if(d){break a}}d=pa(28);H[d+4>>2]=i;a=H[e+12>>2];H[d+8>>2]=H[e+8>>2];H[d+12>>2]=a;a=H[e+20>>2];H[d+16>>2]=H[e+16>>2];H[d+20>>2]=a;H[d+24>>2]=H[e+24>>2];H[d>>2]=10864}ca=e+32|0;return d|0}function Ki(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=O(0),f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=O(0),p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;if(H[c>>2]==H[c+4>>2]){m=H[d+80>>2];u=ca-16|0;ca=u;g=H[a+4>>2];k=I[b+24|0];h=H[d+48>>2];n=H[H[d>>2]>>2];c=u+8|0;H[c>>2]=1065353216;d=c;L[c>>2]=O(-1<>2];c=pa(k<<2);a:{if(!m|!k){break a}p=h+n|0;o=L[d>>2];n=H[a+8>>2];v=H[b>>2];d=H[b+48>>2];g=H[b+40>>2];w=H[b+44>>2];if(!I[b+84|0]){f=H[b+68>>2];s=k&254;t=k&1;a=0;while(1){b=H[v>>2];l=Rj(g,w,H[f+(i<<2)>>2],0)+d|0;h=qa(c,b+l|0,g);b=0;q=0;if((k|0)!=1){while(1){l=p+(a<<2)|0;j=b<<2;e=O(T(O(O(o*O(L[j+h>>2]-L[n+j>>2]))+O(.5))));b:{if(O(P(e))>2]=r;j=j|4;e=O(T(O(O(o*O(L[j+h>>2]-L[n+j>>2]))+O(.5))));c:{if(O(P(e))>2]=j;b=b+2|0;a=a+2|0;q=q+2|0;if((s|0)!=(q|0)){continue}break}}if(t){l=p+(a<<2)|0;b=b<<2;e=O(T(O(O(o*O(L[b+h>>2]-L[b+n>>2]))+O(.5))));d:{if(O(P(e))>2]=b;a=a+1|0}i=i+1|0;if((m|0)!=(i|0)){continue}break}break a}s=k&254;t=k&1;a=0;while(1){b=H[v>>2];h=Rj(g,w,i,l)+d|0;j=qa(c,b+h|0,g);b=0;q=0;if((k|0)!=1){while(1){h=p+(a<<2)|0;f=b<<2;e=O(T(O(O(o*O(L[f+j>>2]-L[f+n>>2]))+O(.5))));e:{if(O(P(e))>2]=r;f=f|4;e=O(T(O(O(o*O(L[f+j>>2]-L[f+n>>2]))+O(.5))));f:{if(O(P(e))>2]=f;b=b+2|0;a=a+2|0;q=q+2|0;if((s|0)!=(q|0)){continue}break}}if(t){h=p+(a<<2)|0;b=b<<2;e=O(T(O(O(o*O(L[b+j>>2]-L[b+n>>2]))+O(.5))));g:{if(O(P(e))>2]=b;a=a+1|0}b=l;i=i+1|0;b=i?b:b+1|0;l=b;if((i|0)!=(m|0)|b){continue}break}}oa(c);ca=u+16|0;return 1}j=ca-16|0;ca=j;m=H[a+4>>2];i=I[b+24|0];g=H[d+48>>2];h=H[H[d>>2]>>2];d=j+8|0;H[d>>2]=1065353216;l=d;L[d>>2]=O(-1<>2];d=pa(i<<2);m=H[c+4>>2];q=H[c>>2];h:{if(!i|(m|0)==(q|0)){break h}n=h+g|0;c=m-q>>2;u=c>>>0<=1?1:c;o=L[l>>2];h=H[a+8>>2];v=H[b>>2];l=H[b+48>>2];m=H[b+40>>2];w=H[b+44>>2];if(I[b+84|0]){s=i&254;t=i&1;a=0;c=0;while(1){b=H[v>>2];g=Rj(m,w,H[q+(c<<2)>>2],0)+l|0;p=qa(d,b+g|0,m);b=0;k=0;if((i|0)!=1){while(1){g=n+(a<<2)|0;f=b<<2;e=O(T(O(O(o*O(L[f+p>>2]-L[h+f>>2]))+O(.5))));i:{if(O(P(e))>2]=r;f=f|4;e=O(T(O(O(o*O(L[f+p>>2]-L[h+f>>2]))+O(.5))));j:{if(O(P(e))>2]=f;b=b+2|0;a=a+2|0;k=k+2|0;if((s|0)!=(k|0)){continue}break}}if(t){g=n+(a<<2)|0;b=b<<2;e=O(T(O(O(o*O(L[b+p>>2]-L[b+h>>2]))+O(.5))));k:{if(O(P(e))>2]=b;a=a+1|0}c=c+1|0;if((u|0)!=(c|0)){continue}break}break h}s=H[b+68>>2];t=i&254;x=i&1;a=0;c=0;while(1){b=H[v>>2];g=Rj(m,w,H[s+(H[q+(c<<2)>>2]<<2)>>2],0)+l|0;p=qa(d,b+g|0,m);b=0;k=0;if((i|0)!=1){while(1){g=n+(a<<2)|0;f=b<<2;e=O(T(O(O(o*O(L[f+p>>2]-L[h+f>>2]))+O(.5))));l:{if(O(P(e))>2]=r;f=f|4;e=O(T(O(O(o*O(L[f+p>>2]-L[h+f>>2]))+O(.5))));m:{if(O(P(e))>2]=f;b=b+2|0;a=a+2|0;k=k+2|0;if((t|0)!=(k|0)){continue}break}}if(x){g=n+(a<<2)|0;b=b<<2;e=O(T(O(O(o*O(L[b+p>>2]-L[b+h>>2]))+O(.5))));n:{if(O(P(e))>2]=b;a=a+1|0}c=c+1|0;if((u|0)!=(c|0)){continue}break}}oa(d);ca=j+16|0;return 1}function dd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=H[a+4>>2];e=H[a>>2];f=(c-e|0)/144|0;if(f>>>0>>0){e=a;b=b-f|0;h=H[a+8>>2];c=H[a+4>>2];a:{if(b>>>0<=(h-c|0)/144>>>0){b:{if(!b){break b}a=c;f=b&7;if(f){while(1){Ia(a);a=a+144|0;d=d+1|0;if((f|0)!=(d|0)){continue}break}}c=N(b,144)+c|0;if((b-1&268435455)>>>0<7){break b}while(1){Ia(a);Ia(a+144|0);Ia(a+288|0);Ia(a+432|0);Ia(a+576|0);Ia(a+720|0);Ia(a+864|0);Ia(a+1008|0);a=a+1152|0;if((c|0)!=(a|0)){continue}break}}H[e+4>>2]=c;break a}c:{d:{e:{a=c;c=H[e>>2];i=(a-c|0)/144|0;a=i+b|0;if(a>>>0<29826162){c=(h-c|0)/144|0;f=c<<1;f=c>>>0>=14913080?29826161:a>>>0>>0?f:a;if(f){if(f>>>0>=29826162){break e}g=pa(N(f,144))}c=N(i,144)+g|0;a=c;h=b&7;if(h){while(1){Ia(a);a=a+144|0;d=d+1|0;if((h|0)!=(d|0)){continue}break}}h=N(b,144)+c|0;if((b-1&268435455)>>>0>=7){while(1){Ia(a);Ia(a+144|0);Ia(a+288|0);Ia(a+432|0);Ia(a+576|0);Ia(a+720|0);Ia(a+864|0);Ia(a+1008|0);a=a+1152|0;if((h|0)!=(a|0)){continue}break}}b=N(f,144)+g|0;d=H[e+4>>2];f=H[e>>2];if((d|0)==(f|0)){break d}while(1){c=c-144|0;d=d-144|0;a=d;H[c>>2]=H[a>>2];H[c+4>>2]=H[a+4>>2];H[c+8>>2]=H[a+8>>2];H[c+12>>2]=H[a+12>>2];H[a+12>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[c+16>>2]=H[a+16>>2];H[c+20>>2]=H[a+20>>2];H[c+24>>2]=H[a+24>>2];H[a+24>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;g=I[a+28|0];H[c+40>>2]=0;H[c+32>>2]=0;H[c+36>>2]=0;F[c+28|0]=g;H[c+32>>2]=H[a+32>>2];H[c+36>>2]=H[a+36>>2];H[c+40>>2]=H[a+40>>2];H[a+40>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;H[c+52>>2]=0;H[c+44>>2]=0;H[c+48>>2]=0;H[c+44>>2]=H[a+44>>2];H[c+48>>2]=H[a+48>>2];H[c+52>>2]=H[a+52>>2];H[a+52>>2]=0;H[a+44>>2]=0;H[a+48>>2]=0;g=c- -64|0;H[g>>2]=0;H[c+56>>2]=0;H[c+60>>2]=0;H[c+56>>2]=H[a+56>>2];H[c+60>>2]=H[a+60>>2];i=g;g=a- -64|0;H[i>>2]=H[g>>2];H[g>>2]=0;H[a+56>>2]=0;H[a+60>>2]=0;H[c+68>>2]=H[a+68>>2];g=H[a+72>>2];H[c+84>>2]=0;H[c+76>>2]=0;H[c+80>>2]=0;H[c+72>>2]=g;H[c+76>>2]=H[a+76>>2];H[c+80>>2]=H[a+80>>2];H[c+84>>2]=H[a+84>>2];H[a+84>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[c+96>>2]=0;H[c+88>>2]=0;H[c+92>>2]=0;H[c+88>>2]=H[a+88>>2];H[c+92>>2]=H[a+92>>2];H[c+96>>2]=H[a+96>>2];H[a+96>>2]=0;H[a+88>>2]=0;H[a+92>>2]=0;g=I[a+100|0];H[c+112>>2]=0;H[c+104>>2]=0;H[c+108>>2]=0;F[c+100|0]=g;H[c+104>>2]=H[a+104>>2];H[c+108>>2]=H[a+108>>2];H[c+112>>2]=H[a+112>>2];H[a+112>>2]=0;H[a+104>>2]=0;H[a+108>>2]=0;H[c+124>>2]=0;H[c+116>>2]=0;H[c+120>>2]=0;H[c+116>>2]=H[a+116>>2];H[c+120>>2]=H[a+120>>2];H[c+124>>2]=H[a+124>>2];H[a+124>>2]=0;H[a+116>>2]=0;H[a+120>>2]=0;g=H[a+128>>2];H[c+140>>2]=0;H[c+132>>2]=0;H[c+136>>2]=0;H[c+128>>2]=g;H[c+132>>2]=H[a+132>>2];H[c+136>>2]=H[a+136>>2];H[c+140>>2]=H[a+140>>2];H[a+140>>2]=0;H[a+132>>2]=0;H[a+136>>2]=0;if((a|0)!=(f|0)){continue}break}H[e+8>>2]=b;a=H[e+4>>2];H[e+4>>2]=h;d=H[e>>2];H[e>>2]=c;if((a|0)==(d|0)){break c}while(1){b=a-144|0;c=H[b+132>>2];if(c){H[a-8>>2]=c;oa(c)}c=H[a-28>>2];if(c){H[a-24>>2]=c;oa(c)}c=H[a-40>>2];if(c){H[a-36>>2]=c;oa(c)}oc(a-140|0);a=b;if((d|0)!=(a|0)){continue}break}break c}sa();v()}wa();v()}H[e+8>>2]=b;H[e+4>>2]=h;H[e>>2]=c}if(d){oa(d)}}return}if(b>>>0>>0){e=e+N(b,144)|0;if((e|0)!=(c|0)){while(1){b=c-144|0;d=H[b+132>>2];if(d){H[c-8>>2]=d;oa(d)}d=H[c-28>>2];if(d){H[c-24>>2]=d;oa(d)}d=H[c-40>>2];if(d){H[c-36>>2]=d;oa(d)}oc(c-140|0);c=b;if((e|0)!=(c|0)){continue}break}}H[a+4>>2]=e}}function Pe(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;f=ca-80|0;ca=f;e=H[c+36>>2];H[f+72>>2]=H[c+32>>2];H[f+76>>2]=e;g=H[c+28>>2];e=f- -64|0;H[e>>2]=H[c+24>>2];H[e+4>>2]=g;e=H[c+20>>2];H[f+56>>2]=H[c+16>>2];H[f+60>>2]=e;e=H[c+12>>2];H[f+48>>2]=H[c+8>>2];H[f+52>>2]=e;e=H[c+4>>2];H[f+40>>2]=H[c>>2];H[f+44>>2]=e;nc(a,f+40|0,f+24|0);a:{if(H[a>>2]){break a}if(F[a+15|0]<0){oa(H[a+4>>2])}if(I[f+31|0]){b=pa(32);F[b+27|0]=0;c=I[1521]|I[1522]<<8|(I[1523]<<16|I[1524]<<24);F[b+23|0]=c;F[b+24|0]=c>>>8;F[b+25|0]=c>>>16;F[b+26|0]=c>>>24;c=I[1518]|I[1519]<<8|(I[1520]<<16|I[1521]<<24);d=I[1514]|I[1515]<<8|(I[1516]<<16|I[1517]<<24);F[b+16|0]=d;F[b+17|0]=d>>>8;F[b+18|0]=d>>>16;F[b+19|0]=d>>>24;F[b+20|0]=c;F[b+21|0]=c>>>8;F[b+22|0]=c>>>16;F[b+23|0]=c>>>24;c=I[1510]|I[1511]<<8|(I[1512]<<16|I[1513]<<24);d=I[1506]|I[1507]<<8|(I[1508]<<16|I[1509]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=c;F[b+13|0]=c>>>8;F[b+14|0]=c>>>16;F[b+15|0]=c>>>24;c=I[1502]|I[1503]<<8|(I[1504]<<16|I[1505]<<24);d=I[1498]|I[1499]<<8|(I[1500]<<16|I[1501]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=c;F[b+5|0]=c>>>8;F[b+6|0]=c>>>16;F[b+7|0]=c>>>24;H[a>>2]=-1;za(a+4|0,b,27);oa(b);break a}i=ca-16|0;ca=i;b:{c:{switch(F[f+32|0]){case 0:e=pa(44);H[e>>2]=0;H[e+4>>2]=0;H[e+40>>2]=0;H[e+32>>2]=0;H[e+36>>2]=0;H[e+24>>2]=0;H[e+28>>2]=0;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;e=Vc(e);H[e>>2]=13496;H[f+8>>2]=0;H[f+12>>2]=0;H[f>>2]=0;H[f+4>>2]=0;H[f+16>>2]=e;break b;case 1:e=pa(44);H[e>>2]=0;H[e+4>>2]=0;H[e+40>>2]=0;H[e+32>>2]=0;H[e+36>>2]=0;H[e+24>>2]=0;H[e+28>>2]=0;H[e+16>>2]=0;H[e+20>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;e=Vc(e);H[e>>2]=13404;H[f+8>>2]=0;H[f+12>>2]=0;H[f>>2]=0;H[f+4>>2]=0;H[f+16>>2]=e;break b;default:break c}}g=pa(32);F[g+28|0]=0;e=I[1550]|I[1551]<<8|(I[1552]<<16|I[1553]<<24);F[g+24|0]=e;F[g+25|0]=e>>>8;F[g+26|0]=e>>>16;F[g+27|0]=e>>>24;e=I[1546]|I[1547]<<8|(I[1548]<<16|I[1549]<<24);h=I[1542]|I[1543]<<8|(I[1544]<<16|I[1545]<<24);F[g+16|0]=h;F[g+17|0]=h>>>8;F[g+18|0]=h>>>16;F[g+19|0]=h>>>24;F[g+20|0]=e;F[g+21|0]=e>>>8;F[g+22|0]=e>>>16;F[g+23|0]=e>>>24;e=I[1538]|I[1539]<<8|(I[1540]<<16|I[1541]<<24);h=I[1534]|I[1535]<<8|(I[1536]<<16|I[1537]<<24);F[g+8|0]=h;F[g+9|0]=h>>>8;F[g+10|0]=h>>>16;F[g+11|0]=h>>>24;F[g+12|0]=e;F[g+13|0]=e>>>8;F[g+14|0]=e>>>16;F[g+15|0]=e>>>24;e=I[1530]|I[1531]<<8|(I[1532]<<16|I[1533]<<24);h=I[1526]|I[1527]<<8|(I[1528]<<16|I[1529]<<24);F[g|0]=h;F[g+1|0]=h>>>8;F[g+2|0]=h>>>16;F[g+3|0]=h>>>24;F[g+4|0]=e;F[g+5|0]=e>>>8;F[g+6|0]=e>>>16;F[g+7|0]=e>>>24;H[i>>2]=-1;e=i|4;za(e,g,28);j=F[i+15|0];H[f>>2]=H[i>>2];h=f+4|0;d:{if((j|0)>=0){j=H[e+4>>2];H[h>>2]=H[e>>2];H[h+4>>2]=j;H[h+8>>2]=H[e+8>>2];H[f+16>>2]=0;break d}za(h,H[i+4>>2],H[i+8>>2]);e=F[i+15|0];H[f+16>>2]=0;if((e|0)>=0){break d}oa(H[i+4>>2])}oa(g)}ca=i+16|0;e=H[f>>2];e:{if(e){H[a>>2]=e;a=a+4|0;if(F[f+15|0]>=0){b=f|4;c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;H[a+8>>2]=H[b+8>>2];break e}za(a,H[f+4>>2],H[f+8>>2]);break e}e=H[f+16>>2];H[f+16>>2]=0;te(a,e,b,c,d);if(!H[a>>2]){if(F[a+15|0]<0){oa(H[a+4>>2])}H[a>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0}ea[H[H[e>>2]+4>>2]](e)}a=H[f+16>>2];H[f+16>>2]=0;if(a){ea[H[H[a>>2]+4>>2]](a)}if(F[f+15|0]>=0){break a}oa(H[f+4>>2])}ca=f+80|0}function Ic(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;H[a+56>>2]=H[a+52>>2];H[a+44>>2]=H[a+40>>2];b=H[a+64>>2];c=H[b+24>>2];if((c|0)==H[b+28>>2]){return 1}a:{b:{c:{while(1){g=i;i=H[(k<<2)+c>>2];d:{if((i|0)==-1){i=g;break d}b=H[a+56>>2];e:{if((b|0)!=H[a+60>>2]){H[b>>2]=g;H[a+56>>2]=b+4;break e}d=H[a+52>>2];e=b-d|0;h=e>>2;c=h+1|0;if(c>>>0>=1073741824){break c}f=e>>>1|0;f=e>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break b}e=pa(f<<2)}else{e=0}c=e+(h<<2)|0;H[c>>2]=g;h=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;H[c>>2]=H[b>>2];if((b|0)!=(d|0)){continue}break}}H[a+60>>2]=e+(f<<2);H[a+56>>2]=h;H[a+52>>2]=c;if(!d){break e}oa(d)}f:{g:{if(!(H[H[a+12>>2]+(k>>>3&536870908)>>2]>>>k&1)){break g}e=i+1|0;e=(e>>>0)%3|0?e:i-2|0;if((e|0)==-1|H[H[a>>2]+(e>>>3&536870908)>>2]>>>e&1){break g}e=H[H[H[a+64>>2]+12>>2]+(e<<2)>>2];if((e|0)==-1){break g}b=e+1|0;b=(b>>>0)%3|0?b:e-2|0;if((b|0)==-1){break g}c=H[a+64>>2];f=H[a>>2];while(1){e=b;b=-1;d=e+1|0;d=(d>>>0)%3|0?d:e-2|0;h:{if((d|0)==-1|H[f+(d>>>3&536870908)>>2]>>>d&1){break h}d=H[H[c+12>>2]+(d<<2)>>2];if((d|0)==-1){break h}b=d+1|0;b=(b>>>0)%3|0?b:d-2|0}if((b|0)!=(i|0)){if((b|0)==-1){break f}continue}break}return 0}e=i}H[H[a+28>>2]+(e<<2)>>2]=g;b=H[a+44>>2];i:{if((b|0)!=H[a+48>>2]){H[b>>2]=e;H[a+44>>2]=b+4;break i}d=H[a+40>>2];i=b-d|0;h=i>>2;c=h+1|0;if(c>>>0>=1073741824){break a}f=i>>>1|0;f=i>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break b}i=pa(f<<2)}else{i=0}c=i+(h<<2)|0;H[c>>2]=e;h=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;H[c>>2]=H[b>>2];if((b|0)!=(d|0)){continue}break}}H[a+48>>2]=i+(f<<2);H[a+44>>2]=h;H[a+40>>2]=c;if(!d){break i}oa(d)}i=g+1|0;b=H[a+64>>2];if((e|0)==-1){break d}j:{if((e>>>0)%3|0){c=e-1|0;break j}c=e+2|0;if((c|0)==-1){break d}}d=H[H[b+12>>2]+(c<<2)>>2];if((d|0)==-1){break d}f=d+((d>>>0)%3|0?-1:2)|0;if((f|0)==-1|(e|0)==(f|0)){break d}while(1){b=f+1|0;b=(b>>>0)%3|0?b:f-2|0;if(H[H[a>>2]+(b>>>3&536870908)>>2]>>>b&1){b=H[a+56>>2];k:{if((b|0)!=H[a+60>>2]){H[b>>2]=i;H[a+56>>2]=b+4;break k}d=H[a+52>>2];g=b-d|0;j=g>>2;c=j+1|0;if(c>>>0>=1073741824){break c}h=g>>>1|0;h=g>>>0>=2147483644?1073741823:c>>>0>>0?h:c;if(h){if(h>>>0>=1073741824){break b}g=pa(h<<2)}else{g=0}c=g+(j<<2)|0;H[c>>2]=i;j=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;H[c>>2]=H[b>>2];if((b|0)!=(d|0)){continue}break}}H[a+60>>2]=g+(h<<2);H[a+56>>2]=j;H[a+52>>2]=c;if(!d){break k}oa(d)}d=i+1|0;b=H[a+44>>2];l:{if((b|0)!=H[a+48>>2]){H[b>>2]=f;H[a+44>>2]=b+4;break l}h=H[a+40>>2];g=b-h|0;l=g>>2;c=l+1|0;if(c>>>0>=1073741824){break a}j=g>>>1|0;j=g>>>0>=2147483644?1073741823:c>>>0>>0?j:c;if(j){if(j>>>0>=1073741824){break b}g=pa(j<<2)}else{g=0}c=g+(l<<2)|0;H[c>>2]=f;l=c+4|0;if((b|0)!=(h|0)){while(1){c=c-4|0;b=b-4|0;H[c>>2]=H[b>>2];if((b|0)!=(h|0)){continue}break}}H[a+48>>2]=g+(j<<2);H[a+44>>2]=l;H[a+40>>2]=c;if(!h){break l}oa(h)}g=i;i=d}H[H[a+28>>2]+(f<<2)>>2]=g;b=H[a+64>>2];m:{if((f>>>0)%3|0){c=f-1|0;break m}c=f+2|0;if((c|0)==-1){break d}}d=H[H[b+12>>2]+(c<<2)>>2];if((d|0)==-1){break d}f=d+((d>>>0)%3|0?-1:2)|0;if((f|0)==-1){break d}if((e|0)!=(f|0)){continue}break}}k=k+1|0;c=H[b+24>>2];if(k>>>0>2]-c>>2>>>0){continue}break}return 1}sa();v()}wa();v()}sa();v()}function ti(a){a=a|0;var b=0,c=0,d=0,e=0;c=H[a+32>>2];d=H[c+16>>2];e=H[c+12>>2];b=H[c+20>>2];if(K[c+8>>2]>d>>>0&(e|0)>=(b|0)|(b|0)<(e|0)){e=I[H[c>>2]+d|0];d=d+1|0;b=d?b:b+1|0;H[c+16>>2]=d;H[c+20>>2]=b;b=H[a+48>>2];H[a+48>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}a:{b:{c:{d:{switch(e|0){case 0:b=pa(384);H[b>>2]=11384;ra(b+4|0,0,80);H[b+96>>2]=0;H[b+100>>2]=0;H[b+92>>2]=-1;H[b+84>>2]=-1;H[b+88>>2]=-1;H[b+104>>2]=0;H[b+108>>2]=0;H[b+112>>2]=0;H[b+116>>2]=0;H[b+120>>2]=0;H[b+124>>2]=0;H[b+128>>2]=0;H[b+132>>2]=0;H[b+136>>2]=0;H[b+140>>2]=0;H[b+144>>2]=0;H[b+148>>2]=0;H[b+156>>2]=0;H[b+160>>2]=0;H[b+152>>2]=1065353216;H[b+164>>2]=0;H[b+168>>2]=0;H[b+172>>2]=0;H[b+176>>2]=0;H[b+180>>2]=0;H[b+184>>2]=0;H[b+188>>2]=0;H[b+192>>2]=0;H[b+196>>2]=0;H[b+200>>2]=0;H[b+204>>2]=0;H[b+208>>2]=0;H[b+212>>2]=-1;H[b+216>>2]=0;H[b+220>>2]=0;H[b+224>>2]=0;Ha(b+232|0);Ha(b+272|0);c=b+312|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;Ha(b+328|0);H[b+376>>2]=0;H[b+368>>2]=0;H[b+372>>2]=0;break c;case 1:b=pa(424);H[b>>2]=11436;ra(b+4|0,0,80);H[b+96>>2]=0;H[b+100>>2]=0;H[b+92>>2]=-1;H[b+84>>2]=-1;H[b+88>>2]=-1;H[b+104>>2]=0;H[b+108>>2]=0;H[b+112>>2]=0;H[b+116>>2]=0;H[b+120>>2]=0;H[b+124>>2]=0;H[b+128>>2]=0;H[b+132>>2]=0;H[b+136>>2]=0;H[b+140>>2]=0;H[b+144>>2]=0;H[b+148>>2]=0;H[b+156>>2]=0;H[b+160>>2]=0;H[b+152>>2]=1065353216;H[b+164>>2]=0;H[b+168>>2]=0;H[b+172>>2]=0;H[b+176>>2]=0;H[b+180>>2]=0;H[b+184>>2]=0;H[b+188>>2]=0;H[b+192>>2]=0;H[b+196>>2]=0;H[b+200>>2]=0;H[b+204>>2]=0;H[b+208>>2]=0;H[b+212>>2]=-1;H[b+216>>2]=0;H[b+220>>2]=0;H[b+224>>2]=0;Ha(b+232|0);Ha(b+272|0);c=b+312|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;Ha(b+328|0);H[b+392>>2]=0;H[b+396>>2]=0;H[b+384>>2]=0;H[b+388>>2]=0;H[b+376>>2]=0;H[b+380>>2]=0;H[b+368>>2]=0;H[b+372>>2]=0;c=b+400|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;H[b+416>>2]=-1;H[b+420>>2]=-1;break c;case 2:break d;default:break b}}b=pa(440);H[b>>2]=11484;ra(b+4|0,0,80);H[b+96>>2]=0;H[b+100>>2]=0;H[b+92>>2]=-1;H[b+84>>2]=-1;H[b+88>>2]=-1;H[b+104>>2]=0;H[b+108>>2]=0;H[b+112>>2]=0;H[b+116>>2]=0;H[b+120>>2]=0;H[b+124>>2]=0;H[b+128>>2]=0;H[b+132>>2]=0;H[b+136>>2]=0;H[b+140>>2]=0;H[b+144>>2]=0;H[b+148>>2]=0;H[b+156>>2]=0;H[b+160>>2]=0;H[b+152>>2]=1065353216;H[b+164>>2]=0;H[b+168>>2]=0;H[b+172>>2]=0;H[b+176>>2]=0;H[b+180>>2]=0;H[b+184>>2]=0;H[b+188>>2]=0;H[b+192>>2]=0;H[b+196>>2]=0;H[b+200>>2]=0;H[b+204>>2]=0;H[b+208>>2]=0;H[b+212>>2]=-1;H[b+216>>2]=0;H[b+220>>2]=0;H[b+224>>2]=0;Ha(b+232|0);Ha(b+272|0);c=b+312|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;Ha(b+328|0);H[b+392>>2]=0;H[b+396>>2]=0;H[b+384>>2]=0;H[b+388>>2]=0;H[b+376>>2]=0;H[b+380>>2]=0;H[b+368>>2]=0;H[b+372>>2]=0;H[b+416>>2]=0;H[b+420>>2]=0;H[b+408>>2]=2;H[b+412>>2]=7;H[b+400>>2]=-1;H[b+404>>2]=-1;H[b+424>>2]=0;H[b+428>>2]=0;H[b+432>>2]=0;H[b+436>>2]=0}c=H[a+48>>2];H[a+48>>2]=b;if(!c){break a}ea[H[H[c>>2]+4>>2]](c)}b=H[a+48>>2];if(b){break a}return 0}a=ea[H[H[b>>2]+8>>2]](b,a)|0}else{a=0}return a|0}function Lb(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0;f=ca-96|0;ca=f;e=H[a+16>>2];F[f+92|0]=1;H[f+88>>2]=b;H[f+84>>2]=b;H[f+80>>2]=e;a:{if((b|0)==-1){break a}j=H[a+20>>2];d=H[j>>2];e=H[H[e>>2]+(b<<2)>>2];if(e>>>0>=H[j+4>>2]-d>>2>>>0){break a}e=H[H[a+8>>2]+(H[d+(e<<2)>>2]<<2)>>2];d=H[a+4>>2];if(!I[d+84|0]){e=H[H[d+68>>2]+(e<<2)>>2]}H[f+72>>2]=0;H[f+76>>2]=0;j=f- -64|0;H[j>>2]=0;H[j+4>>2]=0;H[f+56>>2]=0;H[f+60>>2]=0;Sa(d,e,F[d+24|0],f+56|0);e=b+1|0;j=(e>>>0)%3|0?e:b-2|0;n=((b>>>0)%3|0?-1:2)+b|0;b:{c:{while(1){d=j;e=n;d:{if(!H[a+28>>2]){break d}e=b+1|0;d=(e>>>0)%3|0?e:b-2|0;e=b-1|0;if((b>>>0)%3|0){break d}e=b+2|0}if((d|0)==-1){break b}m=H[a+20>>2];b=H[m>>2];d=H[H[H[a+16>>2]>>2]+(d<<2)>>2];if(d>>>0>=H[m+4>>2]-b>>2>>>0){break b}d=H[H[a+8>>2]+(H[(d<<2)+b>>2]<<2)>>2];b=H[a+4>>2];if(!I[b+84|0]){d=H[H[b+68>>2]+(d<<2)>>2]}H[f+48>>2]=0;H[f+52>>2]=0;H[f+40>>2]=0;H[f+44>>2]=0;H[f+32>>2]=0;H[f+36>>2]=0;Sa(b,d,F[b+24|0],f+32|0);if((e|0)==-1){break c}d=H[a+20>>2];b=H[d>>2];e=H[H[H[a+16>>2]>>2]+(e<<2)>>2];if(e>>>0>=H[d+4>>2]-b>>2>>>0){break c}d=H[H[a+8>>2]+(H[b+(e<<2)>>2]<<2)>>2];b=H[a+4>>2];if(!I[b+84|0]){d=H[H[b+68>>2]+(d<<2)>>2]}H[f+24>>2]=0;H[f+28>>2]=0;H[f+16>>2]=0;H[f+20>>2]=0;H[f+8>>2]=0;H[f+12>>2]=0;Sa(b,d,F[b+24|0],f+8|0);g=H[f+8>>2];b=H[f+56>>2];d=g-b|0;p=H[f+60>>2];t=H[f+12>>2]-(p+(b>>>0>g>>>0)|0)|0;i=H[f+40>>2];e=H[f+64>>2];m=i-e|0;u=H[f+68>>2];y=H[f+44>>2]-(u+(e>>>0>i>>>0)|0)|0;g=Rj(d,t,m,y);w=o-g|0;x=h-(da+(g>>>0>o>>>0)|0)|0;h=w;i=H[f+16>>2];g=i-e|0;u=H[f+20>>2]-((e>>>0>i>>>0)+u|0)|0;k=H[f+32>>2];i=k-b|0;w=H[f+36>>2]-((b>>>0>k>>>0)+p|0)|0;b=Rj(g,u,i,w);o=h+b|0;h=da+x|0;h=b>>>0>o>>>0?h+1|0:h;b=l;l=d;p=t;k=H[f+48>>2];e=H[f+72>>2];d=k-e|0;t=H[f+76>>2];x=H[f+52>>2]-(t+(e>>>0>k>>>0)|0)|0;l=Rj(l,p,d,x);k=b+l|0;b=da+q|0;b=k>>>0>>0?b+1|0:b;l=H[f+24>>2];p=l-e|0;e=H[f+28>>2]-((e>>>0>l>>>0)+t|0)|0;q=Rj(p,e,i,w);l=k-q|0;q=b-(da+(k>>>0>>0)|0)|0;b=Rj(g,u,d,x);d=r-b|0;b=s-(da+(b>>>0>r>>>0)|0)|0;s=Rj(p,e,m,y);r=s+d|0;b=da+b|0;s=r>>>0>>0?b+1|0:b;uc(f+80|0);b=H[f+88>>2];if((b|0)!=-1){continue}break}b=s>>31;e=b^r;d=e-b|0;b=(b^s)-((b>>>0>e>>>0)+b|0)|0;n=-1;e=2147483647;m=q>>31;g=m;i=g^l;j=i-g|0;m=(g^q)-((i>>>0>>0)+g|0)|0;i=m;k=j^-1;g=i^2147483647;m=h;e:{f:{if(!H[a+28>>2]){if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break e}b=b+i|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;e=a;g=h;a=g>>31;d=a;n=d^o;a=n-d|0;h=a;d=(d^g)-((d>>>0>n>>>0)+d|0)|0;a=a+e|0;d=d^2147483647;h=(d|0)==(b|0)&(h^-1)>>>0>>0|b>>>0>d>>>0;a=h?-1:a;if(!(h&0)&(a|0)<=536870912|(a|0)<536870912){break e}b=0;a=a>>>29|0;break f}g:{if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break g}b=b+i|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;k=h;h=h>>31;g=h;i=g^o;h=i-g|0;j=(g^k)-((g>>>0>i>>>0)+g|0)|0;g=j^2147483647;d=a;a=h;if((g|0)==(b|0)&d>>>0>(a^-1)>>>0|b>>>0>g>>>0){break g}b=b+j|0;n=a+d|0;b=n>>>0>>0?b+1|0:b;e=b;if(!b&n>>>0<536870913){break e}}b=e>>>29|0;a=(e&536870911)<<3|n>>>29}o=Sj(o,m,a,b);l=Sj(l,q,a,b);r=Sj(r,s,a,b)}H[c+8>>2]=o;H[c+4>>2]=l;H[c>>2]=r;ca=f+96|0;return}Ca();v()}Ca();v()}Ca();v()}function Wd(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;a:{if((b|0)<0){break a}c=H[a+12>>2];d=H[a+8>>2];if(c-d>>2>>>0<=b>>>0){break a}d=d+(b<<2)|0;e=H[d>>2];i=H[e+60>>2];f=H[e+56>>2];e=d+4|0;if((e|0)!=(c|0)){while(1){h=H[e>>2];H[e>>2]=0;g=H[d>>2];H[d>>2]=h;if(g){Ga(g)}d=d+4|0;e=e+4|0;if((e|0)!=(c|0)){continue}break}c=H[a+12>>2]}if((c|0)!=(d|0)){while(1){c=c-4|0;e=H[c>>2];H[c>>2]=0;if(e){Ga(e)}if((c|0)!=(d|0)){continue}break}}H[a+12>>2]=d;g=H[a+4>>2];b:{if(!g|(i|0)<0){break b}c=H[g+24>>2];d=H[g+28>>2];if((c|0)==(d|0)){break b}while(1){if((i|0)==H[H[c>>2]+24>>2]){d=c+4|0;i=H[g+28>>2];if((d|0)!=(i|0)){while(1){h=H[d>>2];H[d>>2]=0;e=H[c>>2];H[c>>2]=h;if(e){Ra(e+12|0,H[e+16>>2]);Qa(e,H[e+4>>2]);oa(e)}c=c+4|0;d=d+4|0;if((i|0)!=(d|0)){continue}break}d=H[g+28>>2]}if((c|0)!=(d|0)){while(1){d=d-4|0;e=H[d>>2];H[d>>2]=0;if(e){Ra(e+12|0,H[e+16>>2]);Qa(e,H[e+4>>2]);oa(e)}if((c|0)!=(d|0)){continue}break}}H[g+28>>2]=c;break b}c=c+4|0;if((d|0)!=(c|0)){continue}break}}c:{if((f|0)>4){break c}d:{e=N(f,12)+a|0;c=H[e+20>>2];d=H[e+24>>2];if((c|0)==(d|0)){break d}while(1){if(H[c>>2]==(b|0)){break d}c=c+4|0;if((d|0)!=(c|0)){continue}break}break c}if((c|0)==(d|0)){break c}f=c;c=c+4|0;va(f,c,d-c|0);H[e+24>>2]=d-4}c=H[a+24>>2];d=H[a+20>>2];e:{if((c|0)==(d|0)){break e}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=H[h>>2];if((j|0)>(b|0)){H[h>>2]=j-1}f=d+(f|4)|0;h=H[f>>2];if((h|0)>(b|0)){H[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break e}c=d+(c<<2)|0;d=H[c>>2];if((d|0)<=(b|0)){break e}H[c>>2]=d-1}c=H[a+36>>2];d=H[a+32>>2];f:{if((c|0)==(d|0)){break f}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=H[h>>2];if((j|0)>(b|0)){H[h>>2]=j-1}f=d+(f|4)|0;h=H[f>>2];if((h|0)>(b|0)){H[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break f}c=d+(c<<2)|0;d=H[c>>2];if((d|0)<=(b|0)){break f}H[c>>2]=d-1}c=H[a+48>>2];d=H[a+44>>2];g:{if((c|0)==(d|0)){break g}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=H[h>>2];if((j|0)>(b|0)){H[h>>2]=j-1}f=d+(f|4)|0;h=H[f>>2];if((h|0)>(b|0)){H[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break g}c=d+(c<<2)|0;d=H[c>>2];if((d|0)<=(b|0)){break g}H[c>>2]=d-1}c=H[a+60>>2];d=H[a+56>>2];h:{if((c|0)==(d|0)){break h}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=H[h>>2];if((j|0)>(b|0)){H[h>>2]=j-1}f=d+(f|4)|0;h=H[f>>2];if((h|0)>(b|0)){H[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break h}c=d+(c<<2)|0;d=H[c>>2];if((d|0)<=(b|0)){break h}H[c>>2]=d-1}c=H[a+72>>2];a=H[a+68>>2];if((c|0)==(a|0)){break a}d=c-a|0;c=d>>2;e=c>>>0<=1?1:c;g=e&1;c=0;if(d>>>0>=8){d=e&-2;e=0;while(1){i=c<<2;f=i+a|0;h=H[f>>2];if((h|0)>(b|0)){H[f>>2]=h-1}i=a+(i|4)|0;f=H[i>>2];if((f|0)>(b|0)){H[i>>2]=f-1}c=c+2|0;e=e+2|0;if((d|0)!=(e|0)){continue}break}}if(!g){break a}f=b;a=a+(c<<2)|0;b=H[a>>2];if((f|0)>=(b|0)){break a}H[a>>2]=b-1}}function oa(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!a){break a}d=a-8|0;b=H[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=H[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=H[d+8>>2];b=b>>>3|0;c=H[d+12>>2];if((c|0)==(e|0)){i=17192,j=H[4298]&Vj(b),H[i>>2]=j;break b}H[e+12>>2]=c;H[c+8>>2]=e;break b}h=H[d+24>>2];b=H[d+12>>2];c:{if((d|0)!=(b|0)){c=H[d+8>>2];H[c+12>>2]=b;H[b+8>>2]=c;break c}d:{e=d+20|0;c=H[e>>2];if(c){break d}e=d+16|0;c=H[e>>2];if(c){break d}b=0;break c}while(1){g=e;b=c;e=b+20|0;c=H[e>>2];if(c){continue}e=b+16|0;c=H[b+16>>2];if(c){continue}break}H[g>>2]=0}if(!h){break b}e=H[d+28>>2];c=(e<<2)+17496|0;e:{if(H[c>>2]==(d|0)){H[c>>2]=b;if(b){break e}i=17196,j=H[4299]&Vj(e),H[i>>2]=j;break b}H[h+(H[h+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}H[b+24>>2]=h;c=H[d+16>>2];if(c){H[b+16>>2]=c;H[c+24>>2]=b}c=H[d+20>>2];if(!c){break b}H[b+20>>2]=c;H[c+24>>2]=b;break b}b=H[f+4>>2];if((b&3)!=3){break b}H[4300]=a;H[f+4>>2]=b&-2;H[d+4>>2]=a|1;H[a+d>>2]=a;return}if(d>>>0>=f>>>0){break a}b=H[f+4>>2];if(!(b&1)){break a}f:{if(!(b&2)){if(H[4304]==(f|0)){H[4304]=d;a=H[4301]+a|0;H[4301]=a;H[d+4>>2]=a|1;if(H[4303]!=(d|0)){break a}H[4300]=0;H[4303]=0;return}if(H[4303]==(f|0)){H[4303]=d;a=H[4300]+a|0;H[4300]=a;H[d+4>>2]=a|1;H[a+d>>2]=a;return}a=(b&-8)+a|0;g:{if(b>>>0<=255){e=H[f+8>>2];b=b>>>3|0;c=H[f+12>>2];if((c|0)==(e|0)){i=17192,j=H[4298]&Vj(b),H[i>>2]=j;break g}H[e+12>>2]=c;H[c+8>>2]=e;break g}h=H[f+24>>2];b=H[f+12>>2];h:{if((f|0)!=(b|0)){c=H[f+8>>2];H[c+12>>2]=b;H[b+8>>2]=c;break h}i:{e=f+20|0;c=H[e>>2];if(c){break i}e=f+16|0;c=H[e>>2];if(c){break i}b=0;break h}while(1){g=e;b=c;e=b+20|0;c=H[e>>2];if(c){continue}e=b+16|0;c=H[b+16>>2];if(c){continue}break}H[g>>2]=0}if(!h){break g}e=H[f+28>>2];c=(e<<2)+17496|0;j:{if(H[c>>2]==(f|0)){H[c>>2]=b;if(b){break j}i=17196,j=H[4299]&Vj(e),H[i>>2]=j;break g}H[h+(H[h+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}H[b+24>>2]=h;c=H[f+16>>2];if(c){H[b+16>>2]=c;H[c+24>>2]=b}c=H[f+20>>2];if(!c){break g}H[b+20>>2]=c;H[c+24>>2]=b}H[d+4>>2]=a|1;H[a+d>>2]=a;if(H[4303]!=(d|0)){break f}H[4300]=a;return}H[f+4>>2]=b&-2;H[d+4>>2]=a|1;H[a+d>>2]=a}if(a>>>0<=255){b=(a&-8)+17232|0;c=H[4298];a=1<<(a>>>3);k:{if(!(c&a)){H[4298]=a|c;a=b;break k}a=H[b+8>>2]}H[b+8>>2]=d;H[a+12>>2]=d;H[d+12>>2]=b;H[d+8>>2]=a;return}e=31;if(a>>>0<=16777215){b=Q(a>>>8|0);e=((a>>>38-b&1)-(b<<1)|0)+62|0}H[d+28>>2]=e;H[d+16>>2]=0;H[d+20>>2]=0;g=(e<<2)+17496|0;l:{m:{c=H[4299];b=1<>2]=d;H[d+24>>2]=g;break n}e=a<<((e|0)!=31?25-(e>>>1|0)|0:0);b=H[g>>2];while(1){c=b;if((H[b+4>>2]&-8)==(a|0)){break m}b=e>>>29|0;e=e<<1;g=c+(b&4)|0;b=H[g+16>>2];if(b){continue}break}H[g+16>>2]=d;H[d+24>>2]=c}H[d+12>>2]=d;H[d+8>>2]=d;break l}a=H[c+8>>2];H[a+12>>2]=d;H[c+8>>2]=d;H[d+24>>2]=0;H[d+12>>2]=c;H[d+8>>2]=a}a=H[4306]-1|0;H[4306]=a?a:-1}}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,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,w=0;H[a+8>>2]=e;n=a+32|0;h=H[n>>2];f=H[a+36>>2]-h>>2;a:{if(f>>>0>>0){ya(n,e-f|0);d=H[a+8>>2];break a}d=e;if(d>>>0>=f>>>0){break a}H[a+36>>2]=h+(e<<2);d=e}s=H[a+52>>2];p=H[a+48>>2];f=0;h=e>>>0>1073741823?-1:e<<2;m=ra(pa(h),0,h);b:{if((d|0)<=0){break b}g=H[a+32>>2];while(1){d=f<<2;h=H[d+m>>2];j=H[a+16>>2];c:{if((h|0)>(j|0)){H[d+g>>2]=j;break c}d=d+g|0;j=H[a+12>>2];if((j|0)>(h|0)){H[d>>2]=j;break c}H[d>>2]=h}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}if((d|0)<=0){break b}f=0;while(1){h=f<<2;d=h+c|0;h=H[b+h>>2]+H[g+h>>2]|0;H[d>>2]=h;d:{if((h|0)>H[a+16>>2]){i=h-H[a+20>>2]|0}else{if((h|0)>=H[a+12>>2]){break d}i=h+H[a+20>>2]|0}H[d>>2]=i}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}f=H[a+56>>2];q=H[f>>2];f=H[f+4>>2]-q|0;if((f|0)>=5){o=f>>>2|0;t=o>>>0<=2?2:o;u=e&-2;w=e&1;h=1;while(1){e:{f:{if((h|0)!=(o|0)){r=N(e,h);f=H[(h<<2)+q>>2];if((f|0)==-1){break f}f=H[H[p+12>>2]+(f<<2)>>2];if((f|0)==-1){break f}j=H[s>>2];g=H[p>>2];k=H[j+(H[g+(f<<2)>>2]<<2)>>2];i=f+1|0;i=(i>>>0)%3|0?i:f-2|0;if((i|0)!=-1){i=H[g+(i<<2)>>2]}else{i=-1}g:{h:{if((f>>>0)%3|0){f=f-1|0;break h}f=f+2|0;l=-1;if((f|0)==-1){break g}}l=H[g+(f<<2)>>2]}if((h|0)<=(k|0)){break f}f=H[(i<<2)+j>>2];if((f|0)>=(h|0)){break f}g=H[j+(l<<2)>>2];if((g|0)>=(h|0)){break f}i:{if((e|0)<=0){break i}g=N(e,g);j=N(e,f);k=N(e,k);f=0;l=0;if((e|0)!=1){while(1){H[(f<<2)+m>>2]=(H[(f+g<<2)+c>>2]+H[(f+j<<2)+c>>2]|0)-H[(f+k<<2)+c>>2];i=f|1;H[(i<<2)+m>>2]=(H[(g+i<<2)+c>>2]+H[(j+i<<2)+c>>2]|0)-H[(i+k<<2)+c>>2];f=f+2|0;l=l+2|0;if((u|0)!=(l|0)){continue}break}}if(!w){break i}H[(f<<2)+m>>2]=(H[(f+g<<2)+c>>2]+H[(f+j<<2)+c>>2]|0)-H[(f+k<<2)+c>>2]}if((d|0)<=0){break e}j=H[n>>2];f=0;while(1){d=f<<2;g=H[d+m>>2];k=H[a+16>>2];j:{if((g|0)>(k|0)){H[d+j>>2]=k;break j}d=d+j|0;k=H[a+12>>2];if((k|0)>(g|0)){H[d>>2]=k;break j}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;i=b+d|0;while(1){g=f<<2;d=g+k|0;g=H[g+i>>2]+H[g+j>>2]|0;H[d>>2]=g;k:{if((g|0)>H[a+16>>2]){l=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break k}l=g+H[a+20>>2]|0}H[d>>2]=l}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}break e}Ca();v()}if((d|0)<=0){break e}k=(N(h-1|0,e)<<2)+c|0;j=H[n>>2];f=0;while(1){d=f<<2;g=H[d+k>>2];i=H[a+16>>2];l:{if((g|0)>(i|0)){H[d+j>>2]=i;break l}d=d+j|0;i=H[a+12>>2];if((i|0)>(g|0)){H[d>>2]=i;break l}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;i=b+d|0;while(1){g=f<<2;d=g+k|0;g=H[g+i>>2]+H[g+j>>2]|0;H[d>>2]=g;m:{if((g|0)>H[a+16>>2]){l=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break m}l=g+H[a+20>>2]|0}H[d>>2]=l}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}h=h+1|0;if((t|0)!=(h|0)){continue}break}}oa(m);return 1}function we(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((b|0)==-1){return 1}g=(b>>>0)/3|0;if(!(H[H[a+24>>2]+(g>>>3&268435452)>>2]>>>g&1)){e=H[a+48>>2];H[a+52>>2]=e;a:{if((e|0)!=H[a+56>>2]){H[e>>2]=b;H[a+52>>2]=e+4;break a}d=pa(4);H[d>>2]=b;c=d+4|0;H[a+56>>2]=c;H[a+52>>2]=c;H[a+48>>2]=d;if(!e){break a}oa(e)}c=b+1|0;i=(c>>>0)%3|0?c:b-2|0;c=H[H[a+4>>2]+28>>2];k=H[(i<<2)+c>>2];if((k|0)==-1){return 0}e=(b-N(g,3)|0?-1:2)+b|0;j=H[c+(e<<2)>>2];if((j|0)==-1){return 0}b=H[a+36>>2];g=b+(k>>>3&536870908)|0;d=H[g>>2];c=1<>2]=c|d;Ua(a+8|0,k,i);b=H[a+36>>2]}d=(j>>>3&536870908)+b|0;c=H[d>>2];b=1<>2]=b|c;Ua(a+8|0,j,e)}f=H[a+52>>2];if((f|0)==H[a+48>>2]){return 1}k=a+8|0;while(1){b:{c:{f=f-4|0;b=H[f>>2];if((b|0)==-1){break c}c=(b>>>0)/3|0;g=H[a+24>>2]+(c>>>3&268435452)|0;d=H[g>>2];c=1<>2]=c|d;h=H[a+4>>2];c=H[H[h+28>>2]+(b<<2)>>2];if((c|0)==-1){return 0}while(1){d=b;d:{e:{j=H[a+36>>2]+(c>>>3&536870908)|0;i=H[j>>2];e=1<>2]+(c<<2)>>2];g:{if((g|0)==-1){break g}b=g+1|0;b=(b>>>0)%3|0?b:g-2|0;if((b|0)==-1|H[H[h>>2]+(b>>>3&536870908)>>2]>>>b&1){break g}g=H[H[H[h+64>>2]+12>>2]+(b<<2)>>2];if((g|0)!=-1){break f}}H[j>>2]=e|i;Ua(k,c,d);h=H[a+4>>2];break e}H[j>>2]=e|i;Ua(k,c,d);h=H[a+4>>2];b=g+1|0;if((((b>>>0)%3|0?b:g-2|0)|0)==-1){break e}b=-1;h:{if((d|0)==-1){break h}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1|H[H[h>>2]+(c>>>3&536870908)>>2]>>>c&1){break h}b=H[H[H[h+64>>2]+12>>2]+(c<<2)>>2]}c=(b>>>0)/3|0;d=1<>2];e=c>>>5|0;j=H[f+(e<<2)>>2];break d}i:{j:{if((d|0)==-1){break j}c=-1;b=d+1|0;b=(b>>>0)%3|0?b:d-2|0;if(!((b|0)==-1|H[H[h>>2]+(b>>>3&536870908)>>2]>>>b&1)){c=H[H[H[h+64>>2]+12>>2]+(b<<2)>>2]}k:{l:{if((d>>>0)%3|0){f=d-1|0;break l}f=d+2|0;b=-1;if((f|0)==-1){break k}}b=-1;if(H[H[h>>2]+(f>>>3&536870908)>>2]>>>f&1){break k}b=H[H[H[h+64>>2]+12>>2]+(f<<2)>>2]}g=(b|0)==-1;i=g?-1:(b>>>0)/3|0;if((c|0)!=-1){f=H[a+24>>2];d=(c>>>0)/3|0;e=d>>>5|0;j=H[f+(e<<2)>>2];d=1<>2];e=i>>>5|0;j=H[f+(e<<2)>>2];if(!(d&j)){break d}}f=H[a+52>>2]-4|0;H[a+52>>2]=f;break b}if(g){b=c;break d}if(H[(i>>>3&536870908)+f>>2]>>>i&1){b=c;break d}h=H[a+52>>2];H[h-4>>2]=b;if(H[a+56>>2]!=(h|0)){H[h>>2]=c;f=h+4|0;break c}m:{i=H[a+48>>2];e=h-i|0;g=e>>2;d=g+1|0;if(d>>>0<1073741824){b=e>>>1|0;e=e>>>0>=2147483644?1073741823:b>>>0>d>>>0?b:d;if(e){if(e>>>0>=1073741824){break m}d=pa(e<<2)}else{d=0}b=d+(g<<2)|0;H[b>>2]=c;f=b+4|0;if((h|0)!=(i|0)){while(1){b=b-4|0;h=h-4|0;H[b>>2]=H[h>>2];if((h|0)!=(i|0)){continue}break}}H[a+56>>2]=d+(e<<2);H[a+52>>2]=f;H[a+48>>2]=b;if(!i){break b}oa(i);f=H[a+52>>2];break b}sa();v()}wa();v()}H[(e<<2)+f>>2]=d|j;c=H[H[h+28>>2]+(b<<2)>>2];if((c|0)!=-1){continue}break}return 0}H[a+52>>2]=f}if(H[a+48>>2]!=(f|0)){continue}break}}return 1}function Lj(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0;H[a+8>>2]=e;m=a+32|0;h=H[m>>2];f=H[a+36>>2]-h>>2;a:{if(f>>>0>>0){ya(m,e-f|0);d=H[a+8>>2];break a}d=e;if(d>>>0>=f>>>0){break a}H[a+36>>2]=h+(e<<2);d=e}s=H[a+52>>2];n=H[a+48>>2];f=0;h=e>>>0>1073741823?-1:e<<2;l=ra(pa(h),0,h);b:{if((d|0)<=0){break b}g=H[a+32>>2];while(1){d=f<<2;h=H[d+l>>2];i=H[a+16>>2];c:{if((h|0)>(i|0)){H[d+g>>2]=i;break c}d=d+g|0;i=H[a+12>>2];if((i|0)>(h|0)){H[d>>2]=i;break c}H[d>>2]=h}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}if((d|0)<=0){break b}f=0;while(1){h=f<<2;d=h+c|0;h=H[b+h>>2]+H[g+h>>2]|0;H[d>>2]=h;d:{if((h|0)>H[a+16>>2]){h=h-H[a+20>>2]|0}else{if((h|0)>=H[a+12>>2]){break d}h=h+H[a+20>>2]|0}H[d>>2]=h}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}f=H[a+56>>2];q=H[f>>2];f=H[f+4>>2]-q|0;if((f|0)>=5){o=f>>>2|0;t=o>>>0<=2?2:o;u=e&-2;w=e&1;h=1;while(1){e:{f:{if((h|0)!=(o|0)){r=N(e,h);f=H[(h<<2)+q>>2];if((f|0)==-1|H[H[n>>2]+(f>>>3&536870908)>>2]>>>f&1){break f}f=H[H[H[n+64>>2]+12>>2]+(f<<2)>>2];if((f|0)==-1){break f}i=H[s>>2];g=H[n+28>>2];k=H[i+(H[g+(f<<2)>>2]<<2)>>2];if((k|0)>=(h|0)){break f}j=f+1|0;j=H[i+(H[g+(((j>>>0)%3|0?j:f-2|0)<<2)>>2]<<2)>>2];if((j|0)>=(h|0)){break f}f=H[i+(H[g+(f+((f>>>0)%3|0?-1:2)<<2)>>2]<<2)>>2];if((f|0)>=(h|0)){break f}g:{if((e|0)<=0){break g}g=N(e,f);i=N(e,j);k=N(e,k);f=0;p=0;if((e|0)!=1){while(1){H[(f<<2)+l>>2]=(H[(f+g<<2)+c>>2]+H[(f+i<<2)+c>>2]|0)-H[(f+k<<2)+c>>2];j=f|1;H[(j<<2)+l>>2]=(H[(g+j<<2)+c>>2]+H[(i+j<<2)+c>>2]|0)-H[(k+j<<2)+c>>2];f=f+2|0;p=p+2|0;if((u|0)!=(p|0)){continue}break}}if(!w){break g}H[(f<<2)+l>>2]=(H[(f+g<<2)+c>>2]+H[(f+i<<2)+c>>2]|0)-H[(f+k<<2)+c>>2]}if((d|0)<=0){break e}i=H[m>>2];f=0;while(1){d=f<<2;g=H[d+l>>2];k=H[a+16>>2];h:{if((g|0)>(k|0)){H[d+i>>2]=k;break h}d=d+i|0;k=H[a+12>>2];if((k|0)>(g|0)){H[d>>2]=k;break h}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;j=b+d|0;while(1){g=f<<2;d=g+k|0;g=H[g+j>>2]+H[g+i>>2]|0;H[d>>2]=g;i:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break i}g=g+H[a+20>>2]|0}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}break e}Ca();v()}if((d|0)<=0){break e}k=(N(h-1|0,e)<<2)+c|0;i=H[m>>2];f=0;while(1){d=f<<2;g=H[d+k>>2];j=H[a+16>>2];j:{if((g|0)>(j|0)){H[d+i>>2]=j;break j}d=d+i|0;j=H[a+12>>2];if((j|0)>(g|0)){H[d>>2]=j;break j}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;j=b+d|0;while(1){g=f<<2;d=g+k|0;g=H[g+j>>2]+H[g+i>>2]|0;H[d>>2]=g;k:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break k}g=g+H[a+20>>2]|0}H[d>>2]=g}d=H[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}h=h+1|0;if((t|0)!=(h|0)){continue}break}}oa(l);return 1}function Gb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=O(0),k=0,l=0,m=O(0);i=H[c>>2];a:{b:{f=H[b+4>>2];if(!f){break b}g=Uj(f);c:{if(g>>>0>=2){e=i;if(f>>>0<=e>>>0){e=(i>>>0)%(f>>>0)|0}c=H[H[b>>2]+(e<<2)>>2];if(!c){break b}if(g>>>0<=1){break c}while(1){c=H[c>>2];if(!c){break b}g=H[c+4>>2];if((g|0)!=(i|0)){if(f>>>0<=g>>>0){g=(g>>>0)%(f>>>0)|0}if((e|0)!=(g|0)){break b}}if(H[c+8>>2]!=(i|0)){continue}break}b=0;break a}e=f-1&i;c=H[H[b>>2]+(e<<2)>>2];if(!c){break b}}h=f-1|0;while(1){c=H[c>>2];if(!c){break b}g=H[c+4>>2];if((g|0)!=(i|0)&(g&h)!=(e|0)){break b}if(H[c+8>>2]!=(i|0)){continue}break}b=0;break a}c=pa(16);d=H[H[d>>2]>>2];H[c+12>>2]=0;H[c+8>>2]=d;H[c+4>>2]=i;H[c>>2]=0;m=O(H[b+12>>2]+1>>>0);j=L[b+16>>2];d:{if(m>O(j*O(f>>>0))?0:f){break d}e=2;d=(f-1&f)!=0|f>>>0<3|f<<1;j=O(U(O(m/j)));e:{if(j=O(0)){g=~~j>>>0;break e}g=0}d=d>>>0>g>>>0?d:g;f:{if((d|0)==1){break f}if(!(d&d-1)){e=d;break f}e=Kd(d);f=H[b+4>>2]}g:{if(e>>>0<=f>>>0){if(e>>>0>=f>>>0){break g}g=f>>>0<3;j=O(U(O(O(K[b+12>>2])/L[b+16>>2])));h:{if(j=O(0)){d=~~j>>>0;break h}d=0}i:{j:{if(g){break j}if(Uj(f)>>>0>1){break j}d=d>>>0<2?d:1<<32-Q(d-1|0);break i}d=Kd(d)}e=d>>>0>>0?e:d;if(f>>>0<=e>>>0){break g}}f=0;g=0;h=e;k:{l:{m:{n:{if(e){if(h>>>0>=1073741824){break n}d=pa(h<<2);e=H[b>>2];H[b>>2]=d;if(e){oa(e)}H[b+4>>2]=h;d=0;if(h>>>0>=4){e=h&-4;while(1){k=d<<2;H[k+H[b>>2]>>2]=0;H[H[b>>2]+(k|4)>>2]=0;H[H[b>>2]+(k|8)>>2]=0;H[H[b>>2]+(k|12)>>2]=0;d=d+4|0;g=g+4|0;if((e|0)!=(g|0)){continue}break}}e=h&3;if(e){while(1){H[H[b>>2]+(d<<2)>>2]=0;d=d+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}e=H[b+8>>2];if(!e){break k}d=b+8|0;f=H[e+4>>2];g=Uj(h);if(g>>>0<2){break m}f=f>>>0>=h>>>0?(f>>>0)%(h>>>0)|0:f;H[H[b>>2]+(f<<2)>>2]=d;d=H[e>>2];if(!d){break k}if(g>>>0<=1){break l}while(1){g=H[d+4>>2];if(h>>>0<=g>>>0){g=(g>>>0)%(h>>>0)|0}o:{if((f|0)==(g|0)){e=d;break o}l=g<<2;k=l+H[b>>2]|0;if(!H[k>>2]){H[k>>2]=e;e=d;f=g;break o}H[e>>2]=H[d>>2];H[d>>2]=H[H[l+H[b>>2]>>2]>>2];H[H[l+H[b>>2]>>2]>>2]=d}d=H[e>>2];if(d){continue}break}break k}d=H[b>>2];H[b>>2]=0;if(d){oa(d)}H[b+4>>2]=0;break k}wa();v()}f=h-1&f;H[H[b>>2]+(f<<2)>>2]=d;d=H[e>>2];if(!d){break k}}k=h-1|0;while(1){g=k&H[d+4>>2];p:{if((g|0)==(f|0)){e=d;break p}l=g<<2;h=l+H[b>>2]|0;if(H[h>>2]){H[e>>2]=H[d>>2];H[d>>2]=H[H[l+H[b>>2]>>2]>>2];H[H[l+H[b>>2]>>2]>>2]=d;break p}H[h>>2]=e;e=d;f=g}d=H[e>>2];if(d){continue}break}}}f=H[b+4>>2];d=f-1|0;if(!(d&f)){e=d&i;break d}if(f>>>0>i>>>0){e=i;break d}e=(i>>>0)%(f>>>0)|0}e=H[b>>2]+(e<<2)|0;d=H[e>>2];q:{r:{if(!d){d=b+8|0;H[c>>2]=H[d>>2];H[b+8>>2]=c;H[e>>2]=d;d=H[c>>2];if(!d){break q}d=H[d+4>>2];e=f-1|0;s:{if(!(e&f)){d=d&e;break s}if(d>>>0>>0){break s}d=(d>>>0)%(f>>>0)|0}d=H[b>>2]+(d<<2)|0;break r}H[c>>2]=H[d>>2]}H[d>>2]=c}H[b+12>>2]=H[b+12>>2]+1;b=1}F[a+4|0]=b;H[a>>2]=c}function Oe(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;f=ca-80|0;ca=f;e=H[c+36>>2];H[f+72>>2]=H[c+32>>2];H[f+76>>2]=e;g=H[c+28>>2];e=f- -64|0;H[e>>2]=H[c+24>>2];H[e+4>>2]=g;e=H[c+20>>2];H[f+56>>2]=H[c+16>>2];H[f+60>>2]=e;e=H[c+12>>2];H[f+48>>2]=H[c+8>>2];H[f+52>>2]=e;e=H[c+4>>2];H[f+40>>2]=H[c>>2];H[f+44>>2]=e;nc(a,f+40|0,f+24|0);a:{if(H[a>>2]){break a}if(F[a+15|0]<0){oa(H[a+4>>2])}if(I[f+31|0]!=1){b=pa(32);F[b+20|0]=0;c=I[1448]|I[1449]<<8|(I[1450]<<16|I[1451]<<24);F[b+16|0]=c;F[b+17|0]=c>>>8;F[b+18|0]=c>>>16;F[b+19|0]=c>>>24;c=I[1444]|I[1445]<<8|(I[1446]<<16|I[1447]<<24);d=I[1440]|I[1441]<<8|(I[1442]<<16|I[1443]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=c;F[b+13|0]=c>>>8;F[b+14|0]=c>>>16;F[b+15|0]=c>>>24;c=I[1436]|I[1437]<<8|(I[1438]<<16|I[1439]<<24);d=I[1432]|I[1433]<<8|(I[1434]<<16|I[1435]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=c;F[b+5|0]=c>>>8;F[b+6|0]=c>>>16;F[b+7|0]=c>>>24;H[a>>2]=-1;za(a+4|0,b,20);oa(b);break a}i=ca-16|0;ca=i;b:{c:{switch(I[f+32|0]){case 0:e=Ke(pa(48));H[e>>2]=13112;H[f+8>>2]=0;H[f+12>>2]=0;H[f>>2]=0;H[f+4>>2]=0;H[f+16>>2]=e;break b;case 1:e=Ke(pa(52));H[e+48>>2]=0;H[e>>2]=11276;H[f+8>>2]=0;H[f+12>>2]=0;H[f>>2]=0;H[f+4>>2]=0;H[f+16>>2]=e;break b;default:break c}}g=pa(32);F[g+28|0]=0;e=I[1550]|I[1551]<<8|(I[1552]<<16|I[1553]<<24);F[g+24|0]=e;F[g+25|0]=e>>>8;F[g+26|0]=e>>>16;F[g+27|0]=e>>>24;e=I[1546]|I[1547]<<8|(I[1548]<<16|I[1549]<<24);h=I[1542]|I[1543]<<8|(I[1544]<<16|I[1545]<<24);F[g+16|0]=h;F[g+17|0]=h>>>8;F[g+18|0]=h>>>16;F[g+19|0]=h>>>24;F[g+20|0]=e;F[g+21|0]=e>>>8;F[g+22|0]=e>>>16;F[g+23|0]=e>>>24;e=I[1538]|I[1539]<<8|(I[1540]<<16|I[1541]<<24);h=I[1534]|I[1535]<<8|(I[1536]<<16|I[1537]<<24);F[g+8|0]=h;F[g+9|0]=h>>>8;F[g+10|0]=h>>>16;F[g+11|0]=h>>>24;F[g+12|0]=e;F[g+13|0]=e>>>8;F[g+14|0]=e>>>16;F[g+15|0]=e>>>24;e=I[1530]|I[1531]<<8|(I[1532]<<16|I[1533]<<24);h=I[1526]|I[1527]<<8|(I[1528]<<16|I[1529]<<24);F[g|0]=h;F[g+1|0]=h>>>8;F[g+2|0]=h>>>16;F[g+3|0]=h>>>24;F[g+4|0]=e;F[g+5|0]=e>>>8;F[g+6|0]=e>>>16;F[g+7|0]=e>>>24;H[i>>2]=-1;e=i|4;za(e,g,28);j=F[i+15|0];H[f>>2]=H[i>>2];h=f+4|0;d:{if((j|0)>=0){j=H[e+4>>2];H[h>>2]=H[e>>2];H[h+4>>2]=j;H[h+8>>2]=H[e+8>>2];H[f+16>>2]=0;break d}za(h,H[i+4>>2],H[i+8>>2]);e=F[i+15|0];H[f+16>>2]=0;if((e|0)>=0){break d}oa(H[i+4>>2])}oa(g)}ca=i+16|0;e=H[f>>2];e:{if(e){H[a>>2]=e;a=a+4|0;if(F[f+15|0]>=0){b=f|4;c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;H[a+8>>2]=H[b+8>>2];break e}za(a,H[f+4>>2],H[f+8>>2]);break e}e=H[f+16>>2];H[f+16>>2]=0;H[e+44>>2]=d;te(a,e,b,c,d);if(!H[a>>2]){if(F[a+15|0]<0){oa(H[a+4>>2])}H[a>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0}ea[H[H[e>>2]+4>>2]](e)}a=H[f+16>>2];H[f+16>>2]=0;if(a){ea[H[H[a>>2]+4>>2]](a)}if(F[f+15|0]>=0){break a}oa(H[f+4>>2])}ca=f+80|0}function Gc(a,b,c){var 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;j=N(b,12)+a|0;H[j+12>>2]=H[j+8>>2];m=(c|0)==-1?-1:(c>>>0)/3|0;d=1;k=c;a:{b:{c:{while(1){d:{l=d;if(!d){if((k|0)==-1){break d}if((de(a,((k>>>0)%3|0?-1:2)+k|0)|0)==-1){break a}c=k+1|0;d=(c>>>0)%3|0?c:k-2|0;if((d|0)==-1){break a}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break a}d=H[H[H[a+4>>2]+12>>2]+(c<<2)>>2];if((d|0)==-1){break a}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break a}m=(c>>>0)/3|0}e:{d=H[a+56>>2]+(m>>>3&536870908)|0;h=H[d>>2];e=1<>2]=e|h;d=H[j+12>>2];f:{if((d|0)!=H[j+16>>2]){H[d>>2]=m;H[j+12>>2]=d+4;break f}n=H[j+8>>2];h=d-n|0;e=h>>2;i=e+1|0;if(i>>>0>=1073741824){break c}g=h>>>1|0;i=h>>>0>=2147483644?1073741823:i>>>0>>0?g:i;if(i){if(i>>>0>=1073741824){break b}g=pa(i<<2)}else{g=0}h=g+(e<<2)|0;H[h>>2]=m;e=h+4|0;if((d|0)!=(n|0)){while(1){h=h-4|0;d=d-4|0;H[h>>2]=H[d>>2];if((d|0)!=(n|0)){continue}break}}H[j+8>>2]=h;H[j+12>>2]=e;H[j+16>>2]=g+(i<<2);if(!n){break f}oa(n)}g=f+1|0;g:{h:{i:{if(!f){break i}if(g&1){if((c|0)==-1){c=-1;break g}d=c+1|0;c=(d>>>0)%3|0?d:c-2|0;break i}k=l?k:c;if((c|0)==-1){c=-1;break g}if((c>>>0)%3|0){d=c-1|0;break h}c=c+2|0}d=c;c=-1;if((d|0)==-1){break g}}c=H[H[H[a+4>>2]+12>>2]+(d<<2)>>2];h=-1;f=-1;e=d+1|0;e=(e>>>0)%3|0?e:d-2|0;if((e|0)>=0){f=(e>>>0)/3|0;f=H[(H[H[a>>2]+96>>2]+N(f,12)|0)+(e-N(f,3)<<2)>>2]}j:{if((c|0)==-1){break j}i=((c>>>0)%3|0?-1:2)+c|0;if((i|0)<0){break j}e=(i>>>0)/3|0;h=H[(H[H[a>>2]+96>>2]+N(e,12)|0)+(i-N(e,3)<<2)>>2]}if((f|0)!=(h|0)){c=-1;break g}k:{l:{f=((d>>>0)%3|0?-1:2)+d|0;if((f|0)>=0){d=(f>>>0)/3|0;if((c|0)!=-1){break l}c=-1;break g}d=-1;if((c|0)!=-1){break k}c=-1;break g}d=H[(H[H[a>>2]+96>>2]+N(d,12)|0)+(f-N(d,3)<<2)>>2]}f=c+1|0;e=(f>>>0)%3|0?f:c-2|0;if((e|0)>=0){f=(e>>>0)/3|0;f=H[(H[H[a>>2]+96>>2]+N(f,12)|0)+(e-N(f,3)<<2)>>2]}else{f=-1}if((f|0)!=(d|0)){c=-1;break g}f=g;m=(c>>>0)/3|0;d=H[a+56>>2]+(m>>>3&268435452)|0;h=H[d>>2];e=1<>2]-4|0;g=H[l>>2];d=H[a+56>>2]+(g>>>3&536870908)|0;c=H[d>>2];o=d,p=Vj(g)&c,H[o>>2]=p;H[j+12>>2]=l;break a}d=0;if(l){continue}break a}break}k=-1;de(a,-1);break a}sa();v()}wa();v()}H[((b<<2)+a|0)+44>>2]=k;b=H[j+12>>2];i=H[j+8>>2];m:{if((b|0)==(i|0)){break m}c=b-i|0;b=c>>2;b=b>>>0<=1?1:b;k=b&1;e=H[a+56>>2];d=0;if(c>>>0>=8){f=b&-2;c=0;while(1){l=d<<2;g=H[l+i>>2];b=e+(g>>>3&536870908)|0;a=H[b>>2];o=b,p=Vj(g)&a,H[o>>2]=p;g=H[i+(l|4)>>2];b=e+(g>>>3&536870908)|0;a=H[b>>2];o=b,p=Vj(g)&a,H[o>>2]=p;d=d+2|0;c=c+2|0;if((f|0)!=(c|0)){continue}break}}if(!k){break m}c=H[i+(d<<2)>>2];b=e+(c>>>3&536870908)|0;a=H[b>>2];o=b,p=Vj(c)&a,H[o>>2]=p}}function Gj(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,k=0,l=0,m=0;h=ca-32|0;ca=h;a:{if(J[b+38>>1]<=513){c=H[b+20>>2];f=H[b+12>>2];d=H[b+16>>2];if((c|0)>=(f|0)&d>>>0>=K[b+8>>2]|(c|0)>(f|0)){break a}f=I[d+H[b>>2]|0];d=d+1|0;c=d?c:c+1|0;H[b+16>>2]=d;H[b+20>>2]=c;if(f){break a}}b:{if(!Xa(1,h+28|0,b)){break b}d=H[h+28>>2];c=H[H[a+48>>2]+64>>2];if(d>>>0>H[c+4>>2]-H[c>>2]>>2>>>0){break b}c:{if(d){Wa(a+60|0,d);c=h+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;if(!ta(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|H[g>>2]}else{i=H[g>>2]&(f^-1)}H[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Xa(1,h+28|0,b)){break b}d=H[h+28>>2];c=H[H[a+48>>2]+64>>2];if(d>>>0>H[c+4>>2]-H[c>>2]>>2>>>0){break b}if(d){e=0;Wa(a+72|0,d);c=h+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;if(!ta(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|H[g>>2]}else{i=H[g>>2]&(f^-1)}H[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Xa(1,h+28|0,b)){break b}d=H[h+28>>2];c=H[H[a+48>>2]+64>>2];if(d>>>0>H[c+4>>2]-H[c>>2]>>2>>>0){break b}if(d){e=0;Wa(a+84|0,d);c=h+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;if(!ta(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|H[g>>2]}else{i=H[g>>2]&(f^-1)}H[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Xa(1,h+28|0,b)){break b}d=H[h+28>>2];c=H[H[a+48>>2]+64>>2];if(d>>>0>H[c+4>>2]-H[c>>2]>>2>>>0){break b}if(d){e=0;Wa(a+96|0,d);c=h+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;if(!ta(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|H[g>>2]}else{i=H[g>>2]&(f^-1)}H[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}e=0;c=H[b+8>>2];f=H[b+12>>2];d=c;c=H[b+20>>2];i=c;g=H[b+16>>2];j=g+4|0;c=j>>>0<4?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break a}m=H[b>>2];k=m+g|0;l=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);H[b+16>>2]=j;H[b+20>>2]=c;k=d;d=f;c=i;f=g+8|0;c=f>>>0<8?c+1|0:c;if(f>>>0>k>>>0&(c|0)>=(d|0)|(c|0)>(d|0)){break a}d=j+m|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=f;H[b+20>>2]=c;if((d|0)<(l|0)){break a}H[a+16>>2]=d;H[a+12>>2]=l;c=(d>>31)-((l>>31)+(d>>>0>>0)|0)|0;b=d-l|0;if(!c&b>>>0>2147483646|c){break a}e=1;b=b+1|0;H[a+20>>2]=b;c=b>>>1|0;H[a+24>>2]=c;H[a+28>>2]=0-c;if(b&1){break a}H[a+24>>2]=c-1;break a}}e=0}ca=h+32|0;return e|0}function pj(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,k=0,l=0,m=0;h=ca-32|0;ca=h;a:{if(J[b+38>>1]<=513){c=H[b+20>>2];f=H[b+12>>2];d=H[b+16>>2];if((c|0)>=(f|0)&d>>>0>=K[b+8>>2]|(c|0)>(f|0)){break a}f=I[d+H[b>>2]|0];d=d+1|0;c=d?c:c+1|0;H[b+16>>2]=d;H[b+20>>2]=c;if(f){break a}}b:{if(!Xa(1,h+28|0,b)){break b}d=H[h+28>>2];c=H[a+48>>2];if(d>>>0>H[c+4>>2]-H[c>>2]>>2>>>0){break b}c:{if(d){Wa(a+60|0,d);c=h+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;if(!ta(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|H[g>>2]}else{i=H[g>>2]&(f^-1)}H[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Xa(1,h+28|0,b)){break b}d=H[h+28>>2];c=H[a+48>>2];if(d>>>0>H[c+4>>2]-H[c>>2]>>2>>>0){break b}if(d){e=0;Wa(a+72|0,d);c=h+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;if(!ta(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|H[g>>2]}else{i=H[g>>2]&(f^-1)}H[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Xa(1,h+28|0,b)){break b}d=H[h+28>>2];c=H[a+48>>2];if(d>>>0>H[c+4>>2]-H[c>>2]>>2>>>0){break b}if(d){e=0;Wa(a+84|0,d);c=h+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;if(!ta(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|H[g>>2]}else{i=H[g>>2]&(f^-1)}H[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Xa(1,h+28|0,b)){break b}d=H[h+28>>2];c=H[a+48>>2];if(d>>>0>H[c+4>>2]-H[c>>2]>>2>>>0){break b}if(d){e=0;Wa(a+96|0,d);c=h+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;if(!ta(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|H[g>>2]}else{i=H[g>>2]&(f^-1)}H[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}e=0;c=H[b+8>>2];f=H[b+12>>2];d=c;c=H[b+20>>2];i=c;g=H[b+16>>2];j=g+4|0;c=j>>>0<4?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break a}m=H[b>>2];k=m+g|0;l=I[k|0]|I[k+1|0]<<8|(I[k+2|0]<<16|I[k+3|0]<<24);H[b+16>>2]=j;H[b+20>>2]=c;k=d;d=f;c=i;f=g+8|0;c=f>>>0<8?c+1|0:c;if(f>>>0>k>>>0&(c|0)>=(d|0)|(c|0)>(d|0)){break a}d=j+m|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=f;H[b+20>>2]=c;if((d|0)<(l|0)){break a}H[a+16>>2]=d;H[a+12>>2]=l;c=(d>>31)-((l>>31)+(d>>>0>>0)|0)|0;b=d-l|0;if(!c&b>>>0>2147483646|c){break a}e=1;b=b+1|0;H[a+20>>2]=b;c=b>>>1|0;H[a+24>>2]=c;H[a+28>>2]=0-c;if(b&1){break a}H[a+24>>2]=c-1;break a}}e=0}ca=h+32|0;return e|0}function xe(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if((b|0)==-1){return 1}g=(b>>>0)/3|0;if(!(H[H[a+24>>2]+(g>>>3&268435452)>>2]>>>g&1)){f=H[a+48>>2];H[a+52>>2]=f;a:{if((f|0)!=H[a+56>>2]){H[f>>2]=b;H[a+52>>2]=f+4;break a}d=pa(4);H[d>>2]=b;c=d+4|0;H[a+56>>2]=c;H[a+52>>2]=c;H[a+48>>2]=d;if(!f){break a}oa(f)}e=-1;d=H[a+4>>2];c=b+1|0;i=(c>>>0)%3|0?c:b-2|0;if((i|0)!=-1){e=H[H[d>>2]+(i<<2)>>2]}b:{h=b-N(g,3)|0;if(h){c=b-1|0;break b}c=b+2|0;if((c|0)!=-1){break b}return 0}if((e|0)==-1){return 0}j=H[H[d>>2]+(c<<2)>>2];if((j|0)==-1){return 0}c=H[a+36>>2];f=c+(e>>>3&536870908)|0;g=H[f>>2];d=1<>2]=d|g;Ua(a+8|0,e,i);c=H[a+36>>2]}g=(j>>>3&536870908)+c|0;d=H[g>>2];c=1<>2]=c|d;Ua(a+8|0,j,(h?-1:2)+b|0)}c=H[a+52>>2];if((c|0)==H[a+48>>2]){return 1}j=a+8|0;while(1){c:{d:{c=c-4|0;b=H[c>>2];if((b|0)==-1){break d}d=(b>>>0)/3|0;f=H[a+24>>2]+(d>>>3&268435452)|0;g=H[f>>2];d=1<>2]=d|g;while(1){i=H[a+4>>2];e=H[H[i>>2]+(b<<2)>>2];if((e|0)==-1){return 0}e:{f:{h=H[a+36>>2]+(e>>>3&536870908)|0;f=H[h>>2];g=1<>2]+(e<<2)>>2];h:{if((d|0)==-1){break h}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break h}d=H[H[i+12>>2]+(c<<2)>>2];if((d|0)!=-1){break g}}H[h>>2]=f|g;Ua(j,e,b);break f}H[h>>2]=f|g;Ua(j,e,b);c=d+1|0;if((((c>>>0)%3|0?c:d-2|0)|0)==-1){break f}c=b-2|0;d=b+1|0;b=-1;c=(d>>>0)%3|0?d:c;if((c|0)!=-1){b=H[H[H[a+4>>2]+12>>2]+(c<<2)>>2]}c=(b>>>0)/3|0;d=1<>2];f=c>>>5|0;i=H[e+(f<<2)>>2];break e}c=-1;g=H[a+4>>2];d=b+1|0;d=(d>>>0)%3|0?d:b-2|0;if((d|0)!=-1){c=H[H[g+12>>2]+(d<<2)>>2]}i:{j:{if((b>>>0)%3|0){e=b-1|0;break j}e=b+2|0;b=-1;if((e|0)==-1){break i}}b=H[H[g+12>>2]+(e<<2)>>2]}g=(b|0)==-1;h=g?-1:(b>>>0)/3|0;k:{if((c|0)!=-1){e=H[a+24>>2];d=(c>>>0)/3|0;f=d>>>5|0;i=H[e+(f<<2)>>2];d=1<>2];f=h>>>5|0;i=H[e+(f<<2)>>2];if(!(d&i)){break e}}c=H[a+52>>2]-4|0;H[a+52>>2]=c;break c}if(g){b=c;break e}if(H[(h>>>3&536870908)+e>>2]>>>h&1){b=c;break e}e=H[a+52>>2];H[e-4>>2]=b;if(H[a+56>>2]!=(e|0)){H[e>>2]=c;c=e+4|0;break d}l:{h=H[a+48>>2];f=e-h|0;g=f>>2;d=g+1|0;if(d>>>0<1073741824){b=f>>>1|0;f=f>>>0>=2147483644?1073741823:b>>>0>d>>>0?b:d;if(f){if(f>>>0>=1073741824){break l}d=pa(f<<2)}else{d=0}b=d+(g<<2)|0;H[b>>2]=c;c=b+4|0;if((e|0)!=(h|0)){while(1){b=b-4|0;e=e-4|0;H[b>>2]=H[e>>2];if((e|0)!=(h|0)){continue}break}}H[a+56>>2]=d+(f<<2);H[a+52>>2]=c;H[a+48>>2]=b;if(!h){break c}oa(h);c=H[a+52>>2];break c}sa();v()}wa();v()}H[(f<<2)+e>>2]=d|i;if((b|0)!=-1){continue}break}return 0}H[a+52>>2]=c}if(H[a+48>>2]!=(c|0)){continue}break}}return 1}function uj(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,k=0,l=0,m=0,n=0,o=0;g=ca-32|0;ca=g;H[a+68>>2]=f;d=H[a+56>>2];e=H[d>>2];d=H[d+4>>2];H[g+24>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+60|0;d=d>>>2|0;n=d>>>0<=1?1:d;o=a+112|0;while(1){e=H[a+56>>2];d=H[e>>2];if(H[e+4>>2]-d>>2>>>0<=j>>>0){break a}Nb(m,H[d+(j<<2)>>2],g+16|0);i=H[g+20>>2];d=i>>31;h=H[g+16>>2];e=h>>31;f=(d^i)-d+((e^h)-e)|0;k=H[g+24>>2];d=k>>31;e=(d^k)-d|0;d=0;l=e;e=e+f|0;d=l>>>0>e>>>0?1:d;b:{if(!(d|e)){H[g+16>>2]=H[a+108>>2];break b}f=H[a+108>>2];l=f>>31;h=Sj(Rj(f,l,h,h>>31),da,e,d);H[g+16>>2]=h;d=Sj(Rj(f,l,i,i>>31),da,e,d);H[g+20>>2]=d;e=d;d=d>>31;e=(e^d)-d|0;d=h>>31;d=e+((d^h)-d|0)|0;if((k|0)>=0){H[g+24>>2]=f-d;break b}H[g+24>>2]=d-f}d=Ba(o);f=H[g+16>>2];c:{if(d){H[g+24>>2]=0-H[g+24>>2];e=0-H[g+20>>2]|0;H[g+20>>2]=e;f=0-f|0;H[g+16>>2]=f;break c}e=H[g+20>>2]}d:{if((f|0)>=0){f=H[a+108>>2];d=f+H[g+24>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=H[g+24>>2];f=d>>31;f=(d^f)-f|0;break e}d=H[g+24>>2];f=d>>31;f=H[a+100>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=H[a+100>>2]+(d-(d^e)|0)|0}e=H[a+100>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}i=H[a+108>>2];if((i|0)>=(d|0)){break g}d=(i<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}i=H[a+108>>2];if((i|0)<=(d|0)){break h}d=(i<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=H[a+108>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=H[a+108>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}H[g+12>>2]=d;H[g+8>>2]=f;j:{if(H[a+8>>2]<=0){break j}i=H[a+32>>2];f=0;while(1){d=f<<2;e=H[d+(g+8|0)>>2];h=H[a+16>>2];k:{if((e|0)>(h|0)){H[d+i>>2]=h;break k}d=d+i|0;h=H[a+12>>2];if((h|0)>(e|0)){H[d>>2]=h;break k}H[d>>2]=e}f=f+1|0;e=H[a+8>>2];if((f|0)<(e|0)){continue}break}d=0;if((e|0)<=0){break j}e=j<<3;h=e+c|0;k=b+e|0;while(1){f=d<<2;e=f+h|0;f=H[f+k>>2]+H[f+i>>2]|0;H[e>>2]=f;l:{if((f|0)>H[a+16>>2]){f=f-H[a+20>>2]|0}else{if((f|0)>=H[a+12>>2]){break l}f=f+H[a+20>>2]|0}H[e>>2]=f}d=d+1|0;if((d|0)>2]){continue}break}}j=j+1|0;if((n|0)!=(j|0)){continue}break}}ca=g+32|0;return 1}Ca();v()}function dj(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,k=0,l=0,m=0,n=0,o=0;g=ca-32|0;ca=g;H[a+68>>2]=f;d=H[a+56>>2];e=H[d>>2];d=H[d+4>>2];H[g+24>>2]=0;H[g+16>>2]=0;H[g+20>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+60|0;d=d>>>2|0;n=d>>>0<=1?1:d;o=a+112|0;while(1){e=H[a+56>>2];d=H[e>>2];if(H[e+4>>2]-d>>2>>>0<=j>>>0){break a}Lb(m,H[d+(j<<2)>>2],g+16|0);i=H[g+20>>2];d=i>>31;h=H[g+16>>2];e=h>>31;f=(d^i)-d+((e^h)-e)|0;k=H[g+24>>2];d=k>>31;e=(d^k)-d|0;d=0;l=e;e=e+f|0;d=l>>>0>e>>>0?1:d;b:{if(!(d|e)){H[g+16>>2]=H[a+108>>2];break b}f=H[a+108>>2];l=f>>31;h=Sj(Rj(f,l,h,h>>31),da,e,d);H[g+16>>2]=h;d=Sj(Rj(f,l,i,i>>31),da,e,d);H[g+20>>2]=d;e=d;d=d>>31;e=(e^d)-d|0;d=h>>31;d=e+((d^h)-d|0)|0;if((k|0)>=0){H[g+24>>2]=f-d;break b}H[g+24>>2]=d-f}d=Ba(o);f=H[g+16>>2];c:{if(d){H[g+24>>2]=0-H[g+24>>2];e=0-H[g+20>>2]|0;H[g+20>>2]=e;f=0-f|0;H[g+16>>2]=f;break c}e=H[g+20>>2]}d:{if((f|0)>=0){f=H[a+108>>2];d=f+H[g+24>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=H[g+24>>2];f=d>>31;f=(d^f)-f|0;break e}d=H[g+24>>2];f=d>>31;f=H[a+100>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=H[a+100>>2]+(d-(d^e)|0)|0}e=H[a+100>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}i=H[a+108>>2];if((i|0)>=(d|0)){break g}d=(i<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}i=H[a+108>>2];if((i|0)<=(d|0)){break h}d=(i<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=H[a+108>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=H[a+108>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}H[g+12>>2]=d;H[g+8>>2]=f;j:{if(H[a+8>>2]<=0){break j}i=H[a+32>>2];f=0;while(1){d=f<<2;e=H[d+(g+8|0)>>2];h=H[a+16>>2];k:{if((e|0)>(h|0)){H[d+i>>2]=h;break k}d=d+i|0;h=H[a+12>>2];if((h|0)>(e|0)){H[d>>2]=h;break k}H[d>>2]=e}f=f+1|0;e=H[a+8>>2];if((f|0)<(e|0)){continue}break}d=0;if((e|0)<=0){break j}e=j<<3;h=e+c|0;k=b+e|0;while(1){f=d<<2;e=f+h|0;f=H[f+k>>2]+H[f+i>>2]|0;H[e>>2]=f;l:{if((f|0)>H[a+16>>2]){f=f-H[a+20>>2]|0}else{if((f|0)>=H[a+12>>2]){break l}f=f+H[a+20>>2]|0}H[e>>2]=f}d=d+1|0;if((d|0)>2]){continue}break}}j=j+1|0;if((n|0)!=(j|0)){continue}break}}ca=g+32|0;return 1}Ca();v()}function ke(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=ca-80|0;ca=h;a:{b:{if(I[H[a+28>>2]+36|0]<=1){d=H[b+20>>2];f=H[b+16>>2];c=f+4|0;d=c>>>0<4?d+1|0:d;g=H[b+12>>2];if(K[b+8>>2]>>0&(g|0)<=(d|0)|(d|0)>(g|0)){break a}f=f+H[b>>2]|0;j=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[b+16>>2]=c;H[b+20>>2]=d;break b}if(!Pc(1,h+76|0,b)){break a}j=H[h+76>>2]}if(!j){break a}d=H[b+8>>2];c=H[b+16>>2];d=Rj(d-c|0,H[b+12>>2]-(H[b+20>>2]+(c>>>0>d>>>0)|0)|0,5,0);c=da;if(d>>>0>>0&(c|0)<=0|(c|0)<0){break a}c=H[a+4>>2];d=H[a+8>>2]-c>>2;c:{if(d>>>0>>0){ya(a+4|0,j-d|0);break c}if(d>>>0<=j>>>0){break c}H[a+8>>2]=c+(j<<2)}p=a+16|0;l=H[a+32>>2];while(1){i=H[b+12>>2];c=i;d=H[b+20>>2];e=H[b+8>>2];f=H[b+16>>2];if((c|0)<=(d|0)&e>>>0<=f>>>0|(c|0)<(d|0)){e=0;break a}n=H[b>>2];q=I[n+f|0];c=d;g=f+1|0;c=g?c:c+1|0;H[b+16>>2]=g;H[b+20>>2]=c;if(e>>>0<=g>>>0&(c|0)>=(i|0)|(c|0)>(i|0)){e=0;break a}g=I[g+n|0];c=d;k=f+2|0;c=k>>>0<2?c+1|0:c;H[b+16>>2]=k;H[b+20>>2]=c;if(e>>>0<=k>>>0&(c|0)>=(i|0)|(c|0)>(i|0)){e=0;break a}k=I[k+n|0];c=d;m=f+3|0;c=m>>>0<3?c+1|0:c;H[b+16>>2]=m;H[b+20>>2]=c;if(e>>>0<=m>>>0&(c|0)>=(i|0)|(c|0)>(i|0)){e=0;break a}e=I[m+n|0];c=d;d=f+4|0;c=d>>>0<4?c+1|0:c;H[b+16>>2]=d;H[b+20>>2]=c;if(q>>>0>4){e=0;break a}if((g-12&255)>>>0<245){e=0;break a}if(!k){e=0;break a}m=Eb(h+8|0);i=(e|0)!=0;d=g-1|0;if(d>>>0<=10){c=H[(d<<2)+13584>>2]}else{c=-1}d=N(c,k);lc(m,q,k,g,i,d,d>>31);d:{d=J[H[a+28>>2]+36>>1];e:{if(((d<<8|d>>>8)&65535)>>>0<=258){c=H[b+20>>2];f=H[b+16>>2];d=f+2|0;c=d>>>0<2?c+1|0:c;e=H[b+12>>2];if(K[b+8>>2]>>0&(e|0)<=(c|0)|(c|0)>(e|0)){break d}f=f+H[b>>2]|0;e=I[f|0]|I[f+1|0]<<8;H[b+16>>2]=d;H[b+20>>2]=c;break e}if(!Pc(1,h+4|0,b)){break d}e=H[h+4>>2]}H[h+68>>2]=e;d=jc(pa(96),m);ea[H[H[l>>2]+8>>2]](l,H[l+12>>2]-H[l+8>>2]>>2,d);d=(H[l+12>>2]-H[l+8>>2]>>2)-1|0;f=d<<2;H[H[f+H[l+8>>2]>>2]+60>>2]=e;H[H[a+4>>2]+(o<<2)>>2]=d;e=H[a+16>>2];c=H[a+20>>2]-e>>2;f:{if((c|0)>(d|0)){break f}H[h>>2]=-1;d=d+1|0;if(d>>>0>c>>>0){Pa(p,d-c|0,h);e=H[p>>2];break f}if(c>>>0<=d>>>0){break f}H[a+20>>2]=(d<<2)+e}H[e+f>>2]=o;e=1;o=o+1|0;if((o|0)!=(j|0)){continue}break a}break}e=0}ca=h+80|0;return e|0}function nd(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,k=0,l=0,m=0,n=0,o=0;n=ea[H[H[a>>2]+44>>2]](a)|0;a:{if((n|0)<=0){break a}i=H[b+4>>2]-H[b>>2]>>2;e=ca+-64|0;ca=e;f=Eb(e);d=N(H[3400],n);lc(f,H[H[a+8>>2]+56>>2],n&255,5,0,d,d>>31);f=jc(pa(96),f);F[f+84|0]=1;H[f+72>>2]=H[f+68>>2];mb(f,i);H[f+60>>2]=H[H[a+8>>2]+60>>2];d=H[a+16>>2];H[a+16>>2]=f;if(d){Ga(d)}ca=e- -64|0;h=H[a+16>>2];if(!H[h+80>>2]){break a}j=H[H[h>>2]>>2];if(!j){break a}m=H[c+12>>2];e=m;d=H[c+20>>2];g=H[c+8>>2];k=H[c+16>>2];if((e|0)<=(d|0)&g>>>0<=k>>>0|(d|0)>(e|0)){break a}l=N(i,n);i=j+H[h+48>>2]|0;h=H[c>>2];j=I[h+k|0];e=k+1|0;f=e?d:d+1|0;H[c+16>>2]=e;H[c+20>>2]=f;b:{c:{if(j){if(kd(l,n,c,i)){break c}break a}if((f|0)>=(m|0)&e>>>0>=g>>>0|(f|0)>(m|0)){break a}g=I[e+h|0];f=k+2|0;d=f>>>0<2?d+1|0:d;H[c+16>>2]=f;H[c+20>>2]=d;d=H[H[a+16>>2]+64>>2];d=H[d+4>>2]-H[d>>2]|0;if((g|0)==H[3400]){e=l<<2;if(e>>>0>d>>>0){break a}g=H[c+8>>2];k=H[c+12>>2];j=H[c+20>>2];d=H[c+16>>2];f=e+d|0;j=f>>>0>>0?j+1|0:j;if(f>>>0>g>>>0&(j|0)>=(k|0)|(j|0)>(k|0)){break a}qa(i,d+H[c>>2]|0,e);f=H[c+20>>2];d=e+H[c+16>>2]|0;f=d>>>0>>0?f+1|0:f;H[c+16>>2]=d;H[c+20>>2]=f;break c}if(d>>>0>>0){break a}d=H[c+8>>2];f=H[c+16>>2];e=d-f|0;m=d>>>0>>0;d=H[c+20>>2];k=H[c+12>>2]-(m+d|0)|0;m=Rj(g,0,l,0)>>>0>e>>>0;e=da;if(m&(e|0)>=(k|0)|(e|0)>(k|0)){break a}e=1;if(!l){break b}h=0;while(1){k=H[c+8>>2];j=H[c+12>>2];e=f+g|0;d=e>>>0>>0?d+1|0:d;if(e>>>0>k>>>0&(d|0)>=(j|0)|(d|0)>(j|0)){return 0}qa(i+(h<<2)|0,H[c>>2]+f|0,g);d=H[c+20>>2];f=g+H[c+16>>2]|0;d=f>>>0>>0?d+1|0:d;H[c+16>>2]=f;H[c+20>>2]=d;h=h+1|0;if((l|0)!=(h|0)){continue}break}}e=1;if(!l){break b}d=H[a+20>>2];if(d){e=0;if(ea[H[H[d>>2]+32>>2]](d)|0){break b}}g=0;h=0;d:{if((l|0)<=0){break d}if((l|0)!=1){f=l&-2;while(1){e=g<<2;d=H[e+i>>2];H[e+i>>2]=0-(d&1)^d>>>1;d=e|4;e=H[d+i>>2];H[d+i>>2]=0-(e&1)^e>>>1;g=g+2|0;h=h+2|0;if((f|0)!=(h|0)){continue}break}}if(!(l&1)){break d}d=g<<2;f=H[d+i>>2];H[d+i>>2]=0-(f&1)^f>>>1}e=0}d=e;f=H[a+20>>2];e:{if(!f){break e}if(!(ea[H[H[f>>2]+40>>2]](f,c)|0)){break a}if(d){break e}a=H[a+20>>2];if(!(ea[H[H[a>>2]+44>>2]](a,i,i,l,n,H[b>>2])|0)){break a}}o=1}return o|0}function pb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=ca-32|0;ca=h;a:{b:{if(H[a+8>>2]<<5>>>0>=b>>>0){break b}if((b|0)<0){break a}b=(b-1>>>5|0)+1|0;c=pa(b<<2);H[h+24>>2]=b;H[h+20>>2]=0;H[h+16>>2]=c;b=H[a>>2];H[h+12>>2]=0;H[h+8>>2]=b;c=H[a+4>>2];H[h+4>>2]=c&31;H[h>>2]=b+(c>>>3&536870908);e=ca-32|0;ca=e;i=H[h+4>>2];g=H[h+12>>2];j=H[h>>2];d=H[h+8>>2];b=(i-g|0)+(j-d<<3)|0;f=H[h+20>>2];c=b+f|0;H[h+20>>2]=c;if(!((c-1^f-1)>>>0<32?f:0)){H[H[h+16>>2]+((c>>>0>=33?c-1>>>5|0:0)<<2)>>2]=0}c=H[h+16>>2]+(f>>>3&536870908)|0;f=f&31;c:{if((f|0)==(g|0)){if((b|0)<=0){break c}if(g){i=32-g|0;f=(b|0)<(i|0)?b:i;i=-1<>>i-f;H[c>>2]=H[c>>2]&(i^-1)|i&H[d>>2];d=d+4|0;c=(g+f>>>3&536870908)+c|0;b=b-f|0}g=(b|0)/32|0;if(b+31>>>0>=63){va(c,d,g<<2)}b=b-(g<<5)|0;if((b|0)<=0){break c}f=c;c=g<<2;g=f+c|0;b=-1>>>32-b|0;H[g>>2]=H[g>>2]&(b^-1)|b&H[c+d>>2];break c}H[e+28>>2]=g;H[e+24>>2]=d;H[e+20>>2]=i;H[e+16>>2]=j;H[e+12>>2]=f;H[e+8>>2]=c;b=H[e+28>>2];c=H[e+24>>2];g=(H[e+20>>2]-b|0)+(H[e+16>>2]-c<<3)|0;d:{if((g|0)<=0){b=H[e+12>>2];d=H[e+8>>2];break d}e:{if(!b){b=H[e+12>>2];break e}d=H[e+12>>2];j=32-d|0;k=32-b|0;f=(g|0)<(k|0)?g:k;i=f>>>0>j>>>0?j:f;l=H[e+8>>2];m=H[l>>2]&(-1<>>j-i^-1);j=H[c>>2]&(-1<>>k-f);H[l>>2]=m|(b>>>0>>0?j<>>b-d|0);c=d+i|0;b=c&31;H[e+12>>2]=b;d=l+(c>>>3&536870908)|0;H[e+8>>2]=d;c=f-i|0;if((c|0)>0){H[d>>2]=H[d>>2]&(-1>>>32-c^-1)|j>>>i+H[e+28>>2];H[e+12>>2]=c;b=c}g=g-f|0;c=H[e+24>>2]+4|0;H[e+24>>2]=c}i=-1<=32){j=i^-1;while(1){d=H[e+8>>2];c=H[c>>2];H[d>>2]=j&H[d>>2]|c<>2]=d+4;H[d+4>>2]=i&H[d+4>>2]|c>>>f;c=H[e+24>>2]+4|0;H[e+24>>2]=c;d=g>>>0>63;g=g-32|0;if(d){continue}break}}d=H[e+8>>2];if((g|0)<=0){break d}j=f;f=(g|0)>(f|0)?f:g;j=H[d>>2]&(i&-1>>>j-f^-1);i=H[c>>2]&-1>>>32-g;H[d>>2]=j|i<>2]=c;d=(b>>>3&536870908)+d|0;H[e+8>>2]=d;b=g-f|0;if((b|0)<=0){b=c;break d}H[d>>2]=H[d>>2]&(-1>>>32-b^-1)|i>>>f;H[e+12>>2]=b}H[e+4>>2]=b;H[e>>2]=d}ca=e+32|0;b=H[a>>2];H[a>>2]=H[h+16>>2];H[h+16>>2]=b;c=H[a+4>>2];H[a+4>>2]=H[h+20>>2];H[h+20>>2]=c;c=H[a+8>>2];H[a+8>>2]=H[h+24>>2];H[h+24>>2]=c;if(!b){break b}oa(b)}ca=h+32|0;return}sa();v()}function Ne(a,b){var 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;c=J[b+38>>1];a:{if(!c){break a}b:{if(c>>>0<=511){g=H[b+8>>2];e=H[b+12>>2];d=H[b+20>>2];c=H[b+16>>2];i=c+4|0;d=i>>>0<4?d+1|0:d;if(g>>>0>>0&(d|0)>=(e|0)|(d|0)>(e|0)){break a}c=c+H[b>>2]|0;f=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[a+12>>2]=f;d=H[b+20>>2];c=H[b+16>>2]+4|0;d=c>>>0<4?d+1|0:d;H[b+16>>2]=c;H[b+20>>2]=d;break b}if(!hb(1,a+12|0,b)){break a}c=H[b+16>>2];d=H[b+20>>2];f=H[a+12>>2]}e=H[b+8>>2];i=e-c|0;c=H[b+12>>2]-(d+(c>>>0>e>>>0)|0)|0;if(i>>>0>>6>>>0&(c|0)<=0|(c|0)<0){break a}d=H[a>>2];c=H[a+4>>2]-d>>2;c:{if(c>>>0>>0){ya(a,f-c|0);f=H[a+12>>2];break c}if(c>>>0<=f>>>0){break c}H[a+4>>2]=d+(f<<2)}if(!f){return 1}c=H[b+16>>2];d=H[b+20>>2];l=H[a>>2];i=H[b+8>>2];j=H[b+12>>2];g=0;while(1){if((d|0)>=(j|0)&c>>>0>=i>>>0|(d|0)>(j|0)){return 0}m=H[b>>2];k=I[m+c|0];c=c+1|0;d=c?d:d+1|0;H[b+16>>2]=c;H[b+20>>2]=d;e=k>>>2|0;h=0;d:{e:{f:{g:{n=k&3;switch(n|0){case 0:break e;case 3:break g;default:break f}}e=e+g|0;if(e>>>0>=f>>>0){return 0}ra(l+(g<<2)|0,0,(k&252)+4|0);g=e;break d}while(1){if((c|0)==(i|0)&(d|0)==(j|0)){break a}f=I[c+m|0];c=c+1|0;d=c?d:d+1|0;H[b+16>>2]=c;H[b+20>>2]=d;e=f<<(h<<3|6)|e;h=h+1|0;if((n|0)!=(h|0)){continue}break}}H[l+(g<<2)>>2]=e}f=H[a+12>>2];g=g+1|0;if(f>>>0>g>>>0){continue}break}b=a+16|0;i=H[a>>2];d=H[a+16>>2];c=H[a+20>>2]-d|0;h:{if(c>>>0<=16383){ya(b,4096-(c>>>2|0)|0);break h}if((c|0)==16384){break h}H[a+20>>2]=d+16384}c=a+28|0;g=H[c>>2];d=H[a+32>>2]-g>>3;i:{if(d>>>0>>0){ob(c,f-d|0);g=H[c>>2];break i}if(d>>>0>f>>>0){H[a+32>>2]=(f<<3)+g}if(!f){break a}}d=H[b>>2];b=0;a=0;while(1){c=i+(b<<2)|0;h=H[c>>2];e=a;j=(b<<3)+g|0;H[j+4>>2]=a;H[j>>2]=h;c=H[c>>2];a=c+a|0;if(a>>>0>4096){break a}j:{if(a>>>0<=e>>>0){break j}h=0;j=c&7;if(j){while(1){H[d+(e<<2)>>2]=b;e=e+1|0;h=h+1|0;if((j|0)!=(h|0)){continue}break}}if(c-1>>>0<=6){break j}while(1){c=d+(e<<2)|0;H[c>>2]=b;H[c+28>>2]=b;H[c+24>>2]=b;H[c+20>>2]=b;H[c+16>>2]=b;H[c+12>>2]=b;H[c+8>>2]=b;H[c+4>>2]=b;e=e+8|0;if((e|0)!=(a|0)){continue}break}}b=b+1|0;if((f|0)!=(b|0)){continue}break}o=(a|0)==4096}return o}function Ni(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,k=0,l=0,m=0,n=0,o=0,p=0;g=ca-48|0;ca=g;d=H[a+8>>2];if(d-2>>>0<=28){H[a+76>>2]=d;e=-1<>2]=d;H[a+80>>2]=e^-1;H[a+92>>2]=(d|0)/2;L[a+88>>2]=O(2)/O(d|0)}H[a+52>>2]=f;d=H[a+40>>2];e=H[d>>2];d=H[d+4>>2];H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+8|0;n=a+44|0;d=d>>>2|0;o=d>>>0<=1?1:d;p=a+96|0;while(1){e=H[a+40>>2];d=H[e>>2];if(H[e+4>>2]-d>>2>>>0<=j>>>0){break a}Nb(n,H[d+(j<<2)>>2],g+8|0);h=H[g+12>>2];d=h>>31;i=H[g+8>>2];e=i>>31;f=(d^h)-d+((e^i)-e)|0;l=H[g+16>>2];d=l>>31;e=(d^l)-d|0;d=0;k=e;e=e+f|0;d=k>>>0>e>>>0?1:d;b:{if(!(d|e)){H[g+8>>2]=H[a+92>>2];break b}f=H[a+92>>2];k=f>>31;i=Sj(Rj(f,k,i,i>>31),da,e,d);H[g+8>>2]=i;d=Sj(Rj(f,k,h,h>>31),da,e,d);H[g+12>>2]=d;e=d>>31;e=(d^e)-e|0;d=i>>31;d=e+((d^i)-d|0)|0;if((l|0)>=0){H[g+16>>2]=f-d;break b}H[g+16>>2]=d-f}d=Ba(p);f=H[g+8>>2];c:{if(d){H[g+16>>2]=0-H[g+16>>2];e=0-H[g+12>>2]|0;H[g+12>>2]=e;f=0-f|0;H[g+8>>2]=f;break c}e=H[g+12>>2]}d:{if((f|0)>=0){f=H[a+92>>2];d=f+H[g+16>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=H[g+16>>2];f=d>>31;f=(d^f)-f|0;break e}d=H[g+16>>2];f=d>>31;f=H[a+84>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=H[a+84>>2]+(d-(d^e)|0)|0}e=H[a+84>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}h=H[a+92>>2];if((h|0)>=(d|0)){break g}d=(h<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}h=H[a+92>>2];if((h|0)<=(d|0)){break h}d=(h<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=H[a+92>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=H[a+92>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}e=j<<3;h=e+b|0;i=H[h>>2];h=H[h+4>>2];H[g+36>>2]=d;H[g+32>>2]=f;H[g+24>>2]=i;H[g+28>>2]=h;qc(g+40|0,m,g+32|0,g+24|0);d=c+e|0;H[d>>2]=H[g+40>>2];H[d+4>>2]=H[g+44>>2];j=j+1|0;if((o|0)!=(j|0)){continue}break}}ca=g+48|0;return 1}Ca();v()}function Ii(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,k=0,l=0,m=0,n=0,o=0,p=0;g=ca-48|0;ca=g;d=H[a+8>>2];if(d-2>>>0<=28){H[a+76>>2]=d;e=-1<>2]=d;H[a+80>>2]=e^-1;H[a+92>>2]=(d|0)/2;L[a+88>>2]=O(2)/O(d|0)}H[a+52>>2]=f;d=H[a+40>>2];e=H[d>>2];d=H[d+4>>2];H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+8|0;n=a+44|0;d=d>>>2|0;o=d>>>0<=1?1:d;p=a+96|0;while(1){e=H[a+40>>2];d=H[e>>2];if(H[e+4>>2]-d>>2>>>0<=j>>>0){break a}Lb(n,H[d+(j<<2)>>2],g+8|0);h=H[g+12>>2];d=h>>31;i=H[g+8>>2];e=i>>31;f=(d^h)-d+((e^i)-e)|0;l=H[g+16>>2];d=l>>31;e=(d^l)-d|0;d=0;k=e;e=e+f|0;d=k>>>0>e>>>0?1:d;b:{if(!(d|e)){H[g+8>>2]=H[a+92>>2];break b}f=H[a+92>>2];k=f>>31;i=Sj(Rj(f,k,i,i>>31),da,e,d);H[g+8>>2]=i;d=Sj(Rj(f,k,h,h>>31),da,e,d);H[g+12>>2]=d;e=d>>31;e=(d^e)-e|0;d=i>>31;d=e+((d^i)-d|0)|0;if((l|0)>=0){H[g+16>>2]=f-d;break b}H[g+16>>2]=d-f}d=Ba(p);f=H[g+8>>2];c:{if(d){H[g+16>>2]=0-H[g+16>>2];e=0-H[g+12>>2]|0;H[g+12>>2]=e;f=0-f|0;H[g+8>>2]=f;break c}e=H[g+12>>2]}d:{if((f|0)>=0){f=H[a+92>>2];d=f+H[g+16>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=H[g+16>>2];f=d>>31;f=(d^f)-f|0;break e}d=H[g+16>>2];f=d>>31;f=H[a+84>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=H[a+84>>2]+(d-(d^e)|0)|0}e=H[a+84>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}h=H[a+92>>2];if((h|0)>=(d|0)){break g}d=(h<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}h=H[a+92>>2];if((h|0)<=(d|0)){break h}d=(h<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=H[a+92>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=H[a+92>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}e=j<<3;h=e+b|0;i=H[h>>2];h=H[h+4>>2];H[g+36>>2]=d;H[g+32>>2]=f;H[g+24>>2]=i;H[g+28>>2]=h;qc(g+40|0,m,g+32|0,g+24|0);d=c+e|0;H[d>>2]=H[g+40>>2];H[d+4>>2]=H[g+44>>2];j=j+1|0;if((o|0)!=(j|0)){continue}break}}ca=g+48|0;return 1}Ca();v()}function Wi(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,k=0,l=0,m=0,n=0,o=0,p=0;g=ca-48|0;ca=g;d=H[a+8>>2];if(d-2>>>0<=28){H[a+76>>2]=d;e=-1<>2]=d;H[a+80>>2]=e^-1;H[a+92>>2]=(d|0)/2;L[a+88>>2]=O(2)/O(d|0)}H[a+52>>2]=f;d=H[a+40>>2];e=H[d>>2];d=H[d+4>>2];H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+8|0;n=a+44|0;d=d>>>2|0;o=d>>>0<=1?1:d;p=a+96|0;while(1){e=H[a+40>>2];d=H[e>>2];if(H[e+4>>2]-d>>2>>>0<=j>>>0){break a}Nb(n,H[d+(j<<2)>>2],g+8|0);h=H[g+12>>2];d=h>>31;i=H[g+8>>2];e=i>>31;f=(d^h)-d+((e^i)-e)|0;l=H[g+16>>2];d=l>>31;e=(d^l)-d|0;d=0;k=e;e=e+f|0;d=k>>>0>e>>>0?1:d;b:{if(!(d|e)){H[g+8>>2]=H[a+92>>2];break b}f=H[a+92>>2];k=f>>31;i=Sj(Rj(f,k,i,i>>31),da,e,d);H[g+8>>2]=i;d=Sj(Rj(f,k,h,h>>31),da,e,d);H[g+12>>2]=d;e=d>>31;e=(d^e)-e|0;d=i>>31;d=e+((d^i)-d|0)|0;if((l|0)>=0){H[g+16>>2]=f-d;break b}H[g+16>>2]=d-f}d=Ba(p);f=H[g+8>>2];c:{if(d){H[g+16>>2]=0-H[g+16>>2];e=0-H[g+12>>2]|0;H[g+12>>2]=e;f=0-f|0;H[g+8>>2]=f;break c}e=H[g+12>>2]}d:{if((f|0)>=0){f=H[a+92>>2];d=f+H[g+16>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=H[g+16>>2];f=d>>31;f=(d^f)-f|0;break e}d=H[g+16>>2];f=d>>31;f=H[a+84>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=H[a+84>>2]+(d-(d^e)|0)|0}e=H[a+84>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}h=H[a+92>>2];if((h|0)>=(d|0)){break g}d=(h<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}h=H[a+92>>2];if((h|0)<=(d|0)){break h}d=(h<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=H[a+92>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=H[a+92>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}e=j<<3;h=e+b|0;i=H[h+4>>2];H[g+40>>2]=H[h>>2];H[g+44>>2]=i;H[g+28>>2]=d;H[g+24>>2]=f;rc(g+32|0,m,g+24|0,g+40|0);d=c+e|0;H[d>>2]=H[g+32>>2];H[d+4>>2]=H[g+36>>2];j=j+1|0;if((o|0)!=(j|0)){continue}break}}ca=g+48|0;return 1}Ca();v()}function Ri(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,k=0,l=0,m=0,n=0,o=0,p=0;g=ca-48|0;ca=g;d=H[a+8>>2];if(d-2>>>0<=28){H[a+76>>2]=d;e=-1<>2]=d;H[a+80>>2]=e^-1;H[a+92>>2]=(d|0)/2;L[a+88>>2]=O(2)/O(d|0)}H[a+52>>2]=f;d=H[a+40>>2];e=H[d>>2];d=H[d+4>>2];H[g+16>>2]=0;H[g+8>>2]=0;H[g+12>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+8|0;n=a+44|0;d=d>>>2|0;o=d>>>0<=1?1:d;p=a+96|0;while(1){e=H[a+40>>2];d=H[e>>2];if(H[e+4>>2]-d>>2>>>0<=j>>>0){break a}Lb(n,H[d+(j<<2)>>2],g+8|0);h=H[g+12>>2];d=h>>31;i=H[g+8>>2];e=i>>31;f=(d^h)-d+((e^i)-e)|0;l=H[g+16>>2];d=l>>31;e=(d^l)-d|0;d=0;k=e;e=e+f|0;d=k>>>0>e>>>0?1:d;b:{if(!(d|e)){H[g+8>>2]=H[a+92>>2];break b}f=H[a+92>>2];k=f>>31;i=Sj(Rj(f,k,i,i>>31),da,e,d);H[g+8>>2]=i;d=Sj(Rj(f,k,h,h>>31),da,e,d);H[g+12>>2]=d;e=d>>31;e=(d^e)-e|0;d=i>>31;d=e+((d^i)-d|0)|0;if((l|0)>=0){H[g+16>>2]=f-d;break b}H[g+16>>2]=d-f}d=Ba(p);f=H[g+8>>2];c:{if(d){H[g+16>>2]=0-H[g+16>>2];e=0-H[g+12>>2]|0;H[g+12>>2]=e;f=0-f|0;H[g+8>>2]=f;break c}e=H[g+12>>2]}d:{if((f|0)>=0){f=H[a+92>>2];d=f+H[g+16>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=H[g+16>>2];f=d>>31;f=(d^f)-f|0;break e}d=H[g+16>>2];f=d>>31;f=H[a+84>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=H[a+84>>2]+(d-(d^e)|0)|0}e=H[a+84>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}h=H[a+92>>2];if((h|0)>=(d|0)){break g}d=(h<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}h=H[a+92>>2];if((h|0)<=(d|0)){break h}d=(h<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=H[a+92>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=H[a+92>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}e=j<<3;h=e+b|0;i=H[h+4>>2];H[g+40>>2]=H[h>>2];H[g+44>>2]=i;H[g+28>>2]=d;H[g+24>>2]=f;rc(g+32|0,m,g+24|0,g+40|0);d=c+e|0;H[d>>2]=H[g+32>>2];H[d+4>>2]=H[g+36>>2];j=j+1|0;if((o|0)!=(j|0)){continue}break}}ca=g+48|0;return 1}Ca();v()}function Ge(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=ca-16|0;ca=f;c=H[a+4>>2];H[a+40>>2]=H[a>>2];H[a+44>>2]=c;c=H[a+36>>2];H[a+72>>2]=H[a+32>>2];H[a+76>>2]=c;d=H[a+28>>2];c=a- -64|0;H[c>>2]=H[a+24>>2];H[c+4>>2]=d;c=H[a+20>>2];H[a+56>>2]=H[a+16>>2];H[a+60>>2]=c;c=H[a+12>>2];H[a+48>>2]=H[a+8>>2];H[a+52>>2]=c;a:{b:{if(Db(a+40|0,1,f+8|0)){c=H[a+44>>2];H[a>>2]=H[a+40>>2];H[a+4>>2]=c;c=H[a+76>>2];H[a+32>>2]=H[a+72>>2];H[a+36>>2]=c;c=H[a+68>>2];H[a+24>>2]=H[a+64>>2];H[a+28>>2]=c;d=H[a+60>>2];h=d;c=H[a+56>>2];H[a+16>>2]=c;H[a+20>>2]=d;e=H[a+52>>2];d=H[a+48>>2];H[a+8>>2]=d;H[a+12>>2]=e;i=d-c|0;g=H[f+12>>2];e=e-((c>>>0>d>>>0)+h|0)|0;d=H[f+8>>2];if((g|0)==(e|0)&i>>>0>=d>>>0|e>>>0>g>>>0){break b}}c=0;break a}e=h+g|0;c=c+d|0;e=c>>>0>>0?e+1|0:e;H[a+16>>2]=c;H[a+20>>2]=e;c:{if(J[a+38>>1]<=513){c=H[a+4>>2];H[a+96>>2]=H[a>>2];H[a+100>>2]=c;c=H[a+36>>2];H[a+128>>2]=H[a+32>>2];H[a+132>>2]=c;c=H[a+28>>2];H[a+120>>2]=H[a+24>>2];H[a+124>>2]=c;c=H[a+20>>2];H[a+112>>2]=H[a+16>>2];H[a+116>>2]=c;c=H[a+12>>2];H[a+104>>2]=H[a+8>>2];H[a+108>>2]=c;d:{if(Db(a+96|0,1,f+8|0)){c=H[a+100>>2];H[a>>2]=H[a+96>>2];H[a+4>>2]=c;c=H[a+132>>2];H[a+32>>2]=H[a+128>>2];H[a+36>>2]=c;c=H[a+124>>2];H[a+24>>2]=H[a+120>>2];H[a+28>>2]=c;d=H[a+116>>2];h=d;c=H[a+112>>2];H[a+16>>2]=c;H[a+20>>2]=d;e=H[a+108>>2];d=H[a+104>>2];H[a+8>>2]=d;H[a+12>>2]=e;i=d-c|0;g=H[f+12>>2];e=e-((c>>>0>d>>>0)+h|0)|0;d=H[f+8>>2];if((g|0)==(e|0)&i>>>0>=d>>>0|e>>>0>g>>>0){break d}}c=0;break a}e=h+g|0;c=c+d|0;e=c>>>0>>0?e+1|0:e;H[a+16>>2]=c;H[a+20>>2]=e;break c}c=0;if(!ta(a+80|0,a)){break a}}c=0;if(!Fe(a)){break a}c=H[a+4>>2];H[b>>2]=H[a>>2];H[b+4>>2]=c;c=H[a+36>>2];H[b+32>>2]=H[a+32>>2];H[b+36>>2]=c;c=H[a+28>>2];H[b+24>>2]=H[a+24>>2];H[b+28>>2]=c;c=H[a+20>>2];H[b+16>>2]=H[a+16>>2];H[b+20>>2]=c;c=H[a+12>>2];H[b+8>>2]=H[a+8>>2];H[b+12>>2]=c;c=1}ca=f+16|0;return c}function oe(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!H[a+64>>2]){c=pa(32);H[c+16>>2]=0;H[c+20>>2]=0;H[c+8>>2]=0;H[c>>2]=0;H[c+4>>2]=0;H[c+24>>2]=0;H[c+28>>2]=0;d=H[a+64>>2];H[a+64>>2]=c;if(d){c=H[d>>2];if(c){H[d+4>>2]=c;oa(c)}oa(d);c=H[a+64>>2]}H[a>>2]=c;d=H[c+20>>2];H[a+8>>2]=H[c+16>>2];H[a+12>>2]=d;d=H[c+24>>2];c=H[c+28>>2];H[a+48>>2]=0;H[a+52>>2]=0;H[a+40>>2]=0;H[a+44>>2]=0;H[a+16>>2]=d;H[a+20>>2]=c}a:{F[a+24|0]=I[b+24|0];H[a+28>>2]=H[b+28>>2];F[a+32|0]=I[b+32|0];c=H[b+44>>2];H[a+40>>2]=H[b+40>>2];H[a+44>>2]=c;c=H[b+52>>2];H[a+48>>2]=H[b+48>>2];H[a+52>>2]=c;H[a+56>>2]=H[b+56>>2];c=H[b+12>>2];H[a+8>>2]=H[b+8>>2];H[a+12>>2]=c;c=H[b+20>>2];H[a+16>>2]=H[b+16>>2];H[a+20>>2]=c;H[a+60>>2]=H[b+60>>2];c=H[b>>2];b:{if(!c){H[a>>2]=0;d=1;break b}g=H[a>>2];d=0;if(!g){break b}d=H[c>>2];c=H[c+4>>2]-d|0;se(g,d,c,0);d=1}c:{if(!d){break c}F[a+84|0]=I[b+84|0];H[a+80>>2]=H[b+80>>2];if((a|0)!=(b|0)){Cb(a+68|0,H[b+68>>2],H[b+72>>2])}f=H[b+88>>2];d:{if(f){e=pa(40);b=H[f>>2];H[e+16>>2]=0;H[e+8>>2]=0;H[e+12>>2]=0;H[e>>2]=b;c=H[f+12>>2];b=H[f+8>>2];if((c|0)!=(b|0)){c=c-b|0;if((c|0)<0){break a}b=pa(c);H[e+12>>2]=b;H[e+8>>2]=b;H[e+16>>2]=b+c;c=H[f+8>>2];h=H[f+12>>2];e:{if((c|0)==(h|0)){break e}g=(c^-1)+h|0;d=h-c&7;if(d){while(1){F[b|0]=I[c|0];b=b+1|0;c=c+1|0;i=i+1|0;if((d|0)!=(i|0)){continue}break}}if(g>>>0<7){break e}while(1){F[b|0]=I[c|0];F[b+1|0]=I[c+1|0];F[b+2|0]=I[c+2|0];F[b+3|0]=I[c+3|0];F[b+4|0]=I[c+4|0];F[b+5|0]=I[c+5|0];F[b+6|0]=I[c+6|0];F[b+7|0]=I[c+7|0];b=b+8|0;c=c+8|0;if((h|0)!=(c|0)){continue}break}}H[e+12>>2]=b}b=H[f+36>>2];H[e+32>>2]=H[f+32>>2];H[e+36>>2]=b;b=H[f+28>>2];H[e+24>>2]=H[f+24>>2];H[e+28>>2]=b;b=H[a+88>>2];H[a+88>>2]=e;if(b){break d}break c}b=H[a+88>>2];H[a+88>>2]=0;if(!b){break c}}a=H[b+8>>2];if(a){H[b+12>>2]=a;oa(a)}oa(b)}return}sa();v()}function og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=ca-32|0;ca=f;e=f+8|0;c=ca-80|0;ca=c;a=H[b+36>>2];H[c+72>>2]=H[b+32>>2];H[c+76>>2]=a;d=H[b+28>>2];a=c- -64|0;H[a>>2]=H[b+24>>2];H[a+4>>2]=d;a=H[b+20>>2];H[c+56>>2]=H[b+16>>2];H[c+60>>2]=a;a=H[b+12>>2];H[c+48>>2]=H[b+8>>2];H[c+52>>2]=a;a=H[b+4>>2];H[c+40>>2]=H[b>>2];H[c+44>>2]=a;nc(c+8|0,c+40|0,c+24|0);a=H[c+8>>2];a:{if(a){H[e>>2]=a;a=e+4|0;if(F[c+23|0]>=0){b=c+8|4;e=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=e;H[a+8>>2]=H[b+8>>2];break a}za(a,H[c+12>>2],H[c+16>>2]);if(F[c+23|0]>=0){break a}oa(H[c+12>>2]);break a}if(F[c+23|0]<0){oa(H[c+12>>2])}a=I[c+31|0];if(a>>>0>=2){b=pa(32);F[b+26|0]=0;a=I[1477]|I[1478]<<8;F[b+24|0]=a;F[b+25|0]=a>>>8;a=I[1473]|I[1474]<<8|(I[1475]<<16|I[1476]<<24);d=I[1469]|I[1470]<<8|(I[1471]<<16|I[1472]<<24);F[b+16|0]=d;F[b+17|0]=d>>>8;F[b+18|0]=d>>>16;F[b+19|0]=d>>>24;F[b+20|0]=a;F[b+21|0]=a>>>8;F[b+22|0]=a>>>16;F[b+23|0]=a>>>24;a=I[1465]|I[1466]<<8|(I[1467]<<16|I[1468]<<24);d=I[1461]|I[1462]<<8|(I[1463]<<16|I[1464]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=a;F[b+13|0]=a>>>8;F[b+14|0]=a>>>16;F[b+15|0]=a>>>24;a=I[1457]|I[1458]<<8|(I[1459]<<16|I[1460]<<24);d=I[1453]|I[1454]<<8|(I[1455]<<16|I[1456]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=a;F[b+5|0]=a>>>8;F[b+6|0]=a>>>16;F[b+7|0]=a>>>24;H[c+8>>2]=-1;a=c+8|4;za(a,b,26);d=F[c+23|0];H[e>>2]=H[c+8>>2];e=e+4|0;if((d|0)>=0){d=H[a+4>>2];H[e>>2]=H[a>>2];H[e+4>>2]=d;H[e+8>>2]=H[a+8>>2];oa(b);break a}za(e,H[c+12>>2],H[c+16>>2]);if(F[c+23|0]<0){oa(H[c+12>>2])}oa(b);break a}H[e>>2]=0;H[e+4>>2]=0;H[e+16>>2]=a;H[e+8>>2]=0;H[e+12>>2]=0}ca=c+80|0;a=H[f+24>>2];if(F[f+23|0]<0){oa(H[f+12>>2])}ca=f+32|0;return a|0}function Xd(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,k=0,l=0,m=0;k=ca-16|0;ca=k;H[k+8>>2]=c;h=H[a+12>>2];d=H[a+8>>2];g=h-d>>2;a:{if((g|0)>(b|0)){break a}e=b+1|0;if(e>>>0>g>>>0){l=e-g|0;f=H[a+16>>2];d=H[a+12>>2];if(l>>>0<=f-d>>2>>>0){if(l){e=d;d=l<<2;d=ra(e,0,d)+d|0}H[a+12>>2]=d;break a}b:{c:{d:{m=H[a+8>>2];g=d-m>>2;i=g+l|0;if(i>>>0<1073741824){e=f-m|0;f=e>>>1|0;e=e>>>0>=2147483644?1073741823:f>>>0>i>>>0?f:i;if(e){if(e>>>0>=1073741824){break d}j=pa(e<<2)}h=(g<<2)+j|0;f=l<<2;i=ra(h,0,f);g=f+i|0;e=(e<<2)+j|0;if((d|0)==(m|0)){break c}while(1){d=d-4|0;f=H[d>>2];H[d>>2]=0;h=h-4|0;H[h>>2]=f;if((d|0)!=(m|0)){continue}break}H[a+16>>2]=e;e=H[a+12>>2];H[a+12>>2]=g;d=H[a+8>>2];H[a+8>>2]=h;if((d|0)==(e|0)){break b}while(1){e=e-4|0;f=H[e>>2];H[e>>2]=0;if(f){Ga(f)}if((d|0)!=(e|0)){continue}break}break b}sa();v()}wa();v()}H[a+16>>2]=e;H[a+12>>2]=g;H[a+8>>2]=i}if(d){oa(d)}break a}if(e>>>0>=g>>>0){break a}d=d+(e<<2)|0;if((d|0)!=(h|0)){while(1){h=h-4|0;c=H[h>>2];H[h>>2]=0;if(c){Ga(c)}if((d|0)!=(h|0)){continue}break}c=H[k+8>>2]}H[a+12>>2]=d}e:{f:{d=H[c+56>>2];g:{if((d|0)>4){break g}j=N(d,12)+a|0;d=H[j+24>>2];if((d|0)!=H[j+28>>2]){H[d>>2]=b;H[j+24>>2]=d+4;break g}i=H[j+20>>2];g=d-i|0;f=g>>2;e=f+1|0;if(e>>>0>=1073741824){break f}d=g>>>1|0;e=g>>>0>=2147483644?1073741823:d>>>0>e>>>0?d:e;if(e){if(e>>>0>=1073741824){break e}d=pa(e<<2)}else{d=0}f=d+(f<<2)|0;H[f>>2]=b;d=va(d,i,g);H[j+20>>2]=d;H[j+24>>2]=f+4;H[j+28>>2]=d+(e<<2);if(!i){break g}oa(i)}H[c+60>>2]=b;a=H[a+8>>2];H[k+8>>2]=0;a=a+(b<<2)|0;b=H[a>>2];H[a>>2]=c;if(b){Ga(b)}a=H[k+8>>2];H[k+8>>2]=0;if(a){Ga(a)}ca=k+16|0;return}sa();v()}wa();v()}function Og(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,k=0;i=c;d=a;a:{if(H[a+12>>2]==(b|0)){break a}a=b;b=H[d+4>>2];e=H[d>>2];if((b|0)!=(e|0)){while(1){c=b-12|0;if(F[b-1|0]<0){oa(H[c>>2])}b=c;if((e|0)!=(b|0)){continue}break}}H[d+12>>2]=a;H[d+4>>2]=e;c=H[a>>2];j=a+4|0;if((c|0)==(j|0)){break a}while(1){a=H[d+4>>2];b:{if((a|0)!=H[d+8>>2]){c:{if(F[c+27|0]>=0){b=H[c+20>>2];H[a>>2]=H[c+16>>2];H[a+4>>2]=b;H[a+8>>2]=H[c+24>>2];break c}za(a,H[c+16>>2],H[c+20>>2])}H[d+4>>2]=a+12;break b}g=0;d:{e:{f:{a=H[d+4>>2];e=H[d>>2];f=(a-e|0)/12|0;b=f+1|0;if(b>>>0<357913942){h=(H[d+8>>2]-e|0)/12|0;k=h<<1;b=h>>>0>=178956970?357913941:b>>>0>>0?k:b;if(b){if(b>>>0>=357913942){break f}g=pa(N(b,12))}h=N(b,12);b=N(f,12)+g|0;g:{if(F[c+27|0]>=0){f=H[c+20>>2];H[b>>2]=H[c+16>>2];H[b+4>>2]=f;H[b+8>>2]=H[c+24>>2];break g}za(b,H[c+16>>2],H[c+20>>2]);e=H[d>>2];a=H[d+4>>2]}g=g+h|0;f=b+12|0;if((a|0)==(e|0)){break e}while(1){a=a-12|0;h=H[a+4>>2];b=b-12|0;H[b>>2]=H[a>>2];H[b+4>>2]=h;H[b+8>>2]=H[a+8>>2];H[a>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;if((a|0)!=(e|0)){continue}break}H[d+8>>2]=g;a=H[d+4>>2];H[d+4>>2]=f;e=H[d>>2];H[d>>2]=b;if((a|0)==(e|0)){break d}while(1){b=a-12|0;if(F[a-1|0]<0){oa(H[b>>2])}a=b;if((e|0)!=(b|0)){continue}break}break d}sa();v()}wa();v()}H[d+8>>2]=g;H[d+4>>2]=f;H[d>>2]=b}if(e){oa(e)}}b=H[c+4>>2];h:{if(b){while(1){a=b;b=H[b>>2];if(b){continue}break h}}while(1){a=H[c+8>>2];b=H[a>>2]!=(c|0);c=a;if(b){continue}break}}c=a;if((j|0)!=(a|0)){continue}break}}a=0;i:{if((i|0)<0){break i}b=H[d>>2];if((H[d+4>>2]-b|0)/12>>>0<=i>>>0){break i}a=b+N(i,12)|0;a=F[a+11|0]<0?H[a>>2]:a}return a|0}function bd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;i=ca-16|0;ca=i;H[i>>2]=b;f=-1;a:{if((b|0)==-1){H[i+4>>2]=-1;break a}f=b+1|0;H[i+4>>2]=(f>>>0)%3|0?f:b-2|0;if((b>>>0)%3|0){f=b-1|0;break a}f=b+2|0}H[i+8>>2]=f;n=(b>>>0)/3|0;b:{c:{d:{while(1){e:{f:{j=H[(l<<2)+i>>2];if((j|0)!=-1){f=H[H[H[a+8>>2]+12>>2]+(j<<2)>>2];if((f|0)!=-1){break f}}f=0;g=H[a+216>>2];if((g|0)==H[a+220>>2]){break e}while(1){g=N(f,144)+g|0;d=H[g+136>>2];c=H[g+140>>2];g:{if(d>>>0>>0){H[d>>2]=j;H[g+136>>2]=d+4;break g}e=d;d=H[g+132>>2];k=e-d|0;e=k>>2;h=e+1|0;if(h>>>0>=1073741824){break d}m=e<<2;c=c-d|0;e=c>>>1|0;h=c>>>0>=2147483644?1073741823:h>>>0>>0?e:h;if(h){if(h>>>0>=1073741824){break c}c=pa(h<<2)}else{c=0}e=m+c|0;H[e>>2]=j;c=va(c,d,k);H[g+132>>2]=c;H[g+136>>2]=e+4;H[g+140>>2]=c+(h<<2);if(!d){break g}oa(d)}f=f+1|0;g=H[a+216>>2];if(f>>>0<(H[a+220>>2]-g|0)/144>>>0){continue}break}break e}if((b|0)==-1|(f>>>0)/3>>>0>>0){break e}f=0;if(H[a+220>>2]==H[a+216>>2]){break e}while(1){h:{if(!Ba(H[a+368>>2]+(f<<4)|0)){break h}g=H[a+216>>2]+N(f,144)|0;d=H[g+136>>2];c=H[g+140>>2];if(d>>>0>>0){H[d>>2]=j;H[g+136>>2]=d+4;break h}e=d;d=H[g+132>>2];k=e-d|0;e=k>>2;h=e+1|0;if(h>>>0>=1073741824){break b}m=e<<2;c=c-d|0;e=c>>>1|0;h=c>>>0>=2147483644?1073741823:h>>>0>>0?e:h;if(h){if(h>>>0>=1073741824){break c}c=pa(h<<2)}else{c=0}e=m+c|0;H[e>>2]=j;c=va(c,d,k);H[g+132>>2]=c;H[g+136>>2]=e+4;H[g+140>>2]=c+(h<<2);if(!d){break h}oa(d)}f=f+1|0;if(f>>>0<(H[a+220>>2]-H[a+216>>2]|0)/144>>>0){continue}break}}l=l+1|0;if((l|0)!=3){continue}break}ca=i+16|0;return 1}sa();v()}wa();v()}sa();v()}function cd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=ca-16|0;ca=h;H[h>>2]=b;c=-1;a:{if((b|0)==-1){H[h+4>>2]=-1;break a}c=b+1|0;H[h+4>>2]=(c>>>0)%3|0?c:b-2|0;if((b>>>0)%3|0){c=b-1|0;break a}c=b+2|0}H[h+8>>2]=c;b:{c:{while(1){i=H[(k<<2)+h>>2];d:{if(!((i|0)==-1|H[H[H[a+8>>2]+12>>2]+(i<<2)>>2]==-1)){b=0;if(H[a+220>>2]==H[a+216>>2]){break d}while(1){e:{f:{if(!Ba(H[a+368>>2]+(b<<4)|0)){break f}c=H[a+216>>2]+N(b,144)|0;e=H[c+136>>2];d=H[c+140>>2];if(e>>>0>>0){H[e>>2]=i;H[c+136>>2]=e+4;break f}f=e;e=H[c+132>>2];j=f-e|0;f=j>>2;g=f+1|0;if(g>>>0>=1073741824){break e}l=f<<2;d=d-e|0;f=d>>>1|0;g=d>>>0>=2147483644?1073741823:g>>>0>>0?f:g;if(g){if(g>>>0>=1073741824){break b}d=pa(g<<2)}else{d=0}f=l+d|0;H[f>>2]=i;d=va(d,e,j);H[c+132>>2]=d;H[c+136>>2]=f+4;H[c+140>>2]=d+(g<<2);if(!e){break f}oa(e)}b=b+1|0;if(b>>>0<(H[a+220>>2]-H[a+216>>2]|0)/144>>>0){continue}break d}break}sa();v()}b=0;c=H[a+216>>2];if((c|0)==H[a+220>>2]){break d}while(1){c=N(b,144)+c|0;e=H[c+136>>2];d=H[c+140>>2];g:{if(e>>>0>>0){H[e>>2]=i;H[c+136>>2]=e+4;break g}f=e;e=H[c+132>>2];j=f-e|0;f=j>>2;g=f+1|0;if(g>>>0>=1073741824){break c}l=f<<2;d=d-e|0;f=d>>>1|0;g=d>>>0>=2147483644?1073741823:g>>>0>>0?f:g;if(g){if(g>>>0>=1073741824){break b}d=pa(g<<2)}else{d=0}f=l+d|0;H[f>>2]=i;d=va(d,e,j);H[c+132>>2]=d;H[c+136>>2]=f+4;H[c+140>>2]=d+(g<<2);if(!e){break g}oa(e)}b=b+1|0;c=H[a+216>>2];if(b>>>0<(H[a+220>>2]-c|0)/144>>>0){continue}break}}k=k+1|0;if((k|0)!=3){continue}break}ca=h+16|0;return 1}sa();v()}wa();v()}function vg(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,k=0,l=0,m=0,n=0,o=0;m=ca-16|0;ca=m;l=H[b+80>>2];e=I[c+24|0];a=N(l,e);a:{b:{c:{d:{b=H[c+28>>2];if(!(!I[c+84|0]|(b|0)!=1&(b|0)!=2)){b=H[c+48>>2];c=H[H[c>>2]>>2];H[m+8>>2]=0;H[m>>2]=0;H[m+4>>2]=0;if(a){if((a|0)<0){break d}f=pa(a);h=qa(f,b+c|0,a)+a|0}a=H[d>>2];if(a){H[d+4>>2]=a;oa(a)}H[d+8>>2]=h;H[d+4>>2]=h;H[d>>2]=f;b=1;break a}if(e){f=pa(e);ra(f,0,e)}e:{i=H[d+4>>2];b=H[d>>2];g=i-b|0;f:{if(g>>>0>>0){k=a-g|0;j=H[d+8>>2];if(k>>>0<=j-i>>>0){n=d,o=ra(i,0,k)+k|0,H[n+4>>2]=o;break f}if((a|0)<0){break e}i=j-b|0;j=i<<1;i=i>>>0>=1073741823?2147483647:a>>>0>>0?j:a;j=pa(i);ra(j+g|0,0,k);g=va(j,b,g);H[d+8>>2]=g+i;H[d+4>>2]=a+g;H[d>>2]=g;if(!b){break f}oa(b);break f}if(a>>>0>=g>>>0){break f}H[d+4>>2]=a+b}if(!l){b=1;break c}if(!e){b=0;a=0;while(1){if(!ic(c,I[c+84|0]?a:H[H[c+68>>2]+(a<<2)>>2],F[c+24|0],f)){break c}a=a+1|0;b=l>>>0<=a>>>0;if((a|0)!=(l|0)){continue}break}break c}i=e&252;g=e&3;b=0;j=e>>>0<4;e=0;while(1){if(!ic(c,I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],F[c+24|0],f)){break c}b=0;a=0;k=0;if(!j){while(1){F[H[d>>2]+h|0]=I[a+f|0];F[(H[d>>2]+h|0)+1|0]=I[(a|1)+f|0];F[(H[d>>2]+h|0)+2|0]=I[(a|2)+f|0];F[(H[d>>2]+h|0)+3|0]=I[(a|3)+f|0];a=a+4|0;h=h+4|0;k=k+4|0;if((i|0)!=(k|0)){continue}break}}if(g){while(1){F[H[d>>2]+h|0]=I[a+f|0];a=a+1|0;h=h+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}e=e+1|0;b=l>>>0<=e>>>0;if((e|0)!=(l|0)){continue}break}break b}sa();v()}sa();v()}if(!f){break a}}oa(f)}ca=m+16|0;return b&1}function ug(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,k=0,l=0,m=0,n=0,o=0;m=ca-16|0;ca=m;l=H[b+80>>2];e=I[c+24|0];a=N(l,e);a:{b:{c:{d:{b=H[c+28>>2];if(!(!I[c+84|0]|(b|0)!=1&(b|0)!=2)){b=H[c+48>>2];c=H[H[c>>2]>>2];H[m+8>>2]=0;H[m>>2]=0;H[m+4>>2]=0;if(a){if((a|0)<0){break d}f=pa(a);h=qa(f,b+c|0,a)+a|0}a=H[d>>2];if(a){H[d+4>>2]=a;oa(a)}H[d+8>>2]=h;H[d+4>>2]=h;H[d>>2]=f;b=1;break a}if(e){f=pa(e);ra(f,0,e)}e:{i=H[d+4>>2];b=H[d>>2];g=i-b|0;f:{if(g>>>0>>0){k=a-g|0;j=H[d+8>>2];if(k>>>0<=j-i>>>0){n=d,o=ra(i,0,k)+k|0,H[n+4>>2]=o;break f}if((a|0)<0){break e}i=j-b|0;j=i<<1;i=i>>>0>=1073741823?2147483647:a>>>0>>0?j:a;j=pa(i);ra(j+g|0,0,k);g=va(j,b,g);H[d+8>>2]=g+i;H[d+4>>2]=a+g;H[d>>2]=g;if(!b){break f}oa(b);break f}if(a>>>0>=g>>>0){break f}H[d+4>>2]=a+b}if(!l){b=1;break c}if(!e){b=0;a=0;while(1){if(!hc(c,I[c+84|0]?a:H[H[c+68>>2]+(a<<2)>>2],F[c+24|0],f)){break c}a=a+1|0;b=l>>>0<=a>>>0;if((a|0)!=(l|0)){continue}break}break c}i=e&252;g=e&3;b=0;j=e>>>0<4;e=0;while(1){if(!hc(c,I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],F[c+24|0],f)){break c}b=0;a=0;k=0;if(!j){while(1){F[H[d>>2]+h|0]=I[a+f|0];F[(H[d>>2]+h|0)+1|0]=I[(a|1)+f|0];F[(H[d>>2]+h|0)+2|0]=I[(a|2)+f|0];F[(H[d>>2]+h|0)+3|0]=I[(a|3)+f|0];a=a+4|0;h=h+4|0;k=k+4|0;if((i|0)!=(k|0)){continue}break}}if(g){while(1){F[H[d>>2]+h|0]=I[a+f|0];a=a+1|0;h=h+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}e=e+1|0;b=l>>>0<=e>>>0;if((e|0)!=(l|0)){continue}break}break b}sa();v()}sa();v()}if(!f){break a}}oa(f)}ca=m+16|0;return b&1}function qc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=H[b+16>>2];h=H[c+4>>2]-k|0;e=H[c>>2]-k|0;H[c>>2]=e;f=h;H[c+4>>2]=f;l=H[b+16>>2];f=f>>31;g=(h^f)-f|0;f=e>>31;m=l>>>0>=g+((f^e)-f|0)>>>0;a:{if(m){f=h;break a}b:{c:{if((e|0)>=0){g=1;j=1;if((h|0)>=0){break b}i=1;g=-1;j=-1;if(e){break c}break b}i=-1;g=-1;j=-1;if((h|0)<=0){break b}}g=(h|0)<=0?-1:1;j=i}n=N(j,l);f=(e<<1)-n|0;i=(N(g,j)|0)>=0;e=N(g,l);f=((i?0-f|0:f)+e|0)/2|0;H[c+4>>2]=f;e=(h<<1)-e|0;e=((i?0-e|0:e)+n|0)/2|0;H[c>>2]=e}d:{e:{f:{g:{h:{i:{j:{if(e){if((e|0)<0){break j}if((f|0)>=0){break i}break f}if(f){break h}j=1;g=0;f=0;i=0;break d}j=1;if((f|0)>0){break g}i=(f|0)>0?3:0;g=f;f=e;break d}g=0-f|0;f=0-e|0;i=2;break e}if((f|0)<=0){break f}}f=0-f|0;g=e;i=3;break e}g=0-e|0;i=1}H[c>>2]=f;H[c+4>>2]=g;j=0}e=H[d>>2]+f|0;h=H[b+16>>2];k:{if((e|0)>(h|0)){e=e-H[b+4>>2]|0;break k}if((0-h|0)<=(e|0)){break k}e=H[b+4>>2]+e|0}c=H[d+4>>2]+g|0;l:{if((h|0)<(c|0)){c=c-H[b+4>>2]|0;break l}if((0-h|0)<=(c|0)){break l}c=H[b+4>>2]+c|0}m:{if(j){b=c;break m}b=c;n:{o:{p:{d=4-i|0;switch((d>>>0<4?d:0-i|0)-1|0){case 2:break n;case 1:break o;case 0:break p;default:break m}}b=0-e|0;e=c;break m}b=0-c|0;e=0-e|0;break m}b=e;e=0-c|0}q:{if(m){c=b;break q}r:{s:{if((e|0)>=0){c=1;f=1;if((b|0)>=0){break r}d=1;c=-1;f=-1;if(e){break s}break r}d=-1;c=-1;f=-1;if((b|0)<=0){break r}}c=(b|0)<=0?-1:1;f=d}d=e<<1;e=N(f,h);d=d-e|0;f=(N(c,f)|0)>=0;g=f?0-d|0:d;d=N(c,h);c=(g+d|0)/2|0;b=(b<<1)-d|0;e=(e+(f?0-b|0:b)|0)/2|0}b=a;H[b>>2]=e+k;H[b+4>>2]=c+k}function Cj(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,k=0,l=0,m=0;j=ca-32|0;ca=j;H[j+28>>2]=0;a:{b:{if(J[b+38>>1]<=513){c=H[b+20>>2];d=H[b+16>>2];e=d+4|0;c=e>>>0<4?c+1|0:c;h=H[b+12>>2];if(K[b+8>>2]>>0&(h|0)<=(c|0)|(c|0)>(h|0)){break a}d=d+H[b>>2]|0;f=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;break b}if(!Xa(1,j+28|0,b)){break a}f=H[j+28>>2]}if(!f){break a}c=H[H[a+48>>2]+64>>2];if(H[c+4>>2]-H[c>>2]>>2>>>0>>0){break a}Wa(a+76|0,f);c=j+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c:{if(!ta(c,b)){break c}h=1;while(1){d=1<>2]+(i>>>3&536870908)|0;e=e^h;if(e&1){d=H[g>>2]&(d^-1)}else{d=d|H[g>>2]}h=e^1;H[g>>2]=d;i=i+1|0;if((f|0)!=(i|0)){continue}break}c=H[b+8>>2];e=H[b+12>>2];g=e;e=H[b+20>>2];h=e;f=H[b+16>>2];d=f+4|0;e=d>>>0<4?e+1|0:e;i=d;if(d>>>0>c>>>0&(e|0)>=(g|0)|(e|0)>(g|0)){break c}l=H[b>>2];d=l+f|0;k=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=i;H[b+20>>2]=e;d=c;c=h;e=f+8|0;c=e>>>0<8?c+1|0:c;if(d>>>0>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break c}d=i+l|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;if((d|0)<(k|0)){break c}H[a+16>>2]=d;H[a+12>>2]=k;c=(d>>31)-((k>>31)+(d>>>0>>0)|0)|0;b=d-k|0;if(!c&b>>>0>2147483646|c){break c}m=1;c=b+1|0;H[a+20>>2]=c;b=c>>>1|0;H[a+24>>2]=b;H[a+28>>2]=0-b;if(c&1){break c}H[a+24>>2]=b-1}}ca=j+32|0;return m|0}function lj(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,k=0,l=0,m=0;j=ca-32|0;ca=j;H[j+28>>2]=0;a:{b:{if(J[b+38>>1]<=513){c=H[b+20>>2];d=H[b+16>>2];e=d+4|0;c=e>>>0<4?c+1|0:c;h=H[b+12>>2];if(K[b+8>>2]>>0&(h|0)<=(c|0)|(c|0)>(h|0)){break a}d=d+H[b>>2]|0;f=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;break b}if(!Xa(1,j+28|0,b)){break a}f=H[j+28>>2]}if(!f){break a}c=H[a+48>>2];if(H[c+4>>2]-H[c>>2]>>2>>>0>>0){break a}Wa(a+76|0,f);c=j+8|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;c:{if(!ta(c,b)){break c}h=1;while(1){d=1<>2]+(i>>>3&536870908)|0;e=e^h;if(e&1){d=H[g>>2]&(d^-1)}else{d=d|H[g>>2]}h=e^1;H[g>>2]=d;i=i+1|0;if((f|0)!=(i|0)){continue}break}c=H[b+8>>2];e=H[b+12>>2];g=e;e=H[b+20>>2];h=e;f=H[b+16>>2];d=f+4|0;e=d>>>0<4?e+1|0:e;i=d;if(d>>>0>c>>>0&(e|0)>=(g|0)|(e|0)>(g|0)){break c}l=H[b>>2];d=l+f|0;k=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=i;H[b+20>>2]=e;d=c;c=h;e=f+8|0;c=e>>>0<8?c+1|0:c;if(d>>>0>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break c}d=i+l|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;if((d|0)<(k|0)){break c}H[a+16>>2]=d;H[a+12>>2]=k;c=(d>>31)-((k>>31)+(d>>>0>>0)|0)|0;b=d-k|0;if(!c&b>>>0>2147483646|c){break c}m=1;c=b+1|0;H[a+20>>2]=c;b=c>>>1|0;H[a+24>>2]=b;H[a+28>>2]=0-b;if(c&1){break c}H[a+24>>2]=b-1}}ca=j+32|0;return m|0}function cj(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;H[a+8>>2]=e;m=a+32|0;h=H[m>>2];g=H[a+36>>2]-h>>2;a:{if(g>>>0>>0){ya(m,e-g|0);f=H[a+8>>2];break a}f=e;if(f>>>0>=g>>>0){break a}H[a+36>>2]=h+(e<<2);f=e}g=e>>>0>1073741823?-1:e<<2;n=ra(pa(g),0,g);b:{if((f|0)<=0){break b}h=H[a+32>>2];while(1){f=i<<2;g=H[f+n>>2];j=H[a+16>>2];c:{if((g|0)>(j|0)){H[f+h>>2]=j;break c}f=f+h|0;j=H[a+12>>2];if((j|0)>(g|0)){H[f>>2]=j;break c}H[f>>2]=g}f=H[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}if((f|0)<=0){break b}i=0;while(1){g=i<<2;f=g+c|0;g=H[b+g>>2]+H[g+h>>2]|0;H[f>>2]=g;d:{if((g|0)>H[a+16>>2]){g=g-H[a+20>>2]|0}else{if((g|0)>=H[a+12>>2]){break d}g=g+H[a+20>>2]|0}H[f>>2]=g}f=H[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}}if(!((d|0)<=(e|0)|(f|0)<=0)){p=0-e<<2;g=e;while(1){e:{if((f|0)<=0){break e}l=g<<2;o=l+c|0;q=o+p|0;j=H[m>>2];i=0;while(1){f=i<<2;h=H[f+q>>2];k=H[a+16>>2];f:{if((h|0)>(k|0)){H[f+j>>2]=k;break f}f=f+j|0;k=H[a+12>>2];if((k|0)>(h|0)){H[f>>2]=k;break f}H[f>>2]=h}f=H[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}i=0;if((f|0)<=0){break e}l=b+l|0;while(1){h=i<<2;f=h+o|0;h=H[h+l>>2]+H[h+j>>2]|0;H[f>>2]=h;g:{if((h|0)>H[a+16>>2]){h=h-H[a+20>>2]|0}else{if((h|0)>=H[a+12>>2]){break g}h=h+H[a+20>>2]|0}H[f>>2]=h}f=H[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}}g=e+g|0;if((g|0)<(d|0)){continue}break}}oa(n);return 1}function De(a,b){var c=0,d=0,e=0,f=0,g=0;d=-1;f=-1;a:{if((b|0)==-1){break a}c=b+1|0;d=(c>>>0)%3|0?c:b-2|0;f=b-1|0;if((b>>>0)%3|0){break a}f=b+2|0}b:{c:{d:{e:{f:{g:{e=H[a+184>>2];switch(e|0){case 7:break d;case 3:break e;case 5:break f;case 0:case 1:break g;default:break b}}g=H[a+148>>2];c=-1;e=1;d=((d|0)!=-1?H[H[g>>2]+(d<<2)>>2]:c)<<2;c=H[a+156>>2];d=d+c|0;H[d>>2]=H[d>>2]+1;c=(((f|0)==-1?-1:H[H[g>>2]+(f<<2)>>2])<<2)+c|0;break c}g=H[a+148>>2];c=H[a+156>>2];e=c+(((b|0)==-1?-1:H[H[g>>2]+(b<<2)>>2])<<2)|0;H[e>>2]=H[e>>2]+1;d=(((d|0)==-1?-1:H[H[g>>2]+(d<<2)>>2])<<2)+c|0;H[d>>2]=H[d>>2]+1;e=2;c=(((f|0)==-1?-1:H[H[g>>2]+(f<<2)>>2])<<2)+c|0;break c}g=H[a+148>>2];c=H[a+156>>2];e=c+(((b|0)==-1?-1:H[H[g>>2]+(b<<2)>>2])<<2)|0;H[e>>2]=H[e>>2]+1;d=(((d|0)==-1?-1:H[H[g>>2]+(d<<2)>>2])<<2)+c|0;H[d>>2]=H[d>>2]+2;e=1;c=(((f|0)==-1?-1:H[H[g>>2]+(f<<2)>>2])<<2)+c|0;break c}g=H[a+148>>2];c=H[a+156>>2];e=c+(((b|0)==-1?-1:H[H[g>>2]+(b<<2)>>2])<<2)|0;H[e>>2]=H[e>>2]+2;d=(((d|0)==-1?-1:H[H[g>>2]+(d<<2)>>2])<<2)+c|0;H[d>>2]=H[d>>2]+2;e=2;c=(((f|0)==-1?-1:H[H[g>>2]+(f<<2)>>2])<<2)+c|0}H[c>>2]=H[c>>2]+e;e=H[a+184>>2]}h:{switch(e|0){case 0:case 5:f=H[a+156>>2];c=-1;i:{if((b|0)==-1){break i}d=b+1|0;b=(d>>>0)%3|0?d:b-2|0;c=-1;if((b|0)==-1){break i}c=H[H[H[a+148>>2]>>2]+(b<<2)>>2]}if(H[f+(c<<2)>>2]<=5){H[a+188>>2]=5;return}H[a+188>>2]=0;return;default:break h}}H[a+188>>2]=-1}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,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=H[b+80>>2];b=I[c+24|0];g=N(j,b);a:{if(!b){break a}h=b<<2;f=pa(h);a=f;k=b&7;if(k){while(1){H[a>>2]=-1073741824;a=a+4|0;e=e+1|0;if((k|0)!=(e|0)){continue}break}}if((b-1&1073741823)>>>0<7){break a}e=f+h|0;while(1){H[a+24>>2]=-1073741824;H[a+28>>2]=-1073741824;H[a+16>>2]=-1073741824;H[a+20>>2]=-1073741824;H[a+8>>2]=-1073741824;H[a+12>>2]=-1073741824;H[a>>2]=-1073741824;H[a+4>>2]=-1073741824;a=a+32|0;if((e|0)!=(a|0)){continue}break}}e=H[d>>2];a=H[d+4>>2]-e>>2;b:{if(a>>>0>>0){ya(d,g-a|0);break b}if(a>>>0<=g>>>0){break b}H[d+4>>2]=e+(g<<2)}c:{d:{e:{if(!j){i=1;break e}if(!b){a=0;while(1){if(!Va(c,I[c+84|0]?a:H[H[c+68>>2]+(a<<2)>>2],F[c+24|0],f)){break e}a=a+1|0;i=j>>>0<=a>>>0;if((a|0)!=(j|0)){continue}break}break e}n=b&252;k=b&3;o=b>>>0<4;e=0;b=0;while(1){if(!Va(c,I[c+84|0]?b:H[H[c+68>>2]+(b<<2)>>2],F[c+24|0],f)){break e}m=H[d>>2];i=0;a=0;l=0;if(!o){while(1){g=(e<<2)+m|0;h=a<<2;L[g>>2]=L[h+f>>2];L[g+4>>2]=L[(h|4)+f>>2];L[g+8>>2]=L[(h|8)+f>>2];L[g+12>>2]=L[(h|12)+f>>2];a=a+4|0;e=e+4|0;l=l+4|0;if((n|0)!=(l|0)){continue}break}}if(k){while(1){L[(e<<2)+m>>2]=L[(a<<2)+f>>2];a=a+1|0;e=e+1|0;i=i+1|0;if((k|0)!=(i|0)){continue}break}}b=b+1|0;i=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break d}if(!f){break c}}oa(f)}return i|0}function mf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=ca-16|0;ca=e;h=1;i=ea[H[H[a>>2]+24>>2]](a)|0;a:{if((i|0)<=0){break a}l=a+48|0;h=0;while(1){b:{c:{if(!H[(ea[H[H[a>>2]+28>>2]](a)|0)+40>>2]){break c}j=f<<2;g=H[j+H[a+36>>2]>>2];b=H[g+8>>2];k=rb(g);if(!k){break c}g=H[(ea[H[H[a>>2]+28>>2]](a)|0)+40>>2];H[e+12>>2]=H[b+56>>2];b=pa(32);H[e>>2]=b;H[e+4>>2]=24;H[e+8>>2]=-2147483616;c=I[1206]|I[1207]<<8|(I[1208]<<16|I[1209]<<24);d=I[1202]|I[1203]<<8|(I[1204]<<16|I[1205]<<24);F[b+16|0]=d;F[b+17|0]=d>>>8;F[b+18|0]=d>>>16;F[b+19|0]=d>>>24;F[b+20|0]=c;F[b+21|0]=c>>>8;F[b+22|0]=c>>>16;F[b+23|0]=c>>>24;c=I[1198]|I[1199]<<8|(I[1200]<<16|I[1201]<<24);d=I[1194]|I[1195]<<8|(I[1196]<<16|I[1197]<<24);F[b+8|0]=d;F[b+9|0]=d>>>8;F[b+10|0]=d>>>16;F[b+11|0]=d>>>24;F[b+12|0]=c;F[b+13|0]=c>>>8;F[b+14|0]=c>>>16;F[b+15|0]=c>>>24;c=I[1190]|I[1191]<<8|(I[1192]<<16|I[1193]<<24);d=I[1186]|I[1187]<<8|(I[1188]<<16|I[1189]<<24);F[b|0]=d;F[b+1|0]=d>>>8;F[b+2|0]=d>>>16;F[b+3|0]=d>>>24;F[b+4|0]=c;F[b+5|0]=c>>>8;F[b+6|0]=c>>>16;F[b+7|0]=c>>>24;F[b+24|0]=0;b=sd(g,e+12|0,e);if(F[e+11|0]<0){oa(H[e>>2])}if(!b){break c}oe(H[H[H[a+36>>2]+j>>2]+8>>2],k);break b}b=H[H[a+36>>2]+(f<<2)>>2];if(!(ea[H[H[b>>2]+24>>2]](b,l)|0)){break a}}f=f+1|0;h=(i|0)<=(f|0);if((f|0)!=(i|0)){continue}break}}ca=e+16|0;return h|0}function Ye(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,k=0,l=0,m=0;k=ca-16|0;ca=k;c=H[b+20>>2];d=H[b+16>>2];e=d+4|0;c=e>>>0<4?c+1|0:c;g=H[b+12>>2];a:{if(K[b+8>>2]>>0&(g|0)<=(c|0)|(c|0)>(g|0)){break a}d=d+H[b>>2]|0;h=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;if((h|0)<0){break a}Wa(a+76|0,h);c=k;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;b:{if(!ta(c,b)){break b}if(h){g=1;while(1){d=1<>2]+(i>>>3&536870908)|0;e=e^g;if(e&1){d=H[f>>2]&(d^-1)}else{d=d|H[f>>2]}g=e^1;H[f>>2]=d;i=i+1|0;if((h|0)!=(i|0)){continue}break}}i=0;c=H[b+8>>2];e=H[b+12>>2];f=e;e=H[b+20>>2];g=e;l=H[b+16>>2];d=l+4|0;e=d>>>0<4?e+1|0:e;h=d;if(d>>>0>c>>>0&(e|0)>=(f|0)|(e|0)>(f|0)){break b}m=H[b>>2];d=m+l|0;j=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=h;H[b+20>>2]=e;d=c;c=g;e=l+8|0;c=e>>>0<8?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break b}d=h+m|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;if((d|0)<(j|0)){break b}H[a+16>>2]=d;H[a+12>>2]=j;c=(d>>31)-((j>>31)+(d>>>0>>0)|0)|0;b=d-j|0;if(!c&b>>>0>2147483646|c){break b}i=1;c=b+1|0;H[a+20>>2]=c;b=c>>>1|0;H[a+24>>2]=b;H[a+28>>2]=0-b;if(c&1){break b}H[a+24>>2]=b-1}}ca=k+16|0;return i|0}function rg(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,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=ca-16|0;ca=k;j=H[b+80>>2];e=I[c+24|0];b=N(j,e);a:{b:{c:{d:{f=H[c+28>>2];if(!(!I[c+84|0]|(f|0)!=5&(f|0)!=6)){e=H[c+48>>2];c=H[H[c>>2]>>2];H[k+8>>2]=0;H[k>>2]=0;H[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<2;a=pa(b);g=qa(a,c+e|0,b)+b|0}b=H[d>>2];if(b){H[d+4>>2]=b;oa(b)}H[d+8>>2]=g;H[d+4>>2]=g;H[d>>2]=a;h=1;break a}if(e){f=e<<2;a=pa(f);ra(a,0,f)}i=H[d>>2];f=H[d+4>>2]-i>>2;e:{if(f>>>0>>0){ya(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}H[d+4>>2]=i+(b<<2)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!dc(c,I[c+84|0]?b:H[H[c+68>>2]+(b<<2)>>2],F[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!dc(c,I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],F[c+24|0],a)){break c}n=H[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<2)+n|0;i=b<<2;H[f>>2]=H[i+a>>2];H[f+4>>2]=H[(i|4)+a>>2];H[f+8>>2]=H[(i|8)+a>>2];H[f+12>>2]=H[(i|12)+a>>2];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){H[(g<<2)+n>>2]=H[(b<<2)+a>>2];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}sa();v()}if(!a){break a}}oa(a)}ca=k+16|0;return h|0}function ge(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,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=ca-16|0;ca=k;j=H[b+80>>2];e=I[c+24|0];b=N(j,e);a:{b:{c:{d:{f=H[c+28>>2];if(!(!I[c+84|0]|(f|0)!=5&(f|0)!=6)){e=H[c+48>>2];c=H[H[c>>2]>>2];H[k+8>>2]=0;H[k>>2]=0;H[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<2;a=pa(b);g=qa(a,c+e|0,b)+b|0}b=H[d>>2];if(b){H[d+4>>2]=b;oa(b)}H[d+8>>2]=g;H[d+4>>2]=g;H[d>>2]=a;h=1;break a}if(e){f=e<<2;a=pa(f);ra(a,0,f)}i=H[d>>2];f=H[d+4>>2]-i>>2;e:{if(f>>>0>>0){ya(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}H[d+4>>2]=i+(b<<2)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!ec(c,I[c+84|0]?b:H[H[c+68>>2]+(b<<2)>>2],F[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!ec(c,I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],F[c+24|0],a)){break c}n=H[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<2)+n|0;i=b<<2;H[f>>2]=H[i+a>>2];H[f+4>>2]=H[(i|4)+a>>2];H[f+8>>2]=H[(i|8)+a>>2];H[f+12>>2]=H[(i|12)+a>>2];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){H[(g<<2)+n>>2]=H[(b<<2)+a>>2];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}sa();v()}if(!a){break a}}oa(a)}ca=k+16|0;return h|0}function tg(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,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=ca-16|0;ca=k;j=H[b+80>>2];e=I[c+24|0];b=N(j,e);a:{b:{c:{d:{f=H[c+28>>2];if(!(!I[c+84|0]|(f|0)!=3&(f|0)!=4)){e=H[c+48>>2];c=H[H[c>>2]>>2];H[k+8>>2]=0;H[k>>2]=0;H[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<1;a=pa(b);g=qa(a,c+e|0,b)+b|0}b=H[d>>2];if(b){H[d+4>>2]=b;oa(b)}H[d+8>>2]=g;H[d+4>>2]=g;H[d>>2]=a;h=1;break a}if(e){f=e<<1;a=pa(f);ra(a,0,f)}i=H[d>>2];f=H[d+4>>2]-i>>1;e:{if(f>>>0>>0){qe(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}H[d+4>>2]=i+(b<<1)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!gc(c,I[c+84|0]?b:H[H[c+68>>2]+(b<<2)>>2],F[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!gc(c,I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],F[c+24|0],a)){break c}n=H[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<1)+n|0;i=b<<1;G[f>>1]=J[i+a>>1];G[f+2>>1]=J[(i|2)+a>>1];G[f+4>>1]=J[(i|4)+a>>1];G[f+6>>1]=J[(i|6)+a>>1];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){G[(g<<1)+n>>1]=J[(b<<1)+a>>1];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}sa();v()}if(!a){break a}}oa(a)}ca=k+16|0;return h|0}function sg(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,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=ca-16|0;ca=k;j=H[b+80>>2];e=I[c+24|0];b=N(j,e);a:{b:{c:{d:{f=H[c+28>>2];if(!(!I[c+84|0]|(f|0)!=3&(f|0)!=4)){e=H[c+48>>2];c=H[H[c>>2]>>2];H[k+8>>2]=0;H[k>>2]=0;H[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<1;a=pa(b);g=qa(a,c+e|0,b)+b|0}b=H[d>>2];if(b){H[d+4>>2]=b;oa(b)}H[d+8>>2]=g;H[d+4>>2]=g;H[d>>2]=a;h=1;break a}if(e){f=e<<1;a=pa(f);ra(a,0,f)}i=H[d>>2];f=H[d+4>>2]-i>>1;e:{if(f>>>0>>0){qe(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}H[d+4>>2]=i+(b<<1)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!fc(c,I[c+84|0]?b:H[H[c+68>>2]+(b<<2)>>2],F[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!fc(c,I[c+84|0]?e:H[H[c+68>>2]+(e<<2)>>2],F[c+24|0],a)){break c}n=H[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<1)+n|0;i=b<<1;G[f>>1]=J[i+a>>1];G[f+2>>1]=J[(i|2)+a>>1];G[f+4>>1]=J[(i|4)+a>>1];G[f+6>>1]=J[(i|6)+a>>1];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){G[(g<<1)+n>>1]=J[(b<<1)+a>>1];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}sa();v()}if(!a){break a}}oa(a)}ca=k+16|0;return h|0}function Ce(a,b){var c=0,d=0,e=0,f=0,g=0;f=-1;d=-1;a:{if((b|0)==-1){break a}d=b+1|0;f=(d>>>0)%3|0?d:b-2|0;d=b-1|0;if((b>>>0)%3|0){break a}d=b+2|0}b:{c:{d:{switch(H[a+168>>2]){case 0:case 1:e=H[a+148>>2];c=1;b=H[a+156>>2];g=b+(((f|0)==-1?-1:H[H[e>>2]+(f<<2)>>2])<<2)|0;H[g>>2]=H[g>>2]+1;b=(((d|0)==-1?-1:H[H[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 5:e=H[a+148>>2];c=-1;c=((b|0)!=-1?H[H[e>>2]+(b<<2)>>2]:c)<<2;b=H[a+156>>2];c=c+b|0;H[c>>2]=H[c>>2]+1;c=(((f|0)==-1?-1:H[H[e>>2]+(f<<2)>>2])<<2)+b|0;H[c>>2]=H[c>>2]+1;c=2;b=(((d|0)==-1?-1:H[H[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 3:e=H[a+148>>2];c=-1;c=((b|0)!=-1?H[H[e>>2]+(b<<2)>>2]:c)<<2;b=H[a+156>>2];c=c+b|0;H[c>>2]=H[c>>2]+1;c=(((f|0)==-1?-1:H[H[e>>2]+(f<<2)>>2])<<2)+b|0;H[c>>2]=H[c>>2]+2;c=1;b=(((d|0)==-1?-1:H[H[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 7:break d;default:break b}}e=H[a+148>>2];c=-1;c=((b|0)!=-1?H[H[e>>2]+(b<<2)>>2]:c)<<2;b=H[a+156>>2];c=c+b|0;H[c>>2]=H[c>>2]+2;c=(((f|0)==-1?-1:H[H[e>>2]+(f<<2)>>2])<<2)+b|0;H[c>>2]=H[c>>2]+2;c=2;b=(((d|0)==-1?-1:H[H[e>>2]+(d<<2)>>2])<<2)+b|0}H[b>>2]=H[b>>2]+c}c=a;b=H[H[a+156>>2]+(((f|0)==-1?-1:H[H[H[a+148>>2]>>2]+(f<<2)>>2])<<2)>>2];d=H[a+180>>2];a=H[a+176>>2];H[c+172>>2]=(a|0)<=(b|0)?((b|0)<(d|0)?b:d)-a|0:0}function Ac(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;H[a+24>>2]=0;f=H[b+4>>2];g=H[b>>2];e=f-g|0;c=(e|0)/20|0;a:{if((f|0)==(g|0)){break a}b:{if(c>>>0<214748365){f=pa(e);H[a+20>>2]=f;H[a+16>>2]=f;H[a+24>>2]=f+N(c,20);c=H[b>>2];g=H[b+4>>2];if((c|0)==(g|0)){break a}b=f;while(1){e=H[c+4>>2];H[b>>2]=H[c>>2];H[b+4>>2]=e;H[b+16>>2]=H[c+16>>2];e=H[c+12>>2];H[b+8>>2]=H[c+8>>2];H[b+12>>2]=e;b=b+20|0;c=c+20|0;if((g|0)!=(c|0)){continue}break}g=0;H[a+28>>2]=0;H[a+20>>2]=b;if((b|0)!=(f|0)){b=(b-f|0)/20|0;e=b>>>0<=1?1:b;h=e&3;b=0;c=0;if(e-1>>>0>=3){i=e&-4;e=0;while(1){d=f+N(b,20)|0;d=N(H[d+16>>2],H[d+12>>2]);c=c>>>0>d>>>0?c:d;d=f+N(b|1,20)|0;d=N(H[d+16>>2],H[d+12>>2]);c=c>>>0>d>>>0?c:d;d=f+N(b|2,20)|0;d=N(H[d+16>>2],H[d+12>>2]);c=c>>>0>d>>>0?c:d;d=f+N(b|3,20)|0;d=N(H[d+16>>2],H[d+12>>2]);c=c>>>0>d>>>0?c:d;b=b+4|0;e=e+4|0;if((i|0)!=(e|0)){continue}break}}if(h){while(1){e=f+N(b,20)|0;e=N(H[e+16>>2],H[e+12>>2]);c=c>>>0>e>>>0?c:e;b=b+1|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}if(!c){H[a+12>>2]=0;return a}if((c|0)<0){break b}g=pa(c);b=ra(g,0,c);f=b+c|0;H[a+8>>2]=f;H[a+4>>2]=f;H[a>>2]=b}H[a+12>>2]=g;return a}sa();v()}sa();v()}H[a+28>>2]=0;H[a+12>>2]=0;return a}function Dh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:{b=H[a+32>>2];f=H[b+8>>2];h=H[b+12>>2];g=H[b+20>>2];c=H[b+16>>2];e=0;b:{if((h|0)<=(g|0)&c>>>0>=f>>>0|(g|0)>(h|0)){break b}f=I[H[b>>2]+c|0];e=b;b=g;c=c+1|0;b=c?b:b+1|0;H[e+16>>2]=c;H[e+20>>2]=b;c:{if(!f){break c}while(1){if(ea[H[H[a>>2]+16>>2]](a,d)|0){d=d+1|0;if((f|0)!=(d|0)){continue}break c}break}return 0}d=H[a+8>>2];b=H[a+12>>2];if((d|0)!=(b|0)){while(1){c=H[d>>2];if(!(ea[H[H[c>>2]+8>>2]](c,a,H[a+4>>2])|0)){break a}d=d+4|0;if((b|0)!=(d|0)){continue}break}}d:{if(!f){break d}d=0;while(1){b=H[H[a+8>>2]+(d<<2)>>2];if(!(ea[H[H[b>>2]+12>>2]](b,H[a+32>>2])|0)){break a}d=d+1|0;if((f|0)!=(d|0)){continue}break}if(!f){break d}i=a+20|0;b=0;while(1){d=0;j=b<<2;c=H[j+H[a+8>>2]>>2];k=ea[H[H[c>>2]+24>>2]](c)|0;if((k|0)>0){while(1){c=H[H[a+8>>2]+j>>2];c=ea[H[H[c>>2]+20>>2]](c,d)|0;e=H[a+20>>2];g=H[a+24>>2]-e>>2;e:{if(c>>>0>>0){break e}h=c+1|0;if(h>>>0>g>>>0){ya(i,h-g|0);e=H[i>>2];break e}if(g>>>0<=h>>>0){break e}H[a+24>>2]=(h<<2)+e}H[(c<<2)+e>>2]=b;d=d+1|0;if((k|0)!=(d|0)){continue}break}}b=b+1|0;if((f|0)!=(b|0)){continue}break}}e=0;if(!(ea[H[H[a>>2]+28>>2]](a)|0)){break b}e=ea[H[H[a>>2]+32>>2]](a)|0}return e|0}return 0}function ta(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=ca-16|0;ca=i;f=H[b+20>>2];d=H[b+12>>2];c=H[b+16>>2];a:{if((f|0)>=(d|0)&c>>>0>=K[b+8>>2]|(d|0)<(f|0)){break a}F[a+12|0]=I[c+H[b>>2]|0];c=H[b+20>>2];g=c;f=H[b+16>>2];e=f+1|0;c=e?c:c+1|0;H[b+16>>2]=e;H[b+20>>2]=c;b:{if(J[b+38>>1]<=513){d=H[b+8>>2];c=H[b+12>>2];h=c;c=g;f=f+5|0;c=f>>>0<5?c+1|0:c;if(d>>>0>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break a}e=e+H[b>>2]|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[b+16>>2]=f;H[b+20>>2]=c;break b}if(!Qe(1,i+12|0,b)){break a}f=H[b+16>>2];c=H[b+20>>2];d=H[b+8>>2];h=H[b+12>>2];e=H[i+12>>2]}g=d-f|0;d=h-(c+(d>>>0>>0)|0)|0;if((d|0)<=0&e>>>0>g>>>0|(d|0)<0|(e|0)<=0){break a}j=H[b>>2]+f|0;H[a>>2]=j;c:{d:{h=e-1|0;g=h+j|0;d=I[g|0];e:{if(d>>>0<=63){H[a+4>>2]=h;g=I[g|0]&63;break e}f:{switch((d>>>6|0)-1|0){case 1:break d;case 0:break f;default:break a}}if(e>>>0<2){break a}d=e-2|0;H[a+4>>2]=d;d=d+j|0;g=I[d+1|0]<<8&16128|I[d|0]}H[a+8>>2]=g+4096;break c}if(e>>>0<3){break a}d=e-3|0;H[a+4>>2]=d;g=a;a=d+j|0;a=I[a+1|0]<<8|I[a+2|0]<<16&4128768|I[a|0];H[g+8>>2]=a+4096;if(a>>>0>1044479){break a}}a=e+f|0;c=a>>>0>>0?c+1|0:c;H[b+16>>2]=a;H[b+20>>2]=c;k=1}ca=i+16|0;return k}function Wf(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;Xd(a,b,c);c=H[a+84>>2];d=H[a+88>>2]-c>>2;a:{if((d|0)>(b|0)){break a}b=b+1|0;if(b>>>0>d>>>0){b:{d=b-d|0;e=H[a+92>>2];c=H[a+88>>2];if(d>>>0<=e-c>>2>>>0){c:{if(!d){break c}b=c;e=d&7;if(e){while(1){H[b>>2]=1;b=b+4|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}c=(d<<2)+c|0;if((d-1&1073741823)>>>0<7){break c}while(1){H[b+24>>2]=1;H[b+28>>2]=1;H[b+16>>2]=1;H[b+20>>2]=1;H[b+8>>2]=1;H[b+12>>2]=1;H[b>>2]=1;H[b+4>>2]=1;b=b+32|0;if((c|0)!=(b|0)){continue}break}}H[a+88>>2]=c;break b}d:{b=c;c=H[a+84>>2];i=b-c|0;g=i>>2;b=g+d|0;if(b>>>0<1073741824){e=e-c|0;h=e>>>1|0;e=e>>>0>=2147483644?1073741823:b>>>0>>0?h:b;if(e){if(e>>>0>=1073741824){break d}j=pa(e<<2)}g=(g<<2)+j|0;b=g;h=d&7;if(h){while(1){H[b>>2]=1;b=b+4|0;f=f+1|0;if((h|0)!=(f|0)){continue}break}}f=g+(d<<2)|0;if((d-1&1073741823)>>>0>=7){while(1){H[b+24>>2]=1;H[b+28>>2]=1;H[b+16>>2]=1;H[b+20>>2]=1;H[b+8>>2]=1;H[b+12>>2]=1;H[b>>2]=1;H[b+4>>2]=1;b=b+32|0;if((f|0)!=(b|0)){continue}break}}b=va(j,c,i);H[a+88>>2]=f;H[a+84>>2]=b;H[a+92>>2]=b+(e<<2);if(c){oa(c)}break b}sa();v()}wa();v()}return}if(b>>>0>=d>>>0){break a}H[a+88>>2]=c+(b<<2)}}function qb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=H[a+8>>2];e=H[a+4>>2];if(d-e>>2>>>0>=b>>>0){a:{if(!b){break a}d=e;g=b&7;if(g){while(1){H[d>>2]=H[c>>2];d=d+4|0;f=f+1|0;if((g|0)!=(f|0)){continue}break}}e=(b<<2)+e|0;if((b-1&1073741823)>>>0<7){break a}while(1){H[d>>2]=H[c>>2];H[d+4>>2]=H[c>>2];H[d+8>>2]=H[c>>2];H[d+12>>2]=H[c>>2];H[d+16>>2]=H[c>>2];H[d+20>>2]=H[c>>2];H[d+24>>2]=H[c>>2];H[d+28>>2]=H[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}H[a+4>>2]=e;return}b:{i=H[a>>2];f=e-i>>2;h=f+b|0;if(h>>>0<1073741824){j=d-i|0;d=j>>>1|0;h=j>>>0>=2147483644?1073741823:d>>>0>h>>>0?d:h;if(h){if(h>>>0>=1073741824){break b}k=pa(h<<2)}f=(f<<2)+k|0;d=f;j=b&7;if(j){while(1){H[d>>2]=H[c>>2];d=d+4|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}}g=(b<<2)+f|0;if((b-1&1073741823)>>>0>=7){while(1){H[d>>2]=H[c>>2];H[d+4>>2]=H[c>>2];H[d+8>>2]=H[c>>2];H[d+12>>2]=H[c>>2];H[d+16>>2]=H[c>>2];H[d+20>>2]=H[c>>2];H[d+24>>2]=H[c>>2];H[d+28>>2]=H[c>>2];d=d+32|0;if((g|0)!=(d|0)){continue}break}}if((e|0)!=(i|0)){while(1){f=f-4|0;e=e-4|0;H[f>>2]=H[e>>2];if((e|0)!=(i|0)){continue}break}}H[a+8>>2]=(h<<2)+k;H[a+4>>2]=g;H[a>>2]=f;if(i){oa(i)}return}sa();v()}wa();v()}function Kc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=H[a+8>>2];e=H[a>>2];if(d-e>>2>>>0>=b>>>0){f=H[a+4>>2];h=f-e>>2;i=b>>>0>h>>>0?h:b;a:{if(!i){break a}d=e;g=i;j=g&7;if(j){while(1){H[d>>2]=H[c>>2];g=g-1|0;d=d+4|0;k=k+1|0;if((k|0)!=(j|0)){continue}break}}if(i>>>0<8){break a}while(1){H[d>>2]=H[c>>2];H[d+4>>2]=H[c>>2];H[d+8>>2]=H[c>>2];H[d+12>>2]=H[c>>2];H[d+16>>2]=H[c>>2];H[d+20>>2]=H[c>>2];H[d+24>>2]=H[c>>2];H[d+28>>2]=H[c>>2];d=d+32|0;g=g-8|0;if(g){continue}break}}if(b>>>0>h>>>0){b=(b-h<<2)+f|0;while(1){H[f>>2]=H[c>>2];f=f+4|0;if((b|0)!=(f|0)){continue}break}H[a+4>>2]=b;return}H[a+4>>2]=e+(b<<2);return}if(e){H[a+4>>2]=e;oa(e);H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;d=0}b:{if(b>>>0>=1073741824){break b}e=d>>>1|0;d=d>>>0>=2147483644?1073741823:b>>>0>>0?e:b;if(d>>>0>=1073741824){break b}d=d<<2;e=pa(d);H[a>>2]=e;H[a+8>>2]=d+e;c=H[c>>2];d=e;g=b&7;if(g){while(1){H[d>>2]=c;d=d+4|0;f=f+1|0;if((g|0)!=(f|0)){continue}break}}e=e+(b<<2)|0;if((b-1&1073741823)>>>0>=7){while(1){H[d+28>>2]=c;H[d+24>>2]=c;H[d+20>>2]=c;H[d+16>>2]=c;H[d+12>>2]=c;H[d+8>>2]=c;H[d+4>>2]=c;H[d>>2]=c;d=d+32|0;if((e|0)!=(d|0)){continue}break}}H[a+4>>2]=e;return}sa();v()}function Me(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=ca-16|0;ca=h;a:{b:{if(J[b+38>>1]<=511){e=H[b+8>>2];c=H[b+12>>2];i=c;f=H[b+20>>2];d=H[b+16>>2];g=d+8|0;f=g>>>0<8?f+1|0:f;if(e>>>0>>0&(c|0)<=(f|0)|(c|0)<(f|0)){break a}d=d+H[b>>2]|0;c=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=I[d+4|0]|I[d+5|0]<<8|(I[d+6|0]<<16|I[d+7|0]<<24);H[b+16>>2]=g;H[b+20>>2]=f;break b}if(!gb(1,h+8|0,b)){break a}g=H[b+16>>2];f=H[b+20>>2];e=H[b+8>>2];i=H[b+12>>2];c=H[h+8>>2];d=H[h+12>>2]}j=e-g|0;e=i-(f+(e>>>0>>0)|0)|0;if((e|0)==(d|0)&c>>>0>j>>>0|d>>>0>e>>>0){break a}e=d+f|0;f=c+g|0;e=f>>>0>>0?e+1|0:e;H[b+16>>2]=f;H[b+20>>2]=e;if((c|0)<=0){break a}b=H[b>>2]+g|0;H[a+40>>2]=b;g=c-1|0;e=b+g|0;f=I[e|0];c:{if(f>>>0<=63){H[a+44>>2]=g;b=I[e|0]&63;break c}d:{switch((f>>>6|0)-1|0){case 0:if(c>>>0<2){break a}c=c-2|0;H[a+44>>2]=c;b=b+c|0;b=I[b+1|0]<<8&16128|I[b|0];break c;case 1:if(c>>>0<3){break a}c=c-3|0;H[a+44>>2]=c;b=b+c|0;b=I[b+1|0]<<8|I[b+2|0]<<16&4128768|I[b|0];break c;default:break d}}c=c-4|0;H[a+44>>2]=c;b=b+c|0;b=(I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24))&1073741823}H[a+48>>2]=b+16384;k=b>>>0<4177920}ca=h+16|0;return k}function Ua(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=(c>>>0)/3|0;j=H[(H[H[a+8>>2]+96>>2]+N(f,12)|0)+(c-N(f,3)<<2)>>2];a:{h=H[H[a+12>>2]+4>>2];e=H[h+4>>2];if((e|0)!=H[h+8>>2]){H[e>>2]=j;H[h+4>>2]=e+4;break a}b:{i=H[h>>2];f=e-i|0;g=f>>2;d=g+1|0;if(d>>>0<1073741824){k=g<<2;g=f>>>1|0;g=f>>>0>=2147483644?1073741823:d>>>0>>0?g:d;if(g){if(g>>>0>=1073741824){break b}f=pa(g<<2)}else{f=0}d=k+f|0;H[d>>2]=j;j=d+4|0;if((e|0)!=(i|0)){while(1){d=d-4|0;e=e-4|0;H[d>>2]=H[e>>2];if((e|0)!=(i|0)){continue}break}}H[h+8>>2]=f+(g<<2);H[h+4>>2]=j;H[h>>2]=d;if(i){oa(i)}break a}sa();v()}wa();v()}c:{d:{h=H[a+4>>2];e=H[h+4>>2];e:{if((e|0)!=H[h+8>>2]){H[e>>2]=c;H[h+4>>2]=e+4;break e}i=H[h>>2];f=e-i|0;j=f>>2;d=j+1|0;if(d>>>0>=1073741824){break d}g=f>>>1|0;g=f>>>0>=2147483644?1073741823:d>>>0>>0?g:d;if(g){if(g>>>0>=1073741824){break c}f=pa(g<<2)}else{f=0}d=f+(j<<2)|0;H[d>>2]=c;c=d+4|0;if((e|0)!=(i|0)){while(1){d=d-4|0;e=e-4|0;H[d>>2]=H[e>>2];if((e|0)!=(i|0)){continue}break}}H[h+8>>2]=f+(g<<2);H[h+4>>2]=c;H[h>>2]=d;if(!i){break e}oa(i)}a=H[a+4>>2];H[H[a+12>>2]+(b<<2)>>2]=H[a+24>>2];H[a+24>>2]=H[a+24>>2]+1;return}sa();v()}wa();v()}function Wb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=d-c|0;if((h|0)<=0){return}a:{e=H[a+8>>2];i=H[a+4>>2];if((e-i|0)>=(h|0)){j=i-b|0;if((j|0)>=(h|0)){f=i;g=d;break a}f=i;g=c+j|0;if((g|0)!=(d|0)){e=g;while(1){F[f|0]=I[e|0];f=f+1|0;e=e+1|0;if((e|0)!=(d|0)){continue}break}}H[a+4>>2]=f;if((j|0)>0){break a}return}k=H[a>>2];g=(i-k|0)+h|0;if((g|0)>=0){j=b-k|0;f=e-k|0;e=f<<1;f=f>>>0>=1073741823?2147483647:e>>>0>g>>>0?e:g;if(f){e=pa(f)}else{e=0}g=j+e|0;if((c|0)!=(d|0)){g=qa(g,c,h)+h|0}d=va(e,k,j);c=i-b|0;b=va(g,b,c);H[a+8>>2]=e+f;H[a+4>>2]=b+c;H[a>>2]=d;if(k){oa(k)}return}sa();v()}e=f;d=e-h|0;if(i>>>0>d>>>0){while(1){F[e|0]=I[d|0];e=e+1|0;d=d+1|0;if(i>>>0>d>>>0){continue}break}}H[a+4>>2]=e;a=b+h|0;if((a|0)!=(f|0)){a=f-a|0;va(f-a|0,b,a)}if((c|0)==(g|0)){return}f=(c^-1)+g|0;a=g-c&7;b:{if(!a){e=b;break b}d=0;e=b;while(1){F[e|0]=I[c|0];e=e+1|0;c=c+1|0;d=d+1|0;if((a|0)!=(d|0)){continue}break}}if(f>>>0<7){return}while(1){F[e|0]=I[c|0];F[e+1|0]=I[c+1|0];F[e+2|0]=I[c+2|0];F[e+3|0]=I[c+3|0];F[e+4|0]=I[c+4|0];F[e+5|0]=I[c+5|0];F[e+6|0]=I[c+6|0];F[e+7|0]=I[c+7|0];e=e+8|0;c=c+8|0;if((g|0)!=(c|0)){continue}break}}function qa(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){ba(a|0,b|0,c|0);return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if(!c){c=a;break b}c=a;while(1){F[c|0]=I[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){H[c>>2]=H[b>>2];H[c+4>>2]=H[b+4>>2];H[c+8>>2]=H[b+8>>2];H[c+12>>2]=H[b+12>>2];H[c+16>>2]=H[b+16>>2];H[c+20>>2]=H[b+20>>2];H[c+24>>2]=H[b+24>>2];H[c+28>>2]=H[b+28>>2];H[c+32>>2]=H[b+32>>2];H[c+36>>2]=H[b+36>>2];H[c+40>>2]=H[b+40>>2];H[c+44>>2]=H[b+44>>2];H[c+48>>2]=H[b+48>>2];H[c+52>>2]=H[b+52>>2];H[c+56>>2]=H[b+56>>2];H[c+60>>2]=H[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){H[c>>2]=H[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){F[c|0]=I[b|0];F[c+1|0]=I[b+1|0];F[c+2|0]=I[b+2|0];F[c+3|0]=I[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){F[c|0]=I[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function ub(a,b){var c=0,d=0,e=0,f=0,g=0;d=ca-16|0;ca=d;H[a+12>>2]=b;H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;c=a+16|0;H[c>>2]=0;H[c+4>>2]=0;F[c+5|0]=0;F[c+6|0]=0;F[c+7|0]=0;F[c+8|0]=0;F[c+9|0]=0;F[c+10|0]=0;F[c+11|0]=0;F[c+12|0]=0;H[a+32>>2]=0;H[a+36>>2]=0;H[a+48>>2]=0;H[a+40>>2]=0;H[a+44>>2]=0;H[a+52>>2]=0;H[a+56>>2]=0;H[a+68>>2]=0;H[a+60>>2]=0;H[a+64>>2]=0;H[a+72>>2]=0;H[a+76>>2]=0;H[a+88>>2]=0;H[a+80>>2]=0;H[a+84>>2]=0;H[a+100>>2]=0;H[a+92>>2]=0;H[a+96>>2]=0;g=a+116|0;a:{b:{if(b){if(b>>>0<1073741824){break b}sa();v()}H[a+104>>2]=0;H[a+108>>2]=0;H[a+112>>2]=0;H[d+8>>2]=0;H[d>>2]=0;H[d+4>>2]=0;c=1;break a}c=b<<2;e=pa(c);H[a+92>>2]=e;f=c+e|0;H[a+100>>2]=f;ra(e,0,c);H[a+112>>2]=0;H[a+104>>2]=0;H[a+108>>2]=0;H[a+96>>2]=f;e=pa(c);H[a+104>>2]=e;f=c+e|0;H[a+112>>2]=f;ra(e,0,c);H[a+108>>2]=f;e=pa(c);H[d>>2]=e;f=c+e|0;H[d+8>>2]=f;ra(e,0,c);H[d+4>>2]=f;c=b<<5|1}tb(g,c,d);e=H[d>>2];if(e){H[d+4>>2]=e;oa(e)}H[d+8>>2]=0;H[d>>2]=0;H[d+4>>2]=0;if(b){b=b<<2;e=pa(b);H[d>>2]=e;f=b+e|0;H[d+8>>2]=f;ra(e,0,b);H[d+4>>2]=f}tb(a+128|0,c,d);b=H[d>>2];if(b){H[d+4>>2]=b;oa(b)}ca=d+16|0;return a}function ze(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;H[a>>2]=11484;d=a+232|0;b=H[d+196>>2];if(b){H[d+200>>2]=b;oa(b)}c=H[d+184>>2];if(c){b=c;e=H[d+188>>2];if((b|0)!=(e|0)){while(1){b=e-12|0;f=H[b>>2];if(f){H[e-8>>2]=f;oa(f)}e=b;if((b|0)!=(c|0)){continue}break}b=H[d+184>>2]}H[d+188>>2]=c;oa(b)}b=H[d+156>>2];if(b){H[d+160>>2]=b;oa(b)}c=H[d+136>>2];H[d+136>>2]=0;if(c){e=c-4|0;b=H[e>>2];if(b){b=c+(b<<4)|0;while(1){b=b-16|0;if((c|0)!=(b|0)){continue}break}}oa(e)}Yc(a+216|0);b=H[a+196>>2];if(b){H[a+200>>2]=b;oa(b)}b=H[a+184>>2];if(b){H[a+188>>2]=b;oa(b)}b=H[a+172>>2];if(b){H[a+176>>2]=b;oa(b)}b=H[a+160>>2];if(b){H[a+164>>2]=b;oa(b)}b=H[a+144>>2];if(b){while(1){c=H[b>>2];oa(b);b=c;if(b){continue}break}}b=H[a+136>>2];H[a+136>>2]=0;if(b){oa(b)}b=H[a+120>>2];if(b){oa(b)}b=H[a+108>>2];if(b){oa(b)}b=H[a+96>>2];if(b){oa(b)}b=H[a+72>>2];if(b){H[a+76>>2]=b;oa(b)}b=H[a+60>>2];if(b){oa(b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}b=H[a+36>>2];if(b){H[a+40>>2]=b;oa(b)}b=H[a+24>>2];if(b){H[a+28>>2]=b;oa(b)}b=H[a+12>>2];if(b){H[a+16>>2]=b;oa(b)}b=H[a+8>>2];H[a+8>>2]=0;if(b){cb(b)}return a|0}function Pa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=H[a+8>>2];e=H[a+4>>2];if(d-e>>2>>>0>=b>>>0){a:{if(!b){break a}d=e;f=b&7;if(f){while(1){H[d>>2]=H[c>>2];d=d+4|0;h=h+1|0;if((f|0)!=(h|0)){continue}break}}e=(b<<2)+e|0;if((b-1&1073741823)>>>0<7){break a}while(1){H[d>>2]=H[c>>2];H[d+4>>2]=H[c>>2];H[d+8>>2]=H[c>>2];H[d+12>>2]=H[c>>2];H[d+16>>2]=H[c>>2];H[d+20>>2]=H[c>>2];H[d+24>>2]=H[c>>2];H[d+28>>2]=H[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}H[a+4>>2]=e;return}b:{i=H[a>>2];j=e-i|0;f=j>>2;g=f+b|0;if(g>>>0<1073741824){d=d-i|0;e=d>>>1|0;g=d>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break b}k=pa(g<<2)}f=(f<<2)+k|0;d=f;e=b&7;if(e){while(1){H[d>>2]=H[c>>2];d=d+4|0;h=h+1|0;if((e|0)!=(h|0)){continue}break}}e=f+(b<<2)|0;if((b-1&1073741823)>>>0>=7){while(1){H[d>>2]=H[c>>2];H[d+4>>2]=H[c>>2];H[d+8>>2]=H[c>>2];H[d+12>>2]=H[c>>2];H[d+16>>2]=H[c>>2];H[d+20>>2]=H[c>>2];H[d+24>>2]=H[c>>2];H[d+28>>2]=H[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}b=va(k,i,j);H[a+4>>2]=e;H[a>>2]=b;H[a+8>>2]=b+(g<<2);if(i){oa(i)}return}sa();v()}wa();v()}function Cc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(I[a+11|0]>>>7|0){d=H[a+4>>2]}else{d=I[a+11|0]&127}if(d>>>0>>0){h=ca-16|0;ca=h;b=b-d|0;if(b){g=I[a+11|0]>>>7|0?(H[a+8>>2]&2147483647)-1|0:10;if(I[a+11|0]>>>7|0){d=H[a+4>>2]}else{d=I[a+11|0]&127}i=d+b|0;if(g-d>>>0>>0){a:{e=ca-16|0;ca=e;c=i-g|0;if(c>>>0<=2147483631-g>>>0){if(I[a+11|0]>>>7|0){f=H[a>>2]}else{f=a}if(g>>>0<1073741799){H[e+12>>2]=g<<1;H[e>>2]=c+g;c=ca-16|0;ca=c;ca=c+16|0;c=e+12|0;c=H[(K[e>>2]>2]?c:e)>>2];if(c>>>0>=11){j=c+16&-16;c=j-1|0;c=(c|0)==11?j:c}else{c=10}c=c+1|0}else{c=2147483631}Zb(e,c);c=H[e>>2];if(d){yb(c,f,d)}if((g|0)!=10){oa(f)}H[a>>2]=c;H[a+8>>2]=H[a+8>>2]&-2147483648|H[e+4>>2]&2147483647;H[a+8>>2]=H[a+8>>2]|-2147483648;ca=e+16|0;break a}Na();v()}}f=d;if(I[a+11|0]>>>7|0){d=H[a>>2]}else{d=a}f=f+d|0;e=ca-16|0;ca=e;F[e+15|0]=0;while(1){if(b){F[f|0]=I[e+15|0];b=b-1|0;f=f+1|0;continue}break}ca=e+16|0;Id(a,i);F[h+15|0]=0;F[d+i|0]=I[h+15|0]}ca=h+16|0;return}if(I[a+11|0]>>>7|0){d=H[a>>2]}else{d=a}f=ca-16|0;ca=f;Id(a,b);F[f+15|0]=0;F[b+d|0]=I[f+15|0];ca=f+16|0}function Jc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;g=ca-16|0;ca=g;a:{b:{if(b){H[a+88>>2]=0;H[a+92>>2]=0;d=H[a+84>>2];H[a+84>>2]=0;if(d){oa(d)}H[a+76>>2]=0;H[a+80>>2]=0;d=H[a+72>>2];H[a+72>>2]=0;if(d){oa(d)}d=H[b>>2];c=H[b+4>>2];F[g+15|0]=0;Oa(a,c-d>>2,g+15|0);d=H[b+28>>2];c=H[b+24>>2];F[g+14|0]=0;Oa(a+12|0,d-c>>2,g+14|0);Kc(a+28|0,H[b+4>>2]-H[b>>2]>>2,13708);c=H[b+28>>2]-H[b+24>>2]|0;f=c>>2;e=H[a+52>>2];c:{if(f>>>0<=H[a+60>>2]-e>>2>>>0){break c}if((c|0)<0){break b}d=H[a+56>>2];c=pa(c);f=c+(f<<2)|0;h=c+(d-e&-4)|0;c=h;if((d|0)!=(e|0)){while(1){c=c-4|0;d=d-4|0;H[c>>2]=H[d>>2];if((d|0)!=(e|0)){continue}break}}H[a+60>>2]=f;H[a+56>>2]=h;H[a+52>>2]=c;if(!e){break c}oa(e)}c=H[b+28>>2]-H[b+24>>2]|0;f=c>>2;e=H[a+40>>2];d:{if(f>>>0<=H[a+48>>2]-e>>2>>>0){break d}if((c|0)<0){break a}d=H[a+44>>2];c=pa(c);f=c+(f<<2)|0;h=c+(d-e&-4)|0;c=h;if((d|0)!=(e|0)){while(1){c=c-4|0;d=d-4|0;H[c>>2]=H[d>>2];if((d|0)!=(e|0)){continue}break}}H[a+48>>2]=f;H[a+44>>2]=h;H[a+40>>2]=c;if(!e){break d}oa(e)}F[a+24|0]=1;H[a+64>>2]=b}ca=g+16|0;return}sa();v()}sa();v()}function wb(a,b){var c=0,d=0,e=0,f=0,g=0;c=ca-16|0;ca=c;H[a+12>>2]=b;H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+32>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;H[a+36>>2]=0;H[a+40>>2]=0;H[a+52>>2]=0;H[a+44>>2]=0;H[a+48>>2]=0;H[a+56>>2]=0;H[a+60>>2]=0;H[a+72>>2]=0;H[a+64>>2]=0;H[a+68>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+92>>2]=0;H[a+84>>2]=0;H[a+88>>2]=0;H[a+104>>2]=0;H[a+96>>2]=0;H[a+100>>2]=0;g=a+120|0;a:{b:{if(b){if(b>>>0<1073741824){break b}sa();v()}H[a+108>>2]=0;H[a+112>>2]=0;H[a+116>>2]=0;H[c+8>>2]=0;H[c>>2]=0;H[c+4>>2]=0;e=1;break a}e=b<<2;d=pa(e);H[a+96>>2]=d;f=d+e|0;H[a+104>>2]=f;ra(d,0,e);H[a+116>>2]=0;H[a+108>>2]=0;H[a+112>>2]=0;H[a+100>>2]=f;d=pa(e);H[a+108>>2]=d;f=d+e|0;H[a+116>>2]=f;ra(d,0,e);H[a+112>>2]=f;d=pa(e);H[c>>2]=d;f=d+e|0;H[c+8>>2]=f;ra(d,0,e);H[c+4>>2]=f;e=b<<5|1}tb(g,e,c);d=H[c>>2];if(d){H[c+4>>2]=d;oa(d)}H[c+8>>2]=0;H[c>>2]=0;H[c+4>>2]=0;if(b){b=b<<2;d=pa(b);H[c>>2]=d;f=b+d|0;H[c+8>>2]=f;ra(d,0,b);H[c+4>>2]=f}tb(a+132|0,e,c);b=H[c>>2];if(b){H[c+4>>2]=b;oa(b)}ca=c+16|0;return a}function Sb(a,b){var c=0,d=0,e=0;c=(a|0)==(b|0);F[b+12|0]=c;a:{if(c){break a}while(1){d=H[b+8>>2];if(I[d+12|0]){break a}b:{c=H[d+8>>2];e=H[c>>2];if((e|0)==(d|0)){e=H[c+4>>2];if(!(!e|I[e+12|0])){break b}c:{if(H[d>>2]==(b|0)){b=d;break c}b=H[d+4>>2];a=H[b>>2];H[d+4>>2]=a;if(a){H[a+8>>2]=d;c=H[d+8>>2]}H[b+8>>2]=c;a=H[d+8>>2];H[((H[a>>2]!=(d|0))<<2)+a>>2]=b;H[b>>2]=d;H[d+8>>2]=b;c=H[b+8>>2];d=H[c>>2]}F[b+12|0]=1;F[c+12|0]=0;a=H[d+4>>2];H[c>>2]=a;if(a){H[a+8>>2]=c}H[d+8>>2]=H[c+8>>2];a=H[c+8>>2];H[((H[a>>2]!=(c|0))<<2)+a>>2]=d;H[d+4>>2]=c;H[c+8>>2]=d;return}if(!(I[e+12|0]|!e)){break b}d:{if(H[d>>2]!=(b|0)){b=d;break d}a=H[b+4>>2];H[d>>2]=a;if(a){H[a+8>>2]=d;c=H[d+8>>2]}H[b+8>>2]=c;a=H[d+8>>2];H[((H[a>>2]!=(d|0))<<2)+a>>2]=b;H[b+4>>2]=d;H[d+8>>2]=b;c=H[b+8>>2]}F[b+12|0]=1;F[c+12|0]=0;a=H[c+4>>2];b=H[a>>2];H[c+4>>2]=b;if(b){H[b+8>>2]=c}H[a+8>>2]=H[c+8>>2];b=H[c+8>>2];H[((H[b>>2]!=(c|0))<<2)+b>>2]=a;H[a>>2]=c;H[c+8>>2]=a;break a}F[d+12|0]=1;F[c+12|0]=(a|0)==(c|0);F[e+12|0]=1;b=c;if((c|0)!=(a|0)){continue}break}}}function Tj(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(b){if(!c){break k}if(!d){break j}e=Q(d)-Q(b)|0;if(e>>>0<=31){break i}break c}if((d|0)==1|d>>>0>1){break c}da=0;a=(a>>>0)/(c>>>0)|0;break a}if(!a){break h}if(!d|d-1&d){break g}a=b>>>Qj(d)|0;da=0;break a}if(!(c-1&c)){break f}h=(Q(c)+33|0)-Q(b)|0;g=0-h|0;break d}h=e+1|0;g=63-e|0;break d}da=0;a=(b>>>0)/(d>>>0)|0;break a}e=Q(d)-Q(b)|0;if(e>>>0<31){break e}break c}if((c|0)==1){break b}d=Qj(c);c=d&31;if((d&63)>>>0>=32){a=b>>>c|0}else{e=b>>>c|0;a=((1<>>c}da=e;break a}h=e+1|0;g=63-e|0}e=h&63;f=e&31;if(e>>>0>=32){e=0;i=b>>>f|0}else{e=b>>>f|0;i=((1<>>f}g=g&63;f=g&31;if(g>>>0>=32){b=a<>>32-f|b<>>31;e=i<<1|b>>>31;f=m-(j+(e>>>0>g>>>0)|0)>>31;k=c&f;i=e-k|0;e=j-((d&f)+(e>>>0>>0)|0)|0;b=b<<1|a>>>31;a=l|a<<1;l=f&1;h=h-1|0;if(h){continue}break}}da=b<<1|a>>>31;a=l|a<<1;break a}a=0;b=0}da=b}return a}function rc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=H[b+16>>2];h=H[c+4>>2]-k|0;e=H[c>>2]-k|0;H[c>>2]=e;H[c+4>>2]=h;g=H[b+16>>2];f=h>>31;i=(f^h)-f|0;f=e>>31;l=g>>>0>=i+((f^e)-f|0)>>>0;a:{if(l){f=h;break a}b:{c:{if((e|0)>=0){f=1;i=1;if((h|0)>=0){break b}j=1;f=-1;i=-1;if(e){break c}break b}j=-1;f=-1;i=-1;if((h|0)<=0){break b}}f=(h|0)<=0?-1:1;i=j}j=N(g,i);e=(e<<1)-j|0;i=(N(f,i)|0)>=0;g=N(f,g);f=((i?0-e|0:e)+g|0)/2|0;H[c+4>>2]=f;m=c;c=(h<<1)-g|0;e=(j+(i?0-c|0:c)|0)/2|0;H[m>>2]=e;g=H[b+16>>2]}c=H[d+4>>2]+f|0;e=H[d>>2]+e|0;d:{if((g|0)<(e|0)){e=e-H[b+4>>2]|0;break d}if((0-g|0)<=(e|0)){break d}e=H[b+4>>2]+e|0}e:{if((c|0)>(g|0)){c=c-H[b+4>>2]|0;break e}if((0-g|0)<=(c|0)){break e}c=H[b+4>>2]+c|0}f:{if(l){g=c;break f}g:{h:{if((e|0)>=0){b=1;f=1;if((c|0)>=0){break g}d=1;b=-1;f=-1;if(e){break h}break g}d=-1;b=-1;f=-1;if((c|0)<=0){break g}}b=(c|0)<=0?-1:1;f=d}d=N(f,g);h=(e<<1)-d|0;f=(N(b,f)|0)>=0;b=N(b,g);g=((f?0-h|0:h)+b|0)/2|0;b=(c<<1)-b|0;e=(d+(f?0-b|0:b)|0)/2|0}c=a;H[c>>2]=e+k;H[c+4>>2]=g+k}function Wh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=ca-16|0;ca=g;e=H[a+4>>2];d=H[e>>2];a:{b=H[a+12>>2];c=H[b+28>>2]-H[b+24>>2]|0;f=c>>2;b:{if(f>>>0<=H[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=H[e+4>>2];c=pa(c);f=c+(f<<2)|0;h=c+(b-d&-4)|0;c=h;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;H[c>>2]=H[b>>2];if((b|0)!=(d|0)){continue}break}}H[e+8>>2]=f;H[e+4>>2]=h;H[e>>2]=c;if(!d){break b}oa(d)}b=H[a+12>>2];c=H[b+28>>2];b=H[b+24>>2];H[g+12>>2]=0;b=c-b>>2;d=a+96|0;e=H[d>>2];c=H[a+100>>2]-e>>2;c:{if(b>>>0>c>>>0){Pa(d,b-c|0,g+12|0);break c}if(b>>>0>=c>>>0){break c}H[a+100>>2]=e+(b<<2)}e=a+8|0;b=H[a+116>>2];d:{if(b){d=H[b>>2];if((d|0)==H[b+4>>2]){c=1;break d}b=0;while(1){c=ye(e,H[(b<<2)+d>>2]);if(!c){break d}f=H[a+116>>2];d=H[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break d}c=1;a=H[a+12>>2];a=H[a+4>>2]-H[a>>2]|0;if(a>>>0<12){break d}a=(a>>2>>>0)/3|0;b=0;while(1){c=ye(e,N(b,3));if(!c){break d}b=b+1|0;if((a|0)!=(b|0)){continue}break}}ca=g+16|0;return c|0}sa();v()}function gj(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,k=0;c=H[b+88>>2];if(!(!c|H[c>>2]!=1)){e=H[c+8>>2];H[a+4>>2]=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);f=a+8|0;d=I[b+24|0];h=H[a+8>>2];g=H[a+12>>2]-h>>2;a:{if(d>>>0>g>>>0){ya(f,d-g|0);d=I[b+24|0];e=H[c+8>>2];break a}if(d>>>0>=g>>>0){break a}H[a+12>>2]=h+(d<<2)}b:{if(!d){b=4;break b}h=d&3;f=H[f>>2];c:{if(d-1>>>0<3){b=4;d=0;break c}k=d&252;d=0;b=4;while(1){g=d<<2;c=b+e|0;H[g+f>>2]=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[f+(g|4)>>2]=I[c+4|0]|I[c+5|0]<<8|(I[c+6|0]<<16|I[c+7|0]<<24);H[f+(g|8)>>2]=I[c+8|0]|I[c+9|0]<<8|(I[c+10|0]<<16|I[c+11|0]<<24);H[f+(g|12)>>2]=I[c+12|0]|I[c+13|0]<<8|(I[c+14|0]<<16|I[c+15|0]<<24);d=d+4|0;b=b+16|0;i=i+4|0;if((k|0)!=(i|0)){continue}break}}if(!h){break b}while(1){c=b+e|0;H[f+(d<<2)>>2]=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);d=d+1|0;b=b+4|0;j=j+1|0;if((h|0)!=(j|0)){continue}break}}d=a;a=b+e|0;H[d+20>>2]=I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24);d=1}return d|0}function se(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{if(!b){if((d|0)<0){break a}f=H[a+4>>2];b=H[a>>2];d=f-b|0;if(c>>>0>d>>>0){g=c-d|0;e=H[a+8>>2];if(g>>>0<=e-f>>>0){i=a,j=ra(f,0,g)+g|0,H[i+4>>2]=j;break c}if((c|0)<0){break b}f=e-b|0;e=f<<1;f=f>>>0>=1073741823?2147483647:c>>>0>>0?e:c;e=pa(f);ra(e+d|0,0,g);d=va(e,b,d);H[a+8>>2]=d+f;H[a+4>>2]=c+d;H[a>>2]=d;if(!b){break c}oa(b);break c}if(c>>>0>=d>>>0){break c}H[a+4>>2]=b+c;break c}if((d|0)<0){break a}e=H[a+4>>2];f=H[a>>2];g=e-f|0;d:{if((d|0)<=0&c>>>0<=g>>>0|(d|0)<0){break d}if(c>>>0>g>>>0){d=c-g|0;h=H[a+8>>2];if(d>>>0<=h-e>>>0){i=a,j=ra(e,0,d)+d|0,H[i+4>>2]=j;break d}if((c|0)<0){break b}e=h-f|0;h=e<<1;e=e>>>0>=1073741823?2147483647:c>>>0>>0?h:c;h=pa(e);ra(h+g|0,0,d);d=va(h,f,g);H[a+8>>2]=d+e;H[a+4>>2]=c+d;H[a>>2]=d;if(!f){break d}oa(f);break d}if(c>>>0>=g>>>0){break d}H[a+4>>2]=c+f}if(!c){break c}va(H[a>>2],b,c)}b=H[a+28>>2];c=H[a+24>>2]+1|0;b=c?b:b+1|0;H[a+24>>2]=c;H[a+28>>2]=b;g=1;break a}sa();v()}return g}function Jh(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,k=0,l=0,m=0,n=0,o=0;k=H[a+12>>2];c=H[a+68>>2];d=H[c+80>>2];F[b+84|0]=0;n=b+68|0;i=H[b+68>>2];e=H[b+72>>2]-i>>2;a:{if(e>>>0>>0){qb(n,d-e|0,12372);c=H[a+68>>2];d=H[c+80>>2];break a}if(d>>>0>=e>>>0){break a}H[b+72>>2]=i+(d<<2)}b=H[c+100>>2];e=H[c+96>>2];i=(b-e|0)/12|0;m=1;b:{if((b|0)==(e|0)){break b}k=H[k+28>>2];f=H[k>>2];if((f|0)==-1){return 0}o=i>>>0<=1?1:i;c=e;b=0;m=0;while(1){g=H[c>>2];if(g>>>0>=d>>>0){break b}j=H[H[a+72>>2]+12>>2];h=H[j+(f<<2)>>2];if(h>>>0>=d>>>0){break b}f=H[n>>2];H[f+(g<<2)>>2]=h;g=k+(l<<2)|0;h=H[g+4>>2];if((h|0)==-1){break b}l=H[c+4>>2];if(l>>>0>=d>>>0){break b}h=H[(h<<2)+j>>2];if(h>>>0>=d>>>0){break b}H[f+(l<<2)>>2]=h;g=H[g+8>>2];if((g|0)==-1){break b}c=H[c+8>>2];if(c>>>0>=d>>>0){break b}j=H[(g<<2)+j>>2];if(j>>>0>=d>>>0){break b}H[f+(c<<2)>>2]=j;b=b+1|0;m=i>>>0<=b>>>0;if((b|0)==(o|0)){break b}c=e+N(b,12)|0;l=N(b,3);f=H[k+(l<<2)>>2];if((f|0)!=-1){continue}break}}return m|0}function Gh(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,k=0,l=0,m=0;h=H[d+80>>2];e=ca-48|0;ca=e;a=H[a+4>>2];m=a-2|0;a:{if(m>>>0>28){break a}j=H[H[d>>2]>>2]+H[d+48>>2]|0;H[e+16>>2]=a;a=-1<>2]=a^-1;a=-2-a|0;H[e+24>>2]=a;H[e+32>>2]=(a|0)/2;L[e+28>>2]=O(2)/O(a|0);f=H[c>>2];if((f|0)!=H[c+4>>2]){a=0;d=0;while(1){g=H[(d<<2)+f>>2];h=e+36|0;k=H[H[b>>2]>>2];l=H[b+48>>2];f=H[b+40>>2];i=H[b+44>>2];if(!I[b+84|0]){g=H[H[b+68>>2]+(g<<2)>>2]}g=Rj(f,i,g,0);i=g;g=g+l|0;qa(h,g+k|0,f);he(e+16|0,h,e+12|0,e+8|0);f=a<<2;H[f+j>>2]=H[e+12>>2];H[(f|4)+j>>2]=H[e+8>>2];a=a+2|0;d=d+1|0;f=H[c>>2];if(d>>>0>2]-f>>2>>>0){continue}break}break a}if(!h){break a}d=0;a=0;while(1){k=e+36|0;l=H[H[b>>2]>>2];i=H[b+48>>2];c=H[b+40>>2];f=Rj(c,H[b+44>>2],I[b+84|0]?a:H[H[b+68>>2]+(a<<2)>>2],0);g=f;f=f+i|0;qa(k,f+l|0,c);he(e+16|0,k,e+12|0,e+8|0);c=d<<2;H[c+j>>2]=H[e+12>>2];H[(c|4)+j>>2]=H[e+8>>2];d=d+2|0;a=a+1|0;if((h|0)!=(a|0)){continue}break}}ca=e+48|0;return m>>>0<29|0}function Re(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=O(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;k=ca-16|0;ca=k;if(H[c+28>>2]==9){d=H[a+4>>2];h=I[c+24|0];e=h<<2;f=pa(e);l=k+8|0;H[l>>2]=1065353216;i=L[a+20>>2];d=-1<0){L[l>>2]=i/O(d|0)}o=(d|0)>0;a:{if(!o){break a}j=H[c+80>>2];if(!j){break a}if(h){p=H[H[b>>2]>>2]+H[b+48>>2]|0;t=h&254;u=h&1;b=0;while(1){m=H[a+8>>2];i=L[l>>2];d=0;n=0;if((h|0)!=1){while(1){g=d<<2;q=(b<<2)+p|0;L[g+f>>2]=O(i*O(H[q>>2]))+L[g+m>>2];g=g|4;L[g+f>>2]=O(i*O(H[q+4>>2]))+L[g+m>>2];d=d+2|0;b=b+2|0;n=n+2|0;if((t|0)!=(n|0)){continue}break}}if(u){d=d<<2;L[d+f>>2]=O(i*O(H[(b<<2)+p>>2]))+L[d+m>>2];b=b+1|0}qa(H[H[c+64>>2]>>2]+r|0,f,e);r=e+r|0;s=s+1|0;if((s|0)!=(j|0)){continue}break}break a}b=0;if((j|0)!=1){a=j&-2;d=0;while(1){qa(H[H[c+64>>2]>>2]+b|0,f,e);b=b+e|0;qa(b+H[H[c+64>>2]>>2]|0,f,e);b=b+e|0;d=d+2|0;if((a|0)!=(d|0)){continue}break}}if(!(j&1)){break a}qa(H[H[c+64>>2]>>2]+b|0,f,e)}oa(f)}ca=k+16|0;return o|0}function Xh(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,k=0,l=0,m=0,n=0,o=0;c=H[a+12>>2];d=H[a+108>>2];e=H[d+80>>2];F[b+84|0]=0;m=b+68|0;h=H[b+68>>2];f=H[b+72>>2]-h>>2;a:{if(f>>>0>>0){qb(m,e-f|0,12372);d=H[a+108>>2];e=H[d+80>>2];break a}if(e>>>0>=f>>>0){break a}H[b+72>>2]=h+(e<<2)}b=H[d+100>>2];f=H[d+96>>2];h=(b-f|0)/12|0;k=1;b:{if((b|0)==(f|0)){break b}n=h>>>0<=1?1:h;o=H[c>>2];c=0;d=f;b=0;k=0;while(1){c=(c<<2)+o|0;i=H[c>>2];if((i|0)==-1){break b}g=H[d>>2];if(g>>>0>=e>>>0){break b}l=H[H[a+112>>2]+12>>2];j=H[l+(i<<2)>>2];if(j>>>0>=e>>>0){break b}i=H[m>>2];H[i+(g<<2)>>2]=j;g=H[c+4>>2];if((g|0)==-1){break b}j=H[d+4>>2];if(j>>>0>=e>>>0){break b}g=H[(g<<2)+l>>2];if(g>>>0>=e>>>0){break b}H[i+(j<<2)>>2]=g;c=H[c+8>>2];if((c|0)==-1){break b}d=H[d+8>>2];if(d>>>0>=e>>>0){break b}c=H[(c<<2)+l>>2];if(c>>>0>=e>>>0){break b}H[i+(d<<2)>>2]=c;b=b+1|0;k=h>>>0<=b>>>0;if((b|0)==(n|0)){break b}c=N(b,3);d=f+N(b,12)|0;if((b|0)!=1431655765){continue}break}}return k|0}function Ph(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,k=0,l=0,m=0,n=0,o=0;c=H[a+12>>2];d=H[a+68>>2];e=H[d+80>>2];F[b+84|0]=0;m=b+68|0;h=H[b+68>>2];f=H[b+72>>2]-h>>2;a:{if(f>>>0>>0){qb(m,e-f|0,12372);d=H[a+68>>2];e=H[d+80>>2];break a}if(e>>>0>=f>>>0){break a}H[b+72>>2]=h+(e<<2)}b=H[d+100>>2];f=H[d+96>>2];h=(b-f|0)/12|0;k=1;b:{if((b|0)==(f|0)){break b}n=h>>>0<=1?1:h;o=H[c>>2];c=0;d=f;b=0;k=0;while(1){c=(c<<2)+o|0;i=H[c>>2];if((i|0)==-1){break b}g=H[d>>2];if(g>>>0>=e>>>0){break b}l=H[H[a+72>>2]+12>>2];j=H[l+(i<<2)>>2];if(j>>>0>=e>>>0){break b}i=H[m>>2];H[i+(g<<2)>>2]=j;g=H[c+4>>2];if((g|0)==-1){break b}j=H[d+4>>2];if(j>>>0>=e>>>0){break b}g=H[(g<<2)+l>>2];if(g>>>0>=e>>>0){break b}H[i+(j<<2)>>2]=g;c=H[c+8>>2];if((c|0)==-1){break b}d=H[d+8>>2];if(d>>>0>=e>>>0){break b}c=H[(c<<2)+l>>2];if(c>>>0>=e>>>0){break b}H[i+(d<<2)>>2]=c;b=b+1|0;k=h>>>0<=b>>>0;if((b|0)==(n|0)){break b}c=N(b,3);d=f+N(b,12)|0;if((b|0)!=1431655765){continue}break}}return k|0}function Wa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=ca-16|0;ca=d;a:{f=H[a+4>>2];b:{if(f>>>0>>0){e=b-f|0;c=H[a+8>>2];g=c<<5;c:{if(!(e>>>0>g>>>0|f>>>0>g-e>>>0)){H[a+4>>2]=b;h=f&31;b=H[a>>2]+(f>>>3&536870908)|0;break c}H[d+8>>2]=0;H[d>>2]=0;H[d+4>>2]=0;if((b|0)<0){break a}if(g>>>0<=1073741822){c=c<<6;b=b+31&-32;b=b>>>0>>0?c:b}else{b=2147483647}pb(d,b);f=H[a+4>>2];H[d+4>>2]=f+e;i=H[a>>2];b=H[d>>2];d:{if((f|0)<=0){break d}c=f>>>5|0;if(f>>>0>=32){va(b,i,c<<2)}g=c<<2;b=g+b|0;h=f&31;if(h){c=-1>>>32-h|0;H[b>>2]=H[b>>2]&(c^-1)|H[i+g>>2]&c}i=H[a>>2]}H[a>>2]=H[d>>2];H[d>>2]=i;c=H[a+4>>2];H[a+4>>2]=H[d+4>>2];H[d+4>>2]=c;c=H[a+8>>2];H[a+8>>2]=H[d+8>>2];H[d+8>>2]=c;if(!i){break c}oa(i)}if(!e){break b}if(h){c=32-h|0;a=c>>>0>>0?c:e;H[b>>2]=H[b>>2]&(-1<>>c-a^-1);e=e-a|0;b=b+4|0}a=e>>>5|0;if(e>>>0>=32){ra(b,0,a<<2)}if((e&-32)==(e|0)){break b}a=(a<<2)+b|0;H[a>>2]=H[a>>2]&(-1>>>32-(e&31)^-1);break b}H[a+4>>2]=b}ca=d+16|0;return}sa();v()}function Je(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;e=H[a+12>>2];i=H[a+8>>2];d=e-i>>2;b=I[b+24|0];a:{if(d>>>0>>0){ya(a+8|0,b-d|0);i=H[a+8>>2];e=H[a+12>>2];break a}if(b>>>0>=d>>>0){break a}e=(b<<2)+i|0;H[a+12>>2]=e}b=0;f=H[c+8>>2];h=H[c+12>>2];j=H[c+20>>2];e=e-i|0;d=H[c+16>>2];g=e+d|0;j=e>>>0>g>>>0?j+1|0:j;b:{if(f>>>0>>0&(h|0)<=(j|0)|(h|0)<(j|0)){break b}qa(i,d+H[c>>2]|0,e);d=H[c+20>>2];g=e;e=e+H[c+16>>2]|0;d=g>>>0>e>>>0?d+1|0:d;H[c+16>>2]=e;H[c+20>>2]=d;f=H[c+8>>2];h=H[c+12>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;if(f>>>0>>0&(d|0)>=(h|0)|(d|0)>(h|0)){break b}d=e+H[c>>2]|0;H[a+20>>2]=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);d=H[c+20>>2];g=d;f=d;e=H[c+16>>2];d=e+4|0;f=d>>>0<4?f+1|0:f;H[c+16>>2]=d;H[c+20>>2]=f;h=H[c+12>>2];if((f|0)>=(h|0)&d>>>0>=K[c+8>>2]|(f|0)>(h|0)){break b}f=I[d+H[c>>2]|0];d=g;e=e+5|0;d=e>>>0<5?d+1|0:d;H[c+16>>2]=e;H[c+20>>2]=d;if(f-1>>>0>29){break b}H[a+4>>2]=f;b=1}return b|0}function qd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{f=H[a+4>>2];b:{if((f|0)!=H[a>>2]){c=f;break b}g=H[a+8>>2];c=H[a+12>>2];if(g>>>0>>0){e=((c-g>>2)+1|0)/2<<2;c=e+g|0;if((f|0)!=(g|0)){d=g-f|0;c=c-d|0;va(c,f,d);f=H[a+8>>2]}H[a+4>>2]=c;H[a+8>>2]=e+f;break b}d=(c|0)==(f|0)?1:c-f>>1;if(d>>>0>=1073741824){break a}c=d<<2;i=pa(c);k=i+c|0;c=(d+3&-4)+i|0;h=c;c:{if((f|0)==(g|0)){break c}g=g-f|0;l=g&-4;e=c;d=f;j=g-4|0;g=(j>>>2|0)+1&7;if(g){h=0;while(1){H[e>>2]=H[d>>2];d=d+4|0;e=e+4|0;h=h+1|0;if((g|0)!=(h|0)){continue}break}}h=c+l|0;if(j>>>0<28){break c}while(1){H[e>>2]=H[d>>2];H[e+4>>2]=H[d+4>>2];H[e+8>>2]=H[d+8>>2];H[e+12>>2]=H[d+12>>2];H[e+16>>2]=H[d+16>>2];H[e+20>>2]=H[d+20>>2];H[e+24>>2]=H[d+24>>2];H[e+28>>2]=H[d+28>>2];d=d+32|0;e=e+32|0;if((h|0)!=(e|0)){continue}break}}H[a+12>>2]=k;H[a+8>>2]=h;H[a+4>>2]=c;H[a>>2]=i;if(!f){break b}oa(f);c=H[a+4>>2]}H[c-4>>2]=H[b>>2];H[a+4>>2]=H[a+4>>2]-4;return}wa();v()}function sb(a,b){var c=0;a:{if(!ta(a,b)){break a}if(!ta(a+16|0,b)){break a}if(!ta(a+32|0,b)){break a}if(!ta(a+48|0,b)){break a}if(!ta(a- -64|0,b)){break a}if(!ta(a+80|0,b)){break a}if(!ta(a+96|0,b)){break a}if(!ta(a+112|0,b)){break a}if(!ta(a+128|0,b)){break a}if(!ta(a+144|0,b)){break a}if(!ta(a+160|0,b)){break a}if(!ta(a+176|0,b)){break a}if(!ta(a+192|0,b)){break a}if(!ta(a+208|0,b)){break a}if(!ta(a+224|0,b)){break a}if(!ta(a+240|0,b)){break a}if(!ta(a+256|0,b)){break a}if(!ta(a+272|0,b)){break a}if(!ta(a+288|0,b)){break a}if(!ta(a+304|0,b)){break a}if(!ta(a+320|0,b)){break a}if(!ta(a+336|0,b)){break a}if(!ta(a+352|0,b)){break a}if(!ta(a+368|0,b)){break a}if(!ta(a+384|0,b)){break a}if(!ta(a+400|0,b)){break a}if(!ta(a+416|0,b)){break a}if(!ta(a+432|0,b)){break a}if(!ta(a+448|0,b)){break a}if(!ta(a+464|0,b)){break a}if(!ta(a+480|0,b)){break a}if(!ta(a+496|0,b)){break a}c=ta(a+512|0,b)}return c}function qf(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,k=0,l=0,m=0;a:{if(!ke(a,b)){break a}h=a+36|0;g=ea[H[H[a>>2]+24>>2]](a)|0;e=H[a+40>>2];d=H[a+36>>2];c=e-d>>2;b:{if(g>>>0>c>>>0){Vb(h,g-c|0);break b}if(c>>>0<=g>>>0){break b}d=d+(g<<2)|0;if((d|0)!=(e|0)){while(1){e=e-4|0;c=H[e>>2];H[e>>2]=0;if(c){ea[H[H[c>>2]+4>>2]](c)}if((d|0)!=(e|0)){continue}break}}H[a+40>>2]=d}c=1;if((g|0)<=0){break a}e=0;while(1){c:{c=H[b+20>>2];f=H[b+12>>2];d=H[b+16>>2];if((c|0)>=(f|0)&d>>>0>=K[b+8>>2]|(c|0)>(f|0)){break c}f=I[H[b>>2]+d|0];d=d+1|0;c=d?c:c+1|0;H[b+16>>2]=d;H[b+20>>2]=c;d=ea[H[H[a>>2]+48>>2]](a,f)|0;f=e<<2;i=f+H[a+36>>2]|0;c=H[i>>2];H[i>>2]=d;if(c){ea[H[H[c>>2]+4>>2]](c)}c=H[H[h>>2]+f>>2];if(!c){break c}if(!(k=c,l=ea[H[H[a>>2]+28>>2]](a)|0,m=ea[H[H[a>>2]+20>>2]](a,e)|0,j=H[H[c>>2]+8>>2],ea[j](k|0,l|0,m|0)|0)){break c}c=1;e=e+1|0;if((g|0)!=(e|0)){continue}break a}break}c=0}return c|0}function he(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=+L[b>>2];k=+L[b+4>>2];l=+L[b+8>>2];g=P(j)+P(k)+P(l);a:{if(!(g>1e-6)){j=1;k=0;e=0;break a}g=1/g;k=g*k;j=g*j;e=g*l<0}h=H[a+16>>2];l=+(h|0);g=T(j*l+.5);b:{if(P(g)<2147483648){m=~~g;break b}m=-2147483648}f=m>>31;i=(f^m)-f|0;g=T(k*l+.5);c:{if(P(g)<2147483648){f=~~g;break c}f=-2147483648}b=f>>31;b=h-(i+((f^b)-b|0)|0)|0;i=(b|0)>0?b:0;e=e?0-i|0:i;f=f+(b>>31&((f|0)>0?b:0-b|0))|0;d:{if((m|0)>=0){b=e+h|0;a=H[a+8>>2];e=h+f|0;break d}b=f>>31;b=(b^f)-b|0;a=H[a+8>>2];b=(e|0)<0?b:a-b|0;e=(f|0)<0?i:a-i|0}e:{if(!(b|e)){b=a;break e}if(!((a|0)!=(b|0)|e)){b=a;break e}if(!((a|0)!=(e|0)|b)){b=a;break e}if(!((b|0)<=(h|0)|e)){b=(h<<1)-b|0;a=0;break e}if(!((a|0)!=(e|0)|(b|0)>=(h|0))){b=(h<<1)-b|0;break e}if(!((a|0)!=(b|0)|(e|0)>=(h|0))){b=a;a=(h<<1)-e|0;break e}if(b){a=e;break e}b=0;if((e|0)<=(h|0)){a=e;break e}a=(h<<1)-e|0}H[c>>2]=a;H[d>>2]=b}function Ve(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,k=0,l=0,m=0;g=H[b+8>>2];h=H[b+12>>2];c=H[b+20>>2];i=c;k=H[b+16>>2];d=k+4|0;c=d>>>0<4?c+1|0:c;a:{if(d>>>0>g>>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break a}l=H[b>>2];f=k+l|0;e=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[b+16>>2]=d;H[b+20>>2]=c;c=i;f=k+8|0;c=f>>>0<8?c+1|0:c;if(f>>>0>g>>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break a}d=d+l|0;j=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=f;H[b+20>>2]=c;if((e|0)>(j|0)){break a}H[a+16>>2]=j;H[a+12>>2]=e;d=j-e|0;e=(j>>31)-((e>>31)+(e>>>0>j>>>0)|0)|0;if(!e&d>>>0>2147483646|e){break a}d=d+1|0;H[a+20>>2]=d;e=d>>>1|0;H[a+24>>2]=e;H[a+28>>2]=0-e;if(!(d&1)){H[a+24>>2]=e-1}if(J[b+38>>1]<=513){if((c|0)>=(h|0)&f>>>0>=g>>>0|(c|0)>(h|0)){break a}g=I[f+l|0];c=i;i=k+9|0;c=i>>>0<9?c+1|0:c;H[b+16>>2]=i;H[b+20>>2]=c;if(g>>>0>1){break a}H[a+88>>2]=g}m=ta(a+112|0,b)}return m|0}function Hc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;g=H[a>>2];c=g+(b>>>3&536870908)|0;H[c>>2]=H[c>>2]|1<>2];e=(b|0)==-1;d=-1;a:{if(e){break a}c=b+1|0;c=(c>>>0)%3|0?c:b-2|0;d=-1;if((c|0)==-1){break a}d=H[H[f>>2]+(c<<2)>>2]}c=H[a+12>>2];h=(d>>>3&536870908)+c|0;H[h>>2]=H[h>>2]|1<>>0)%3|0){e=b-1|0;break e}e=b+2|0;d=-1;if((e|0)==-1){break d}}d=H[H[f>>2]+(e<<2)>>2]}e=(d>>>3&536870908)+c|0;H[e>>2]=H[e>>2]|1<>2]+(b<<2)>>2];if((b|0)==-1){break b}F[a+24|0]=0;a=(b>>>3&536870908)+g|0;H[a>>2]=H[a>>2]|1<>>0)%3|0?a:b-2|0;if((a|0)!=-1){d=H[H[f>>2]+(a<<2)>>2]}a=c+(d>>>3&536870908)|0;H[a>>2]=H[a>>2]|1<>>0)%3|0){b=b-1|0;break g}b=b+2|0;a=-1;if((b|0)==-1){break f}}a=H[H[f>>2]+(b<<2)>>2]}b=1<>>3&536870908)|0;c=H[a>>2];break c}a=c+536870908|0;b=H[c+536870908>>2];c=-2147483648}H[a>>2]=b|c}}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=O(0),f=O(0),g=O(0),h=O(0),i=O(0),j=0,k=O(0),l=O(0),m=O(0),n=O(0),o=0;a:{if(H[c+28>>2]!=9|I[c+24|0]!=3){break a}a=H[a+4>>2];if(a-2>>>0>28){break a}o=1;j=H[c+80>>2];if(!j){break a}k=O(O(2)/O((1<>2]>>2]+H[c+48>>2]|0;a=H[H[b>>2]>>2]+H[b+48>>2]|0;b=0;while(1){g=O(0);l=O(0);m=O(0);e=O(O(O(H[a>>2])*k)+O(-1));f=O(O(O(H[a+4>>2])*k)+O(-1));i=O(O(O(1)-O(P(e)))-O(P(f)));h=O(S(O(-i),O(0)));n=O(-h);f=O(f+(f>>8;F[c+10|0]=d>>>16;F[c+11|0]=d>>>24;d=(w(l),y(2));F[c+4|0]=d;F[c+5|0]=d>>>8;F[c+6|0]=d>>>16;F[c+7|0]=d>>>24;d=(w(g),y(2));F[c|0]=d;F[c+1|0]=d>>>8;F[c+2|0]=d>>>16;F[c+3|0]=d>>>24;c=c+12|0;b=b+1|0;if((j|0)!=(b|0)){continue}break}}return o|0}function Vd(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(b>>>0<=63){b=0;a=H[a+12>>2];if(a>>>0<2){break a}b=a-1|0;e=b&3;d=H[c>>2];c=0;b:{if(a-2>>>0<3){a=1;b=0;break b}f=b&-4;b=0;a=1;while(1){g=a+3|0;h=a+2|0;i=a+1|0;b=K[d+(b<<2)>>2]>K[d+(a<<2)>>2]?a:b;b=K[d+(b<<2)>>2]>K[d+(i<<2)>>2]?i:b;b=K[d+(b<<2)>>2]>K[d+(h<<2)>>2]?h:b;b=K[d+(b<<2)>>2]>K[d+(g<<2)>>2]?g:b;a=a+4|0;j=j+4|0;if((f|0)!=(j|0)){continue}break}}if(!e){break a}while(1){b=K[d+(b<<2)>>2]>K[d+(a<<2)>>2]?a:b;a=a+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}break a}b=H[a+580>>2];d=32-b|0;if((d|0)>=4){c=H[a+576>>2];if((c|0)==H[a+568>>2]){return 0}d=H[c>>2];e=b+4|0;H[a+580>>2]=e;b=d<>>28|0;if((e|0)!=32){break a}H[a+580>>2]=0;H[a+576>>2]=c+4;return b}c=H[a+576>>2];e=c+4|0;if((e|0)==H[a+568>>2]){return 0}f=H[c>>2];H[a+576>>2]=e;H[a+580>>2]=b-28;a=60-b|0;b=H[c+4>>2]>>>a|f<>>a-d}return b}function Ae(a){a=a|0;var b=0,c=0,d=0,e=0;H[a>>2]=11436;b=H[a+388>>2];if(b){H[a+392>>2]=b;oa(b)}d=H[a+368>>2];H[a+368>>2]=0;if(d){e=d-4|0;b=H[e>>2];if(b){c=(b<<4)+d|0;while(1){c=c-16|0;if((d|0)!=(c|0)){continue}break}}oa(e)}Yc(a+216|0);b=H[a+196>>2];if(b){H[a+200>>2]=b;oa(b)}b=H[a+184>>2];if(b){H[a+188>>2]=b;oa(b)}b=H[a+172>>2];if(b){H[a+176>>2]=b;oa(b)}b=H[a+160>>2];if(b){H[a+164>>2]=b;oa(b)}c=H[a+144>>2];if(c){while(1){b=H[c>>2];oa(c);c=b;if(b){continue}break}}b=H[a+136>>2];H[a+136>>2]=0;if(b){oa(b)}b=H[a+120>>2];if(b){oa(b)}b=H[a+108>>2];if(b){oa(b)}b=H[a+96>>2];if(b){oa(b)}b=H[a+72>>2];if(b){H[a+76>>2]=b;oa(b)}b=H[a+60>>2];if(b){oa(b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}b=H[a+36>>2];if(b){H[a+40>>2]=b;oa(b)}b=H[a+24>>2];if(b){H[a+28>>2]=b;oa(b)}b=H[a+12>>2];if(b){H[a+16>>2]=b;oa(b)}b=H[a+8>>2];H[a+8>>2]=0;if(b){cb(b)}return a|0}function Sg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a:{a=ca-32|0;ca=a;e=Ma(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){g=(e|15)+1|0;f=pa(g);H[a+24>>2]=g|-2147483648;H[a+16>>2]=f;H[a+20>>2]=e;g=e+f|0;break c}F[a+27|0]=e;f=a+16|0;g=e+f|0;if(!e){break b}}qa(f,c,e)}F[g|0]=0;H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;d:{c=nb(b,a+16|0);if((c|0)==(b+4|0)){break d}b=H[c+28>>2];e=H[c+32>>2];if((b|0)==(e|0)){break d}b=e-b|0;if(b&3){break d}e=b>>>2|0;f=H[a+4>>2];b=H[a>>2];g=f-b>>2;e:{if(e>>>0>g>>>0){ya(a,e-g|0);b=H[a>>2];f=H[a+4>>2];break e}if(e>>>0>=g>>>0){break e}f=(e<<2)+b|0;H[a+4>>2]=f}if((b|0)!=(f|0)){e=b;b=H[c+28>>2];qa(e,b,H[c+32>>2]-b|0);break d}Ca();v()}b=H[d>>2];if(b){H[d+4>>2]=b;oa(b)}H[d>>2]=H[a>>2];H[d+4>>2]=H[a+4>>2];H[d+8>>2]=H[a+8>>2];if(F[a+27|0]<0){oa(H[a+16>>2])}ca=a+32|0;break a}Na();v()}}function Be(a){a=a|0;var b=0,c=0,d=0,e=0;H[a>>2]=11384;d=H[a+368>>2];H[a+368>>2]=0;if(d){e=d-4|0;b=H[e>>2];if(b){c=(b<<4)+d|0;while(1){c=c-16|0;if((d|0)!=(c|0)){continue}break}}oa(e)}Yc(a+216|0);b=H[a+196>>2];if(b){H[a+200>>2]=b;oa(b)}b=H[a+184>>2];if(b){H[a+188>>2]=b;oa(b)}b=H[a+172>>2];if(b){H[a+176>>2]=b;oa(b)}b=H[a+160>>2];if(b){H[a+164>>2]=b;oa(b)}c=H[a+144>>2];if(c){while(1){b=H[c>>2];oa(c);c=b;if(b){continue}break}}b=H[a+136>>2];H[a+136>>2]=0;if(b){oa(b)}b=H[a+120>>2];if(b){oa(b)}b=H[a+108>>2];if(b){oa(b)}b=H[a+96>>2];if(b){oa(b)}b=H[a+72>>2];if(b){H[a+76>>2]=b;oa(b)}b=H[a+60>>2];if(b){oa(b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}b=H[a+36>>2];if(b){H[a+40>>2]=b;oa(b)}b=H[a+24>>2];if(b){H[a+28>>2]=b;oa(b)}b=H[a+12>>2];if(b){H[a+16>>2]=b;oa(b)}b=H[a+8>>2];H[a+8>>2]=0;if(b){cb(b)}return a|0}function Ug(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;d=ca-16|0;ca=d;a:{e=Ma(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){f=(e|15)+1|0;a=pa(f);H[d+8>>2]=f|-2147483648;H[d>>2]=a;H[d+4>>2]=e;f=a+e|0;break c}F[d+11|0]=e;f=d+e|0;a=d;if(!e){break b}}qa(a,c,e)}F[f|0]=0;c=I[d+11|0];e=c<<24>>24;b=H[b+4>>2];a=0;d:{if(!b){break d}a=c;c=(e|0)<0;a=c?H[d+4>>2]:a;f=c?H[d>>2]:d;while(1){c=I[b+27|0];g=c<<24>>24<0;c=g?H[b+20>>2]:c;i=c>>>0>>0;e:{f:{g:{h:{i:{j:{h=i?c:a;if(h){g=g?H[b+16>>2]:b+16|0;j=Fa(f,g,h);if(j){break j}if(a>>>0>=c>>>0){break i}break e}if(a>>>0>=c>>>0){break h}break e}if((j|0)<0){break e}}c=Fa(g,f,h);if(c){break g}}if(i){break f}a=1;break d}if((c|0)<0){break f}a=1;break d}b=b+4|0}b=H[b>>2];if(b){continue}break}a=0}if((e|0)<0){oa(H[d>>2])}ca=d+16|0;break a}Na();v()}return a|0}function fd(a,b){var c=0,d=0;c=H[b+8>>2];H[a+4>>2]=H[b+4>>2];H[a+8>>2]=c;H[a+20>>2]=H[b+20>>2];c=H[b+16>>2];H[a+12>>2]=H[b+12>>2];H[a+16>>2]=c;a:{b:{if((a|0)!=(b|0)){c=H[b+28>>2];if(c){d=H[a+24>>2];if(H[a+32>>2]<<5>>>0>>0){if(d){oa(d);H[a+32>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;c=H[b+28>>2]}if((c|0)<0){break b}c=(c-1>>>5|0)+1|0;d=pa(c<<2);H[a+32>>2]=c;H[a+28>>2]=0;H[a+24>>2]=d;c=H[b+28>>2]}va(d,H[b+24>>2],(c-1>>>3&536870908)+4|0);c=H[b+28>>2]}else{c=0}H[a+28>>2]=c;c=H[b+40>>2];if(c){d=H[a+36>>2];if(H[a+44>>2]<<5>>>0>>0){if(d){oa(d);H[a+44>>2]=0;H[a+36>>2]=0;H[a+40>>2]=0;c=H[b+40>>2]}if((c|0)<0){break a}c=(c-1>>>5|0)+1|0;d=pa(c<<2);H[a+44>>2]=c;H[a+40>>2]=0;H[a+36>>2]=d;c=H[b+40>>2]}va(d,H[b+36>>2],(c-1>>>3&536870908)+4|0);b=H[b+40>>2]}else{b=0}H[a+40>>2]=b}return}sa();v()}sa();v()}function uc(a){var b=0,c=0,d=0;b=H[a+8>>2];d=H[a>>2];a:{if(I[a+12|0]){b:{c:{d:{e:{if((b|0)==-1){break e}c=b+1|0;b=(c>>>0)%3|0?c:b-2|0;if((b|0)==-1){break e}b=H[H[d+12>>2]+(b<<2)>>2];if((b|0)!=-1){break d}}H[a+8>>2]=-1;break c}c=b+1|0;b=(c>>>0)%3|0?c:b-2|0;H[a+8>>2]=b;if((b|0)!=-1){break b}}c=H[a+4>>2];b=-1;f:{if((c|0)==-1){break f}g:{if((c>>>0)%3|0){c=c-1|0;break g}c=c+2|0;b=-1;if((c|0)==-1){break f}}c=H[H[d+12>>2]+(c<<2)>>2];b=-1;if((c|0)==-1){break f}b=c-1|0;if((c>>>0)%3|0){break f}b=c+2|0}F[a+12|0]=0;H[a+8>>2]=b;return}if((b|0)!=H[a+4>>2]){break a}H[a+8>>2]=-1;return}c=-1;h:{if((b|0)==-1){break h}i:{if((b>>>0)%3|0){b=b-1|0;break i}b=b+2|0;c=-1;if((b|0)==-1){break h}}b=H[H[d+12>>2]+(b<<2)>>2];c=-1;if((b|0)==-1){break h}c=b-1|0;if((b>>>0)%3|0){break h}c=b+2|0}H[a+8>>2]=c}}function Rf(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;f=ca-32|0;ca=f;d=H[a+28>>2];H[f+16>>2]=d;g=H[a+20>>2];H[f+28>>2]=c;H[f+24>>2]=b;b=g-d|0;H[f+20>>2]=b;g=b+c|0;i=2;a:{b:{b=f+16|0;d=Z(H[a+60>>2],b|0,2,f+12|0)|0;if(d){H[3992]=d;d=-1}else{d=0}c:{d:{if(d){d=b;break d}while(1){e=H[f+12>>2];if((e|0)==(g|0)){break c}if((e|0)<0){d=b;break b}h=H[b+4>>2];j=h>>>0>>0;d=(j<<3)+b|0;h=e-(j?h:0)|0;H[d>>2]=h+H[d>>2];b=(j?12:4)+b|0;H[b>>2]=H[b>>2]-h;g=g-e|0;b=d;i=i-j|0;e=Z(H[a+60>>2],b|0,i|0,f+12|0)|0;if(e){H[3992]=e;e=-1}else{e=0}if(!e){continue}break}}if((g|0)!=-1){break b}}b=H[a+44>>2];H[a+28>>2]=b;H[a+20>>2]=b;H[a+16>>2]=b+H[a+48>>2];a=c;break a}H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a>>2]=H[a>>2]|32;a=0;if((i|0)==2){break a}a=c-H[d+4>>2]|0}ca=f+32|0;return a|0}function Ih(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=H[a+4>>2];d=H[e>>2];a:{b=H[a+12>>2];c=H[b+56>>2]-H[b+52>>2]|0;f=c>>2;b:{if(f>>>0<=H[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=H[e+4>>2];c=pa(c);f=c+(f<<2)|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;H[c>>2]=H[b>>2];if((b|0)!=(d|0)){continue}break}}H[e+8>>2]=f;H[e+4>>2]=g;H[e>>2]=c;if(!d){break b}oa(d)}e=a+8|0;b=H[a+76>>2];c:{if(b){d=H[b>>2];if((d|0)==H[b+4>>2]){return 1}b=0;while(1){c=we(e,H[(b<<2)+d>>2]);if(!c){break c}f=H[a+76>>2];d=H[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break c}c=1;a=H[H[a+12>>2]+64>>2];a=H[a+4>>2]-H[a>>2]|0;if(a>>>0<12){break c}a=(a>>2>>>0)/3|0;b=0;while(1){c=we(e,N(b,3));if(!c){break c}b=b+1|0;if((a|0)!=(b|0)){continue}break}}return c|0}sa();v()}function Oh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=H[a+4>>2];d=H[e>>2];a:{b=H[a+12>>2];c=H[b+28>>2]-H[b+24>>2]|0;f=c>>2;b:{if(f>>>0<=H[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=H[e+4>>2];c=pa(c);f=c+(f<<2)|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;H[c>>2]=H[b>>2];if((b|0)!=(d|0)){continue}break}}H[e+8>>2]=f;H[e+4>>2]=g;H[e>>2]=c;if(!d){break b}oa(d)}e=a+8|0;b=H[a+76>>2];c:{if(b){d=H[b>>2];if((d|0)==H[b+4>>2]){return 1}b=0;while(1){c=xe(e,H[(b<<2)+d>>2]);if(!c){break c}f=H[a+76>>2];d=H[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break c}c=1;a=H[a+12>>2];a=H[a+4>>2]-H[a>>2]|0;if(a>>>0<12){break c}a=(a>>2>>>0)/3|0;b=0;while(1){c=xe(e,N(b,3));if(!c){break c}b=b+1|0;if((a|0)!=(b|0)){continue}break}}return c|0}sa();v()}function Te(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,k=0,l=0;g=H[b+8>>2];h=H[b+12>>2];c=H[b+20>>2];i=c;e=H[b+16>>2];d=e+4|0;c=d>>>0<4?c+1|0:c;a:{if(d>>>0>g>>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break a}j=H[b>>2];f=e+j|0;f=I[f|0]|I[f+1|0]<<8|(I[f+2|0]<<16|I[f+3|0]<<24);H[b+16>>2]=d;H[b+20>>2]=c;k=J[b+38>>1];if(k>>>0<=513){c=i;d=e+8|0;c=d>>>0<8?c+1|0:c;if(d>>>0>g>>>0&(c|0)>=(h|0)|(c|0)>(h|0)){break a}H[b+16>>2]=d;H[b+20>>2]=c}if(!(f&1)){break a}e=Q(f)^31;if(e-1>>>0>28){break a}H[a+8>>2]=e+1;i=-2<>2]=e;H[a+12>>2]=i^-1;H[a+24>>2]=e>>1;L[a+20>>2]=O(2)/O(e|0);if(k>>>0<=513){if((c|0)>=(h|0)&d>>>0>=g>>>0|(c|0)>(h|0)){break a}g=I[d+j|0];d=d+1|0;c=d?c:c+1|0;H[b+16>>2]=d;H[b+20>>2]=c;if(g>>>0>1){break a}H[a+72>>2]=g}l=ta(a+96|0,b)}return l|0}function Se(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,k=0,l=0;f=H[b+8>>2];g=H[b+12>>2];c=H[b+20>>2];h=c;i=H[b+16>>2];e=i+4|0;c=e>>>0<4?c+1|0:c;a:{if(e>>>0>f>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break a}j=H[b>>2];d=i+j|0;d=I[d|0]|I[d+1|0]<<8|(I[d+2|0]<<16|I[d+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=c;c=h;e=i+8|0;c=e>>>0<8?c+1|0:c;if(e>>>0>f>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break a}H[b+16>>2]=e;H[b+20>>2]=c;if(!(d&1)){break a}d=Q(d)^31;if(d-1>>>0>28){break a}H[a+8>>2]=d+1;k=-2<>2]=d;H[a+12>>2]=k^-1;H[a+24>>2]=d>>1;L[a+20>>2]=O(2)/O(d|0);if(J[b+38>>1]<=513){if((c|0)>=(g|0)&e>>>0>=f>>>0|(c|0)>(g|0)){break a}c=I[e+j|0];f=i+9|0;h=f>>>0<9?h+1|0:h;H[b+16>>2]=f;H[b+20>>2]=h;if(c>>>0>1){break a}H[a+72>>2]=c}l=ta(a+96|0,b)}return l|0} -function va(a,b,c){var d=0,e=0;a:{if((a|0)==(b|0)){break a}e=a+c|0;if(b-e>>>0<=0-(c<<1)>>>0){return qa(a,b,c)}d=(a^b)&3;b:{c:{if(a>>>0>>0){if(d){d=a;break b}if(!(a&3)){d=a;break c}d=a;while(1){if(!c){break a}F[d|0]=I[b|0];b=b+1|0;c=c-1|0;d=d+1|0;if(d&3){continue}break}break c}d:{if(d){break d}if(e&3){while(1){if(!c){break a}c=c-1|0;d=c+a|0;F[d|0]=I[b+c|0];if(d&3){continue}break}}if(c>>>0<=3){break d}while(1){c=c-4|0;H[c+a>>2]=H[b+c>>2];if(c>>>0>3){continue}break}}if(!c){break a}while(1){c=c-1|0;F[c+a|0]=I[b+c|0];if(c){continue}break}break a}if(c>>>0<=3){break b}while(1){H[d>>2]=H[b>>2];b=b+4|0;d=d+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}while(1){F[d|0]=I[b|0];d=d+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}return a}function ff(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,k=0,l=0;h=H[c+12>>2];f=h;e=H[c+20>>2];i=H[c+8>>2];g=H[c+16>>2];a:{if((f|0)<=(e|0)&i>>>0<=g>>>0|(e|0)>(f|0)){break a}j=H[c>>2];k=F[j+g|0];d=e;f=g+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;b:{if((k|0)==-2){break b}if((d|0)>=(h|0)&f>>>0>=i>>>0|(d|0)>(h|0)){break a}d=F[f+j|0];g=g+2|0;e=g>>>0<2?e+1|0:e;H[c+16>>2]=g;H[c+20>>2]=e;if((d-4&255)>>>0<251){break a}e=ea[H[H[a>>2]+40>>2]](a,k,d)|0;d=H[a+20>>2];H[a+20>>2]=e;if(!d){break b}ea[H[H[d>>2]+4>>2]](d)}d=H[a+20>>2];if(d){if(!(ea[H[H[a>>2]+28>>2]](a,d)|0)){break a}}if(!(ea[H[H[a>>2]+36>>2]](a,b,c)|0)){break a}c=H[a+4>>2];if(!(!c|I[c+36|0]>1)){if(!(ea[H[H[a>>2]+48>>2]](a,H[b+4>>2]-H[b>>2]>>2)|0)){break a}}l=1}return l|0}function Vb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=H[a+8>>2];c=H[a+4>>2];if(d-c>>2>>>0>=b>>>0){if(b){b=b<<2;c=ra(c,0,b)+b|0}H[a+4>>2]=c;return}a:{b:{c:{g=H[a>>2];f=c-g>>2;e=f+b|0;if(e>>>0<1073741824){d=d-g|0;h=d>>>1|0;e=d>>>0>=2147483644?1073741823:e>>>0>>0?h:e;if(e){if(e>>>0>=1073741824){break c}i=pa(e<<2)}d=(f<<2)+i|0;f=b<<2;b=ra(d,0,f);f=b+f|0;e=(e<<2)+i|0;if((c|0)==(g|0)){break b}while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;d=d-4|0;H[d>>2]=b;if((c|0)!=(g|0)){continue}break}H[a+8>>2]=e;b=H[a+4>>2];H[a+4>>2]=f;c=H[a>>2];H[a>>2]=d;if((b|0)==(c|0)){break a}while(1){b=b-4|0;a=H[b>>2];H[b>>2]=0;if(a){ea[H[H[a>>2]+4>>2]](a)}if((b|0)!=(c|0)){continue}break}break a}sa();v()}wa();v()}H[a+8>>2]=e;H[a+4>>2]=f;H[a>>2]=b}if(c){oa(c)}}function Md(a,b,c){a:{switch(b-9|0){case 0:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=H[b>>2];return;case 6:b=H[c>>2];H[c>>2]=b+4;b=G[b>>1];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 7:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=J[b>>1];H[a+4>>2]=0;return;case 8:b=H[c>>2];H[c>>2]=b+4;b=F[b|0];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 9:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=I[b|0];H[a+4>>2]=0;return;case 16:b=H[c>>2]+7&-8;H[c>>2]=b+8;M[a>>3]=M[b>>3];return;case 17:v();default:return;case 1:case 4:case 14:b=H[c>>2];H[c>>2]=b+4;b=H[b>>2];H[a>>2]=b;H[a+4>>2]=b>>31;return;case 2:case 5:case 11:case 15:b=H[c>>2];H[c>>2]=b+4;H[a>>2]=H[b>>2];H[a+4>>2]=0;return;case 3:case 10:case 12:case 13:break a}}b=H[c>>2]+7&-8;H[c>>2]=b+8;c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c}function Ed(a,b){var c=0,d=0,e=0;c=ca+-64|0;ca=c;d=H[a>>2];e=H[d-4>>2];d=H[d-8>>2];H[c+32>>2]=0;H[c+36>>2]=0;H[c+40>>2]=0;H[c+44>>2]=0;H[c+48>>2]=0;H[c+52>>2]=0;F[c+55|0]=0;F[c+56|0]=0;F[c+57|0]=0;F[c+58|0]=0;F[c+59|0]=0;F[c+60|0]=0;F[c+61|0]=0;F[c+62|0]=0;H[c+24>>2]=0;H[c+28>>2]=0;H[c+20>>2]=0;H[c+16>>2]=14924;H[c+12>>2]=a;H[c+8>>2]=b;a=a+d|0;d=0;a:{if(Ya(e,b,0)){H[c+56>>2]=1;ea[H[H[e>>2]+20>>2]](e,c+8|0,a,a,1,0);d=H[c+32>>2]==1?a:0;break a}ea[H[H[e>>2]+24>>2]](e,c+8|0,a,1,0);b:{switch(H[c+44>>2]){case 0:d=H[c+48>>2]==1?H[c+36>>2]==1?H[c+40>>2]==1?H[c+28>>2]:0:0:0;break a;case 1:break b;default:break a}}if(H[c+32>>2]!=1){if(H[c+48>>2]|H[c+36>>2]!=1|H[c+40>>2]!=1){break a}}d=H[c+24>>2]}ca=c- -64|0;return d}function ua(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;H[a+16>>2]=0;e=H[a>>2];H[a+4>>2]=e;H[a+12>>2]=e;e=H[b+8>>2];c=H[b+12>>2];h=c;d=H[b+20>>2];f=H[b+16>>2];g=f+4|0;d=g>>>0<4?d+1|0:d;a:{if(e>>>0>>0&(d|0)>=(c|0)|(d|0)>(c|0)){break a}c=f+H[b>>2]|0;c=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[b+16>>2]=g;H[b+20>>2]=d;if(!c|c&3){break a}f=h-(d+(e>>>0>>0)|0)|0;if(e-g>>>0>>0&(f|0)<=0|(f|0)<0){break a}if(c>>>0>=4){ya(a,c>>>2|0);h=H[b+12>>2];g=H[b+16>>2];d=H[b+20>>2];e=H[b+8>>2]}f=c+g|0;d=f>>>0>>0?d+1|0:d;if(e>>>0>>0&(d|0)>=(h|0)|(d|0)>(h|0)){break a}qa(H[a>>2],H[b>>2]+g|0,c);d=H[b+20>>2];e=c+H[b+16>>2]|0;d=e>>>0>>0?d+1|0:d;H[b+16>>2]=e;H[b+20>>2]=d;H[a+16>>2]=0;H[a+12>>2]=H[a>>2];i=1}return i}function de(a,b){var c=0,d=0,e=0,f=0;d=-1;e=-1;f=-1;a:{b:{if((b|0)==-1){break b}e=H[H[H[a+4>>2]+12>>2]+(b<<2)>>2];c=b+1|0;c=(c>>>0)%3|0?c:b-2|0;if((c|0)>=0){f=(c>>>0)/3|0;f=H[(H[H[a>>2]+96>>2]+N(f,12)|0)+(c-N(f,3)<<2)>>2]}c:{if((e|0)==-1){break c}c=((e>>>0)%3|0?-1:2)+e|0;if((c|0)<0){break c}d=(c>>>0)/3|0;d=H[(H[H[a>>2]+96>>2]+N(d,12)|0)+(c-N(d,3)<<2)>>2]}c=-1;if((d|0)!=(f|0)){break a}f=-1;d:{b=((b>>>0)%3|0?-1:2)+b|0;if((b|0)>=0){d=(b>>>0)/3|0;d=H[(H[H[a>>2]+96>>2]+N(d,12)|0)+(b-N(d,3)<<2)>>2];if((e|0)==-1){break b}break d}d=-1;if((e|0)!=-1){break d}break b}b=e+1|0;b=(b>>>0)%3|0?b:e-2|0;if((b|0)<0){break b}c=H[H[a>>2]+96>>2];a=(b>>>0)/3|0;f=H[(c+N(a,12)|0)+(b-N(a,3)<<2)>>2]}c=(d|0)!=(f|0)?-1:e}return c}function Ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=pa(72);H[c+4>>2]=0;H[c+8>>2]=0;H[c>>2]=1984;H[c+12>>2]=0;H[c+16>>2]=0;H[c+20>>2]=0;H[c+24>>2]=0;H[c+28>>2]=0;H[c+32>>2]=0;H[c+36>>2]=0;H[c+40>>2]=0;H[c>>2]=2128;H[c+44>>2]=0;H[c+48>>2]=0;H[c+52>>2]=0;H[c+56>>2]=0;H[c+60>>2]=0;H[c+64>>2]=0;H[c+68>>2]=0;h=c;a:{if((b|0)>=0){g=a+8|0;c=H[a+12>>2];e=H[a+8>>2];f=c-e>>2;b:{if((f|0)>(b|0)){break b}d=b+1|0;if(b>>>0>=f>>>0){Vb(g,d-f|0);break b}if(d>>>0>=f>>>0){break b}e=(d<<2)+e|0;if((e|0)!=(c|0)){while(1){c=c-4|0;d=H[c>>2];H[c>>2]=0;if(d){ea[H[H[d>>2]+4>>2]](d)}if((c|0)!=(e|0)){continue}break}}H[a+12>>2]=e}a=H[g>>2]+(b<<2)|0;c=H[a>>2];H[a>>2]=h;if(!c){break a}}ea[H[H[c>>2]+4>>2]](c)}return(b^-1)>>>31|0}function ra(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!c){break a}F[a|0]=b;d=a+c|0;F[d-1|0]=b;if(c>>>0<3){break a}F[a+2|0]=b;F[a+1|0]=b;F[d-3|0]=b;F[d-2|0]=b;if(c>>>0<7){break a}F[a+3|0]=b;F[d-4|0]=b;if(c>>>0<9){break a}d=0-a&3;e=d+a|0;b=N(b&255,16843009);H[e>>2]=b;d=c-d&-4;c=d+e|0;H[c-4>>2]=b;if(d>>>0<9){break a}H[e+8>>2]=b;H[e+4>>2]=b;H[c-8>>2]=b;H[c-12>>2]=b;if(d>>>0<25){break a}H[e+24>>2]=b;H[e+20>>2]=b;H[e+16>>2]=b;H[e+12>>2]=b;H[c-16>>2]=b;H[c-20>>2]=b;H[c-24>>2]=b;H[c-28>>2]=b;g=e&4|24;c=d-g|0;if(c>>>0<32){break a}d=Rj(b,0,1,1);f=da;b=e+g|0;while(1){H[b+24>>2]=d;H[b+28>>2]=f;H[b+16>>2]=d;H[b+20>>2]=f;H[b+8>>2]=d;H[b+12>>2]=f;H[b>>2]=d;H[b+4>>2]=f;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function Mj(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,k=0,l=0;d=H[b+8>>2];e=H[b+12>>2];g=e;e=H[b+20>>2];k=e;h=H[b+16>>2];c=h+4|0;e=c>>>0<4?e+1|0:e;i=c;a:{if(c>>>0>d>>>0&(e|0)>=(g|0)|(e|0)>(g|0)){break a}j=H[b>>2];c=j+h|0;f=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[b+16>>2]=i;H[b+20>>2]=e;c=d;d=k;e=h+8|0;d=e>>>0<8?d+1|0:d;if(c>>>0>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}c=i+j|0;c=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[b+16>>2]=e;H[b+20>>2]=d;if((c|0)<(f|0)){break a}H[a+16>>2]=c;H[a+12>>2]=f;d=(c>>31)-((f>>31)+(c>>>0>>0)|0)|0;b=c-f|0;if(!d&b>>>0>2147483646|d){break a}l=1;d=b+1|0;H[a+20>>2]=d;b=d>>>1|0;H[a+24>>2]=b;H[a+28>>2]=0-b;if(d&1){break a}H[a+24>>2]=b-1}return l|0}function sd(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=a+16|0;d=H[e>>2];a:{if(!d){break a}f=H[b>>2];b=e;while(1){g=(f|0)>H[d+16>>2];b=g?b:d;d=H[(g?d+4|0:d)>>2];if(d){continue}break}if((b|0)==(e|0)|(f|0)>2]){break a}d=H[b+24>>2];if(!d){break a}f=b+20|0;b=I[c+11|0];e=b<<24>>24<0;g=e?H[c>>2]:c;b=e?H[c+4>>2]:b;while(1){e=I[d+27|0];h=e<<24>>24<0;e=h?H[d+20>>2]:e;j=e>>>0>>0;b:{c:{d:{e:{f:{g:{i=j?e:b;if(i){h=h?H[d+16>>2]:d+16|0;k=Fa(g,h,i);if(k){break g}if(b>>>0>=e>>>0){break f}break b}if(b>>>0>=e>>>0){break e}break b}if((k|0)<0){break b}}e=Fa(h,g,i);if(e){break d}}if(j){break c}return Tc(f,c)}if((e|0)<0){break c}return Tc(f,c)}d=d+4|0}d=H[d>>2];if(d){continue}break}}return Tc(a,c)}function be(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=ca-16|0;ca=d;f=H[a+24>>2];k=H[a+28>>2];a:{if((f|0)!=(k|0)){while(1){H[d+8>>2]=0;H[d>>2]=0;H[d+4>>2]=0;a=$d(H[f>>2],b,d);g=I[d+11|0];h=g<<24>>24;i=3;b:{c:{d:{if(!a){break d}i=0;a=I[c+11|0];e=a<<24>>24;j=(h|0)<0?H[d+4>>2]:g;if((j|0)!=(((e|0)<0?H[c+4>>2]:a)|0)){break d}a=(e|0)<0?H[c>>2]:c;e=(h|0)<0;e:{if(!e){e=d;if(!h){break e}while(1){if(I[e|0]!=I[a|0]){break d}a=a+1|0;e=e+1|0;g=g-1|0;if(g){continue}break}break e}if(!j){break e}if(Fa(e?H[d>>2]:d,a,j)){break c}}l=H[f>>2];i=1}if((h|0)>=0){break b}}oa(H[d>>2])}f:{switch(i|0){case 0:case 3:break f;default:break a}}f=f+4|0;if((k|0)!=(f|0)){continue}break}}l=0}ca=d+16|0;return l}function Cb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=c-b|0;h=f>>2;d=H[a+8>>2];e=H[a>>2];if(h>>>0<=d-e>>2>>>0){d=H[a+4>>2];g=d-e|0;f=g+b|0;i=g>>2;g=i>>>0>>0?f:c;if((g|0)!=(b|0)){while(1){H[e>>2]=H[b>>2];e=e+4|0;b=b+4|0;if((g|0)!=(b|0)){continue}break}}if(h>>>0>i>>>0){if((c|0)!=(g|0)){while(1){H[d>>2]=H[f>>2];d=d+4|0;f=f+4|0;if((f|0)!=(c|0)){continue}break}}H[a+4>>2]=d;return}H[a+4>>2]=e;return}if(e){H[a+4>>2]=e;oa(e);H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;d=0}a:{if((f|0)<0){break a}e=d>>>1|0;d=d>>>0>=2147483644?1073741823:e>>>0>h>>>0?e:h;if(d>>>0>=1073741824){break a}e=d<<2;d=pa(e);H[a>>2]=d;H[a+8>>2]=d+e;if((b|0)!=(c|0)){c=b;b=(f-4&-4)+4|0;d=qa(d,c,b)+b|0}H[a+4>>2]=d;return}sa();v()}function Oa(a,b,c){var d=0,e=0,f=0;e=ca-16|0;ca=e;H[a+4>>2]=0;a:{b:{if(!b){break b}f=H[a+8>>2];d=f<<5;c:{if(d>>>0>=b>>>0){H[a+4>>2]=b;break c}H[e+8>>2]=0;H[e>>2]=0;H[e+4>>2]=0;if((b|0)<0){break a}if(d>>>0<=1073741822){f=f<<6;d=b+31&-32;d=d>>>0>>0?f:d}else{d=2147483647}pb(e,d);f=H[a>>2];H[a>>2]=H[e>>2];H[e>>2]=f;d=H[a+4>>2];H[a+4>>2]=b;H[e+4>>2]=d;d=H[a+8>>2];H[a+8>>2]=H[e+8>>2];H[e+8>>2]=d;if(!f){break c}oa(f)}d=b>>>5|0;a=H[a>>2];if(I[c|0]){if(b>>>0>=32){ra(a,255,d<<2)}if((b&-32)==(b|0)){break b}a=a+(d<<2)|0;H[a>>2]=H[a>>2]|-1>>>32-(b&31);break b}if(b>>>0>=32){ra(a,0,d<<2)}if((b&-32)==(b|0)){break b}a=a+(d<<2)|0;H[a>>2]=H[a>>2]&(-1>>>32-(b&31)^-1)}ca=e+16|0;return}sa();v()}function Hg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=ca-32|0;ca=e;a:{b:{f=Ma(c);if(f>>>0<2147483632){c:{d:{if(f>>>0>=11){a=(f|15)+1|0;g=pa(a);H[e+24>>2]=a|-2147483648;H[e+16>>2]=g;H[e+20>>2]=f;a=f+g|0;break d}F[e+27|0]=f;g=e+16|0;a=f+g|0;if(!f){break c}}qa(g,c,f)}F[a|0]=0;c=Ma(d);if(c>>>0>=2147483632){break b}e:{f:{if(c>>>0>=11){f=(c|15)+1|0;a=pa(f);H[e+8>>2]=f|-2147483648;H[e>>2]=a;H[e+4>>2]=c;g=a+c|0;break f}F[e+11|0]=c;g=c+e|0;a=e;if(!c){break e}}qa(a,d,c)}F[g|0]=0;c=H[b+4>>2];a=-1;g:{if(!c){break g}c=be(c,e+16|0,e);a=-1;if(!c){break g}a=Yd(b,H[c+24>>2])}if(F[e+11|0]<0){oa(H[e>>2])}if(F[e+27|0]<0){oa(H[e+16>>2])}ca=e+32|0;break a}Na();v()}Na();v()}return a|0}function jb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=H[b>>2];h=H[b+8>>2];i=H[b+4>>2];j=H[b>>2];d=H[a>>2];b=H[d+4>>2];a=H[d+8>>2];if(b>>>0>>0){H[b+8>>2]=h;H[b+4>>2]=i;H[b>>2]=j;H[d+4>>2]=b+12;return}a:{e=H[d>>2];g=(b-e|0)/12|0;c=g+1|0;if(c>>>0<357913942){f=(a-e|0)/12|0;a=f<<1;c=f>>>0>=178956970?357913941:a>>>0>c>>>0?a:c;if(c){if(c>>>0>=357913942){break a}f=pa(N(c,12))}else{f=0}a=f+N(g,12)|0;H[a+8>>2]=h;H[a+4>>2]=i;H[a>>2]=j;g=a+12|0;if((b|0)!=(e|0)){while(1){a=a-12|0;b=b-12|0;H[a>>2]=H[b>>2];H[a+4>>2]=H[b+4>>2];H[a+8>>2]=H[b+8>>2];if((b|0)!=(e|0)){continue}break}}H[d+8>>2]=f+N(c,12);H[d+4>>2]=g;H[d>>2]=a;if(e){oa(e)}return}sa();v()}wa();v()}function lf(a,b){a=a|0;b=b|0;a=0;a:{switch(b|0){case 0:a=pa(20);H[a+12>>2]=-1;H[a+16>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=2232;return a|0;case 1:a=pa(24);H[a+12>>2]=-1;H[a+16>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=2232;H[a+20>>2]=0;H[a>>2]=2448;return a|0;case 2:a=pa(48);H[a+12>>2]=-1;H[a+16>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=2232;H[a+20>>2]=0;H[a>>2]=2448;H[a+24>>2]=1832;H[a>>2]=11048;H[a+32>>2]=0;H[a+36>>2]=0;H[a+28>>2]=-1;H[a+40>>2]=0;H[a+44>>2]=0;return a|0;case 3:a=pa(32);H[a+12>>2]=-1;H[a+16>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=2232;H[a+20>>2]=0;H[a>>2]=2448;H[a+24>>2]=1032;H[a>>2]=7028;H[a+28>>2]=-1;break;default:break a}}return a|0}function tf(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,k=0,l=0,m=0,n=0;f=H[b>>2];b=H[b+4>>2];d=H[H[a+8>>2]+40>>2];j=d;m=pa((d|0)<0?-1:d);i=b-f|0;e=1;a:{if((i|0)<4){break a}b=0;g=H[c+16>>2];k=d;f=g+d|0;d=0+H[c+20>>2]|0;d=f>>>0>>0?d+1|0:d;h=H[c+12>>2];e=0;if(K[c+8>>2]>>0&(d|0)>=(h|0)|(d|0)>(h|0)){break a}e=i>>2;i=(e|0)<=1?1:e;while(1){b:{g=qa(m,H[c>>2]+g|0,j);H[c+16>>2]=f;H[c+20>>2]=d;qa(H[H[H[a+8>>2]+64>>2]>>2]+b|0,g,j);l=l+1|0;if((i|0)==(l|0)){break b}b=b+j|0;d=n+H[c+20>>2]|0;g=H[c+16>>2];f=k+g|0;d=f>>>0>>0?d+1|0:d;h=H[c+12>>2];if((d|0)<=(h|0)&K[c+8>>2]>=f>>>0|(d|0)<(h|0)){continue}}break}e=(e|0)<=(l|0)}oa(m);return e|0}function Ti(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;H[b>>2]=1;f=b+8|0;c=H[b+8>>2];d=H[b+12>>2]-c|0;if(d>>>0<=4294967291){kc(f,d+4|0);c=H[f>>2]}c=c+d|0;d=H[a+4>>2];F[c|0]=d;F[c+1|0]=d>>>8;F[c+2|0]=d>>>16;F[c+3|0]=d>>>24;c=H[a+8>>2];if((c|0)!=H[a+12>>2]){d=0;while(1){g=(d<<2)+c|0;c=H[b+8>>2];e=H[b+12>>2]-c|0;if(e>>>0<=4294967291){kc(f,e+4|0);c=H[f>>2]}c=c+e|0;e=H[g>>2];F[c|0]=e;F[c+1|0]=e>>>8;F[c+2|0]=e>>>16;F[c+3|0]=e>>>24;d=d+1|0;c=H[a+8>>2];if(d>>>0>2]-c>>2>>>0){continue}break}}c=H[b+12>>2];b=H[b+8>>2];c=c-b|0;if(c>>>0<=4294967291){kc(f,c+4|0);b=H[f>>2]}b=b+c|0;a=H[a+20>>2];F[b|0]=a;F[b+1|0]=a>>>8;F[b+2|0]=a>>>16;F[b+3|0]=a>>>24}function Aa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=c-b|0;g=f>>2;d=H[a+8>>2];e=H[a>>2];if(g>>>0<=d-e>>2>>>0){f=H[a+4>>2]-e|0;d=f+b|0;h=f>>2;f=h>>>0>>0?d:c;i=f-b|0;if((b|0)!=(f|0)){va(e,b,i)}if(g>>>0>h>>>0){b=H[a+4>>2];if((c|0)!=(f|0)){while(1){H[b>>2]=H[d>>2];b=b+4|0;d=d+4|0;if((d|0)!=(c|0)){continue}break}}H[a+4>>2]=b;return}H[a+4>>2]=e+i;return}if(e){H[a+4>>2]=e;oa(e);H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;d=0}a:{if((f|0)<0){break a}e=d>>>1|0;d=d>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(d>>>0>=1073741824){break a}e=d<<2;d=pa(e);H[a>>2]=d;H[a+8>>2]=d+e;if((b|0)!=(c|0)){c=b;b=(f-4&-4)+4|0;d=qa(d,c,b)+b|0}H[a+4>>2]=d;return}sa();v()}function Rb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=H[a+4>>2];if((c|0)!=H[a+8>>2]){e=H[b+4>>2];H[c>>2]=H[b>>2];H[c+4>>2]=e;H[c+8>>2]=H[b+8>>2];H[a+4>>2]=c+12;return}a:{g=H[a>>2];d=(c-g|0)/12|0;e=d+1|0;if(e>>>0<357913942){f=d<<1;f=d>>>0>=178956970?357913941:e>>>0>>0?f:e;if(f){if(f>>>0>=357913942){break a}e=pa(N(f,12))}else{e=0}d=e+N(d,12)|0;h=H[b+4>>2];H[d>>2]=H[b>>2];H[d+4>>2]=h;H[d+8>>2]=H[b+8>>2];b=d+12|0;if((c|0)!=(g|0)){while(1){c=c-12|0;h=H[c+4>>2];d=d-12|0;H[d>>2]=H[c>>2];H[d+4>>2]=h;H[d+8>>2]=H[c+8>>2];if((c|0)!=(g|0)){continue}break}c=H[a>>2]}H[a+8>>2]=e+N(f,12);H[a+4>>2]=b;H[a>>2]=d;if(c){oa(c)}return}sa();v()}wa();v()}function Qi(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,k=0,l=0,m=0,n=0;f=ca-32|0;ca=f;g=e>>>0>1073741823?-1:e<<2;l=ra(pa(g),0,g);g=l;i=H[g>>2];g=H[g+4>>2];k=H[b+4>>2];H[f+24>>2]=H[b>>2];H[f+28>>2]=k;H[f+8>>2]=i;H[f+12>>2]=g;i=a+8|0;rc(f+16|0,i,f+8|0,f+24|0);H[c>>2]=H[f+16>>2];H[c+4>>2]=H[f+20>>2];if((d|0)>(e|0)){k=0-e<<2;a=e;while(1){h=a<<2;g=h+c|0;j=g+k|0;m=H[j>>2];j=H[j+4>>2];h=b+h|0;n=H[h+4>>2];H[f+24>>2]=H[h>>2];H[f+28>>2]=n;H[f+8>>2]=m;H[f+12>>2]=j;rc(f+16|0,i,f+8|0,f+24|0);H[g>>2]=H[f+16>>2];H[g+4>>2]=H[f+20>>2];a=a+e|0;if((d|0)>(a|0)){continue}break}}oa(l);ca=f+32|0;return 1}function Hi(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,k=0,l=0,m=0,n=0;f=ca-32|0;ca=f;h=e>>>0>1073741823?-1:e<<2;h=ra(pa(h),0,h);g=H[b>>2];i=H[b+4>>2];k=H[h+4>>2];H[f+16>>2]=H[h>>2];H[f+20>>2]=k;H[f+8>>2]=g;H[f+12>>2]=i;i=a+8|0;qc(f+24|0,i,f+16|0,f+8|0);H[c>>2]=H[f+24>>2];H[c+4>>2]=H[f+28>>2];if((d|0)>(e|0)){k=0-e<<2;a=e;while(1){g=a<<2;j=g+b|0;m=H[j>>2];j=H[j+4>>2];g=c+g|0;l=g+k|0;n=H[l+4>>2];H[f+16>>2]=H[l>>2];H[f+20>>2]=n;H[f+8>>2]=m;H[f+12>>2]=j;qc(f+24|0,i,f+16|0,f+8|0);H[g>>2]=H[f+24>>2];H[g+4>>2]=H[f+28>>2];a=a+e|0;if((d|0)>(a|0)){continue}break}}oa(h);ca=f+32|0;return 1}function Ag(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;a:{if(K[b+80>>2]>65535){break a}a=H[b+100>>2];b=H[b+96>>2];e=(a-b|0)/12|0;f=N(e,6);g=(f|0)==(c|0);if((a|0)==(b|0)|(c|0)!=(f|0)){break a}g=1;c=e>>>0<=1?1:e;i=c&1;a=0;if(e>>>0>=2){j=c&-2;c=0;while(1){f=N(a,6);h=f+d|0;e=b+N(a,12)|0;G[h>>1]=H[e>>2];G[(f|2)+d>>1]=H[e+4>>2];G[h+4>>1]=H[e+8>>2];f=a|1;e=N(f,6)+d|0;f=b+N(f,12)|0;G[e>>1]=H[f>>2];G[e+2>>1]=H[f+4>>2];G[e+4>>1]=H[f+8>>2];a=a+2|0;c=c+2|0;if((j|0)!=(c|0)){continue}break}}if(!i){break a}c=N(a,6)+d|0;a=b+N(a,12)|0;G[c>>1]=H[a>>2];G[c+2>>1]=H[a+4>>2];G[c+4>>1]=H[a+8>>2]}return g|0}function Gd(a,b,c,d,e,f,g){var h=0,i=0,j=0;h=ca-16|0;ca=h;if((b^-1)+2147483631>>>0>=c>>>0){if(I[a+11|0]>>>7|0){i=H[a>>2]}else{i=a}if(b>>>0<1073741799){H[h+12>>2]=b<<1;H[h>>2]=b+c;c=ca-16|0;ca=c;ca=c+16|0;c=h+12|0;c=H[(K[h>>2]>2]?c:h)>>2];if(c>>>0>=11){j=c+16&-16;c=j-1|0;c=(c|0)==11?j:c}else{c=10}c=c+1|0}else{c=2147483631}Zb(h,c);c=H[h>>2];if(f){yb(c,g,f)}g=d-e|0;if((d|0)!=(e|0)){yb(c+f|0,e+i|0,g)}if((b|0)!=10){oa(i)}H[a>>2]=c;H[a+8>>2]=H[a+8>>2]&-2147483648|H[h+4>>2]&2147483647;H[a+8>>2]=H[a+8>>2]|-2147483648;b=a;a=f+g|0;H[b+4>>2]=a;F[h+12|0]=0;F[a+c|0]=I[h+12|0];ca=h+16|0;return}Na();v()}function Rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=ca-32|0;ca=a;H[a+24>>2]=0;H[a+28>>2]=0;a:{d=Ma(c);if(d>>>0<2147483632){b:{c:{if(d>>>0>=11){e=(d|15)+1|0;f=pa(e);H[a+16>>2]=e|-2147483648;H[a+8>>2]=f;H[a+12>>2]=d;e=d+f|0;break c}F[a+19|0]=d;f=a+8|0;e=f+d|0;if(!d){break b}}qa(f,c,d)}F[e|0]=0;c=b+4|0;b=nb(b,a+8|0);d:{if((c|0)==(b|0)){break d}c=H[b+32>>2];b=H[b+28>>2];if((c-b|0)!=8){break d}c=I[b+4|0]|I[b+5|0]<<8|(I[b+6|0]<<16|I[b+7|0]<<24);H[a+24>>2]=I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24);H[a+28>>2]=c}g=M[a+24>>3];if(F[a+19|0]<0){oa(H[a+8>>2])}ca=a+32|0;break a}Na();v()}return+g}function uf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=1;a:{if((ea[H[H[b>>2]+20>>2]](b)|0)<=0){break a}while(1){f=0;c=Zd(H[H[a+4>>2]+4>>2],ea[H[H[b>>2]+24>>2]](b,g)|0);if((c|0)==-1){break a}e=H[a+4>>2];b:{if(I[e+36|0]<=1){if(ea[H[H[b>>2]+28>>2]](b,H[H[H[e+4>>2]+8>>2]+(c<<2)>>2])|0){break b}break a}d=0;c:{if((c|0)<0){break c}h=H[e+4>>2];if(H[h+12>>2]-H[h+8>>2]>>2<=(c|0)){break c}d=H[H[e+8>>2]+(H[H[e+20>>2]+(c<<2)>>2]<<2)>>2];d=ea[H[H[d>>2]+32>>2]](d,c)|0}if(!d){break a}if(!(ea[H[H[b>>2]+28>>2]](b,d)|0)){break a}}f=1;g=g+1|0;if((ea[H[H[b>>2]+20>>2]](b)|0)>(g|0)){continue}break}}return f|0}function tb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;a:{b:{if(b){if(b>>>0>=357913942){break b}b=N(b,12);d=pa(b);H[a+4>>2]=d;H[a>>2]=d;e=b+d|0;H[a+8>>2]=e;f=H[c+4>>2];g=H[c>>2];c:{if((f|0)==(g|0)){b=b-12|0;ra(d,0,(b-((b>>>0)%12|0)|0)+12|0);break c}h=f-g|0;if((h|0)<0){break a}i=h&-4;while(1){H[d+8>>2]=0;H[d>>2]=0;H[d+4>>2]=0;b=pa(h);H[d>>2]=b;H[d+8>>2]=b+i;c=g;while(1){H[b>>2]=H[c>>2];b=b+4|0;c=c+4|0;if((f|0)!=(c|0)){continue}break}H[d+4>>2]=b;d=d+12|0;if((e|0)!=(d|0)){continue}break}}H[a+4>>2]=e}return}sa();v()}H[d+8>>2]=0;H[d>>2]=0;H[d+4>>2]=0;sa();v()}function Vi(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;c=H[b+8>>2];d=H[b+12>>2];g=d;d=H[b+20>>2];i=d;h=H[b+16>>2];f=h+4|0;d=f>>>0<4?d+1|0:d;a:{if(c>>>0>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}e=h+H[b>>2]|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[b+16>>2]=f;H[b+20>>2]=d;if(J[b+38>>1]<=513){f=c;c=i;d=h+8|0;c=d>>>0<8?c+1|0:c;if(d>>>0>f>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break a}H[b+16>>2]=d;H[b+20>>2]=c}if(!(e&1)){break a}b=Q(e)^31;if(b-1>>>0>28){break a}j=1;H[a+8>>2]=b+1;b=-2<>2]=c;H[a+12>>2]=b^-1;H[a+24>>2]=c>>1;L[a+20>>2]=O(2)/O(c|0)}return j|0}function Lc(a,b,c){var d=0,e=0,f=0,g=0;a:{f=b>>>0<1431655766&(b|c)>=0;b:{if(!f){break b}b=N(b,3);Kc(a,b,13648);Kc(a+12|0,b,13652);d=H[a+24>>2];c:{if(H[a+32>>2]-d>>2>>>0>=c>>>0){break c}if(c>>>0>=1073741824){break a}b=H[a+28>>2];e=c<<2;c=pa(e);e=c+e|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;H[c>>2]=H[b>>2];if((b|0)!=(d|0)){continue}break}}H[a+32>>2]=e;H[a+28>>2]=g;H[a+24>>2]=c;if(!d){break c}oa(d)}H[a+80>>2]=0;H[a+84>>2]=0;b=H[a+76>>2];H[a+76>>2]=0;if(b){oa(b)}H[a+68>>2]=0;H[a+72>>2]=0;b=a- -64|0;a=H[b>>2];H[b>>2]=0;if(!a){break b}oa(a)}return f}sa();v()}function Fe(a){var b=0,c=0,d=0,e=0,f=0;f=1;c=H[a+140>>2];a:{if((c|0)<=0){break a}b=c<<4;d=pa(c>>>0>268435455?-1:b|4);H[d>>2]=c;d=d+4|0;c=d+b|0;b=d;while(1){H[b>>2]=0;H[b+4>>2]=0;F[b+5|0]=0;F[b+6|0]=0;F[b+7|0]=0;F[b+8|0]=0;F[b+9|0]=0;F[b+10|0]=0;F[b+11|0]=0;F[b+12|0]=0;b=b+16|0;if((c|0)!=(b|0)){continue}break}e=H[a+136>>2];H[a+136>>2]=d;if(e){c=e-4|0;d=H[c>>2];if(d){b=(d<<4)+e|0;while(1){b=b-16|0;if((e|0)!=(b|0)){continue}break}}oa(c)}b=0;if(H[a+140>>2]<=0){break a}while(1){f=ta(H[a+136>>2]+(b<<4)|0,a);if(!f){break a}b=b+1|0;if((b|0)>2]){continue}break}}return f}function mb(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(H[a+64>>2]){break a}c=pa(32);H[c+16>>2]=0;H[c+20>>2]=0;H[c+8>>2]=0;H[c>>2]=0;H[c+4>>2]=0;H[c+24>>2]=0;H[c+28>>2]=0;d=H[a+64>>2];H[a+64>>2]=c;if(!d){break a}c=H[d>>2];if(c){H[d+4>>2]=c;oa(c)}oa(d)}d=H[a+64>>2];c=H[a+28>>2]-1|0;if(c>>>0<=10){c=H[(c<<2)+13584>>2]}else{c=-1}c=N(c,I[a+24|0]);f=c>>31;g=se(d,0,Rj(c,f,b,0),da);if(g){d=H[a+64>>2];H[a>>2]=d;e=H[d+20>>2];H[a+8>>2]=H[d+16>>2];H[a+12>>2]=e;e=H[d+24>>2];d=H[d+28>>2];H[a+48>>2]=0;H[a+52>>2]=0;H[a+40>>2]=c;H[a+44>>2]=f;H[a+16>>2]=e;H[a+20>>2]=d;H[a+80>>2]=b}return g}function jc(a,b){var c=0;c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;c=H[b+60>>2];H[a+56>>2]=H[b+56>>2];H[a+60>>2]=c;c=H[b+52>>2];H[a+48>>2]=H[b+48>>2];H[a+52>>2]=c;c=H[b+44>>2];H[a+40>>2]=H[b+40>>2];H[a+44>>2]=c;c=H[b+36>>2];H[a+32>>2]=H[b+32>>2];H[a+36>>2]=c;c=H[b+28>>2];H[a+24>>2]=H[b+24>>2];H[a+28>>2]=c;c=H[b+20>>2];H[a+16>>2]=H[b+16>>2];H[a+20>>2]=c;c=H[b+12>>2];H[a+8>>2]=H[b+8>>2];H[a+12>>2]=c;H[a+88>>2]=0;H[a+64>>2]=0;H[a+68>>2]=0;H[a+72>>2]=0;H[a+76>>2]=0;F[a+77|0]=0;F[a+78|0]=0;F[a+79|0]=0;F[a+80|0]=0;F[a+81|0]=0;F[a+82|0]=0;F[a+83|0]=0;F[a+84|0]=0;return a}function zg(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,k=0;a=H[b+100>>2];b=H[b+96>>2];h=a-b|0;a:{if((h|0)!=(c|0)|(a|0)==(b|0)){break a}g=(c|0)/12|0;e=g>>>0<=1?1:g;j=e&1;a=0;if(g>>>0>=2){k=e&-2;g=0;while(1){e=N(a,12);i=e+d|0;f=b+e|0;H[i>>2]=H[f>>2];H[(e|4)+d>>2]=H[f+4>>2];H[i+8>>2]=H[f+8>>2];f=N(a|1,12);e=f+d|0;f=b+f|0;H[e>>2]=H[f>>2];H[e+4>>2]=H[f+4>>2];H[e+8>>2]=H[f+8>>2];a=a+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!j){break a}e=d;d=N(a,12);a=e+d|0;b=b+d|0;H[a>>2]=H[b>>2];H[a+4>>2]=H[b+4>>2];H[a+8>>2]=H[b+8>>2]}return(c|0)==(h|0)|0}function Mi(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;c=H[b+8>>2];d=H[b+12>>2];g=d;d=H[b+20>>2];i=d;h=H[b+16>>2];f=h+4|0;d=f>>>0<4?d+1|0:d;a:{if(c>>>0>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}e=h+H[b>>2]|0;e=I[e|0]|I[e+1|0]<<8|(I[e+2|0]<<16|I[e+3|0]<<24);H[b+16>>2]=f;H[b+20>>2]=d;f=c;c=i;d=h+8|0;c=d>>>0<8?c+1|0:c;if(d>>>0>f>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break a}H[b+16>>2]=d;H[b+20>>2]=c;if(!(e&1)){break a}b=Q(e)^31;if(b-1>>>0>28){break a}j=1;H[a+8>>2]=b+1;b=-2<>2]=c;H[a+12>>2]=b^-1;H[a+24>>2]=c>>1;L[a+20>>2]=O(2)/O(c|0)}return j|0}function nb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;a=H[a+4>>2];a:{b:{if(!a){break b}d=I[b+11|0];c=d<<24>>24<0;g=c?H[b>>2]:b;d=c?H[b+4>>2]:d;b=f;while(1){e=I[a+27|0];c=e<<24>>24<0;e=c?H[a+20>>2]:e;h=e>>>0>d>>>0;i=h?d:e;c:{if(i){c=Fa(c?H[a+16>>2]:a+16|0,g,i);if(c){break c}}c=d>>>0>e>>>0?-1:h}c=(c|0)<0;b=c?b:a;a=H[(c?a+4|0:a)>>2];if(a){continue}break}if((b|0)==(f|0)){break b}c=I[b+27|0];a=c<<24>>24<0;d:{c=a?H[b+20>>2]:c;e=c>>>0>>0?c:d;if(e){a=Fa(g,a?H[b+16>>2]:b+16|0,e);if(a){break d}}if(c>>>0>d>>>0){break b}break a}if((a|0)>=0){break a}}b=f}return b}function Jf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(Ya(a,H[b+8>>2],e)){if(!(H[b+28>>2]==1|H[b+4>>2]!=(c|0))){H[b+28>>2]=d}return}a:{if(Ya(a,H[b>>2],e)){if(!(H[b+16>>2]!=(c|0)&H[b+20>>2]!=(c|0))){if((d|0)!=1){break a}H[b+32>>2]=1;return}H[b+32>>2]=d;b:{if(H[b+44>>2]==4){break b}G[b+52>>1]=0;a=H[a+8>>2];ea[H[H[a>>2]+20>>2]](a,b,c,c,1,e);if(I[b+53|0]){H[b+44>>2]=3;if(!I[b+52|0]){break b}break a}H[b+44>>2]=4}H[b+20>>2]=c;H[b+40>>2]=H[b+40>>2]+1;if(H[b+36>>2]!=1|H[b+24>>2]!=2){break a}F[b+54|0]=1;return}a=H[a+8>>2];ea[H[H[a>>2]+24>>2]](a,b,c,d,e)}}function Db(a,b,c){var d=0,e=0,f=0,g=0;a:{b:{if(!b){break b}if(J[a+38>>1]<=513){f=H[a+12>>2];d=H[a+20>>2];b=H[a+16>>2];g=b+8|0;d=g>>>0<8?d+1|0:d;e=0;if(K[a+8>>2]>>0&(d|0)>=(f|0)|(d|0)>(f|0)){break a}b=b+H[a>>2]|0;d=I[b+4|0]|I[b+5|0]<<8|(I[b+6|0]<<16|I[b+7|0]<<24);H[c>>2]=I[b|0]|I[b+1|0]<<8|(I[b+2|0]<<16|I[b+3|0]<<24);H[c+4>>2]=d;b=H[a+20>>2];c=H[a+16>>2]+8|0;b=c>>>0<8?b+1|0:b;H[a+16>>2]=c;H[a+20>>2]=b;break b}e=0;if(!re(1,c,a)){break a}}F[a+36|0]=1;H[a+32>>2]=0;b=H[a+16>>2];c=b+H[a>>2]|0;H[a+24>>2]=c;H[a+28>>2]=(H[a+8>>2]-b|0)+c;e=1}return e}function ve(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=pa(64);c=pa(12);H[c+8>>2]=H[H[a+4>>2]+80>>2];H[c>>2]=13216;H[c+4>>2]=0;f=od(f,c);a:{b:{if((b|0)<0){c=f;break b}h=a+8|0;c=H[a+12>>2];e=H[a+8>>2];g=c-e>>2;c:{if((g|0)>(b|0)){break c}d=b+1|0;if(b>>>0>=g>>>0){Vb(h,d-g|0);break c}if(d>>>0>=g>>>0){break c}e=e+(d<<2)|0;if((e|0)!=(c|0)){while(1){c=c-4|0;d=H[c>>2];H[c>>2]=0;if(d){ea[H[H[d>>2]+4>>2]](d)}if((c|0)!=(e|0)){continue}break}}H[a+12>>2]=e}a=H[h>>2]+(b<<2)|0;c=H[a>>2];H[a>>2]=f;if(!c){break a}}ea[H[H[c>>2]+4>>2]](c)}return(b^-1)>>>31|0}function Qd(a,b){var c=0,d=0,e=0,f=0;d=ca-16|0;ca=d;H[d+12>>2]=b;c=ca-208|0;ca=c;H[c+204>>2]=b;b=c+160|0;ra(b,0,40);H[c+200>>2]=H[c+204>>2];a:{if((Od(0,a,c+200|0,c+80|0,b)|0)<0){break a}f=H[3941]>=0;b=H[3922];if(H[3940]<=0){H[3922]=b&-33}b:{c:{d:{if(!H[3934]){H[3934]=80;H[3929]=0;H[3926]=0;H[3927]=0;e=H[3933];H[3933]=c;break d}if(H[3926]){break c}}if(Sd(15688)){break b}}Od(15688,a,c+200|0,c+80|0,c+160|0)}if(e){ea[H[3931]](15688,0,0)|0;H[3934]=0;H[3933]=e;H[3929]=0;H[3926]=0;H[3927]=0}H[3922]=H[3922]|b&32;if(!f){break a}}ca=c+208|0;ca=d+16|0}function pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=H[a+60>>2];a:{if(!c){break a}H[c+4>>2]=a+48;if(!(ea[H[H[c>>2]+12>>2]](c)|0)){break a}b:{c=ea[H[H[a>>2]+24>>2]](a)|0;if((c|0)<=0){break b}while(1){c:{f=H[(ea[H[H[a>>2]+28>>2]](a)|0)+4>>2];g=ea[H[H[a>>2]+20>>2]](a,d)|0;e=H[a+60>>2];if(!(ea[H[H[e>>2]+8>>2]](e,H[H[f+8>>2]+(g<<2)>>2])|0)){break c}d=d+1|0;if((c|0)!=(d|0)){continue}break b}break}return 0}d=0;if(!(ea[H[H[a>>2]+36>>2]](a,b)|0)){break a}if(!(ea[H[H[a>>2]+40>>2]](a,b)|0)){break a}d=ea[H[H[a>>2]+44>>2]](a)|0}return d|0}function id(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=H[a+216>>2];if((c|0)!=H[a+220>>2]){while(1){a:{c=H[N(e,144)+c>>2];if((c|0)<0){break a}d=H[a+4>>2];f=H[d+8>>2];if((c|0)>=H[d+12>>2]-f>>2){break a}d=0;c=H[(c<<2)+f>>2];if((ea[H[H[c>>2]+24>>2]](c)|0)<=0){break a}while(1){if((ea[H[H[c>>2]+20>>2]](c,d)|0)!=(b|0)){d=d+1|0;if((ea[H[H[c>>2]+24>>2]](c)|0)>(d|0)){continue}break a}break}a=H[a+216>>2]+N(e,144)|0;return(I[a+100|0]?a+4|0:0)|0}e=e+1|0;c=H[a+216>>2];if(e>>>0<(H[a+220>>2]-c|0)/144>>>0){continue}break}}return 0}function xb(a){var b=0,c=0,d=0,e=0;c=H[a+132>>2];if(c){d=c;b=H[a+136>>2];if((c|0)!=(b|0)){while(1){d=b-12|0;e=H[d>>2];if(e){H[b-8>>2]=e;oa(e)}b=d;if((c|0)!=(b|0)){continue}break}d=H[a+132>>2]}H[a+136>>2]=c;oa(d)}c=H[a+120>>2];if(c){d=c;b=H[a+124>>2];if((c|0)!=(b|0)){while(1){d=b-12|0;e=H[d>>2];if(e){H[b-8>>2]=e;oa(e)}b=d;if((c|0)!=(b|0)){continue}break}d=H[a+120>>2]}H[a+124>>2]=c;oa(d)}b=H[a+108>>2];if(b){H[a+112>>2]=b;oa(b)}b=H[a+96>>2];if(b){H[a+100>>2]=b;oa(b)}Za(a+76|0);Za(a+56|0);Za(a+36|0);Za(a+16|0)}function rd(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=2128;d=H[a+60>>2];if(d){b=d;c=H[a- -64>>2];if((b|0)!=(c|0)){while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;if(b){Ga(b)}if((c|0)!=(d|0)){continue}break}b=H[a+60>>2]}H[a+64>>2]=d;oa(b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}d=H[a+36>>2];if(d){b=d;c=H[a+40>>2];if((b|0)!=(c|0)){while(1){c=c-24|0;ea[H[H[c>>2]>>2]](c)|0;if((c|0)!=(d|0)){continue}break}b=H[a+36>>2]}H[a+40>>2]=d;oa(b)}H[a>>2]=1984;b=H[a+16>>2];if(b){H[a+20>>2]=b;oa(b)}b=H[a+4>>2];if(b){H[a+8>>2]=b;oa(b)}return a|0}function ue(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=H[a+8>>2];d=H[a+4>>2];if(c-d>>2>>>0>=b>>>0){if(b){b=b<<2;d=ra(d,0,b)+b|0}H[a+4>>2]=d;return}a:{f=H[a>>2];g=d-f>>2;e=g+b|0;if(e>>>0<1073741824){c=c-f|0;h=c>>>1|0;e=c>>>0>=2147483644?1073741823:e>>>0>>0?h:e;if(e){if(e>>>0>=1073741824){break a}i=pa(e<<2)}c=(g<<2)+i|0;b=b<<2;b=ra(c,0,b)+b|0;if((d|0)!=(f|0)){while(1){c=c-4|0;d=d-4|0;H[c>>2]=H[d>>2];if((d|0)!=(f|0)){continue}break}}H[a+8>>2]=(e<<2)+i;H[a+4>>2]=b;H[a>>2]=c;if(f){oa(f)}return}sa();v()}wa();v()}function rb(a){var b=0,c=0,d=0,e=0,f=0;d=H[a+8>>2];a:{if(I[d+84|0]){break a}b=H[a+16>>2];if(!b|!I[b+84|0]){break a}c=H[d+72>>2];e=H[d+68>>2];F[b+84|0]=0;c=c-e>>2;f=H[b+68>>2];e=H[b+72>>2]-f>>2;b:{if(c>>>0>e>>>0){qb(b+68|0,c-e|0,2316);d=H[a+8>>2];break b}if(c>>>0>=e>>>0){break b}H[b+72>>2]=f+(c<<2)}if(I[d+84|0]){break a}c=H[d+68>>2];if((c|0)==H[d+72>>2]){break a}e=H[H[a+16>>2]+68>>2];b=0;while(1){f=b<<2;H[f+e>>2]=H[c+f>>2];b=b+1|0;c=H[d+68>>2];if(b>>>0>2]-c>>2>>>0){continue}break}}return H[a+16>>2]}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;e=ca+-64|0;ca=e;f=Ha(e+8|0);H[f+16>>2]=0;H[f+20>>2]=0;H[f>>2]=b;H[f+8>>2]=c;H[f+12>>2]=0;b=e+48|0;Pe(b,a,f,d);H[a+24>>2]=H[e+48>>2];f=a+24|0;a:{if((f|0)==(b|0)){break a}b=a+28|0;c=e+48|4;g=I[e+63|0];d=g<<24>>24;if(F[a+39|0]>=0){if((d|0)>=0){a=H[c+4>>2];H[b>>2]=H[c>>2];H[b+4>>2]=a;H[b+8>>2]=H[c+8>>2];break a}Xb(b,H[e+52>>2],H[e+56>>2]);break a}a=(d|0)<0;Yb(b,a?H[e+52>>2]:c,a?H[e+56>>2]:g)}if(F[e+63|0]<0){oa(H[e+52>>2])}ca=e- -64|0;return f|0}function Kg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=ca+-64|0;ca=e;f=Ha(e+8|0);H[f+16>>2]=0;H[f+20>>2]=0;H[f>>2]=b;H[f+8>>2]=c;H[f+12>>2]=0;b=e+48|0;Oe(b,a,f,d);H[a+24>>2]=H[e+48>>2];f=a+24|0;a:{if((f|0)==(b|0)){break a}b=a+28|0;c=e+48|4;g=I[e+63|0];d=g<<24>>24;if(F[a+39|0]>=0){if((d|0)>=0){a=H[c+4>>2];H[b>>2]=H[c>>2];H[b+4>>2]=a;H[b+8>>2]=H[c+8>>2];break a}Xb(b,H[e+52>>2],H[e+56>>2]);break a}a=(d|0)<0;Yb(b,a?H[e+52>>2]:c,a?H[e+56>>2]:g)}if(F[e+63|0]<0){oa(H[e+52>>2])}ca=e- -64|0;return f|0}function Ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=ca-32|0;ca=a;a:{d=Ma(c);if(d>>>0<2147483632){b:{c:{if(d>>>0>=11){e=(d|15)+1|0;f=pa(e);H[a+24>>2]=e|-2147483648;H[a+16>>2]=f;H[a+20>>2]=d;e=d+f|0;break c}F[a+27|0]=d;f=a+16|0;e=f+d|0;if(!d){break b}}qa(f,c,d)}F[e|0]=0;F[a+4|0]=0;H[a>>2]=1701667182;F[a+11|0]=4;d=H[b+4>>2];c=-1;d:{if(!d){break d}d=be(d,a,a+16|0);c=-1;if(!d){break d}c=Yd(b,H[d+24>>2])}b=c;if(F[a+11|0]<0){oa(H[a>>2])}if(F[a+27|0]<0){oa(H[a+16>>2])}ca=a+32|0;break a}Na();v()}return b|0}function hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=H[a+216>>2];if((c|0)!=H[a+220>>2]){while(1){a:{c=H[N(e,144)+c>>2];if((c|0)<0){break a}d=H[a+4>>2];f=H[d+8>>2];if((c|0)>=H[d+12>>2]-f>>2){break a}d=0;c=H[(c<<2)+f>>2];if((ea[H[H[c>>2]+24>>2]](c)|0)<=0){break a}while(1){if((ea[H[H[c>>2]+20>>2]](c,d)|0)!=(b|0)){d=d+1|0;if((ea[H[H[c>>2]+24>>2]](c)|0)>(d|0)){continue}break a}break}return(H[a+216>>2]+N(e,144)|0)+104|0}e=e+1|0;c=H[a+216>>2];if(e>>>0<(H[a+220>>2]-c|0)/144>>>0){continue}break}}return a+184|0}function ab(a){var b=0,c=0,d=0,e=0;c=H[a+640>>2];if(c){d=c;b=H[a+644>>2];if((c|0)!=(b|0)){while(1){d=b-12|0;e=H[d>>2];if(e){H[b-8>>2]=e;oa(e)}b=d;if((c|0)!=(b|0)){continue}break}d=H[a+640>>2]}H[a+644>>2]=c;oa(d)}c=H[a+628>>2];if(c){d=c;b=H[a+632>>2];if((c|0)!=(b|0)){while(1){d=b-12|0;e=H[d>>2];if(e){H[b-8>>2]=e;oa(e)}b=d;if((c|0)!=(b|0)){continue}break}d=H[a+628>>2]}H[a+632>>2]=c;oa(d)}b=H[a+616>>2];if(b){H[a+620>>2]=b;oa(b)}b=H[a+604>>2];if(b){H[a+608>>2]=b;oa(b)}Za(a+584|0);Za(a+564|0);Za(a+544|0)}function Tg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=ca-16|0;ca=d;H[d+12>>2]=0;a:{e=Ma(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){f=(e|15)+1|0;a=pa(f);H[d+8>>2]=f|-2147483648;H[d>>2]=a;H[d+4>>2]=e;f=a+e|0;break c}F[d+11|0]=e;f=d+e|0;a=d;if(!e){break b}}qa(a,c,e)}F[f|0]=0;a=nb(b,d);d:{if((a|0)==(b+4|0)){break d}b=H[a+32>>2];a=H[a+28>>2];if((b-a|0)!=4){break d}H[d+12>>2]=I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24)}a=H[d+12>>2];if(F[d+11|0]<0){oa(H[d>>2])}ca=d+16|0;break a}Na();v()}return a|0}function vb(a){var b=0,c=0,d=0,e=0;c=H[a+128>>2];if(c){d=c;b=H[a+132>>2];if((c|0)!=(b|0)){while(1){d=b-12|0;e=H[d>>2];if(e){H[b-8>>2]=e;oa(e)}b=d;if((c|0)!=(b|0)){continue}break}d=H[a+128>>2]}H[a+132>>2]=c;oa(d)}c=H[a+116>>2];if(c){d=c;b=H[a+120>>2];if((c|0)!=(b|0)){while(1){d=b-12|0;e=H[d>>2];if(e){H[b-8>>2]=e;oa(e)}b=d;if((c|0)!=(b|0)){continue}break}d=H[a+116>>2]}H[a+120>>2]=c;oa(d)}b=H[a+104>>2];if(b){H[a+108>>2]=b;oa(b)}b=H[a+92>>2];if(b){H[a+96>>2]=b;oa(b)}Za(a+72|0);Za(a+52|0);Za(a+32|0)}function kc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{c=H[a+4>>2];e=H[a>>2];d=c-e|0;b:{if(d>>>0>>0){g=b-d|0;f=H[a+8>>2];if(g>>>0<=f-c>>>0){h=a,i=ra(c,0,g)+g|0,H[h+4>>2]=i;break b}if((b|0)<0){break a}c=f-e|0;f=c<<1;c=c>>>0>=1073741823?2147483647:b>>>0>>0?f:b;f=pa(c);ra(f+d|0,0,g);d=va(f,e,d);H[a+8>>2]=d+c;H[a+4>>2]=b+d;H[a>>2]=d;if(!e){break b}oa(e);break b}if(b>>>0>=d>>>0){break b}H[a+4>>2]=b+e}b=H[a+28>>2];c=b;d=b+1|0;b=H[a+24>>2]+1|0;e=b?c:d;H[a+24>>2]=b;H[a+28>>2]=e;return}sa();v()}function Ka(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=H[a+4>>2];if((e|0)!=H[a+8>>2]){H[e>>2]=H[b>>2];H[a+4>>2]=e+4;return}a:{g=H[a>>2];f=e-g|0;c=f>>2;d=c+1|0;if(d>>>0<1073741824){h=c<<2;c=f>>>1|0;c=f>>>0>=2147483644?1073741823:c>>>0>d>>>0?c:d;if(c){if(c>>>0>=1073741824){break a}f=pa(c<<2)}else{f=0}d=h+f|0;H[d>>2]=H[b>>2];b=d+4|0;if((e|0)!=(g|0)){while(1){d=d-4|0;e=e-4|0;H[d>>2]=H[e>>2];if((e|0)!=(g|0)){continue}break}}H[a+8>>2]=f+(c<<2);H[a+4>>2]=b;H[a>>2]=d;if(g){oa(g)}return}sa();v()}wa();v()}function Ia(a){H[a>>2]=-1;H[a+4>>2]=0;H[a+8>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;F[a+28|0]=1;H[a+20>>2]=0;H[a+24>>2]=0;H[a+12>>2]=0;H[a+16>>2]=0;H[a+40>>2]=0;H[a+44>>2]=0;H[a+48>>2]=0;H[a+52>>2]=0;H[a+56>>2]=0;H[a+60>>2]=0;H[a+64>>2]=0;H[a+68>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+84>>2]=0;H[a+88>>2]=0;H[a+92>>2]=0;H[a+96>>2]=0;H[a+72>>2]=a+4;H[a+104>>2]=0;H[a+108>>2]=0;F[a+100|0]=1;H[a+112>>2]=0;H[a+116>>2]=0;H[a+120>>2]=0;H[a+124>>2]=0;H[a+128>>2]=0;H[a+132>>2]=0;H[a+136>>2]=0;H[a+140>>2]=0}function Ld(a,b){if(!a){return 0}a:{b:{if(a){if(b>>>0<=127){break b}c:{if(!H[H[4292]>>2]){if((b&-128)==57216){break b}break c}if(b>>>0<=2047){F[a+1|0]=b&63|128;F[a|0]=b>>>6|192;a=2;break a}if(!((b&-8192)!=57344&b>>>0>=55296)){F[a+2|0]=b&63|128;F[a|0]=b>>>12|224;F[a+1|0]=b>>>6&63|128;a=3;break a}if(b-65536>>>0<=1048575){F[a+3|0]=b&63|128;F[a|0]=b>>>18|240;F[a+2|0]=b>>>6&63|128;F[a+1|0]=b>>>12&63|128;a=4;break a}}H[3992]=25;a=-1}else{a=1}break a}F[a|0]=b;a=1}return a}function Hb(a,b){var c=0,d=0,e=0,f=0;d=H[a+12>>2];c=H[a+16>>2]-d>>2;a:{if(c>>>0>>0){ya(a+12|0,b-c|0);break a}if(b>>>0>=c>>>0){break a}H[a+16>>2]=d+(b<<2)}b:{c=H[a>>2];c:{if(H[a+8>>2]-c>>2>>>0>=b>>>0){break c}if(b>>>0>=1073741824){break b}d=H[a+4>>2];e=b<<2;b=pa(e);e=b+e|0;f=b+(d-c&-4)|0;b=f;if((c|0)!=(d|0)){while(1){b=b-4|0;d=d-4|0;H[b>>2]=H[d>>2];if((c|0)!=(d|0)){continue}break}}H[a+8>>2]=e;H[a+4>>2]=f;H[a>>2]=b;if(!c){break c}oa(c)}return}sa();v()}function _b(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=13724;b=H[a+68>>2];if(b){H[a+72>>2]=b;oa(b)}b=H[a+56>>2];if(b){H[a+60>>2]=b;oa(b)}b=H[a+44>>2];if(b){H[a+48>>2]=b;oa(b)}b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}b=H[a+20>>2];if(b){H[a+24>>2]=b;oa(b)}b=H[a+8>>2];if(b){d=b;c=H[a+12>>2];if((b|0)!=(c|0)){while(1){c=c-4|0;d=H[c>>2];H[c>>2]=0;if(d){Ga(d)}if((b|0)!=(c|0)){continue}break}d=H[a+8>>2]}H[a+12>>2]=b;oa(d)}b=H[a+4>>2];H[a+4>>2]=0;if(b){Uc(b)}return a|0}function yb(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=ca-16|0;ca=f;d=ca-32|0;ca=d;e=ca-16|0;ca=e;H[e+12>>2]=b;H[e+8>>2]=b+c;H[d+24>>2]=H[e+12>>2];H[d+28>>2]=H[e+8>>2];ca=e+16|0;c=ca-16|0;ca=c;h=H[d+28>>2];e=H[d+24>>2];g=h-e|0;if((e|0)!=(h|0)){va(a,e,g)}H[c+12>>2]=e+g;H[c+8>>2]=a+g;H[d+16>>2]=H[c+12>>2];H[d+20>>2]=H[c+8>>2];ca=c+16|0;H[d+12>>2]=(H[d+16>>2]-b|0)+b;H[d+8>>2]=(H[d+20>>2]-a|0)+a;H[f+8>>2]=H[d+12>>2];H[f+12>>2]=H[d+8>>2];ca=d+32|0;ca=f+16|0}function ya(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=H[a+8>>2];c=H[a+4>>2];if(e-c>>2>>>0>=b>>>0){if(b){b=b<<2;c=ra(c,0,b)+b|0}H[a+4>>2]=c;return}a:{f=c;c=H[a>>2];g=f-c|0;h=g>>2;d=h+b|0;if(d>>>0<1073741824){e=e-c|0;f=e>>>1|0;d=e>>>0>=2147483644?1073741823:d>>>0>>0?f:d;if(d){if(d>>>0>=1073741824){break a}i=pa(d<<2)}b=b<<2;e=ra((h<<2)+i|0,0,b);f=d<<2;d=va(i,c,g);H[a+8>>2]=f+d;H[a+4>>2]=b+e;H[a>>2]=d;if(c){oa(c)}return}sa();v()}wa();v()}function Tc(a,b){var c=0,d=0,e=0,f=0;c=a+4|0;a=nb(a,b);a:{if((c|0)==(a|0)){break a}b=a+28|0;b=F[a+39|0]<0?H[b>>2]:b;while(1){a=b;b=a+1|0;c=F[a|0];if((c|0)==32|c-9>>>0<5){continue}break}b:{c:{d:{c=F[a|0];switch(c-43|0){case 0:break c;case 2:break d;default:break b}}e=1}c=F[b|0];a=b}if(c-48>>>0<10){while(1){d=(N(d,10)-F[a|0]|0)+48|0;b=F[a+1|0];a=a+1|0;if(b-48>>>0<10){continue}break}}a=e?d:0-d|0;if((a|0)==-1){break a}f=(a|0)!=0}return f}function bb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;a=H[a>>2];c=H[a+4>>2];e=H[a+8>>2];if(c>>>0>>0){H[c>>2]=H[b>>2];H[a+4>>2]=c+4;return}a:{d=c;c=H[a>>2];g=d-c|0;d=g>>2;f=d+1|0;if(f>>>0<1073741824){h=d<<2;e=e-c|0;d=e>>>1|0;f=e>>>0>=2147483644?1073741823:f>>>0>>0?d:f;if(f){if(f>>>0>=1073741824){break a}e=pa(f<<2)}else{e=0}d=h+e|0;H[d>>2]=H[b>>2];b=va(e,c,g);H[a+8>>2]=b+(f<<2);H[a+4>>2]=d+4;H[a>>2]=b;if(c){oa(c)}return}sa();v()}wa();v()}function ob(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=H[a+8>>2];c=H[a+4>>2];if(e-c>>3>>>0>=b>>>0){if(b){b=b<<3;c=ra(c,0,b)+b|0}H[a+4>>2]=c;return}a:{f=c;c=H[a>>2];g=f-c|0;h=g>>3;d=h+b|0;if(d>>>0<536870912){e=e-c|0;f=e>>>2|0;d=e>>>0>=2147483640?536870911:d>>>0>>0?f:d;if(d){if(d>>>0>=536870912){break a}i=pa(d<<3)}b=b<<3;e=ra((h<<3)+i|0,0,b);f=d<<3;d=va(i,c,g);H[a+8>>2]=f+d;H[a+4>>2]=b+e;H[a>>2]=d;if(c){oa(c)}return}sa();v()}wa();v()}function kf(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=2328;b=H[a+60>>2];H[a+60>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}d=H[a+36>>2];if(d){c=H[a+40>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=H[a+36>>2]}H[a+40>>2]=d;oa(b)}H[a>>2]=1984;b=H[a+16>>2];if(b){H[a+20>>2]=b;oa(b)}b=H[a+4>>2];if(b){H[a+8>>2]=b;oa(b)}return a|0}function jf(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=2328;b=H[a+60>>2];H[a+60>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}d=H[a+36>>2];if(d){c=H[a+40>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=H[a+36>>2]}H[a+40>>2]=d;oa(b)}H[a>>2]=1984;b=H[a+16>>2];if(b){H[a+20>>2]=b;oa(b)}b=H[a+4>>2];if(b){H[a+8>>2]=b;oa(b)}oa(a)}function xi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=ca-16|0;ca=d;e=H[a+4>>2];a:{if((e|0)==-1){break a}c=H[b+20>>2];if(!!H[b+16>>2]&(c|0)>=0|(c|0)>0){break a}Wb(b,H[b+4>>2],H[a+8>>2],H[a+12>>2]);c=H[b+20>>2];if(!!H[b+16>>2]&(c|0)>=0|(c|0)>0){break a}Wb(b,H[b+4>>2],a+20|0,a+24|0);c=H[b+20>>2];f=H[b+16>>2];F[d+15|0]=H[a+4>>2];if(!!f&(c|0)>=0|(c|0)>0){break a}Wb(b,H[b+4>>2],d+15|0,d+16|0)}ca=d+16|0;return(e|0)!=-1|0}function Eh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;a:{b=H[a+8>>2];b:{if((b|0)<0){break b}c=H[a+4>>2];e=H[c>>2];d=H[c+4>>2]-e>>2;c:{if(d>>>0>>0){ue(c,b-d|0);f=H[a+8>>2];break c}f=b;if(b>>>0>=d>>>0){break c}H[c+4>>2]=e+(b<<2);f=b}d=f;if((d|0)<=0){break b}a=H[a+4>>2];c=H[a>>2];e=H[a+4>>2]-c>>2;a=0;while(1){if((a|0)==(e|0)){break a}H[c+(a<<2)>>2]=a;a=a+1|0;if((d|0)!=(a|0)){continue}break}}return(b^-1)>>>31|0}Ca();v()}function qe(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=H[a+8>>2];c=H[a+4>>2];if(e-c>>1>>>0>=b>>>0){if(b){b=b<<1;c=ra(c,0,b)+b|0}H[a+4>>2]=c;return}a:{f=c;c=H[a>>2];g=f-c|0;f=g>>1;d=f+b|0;if((d|0)>=0){e=e-c|0;d=e>>>0>=2147483646?2147483647:d>>>0>>0?e:d;if(d){if((d|0)<0){break a}h=pa(d<<1)}b=b<<1;e=ra((f<<1)+h|0,0,b);f=d<<1;d=va(h,c,g);H[a+8>>2]=f+d;H[a+4>>2]=b+e;H[a>>2]=d;if(c){oa(c)}return}sa();v()}wa();v()}function ng(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=ca-16|0;ca=d;Pe(d,a,b,c);H[a+24>>2]=H[d>>2];e=a+24|0;a:{if((e|0)==(d|0)){break a}b=a+28|0;c=d|4;f=I[d+15|0];g=f<<24>>24;if(F[a+39|0]>=0){if((g|0)>=0){a=H[c+4>>2];H[b>>2]=H[c>>2];H[b+4>>2]=a;H[b+8>>2]=H[c+8>>2];break a}Xb(b,H[d+4>>2],H[d+8>>2]);break a}a=(g|0)<0;Yb(b,a?H[d+4>>2]:c,a?H[d+8>>2]:f)}if(F[d+15|0]<0){oa(H[d+4>>2])}ca=d+16|0;return e|0}function mg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=ca-16|0;ca=d;Oe(d,a,b,c);H[a+24>>2]=H[d>>2];e=a+24|0;a:{if((e|0)==(d|0)){break a}b=a+28|0;c=d|4;f=I[d+15|0];g=f<<24>>24;if(F[a+39|0]>=0){if((g|0)>=0){a=H[c+4>>2];H[b>>2]=H[c>>2];H[b+4>>2]=a;H[b+8>>2]=H[c+8>>2];break a}Xb(b,H[d+4>>2],H[d+8>>2]);break a}a=(g|0)<0;Yb(b,a?H[d+4>>2]:c,a?H[d+8>>2]:f)}if(F[d+15|0]<0){oa(H[d+4>>2])}ca=d+16|0;return e|0}function za(a,b,c){var d=0,e=0,f=0,g=0;e=ca-16|0;ca=e;a:{b:{if(c>>>0<11){d=a;F[a+11|0]=I[a+11|0]&128|c;F[a+11|0]=I[a+11|0]&127;break b}if(c>>>0>2147483631){break a}g=e+8|0;if(c>>>0>=11){f=c+16&-16;d=f-1|0;d=(d|0)==11?f:d}else{d=10}Zb(g,d+1|0);d=H[e+8>>2];H[a>>2]=d;H[a+8>>2]=H[a+8>>2]&-2147483648|H[e+12>>2]&2147483647;H[a+8>>2]=H[a+8>>2]|-2147483648;H[a+4>>2]=c}yb(d,b,c+1|0);ca=e+16|0;return}Na();v()}function Qg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=ca-16|0;ca=d;a:{e=Ma(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){g=(e|15)+1|0;f=pa(g);H[d+8>>2]=g|-2147483648;H[d>>2]=f;H[d+4>>2]=e;g=e+f|0;break c}F[d+11|0]=e;g=d+e|0;f=d;if(!e){break b}}qa(f,c,e)}F[g|0]=0;f=a+16|0;c=$d(b,d,f);b=H[a+16>>2];a=F[a+27|0];if(F[d+11|0]<0){oa(H[d>>2])}ca=d+16|0;a=c?(a|0)<0?b:f:0;break a}Na();v()}return a|0}function Mc(a,b){var c=0,d=0,e=0;c=H[a+4>>2];d=c+b|0;H[a+4>>2]=d;if(!((d-1^c-1)>>>0<32?c:0)){H[H[a>>2]+((d>>>0>=33?d-1>>>5|0:0)<<2)>>2]=0}a:{if(!b){break a}a=H[a>>2]+(c>>>3&536870908)|0;c=c&31;if(c){d=32-c|0;e=b>>>0>d>>>0?d:b;H[a>>2]=H[a>>2]&(-1<>>d-e^-1);b=b-e|0;a=a+4|0}c=b>>>5|0;if(b>>>0>=32){ra(a,0,c<<2)}if((b&-32)==(b|0)){break a}a=(c<<2)+a|0;H[a>>2]=H[a>>2]&(-1>>>32-(b&31)^-1)}}function Fc(a,b,c){var d=0,e=0,f=0;d=H[c+16>>2];a:{if(!d){if(Sd(c)){break a}d=H[c+16>>2]}f=H[c+20>>2];if(d-f>>>0>>0){return ea[H[c+36>>2]](c,a,b)|0}b:{if(H[c+80>>2]<0){d=0;break b}e=b;while(1){d=e;if(!d){d=0;break b}e=d-1|0;if(I[e+a|0]!=10){continue}break}e=ea[H[c+36>>2]](c,a,d)|0;if(e>>>0>>0){break a}a=a+d|0;b=b-d|0;f=H[c+20>>2]}qa(f,a,b);H[c+20>>2]=H[c+20>>2]+b;e=b+d|0}return e}function ad(a){var b=0,c=0,d=0,e=0;if(I[a+76|0]){F[a+76|0]=0;e=H[a+60>>2];c=H[a+72>>2]+7|0;b=c>>>0<7?1:b;d=b<<29|c>>>3;c=d+H[a+56>>2]|0;b=(b>>>3|0)+e|0;H[a+56>>2]=c;H[a+60>>2]=c>>>0>>0?b+1|0:b}if(J[a+38>>1]<=513){F[a+132|0]=0;e=H[a+116>>2];b=0;c=H[a+128>>2]+7|0;b=c>>>0<7?1:b;d=b<<29|c>>>3;c=d+H[a+112>>2]|0;b=(b>>>3|0)+e|0;H[a+112>>2]=c;H[a+116>>2]=c>>>0>>0?b+1|0:b}}function re(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>10){break a}d=H[c+20>>2];f=H[c+12>>2];e=H[c+16>>2];if((d|0)>=(f|0)&e>>>0>=K[c+8>>2]|(d|0)>(f|0)){break a}f=F[e+H[c>>2]|0];e=e+1|0;d=e?d:d+1|0;H[c+16>>2]=e;H[c+20>>2]=d;d=f;b:{if((d|0)<0){if(!re(a+1|0,b,c)){break a}a=H[b>>2];d=d&127|a<<7;a=H[b+4>>2]<<7|a>>>25;break b}d=d&255;a=0}H[b>>2]=d;H[b+4>>2]=a;g=1}return g}function gb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>10){break a}d=H[c+20>>2];f=H[c+12>>2];e=H[c+16>>2];if((d|0)>=(f|0)&e>>>0>=K[c+8>>2]|(d|0)>(f|0)){break a}f=F[e+H[c>>2]|0];e=e+1|0;d=e?d:d+1|0;H[c+16>>2]=e;H[c+20>>2]=d;d=f;b:{if((d|0)<0){if(!gb(a+1|0,b,c)){break a}a=H[b>>2];d=d&127|a<<7;a=H[b+4>>2]<<7|a>>>25;break b}d=d&255;a=0}H[b>>2]=d;H[b+4>>2]=a;g=1}return g}function Nh(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;e=ca+-64|0;ca=e;d=ea[H[H[a>>2]+44>>2]](a,b)|0;a=ea[H[H[a>>2]+40>>2]](a,b)|0;f=Eb(e);g=H[b+56>>2];h=d&255;i=a;a=a-1|0;if(a>>>0<=10){a=H[(a<<2)+13584>>2]}else{a=-1}d=N(a,d);lc(f,g,h,i,0,d,d>>31);a=jc(pa(96),f);mb(a,c);F[a+84|0]=1;H[a+72>>2]=H[a+68>>2];H[a+60>>2]=H[b+60>>2];ca=e- -64|0;return a|0}function If(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(Ya(a,H[b+8>>2],e)){if(!(H[b+28>>2]==1|H[b+4>>2]!=(c|0))){H[b+28>>2]=d}return}a:{if(!Ya(a,H[b>>2],e)){break a}if(!(H[b+16>>2]!=(c|0)&H[b+20>>2]!=(c|0))){if((d|0)!=1){break a}H[b+32>>2]=1;return}H[b+20>>2]=c;H[b+32>>2]=d;H[b+40>>2]=H[b+40>>2]+1;if(!(H[b+36>>2]!=1|H[b+24>>2]!=2)){F[b+54|0]=1}H[b+44>>2]=4}}function Bh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=H[a+32>>2];b=e;h=H[b+8>>2];g=H[b+12>>2];c=H[b+16>>2];b=H[b+20>>2];f=c+4|0;b=f>>>0<4?b+1|0:b;d=0;a:{if(f>>>0>h>>>0&(b|0)>=(g|0)|(b|0)>(g|0)){break a}c=H[e>>2]+c|0;c=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[e+16>>2]=f;H[e+20>>2]=b;d=0;if((c|0)<0){break a}H[H[a+4>>2]+80>>2]=c;d=1}return d|0}function qi(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=11276;b=H[a+48>>2];H[a+48>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}H[a>>2]=13280;b=H[a+20>>2];if(b){H[a+24>>2]=b;oa(b)}d=H[a+8>>2];if(d){c=H[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=H[a+8>>2]}H[a+12>>2]=d;oa(b)}return a|0}function Ee(a,b){var c=0,d=0,e=0,f=0;H[a+144>>2]=b;c=H[(ea[H[H[b>>2]+32>>2]](b)|0)+32>>2];c=H[c>>2]+H[c+16>>2]|0;d=H[(ea[H[H[b>>2]+32>>2]](b)|0)+32>>2];d=H[d+8>>2]-H[d+16>>2]|0;e=a,f=J[H[(ea[H[H[b>>2]+32>>2]](b)|0)+32>>2]+38>>1],G[e+38>>1]=f;H[a>>2]=c;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=d;H[a+12>>2]=0;e=a,f=ea[H[H[b>>2]+36>>2]](b)|0,H[e+148>>2]=f}function Cd(a,b,c,d){F[a+53|0]=1;a:{if(H[a+4>>2]!=(c|0)){break a}F[a+52|0]=1;c=H[a+16>>2];b:{if(!c){H[a+36>>2]=1;H[a+24>>2]=d;H[a+16>>2]=b;if((d|0)!=1){break a}if(H[a+48>>2]==1){break b}break a}if((b|0)==(c|0)){c=H[a+24>>2];if((c|0)==2){H[a+24>>2]=d;c=d}if(H[a+48>>2]!=1){break a}if((c|0)==1){break b}break a}H[a+36>>2]=H[a+36>>2]+1}F[a+54|0]=1}}function pi(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=11276;b=H[a+48>>2];H[a+48>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}H[a>>2]=13280;b=H[a+20>>2];if(b){H[a+24>>2]=b;oa(b)}d=H[a+8>>2];if(d){c=H[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=H[a+8>>2]}H[a+12>>2]=d;oa(b)}oa(a)}function zh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=H[a+32>>2];b=e;g=H[b+8>>2];d=H[b+12>>2];c=H[b+16>>2];b=H[b+20>>2];f=d;d=c+4|0;b=d>>>0<4?b+1|0:b;if((f|0)>=(b|0)&d>>>0<=g>>>0|(b|0)<(f|0)){c=H[e>>2]+c|0;c=I[c|0]|I[c+1|0]<<8|(I[c+2|0]<<16|I[c+3|0]<<24);H[e+16>>2]=d;H[e+20>>2]=b;H[H[a+4>>2]+80>>2]=c}return(b|0)<=(f|0)&d>>>0<=g>>>0|(b|0)<(f|0)}function Mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=ca+-64|0;ca=e;d=1;a:{if(Ya(a,b,0)){break a}d=0;if(!b){break a}b=Ed(b,14972);d=0;if(!b){break a}d=e+8|0;ra(d|4,0,52);H[e+56>>2]=1;H[e+20>>2]=-1;H[e+16>>2]=a;H[e+8>>2]=b;ea[H[H[b>>2]+28>>2]](b,d,H[c>>2],1);a=H[e+32>>2];if((a|0)==1){H[c>>2]=H[e+24>>2]}d=(a|0)==1}ca=e- -64|0;return d|0}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=ca-16|0;ca=d;H[a+4>>2]=b;b=H[b+64>>2];e=H[b>>2];b=H[b+4>>2];F[d+15|0]=0;Oa(a+24|0,(b-e>>2>>>0)/3|0,d+15|0);b=H[a+4>>2];e=H[b+56>>2];b=H[b+52>>2];F[d+14|0]=0;Oa(a+36|0,e-b>>2,d+14|0);b=H[c+12>>2];H[a+16>>2]=H[c+8>>2];H[a+20>>2]=b;b=H[c+4>>2];H[a+8>>2]=H[c>>2];H[a+12>>2]=b;ca=d+16|0}function pc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!b){H[c>>2]=0;return}h=0-I[a+12|0]&255;e=H[a+4>>2];d=H[a+8>>2];i=H[a>>2];while(1){j=f<<1;if(!((e|0)<=0|d>>>0>4095)){e=e-1|0;H[a+4>>2]=e;d=I[e+i|0]|d<<8}g=d&255;f=g>>>0>>0;k=g;g=N(d>>>8|0,h);d=f?k+g|0:d-(h+g|0)|0;H[a+8>>2]=d;f=f|j;b=b-1|0;if(b){continue}break}H[c>>2]=f}function yg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a=ca-16|0;ca=a;f=F[b+24|0];e=H[3411];H[a+8>>2]=H[3410];H[a+12>>2]=e;e=H[3409];H[a>>2]=H[3408];H[a+4>>2]=e;e=Va(b,c,f,a);if(e){b=0;if(f){c=(f&255)<<2;b=pa(c);g=qa(b,a,c)+c|0}c=H[d>>2];if(c){H[d+4>>2]=c;oa(c)}H[d+8>>2]=g;H[d+4>>2]=g;H[d>>2]=b}ca=a+16|0;return e|0}function of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=ea[H[H[a>>2]+24>>2]](a)|0;c=1;a:{if((f|0)<=0){break a}d=H[H[a+36>>2]>>2];g=a+48|0;c=0;if(!(ea[H[H[d>>2]+16>>2]](d,g,b)|0)){break a}while(1){e=e+1|0;if((f|0)!=(e|0)){d=H[H[a+36>>2]+(e<<2)>>2];if(ea[H[H[d>>2]+16>>2]](d,g,b)|0){continue}}break}c=(e|0)>=(f|0)}return c|0}function nf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=ea[H[H[a>>2]+24>>2]](a)|0;c=1;a:{if((f|0)<=0){break a}d=H[H[a+36>>2]>>2];g=a+48|0;c=0;if(!(ea[H[H[d>>2]+20>>2]](d,g,b)|0)){break a}while(1){e=e+1|0;if((f|0)!=(e|0)){d=H[H[a+36>>2]+(e<<2)>>2];if(ea[H[H[d>>2]+20>>2]](d,g,b)|0){continue}}break}c=(e|0)>=(f|0)}return c|0}function _c(a,b){var c=0,d=0;a:{c=H[a+4>>2];d=H[a+8>>2];if((c|0)==d<<5){if((c+1|0)<0){break a}if(c>>>0<=1073741822){d=d<<6;c=(c&-32)+32|0;c=c>>>0>>0?d:c}else{c=2147483647}pb(a,c);c=H[a+4>>2]}H[a+4>>2]=c+1;d=1<>2]+(c>>>3&536870908)|0;if(I[b|0]){H[a>>2]=d|H[a>>2];return}H[a>>2]=H[a>>2]&(d^-1);return}sa();v()}function $h(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=ca-16|0;ca=d;H[a+4>>2]=b;e=H[b>>2];b=H[b+4>>2];F[d+15|0]=0;Oa(a+24|0,(b-e>>2>>>0)/3|0,d+15|0);b=H[a+4>>2];e=H[b+28>>2];b=H[b+24>>2];F[d+14|0]=0;Oa(a+36|0,e-b>>2,d+14|0);b=H[c+12>>2];H[a+16>>2]=H[c+8>>2];H[a+20>>2]=b;b=H[c+4>>2];H[a+8>>2]=H[c>>2];H[a+12>>2]=b;ca=d+16|0}function $b(a){var b=0;H[a>>2]=0;H[a+4>>2]=0;H[a+56>>2]=0;H[a+48>>2]=0;H[a+52>>2]=0;H[a+40>>2]=0;H[a+44>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;b=a- -64|0;H[b>>2]=0;H[b+4>>2]=0;H[a+72>>2]=0;H[a+76>>2]=0;H[a+80>>2]=0;H[a+84>>2]=0;H[a+60>>2]=a;return a}function td(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!td(a+1|0,b,c)){break a}e=d&127|H[b>>2]<<7}H[b>>2]=e;g=1}return g} -function hb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!hb(a+1|0,b,c)){break a}e=d&127|H[b>>2]<<7}H[b>>2]=e;g=1}return g}function Xa(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Xa(a+1|0,b,c)){break a}e=d&127|H[b>>2]<<7}H[b>>2]=e;g=1}return g}function Qe(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Qe(a+1|0,b,c)){break a}e=d&127|H[b>>2]<<7}H[b>>2]=e;g=1}return g}function Pc(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Pc(a+1|0,b,c)){break a}e=d&127|H[b>>2]<<7}H[b>>2]=e;g=1}return g}function Fb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Fb(a+1|0,b,c)){break a}e=d&127|H[b>>2]<<7}H[b>>2]=e;g=1}return g}function Ea(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Ea(a+1|0,b,c)){break a}e=d&127|H[b>>2]<<7}H[b>>2]=e;g=1}return g}function Bb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Bb(a+1|0,b,c)){break a}e=d&127|H[b>>2]<<7}H[b>>2]=e;g=1}return g}function Fa(a,b,c){var d=0,e=0;a:{b:{if(c>>>0>=4){if((a|b)&3){break b}while(1){if(H[a>>2]!=H[b>>2]){break b}b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}}while(1){d=I[a|0];e=I[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c-1|0;if(c){continue}break a}break}return d-e|0}return 0}function Yc(a){var b=0,c=0,d=0,e=0;d=H[a>>2];if(d){e=d;c=H[a+4>>2];if((d|0)!=(c|0)){while(1){e=c-144|0;b=H[e+132>>2];if(b){H[c-8>>2]=b;oa(b)}b=H[c-28>>2];if(b){H[c-24>>2]=b;oa(b)}b=H[c-40>>2];if(b){H[c-36>>2]=b;oa(b)}oc(c-140|0);c=e;if((d|0)!=(c|0)){continue}break}e=H[a>>2]}H[a+4>>2]=d;oa(e)}}function Dg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=H[b+4>>2];a:{if(!d){break a}b=H[H[H[b+8>>2]+(c<<2)>>2]+60>>2];if((b|0)<0){break a}a=H[d+24>>2];c=H[d+28>>2];if((a|0)==(c|0)){break a}b:{while(1){e=H[a>>2];if((b|0)==H[e+24>>2]){break b}a=a+4|0;if((c|0)!=(a|0)){continue}break}e=0}}return e|0}function Zh(a){a=a|0;var b=0;H[a+8>>2]=12384;H[a>>2]=12172;b=H[a+96>>2];if(b){H[a+100>>2]=b;oa(b)}b=H[a+80>>2];if(b){H[a+84>>2]=b;oa(b)}b=H[a+68>>2];if(b){H[a+72>>2]=b;oa(b)}b=H[a+56>>2];if(b){H[a+60>>2]=b;oa(b)}H[a+8>>2]=12620;b=H[a+44>>2];if(b){oa(b)}b=H[a+32>>2];if(b){oa(b)}return a|0}function Uc(a){var b=0,c=0,d=0;if(a){d=H[a+24>>2];if(d){b=d;c=H[a+28>>2];if((b|0)!=(c|0)){while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;if(b){Ra(b+12|0,H[b+16>>2]);Qa(b,H[b+4>>2]);oa(b)}if((c|0)!=(d|0)){continue}break}b=H[a+24>>2]}H[a+28>>2]=d;oa(b)}Ra(a+12|0,H[a+16>>2]);Qa(a,H[a+4>>2]);oa(a)}}function Yh(a){a=a|0;var b=0;H[a+8>>2]=12384;H[a>>2]=12172;b=H[a+96>>2];if(b){H[a+100>>2]=b;oa(b)}b=H[a+80>>2];if(b){H[a+84>>2]=b;oa(b)}b=H[a+68>>2];if(b){H[a+72>>2]=b;oa(b)}b=H[a+56>>2];if(b){H[a+60>>2]=b;oa(b)}H[a+8>>2]=12620;b=H[a+44>>2];if(b){oa(b)}b=H[a+32>>2];if(b){oa(b)}oa(a)}function vi(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=13280;b=H[a+20>>2];if(b){H[a+24>>2]=b;oa(b)}d=H[a+8>>2];if(d){c=H[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=H[a+8>>2]}H[a+12>>2]=d;oa(b)}return a|0}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,i=0;h=H[c+8>>2];e=H[c+16>>2];g=H[c+12>>2];f=g;d=H[c+20>>2];if(h>>>0>e>>>0&(f|0)>=(d|0)|(d|0)<(f|0)){b=I[H[c>>2]+e|0];i=e+1|0;f=i?d:d+1|0;H[c+16>>2]=i;H[c+20>>2]=f;H[a+4>>2]=b}return e>>>0>>0&(d|0)<=(g|0)|(d|0)<(g|0)}function Wc(a){a=a|0;var b=0,c=0,d=0;H[a>>2]=13280;b=H[a+20>>2];if(b){H[a+24>>2]=b;oa(b)}d=H[a+8>>2];if(d){c=H[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=H[c>>2];H[c>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=H[a+8>>2]}H[a+12>>2]=d;oa(b)}oa(a)}function Ya(a,b,c){var d=0;if(!c){return H[a+4>>2]==H[b+4>>2]}if((a|0)==(b|0)){return 1}d=H[a+4>>2];a=I[d|0];c=H[b+4>>2];b=I[c|0];a:{if(!a|(b|0)!=(a|0)){break a}while(1){b=I[c+1|0];a=I[d+1|0];if(!a){break a}c=c+1|0;d=d+1|0;if((a|0)==(b|0)){continue}break}}return(a|0)==(b|0)}function _h(a){a=a|0;var b=0;H[a>>2]=12384;b=H[a+88>>2];if(b){H[a+92>>2]=b;oa(b)}b=H[a+72>>2];if(b){H[a+76>>2]=b;oa(b)}b=H[a+60>>2];if(b){H[a- -64>>2]=b;oa(b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}H[a>>2]=12620;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}return a|0}function Fg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=H[b+12>>2];b=H[b+8>>2];a=0;a:{if((d|0)==(b|0)){break a}a=d-b>>2;d=a>>>0<=1?1:a;a=0;b:{while(1){e=H[b+(a<<2)>>2];if(H[e+60>>2]==(c|0)){break b}a=a+1|0;if((d|0)!=(a|0)){continue}break}a=0;break a}a=(a|0)!=-1?e:0}return a|0}function ae(a,b){var c=0,d=0,e=0;H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;a:{c=H[b+4>>2];d=H[b>>2];b:{if((c|0)==(d|0)){a=c;break b}c=c-d|0;if((c|0)<0){break a}d=c;e=pa(c);c=ra(e,0,c);d=d+c|0;H[a+8>>2]=d;H[a+4>>2]=d;H[a>>2]=c;c=H[b>>2];a=H[b+4>>2]}qa(e,c,a-c|0);return}sa();v()}function ed(a){var b=0,c=0,d=0,e=0;c=H[a+4>>2];d=H[a>>2];if((c|0)!=(d|0)){while(1){e=c-144|0;b=H[e+132>>2];if(b){H[c-8>>2]=b;oa(b)}b=H[c-28>>2];if(b){H[c-24>>2]=b;oa(b)}b=H[c-40>>2];if(b){H[c-36>>2]=b;oa(b)}oc(c-140|0);c=e;if((d|0)!=(c|0)){continue}break}}H[a+4>>2]=d}function Vh(a){a=a|0;var b=0;H[a>>2]=12384;b=H[a+88>>2];if(b){H[a+92>>2]=b;oa(b)}b=H[a+72>>2];if(b){H[a+76>>2]=b;oa(b)}b=H[a+60>>2];if(b){H[a- -64>>2]=b;oa(b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}H[a>>2]=12620;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}oa(a)}function cb(a){var b=0;if(a){b=H[a+76>>2];if(b){H[a+80>>2]=b;oa(b)}b=H[a- -64>>2];if(b){H[a+68>>2]=b;oa(b)}b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}b=H[a+24>>2];if(b){H[a+28>>2]=b;oa(b)}b=H[a+12>>2];if(b){H[a+16>>2]=b;oa(b)}b=H[a>>2];if(b){H[a+4>>2]=b;oa(b)}oa(a)}}function Jd(a,b,c){var d=0,e=0,f=0,g=0;f=ca-16|0;ca=f;d=ca-16|0;ca=d;b=b-a>>2;while(1){if(b){H[d+12>>2]=a;e=b>>>1|0;H[d+12>>2]=H[d+12>>2]+(e<<2);g=(e^-1)+b|0;b=e;e=K[H[d+12>>2]>>2]>2];b=e?g:b;a=e?H[d+12>>2]+4|0:a;continue}break}ca=d+16|0;ca=f+16|0;return a}function oc(a){var b=0;b=H[a+84>>2];if(b){H[a+88>>2]=b;oa(b)}b=H[a+72>>2];if(b){H[a+76>>2]=b;oa(b)}b=H[a+52>>2];if(b){H[a+56>>2]=b;oa(b)}b=H[a+40>>2];if(b){H[a+44>>2]=b;oa(b)}b=H[a+28>>2];if(b){H[a+32>>2]=b;oa(b)}b=H[a+12>>2];if(b){oa(b)}a=H[a>>2];if(a){oa(a)}}function Xc(a,b){var c=0,d=0;d=pa(40);H[d>>2]=-1;c=d+8|0;H[c+16>>2]=0;H[c+20>>2]=0;H[c+8>>2]=0;H[c>>2]=0;H[c+4>>2]=0;H[c+24>>2]=0;H[c+28>>2]=0;ea[H[H[a>>2]+16>>2]](a,d);a=H[b+88>>2];H[b+88>>2]=d;if(a){b=H[a+8>>2];if(b){H[a+12>>2]=b;oa(b)}oa(a)}return 1}function Ma(a){var b=0,c=0,d=0;b=a;a:{if(b&3){while(1){if(!I[b|0]){break a}b=b+1|0;if(b&3){continue}break}}while(1){c=b;b=b+4|0;d=H[c>>2];if(!((d^-1)&d-16843009&-2139062144)){continue}break}while(1){b=c;c=b+1|0;if(I[b|0]){continue}break}}return b-a|0}function Ba(a){var b=0,c=0,d=0,e=0,f=0;d=I[a+12|0];c=H[a+8>>2];a:{if(c>>>0>4095){break a}b=H[a+4>>2];if((b|0)<=0){break a}b=b-1|0;H[a+4>>2]=b;c=I[b+H[a>>2]|0]|c<<8}d=0-d&255;b=N(d,c>>>8|0);e=c&255;f=e>>>0>>0;H[a+8>>2]=f?b+e|0:c-(b+d|0)|0;return f}function od(a,b){H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=1984;H[a+12>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;H[a+32>>2]=0;H[a+36>>2]=0;H[a+40>>2]=0;H[a>>2]=2328;H[a+60>>2]=b;H[a+44>>2]=0;H[a+48>>2]=0;H[a+52>>2]=0;H[a+56>>2]=0;return a}function mc(a,b){var c=0,d=0,e=0;c=Ma(b);if(c>>>0<2147483632){a:{b:{if(c>>>0>=11){d=(c|15)+1|0;e=pa(d);H[a+8>>2]=d|-2147483648;H[a>>2]=e;H[a+4>>2]=c;d=c+e|0;break b}F[a+11|0]=c;d=a+c|0;e=a;if(!c){break a}}va(e,b,c)}F[d|0]=0;return a}Na();v()}function Ng(a){a=a|0;var b=0,c=0,d=0;if(a){if(F[a+27|0]<0){oa(H[a+16>>2])}b=H[a>>2];if(b){c=b;d=H[a+4>>2];if((b|0)!=(d|0)){while(1){c=d-12|0;if(F[d-1|0]<0){oa(H[c>>2])}d=c;if((d|0)!=(b|0)){continue}break}c=H[a>>2]}H[a+4>>2]=b;oa(c)}oa(a)}}function Jb(a,b){var c=0,d=0,e=0;a:{c=H[a>>2];b:{if(H[a+8>>2]-c>>2>>>0>=b>>>0){break b}if(b>>>0>=1073741824){break a}d=H[a+4>>2]-c|0;e=b<<2;b=va(pa(e),c,d);H[a+8>>2]=b+e;H[a+4>>2]=b+d;H[a>>2]=b;if(!c){break b}oa(c)}return}sa();v()}function Ga(a){a=a|0;var b=0,c=0;if(a){b=H[a+88>>2];H[a+88>>2]=0;if(b){c=H[b+8>>2];if(c){H[b+12>>2]=c;oa(c)}oa(b)}b=H[a+68>>2];if(b){H[a+72>>2]=b;oa(b)}b=H[a+64>>2];H[a+64>>2]=0;if(b){c=H[b>>2];if(c){H[b+4>>2]=c;oa(c)}oa(b)}oa(a)}}function Nd(a){var b=0,c=0,d=0;if(F[H[a>>2]]-48>>>0>=10){return 0}while(1){d=H[a>>2];c=-1;if(b>>>0<=214748364){c=F[d|0]-48|0;b=N(b,10);c=(c|0)>(b^2147483647)?-1:c+b|0}H[a>>2]=d+1;b=c;if(F[d+1|0]-48>>>0<10){continue}break}return b}function Cg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=H[b+96>>2];a=pa(12);b=b+N(c,12)|0;c=H[b+4>>2];H[a>>2]=H[b>>2];H[a+4>>2]=c;H[a+8>>2]=H[b+8>>2];b=H[d>>2];if(b){H[d+4>>2]=b;oa(b)}H[d>>2]=a;a=a+12|0;H[d+8>>2]=a;H[d+4>>2]=a;return 1}function Ai(a){a=a|0;var b=0;H[a+24>>2]=1832;H[a>>2]=11048;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}H[a>>2]=2448;b=H[a+20>>2];H[a+20>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}H[a>>2]=2232;b=H[a+16>>2];H[a+16>>2]=0;if(b){Ga(b)}return a|0}function Sj(a,b,c,d){var e=0,f=0,g=0,h=0;f=b^d;g=f>>31;e=b>>31;a=a^e;h=a-e|0;e=(b^e)-((a>>>0>>0)+e|0)|0;a=d>>31;b=c^a;f=f>>31;a=Tj(h,e,b-a|0,(a^d)-((a>>>0>b>>>0)+a|0)|0)^f;b=a-f|0;da=(g^da)-((a>>>0>>0)+g|0)|0;return b}function yi(a){a=a|0;var b=0;H[a+24>>2]=1832;H[a>>2]=11048;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}H[a>>2]=2448;b=H[a+20>>2];H[a+20>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}H[a>>2]=2232;b=H[a+16>>2];H[a+16>>2]=0;if(b){Ga(b)}oa(a)}function Yb(a,b,c){var d=0,e=0,f=0;e=ca-16|0;ca=e;d=H[a+8>>2]&2147483647;a:{if(d>>>0>c>>>0){d=H[a>>2];H[a+4>>2]=c;yb(d,b,c);F[e+15|0]=0;F[c+d|0]=I[e+15|0];break a}f=a;a=H[a+4>>2];Gd(f,d-1|0,(c-d|0)+1|0,a,a,c,b)}ca=e+16|0}function Bf(a,b){a=a|0;b=b|0;var c=0,d=0;c=ca-16|0;ca=c;a=H[a+4>>2];a:{if((a|0)==-1){break a}F[c+15|0]=a;d=H[b+20>>2];if(!!H[b+16>>2]&(d|0)>=0|(d|0)>0){break a}Wb(b,H[b+4>>2],c+15|0,c+16|0)}ca=c+16|0;return(a|0)!=-1|0}function Xb(a,b,c){var d=0,e=0;d=ca-16|0;ca=d;a:{if(c>>>0<=10){F[a+11|0]=I[a+11|0]&128|c;F[a+11|0]=I[a+11|0]&127;yb(a,b,c);F[d+15|0]=0;F[a+c|0]=I[d+15|0];break a}e=a;a=I[a+11|0]&127;Gd(e,10,c-10|0,a,a,c,b)}ca=d+16|0}function Rj(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=N(e,f);g=c&65535;h=a&65535;i=N(g,h);f=(i>>>16|0)+N(f,g)|0;e=(f&65535)+N(e,h)|0;da=(N(b,c)+j|0)+N(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function Dd(a,b,c){var d=0;d=H[a+16>>2];if(!d){H[a+36>>2]=1;H[a+24>>2]=c;H[a+16>>2]=b;return}a:{if((b|0)==(d|0)){if(H[a+24>>2]!=2){break a}H[a+24>>2]=c;return}F[a+54|0]=1;H[a+24>>2]=2;H[a+36>>2]=H[a+36>>2]+1}}function th(){var a=0;a=Eb(pa(96));H[a+64>>2]=0;H[a+68>>2]=0;H[a+88>>2]=0;H[a+72>>2]=0;H[a+76>>2]=0;F[a+77|0]=0;F[a+78|0]=0;F[a+79|0]=0;F[a+80|0]=0;F[a+81|0]=0;F[a+82|0]=0;F[a+83|0]=0;F[a+84|0]=0;return a|0}function zi(a,b){a=a|0;b=b|0;var c=0,d=0;H[b>>2]=2;c=H[b+8>>2];d=H[b+12>>2]-c|0;if(d>>>0<=4294967291){kc(b+8|0,d+4|0);c=H[b+8>>2]}b=c+d|0;a=H[a+4>>2];F[b|0]=a;F[b+1|0]=a>>>8;F[b+2|0]=a>>>16;F[b+3|0]=a>>>24}function rj(a){a=a|0;var b=0;H[a>>2]=5580;b=H[a+96>>2];if(b){oa(b)}b=H[a+84>>2];if(b){oa(b)}b=H[a+72>>2];if(b){oa(b)}b=H[a+60>>2];if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function ib(a,b,c,d,e){var f=0;f=ca-256|0;ca=f;if(!(e&73728|(c|0)<=(d|0))){d=c-d|0;c=d>>>0<256;ra(f,b&255,c?d:256);if(!c){while(1){Ab(a,f,256);d=d-256|0;if(d>>>0>255){continue}break}}Ab(a,f,d)}ca=f+256|0}function Ij(a){a=a|0;var b=0;H[a>>2]=3564;b=H[a+96>>2];if(b){oa(b)}b=H[a+84>>2];if(b){oa(b)}b=H[a+72>>2];if(b){oa(b)}b=H[a+60>>2];if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function Ch(a){a=a|0;var b=0,c=0,d=0;b=H[a+8>>2];d=H[a+12>>2];if((b|0)==(d|0)){return 1}while(1){c=H[b>>2];c=ea[H[H[c>>2]+16>>2]](c,H[a+32>>2])|0;if(c){b=b+4|0;if((d|0)!=(b|0)){continue}}break}return c|0}function Yd(a,b){var c=0,d=0;c=H[a+8>>2];a=H[a+12>>2];if((c|0)!=(a|0)){a=a-c>>2;d=a>>>0<=1?1:a;a=0;while(1){if(H[H[(a<<2)+c>>2]+60>>2]==(b|0)){return a}a=a+1|0;if((d|0)!=(a|0)){continue}break}}return-1}function qj(a){a=a|0;var b=0;H[a>>2]=5580;b=H[a+96>>2];if(b){oa(b)}b=H[a+84>>2];if(b){oa(b)}b=H[a+72>>2];if(b){oa(b)}b=H[a+60>>2];if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function Hj(a){a=a|0;var b=0;H[a>>2]=3564;b=H[a+96>>2];if(b){oa(b)}b=H[a+84>>2];if(b){oa(b)}b=H[a+72>>2];if(b){oa(b)}b=H[a+60>>2];if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function $d(a,b,c){var d=0,e=0;d=a+4|0;a=nb(a,b);a:{if((d|0)==(a|0)){break a}b=H[a+32>>2];d=H[a+28>>2];if((b|0)==(d|0)){break a}Cc(c,b-d|0);c=Dc(c);b=H[a+28>>2];qa(c,b,H[a+32>>2]-b|0);e=1}return e}function Qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=ca-16|0;ca=e;a=_(H[a+60>>2],b|0,c|0,d&255,e+8|0)|0;if(a){H[3992]=a;a=-1}else{a=0}ca=e+16|0;da=a?-1:H[e+12>>2];return(a?-1:H[e+8>>2])|0}function Sd(a){var b=0;b=H[a+72>>2];H[a+72>>2]=b-1|b;b=H[a>>2];if(b&8){H[a>>2]=b|32;return-1}H[a+4>>2]=0;H[a+8>>2]=0;b=H[a+44>>2];H[a+28>>2]=b;H[a+20>>2]=b;H[a+16>>2]=b+H[a+48>>2];return 0}function Eb(a){H[a+8>>2]=0;H[a+12>>2]=0;H[a>>2]=0;H[a+40>>2]=0;H[a+44>>2]=0;H[a+28>>2]=9;F[a+24|0]=1;H[a+56>>2]=-1;H[a+60>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+48>>2]=0;H[a+52>>2]=0;return a}function hf(a,b){a=a|0;b=b|0;var c=0,d=0;d=H[a+16>>2];c=0;a:{if(H[a+20>>2]-d>>2<=(b|0)){break a}b=H[(b<<2)+d>>2];c=0;if((b|0)<0){break a}c=rb(H[H[a+36>>2]+(b<<2)>>2])}return c|0}function Mg(){var a=0,b=0;a=pa(40);H[a+4>>2]=0;H[a+8>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;b=a+16|0;H[b>>2]=0;H[b+4>>2]=0;H[a>>2]=a+4;H[a+12>>2]=b;H[a+32>>2]=0;H[a+36>>2]=0;return a|0}function Vf(a,b){a=a|0;b=b|0;var c=0,d=0;Wd(a,b);a:{if((b|0)<0){break a}d=H[a+88>>2];c=H[a+84>>2];if(d-c>>2<=(b|0)){break a}c=(b<<2)+c|0;b=c+4|0;va(c,b,d-b|0);H[a+88>>2]=d-4}}function Rh(a){a=a|0;var b=0;H[a+8>>2]=12804;H[a>>2]=12640;b=H[a+56>>2];if(b){H[a+60>>2]=b;oa(b)}H[a+8>>2]=12620;b=H[a+44>>2];if(b){oa(b)}b=H[a+32>>2];if(b){oa(b)}return a|0}function Lh(a){a=a|0;var b=0;H[a+8>>2]=11872;H[a>>2]=12932;b=H[a+56>>2];if(b){H[a+60>>2]=b;oa(b)}H[a+8>>2]=12124;b=H[a+44>>2];if(b){oa(b)}b=H[a+32>>2];if(b){oa(b)}return a|0}function zb(a){var b=0,c=0;b=H[3958];c=a+7&-8;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>fa()<<16>>>0){if(!($(a|0)|0)){break a}}H[3958]=a;return b}H[3992]=48;return-1}function bj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;H[a+4>>2]=b;b=H[H[H[b+4>>2]+8>>2]+(c<<2)>>2];H[a+12>>2]=c;H[a+8>>2]=b;a=H[a+8>>2];if(I[a+24|0]==3){d=H[a+28>>2]==9}return d|0}function wf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=H[a+8>>2];a:{if(!I[d+24|0]){break a}if(!mb(d,H[b+4>>2]-H[b>>2]>>2)){break a}e=ea[H[H[a>>2]+32>>2]](a,b,c)|0}return e|0}function Qh(a){a=a|0;var b=0;H[a+8>>2]=12804;H[a>>2]=12640;b=H[a+56>>2];if(b){H[a+60>>2]=b;oa(b)}H[a+8>>2]=12620;b=H[a+44>>2];if(b){oa(b)}b=H[a+32>>2];if(b){oa(b)}oa(a)}function Kh(a){a=a|0;var b=0;H[a+8>>2]=11872;H[a>>2]=12932;b=H[a+56>>2];if(b){H[a+60>>2]=b;oa(b)}H[a+8>>2]=12124;b=H[a+44>>2];if(b){oa(b)}b=H[a+32>>2];if(b){oa(b)}oa(a)}function nj(a){a=a|0;var b=0;H[a>>2]=5816;b=H[a+76>>2];if(b){oa(b)}b=H[a+68>>2];H[a+68>>2]=0;if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function Ra(a,b){if(b){Ra(a,H[b>>2]);Ra(a,H[b+4>>2]);a=H[b+28>>2];H[b+28>>2]=0;if(a){Ra(a+12|0,H[a+16>>2]);Qa(a,H[a+4>>2]);oa(a)}if(F[b+27|0]<0){oa(H[b+16>>2])}oa(b)}}function Gi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;H[a+4>>2]=b;d=H[H[H[b+4>>2]+8>>2]+(c<<2)>>2];H[a+12>>2]=c;H[a+8>>2]=d;return H[H[H[H[b+4>>2]+8>>2]+(c<<2)>>2]+28>>2]==9|0}function Ej(a){a=a|0;var b=0;H[a>>2]=3812;b=H[a+76>>2];if(b){oa(b)}b=H[a+68>>2];H[a+68>>2]=0;if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function Vc(a){H[a+40>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;H[a>>2]=13280;H[a+12>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;H[a+32>>2]=0;G[a+36>>1]=0;return a}function Hd(a,b){var c=0,d=0,e=0,f=0;H[a>>2]=15260;H[a>>2]=15372;c=Ma(b);d=pa(c+13|0);H[d+8>>2]=0;H[d+4>>2]=c;H[d>>2]=c;e=a,f=qa(d+12|0,b,c+1|0),H[e+4>>2]=f;return a}function jg(a,b){a=a|0;b=b|0;var c=0;a:{if(!(ea[H[H[a>>2]+36>>2]](a,b)|0)){break a}if(!(ea[H[H[a>>2]+40>>2]](a,b)|0)){break a}c=ea[H[H[a>>2]+44>>2]](a)|0}return c|0}function mj(a){a=a|0;var b=0;H[a>>2]=5816;b=H[a+76>>2];if(b){oa(b)}b=H[a+68>>2];H[a+68>>2]=0;if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function Dj(a){a=a|0;var b=0;H[a>>2]=3812;b=H[a+76>>2];if(b){oa(b)}b=H[a+68>>2];H[a+68>>2]=0;if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function Xe(a){a=a|0;var b=0;a:{if(!H[a- -64>>2]|!H[a+68>>2]|(!H[a+44>>2]|!H[a+48>>2])){break a}if(!H[a+52>>2]|!H[a+56>>2]){break a}b=H[a+92>>2]!=-1}return b|0}function cf(a){a=a|0;var b=0;H[a>>2]=2448;b=H[a+20>>2];H[a+20>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}H[a>>2]=2232;b=H[a+16>>2];H[a+16>>2]=0;if(b){Ga(b)}return a|0}function Pj(a,b){a=a|0;b=b|0;var c=0;b=H[b+88>>2];if(!(!b|H[b>>2]!=2)){c=a;a=H[b+8>>2];H[c+4>>2]=I[a|0]|I[a+1|0]<<8|(I[a+2|0]<<16|I[a+3|0]<<24);c=1}return c|0}function tc(a){a=a|0;var b=0;a:{if(!H[a+48>>2]|!H[a+52>>2]|(!H[a+28>>2]|!H[a+32>>2])){break a}if(!H[a+36>>2]|!H[a+40>>2]){break a}b=H[a+76>>2]!=-1}return b|0}function Sh(a){a=a|0;var b=0;H[a>>2]=12804;b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}H[a>>2]=12620;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}return a|0}function He(a){a=a|0;var b=0;H[a>>2]=11872;b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}H[a>>2]=12124;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}return a|0}function bf(a){a=a|0;var b=0;H[a>>2]=2448;b=H[a+20>>2];H[a+20>>2]=0;if(b){ea[H[H[b>>2]+4>>2]](b)}H[a>>2]=2232;b=H[a+16>>2];H[a+16>>2]=0;if(b){Ga(b)}oa(a)}function wh(){var a=0,b=0;b=pa(40);H[b>>2]=-1;a=b+8|0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a>>2]=0;H[a+4>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;return b|0}function gf(a,b){a=a|0;b=b|0;var c=0,d=0;d=H[a+4>>2];a:{if(d){c=1;if(I[d+36|0]<2){break a}}c=ea[H[H[a>>2]+48>>2]](a,H[b+4>>2]-H[b>>2]>>2)|0}return c|0}function ci(a){a=a|0;var b=0;H[a>>2]=11872;b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}H[a>>2]=12124;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}oa(a)}function Mh(a){a=a|0;var b=0;H[a>>2]=12804;b=H[a+48>>2];if(b){H[a+52>>2]=b;oa(b)}H[a>>2]=12620;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}oa(a)}function Ha(a){H[a+8>>2]=0;H[a+12>>2]=0;H[a>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+32>>2]=0;H[a+24>>2]=0;H[a+28>>2]=0;G[a+38>>1]=0;F[a+36|0]=0;return a}function Hf(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(Ya(a,H[b+8>>2],f)){Cd(b,c,d,e);return}a=H[a+8>>2];ea[H[H[a>>2]+20>>2]](a,b,c,d,e,f)}function Ei(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(I[H[a+4>>2]+36|0]>=2){b=0;if(!(ea[H[H[a>>2]+52>>2]](a)|0)){break a}}b=Xc(a+24|0,H[a+16>>2])}return b|0}function Fi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(I[H[a+4>>2]+36|0]<=1){d=0;if(!(ea[H[H[a>>2]+52>>2]](a)|0)){break a}}d=nd(a,b,c)}return d|0}function gh(){var a=0;a=_d(pa(108));H[a+84>>2]=0;H[a+88>>2]=0;H[a>>2]=13664;H[a+92>>2]=0;H[a+96>>2]=0;H[a+100>>2]=0;H[a+104>>2]=0;return a|0}function Zd(a,b){var c=0;c=-1;a:{if((b|0)==-1|(b|0)>4){break a}b=N(b,12)+a|0;a=H[b+20>>2];if((H[b+24>>2]-a|0)<=0){break a}c=H[a>>2]}return c}function lc(a,b,c,d,e,f,g){H[a>>2]=0;H[a+56>>2]=b;H[a+48>>2]=0;H[a+52>>2]=0;H[a+40>>2]=f;H[a+44>>2]=g;F[a+32|0]=e;H[a+28>>2]=d;F[a+24|0]=c}function aj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;a:{if(I[H[a+4>>2]+36|0]<=1){d=0;if(!xc(a+24|0,H[a+8>>2],c)){break a}}d=nd(a,b,c)}return d|0}function $i(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(I[H[a+4>>2]+36|0]>=2){b=0;if(!xc(a+24|0,rb(a),c)){break a}}b=Xc(a+24|0,H[a+16>>2])}return b|0}function Yf(a){a=a|0;var b=0;H[a>>2]=13664;b=H[a+96>>2];if(b){H[a+100>>2]=b;oa(b)}b=H[a+84>>2];if(b){H[a+88>>2]=b;oa(b)}return _b(a)|0}function Dc(a){var b=0;if(I[a+11|0]>>>7|0){b=H[a+4>>2]}else{b=I[a+11|0]&127}if(!b){af(1232);v()}if(I[a+11|0]>>>7|0){a=H[a>>2]}return a}function Xf(a){a=a|0;var b=0;H[a>>2]=13664;b=H[a+96>>2];if(b){H[a+100>>2]=b;oa(b)}b=H[a+84>>2];if(b){H[a+88>>2]=b;oa(b)}oa(_b(a))}function zj(a){a=a|0;var b=0;H[a>>2]=4040;b=H[a+76>>2];if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function jj(a){a=a|0;var b=0;H[a>>2]=6032;b=H[a+76>>2];if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function Qa(a,b){if(b){Qa(a,H[b>>2]);Qa(a,H[b+4>>2]);a=H[b+28>>2];if(a){H[b+32>>2]=a;oa(a)}if(F[b+27|0]<0){oa(H[b+16>>2])}oa(b)}}function Vg(){var a=0;a=pa(28);H[a>>2]=0;H[a+4>>2]=0;H[a+24>>2]=0;H[a+16>>2]=0;H[a+20>>2]=0;H[a+8>>2]=0;H[a+12>>2]=0;return a|0}function wg(a){a=a|0;var b=0;H[a>>2]=1984;b=H[a+16>>2];if(b){H[a+20>>2]=b;oa(b)}b=H[a+4>>2];if(b){H[a+8>>2]=b;oa(b)}return a|0}function eh(){var a=0,b=0;a=pa(24);H[a+4>>2]=0;H[a+8>>2]=0;b=a+16|0;H[b>>2]=0;H[b+4>>2]=0;H[a>>2]=a+4;H[a+12>>2]=b;return a|0}function Kf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(Ya(a,H[b+8>>2],0)){Dd(b,c,d);return}a=H[a+8>>2];ea[H[H[a>>2]+28>>2]](a,b,c,d)}function yj(a){a=a|0;var b=0;H[a>>2]=4040;b=H[a+76>>2];if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function ij(a){a=a|0;var b=0;H[a>>2]=6032;b=H[a+76>>2];if(b){oa(b)}H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function pa(a){var b=0;a=a?a:1;a:{while(1){b=Ec(a);if(b){break a}b=H[4422];if(b){ea[b|0]();continue}break}X();v()}return b}function Kb(a,b){if(b){Kb(a,H[b>>2]);Kb(a,H[b+4>>2]);if(F[b+39|0]<0){oa(H[b+28>>2])}if(F[b+27|0]<0){oa(H[b+16>>2])}oa(b)}}function Ad(a){a=a|0;var b=0,c=0;H[a>>2]=15372;b=H[a+4>>2]-12|0;c=H[b+8>>2]-1|0;H[b+8>>2]=c;if((c|0)<0){oa(b)}return a|0}function lh(){var a=0;a=pa(24);H[a+8>>2]=0;H[a+12>>2]=0;H[a+4>>2]=-1;H[a>>2]=1832;H[a+16>>2]=0;H[a+20>>2]=0;return a|0}function pd(a,b,c){a=a|0;b=b|0;c=c|0;H[a+4>>2]=b;b=H[H[H[b+4>>2]+8>>2]+(c<<2)>>2];H[a+12>>2]=c;H[a+8>>2]=b;return 1}function wc(a){a=a|0;var b=0;if(!(!H[a+60>>2]|!H[a+44>>2]|(!H[a+48>>2]|!H[a+52>>2]))){b=H[a+56>>2]!=0}return b|0}function Id(a,b){if(I[a+11|0]>>>7|0){H[a+4>>2]=b;return}F[a+11|0]=I[a+11|0]&128|b;F[a+11|0]=I[a+11|0]&127}function wj(a){a=a|0;var b=0;H[a>>2]=4276;H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function fj(a){a=a|0;var b=0;H[a>>2]=6256;H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function bi(a){a=a|0;var b=0;H[a>>2]=12124;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}return a|0}function Uh(a){a=a|0;var b=0;H[a>>2]=12620;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}return a|0}function lg(a){a=a|0;if(a){if(F[a+39|0]<0){oa(H[a+28>>2])}Oc(a+12|0,H[a+16>>2]);Kb(a,H[a+4>>2]);oa(a)}}function Pb(a){a=a|0;var b=0;if(!(!H[a+52>>2]|(!H[a+44>>2]|!H[a+48>>2]))){b=H[a+56>>2]!=0}return b|0}function vj(a){a=a|0;var b=0;H[a>>2]=4276;H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function vc(a,b){a=a|0;b=b|0;var c=0;if(!(H[b+56>>2]|!b|I[b+24|0]!=3)){H[a+60>>2]=b;c=1}return c|0}function ej(a){a=a|0;var b=0;H[a>>2]=6256;H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function ai(a){a=a|0;var b=0;H[a>>2]=12124;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}oa(a)}function Th(a){a=a|0;var b=0;H[a>>2]=12620;b=H[a+36>>2];if(b){oa(b)}b=H[a+24>>2];if(b){oa(b)}oa(a)}function xh(a,b,c){a=a|0;b=b|0;c=c|0;H[a+16>>2]=0;H[a+20>>2]=0;H[a>>2]=b;H[a+8>>2]=c;H[a+12>>2]=0}function We(a,b){a=a|0;b=b|0;var c=0;if(!(H[b+56>>2]|I[b+24|0]!=3)){H[a- -64>>2]=b;c=1}return c|0}function yc(a){var b=0;b=H[a+16>>2];if(b){H[a+20>>2]=b;oa(b)}b=H[a>>2];if(b){H[a+4>>2]=b;oa(b)}}function sc(a,b){a=a|0;b=b|0;var c=0;if(!(H[b+56>>2]|I[b+24|0]!=3)){H[a+48>>2]=b;c=1}return c|0}function Gf(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(Ya(a,H[b+8>>2],f)){Cd(b,c,d,e)}}function wa(){var a=0;a=Bc(4);H[a>>2]=15260;H[a>>2]=15220;H[a>>2]=15240;Y(a|0,15352,14);v()}function sf(a){a=a|0;var b=0;H[a>>2]=2232;b=H[a+16>>2];H[a+16>>2]=0;if(b){Ga(b)}return a|0}function Kj(a){a=a|0;var b=0;H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}return a|0}function mi(a){a=a|0;var b=0;H[a>>2]=1832;b=H[a+8>>2];if(b){H[a+12>>2]=b;oa(b)}return a|0}function Ci(a){a=a|0;var b=0;b=rb(a);return Je(a+24|0,b?b:H[a+8>>2],H[H[a+4>>2]+32>>2])|0}function rf(a){a=a|0;var b=0;H[a>>2]=2232;b=H[a+16>>2];H[a+16>>2]=0;if(b){Ga(b)}oa(a)}function ji(a){a=a|0;var b=0;H[a>>2]=1832;b=H[a+8>>2];if(b){H[a+12>>2]=b;oa(b)}oa(a)} -function Ub(a){a=a|0;var b=0;H[a>>2]=3272;b=H[a+32>>2];if(b){H[a+36>>2]=b;oa(b)}oa(a)}function Za(a){var b=0;H[a+16>>2]=0;b=H[a>>2];H[a+4>>2]=b;H[a+12>>2]=b;if(b){oa(b)}}function Oc(a,b){if(b){Oc(a,H[b>>2]);Oc(a,H[b+4>>2]);Kb(b+20|0,H[b+24>>2]);oa(b)}}function wi(a){a=a|0;if(!H[a+44>>2]){return 0}return ea[H[H[a>>2]+48>>2]](a)|0}function vh(a){a=a|0;var b=0;if(a){b=H[a+8>>2];if(b){H[a+12>>2]=b;oa(b)}oa(a)}}function Uj(a){var b=0;while(1){if(a){a=a-1&a;b=b+1|0;continue}break}return b}function Lf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(Ya(a,H[b+8>>2],0)){Dd(b,c,d)}}function ui(a,b){a=a|0;b=b|0;a=H[a+48>>2];return ea[H[H[a>>2]+20>>2]](a,b)|0}function ni(a,b){a=a|0;b=b|0;a=H[a+48>>2];return ea[H[H[a>>2]+12>>2]](a,b)|0}function li(a,b){a=a|0;b=b|0;a=H[a+48>>2];return ea[H[H[a>>2]+16>>2]](a,b)|0}function lb(){var a=0;a=pa(12);H[a>>2]=0;H[a+4>>2]=0;H[a+8>>2]=0;return a|0}function kb(a){a=a|0;var b=0;if(a){b=H[a>>2];if(b){H[a+4>>2]=b;oa(b)}oa(a)}}function Vj(a){var b=0;b=a&31;a=0-a&31;return(-1>>>b&-2)<>>a} -function dh(a,b,c){a=a|0;b=b|0;c=c|0;H[a+32>>2]=c;H[a+28>>2]=b;return 1}function ch(a){a=a|0;if(a){Ra(a+12|0,H[a+16>>2]);Qa(a,H[a+4>>2]);oa(a)}}function Rd(a,b,c){a:{if(H[c+76>>2]<0){a=Fc(a,b,c);break a}a=Fc(a,b,c)}}function Mb(a,b){a=a|0;b=b|0;if(b>>>0<=1){H[a+28>>2]=b}return b>>>0<2|0}function Fh(a,b){a=a|0;b=b|0;F[b+84|0]=1;H[b+72>>2]=H[b+68>>2];return 1}function si(a){a=a|0;a=H[a+48>>2];return ea[H[H[a>>2]+24>>2]](a)|0}function ri(a){a=a|0;a=H[a+48>>2];return ea[H[H[a>>2]+28>>2]](a)|0}function oi(a){a=a|0;a=H[a+48>>2];return ea[H[H[a>>2]+36>>2]](a)|0}function ih(){var a=0;a=pa(8);H[a+4>>2]=-1;H[a>>2]=1032;return a|0}function Gg(a,b,c){a=a|0;b=b|0;c=c|0;return H[H[b+8>>2]+(c<<2)>>2]}function _i(a,b){a=a|0;b=b|0;return Fd(a+24|0,rb(a),H[a+8>>2])|0}function Bi(a,b){a=a|0;b=b|0;return Re(a+24|0,rb(a),H[a+8>>2])|0}function xf(a,b){a=a|0;b=b|0;H[a+12>>2]=-1;H[a+8>>2]=b;return 1}function ne(a,b){a=a|0;b=b|0;return ea[H[H[a>>2]+12>>2]](a,b)|0}function Ff(a){a=a|0;if(!a){return 0}return(Ed(a,15068)|0)!=0|0}function Di(a,b){a=a|0;b=b|0;return ea[H[H[a>>2]+56>>2]](a,b)|0}function $g(a){a=a|0;if(a){if(F[a+15|0]<0){oa(H[a+4>>2])}oa(a)}}function kh(a,b){a=a|0;b=b|0;return O(L[H[a+8>>2]+(b<<2)>>2])}function af(a){a=Hd(Bc(8),a);H[a>>2]=15472;Y(a|0,15504,1);v()}function Ue(a){a=Hd(Bc(8),a);H[a>>2]=15420;Y(a|0,15452,1);v()}function _g(a,b){a=a|0;b=b|0;return O(L[H[a>>2]+(b<<2)>>2])}function fh(a){a=a|0;return(H[a+100>>2]-H[a+96>>2]|0)/12|0}function ah(a){a=a|0;return(F[a+15|0]<0?H[a+4>>2]:a+4|0)|0}function _f(a,b){a=a|0;b=b|0;return H[H[a+4>>2]+(b<<2)>>2]}function Pf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;da=0;return 0}function Ke(a){a=Vc(a);H[a+44>>2]=0;H[a>>2]=11180;return a}function ie(a,b){a=a|0;b=b|0;return H[H[a>>2]+(b<<2)>>2]}function Xg(a,b){a=a|0;b=b|0;return G[H[a>>2]+(b<<1)>>1]}function Wg(a,b){a=a|0;b=b|0;return J[H[a>>2]+(b<<1)>>1]}function Zb(a,b){var c=0;c=pa(b);H[a+4>>2]=b;H[a>>2]=c}function Jg(a,b,c){a=a|0;b=b|0;c=c|0;return Zd(b,c)|0}function _d(a){H[a>>2]=13724;ra(a+4|0,0,80);return a}function me(a){a=a|0;return H[a+12>>2]-H[a+8>>2]>>2}function Qj(a){if(a){return 31-Q(a-1^a)|0}return 32}function cc(a){a=a|0;if(a){ea[H[H[a>>2]+4>>2]](a)}}function Zg(a,b){a=a|0;b=b|0;return F[H[a>>2]+b|0]}function Yg(a,b){a=a|0;b=b|0;return I[H[a>>2]+b|0]}function Uf(a){a=a|0;return H[a+8>>2]-H[a+4>>2]>>2}function jd(a,b){a=a|0;b=b|0;H[a+4>>2]=b;return 1}function je(a){a=a|0;return H[a+4>>2]-H[a>>2]>>1}function Qc(a){a=a|0;return H[a+4>>2]-H[a>>2]>>2}function le(a){a=a|0;return H[a+4>>2]-H[a>>2]|0}function Ab(a,b,c){if(!(I[a|0]&32)){Fc(b,c,a)}}function vf(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function hi(a,b){a=a|0;b=b|0;return I[b+24|0]}function Pg(a,b){a=a|0;b=b|0;return H[b+8>>2]}function Nj(a){a=a|0;return I[H[a+8>>2]+24|0]}function Li(a){a=a|0;H[a>>2]=10032;return a|0}function Eg(a,b){a=a|0;b=b|0;return H[b+4>>2]}function Yi(a){a=a|0;H[a>>2]=7144;return a|0}function Ui(a){a=a|0;H[a>>2]=8080;return a|0}function Sf(a){a=a|0;return aa(H[a+60>>2])|0}function Pi(a){a=a|0;H[a>>2]=9028;return a|0}function jh(a){a=a|0;return O(L[a+20>>2])}function Ji(a){a=a|0;H[a>>2]=10032;oa(a)}function Xi(a){a=a|0;H[a>>2]=7144;oa(a)}function Si(a){a=a|0;H[a>>2]=8080;oa(a)}function Oi(a){a=a|0;H[a>>2]=9028;oa(a)}function sh(a){a=a|0;return H[a+88>>2]}function rh(a){a=a|0;return H[a+56>>2]}function oh(a){a=a|0;return H[a+40>>2]}function nh(a){a=a|0;return H[a+48>>2]}function mh(a){a=a|0;return H[a+60>>2]}function eb(a){a=a|0;return H[a+28>>2]}function df(){H[4292]=17048;H[4274]=42}function Rc(a){a=a|0;return H[a+80>>2]}function qh(a){a=a|0;return F[a+24|0]}function ph(a){a=a|0;return I[a+32|0]}function md(a,b){a=a|0;b=b|0;return-1}function db(a){a=a|0;return H[a+4>>2]}function bh(a){a=a|0;return!H[a>>2]|0}function _e(a,b){a=a|0;b=b|0;return 6}function Zc(a){a=a|0;return H[a+8>>2]}function Pd(a,b){a=a|0;b=b|0;return 1}function Ja(a,b){a=a|0;b=b|0;return 0}function Bj(a,b){a=a|0;b=b|0;return 2}function Bc(a){return Ec(a+80|0)+80|0}function pe(a){a=a|0;return H[a>>2]}function yh(){return Ha(pa(40))|0}function uh(){return Eb(pa(64))|0}function hh(){return _d(pa(84))|0}function Sc(a){a=a|0;if(a){oa(a)}}function zc(a){a=a|0;Ad(a);oa(a)}function Ef(a){a=a|0;return 1171}function Df(a){a=a|0;return 1245}function Cf(a){a=a|0;return 1211}function Ta(a){a=a|0;return a|0}function yf(a){a=a|0;oa(rd(a))}function fi(a){a=a|0;oa(Be(a))}function ei(a){a=a|0;oa(Ae(a))}function di(a){a=a|0;oa(ze(a))}function Tf(a){a=a|0;oa(_b(a))}function ld(a){a=a|0;return 3}function _a(a){a=a|0;return 0}function Ze(a){a=a|0;return 5}function Tb(a){a=a|0;return 2}function Ob(a){a=a|0;return 6}function Da(a){a=a|0;return 1}function $e(a){a=a|0;return 4}function sa(){Ue(1164);v()}function Na(){Ue(1232);v()}function La(a){a=a|0;oa(a)}function Ca(){af(1164);v()}function fb(a){a=a|0;v()}function eg(){return 10}function dg(){return 11}function cg(){return 12}function kg(){return 5}function ig(){return 6}function hg(){return 7}function gg(){return 8}function fg(){return 9}function fe(){return 3}function ee(){return 4}function bg(){return-2}function bc(){return-1}function ag(){return-3}function ac(){return 1}function Zf(){return-5}function Qb(){return 0}function Nc(){return 2}function $f(){return-4}function Nf(){X();v()}function Td(a){a=a|0} -// EMSCRIPTEN_END_FUNCS -e=I;p(q);var ea=c([null,Ad,Ta,La,Tb,Pj,zi,Gh,Fd,Bf,xc,Nh,_e,Bj,Ta,mi,ji,Da,gj,Ti,Ki,Re,xi,Je,_e,hi,wg,fb,dh,ke,jg,_f,Uf,eb,Ja,Nf,Pd,Da,rd,yf,Of,Af,zf,sf,rf,pd,xf,wf,vf,Pd,uf,tf,kf,jf,qf,pf,hf,of,nf,mf,lf,cf,bf,pd,gf,ff,nd,ef,Nj,Oj,Kj,Ub,Da,db,Pb,_a,md,Ja,_a,Da,Mj,Lj,fb,fb,Ub,Tb,Pb,Jj,Ij,Hj,$e,Pb,Gj,Fj,Ej,Dj,ld,wc,Da,Ja,vc,Cj,Aj,zj,yj,Ze,wc,Da,Ja,vc,Ye,xj,wj,vj,Ob,Xe,Da,Ja,We,Ve,uj,Ta,La,Mb,eb,Nb,fb,Ub,Da,Pb,tj,fb,Ub,Tb,Pb,sj,rj,qj,$e,Pb,pj,oj,nj,mj,ld,wc,Da,Ja,vc,lj,kj,jj,ij,Ze,wc,Da,Ja,vc,Ye,hj,fj,ej,Ob,Xe,Da,Ja,We,Ve,dj,Ta,La,Mb,eb,Lb,fb,Ub,_a,Da,cj,cf,bf,bj,$i,aj,Zi,Tb,_i,Yi,Xi,Ob,db,tc,Da,Ja,sc,Da,Tb,Te,Wi,Ta,La,Mb,eb,Nb,Ui,Si,Ob,tc,Da,Ja,sc,Te,Ri,Ta,La,Mb,eb,Lb,Ta,La,_a,Da,_a,md,Ja,Vi,Qi,Pi,Oi,Ob,db,tc,Da,Ja,sc,Da,ld,Se,Ni,Ta,La,Mb,eb,Nb,Li,Ji,Ob,tc,Da,Ja,sc,Se,Ii,Ta,La,Mb,eb,Lb,La,_a,Da,_a,md,Ja,Mi,Hi,Ai,yi,Gi,Ei,Fi,Di,Ci,Bi,vi,fb,Da,Da,wi,Dh,Ch,Da,_a,Ja,Ja,qi,pi,ti,ui,ri,oi,ni,li,si,Be,fi,jd,id,hd,gd,ki,Da,db,Zc,Ae,ei,jd,id,hd,gd,ii,Da,db,Zc,ze,di,jd,id,hd,gd,gi,Da,db,Zc,He,ci,Ie,bi,ai,Zh,Yh,Xh,Wh,_h,Vh,$h,Uh,Th,Rh,Qh,Ph,Oh,Sh,Mh,Lh,Kh,Jh,Ih,Wc,ve,Hh,Ta,La,Fh,Eh,fb,_a,Da,Wc,Ah,Bh,Wc,ve,zh,Yf,Xf,Wf,Vf,_b,Tf,Xd,Wd,Sf,Rf,Qf,_a,Pf,Ta,La,Td,Td,Mf,Gf,If,Lf,La,Hf,Jf,Kf,La,Df,La,Cf,La,Ef,zc,db,zc,zc]);function fa(){return E.byteLength/65536|0}function ka(la){la=la|0;var ga=fa()|0;var ha=ga+la|0;if(ga=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536})}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}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 initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}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)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}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()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="draco_decoder.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmTable=Module["asm"]["j"];addOnInit(Module["asm"]["i"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret}};function _fd_close(fd){return 52}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){return 70}var printCharBuffers=[null,[],[]];function printChar(stream,curr){var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0}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}var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret},copy:function(array,view,offset){offset>>>=0;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offset>>>=1;break;case 4:offset>>>=2;break;case 8:offset>>>=3;break}for(var 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 z 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 jI`!dwO0TC5&f<9B@5#l>$GA4>3)return false;if(version[0]==1&&version[1]>=0&&version[1]<=3)return true;if(version[0]!=0||version[1]>10)return false;return true}Module["isVersionSupported"]=isVersionSupported;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename)}return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){process["exit"](1)}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}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}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module["readAsync"]=function readAsync(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);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}Module["print"]=typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null;Module["printErr"]=typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||Module["print"];Module.print=Module["print"];Module.printErr=Module["printErr"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(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 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(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)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;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=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;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 UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{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)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}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}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}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}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(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()}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){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)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();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;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["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)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}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_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}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["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+18640;__ATINIT__.push();memoryInitializer="data:application/octet-stream;base64,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cmFjbzI2U2VxdWVudGlhbEF0dHJpYnV0ZUVuY29kZXJFAE41ZHJhY28zN1NlcXVlbnRpYWxBdHRyaWJ1dGVFbmNvZGVyc0NvbnRyb2xsZXJFAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFRUUATjVkcmFjbzIzUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFRUUATjVkcmFjbzM3UHJlZGljdGlvblNjaGVtZVR5cGVkRW5jb2RlckludGVyZmFjZUlpaUVFAE41ZHJhY28zMlByZWRpY3Rpb25TY2hlbWVFbmNvZGVySW50ZXJmYWNlRQBONWRyYWNvMjVQcmVkaWN0aW9uU2NoZW1lSW50ZXJmYWNlRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280NE1lc2hQcmVkaWN0aW9uU2NoZW1lVGV4Q29vcmRzUG9ydGFibGVFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ0TWVzaFByZWRpY3Rpb25TY2hlbWVUZXhDb29yZHNQb3J0YWJsZUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280ME1lc2hQcmVkaWN0aW9uU2NoZW1lUGFyYWxsZWxvZ3JhbUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQB1c2VfYnVpbHRfaW5fYXR0cmlidXRlX2NvbXByZXNzaW9uAE41ZHJhY28zM1NlcXVlbnRpYWxJbnRlZ2VyQXR0cmlidXRlRW5jb2RlckUATjVkcmFjbzI4UHJlZGljdGlvblNjaGVtZURlbHRhRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVFRQBONWRyYWNvMjNQcmVkaWN0aW9uU2NoZW1lRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280NE1lc2hQcmVkaWN0aW9uU2NoZW1lVGV4Q29vcmRzUG9ydGFibGVFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JCYXNlSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ0TWVzaFByZWRpY3Rpb25TY2hlbWVUZXhDb29yZHNQb3J0YWJsZUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280ME1lc2hQcmVkaWN0aW9uU2NoZW1lUGFyYWxsZWxvZ3JhbUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMzJTZXF1ZW50aWFsTm9ybWFsQXR0cmlidXRlRW5jb2RlckUATjVkcmFjbzM4U2VxdWVudGlhbFF1YW50aXphdGlvbkF0dHJpYnV0ZUVuY29kZXJFAHByZWRpY3Rpb25fc2NoZW1lAE41ZHJhY28xMUVuY29kZXJCYXNlSU5TXzE4RW5jb2Rlck9wdGlvbnNCYXNlSWlFRUVFAE41ZHJhY283RW5jb2RlckUAIABONWRyYWNvMTNFeHBlcnRFbmNvZGVyRQBlbmNvZGluZ19tZXRob2QAcXVhbnRpemF0aW9uX2JpdHMASW52YWxpZCBlbmNvZGluZyBtZXRob2QuAGVuY29kaW5nX3NwZWVkAGRlY29kaW5nX3NwZWVkAHF1YW50aXphdGlvbl9vcmlnaW4AcXVhbnRpemF0aW9uX3JhbmdlAHN5bWJvbF9lbmNvZGluZ19tZXRob2QAc3ltYm9sX2VuY29kaW5nX2NvbXByZXNzaW9uX2xldmVsAHN0YW5kYXJkX2VkZ2VicmVha2VyAHByZWRpY3RpdmVfZWRnZWJyZWFrZXIAZWRnZWJyZWFrZXJfbWV0aG9kAE41ZHJhY28yMk1lc2hFZGdlYnJlYWtlckVuY29kZXJFAEFsbCB0cmlhbmdsZXMgYXJlIGRlZ2VuZXJhdGUuAEZhaWxlZCB0byBwcm9jZXNzIG1lc2ggaG9sZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIGF0dHJpYnV0ZSBkYXRhLgBGYWlsZWQgdG8gZW5jb2RlIG1lc2ggY29tcG9uZW50LgBGYWlsZWQgdG8gZW5jb2RlIHNwbGl0IGRhdGEuAE41ZHJhY28xM1RyYXZlcnNlckJhc2VJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzFfRUVFRQBONWRyYWNvMTlEZXB0aEZpcnN0VHJhdmVyc2VySU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzJfRUVFRUVFAE41ZHJhY28xNVBvaW50c1NlcXVlbmNlckUATjVkcmFjbzEzVHJhdmVyc2VyQmFzZUlOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzE5RGVwdGhGaXJzdFRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18xOURlcHRoRmlyc3RUcmF2ZXJzZXJJTlNfMTFDb3JuZXJUYWJsZUVOU18zNk1lc2hBdHRyaWJ1dGVJbmRpY2VzRW5jb2RpbmdPYnNlcnZlcklTMl9FRUVFRUUATjVkcmFjbzI4TWF4UHJlZGljdGlvbkRlZ3JlZVRyYXZlcnNlcklOU18xMUNvcm5lclRhYmxlRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMxX0VFRUUATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18yOE1heFByZWRpY3Rpb25EZWdyZWVUcmF2ZXJzZXJJTlNfMTFDb3JuZXJUYWJsZUVOU18zNk1lc2hBdHRyaWJ1dGVJbmRpY2VzRW5jb2RpbmdPYnNlcnZlcklTMl9FRUVFRUUAc3BsaXRfbWVzaF9vbl9zZWFtcwBONWRyYWNvMjZNZXNoRWRnZWJyZWFrZXJFbmNvZGVySW1wbElOU18zMU1lc2hFZGdlYnJlYWtlclRyYXZlcnNhbEVuY29kZXJFRUUATjVkcmFjbzM1TWVzaEVkZ2VicmVha2VyRW5jb2RlckltcGxJbnRlcmZhY2VFAE41ZHJhY28yNk1lc2hFZGdlYnJlYWtlckVuY29kZXJJbXBsSU5TXzM4TWVzaEVkZ2VicmVha2VyVHJhdmVyc2FsVmFsZW5jZUVuY29kZXJFRUUAc3RvcmVfbnVtYmVyX29mX2VuY29kZWRfZmFjZXMATjVkcmFjbzExTWVzaEVuY29kZXJFAGNvbXByZXNzX2Nvbm5lY3Rpdml0eQBONWRyYWNvMTVMaW5lYXJTZXF1ZW5jZXJFAE41ZHJhY28yMU1lc2hTZXF1ZW50aWFsRW5jb2RlckUATjVkcmFjbzE3UG9pbnRDbG91ZEVuY29kZXJFAEludmFsaWQgaW5wdXQgZ2VvbWV0cnkuAEZhaWxlZCB0byBpbml0aWFsaXplIGVuY29kZXIuAEZhaWxlZCB0byBlbmNvZGUgaW50ZXJuYWwgZGF0YS4ARmFpbGVkIHRvIGVuY29kZSBwb2ludCBhdHRyaWJ1dGVzLgBzdG9yZV9udW1iZXJfb2ZfZW5jb2RlZF9wb2ludHMARmFpbGVkIHRvIGVuY29kZSBtZXRhZGF0YS4ARFJBQ08ATjVkcmFjbzIzUG9pbnRDbG91ZEtkVHJlZUVuY29kZXJFAE41ZHJhY28yN1BvaW50Q2xvdWRTZXF1ZW50aWFsRW5jb2RlckUATjVkcmFjbzRNZXNoRQBhbGxvY2F0b3I8VD46OmFsbG9jYXRlKHNpemVfdCBuKSAnbicgZXhjZWVkcyBtYXhpbXVtIHN1cHBvcnRlZCBzaXplAE41ZHJhY28xMFBvaW50Q2xvdWRFABEACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABEwkLCwAACQYLAAALAAYRAAAAERERAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAADQAAAAQNAAAAAAkOAAAAAAAOAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAEhISAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAACgAAAAAKAAAAAAkLAAAAAAALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAALSsgICAwWDB4AChudWxsKQAtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBOQU4AMDEyMzQ1Njc4OUFCQ0RFRi4AVCEiGQ0BAgMRSxwMEAQLHRIeJ2hub3BxYiAFBg8TFBUaCBYHKCQXGAkKDhsfJSODgn0mKis8PT4/Q0dKTVhZWltcXV5fYGFjZGVmZ2lqa2xyc3R5ent8AElsbGVnYWwgYnl0ZSBzZXF1ZW5jZQBEb21haW4gZXJyb3IAUmVzdWx0IG5vdCByZXByZXNlbnRhYmxlAE5vdCBhIHR0eQBQZXJtaXNzaW9uIGRlbmllZABPcGVyYXRpb24gbm90IHBlcm1pdHRlZABObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5AE5vIHN1Y2ggcHJvY2VzcwBGaWxlIGV4aXN0cwBWYWx1ZSB0b28gbGFyZ2UgZm9yIGRhdGEgdHlwZQBObyBzcGFjZSBsZWZ0IG9uIGRldmljZQBPdXQgb2YgbWVtb3J5AFJlc291cmNlIGJ1c3kASW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwAUmVzb3VyY2UgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUASW52YWxpZCBzZWVrAENyb3NzLWRldmljZSBsaW5rAFJlYWQtb25seSBmaWxlIHN5c3RlbQBEaXJlY3Rvcnkgbm90IGVtcHR5AENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlcgBPcGVyYXRpb24gdGltZWQgb3V0AENvbm5lY3Rpb24gcmVmdXNlZABIb3N0IGlzIGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAABpbmZpbml0eQBuYW4AJWQAJWYAdGVybWluYXRpbmcgd2l0aCAlcyBleGNlcHRpb24gb2YgdHlwZSAlczogJXMAdGVybWluYXRpbmcgd2l0aCAlcyBleGNlcHRpb24gb2YgdHlwZSAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGZvcmVpZ24gZXhjZXB0aW9uAHRlcm1pbmF0aW5nAHVuY2F1Z2h0AFN0OWV4Y2VwdGlvbgBOMTBfX2N4eGFiaXYxMTZfX3NoaW1fdHlwZV9pbmZvRQBTdDl0eXBlX2luZm8ATjEwX19jeHhhYml2MTIwX19zaV9jbGFzc190eXBlX2luZm9FAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQBwdGhyZWFkX29uY2UgZmFpbHVyZSBpbiBfX2N4YV9nZXRfZ2xvYmFsc19mYXN0KCkAY2Fubm90IGNyZWF0ZSBwdGhyZWFkIGtleSBmb3IgX19jeGFfZ2V0X2dsb2JhbHMoKQBjYW5ub3QgemVybyBvdXQgdGhyZWFkIHZhbHVlIGZvciBfX2N4YV9nZXRfZ2xvYmFscygpAHRlcm1pbmF0ZV9oYW5kbGVyIHVuZXhwZWN0ZWRseSByZXR1cm5lZABTdDExbG9naWNfZXJyb3IAU3QxMmxlbmd0aF9lcnJvcgBOMTBfX2N4eGFiaXYxMTlfX3BvaW50ZXJfdHlwZV9pbmZvRQBOMTBfX2N4eGFiaXYxMTdfX3BiYXNlX3R5cGVfaW5mb0U=";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___cxa_allocate_exception(size){return _malloc(size)}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&&!info.rethrown){if(info.destructor){Module["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 ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(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(setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___gxx_personality_v0(){}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>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 ___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;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 flush_NO_FILESYSTEM(){var fflush=Module["_fflush"];if(fflush)fflush(0);var printChar=___syscall146.printChar;if(!printChar)return;var buffers=___syscall146.buffers;if(buffers[1].length)printChar(1,10);if(buffers[2].length)printChar(2,10)}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffers){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;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}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:(function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true} -// EMSCRIPTEN_START_FUNCS -function wc(a){a=a|0;var b=0,c=0,d=0,e=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,A=0,B=0,C=0,D=0;if(!a)return;b=a+-8|0;c=f[4516]|0;d=f[a+-4>>2]|0;a=d&-8;e=b+a|0;do if(!(d&1)){g=f[b>>2]|0;if(!(d&3))return;h=b+(0-g)|0;i=g+a|0;if(h>>>0>>0)return;if((f[4517]|0)==(h|0)){j=e+4|0;k=f[j>>2]|0;if((k&3|0)!=3){l=h;m=i;n=h;break}f[4514]=i;f[j>>2]=k&-2;f[h+4>>2]=i|1;f[h+i>>2]=i;return}k=g>>>3;if(g>>>0<256){g=f[h+8>>2]|0;j=f[h+12>>2]|0;if((j|0)==(g|0)){f[4512]=f[4512]&~(1<>2]=j;f[j+8>>2]=g;l=h;m=i;n=h;break}}g=f[h+24>>2]|0;j=f[h+12>>2]|0;do if((j|0)==(h|0)){k=h+16|0;o=k+4|0;p=f[o>>2]|0;if(!p){q=f[k>>2]|0;if(!q){r=0;break}else{s=q;t=k}}else{s=p;t=o}while(1){o=s+20|0;p=f[o>>2]|0;if(p|0){s=p;t=o;continue}o=s+16|0;p=f[o>>2]|0;if(!p)break;else{s=p;t=o}}f[t>>2]=0;r=s}else{o=f[h+8>>2]|0;f[o+12>>2]=j;f[j+8>>2]=o;r=j}while(0);if(g){j=f[h+28>>2]|0;o=18352+(j<<2)|0;if((f[o>>2]|0)==(h|0)){f[o>>2]=r;if(!r){f[4513]=f[4513]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=r;if(!r){l=h;m=i;n=h;break}}f[r+24>>2]=g;j=h+16|0;o=f[j>>2]|0;if(o|0){f[r+16>>2]=o;f[o+24>>2]=r}o=f[j+4>>2]|0;if(o){f[r+20>>2]=o;f[o+24>>2]=r;l=h;m=i;n=h}else{l=h;m=i;n=h}}else{l=h;m=i;n=h}}else{l=b;m=a;n=b}while(0);if(n>>>0>=e>>>0)return;b=e+4|0;a=f[b>>2]|0;if(!(a&1))return;if(!(a&2)){if((f[4518]|0)==(e|0)){r=(f[4515]|0)+m|0;f[4515]=r;f[4518]=l;f[l+4>>2]=r|1;if((l|0)!=(f[4517]|0))return;f[4517]=0;f[4514]=0;return}if((f[4517]|0)==(e|0)){r=(f[4514]|0)+m|0;f[4514]=r;f[4517]=n;f[l+4>>2]=r|1;f[n+r>>2]=r;return}r=(a&-8)+m|0;s=a>>>3;do if(a>>>0<256){t=f[e+8>>2]|0;c=f[e+12>>2]|0;if((c|0)==(t|0)){f[4512]=f[4512]&~(1<>2]=c;f[c+8>>2]=t;break}}else{t=f[e+24>>2]|0;c=f[e+12>>2]|0;do if((c|0)==(e|0)){d=e+16|0;o=d+4|0;j=f[o>>2]|0;if(!j){p=f[d>>2]|0;if(!p){u=0;break}else{v=p;w=d}}else{v=j;w=o}while(1){o=v+20|0;j=f[o>>2]|0;if(j|0){v=j;w=o;continue}o=v+16|0;j=f[o>>2]|0;if(!j)break;else{v=j;w=o}}f[w>>2]=0;u=v}else{o=f[e+8>>2]|0;f[o+12>>2]=c;f[c+8>>2]=o;u=c}while(0);if(t|0){c=f[e+28>>2]|0;h=18352+(c<<2)|0;if((f[h>>2]|0)==(e|0)){f[h>>2]=u;if(!u){f[4513]=f[4513]&~(1<>2]|0)!=(e|0)&1)<<2)>>2]=u;if(!u)break}f[u+24>>2]=t;c=e+16|0;h=f[c>>2]|0;if(h|0){f[u+16>>2]=h;f[h+24>>2]=u}h=f[c+4>>2]|0;if(h|0){f[u+20>>2]=h;f[h+24>>2]=u}}}while(0);f[l+4>>2]=r|1;f[n+r>>2]=r;if((l|0)==(f[4517]|0)){f[4514]=r;return}else x=r}else{f[b>>2]=a&-2;f[l+4>>2]=m|1;f[n+m>>2]=m;x=m}m=x>>>3;if(x>>>0<256){n=18088+(m<<1<<2)|0;a=f[4512]|0;b=1<>2]|0;z=b}f[z>>2]=l;f[y+12>>2]=l;f[l+8>>2]=y;f[l+12>>2]=n;return}n=x>>>8;if(n)if(x>>>0>16777215)A=31;else{y=(n+1048320|0)>>>16&8;z=n<>>16&4;b=z<>>16&2;a=14-(n|y|z)+(b<>>15)|0;A=x>>>(a+7|0)&1|a<<1}else A=0;a=18352+(A<<2)|0;f[l+28>>2]=A;f[l+20>>2]=0;f[l+16>>2]=0;z=f[4513]|0;b=1<>>1)|0);n=f[a>>2]|0;while(1){if((f[n+4>>2]&-8|0)==(x|0)){B=73;break}C=n+16+(y>>>31<<2)|0;m=f[C>>2]|0;if(!m){B=72;break}else{y=y<<1;n=m}}if((B|0)==72){f[C>>2]=l;f[l+24>>2]=n;f[l+12>>2]=l;f[l+8>>2]=l;break}else if((B|0)==73){y=n+8|0;t=f[y>>2]|0;f[t+12>>2]=l;f[y>>2]=l;f[l+8>>2]=t;f[l+12>>2]=n;f[l+24>>2]=0;break}}else{f[4513]=z|b;f[a>>2]=l;f[l+24>>2]=a;f[l+12>>2]=l;f[l+8>>2]=l}while(0);l=(f[4520]|0)+-1|0;f[4520]=l;if(!l)D=18504;else return;while(1){l=f[D>>2]|0;if(!l)break;else D=l+8|0}f[4520]=-1;return}function xc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=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=Oa,F=Oa,G=Oa,H=0,I=0,J=0,K=0;d=b[c+11>>0]|0;e=d<<24>>24<0;g=e?f[c>>2]|0:c;i=e?f[c+4>>2]|0:d&255;if(i>>>0>3){d=g;e=i;j=i;while(1){k=X(h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24,1540483477)|0;e=(X(k>>>24^k,1540483477)|0)^(X(e,1540483477)|0);j=j+-4|0;if(j>>>0<=3)break;else d=d+4|0}d=i+-4|0;j=d&-4;l=d-j|0;m=g+(j+4)|0;o=e}else{l=i;m=g;o=i}switch(l|0){case 3:{p=h[m+2>>0]<<16^o;q=6;break}case 2:{p=o;q=6;break}case 1:{r=o;q=7;break}default:s=o}if((q|0)==6){r=h[m+1>>0]<<8^p;q=7}if((q|0)==7)s=X(r^h[m>>0],1540483477)|0;m=X(s>>>13^s,1540483477)|0;s=m>>>15^m;m=a+4|0;r=f[m>>2]|0;p=(r|0)==0;a:do if(!p){o=r+-1|0;l=(o&r|0)==0;if(!l)if(s>>>0>>0)t=s;else t=(s>>>0)%(r>>>0)|0;else t=s&o;e=f[(f[a>>2]|0)+(t<<2)>>2]|0;if((e|0)!=0?(j=f[e>>2]|0,(j|0)!=0):0){e=(i|0)==0;if(l){if(e){l=j;while(1){d=f[l+4>>2]|0;if(!((d|0)==(s|0)|(d&o|0)==(t|0))){u=t;break a}d=b[l+8+11>>0]|0;if(!((d<<24>>24<0?f[l+12>>2]|0:d&255)|0)){v=l;break}l=f[l>>2]|0;if(!l){u=t;break a}}w=v+20|0;return w|0}else x=j;b:while(1){l=f[x+4>>2]|0;if(!((l|0)==(s|0)|(l&o|0)==(t|0))){u=t;break a}l=x+8|0;d=b[l+11>>0]|0;k=d<<24>>24<0;y=d&255;do if(((k?f[x+12>>2]|0:y)|0)==(i|0)){d=f[l>>2]|0;if(k)if(!(Pk(d,g,i)|0)){v=x;q=63;break b}else break;if((b[g>>0]|0)==(d&255)<<24>>24){d=l;z=y;A=g;do{z=z+-1|0;d=d+1|0;if(!z){v=x;q=63;break b}A=A+1|0}while((b[d>>0]|0)==(b[A>>0]|0))}}while(0);x=f[x>>2]|0;if(!x){u=t;break a}}if((q|0)==63){w=v+20|0;return w|0}}if(e){o=j;while(1){y=f[o+4>>2]|0;if((y|0)!=(s|0)){if(y>>>0>>0)B=y;else B=(y>>>0)%(r>>>0)|0;if((B|0)!=(t|0)){u=t;break a}}y=b[o+8+11>>0]|0;if(!((y<<24>>24<0?f[o+12>>2]|0:y&255)|0)){v=o;break}o=f[o>>2]|0;if(!o){u=t;break a}}w=v+20|0;return w|0}else C=j;c:while(1){o=f[C+4>>2]|0;if((o|0)!=(s|0)){if(o>>>0>>0)D=o;else D=(o>>>0)%(r>>>0)|0;if((D|0)!=(t|0)){u=t;break a}}o=C+8|0;e=b[o+11>>0]|0;y=e<<24>>24<0;l=e&255;do if(((y?f[C+12>>2]|0:l)|0)==(i|0)){e=f[o>>2]|0;if(y)if(!(Pk(e,g,i)|0)){v=C;q=63;break c}else break;if((b[g>>0]|0)==(e&255)<<24>>24){e=o;k=l;A=g;do{k=k+-1|0;e=e+1|0;if(!k){v=C;q=63;break c}A=A+1|0}while((b[e>>0]|0)==(b[A>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){u=t;break a}}if((q|0)==63){w=v+20|0;return w|0}}else u=t}else u=0;while(0);t=dn(24)|0;dj(t+8|0,c);f[t+20>>2]=0;f[t+4>>2]=s;f[t>>2]=0;c=a+12|0;E=$(((f[c>>2]|0)+1|0)>>>0);F=$(r>>>0);G=$(n[a+16>>2]);do if(p|$(G*F)>>0<3|(r+-1&r|0)!=0)&1;g=~~$(W($(E/G)))>>>0;Ph(a,C>>>0>>0?g:C);C=f[m>>2]|0;g=C+-1|0;if(!(g&C)){H=C;I=g&s;break}if(s>>>0>>0){H=C;I=s}else{H=C;I=(s>>>0)%(C>>>0)|0}}else{H=r;I=u}while(0);u=(f[a>>2]|0)+(I<<2)|0;I=f[u>>2]|0;if(!I){r=a+8|0;f[t>>2]=f[r>>2];f[r>>2]=t;f[u>>2]=r;r=f[t>>2]|0;if(r|0){u=f[r+4>>2]|0;r=H+-1|0;if(r&H)if(u>>>0>>0)J=u;else J=(u>>>0)%(H>>>0)|0;else J=u&r;K=(f[a>>2]|0)+(J<<2)|0;q=61}}else{f[t>>2]=f[I>>2];K=I;q=61}if((q|0)==61)f[K>>2]=t;f[c>>2]=(f[c>>2]|0)+1;v=t;w=v+20|0;return w|0}function yc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.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.0,G=0.0,H=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0.0,R=0.0,S=0,T=0.0,U=0,V=0,W=0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0.0,da=0,ea=0.0;g=a+4|0;i=f[g>>2]|0;j=a+100|0;if(i>>>0<(f[j>>2]|0)>>>0){f[g>>2]=i+1;k=h[i>>0]|0;l=0}else{k=Di(a)|0;l=0}a:while(1){switch(k|0){case 46:{m=8;break a;break}case 48:break;default:{n=0;o=0;p=1.0;q=0.0;r=0;s=k;t=l;u=0;v=0;w=0;x=0;break a}}i=f[g>>2]|0;if(i>>>0<(f[j>>2]|0)>>>0){f[g>>2]=i+1;k=h[i>>0]|0;l=1;continue}else{k=Di(a)|0;l=1;continue}}if((m|0)==8){k=f[g>>2]|0;if(k>>>0<(f[j>>2]|0)>>>0){f[g>>2]=k+1;y=h[k>>0]|0}else y=Di(a)|0;if((y|0)==48){k=0;i=0;while(1){z=f[g>>2]|0;if(z>>>0<(f[j>>2]|0)>>>0){f[g>>2]=z+1;A=h[z>>0]|0}else A=Di(a)|0;z=Tn(k|0,i|0,-1,-1)|0;B=I;if((A|0)==48){k=z;i=B}else{n=1;o=0;p=1.0;q=0.0;r=0;s=A;t=1;u=0;v=0;w=z;x=B;break}}}else{n=1;o=0;p=1.0;q=0.0;r=0;s=y;t=l;u=0;v=0;w=0;x=0}}while(1){l=s+-48|0;y=s|32;if(l>>>0>=10){A=(s|0)==46;if(!(A|(y+-97|0)>>>0<6)){C=s;break}if(A)if(!n){D=1;E=o;F=p;G=q;H=r;J=t;K=v;L=u;M=v;N=u}else{C=46;break}else m=20}else m=20;if((m|0)==20){m=0;A=(s|0)>57?y+-87|0:l;do if(!((u|0)<0|(u|0)==0&v>>>0<8))if((u|0)<0|(u|0)==0&v>>>0<14){O=p*.0625;P=o;Q=O;R=q+O*+(A|0);S=r;break}else{l=(o|0)!=0|(A|0)==0;P=l?o:1;Q=p;R=l?q:q+p*.5;S=r;break}else{P=o;Q=p;R=q;S=A+(r<<4)|0}while(0);A=Tn(v|0,u|0,1,0)|0;D=n;E=P;F=Q;G=R;H=S;J=1;K=w;L=x;M=A;N=I}A=f[g>>2]|0;if(A>>>0<(f[j>>2]|0)>>>0){f[g>>2]=A+1;n=D;o=E;p=F;q=G;r=H;s=h[A>>0]|0;t=J;u=N;v=M;w=K;x=L;continue}else{n=D;o=E;p=F;q=G;r=H;s=Di(a)|0;t=J;u=N;v=M;w=K;x=L;continue}}do if(!t){L=(f[j>>2]|0)==0;if(!L)f[g>>2]=(f[g>>2]|0)+-1;if(e){if(!L)f[g>>2]=(f[g>>2]|0)+-1;if(!((n|0)==0|L))f[g>>2]=(f[g>>2]|0)+-1}else Rm(a,0);T=+(d|0)*0.0}else{L=(n|0)==0;K=L?v:w;M=L?u:x;if((u|0)<0|(u|0)==0&v>>>0<8){L=r;N=v;J=u;while(1){s=L<<4;H=N;N=Tn(N|0,J|0,1,0)|0;if(!((J|0)<0|(J|0)==0&H>>>0<7)){U=s;break}else{L=s;J=I}}}else U=r;if((C|32|0)==112){J=De(a,e)|0;L=I;if((J|0)==0&(L|0)==-2147483648){if(!e){Rm(a,0);T=0.0;break}if(!(f[j>>2]|0)){V=0;W=0}else{f[g>>2]=(f[g>>2]|0)+-1;V=0;W=0}}else{V=J;W=L}}else if(!(f[j>>2]|0)){V=0;W=0}else{f[g>>2]=(f[g>>2]|0)+-1;V=0;W=0}L=Rn(K|0,M|0,2)|0;J=Tn(L|0,I|0,-32,-1)|0;L=Tn(J|0,I|0,V|0,W|0)|0;J=I;if(!U){T=+(d|0)*0.0;break}N=0-c|0;s=((N|0)<0)<<31>>31;if((J|0)>(s|0)|(J|0)==(s|0)&L>>>0>N>>>0){N=ir()|0;f[N>>2]=34;T=+(d|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}N=c+-106|0;s=((N|0)<0)<<31>>31;if((J|0)<(s|0)|(J|0)==(s|0)&L>>>0>>0){N=ir()|0;f[N>>2]=34;T=+(d|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((U|0)>-1){G=q;N=U;s=L;H=J;while(1){E=!(G>=.5);o=N<<1|(E^1)&1;F=G+(E?G:G+-1.0);E=Tn(s|0,H|0,-1,-1)|0;D=I;if((o|0)>-1){G=F;N=o;s=E;H=D}else{X=F;Y=o;Z=E;_=D;break}}}else{X=q;Y=U;Z=L;_=J}H=((b|0)<0)<<31>>31;s=Vn(32,0,c|0,((c|0)<0)<<31>>31|0)|0;N=Tn(s|0,I|0,Z|0,_|0)|0;s=I;if((s|0)<(H|0)|(s|0)==(H|0)&N>>>0>>0)if((N|0)>0){$=N;m=59}else{aa=0;ba=84;m=61}else{$=b;m=59}if((m|0)==59)if(($|0)<53){aa=$;ba=84-$|0;m=61}else{ca=0.0;da=$;ea=+(d|0)}if((m|0)==61){G=+(d|0);ca=+Gq(+Wj(1.0,ba),G);da=aa;ea=G}N=(Y&1|0)==0&(X!=0.0&(da|0)<32);G=(N?0.0:X)*ea+(ca+ea*+((Y+(N&1)|0)>>>0))-ca;if(!(G!=0.0)){N=ir()|0;f[N>>2]=34}T=+Hq(G,Z)}while(0);return +T}function zc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,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,Q=0,R=0,S=0;g=u;u=u+16|0;h=g+4|0;i=g;if(!(oh(a,d)|0)){j=0;u=g;return j|0}d=a+84|0;k=f[d>>2]|0;l=a+88|0;m=f[l>>2]|0;if((m|0)!=(k|0))f[l>>2]=m+(~((m+-4-k|0)>>>2)<<2);f[d>>2]=0;f[l>>2]=0;f[a+92>>2]=0;if(k|0)br(k);k=a+72|0;l=f[k>>2]|0;d=a+76|0;if((f[d>>2]|0)!=(l|0))f[d>>2]=l;f[k>>2]=0;f[d>>2]=0;f[a+80>>2]=0;if(l|0)br(l);l=a+64|0;d=f[l>>2]|0;if((f[d+4>>2]|0)!=(f[d>>2]|0)){k=a+12|0;m=e+84|0;n=e+68|0;o=c+96|0;p=a+24|0;q=0;r=d;do{f[i>>2]=(q>>>0)/3|0;f[h>>2]=f[i>>2];d=Rj(r,h)|0;r=f[l>>2]|0;do if(!d){s=f[(f[r+12>>2]|0)+(q<<2)>>2]|0;if((s|0)==-1){t=(f[a>>2]|0)+(q>>>5<<2)|0;f[t>>2]=f[t>>2]|1<<(q&31);t=q+1|0;v=((t>>>0)%3|0|0)==0?q+-2|0:t;if((v|0)==-1)w=-1;else w=f[(f[r>>2]|0)+(v<<2)>>2]|0;v=(f[k>>2]|0)+(w>>>5<<2)|0;f[v>>2]=f[v>>2]|1<<(w&31);v=(((q>>>0)%3|0|0)==0?2:-1)+q|0;if((v|0)==-1)x=-1;else x=f[(f[r>>2]|0)+(v<<2)>>2]|0;v=(f[k>>2]|0)+(x>>>5<<2)|0;f[v>>2]=f[v>>2]|1<<(x&31);break}if(s>>>0>=q>>>0){v=q+1|0;t=((v>>>0)%3|0|0)==0?q+-2|0:v;y=s+(((s>>>0)%3|0|0)==0?2:-1)|0;z=(t|0)==-1;if(!(b[m>>0]|0)){if(z)A=-1;else A=f[(f[o>>2]|0)+(((t|0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]|0;B=(y|0)==-1;if(B)C=-1;else C=f[(f[o>>2]|0)+(((y|0)/3|0)*12|0)+(((y|0)%3|0)<<2)>>2]|0;D=f[n>>2]|0;if((f[D+(A<<2)>>2]|0)==(f[D+(C<<2)>>2]|0)){E=t+1|0;if(z)F=-1;else F=((E>>>0)%3|0|0)==0?t+-2|0:E;do if(!B)if(!((y>>>0)%3|0)){G=y+2|0;break}else{G=y+-1|0;break}else G=-1;while(0);if((F|0)==-1)H=-1;else H=f[(f[o>>2]|0)+(((F|0)/3|0)*12|0)+(((F|0)%3|0)<<2)>>2]|0;if((G|0)==-1)I=-1;else I=f[(f[o>>2]|0)+(((G|0)/3|0)*12|0)+(((G|0)%3|0)<<2)>>2]|0;if((f[D+(H<<2)>>2]|0)==(f[D+(I<<2)>>2]|0))break}}else{if(z)J=-1;else J=f[(f[o>>2]|0)+(((t|0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]|0;B=(y|0)==-1;if(B)K=-1;else K=f[(f[o>>2]|0)+(((y|0)/3|0)*12|0)+(((y|0)%3|0)<<2)>>2]|0;if((J|0)==(K|0)){E=t+1|0;if(z)L=-1;else L=((E>>>0)%3|0|0)==0?t+-2|0:E;do if(!B)if(!((y>>>0)%3|0)){M=y+2|0;break}else{M=y+-1|0;break}else M=-1;while(0);if((L|0)==-1)N=-1;else N=f[(f[o>>2]|0)+(((L|0)/3|0)*12|0)+(((L|0)%3|0)<<2)>>2]|0;if((M|0)==-1)O=-1;else O=f[(f[o>>2]|0)+(((M|0)/3|0)*12|0)+(((M|0)%3|0)<<2)>>2]|0;if((N|0)==(O|0))break}}b[p>>0]=0;y=f[a>>2]|0;B=y+(q>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(q&31);B=y+(s>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(s&31);B=((v>>>0)%3|0|0)==0?q+-2|0:v;if((B|0)==-1)P=-1;else P=f[(f[r>>2]|0)+(B<<2)>>2]|0;B=(f[k>>2]|0)+(P>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(P&31);B=(((q>>>0)%3|0|0)==0?2:-1)+q|0;if((B|0)==-1)Q=-1;else Q=f[(f[r>>2]|0)+(B<<2)>>2]|0;B=(f[k>>2]|0)+(Q>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(Q&31);B=s+1|0;y=((B>>>0)%3|0|0)==0?s+-2|0:B;if((y|0)==-1)R=-1;else R=f[(f[r>>2]|0)+(y<<2)>>2]|0;y=(f[k>>2]|0)+(R>>>5<<2)|0;f[y>>2]=f[y>>2]|1<<(R&31);y=(((s>>>0)%3|0|0)==0?2:-1)+s|0;if((y|0)==-1)S=-1;else S=f[(f[r>>2]|0)+(y<<2)>>2]|0;y=(f[k>>2]|0)+(S>>>5<<2)|0;f[y>>2]=f[y>>2]|1<<(S&31)}}while(0);q=q+1|0}while(q>>>0<(f[r+4>>2]|0)-(f[r>>2]|0)>>2>>>0)}if((c|0)!=0&(e|0)!=0){Kc(a,c,e);j=1;u=g;return j|0}else{gd(a,0,0);j=1;u=g;return j|0}return 0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=u;u=u+32|0;e=d+12|0;g=d+8|0;h=d+4|0;i=d;j=a+8|0;a:do if(f[j>>2]|0?(k=f[a>>2]|0,l=a+4|0,f[a>>2]=l,f[(f[l>>2]|0)+8>>2]=0,f[l>>2]=0,f[j>>2]=0,m=f[k+4>>2]|0,n=(m|0)==0?k:m,n|0):0){m=a+4|0;k=n;n=f[b>>2]|0;while(1){if((n|0)==(f[c>>2]|0))break;o=k+16|0;f[o>>2]=f[n+16>>2];if((k|0)!=(n|0)){f[h>>2]=f[n+20>>2];f[i>>2]=n+24;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Hc(k+20|0,g,e)}p=k+8|0;q=f[p>>2]|0;do if(q){r=f[q>>2]|0;if((r|0)==(k|0)){f[q>>2]=0;s=f[q+4>>2]|0;if(!s){t=q;break}else v=s;while(1){s=f[v>>2]|0;if(s|0){v=s;continue}s=f[v+4>>2]|0;if(!s)break;else v=s}t=v;break}else{f[q+4>>2]=0;if(!r){t=q;break}else w=r;while(1){s=f[w>>2]|0;if(s|0){w=s;continue}s=f[w+4>>2]|0;if(!s)break;else w=s}t=w;break}}else t=0;while(0);q=f[l>>2]|0;do if(q){r=f[o>>2]|0;s=q;while(1){if((r|0)<(f[s+16>>2]|0)){x=f[s>>2]|0;if(!x){y=22;break}else z=x}else{A=s+4|0;x=f[A>>2]|0;if(!x){y=25;break}else z=x}s=z}if((y|0)==22){y=0;B=s;C=s;break}else if((y|0)==25){y=0;B=s;C=A;break}}else{B=l;C=l}while(0);f[k>>2]=0;f[k+4>>2]=0;f[p>>2]=B;f[C>>2]=k;q=f[f[a>>2]>>2]|0;if(!q)D=k;else{f[a>>2]=q;D=f[C>>2]|0}Ae(f[m>>2]|0,D);f[j>>2]=(f[j>>2]|0)+1;q=f[n+4>>2]|0;if(!q){o=n+8|0;r=f[o>>2]|0;if((f[r>>2]|0)==(n|0))E=r;else{r=o;do{o=f[r>>2]|0;r=o+8|0;x=f[r>>2]|0}while((f[x>>2]|0)!=(o|0));E=x}}else{r=q;while(1){p=f[r>>2]|0;if(!p)break;else r=p}E=r}f[b>>2]=E;if(!t)break a;else{k=t;n=E}}n=f[k+8>>2]|0;if(!n)F=k;else{m=n;while(1){n=f[m+8>>2]|0;if(!n)break;else m=n}F=m}Dj(a,F)}while(0);F=f[b>>2]|0;E=f[c>>2]|0;if((F|0)==(E|0)){u=d;return}c=a+4|0;t=a+4|0;D=F;while(1){tg(e,a,D+16|0);F=f[c>>2]|0;do if(F){C=f[e>>2]|0;B=f[C+16>>2]|0;A=F;while(1){if((B|0)<(f[A+16>>2]|0)){z=f[A>>2]|0;if(!z){y=43;break}else G=z}else{H=A+4|0;z=f[H>>2]|0;if(!z){y=46;break}else G=z}A=G}if((y|0)==43){y=0;I=A;J=A;K=C;break}else if((y|0)==46){y=0;I=A;J=H;K=C;break}}else{I=c;J=c;K=f[e>>2]|0}while(0);f[K>>2]=0;f[K+4>>2]=0;f[K+8>>2]=I;f[J>>2]=K;F=f[f[a>>2]>>2]|0;if(!F)L=K;else{f[a>>2]=F;L=f[J>>2]|0}Ae(f[t>>2]|0,L);f[j>>2]=(f[j>>2]|0)+1;F=f[D+4>>2]|0;if(!F){m=D+8|0;B=f[m>>2]|0;if((f[B>>2]|0)==(D|0))M=B;else{B=m;do{m=f[B>>2]|0;B=m+8|0;r=f[B>>2]|0}while((f[r>>2]|0)!=(m|0));M=r}}else{B=F;while(1){r=f[B>>2]|0;if(!r)break;else B=r}M=B}f[b>>2]=M;if((M|0)==(E|0))break;else D=M}u=d;return}function Bc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;g=a+8|0;Ah(g,b,d,e);d=e>>>0>1073741823?-1:e<<2;h=_q(d)|0;hj(h|0,0,d|0)|0;d=f[a+48>>2]|0;i=f[a+56>>2]|0;j=f[i>>2]|0;k=(f[i+4>>2]|0)-j|0;l=k>>2;a:do if((k|0)>4){m=f[a+52>>2]|0;n=a+16|0;o=a+32|0;p=a+12|0;q=a+28|0;r=a+20|0;s=a+24|0;t=d+12|0;u=(e|0)>0;v=j;w=l;while(1){x=w;w=w+-1|0;if(l>>>0<=w>>>0)break;y=f[v+(w<<2)>>2]|0;z=X(w,e)|0;if((y|0)!=-1?(A=f[(f[t>>2]|0)+(y<<2)>>2]|0,(A|0)!=-1):0){y=f[d>>2]|0;B=f[m>>2]|0;C=f[B+(f[y+(A<<2)>>2]<<2)>>2]|0;D=A+1|0;E=((D>>>0)%3|0|0)==0?A+-2|0:D;if((E|0)==-1)F=-1;else F=f[y+(E<<2)>>2]|0;E=f[B+(F<<2)>>2]|0;D=(((A>>>0)%3|0|0)==0?2:-1)+A|0;if((D|0)==-1)G=-1;else G=f[y+(D<<2)>>2]|0;D=f[B+(G<<2)>>2]|0;if((C|0)<(w|0)&(E|0)<(w|0)&(D|0)<(w|0)){B=X(C,e)|0;C=X(E,e)|0;E=X(D,e)|0;if(u){D=0;do{f[h+(D<<2)>>2]=(f[b+(D+E<<2)>>2]|0)+(f[b+(D+C<<2)>>2]|0)-(f[b+(D+B<<2)>>2]|0);D=D+1|0}while((D|0)!=(e|0))}D=b+(z<<2)|0;B=c+(z<<2)|0;C=f[g>>2]|0;if((C|0)>0){E=0;y=h;A=C;while(1){if((A|0)>0){C=0;do{H=f[y+(C<<2)>>2]|0;I=f[n>>2]|0;if((H|0)>(I|0)){J=f[o>>2]|0;f[J+(C<<2)>>2]=I;K=J}else{J=f[p>>2]|0;I=f[o>>2]|0;f[I+(C<<2)>>2]=(H|0)<(J|0)?J:H;K=I}C=C+1|0}while((C|0)<(f[g>>2]|0));L=K}else L=f[o>>2]|0;C=(f[D+(E<<2)>>2]|0)-(f[L+(E<<2)>>2]|0)|0;I=B+(E<<2)|0;f[I>>2]=C;if((C|0)>=(f[q>>2]|0)){if((C|0)>(f[s>>2]|0)){M=C-(f[r>>2]|0)|0;N=42}}else{M=(f[r>>2]|0)+C|0;N=42}if((N|0)==42){N=0;f[I>>2]=M}E=E+1|0;A=f[g>>2]|0;if((E|0)>=(A|0))break;else y=L}}}else N=16}else N=16;if((N|0)==16?(N=0,y=b+(z<<2)|0,A=c+(z<<2)|0,E=f[g>>2]|0,(E|0)>0):0){B=0;D=b+((X(x+-2|0,e)|0)<<2)|0;I=E;while(1){if((I|0)>0){E=0;do{C=f[D+(E<<2)>>2]|0;H=f[n>>2]|0;if((C|0)>(H|0)){J=f[o>>2]|0;f[J+(E<<2)>>2]=H;O=J}else{J=f[p>>2]|0;H=f[o>>2]|0;f[H+(E<<2)>>2]=(C|0)<(J|0)?J:C;O=H}E=E+1|0}while((E|0)<(f[g>>2]|0));P=O}else P=f[o>>2]|0;E=(f[y+(B<<2)>>2]|0)-(f[P+(B<<2)>>2]|0)|0;H=A+(B<<2)|0;f[H>>2]=E;if((E|0)>=(f[q>>2]|0)){if((E|0)>(f[s>>2]|0)){Q=E-(f[r>>2]|0)|0;N=29}}else{Q=(f[r>>2]|0)+E|0;N=29}if((N|0)==29){N=0;f[H>>2]=Q}B=B+1|0;I=f[g>>2]|0;if((B|0)>=(I|0))break;else D=P}}if((x|0)<=2)break a}mq(i)}while(0);if((e|0)>0)hj(h|0,0,e<<2|0)|0;e=f[g>>2]|0;if((e|0)<=0){$q(h);return 1}i=a+16|0;P=a+32|0;Q=a+12|0;O=a+28|0;L=a+20|0;M=a+24|0;a=0;K=h;G=e;while(1){if((G|0)>0){e=0;do{F=f[K+(e<<2)>>2]|0;d=f[i>>2]|0;if((F|0)>(d|0)){l=f[P>>2]|0;f[l+(e<<2)>>2]=d;R=l}else{l=f[Q>>2]|0;d=f[P>>2]|0;f[d+(e<<2)>>2]=(F|0)<(l|0)?l:F;R=d}e=e+1|0}while((e|0)<(f[g>>2]|0));S=R}else S=f[P>>2]|0;e=(f[b+(a<<2)>>2]|0)-(f[S+(a<<2)>>2]|0)|0;d=c+(a<<2)|0;f[d>>2]=e;if((e|0)>=(f[O>>2]|0)){if((e|0)>(f[M>>2]|0)){T=e-(f[L>>2]|0)|0;N=56}}else{T=(f[L>>2]|0)+e|0;N=56}if((N|0)==56){N=0;f[d>>2]=T}a=a+1|0;G=f[g>>2]|0;if((a|0)>=(G|0))break;else K=S}$q(h);return 1}function Cc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;g=a+8|0;Ah(g,b,d,e);d=e>>>0>1073741823?-1:e<<2;h=_q(d)|0;hj(h|0,0,d|0)|0;d=f[a+48>>2]|0;i=f[a+56>>2]|0;j=f[i>>2]|0;k=(f[i+4>>2]|0)-j|0;l=k>>2;a:do if((k|0)>4){m=f[a+52>>2]|0;n=a+16|0;o=a+32|0;p=a+12|0;q=a+28|0;r=a+20|0;s=a+24|0;t=d+64|0;u=d+28|0;v=(e|0)>0;w=j;x=l;while(1){y=x;x=x+-1|0;if(l>>>0<=x>>>0)break;z=f[w+(x<<2)>>2]|0;A=X(x,e)|0;if((((z|0)!=-1?(f[(f[d>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)==0:0)?(B=f[(f[(f[t>>2]|0)+12>>2]|0)+(z<<2)>>2]|0,(B|0)!=-1):0)?(z=f[u>>2]|0,C=f[m>>2]|0,D=f[C+(f[z+(B<<2)>>2]<<2)>>2]|0,E=B+1|0,F=f[C+(f[z+((((E>>>0)%3|0|0)==0?B+-2|0:E)<<2)>>2]<<2)>>2]|0,E=f[C+(f[z+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(D|0)<(x|0)&(F|0)<(x|0)&(E|0)<(x|0)):0){B=X(D,e)|0;D=X(F,e)|0;F=X(E,e)|0;if(v){E=0;do{f[h+(E<<2)>>2]=(f[b+(E+F<<2)>>2]|0)+(f[b+(E+D<<2)>>2]|0)-(f[b+(E+B<<2)>>2]|0);E=E+1|0}while((E|0)!=(e|0))}E=b+(A<<2)|0;B=c+(A<<2)|0;D=f[g>>2]|0;if((D|0)>0){F=0;z=h;C=D;while(1){if((C|0)>0){D=0;do{G=f[z+(D<<2)>>2]|0;H=f[n>>2]|0;if((G|0)>(H|0)){I=f[o>>2]|0;f[I+(D<<2)>>2]=H;J=I}else{I=f[p>>2]|0;H=f[o>>2]|0;f[H+(D<<2)>>2]=(G|0)<(I|0)?I:G;J=H}D=D+1|0}while((D|0)<(f[g>>2]|0));K=J}else K=f[o>>2]|0;D=(f[E+(F<<2)>>2]|0)-(f[K+(F<<2)>>2]|0)|0;H=B+(F<<2)|0;f[H>>2]=D;if((D|0)>=(f[q>>2]|0)){if((D|0)>(f[s>>2]|0)){L=D-(f[r>>2]|0)|0;M=39}}else{L=(f[r>>2]|0)+D|0;M=39}if((M|0)==39){M=0;f[H>>2]=L}F=F+1|0;C=f[g>>2]|0;if((F|0)>=(C|0))break;else z=K}}}else M=13;if((M|0)==13?(M=0,z=b+(A<<2)|0,C=c+(A<<2)|0,F=f[g>>2]|0,(F|0)>0):0){B=0;E=b+((X(y+-2|0,e)|0)<<2)|0;H=F;while(1){if((H|0)>0){F=0;do{D=f[E+(F<<2)>>2]|0;G=f[n>>2]|0;if((D|0)>(G|0)){I=f[o>>2]|0;f[I+(F<<2)>>2]=G;N=I}else{I=f[p>>2]|0;G=f[o>>2]|0;f[G+(F<<2)>>2]=(D|0)<(I|0)?I:D;N=G}F=F+1|0}while((F|0)<(f[g>>2]|0));O=N}else O=f[o>>2]|0;F=(f[z+(B<<2)>>2]|0)-(f[O+(B<<2)>>2]|0)|0;G=C+(B<<2)|0;f[G>>2]=F;if((F|0)>=(f[q>>2]|0)){if((F|0)>(f[s>>2]|0)){P=F-(f[r>>2]|0)|0;M=26}}else{P=(f[r>>2]|0)+F|0;M=26}if((M|0)==26){M=0;f[G>>2]=P}B=B+1|0;H=f[g>>2]|0;if((B|0)>=(H|0))break;else E=O}}if((y|0)<=2)break a}mq(i)}while(0);if((e|0)>0)hj(h|0,0,e<<2|0)|0;e=f[g>>2]|0;if((e|0)<=0){$q(h);return 1}i=a+16|0;O=a+32|0;P=a+12|0;N=a+28|0;K=a+20|0;L=a+24|0;a=0;J=h;d=e;while(1){if((d|0)>0){e=0;do{l=f[J+(e<<2)>>2]|0;j=f[i>>2]|0;if((l|0)>(j|0)){k=f[O>>2]|0;f[k+(e<<2)>>2]=j;Q=k}else{k=f[P>>2]|0;j=f[O>>2]|0;f[j+(e<<2)>>2]=(l|0)<(k|0)?k:l;Q=j}e=e+1|0}while((e|0)<(f[g>>2]|0));R=Q}else R=f[O>>2]|0;e=(f[b+(a<<2)>>2]|0)-(f[R+(a<<2)>>2]|0)|0;j=c+(a<<2)|0;f[j>>2]=e;if((e|0)>=(f[N>>2]|0)){if((e|0)>(f[L>>2]|0)){S=e-(f[K>>2]|0)|0;M=53}}else{S=(f[K>>2]|0)+e|0;M=53}if((M|0)==53){M=0;f[j>>2]=S}a=a+1|0;d=f[g>>2]|0;if((a|0)>=(d|0))break;else J=R}$q(h);return 1}function Dc(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,J=0;h=u;u=u+48|0;i=h+28|0;j=h+24|0;k=h;l=h+12|0;m=h+40|0;if((c|0)<0){n=0;u=h;return n|0}if(!c){n=1;u=h;return n|0}o=(d|0)>1;p=o?d:1;f[k>>2]=0;d=k+4|0;f[d>>2]=0;f[k+8>>2]=0;$j(k,c);q=k+8|0;if(o){o=0;r=0;while(1){s=1;t=f[a+(r<<2)>>2]|0;do{v=f[a+(s+r<<2)>>2]|0;t=t>>>0>>0?v:t;s=s+1|0}while((s|0)!=(p|0));s=(_(t|0)|0)^31;v=t>>>0>o>>>0?t:o;w=(t|0)==0?1:s+1|0;f[i>>2]=w;s=f[d>>2]|0;if(s>>>0<(f[q>>2]|0)>>>0){f[s>>2]=w;f[d>>2]=s+4}else Ci(k,i);r=r+p|0;if((r|0)>=(c|0)){x=v;break}else o=v}}else{o=0;r=0;while(1){v=f[a+(o<<2)>>2]|0;s=(_(v|0)|0)^31;w=v>>>0>r>>>0?v:r;y=(v|0)==0?1:s+1|0;f[i>>2]=y;s=f[d>>2]|0;if(s>>>0<(f[q>>2]|0)>>>0){f[s>>2]=y;f[d>>2]=s+4}else Ci(k,i);o=o+p|0;if((o|0)>=(c|0)){x=w;break}else r=w}}f[l>>2]=0;r=l+4|0;f[r>>2]=0;f[l+8>>2]=0;o=f[k>>2]|0;q=(f[d>>2]|0)-o|0;w=q>>2;if(w){if(w>>>0>1073741823)mq(l);s=dn(q)|0;f[r>>2]=s;f[l>>2]=s;f[l+8>>2]=s+(w<<2);w=s;if((q|0)>0){y=s+(q>>>2<<2)|0;Rg(s|0,o|0,q|0)|0;f[r>>2]=y;q=y-w>>2;if((y|0)==(s|0)){z=q;A=s;B=0;C=0}else{y=0;o=0;v=0;while(1){D=Tn(o|0,v|0,f[s+(y<<2)>>2]|0,0)|0;E=I;y=y+1|0;if(y>>>0>=q>>>0){z=q;A=s;B=D;C=E;break}else{o=D;v=E}}}}else{F=w;G=18}}else{F=0;G=18}if((G|0)==18){z=0;A=F;B=0;C=0}F=rg(A,z,32,i)|0;z=I;A=f[i>>2]<<3;w=Rn(A|0,((A|0)<0)<<31>>31|0,1)|0;A=I;v=on(B|0,C|0,p|0,0)|0;C=Tn(F|0,z|0,v|0,I|0)|0;v=Tn(C|0,I|0,w|0,A|0)|0;A=I;w=f[l>>2]|0;if(w|0){l=f[r>>2]|0;if((l|0)!=(w|0))f[r>>2]=l+(~((l+-4-w|0)>>>2)<<2);br(w)}w=rg(a,c,x,i)|0;l=f[i>>2]|0;r=((x-l|0)/64|0)+l<<3;C=l<<3;z=Tn(w|0,I|0,C|0,((C|0)<0)<<31>>31|0)|0;C=Tn(z|0,I|0,r|0,((r|0)<0)<<31>>31|0)|0;r=I;z=(_((x>>>0>1?x:1)|0)|0)^30;if(e){f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;w=dn(32)|0;f[i>>2]=w;f[i+8>>2]=-2147483616;f[i+4>>2]=22;F=w;B=13044;o=F+22|0;do{b[F>>0]=b[B>>0]|0;F=F+1|0;B=B+1|0}while((F|0)<(o|0));b[w+22>>0]=0;w=(sh(e,i)|0)==0;if((b[i+11>>0]|0)<0)br(f[i>>2]|0);if(!w){f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;w=dn(32)|0;f[i>>2]=w;f[i+8>>2]=-2147483616;f[i+4>>2]=22;F=w;B=13044;o=F+22|0;do{b[F>>0]=b[B>>0]|0;F=F+1|0;B=B+1|0}while((F|0)<(o|0));b[w+22>>0]=0;w=Ck(e,i)|0;if((b[i+11>>0]|0)<0)br(f[i>>2]|0);H=w}else G=32}else G=32;if((G|0)==32)H=z>>>0<18&((A|0)>(r|0)|(A|0)==(r|0)&v>>>0>=C>>>0)&1;b[m>>0]=H;C=g+16|0;v=f[C+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[C>>2]|0)>>>0>0)){f[j>>2]=f[g+4>>2];f[i>>2]=f[j>>2];ye(g,i,m,m+1|0)|0}switch(H|0){case 0:{J=md(a,c,p,k,g)|0;break}case 1:{J=Nc(a,c,x,l,e,g)|0;break}default:J=0}g=f[k>>2]|0;if(g|0){k=f[d>>2]|0;if((k|0)!=(g|0))f[d>>2]=k+(~((k+-4-g|0)>>>2)<<2);br(g)}n=J;u=h;return n|0}function Ec(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;if((b|0)<0)return;c=a+12|0;d=f[c>>2]|0;e=f[a+8>>2]|0;g=e;h=d;if(d-e>>2>>>0<=b>>>0)return;e=g+(b<<2)|0;d=f[(f[e>>2]|0)+56>>2]|0;i=f[(f[g+(b<<2)>>2]|0)+60>>2]|0;g=e+4|0;if((g|0)!=(h|0)){j=g;g=e;do{k=f[j>>2]|0;f[j>>2]=0;l=f[g>>2]|0;f[g>>2]=k;if(l|0){k=l+88|0;m=f[k>>2]|0;f[k>>2]=0;if(m|0){k=f[m+8>>2]|0;if(k|0){n=m+12|0;if((f[n>>2]|0)!=(k|0))f[n>>2]=k;br(k)}br(m)}m=f[l+68>>2]|0;if(m|0){k=l+72|0;n=f[k>>2]|0;if((n|0)!=(m|0))f[k>>2]=n+(~((n+-4-m|0)>>>2)<<2);br(m)}m=l+64|0;n=f[m>>2]|0;f[m>>2]=0;if(n|0){m=f[n>>2]|0;if(m|0){k=n+4|0;if((f[k>>2]|0)!=(m|0))f[k>>2]=m;br(m)}br(n)}br(l)}j=j+4|0;g=g+4|0}while((j|0)!=(h|0));j=f[c>>2]|0;if((j|0)!=(g|0)){o=g;p=j;q=24}}else{o=e;p=h;q=24}if((q|0)==24){q=p;do{p=q+-4|0;f[c>>2]=p;h=f[p>>2]|0;f[p>>2]=0;if(h|0){p=h+88|0;e=f[p>>2]|0;f[p>>2]=0;if(e|0){p=f[e+8>>2]|0;if(p|0){j=e+12|0;if((f[j>>2]|0)!=(p|0))f[j>>2]=p;br(p)}br(e)}e=f[h+68>>2]|0;if(e|0){p=h+72|0;j=f[p>>2]|0;if((j|0)!=(e|0))f[p>>2]=j+(~((j+-4-e|0)>>>2)<<2);br(e)}e=h+64|0;j=f[e>>2]|0;f[e>>2]=0;if(j|0){e=f[j>>2]|0;if(e|0){p=j+4|0;if((f[p>>2]|0)!=(e|0))f[p>>2]=e;br(e)}br(j)}br(h)}q=f[c>>2]|0}while((q|0)!=(o|0))}o=f[a+4>>2]|0;a:do if(o|0){q=o+44|0;c=f[q>>2]|0;h=f[o+40>>2]|0;while(1){if((h|0)==(c|0))break a;r=h+4|0;if((f[(f[h>>2]|0)+40>>2]|0)==(i|0))break;else h=r}if((r|0)!=(c|0)){j=r;e=h;do{p=f[j>>2]|0;f[j>>2]=0;g=f[e>>2]|0;f[e>>2]=p;if(g|0){Qi(g);br(g)}j=j+4|0;e=e+4|0}while((j|0)!=(c|0));j=f[q>>2]|0;if((j|0)==(e|0))break;else{s=e;t=j}}else{s=h;t=c}j=t;do{g=j+-4|0;f[q>>2]=g;p=f[g>>2]|0;f[g>>2]=0;if(p|0){Qi(p);br(p)}j=f[q>>2]|0}while((j|0)!=(s|0))}while(0);b:do if((d|0)<5){s=f[a+20+(d*12|0)>>2]|0;t=a+20+(d*12|0)+4|0;r=f[t>>2]|0;i=r;c:do if((s|0)==(r|0))u=s;else{o=s;while(1){if((f[o>>2]|0)==(b|0)){u=o;break c}o=o+4|0;if((o|0)==(r|0))break b}}while(0);if((u|0)!=(r|0)){s=u+4|0;o=i-s|0;j=o>>2;if(!j)v=r;else{Xl(u|0,s|0,o|0)|0;v=f[t>>2]|0}o=u+(j<<2)|0;if((v|0)!=(o|0))f[t>>2]=v+(~((v+-4-o|0)>>>2)<<2)}}while(0);v=f[a+24>>2]|0;u=f[a+20>>2]|0;d=u;if((v|0)!=(u|0)){o=v-u>>2;u=0;do{v=d+(u<<2)|0;j=f[v>>2]|0;if((j|0)>(b|0))f[v>>2]=j+-1;u=u+1|0}while(u>>>0>>0)}o=f[a+36>>2]|0;u=f[a+32>>2]|0;d=u;if((o|0)!=(u|0)){j=o-u>>2;u=0;do{o=d+(u<<2)|0;v=f[o>>2]|0;if((v|0)>(b|0))f[o>>2]=v+-1;u=u+1|0}while(u>>>0>>0)}j=f[a+48>>2]|0;u=f[a+44>>2]|0;d=u;if((j|0)!=(u|0)){v=j-u>>2;u=0;do{j=d+(u<<2)|0;o=f[j>>2]|0;if((o|0)>(b|0))f[j>>2]=o+-1;u=u+1|0}while(u>>>0>>0)}v=f[a+60>>2]|0;u=f[a+56>>2]|0;d=u;if((v|0)!=(u|0)){o=v-u>>2;u=0;do{v=d+(u<<2)|0;j=f[v>>2]|0;if((j|0)>(b|0))f[v>>2]=j+-1;u=u+1|0}while(u>>>0>>0)}o=f[a+72>>2]|0;u=f[a+68>>2]|0;a=u;if((o|0)==(u|0))return;d=o-u>>2;u=0;do{o=a+(u<<2)|0;j=f[o>>2]|0;if((j|0)>(b|0))f[o>>2]=j+-1;u=u+1|0}while(u>>>0>>0);return}function Fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;d=u;u=u+32|0;e=d+16|0;g=d;h=c+4|0;i=f[(f[h>>2]|0)+48>>2]|0;j=c+12|0;c=f[j>>2]|0;k=dn(32)|0;f[e>>2]=k;f[e+8>>2]=-2147483616;f[e+4>>2]=17;l=k;m=12932;n=l+17|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[k+17>>0]=0;k=i+16|0;o=f[k>>2]|0;if(o){p=k;q=o;a:while(1){o=q;while(1){if((f[o+16>>2]|0)>=(c|0))break;r=f[o+4>>2]|0;if(!r){s=p;break a}else o=r}q=f[o>>2]|0;if(!q){s=o;break}else p=o}if(((s|0)!=(k|0)?(c|0)>=(f[s+16>>2]|0):0)?(c=s+20|0,(sh(c,e)|0)!=0):0)t=yk(c,e,-1)|0;else v=10}else v=10;if((v|0)==10)t=yk(i,e,-1)|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);i=(1<>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;if(i&1|0?(t=(_(i|0)|0)^31,(t+-1|0)>>>0<=28):0){f[e>>2]=t+1;i=2<>2]=i+-1;t=i+-2|0;f[e+8>>2]=t;f[e+12>>2]=(t|0)/2|0}t=Ki(f[j>>2]|0,f[h>>2]|0)|0;i=f[(f[h>>2]|0)+48>>2]|0;c=f[j>>2]|0;s=dn(32)|0;f[g>>2]=s;f[g+8>>2]=-2147483616;f[g+4>>2]=17;l=s;m=12804;n=l+17|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[s+17>>0]=0;s=i+16|0;m=f[s>>2]|0;if(m){l=s;n=m;b:while(1){m=n;while(1){if((f[m+16>>2]|0)>=(c|0))break;k=f[m+4>>2]|0;if(!k){w=l;break b}else m=k}n=f[m>>2]|0;if(!n){w=m;break}else l=m}if(((w|0)!=(s|0)?(c|0)>=(f[w+16>>2]|0):0)?(c=w+20|0,(sh(c,g)|0)!=0):0)x=yk(c,g,t)|0;else v=25}else v=25;if((v|0)==25)x=yk(i,g,t)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);switch(x|0){case 6:{x=f[j>>2]|0;t=f[h>>2]|0;i=f[(f[(f[t+4>>2]|0)+8>>2]|0)+(x<<2)>>2]|0;do if((Qa[f[(f[t>>2]|0)+8>>2]&127](t)|0)==1){rf(g,t,6,x,e,514);c=f[g>>2]|0;if(!c){f[g>>2]=0;y=g;v=34;break}else{z=g;A=c;break}}else{y=g;v=34}while(0);if((v|0)==34){x=dn(24)|0;f[x+4>>2]=i;i=x+8|0;f[i>>2]=f[e>>2];f[i+4>>2]=f[e+4>>2];f[i+8>>2]=f[e+8>>2];f[i+12>>2]=f[e+12>>2];f[x>>2]=2320;i=x;f[g>>2]=i;z=y;A=i}f[a>>2]=A;f[z>>2]=0;u=d;return}case 0:{z=f[j>>2]|0;j=f[h>>2]|0;h=f[(f[(f[j+4>>2]|0)+8>>2]|0)+(z<<2)>>2]|0;do if((Qa[f[(f[j>>2]|0)+8>>2]&127](j)|0)==1){rf(g,j,0,z,e,514);A=f[g>>2]|0;if(!A){f[g>>2]=0;B=g;v=41;break}else{C=g;D=A;break}}else{B=g;v=41}while(0);if((v|0)==41){v=dn(24)|0;f[v+4>>2]=h;h=v+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[v>>2]=2320;e=v;f[g>>2]=e;C=B;D=e}f[a>>2]=D;f[C>>2]=0;u=d;return}default:{f[a>>2]=0;u=d;return}}}function Gc(a){a=a|0;var b=0,c=0,d=0,e=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,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,Q=0,R=0,S=0,T=0;b=u;u=u+32|0;c=b+20|0;d=b+8|0;e=b;g=a+4|0;h=f[g>>2]|0;i=f[a>>2]|0;j=h-i|0;k=j>>2;f[c>>2]=0;l=c+4|0;f[l>>2]=0;m=c+8|0;f[m>>2]=0;n=i;if(k|0){if((j|0)<0)mq(c);j=((k+-1|0)>>>5)+1|0;o=dn(j<<2)|0;f[c>>2]=o;f[m>>2]=j;f[l>>2]=k;l=k>>>5;hj(o|0,0,l<<2|0)|0;j=k&31;k=o+(l<<2)|0;if(j|0)f[k>>2]=f[k>>2]&~(-1>>>(32-j|0))}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;k=a+12|0;l=e+4|0;o=d+8|0;m=n;n=h;h=i;while(1){if((n|0)==(h|0))break;else{p=0;q=0;r=h;s=m}while(1){i=f[c>>2]|0;do if(!(f[i+(q>>>5<<2)>>2]&1<<(q&31))){t=f[d>>2]|0;v=f[j>>2]|0;if((v|0)==(t|0))w=t;else{x=v+(~((v+-8-t|0)>>>3)<<3)|0;f[j>>2]=x;w=x}x=q;while(1){v=x+1|0;y=((v>>>0)%3|0|0)==0?x+-2|0:v;if((y|0)==-1){z=x;A=r;B=i;C=s;D=t;E=w;break}v=f[(f[k>>2]|0)+(y<<2)>>2]|0;y=v+1|0;if((v|0)==-1){z=x;A=r;B=i;C=s;D=t;E=w;break}F=((y>>>0)%3|0|0)==0?v+-2|0:y;if(!((F|0)!=(q|0)&(F|0)!=-1)){z=x;A=r;B=i;C=s;D=t;E=w;break}if(!(f[i+(F>>>5<<2)>>2]&1<<(F&31)))x=F;else{z=x;A=r;B=i;C=s;D=t;E=w;break}}a:while(1){t=B+(z>>>5<<2)|0;f[t>>2]=f[t>>2]|1<<(z&31);t=z+1|0;F=((t>>>0)%3|0|0)==0?z+-2|0:t;t=f[C+(F<<2)>>2]|0;G=(((z>>>0)%3|0|0)==0?2:-1)+z|0;if((D|0)!=(E|0))if((G|0)==-1){y=D;do{if((f[y>>2]|0)==(t|0)?(v=f[y+4>>2]|0,(v|0)!=-1):0){H=v;I=-1;J=-1;K=25;break a}y=y+8|0}while((y|0)!=(E|0))}else{y=D;do{if((f[y>>2]|0)==(t|0)?(L=f[y+4>>2]|0,M=f[(f[k>>2]|0)+(G<<2)>>2]|0,(M|0)!=(L|0)):0){K=24;break a}y=y+8|0}while((y|0)!=(E|0))}f[e>>2]=0;f[e>>2]=f[C+(G<<2)>>2];f[l>>2]=F;if((E|0)==(f[o>>2]|0))ei(d,e);else{y=e;t=f[y+4>>2]|0;v=E;f[v>>2]=f[y>>2];f[v+4>>2]=t;f[j>>2]=(f[j>>2]|0)+8}if((G|0)==-1){K=38;break}t=f[(f[k>>2]|0)+(G<<2)>>2]|0;if((t|0)==-1){K=38;break}v=t+(((t>>>0)%3|0|0)==0?2:-1)|0;if(!((v|0)!=(x|0)&(v|0)!=-1)){K=40;break}t=f[a>>2]|0;z=v;A=t;B=f[c>>2]|0;C=t;D=f[d>>2]|0;E=f[j>>2]|0}if((K|0)==24){K=0;if((L|0)==-1){N=-1;O=-1;P=M;Q=G}else{H=L;I=M;J=G;K=25}}else if((K|0)==38){K=0;K=40}if((K|0)==25){K=0;N=H;O=f[(f[k>>2]|0)+(H<<2)>>2]|0;P=I;Q=J}else if((K|0)==40){K=0;R=p;S=f[a>>2]|0;break}if((P|0)!=-1)f[(f[k>>2]|0)+(P<<2)>>2]=-1;x=f[k>>2]|0;if((O|0)!=-1)f[x+(O<<2)>>2]=-1;f[x+(Q<<2)>>2]=-1;f[x+(N<<2)>>2]=-1;R=1;S=A}else{R=p;S=r}while(0);q=q+1|0;T=f[g>>2]|0;s=S;if(q>>>0>=T-S>>2>>>0)break;else{p=R;r=S}}if(R){m=s;n=T;h=S}else break}S=f[d>>2]|0;if(S|0){d=f[j>>2]|0;if((d|0)!=(S|0))f[j>>2]=d+(~((d+-8-S|0)>>>3)<<3);br(S)}S=f[c>>2]|0;if(!S){u=b;return 1}br(S);u=b;return 1}function Hc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;e=a+8|0;a:do if(f[e>>2]|0?(g=f[a>>2]|0,h=a+4|0,f[a>>2]=h,f[(f[h>>2]|0)+8>>2]=0,f[h>>2]=0,f[e>>2]=0,i=f[g+4>>2]|0,j=(i|0)==0?g:i,j|0):0){i=a+4|0;g=j;j=f[c>>2]|0;while(1){if((j|0)==(f[d>>2]|0))break;k=g+16|0;Ql(k,j+16|0)|0;Ql(g+28|0,j+28|0)|0;l=g+8|0;m=f[l>>2]|0;do if(m){n=f[m>>2]|0;if((n|0)==(g|0)){f[m>>2]=0;o=f[m+4>>2]|0;if(!o){p=m;break}else q=o;while(1){o=f[q>>2]|0;if(o|0){q=o;continue}o=f[q+4>>2]|0;if(!o)break;else q=o}p=q;break}else{f[m+4>>2]=0;if(!n){p=m;break}else r=n;while(1){o=f[r>>2]|0;if(o|0){r=o;continue}o=f[r+4>>2]|0;if(!o)break;else r=o}p=r;break}}else p=0;while(0);m=f[h>>2]|0;do if(m){n=b[k+11>>0]|0;o=n<<24>>24<0;s=o?f[g+20>>2]|0:n&255;n=o?f[k>>2]|0:k;o=m;while(1){t=o+16|0;u=b[t+11>>0]|0;v=u<<24>>24<0;w=v?f[o+20>>2]|0:u&255;u=w>>>0>>0?w:s;if((u|0)!=0?(x=Pk(n,v?f[t>>2]|0:t,u)|0,(x|0)!=0):0)if((x|0)<0)y=22;else y=24;else if(s>>>0>>0)y=22;else y=24;if((y|0)==22){y=0;w=f[o>>2]|0;if(!w){y=23;break}else z=w}else if((y|0)==24){y=0;A=o+4|0;w=f[A>>2]|0;if(!w){y=26;break}else z=w}o=z}if((y|0)==23){y=0;B=o;C=o;break}else if((y|0)==26){y=0;B=A;C=o;break}}else{B=h;C=h}while(0);f[g>>2]=0;f[g+4>>2]=0;f[l>>2]=C;f[B>>2]=g;m=f[f[a>>2]>>2]|0;if(!m)D=g;else{f[a>>2]=m;D=f[B>>2]|0}Ae(f[i>>2]|0,D);f[e>>2]=(f[e>>2]|0)+1;m=f[j+4>>2]|0;if(!m){k=j+8|0;s=f[k>>2]|0;if((f[s>>2]|0)==(j|0))E=s;else{s=k;do{k=f[s>>2]|0;s=k+8|0;n=f[s>>2]|0}while((f[n>>2]|0)!=(k|0));E=n}}else{s=m;while(1){l=f[s>>2]|0;if(!l)break;else s=l}E=s}f[c>>2]=E;if(!p)break a;else{g=p;j=E}}j=f[g+8>>2]|0;if(!j)F=g;else{i=j;while(1){j=f[i+8>>2]|0;if(!j)break;else i=j}F=i}sj(a,F)}while(0);F=f[c>>2]|0;E=f[d>>2]|0;if((F|0)==(E|0))return;else G=F;while(1){Qe(a,G+16|0)|0;F=f[G+4>>2]|0;if(!F){d=G+8|0;p=f[d>>2]|0;if((f[p>>2]|0)==(G|0))H=p;else{p=d;do{d=f[p>>2]|0;p=d+8|0;e=f[p>>2]|0}while((f[e>>2]|0)!=(d|0));H=e}}else{p=F;while(1){i=f[p>>2]|0;if(!i)break;else p=i}H=p}f[c>>2]=H;if((H|0)==(E|0))break;else G=H}return}function Ic(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,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;g=u;u=u+16|0;h=g;i=c+4|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;j=dn(16)|0;f[h>>2]=j;f[h+8>>2]=-2147483632;f[h+4>>2]=15;k=j;l=12916;m=k+15|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[j+15>>0]=0;j=yk(i,h,-1)|0;if((b[h+11>>0]|0)<0)br(f[h>>2]|0);switch(j|0){case 0:{n=dn(56)|0;k=n;m=k+56|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(m|0));zn(n);o=3728;p=n;break}case -1:{if((Yh(i)|0)==10){n=dn(56)|0;k=n;m=k+56|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(m|0));zn(n);o=3728;p=n}else q=6;break}default:q=6}a:do if((q|0)==6){n=d+8|0;r=d+12|0;s=f[r>>2]|0;t=f[n>>2]|0;b:do if((s-t|0)>0){v=h+8|0;w=h+4|0;x=c+20|0;y=h+11|0;z=0;A=t;B=s;c:while(1){C=f[(f[A+(z<<2)>>2]|0)+28>>2]|0;switch(C|0){case 9:{q=12;break}case 6:case 5:case 4:case 2:{D=A;E=B;break}default:{if((C|2|0)!=3)break c;if((C|0)==9)q=12;else{D=A;E=B}}}if((q|0)==12){q=0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;C=dn(32)|0;f[h>>2]=C;f[v>>2]=-2147483616;f[w>>2]=17;k=C;l=12932;m=k+17|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[C+17>>0]=0;F=f[x>>2]|0;if(F){G=x;H=F;d:while(1){F=H;while(1){if((f[F+16>>2]|0)>=0)break;I=f[F+4>>2]|0;if(!I){J=G;break d}else F=I}H=f[F>>2]|0;if(!H){J=F;break}else G=F}if(((J|0)!=(x|0)?(f[J+16>>2]|0)<=0:0)?(G=J+20|0,(sh(G,h)|0)!=0):0)K=yk(G,h,-1)|0;else q=21}else q=21;if((q|0)==21){q=0;K=yk(i,h,-1)|0}if((b[y>>0]|0)<0)br(f[h>>2]|0);if((K|0)<1)break;D=f[n>>2]|0;E=f[r>>2]|0}z=z+1|0;if((z|0)>=(E-D>>2|0))break b;else{A=D;B=E}}if((j|0)!=1){B=dn(56)|0;k=B;m=k+56|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(m|0));zn(B);o=3728;p=B;break a}f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;A=dn(32)|0;f[h>>2]=A;f[h+8>>2]=-2147483616;f[h+4>>2]=24;k=A;l=12950;m=k+24|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[A+24>>0]=0;f[a>>2]=-1;dj(a+4|0,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}while(0);r=dn(56)|0;k=r;m=k+56|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(m|0));zn(r);o=3668;p=r}while(0);f[p>>2]=o;tp(p,d);Ad(a,p,i,e);if(!(f[a>>2]|0)){e=a+4|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);f[c+40>>2]=f[p+52>>2];f[c+44>>2]=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}Va[f[(f[p>>2]|0)+4>>2]&127](p);u=g;return}function Jc(a){a=a|0;var b=0,c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;b=u;u=u+32|0;c=b+4|0;d=b;e=a+16|0;g=f[e>>2]|0;if(g>>>0>112){f[e>>2]=g+-113;g=a+4|0;e=f[g>>2]|0;h=f[e>>2]|0;i=e+4|0;f[g>>2]=i;e=a+8|0;j=f[e>>2]|0;k=a+12|0;l=f[k>>2]|0;m=l;do if((j|0)==(l|0)){n=f[a>>2]|0;o=n;if(i>>>0>n>>>0){p=i;q=((p-o>>2)+1|0)/-2|0;r=i+(q<<2)|0;s=j-p|0;p=s>>2;if(!p)t=i;else{Xl(r|0,i|0,s|0)|0;t=f[g>>2]|0}s=r+(p<<2)|0;f[e>>2]=s;f[g>>2]=t+(q<<2);v=s;break}s=m-o>>1;o=(s|0)==0?1:s;if(o>>>0>1073741823){s=ra(8)|0;Wo(s,14941);f[s>>2]=6944;va(s|0,1080,114)}s=dn(o<<2)|0;q=s;p=s+(o>>>2<<2)|0;r=p;w=s+(o<<2)|0;if((i|0)==(j|0)){x=r;y=n}else{n=p;p=r;o=i;do{f[n>>2]=f[o>>2];n=p+4|0;p=n;o=o+4|0}while((o|0)!=(j|0));x=p;y=f[a>>2]|0}f[a>>2]=q;f[g>>2]=r;f[e>>2]=x;f[k>>2]=w;if(!y)v=x;else{br(y);v=f[e>>2]|0}}else v=j;while(0);f[v>>2]=h;f[e>>2]=(f[e>>2]|0)+4;u=b;return}e=a+8|0;h=f[e>>2]|0;v=a+4|0;j=h-(f[v>>2]|0)|0;y=a+12|0;x=f[y>>2]|0;k=x-(f[a>>2]|0)|0;if(j>>>0>=k>>>0){g=k>>1;k=(g|0)==0?1:g;f[c+12>>2]=0;f[c+16>>2]=a+12;if(k>>>0>1073741823){g=ra(8)|0;Wo(g,14941);f[g>>2]=6944;va(g|0,1080,114)}g=dn(k<<2)|0;f[c>>2]=g;i=g+(j>>2<<2)|0;j=c+8|0;f[j>>2]=i;m=c+4|0;f[m>>2]=i;i=c+12|0;f[i>>2]=g+(k<<2);k=dn(4068)|0;f[d>>2]=k;kg(c,d);d=f[e>>2]|0;while(1){z=f[v>>2]|0;if((d|0)==(z|0))break;k=d+-4|0;dg(c,k);d=k}k=z;z=f[a>>2]|0;f[a>>2]=f[c>>2];f[c>>2]=z;f[v>>2]=f[m>>2];f[m>>2]=k;m=f[e>>2]|0;f[e>>2]=f[j>>2];f[j>>2]=m;g=f[y>>2]|0;f[y>>2]=f[i>>2];f[i>>2]=g;g=m;if((d|0)!=(g|0))f[j>>2]=g+(~((g+-4-k|0)>>>2)<<2);if(z|0)br(z);u=b;return}if((x|0)!=(h|0)){h=dn(4068)|0;f[c>>2]=h;kg(a,c);u=b;return}h=dn(4068)|0;f[c>>2]=h;dg(a,c);c=f[v>>2]|0;h=f[c>>2]|0;x=c+4|0;f[v>>2]=x;c=f[e>>2]|0;z=f[y>>2]|0;k=z;do if((c|0)==(z|0)){g=f[a>>2]|0;j=g;if(x>>>0>g>>>0){d=x;m=((d-j>>2)+1|0)/-2|0;i=x+(m<<2)|0;t=c-d|0;d=t>>2;if(!d)A=x;else{Xl(i|0,x|0,t|0)|0;A=f[v>>2]|0}t=i+(d<<2)|0;f[e>>2]=t;f[v>>2]=A+(m<<2);B=t;break}t=k-j>>1;j=(t|0)==0?1:t;if(j>>>0>1073741823){t=ra(8)|0;Wo(t,14941);f[t>>2]=6944;va(t|0,1080,114)}t=dn(j<<2)|0;m=t;d=t+(j>>>2<<2)|0;i=d;l=t+(j<<2)|0;if((x|0)==(c|0)){C=i;D=g}else{g=d;d=i;j=x;do{f[g>>2]=f[j>>2];g=d+4|0;d=g;j=j+4|0}while((j|0)!=(c|0));C=d;D=f[a>>2]|0}f[a>>2]=m;f[v>>2]=i;f[e>>2]=C;f[y>>2]=l;if(!D)B=C;else{br(D);B=f[e>>2]|0}}else B=c;while(0);f[B>>2]=h;f[e>>2]=(f[e>>2]|0)+4;u=b;return}function Kc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,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,Q=0,R=0;e=u;u=u+16|0;g=e+8|0;h=e+4|0;i=e;j=a+64|0;k=f[j>>2]|0;if((f[k+28>>2]|0)==(f[k+24>>2]|0)){u=e;return}l=c+96|0;c=a+52|0;m=d+84|0;n=d+68|0;d=a+56|0;o=a+60|0;p=a+12|0;q=a+28|0;r=a+40|0;s=a+44|0;t=a+48|0;v=0;w=0;x=k;while(1){k=f[(f[x+24>>2]|0)+(w<<2)>>2]|0;if((k|0)==-1){y=v;z=x}else{A=v+1|0;B=f[(f[l>>2]|0)+(((k|0)/3|0)*12|0)+(((k|0)%3|0)<<2)>>2]|0;if(!(b[m>>0]|0))C=f[(f[n>>2]|0)+(B<<2)>>2]|0;else C=B;f[g>>2]=C;B=f[d>>2]|0;if(B>>>0<(f[o>>2]|0)>>>0){f[B>>2]=C;f[d>>2]=B+4}else Ci(c,g);f[g>>2]=k;f[h>>2]=0;a:do if(!(f[(f[p>>2]|0)+(w>>>5<<2)>>2]&1<<(w&31)))D=k;else{B=k+1|0;E=((B>>>0)%3|0|0)==0?k+-2|0:B;if(((E|0)!=-1?(f[(f[a>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)==0:0)?(B=f[(f[(f[j>>2]|0)+12>>2]|0)+(E<<2)>>2]|0,E=B+1|0,(B|0)!=-1):0){F=((E>>>0)%3|0|0)==0?B+-2|0:E;f[h>>2]=F;if((F|0)==-1){D=k;break}else G=F;while(1){f[g>>2]=G;F=G+1|0;E=((F>>>0)%3|0|0)==0?G+-2|0:F;if((E|0)==-1)break;if(f[(f[a>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)break;F=f[(f[(f[j>>2]|0)+12>>2]|0)+(E<<2)>>2]|0;E=F+1|0;if((F|0)==-1)break;B=((E>>>0)%3|0|0)==0?F+-2|0:E;f[h>>2]=B;if((B|0)==-1){D=G;break a}else G=B}f[h>>2]=-1;D=G;break}f[h>>2]=-1;D=k}while(0);f[(f[q>>2]|0)+(D<<2)>>2]=v;k=f[s>>2]|0;if((k|0)==(f[t>>2]|0))Ci(r,g);else{f[k>>2]=f[g>>2];f[s>>2]=k+4}k=f[j>>2]|0;B=f[g>>2]|0;b:do if(((B|0)!=-1?(E=(((B>>>0)%3|0|0)==0?2:-1)+B|0,(E|0)!=-1):0)?(F=f[(f[k+12>>2]|0)+(E<<2)>>2]|0,(F|0)!=-1):0){E=F+(((F>>>0)%3|0|0)==0?2:-1)|0;f[h>>2]=E;if((E|0)!=-1&(E|0)!=(B|0)){F=A;H=v;I=E;while(1){E=I+1|0;J=((E>>>0)%3|0|0)==0?I+-2|0:E;do if(f[(f[a>>2]|0)+(J>>>5<<2)>>2]&1<<(J&31)){E=F+1|0;K=f[(f[l>>2]|0)+(((I|0)/3|0)*12|0)+(((I|0)%3|0)<<2)>>2]|0;if(!(b[m>>0]|0))L=f[(f[n>>2]|0)+(K<<2)>>2]|0;else L=K;f[i>>2]=L;K=f[d>>2]|0;if(K>>>0<(f[o>>2]|0)>>>0){f[K>>2]=L;f[d>>2]=K+4}else Ci(c,i);K=f[s>>2]|0;if((K|0)==(f[t>>2]|0)){Ci(r,h);M=E;N=F;break}else{f[K>>2]=f[h>>2];f[s>>2]=K+4;M=E;N=F;break}}else{M=F;N=H}while(0);f[(f[q>>2]|0)+(f[h>>2]<<2)>>2]=N;O=f[j>>2]|0;J=f[h>>2]|0;if((J|0)==-1)break;E=(((J>>>0)%3|0|0)==0?2:-1)+J|0;if((E|0)==-1)break;J=f[(f[O+12>>2]|0)+(E<<2)>>2]|0;if((J|0)==-1)break;I=J+(((J>>>0)%3|0|0)==0?2:-1)|0;f[h>>2]=I;if(!((I|0)!=-1?(I|0)!=(f[g>>2]|0):0)){P=M;Q=O;break b}else{F=M;H=N}}f[h>>2]=-1;P=M;Q=O}else{P=A;Q=k}}else R=28;while(0);if((R|0)==28){R=0;f[h>>2]=-1;P=A;Q=k}y=P;z=Q}w=w+1|0;if(w>>>0>=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2>>>0)break;else{v=y;x=z}}u=e;return}function Lc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0.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,A=0,D=0,E=0,F=0;switch(c|0){case 0:{e=-149;g=24;i=4;break}case 1:{e=-1074;g=53;i=4;break}case 2:{e=-1074;g=53;i=4;break}default:j=0.0}a:do if((i|0)==4){c=a+4|0;k=a+100|0;do{l=f[c>>2]|0;if(l>>>0<(f[k>>2]|0)>>>0){f[c>>2]=l+1;m=h[l>>0]|0}else m=Di(a)|0}while((tq(m)|0)!=0);b:do switch(m|0){case 43:case 45:{l=1-(((m|0)==45&1)<<1)|0;n=f[c>>2]|0;if(n>>>0<(f[k>>2]|0)>>>0){f[c>>2]=n+1;o=h[n>>0]|0;p=l;break b}else{o=Di(a)|0;p=l;break b}break}default:{o=m;p=1}}while(0);l=0;n=o;while(1){if((n|32|0)!=(b[17452+l>>0]|0)){q=l;r=n;break}do if(l>>>0<7){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;t=h[s>>0]|0;break}else{t=Di(a)|0;break}}else t=n;while(0);s=l+1|0;if(s>>>0<8){l=s;n=t}else{q=s;r=t;break}}c:do switch(q|0){case 8:break;case 3:{i=23;break}default:{n=(d|0)!=0;if(n&q>>>0>3)if((q|0)==8)break c;else{i=23;break c}d:do if(!q){l=0;s=r;while(1){if((s|32|0)!=(b[17461+l>>0]|0)){u=l;v=s;break d}do if(l>>>0<2){w=f[c>>2]|0;if(w>>>0<(f[k>>2]|0)>>>0){f[c>>2]=w+1;x=h[w>>0]|0;break}else{x=Di(a)|0;break}}else x=s;while(0);w=l+1|0;if(w>>>0<3){l=w;s=x}else{u=w;v=x;break}}}else{u=q;v=r}while(0);switch(u|0){case 3:{s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;y=h[s>>0]|0}else y=Di(a)|0;if((y|0)==40)z=1;else{if(!(f[k>>2]|0)){j=B;break a}f[c>>2]=(f[c>>2]|0)+-1;j=B;break a}while(1){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;A=h[s>>0]|0}else A=Di(a)|0;if(!((A+-48|0)>>>0<10|(A+-65|0)>>>0<26)?!((A|0)==95|(A+-97|0)>>>0<26):0)break;z=z+1|0}if((A|0)==41){j=B;break a}s=(f[k>>2]|0)==0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if(!n){l=ir()|0;f[l>>2]=22;Rm(a,0);j=0.0;break a}if(!z){j=B;break a}else D=z;while(1){D=D+-1|0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if(!D){j=B;break a}}break}case 0:{if((v|0)==48){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;E=h[s>>0]|0}else E=Di(a)|0;if((E|32|0)==120){j=+yc(a,g,e,p,d);break a}if(!(f[k>>2]|0))F=48;else{f[c>>2]=(f[c>>2]|0)+-1;F=48}}else F=v;j=+ob(a,F,g,e,p,d);break a;break}default:{if(f[k>>2]|0)f[c>>2]=(f[c>>2]|0)+-1;s=ir()|0;f[s>>2]=22;Rm(a,0);j=0.0;break a}}}}while(0);if((i|0)==23){s=(f[k>>2]|0)==0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if((d|0)!=0&q>>>0>3){n=q;do{if(!s)f[c>>2]=(f[c>>2]|0)+-1;n=n+-1|0}while(n>>>0>3)}}j=+$($(p|0)*$(C))}while(0);return +j}function Mc(a){a=a|0;var b=0,c=0,d=0,e=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,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;b=u;u=u+16|0;c=b+4|0;d=b;e=f[a+64>>2]|0;if(!e){u=b;return}g=Qa[f[(f[e>>2]|0)+32>>2]&127](e)|0;if(!g){u=b;return}e=g+24|0;h=g+28|0;i=((f[h>>2]|0)-(f[e>>2]|0)>>2)-(f[g+44>>2]|0)|0;j=a+56|0;k=f[j>>2]|0;if(((f[k+12>>2]|0)-(f[k+8>>2]|0)|0)>4){f[c>>2]=0;l=c+4|0;f[l>>2]=0;f[c+8>>2]=0;m=c+8|0;n=0;o=k;while(1){if(!(f[(f[(f[o+8>>2]|0)+(n<<2)>>2]|0)+56>>2]|0))p=o;else{k=Ra[f[(f[a>>2]|0)+56>>2]&127](a,n)|0;f[d>>2]=k;q=k;do if(k|0){r=f[l>>2]|0;if((r|0)==(f[m>>2]|0)){Ci(c,d);break}else{f[r>>2]=q;f[l>>2]=(f[l>>2]|0)+4;break}}while(0);p=f[j>>2]|0}n=n+1|0;if((n|0)>=((f[p+12>>2]|0)-(f[p+8>>2]|0)>>2|0))break;else o=p}o=f[h>>2]|0;h=f[e>>2]|0;e=h;if((o|0)==(h|0)){s=i;t=f[c>>2]|0}else{n=o-h>>2;h=g+12|0;g=f[l>>2]|0;o=f[c>>2]|0;c=(g|0)==(o|0);j=o;d=g-o>>2;o=p+96|0;p=i;g=0;while(1){m=f[e+(g<<2)>>2]|0;if((m|0)==-1)v=p;else{q=f[o>>2]|0;k=f[q+(((m|0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]|0;r=(((m>>>0)%3|0|0)==0?2:-1)+m|0;a:do if(((r|0)!=-1?(w=f[(f[h>>2]|0)+(r<<2)>>2]|0,(w|0)!=-1):0)?(x=w+(((w>>>0)%3|0|0)==0?2:-1)|0,(x|0)!=-1):0){if(c){w=0;y=x;z=k;while(1){A=z;z=f[q+(((y|0)/3|0)*12|0)+(((y|0)%3|0)<<2)>>2]|0;B=w+((z|0)!=(A|0)&1)|0;if((y|0)==(m|0)){C=B;break a}A=(((y>>>0)%3|0|0)==0?2:-1)+y|0;if((A|0)==-1){C=B;break a}D=f[(f[h>>2]|0)+(A<<2)>>2]|0;if((D|0)==-1){C=B;break a}y=D+(((D>>>0)%3|0|0)==0?2:-1)|0;if((y|0)==-1){C=B;break a}else w=B}}else{E=0;F=x;G=m;H=k}while(1){w=f[q+(((F|0)/3|0)*12|0)+(((F|0)%3|0)<<2)>>2]|0;b:do if((w|0)==(H|0)){y=0;while(1){z=f[(f[j+(y<<2)>>2]|0)+28>>2]|0;y=y+1|0;if((f[z+(F<<2)>>2]|0)!=(f[z+(G<<2)>>2]|0)){I=H;J=28;break b}if(y>>>0>=d>>>0){K=H;L=E;break}}}else{I=w;J=28}while(0);if((J|0)==28){J=0;K=I;L=E+1|0}if((F|0)==(m|0)){C=L;break a}w=(((F>>>0)%3|0|0)==0?2:-1)+F|0;if((w|0)==-1){C=L;break a}y=f[(f[h>>2]|0)+(w<<2)>>2]|0;if((y|0)==-1){C=L;break a}w=y+(((y>>>0)%3|0|0)==0?2:-1)|0;if((w|0)==-1){C=L;break}else{y=F;E=L;F=w;H=K;G=y}}}else C=0;while(0);m=f[e+(g<<2)>>2]|0;q=m+1|0;if(((m|0)!=-1?(k=((q>>>0)%3|0|0)==0?m+-2|0:q,(k|0)!=-1):0)?(q=f[(f[h>>2]|0)+(k<<2)>>2]|0,k=q+1|0,(q|0)!=-1):0)M=((((k>>>0)%3|0|0)==0?q+-2|0:k)|0)==-1;else M=1;v=C+p+(((C|0)!=0&(M^1))<<31>>31)|0}g=g+1|0;if(g>>>0>=n>>>0){s=v;t=j;break}else p=v}}if(t|0){v=f[l>>2]|0;if((v|0)!=(t|0))f[l>>2]=v+(~((v+-4-t|0)>>>2)<<2);br(t)}N=s}else N=i;f[a+52>>2]=N;u=b;return}function Nc(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=u;u=u+32|0;j=i+4|0;k=i;l=i+16|0;m=(_(e|0)|0)^31;if((e|0)>0)if(m>>>0>17){n=0;u=i;return n|0}else o=m+1|0;else o=1;do if(g){m=dn(48)|0;f[j>>2]=m;f[j+8>>2]=-2147483600;f[j+4>>2]=33;e=m;p=13067;q=e+33|0;do{b[e>>0]=b[p>>0]|0;e=e+1|0;p=p+1|0}while((e|0)<(q|0));b[m+33>>0]=0;r=(sh(g,j)|0)==0;if((b[j+11>>0]|0)<0)br(f[j>>2]|0);if(!r){r=dn(48)|0;f[j>>2]=r;f[j+8>>2]=-2147483600;f[j+4>>2]=33;e=r;p=13067;q=e+33|0;do{b[e>>0]=b[p>>0]|0;e=e+1|0;p=p+1|0}while((e|0)<(q|0));b[r+33>>0]=0;p=Ck(g,j)|0;if((b[j+11>>0]|0)<0)br(f[j>>2]|0);if((p|0)<4){s=o+-2|0;break}if((p|0)<6){s=o+-1|0;break}if((p|0)>9){s=o+2|0;break}else{s=o+((p|0)>7&1)|0;break}}else s=o}else s=o;while(0);o=(s|0)>1?s:1;s=(o|0)<18?o:18;b[l>>0]=s;o=h+16|0;g=f[o+4>>2]|0;if(!((g|0)>0|(g|0)==0&(f[o>>2]|0)>>>0>0)){f[k>>2]=f[h+4>>2];f[j>>2]=f[k>>2];ye(h,j,l,l+1|0)|0}do switch(s&31){case 1:case 0:{n=je(a,c,d,h)|0;u=i;return n|0}case 2:{n=ie(a,c,d,h)|0;u=i;return n|0}case 3:{n=he(a,c,d,h)|0;u=i;return n|0}case 4:{n=ge(a,c,d,h)|0;u=i;return n|0}case 5:{n=fe(a,c,d,h)|0;u=i;return n|0}case 6:{n=ee(a,c,d,h)|0;u=i;return n|0}case 7:{n=de(a,c,d,h)|0;u=i;return n|0}case 8:{n=ce(a,c,d,h)|0;u=i;return n|0}case 9:{n=be(a,c,d,h)|0;u=i;return n|0}case 10:{n=ae(a,c,d,h)|0;u=i;return n|0}case 11:{n=$d(a,c,d,h)|0;u=i;return n|0}case 12:{n=_d(a,c,d,h)|0;u=i;return n|0}case 13:{n=Zd(a,c,d,h)|0;u=i;return n|0}case 14:{n=Yd(a,c,d,h)|0;u=i;return n|0}case 15:{n=Xd(a,c,d,h)|0;u=i;return n|0}case 16:{n=Wd(a,c,d,h)|0;u=i;return n|0}case 17:{n=Vd(a,c,d,h)|0;u=i;return n|0}case 18:{n=Ud(a,c,d,h)|0;u=i;return n|0}default:{n=0;u=i;return n|0}}while(0);return 0}function Oc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;wb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Pc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;xb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;yb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;zb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Ab(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*524288.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==524288){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Eb(z,A,g);a:do if((x|0)<524288){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=524288-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>524288;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-524288|0;m=x;while(1){v=524288.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==524288){C=p;D=524288;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=524288){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*1.9073486328125e-06)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*262144.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==262144){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Bb(z,A,g);a:do if((x|0)<262144){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=262144-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>262144;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-262144|0;m=x;while(1){v=262144.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==262144){C=p;D=262144;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=262144){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*3.814697265625e-06)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*65536.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==65536){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Cb(z,A,g);a:do if((x|0)<65536){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=65536-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>65536;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-65536|0;m=x;while(1){v=65536.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==65536){C=p;D=65536;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=65536){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.0000152587890625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Wc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*32768.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==32768){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Db(z,A,g);a:do if((x|0)<32768){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=32768-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>32768;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-32768|0;m=x;while(1){v=32768.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==32768){C=p;D=32768;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=32768){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000030517578125)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Xc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*8192.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==8192){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Fb(z,A,g);a:do if((x|0)<8192){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=8192-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>8192;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-8192|0;m=x;while(1){v=8192.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==8192){C=p;D=8192;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=8192){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.0001220703125)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Gb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function Zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Hb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function _c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Ib(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Jb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function ad(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Kb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function bd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Lb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function cd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Mb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function dd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Tn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else dh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)mq(h);else{i=l<<2;t=dn(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;hj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Nb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);br(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Fg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=xe(a,d)|0;u=e;return w|0}function ed(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;g=u;u=u+32|0;d=g+16|0;h=g+8|0;i=g;j=e>>>0>1073741823?-1:e<<2;k=_q(j)|0;hj(k|0,0,j|0)|0;j=f[a+28>>2]|0;l=a+36|0;m=f[l>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;a:do if((p|0)>4){q=p>>2;r=f[a+32>>2]|0;s=a+8|0;t=h+4|0;v=i+4|0;w=d+4|0;x=j+12|0;y=(e|0)>0;z=k+4|0;A=h+4|0;B=i+4|0;C=d+4|0;D=q+-1|0;if(n-o>>2>>>0>D>>>0){E=q;F=D;G=o}else{H=m;mq(H)}while(1){D=f[G+(F<<2)>>2]|0;q=X(F,e)|0;if((D|0)!=-1?(I=f[(f[x>>2]|0)+(D<<2)>>2]|0,(I|0)!=-1):0){D=f[j>>2]|0;J=f[r>>2]|0;K=f[J+(f[D+(I<<2)>>2]<<2)>>2]|0;L=I+1|0;M=((L>>>0)%3|0|0)==0?I+-2|0:L;if((M|0)==-1)N=-1;else N=f[D+(M<<2)>>2]|0;M=f[J+(N<<2)>>2]|0;L=(((I>>>0)%3|0|0)==0?2:-1)+I|0;if((L|0)==-1)O=-1;else O=f[D+(L<<2)>>2]|0;L=f[J+(O<<2)>>2]|0;if((K|0)<(F|0)&(M|0)<(F|0)&(L|0)<(F|0)){J=X(K,e)|0;K=X(M,e)|0;M=X(L,e)|0;if(y){L=0;do{f[k+(L<<2)>>2]=(f[b+(L+M<<2)>>2]|0)+(f[b+(L+K<<2)>>2]|0)-(f[b+(L+J<<2)>>2]|0);L=L+1|0}while((L|0)!=(e|0))}L=b+(q<<2)|0;J=c+(q<<2)|0;K=f[L+4>>2]|0;M=f[k>>2]|0;D=f[z>>2]|0;f[h>>2]=f[L>>2];f[A>>2]=K;f[i>>2]=M;f[B>>2]=D;Dd(d,s,h,i);f[J>>2]=f[d>>2];f[J+4>>2]=f[C>>2]}else P=15}else P=15;if((P|0)==15){P=0;J=b+(q<<2)|0;D=b+((X(E+-2|0,e)|0)<<2)|0;M=c+(q<<2)|0;K=f[J+4>>2]|0;L=f[D>>2]|0;I=f[D+4>>2]|0;f[h>>2]=f[J>>2];f[t>>2]=K;f[i>>2]=L;f[v>>2]=I;Dd(d,s,h,i);f[M>>2]=f[d>>2];f[M+4>>2]=f[w>>2]}if((E|0)<=2)break a;M=f[l>>2]|0;G=f[M>>2]|0;I=F+-1|0;if((f[M+4>>2]|0)-G>>2>>>0<=I>>>0){H=M;break}else{M=F;F=I;E=M}}mq(H)}while(0);if((e|0)<=0){Q=a+8|0;R=b+4|0;S=f[b>>2]|0;T=f[R>>2]|0;U=k+4|0;V=f[k>>2]|0;W=f[U>>2]|0;f[h>>2]=S;Y=h+4|0;f[Y>>2]=T;f[i>>2]=V;Z=i+4|0;f[Z>>2]=W;Dd(d,Q,h,i);_=f[d>>2]|0;f[c>>2]=_;$=d+4|0;aa=f[$>>2]|0;ba=c+4|0;f[ba>>2]=aa;$q(k);u=g;return 1}hj(k|0,0,e<<2|0)|0;Q=a+8|0;R=b+4|0;S=f[b>>2]|0;T=f[R>>2]|0;U=k+4|0;V=f[k>>2]|0;W=f[U>>2]|0;f[h>>2]=S;Y=h+4|0;f[Y>>2]=T;f[i>>2]=V;Z=i+4|0;f[Z>>2]=W;Dd(d,Q,h,i);_=f[d>>2]|0;f[c>>2]=_;$=d+4|0;aa=f[$>>2]|0;ba=c+4|0;f[ba>>2]=aa;$q(k);u=g;return 1}function fd(a,c){a=a|0;c=c|0;var d=0,e=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,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,J=0,K=0,L=0,M=0;d=u;u=u+32|0;e=d;g=d+20|0;h=d+24|0;i=d+8|0;j=f[a>>2]|0;k=j+8|0;l=j;j=f[l>>2]|0;m=f[l+4>>2]|0;l=Tn(j|0,m|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=I;n=Tn(l|0,k|0,(l|0)==0&(k|0)==0&1|0,0)|0;k=~~((+(j>>>0)+4294967296.0*+(m>>>0))/(+(n>>>0)+4294967296.0*+(I>>>0))*256.0+.5)>>>0;n=k>>>0<255?k:255;k=n+((n|0)==0&1)&255;b[h>>0]=k;n=a+12|0;m=a+16|0;j=((f[m>>2]|0)-(f[n>>2]|0)<<1)+64|0;f[i>>2]=0;l=i+4|0;f[l>>2]=0;f[i+8>>2]=0;if(!j)o=0;else{if((j|0)<0)mq(i);p=dn(j)|0;f[l>>2]=p;f[i>>2]=p;f[i+8>>2]=p+j;q=j;j=p;do{b[j>>0]=0;j=(f[l>>2]|0)+1|0;f[l>>2]=j;q=q+-1|0}while((q|0)!=0);o=f[i>>2]|0}q=a+28|0;j=(f[q>>2]|0)+-1|0;a:do if((j|0)>-1){p=a+24|0;r=j;s=0;t=4096;v=k;while(1){w=(f[p>>2]&1<>>0>>0){y=s;z=t}else{b[o+s>>0]=t;y=s+1|0;z=t>>>8}on(f[3780+(x<<3)>>2]|0,0,z|0,0)|0;A=z+(w?0:0-v&255)+(X((z+I|0)>>>(f[3780+(x<<3)+4>>2]|0),256-x|0)|0)|0;x=r+-1|0;if((x|0)<=-1){B=y;C=A;break a}r=x;s=y;t=A;v=b[h>>0]|0}}else{B=0;C=4096}while(0);y=f[m>>2]|0;if((f[n>>2]|0)==(y|0)){D=B;E=C}else{z=B;B=C;C=y;while(1){C=C+-4|0;y=f[C>>2]|0;k=31;j=z;v=B;while(1){t=b[h>>0]|0;s=(1<>>0>>0){F=j;G=v}else{b[o+j>>0]=v;F=j+1|0;G=v>>>8}on(f[3780+(r<<3)>>2]|0,0,G|0,0)|0;v=G+(s?0:0-t&255)+(X((G+I|0)>>>(f[3780+(r<<3)+4>>2]|0),256-r|0)|0)|0;if((k|0)<=0)break;else{k=k+-1|0;j=F}}if((f[n>>2]|0)==(C|0)){D=F;E=v;break}else{z=F;B=v}}}B=E+-4096|0;do if(B>>>0>=64){if(B>>>0<16384){F=o+D|0;z=E+12288|0;b[F>>0]=z;H=2;J=z>>>8;K=F+1|0;L=25;break}if(B>>>0<4194304){F=o+D|0;z=E+8384512|0;b[F>>0]=z;b[F+1>>0]=z>>>8;H=3;J=z>>>16;K=F+2|0;L=25}else M=D}else{H=1;J=B;K=o+D|0;L=25}while(0);if((L|0)==25){b[K>>0]=J;M=H+D|0}D=c+16|0;H=D;J=f[H+4>>2]|0;if(!((J|0)>0|(J|0)==0&(f[H>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}Nh(M,c)|0;h=f[i>>2]|0;H=D;D=f[H+4>>2]|0;if(!((D|0)>0|(D|0)==0&(f[H>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+M|0)|0}M=e;f[M>>2]=0;f[M+4>>2]=0;cf(a,2,e);e=f[a+12>>2]|0;M=f[m>>2]|0;if((M|0)!=(e|0))f[m>>2]=M+(~((M+-4-e|0)>>>2)<<2);f[a+24>>2]=0;f[q>>2]=0;q=f[i>>2]|0;if(!q){u=d;return}if((f[l>>2]|0)!=(q|0))f[l>>2]=q;br(q);u=d;return}function gd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;c=u;u=u+16|0;b=c+8|0;d=c+4|0;e=c;g=a+64|0;h=f[g>>2]|0;if((f[h+28>>2]|0)==(f[h+24>>2]|0)){u=c;return}i=a+52|0;j=a+56|0;k=a+60|0;l=a+12|0;m=a+28|0;n=a+40|0;o=a+44|0;p=a+48|0;q=0;r=0;s=h;while(1){h=f[(f[s+24>>2]|0)+(r<<2)>>2]|0;if((h|0)==-1){t=q;v=s}else{w=q+1|0;f[b>>2]=q;x=f[j>>2]|0;if((x|0)==(f[k>>2]|0))Ci(i,b);else{f[x>>2]=q;f[j>>2]=x+4}f[d>>2]=h;f[e>>2]=0;a:do if(!(f[(f[l>>2]|0)+(r>>>5<<2)>>2]&1<<(r&31)))y=h;else{x=h+1|0;z=((x>>>0)%3|0|0)==0?h+-2|0:x;if(((z|0)!=-1?(f[(f[a>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)==0:0)?(x=f[(f[(f[g>>2]|0)+12>>2]|0)+(z<<2)>>2]|0,z=x+1|0,(x|0)!=-1):0){A=((z>>>0)%3|0|0)==0?x+-2|0:z;f[e>>2]=A;if((A|0)==-1){y=h;break}else B=A;while(1){f[d>>2]=B;A=B+1|0;z=((A>>>0)%3|0|0)==0?B+-2|0:A;if((z|0)==-1)break;if(f[(f[a>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)break;A=f[(f[(f[g>>2]|0)+12>>2]|0)+(z<<2)>>2]|0;z=A+1|0;if((A|0)==-1)break;x=((z>>>0)%3|0|0)==0?A+-2|0:z;f[e>>2]=x;if((x|0)==-1){y=B;break a}else B=x}f[e>>2]=-1;y=B;break}f[e>>2]=-1;y=h}while(0);f[(f[m>>2]|0)+(y<<2)>>2]=f[b>>2];h=f[o>>2]|0;if((h|0)==(f[p>>2]|0))Ci(n,d);else{f[h>>2]=f[d>>2];f[o>>2]=h+4}h=f[g>>2]|0;x=f[d>>2]|0;b:do if(((x|0)!=-1?(z=(((x>>>0)%3|0|0)==0?2:-1)+x|0,(z|0)!=-1):0)?(A=f[(f[h+12>>2]|0)+(z<<2)>>2]|0,(A|0)!=-1):0){z=A+(((A>>>0)%3|0|0)==0?2:-1)|0;f[e>>2]=z;if((z|0)!=-1&(z|0)!=(x|0)){A=w;C=z;while(1){z=C+1|0;D=((z>>>0)%3|0|0)==0?C+-2|0:z;do if(f[(f[a>>2]|0)+(D>>>5<<2)>>2]&1<<(D&31)){z=A+1|0;f[b>>2]=A;E=f[j>>2]|0;if((E|0)==(f[k>>2]|0))Ci(i,b);else{f[E>>2]=A;f[j>>2]=E+4}E=f[o>>2]|0;if((E|0)==(f[p>>2]|0)){Ci(n,e);F=z;break}else{f[E>>2]=f[e>>2];f[o>>2]=E+4;F=z;break}}else F=A;while(0);f[(f[m>>2]|0)+(f[e>>2]<<2)>>2]=f[b>>2];G=f[g>>2]|0;D=f[e>>2]|0;if((D|0)==-1)break;z=(((D>>>0)%3|0|0)==0?2:-1)+D|0;if((z|0)==-1)break;D=f[(f[G+12>>2]|0)+(z<<2)>>2]|0;if((D|0)==-1)break;C=D+(((D>>>0)%3|0|0)==0?2:-1)|0;f[e>>2]=C;if(!((C|0)!=-1?(C|0)!=(f[d>>2]|0):0)){H=F;I=G;break b}else A=F}f[e>>2]=-1;H=F;I=G}else{H=w;I=h}}else J=26;while(0);if((J|0)==26){J=0;f[e>>2]=-1;H=w;I=h}t=H;v=I}r=r+1|0;if(r>>>0>=(f[v+28>>2]|0)-(f[v+24>>2]|0)>>2>>>0)break;else{q=t;s=v}}u=c;return}function hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+124|0;f[h>>2]=(f[h>>2]|0)+1;h=a+88|0;i=a+120|0;j=f[i>>2]|0;k=j+1|0;do if((j|0)!=-1){l=((k>>>0)%3|0|0)==0?j+-2|0:k;if(!((j>>>0)%3|0)){m=j+2|0;n=l;break}else{m=j+-1|0;n=l;break}}else{m=-1;n=-1}while(0);k=a+104|0;l=a+92|0;o=f[l>>2]|0;p=o+(n<<2)|0;q=f[k>>2]|0;r=q+(f[p>>2]<<2)|0;s=f[r>>2]|0;switch(b|0){case 1:case 0:{f[r>>2]=s+-1;r=q+(f[o+(m<<2)>>2]<<2)|0;f[r>>2]=(f[r>>2]|0)+-1;if((b|0)==1){if((m|0)!=-1?(r=f[(f[(f[h>>2]|0)+12>>2]|0)+(m<<2)>>2]|0,(r|0)!=-1):0){t=a+64|0;v=1;w=r;while(1){r=f[t>>2]|0;x=f[(f[r>>2]|0)+36>>2]|0;f[e>>2]=(w>>>0)/3|0;f[d>>2]=f[e>>2];if(Ra[x&127](r,d)|0){y=v;break}r=w+1|0;x=((r>>>0)%3|0|0)==0?w+-2|0:r;if((x|0)==-1){z=12;break}w=f[(f[(f[h>>2]|0)+12>>2]|0)+(x<<2)>>2]|0;x=v+1|0;if((w|0)==-1){y=x;break}else v=x}if((z|0)==12)y=v+1|0;A=y;B=f[k>>2]|0;C=f[l>>2]|0}else{A=1;B=q;C=o}f[B+(f[C+(f[i>>2]<<2)>>2]<<2)>>2]=A;A=a+108|0;i=f[A>>2]|0;C=i-B>>2;B=i;if((n|0)!=-1?(i=f[(f[(f[h>>2]|0)+12>>2]|0)+(n<<2)>>2]|0,(i|0)!=-1):0){n=a+64|0;y=1;v=i;while(1){i=f[n>>2]|0;w=f[(f[i>>2]|0)+36>>2]|0;f[g>>2]=(v>>>0)/3|0;f[d>>2]=f[g>>2];if(Ra[w&127](i,d)|0){D=y;break}i=v+1|0;f[(f[l>>2]|0)+((((i>>>0)%3|0|0)==0?v+-2|0:i)<<2)>>2]=C;i=(((v>>>0)%3|0|0)==0?2:-1)+v|0;if((i|0)==-1){z=20;break}v=f[(f[(f[h>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;i=y+1|0;if((v|0)==-1){D=i;break}else y=i}if((z|0)==20)D=y+1|0;E=D;F=f[A>>2]|0}else{E=1;F=B}f[d>>2]=E;if(F>>>0<(f[a+112>>2]|0)>>>0){f[F>>2]=E;f[A>>2]=F+4}else Ci(k,d)}break}case 5:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;break}case 3:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;break}case 7:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;break}default:{}}k=a+116|0;m=f[k>>2]|0;if((m|0)==-1){f[k>>2]=b;u=c;return}o=f[a+128>>2]|0;if((s|0)<(o|0))G=o;else{q=f[a+132>>2]|0;G=(s|0)>(q|0)?q:s}s=G-o|0;o=f[a+136>>2]|0;a=f[3384+(m<<2)>>2]|0;f[d>>2]=a;m=o+(s*12|0)+4|0;G=f[m>>2]|0;if(G>>>0<(f[o+(s*12|0)+8>>2]|0)>>>0){f[G>>2]=a;f[m>>2]=G+4}else Ci(o+(s*12|0)|0,d);f[k>>2]=b;u=c;return}function id(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0;g=u;u=u+32|0;d=g+16|0;h=g+8|0;i=g;j=e>>>0>1073741823?-1:e<<2;k=_q(j)|0;hj(k|0,0,j|0)|0;j=f[a+28>>2]|0;l=a+36|0;m=f[l>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;a:do if((p|0)>4){q=p>>2;r=f[a+32>>2]|0;s=a+8|0;t=h+4|0;v=i+4|0;w=d+4|0;x=j+64|0;y=j+28|0;z=(e|0)>0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=q+-1|0;if(n-o>>2>>>0>E>>>0){F=q;G=E;H=o}else{I=m;mq(I)}while(1){E=f[H+(G<<2)>>2]|0;q=X(G,e)|0;if((((E|0)!=-1?(f[(f[j>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)==0:0)?(J=f[(f[(f[x>>2]|0)+12>>2]|0)+(E<<2)>>2]|0,(J|0)!=-1):0)?(E=f[y>>2]|0,K=f[r>>2]|0,L=f[K+(f[E+(J<<2)>>2]<<2)>>2]|0,M=J+1|0,N=f[K+(f[E+((((M>>>0)%3|0|0)==0?J+-2|0:M)<<2)>>2]<<2)>>2]|0,M=f[K+(f[E+((((J>>>0)%3|0|0)==0?2:-1)+J<<2)>>2]<<2)>>2]|0,(L|0)<(G|0)&(N|0)<(G|0)&(M|0)<(G|0)):0){J=X(L,e)|0;L=X(N,e)|0;N=X(M,e)|0;if(z){M=0;do{f[k+(M<<2)>>2]=(f[b+(M+N<<2)>>2]|0)+(f[b+(M+L<<2)>>2]|0)-(f[b+(M+J<<2)>>2]|0);M=M+1|0}while((M|0)!=(e|0))}M=b+(q<<2)|0;J=c+(q<<2)|0;L=f[M+4>>2]|0;N=f[k>>2]|0;E=f[A>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=L;f[i>>2]=N;f[C>>2]=E;Dd(d,s,h,i);f[J>>2]=f[d>>2];f[J+4>>2]=f[D>>2]}else{J=b+(q<<2)|0;E=b+((X(F+-2|0,e)|0)<<2)|0;N=c+(q<<2)|0;L=f[J+4>>2]|0;M=f[E>>2]|0;K=f[E+4>>2]|0;f[h>>2]=f[J>>2];f[t>>2]=L;f[i>>2]=M;f[v>>2]=K;Dd(d,s,h,i);f[N>>2]=f[d>>2];f[N+4>>2]=f[w>>2]}if((F|0)<=2)break a;N=f[l>>2]|0;H=f[N>>2]|0;K=G+-1|0;if((f[N+4>>2]|0)-H>>2>>>0<=K>>>0){I=N;break}else{N=G;G=K;F=N}}mq(I)}while(0);if((e|0)<=0){O=a+8|0;P=b+4|0;Q=f[b>>2]|0;R=f[P>>2]|0;S=k+4|0;T=f[k>>2]|0;U=f[S>>2]|0;f[h>>2]=Q;V=h+4|0;f[V>>2]=R;f[i>>2]=T;W=i+4|0;f[W>>2]=U;Dd(d,O,h,i);Y=f[d>>2]|0;f[c>>2]=Y;Z=d+4|0;_=f[Z>>2]|0;$=c+4|0;f[$>>2]=_;$q(k);u=g;return 1}hj(k|0,0,e<<2|0)|0;O=a+8|0;P=b+4|0;Q=f[b>>2]|0;R=f[P>>2]|0;S=k+4|0;T=f[k>>2]|0;U=f[S>>2]|0;f[h>>2]=Q;V=h+4|0;f[V>>2]=R;f[i>>2]=T;W=i+4|0;f[W>>2]=U;Dd(d,O,h,i);Y=f[d>>2]|0;f[c>>2]=Y;Z=d+4|0;_=f[Z>>2]|0;$=c+4|0;f[$>>2]=_;$q(k);u=g;return 1}function jd(a,b){a=a|0;b=b|0;var c=0,e=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+2|0;v=e+12|0;w=q+6|0;x=f[e>>2]|0;d:do if(!x)y=e;else{z=d[q>>1]|0;A=e;B=x;while(1){C=B+8|0;if(z<<16>>16!=(d[C>>1]|0)){y=A;break d}if((d[u>>1]|0)!=(d[C+2>>1]|0)){y=A;break d}if((d[v>>1]|0)!=(d[B+12>>1]|0)){y=A;break d}if((d[w>>1]|0)!=(d[C+6>>1]|0)){y=A;break d}C=f[B>>2]|0;if(!C){y=B;break}else{D=B;B=C;A=D}}}while(0);f[j>>2]=f[y>>2];f[y>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}else{e=c;while(1){w=f[e+4>>2]|0;if(w>>>0>>0)F=w;else F=(w>>>0)%(b>>>0)|0;if((F|0)==(k|0)){p=e;break c}w=(f[a>>2]|0)+(F<<2)|0;if(!(f[w>>2]|0)){r=e;s=F;t=w;break b}w=e+8|0;v=w+2|0;u=e+12|0;x=w+6|0;q=f[e>>2]|0;e:do if(!q)G=e;else{A=d[w>>1]|0;B=e;z=q;while(1){D=z+8|0;if(A<<16>>16!=(d[D>>1]|0)){G=B;break e}if((d[v>>1]|0)!=(d[D+2>>1]|0)){G=B;break e}if((d[u>>1]|0)!=(d[z+12>>1]|0)){G=B;break e}if((d[x>>1]|0)!=(d[D+6>>1]|0)){G=B;break e}D=f[z>>2]|0;if(!D){G=z;break}else{C=z;z=D;B=C}}}while(0);f[j>>2]=f[G>>2];f[G>>2]=f[f[(f[a>>2]|0)+(F<<2)>>2]>>2];f[f[(f[a>>2]|0)+(F<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}while(0);c=f[p>>2]|0;if(!c){E=43;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){E=43;break}else{k=s;l=r;n=r}}if((E|0)==43)return}function kd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+1|0;v=q+2|0;w=q+3|0;x=f[e>>2]|0;d:do if(!x)y=e;else{z=b[q>>0]|0;A=e;B=x;while(1){C=B+8|0;if(z<<24>>24!=(b[C>>0]|0)){y=A;break d}if((b[u>>0]|0)!=(b[C+1>>0]|0)){y=A;break d}if((b[v>>0]|0)!=(b[C+2>>0]|0)){y=A;break d}if((b[w>>0]|0)!=(b[C+3>>0]|0)){y=A;break d}C=f[B>>2]|0;if(!C){y=B;break}else{D=B;B=C;A=D}}}while(0);f[j>>2]=f[y>>2];f[y>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}else{e=d;while(1){w=f[e+4>>2]|0;if(w>>>0>>0)F=w;else F=(w>>>0)%(c>>>0)|0;if((F|0)==(k|0)){p=e;break c}w=(f[a>>2]|0)+(F<<2)|0;if(!(f[w>>2]|0)){r=e;s=F;t=w;break b}w=e+8|0;v=w+1|0;u=w+2|0;x=w+3|0;q=f[e>>2]|0;e:do if(!q)G=e;else{A=b[w>>0]|0;B=e;z=q;while(1){D=z+8|0;if(A<<24>>24!=(b[D>>0]|0)){G=B;break e}if((b[v>>0]|0)!=(b[D+1>>0]|0)){G=B;break e}if((b[u>>0]|0)!=(b[D+2>>0]|0)){G=B;break e}if((b[x>>0]|0)!=(b[D+3>>0]|0)){G=B;break e}D=f[z>>2]|0;if(!D){G=z;break}else{C=z;z=D;B=C}}}while(0);f[j>>2]=f[G>>2];f[G>>2]=f[f[(f[a>>2]|0)+(F<<2)>>2]>>2];f[f[(f[a>>2]|0)+(F<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}while(0);d=f[p>>2]|0;if(!d){E=43;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){E=43;break}else{k=s;l=r;n=r}}if((E|0)==43)return}function ld(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,A=0,B=0,C=0,D=0,E=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)br(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}d=dn(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)br(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=d+16|0;u=d+20|0;v=f[d>>2]|0;d:do if(!v)w=d;else{x=f[d+8>>2]|0;y=d;z=v;while(1){if((x|0)!=(f[z+8>>2]|0)){w=y;break d}if((f[p>>2]|0)!=(f[z+12>>2]|0)){w=y;break d}if((f[t>>2]|0)!=(f[z+16>>2]|0)){w=y;break d}if((f[u>>2]|0)!=(f[z+20>>2]|0)){w=y;break d}A=f[z>>2]|0;if(!A){w=z;break}else{B=z;z=A;y=B}}}while(0);f[i>>2]=f[w>>2];f[w>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){C=43;break a}}}else{d=c;while(1){u=f[d+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(b>>>0)|0;if((D|0)==(j|0)){o=d;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){q=d;r=D;s=u;break b}u=d+12|0;t=d+16|0;p=d+20|0;v=f[d>>2]|0;e:do if(!v)E=d;else{y=f[d+8>>2]|0;z=d;x=v;while(1){if((y|0)!=(f[x+8>>2]|0)){E=z;break e}if((f[u>>2]|0)!=(f[x+12>>2]|0)){E=z;break e}if((f[t>>2]|0)!=(f[x+16>>2]|0)){E=z;break e}if((f[p>>2]|0)!=(f[x+20>>2]|0)){E=z;break e}B=f[x>>2]|0;if(!B){E=x;break}else{A=x;x=B;z=A}}}while(0);f[i>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){C=43;break a}}}while(0);c=f[o>>2]|0;if(!c){C=43;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){C=43;break}else{j=r;k=q;m=q}}if((C|0)==43)return}function md(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0;i=u;u=u+352|0;j=i+340|0;k=i+336|0;l=i+80|0;m=i+48|0;n=i;hj(l|0,0,256)|0;o=f[e+4>>2]|0;p=f[e>>2]|0;q=p;if((o|0)!=(p|0)){r=o-p>>2;p=0;do{o=l+(f[q+(p<<2)>>2]<<3)|0;s=o;t=Tn(f[s>>2]|0,f[s+4>>2]|0,1,0)|0;s=o;f[s>>2]=t;f[s+4>>2]=I;p=p+1|0}while(p>>>0>>0)}Cn(m);r=Rn(c|0,((c|0)<0)<<31>>31|0,5)|0;p=I;q=n+40|0;s=q;f[s>>2]=0;f[s+4>>2]=0;s=n;t=s+36|0;do{f[s>>2]=0;s=s+4|0}while((s|0)<(t|0));$c(n,l,32,g)|0;l=n+16|0;s=Rn(f[l>>2]|0,f[l+4>>2]|0,1)|0;l=g+4|0;t=(f[l>>2]|0)-(f[g>>2]|0)|0;o=q;f[o>>2]=t;f[o+4>>2]=0;o=Tn(s|0,I|0,39,0)|0;s=Wn(o|0,I|0,3)|0;o=Tn(s|0,I|0,8,0)|0;s=Tn(o|0,I|0,t|0,0)|0;vl(g,s,I);s=n+24|0;f[s>>2]=(f[g>>2]|0)+(f[q>>2]|0);q=n+28|0;f[q>>2]=0;t=n+32|0;f[t>>2]=16384;li(m,r,p,0)|0;p=c-d|0;if((p|0)>-1){c=(d|0)>0;r=m+16|0;o=m+12|0;v=p;do{w=f[e>>2]|0;x=f[w+(((v|0)/(d|0)|0)<<2)>>2]|0;y=f[n>>2]|0;z=f[y+(x<<3)>>2]|0;A=f[t>>2]|0;B=z<<10;if(A>>>0>>0){C=A;D=w}else{w=A;do{A=f[s>>2]|0;E=f[q>>2]|0;f[q>>2]=E+1;b[A+E>>0]=w;w=(f[t>>2]|0)>>>8;f[t>>2]=w}while(w>>>0>=B>>>0);C=w;D=f[e>>2]|0}f[t>>2]=(((C>>>0)/(z>>>0)|0)<<12)+((C>>>0)%(z>>>0)|0)+(f[y+(x<<3)+4>>2]|0);B=p-v|0;E=f[D+(((B|0)/(d|0)|0)<<2)>>2]|0;if(c&(E|0)>0){A=0;do{F=f[a+(A+B<<2)>>2]|0;G=r;H=f[G+4>>2]|0;if((H|0)>0|(H|0)==0&(f[G>>2]|0)>>>0>0){G=f[o>>2]|0;H=G+4|0;J=0;K=f[H>>2]|0;do{L=K>>>3;M=K&7;N=(f[G>>2]|0)+L|0;b[N>>0]=(1<>0]|0);N=(f[G>>2]|0)+L|0;b[N>>0]=(F>>>J&1)<>0]|0);K=(f[H>>2]|0)+1|0;f[H>>2]=K;J=J+1|0}while((J|0)!=(E|0))}A=A+1|0}while((A|0)!=(d|0))}v=v-d|0}while((v|0)>-1)}Lf(n,g);Qf(m);v=f[m>>2]|0;d=m+4|0;o=g+16|0;r=f[o+4>>2]|0;if(!((r|0)>0|(r|0)==0&(f[o>>2]|0)>>>0>0)){o=(f[d>>2]|0)-v|0;f[k>>2]=f[l>>2];f[j>>2]=f[k>>2];ye(g,j,v,v+o|0)|0}o=f[n>>2]|0;if(o|0){v=n+4|0;n=f[v>>2]|0;if((n|0)!=(o|0))f[v>>2]=n+(~((n+-8-o|0)>>>3)<<3);br(o)}o=m+12|0;n=f[o>>2]|0;f[o>>2]=0;if(n|0)br(n);n=f[m>>2]|0;if(!n){u=i;return 1}if((f[d>>2]|0)!=(n|0))f[d>>2]=n;br(n);u=i;return 1}function nd(a,b){a=a|0;b=b|0;var c=0,e=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,A=0,B=0,C=0,D=0,E=0,F=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=e+12|0;v=f[e>>2]|0;d:do if(!v)w=e;else{x=d[q>>1]|0;y=q+2|0;z=e;A=v;while(1){B=A+8|0;if(x<<16>>16!=(d[B>>1]|0)){w=z;break d}if((d[y>>1]|0)!=(d[B+2>>1]|0)){w=z;break d}if((d[u>>1]|0)!=(d[A+12>>1]|0)){w=z;break d}B=f[A>>2]|0;if(!B){w=A;break}else{C=A;A=B;z=C}}}while(0);f[j>>2]=f[w>>2];f[w>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}else{e=c;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)E=u;else E=(u>>>0)%(b>>>0)|0;if((E|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(E<<2)|0;if(!(f[u>>2]|0)){r=e;s=E;t=u;break b}u=e+8|0;v=e+12|0;q=f[e>>2]|0;e:do if(!q)F=e;else{z=d[u>>1]|0;A=u+2|0;y=e;x=q;while(1){C=x+8|0;if(z<<16>>16!=(d[C>>1]|0)){F=y;break e}if((d[A>>1]|0)!=(d[C+2>>1]|0)){F=y;break e}if((d[v>>1]|0)!=(d[x+12>>1]|0)){F=y;break e}C=f[x>>2]|0;if(!C){F=x;break}else{B=x;x=C;y=B}}}while(0);f[j>>2]=f[F>>2];f[F>>2]=f[f[(f[a>>2]|0)+(E<<2)>>2]>>2];f[f[(f[a>>2]|0)+(E<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}while(0);c=f[p>>2]|0;if(!c){D=41;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){D=41;break}else{k=s;l=r;n=r}}if((D|0)==41)return}function od(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0,F=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+1|0;v=q+2|0;w=f[e>>2]|0;d:do if(!w)x=e;else{y=b[q>>0]|0;z=e;A=w;while(1){B=A+8|0;if(y<<24>>24!=(b[B>>0]|0)){x=z;break d}if((b[u>>0]|0)!=(b[B+1>>0]|0)){x=z;break d}if((b[v>>0]|0)!=(b[B+2>>0]|0)){x=z;break d}B=f[A>>2]|0;if(!B){x=A;break}else{C=A;A=B;z=C}}}while(0);f[j>>2]=f[x>>2];f[x>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}else{e=d;while(1){v=f[e+4>>2]|0;if(v>>>0>>0)E=v;else E=(v>>>0)%(c>>>0)|0;if((E|0)==(k|0)){p=e;break c}v=(f[a>>2]|0)+(E<<2)|0;if(!(f[v>>2]|0)){r=e;s=E;t=v;break b}v=e+8|0;u=v+1|0;w=v+2|0;q=f[e>>2]|0;e:do if(!q)F=e;else{z=b[v>>0]|0;A=e;y=q;while(1){C=y+8|0;if(z<<24>>24!=(b[C>>0]|0)){F=A;break e}if((b[u>>0]|0)!=(b[C+1>>0]|0)){F=A;break e}if((b[w>>0]|0)!=(b[C+2>>0]|0)){F=A;break e}C=f[y>>2]|0;if(!C){F=y;break}else{B=y;y=C;A=B}}}while(0);f[j>>2]=f[F>>2];f[F>>2]=f[f[(f[a>>2]|0)+(E<<2)>>2]>>2];f[f[(f[a>>2]|0)+(E<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}while(0);d=f[p>>2]|0;if(!d){D=41;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){D=41;break}else{k=s;l=r;n=r}}if((D|0)==41)return}function pd(a,b){a=+a;b=+b;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;p[s>>3]=b;e=f[s>>2]|0;g=f[s+4>>2]|0;h=Wn(c|0,d|0,52)|0;i=h&2047;h=Wn(e|0,g|0,52)|0;j=h&2047;h=d&-2147483648;k=Rn(e|0,g|0,1)|0;l=I;a:do if(!((k|0)==0&(l|0)==0)?(m=xo(b)|0,n=I&2147483647,!((i|0)==2047|(n>>>0>2146435072|(n|0)==2146435072&m>>>0>0))):0){m=Rn(c|0,d|0,1)|0;n=I;if(!(n>>>0>l>>>0|(n|0)==(l|0)&m>>>0>k>>>0))return +((m|0)==(k|0)&(n|0)==(l|0)?a*0.0:a);if(!i){n=Rn(c|0,d|0,12)|0;m=I;if((m|0)>-1|(m|0)==-1&n>>>0>4294967295){o=0;q=n;n=m;while(1){m=o+-1|0;q=Rn(q|0,n|0,1)|0;n=I;if(!((n|0)>-1|(n|0)==-1&q>>>0>4294967295)){r=m;break}else o=m}}else r=0;o=Rn(c|0,d|0,1-r|0)|0;t=r;u=o;v=I}else{t=i;u=c;v=d&1048575|1048576}if(!j){o=Rn(e|0,g|0,12)|0;q=I;if((q|0)>-1|(q|0)==-1&o>>>0>4294967295){n=0;m=o;o=q;while(1){q=n+-1|0;m=Rn(m|0,o|0,1)|0;o=I;if(!((o|0)>-1|(o|0)==-1&m>>>0>4294967295)){w=q;break}else n=q}}else w=0;n=Rn(e|0,g|0,1-w|0)|0;x=w;y=n;z=I}else{x=j;y=e;z=g&1048575|1048576}n=Vn(u|0,v|0,y|0,z|0)|0;m=I;o=(m|0)>-1|(m|0)==-1&n>>>0>4294967295;b:do if((t|0)>(x|0)){q=t;A=m;B=o;C=u;D=v;E=n;while(1){if(B)if((E|0)==0&(A|0)==0)break;else{F=E;G=A}else{F=C;G=D}H=Rn(F|0,G|0,1)|0;J=I;K=q+-1|0;L=Vn(H|0,J|0,y|0,z|0)|0;M=I;N=(M|0)>-1|(M|0)==-1&L>>>0>4294967295;if((K|0)>(x|0)){q=K;A=M;B=N;C=H;D=J;E=L}else{O=K;P=N;Q=L;R=M;S=H;T=J;break b}}U=a*0.0;break a}else{O=t;P=o;Q=n;R=m;S=u;T=v}while(0);if(P)if((Q|0)==0&(R|0)==0){U=a*0.0;break}else{V=R;W=Q}else{V=T;W=S}if(V>>>0<1048576|(V|0)==1048576&W>>>0<0){m=O;n=W;o=V;while(1){E=Rn(n|0,o|0,1)|0;D=I;C=m+-1|0;if(D>>>0<1048576|(D|0)==1048576&E>>>0<0){m=C;n=E;o=D}else{X=C;Y=E;Z=D;break}}}else{X=O;Y=W;Z=V}if((X|0)>0){o=Tn(Y|0,Z|0,0,-1048576)|0;n=I;m=Rn(X|0,0,52)|0;_=n|I;$=o|m}else{m=Wn(Y|0,Z|0,1-X|0)|0;_=I;$=m}f[s>>2]=$;f[s+4>>2]=_|h;U=+p[s>>3]}else aa=3;while(0);if((aa|0)==3){ba=a*b;U=ba/ba}return +U}function qd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,A=0,B=0,C=0,D=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)br(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}d=dn(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)br(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=d+16|0;u=f[d>>2]|0;d:do if(!u)v=d;else{w=f[d+8>>2]|0;x=d;y=u;while(1){if((w|0)!=(f[y+8>>2]|0)){v=x;break d}if((f[p>>2]|0)!=(f[y+12>>2]|0)){v=x;break d}if((f[t>>2]|0)!=(f[y+16>>2]|0)){v=x;break d}z=f[y>>2]|0;if(!z){v=y;break}else{A=y;y=z;x=A}}}while(0);f[i>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){B=41;break a}}}else{d=c;while(1){t=f[d+4>>2]|0;if(t>>>0>>0)C=t;else C=(t>>>0)%(b>>>0)|0;if((C|0)==(j|0)){o=d;break c}t=(f[a>>2]|0)+(C<<2)|0;if(!(f[t>>2]|0)){q=d;r=C;s=t;break b}t=d+12|0;p=d+16|0;u=f[d>>2]|0;e:do if(!u)D=d;else{x=f[d+8>>2]|0;y=d;w=u;while(1){if((x|0)!=(f[w+8>>2]|0)){D=y;break e}if((f[t>>2]|0)!=(f[w+12>>2]|0)){D=y;break e}if((f[p>>2]|0)!=(f[w+16>>2]|0)){D=y;break e}A=f[w>>2]|0;if(!A){D=w;break}else{z=w;w=A;y=z}}}while(0);f[i>>2]=f[D>>2];f[D>>2]=f[f[(f[a>>2]|0)+(C<<2)>>2]>>2];f[f[(f[a>>2]|0)+(C<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){B=41;break a}}}while(0);c=f[o>>2]|0;if(!c){B=41;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){B=41;break}else{j=r;k=q;m=q}}if((B|0)==41)return}function rd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){o=d;while(1){e=f[o+4>>2]|0;if(!i)if(e>>>0>>0)p=e;else p=(e>>>0)%(c>>>0)|0;else p=e&h;if((p|0)==(k|0))break;q=(f[a>>2]|0)+(p<<2)|0;if(!(f[q>>2]|0))break b;e=f[o>>2]|0;c:do if(!e)r=o;else{s=o+8|0;t=b[s+11>>0]|0;u=t<<24>>24<0;v=t&255;t=u?f[o+12>>2]|0:v;w=(t|0)==0;if(u){u=o;x=e;while(1){y=x+8|0;z=b[y+11>>0]|0;A=z<<24>>24<0;if((t|0)!=((A?f[x+12>>2]|0:z&255)|0)){r=u;break c}if(!w?Pk(f[s>>2]|0,A?f[y>>2]|0:y,t)|0:0){r=u;break c}y=f[x>>2]|0;if(!y){r=x;break c}else{A=x;x=y;u=A}}}if(w){u=o;x=e;while(1){A=b[x+8+11>>0]|0;if((A<<24>>24<0?f[x+12>>2]|0:A&255)|0){r=u;break c}A=f[x>>2]|0;if(!A){r=x;break c}else{y=x;x=A;u=y}}}u=o;x=e;while(1){w=x+8|0;y=b[w+11>>0]|0;A=y<<24>>24<0;if((t|0)!=((A?f[x+12>>2]|0:y&255)|0)){r=u;break c}y=A?f[w>>2]|0:w;if((b[y>>0]|0)==(f[s>>2]&255)<<24>>24){B=s;C=v;D=y}else{r=u;break c}while(1){C=C+-1|0;B=B+1|0;if(!C)break;D=D+1|0;if((b[B>>0]|0)!=(b[D>>0]|0)){r=u;break c}}y=f[x>>2]|0;if(!y){r=x;break}else{w=x;x=y;u=w}}}while(0);f[j>>2]=f[r>>2];f[r>>2]=f[f[(f[a>>2]|0)+(p<<2)>>2]>>2];f[f[(f[a>>2]|0)+(p<<2)>>2]>>2]=o;e=f[g>>2]|0;if(!e){E=43;break a}else o=e}d=f[o>>2]|0;if(!d){E=43;break a}else{g=o;j=o}}f[q>>2]=j;m=f[o>>2]|0;if(!m){E=43;break}else{k=p;l=o;n=o}}if((E|0)==43)return}function sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+48|0;d=c+8|0;e=c+4|0;g=c;h=a+44|0;Nh(f[h>>2]|0,b)|0;if(f[h>>2]|0){rn(d);lk(d);i=f[h>>2]|0;if((i|0)>0){h=a+40|0;j=i;do{i=j;j=j+-1|0;Vi(d,(f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0)}while((i|0)>1)}fd(d,b);tj(d)}j=a+56|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);h=f[j>>2]|0;if((h|0)>1){j=a+52|0;i=h;do{h=i;i=i+-2|0;Vi(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);k=h+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((h|0)>3)}fd(d,b);tj(d)}j=a+68|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);i=f[j>>2]|0;if((i|0)>2){j=a+64|0;h=i;do{i=h;h=h+-3|0;Vi(d,(f[(f[j>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)!=0);k=i+-2|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=i+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((i|0)>5)}fd(d,b);tj(d)}j=a+80|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);h=f[j>>2]|0;if((h|0)>3){j=a+76|0;i=h;do{h=i;i=i+-4|0;Vi(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);k=h+-3|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=h+-2|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=h+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((h|0)>7)}fd(d,b);tj(d)}f[g>>2]=f[a+12>>2];j=b+16|0;i=j;h=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&h>>>0>0){l=k;m=h}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;h=j;l=f[h+4>>2]|0;m=f[h>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;u=c;return 1}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+48|0;d=c+8|0;e=c+4|0;g=c;h=a+64|0;Nh(f[h>>2]|0,b)|0;if(f[h>>2]|0){rn(d);lk(d);i=f[h>>2]|0;if((i|0)>0){h=a+60|0;j=i;do{i=j;j=j+-1|0;Vi(d,(f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0)}while((i|0)>1)}fd(d,b);tj(d)}j=a+76|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);h=f[j>>2]|0;if((h|0)>1){j=a+72|0;i=h;do{h=i;i=i+-2|0;Vi(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);k=h+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((h|0)>3)}fd(d,b);tj(d)}j=a+88|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);i=f[j>>2]|0;if((i|0)>2){j=a+84|0;h=i;do{i=h;h=h+-3|0;Vi(d,(f[(f[j>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)!=0);k=i+-2|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=i+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((i|0)>5)}fd(d,b);tj(d)}j=a+100|0;Nh(f[j>>2]|0,b)|0;if(f[j>>2]|0){rn(d);lk(d);h=f[j>>2]|0;if((h|0)>3){j=a+96|0;i=h;do{h=i;i=i+-4|0;Vi(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);k=h+-3|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=h+-2|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0);k=h+-1|0;Vi(d,(f[(f[j>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)|0)!=0)}while((h|0)>7)}fd(d,b);tj(d)}f[g>>2]=f[a+12>>2];j=b+16|0;i=j;h=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&h>>>0>0){l=k;m=h}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;h=j;l=f[h+4>>2]|0;m=f[h>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;u=c;return 1}function ud(a,b){a=a|0;b=b|0;var c=0,e=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,A=0,B=0,C=0,D=0,E=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=f[e>>2]|0;d:do if(!u)v=e;else{w=d[q>>1]|0;x=q+2|0;y=e;z=u;while(1){A=z+8|0;if(w<<16>>16!=(d[A>>1]|0)){v=y;break d}if((d[x>>1]|0)!=(d[A+2>>1]|0)){v=y;break d}A=f[z>>2]|0;if(!A){v=z;break}else{B=z;z=A;y=B}}}while(0);f[j>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}else{e=c;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(b>>>0)|0;if((D|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){r=e;s=D;t=u;break b}u=e+8|0;q=f[e>>2]|0;e:do if(!q)E=e;else{y=d[u>>1]|0;z=u+2|0;x=e;w=q;while(1){B=w+8|0;if(y<<16>>16!=(d[B>>1]|0)){E=x;break e}if((d[z>>1]|0)!=(d[B+2>>1]|0)){E=x;break e}B=f[w>>2]|0;if(!B){E=w;break}else{A=w;w=B;x=A}}}while(0);f[j>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}while(0);c=f[p>>2]|0;if(!c){C=39;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){C=39;break}else{k=s;l=r;n=r}}if((C|0)==39)return}function vd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=f[e>>2]|0;d:do if(!u)v=e;else{w=b[q>>0]|0;x=q+1|0;y=e;z=u;while(1){A=z+8|0;if(w<<24>>24!=(b[A>>0]|0)){v=y;break d}if((b[x>>0]|0)!=(b[A+1>>0]|0)){v=y;break d}A=f[z>>2]|0;if(!A){v=z;break}else{B=z;z=A;y=B}}}while(0);f[j>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}else{e=d;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(c>>>0)|0;if((D|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){r=e;s=D;t=u;break b}u=e+8|0;q=f[e>>2]|0;e:do if(!q)E=e;else{y=b[u>>0]|0;z=u+1|0;x=e;w=q;while(1){B=w+8|0;if(y<<24>>24!=(b[B>>0]|0)){E=x;break e}if((b[z>>0]|0)!=(b[B+1>>0]|0)){E=x;break e}B=f[w>>2]|0;if(!B){E=w;break}else{A=w;w=B;x=A}}}while(0);f[j>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}while(0);d=f[p>>2]|0;if(!d){C=39;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){C=39;break}else{k=s;l=r;n=r}}if((C|0)==39)return}function wd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;c=u;u=u+48|0;d=c+32|0;e=c+28|0;g=c+16|0;h=c;i=a+16|0;j=f[i>>2]|0;if(j|0){k=f[b>>2]|0;l=i;m=j;a:while(1){j=m;while(1){if((f[j+16>>2]|0)>=(k|0))break;n=f[j+4>>2]|0;if(!n){o=l;break a}else j=n}m=f[j>>2]|0;if(!m){o=j;break}else l=j}if((o|0)!=(i|0)?(k|0)>=(f[o+16>>2]|0):0){p=o;q=p+20|0;u=c;return q|0}}wp(g);f[h>>2]=f[b>>2];b=h+4|0;f[h+8>>2]=0;o=h+12|0;f[o>>2]=0;k=h+8|0;f[b>>2]=k;l=f[g>>2]|0;m=g+4|0;if((l|0)!=(m|0)){n=k;r=l;while(1){l=r+16|0;f[e>>2]=n;f[d>>2]=f[e>>2];Wg(b,d,l,l)|0;l=f[r+4>>2]|0;if(!l){s=r+8|0;t=f[s>>2]|0;if((f[t>>2]|0)==(r|0))v=t;else{t=s;do{s=f[t>>2]|0;t=s+8|0;w=f[t>>2]|0}while((f[w>>2]|0)!=(s|0));v=w}}else{t=l;while(1){j=f[t>>2]|0;if(!j)break;else t=j}v=t}if((v|0)==(m|0))break;else r=v}}v=a+12|0;r=f[i>>2]|0;do if(r){d=f[h>>2]|0;e=a+16|0;n=r;while(1){l=f[n+16>>2]|0;if((d|0)<(l|0)){j=f[n>>2]|0;if(!j){x=23;break}else{y=n;z=j}}else{if((l|0)>=(d|0)){x=27;break}A=n+4|0;l=f[A>>2]|0;if(!l){x=26;break}else{y=A;z=l}}e=y;n=z}if((x|0)==23){B=n;C=n;break}else if((x|0)==26){B=n;C=A;break}else if((x|0)==27){B=n;C=e;break}}else{B=i;C=i}while(0);i=f[C>>2]|0;if(!i){x=dn(32)|0;f[x+16>>2]=f[h>>2];A=x+20|0;f[A>>2]=f[b>>2];z=x+24|0;y=f[h+8>>2]|0;f[z>>2]=y;r=f[o>>2]|0;f[x+28>>2]=r;if(!r)f[A>>2]=z;else{f[y+8>>2]=z;f[b>>2]=k;f[k>>2]=0;f[o>>2]=0}f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=B;f[C>>2]=x;B=f[f[v>>2]>>2]|0;if(!B)D=x;else{f[v>>2]=B;D=f[C>>2]|0}Ae(f[a+16>>2]|0,D);D=a+20|0;f[D>>2]=(f[D>>2]|0)+1;E=x}else E=i;sj(h+4|0,f[k>>2]|0);sj(g,f[m>>2]|0);p=E;q=p+20|0;u=c;return q|0}function xd(a,c){a=a|0;c=c|0;var d=0,e=0,g=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;d=b[c+11>>0]|0;e=d<<24>>24<0;g=e?f[c>>2]|0:c;i=e?f[c+4>>2]|0:d&255;if(i>>>0>3){d=g;c=i;e=i;while(1){j=X(h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24,1540483477)|0;c=(X(j>>>24^j,1540483477)|0)^(X(c,1540483477)|0);e=e+-4|0;if(e>>>0<=3)break;else d=d+4|0}d=i+-4|0;e=d&-4;k=d-e|0;l=g+(e+4)|0;m=c}else{k=i;l=g;m=i}switch(k|0){case 3:{n=h[l+2>>0]<<16^m;o=6;break}case 2:{n=m;o=6;break}case 1:{p=m;o=7;break}default:q=m}if((o|0)==6){p=h[l+1>>0]<<8^n;o=7}if((o|0)==7)q=X(p^h[l>>0],1540483477)|0;l=X(q>>>13^q,1540483477)|0;q=l>>>15^l;l=f[a+4>>2]|0;if(!l){r=0;return r|0}p=l+-1|0;n=(p&l|0)==0;if(!n)if(q>>>0>>0)s=q;else s=(q>>>0)%(l>>>0)|0;else s=q&p;m=f[(f[a>>2]|0)+(s<<2)>>2]|0;if(!m){r=0;return r|0}a=f[m>>2]|0;if(!a){r=0;return r|0}m=(i|0)==0;if(n){n=a;a:while(1){k=f[n+4>>2]|0;c=(k|0)==(q|0);if(!(c|(k&p|0)==(s|0))){r=0;o=40;break}do if(c?(k=n+8|0,e=b[k+11>>0]|0,d=e<<24>>24<0,j=e&255,((d?f[n+12>>2]|0:j)|0)==(i|0)):0){e=f[k>>2]|0;t=d?e:k;if(d){if(m){r=n;o=40;break a}if(!(Pk(t,g,i)|0)){r=n;o=40;break a}else break}if(m){r=n;o=40;break a}if((b[g>>0]|0)==(e&255)<<24>>24){e=k;k=j;j=g;do{k=k+-1|0;e=e+1|0;if(!k){r=n;o=40;break a}j=j+1|0}while((b[e>>0]|0)==(b[j>>0]|0))}}while(0);n=f[n>>2]|0;if(!n){r=0;o=40;break}}if((o|0)==40)return r|0}else u=a;b:while(1){a=f[u+4>>2]|0;do if((a|0)==(q|0)){n=u+8|0;p=b[n+11>>0]|0;c=p<<24>>24<0;j=p&255;if(((c?f[u+12>>2]|0:j)|0)==(i|0)){p=f[n>>2]|0;e=c?p:n;if(c){if(m){r=u;o=40;break b}if(!(Pk(e,g,i)|0)){r=u;o=40;break b}else break}if(m){r=u;o=40;break b}if((b[g>>0]|0)==(p&255)<<24>>24){p=n;n=j;j=g;do{n=n+-1|0;p=p+1|0;if(!n){r=u;o=40;break b}j=j+1|0}while((b[p>>0]|0)==(b[j>>0]|0))}}}else{if(a>>>0>>0)v=a;else v=(a>>>0)%(l>>>0)|0;if((v|0)!=(s|0)){r=0;o=40;break b}}while(0);u=f[u>>2]|0;if(!u){r=0;o=40;break}}if((o|0)==40)return r|0;return 0}function yd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,A=0,B=0,C=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)br(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}d=dn(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)br(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=f[d>>2]|0;d:do if(!t)u=d;else{v=f[d+8>>2]|0;w=d;x=t;while(1){if((v|0)!=(f[x+8>>2]|0)){u=w;break d}if((f[p>>2]|0)!=(f[x+12>>2]|0)){u=w;break d}y=f[x>>2]|0;if(!y){u=x;break}else{z=x;x=y;w=z}}}while(0);f[i>>2]=f[u>>2];f[u>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){A=39;break a}}}else{d=c;while(1){p=f[d+4>>2]|0;if(p>>>0>>0)B=p;else B=(p>>>0)%(b>>>0)|0;if((B|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(B<<2)|0;if(!(f[p>>2]|0)){q=d;r=B;s=p;break b}p=d+12|0;t=f[d>>2]|0;e:do if(!t)C=d;else{w=f[d+8>>2]|0;x=d;v=t;while(1){if((w|0)!=(f[v+8>>2]|0)){C=x;break e}if((f[p>>2]|0)!=(f[v+12>>2]|0)){C=x;break e}z=f[v>>2]|0;if(!z){C=v;break}else{y=v;v=z;x=y}}}while(0);f[i>>2]=f[C>>2];f[C>>2]=f[f[(f[a>>2]|0)+(B<<2)>>2]>>2];f[f[(f[a>>2]|0)+(B<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){A=39;break a}}}while(0);c=f[o>>2]|0;if(!c){A=39;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){A=39;break}else{j=r;k=q;m=q}}if((A|0)==39)return}function zd(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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;h=a+4|0;i=f[c>>2]|0;c=i;do if((i|0)!=(h|0)){j=i+16|0;k=b[j+11>>0]|0;l=k<<24>>24<0;m=l?f[i+20>>2]|0:k&255;k=b[g+11>>0]|0;n=k<<24>>24<0;o=n?f[g+4>>2]|0:k&255;k=m>>>0>>0;p=k?m:o;if((p|0)!=0?(q=Pk(n?f[g>>2]|0:g,l?f[j>>2]|0:j,p)|0,(q|0)!=0):0){if((q|0)<0)break}else r=4;if((r|0)==4?o>>>0>>0:0)break;q=o>>>0>>0?o:m;if((q|0)!=0?(m=Pk(l?f[j>>2]|0:j,n?f[g>>2]|0:g,q)|0,(m|0)!=0):0){if((m|0)>=0)r=37}else r=21;if((r|0)==21?!k:0)r=37;if((r|0)==37){f[d>>2]=c;f[e>>2]=c;s=e;return s|0}k=f[i+4>>2]|0;m=(k|0)==0;if(m){q=i+8|0;j=f[q>>2]|0;if((f[j>>2]|0)==(i|0))t=j;else{j=q;do{q=f[j>>2]|0;j=q+8|0;l=f[j>>2]|0}while((f[l>>2]|0)!=(q|0));t=l}}else{j=k;while(1){l=f[j>>2]|0;if(!l)break;else j=l}t=j}do if((t|0)!=(h|0)){k=t+16|0;l=b[k+11>>0]|0;q=l<<24>>24<0;p=q?f[t+20>>2]|0:l&255;l=p>>>0>>0?p:o;if((l|0)!=0?(u=Pk(n?f[g>>2]|0:g,q?f[k>>2]|0:k,l)|0,(u|0)!=0):0){if((u|0)<0)break}else r=31;if((r|0)==31?o>>>0

>>0:0)break;s=hg(a,d,g)|0;return s|0}while(0);if(m){f[d>>2]=c;s=i+4|0;return s|0}else{f[d>>2]=t;s=t;return s|0}}while(0);t=f[i>>2]|0;do if((f[a>>2]|0)==(i|0))v=c;else{if(!t){h=i;while(1){e=f[h+8>>2]|0;if((f[e>>2]|0)==(h|0))h=e;else{w=e;break}}}else{h=t;while(1){m=f[h+4>>2]|0;if(!m){w=h;break}else h=m}}h=w;m=w+16|0;e=b[g+11>>0]|0;o=e<<24>>24<0;n=o?f[g+4>>2]|0:e&255;e=b[m+11>>0]|0;j=e<<24>>24<0;p=j?f[w+20>>2]|0:e&255;e=n>>>0

>>0?n:p;if((e|0)!=0?(u=Pk(j?f[m>>2]|0:m,o?f[g>>2]|0:g,e)|0,(u|0)!=0):0){if((u|0)<0){v=h;break}}else r=13;if((r|0)==13?p>>>0>>0:0){v=h;break}s=hg(a,d,g)|0;return s|0}while(0);if(!t){f[d>>2]=i;s=i;return s|0}else{f[d>>2]=v;s=v+4|0;return s|0}return 0}function Ad(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=u;u=u+16|0;h=g;f[c+48>>2]=d;f[c+44>>2]=e;e=f[c+8>>2]|0;i=c+12|0;j=f[i>>2]|0;if((j|0)!=(e|0)){k=j;do{j=k+-4|0;f[i>>2]=j;l=f[j>>2]|0;f[j>>2]=0;if(l|0)Va[f[(f[l>>2]|0)+4>>2]&127](l);k=f[i>>2]|0}while((k|0)!=(e|0))}e=f[c+20>>2]|0;k=c+24|0;i=f[k>>2]|0;if((i|0)!=(e|0))f[k>>2]=i+(~((i+-4-e|0)>>>2)<<2);e=f[c+32>>2]|0;i=c+36|0;k=f[i>>2]|0;if((k|0)!=(e|0))f[i>>2]=k+(~((k+-4-e|0)>>>2)<<2);if(!(f[c+4>>2]|0)){e=dn(32)|0;f[h>>2]=e;f[h+8>>2]=-2147483616;f[h+4>>2]=23;m=e;n=14670;o=m+23|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[e+23>>0]=0;f[a>>2]=-1;dj(a+4|0,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}Jd(a,c);if(f[a>>2]|0){u=g;return}e=a+4|0;k=e+11|0;if((b[k>>0]|0)<0)br(f[e>>2]|0);Ji(a,c);if(f[a>>2]|0){u=g;return}if((b[k>>0]|0)<0)br(f[e>>2]|0);if(!(Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0)){i=dn(32)|0;f[h>>2]=i;f[h+8>>2]=-2147483616;f[h+4>>2]=29;m=i;n=14694;o=m+29|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[i+29>>0]=0;f[a>>2]=-1;dj(e,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}if(!(Qa[f[(f[c>>2]|0)+20>>2]&127](c)|0)){i=dn(32)|0;f[h>>2]=i;f[h+8>>2]=-2147483616;f[h+4>>2]=31;m=i;n=14724;o=m+31|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[i+31>>0]=0;f[a>>2]=-1;dj(e,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}Wa[f[(f[c>>2]|0)+24>>2]&15](a,c);if(f[a>>2]|0){u=g;return}if((b[k>>0]|0)<0)br(f[e>>2]|0);if(!(Qa[f[(f[c>>2]|0)+28>>2]&127](c)|0)){k=dn(48)|0;f[h>>2]=k;f[h+8>>2]=-2147483600;f[h+4>>2]=34;m=k;n=14756;o=m+34|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[k+34>>0]=0;f[a>>2]=-1;dj(e,h);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);u=g;return}e=dn(32)|0;f[h>>2]=e;f[h+8>>2]=-2147483616;f[h+4>>2]=30;m=e;n=14791;o=m+30|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[e+30>>0]=0;e=Oj(d,h,0)|0;if((b[h+11>>0]|0)<0)br(f[h>>2]|0);if(e)Va[f[(f[c>>2]|0)+48>>2]&127](c);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=g;return}function Bd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;g=a;h=b;i=h;j=c;k=d;l=k;if(!i){m=(e|0)!=0;if(!l){if(m){f[e>>2]=(g>>>0)%(j>>>0);f[e+4>>2]=0}n=0;o=(g>>>0)/(j>>>0)>>>0;return (I=n,o)|0}else{if(!m){n=0;o=0;return (I=n,o)|0}f[e>>2]=a|0;f[e+4>>2]=b&0;n=0;o=0;return (I=n,o)|0}}m=(l|0)==0;do if(j){if(!m){p=(_(l|0)|0)-(_(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<>>(q>>>0)&s;w=0;x=g<>2]=a|0;f[e+4>>2]=h|b&0;n=0;o=0;return (I=n,o)|0}r=j-1|0;if(r&j|0){s=(_(j|0)|0)+33-(_(i|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&i>>>(z>>>0)|(i<>>(s>>>0))&A;v=A&i>>>(s>>>0);w=g<>>(z>>>0))&y|g<>31;break}if(e|0){f[e>>2]=r&g;f[e+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return (I=n,o)|0}else{r=im(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return (I=n,o)|0}}else{if(m){if(e|0){f[e>>2]=(i>>>0)%(j>>>0);f[e+4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return (I=n,o)|0}if(!g){if(e|0){f[e>>2]=0;f[e+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return (I=n,o)|0}r=l-1|0;if(!(r&l)){if(e|0){f[e>>2]=a|0;f[e+4>>2]=r&i|b&0}n=0;o=i>>>((im(l|0)|0)>>>0);return (I=n,o)|0}r=(_(l|0)|0)-(_(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<>>(s>>>0);v=i>>>(s>>>0);w=0;x=g<>2]=a|0;f[e+4>>2]=h|b&0;n=0;o=0;return (I=n,o)|0}while(0);if(!t){B=x;C=w;D=v;E=u;F=0;G=0}else{b=c|0|0;c=k|d&0;d=Tn(b|0,c|0,-1,-1)|0;k=I;h=x;x=w;w=v;v=u;u=t;t=0;do{a=h;h=x>>>31|h<<1;x=t|x<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;Vn(d|0,k|0,g|0,a|0)|0;i=I;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=Vn(g|0,a|0,l&b|0,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&c|0)|0;w=I;u=u-1|0}while((u|0)!=0);B=h;C=x;D=w;E=v;F=0;G=t}t=C;C=0;if(e|0){f[e>>2]=E;f[e+4>>2]=D}n=(t|0)>>>31|(B|C)<<1|(C<<1|t>>>31)&0|F;o=(t<<1|0>>>31)&-2|G;return (I=n,o)|0}function Cd(a){a=a|0;var c=0,d=0,e=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;c=u;u=u+32|0;d=c+4|0;e=c;g=c+16|0;h=a+48|0;i=f[h>>2]|0;j=dn(32)|0;f[d>>2]=j;f[d+8>>2]=-2147483616;f[d+4>>2]=20;k=j;l=13101;m=k+20|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[j+20>>0]=0;j=vk(i+24|0,d)|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);i=f[h>>2]|0;n=dn(32)|0;f[d>>2]=n;f[d+8>>2]=-2147483616;f[d+4>>2]=22;k=n;l=13122;m=k+22|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[n+22>>0]=0;n=vk(i+24|0,d)|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);i=a+64|0;o=f[i>>2]|0;f[i>>2]=0;if(o|0)Va[f[(f[o>>2]|0)+4>>2]&127](o);o=f[a+56>>2]|0;p=(((f[o+100>>2]|0)-(f[o+96>>2]|0)|0)/12|0)>>>0<1e3;o=f[h>>2]|0;q=dn(32)|0;f[d>>2]=q;f[d+8>>2]=-2147483616;f[d+4>>2]=18;k=q;l=13145;m=k+18|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[q+18>>0]=0;q=yk(o,d,-1)|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);switch(q|0){case -1:{if(j?p|((Yh(f[h>>2]|0)|0)>4|n^1):0)r=13;else r=17;break}case 0:{if(j)r=13;else r=21;break}case 2:{r=17;break}default:r=21}if((r|0)==13){j=f[a+44>>2]|0;b[g>>0]=0;n=j+16|0;h=f[n+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[n>>2]|0)>>>0>0)){f[e>>2]=f[j+4>>2];f[d>>2]=f[e>>2];ye(j,d,g,g+1|0)|0}j=dn(296)|0;Ni(j);n=f[i>>2]|0;f[i>>2]=j;if(!n)s=j;else{Va[f[(f[n>>2]|0)+4>>2]&127](n);r=21}}else if((r|0)==17){n=f[a+44>>2]|0;b[g>>0]=2;j=n+16|0;h=f[j+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[j>>2]|0)>>>0>0)){f[e>>2]=f[n+4>>2];f[d>>2]=f[e>>2];ye(n,d,g,g+1|0)|0}g=dn(360)|0;ji(g);d=f[i>>2]|0;f[i>>2]=g;if(!d)s=g;else{Va[f[(f[d>>2]|0)+4>>2]&127](d);r=21}}if((r|0)==21){r=f[i>>2]|0;if(!r){t=0;u=c;return t|0}else s=r}t=Ra[f[(f[s>>2]|0)+8>>2]&127](s,a)|0;u=c;return t|0}function Dd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;e=b+12|0;g=f[e>>2]|0;h=c+4|0;i=(f[h>>2]|0)-g|0;j=c;f[j>>2]=(f[c>>2]|0)-g;f[j+4>>2]=i;i=(f[d>>2]|0)-g|0;j=d+4|0;k=(f[j>>2]|0)-g|0;g=d;f[g>>2]=i;f[g+4>>2]=k;g=f[e>>2]|0;if((((k|0)>-1?k:0-k|0)+((i|0)>-1?i:0-i|0)|0)>(g|0)){l=f[c>>2]|0;m=f[h>>2]|0;if((l|0)>-1)if((m|0)<=-1)if((l|0)<1){n=-1;o=-1}else p=6;else{n=1;o=1}else if((m|0)<1){n=-1;o=-1}else p=6;if((p|0)==6){n=(l|0)>0?1:-1;o=(m|0)>0?1:-1}q=X(g,n)|0;r=X(g,o)|0;g=(l<<1)-q|0;f[c>>2]=g;l=(m<<1)-r|0;f[h>>2]=l;if((X(n,o)|0)>-1){o=0-l|0;f[c>>2]=o;s=0-g|0;t=o}else{f[c>>2]=l;s=g;t=l}f[c>>2]=(t+q|0)/2|0;f[h>>2]=(s+r|0)/2|0;r=f[d>>2]|0;s=f[j>>2]|0;if((r|0)>-1)if((s|0)<=-1)if((r|0)<1){u=-1;v=-1}else p=14;else{u=1;v=1}else if((s|0)<1){u=-1;v=-1}else p=14;if((p|0)==14){u=(r|0)>0?1:-1;v=(s|0)>0?1:-1}q=f[e>>2]|0;e=X(q,u)|0;t=X(q,v)|0;q=(r<<1)-e|0;f[d>>2]=q;r=(s<<1)-t|0;f[j>>2]=r;if((X(u,v)|0)>-1){v=0-r|0;f[d>>2]=v;w=0-q|0;x=v}else{f[d>>2]=r;w=q;x=r}r=(x+e|0)/2|0;f[d>>2]=r;e=(w+t|0)/2|0;f[j>>2]=e;y=r;z=e}else{y=i;z=k}if(!y)if(!z){A=y;B=z}else p=22;else if((y|0)<0&(z|0)<1){A=y;B=z}else p=22;if((p|0)==22){if(!y)C=(z|0)==0?0:(z|0)>0?3:1;else C=(y|0)>0?(z>>31)+2|0:(z|0)<1?0:3;z=f[c>>2]|0;y=f[h>>2]|0;switch(C|0){case 1:{C=c;f[C>>2]=y;f[C+4>>2]=0-z;D=f[j>>2]|0;E=0-(f[d>>2]|0)|0;break}case 2:{C=c;f[C>>2]=0-z;f[C+4>>2]=0-y;D=0-(f[d>>2]|0)|0;E=0-(f[j>>2]|0)|0;break}case 3:{C=c;f[C>>2]=0-y;f[C+4>>2]=z;D=0-(f[j>>2]|0)|0;E=f[d>>2]|0;break}default:{C=c;f[C>>2]=z;f[C+4>>2]=y;D=f[d>>2]|0;E=f[j>>2]|0}}j=d;f[j>>2]=D;f[j+4>>2]=E;A=D;B=E}E=(f[c>>2]|0)-A|0;f[a>>2]=E;A=(f[h>>2]|0)-B|0;B=a+4|0;f[B>>2]=A;if((E|0)<0)F=(f[b+4>>2]|0)+E|0;else F=E;f[a>>2]=F;if((A|0)>=0){G=A;f[B>>2]=G;return}G=(f[b+4>>2]|0)+A|0;f[B>>2]=G;return}function Ed(a,b){a=a|0;b=b|0;var c=0,e=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,A=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){b:do if(i){g=l;c=m;j=n;while(1){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0))break;p=(f[a>>2]|0)+(o<<2)|0;if(!(f[p>>2]|0)){q=e;r=j;s=o;t=p;break b}p=e+8|0;u=e;while(1){v=f[u>>2]|0;if(!v)break;if((d[p>>1]|0)==(d[v+8>>1]|0))u=v;else break}f[j>>2]=v;f[u>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;p=f[g>>2]|0;if(!p){w=37;break a}else e=p}c=f[e>>2]|0;if(!c){w=37;break a}else{g=e;j=e}}}else{j=l;g=m;c=n;while(1){p=g;while(1){x=f[p+4>>2]|0;if(x>>>0>>0)y=x;else y=(x>>>0)%(b>>>0)|0;if((y|0)==(k|0))break;x=(f[a>>2]|0)+(y<<2)|0;if(!(f[x>>2]|0)){q=p;r=c;s=y;t=x;break b}x=p+8|0;z=p;while(1){A=f[z>>2]|0;if(!A)break;if((d[x>>1]|0)==(d[A+8>>1]|0))z=A;else break}f[c>>2]=A;f[z>>2]=f[f[(f[a>>2]|0)+(y<<2)>>2]>>2];f[f[(f[a>>2]|0)+(y<<2)>>2]>>2]=p;x=f[j>>2]|0;if(!x){w=37;break a}else p=x}g=f[p>>2]|0;if(!g){w=37;break a}else{j=p;c=p}}}while(0);f[t>>2]=r;m=f[q>>2]|0;if(!m){w=37;break}else{k=s;l=q;n=q}}if((w|0)==37)return}function Fd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){b:do if(i){g=l;d=m;j=n;while(1){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0))break;p=(f[a>>2]|0)+(o<<2)|0;if(!(f[p>>2]|0)){q=e;r=j;s=o;t=p;break b}p=e+8|0;u=e;while(1){v=f[u>>2]|0;if(!v)break;if((b[p>>0]|0)==(b[v+8>>0]|0))u=v;else break}f[j>>2]=v;f[u>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;p=f[g>>2]|0;if(!p){w=37;break a}else e=p}d=f[e>>2]|0;if(!d){w=37;break a}else{g=e;j=e}}}else{j=l;g=m;d=n;while(1){p=g;while(1){x=f[p+4>>2]|0;if(x>>>0>>0)y=x;else y=(x>>>0)%(c>>>0)|0;if((y|0)==(k|0))break;x=(f[a>>2]|0)+(y<<2)|0;if(!(f[x>>2]|0)){q=p;r=d;s=y;t=x;break b}x=p+8|0;z=p;while(1){A=f[z>>2]|0;if(!A)break;if((b[x>>0]|0)==(b[A+8>>0]|0))z=A;else break}f[d>>2]=A;f[z>>2]=f[f[(f[a>>2]|0)+(y<<2)>>2]>>2];f[f[(f[a>>2]|0)+(y<<2)>>2]>>2]=p;x=f[j>>2]|0;if(!x){w=37;break a}else p=x}g=f[p>>2]|0;if(!g){w=37;break a}else{j=p;d=p}}}while(0);f[t>>2]=r;m=f[q>>2]|0;if(!m){w=37;break}else{k=s;l=q;n=q}}if((w|0)==37)return}function Gd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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;g=f[c>>2]|0;c=f[b>>2]|0;h=g-c|0;i=a+8|0;j=f[i>>2]|0;if(h>>>0<64){if(j>>>0<=1){k=0;return k|0}l=f[e>>2]|0;m=0;n=1;while(1){o=(f[l+(m<<2)>>2]|0)>>>0>(f[l+(n<<2)>>2]|0)>>>0?n:m;n=n+1|0;if(n>>>0>=j>>>0){k=o;break}else m=o}return k|0}if(j){j=f[a+1128>>2]|0;m=f[e>>2]|0;e=f[a+1140>>2]|0;n=f[d>>2]|0;d=b+4|0;l=b+8|0;if((g|0)==(c|0)){b=0;do{o=j+(b<<2)|0;f[o>>2]=0;p=(f[a>>2]|0)-(f[m+(b<<2)>>2]|0)|0;f[e+(b<<2)>>2]=p;if(p|0){p=f[o>>2]|0;q=h-p|0;f[o>>2]=q>>>0

>>0?p:q}b=b+1|0;q=f[i>>2]|0}while(b>>>0>>0);r=q}else{b=0;do{q=j+(b<<2)|0;f[q>>2]=0;p=(f[a>>2]|0)-(f[m+(b<<2)>>2]|0)|0;f[e+(b<<2)>>2]=p;if(p|0){o=(f[n+(b<<2)>>2]|0)+(1<>2]|0;s=f[(f[d>>2]|0)+24>>2]|0;t=c;u=f[q>>2]|0;do{v=s+((X(t,p)|0)<<2)+(b<<2)|0;u=u+((f[v>>2]|0)>>>0>>0&1)|0;f[q>>2]=u;t=t+1|0}while((t|0)!=(g|0));t=h-u|0;f[q>>2]=t>>>0>>0?u:t}b=b+1|0;t=f[i>>2]|0}while(b>>>0>>0);r=t}if(r){b=f[a+1140>>2]|0;i=a+1128|0;h=0;g=0;c=0;while(1){if(!(f[b+(g<<2)>>2]|0)){w=h;x=c}else{d=f[(f[i>>2]|0)+(g<<2)>>2]|0;l=h>>>0>>0;w=l?d:h;x=l?g:c}g=g+1|0;if(g>>>0>=r>>>0){y=x;break}else{h=w;c=x}}}else y=0}else y=0;x=a+1088|0;c=a+1104|0;w=f[c>>2]|0;h=32-w|0;if((h|0)<4){r=y&15;g=4-h|0;f[c>>2]=g;h=a+1100|0;i=f[h>>2]|r>>>g;f[h>>2]=i;g=a+1092|0;b=f[g>>2]|0;if((b|0)==(f[a+1096>>2]|0))Ci(x,h);else{f[b>>2]=i;f[g>>2]=b+4}f[h>>2]=r<<32-(f[c>>2]|0);k=y;return k|0}r=a+1100|0;h=f[r>>2]|y<<28>>>w;f[r>>2]=h;b=w+4|0;f[c>>2]=b;if((b|0)!=32){k=y;return k|0}b=a+1092|0;w=f[b>>2]|0;if((w|0)==(f[a+1096>>2]|0))Ci(x,r);else{f[w>>2]=h;f[b>>2]=w+4}f[r>>2]=0;f[c>>2]=0;k=y;return k|0}function Hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)br(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}d=dn(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)br(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){b:do if(h){e=k;c=l;i=m;while(1){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0))break;o=(f[a>>2]|0)+(n<<2)|0;if(!(f[o>>2]|0)){p=d;q=i;r=n;s=o;break b}o=d+8|0;t=d;while(1){u=f[t>>2]|0;if(!u)break;if((f[o>>2]|0)==(f[u+8>>2]|0))t=u;else break}f[i>>2]=u;f[t>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;o=f[e>>2]|0;if(!o){v=37;break a}else d=o}c=f[d>>2]|0;if(!c){v=37;break a}else{e=d;i=d}}}else{i=k;e=l;c=m;while(1){o=e;while(1){w=f[o+4>>2]|0;if(w>>>0>>0)x=w;else x=(w>>>0)%(b>>>0)|0;if((x|0)==(j|0))break;w=(f[a>>2]|0)+(x<<2)|0;if(!(f[w>>2]|0)){p=o;q=c;r=x;s=w;break b}w=o+8|0;y=o;while(1){z=f[y>>2]|0;if(!z)break;if((f[w>>2]|0)==(f[z+8>>2]|0))y=z;else break}f[c>>2]=z;f[y>>2]=f[f[(f[a>>2]|0)+(x<<2)>>2]>>2];f[f[(f[a>>2]|0)+(x<<2)>>2]>>2]=o;w=f[i>>2]|0;if(!w){v=37;break a}else o=w}e=f[o>>2]|0;if(!e){v=37;break a}else{i=o;c=o}}}while(0);f[s>>2]=q;l=f[p>>2]|0;if(!l){v=37;break}else{j=r;k=p;m=p}}if((v|0)==37)return}function Id(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)br(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}e=dn(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)br(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;e=a+24|0;k=j;j=g;l=d;d=g;a:while(1){g=j;m=l;n=d;b:while(1){o=m;while(1){p=f[o+4>>2]|0;if(!i)if(p>>>0>>0)q=p;else q=(p>>>0)%(c>>>0)|0;else q=p&h;if((q|0)==(k|0))break;r=(f[a>>2]|0)+(q<<2)|0;if(!(f[r>>2]|0))break b;p=f[o>>2]|0;c:do if(!p)s=o;else{t=f[o+8>>2]|0;u=f[e>>2]|0;v=f[u+8>>2]|0;w=(f[u+12>>2]|0)-v|0;u=v;v=w>>>2;if((w|0)>0){x=o;y=p}else{w=p;while(1){z=f[w>>2]|0;if(!z){s=w;break c}else w=z}}while(1){w=f[y+8>>2]|0;z=0;do{A=f[u+(z<<2)>>2]|0;if(!(b[A+84>>0]|0)){B=f[A+68>>2]|0;C=f[B+(w<<2)>>2]|0;D=f[B+(t<<2)>>2]|0}else{C=w;D=t}z=z+1|0;if((D|0)!=(C|0)){s=x;break c}}while((z|0)<(v|0));z=f[y>>2]|0;if(!z){s=y;break}else{w=y;y=z;x=w}}}while(0);f[n>>2]=f[s>>2];f[s>>2]=f[f[(f[a>>2]|0)+(q<<2)>>2]>>2];f[f[(f[a>>2]|0)+(q<<2)>>2]>>2]=o;p=f[g>>2]|0;if(!p){E=38;break a}else o=p}m=f[o>>2]|0;if(!m){E=38;break a}else{g=o;n=o}}f[r>>2]=n;l=f[o>>2]|0;if(!l){E=38;break}else{k=q;j=o;d=o}}if((E|0)==38)return}function Jd(a,c){a=a|0;c=c|0;var e=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,v=0;e=u;u=u+16|0;g=e+4|0;h=e;i=e+12|0;j=e+11|0;k=e+10|0;l=e+8|0;m=c+44|0;n=f[m>>2]|0;o=n+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];ye(n,g,14849,14854)|0}n=Qa[f[(f[c>>2]|0)+8>>2]&127](c)|0;b[i>>0]=n;b[j>>0]=2;b[k>>0]=(n&255|0)==0?3:2;n=f[m>>2]|0;o=n+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];ye(n,g,j,j+1|0)|0;j=f[m>>2]|0;o=j+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[j+4>>2];f[g>>2]=f[h>>2];ye(j,g,k,k+1|0)|0;k=f[m>>2]|0;o=k+16|0;p=f[o+4>>2]|0;if((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0){q=h;r=k}else{f[h>>2]=f[k+4>>2];f[g>>2]=f[h>>2];ye(k,g,i,i+1|0)|0;q=h;r=f[m>>2]|0}}else{s=h;t=j;v=6}}else{s=h;t=n;v=6}if((v|0)==6){q=h;r=t}t=Qa[f[(f[c>>2]|0)+12>>2]&127](c)|0;b[l>>0]=t;t=r+16|0;q=f[t+4>>2]|0;if(!((q|0)>0|(q|0)==0&(f[t>>2]|0)>>>0>0)){f[h>>2]=f[r+4>>2];f[g>>2]=f[h>>2];ye(r,g,l,l+1|0)|0}d[l>>1]=(f[(f[c+4>>2]|0)+4>>2]|0)==0?0:-32768;c=f[m>>2]|0;m=c+16|0;r=f[m+4>>2]|0;if((r|0)>0|(r|0)==0&(f[m>>2]|0)>>>0>0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}f[h>>2]=f[c+4>>2];f[g>>2]=f[h>>2];ye(c,g,l,l+2|0)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}function Kd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=Oa,x=0,y=Oa,z=Oa,A=Oa,B=Oa;e=u;u=u+16|0;g=e;h=a+4|0;if((f[h>>2]|0)!=-1){i=0;u=e;return i|0}f[h>>2]=d;d=b[c+24>>0]|0;h=d<<24>>24;j=a+20|0;n[j>>2]=$(0.0);f[g>>2]=0;k=g+4|0;f[k>>2]=0;f[g+8>>2]=0;do if(d<<24>>24)if(d<<24>>24<0)mq(g);else{l=h<<2;m=dn(l)|0;f[g>>2]=m;o=m+(h<<2)|0;f[g+8>>2]=o;hj(m|0,0,l|0)|0;l=m+(h<<2)|0;f[k>>2]=l;p=m;q=l;r=o;break}else{p=0;q=0;r=0}while(0);k=a+8|0;g=f[k>>2]|0;o=a+12|0;if(!g)s=a+16|0;else{l=f[o>>2]|0;if((l|0)!=(g|0))f[o>>2]=l+(~((l+-4-g|0)>>>2)<<2);br(g);g=a+16|0;f[g>>2]=0;f[o>>2]=0;f[k>>2]=0;s=g}f[k>>2]=p;f[o>>2]=q;f[s>>2]=r;r=h>>>0>1073741823?-1:h<<2;s=_q(r)|0;q=_q(r)|0;r=c+48|0;o=f[r>>2]|0;g=c+40|0;a=f[g>>2]|0;l=f[c>>2]|0;Rg(q|0,(f[l>>2]|0)+o|0,a|0)|0;Rg(p|0,(f[l>>2]|0)+o|0,a|0)|0;a=r;r=f[a>>2]|0;o=f[a+4>>2]|0;a=g;g=f[a>>2]|0;l=f[a+4>>2]|0;a=f[c>>2]|0;Rg(s|0,(f[a>>2]|0)+r|0,g|0)|0;p=f[c+80>>2]|0;a:do if(p>>>0>1){if(d<<24>>24<=0){c=1;while(1){m=on(g|0,l|0,c|0,0)|0;t=Tn(m|0,I|0,r|0,o|0)|0;Rg(q|0,(f[a>>2]|0)+t|0,g|0)|0;c=c+1|0;if(c>>>0>=p>>>0)break a}}c=f[k>>2]|0;t=1;do{m=on(g|0,l|0,t|0,0)|0;v=Tn(m|0,I|0,r|0,o|0)|0;Rg(q|0,(f[a>>2]|0)+v|0,g|0)|0;v=0;do{m=c+(v<<2)|0;w=$(n[m>>2]);x=q+(v<<2)|0;y=$(n[x>>2]);if(w>y){n[m>>2]=y;z=$(n[x>>2])}else z=y;x=s+(v<<2)|0;if($(n[x>>2])>2]=z;v=v+1|0}while((v|0)!=(h|0));t=t+1|0}while(t>>>0

>>0)}while(0);if(d<<24>>24>0){d=f[k>>2]|0;k=0;z=$(n[j>>2]);while(1){y=$(n[s+(k<<2)>>2]);w=$(y-$(n[d+(k<<2)>>2]));if(w>z){n[j>>2]=w;A=w}else A=z;k=k+1|0;if((k|0)==(h|0)){B=A;break}else z=A}}else B=$(n[j>>2]);if(B==$(0.0))n[j>>2]=$(1.0);$q(q);$q(s);i=1;u=e;return i|0}function Ld(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;g=a+8|0;Ah(g,b,d,e);h=d-e|0;if((h|0)>0){d=0-e|0;i=a+16|0;j=a+32|0;k=a+12|0;l=a+28|0;m=a+20|0;n=a+24|0;o=h;h=f[g>>2]|0;while(1){p=b+(o<<2)|0;q=c+(o<<2)|0;if((h|0)>0){r=0;s=p+(d<<2)|0;t=h;while(1){if((t|0)>0){u=0;do{v=f[s+(u<<2)>>2]|0;w=f[i>>2]|0;if((v|0)>(w|0)){x=f[j>>2]|0;f[x+(u<<2)>>2]=w;y=x}else{x=f[k>>2]|0;w=f[j>>2]|0;f[w+(u<<2)>>2]=(v|0)<(x|0)?x:v;y=w}u=u+1|0}while((u|0)<(f[g>>2]|0));z=y}else z=f[j>>2]|0;u=(f[p+(r<<2)>>2]|0)-(f[z+(r<<2)>>2]|0)|0;w=q+(r<<2)|0;f[w>>2]=u;if((u|0)>=(f[l>>2]|0)){if((u|0)>(f[n>>2]|0)){A=u-(f[m>>2]|0)|0;B=31}}else{A=(f[m>>2]|0)+u|0;B=31}if((B|0)==31){B=0;f[w>>2]=A}r=r+1|0;w=f[g>>2]|0;if((r|0)>=(w|0)){C=w;break}else{s=z;t=w}}}else C=h;o=o-e|0;if((o|0)<=0){D=C;break}else h=C}}else D=f[g>>2]|0;C=e>>>0>1073741823?-1:e<<2;e=_q(C)|0;hj(e|0,0,C|0)|0;if((D|0)<=0){$q(e);return 1}C=a+16|0;h=a+32|0;o=a+12|0;z=a+28|0;A=a+20|0;m=a+24|0;a=0;n=e;l=D;while(1){if((l|0)>0){D=0;do{j=f[n+(D<<2)>>2]|0;y=f[C>>2]|0;if((j|0)>(y|0)){k=f[h>>2]|0;f[k+(D<<2)>>2]=y;E=k}else{k=f[o>>2]|0;y=f[h>>2]|0;f[y+(D<<2)>>2]=(j|0)<(k|0)?k:j;E=y}D=D+1|0}while((D|0)<(f[g>>2]|0));F=E}else F=f[h>>2]|0;D=(f[b+(a<<2)>>2]|0)-(f[F+(a<<2)>>2]|0)|0;y=c+(a<<2)|0;f[y>>2]=D;if((D|0)>=(f[z>>2]|0)){if((D|0)>(f[m>>2]|0)){G=D-(f[A>>2]|0)|0;B=16}}else{G=(f[A>>2]|0)+D|0;B=16}if((B|0)==16){B=0;f[y>>2]=G}a=a+1|0;l=f[g>>2]|0;if((a|0)>=(l|0))break;else n=F}$q(e);return 1}function Md(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,A=0,B=0,C=0,D=0,E=0,F=0;e=f[a>>2]|0;g=e;h=(f[b>>2]|0)-g|0;b=e+(h>>2<<2)|0;i=f[c>>2]|0;c=f[d>>2]|0;d=c-i|0;j=d>>2;k=i;l=c;if((d|0)<=0){m=b;return m|0}d=a+8|0;n=f[d>>2]|0;o=a+4|0;p=f[o>>2]|0;q=p;if((j|0)<=(n-q>>2|0)){r=b;s=q-r|0;t=s>>2;if((j|0)>(t|0)){u=k+(t<<2)|0;t=u;if((u|0)==(l|0))v=p;else{w=l+-4-t|0;x=u;u=p;while(1){f[u>>2]=f[x>>2];x=x+4|0;if((x|0)==(l|0))break;else u=u+4|0}u=p+((w>>>2)+1<<2)|0;f[o>>2]=u;v=u}if((s|0)>0){y=t;z=v}else{m=b;return m|0}}else{y=c;z=p}c=z-(b+(j<<2))>>2;v=b+(c<<2)|0;if(v>>>0

>>0){t=(p+(0-c<<2)+~r|0)>>>2;r=v;s=z;while(1){f[s>>2]=f[r>>2];r=r+4|0;if(r>>>0>=p>>>0)break;else s=s+4|0}f[o>>2]=z+(t+1<<2)}if(c|0){c=v;v=z;do{c=c+-4|0;v=v+-4|0;f[v>>2]=f[c>>2]}while((c|0)!=(b|0))}c=y;if((k|0)==(c|0)){m=b;return m|0}else{A=b;B=k}while(1){f[A>>2]=f[B>>2];B=B+4|0;if((B|0)==(c|0)){m=b;break}else A=A+4|0}return m|0}A=(q-g>>2)+j|0;if(A>>>0>1073741823)mq(a);j=n-g|0;g=j>>1;n=j>>2>>>0<536870911?(g>>>0>>0?A:g):1073741823;g=b;A=h>>2;do if(n)if(n>>>0>1073741823){j=ra(8)|0;Wo(j,14941);f[j>>2]=6944;va(j|0,1080,114)}else{j=dn(n<<2)|0;C=j;D=j;break}else{C=0;D=0}while(0);j=D+(A<<2)|0;A=D+(n<<2)|0;if((l|0)==(k|0))E=j;else{n=((l+-4-i|0)>>>2)+1|0;i=k;k=j;while(1){f[k>>2]=f[i>>2];i=i+4|0;if((i|0)==(l|0))break;else k=k+4|0}E=j+(n<<2)|0}if((h|0)>0)Rg(C|0,e|0,h|0)|0;h=q-g|0;if((h|0)>0){Rg(E|0,b|0,h|0)|0;F=E+(h>>>2<<2)|0}else F=E;f[a>>2]=D;f[o>>2]=F;f[d>>2]=A;if(!e){m=j;return m|0}br(e);m=j;return m|0}function Nd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0;switch(c|0){case 1:{c=dn(60)|0;f[c>>2]=1528;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1948;i=c;f[a>>2]=i;return}case 4:{c=dn(168)|0;Ei(c,d,e,g);i=c;f[a>>2]=i;return}case 5:{c=dn(104)|0;f[c>>2]=1528;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2004;f[c+60>>2]=0;f[c+64>>2]=0;f[c+76>>2]=0;f[c+80>>2]=0;f[c+84>>2]=0;h=c+88|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=dn(140)|0;f[c>>2]=1528;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);e=c+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=2060;f[c+64>>2]=0;f[c+68>>2]=0;e=c+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+60>>2]=2116;f[c+88>>2]=1;g=c+92|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;rn(c+108|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Od(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0;switch(c|0){case 1:{c=dn(60)|0;f[c>>2]=1528;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1640;i=c;f[a>>2]=i;return}case 4:{c=dn(168)|0;Hi(c,d,e,g);i=c;f[a>>2]=i;return}case 5:{c=dn(104)|0;f[c>>2]=1528;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1696;f[c+60>>2]=0;f[c+64>>2]=0;f[c+76>>2]=0;f[c+80>>2]=0;f[c+84>>2]=0;h=c+88|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=dn(140)|0;f[c>>2]=1528;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);e=c+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=1752;f[c+64>>2]=0;f[c+68>>2]=0;e=c+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+60>>2]=1808;f[c+88>>2]=1;g=c+92|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;rn(c+108|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Pd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0;switch(c|0){case 1:{c=dn(40)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2628;i=c;f[a>>2]=i;return}case 4:{c=dn(152)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2684;h=c+96|0;b=c+40|0;j=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));Sm(h);f[c+136>>2]=0;f[c+140>>2]=0;f[c+144>>2]=0;i=c;f[a>>2]=i;return}case 5:{c=dn(84)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2740;f[c+40>>2]=0;f[c+44>>2]=0;f[c+56>>2]=0;f[c+60>>2]=0;f[c+64>>2]=0;h=c+68|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=dn(120)|0;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];e=c+24|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=2796;f[c+44>>2]=0;f[c+48>>2]=0;e=c+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+40>>2]=2852;f[c+68>>2]=1;g=c+72|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;rn(c+88|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;switch(b-a>>2|0){case 2:{d=b+-4|0;e=f[d>>2]|0;g=f[a>>2]|0;h=f[c>>2]|0;i=f[h>>2]|0;j=(f[h+4>>2]|0)-i>>3;if(j>>>0<=e>>>0)mq(h);k=i;if(j>>>0<=g>>>0)mq(h);if((f[k+(e<<3)>>2]|0)>>>0>=(f[k+(g<<3)>>2]|0)>>>0){l=1;return l|0}f[a>>2]=e;f[d>>2]=g;l=1;return l|0}case 3:{Cg(a,a+4|0,b+-4|0,c)|0;l=1;return l|0}case 4:{Qg(a,a+4|0,a+8|0,b+-4|0,c)|0;l=1;return l|0}case 5:{Tf(a,a+4|0,a+8|0,a+12|0,b+-4|0,c)|0;l=1;return l|0}case 1:case 0:{l=1;return l|0}default:{g=a+8|0;Cg(a,a+4|0,g,c)|0;d=a+12|0;a:do if((d|0)!=(b|0)){e=f[c>>2]|0;k=f[e>>2]|0;h=(f[e+4>>2]|0)-k>>3;j=k;k=d;i=0;m=g;b:while(1){n=f[k>>2]|0;o=f[m>>2]|0;if(h>>>0<=n>>>0){p=14;break}if(h>>>0<=o>>>0){p=16;break}q=j+(n<<3)|0;if((f[q>>2]|0)>>>0<(f[j+(o<<3)>>2]|0)>>>0){r=m;s=k;t=o;while(1){f[s>>2]=t;if((r|0)==(a|0)){u=a;break}o=r+-4|0;t=f[o>>2]|0;if(h>>>0<=t>>>0){p=20;break b}if((f[q>>2]|0)>>>0>=(f[j+(t<<3)>>2]|0)>>>0){u=r;break}else{v=r;r=o;s=v}}f[u>>2]=n;s=i+1|0;if((s|0)==8){w=0;x=(k+4|0)==(b|0);break a}else y=s}else y=i;s=k+4|0;if((s|0)==(b|0)){w=1;x=0;break a}else{r=k;k=s;i=y;m=r}}if((p|0)==14)mq(e);else if((p|0)==16)mq(e);else if((p|0)==20)mq(e)}else{w=1;x=0}while(0);l=x|w;return l|0}}return 0}function Rd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0;switch(c|0){case 1:{c=dn(40)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2376;i=c;f[a>>2]=i;return}case 4:{c=dn(152)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2432;h=c+96|0;b=c+40|0;j=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));Sm(h);f[c+136>>2]=0;f[c+140>>2]=0;f[c+144>>2]=0;i=c;f[a>>2]=i;return}case 5:{c=dn(84)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2488;f[c+40>>2]=0;f[c+44>>2]=0;f[c+56>>2]=0;f[c+60>>2]=0;f[c+64>>2]=0;h=c+68|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=dn(120)|0;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];e=c+24|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=2544;f[c+44>>2]=0;f[c+48>>2]=0;e=c+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+40>>2]=2600;f[c+68>>2]=1;g=c+72|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;rn(c+88|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=Oa,t=Oa,u=Oa,v=0,w=0,x=0,y=0,z=0;c=f[b>>2]|0;b=a+4|0;d=f[b>>2]|0;e=(d|0)==0;a:do if(!e){g=d+-1|0;h=(g&d|0)==0;if(!h)if(c>>>0>>0)i=c;else i=(c>>>0)%(d>>>0)|0;else i=g&c;j=f[(f[a>>2]|0)+(i<<2)>>2]|0;if(!j)k=i;else{if(h){h=j;while(1){l=f[h>>2]|0;if(!l){k=i;break a}m=f[l+4>>2]|0;if(!((m|0)==(c|0)|(m&g|0)==(i|0))){k=i;break a}if((f[l+8>>2]|0)==(c|0)){o=l;break}else h=l}p=o+12|0;return p|0}else q=j;while(1){h=f[q>>2]|0;if(!h){k=i;break a}g=f[h+4>>2]|0;if((g|0)!=(c|0)){if(g>>>0>>0)r=g;else r=(g>>>0)%(d>>>0)|0;if((r|0)!=(i|0)){k=i;break a}}if((f[h+8>>2]|0)==(c|0)){o=h;break}else q=h}p=o+12|0;return p|0}}else k=0;while(0);q=dn(16)|0;f[q+8>>2]=c;f[q+12>>2]=0;f[q+4>>2]=c;f[q>>2]=0;i=a+12|0;s=$(((f[i>>2]|0)+1|0)>>>0);t=$(d>>>0);u=$(n[a+16>>2]);do if(e|$(u*t)>>0<3|(d+-1&d|0)!=0)&1;j=~~$(W($(s/u)))>>>0;ti(a,r>>>0>>0?j:r);r=f[b>>2]|0;j=r+-1|0;if(!(j&r)){v=r;w=j&c;break}if(c>>>0>>0){v=r;w=c}else{v=r;w=(c>>>0)%(r>>>0)|0}}else{v=d;w=k}while(0);k=(f[a>>2]|0)+(w<<2)|0;w=f[k>>2]|0;if(!w){d=a+8|0;f[q>>2]=f[d>>2];f[d>>2]=q;f[k>>2]=d;d=f[q>>2]|0;if(d|0){k=f[d+4>>2]|0;d=v+-1|0;if(d&v)if(k>>>0>>0)x=k;else x=(k>>>0)%(v>>>0)|0;else x=k&d;y=(f[a>>2]|0)+(x<<2)|0;z=30}}else{f[q>>2]=f[w>>2];y=w;z=30}if((z|0)==30)f[y>>2]=q;f[i>>2]=(f[i>>2]|0)+1;o=q;p=o+12|0;return p|0}function Td(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0;c=u;u=u+16|0;d=c+4|0;e=c;f[a+64>>2]=b;g=a+128|0;f[g>>2]=2;h=a+132|0;f[h>>2]=7;i=Qa[f[(f[b>>2]|0)+32>>2]&127](b)|0;b=a+88|0;f[b>>2]=i;j=a+104|0;k=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;i=a+108|0;l=f[i>>2]|0;m=f[j>>2]|0;n=l-m>>2;o=m;p=l;if(k>>>0<=n>>>0)if(k>>>0>>0?(q=o+(k<<2)|0,(q|0)!=(p|0)):0){o=p+(~((p+-4-q|0)>>>2)<<2)|0;f[i>>2]=o;r=o;s=m}else{r=l;s=m}else{oi(j,k-n|0);r=f[i>>2]|0;s=f[j>>2]|0}if((r|0)!=(s|0)){s=0;do{r=f[b>>2]|0;f[e>>2]=s;f[d>>2]=f[e>>2];n=Og(r,d)|0;r=f[j>>2]|0;f[r+(s<<2)>>2]=n;s=s+1|0}while(s>>>0<(f[i>>2]|0)-r>>2>>>0)}i=a+92|0;s=f[b>>2]|0;j=f[s>>2]|0;d=(f[s+4>>2]|0)-j>>2;e=a+96|0;r=f[e>>2]|0;n=f[i>>2]|0;k=r-n>>2;m=n;n=r;if(d>>>0<=k>>>0)if(d>>>0>>0?(r=m+(d<<2)|0,(r|0)!=(n|0)):0){f[e>>2]=n+(~((n+-4-r|0)>>>2)<<2);t=s;v=j}else{t=s;v=j}else{oi(i,d-k|0);k=f[b>>2]|0;t=k;v=f[k>>2]|0}k=f[t+4>>2]|0;if((k|0)!=(v|0)){v=f[i>>2]|0;i=f[t>>2]|0;t=k-i>>2;k=0;do{f[v+(k<<2)>>2]=f[i+(k<<2)>>2];k=k+1|0}while(k>>>0>>0)}t=(f[h>>2]|0)-(f[g>>2]|0)+1|0;g=a+136|0;h=a+140|0;a=f[h>>2]|0;k=f[g>>2]|0;i=(a-k|0)/12|0;v=a;if(t>>>0>i>>>0){vf(g,t-i|0);u=c;return 1}if(t>>>0>=i>>>0){u=c;return 1}i=k+(t*12|0)|0;if((i|0)==(v|0)){u=c;return 1}else w=v;while(1){v=w+-12|0;f[h>>2]=v;t=f[v>>2]|0;if(!t)x=v;else{v=w+-8|0;k=f[v>>2]|0;if((k|0)!=(t|0))f[v>>2]=k+(~((k+-4-t|0)>>>2)<<2);br(t);x=f[h>>2]|0}if((x|0)==(i|0))break;else w=x}u=c;return 1}function Ud(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Oc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Vd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Pc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Wd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Qc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Xd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Rc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Yd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Sc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}xf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function Zd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Tc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=2097152;if(d){d=c;c=2097152;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<19)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}yf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function _d(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Uc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=1048576;if(d){d=c;c=1048576;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<18)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}zf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function $d(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Vc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=262144;if(d){d=c;c=262144;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<16)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Cf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ae(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Wc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=131072;if(d){d=c;c=131072;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<15)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Df(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function be(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Xc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=32768;if(d){d=c;c=32768;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<13)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Ef(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ce(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Yc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function de(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));Zc(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ee(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));_c(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function fe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));$c(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ge(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));ad(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function he(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));bd(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ie(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));cd(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function je(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)mq(h);else{l=dn(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;hj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Tn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;l=i;p=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(p|0));dd(i,n,o-n>>3,e)|0;n=i+16|0;o=Rn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Tn(o|0,I|0,39,0)|0;o=Wn(l|0,I|0,3)|0;l=Tn(o|0,I|0,8,0)|0;o=Tn(l|0,I|0,n|0,0)|0;vl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Lf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);br(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);br(e);u=g;return 1}function ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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;e=f[b>>2]|0;g=b+4|0;h=f[g>>2]|0;i=((f[c>>2]|0)-e<<3)+(f[c+4>>2]|0)-h|0;c=e;if((i|0)<=0){j=d+4|0;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}if(!h){e=d+4|0;n=i;o=e;p=c;q=f[e>>2]|0}else{e=32-h|0;r=(i|0)<(e|0)?i:e;s=-1>>>(e-r|0)&-1<>2];c=d+4|0;h=f[c>>2]|0;e=32-h|0;t=e>>>0>>0?e:r;u=f[d>>2]|0;v=f[u>>2]&~(-1>>>(e-t|0)&-1<>2]=v;h=f[c>>2]|0;e=f[g>>2]|0;f[u>>2]=(h>>>0>e>>>0?s<>>(e-h|0))|v;v=(f[c>>2]|0)+t|0;h=u+(v>>>5<<2)|0;f[d>>2]=h;u=v&31;f[c>>2]=u;v=r-t|0;if((v|0)>0){e=f[h>>2]&~(-1>>>(32-v|0));f[h>>2]=e;f[h>>2]=e|s>>>((f[g>>2]|0)+t|0);f[c>>2]=v;w=v}else w=u;u=(f[b>>2]|0)+4|0;f[b>>2]=u;n=i-r|0;o=c;p=u;q=w}w=32-q|0;u=-1<31){q=~u;c=~n;r=n+((c|0)>-64?c:-64)+32&-32;c=n;i=p;while(1){v=f[i>>2]|0;t=f[d>>2]|0;g=f[t>>2]&q;f[t>>2]=g;f[t>>2]=g|v<>2];g=t+4|0;f[d>>2]=g;f[g>>2]=f[g>>2]&u|v>>>w;i=(f[b>>2]|0)+4|0;f[b>>2]=i;if((c|0)<=63)break;else c=c+-32|0}x=n+-32-r|0;y=i}else{x=n;y=p}if((x|0)<=0){j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}p=f[y>>2]&-1>>>(32-x|0);y=(w|0)<(x|0)?w:x;n=f[d>>2]|0;i=f[n>>2]&~(-1<>2]&-1>>>(w-y|0));f[n>>2]=i;f[n>>2]=i|p<>2];i=(f[o>>2]|0)+y|0;w=n+(i>>>5<<2)|0;f[d>>2]=w;f[o>>2]=i&31;i=x-y|0;if((i|0)<=0){j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}f[w>>2]=f[w>>2]&~(-1>>>(32-i|0))|p>>>y;f[o>>2]=i;j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}function le(a,c){a=a|0;c=c|0;var d=0,e=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;d=u;u=u+16|0;e=d+4|0;g=d;h=d+9|0;i=d+8|0;j=f[(f[a+184>>2]|0)+(c<<2)>>2]&255;b[h>>0]=j;c=a+4|0;k=f[(f[c>>2]|0)+44>>2]|0;l=k+16|0;m=f[l+4>>2]|0;if((m|0)>0|(m|0)==0&(f[l>>2]|0)>>>0>0)n=j;else{f[g>>2]=f[k+4>>2];f[e>>2]=f[g>>2];ye(k,e,h,h+1|0)|0;n=b[h>>0]|0}a:do if(n<<24>>24>-1){k=a+172|0;j=f[(f[k>>2]|0)+((n<<24>>24)*136|0)>>2]|0;l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+56|0;m=b[h>>0]|0;o=f[k>>2]|0;k=f[o+(m*136|0)+132>>2]|0;switch(f[(f[(f[l>>2]|0)+84>>2]|0)+(j<<2)>>2]|0){case 0:{p=k;q=7;break a;break}case 1:{if(b[o+(m*136|0)+28>>0]|0){p=k;q=7;break a}break}default:{}}m=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=1;o=m+16|0;j=f[o+4>>2]|0;if(!((j|0)>0|(j|0)==0&(f[o>>2]|0)>>>0>0)){f[g>>2]=f[m+4>>2];f[e>>2]=f[g>>2];ye(m,e,i,i+1|0)|0}r=k}else{p=f[a+68>>2]|0;q=7}while(0);if((q|0)==7){q=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=0;a=q+16|0;h=f[a+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[a>>2]|0)>>>0>0)){f[g>>2]=f[q+4>>2];f[e>>2]=f[g>>2];ye(q,e,i,i+1|0)|0}r=p}p=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=r;r=p+16|0;c=f[r+4>>2]|0;if((c|0)>0|(c|0)==0&(f[r>>2]|0)>>>0>0){u=d;return 1}f[g>>2]=f[p+4>>2];f[e>>2]=f[g>>2];ye(p,e,i,i+1|0)|0;u=d;return 1}function me(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;h=u;u=u+16|0;i=h+4|0;j=h;k=a+60|0;f[a+64>>2]=g;g=a+8|0;Ah(g,b,d,e);d=a+56|0;l=f[d>>2]|0;m=f[l+4>>2]|0;n=f[l>>2]|0;o=m-n|0;if((o|0)<=0){u=h;return 1}p=(o>>>2)+-1|0;o=a+68|0;q=a+16|0;r=a+32|0;s=a+12|0;t=a+28|0;v=a+20|0;w=a+24|0;if(m-n>>2>>>0>p>>>0){x=p;y=n}else{z=l;mq(z)}while(1){f[j>>2]=f[y+(x<<2)>>2];f[i>>2]=f[j>>2];tb(k,i,b,x)|0;l=X(x,e)|0;n=b+(l<<2)|0;p=c+(l<<2)|0;l=f[g>>2]|0;if((l|0)>0){m=0;a=o;A=l;while(1){if((A|0)>0){l=0;do{B=f[a+(l<<2)>>2]|0;C=f[q>>2]|0;if((B|0)>(C|0)){D=f[r>>2]|0;f[D+(l<<2)>>2]=C;E=D}else{D=f[s>>2]|0;C=f[r>>2]|0;f[C+(l<<2)>>2]=(B|0)<(D|0)?D:B;E=C}l=l+1|0}while((l|0)<(f[g>>2]|0));F=E}else F=f[r>>2]|0;l=(f[n+(m<<2)>>2]|0)-(f[F+(m<<2)>>2]|0)|0;C=p+(m<<2)|0;f[C>>2]=l;if((l|0)>=(f[t>>2]|0)){if((l|0)>(f[w>>2]|0)){G=l-(f[v>>2]|0)|0;H=18}}else{G=(f[v>>2]|0)+l|0;H=18}if((H|0)==18){H=0;f[C>>2]=G}m=m+1|0;A=f[g>>2]|0;if((m|0)>=(A|0))break;else a=F}}x=x+-1|0;if((x|0)<=-1){H=3;break}a=f[d>>2]|0;y=f[a>>2]|0;if((f[a+4>>2]|0)-y>>2>>>0<=x>>>0){z=a;H=4;break}}if((H|0)==3){u=h;return 1}else if((H|0)==4)mq(z);return 0}function ne(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;h=u;u=u+16|0;i=h+4|0;j=h;k=a+60|0;f[a+64>>2]=g;g=a+8|0;Ah(g,b,d,e);d=a+56|0;l=f[d>>2]|0;m=f[l+4>>2]|0;n=f[l>>2]|0;o=m-n|0;if((o|0)<=0){u=h;return 1}p=(o>>>2)+-1|0;o=a+68|0;q=a+16|0;r=a+32|0;s=a+12|0;t=a+28|0;v=a+20|0;w=a+24|0;if(m-n>>2>>>0>p>>>0){x=p;y=n}else{z=l;mq(z)}while(1){f[j>>2]=f[y+(x<<2)>>2];f[i>>2]=f[j>>2];sb(k,i,b,x)|0;l=X(x,e)|0;n=b+(l<<2)|0;p=c+(l<<2)|0;l=f[g>>2]|0;if((l|0)>0){m=0;a=o;A=l;while(1){if((A|0)>0){l=0;do{B=f[a+(l<<2)>>2]|0;C=f[q>>2]|0;if((B|0)>(C|0)){D=f[r>>2]|0;f[D+(l<<2)>>2]=C;E=D}else{D=f[s>>2]|0;C=f[r>>2]|0;f[C+(l<<2)>>2]=(B|0)<(D|0)?D:B;E=C}l=l+1|0}while((l|0)<(f[g>>2]|0));F=E}else F=f[r>>2]|0;l=(f[n+(m<<2)>>2]|0)-(f[F+(m<<2)>>2]|0)|0;C=p+(m<<2)|0;f[C>>2]=l;if((l|0)>=(f[t>>2]|0)){if((l|0)>(f[w>>2]|0)){G=l-(f[v>>2]|0)|0;H=18}}else{G=(f[v>>2]|0)+l|0;H=18}if((H|0)==18){H=0;f[C>>2]=G}m=m+1|0;A=f[g>>2]|0;if((m|0)>=(A|0))break;else a=F}}x=x+-1|0;if((x|0)<=-1){H=3;break}a=f[d>>2]|0;y=f[a>>2]|0;if((f[a+4>>2]|0)-y>>2>>>0<=x>>>0){z=a;H=4;break}}if((H|0)==3){u=h;return 1}else if((H|0)==4)mq(z);return 0}function oe(a){a=a|0;var b=0,c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+12|0;g=f[e>>2]|0;h=(f[g+4>>2]|0)-(f[g>>2]|0)>>2;if(!h){u=b;return 1}i=a+152|0;j=a+140|0;k=a+144|0;l=a+148|0;a=0;m=g;while(1){f[d>>2]=(a>>>0)/3|0;f[c>>2]=f[d>>2];if(!(Rj(m,c)|0)?(g=f[e>>2]|0,(f[(f[g+12>>2]|0)+(a<<2)>>2]|0)==-1):0){n=a+1|0;o=((n>>>0)%3|0|0)==0?a+-2|0:n;if((o|0)==-1)p=-1;else p=f[(f[g>>2]|0)+(o<<2)>>2]|0;o=f[i>>2]|0;if((f[o+(p<<2)>>2]|0)==-1){g=f[k>>2]|0;n=f[l>>2]|0;if((g|0)==(n<<5|0)){if((g+1|0)<0){q=11;break}r=n<<6;n=g+32&-32;hi(j,g>>>0<1073741823?(r>>>0>>0?n:r):2147483647);s=f[k>>2]|0;t=f[i>>2]|0}else{s=g;t=o}f[k>>2]=s+1;o=(f[j>>2]|0)+(s>>>5<<2)|0;f[o>>2]=f[o>>2]&~(1<<(s&31));o=t+(p<<2)|0;if((f[o>>2]|0)==-1){r=a;n=o;while(1){f[n>>2]=g;o=r+1|0;a:do if((r|0)!=-1?(v=((o>>>0)%3|0|0)==0?r+-2|0:o,(v|0)!=-1):0){w=f[e>>2]|0;x=f[w+12>>2]|0;y=v;while(1){v=f[x+(y<<2)>>2]|0;if((v|0)==-1)break;z=v+1|0;A=((z>>>0)%3|0|0)==0?v+-2|0:z;if((A|0)==-1){B=-1;C=-1;break a}else y=A}x=y+1|0;A=((x>>>0)%3|0|0)==0?y+-2|0:x;if((A|0)==-1){B=y;C=-1}else{B=y;C=f[(f[w>>2]|0)+(A<<2)>>2]|0}}else{B=-1;C=-1}while(0);n=t+(C<<2)|0;if((f[n>>2]|0)!=-1)break;else r=B}}}}r=a+1|0;if(r>>>0>=h>>>0){q=3;break}a=r;m=f[e>>2]|0}if((q|0)==3){u=b;return 1}else if((q|0)==11)mq(j);return 0} -function pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=u;u=u+32|0;e=d+8|0;g=d;h=a+4|0;i=f[h>>2]|0;if(i>>>0>=b>>>0){f[h>>2]=b;u=d;return}j=a+8|0;k=f[j>>2]|0;l=k<<5;m=b-i|0;if(l>>>0>>0|i>>>0>(l-m|0)>>>0){f[e>>2]=0;n=e+4|0;f[n>>2]=0;o=e+8|0;f[o>>2]=0;if((b|0)<0)mq(a);p=k<<6;k=b+31&-32;hi(e,l>>>0<1073741823?(p>>>0>>0?k:p):2147483647);p=f[h>>2]|0;f[n>>2]=p+m;k=f[a>>2]|0;l=k;q=f[e>>2]|0;r=(l+(p>>>5<<2)-k<<3)+(p&31)|0;if((r|0)>0){p=r>>>5;Xl(q|0,k|0,p<<2|0)|0;k=r&31;r=q+(p<<2)|0;s=r;if(!k){t=0;v=s}else{w=-1>>>(32-k|0);f[r>>2]=f[r>>2]&~w|f[l+(p<<2)>>2]&w;t=k;v=s}}else{t=0;v=q}f[g>>2]=v;f[g+4>>2]=t;t=g;g=f[t>>2]|0;v=f[t+4>>2]|0;t=f[a>>2]|0;f[a>>2]=f[e>>2];f[e>>2]=t;e=f[h>>2]|0;f[h>>2]=f[n>>2];f[n>>2]=e;e=f[j>>2]|0;f[j>>2]=f[o>>2];f[o>>2]=e;if(t|0)br(t);x=g;y=v}else{v=(f[a>>2]|0)+(i>>>5<<2)|0;f[h>>2]=b;x=v;y=i&31}if(!m){u=d;return}i=(y|0)==0;v=x;if(c){if(i){z=m;A=x;B=v}else{c=32-y|0;b=c>>>0>m>>>0?m:c;f[v>>2]=f[v>>2]|-1>>>(c-b|0)&-1<>>5;hj(A|0,-1,c<<2|0)|0;A=z&31;z=B+(c<<2)|0;if(!A){u=d;return}f[z>>2]=f[z>>2]|-1>>>(32-A|0);u=d;return}else{if(i){C=m;D=x;E=v}else{x=32-y|0;i=x>>>0>m>>>0?m:x;f[v>>2]=f[v>>2]&~(-1>>>(x-i|0)&-1<>>5;hj(D|0,0,y<<2|0)|0;D=C&31;C=E+(y<<2)|0;if(!D){u=d;return}f[C>>2]=f[C>>2]&~(-1>>>(32-D|0));u=d;return}}function qe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0,x=0;a=u;u=u+48|0;g=a+36|0;h=a+24|0;i=a+12|0;j=a;if(!c){k=0;u=a;return k|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;l=vj(d)|0;if(l>>>0>4294967279)mq(g);if(l>>>0<11){b[g+11>>0]=l;if(!l)m=g;else{n=g;o=7}}else{p=l+16&-16;q=dn(p)|0;f[g>>2]=q;f[g+8>>2]=p|-2147483648;f[g+4>>2]=l;n=q;o=7}if((o|0)==7){Rg(n|0,d|0,l|0)|0;m=n}b[m+l>>0]=0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;l=vj(e)|0;if(l>>>0>4294967279)mq(h);if(l>>>0<11){b[h+11>>0]=l;if(!l)r=h;else{s=h;o=13}}else{m=l+16&-16;n=dn(m)|0;f[h>>2]=n;f[h+8>>2]=m|-2147483648;f[h+4>>2]=l;s=n;o=13}if((o|0)==13){Rg(s|0,e|0,l|0)|0;r=s}b[r+l>>0]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;l=vj(d)|0;if(l>>>0>4294967279)mq(i);if(l>>>0<11){b[i+11>>0]=l;if(!l)t=i;else{v=i;o=19}}else{r=l+16&-16;s=dn(r)|0;f[i>>2]=s;f[i+8>>2]=r|-2147483648;f[i+4>>2]=l;v=s;o=19}if((o|0)==19){Rg(v|0,d|0,l|0)|0;t=v}b[t+l>>0]=0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;l=vj(e)|0;if(l>>>0>4294967279)mq(j);if(l>>>0<11){b[j+11>>0]=l;if(!l)w=j;else{x=j;o=25}}else{t=l+16&-16;v=dn(t)|0;f[j>>2]=v;f[j+8>>2]=t|-2147483648;f[j+4>>2]=l;x=v;o=25}if((o|0)==25){Rg(x|0,e|0,l|0)|0;w=x}b[w+l>>0]=0;en(c,i,j);if((b[j+11>>0]|0)<0)br(f[j>>2]|0);if((b[i+11>>0]|0)<0)br(f[i>>2]|0);if((b[h+11>>0]|0)<0)br(f[h>>2]|0);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);k=1;u=a;return k|0}function re(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;f[a>>2]=f[c>>2];d=c+4|0;f[a+4>>2]=f[d>>2];e=c+8|0;f[a+8>>2]=f[e>>2];g=c+12|0;f[a+12>>2]=f[g>>2];f[d>>2]=0;f[e>>2]=0;f[g>>2]=0;g=c+16|0;f[a+16>>2]=f[g>>2];e=c+20|0;f[a+20>>2]=f[e>>2];d=c+24|0;f[a+24>>2]=f[d>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;b[a+28>>0]=b[c+28>>0]|0;d=a+32|0;e=c+32|0;f[d>>2]=0;g=a+36|0;f[g>>2]=0;f[a+40>>2]=0;f[d>>2]=f[e>>2];d=c+36|0;f[g>>2]=f[d>>2];g=c+40|0;f[a+40>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;e=a+44|0;d=c+44|0;f[e>>2]=0;g=a+48|0;f[g>>2]=0;f[a+52>>2]=0;f[e>>2]=f[d>>2];e=c+48|0;f[g>>2]=f[e>>2];g=c+52|0;f[a+52>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+56|0;e=c+56|0;f[d>>2]=0;g=a+60|0;f[g>>2]=0;f[a+64>>2]=0;f[d>>2]=f[e>>2];d=c+60|0;f[g>>2]=f[d>>2];g=c+64|0;f[a+64>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;f[a+68>>2]=f[c+68>>2];f[a+72>>2]=f[c+72>>2];e=a+76|0;d=c+76|0;f[e>>2]=0;g=a+80|0;f[g>>2]=0;f[a+84>>2]=0;f[e>>2]=f[d>>2];e=c+80|0;f[g>>2]=f[e>>2];g=c+84|0;f[a+84>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+88|0;e=c+88|0;f[d>>2]=0;g=a+92|0;f[g>>2]=0;f[a+96>>2]=0;f[d>>2]=f[e>>2];d=c+92|0;f[g>>2]=f[d>>2];g=c+96|0;f[a+96>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;b[a+100>>0]=b[c+100>>0]|0;e=a+104|0;d=c+104|0;f[e>>2]=0;g=a+108|0;f[g>>2]=0;f[a+112>>2]=0;f[e>>2]=f[d>>2];e=c+108|0;f[g>>2]=f[e>>2];g=c+112|0;f[a+112>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+116|0;e=c+116|0;f[d>>2]=0;g=a+120|0;f[g>>2]=0;f[a+124>>2]=0;f[d>>2]=f[e>>2];d=c+120|0;f[g>>2]=f[d>>2];g=c+124|0;f[a+124>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;f[a+128>>2]=f[c+128>>2];f[a+132>>2]=f[c+132>>2];return}function se(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;h=u;u=u+48|0;i=h+36|0;j=h+24|0;k=h+8|0;l=h+4|0;m=h;n=e+4|0;Bh(i,c,(f[n>>2]|0)-(f[e>>2]|0)>>2,2,g,d,1);g=f[i>>2]|0;o=(f[f[g>>2]>>2]|0)+(f[g+48>>2]|0)|0;f[k>>2]=-1;f[k+4>>2]=-1;f[k+8>>2]=-1;f[k+12>>2]=-1;p=f[c+4>>2]|0;if((p+-2|0)>>>0<=28){f[k>>2]=p;c=1<>2]=c+-1;p=c+-2|0;f[k+8>>2]=p;f[k+12>>2]=(p|0)/2|0;p=f[e>>2]|0;if((f[n>>2]|0)==(p|0))q=g;else{c=d+84|0;r=d+68|0;s=d+48|0;t=d+40|0;v=0;w=0;x=p;while(1){p=f[x+(v<<2)>>2]|0;if(!(b[c>>0]|0))y=f[(f[r>>2]|0)+(p<<2)>>2]|0;else y=p;p=s;z=f[p>>2]|0;A=f[p+4>>2]|0;p=t;B=f[p>>2]|0;C=on(B|0,f[p+4>>2]|0,y|0,0)|0;p=Tn(C|0,I|0,z|0,A|0)|0;Rg(j|0,(f[f[d>>2]>>2]|0)+p|0,B|0)|0;df(k,j,l,m);f[o+(w<<2)>>2]=f[l>>2];f[o+((w|1)<<2)>>2]=f[m>>2];v=v+1|0;x=f[e>>2]|0;if(v>>>0>=(f[n>>2]|0)-x>>2>>>0)break;else w=w+2|0}q=f[i>>2]|0}f[a>>2]=q;f[i>>2]=0;u=h;return}f[a>>2]=0;f[i>>2]=0;if(!g){u=h;return}i=g+88|0;a=f[i>>2]|0;f[i>>2]=0;if(a|0){i=f[a+8>>2]|0;if(i|0){q=a+12|0;if((f[q>>2]|0)!=(i|0))f[q>>2]=i;br(i)}br(a)}a=f[g+68>>2]|0;if(a|0){i=g+72|0;q=f[i>>2]|0;if((q|0)!=(a|0))f[i>>2]=q+(~((q+-4-a|0)>>>2)<<2);br(a)}a=g+64|0;q=f[a>>2]|0;f[a>>2]=0;if(q|0){a=f[q>>2]|0;if(a|0){i=q+4|0;if((f[i>>2]|0)!=(a|0))f[i>>2]=a;br(a)}br(q)}br(g);u=h;return}function te(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if(((e-h|0)/136|0)>>>0>=c>>>0){i=c;j=h;do{f[j>>2]=-1;Ek(j+4|0);b[j+100>>0]=1;k=j+104|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[k+24>>2]=0;j=(f[g>>2]|0)+136|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=(h-i|0)/136|0;h=j+c|0;if(h>>>0>31580641)mq(a);k=(e-i|0)/136|0;i=k<<1;e=k>>>0<15790320?(i>>>0>>0?h:i):31580641;do if(e)if(e>>>0>31580641){i=ra(8)|0;Wo(i,14941);f[i>>2]=6944;va(i|0,1080,114)}else{l=dn(e*136|0)|0;break}else l=0;while(0);i=l+(j*136|0)|0;j=i;h=l+(e*136|0)|0;e=c;c=j;l=i;do{f[l>>2]=-1;Ek(l+4|0);b[l+100>>0]=1;k=l+104|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[k+24>>2]=0;l=c+136|0;c=l;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;l=f[g>>2]|0;if((l|0)==(e|0)){m=j;n=e;o=e}else{k=l;l=j;j=i;do{k=k+-136|0;re(j+-136|0,k);j=l+-136|0;l=j}while((k|0)!=(e|0));m=l;n=f[a>>2]|0;o=f[g>>2]|0}f[a>>2]=m;f[g>>2]=c;f[d>>2]=h;h=n;if((o|0)!=(h|0)){d=o;do{o=f[d+-20>>2]|0;if(o|0){c=d+-16|0;g=f[c>>2]|0;if((g|0)!=(o|0))f[c>>2]=g+(~((g+-4-o|0)>>>2)<<2);br(o)}o=f[d+-32>>2]|0;if(o|0){g=d+-28|0;c=f[g>>2]|0;if((c|0)!=(o|0))f[g>>2]=c+(~((c+-4-o|0)>>>2)<<2);br(o)}yi(d+-132|0);d=d+-136|0}while((d|0)!=(h|0))}if(!n)return;br(n);return}function ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=f[b>>2]|0;b=a+12|0;d=(c|0)==-1;e=c+1|0;do if(!d){g=((e>>>0)%3|0|0)==0?c+-2|0:e;if(!((c>>>0)%3|0)){h=g;i=c+2|0;break}else{h=g;i=c+-1|0;break}}else{h=-1;i=-1}while(0);e=d?-1:(c>>>0)/3|0;g=a+28|0;j=(f[g>>2]|0)+(e>>>5<<2)|0;f[j>>2]=1<<(e&31)|f[j>>2];j=a+172|0;e=a+176|0;k=a+280|0;if(((!d?(d=f[(f[(f[b>>2]|0)+12>>2]|0)+(c<<2)>>2]|0,(d|0)!=-1):0)?(a=(d>>>0)/3|0,(f[(f[g>>2]|0)+(a>>>5<<2)>>2]&1<<(a&31)|0)==0):0)?(a=f[j>>2]|0,(f[e>>2]|0)!=(a|0)):0){d=c>>>5;l=1<<(c&31);c=0;m=a;do{a=(f[k>>2]|0)+(c<<5)|0;if(!(l&f[(f[m+(c*136|0)+4>>2]|0)+(d<<2)>>2]))Vi(a,0);else Vi(a,1);c=c+1|0;m=f[j>>2]|0}while(c>>>0<(((f[e>>2]|0)-m|0)/136|0)>>>0)}if((((h|0)!=-1?(m=f[(f[(f[b>>2]|0)+12>>2]|0)+(h<<2)>>2]|0,(m|0)!=-1):0)?(c=(m>>>0)/3|0,(f[(f[g>>2]|0)+(c>>>5<<2)>>2]&1<<(c&31)|0)==0):0)?(c=f[j>>2]|0,(f[e>>2]|0)!=(c|0)):0){m=h>>>5;d=1<<(h&31);h=0;l=c;do{c=(f[k>>2]|0)+(h<<5)|0;if(!(d&f[(f[l+(h*136|0)+4>>2]|0)+(m<<2)>>2]))Vi(c,0);else Vi(c,1);h=h+1|0;l=f[j>>2]|0}while(h>>>0<(((f[e>>2]|0)-l|0)/136|0)>>>0)}if((i|0)==-1)return 1;l=f[(f[(f[b>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;if((l|0)==-1)return 1;b=(l>>>0)/3|0;if(f[(f[g>>2]|0)+(b>>>5<<2)>>2]&1<<(b&31)|0)return 1;b=f[j>>2]|0;if((f[e>>2]|0)==(b|0))return 1;g=i>>>5;l=1<<(i&31);i=0;h=b;do{b=(f[k>>2]|0)+(i<<5)|0;if(!(l&f[(f[h+(i*136|0)+4>>2]|0)+(g<<2)>>2]))Vi(b,0);else Vi(b,1);i=i+1|0;h=f[j>>2]|0}while(i>>>0<(((f[e>>2]|0)-h|0)/136|0)>>>0);return 1}function ve(a,c){a=a|0;c=c|0;var d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+4|0;j=a+8|0;Nh((f[j>>2]|0)-(f[i>>2]|0)>>2,c)|0;k=f[i>>2]|0;if((f[j>>2]|0)==(k|0)){u=d;return 1}l=a+32|0;a=c+16|0;m=c+4|0;n=h+1|0;o=h+1|0;p=h+1|0;q=h+1|0;r=0;s=k;do{k=f[(f[(f[l>>2]|0)+8>>2]|0)+(f[s+(r<<2)>>2]<<2)>>2]|0;b[h>>0]=f[k+56>>2];t=a;v=f[t>>2]|0;w=f[t+4>>2]|0;if((w|0)>0|(w|0)==0&v>>>0>0){x=w;y=v}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,q)|0;v=a;x=f[v+4>>2]|0;y=f[v>>2]|0}b[h>>0]=f[k+28>>2];if((x|0)>0|(x|0)==0&y>>>0>0){z=x;A=y}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,p)|0;v=a;z=f[v+4>>2]|0;A=f[v>>2]|0}b[h>>0]=b[k+24>>0]|0;if((z|0)>0|(z|0)==0&A>>>0>0){B=z;C=A}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,o)|0;v=a;B=f[v+4>>2]|0;C=f[v>>2]|0}b[h>>0]=b[k+32>>0]|0;if(!((B|0)>0|(B|0)==0&C>>>0>0)){f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,n)|0}Nh(f[k+60>>2]|0,c)|0;r=r+1|0;s=f[i>>2]|0}while(r>>>0<(f[j>>2]|0)-s>>2>>>0);u=d;return 1}function we(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0,w=0,x=0;d=u;u=u+32|0;e=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;wp(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;k=a+24|0;wp(k);l=b+4|0;if((a|0)!=(l|0)){f[h>>2]=f[l>>2];f[i>>2]=b+8;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Hc(a,g,e)}l=b+28|0;if((k|0)!=(l|0)){f[h>>2]=f[l>>2];f[i>>2]=b+32;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Hc(k,g,e)}f[j>>2]=0;k=c+8|0;l=c+12|0;c=f[l>>2]|0;m=f[k>>2]|0;if((c-m|0)<=0){u=d;return}n=b+20|0;b=m;m=c;c=0;while(1){o=f[(f[b+(c<<2)>>2]|0)+56>>2]|0;p=f[n>>2]|0;if(p){q=n;r=p;a:while(1){p=r;while(1){if((f[p+16>>2]|0)>=(o|0))break;s=f[p+4>>2]|0;if(!s){t=q;break a}else p=s}r=f[p>>2]|0;if(!r){t=p;break}else q=p}if((t|0)!=(n|0)?(o|0)>=(f[t+16>>2]|0):0){q=t+20|0;r=wd(a,j)|0;if((r|0)!=(q|0)){f[h>>2]=f[q>>2];f[i>>2]=t+24;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Hc(r,g,e)}v=f[j>>2]|0;w=f[k>>2]|0;x=f[l>>2]|0}else{v=c;w=b;x=m}}else{v=c;w=b;x=m}c=v+1|0;f[j>>2]=c;if((c|0)>=(x-w>>2|0))break;else{b=w;m=x}}u=d;return}function xe(a,c){a=a|0;c=c|0;var d=0,e=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,v=0,w=0,x=0,y=0,z=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+12|0;Nh(f[i>>2]|0,c)|0;if(!(f[i>>2]|0)){j=1;u=d;return j|0}k=c+16|0;l=c+4|0;m=h+1|0;n=h+1|0;o=h+1|0;p=0;while(1){q=f[a>>2]|0;r=f[q+(p<<3)>>2]|0;if(r>>>0>63)if(r>>>0>16383)if(r>>>0>4194303){j=0;s=20;break}else{t=2;s=13}else{t=1;s=13}else if(!r){v=p+1|0;w=0;while(1){if(f[q+(v+w<<3)>>2]|0){x=w;break}y=w+1|0;if(y>>>0<63)w=y;else{x=y;break}}b[h>>0]=x<<2|3;w=k;v=f[w+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[w>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];ye(c,e,h,o)|0}z=x+p|0}else{t=0;s=13}if((s|0)==13){s=0;b[h>>0]=t|r<<2;w=k;v=f[w+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[w>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];ye(c,e,h,n)|0}if(!t)z=p;else{w=0;do{w=w+1|0;b[h>>0]=r>>>((w<<3)+-2|0);v=k;q=f[v+4>>2]|0;if(!((q|0)>0|(q|0)==0&(f[v>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];ye(c,e,h,m)|0}}while((w|0)<(t|0));z=p}}p=z+1|0;if(p>>>0>=(f[i>>2]|0)>>>0){j=1;s=20;break}}if((s|0)==20){u=d;return j|0}return 0}function ye(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0;g=f[a>>2]|0;h=g;i=(f[c>>2]|0)-h|0;c=g+i|0;j=e-d|0;if((j|0)<=0){k=c;return k|0}l=a+8|0;m=f[l>>2]|0;n=a+4|0;o=f[n>>2]|0;p=o;if((j|0)<=(m-p|0)){q=p-c|0;if((j|0)>(q|0)){r=d+q|0;if((r|0)==(e|0))s=o;else{t=r;u=o;while(1){b[u>>0]=b[t>>0]|0;t=t+1|0;v=(f[n>>2]|0)+1|0;f[n>>2]=v;if((t|0)==(e|0)){s=v;break}else u=v}}if((q|0)>0){w=r;x=s}else{k=c;return k|0}}else{w=e;x=o}s=x-(c+j)|0;r=c+s|0;if(r>>>0>>0){q=r;r=x;do{b[r>>0]=b[q>>0]|0;q=q+1|0;r=(f[n>>2]|0)+1|0;f[n>>2]=r}while((q|0)!=(o|0))}if(s|0)Xl(x+(0-s)|0,c|0,s|0)|0;if((w|0)==(d|0)){k=c;return k|0}else{y=d;z=c}while(1){b[z>>0]=b[y>>0]|0;y=y+1|0;if((y|0)==(w|0)){k=c;break}else z=z+1|0}return k|0}z=p-h+j|0;if((z|0)<0)mq(a);j=m-h|0;h=j<<1;m=j>>>0<1073741823?(h>>>0>>0?z:h):2147483647;h=c;if(!m)A=0;else A=dn(m)|0;z=A+i|0;i=z;j=A+m|0;if((d|0)==(e|0)){B=i;C=g}else{g=d;d=i;i=z;do{b[i>>0]=b[g>>0]|0;i=d+1|0;d=i;g=g+1|0}while((g|0)!=(e|0));B=d;C=f[a>>2]|0}d=h-C|0;e=z+(0-d)|0;if((d|0)>0)Rg(e|0,C|0,d|0)|0;d=(f[n>>2]|0)-h|0;if((d|0)>0){h=B;Rg(h|0,c|0,d|0)|0;D=h+d|0;E=f[a>>2]|0}else{D=B;E=C}f[a>>2]=e;f[n>>2]=D;f[l>>2]=j;if(!E){k=z;return k|0}br(E);k=z;return k|0}function ze(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=u;u=u+16|0;g=e;h=f[(f[c+4>>2]|0)+(d<<2)>>2]|0;d=f[c+28>>2]|0;c=f[(f[(f[d+4>>2]|0)+8>>2]|0)+(h<<2)>>2]|0;switch(f[c+28>>2]|0){case 5:case 6:case 3:case 4:case 1:case 2:{i=dn(40)|0;Ao(i);j=i;k=j;f[a>>2]=k;u=e;return}case 9:{l=3;break}default:{}}if((l|0)==3){i=f[d+48>>2]|0;d=dn(32)|0;f[g>>2]=d;f[g+8>>2]=-2147483616;f[g+4>>2]=17;m=d;n=12932;o=m+17|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[d+17>>0]=0;d=i+16|0;n=f[d>>2]|0;if(n){p=d;q=n;a:while(1){n=q;while(1){if((f[n+16>>2]|0)>=(h|0))break;r=f[n+4>>2]|0;if(!r){s=p;break a}else n=r}q=f[n>>2]|0;if(!q){s=n;break}else p=n}if(((s|0)!=(d|0)?(h|0)>=(f[s+16>>2]|0):0)?(h=s+20|0,(sh(h,g)|0)!=0):0)t=yk(h,g,-1)|0;else l=12}else l=12;if((l|0)==12)t=yk(i,g,-1)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if((t|0)>0)if((f[c+56>>2]|0)==1){c=dn(48)|0;m=c;o=m+48|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(o|0));Ao(c);f[c>>2]=2256;f[c+40>>2]=1152;f[c+44>>2]=-1;j=c;k=j;f[a>>2]=k;u=e;return}else{c=dn(64)|0;mm(c);j=c;k=j;f[a>>2]=k;u=e;return}}c=dn(36)|0;wm(c);j=c;k=j;f[a>>2]=k;u=e;return}function Ae(a,c){a=a|0;c=c|0;var d=0,e=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;d=(c|0)==(a|0);b[c+12>>0]=d&1;if(d)return;else e=c;while(1){g=e+8|0;h=f[g>>2]|0;c=h+12|0;if(b[c>>0]|0){i=23;break}j=h+8|0;k=f[j>>2]|0;d=f[k>>2]|0;if((d|0)==(h|0)){l=f[k+4>>2]|0;if(!l){i=7;break}m=l+12|0;if(!(b[m>>0]|0))n=m;else{i=7;break}}else{if(!d){i=16;break}m=d+12|0;if(!(b[m>>0]|0))n=m;else{i=16;break}}b[c>>0]=1;c=(k|0)==(a|0);b[k+12>>0]=c&1;b[n>>0]=1;if(c){i=23;break}else e=k}if((i|0)==7){if((f[h>>2]|0)==(e|0)){o=h;p=k}else{n=h+4|0;a=f[n>>2]|0;c=f[a>>2]|0;f[n>>2]=c;if(!c)q=k;else{f[c+8>>2]=h;q=f[j>>2]|0}f[a+8>>2]=q;q=f[j>>2]|0;f[((f[q>>2]|0)==(h|0)?q:q+4|0)>>2]=a;f[a>>2]=h;f[j>>2]=a;o=a;p=f[a+8>>2]|0}b[o+12>>0]=1;b[p+12>>0]=0;o=f[p>>2]|0;a=o+4|0;q=f[a>>2]|0;f[p>>2]=q;if(q|0)f[q+8>>2]=p;q=p+8|0;f[o+8>>2]=f[q>>2];c=f[q>>2]|0;f[((f[c>>2]|0)==(p|0)?c:c+4|0)>>2]=o;f[a>>2]=p;f[q>>2]=o;return}else if((i|0)==16){if((f[h>>2]|0)==(e|0)){o=e+4|0;q=f[o>>2]|0;f[h>>2]=q;if(!q)r=k;else{f[q+8>>2]=h;r=f[j>>2]|0}f[g>>2]=r;r=f[j>>2]|0;f[((f[r>>2]|0)==(h|0)?r:r+4|0)>>2]=e;f[o>>2]=h;f[j>>2]=e;s=e;t=f[e+8>>2]|0}else{s=h;t=k}b[s+12>>0]=1;b[t+12>>0]=0;s=t+4|0;k=f[s>>2]|0;h=f[k>>2]|0;f[s>>2]=h;if(h|0)f[h+8>>2]=t;h=t+8|0;f[k+8>>2]=f[h>>2];s=f[h>>2]|0;f[((f[s>>2]|0)==(t|0)?s:s+4|0)>>2]=k;f[k>>2]=t;f[h>>2]=k;return}else if((i|0)==23)return}function Be(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=Oa,C=Oa;h=u;u=u+16|0;i=h;j=e+4|0;k=b[d+24>>0]|0;l=k<<24>>24;Bh(a,c,(f[j>>2]|0)-(f[e>>2]|0)>>2,l,g,d,1);g=f[a>>2]|0;a=(f[f[g>>2]>>2]|0)+(f[g+48>>2]|0)|0;g=f[c+4>>2]|0;sq(i);yo(i,$(n[c+20>>2]),(1<>>0>1073741823?-1:l<<2)|0;m=f[j>>2]|0;j=f[e>>2]|0;e=j;if((m|0)==(j|0)){$q(g);u=h;return}o=d+68|0;p=d+48|0;q=d+40|0;r=c+8|0;c=(b[d+84>>0]|0)==0;s=m-j>>2;if(k<<24>>24>0){t=0;v=0}else{k=0;do{j=f[e+(k<<2)>>2]|0;if(c)w=f[(f[o>>2]|0)+(j<<2)>>2]|0;else w=j;j=p;m=f[j>>2]|0;x=f[j+4>>2]|0;j=q;y=f[j>>2]|0;z=on(y|0,f[j+4>>2]|0,w|0,0)|0;j=Tn(z|0,I|0,m|0,x|0)|0;Rg(g|0,(f[f[d>>2]>>2]|0)+j|0,y|0)|0;k=k+1|0}while(k>>>0>>0);$q(g);u=h;return}while(1){k=f[e+(t<<2)>>2]|0;if(c)A=f[(f[o>>2]|0)+(k<<2)>>2]|0;else A=k;k=p;w=f[k>>2]|0;y=f[k+4>>2]|0;k=q;j=f[k>>2]|0;x=on(j|0,f[k+4>>2]|0,A|0,0)|0;k=Tn(x|0,I|0,w|0,y|0)|0;Rg(g|0,(f[f[d>>2]>>2]|0)+k|0,j|0)|0;j=f[r>>2]|0;B=$(n[i>>2]);k=0;y=v;while(1){C=$(n[g+(k<<2)>>2]);w=~~$(J($($(B*$(C-$(n[j+(k<<2)>>2])))+$(.5))));f[a+(y<<2)>>2]=w;k=k+1|0;if((k|0)==(l|0))break;else y=y+1|0}t=t+1|0;if(t>>>0>=s>>>0)break;else v=v+l|0}$q(g);u=h;return}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=f[b>>2]|0;b=a+12|0;e=(d|0)==-1;do if(e){g=1;h=-1;i=-1}else{j=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((j|0)!=-1){k=f[(f[b>>2]|0)+12>>2]|0;l=j;while(1){j=f[k+(l<<2)>>2]|0;if((j|0)==-1){m=0;n=l;break}o=j+1|0;l=((o>>>0)%3|0|0)==0?j+-2|0:o;if((l|0)==-1){m=1;n=-1;break}}if(e){g=m;h=-1;i=n;break}else{p=m;q=n}}else{p=1;q=-1}g=p;h=f[(f[f[b>>2]>>2]|0)+(d<<2)>>2]|0;i=q}while(0);if(c){c=(f[a+84>>2]|0)+(h>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(h&31);r=1}else r=0;c=f[(f[a+152>>2]|0)+(h<<2)>>2]|0;q=(f[a+140>>2]|0)+(c>>>5<<2)|0;f[q>>2]=f[q>>2]|1<<(c&31);if(!g){g=(((i>>>0)%3|0|0)==0?2:-1)+i|0;if((g|0)==-1){s=-1;t=i}else{s=f[(f[f[b>>2]>>2]|0)+(g<<2)>>2]|0;t=i}}else{s=-1;t=-1}if((s|0)==(h|0)){u=r;return u|0}i=f[a+84>>2]|0;a=r;r=s;s=t;while(1){t=i+(r>>>5<<2)|0;f[t>>2]=f[t>>2]|1<<(r&31);t=a+1|0;g=s+1|0;a:do if((s|0)!=-1?(c=((g>>>0)%3|0|0)==0?s+-2|0:g,(c|0)!=-1):0){q=f[b>>2]|0;d=f[q+12>>2]|0;p=c;while(1){c=f[d+(p<<2)>>2]|0;if((c|0)==-1)break;n=c+1|0;m=((n>>>0)%3|0|0)==0?c+-2|0:n;if((m|0)==-1){v=-1;w=-1;break a}else p=m}d=(((p>>>0)%3|0|0)==0?2:-1)+p|0;if((d|0)==-1){v=-1;w=p}else{v=f[(f[q>>2]|0)+(d<<2)>>2]|0;w=p}}else{v=-1;w=-1}while(0);if((v|0)==(h|0)){u=t;break}else{a=t;r=v;s=w}}return u|0}function De(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=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;c=a+4|0;d=f[c>>2]|0;e=a+100|0;if(d>>>0<(f[e>>2]|0)>>>0){f[c>>2]=d+1;g=h[d>>0]|0}else g=Di(a)|0;switch(g|0){case 43:case 45:{d=(g|0)==45&1;i=f[c>>2]|0;if(i>>>0<(f[e>>2]|0)>>>0){f[c>>2]=i+1;j=h[i>>0]|0}else j=Di(a)|0;if((b|0)!=0&(j+-48|0)>>>0>9?(f[e>>2]|0)!=0:0){f[c>>2]=(f[c>>2]|0)+-1;k=d;l=j}else{k=d;l=j}break}default:{k=0;l=g}}if((l+-48|0)>>>0>9)if(!(f[e>>2]|0)){m=-2147483648;n=0}else{f[c>>2]=(f[c>>2]|0)+-1;m=-2147483648;n=0}else{g=0;j=l;while(1){g=j+-48+(g*10|0)|0;l=f[c>>2]|0;if(l>>>0<(f[e>>2]|0)>>>0){f[c>>2]=l+1;o=h[l>>0]|0}else o=Di(a)|0;if(!((o+-48|0)>>>0<10&(g|0)<214748364))break;else j=o}j=((g|0)<0)<<31>>31;if((o+-48|0)>>>0<10){l=o;d=g;b=j;while(1){i=on(d|0,b|0,10,0)|0;p=I;q=Tn(l|0,((l|0)<0)<<31>>31|0,-48,-1)|0;r=Tn(q|0,I|0,i|0,p|0)|0;p=I;i=f[c>>2]|0;if(i>>>0<(f[e>>2]|0)>>>0){f[c>>2]=i+1;s=h[i>>0]|0}else s=Di(a)|0;if((s+-48|0)>>>0<10&((p|0)<21474836|(p|0)==21474836&r>>>0<2061584302)){l=s;d=r;b=p}else{t=s;u=r;v=p;break}}}else{t=o;u=g;v=j}if((t+-48|0)>>>0<10)do{t=f[c>>2]|0;if(t>>>0<(f[e>>2]|0)>>>0){f[c>>2]=t+1;w=h[t>>0]|0}else w=Di(a)|0}while((w+-48|0)>>>0<10);if(f[e>>2]|0)f[c>>2]=(f[c>>2]|0)+-1;c=(k|0)!=0;k=Vn(0,0,u|0,v|0)|0;m=c?I:v;n=c?k:u}I=m;return n|0}function Ee(a){a=a|0;var b=0,c=0,d=0,e=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;b=a+1176|0;c=f[b>>2]|0;if(c|0){d=a+1180|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);br(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}br(g)}g=a+1164|0;b=f[g>>2]|0;if(b|0){j=a+1168|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);br(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}br(l)}l=f[a+1152>>2]|0;if(l|0){g=a+1156|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l)}l=f[a+1140>>2]|0;if(l|0){m=a+1144|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);br(l)}l=f[a+1128>>2]|0;if(!l){n=a+1108|0;dl(n);o=a+1088|0;dl(o);p=a+1068|0;dl(p);q=a+1036|0;tj(q);r=a+12|0;xh(r);return}g=a+1132|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l);n=a+1108|0;dl(n);o=a+1088|0;dl(o);p=a+1068|0;dl(p);q=a+1036|0;tj(q);r=a+12|0;xh(r);return}function Fe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=u;u=u+16|0;e=d;g=a+4|0;h=f[g>>2]|0;i=f[(f[a>>2]|0)+52>>2]|0;if(!h){if(!(Sa[i&31](a,c,0)|0)){j=0;u=d;return j|0}}else if(!(Sa[i&31](a,c,f[(f[h+4>>2]|0)+80>>2]|0)|0)){j=0;u=d;return j|0}if(!(b[a+28>>0]|0)){j=1;u=d;return j|0}h=f[a+8>>2]|0;i=f[a+32>>2]|0;a=f[h+80>>2]|0;f[e>>2]=0;k=e+4|0;f[k>>2]=0;f[e+8>>2]=0;do if(a)if(a>>>0>1073741823)mq(e);else{l=a<<2;m=dn(l)|0;f[e>>2]=m;n=m+(a<<2)|0;f[e+8>>2]=n;hj(m|0,0,l|0)|0;f[k>>2]=n;o=m;p=n;q=m;break}else{o=0;p=0;q=0}while(0);e=f[c+4>>2]|0;a=f[c>>2]|0;c=a;a:do if((e|0)!=(a|0)){m=e-a>>2;if(b[h+84>>0]|0){n=0;while(1){f[o+(f[c+(n<<2)>>2]<<2)>>2]=n;n=n+1|0;if(n>>>0>=m>>>0)break a}}n=f[h+68>>2]|0;l=0;do{f[o+(f[n+(f[c+(l<<2)>>2]<<2)>>2]<<2)>>2]=l;l=l+1|0}while(l>>>0>>0)}while(0);c=f[(f[(f[g>>2]|0)+4>>2]|0)+80>>2]|0;b:do if(c|0){g=f[i+68>>2]|0;if(b[h+84>>0]|0){a=0;while(1){f[g+(a<<2)>>2]=f[o+(a<<2)>>2];a=a+1|0;if(a>>>0>=c>>>0)break b}}a=f[h+68>>2]|0;e=0;do{f[g+(e<<2)>>2]=f[o+(f[a+(e<<2)>>2]<<2)>>2];e=e+1|0}while(e>>>0>>0)}while(0);if(o|0){if((p|0)!=(o|0))f[k>>2]=p+(~((p+-4-o|0)>>>2)<<2);br(q)}j=1;u=d;return j|0}function Ge(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;yh(a+12|0);rn(a+1036|0);to(a+1068|0);to(a+1088|0);to(a+1108|0);e=a+1128|0;f[e>>2]=0;g=a+1132|0;f[g>>2]=0;f[a+1136>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)mq(e);else{i=b<<2;j=dn(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+1136>>2]=k;hj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+1140|0;f[g>>2]=0;e=a+1144|0;f[e>>2]=0;f[a+1148>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+1148>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=a+1152|0;f[g>>2]=0;e=a+1156|0;f[e>>2]=0;f[a+1160>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+1160>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;hj(i|0,0,k|0)|0;f[e>>2]=j}fk(a+1164|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);br(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=dn(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;hj(k|0,0,h|0)|0;f[j>>2]=e}fk(a+1176|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g);u=c;return}function He(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0;g=u;u=u+16|0;h=g;i=b+16|0;f[a>>2]=f[i>>2];f[a+4>>2]=f[i+4>>2];f[a+8>>2]=f[i+8>>2];f[a+12>>2]=f[i+12>>2];f[a+16>>2]=f[i+16>>2];f[a+20>>2]=f[i+20>>2];j=a+8|0;f[j>>2]=(f[j>>2]|0)+d;j=(d|0)>0;if(j){k=b+4|0;l=a+16|0;m=a+12|0;n=f[b>>2]|0;o=n;q=0;r=o;s=n;n=o;while(1){o=f[c+(q<<2)>>2]|0;t=f[k>>2]|0;if(t-s>>2>>>0>o>>>0){v=r;w=n}else{x=o+1|0;f[h>>2]=0;y=t-s>>2;z=s;A=t;if(x>>>0<=y>>>0)if(x>>>0>>0?(t=z+(x<<2)|0,(t|0)!=(A|0)):0){f[k>>2]=A+(~((A+-4-t|0)>>>2)<<2);B=r}else B=r;else{kh(b,x-y|0,h);B=f[b>>2]|0}v=B;w=B}y=w+(o<<2)|0;x=f[y>>2]|0;s=w;if((x|0)<=1)if((x|0)==0?(f[l>>2]=(f[l>>2]|0)+1,o>>>0>(f[m>>2]|0)>>>0):0){f[m>>2]=o;C=0.0}else C=0.0;else{D=+(x|0);C=+Fg(D)*D}x=(f[y>>2]|0)+1|0;f[y>>2]=x;D=+(x|0);E=+Fg(D)*D-C;p[a>>3]=+p[a>>3]+E;q=q+1|0;if((q|0)==(d|0))break;else{r=v;n=w}}}if(e){f[i>>2]=f[a>>2];f[i+4>>2]=f[a+4>>2];f[i+8>>2]=f[a+8>>2];f[i+12>>2]=f[a+12>>2];f[i+16>>2]=f[a+16>>2];u=g;return}if(!j){u=g;return}j=f[b>>2]|0;b=0;do{a=j+(f[c+(b<<2)>>2]<<2)|0;f[a>>2]=(f[a>>2]|0)+-1;b=b+1|0}while((b|0)!=(d|0));u=g;return}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(f[c>>2]|0)+(4-1)&~(4-1);e=f[d>>2]|0;f[c>>2]=d+4;f[a>>2]=e;break a;break}case 10:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a;break}case 11:{d=(f[c>>2]|0)+(4-1)&~(4-1);e=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=e;f[d+4>>2]=0;break a;break}case 12:{d=(f[c>>2]|0)+(8-1)&~(8-1);e=d;g=f[e>>2]|0;h=f[e+4>>2]|0;f[c>>2]=d+8;d=a;f[d>>2]=g;f[d+4>>2]=h;break a;break}case 13:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=(d&65535)<<16>>16;d=a;f[d>>2]=h;f[d+4>>2]=((h|0)<0)<<31>>31;break a;break}case 14:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=a;f[h>>2]=d&65535;f[h+4>>2]=0;break a;break}case 15:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=(d&255)<<24>>24;d=a;f[d>>2]=h;f[d+4>>2]=((h|0)<0)<<31>>31;break a;break}case 16:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=a;f[h>>2]=d&255;f[h+4>>2]=0;break a;break}case 17:{h=(f[c>>2]|0)+(8-1)&~(8-1);i=+p[h>>3];f[c>>2]=h+8;p[a>>3]=i;break a;break}case 18:{h=(f[c>>2]|0)+(8-1)&~(8-1);i=+p[h>>3];f[c>>2]=h+8;p[a>>3]=i;break a;break}default:break a}while(0);while(0);return}function Je(a){a=a|0;var c=0,d=0,e=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;c=u;u=u+16|0;d=c+4|0;e=c;g=c+8|0;if(!(Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0)){h=0;u=c;return h|0}i=a+44|0;j=f[i>>2]|0;k=a+8|0;l=a+12|0;m=f[l>>2]|0;n=f[k>>2]|0;b[g>>0]=(m-n|0)>>>2;o=j+16|0;p=f[o+4>>2]|0;if((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0){q=k;r=n;s=m}else{f[e>>2]=f[j+4>>2];f[d>>2]=f[e>>2];ye(j,d,g,g+1|0)|0;q=k;r=f[k>>2]|0;s=f[l>>2]|0}a:do if((r|0)!=(s|0)){l=a+4|0;k=r;while(1){g=f[k>>2]|0;k=k+4|0;if(!(Sa[f[(f[g>>2]|0)+8>>2]&31](g,a,f[l>>2]|0)|0)){h=0;break}if((k|0)==(s|0))break a}u=c;return h|0}while(0);if(!(vc(a)|0)){h=0;u=c;return h|0}s=a+32|0;r=f[s>>2]|0;k=a+36|0;l=f[k>>2]|0;b:do if((r|0)!=(l|0)){g=r;do{if(!(Ra[f[(f[a>>2]|0)+40>>2]&127](a,f[g>>2]|0)|0)){h=0;t=18;break}g=g+4|0}while((g|0)!=(l|0));if((t|0)==18){u=c;return h|0}g=f[s>>2]|0;d=f[k>>2]|0;if((g|0)!=(d|0)){j=g;while(1){g=f[(f[q>>2]|0)+(f[j>>2]<<2)>>2]|0;j=j+4|0;if(!(Ra[f[(f[g>>2]|0)+12>>2]&127](g,f[i>>2]|0)|0)){h=0;break}if((j|0)==(d|0))break b}u=c;return h|0}}while(0);h=Qa[f[(f[a>>2]|0)+44>>2]&127](a)|0;u=c;return h|0}function Ke(a,b){a=a|0;b=b|0;fd(a,b);fd(a+32|0,b);fd(a+64|0,b);fd(a+96|0,b);fd(a+128|0,b);fd(a+160|0,b);fd(a+192|0,b);fd(a+224|0,b);fd(a+256|0,b);fd(a+288|0,b);fd(a+320|0,b);fd(a+352|0,b);fd(a+384|0,b);fd(a+416|0,b);fd(a+448|0,b);fd(a+480|0,b);fd(a+512|0,b);fd(a+544|0,b);fd(a+576|0,b);fd(a+608|0,b);fd(a+640|0,b);fd(a+672|0,b);fd(a+704|0,b);fd(a+736|0,b);fd(a+768|0,b);fd(a+800|0,b);fd(a+832|0,b);fd(a+864|0,b);fd(a+896|0,b);fd(a+928|0,b);fd(a+960|0,b);fd(a+992|0,b);fd(a+1024|0,b);return}function Le(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=u;u=u+64|0;g=e+60|0;h=e;i=dn(80)|0;j=f[c+8>>2]|0;f[i+4>>2]=0;f[i>>2]=3232;k=i+8|0;l=i+12|0;m=l+44|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[k>>2]=3256;n=i+56|0;f[n>>2]=0;f[i+60>>2]=0;f[i+64>>2]=0;f[i+68>>2]=j;f[i+72>>2]=d;o=i+76|0;f[o>>2]=0;p=i;q=f[c+12>>2]|0;r=h+4|0;l=r+4|0;m=l+40|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[h>>2]=3256;l=h+48|0;f[l>>2]=0;m=h+52|0;f[m>>2]=0;f[h+56>>2]=0;s=q;f[r>>2]=s;t=((f[s+4>>2]|0)-(f[q>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;Xg(h+24|0,t,g);t=f[r>>2]|0;r=(f[t+28>>2]|0)-(f[t+24>>2]|0)>>2;b[g>>0]=0;Xg(h+36|0,r,g);f[h+8>>2]=q;f[h+12>>2]=d;f[h+16>>2]=j;f[h+20>>2]=i;f[o>>2]=c+72;ef(k,h)|0;Yf(n,f[l>>2]|0,f[m>>2]|0);f[a>>2]=p;f[h>>2]=3256;p=f[l>>2]|0;if(p|0){l=f[m>>2]|0;if((l|0)!=(p|0))f[m>>2]=l+(~((l+-4-p|0)>>>2)<<2);br(p)}f[h>>2]=3276;p=f[h+36>>2]|0;if(p|0)br(p);p=f[h+24>>2]|0;if(!p){u=e;return}br(p);u=e;return}function Me(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0;c=u;u=u+32|0;d=c;e=a+4|0;g=f[a>>2]|0;h=(f[e>>2]|0)-g>>2;i=h+1|0;if(i>>>0>1073741823)mq(a);j=a+8|0;k=(f[j>>2]|0)-g|0;g=k>>1;l=k>>2>>>0<536870911?(g>>>0>>0?i:g):1073741823;f[d+12>>2]=0;f[d+16>>2]=a+8;do if(l)if(l>>>0>1073741823){g=ra(8)|0;Wo(g,14941);f[g>>2]=6944;va(g|0,1080,114)}else{m=dn(l<<2)|0;break}else m=0;while(0);f[d>>2]=m;g=m+(h<<2)|0;h=d+8|0;i=d+4|0;f[i>>2]=g;k=m+(l<<2)|0;l=d+12|0;f[l>>2]=k;m=f[b>>2]|0;f[b>>2]=0;f[g>>2]=m;m=g+4|0;f[h>>2]=m;b=f[a>>2]|0;n=f[e>>2]|0;if((n|0)==(b|0)){o=g;p=l;q=h;r=b;s=m;t=n;v=k;w=o;f[a>>2]=w;f[i>>2]=r;f[e>>2]=s;f[q>>2]=t;x=f[j>>2]|0;f[j>>2]=v;f[p>>2]=x;f[d>>2]=r;Wh(d);u=c;return}else{y=n;z=g}do{y=y+-4|0;g=f[y>>2]|0;f[y>>2]=0;f[z+-4>>2]=g;z=(f[i>>2]|0)+-4|0;f[i>>2]=z}while((y|0)!=(b|0));o=z;p=l;q=h;r=f[a>>2]|0;s=f[h>>2]|0;t=f[e>>2]|0;v=f[l>>2]|0;w=o;f[a>>2]=w;f[i>>2]=r;f[e>>2]=s;f[q>>2]=t;x=f[j>>2]|0;f[j>>2]=v;f[p>>2]=x;f[d>>2]=r;Wh(d);u=c;return}function Ne(a,c){a=a|0;c=c|0;var d=0,e=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;d=u;u=u+32|0;e=d+12|0;g=d;h=hl(c,0)|0;if(!h){f[a>>2]=0;u=d;return}i=f[c+100>>2]|0;j=f[c+96>>2]|0;c=i-j|0;k=(c|0)/12|0;f[e>>2]=0;l=e+4|0;f[l>>2]=0;f[e+8>>2]=0;m=j;do if(c)if(k>>>0>357913941)mq(e);else{n=dn(c)|0;f[e>>2]=n;f[e+8>>2]=n+(k*12|0);hj(n|0,0,c|0)|0;f[l>>2]=n+c;o=n;break}else o=0;while(0);f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;a:do if((i|0)!=(j|0)){c=g+4|0;n=g+8|0;if(b[h+84>>0]|0){p=0;while(1){q=m+(p*12|0)|0;f[g>>2]=f[q>>2];f[g+4>>2]=f[q+4>>2];f[g+8>>2]=f[q+8>>2];f[o+(p*12|0)>>2]=f[g>>2];f[o+(p*12|0)+4>>2]=f[c>>2];f[o+(p*12|0)+8>>2]=f[n>>2];p=p+1|0;if(p>>>0>=k>>>0)break a}}p=f[h+68>>2]|0;q=0;do{r=f[p+(f[m+(q*12|0)>>2]<<2)>>2]|0;f[g>>2]=r;s=f[p+(f[m+(q*12|0)+4>>2]<<2)>>2]|0;f[c>>2]=s;t=f[p+(f[m+(q*12|0)+8>>2]<<2)>>2]|0;f[n>>2]=t;f[o+(q*12|0)>>2]=r;f[o+(q*12|0)+4>>2]=s;f[o+(q*12|0)+8>>2]=t;q=q+1|0}while(q>>>0>>0)}while(0);Cj(a,e);a=f[e>>2]|0;if(a|0){e=f[l>>2]|0;if((e|0)!=(a|0))f[l>>2]=e+(~(((e+-12-a|0)>>>0)/12|0)*12|0);br(a)}u=d;return}function Oe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;rn(a+12|0);to(a+44|0);to(a+64|0);to(a+84|0);e=a+104|0;f[e>>2]=0;g=a+108|0;f[g>>2]=0;f[a+112>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)mq(e);else{i=b<<2;j=dn(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+112>>2]=k;hj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+116|0;f[g>>2]=0;e=a+120|0;f[e>>2]=0;f[a+124>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+124>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=a+128|0;f[g>>2]=0;e=a+132|0;f[e>>2]=0;f[a+136>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+136>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;hj(i|0,0,k|0)|0;f[e>>2]=j}fk(a+140|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);br(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=dn(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;hj(k|0,0,h|0)|0;f[j>>2]=e}fk(a+152|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g);u=c;return}function Pe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;to(a+12|0);to(a+32|0);to(a+52|0);to(a+72|0);e=a+92|0;f[e>>2]=0;g=a+96|0;f[g>>2]=0;f[a+100>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)mq(e);else{i=b<<2;j=dn(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+100>>2]=k;hj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+104|0;f[g>>2]=0;e=a+108|0;f[e>>2]=0;f[a+112>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+112>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=a+116|0;f[g>>2]=0;e=a+120|0;f[e>>2]=0;f[a+124>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+124>>2]=g;hj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=dn(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;hj(i|0,0,k|0)|0;f[e>>2]=j}fk(a+128|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);br(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=dn(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;hj(k|0,0,h|0)|0;f[j>>2]=e}fk(a+140|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g);u=c;return}function Qe(a,c){a=a|0;c=c|0;var d=0,e=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;d=dn(40)|0;e=d+16|0;dj(e,c);dj(d+28|0,c+12|0);c=a+4|0;g=f[c>>2]|0;do if(g){h=b[d+27>>0]|0;i=h<<24>>24<0;j=i?f[d+20>>2]|0:h&255;h=i?f[e>>2]|0:e;i=g;while(1){k=i+16|0;l=b[k+11>>0]|0;m=l<<24>>24<0;n=m?f[i+20>>2]|0:l&255;l=n>>>0>>0?n:j;if((l|0)!=0?(o=Pk(h,m?f[k>>2]|0:k,l)|0,(o|0)!=0):0)if((o|0)<0)p=7;else p=9;else if(j>>>0>>0)p=7;else p=9;if((p|0)==7){p=0;n=f[i>>2]|0;if(!n){p=8;break}else q=n}else if((p|0)==9){p=0;r=i+4|0;n=f[r>>2]|0;if(!n){p=11;break}else q=n}i=q}if((p|0)==8){s=i;t=i;break}else if((p|0)==11){s=i;t=r;break}}else{s=c;t=c}while(0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=s;f[t>>2]=d;s=f[f[a>>2]>>2]|0;if(!s){u=d;v=a+4|0;w=f[v>>2]|0;Ae(w,u);x=a+8|0;y=f[x>>2]|0;z=y+1|0;f[x>>2]=z;return d|0}f[a>>2]=s;u=f[t>>2]|0;v=a+4|0;w=f[v>>2]|0;Ae(w,u);x=a+8|0;y=f[x>>2]|0;z=y+1|0;f[x>>2]=z;return d|0}function Re(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=Oa,B=Oa;g=u;u=u+16|0;h=g;i=b[d+24>>0]|0;j=i<<24>>24;Bh(a,c,e,j,0,d,1);k=f[a>>2]|0;a=(f[f[k>>2]>>2]|0)+(f[k+48>>2]|0)|0;k=f[c+4>>2]|0;sq(h);yo(h,$(n[c+20>>2]),(1<>>0>1073741823?-1:j<<2)|0;if(!e){$q(k);u=g;return}l=d+68|0;m=d+48|0;o=d+40|0;p=c+8|0;c=(b[d+84>>0]|0)==0;if(i<<24>>24>0){q=0;r=0}else{i=0;do{if(c)s=f[(f[l>>2]|0)+(i<<2)>>2]|0;else s=i;t=m;v=f[t>>2]|0;w=f[t+4>>2]|0;t=o;x=f[t>>2]|0;y=on(x|0,f[t+4>>2]|0,s|0,0)|0;t=Tn(y|0,I|0,v|0,w|0)|0;Rg(k|0,(f[f[d>>2]>>2]|0)+t|0,x|0)|0;i=i+1|0}while((i|0)!=(e|0));$q(k);u=g;return}while(1){if(c)z=f[(f[l>>2]|0)+(r<<2)>>2]|0;else z=r;i=m;s=f[i>>2]|0;x=f[i+4>>2]|0;i=o;t=f[i>>2]|0;w=on(t|0,f[i+4>>2]|0,z|0,0)|0;i=Tn(w|0,I|0,s|0,x|0)|0;Rg(k|0,(f[f[d>>2]>>2]|0)+i|0,t|0)|0;t=f[p>>2]|0;A=$(n[h>>2]);i=0;x=q;while(1){B=$(n[k+(i<<2)>>2]);s=~~$(J($($(A*$(B-$(n[t+(i<<2)>>2])))+$(.5))));f[a+(x<<2)>>2]=s;i=i+1|0;if((i|0)==(j|0))break;else x=x+1|0}r=r+1|0;if((r|0)==(e|0))break;else q=q+j|0}$q(k);u=g;return}function Se(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3340;ii(a+200|0);b=f[a+184>>2]|0;if(b|0){c=a+188|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}_i(a+172|0);b=f[a+152>>2]|0;if(b|0){d=a+156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+140>>2]|0;if(b|0)br(b);b=f[a+128>>2]|0;if(b|0){c=b;do{b=c;c=f[c>>2]|0;br(b)}while((c|0)!=0)}c=a+120|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)br(b);b=f[a+108>>2]|0;if(b|0){c=a+112|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);br(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+84>>2]|0;if(b|0)br(b);b=f[a+72>>2]|0;if(b|0){c=a+76|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+28>>2]|0;if(b|0)br(b);b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=a+12|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;ui(a);br(a);return}function Te(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=a+140|0;c=f[b>>2]|0;if(c|0){d=a+144|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);br(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}br(g)}g=a+128|0;b=f[g>>2]|0;if(b|0){j=a+132|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);br(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}br(l)}l=f[a+116>>2]|0;if(l|0){g=a+120|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l)}l=f[a+104>>2]|0;if(l|0){m=a+108|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);br(l)}l=f[a+92>>2]|0;if(!l){n=a+72|0;dl(n);o=a+52|0;dl(o);p=a+32|0;dl(p);q=a+12|0;dl(q);return}g=a+96|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l);n=a+72|0;dl(n);o=a+52|0;dl(o);p=a+32|0;dl(p);q=a+12|0;dl(q);return}function Ue(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=a+152|0;c=f[b>>2]|0;if(c|0){d=a+156|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);br(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}br(g)}g=a+140|0;b=f[g>>2]|0;if(b|0){j=a+144|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);br(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}br(l)}l=f[a+128>>2]|0;if(l|0){g=a+132|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l)}l=f[a+116>>2]|0;if(l|0){m=a+120|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);br(l)}l=f[a+104>>2]|0;if(!l){n=a+84|0;dl(n);o=a+64|0;dl(o);p=a+44|0;dl(p);q=a+12|0;tj(q);return}g=a+108|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(l);n=a+84|0;dl(n);o=a+64|0;dl(o);p=a+44|0;dl(p);q=a+12|0;tj(q);return}function Ve(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3080;jj(a+200|0);b=f[a+184>>2]|0;if(b|0){c=a+188|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}_i(a+172|0);b=f[a+152>>2]|0;if(b|0){d=a+156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+140>>2]|0;if(b|0)br(b);b=f[a+128>>2]|0;if(b|0){c=b;do{b=c;c=f[c>>2]|0;br(b)}while((c|0)!=0)}c=a+120|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)br(b);b=f[a+108>>2]|0;if(b|0){c=a+112|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);br(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+84>>2]|0;if(b|0)br(b);b=f[a+72>>2]|0;if(b|0){c=a+76|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+28>>2]|0;if(b|0)br(b);b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=a+12|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;ui(a);br(a);return}function We(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+48|0;d=c+44|0;e=c+40|0;g=c+36|0;h=c+32|0;i=c;f[h>>2]=f[a+60>>2];j=b+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,h,h+4|0)|0}rn(i);lk(i);if((f[h>>2]|0)>0){k=a+56|0;l=1;m=0;do{n=l;l=(f[(f[k>>2]|0)+(m>>>5<<2)>>2]&1<<(m&31)|0)!=0;Vi(i,n^l^1);m=m+1|0}while((m|0)<(f[h>>2]|0))}fd(i,b);f[g>>2]=f[a+12>>2];h=j;m=f[h>>2]|0;l=f[h+4>>2]|0;if((l|0)>0|(l|0)==0&m>>>0>0){o=l;p=m}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;m=j;o=f[m+4>>2]|0;p=f[m>>2]|0}f[g>>2]=f[a+20>>2];if((o|0)>0|(o|0)==0&p>>>0>0){tj(i);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;tj(i);u=c;return 1}function Xe(a,c){a=a|0;c=c|0;var d=0,e=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;d=f[c>>2]|0;c=f[d>>2]|0;e=f[a+4>>2]|0;g=f[d+4>>2]|0;h=e+-1|0;i=(h&e|0)==0;if(!i)if(g>>>0>>0)j=g;else j=(g>>>0)%(e>>>0)|0;else j=h&g;g=(f[a>>2]|0)+(j<<2)|0;k=f[g>>2]|0;while(1){l=f[k>>2]|0;if((l|0)==(d|0))break;else k=l}if((k|0)!=(a+8|0)){l=f[k+4>>2]|0;if(!i)if(l>>>0>>0)m=l;else m=(l>>>0)%(e>>>0)|0;else m=l&h;if((m|0)==(j|0)){n=c;o=21}else o=13}else o=13;do if((o|0)==13){if(c|0){m=f[c+4>>2]|0;if(!i)if(m>>>0>>0)p=m;else p=(m>>>0)%(e>>>0)|0;else p=m&h;if((p|0)==(j|0)){q=c;r=c;o=22;break}}f[g>>2]=0;n=f[d>>2]|0;o=21}while(0);if((o|0)==21){g=n;if(!n)s=g;else{q=n;r=g;o=22}}if((o|0)==22){o=f[q+4>>2]|0;if(!i)if(o>>>0>>0)t=o;else t=(o>>>0)%(e>>>0)|0;else t=o&h;if((t|0)==(j|0))s=r;else{f[(f[a>>2]|0)+(t<<2)>>2]=k;s=f[d>>2]|0}}f[k>>2]=s;f[d>>2]=0;s=a+12|0;f[s>>2]=(f[s>>2]|0)+-1;if(!d)return c|0;s=d+8|0;a=f[d+20>>2]|0;if(a|0){k=d+24|0;if((f[k>>2]|0)!=(a|0))f[k>>2]=a;br(a)}if((b[s+11>>0]|0)<0)br(f[s>>2]|0);br(d);return c|0}function Ye(a){a=a|0;var b=0,c=0,d=0,e=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,v=0,w=0,x=0,y=0;b=u;u=u+16|0;c=b+4|0;d=b;f[c>>2]=0;e=c+4|0;f[e>>2]=0;f[c+8>>2]=0;g=a+56|0;h=f[g>>2]|0;i=(f[h+100>>2]|0)-(f[h+96>>2]|0)|0;j=(i|0)/12|0;if(!i){k=0;l=0}else{i=c+8|0;m=0;n=0;o=h;h=0;p=0;while(1){q=f[o+96>>2]|0;r=f[q+(n*12|0)>>2]|0;s=r-m|0;t=((s|0)>-1?s:0-s|0)<<1|s>>>31;f[d>>2]=t;if((h|0)==(p|0)){Ci(c,d);v=f[e>>2]|0;w=f[i>>2]|0}else{f[h>>2]=t;t=h+4|0;f[e>>2]=t;v=t;w=p}t=f[q+(n*12|0)+4>>2]|0;s=t-r|0;r=((s|0)>-1?s:0-s|0)<<1|s>>>31;f[d>>2]=r;if((v|0)==(w|0)){Ci(c,d);x=f[e>>2]|0;y=f[i>>2]|0}else{f[v>>2]=r;r=v+4|0;f[e>>2]=r;x=r;y=w}r=f[q+(n*12|0)+8>>2]|0;q=r-t|0;t=((q|0)>-1?q:0-q|0)<<1|q>>>31;f[d>>2]=t;if((x|0)==(y|0))Ci(c,d);else{f[x>>2]=t;f[e>>2]=x+4}t=n+1|0;if(t>>>0>=j>>>0)break;m=r;n=t;o=f[g>>2]|0;h=f[e>>2]|0;p=f[i>>2]|0}k=f[c>>2]|0;l=f[e>>2]|0}Dc(k,l-k>>2,1,0,f[a+44>>2]|0)|0;a=f[c>>2]|0;if(!a){u=b;return 1}c=f[e>>2]|0;if((c|0)!=(a|0))f[e>>2]=c+(~((c+-4-a|0)>>>2)<<2);br(a);u=b;return 1}function Ze(a,c){a=a|0;c=c|0;var d=0,e=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;d=f[a+12>>2]|0;e=a+108|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{kh(i,h-m|0,3220);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=a+112|0;a=c+68|0;c=f[o+96>>2]|0;o=0;while(1){h=o*3|0;if((h|0)==-1){q=0;r=12;break}i=f[d>>2]|0;g=f[i+(h<<2)>>2]|0;if((g|0)==-1){q=0;r=12;break}k=f[(f[m>>2]|0)+12>>2]|0;l=f[k+(g<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}g=f[a>>2]|0;f[g+(f[c+(o*12|0)>>2]<<2)>>2]=l;l=h+1|0;if((l|0)==-1){q=0;r=12;break}j=f[i+(l<<2)>>2]|0;if((j|0)==-1){q=0;r=12;break}l=f[k+(j<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}f[g+(f[c+(o*12|0)+4>>2]<<2)>>2]=l;l=h+2|0;if((l|0)==-1){q=0;r=12;break}h=f[i+(l<<2)>>2]|0;if((h|0)==-1){q=0;r=12;break}l=f[k+(h<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}f[g+(f[c+(o*12|0)+8>>2]<<2)>>2]=l;o=o+1|0;if(o>>>0>=e>>>0){q=1;r=12;break}}if((r|0)==12)return q|0;return 0}function _e(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+48|0;d=c+44|0;e=c+40|0;g=c+36|0;h=c+32|0;i=c;f[h>>2]=f[a+80>>2];j=b+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,h,h+4|0)|0}rn(i);lk(i);if((f[h>>2]|0)>0){k=a+76|0;l=1;m=0;do{n=l;l=(f[(f[k>>2]|0)+(m>>>5<<2)>>2]&1<<(m&31)|0)!=0;Vi(i,n^l^1);m=m+1|0}while((m|0)<(f[h>>2]|0))}fd(i,b);f[g>>2]=f[a+12>>2];h=j;m=f[h>>2]|0;l=f[h+4>>2]|0;if((l|0)>0|(l|0)==0&m>>>0>0){o=l;p=m}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;m=j;o=f[m+4>>2]|0;p=f[m>>2]|0}f[g>>2]=f[a+16>>2];if((o|0)>0|(o|0)==0&p>>>0>0){tj(i);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;tj(i);u=c;return 1}function $e(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=a+12|0;h=f[g>>2]|0;$j(f[a+4>>2]|0,(f[h+28>>2]|0)-(f[h+24>>2]|0)>>2);h=a+96|0;i=f[g>>2]|0;j=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;f[c>>2]=0;i=a+100|0;k=f[i>>2]|0;l=f[h>>2]|0;m=k-l>>2;n=l;l=k;if(j>>>0<=m>>>0){if(j>>>0>>0?(k=n+(j<<2)|0,(k|0)!=(l|0)):0)f[i>>2]=l+(~((l+-4-k|0)>>>2)<<2)}else kh(h,j-m|0,c);m=a+116|0;a=f[m>>2]|0;if(!a){j=f[g>>2]|0;g=(f[j+4>>2]|0)-(f[j>>2]|0)>>2;j=(g>>>0)/3|0;if(g>>>0<=2){o=1;u=b;return o|0}g=0;while(1){f[d>>2]=g*3;f[c>>2]=f[d>>2];g=g+1|0;if(!(vb(e,c)|0)){o=0;p=15;break}if((g|0)>=(j|0)){o=1;p=15;break}}if((p|0)==15){u=b;return o|0}}else{j=f[a>>2]|0;if((f[a+4>>2]|0)==(j|0)){o=1;u=b;return o|0}a=0;g=j;while(1){f[d>>2]=f[g+(a<<2)>>2];f[c>>2]=f[d>>2];a=a+1|0;if(!(vb(e,c)|0)){o=0;p=15;break}j=f[m>>2]|0;g=f[j>>2]|0;if(a>>>0>=(f[j+4>>2]|0)-g>>2>>>0){o=1;p=15;break}}if((p|0)==15){u=b;return o|0}}return 0}function af(a,c){a=a|0;c=c|0;var d=0,e=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;d=f[a+12>>2]|0;e=a+68|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{kh(i,h-m|0,3220);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=a+72|0;a=c+68|0;c=f[o+96>>2]|0;o=0;while(1){h=o*3|0;if((h|0)==-1){q=0;r=12;break}i=f[d>>2]|0;g=f[i+(h<<2)>>2]|0;if((g|0)==-1){q=0;r=12;break}k=f[(f[m>>2]|0)+12>>2]|0;l=f[k+(g<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}g=f[a>>2]|0;f[g+(f[c+(o*12|0)>>2]<<2)>>2]=l;l=h+1|0;if((l|0)==-1){q=0;r=12;break}j=f[i+(l<<2)>>2]|0;if((j|0)==-1){q=0;r=12;break}l=f[k+(j<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}f[g+(f[c+(o*12|0)+4>>2]<<2)>>2]=l;l=h+2|0;if((l|0)==-1){q=0;r=12;break}h=f[i+(l<<2)>>2]|0;if((h|0)==-1){q=0;r=12;break}l=f[k+(h<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=12;break}f[g+(f[c+(o*12|0)+8>>2]<<2)>>2]=l;o=o+1|0;if(o>>>0>=e>>>0){q=1;r=12;break}}if((r|0)==12)return q|0;return 0}function bf(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=u;u=u+16|0;d=c+12|0;e=c+8|0;g=c+4|0;h=c;if(!b){i=dn(76)|0;j=dn(12)|0;k=f[(f[a+4>>2]|0)+80>>2]|0;f[j+4>>2]=0;f[j>>2]=3584;f[j+8>>2]=k;f[h>>2]=j;ml(i,h,0);j=i;f[g>>2]=j;i=a+12|0;k=f[i>>2]|0;if(k>>>0<(f[a+16>>2]|0)>>>0){f[g>>2]=0;f[k>>2]=j;f[i>>2]=k+4;l=g}else{yg(a+8|0,g);l=g}g=f[l>>2]|0;f[l>>2]=0;if(g|0)Va[f[(f[g>>2]|0)+4>>2]&127](g);g=f[h>>2]|0;f[h>>2]=0;if(!g){u=c;return 1}Va[f[(f[g>>2]|0)+4>>2]&127](g);u=c;return 1}g=f[f[a+8>>2]>>2]|0;f[d>>2]=b;a=g+4|0;h=g+8|0;l=f[h>>2]|0;if((l|0)==(f[g+12>>2]|0))Ci(a,d);else{f[l>>2]=b;f[h>>2]=l+4}l=f[d>>2]|0;b=g+16|0;k=g+20|0;g=f[k>>2]|0;i=f[b>>2]|0;j=g-i>>2;m=i;if((l|0)<(j|0)){n=m;o=l}else{i=l+1|0;f[e>>2]=-1;p=g;if(i>>>0<=j>>>0)if(i>>>0>>0?(g=m+(i<<2)|0,(g|0)!=(p|0)):0){f[k>>2]=p+(~((p+-4-g|0)>>>2)<<2);q=l;r=m}else{q=l;r=m}else{kh(b,i-j|0,e);q=f[d>>2]|0;r=f[b>>2]|0}n=r;o=q}f[n+(o<<2)>>2]=((f[h>>2]|0)-(f[a>>2]|0)>>2)+-1;u=c;return 1}function cf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=a+8|0;e=f[d>>2]|0;g=f[a>>2]|0;h=g;do if(e-g>>3>>>0>=b>>>0){i=a+4|0;j=f[i>>2]|0;k=j-g>>3;l=k>>>0>>0;m=l?k:b;n=j;if(m|0){j=m;m=h;while(1){o=c;p=f[o+4>>2]|0;q=m;f[q>>2]=f[o>>2];f[q+4>>2]=p;j=j+-1|0;if(!j)break;else m=m+8|0}}if(!l){m=h+(b<<3)|0;if((m|0)==(n|0))return;else{r=i;s=n+(~((n+-8-m|0)>>>3)<<3)|0;break}}else{m=b-k|0;j=m;p=n;while(1){q=c;o=f[q+4>>2]|0;t=p;f[t>>2]=f[q>>2];f[t+4>>2]=o;j=j+-1|0;if(!j)break;else p=p+8|0}r=i;s=n+(m<<3)|0;break}}else{p=g;if(!g)u=e;else{j=a+4|0;k=f[j>>2]|0;if((k|0)!=(h|0))f[j>>2]=k+(~((k+-8-g|0)>>>3)<<3);br(p);f[d>>2]=0;f[j>>2]=0;f[a>>2]=0;u=0}if(b>>>0>536870911)mq(a);j=u>>2;p=u>>3>>>0<268435455?(j>>>0>>0?b:j):536870911;if(p>>>0>536870911)mq(a);j=dn(p<<3)|0;k=a+4|0;f[k>>2]=j;f[a>>2]=j;f[d>>2]=j+(p<<3);p=b;l=j;while(1){o=c;t=f[o+4>>2]|0;q=l;f[q>>2]=f[o>>2];f[q+4>>2]=t;p=p+-1|0;if(!p)break;else l=l+8|0}r=k;s=j+(b<<3)|0}while(0);f[r>>2]=s;return}function df(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=+$(n[b>>2]);g=+K(+e);h=+$(n[b+4>>2]);i=g+ +K(+h);g=+$(n[b+8>>2]);j=i+ +K(+g);b=j>1.0e-06;i=1.0/j;k=f[a+12>>2]|0;j=+(k|0);l=~~+J(+((b?i*e:1.0)*j+.5));m=~~+J(+((b?i*h:0.0)*j+.5));o=(l|0)>-1;p=k-(o?l:0-l|0)-((m|0)>-1?m:0-m|0)|0;l=(p|0)<0;q=(l?((m|0)>0?p:0-p|0):0)+m|0;m=l?0:p;p=(b?i*g:0.0)<0.0?0-m|0:m;do if(!o){if((q|0)<0)r=(p|0)>-1?p:0-p|0;else r=(f[a+8>>2]|0)-((p|0)>-1?p:0-p|0)|0;if((p|0)<0){s=(q|0)>-1?q:0-q|0;t=r;break}else{s=(f[a+8>>2]|0)-((q|0)>-1?q:0-q|0)|0;t=r;break}}else{s=k+p|0;t=k+q|0}while(0);q=(t|0)==0;p=(s|0)==0;r=f[a+8>>2]|0;if(!(s|t)){u=r;v=r;f[c>>2]=u;f[d>>2]=v;return}a=(r|0)==(s|0);if(q&a){u=s;v=s;f[c>>2]=u;f[d>>2]=v;return}o=(r|0)==(t|0);if(p&o){u=t;v=t;f[c>>2]=u;f[d>>2]=v;return}if(q&(k|0)<(s|0)){u=0;v=(k<<1)-s|0;f[c>>2]=u;f[d>>2]=v;return}if(o&(k|0)>(s|0)){u=t;v=(k<<1)-s|0;f[c>>2]=u;f[d>>2]=v;return}if(a&(k|0)>(t|0)){u=(k<<1)-t|0;v=s;f[c>>2]=u;f[d>>2]=v;return}if(!p){u=t;v=s;f[c>>2]=u;f[d>>2]=v;return}u=(k|0)<(t|0)?(k<<1)-t|0:t;v=0;f[c>>2]=u;f[d>>2]=v;return}function ef(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=a+4|0;d=b+4|0;f[c>>2]=f[d>>2];f[c+4>>2]=f[d+4>>2];f[c+8>>2]=f[d+8>>2];f[c+12>>2]=f[d+12>>2];f[c+16>>2]=f[d+16>>2];d=a+24|0;c=b+24|0;if((a|0)==(b|0))return a|0;e=b+28|0;g=f[e>>2]|0;if(!g)h=0;else{i=a+32|0;do if(g>>>0>f[i>>2]<<5>>>0){j=f[d>>2]|0;if(!j)k=g;else{br(j);f[d>>2]=0;f[i>>2]=0;f[a+28>>2]=0;k=f[e>>2]|0}if((k|0)<0)mq(d);else{j=((k+-1|0)>>>5)+1|0;l=dn(j<<2)|0;f[d>>2]=l;f[a+28>>2]=0;f[i>>2]=j;m=f[e>>2]|0;n=l;break}}else{m=g;n=f[d>>2]|0}while(0);Xl(n|0,f[c>>2]|0,((m+-1|0)>>>5<<2)+4|0)|0;h=f[e>>2]|0}f[a+28>>2]=h;h=a+36|0;e=b+36|0;m=b+40|0;b=f[m>>2]|0;if(!b)o=0;else{c=a+44|0;do if(b>>>0>f[c>>2]<<5>>>0){n=f[h>>2]|0;if(!n)p=b;else{br(n);f[h>>2]=0;f[c>>2]=0;f[a+40>>2]=0;p=f[m>>2]|0}if((p|0)<0)mq(h);else{n=((p+-1|0)>>>5)+1|0;d=dn(n<<2)|0;f[h>>2]=d;f[a+40>>2]=0;f[c>>2]=n;q=f[m>>2]|0;r=d;break}}else{q=b;r=f[h>>2]|0}while(0);Xl(r|0,f[e>>2]|0,((q+-1|0)>>>5<<2)+4|0)|0;o=f[m>>2]|0}f[a+40>>2]=o;return a|0}function ff(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],ye(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];ye(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;og(d);m=a+1068|0;Cm(m);k=a+1088|0;Cm(k);l=a+1108|0;Cm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];jb(a,i,h);Ke(d,e);mg(m,e);mg(k,e);mg(l,e);u=g;return 1}function gf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],ye(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];ye(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;og(d);m=a+1068|0;Cm(m);k=a+1088|0;Cm(k);l=a+1108|0;Cm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];mb(a,i,h);Ke(d,e);mg(m,e);mg(k,e);mg(l,e);u=g;return 1}function hf(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0;c=u;u=u+32|0;d=c;e=a+8|0;g=f[e>>2]|0;h=a+4|0;i=f[h>>2]|0;j=i;if(g-i>>2>>>0>=b>>>0){hj(i|0,0,b<<2|0)|0;f[h>>2]=i+(b<<2);u=c;return}k=f[a>>2]|0;l=i-k>>2;m=l+b|0;n=k;if(m>>>0>1073741823)mq(a);o=g-k|0;p=o>>1;q=o>>2>>>0<536870911?(p>>>0>>0?m:p):1073741823;f[d+12>>2]=0;f[d+16>>2]=a+8;do if(q)if(q>>>0>1073741823){p=ra(8)|0;Wo(p,14941);f[p>>2]=6944;va(p|0,1080,114)}else{r=dn(q<<2)|0;break}else r=0;while(0);f[d>>2]=r;p=r+(l<<2)|0;l=d+8|0;m=d+4|0;f[m>>2]=p;o=r+(q<<2)|0;q=d+12|0;f[q>>2]=o;r=p+(b<<2)|0;hj(p|0,0,b<<2|0)|0;f[l>>2]=r;if((j|0)==(n|0)){s=p;t=q;v=l;w=k;x=r;y=i;z=o;A=g}else{g=j;j=p;do{g=g+-4|0;p=f[g>>2]|0;f[g>>2]=0;f[j+-4>>2]=p;j=(f[m>>2]|0)+-4|0;f[m>>2]=j}while((g|0)!=(n|0));s=j;t=q;v=l;w=f[a>>2]|0;x=f[l>>2]|0;y=f[h>>2]|0;z=f[q>>2]|0;A=f[e>>2]|0}f[a>>2]=s;f[m>>2]=w;f[h>>2]=x;f[v>>2]=y;f[e>>2]=z;f[t>>2]=A;f[d>>2]=w;Wh(d);u=c;return}function jf(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=u;u=u+16|0;h=d;i=f[a+124>>2]|0;if(!i){u=d;return}j=i+-1|0;k=(j&i|0)==0;if(!k)if(i>>>0>g>>>0)l=g;else l=(g>>>0)%(i>>>0)|0;else l=j&g;m=f[(f[a+120>>2]|0)+(l<<2)>>2]|0;if(!m){u=d;return}n=f[m>>2]|0;if(!n){u=d;return}a:do if(k){m=n;while(1){o=f[m+4>>2]|0;p=(o|0)==(g|0);if(!(p|(o&j|0)==(l|0))){q=24;break}if(p?(f[m+8>>2]|0)==(g|0):0){r=m;break a}m=f[m>>2]|0;if(!m){q=24;break}}if((q|0)==24){u=d;return}}else{m=n;while(1){p=f[m+4>>2]|0;if((p|0)==(g|0)){if((f[m+8>>2]|0)==(g|0)){r=m;break a}}else{if(p>>>0>>0)s=p;else s=(p>>>0)%(i>>>0)|0;if((s|0)!=(l|0)){q=24;break}}m=f[m>>2]|0;if(!m){q=24;break}}if((q|0)==24){u=d;return}}while(0);q=f[r+12>>2]|0;if((q|0)==-1){u=d;return}f[h>>2]=q;f[h+4>>2]=c;b[h+8>>0]=e&1;e=a+112|0;c=f[e>>2]|0;if((c|0)==(f[a+116>>2]|0))ki(a+108|0,h);else{f[c>>2]=f[h>>2];f[c+4>>2]=f[h+4>>2];f[c+8>>2]=f[h+8>>2];f[e>>2]=(f[e>>2]|0)+12}u=d;return}function kf(a,b){a=a|0;b=b|0;var c=0,e=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;c=d[b>>1]|0;e=d[b+2>>1]|0;g=d[b+4>>1]|0;h=d[b+6>>1]|0;b=((((c^318)&65535)+239^e&65535)+239^g&65535)+239^h&65535;i=f[a+4>>2]|0;if(!i){j=0;return j|0}k=i+-1|0;l=(k&i|0)==0;if(!l)if(b>>>0>>0)m=b;else m=(b>>>0)%(i>>>0)|0;else m=b&k;n=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!n){j=0;return j|0}a=f[n>>2]|0;if(!a){j=0;return j|0}if(l){l=a;while(1){n=f[l+4>>2]|0;o=(n|0)==(b|0);if(!(o|(n&k|0)==(m|0))){j=0;p=25;break}if((((o?(o=l+8|0,(d[o>>1]|0)==c<<16>>16):0)?(d[o+2>>1]|0)==e<<16>>16:0)?(d[l+12>>1]|0)==g<<16>>16:0)?(d[o+6>>1]|0)==h<<16>>16:0){j=l;p=25;break}l=f[l>>2]|0;if(!l){j=0;p=25;break}}if((p|0)==25)return j|0}else q=a;while(1){a=f[q+4>>2]|0;if((a|0)==(b|0)){l=q+8|0;if((((d[l>>1]|0)==c<<16>>16?(d[l+2>>1]|0)==e<<16>>16:0)?(d[q+12>>1]|0)==g<<16>>16:0)?(d[l+6>>1]|0)==h<<16>>16:0){j=q;p=25;break}}else{if(a>>>0>>0)r=a;else r=(a>>>0)%(i>>>0)|0;if((r|0)!=(m|0)){j=0;p=25;break}}q=f[q>>2]|0;if(!q){j=0;p=25;break}}if((p|0)==25)return j|0;return 0}function lf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],ye(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];ye(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;Cm(d);m=a+32|0;Cm(m);k=a+52|0;Cm(k);l=a+72|0;Cm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];hb(a,i,h);mg(d,e);mg(m,e);mg(k,e);mg(l,e);u=g;return 1}function mf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],ye(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];ye(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;lk(d);m=a+44|0;Cm(m);k=a+64|0;Cm(k);l=a+84|0;Cm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];nb(a,i,h);fd(d,e);mg(m,e);mg(k,e);mg(l,e);u=g;return 1}function nf(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0;a=u;u=u+16|0;e=a+4|0;g=a;h=a+8|0;i=d+11|0;j=b[i>>0]|0;k=j<<24>>24<0;if(k){l=f[d+4>>2]|0;if(l>>>0>255){m=0;u=a;return m|0}else n=l}else n=j&255;if(!n){b[h>>0]=0;n=c+16|0;l=f[n+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[n>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}m=1;u=a;return m|0}n=d+4|0;l=f[n>>2]|0;b[h>>0]=k?l:j&255;k=c+16|0;o=k;p=f[o>>2]|0;q=f[o+4>>2]|0;if((q|0)>0|(q|0)==0&p>>>0>0){r=j;s=q;t=p;v=l}else{f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0;h=k;r=b[i>>0]|0;s=f[h+4>>2]|0;t=f[h>>2]|0;v=f[n>>2]|0}n=r<<24>>24<0;h=n?f[d>>2]|0:d;if(!((s|0)>0|(s|0)==0&t>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+(n?v:r&255)|0)|0}m=1;u=a;return m|0}function of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=a+4|0;d=f[a>>2]|0;e=((f[c>>2]|0)-d|0)/24|0;g=e+1|0;if(g>>>0>178956970)mq(a);h=a+8|0;i=((f[h>>2]|0)-d|0)/24|0;d=i<<1;j=i>>>0<89478485?(d>>>0>>0?g:d):178956970;do if(j)if(j>>>0>178956970){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{k=dn(j*24|0)|0;break}else k=0;while(0);d=k+(e*24|0)|0;g=d;i=k+(j*24|0)|0;f[d>>2]=1180;f[k+(e*24|0)+4>>2]=f[b+4>>2];_j(k+(e*24|0)+8|0,b+8|0);f[k+(e*24|0)+20>>2]=f[b+20>>2];b=d+24|0;e=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(e|0)){l=g;m=e;n=e}else{j=k;k=g;g=d;do{f[g+-24>>2]=1180;f[g+-20>>2]=f[j+-20>>2];d=g+-16|0;o=j+-16|0;f[d>>2]=0;p=g+-12|0;f[p>>2]=0;f[g+-8>>2]=0;f[d>>2]=f[o>>2];d=j+-12|0;f[p>>2]=f[d>>2];p=j+-8|0;f[g+-8>>2]=f[p>>2];f[p>>2]=0;f[d>>2]=0;f[o>>2]=0;f[g+-4>>2]=f[j+-4>>2];j=j+-24|0;g=k+-24|0;k=g}while((j|0)!=(e|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=b;f[h>>2]=i;i=m;if((n|0)!=(i|0)){h=n;do{h=h+-24|0;Va[f[f[h>>2]>>2]&127](h)}while((h|0)!=(i|0))}if(!m)return;br(m);return}function pf(a,c){a=a|0;c=c|0;var d=0,e=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;d=b[c>>0]|0;e=b[c+1>>0]|0;g=b[c+2>>0]|0;h=b[c+3>>0]|0;c=(((d&255^318)+239^e&255)+239^g&255)+239^h&255;i=f[a+4>>2]|0;if(!i){j=0;return j|0}k=i+-1|0;l=(k&i|0)==0;if(!l)if(c>>>0>>0)m=c;else m=(c>>>0)%(i>>>0)|0;else m=c&k;n=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!n){j=0;return j|0}a=f[n>>2]|0;if(!a){j=0;return j|0}if(l){l=a;while(1){n=f[l+4>>2]|0;o=(n|0)==(c|0);if(!(o|(n&k|0)==(m|0))){j=0;p=25;break}if((((o?(o=l+8|0,(b[o>>0]|0)==d<<24>>24):0)?(b[o+1>>0]|0)==e<<24>>24:0)?(b[o+2>>0]|0)==g<<24>>24:0)?(b[o+3>>0]|0)==h<<24>>24:0){j=l;p=25;break}l=f[l>>2]|0;if(!l){j=0;p=25;break}}if((p|0)==25)return j|0}else q=a;while(1){a=f[q+4>>2]|0;if((a|0)==(c|0)){l=q+8|0;if((((b[l>>0]|0)==d<<24>>24?(b[l+1>>0]|0)==e<<24>>24:0)?(b[l+2>>0]|0)==g<<24>>24:0)?(b[l+3>>0]|0)==h<<24>>24:0){j=q;p=25;break}}else{if(a>>>0>>0)r=a;else r=(a>>>0)%(i>>>0)|0;if((r|0)!=(m|0)){j=0;p=25;break}}q=f[q>>2]|0;if(!q){j=0;p=25;break}}if((p|0)==25)return j|0;return 0}function qf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,v=0,w=0,x=0,y=0,z=0,A=0;d=u;u=u+32|0;h=d+24|0;i=d+16|0;j=d;k=d+8|0;l=a+40|0;f[a+44>>2]=g;g=a+36|0;m=f[g>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;if((p|0)<=0){u=d;return 1}q=(p>>>2)+-1|0;p=a+8|0;r=a+48|0;s=a+52|0;a=i+4|0;t=j+4|0;v=h+4|0;if(n-o>>2>>>0>q>>>0){w=q;x=o}else{y=m;mq(y)}while(1){f[k>>2]=f[x+(w<<2)>>2];f[h>>2]=f[k>>2];tb(l,h,b,w)|0;m=X(w,e)|0;o=b+(m<<2)|0;q=c+(m<<2)|0;m=f[o+4>>2]|0;n=f[r>>2]|0;z=f[s>>2]|0;f[i>>2]=f[o>>2];f[a>>2]=m;f[j>>2]=n;f[t>>2]=z;Dd(h,p,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[v>>2];w=w+-1|0;if((w|0)<=-1){A=3;break}q=f[g>>2]|0;x=f[q>>2]|0;if((f[q+4>>2]|0)-x>>2>>>0<=w>>>0){y=q;A=4;break}}if((A|0)==3){u=d;return 1}else if((A|0)==4)mq(y);return 0}function rf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=u;u=u+32|0;i=h;j=h+16|0;k=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)==1){l=Qa[f[(f[b>>2]|0)+52>>2]&127](b)|0;m=Ra[f[(f[b>>2]|0)+60>>2]&127](b,d)|0;if((l|0)==0|(m|0)==0){f[a>>2]=0;u=h;return}n=Ra[f[(f[b>>2]|0)+56>>2]&127](b,d)|0;if(!n){f[i>>2]=f[b+56>>2];f[i+4>>2]=l;f[i+12>>2]=m;f[i+8>>2]=m+12;Rd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}else{f[i>>2]=f[b+56>>2];f[i+4>>2]=n;f[i+12>>2]=m;f[i+8>>2]=m+12;Pd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}}while(0);f[a>>2]=0;u=h;return}function sf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,v=0,w=0,x=0,y=0,z=0,A=0;d=u;u=u+32|0;h=d+24|0;i=d+16|0;j=d;k=d+8|0;l=a+40|0;f[a+44>>2]=g;g=a+36|0;m=f[g>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;if((p|0)<=0){u=d;return 1}q=(p>>>2)+-1|0;p=a+8|0;r=a+48|0;s=a+52|0;a=i+4|0;t=j+4|0;v=h+4|0;if(n-o>>2>>>0>q>>>0){w=q;x=o}else{y=m;mq(y)}while(1){f[k>>2]=f[x+(w<<2)>>2];f[h>>2]=f[k>>2];sb(l,h,b,w)|0;m=X(w,e)|0;o=b+(m<<2)|0;q=c+(m<<2)|0;m=f[o+4>>2]|0;n=f[r>>2]|0;z=f[s>>2]|0;f[i>>2]=f[o>>2];f[a>>2]=m;f[j>>2]=n;f[t>>2]=z;Dd(h,p,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[v>>2];w=w+-1|0;if((w|0)<=-1){A=3;break}q=f[g>>2]|0;x=f[q>>2]|0;if((f[q+4>>2]|0)-x>>2>>>0<=w>>>0){y=q;A=4;break}}if((A|0)==3){u=d;return 1}else if((A|0)==4)mq(y);return 0}function tf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=f[b>>2]|0;b=f[c>>2]|0;e=b-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;k=b;if(e>>>0<=h-i>>2>>>0){l=a+4|0;m=(f[l>>2]|0)-i>>2;n=e>>>0>m>>>0;o=n?d+(m<<2)|0:b;b=o-d|0;m=b>>2;if(m|0)Xl(i|0,d|0,b|0)|0;b=j+(m<<2)|0;if(!n){n=f[l>>2]|0;if((n|0)==(b|0))return;f[l>>2]=n+(~((n+-4-b|0)>>>2)<<2);return}b=f[c>>2]|0;c=o;if((b|0)==(c|0))return;n=f[l>>2]|0;m=b+-4-o|0;o=c;c=n;while(1){f[c>>2]=f[o>>2];o=o+4|0;if((o|0)==(b|0))break;else c=c+4|0}f[l>>2]=n+((m>>>2)+1<<2);return}m=i;if(!i)p=h;else{h=a+4|0;n=f[h>>2]|0;if((n|0)!=(j|0))f[h>>2]=n+(~((n+-4-i|0)>>>2)<<2);br(m);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;p=0}if(e>>>0>1073741823)mq(a);h=p>>1;m=p>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(m>>>0>1073741823)mq(a);h=dn(m<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(m<<2);m=d;if((k|0)==(m|0))return;g=k+-4-d|0;d=m;m=h;while(1){f[m>>2]=f[d>>2];d=d+4|0;if((d|0)==(k|0))break;else m=m+4|0}f[e>>2]=h+((g>>>2)+1<<2);return}function uf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=u;u=u+112|0;g=e+100|0;h=e;i=dn(120)|0;j=f[c+8>>2]|0;f[i+4>>2]=0;f[i>>2]=3296;k=i+8|0;l=i+12|0;m=l+44|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[k>>2]=3320;l=i+56|0;m=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[i+96>>2]=0;f[i+100>>2]=0;f[i+104>>2]=0;f[i+108>>2]=j;f[i+112>>2]=d;k=i+116|0;f[k>>2]=0;n=i;o=f[c+12>>2]|0;p=h+4|0;l=p+4|0;m=l+40|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[h>>2]=3320;l=h+48|0;m=l+36|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[h+88>>2]=0;f[h+92>>2]=0;f[h+96>>2]=0;l=o;f[p>>2]=l;m=((f[l+4>>2]|0)-(f[o>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;Xg(h+24|0,m,g);m=f[p>>2]|0;p=(f[m+28>>2]|0)-(f[m+24>>2]|0)>>2;b[g>>0]=0;Xg(h+36|0,p,g);f[h+8>>2]=o;f[h+12>>2]=d;f[h+16>>2]=j;f[h+20>>2]=i;f[k>>2]=c+72;fh(i,h);f[a>>2]=n;Gi(h);u=e;return}function vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(((d-g|0)/12|0)>>>0>=b>>>0){hj(g|0,0,b*12|0)|0;f[e>>2]=h+(b*12|0);return}i=f[a>>2]|0;j=(g-i|0)/12|0;g=j+b|0;k=i;if(g>>>0>357913941)mq(a);l=(d-i|0)/12|0;d=l<<1;m=l>>>0<178956970?(d>>>0>>0?g:d):357913941;do if(m)if(m>>>0>357913941){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{n=dn(m*12|0)|0;break}else n=0;while(0);d=n+(j*12|0)|0;j=d;g=n+(m*12|0)|0;hj(d|0,0,b*12|0)|0;m=d+(b*12|0)|0;if((h|0)==(k|0)){o=j;p=i;q=h}else{i=h;h=j;j=d;do{d=j+-12|0;b=i;i=i+-12|0;f[d>>2]=0;n=j+-8|0;f[n>>2]=0;f[j+-4>>2]=0;f[d>>2]=f[i>>2];d=b+-8|0;f[n>>2]=f[d>>2];n=b+-4|0;f[j+-4>>2]=f[n>>2];f[n>>2]=0;f[d>>2]=0;f[i>>2]=0;j=h+-12|0;h=j}while((i|0)!=(k|0));o=h;p=f[a>>2]|0;q=f[e>>2]|0}f[a>>2]=o;f[e>>2]=m;f[c>>2]=g;g=p;if((q|0)!=(g|0)){c=q;do{q=c;c=c+-12|0;m=f[c>>2]|0;if(m|0){e=q+-8|0;q=f[e>>2]|0;if((q|0)!=(m|0))f[e>>2]=q+(~((q+-4-m|0)>>>2)<<2);br(m)}}while((c|0)!=(g|0))}if(!p)return;br(p);return}function wf(a,c){a=a|0;c=c|0;var d=0,e=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;d=f[a+12>>2]|0;e=a+68|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{kh(i,h-m|0,3220);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=a+72|0;a=c+68|0;c=f[o+96>>2]|0;o=f[d+28>>2]|0;d=0;while(1){h=d*3|0;i=f[o+(h<<2)>>2]|0;if((i|0)==-1){q=0;r=11;break}g=f[(f[m>>2]|0)+12>>2]|0;k=f[g+(i<<2)>>2]|0;if(k>>>0>=p>>>0){q=0;r=11;break}i=f[a>>2]|0;f[i+(f[c+(d*12|0)>>2]<<2)>>2]=k;k=f[o+(h+1<<2)>>2]|0;if((k|0)==-1){q=0;r=11;break}l=f[g+(k<<2)>>2]|0;if(l>>>0>=p>>>0){q=0;r=11;break}f[i+(f[c+(d*12|0)+4>>2]<<2)>>2]=l;l=f[o+(h+2<<2)>>2]|0;if((l|0)==-1){q=0;r=11;break}h=f[g+(l<<2)>>2]|0;if(h>>>0>=p>>>0){q=0;r=11;break}f[i+(f[c+(d*12|0)+8>>2]<<2)>>2]=h;d=d+1|0;if(d>>>0>=e>>>0){q=1;r=11;break}}if((r|0)==11)return q|0;return 0}function xf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-4194304|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-4177920|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+4194304|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1077936128|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function yf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-2097152|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-2080768|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+6291456|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1075838976|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function zf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-1048576|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1032192|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+7340032|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1074790400|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Af(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Lm(j);yj(j,d,0,g&255,i,0,g<<1,0,0,0);i=uh(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+((X(d,g)|0)<<1)|0;r=n;s=f[r>>2]|0;t=on(s|0,f[r+4>>2]|0,p|0,0)|0;Rg((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;br(i)}br(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);br(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;br(v)}br(j)}k=w;u=a;return k|0}function Bf(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Lm(j);yj(j,d,0,g&255,i,0,g<<2,0,0,0);i=uh(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+((X(d,g)|0)<<2)|0;r=n;s=f[r>>2]|0;t=on(s|0,f[r+4>>2]|0,p|0,0)|0;Rg((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;br(i)}br(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);br(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;br(v)}br(j)}k=w;u=a;return k|0}function Cf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-262144|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-245760|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8126464|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1074003968|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Df(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-131072|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-114688|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8257536|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1073872896|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Ef(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-32768|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-16384|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8355840|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1073774592|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Cn(e);eh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,o|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,o|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Ff(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=f[b>>2]|0;d=f[b+4>>2]|0;e=f[b+8>>2]|0;g=f[b+12>>2]|0;b=(((c^318)+239^d)+239^e)+239^g;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(b>>>0>>0)l=b;else l=(b>>>0)%(h>>>0)|0;else l=b&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(b|0);if(!(n|(m&j|0)==(l|0))){i=0;o=25;break}if((((n?(f[k+8>>2]|0)==(c|0):0)?(f[k+12>>2]|0)==(d|0):0)?(f[k+16>>2]|0)==(e|0):0)?(f[k+20>>2]|0)==(g|0):0){i=k;o=25;break}k=f[k>>2]|0;if(!k){i=0;o=25;break}}if((o|0)==25)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(b|0)){if((((f[p+8>>2]|0)==(c|0)?(f[p+12>>2]|0)==(d|0):0)?(f[p+16>>2]|0)==(e|0):0)?(f[p+20>>2]|0)==(g|0):0){i=p;o=25;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=25;break}}p=f[p>>2]|0;if(!p){i=0;o=25;break}}if((o|0)==25)return i|0;return 0}function Gf(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Lm(j);yj(j,d,0,g&255,i,0,g,0,0,0);i=uh(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+(X(d,g)|0)|0;r=n;s=f[r>>2]|0;t=on(s|0,f[r+4>>2]|0,p|0,0)|0;Rg((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;br(i)}br(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);br(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;br(v)}br(j)}k=w;u=a;return k|0}function Hf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=u;u=u+32|0;i=h;j=h+16|0;k=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)==1){l=Qa[f[(f[b>>2]|0)+52>>2]&127](b)|0;m=Ra[f[(f[b>>2]|0)+60>>2]&127](b,d)|0;if((l|0)==0|(m|0)==0){f[a>>2]=0;u=h;return}n=Ra[f[(f[b>>2]|0)+56>>2]&127](b,d)|0;if(!n){f[i>>2]=f[b+56>>2];f[i+4>>2]=l;f[i+12>>2]=m;f[i+8>>2]=m+12;Od(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}else{f[i>>2]=f[b+56>>2];f[i+4>>2]=n;f[i+12>>2]=m;f[i+8>>2]=m+12;Nd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}}while(0);f[a>>2]=0;u=h;return}function If(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=f[d>>2]|0;g=f[d+4>>2]|0;if((e|0)==(g|0)){h=0;i=a+12|0;j=a+8|0}else{d=f[c>>2]|0;c=a+8|0;k=a+12|0;a=0;l=e;while(1){e=f[l>>2]|0;m=f[d+(e<<2)>>2]|0;if(m>>>0>>0)n=a;else{o=f[c>>2]|0;p=(f[k>>2]|0)-o|0;q=o;if((p|0)>0){o=p>>>2;p=0;do{r=f[q+(p<<2)>>2]|0;s=f[r+68>>2]|0;if(!(b[r+84>>0]|0))t=f[s+(e<<2)>>2]|0;else t=e;f[s+(m<<2)>>2]=t;p=p+1|0}while((p|0)<(o|0))}n=m+1|0}l=l+4|0;if((l|0)==(g|0)){h=n;i=k;j=c;break}else a=n}}n=f[i>>2]|0;a=f[j>>2]|0;if((n-a|0)>0){u=0;v=a;w=n}else return;while(1){n=f[v+(u<<2)>>2]|0;b[n+84>>0]=0;a=n+68|0;c=n+72|0;n=f[c>>2]|0;k=f[a>>2]|0;g=n-k>>2;l=k;k=n;if(h>>>0<=g>>>0)if(h>>>0>>0?(n=l+(h<<2)|0,(n|0)!=(k|0)):0){f[c>>2]=k+(~((k+-4-n|0)>>>2)<<2);x=v;y=w}else{x=v;y=w}else{kh(a,h-g|0,5908);x=f[j>>2]|0;y=f[i>>2]|0}u=u+1|0;if((u|0)>=(y-x>>2|0))break;else{v=x;w=y}}return}function Jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=b;e=c-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;if(e>>>0<=h-i>>2>>>0){k=a+4|0;l=(f[k>>2]|0)-i>>2;m=e>>>0>l>>>0;n=b+(l<<2)|0;l=m?n:c;o=l;p=o-d|0;q=p>>2;if(q|0)Xl(i|0,b|0,p|0)|0;p=j+(q<<2)|0;if(!m){m=f[k>>2]|0;if((m|0)==(p|0))return;f[k>>2]=m+(~((m+-4-p|0)>>>2)<<2);return}if((l|0)==(c|0))return;l=f[k>>2]|0;p=((c+-4-o|0)>>>2)+1|0;o=n;n=l;while(1){f[n>>2]=f[o>>2];o=o+4|0;if((o|0)==(c|0))break;else n=n+4|0}f[k>>2]=l+(p<<2);return}p=i;if(!i)r=h;else{h=a+4|0;l=f[h>>2]|0;if((l|0)!=(j|0))f[h>>2]=l+(~((l+-4-i|0)>>>2)<<2);br(p);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;r=0}if(e>>>0>1073741823)mq(a);h=r>>1;p=r>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(p>>>0>1073741823)mq(a);h=dn(p<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(p<<2);if((b|0)==(c|0))return;p=((c+-4-d|0)>>>2)+1|0;d=b;b=h;while(1){f[b>>2]=f[d>>2];d=d+4|0;if((d|0)==(c|0))break;else b=b+4|0}f[e>>2]=h+(p<<2);return}function Kf(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=u;u=u+16|0;d=c;e=a+76|0;g=f[e>>2]|0;h=a+80|0;i=f[h>>2]|0;if((i|0)!=(g|0))f[h>>2]=i+(~((i+-4-g|0)>>>2)<<2);f[e>>2]=0;f[h>>2]=0;f[a+84>>2]=0;if(g|0)br(g);g=a+64|0;h=f[g>>2]|0;e=a+68|0;if((f[e>>2]|0)!=(h|0))f[e>>2]=h;f[g>>2]=0;f[e>>2]=0;f[a+72>>2]=0;if(h|0)br(h);h=b+4|0;e=f[h>>2]|0;g=f[b>>2]|0;i=((e-g|0)/12|0)*3|0;j=a+4|0;k=f[j>>2]|0;l=f[a>>2]|0;m=k-l>>2;n=l;l=k;k=g;if(i>>>0<=m>>>0)if(i>>>0>>0?(o=n+(i<<2)|0,(o|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-o|0)>>>2)<<2);p=e;q=g;r=k}else{p=e;q=g;r=k}else{oi(a,i-m|0);m=f[b>>2]|0;p=f[h>>2]|0;q=m;r=m}if((p|0)!=(q|0)){q=f[a>>2]|0;m=(p-r|0)/12|0;p=0;do{h=p*3|0;f[q+(h<<2)>>2]=f[r+(p*12|0)>>2];f[q+(h+1<<2)>>2]=f[r+(p*12|0)+4>>2];f[q+(h+2<<2)>>2]=f[r+(p*12|0)+8>>2];p=p+1|0}while(p>>>0>>0)}f[d>>2]=-1;if(!(oc(a,d)|0)){s=0;u=c;return s|0}Gc(a)|0;fb(a,f[d>>2]|0)|0;s=1;u=c;return s|0}function Lf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-16384|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;b[m>>0]=j;b[m+1>>0]=j>>>8;n=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;o=j+8372224|0;b[m>>0]=o;b[m+1>>0]=o>>>8;b[m+2>>0]=o>>>16;n=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;o=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+-1073758208|0;b[o>>0]=m;b[o+1>>0]=m>>>8;b[o+2>>0]=m>>>16;b[o+3>>0]=m>>>24;n=(f[l>>2]|0)+4|0;break}else{n=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;n=(f[l>>2]|0)+1|0}while(0);k=((n|0)<0)<<31>>31;Cn(e);eh(n,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;Xl(h+a|0,h|0,n|0)|0;Rg(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Tn(a|0,0,n|0,k|0)|0;k=Tn(h|0,I|0,g|0,j|0)|0;vl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)br(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c);u=d;return}function Mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=b;e=c-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;if(e>>>0<=h-i>>2>>>0){k=a+4|0;l=(f[k>>2]|0)-i>>2;m=e>>>0>l>>>0;n=b+(l<<2)|0;l=m?n:c;o=l;p=o-d|0;q=p>>2;if(q|0)Xl(i|0,b|0,p|0)|0;p=j+(q<<2)|0;if(!m){m=f[k>>2]|0;if((m|0)==(p|0))return;f[k>>2]=m+(~((m+-4-p|0)>>>2)<<2);return}if((l|0)==(c|0))return;l=f[k>>2]|0;p=c+-4-o|0;o=n;n=l;while(1){f[n>>2]=f[o>>2];o=o+4|0;if((o|0)==(c|0))break;else n=n+4|0}f[k>>2]=l+((p>>>2)+1<<2);return}p=i;if(!i)r=h;else{h=a+4|0;l=f[h>>2]|0;if((l|0)!=(j|0))f[h>>2]=l+(~((l+-4-i|0)>>>2)<<2);br(p);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;r=0}if(e>>>0>1073741823)mq(a);h=r>>1;p=r>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(p>>>0>1073741823)mq(a);h=dn(p<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(p<<2);if((b|0)==(c|0))return;p=c+-4-d|0;d=b;b=h;while(1){f[b>>2]=f[d>>2];d=d+4|0;if((d|0)==(c|0))break;else b=b+4|0}f[e>>2]=h+((p>>>2)+1<<2);return}function Nf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;g=u;u=u+80|0;h=g;i=g+64|0;Al(h);j=f[(f[a+8>>2]|0)+56>>2]|0;k=X(Ll(5)|0,d)|0;yj(h,j,0,d&255,5,0,k,((k|0)<0)<<31>>31,0,0);k=dn(96)|0;nl(k,h);pj(k,c)|0;f[i>>2]=k;Wi(a,i);k=f[i>>2]|0;f[i>>2]=0;if(k|0){i=k+88|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){i=f[c+8>>2]|0;if(i|0){h=c+12|0;if((f[h>>2]|0)!=(i|0))f[h>>2]=i;br(i)}br(c)}c=f[k+68>>2]|0;if(c|0){i=k+72|0;h=f[i>>2]|0;if((h|0)!=(c|0))f[i>>2]=h+(~((h+-4-c|0)>>>2)<<2);br(c)}c=k+64|0;h=f[c>>2]|0;f[c>>2]=0;if(h|0){c=f[h>>2]|0;if(c|0){i=h+4|0;if((f[i>>2]|0)!=(c|0))f[i>>2]=c;br(c)}br(h)}br(k)}if(!e){u=g;return}k=f[a+32>>2]|0;b[k+84>>0]=0;a=k+68|0;h=k+72|0;k=f[h>>2]|0;c=f[a>>2]|0;i=k-c>>2;d=k;if(i>>>0>>0){kh(a,e-i|0,1516);u=g;return}if(i>>>0<=e>>>0){u=g;return}i=c+(e<<2)|0;if((i|0)==(d|0)){u=g;return}f[h>>2]=d+(~((d+-4-i|0)>>>2)<<2);u=g;return}function Of(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0;c=u;u=u+16|0;d=c+4|0;e=c;g=a+4|0;h=f[g>>2]|0;i=a+8|0;j=f[i>>2]|0;if((j|0)==(h|0))k=h;else{l=j+(~((j+-4-h|0)>>>2)<<2)|0;f[i>>2]=l;k=l}l=a+16|0;h=f[l>>2]|0;j=a+20|0;m=f[j>>2]|0;n=h;if((m|0)!=(h|0))f[j>>2]=m+(~((m+-4-n|0)>>>2)<<2);m=f[b>>2]|0;h=f[b+4>>2]|0;if((m|0)==(h|0)){u=c;return}b=a+12|0;a=m;m=k;k=n;while(1){n=f[a>>2]|0;f[d>>2]=n;if((m|0)==(f[b>>2]|0)){Ci(g,d);o=f[l>>2]|0}else{f[m>>2]=n;f[i>>2]=m+4;o=k}n=f[d>>2]|0;p=f[j>>2]|0;q=p-o>>2;r=o;if((n|0)<(q|0)){s=r;t=n;v=o}else{w=n+1|0;f[e>>2]=-1;x=p;if(w>>>0<=q>>>0)if(w>>>0>>0?(p=r+(w<<2)|0,(p|0)!=(x|0)):0){f[j>>2]=x+(~((x+-4-p|0)>>>2)<<2);y=n;z=r;A=o}else{y=n;z=r;A=o}else{kh(l,w-q|0,e);q=f[l>>2]|0;y=f[d>>2]|0;z=q;A=q}s=z;t=y;v=A}m=f[i>>2]|0;f[s+(t<<2)>>2]=(m-(f[g>>2]|0)>>2)+-1;a=a+4|0;if((a|0)==(h|0))break;else k=v}u=c;return}function Pf(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=d[b>>1]|0;e=d[b+2>>1]|0;g=d[b+4>>1]|0;b=(((c^318)&65535)+239^e&65535)+239^g&65535;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(b>>>0>>0)l=b;else l=(b>>>0)%(h>>>0)|0;else l=b&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(b|0);if(!(n|(m&j|0)==(l|0))){i=0;o=23;break}if(((n?(n=k+8|0,(d[n>>1]|0)==c<<16>>16):0)?(d[n+2>>1]|0)==e<<16>>16:0)?(d[k+12>>1]|0)==g<<16>>16:0){i=k;o=23;break}k=f[k>>2]|0;if(!k){i=0;o=23;break}}if((o|0)==23)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(b|0)){k=p+8|0;if(((d[k>>1]|0)==c<<16>>16?(d[k+2>>1]|0)==e<<16>>16:0)?(d[p+12>>1]|0)==g<<16>>16:0){i=p;o=23;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=23;break}}p=f[p>>2]|0;if(!p){i=0;o=23;break}}if((o|0)==23)return i|0;return 0}function Qf(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=u;u=u+32|0;d=c;e=a+16|0;g=e;h=f[g>>2]|0;i=f[g+4>>2]|0;if(!((i|0)>0|(i|0)==0&h>>>0>0)){u=c;return}g=Tn(f[(f[a+12>>2]|0)+4>>2]|0,0,7,0)|0;j=Wn(g|0,I|0,3)|0;g=I;if(!(b[a+24>>0]|0)){k=a+4|0;l=k;m=k;n=h;o=i}else{k=f[a>>2]|0;p=a+4|0;q=k+((f[p>>2]|0)-k)|0;k=Tn(h|0,i|0,8,0)|0;i=q+(0-k)|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;b[d+24>>0]=0;eh(j,g,d)|0;k=d+4|0;q=(f[k>>2]|0)-(f[d>>2]|0)|0;Xl(i+q|0,i+8|0,j|0)|0;Rg(i|0,f[d>>2]|0,q|0)|0;i=e;h=Tn(f[i>>2]|0,f[i+4>>2]|0,8-q|0,0)|0;q=e;f[q>>2]=h;f[q+4>>2]=I;q=d+12|0;h=f[q>>2]|0;f[q>>2]=0;if(h|0)br(h);h=f[d>>2]|0;if(h|0){if((f[k>>2]|0)!=(h|0))f[k>>2]=h;br(h)}h=e;l=p;m=p;n=f[h>>2]|0;o=f[h+4>>2]|0}h=f[l>>2]|0;l=f[a>>2]|0;p=h-l|0;k=Vn(j|0,g|0,n|0,o|0)|0;o=Tn(k|0,I|0,p|0,0)|0;k=l;l=h;if(p>>>0>=o>>>0){if(p>>>0>o>>>0?(h=k+o|0,(h|0)!=(l|0)):0)f[m>>2]=h}else ri(a,o-p|0);p=e;f[p>>2]=0;f[p+4>>2]=0;u=c;return}function Rf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f[c>>2]=1;d=a+4|0;e=c+8|0;g=c+12|0;c=f[e>>2]|0;i=(f[g>>2]|0)-c|0;if(i>>>0<4294967292){Bk(e,i+4|0,0);j=f[e>>2]|0}else j=c;c=j+i|0;i=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[c>>0]=i;b[c+1>>0]=i>>8;b[c+2>>0]=i>>16;b[c+3>>0]=i>>24;i=a+8|0;c=a+12|0;d=f[i>>2]|0;if((f[c>>2]|0)!=(d|0)){j=0;k=d;do{d=k+(j<<2)|0;l=f[e>>2]|0;m=(f[g>>2]|0)-l|0;if(m>>>0<4294967292){Bk(e,m+4|0,0);n=f[e>>2]|0}else n=l;l=n+m|0;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[l>>0]=m;b[l+1>>0]=m>>8;b[l+2>>0]=m>>16;b[l+3>>0]=m>>24;j=j+1|0;k=f[i>>2]|0}while(j>>>0<(f[c>>2]|0)-k>>2>>>0)}k=a+20|0;a=f[e>>2]|0;c=(f[g>>2]|0)-a|0;if(c>>>0<4294967292){Bk(e,c+4|0,0);o=f[e>>2]|0;p=o+c|0;q=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;b[p>>0]=q;b[p+1>>0]=q>>8;b[p+2>>0]=q>>16;b[p+3>>0]=q>>24;return}else{o=a;p=o+c|0;q=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;b[p>>0]=q;b[p+1>>0]=q>>8;b[p+2>>0]=q>>16;b[p+3>>0]=q>>24;return}}function Sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=a+8|0;e=f[d>>2]|0;g=f[a>>2]|0;h=g;do if(e-g>>2>>>0>=b>>>0){i=a+4|0;j=f[i>>2]|0;k=j-g>>2;l=k>>>0>>0;m=l?k:b;n=j;if(m|0){j=m;m=h;while(1){f[m>>2]=f[c>>2];j=j+-1|0;if(!j)break;else m=m+4|0}}if(!l){m=h+(b<<2)|0;if((m|0)==(n|0))return;else{o=i;p=n+(~((n+-4-m|0)>>>2)<<2)|0;break}}else{m=b-k|0;j=m;q=n;while(1){f[q>>2]=f[c>>2];j=j+-1|0;if(!j)break;else q=q+4|0}o=i;p=n+(m<<2)|0;break}}else{q=g;if(!g)r=e;else{j=a+4|0;k=f[j>>2]|0;if((k|0)!=(h|0))f[j>>2]=k+(~((k+-4-g|0)>>>2)<<2);br(q);f[d>>2]=0;f[j>>2]=0;f[a>>2]=0;r=0}if(b>>>0>1073741823)mq(a);j=r>>1;q=r>>2>>>0<536870911?(j>>>0>>0?b:j):1073741823;if(q>>>0>1073741823)mq(a);j=dn(q<<2)|0;k=a+4|0;f[k>>2]=j;f[a>>2]=j;f[d>>2]=j+(q<<2);q=b;l=j;while(1){f[l>>2]=f[c>>2];q=q+-1|0;if(!q)break;else l=l+4|0}o=k;p=j+(b<<2)|0}while(0);f[o>>2]=p;return}function Tf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=Qg(a,b,c,d,g)|0;i=f[e>>2]|0;j=f[d>>2]|0;k=f[g>>2]|0;g=f[k>>2]|0;l=(f[k+4>>2]|0)-g>>3;if(l>>>0<=i>>>0)mq(k);m=g;if(l>>>0<=j>>>0)mq(k);if((f[m+(i<<3)>>2]|0)>>>0>=(f[m+(j<<3)>>2]|0)>>>0){n=h;return n|0}f[d>>2]=i;f[e>>2]=j;j=f[d>>2]|0;e=f[c>>2]|0;if(l>>>0<=j>>>0)mq(k);if(l>>>0<=e>>>0)mq(k);if((f[m+(j<<3)>>2]|0)>>>0>=(f[m+(e<<3)>>2]|0)>>>0){n=h+1|0;return n|0}f[c>>2]=j;f[d>>2]=e;e=f[c>>2]|0;d=f[b>>2]|0;if(l>>>0<=e>>>0)mq(k);if(l>>>0<=d>>>0)mq(k);if((f[m+(e<<3)>>2]|0)>>>0>=(f[m+(d<<3)>>2]|0)>>>0){n=h+2|0;return n|0}f[b>>2]=e;f[c>>2]=d;d=f[b>>2]|0;c=f[a>>2]|0;if(l>>>0<=d>>>0)mq(k);if(l>>>0<=c>>>0)mq(k);if((f[m+(d<<3)>>2]|0)>>>0>=(f[m+(c<<3)>>2]|0)>>>0){n=h+3|0;return n|0}f[a>>2]=d;f[b>>2]=c;n=h+4|0;return n|0}function Uf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=b[c>>0]|0;e=b[c+1>>0]|0;g=b[c+2>>0]|0;c=((d&255^318)+239^e&255)+239^g&255;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(c>>>0>>0)l=c;else l=(c>>>0)%(h>>>0)|0;else l=c&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(c|0);if(!(n|(m&j|0)==(l|0))){i=0;o=23;break}if(((n?(n=k+8|0,(b[n>>0]|0)==d<<24>>24):0)?(b[n+1>>0]|0)==e<<24>>24:0)?(b[n+2>>0]|0)==g<<24>>24:0){i=k;o=23;break}k=f[k>>2]|0;if(!k){i=0;o=23;break}}if((o|0)==23)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(c|0)){k=p+8|0;if(((b[k>>0]|0)==d<<24>>24?(b[k+1>>0]|0)==e<<24>>24:0)?(b[k+2>>0]|0)==g<<24>>24:0){i=p;o=23;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=23;break}}p=f[p>>2]|0;if(!p){i=0;o=23;break}}if((o|0)==23)return i|0;return 0}function Vf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=u;u=u+16|0;c=b;d=a+36|0;e=a+4|0;g=a+8|0;h=(f[g>>2]|0)-(f[e>>2]|0)>>2;i=a+40|0;j=f[i>>2]|0;k=f[d>>2]|0;l=j-k>>2;m=k;k=j;if(h>>>0<=l>>>0){if(h>>>0>>0?(j=m+(h<<2)|0,(j|0)!=(k|0)):0){m=k;do{k=m+-4|0;f[i>>2]=k;n=f[k>>2]|0;f[k>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);m=f[i>>2]|0}while((m|0)!=(j|0))}}else ng(d,h-l|0);if((f[g>>2]|0)==(f[e>>2]|0)){o=1;u=b;return o|0}l=a+52|0;h=a+48|0;j=0;while(1){Xa[f[(f[a>>2]|0)+56>>2]&15](c,a,j);m=(f[d>>2]|0)+(j<<2)|0;i=f[c>>2]|0;f[c>>2]=0;n=f[m>>2]|0;f[m>>2]=i;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);n=f[c>>2]|0;f[c>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);n=f[(f[d>>2]|0)+(j<<2)>>2]|0;if(!n){o=0;p=19;break}if(j>>>0<(f[l>>2]|0)>>>0?f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0:0)Pp(n);j=j+1|0;if(j>>>0>=(f[g>>2]|0)-(f[e>>2]|0)>>2>>>0){o=1;p=19;break}}if((p|0)==19){u=b;return o|0}return 0}function Wf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=u;u=u+16|0;e=d+4|0;g=d;Nh(f[c+12>>2]|0,b)|0;h=f[c+8>>2]|0;a:do if(h|0){i=b+16|0;j=b+4|0;k=h;while(1){l=k;if(!(nf(0,b,l+8|0)|0)){m=0;break}n=l+20|0;o=(f[l+24>>2]|0)-(f[n>>2]|0)|0;Nh(o,b)|0;l=f[n>>2]|0;n=i;p=f[n+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[n>>2]|0)>>>0>0)){f[g>>2]=f[j>>2];f[e>>2]=f[g>>2];ye(b,e,l,l+o|0)|0}k=f[k>>2]|0;if(!k)break a}u=d;return m|0}while(0);Nh(f[c+32>>2]|0,b)|0;e=f[c+28>>2]|0;if(!e){m=1;u=d;return m|0}else q=e;while(1){e=q;if(!(nf(0,b,e+8|0)|0)){m=0;r=10;break}Wf(a,b,f[e+20>>2]|0)|0;q=f[q>>2]|0;if(!q){m=1;r=10;break}}if((r|0)==10){u=d;return m|0}return 0}function Xf(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+8|0;i=a+12|0;j=f[h>>2]|0;if((f[i>>2]|0)==(j|0)){k=dn(76)|0;pn(k,b);l=k;f[g>>2]=l;k=f[i>>2]|0;if(k>>>0<(f[a+16>>2]|0)>>>0){f[g>>2]=0;f[k>>2]=l;f[i>>2]=k+4;m=g}else{yg(h,g);m=g}g=f[m>>2]|0;f[m>>2]=0;if(!g){u=c;return 1}Va[f[(f[g>>2]|0)+4>>2]&127](g);u=c;return 1}g=f[j>>2]|0;f[d>>2]=b;j=g+4|0;m=g+8|0;h=f[m>>2]|0;if((h|0)==(f[g+12>>2]|0))Ci(j,d);else{f[h>>2]=b;f[m>>2]=h+4}h=f[d>>2]|0;b=g+16|0;k=g+20|0;g=f[k>>2]|0;i=f[b>>2]|0;l=g-i>>2;a=i;if((h|0)<(l|0)){n=a;o=h}else{i=h+1|0;f[e>>2]=-1;p=g;if(i>>>0<=l>>>0)if(i>>>0>>0?(g=a+(i<<2)|0,(g|0)!=(p|0)):0){f[k>>2]=p+(~((p+-4-g|0)>>>2)<<2);q=h;r=a}else{q=h;r=a}else{kh(b,i-l|0,e);q=f[d>>2]|0;r=f[b>>2]|0}n=r;o=q}f[n+(o<<2)>>2]=((f[m>>2]|0)-(f[j>>2]|0)>>2)+-1;u=c;return 1}function Yf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=c;e=b;g=d-e|0;h=g>>2;i=a+8|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(h>>>0>j-k>>2>>>0){m=k;if(!k)n=j;else{j=a+4|0;o=f[j>>2]|0;if((o|0)!=(l|0))f[j>>2]=o+(~((o+-4-k|0)>>>2)<<2);br(m);f[i>>2]=0;f[j>>2]=0;f[a>>2]=0;n=0}if(h>>>0>1073741823)mq(a);j=n>>1;m=n>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;if(m>>>0>1073741823)mq(a);j=dn(m<<2)|0;n=a+4|0;f[n>>2]=j;f[a>>2]=j;f[i>>2]=j+(m<<2);if((g|0)<=0)return;Rg(j|0,b|0,g|0)|0;f[n>>2]=j+(g>>>2<<2);return}g=a+4|0;a=f[g>>2]|0;j=a-k>>2;k=h>>>0>j>>>0;h=k?b+(j<<2)|0:c;c=a;j=a;if((h|0)==(b|0))p=l;else{a=h+-4-e|0;e=b;b=l;while(1){f[b>>2]=f[e>>2];e=e+4|0;if((e|0)==(h|0))break;else b=b+4|0}p=l+((a>>>2)+1<<2)|0}if(k){k=d-h|0;if((k|0)<=0)return;Rg(j|0,h|0,k|0)|0;f[g>>2]=(f[g>>2]|0)+(k>>>2<<2);return}else{if((p|0)==(c|0))return;f[g>>2]=c+(~((c+-4-p|0)>>>2)<<2);return}}function Zf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;g=u;u=u+96|0;h=g+40|0;i=g;Gm(h,d);we(i,c,d);th(h,i);sj(i+24|0,f[i+28>>2]|0);Dj(i+12|0,f[i+16>>2]|0);sj(i,f[i+4>>2]|0);Si(a,h,e);if(!(f[a>>2]|0)){e=a+4|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);f[c+40>>2]=f[h+40>>2];f[c+44>>2]=f[h+44>>2];f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}f[h>>2]=2968;sj(h+28|0,f[h+32>>2]|0);Dj(h+16|0,f[h+20>>2]|0);sj(h+4|0,f[h+8>>2]|0);u=g;return}function _f(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=f[b>>2]|0;d=f[b+4>>2]|0;e=f[b+8>>2]|0;b=((c^318)+239^d)+239^e;g=f[a+4>>2]|0;if(!g){h=0;return h|0}i=g+-1|0;j=(i&g|0)==0;if(!j)if(b>>>0>>0)k=b;else k=(b>>>0)%(g>>>0)|0;else k=b&i;l=f[(f[a>>2]|0)+(k<<2)>>2]|0;if(!l){h=0;return h|0}a=f[l>>2]|0;if(!a){h=0;return h|0}if(j){j=a;while(1){l=f[j+4>>2]|0;m=(l|0)==(b|0);if(!(m|(l&i|0)==(k|0))){h=0;n=23;break}if(((m?(f[j+8>>2]|0)==(c|0):0)?(f[j+12>>2]|0)==(d|0):0)?(f[j+16>>2]|0)==(e|0):0){h=j;n=23;break}j=f[j>>2]|0;if(!j){h=0;n=23;break}}if((n|0)==23)return h|0}else o=a;while(1){a=f[o+4>>2]|0;if((a|0)==(b|0)){if(((f[o+8>>2]|0)==(c|0)?(f[o+12>>2]|0)==(d|0):0)?(f[o+16>>2]|0)==(e|0):0){h=o;n=23;break}}else{if(a>>>0>>0)p=a;else p=(a>>>0)%(g>>>0)|0;if((p|0)!=(k|0)){h=0;n=23;break}}o=f[o>>2]|0;if(!o){h=0;n=23;break}}if((n|0)==23)return h|0;return 0}function $f(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=u;u=u+16|0;g=e;if(!(ih(a,c,d)|0)){h=0;u=e;return h|0}if((b[(f[a+8>>2]|0)+24>>0]|0)!=3){h=0;u=e;return h|0}i=f[c+48>>2]|0;c=dn(32)|0;f[g>>2]=c;f[g+8>>2]=-2147483616;f[g+4>>2]=17;j=c;k=12932;l=j+17|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[c+17>>0]=0;c=i+16|0;k=f[c>>2]|0;if(k){j=c;l=k;a:while(1){k=l;while(1){if((f[k+16>>2]|0)>=(d|0))break;m=f[k+4>>2]|0;if(!m){n=j;break a}else k=m}l=f[k>>2]|0;if(!l){n=k;break}else j=k}if(((n|0)!=(c|0)?(f[n+16>>2]|0)<=(d|0):0)?(d=n+20|0,(sh(d,g)|0)!=0):0)o=yk(d,g,-1)|0;else p=12}else p=12;if((p|0)==12)o=yk(i,g,-1)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if((o|0)<1){h=0;u=e;return h|0}tp(a+40|0,o);h=1;u=e;return h|0}function ag(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=c;g=d-e|0;h=a+8|0;i=f[h>>2]|0;j=f[a>>2]|0;k=j;if(g>>>0>(i-j|0)>>>0){if(!j)l=i;else{i=a+4|0;if((f[i>>2]|0)!=(k|0))f[i>>2]=k;br(k);f[h>>2]=0;f[i>>2]=0;f[a>>2]=0;l=0}if((g|0)<0)mq(a);i=l<<1;m=l>>>0<1073741823?(i>>>0>>0?g:i):2147483647;if((m|0)<0)mq(a);i=dn(m)|0;l=a+4|0;f[l>>2]=i;f[a>>2]=i;f[h>>2]=i+m;if((c|0)==(d|0))return;else{n=c;o=i}do{b[o>>0]=b[n>>0]|0;n=n+1|0;o=(f[l>>2]|0)+1|0;f[l>>2]=o}while((n|0)!=(d|0));return}n=a+4|0;a=(f[n>>2]|0)-j|0;j=g>>>0>a>>>0;g=c+a|0;a=j?g:d;if((a|0)==(c|0))p=k;else{o=c;c=k;while(1){b[c>>0]=b[o>>0]|0;o=o+1|0;if((o|0)==(a|0))break;else c=c+1|0}p=k+(a-e)|0}if(!j){if((f[n>>2]|0)==(p|0))return;f[n>>2]=p;return}if((a|0)==(d|0))return;a=g;g=f[n>>2]|0;do{b[g>>0]=b[a>>0]|0;a=a+1|0;g=(f[n>>2]|0)+1|0;f[n>>2]=g}while((a|0)!=(d|0));return}function bg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=c>>>1&1431655765|c<<1&-1431655766;c=d>>>2&858993459|d<<2&-858993460;d=c>>>4&252645135|c<<4&-252645136;c=d>>>8&16711935|d<<8&-16711936;d=32-b|0;e=(c>>>16|c<<16)>>>d;c=e-(e>>>1&1431655765)|0;g=(c>>>2&858993459)+(c&858993459)|0;c=(X((g>>>4)+g&252645135,16843009)|0)>>>24;g=b-c|0;h=f[a>>2]|0;i=h;j=Tn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;g=h;f[g>>2]=j;f[g+4>>2]=I;g=h+8|0;h=g;j=Tn(f[h>>2]|0,f[h+4>>2]|0,c|0,0)|0;c=g;f[c>>2]=j;f[c+4>>2]=I;c=a+28|0;j=f[c>>2]|0;g=32-j|0;h=a+24|0;do if((g|0)>=(b|0)){i=-1>>>d<>2]&~i|i&e<>2]=k;i=j+b|0;f[c>>2]=i;if((i|0)!=32)return;i=a+16|0;l=f[i>>2]|0;if((l|0)==(f[a+20>>2]|0)){Ci(a+12|0,h);m=0;n=0;break}else{f[l>>2]=k;f[i>>2]=l+4;m=0;n=0;break}}else{l=-1>>>j<>2]&~l|l&e<>2]=i;l=a+16|0;k=f[l>>2]|0;if((k|0)==(f[a+20>>2]|0))Ci(a+12|0,h);else{f[k>>2]=i;f[l>>2]=k+4}k=b-g|0;m=k;n=-1>>>(32-k|0)&e>>>g}while(0);f[h>>2]=n;f[c>>2]=m;return}function cg(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=c&255;g=(d|0)!=0;a:do if(g&(a&3|0)!=0){h=c&255;i=a;j=d;while(1){if((b[i>>0]|0)==h<<24>>24){k=i;l=j;m=6;break a}n=i+1|0;o=j+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){i=n;j=o}else{q=n;r=o;s=p;m=5;break}}}else{q=a;r=d;s=g;m=5}while(0);if((m|0)==5)if(s){k=q;l=r;m=6}else{t=q;u=0}b:do if((m|0)==6){q=c&255;if((b[k>>0]|0)==q<<24>>24){t=k;u=l}else{r=X(e,16843009)|0;c:do if(l>>>0>3){s=k;g=l;while(1){d=f[s>>2]^r;if((d&-2139062144^-2139062144)&d+-16843009|0)break;d=s+4|0;a=g+-4|0;if(a>>>0>3){s=d;g=a}else{v=d;w=a;m=11;break c}}x=s;y=g}else{v=k;w=l;m=11}while(0);if((m|0)==11)if(!w){t=v;u=0;break}else{x=v;y=w}while(1){if((b[x>>0]|0)==q<<24>>24){t=x;u=y;break b}r=x+1|0;y=y+-1|0;if(!y){t=r;u=0;break}else x=r}}}while(0);return (u|0?t:0)|0}function dg(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=e;do if((d|0)==(e|0)){h=a+8|0;i=f[h>>2]|0;j=a+12|0;k=f[j>>2]|0;l=k;if(i>>>0>>0){k=i;m=((l-k>>2)+1|0)/2|0;n=i+(m<<2)|0;o=k-d|0;k=o>>2;p=n+(0-k<<2)|0;if(!k){q=n;r=i}else{Xl(p|0,d|0,o|0)|0;q=p;r=f[h>>2]|0}f[c>>2]=q;f[h>>2]=r+(m<<2);s=q;break}m=l-g>>1;l=(m|0)==0?1:m;if(l>>>0>1073741823){m=ra(8)|0;Wo(m,14941);f[m>>2]=6944;va(m|0,1080,114)}m=dn(l<<2)|0;p=m;o=m+((l+3|0)>>>2<<2)|0;n=o;k=m+(l<<2)|0;if((d|0)==(i|0)){t=n;u=d}else{l=o;m=n;v=d;do{f[l>>2]=f[v>>2];l=m+4|0;m=l;v=v+4|0}while((v|0)!=(i|0));t=m;u=f[a>>2]|0}f[a>>2]=p;f[c>>2]=n;f[h>>2]=t;f[j>>2]=k;if(!u)s=o;else{br(u);s=f[c>>2]|0}}else s=d;while(0);f[s+-4>>2]=f[b>>2];f[c>>2]=(f[c>>2]|0)+-4;return}function eg(a,c){a=a|0;c=c|0;var d=0,e=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;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+4|0;if((f[i>>2]|0)==-1){j=0;u=d;return j|0}k=f[a+8>>2]|0;l=c+16|0;m=l;n=f[m>>2]|0;o=f[m+4>>2]|0;if(!((o|0)>0|(o|0)==0&n>>>0>0)){m=(f[a+12>>2]|0)-k|0;p=c+4|0;f[g>>2]=f[p>>2];f[e>>2]=f[g>>2];ye(c,e,k,k+m|0)|0;m=l;k=f[m>>2]|0;q=f[m+4>>2]|0;m=a+20|0;if((q|0)>0|(q|0)==0&k>>>0>0){r=q;s=k;t=g}else{f[g>>2]=f[p>>2];f[e>>2]=f[g>>2];ye(c,e,m,m+4|0)|0;m=l;r=f[m+4>>2]|0;s=f[m>>2]|0;t=g}}else{r=o;s=n;t=g}b[h>>0]=f[i>>2];if(!((r|0)>0|(r|0)==0&s>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}j=1;u=d;return j|0}function fg(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0,w=0,x=0,y=0,z=0,A=0;e=u;u=u+16|0;g=e+4|0;h=e;i=a+8|0;a=f[i>>2]|0;j=f[a+40>>2]|0;k=_q((j|0)>-1?j:-1)|0;l=c+4|0;m=f[l>>2]|0;n=f[c>>2]|0;if((m|0)==(n|0)){$q(k);u=e;return 1}o=d+16|0;p=d+4|0;q=k+j|0;j=0;r=n;n=a;s=a;a=m;while(1){m=f[r+(j<<2)>>2]|0;if(!(b[n+84>>0]|0))t=f[(f[n+68>>2]|0)+(m<<2)>>2]|0;else t=m;m=s+48|0;v=f[m>>2]|0;w=f[m+4>>2]|0;m=s+40|0;x=f[m>>2]|0;y=on(x|0,f[m+4>>2]|0,t|0,0)|0;m=Tn(y|0,I|0,v|0,w|0)|0;Rg(k|0,(f[f[s>>2]>>2]|0)+m|0,x|0)|0;x=o;m=f[x+4>>2]|0;if((m|0)>0|(m|0)==0&(f[x>>2]|0)>>>0>0){z=r;A=a}else{f[h>>2]=f[p>>2];f[g>>2]=f[h>>2];ye(d,g,k,q)|0;z=f[c>>2]|0;A=f[l>>2]|0}x=j+1|0;if(x>>>0>=A-z>>2>>>0)break;m=f[i>>2]|0;j=x;r=z;n=m;s=m;a=A}$q(k);u=e;return 1}function gg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=(f[b>>2]|0)*3|0;if((d|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}b=f[a+12>>2]|0;h=f[b+12>>2]|0;if((f[h+(d<<2)>>2]|0)==-1){e=0;g=d;f[c>>2]=g;return e|0}i=f[b>>2]|0;b=f[a+152>>2]|0;if((f[b+(f[i+(d<<2)>>2]<<2)>>2]|0)==-1){a=d+1|0;j=((a>>>0)%3|0|0)==0?d+-2|0:a;if((j|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}if((f[h+(j<<2)>>2]|0)==-1){e=0;g=j;f[c>>2]=g;return e|0}if((f[b+(f[i+(j<<2)>>2]<<2)>>2]|0)==-1){a=j+1|0;k=((a>>>0)%3|0|0)==0?j+-2|0:a;if((k|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}if((f[h+(k<<2)>>2]|0)==-1){e=0;g=k;f[c>>2]=g;return e|0}if((f[b+(f[i+(k<<2)>>2]<<2)>>2]|0)==-1){i=k+1|0;e=1;g=((i>>>0)%3|0|0)==0?k+-2|0:i;f[c>>2]=g;return e|0}else l=k}else l=j}else l=d;while(1){d=(((l>>>0)%3|0|0)==0?2:-1)+l|0;if((d|0)==-1)break;j=f[h+(d<<2)>>2]|0;if((j|0)==-1)break;d=j+(((j>>>0)%3|0|0)==0?2:-1)|0;if((d|0)==-1)break;else l=d}e=0;g=(((l>>>0)%3|0|0)==0?2:-1)+l|0;f[c>>2]=g;return e|0}function hg(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=a+4|0;g=f[e>>2]|0;if(!g){f[c>>2]=e;h=e;return h|0}e=b[d+11>>0]|0;i=e<<24>>24<0;j=i?f[d+4>>2]|0:e&255;e=i?f[d>>2]|0:d;d=a+4|0;a=g;while(1){g=a+16|0;i=b[g+11>>0]|0;k=i<<24>>24<0;l=k?f[a+20>>2]|0:i&255;i=l>>>0>>0;m=i?l:j;if((m|0)!=0?(n=Pk(e,k?f[g>>2]|0:g,m)|0,(n|0)!=0):0)if((n|0)<0)o=8;else o=10;else if(j>>>0>>0)o=8;else o=10;if((o|0)==8){o=0;n=f[a>>2]|0;if(!n){o=9;break}else{p=a;q=n}}else if((o|0)==10){o=0;n=j>>>0>>0?j:l;if((n|0)!=0?(l=Pk(k?f[g>>2]|0:g,e,n)|0,(l|0)!=0):0){if((l|0)>=0){o=16;break}}else o=12;if((o|0)==12?(o=0,!i):0){o=16;break}r=a+4|0;i=f[r>>2]|0;if(!i){o=15;break}else{p=r;q=i}}d=p;a=q}if((o|0)==9){f[c>>2]=a;h=a;return h|0}else if((o|0)==15){f[c>>2]=a;h=r;return h|0}else if((o|0)==16){f[c>>2]=a;h=d;return h|0}return 0}function ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0;d=u;u=u+32|0;e=d+24|0;g=d+16|0;h=d+8|0;i=d;j=a+4|0;k=f[j>>2]|0;l=f[b>>2]|0;m=f[b+4>>2]|0;b=f[c>>2]|0;n=f[c+4>>2]|0;c=b-l<<3;f[j>>2]=k-m+n+c;j=(f[a>>2]|0)+(k>>>5<<2)|0;a=k&31;k=j;if((m|0)!=(a|0)){f[e>>2]=l;f[e+4>>2]=m;f[g>>2]=b;f[g+4>>2]=n;f[h>>2]=k;f[h+4>>2]=a;ke(i,e,g,h);u=d;return}h=n-m+c|0;c=l;if((h|0)>0){if(!m){o=h;p=j;q=0;r=l;s=c}else{l=32-m|0;n=(h|0)<(l|0)?h:l;g=-1>>>(l-n|0)&-1<>2]=f[j>>2]&~g|f[c>>2]&g;g=n+m|0;l=c+4|0;o=h-n|0;p=j+(g>>>5<<2)|0;q=g&31;r=l;s=l}l=(o|0)/32|0;Xl(p|0,r|0,l<<2|0)|0;r=o-(l<<5)|0;o=p+(l<<2)|0;p=o;if((r|0)>0){g=-1>>>(32-r|0);f[o>>2]=f[o>>2]&~g|f[s+(l<<2)>>2]&g;t=r;v=p}else{t=q;v=p}}else{t=m;v=k}f[i>>2]=v;f[i+4>>2]=t;u=d;return}function jg(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=u;u=u+16|0;h=g;i=c+4|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;j=dn(16)|0;f[h>>2]=j;f[h+8>>2]=-2147483632;f[h+4>>2]=15;k=j;l=12916;m=k+15|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[j+15>>0]=0;j=yk(i,h,-1)|0;if((b[h+11>>0]|0)<0)br(f[h>>2]|0);switch(j|0){case -1:{if((Yh(i)|0)==10)n=6;else n=5;break}case 1:{n=5;break}default:n=6}if((n|0)==5){j=dn(68)|0;Xo(j);o=j}else if((n|0)==6){n=dn(64)|0;Gp(n);o=n}vo(o,d);Ad(a,o,i,e);if(f[a>>2]|0){p=f[o>>2]|0;q=p+4|0;r=f[q>>2]|0;Va[r&127](o);u=g;return}e=a+4|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);f[c+40>>2]=f[o+52>>2];f[c+44>>2]=f[o+60>>2];f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;p=f[o>>2]|0;q=p+4|0;r=f[q>>2]|0;Va[r&127](o);u=g;return}function kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=a+8|0;d=f[c>>2]|0;e=a+12|0;g=f[e>>2]|0;h=g;do if((d|0)==(g|0)){i=a+4|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(j>>>0>k>>>0){m=j;n=((m-l>>2)+1|0)/-2|0;o=j+(n<<2)|0;p=d-m|0;m=p>>2;if(!m)q=j;else{Xl(o|0,j|0,p|0)|0;q=f[i>>2]|0}p=o+(m<<2)|0;f[c>>2]=p;f[i>>2]=q+(n<<2);r=p;break}p=h-l>>1;l=(p|0)==0?1:p;if(l>>>0>1073741823){p=ra(8)|0;Wo(p,14941);f[p>>2]=6944;va(p|0,1080,114)}p=dn(l<<2)|0;n=p;m=p+(l>>>2<<2)|0;o=m;s=p+(l<<2)|0;if((j|0)==(d|0)){t=o;u=k}else{k=m;m=o;l=j;do{f[k>>2]=f[l>>2];k=m+4|0;m=k;l=l+4|0}while((l|0)!=(d|0));t=m;u=f[a>>2]|0}f[a>>2]=n;f[i>>2]=o;f[c>>2]=t;f[e>>2]=s;if(!u)r=t;else{br(u);r=f[c>>2]|0}}else r=d;while(0);f[r>>2]=f[b>>2];f[c>>2]=(f[c>>2]|0)+4;return}function lg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=a+12|0;h=f[g>>2]|0;$j(f[a+4>>2]|0,(f[h+56>>2]|0)-(f[h+52>>2]|0)>>2);h=a+76|0;a=f[h>>2]|0;if(!a){i=f[(f[g>>2]|0)+64>>2]|0;g=(f[i+4>>2]|0)-(f[i>>2]|0)>>2;i=(g>>>0)/3|0;if(g>>>0<=2){j=1;u=b;return j|0}g=0;while(1){f[d>>2]=g*3;f[c>>2]=f[d>>2];g=g+1|0;if(!(Tb(e,c)|0)){j=0;k=10;break}if((g|0)>=(i|0)){j=1;k=10;break}}if((k|0)==10){u=b;return j|0}}else{i=f[a>>2]|0;if((f[a+4>>2]|0)==(i|0)){j=1;u=b;return j|0}a=0;g=i;while(1){f[d>>2]=f[g+(a<<2)>>2];f[c>>2]=f[d>>2];a=a+1|0;if(!(Tb(e,c)|0)){j=0;k=10;break}i=f[h>>2]|0;g=f[i>>2]|0;if(a>>>0>=(f[i+4>>2]|0)-g>>2>>>0){j=1;k=10;break}}if((k|0)==10){u=b;return j|0}}return 0}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+12|0;i=a+4|0;j=f[i>>2]|0;if((j|0)==(f[a+8>>2]|0)){Ci(a,h);k=f[i>>2]|0}else{f[j>>2]=f[h>>2];l=j+4|0;f[i>>2]=l;k=l}l=f[a>>2]|0;f[g>>2]=k-l;k=b+16|0;j=k;m=f[j+4>>2]|0;if(!((m|0)>0|(m|0)==0&(f[j>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=f[a>>2]|0;m=f[g>>2]|0;g=k;k=f[g+4>>2]|0;if((k|0)>0|(k|0)==0&(f[g>>2]|0)>>>0>0){n=j;o=e}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,j,j+m|0)|0;n=f[a>>2]|0;o=e}}else{n=l;o=e}e=f[i>>2]|0;if((e|0)==(n|0)){f[h>>2]=0;p=a+16|0;f[p>>2]=0;u=c;return}f[i>>2]=e+(~((e+-4-n|0)>>>2)<<2);f[h>>2]=0;p=a+16|0;f[p>>2]=0;u=c;return}function ng(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(d-g>>2>>>0>=b>>>0){hj(g|0,0,b<<2|0)|0;f[e>>2]=g+(b<<2);return}i=f[a>>2]|0;j=g-i>>2;g=j+b|0;k=i;if(g>>>0>1073741823)mq(a);l=d-i|0;d=l>>1;m=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(m)if(m>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{n=dn(m<<2)|0;break}else n=0;while(0);d=n+(j<<2)|0;hj(d|0,0,b<<2|0)|0;b=d;j=n+(m<<2)|0;m=n+(g<<2)|0;if((h|0)==(k|0)){o=b;p=i;q=h}else{i=h;h=b;b=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[b+-4>>2]=d;b=h+-4|0;h=b}while((i|0)!=(k|0));o=h;p=f[a>>2]|0;q=f[e>>2]|0}f[a>>2]=o;f[e>>2]=m;f[c>>2]=j;j=p;if((q|0)!=(j|0)){c=q;do{c=c+-4|0;q=f[c>>2]|0;f[c>>2]=0;if(q|0)Va[f[(f[q>>2]|0)+4>>2]&127](q)}while((c|0)!=(j|0))}if(!p)return;br(p);return}function og(a){a=a|0;lk(a);lk(a+32|0);lk(a+64|0);lk(a+96|0);lk(a+128|0);lk(a+160|0);lk(a+192|0);lk(a+224|0);lk(a+256|0);lk(a+288|0);lk(a+320|0);lk(a+352|0);lk(a+384|0);lk(a+416|0);lk(a+448|0);lk(a+480|0);lk(a+512|0);lk(a+544|0);lk(a+576|0);lk(a+608|0);lk(a+640|0);lk(a+672|0);lk(a+704|0);lk(a+736|0);lk(a+768|0);lk(a+800|0);lk(a+832|0);lk(a+864|0);lk(a+896|0);lk(a+928|0);lk(a+960|0);lk(a+992|0);lk(a+1024|0);return}function pg(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=$(h);var i=0,j=0,k=0,l=0,m=0,n=0;i=u;u=u+16|0;j=i;k=i+4|0;f[j>>2]=c;c=a+4|0;a=dn(32)|0;f[k>>2]=a;f[k+8>>2]=-2147483616;f[k+4>>2]=17;l=a;m=12932;n=l+17|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[a+17>>0]=0;Nj(wd(c,j)|0,k,d);if((b[k+11>>0]|0)<0)br(f[k>>2]|0);d=dn(32)|0;f[k>>2]=d;f[k+8>>2]=-2147483616;f[k+4>>2]=19;l=d;m=13005;n=l+19|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[d+19>>0]=0;ci(wd(c,j)|0,k,g,e);if((b[k+11>>0]|0)<0)br(f[k>>2]|0);e=dn(32)|0;f[k>>2]=e;f[k+8>>2]=-2147483616;f[k+4>>2]=18;l=e;m=13025;n=l+18|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[e+18>>0]=0;Lj(wd(c,j)|0,k,h);if((b[k+11>>0]|0)>=0){u=i;return}br(f[k>>2]|0);u=i;return}function qg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=c;e=b;g=d-e|0;h=g>>2;i=a+8|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(h>>>0<=j-k>>2>>>0){m=a+4|0;n=(f[m>>2]|0)-k>>2;o=h>>>0>n>>>0;p=o?b+(n<<2)|0:c;c=p;n=c-e|0;e=n>>2;if(e|0)Xl(k|0,b|0,n|0)|0;n=l+(e<<2)|0;if(o){o=d-c|0;if((o|0)<=0)return;Rg(f[m>>2]|0,p|0,o|0)|0;f[m>>2]=(f[m>>2]|0)+(o>>>2<<2);return}else{o=f[m>>2]|0;if((o|0)==(n|0))return;f[m>>2]=o+(~((o+-4-n|0)>>>2)<<2);return}}n=k;if(!k)q=j;else{j=a+4|0;o=f[j>>2]|0;if((o|0)!=(l|0))f[j>>2]=o+(~((o+-4-k|0)>>>2)<<2);br(n);f[i>>2]=0;f[j>>2]=0;f[a>>2]=0;q=0}if(h>>>0>1073741823)mq(a);j=q>>1;n=q>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;if(n>>>0>1073741823)mq(a);j=dn(n<<2)|0;h=a+4|0;f[h>>2]=j;f[a>>2]=j;f[i>>2]=j+(n<<2);if((g|0)<=0)return;Rg(j|0,b|0,g|0)|0;f[h>>2]=j+(g>>>2<<2);return}function rg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0,v=0.0;e=u;u=u+16|0;g=e;h=c+1|0;f[g>>2]=0;i=g+4|0;f[i>>2]=0;f[g+8>>2]=0;do if(h)if(h>>>0>1073741823)mq(g);else{j=dn(h<<2)|0;f[g>>2]=j;k=j+(h<<2)|0;f[g+8>>2]=k;hj(j|0,0,(c<<2)+4|0)|0;f[i>>2]=k;l=j;m=k;n=j;break}else{l=0;m=0;n=0}while(0);if((b|0)>0){g=0;do{j=l+(f[a+(g<<2)>>2]<<2)|0;f[j>>2]=(f[j>>2]|0)+1;g=g+1|0}while((g|0)!=(b|0))}o=+(b|0);if((c|0)<0){p=0;q=0.0}else{c=0;r=0.0;b=0;while(1){g=f[l+(b<<2)>>2]|0;s=+(g|0);if((g|0)>0){t=c+1|0;v=r+ +Fg(s/o)*s}else{t=c;v=r}b=b+1|0;if((b|0)==(h|0)){p=t;q=v;break}else{c=t;r=v}}}if(d|0)f[d>>2]=p;v=-q;p=~~v>>>0;d=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;if(!l){I=d;u=e;return p|0}if((m|0)!=(l|0))f[i>>2]=m+(~((m+-4-l|0)>>>2)<<2);br(n);I=d;u=e;return p|0}function sg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=a+12|0;h=f[g>>2]|0;$j(f[a+4>>2]|0,(f[h+28>>2]|0)-(f[h+24>>2]|0)>>2);h=a+76|0;a=f[h>>2]|0;if(!a){i=f[g>>2]|0;g=(f[i+4>>2]|0)-(f[i>>2]|0)>>2;i=(g>>>0)/3|0;if(g>>>0<=2){j=1;u=b;return j|0}g=0;while(1){f[d>>2]=g*3;f[c>>2]=f[d>>2];g=g+1|0;if(!(Wb(e,c)|0)){j=0;k=10;break}if((g|0)>=(i|0)){j=1;k=10;break}}if((k|0)==10){u=b;return j|0}}else{i=f[a>>2]|0;if((f[a+4>>2]|0)==(i|0)){j=1;u=b;return j|0}a=0;g=i;while(1){f[d>>2]=f[g+(a<<2)>>2];f[c>>2]=f[d>>2];a=a+1|0;if(!(Wb(e,c)|0)){j=0;k=10;break}i=f[h>>2]|0;g=f[i>>2]|0;if(a>>>0>=(f[i+4>>2]|0)-g>>2>>>0){j=1;k=10;break}}if((k|0)==10){u=b;return j|0}}return 0}function tg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e+4|0;h=e;i=dn(32)|0;f[a>>2]=i;f[a+4>>2]=c+4;c=a+8|0;b[c>>0]=0;f[i+16>>2]=f[d>>2];a=i+20|0;f[i+24>>2]=0;f[i+28>>2]=0;j=i+24|0;f[a>>2]=j;i=f[d+4>>2]|0;k=d+8|0;if((i|0)==(k|0)){b[c>>0]=1;u=e;return}d=j;j=i;while(1){i=j+16|0;f[h>>2]=d;f[g>>2]=f[h>>2];Wg(a,g,i,i)|0;i=f[j+4>>2]|0;if(!i){l=j+8|0;m=f[l>>2]|0;if((f[m>>2]|0)==(j|0))n=m;else{m=l;do{l=f[m>>2]|0;m=l+8|0;o=f[m>>2]|0}while((f[o>>2]|0)!=(l|0));n=o}}else{m=i;while(1){o=f[m>>2]|0;if(!o)break;else m=o}n=m}if((n|0)==(k|0))break;else j=n}b[c>>0]=1;u=e;return}function ug(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d;f[e>>2]=b;g=a+8|0;if(((f[a+12>>2]|0)-(f[g>>2]|0)>>2|0)<=(b|0))jh(g,b+1|0);h=f[(f[c>>2]|0)+56>>2]|0;do if((h|0)<5){i=a+20+(h*12|0)+4|0;j=f[i>>2]|0;if((j|0)==(f[a+20+(h*12|0)+8>>2]|0)){Ci(a+20+(h*12|0)|0,e);break}else{f[j>>2]=b;f[i>>2]=j+4;break}}while(0);b=f[c>>2]|0;h=f[e>>2]|0;f[b+60>>2]=h;e=(f[g>>2]|0)+(h<<2)|0;f[c>>2]=0;c=f[e>>2]|0;f[e>>2]=b;if(!c){u=d;return}b=c+88|0;e=f[b>>2]|0;f[b>>2]=0;if(e|0){b=f[e+8>>2]|0;if(b|0){h=e+12|0;if((f[h>>2]|0)!=(b|0))f[h>>2]=b;br(b)}br(e)}e=f[c+68>>2]|0;if(e|0){b=c+72|0;h=f[b>>2]|0;if((h|0)!=(e|0))f[b>>2]=h+(~((h+-4-e|0)>>>2)<<2);br(e)}e=c+64|0;h=f[e>>2]|0;f[e>>2]=0;if(h|0){e=f[h>>2]|0;if(e|0){b=h+4|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;br(e)}br(h)}br(c);u=d;return}function vg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0,w=0;d=u;u=u+48|0;e=d+16|0;g=d;h=d+32|0;i=a+28|0;j=f[i>>2]|0;f[h>>2]=j;k=a+20|0;l=(f[k>>2]|0)-j|0;f[h+4>>2]=l;f[h+8>>2]=b;f[h+12>>2]=c;b=l+c|0;l=a+60|0;f[g>>2]=f[l>>2];f[g+4>>2]=h;f[g+8>>2]=2;j=ro(Aa(146,g|0)|0)|0;a:do if((b|0)!=(j|0)){g=2;m=b;n=h;o=j;while(1){if((o|0)<0)break;m=m-o|0;p=f[n+4>>2]|0;q=o>>>0>p>>>0;r=q?n+8|0:n;s=g+(q<<31>>31)|0;t=o-(q?p:0)|0;f[r>>2]=(f[r>>2]|0)+t;p=r+4|0;f[p>>2]=(f[p>>2]|0)-t;f[e>>2]=f[l>>2];f[e+4>>2]=r;f[e+8>>2]=s;o=ro(Aa(146,e|0)|0)|0;if((m|0)==(o|0)){v=3;break a}else{g=s;n=r}}f[a+16>>2]=0;f[i>>2]=0;f[k>>2]=0;f[a>>2]=f[a>>2]|32;if((g|0)==2)w=0;else w=c-(f[n+4>>2]|0)|0}else v=3;while(0);if((v|0)==3){v=f[a+44>>2]|0;f[a+16>>2]=v+(f[a+48>>2]|0);a=v;f[i>>2]=a;f[k>>2]=a;w=c}u=d;return w|0}function wg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;f[a>>2]=5880;b=f[a+68>>2]|0;if(b|0){c=a+72|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+56>>2]|0;if(b|0){d=a+60|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+44>>2]|0;if(b|0){c=a+48|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+32>>2]|0;if(b|0){d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+20>>2]|0;if(b|0){c=a+24|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}Sh(a+8|0);b=a+4|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;b=a+40|0;d=f[b>>2]|0;if(d|0){c=a+44|0;e=f[c>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-4|0;f[c>>2]=e;i=f[e>>2]|0;f[e>>2]=0;if(i|0){Qi(i);br(i)}h=f[c>>2]|0}while((h|0)!=(d|0));g=f[b>>2]|0}br(g)}Qi(a);br(a);return}function xg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a+12|0;d=f[a>>2]|0;e=a+8|0;g=f[e>>2]|0;h=(g|0)==-1;if(!(b[c>>0]|0)){do if(((!h?(i=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(i|0)!=-1):0)?(f[(f[d>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)==0:0)?(j=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(j|0)!=-1):0)if(!((j>>>0)%3|0)){k=j+2|0;break}else{k=j+-1|0;break}else k=-1;while(0);f[e>>2]=k;return}k=g+1|0;if(((!h?(h=((k>>>0)%3|0|0)==0?g+-2|0:k,(h|0)!=-1):0)?(f[(f[d>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)==0:0)?(k=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(h<<2)>>2]|0,h=k+1|0,(k|0)!=-1):0){g=((h>>>0)%3|0|0)==0?k+-2|0:h;f[e>>2]=g;if((g|0)!=-1){if((g|0)!=(f[a+4>>2]|0))return;f[e>>2]=-1;return}}else f[e>>2]=-1;g=f[a+4>>2]|0;do if((((g|0)!=-1?(a=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(a|0)!=-1):0)?(f[(f[d>>2]|0)+(a>>>5<<2)>>2]&1<<(a&31)|0)==0:0)?(h=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(a<<2)>>2]|0,(h|0)!=-1):0)if(!((h>>>0)%3|0)){l=h+2|0;break}else{l=h+-1|0;break}else l=-1;while(0);f[e>>2]=l;b[c>>0]=0;return}function yg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d>>2;g=e+1|0;if(g>>>0>1073741823)mq(a);h=a+8|0;i=(f[h>>2]|0)-d|0;d=i>>1;j=i>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(j)if(j>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{k=dn(j<<2)|0;break}else k=0;while(0);d=k+(e<<2)|0;e=d;g=k+(j<<2)|0;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;j=d+4|0;b=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(b|0)){l=e;m=b;n=b}else{i=k;k=e;e=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[e+-4>>2]=d;e=k+-4|0;k=e}while((i|0)!=(b|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=j;f[h>>2]=g;g=m;if((n|0)!=(g|0)){h=n;do{h=h+-4|0;n=f[h>>2]|0;f[h>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n)}while((h|0)!=(g|0))}if(!m)return;br(m);return}function zg(a,c){a=a|0;c=c|0;var d=0,e=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;d=a+4|0;a=f[d>>2]|0;do if(a|0){e=b[c+11>>0]|0;g=e<<24>>24<0;h=g?f[c+4>>2]|0:e&255;e=g?f[c>>2]|0:c;g=d;i=a;a:while(1){j=i;while(1){k=j+16|0;l=b[k+11>>0]|0;m=l<<24>>24<0;n=m?f[j+20>>2]|0:l&255;l=h>>>0>>0?h:n;if((l|0)!=0?(o=Pk(m?f[k>>2]|0:k,e,l)|0,(o|0)!=0):0){if((o|0)>=0)break}else p=6;if((p|0)==6?(p=0,n>>>0>=h>>>0):0)break;n=f[j+4>>2]|0;if(!n){q=g;break a}else j=n}i=f[j>>2]|0;if(!i){q=j;break}else g=j}if((q|0)!=(d|0)){g=q+16|0;i=b[g+11>>0]|0;n=i<<24>>24<0;o=n?f[q+20>>2]|0:i&255;i=o>>>0>>0?o:h;if(i|0?(l=Pk(e,n?f[g>>2]|0:g,i)|0,l|0):0){if((l|0)<0)break;else r=q;return r|0}if(h>>>0>=o>>>0){r=q;return r|0}}}while(0);r=d;return r|0}function Ag(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if(((e-h|0)/12|0)>>>0>=b>>>0){i=b;j=h;do{f[j>>2]=f[c>>2];f[j+4>>2]=f[c+4>>2];f[j+8>>2]=f[c+8>>2];j=(f[g>>2]|0)+12|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=(h-i|0)/12|0;h=j+b|0;if(h>>>0>357913941)mq(a);k=(e-i|0)/12|0;i=k<<1;e=k>>>0<178956970?(i>>>0>>0?h:i):357913941;do if(e)if(e>>>0>357913941){i=ra(8)|0;Wo(i,14941);f[i>>2]=6944;va(i|0,1080,114)}else{l=dn(e*12|0)|0;break}else l=0;while(0);i=l+(j*12|0)|0;j=l+(e*12|0)|0;e=b;b=i;l=i;do{f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];b=l+12|0;l=b;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;b=(f[g>>2]|0)-e|0;c=i+(((b|0)/-12|0)*12|0)|0;if((b|0)>0)Rg(c|0,e|0,b|0)|0;f[a>>2]=c;f[g>>2]=l;f[d>>2]=j;if(!e)return;br(e);return}function Bg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d>>2;g=e+1|0;if(g>>>0>1073741823)mq(a);h=a+8|0;i=(f[h>>2]|0)-d|0;d=i>>1;j=i>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(j)if(j>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{k=dn(j<<2)|0;break}else k=0;while(0);d=k+(e<<2)|0;e=d;g=k+(j<<2)|0;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;j=d+4|0;b=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(b|0)){l=e;m=b;n=b}else{i=k;k=e;e=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[e+-4>>2]=d;e=k+-4|0;k=e}while((i|0)!=(b|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=j;f[h>>2]=g;g=m;if((n|0)!=(g|0)){h=n;do{h=h+-4|0;n=f[h>>2]|0;f[h>>2]=0;if(n|0){Qi(n);br(n)}}while((h|0)!=(g|0))}if(!m)return;br(m);return}function Cg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=f[b>>2]|0;g=f[a>>2]|0;h=f[d>>2]|0;d=f[h>>2]|0;i=(f[h+4>>2]|0)-d>>3;if(i>>>0<=e>>>0)mq(h);j=d;if(i>>>0<=g>>>0)mq(h);d=f[j+(e<<3)>>2]|0;k=f[c>>2]|0;if(i>>>0<=k>>>0)mq(h);l=j+(g<<3)|0;m=(f[j+(k<<3)>>2]|0)>>>0>>0;if(d>>>0<(f[l>>2]|0)>>>0){if(m){f[a>>2]=k;f[c>>2]=g;n=1;return n|0}f[a>>2]=e;f[b>>2]=g;d=f[c>>2]|0;if(i>>>0<=d>>>0)mq(h);if((f[j+(d<<3)>>2]|0)>>>0>=(f[l>>2]|0)>>>0){n=1;return n|0}f[b>>2]=d;f[c>>2]=g;n=2;return n|0}if(!m){n=0;return n|0}f[b>>2]=k;f[c>>2]=e;e=f[b>>2]|0;c=f[a>>2]|0;if(i>>>0<=e>>>0)mq(h);if(i>>>0<=c>>>0)mq(h);if((f[j+(e<<3)>>2]|0)>>>0>=(f[j+(c<<3)>>2]|0)>>>0){n=1;return n|0}f[a>>2]=e;f[b>>2]=c;n=2;return n|0}function Dg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=u;u=u+96|0;g=e+40|0;h=e;Am(g,c);we(h,b,c);th(g,h);sj(h+24|0,f[h+28>>2]|0);Dj(h+12|0,f[h+16>>2]|0);sj(h,f[h+4>>2]|0);Si(a,g,d);f[g>>2]=2968;sj(g+28|0,f[g+32>>2]|0);Dj(g+16|0,f[g+20>>2]|0);sj(g+4|0,f[g+8>>2]|0);u=e;return}function Eg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a=u;u=u+16|0;e=a;if(!b){g=0;u=a;return g|0}h=b+96|0;i=b+100|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;b=f[i>>2]|0;j=f[h>>2]|0;k=(b-j|0)/12|0;l=j;j=b;if(k>>>0>=c>>>0){if(k>>>0>c>>>0?(b=l+(c*12|0)|0,(b|0)!=(j|0)):0)f[i>>2]=j+(~(((j+-12-b|0)>>>0)/12|0)*12|0);if(!c){g=1;u=a;return g|0}}else Ag(h,c-k|0,e);k=0;b=f[h>>2]|0;while(1){j=k*3|0;l=f[d+(j<<2)>>2]|0;m=f[d+(j+1<<2)>>2]|0;n=f[d+(j+2<<2)>>2]|0;j=((f[i>>2]|0)-b|0)/12|0;o=k;k=k+1|0;if(o>>>0>>0){p=b;q=b}else{f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ag(h,k-j|0,e);j=f[h>>2]|0;p=j;q=j}f[p+(o*12|0)>>2]=l;f[p+(o*12|0)+4>>2]=m;f[p+(o*12|0)+8>>2]=n;if((k|0)==(c|0)){g=1;break}else b=q}u=a;return g|0}function Fg(a){a=+a;var b=0,c=0,d=0,e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,t=0.0;p[s>>3]=a;b=f[s>>2]|0;c=f[s+4>>2]|0;d=(c|0)<0;do if(d|c>>>0<1048576){if((b|0)==0&(c&2147483647|0)==0){e=-1.0/(a*a);break}if(d){e=(a-a)/0.0;break}else{p[s>>3]=a*18014398509481984.0;g=f[s+4>>2]|0;h=-1077;i=g;j=f[s>>2]|0;k=g;l=9;break}}else if(c>>>0<=2146435071)if((b|0)==0&0==0&(c|0)==1072693248)e=0.0;else{h=-1023;i=c;j=b;k=c;l=9}else e=a;while(0);if((l|0)==9){l=i+614242|0;f[s>>2]=j;f[s+4>>2]=(l&1048575)+1072079006;a=+p[s>>3]+-1.0;m=a*a*.5;n=a/(a+2.0);o=n*n;q=o*o;p[s>>3]=a-m;j=f[s+4>>2]|0;f[s>>2]=0;f[s+4>>2]=j;r=+p[s>>3];t=a-r-m+n*(m+(q*(q*(q*.15313837699209373+.22222198432149784)+.3999999999940942)+o*(q*(q*(q*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));q=r*1.4426950407214463;o=+(h+(l>>>20)|0);m=q+o;e=m+(q+(o-m)+(t*1.4426950407214463+(t+r)*1.6751713164886512e-10))}return +e}function Gg(a,c){a=a|0;c=c|0;var d=0,e=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;d=u;u=u+16|0;e=d;g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=17;h=g;i=12804;j=h+17|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[g+17>>0]=0;g=c+16|0;i=f[g>>2]|0;if(i){h=g;j=i;a:while(1){i=j;while(1){if((f[i+16>>2]|0)>=(a|0))break;k=f[i+4>>2]|0;if(!k){l=h;break a}else i=k}j=f[i>>2]|0;if(!j){l=i;break}else h=i}if(((l|0)!=(g|0)?(f[l+16>>2]|0)<=(a|0):0)?(a=l+20|0,(sh(a,e)|0)!=0):0)m=a;else n=10}else n=10;if((n|0)==10)m=c;c=yk(m,e,-1)|0;if((b[e+11>>0]|0)>=0){o=(c|0)==-1;p=c>>>0>6;q=p?-2:c;r=o?-1:q;u=d;return r|0}br(f[e>>2]|0);o=(c|0)==-1;p=c>>>0>6;q=p?-2:c;r=o?-1:q;u=d;return r|0}function Hg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;g=f[c>>2]|0;f[c>>2]=0;f[e>>2]=g;ug(a,b,e);g=f[e>>2]|0;f[e>>2]=0;if(g|0){e=g+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){h=c+12|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;br(e)}br(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;h=f[e>>2]|0;if((h|0)!=(c|0))f[e>>2]=h+(~((h+-4-c|0)>>>2)<<2);br(c)}c=g+64|0;h=f[c>>2]|0;f[c>>2]=0;if(h|0){c=f[h>>2]|0;if(c|0){e=h+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;br(c)}br(h)}br(g)}g=a+84|0;h=a+88|0;a=f[h>>2]|0;c=f[g>>2]|0;e=a-c>>2;if((e|0)>(b|0)){u=d;return}i=b+1|0;b=a;if(i>>>0>e>>>0){nh(g,i-e|0);u=d;return}if(i>>>0>=e>>>0){u=d;return}e=c+(i<<2)|0;if((e|0)==(b|0)){u=d;return}f[h>>2]=b+(~((b+-4-e|0)>>>2)<<2);u=d;return}function Ig(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;g=a+4|0;f[g>>2]=c;f[a+8>>2]=f[c+56>>2];h=f[a+184>>2]|0;i=a+188|0;j=f[i>>2]|0;if((j|0)!=(h|0))f[i>>2]=j+(~((j+-4-h|0)>>>2)<<2);h=f[c+48>>2]|0;c=dn(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=14285;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(sh(h,e)|0)==0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);h=f[(f[g>>2]|0)+48>>2]|0;if(c){c=(Yh(h)|0)>5&1;b[a+352>>0]=c;u=d;return 1}c=dn(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=14285;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(Oj(h,e,0)|0)&1;b[a+352>>0]=c;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return 1}function Jg(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;c=a+108|0;d=(f[a+112>>2]|0)-(f[c>>2]|0)|0;e=(d|0)/12|0;g=a+4|0;Nh(e,f[(f[g>>2]|0)+44>>2]|0)|0;if(!d)return 1;d=0;a=0;while(1){i=f[c>>2]|0;j=i+(d*12|0)+4|0;Nh((f[j>>2]|0)-a|0,f[(f[g>>2]|0)+44>>2]|0)|0;Nh((f[j>>2]|0)-(f[i+(d*12|0)>>2]|0)|0,f[(f[g>>2]|0)+44>>2]|0)|0;d=d+1|0;if(d>>>0>=e>>>0)break;else a=f[j>>2]|0}li(f[(f[g>>2]|0)+44>>2]|0,e,0,0)|0;a=0;do{d=f[(f[g>>2]|0)+44>>2]|0;j=d+16|0;i=f[j+4>>2]|0;if((i|0)>0|(i|0)==0&(f[j>>2]|0)>>>0>0){j=f[d+12>>2]|0;d=j+4|0;i=f[d>>2]|0;k=b[(f[c>>2]|0)+(a*12|0)+8>>0]&1;l=i>>>3;m=i&7;i=(f[j>>2]|0)+l|0;b[i>>0]=(1<>0]|0);i=(f[j>>2]|0)+l|0;b[i>>0]=k<>0]|0);f[d>>2]=(f[d>>2]|0)+1}a=a+1|0}while(a>>>0>>0);Qf(f[(f[g>>2]|0)+44>>2]|0);return 1}function Kg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;g=a+4|0;f[g>>2]=c;f[a+8>>2]=f[c+56>>2];h=f[a+184>>2]|0;i=a+188|0;j=f[i>>2]|0;if((j|0)!=(h|0))f[i>>2]=j+(~((j+-4-h|0)>>>2)<<2);h=f[c+48>>2]|0;c=dn(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=14285;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(sh(h,e)|0)==0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);h=f[(f[g>>2]|0)+48>>2]|0;if(c){c=(Yh(h)|0)>5&1;b[a+288>>0]=c;u=d;return 1}c=dn(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=14285;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(Oj(h,e,0)|0)&1;b[a+288>>0]=c;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return 1}function Lg(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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;g=u;u=u+32|0;h=g+16|0;i=g+8|0;j=g;k=d-e|0;d=a+8|0;if((k|0)>0){a=0-e|0;l=i+4|0;m=j+4|0;n=h+4|0;o=k;do{k=b+(o<<2)|0;p=k+(a<<2)|0;q=c+(o<<2)|0;r=f[k+4>>2]|0;s=f[p>>2]|0;t=f[p+4>>2]|0;f[i>>2]=f[k>>2];f[l>>2]=r;f[j>>2]=s;f[m>>2]=t;Dd(h,d,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[n>>2];o=o-e|0}while((o|0)>0)}o=e>>>0>1073741823?-1:e<<2;e=_q(o)|0;hj(e|0,0,o|0)|0;o=f[b+4>>2]|0;n=f[e>>2]|0;m=f[e+4>>2]|0;f[i>>2]=f[b>>2];f[i+4>>2]=o;f[j>>2]=n;f[j+4>>2]=m;Dd(h,d,i,j);f[c>>2]=f[h>>2];f[c+4>>2]=f[h+4>>2];$q(e);u=g;return 1}function Mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+32|0;d=c+12|0;e=c;g=f[b+100>>2]|0;h=f[b+96>>2]|0;b=g-h|0;i=(b|0)/12|0;f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;k=h;do if(b)if(i>>>0>357913941)mq(d);else{l=dn(b)|0;f[d>>2]=l;f[d+8>>2]=l+(i*12|0);hj(l|0,0,b|0)|0;f[j>>2]=l+b;m=l;break}else m=0;while(0);f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;if((g|0)!=(h|0)){h=e+4|0;g=e+8|0;b=0;do{l=k+(b*12|0)|0;f[e>>2]=f[l>>2];f[e+4>>2]=f[l+4>>2];f[e+8>>2]=f[l+8>>2];f[m+(b*12|0)>>2]=f[e>>2];f[m+(b*12|0)+4>>2]=f[h>>2];f[m+(b*12|0)+8>>2]=f[g>>2];b=b+1|0}while(b>>>0>>0)}Cj(a,d);a=f[d>>2]|0;if(!a){u=c;return}d=f[j>>2]|0;if((d|0)!=(a|0))f[j>>2]=d+(~(((d+-12-a|0)>>>0)/12|0)*12|0);br(a);u=c;return}function Ng(a,c){a=a|0;c=c|0;var d=0,e=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;if(c>>>0>4294967279)mq(a);d=a+11|0;e=b[d>>0]|0;g=e<<24>>24<0;if(g){h=f[a+4>>2]|0;i=(f[a+8>>2]&2147483647)+-1|0}else{h=e&255;i=10}j=h>>>0>c>>>0?h:c;c=j>>>0<11;k=c?10:(j+16&-16)+-1|0;do if((k|0)!=(i|0)){do if(c){j=f[a>>2]|0;if(g){l=0;m=j;n=a;o=13}else{Lo(a,j,(e&255)+1|0)|0;br(j);o=16}}else{j=k+1|0;p=dn(j)|0;if(g){l=1;m=f[a>>2]|0;n=p;o=13;break}else{Lo(p,a,(e&255)+1|0)|0;q=p;r=j;s=a+4|0;o=15;break}}while(0);if((o|0)==13){j=a+4|0;Lo(n,m,(f[j>>2]|0)+1|0)|0;br(m);if(l){q=n;r=k+1|0;s=j;o=15}else o=16}if((o|0)==15){f[a+8>>2]=r|-2147483648;f[s>>2]=h;f[a>>2]=q;break}else if((o|0)==16){b[d>>0]=h;break}}while(0);return}function Og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=f[b>>2]|0;if((c|0)==-1){d=-1;return d|0}b=f[(f[a+24>>2]|0)+(c<<2)>>2]|0;if((b|0)==-1){d=0;return d|0}c=a+12|0;a=0;e=0;g=b;a:while(1){b:do if(e){h=a+1|0;i=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((i|0)==-1){d=h;j=15;break a}k=f[(f[c>>2]|0)+(i<<2)>>2]|0;if((k|0)==-1){d=h;j=15;break a}if(!((k>>>0)%3|0)){l=k+2|0;m=h;break}else{l=k+-1|0;m=h;break}}else{h=a;k=g;while(1){i=h+1|0;n=k+1|0;o=((n>>>0)%3|0|0)==0?k+-2|0:n;if((o|0)==-1){l=b;m=i;break b}n=f[(f[c>>2]|0)+(o<<2)>>2]|0;o=n+1|0;if((n|0)==-1){l=b;m=i;break b}k=((o>>>0)%3|0|0)==0?n+-2|0:o;if((k|0)==-1){l=b;m=i;break b}if((k|0)==(b|0)){d=i;j=15;break a}else h=i}}while(0);if((l|0)==-1){d=m;j=15;break}else{a=m;e=1;g=l}}if((j|0)==15)return d|0;return 0}function Pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+8|0;Cg(a,a+4|0,d,c)|0;e=a+12|0;if((e|0)==(b|0))return;g=f[c>>2]|0;c=f[g>>2]|0;h=(f[g+4>>2]|0)-c>>3;i=c;c=e;e=d;a:while(1){d=f[c>>2]|0;j=f[e>>2]|0;if(h>>>0<=d>>>0){k=5;break}if(h>>>0<=j>>>0){k=7;break}l=i+(d<<3)|0;if((f[l>>2]|0)>>>0<(f[i+(j<<3)>>2]|0)>>>0){m=e;n=c;o=j;while(1){f[n>>2]=o;if((m|0)==(a|0)){p=a;break}j=m+-4|0;o=f[j>>2]|0;if(h>>>0<=o>>>0){k=11;break a}if((f[l>>2]|0)>>>0>=(f[i+(o<<3)>>2]|0)>>>0){p=m;break}else{q=m;m=j;n=q}}f[p>>2]=d}n=c+4|0;if((n|0)==(b|0)){k=3;break}else{m=c;c=n;e=m}}if((k|0)==3)return;else if((k|0)==5)mq(g);else if((k|0)==7)mq(g);else if((k|0)==11)mq(g)}function Qg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=Cg(a,b,c,e)|0;h=f[d>>2]|0;i=f[c>>2]|0;j=f[e>>2]|0;e=f[j>>2]|0;k=(f[j+4>>2]|0)-e>>3;if(k>>>0<=h>>>0)mq(j);l=e;if(k>>>0<=i>>>0)mq(j);if((f[l+(h<<3)>>2]|0)>>>0>=(f[l+(i<<3)>>2]|0)>>>0){m=g;return m|0}f[c>>2]=h;f[d>>2]=i;i=f[c>>2]|0;d=f[b>>2]|0;if(k>>>0<=i>>>0)mq(j);if(k>>>0<=d>>>0)mq(j);if((f[l+(i<<3)>>2]|0)>>>0>=(f[l+(d<<3)>>2]|0)>>>0){m=g+1|0;return m|0}f[b>>2]=i;f[c>>2]=d;d=f[b>>2]|0;c=f[a>>2]|0;if(k>>>0<=d>>>0)mq(j);if(k>>>0<=c>>>0)mq(j);if((f[l+(d<<3)>>2]|0)>>>0>=(f[l+(c<<3)>>2]|0)>>>0){m=g+2|0;return m|0}f[a>>2]=d;f[b>>2]=c;m=g+3|0;return m|0}function Rg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return Da(a|0,c|0,d|0)|0;e=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return e|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}h=g&-4|0;d=h-64|0;while((a|0)<=(d|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(h|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{h=g-4|0;while((a|0)<(h|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return e|0}function Sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0;c=u;u=u+16|0;d=c+4|0;e=c;f[a>>2]=1216;g=a+4|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;f[g+16>>2]=0;f[g+20>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;f[d>>2]=b;b=a+4|0;g=a+8|0;Ci(b,d);h=f[d>>2]|0;i=a+20|0;j=f[i>>2]|0;k=a+16|0;a=f[k>>2]|0;l=j-a>>2;m=a;if((h|0)<(l|0)){n=m;o=h;p=f[g>>2]|0;q=f[b>>2]|0;r=p-q|0;s=r>>2;t=s+-1|0;v=n+(o<<2)|0;f[v>>2]=t;u=c;return}a=h+1|0;f[e>>2]=-1;w=j;if(a>>>0<=l>>>0)if(a>>>0>>0?(j=m+(a<<2)|0,(j|0)!=(w|0)):0){f[i>>2]=w+(~((w+-4-j|0)>>>2)<<2);x=h;y=m}else{x=h;y=m}else{kh(k,a-l|0,e);x=f[d>>2]|0;y=f[k>>2]|0}n=y;o=x;p=f[g>>2]|0;q=f[b>>2]|0;r=p-q|0;s=r>>2;t=s+-1|0;v=n+(o<<2)|0;f[v>>2]=t;u=c;return}function Tg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=a+4|0;c=f[b>>2]|0;d=(f[c+12>>2]|0)-(f[c+8>>2]|0)|0;c=d>>2;a:do if((d|0)>0){e=0;while(1){if(!(Ra[f[(f[a>>2]|0)+36>>2]&127](a,e)|0)){g=0;break}e=e+1|0;h=f[b>>2]|0;i=(f[h+12>>2]|0)-(f[h+8>>2]|0)>>2;if((e|0)>=(i|0)){j=i;break a}}return g|0}else j=c;while(0);c=a+20|0;b=a+24|0;d=f[b>>2]|0;e=f[c>>2]|0;i=d-e>>2;h=e;e=d;if(j>>>0<=i>>>0){if(j>>>0>>0?(d=h+(j<<2)|0,(d|0)!=(e|0)):0)f[b>>2]=e+(~((e+-4-d|0)>>>2)<<2)}else oi(c,j-i|0);i=f[a+12>>2]|0;j=f[a+8>>2]|0;a=j;if((i|0)==(j|0)){g=1;return g|0}d=i-j>>2;j=0;do{i=f[a+(j<<2)>>2]|0;e=f[i+8>>2]|0;b=f[i+4>>2]|0;i=b;if((e|0)!=(b|0)?(h=f[c>>2]|0,k=e-b>>2,f[h+(f[i>>2]<<2)>>2]=j,k>>>0>1):0){b=1;do{f[h+(f[i+(b<<2)>>2]<<2)>>2]=j;b=b+1|0}while(b>>>0>>0)}j=j+1|0}while(j>>>0>>0);g=1;return g|0}function Ug(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=f[c+88>>2]|0;if(!d){e=0;return e|0}if((f[d>>2]|0)!=1){e=0;return e|0}g=d+8|0;d=f[g>>2]|0;f[a+4>>2]=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;i=a+8|0;j=c+24|0;c=b[j>>0]|0;k=c<<24>>24;l=a+12|0;m=f[l>>2]|0;n=f[i>>2]|0;o=m-n>>2;p=n;n=m;if(o>>>0>=k>>>0)if(o>>>0>k>>>0?(m=p+(k<<2)|0,(m|0)!=(n|0)):0){f[l>>2]=n+(~((n+-4-m|0)>>>2)<<2);q=c;r=d}else{q=c;r=d}else{oi(i,k-o|0);q=b[j>>0]|0;r=f[g>>2]|0}g=r+4|0;j=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;if(q<<24>>24>0){g=f[i>>2]|0;i=q<<24>>24;q=j;o=4;k=0;while(1){f[g+(k<<2)>>2]=q;o=o+4|0;k=k+1|0;d=r+o|0;c=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;if((k|0)>=(i|0)){s=c;break}else q=c}}else s=j;f[a+20>>2]=s;e=1;return e|0}function Vg(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;do if(!(qp(a,f[c+8>>2]|0,g)|0)){if(!(qp(a,f[c>>2]|0,g)|0)){h=f[a+8>>2]|0;Za[f[(f[h>>2]|0)+24>>2]&3](h,c,d,e,g);break}if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[c+32>>2]=e;i=c+44|0;if((f[i>>2]|0)==4)break;j=c+52|0;b[j>>0]=0;k=c+53|0;b[k>>0]=0;l=f[a+8>>2]|0;_a[f[(f[l>>2]|0)+20>>2]&3](l,c,d,d,1,g);if(b[k>>0]|0)if(!(b[j>>0]|0)){m=3;n=11}else o=3;else{m=4;n=11}if((n|0)==11){f[h>>2]=d;h=c+40|0;f[h>>2]=(f[h>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0){b[c+54>>0]=1;o=m}else o=m}f[i>>2]=o;break}if((e|0)==1)f[c+32>>2]=1}else Om(0,c,d,e);while(0);return}function Wg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e+12|0;h=e+8|0;i=e;f[i>>2]=f[b>>2];f[g>>2]=f[i>>2];i=zd(a,g,h,e+4|0,c)|0;c=f[i>>2]|0;if(c|0){j=c;u=e;return j|0}c=dn(40)|0;dj(c+16|0,d);dj(c+28|0,d+12|0);d=f[h>>2]|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=d;f[i>>2]=c;d=f[f[a>>2]>>2]|0;if(!d)k=c;else{f[a>>2]=d;k=f[i>>2]|0}Ae(f[a+4>>2]|0,k);k=a+8|0;f[k>>2]=(f[k>>2]|0)+1;j=c;u=e;return j|0}function Xg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e;h=a+4|0;f[h>>2]=0;if(!c){u=e;return}i=a+8|0;j=f[i>>2]|0;k=j<<5;if(k>>>0>>0){f[g>>2]=0;l=g+4|0;f[l>>2]=0;m=g+8|0;f[m>>2]=0;if((c|0)<0)mq(a);n=j<<6;j=c+31&-32;hi(g,k>>>0<1073741823?(n>>>0>>0?j:n):2147483647);n=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=n;g=f[h>>2]|0;f[h>>2]=c;f[l>>2]=g;g=f[i>>2]|0;f[i>>2]=f[m>>2];f[m>>2]=g;if(n|0)br(n);o=a}else{f[h>>2]=c;o=a}a=f[o>>2]|0;o=a;h=a;a=c>>>5;n=a<<2;if(!(b[d>>0]|0)){hj(h|0,0,n|0)|0;d=c&31;g=o+(a<<2)|0;if(!d){u=e;return}f[g>>2]=f[g>>2]&~(-1>>>(32-d|0));u=e;return}else{hj(h|0,-1,n|0)|0;n=c&31;c=o+(a<<2)|0;if(!n){u=e;return}f[c>>2]=f[c>>2]|-1>>>(32-n|0);u=e;return}}function Yg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){n=a+88|0;fd(n,b);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;n=a+88|0;fd(n,b);u=c;return 1}function Zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){n=a+108|0;fd(n,b);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;n=a+108|0;fd(n,b);u=c;return 1}function _g(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=a+32|0;d=f[a+64>>2]|0;e=(Qa[f[(f[d>>2]|0)+40>>2]&127](d)|0)+56|0;d=f[e>>2]|0;li(c,(((f[d+100>>2]|0)-(f[d+96>>2]|0)|0)/12|0)*3|0,0,1)|0;d=a+68|0;e=f[d>>2]|0;g=(f[a+72>>2]|0)-e|0;if((g|0)<=0){Qf(c);return}i=a+48|0;j=a+44|0;a=(g>>>2)+-1|0;g=e;while(1){e=f[g+(a<<2)>>2]|0;k=f[3124+(e<<2)>>2]|0;l=i;m=f[l+4>>2]|0;if((m|0)>0|(m|0)==0&(f[l>>2]|0)>>>0>0?(l=f[j>>2]|0,171>>>e&1|0):0){m=l+4|0;n=0;o=f[m>>2]|0;do{p=o>>>3;q=o&7;r=(f[l>>2]|0)+p|0;b[r>>0]=(1<>0]|0);r=(f[l>>2]|0)+p|0;b[r>>0]=(e>>>n&1)<>0]|0);o=(f[m>>2]|0)+1|0;f[m>>2]=o;n=n+1|0}while((n|0)!=(k|0))}k=a+-1|0;if((k|0)<=-1)break;a=k;g=f[d>>2]|0}Qf(c);return}function $g(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+48|0;h=g;i=g+32|0;if(!c){j=0;u=g;return j|0}Cn(h);do if((Tl(c,0)|0)!=-1){if(d){if(!(Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0)){k=0;break}Va[f[(f[c>>2]|0)+20>>2]&127](c)}Dg(i,a,c,h);l=(f[i>>2]|0)==0;m=i+4|0;if((b[m+11>>0]|0)<0)br(f[m>>2]|0);if(l){l=f[h>>2]|0;m=h+4|0;ag(e,l,l+((f[m>>2]|0)-l)|0);k=(f[m>>2]|0)-(f[h>>2]|0)|0}else k=0}else k=0;while(0);e=h+12|0;i=f[e>>2]|0;f[e>>2]=0;if(i|0)br(i);i=f[h>>2]|0;if(i|0){e=h+4|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;br(i)}j=k;u=g;return j|0}function ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=u;u=u+16|0;d=c;e=f[(f[a>>2]|0)+8>>2]|0;g=a+8|0;h=a+12|0;i=(f[h>>2]|0)-(f[g>>2]|0)>>2;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;Xa[e&15](a,i,d);i=f[d>>2]|0;f[d>>2]=0;if(!i){k=f[h>>2]|0;l=f[g>>2]|0;m=k-l|0;n=m>>2;o=n+-1|0;u=c;return o|0}d=i+88|0;a=f[d>>2]|0;f[d>>2]=0;if(a|0){d=f[a+8>>2]|0;if(d|0){e=a+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;br(d)}br(a)}a=f[i+68>>2]|0;if(a|0){d=i+72|0;e=f[d>>2]|0;if((e|0)!=(a|0))f[d>>2]=e+(~((e+-4-a|0)>>>2)<<2);br(a)}a=i+64|0;e=f[a>>2]|0;f[a>>2]=0;if(e|0){a=f[e>>2]|0;if(a|0){d=e+4|0;if((f[d>>2]|0)!=(a|0))f[d>>2]=a;br(a)}br(e)}br(i);k=f[h>>2]|0;l=f[g>>2]|0;m=k-l|0;n=m>>2;o=n+-1|0;u=c;return o|0}function bh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(b[a+352>>0]|0)return 1;c=a+8|0;d=f[c>>2]|0;e=(f[d+12>>2]|0)-(f[d+8>>2]|0)|0;d=e>>2;g=a+172|0;si(g,d+-1|0);if(!((d|0)!=1&(e|0)>0))return 1;e=a+12|0;a=0;h=0;while(1){i=f[(f[(f[c>>2]|0)+8>>2]|0)+(a<<2)>>2]|0;if(!(f[i+56>>2]|0))j=h;else{k=f[g>>2]|0;f[k+(h*136|0)>>2]=a;l=f[k+(h*136|0)+104>>2]|0;m=k+(h*136|0)+108|0;n=f[m>>2]|0;if((n|0)!=(l|0))f[m>>2]=n+(~((n+-4-l|0)>>>2)<<2);l=f[e>>2]|0;$j(k+(h*136|0)+104|0,(f[l+4>>2]|0)-(f[l>>2]|0)>>2);l=f[g>>2]|0;f[l+(h*136|0)+128>>2]=0;zc(l+(h*136|0)+4|0,f[c>>2]|0,f[e>>2]|0,i)|0;j=h+1|0}a=a+1|0;if((a|0)>=(d|0))break;else h=j}return 1}function ch(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(b[a+288>>0]|0)return 1;c=a+8|0;d=f[c>>2]|0;e=(f[d+12>>2]|0)-(f[d+8>>2]|0)|0;d=e>>2;g=a+172|0;si(g,d+-1|0);if(!((d|0)!=1&(e|0)>0))return 1;e=a+12|0;a=0;h=0;while(1){i=f[(f[(f[c>>2]|0)+8>>2]|0)+(a<<2)>>2]|0;if(!(f[i+56>>2]|0))j=h;else{k=f[g>>2]|0;f[k+(h*136|0)>>2]=a;l=f[k+(h*136|0)+104>>2]|0;m=k+(h*136|0)+108|0;n=f[m>>2]|0;if((n|0)!=(l|0))f[m>>2]=n+(~((n+-4-l|0)>>>2)<<2);l=f[e>>2]|0;$j(k+(h*136|0)+104|0,(f[l+4>>2]|0)-(f[l>>2]|0)>>2);l=f[g>>2]|0;f[l+(h*136|0)+128>>2]=0;zc(l+(h*136|0)+4|0,f[c>>2]|0,f[e>>2]|0,i)|0;j=h+1|0}a=a+1|0;if((a|0)>=(d|0))break;else h=j}return 1}function dh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;if(d-g>>3>>>0>=b>>>0){h=b;i=g;do{j=i;f[j>>2]=0;f[j+4>>2]=0;i=(f[e>>2]|0)+8|0;f[e>>2]=i;h=h+-1|0}while((h|0)!=0);return}h=f[a>>2]|0;i=g-h>>3;g=i+b|0;if(g>>>0>536870911)mq(a);j=d-h|0;h=j>>2;d=j>>3>>>0<268435455?(h>>>0>>0?g:h):536870911;do if(d)if(d>>>0>536870911){h=ra(8)|0;Wo(h,14941);f[h>>2]=6944;va(h|0,1080,114)}else{k=dn(d<<3)|0;break}else k=0;while(0);h=k+(i<<3)|0;i=k+(d<<3)|0;d=b;b=h;k=h;do{g=b;f[g>>2]=0;f[g+4>>2]=0;b=k+8|0;k=b;d=d+-1|0}while((d|0)!=0);d=f[a>>2]|0;b=(f[e>>2]|0)-d|0;g=h+(0-(b>>3)<<3)|0;if((b|0)>0)Rg(g|0,d|0,b|0)|0;f[a>>2]=g;f[e>>2]=k;f[c>>2]=i;if(!d)return;br(d);return}function eh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=u;u=u+16|0;g=e+4|0;h=e;i=e+8|0;j=a&255;b[i>>0]=j&127;do if(c>>>0>0|(c|0)==0&a>>>0>127){b[i>>0]=j|-128;k=d+16|0;l=f[k+4>>2]|0;if((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0){m=0;break}else{f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,i,i+1|0)|0;k=Wn(a|0,c|0,7)|0;m=eh(k,I,d)|0;break}}else{k=d+16|0;l=f[k+4>>2]|0;if((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0){m=0;break}f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,i,i+1|0)|0;n=1;u=e;return n|0}while(0);n=m;u=e;return n|0}function fh(a,b){a=a|0;b=b|0;var c=0;c=a+8|0;ef(c,b)|0;if((c|0)==(b|0)){f[a+92>>2]=f[b+84>>2];return}else{Yf(a+56|0,f[b+48>>2]|0,f[b+52>>2]|0);Yf(a+68|0,f[b+60>>2]|0,f[b+64>>2]|0);Yf(a+80|0,f[b+72>>2]|0,f[b+76>>2]|0);f[a+92>>2]=f[b+84>>2];qg(a+96|0,f[b+88>>2]|0,f[b+92>>2]|0);return}}function gh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;g=f[(f[(f[d+4>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;if((b|0)==-1)h=Ki(c,d)|0;else h=b;if((h|0)==-2)i=0;else{do if((Qa[f[(f[d>>2]|0)+8>>2]&127](d)|0)==1){Hf(a,d,h,c,e,514);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);c=dn(44)|0;f[c>>2]=1528;f[c+4>>2]=g;g=c+8|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[g+16>>2]=f[e+16>>2];f[g+20>>2]=f[e+20>>2];_j(c+32|0,e+24|0);f[c>>2]=1584;i=c}f[a>>2]=i;return}function hh(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=u;u=u+224|0;g=e+120|0;h=e+80|0;i=e;j=e+136|0;k=h;l=k+40|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(l|0));f[g>>2]=f[d>>2];if((qb(0,c,g,i,h)|0)<0)m=-1;else{if((f[a+76>>2]|0)>-1)n=gr(a)|0;else n=0;d=f[a>>2]|0;k=d&32;if((b[a+74>>0]|0)<1)f[a>>2]=d&-33;d=a+48|0;if(!(f[d>>2]|0)){l=a+44|0;o=f[l>>2]|0;f[l>>2]=j;p=a+28|0;f[p>>2]=j;q=a+20|0;f[q>>2]=j;f[d>>2]=80;r=a+16|0;f[r>>2]=j+80;j=qb(a,c,g,i,h)|0;if(!o)s=j;else{Sa[f[a+36>>2]&31](a,0,0)|0;t=(f[q>>2]|0)==0?-1:j;f[l>>2]=o;f[d>>2]=0;f[r>>2]=0;f[p>>2]=0;f[q>>2]=0;s=t}}else s=qb(a,c,g,i,h)|0;h=f[a>>2]|0;f[a>>2]=h|k;if(n|0)fr(a);m=(h&32|0)==0?s:-1}u=e;return m|0}function ih(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;if(!(fn(a,b,c)|0)){g=0;u=d;return g|0}if((Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0)<<24>>24==1?((f[(f[a+8>>2]|0)+28>>2]|0)+-1|0)>>>0>=6:0){g=0;u=d;return g|0}h=Gg(c,f[b+48>>2]|0)|0;Xa[f[(f[a>>2]|0)+48>>2]&15](e,a,h);h=a+36|0;b=f[e>>2]|0;f[e>>2]=0;c=f[h>>2]|0;f[h>>2]=b;if(!c){f[e>>2]=0;i=b}else{Va[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0;f[e>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);i=f[h>>2]|0}if(!i){g=1;u=d;return g|0}if(Ra[f[(f[a>>2]|0)+36>>2]&127](a,i)|0){g=1;u=d;return g|0}i=f[h>>2]|0;f[h>>2]=0;if(!i){g=1;u=d;return g|0}Va[f[(f[i>>2]|0)+4>>2]&127](i);g=1;u=d;return g|0}function jh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e>>2;h=d;if(g>>>0>>0){hf(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+(b<<2)|0;if((g|0)==(h|0))return;else i=h;do{h=i+-4|0;f[c>>2]=h;b=f[h>>2]|0;f[h>>2]=0;if(b|0){h=b+88|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){h=f[e+8>>2]|0;if(h|0){a=e+12|0;if((f[a>>2]|0)!=(h|0))f[a>>2]=h;br(h)}br(e)}e=f[b+68>>2]|0;if(e|0){h=b+72|0;a=f[h>>2]|0;if((a|0)!=(e|0))f[h>>2]=a+(~((a+-4-e|0)>>>2)<<2);br(e)}e=b+64|0;a=f[e>>2]|0;f[e>>2]=0;if(a|0){e=f[a>>2]|0;if(e|0){h=a+4|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;br(e)}br(a)}br(b)}i=f[c>>2]|0}while((i|0)!=(g|0));return}function kh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;i=h;if(e-h>>2>>>0>=b>>>0){j=b;k=i;while(1){f[k>>2]=f[c>>2];j=j+-1|0;if(!j)break;else k=k+4|0}f[g>>2]=i+(b<<2);return}i=f[a>>2]|0;k=h-i|0;h=k>>2;j=h+b|0;if(j>>>0>1073741823)mq(a);l=e-i|0;e=l>>1;m=l>>2>>>0<536870911?(e>>>0>>0?j:e):1073741823;do if(m)if(m>>>0>1073741823){e=ra(8)|0;Wo(e,14941);f[e>>2]=6944;va(e|0,1080,114)}else{e=dn(m<<2)|0;n=e;o=e;break}else{n=0;o=0}while(0);e=n+(h<<2)|0;h=n+(m<<2)|0;m=b;j=e;while(1){f[j>>2]=f[c>>2];m=m+-1|0;if(!m)break;else j=j+4|0}if((k|0)>0)Rg(o|0,i|0,k|0)|0;f[a>>2]=n;f[g>>2]=e+(b<<2);f[d>>2]=h;if(!i)return;br(i);return}function lh(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=(f[a>>2]|0)+1794895138|0;g=rp(f[a+8>>2]|0,e)|0;h=rp(f[a+12>>2]|0,e)|0;i=rp(f[a+16>>2]|0,e)|0;a:do if((g>>>0>>2>>>0?(j=c-(g<<2)|0,h>>>0>>0&i>>>0>>0):0)?((i|h)&3|0)==0:0){j=h>>>2;k=i>>>2;l=0;m=g;while(1){n=m>>>1;o=l+n|0;p=o<<1;q=p+j|0;r=rp(f[a+(q<<2)>>2]|0,e)|0;s=rp(f[a+(q+1<<2)>>2]|0,e)|0;if(!(s>>>0>>0&r>>>0<(c-s|0)>>>0)){t=0;break a}if(b[a+(s+r)>>0]|0){t=0;break a}r=bl(d,a+s|0)|0;if(!r)break;s=(r|0)<0;if((m|0)==1){t=0;break a}else{l=s?l:o;m=s?n:m-n|0}}m=p+k|0;l=rp(f[a+(m<<2)>>2]|0,e)|0;j=rp(f[a+(m+1<<2)>>2]|0,e)|0;if(j>>>0>>0&l>>>0<(c-j|0)>>>0)t=(b[a+(j+l)>>0]|0)==0?a+j|0:0;else t=0}else t=0;while(0);return t|0}function mh(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=u;u=u+64|0;i=h;j=f[a>>2]|0;k=a+(f[j+-8>>2]|0)|0;l=f[j+-4>>2]|0;f[i>>2]=e;f[i+4>>2]=a;f[i+8>>2]=c;f[i+12>>2]=g;g=i+16|0;c=i+20|0;a=i+24|0;j=i+28|0;m=i+32|0;n=i+40|0;o=g;p=o+36|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(p|0));d[g+36>>1]=0;b[g+38>>0]=0;a:do if(qp(l,e,0)|0){f[i+48>>2]=1;_a[f[(f[l>>2]|0)+20>>2]&3](l,i,k,k,1,0);q=(f[a>>2]|0)==1?k:0}else{Za[f[(f[l>>2]|0)+24>>2]&3](l,i,k,1,0);switch(f[i+36>>2]|0){case 0:{q=(f[n>>2]|0)==1&(f[j>>2]|0)==1&(f[m>>2]|0)==1?f[c>>2]|0:0;break a;break}case 1:break;default:{q=0;break a}}if((f[a>>2]|0)!=1?!((f[n>>2]|0)==0&(f[j>>2]|0)==1&(f[m>>2]|0)==1):0){q=0;break}q=f[g>>2]|0}while(0);u=h;return q|0}function nh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(d-g>>2>>>0>=b>>>0){i=b;j=h;while(1){f[j>>2]=1;i=i+-1|0;if(!i)break;else j=j+4|0}f[e>>2]=h+(b<<2);return}h=f[a>>2]|0;j=g-h|0;g=j>>2;i=g+b|0;if(i>>>0>1073741823)mq(a);k=d-h|0;d=k>>1;l=k>>2>>>0<536870911?(d>>>0>>0?i:d):1073741823;do if(l)if(l>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{d=dn(l<<2)|0;m=d;n=d;break}else{m=0;n=0}while(0);d=m+(g<<2)|0;g=m+(l<<2)|0;l=b;i=d;while(1){f[i>>2]=1;l=l+-1|0;if(!l)break;else i=i+4|0}if((j|0)>0)Rg(n|0,h|0,j|0)|0;f[a>>2]=m;f[e>>2]=d+(b<<2);f[c>>2]=g;if(!h)return;br(h);return}function oh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;if(!c){g=0;u=d;return g|0}h=a+84|0;i=f[h>>2]|0;j=a+88|0;k=f[j>>2]|0;if((k|0)!=(i|0))f[j>>2]=k+(~((k+-4-i|0)>>>2)<<2);f[h>>2]=0;f[j>>2]=0;f[a+92>>2]=0;if(i|0)br(i);i=a+72|0;j=f[i>>2]|0;h=a+76|0;if((f[h>>2]|0)!=(j|0))f[h>>2]=j;f[i>>2]=0;f[h>>2]=0;f[a+80>>2]=0;if(j|0)br(j);j=c+4|0;h=(f[j>>2]|0)-(f[c>>2]|0)>>2;b[e>>0]=0;Xg(a,h,e);h=c+24|0;i=c+28|0;k=(f[i>>2]|0)-(f[h>>2]|0)>>2;b[e>>0]=0;Xg(a+12|0,k,e);Sf(a+28|0,(f[j>>2]|0)-(f[c>>2]|0)>>2,5868);$j(a+52|0,(f[i>>2]|0)-(f[h>>2]|0)>>2);$j(a+40|0,(f[i>>2]|0)-(f[h>>2]|0)>>2);f[a+64>>2]=c;b[a+24>>0]=1;g=1;u=d;return g|0}function ph(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a+12|0;d=f[a>>2]|0;e=a+8|0;g=f[e>>2]|0;h=(g|0)==-1;if(!(b[c>>0]|0)){do if((!h?(i=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(i|0)!=-1):0)?(j=f[(f[d+12>>2]|0)+(i<<2)>>2]|0,(j|0)!=-1):0)if(!((j>>>0)%3|0)){k=j+2|0;break}else{k=j+-1|0;break}else k=-1;while(0);f[e>>2]=k;return}k=g+1|0;if((!h?(h=((k>>>0)%3|0|0)==0?g+-2|0:k,(h|0)!=-1):0)?(k=f[(f[d+12>>2]|0)+(h<<2)>>2]|0,h=k+1|0,(k|0)!=-1):0){g=((h>>>0)%3|0|0)==0?k+-2|0:h;f[e>>2]=g;if((g|0)!=-1){if((g|0)!=(f[a+4>>2]|0))return;f[e>>2]=-1;return}}else f[e>>2]=-1;g=f[a+4>>2]|0;do if(((g|0)!=-1?(a=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(a|0)!=-1):0)?(h=f[(f[d+12>>2]|0)+(a<<2)>>2]|0,(h|0)!=-1):0)if(!((h>>>0)%3|0)){l=h+2|0;break}else{l=h+-1|0;break}else l=-1;while(0);f[e>>2]=l;b[c>>0]=0;return}function qh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Id(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+20>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Id(a,e);return}function rh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+48|0;g=e;h=e+32|0;i=a+4|0;j=f[i>>2]|0;if(!j){k=0;u=e;return k|0}do if(c)if(Qa[f[(f[j>>2]|0)+16>>2]&127](j)|0){l=f[i>>2]|0;Va[f[(f[l>>2]|0)+20>>2]&127](l);break}else{k=0;u=e;return k|0}while(0);Cn(g);Si(h,f[a>>2]|0,g);a=(f[h>>2]|0)==0;i=h+4|0;if((b[i+11>>0]|0)<0)br(f[i>>2]|0);if(a){a=f[g>>2]|0;i=g+4|0;ag(d,a,a+((f[i>>2]|0)-a)|0);m=(f[i>>2]|0)-(f[g>>2]|0)|0}else m=0;i=g+12|0;a=f[i>>2]|0;f[i>>2]=0;if(a|0)br(a);a=f[g>>2]|0;if(a|0){i=g+4|0;if((f[i>>2]|0)!=(a|0))f[i>>2]=a;br(a)}k=m;u=e;return k|0}function sh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=f[a+4>>2]|0;if(!d){e=0;return e|0}a=b[c+11>>0]|0;g=a<<24>>24<0;h=g?f[c+4>>2]|0:a&255;a=g?f[c>>2]|0:c;c=d;while(1){d=c+16|0;g=b[d+11>>0]|0;i=g<<24>>24<0;j=i?f[c+20>>2]|0:g&255;g=j>>>0>>0;k=g?j:h;if((k|0)!=0?(l=Pk(a,i?f[d>>2]|0:d,k)|0,(l|0)!=0):0)if((l|0)<0)m=7;else m=8;else if(h>>>0>>0)m=7;else m=8;if((m|0)==7){m=0;n=c}else if((m|0)==8){m=0;l=h>>>0>>0?h:j;if((l|0)!=0?(j=Pk(i?f[d>>2]|0:d,a,l)|0,(j|0)!=0):0){if((j|0)>=0){e=1;m=14;break}}else m=10;if((m|0)==10?(m=0,!g):0){e=1;m=14;break}n=c+4|0}c=f[n>>2]|0;if(!c){e=0;m=14;break}}if((m|0)==14)return e|0;return 0}function th(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=u;u=u+16|0;d=c+12|0;e=c+8|0;g=c+4|0;h=c;i=a+4|0;j=(i|0)==(b|0);if(!j){f[g>>2]=f[b>>2];f[h>>2]=b+4;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Hc(i,e,d)}if(!j){f[g>>2]=f[b+12>>2];f[h>>2]=b+16;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Ac(a+16|0,e,d)}if(j){u=c;return}f[g>>2]=f[b+24>>2];f[h>>2]=b+28;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Hc(a+28|0,e,d);u=c;return}function uh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=u;u=u+16|0;g=e+4|0;h=e;di(g,a,b,c,d);d=f[g>>2]|0;if(!d){i=-1;f[g>>2]=0;u=e;return i|0}f[g>>2]=0;f[h>>2]=d;d=ah(a,h)|0;a=f[h>>2]|0;f[h>>2]=0;if(!a){i=d;f[g>>2]=0;u=e;return i|0}h=a+88|0;c=f[h>>2]|0;f[h>>2]=0;if(c|0){h=f[c+8>>2]|0;if(h|0){b=c+12|0;if((f[b>>2]|0)!=(h|0))f[b>>2]=h;br(h)}br(c)}c=f[a+68>>2]|0;if(c|0){h=a+72|0;b=f[h>>2]|0;if((b|0)!=(c|0))f[h>>2]=b+(~((b+-4-c|0)>>>2)<<2);br(c)}c=a+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){h=b+4|0;if((f[h>>2]|0)!=(c|0))f[h>>2]=c;br(c)}br(b)}br(a);i=d;f[g>>2]=0;u=e;return i|0}function vh(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=u;u=u+16|0;g=e+4|0;h=e;i=f[a+8>>2]|0;j=i+24|0;k=b[j>>0]|0;l=c+4|0;Nf(a,(f[l>>2]|0)-(f[c>>2]|0)>>2,k,d);d=f[a+32>>2]|0;a=(f[f[d>>2]>>2]|0)+(f[d+48>>2]|0)|0;d=f[c>>2]|0;c=f[l>>2]|0;if((d|0)==(c|0)){m=1;u=e;return m|0}l=i+84|0;n=i+68|0;o=0;p=d;while(1){d=f[p>>2]|0;if(!(b[l>>0]|0))q=f[(f[n>>2]|0)+(d<<2)>>2]|0;else q=d;f[h>>2]=q;d=b[j>>0]|0;f[g>>2]=f[h>>2];if(!(Pb(i,g,d,a+(o<<2)|0)|0)){m=0;r=7;break}p=p+4|0;if((p|0)==(c|0)){m=1;r=7;break}else o=o+k|0}if((r|0)==7){u=e;return m|0}return 0}function wh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;f[a>>2]=1392;b=a+72|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);c=f[a+60>>2]|0;if(c|0){b=a+64|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);br(c)}c=f[a+48>>2]|0;if(c|0)br(c);c=a+36|0;d=f[c>>2]|0;if(d|0){b=a+40|0;e=f[b>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-4|0;f[b>>2]=e;i=f[e>>2]|0;f[e>>2]=0;if(i|0)Va[f[(f[i>>2]|0)+4>>2]&127](i);h=f[b>>2]|0}while((h|0)!=(d|0));g=f[c>>2]|0}br(g)}f[a>>2]=1216;g=f[a+16>>2]|0;if(g|0){c=a+20|0;d=f[c>>2]|0;if((d|0)!=(g|0))f[c>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g)}g=f[a+4>>2]|0;if(!g)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(g|0))f[d>>2]=a+(~((a+-4-g|0)>>>2)<<2);br(g);return}function xh(a){a=a|0;tj(a+992|0);tj(a+960|0);tj(a+928|0);tj(a+896|0);tj(a+864|0);tj(a+832|0);tj(a+800|0);tj(a+768|0);tj(a+736|0);tj(a+704|0);tj(a+672|0);tj(a+640|0);tj(a+608|0);tj(a+576|0);tj(a+544|0);tj(a+512|0);tj(a+480|0);tj(a+448|0);tj(a+416|0);tj(a+384|0);tj(a+352|0);tj(a+320|0);tj(a+288|0);tj(a+256|0);tj(a+224|0);tj(a+192|0);tj(a+160|0);tj(a+128|0);tj(a+96|0);tj(a+64|0);tj(a+32|0);tj(a);return}function yh(a){a=a|0;rn(a);rn(a+32|0);rn(a+64|0);rn(a+96|0);rn(a+128|0);rn(a+160|0);rn(a+192|0);rn(a+224|0);rn(a+256|0);rn(a+288|0);rn(a+320|0);rn(a+352|0);rn(a+384|0);rn(a+416|0);rn(a+448|0);rn(a+480|0);rn(a+512|0);rn(a+544|0);rn(a+576|0);rn(a+608|0);rn(a+640|0);rn(a+672|0);rn(a+704|0);rn(a+736|0);rn(a+768|0);rn(a+800|0);rn(a+832|0);rn(a+864|0);rn(a+896|0);rn(a+928|0);rn(a+960|0);rn(a+992|0);return}function zh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;a=u;u=u+16|0;e=a;if((c|0)<0|((b|0)==0|(d|0)==0)){g=0;u=a;return g|0}h=f[b+8>>2]|0;if(((f[b+12>>2]|0)-h>>2|0)<=(c|0)){g=0;u=a;return g|0}i=b+4|0;if(!(f[i>>2]|0)){j=dn(52)|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;n[j+16>>2]=$(1.0);k=j+20|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;n[j+36>>2]=$(1.0);f[j+40>>2]=0;f[j+44>>2]=0;f[j+48>>2]=0;f[b+4>>2]=j}j=f[(f[h+(c<<2)>>2]|0)+60>>2]|0;c=dn(44)|0;Ub(c,d);f[c+40>>2]=j;j=f[i>>2]|0;f[e>>2]=c;gk(j,e)|0;j=f[e>>2]|0;f[e>>2]=0;if(!j){g=1;u=a;return g|0}Qi(j);br(j);g=1;u=a;return g|0}function Ah(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f[a>>2]=d;e=a+24|0;g=a+28|0;h=f[g>>2]|0;i=f[e>>2]|0;j=h-i>>2;k=i;i=h;if(j>>>0>=d>>>0){if(j>>>0>d>>>0?(h=k+(d<<2)|0,(h|0)!=(i|0)):0)f[g>>2]=i+(~((i+-4-h|0)>>>2)<<2)}else oi(e,d-j|0);if(!c)return;j=f[b>>2]|0;if((c|0)>1){d=j;e=j;h=1;while(1){i=f[b+(h<<2)>>2]|0;g=(i|0)<(e|0);k=g?i:e;l=g?d:(i|0)>(d|0)?i:d;h=h+1|0;if((h|0)==(c|0)){m=l;n=k;break}else{d=l;e=k}}}else{m=j;n=j}f[a+4>>2]=n;f[a+8>>2]=m;j=Vn(m|0,((m|0)<0)<<31>>31|0,n|0,((n|0)<0)<<31>>31|0)|0;n=I;if(!(n>>>0<0|(n|0)==0&j>>>0<2147483647))return;n=j+1|0;f[a+12>>2]=n;j=(n|0)/2|0;m=a+16|0;f[m>>2]=j;f[a+20>>2]=0-j;if(n&1|0)return;f[m>>2]=j+-1;return}function Bh(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;c=u;u=u+64|0;j=c;k=i?6:5;Al(j);i=f[h+56>>2]|0;h=X(Ll(k)|0,e)|0;yj(j,i,0,e&255,k,0,h,((h|0)<0)<<31>>31,0,0);h=dn(96)|0;nl(h,j);f[a>>2]=h;pj(h,d)|0;d=h+84|0;if(!g){b[d>>0]=1;a=f[h+68>>2]|0;j=h+72|0;k=f[j>>2]|0;if((k|0)==(a|0)){u=c;return}f[j>>2]=k+(~((k+-4-a|0)>>>2)<<2);u=c;return}b[d>>0]=0;d=h+68|0;a=h+72|0;h=f[a>>2]|0;k=f[d>>2]|0;j=h-k>>2;e=h;if(j>>>0>>0){kh(d,g-j|0,1200);u=c;return}if(j>>>0<=g>>>0){u=c;return}j=k+(g<<2)|0;if((j|0)==(e|0)){u=c;return}f[a>>2]=e+(~((e+-4-j|0)>>>2)<<2);u=c;return}function Ch(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){jd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;jd(a,e);return}function Dh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){nd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;nd(a,e);return}function Eh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){ud(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;ud(a,e);return}function Fh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Ed(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Ed(a,e);return}function Gh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){ld(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;ld(a,e);return}function Hh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){qd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;qd(a,e);return}function Ih(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){yd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;yd(a,e);return}function Jh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){kd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;kd(a,e);return}function Kh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){od(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;od(a,e);return}function Lh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){vd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;vd(a,e);return}function Mh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Fd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Fd(a,e);return}function Nh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;b[h>>0]=a&127;do if(a>>>0>127){b[h>>0]=a|128;i=c+16|0;j=f[i+4>>2]|0;if((j|0)>0|(j|0)==0&(f[i>>2]|0)>>>0>0){k=0;break}else{f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0;k=Nh(a>>>7,c)|0;break}}else{i=c+16|0;j=f[i+4>>2]|0;if((j|0)>0|(j|0)==0&(f[i>>2]|0)>>>0>0){k=0;break}f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0;l=1;u=d;return l|0}while(0);l=k;u=d;return l|0}function Oh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;Be(e,a+40|0,f[a+8>>2]|0,b,c);Wi(a,e);a=f[e>>2]|0;f[e>>2]=0;if(!a){u=d;return 1}e=a+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){b=c+12|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;br(e)}br(c)}c=f[a+68>>2]|0;if(c|0){e=a+72|0;b=f[e>>2]|0;if((b|0)!=(c|0))f[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);br(c)}c=a+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){e=b+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;br(c)}br(b)}br(a);u=d;return 1}function Ph(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){rd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;rd(a,e);return}function Qh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;e=u;u=u+48|0;g=e;h=e+32|0;if(!c){i=0;u=e;return i|0}Cn(g);if((Tl(c,0)|0)!=-1?Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0:0){Va[f[(f[c>>2]|0)+20>>2]&127](c);Zf(h,a,c,g);c=(f[h>>2]|0)==0;a=h+4|0;if((b[a+11>>0]|0)<0)br(f[a>>2]|0);if(c){c=f[g>>2]|0;a=g+4|0;ag(d,c,c+((f[a>>2]|0)-c)|0);j=(f[a>>2]|0)-(f[g>>2]|0)|0}else j=0}else j=0;a=g+12|0;c=f[a>>2]|0;f[a>>2]=0;if(c|0)br(c);c=f[g>>2]|0;if(c|0){a=g+4|0;if((f[a>>2]|0)!=(c|0))f[a>>2]=c;br(c)}i=j;u=e;return i|0}function Rh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;se(e,a+40|0,f[a+8>>2]|0,b,c);Wi(a,e);a=f[e>>2]|0;f[e>>2]=0;if(!a){u=d;return 1}e=a+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){b=c+12|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;br(e)}br(c)}c=f[a+68>>2]|0;if(c|0){e=a+72|0;b=f[e>>2]|0;if((b|0)!=(c|0))f[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);br(c)}c=a+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){e=b+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;br(c)}br(b)}br(a);u=d;return 1}function Sh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d;do{d=g+-4|0;f[c>>2]=d;h=f[d>>2]|0;f[d>>2]=0;if(h|0){d=h+88|0;i=f[d>>2]|0;f[d>>2]=0;if(i|0){d=f[i+8>>2]|0;if(d|0){j=i+12|0;if((f[j>>2]|0)!=(d|0))f[j>>2]=d;br(d)}br(i)}i=f[h+68>>2]|0;if(i|0){d=h+72|0;j=f[d>>2]|0;if((j|0)!=(i|0))f[d>>2]=j+(~((j+-4-i|0)>>>2)<<2);br(i)}i=h+64|0;j=f[i>>2]|0;f[i>>2]=0;if(j|0){i=f[j>>2]|0;if(i|0){d=j+4|0;if((f[d>>2]|0)!=(i|0))f[d>>2]=i;br(i)}br(j)}br(h)}g=f[c>>2]|0}while((g|0)!=(b|0));e=f[a>>2]|0}br(e);return}function Th(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=(d|0)<0;do if(!b){if(e){g=0;return g|0}h=a+4|0;i=f[h>>2]|0;j=f[a>>2]|0;k=i-j|0;if(k>>>0>>0){ri(a,c-k|0);break}if(k>>>0>c>>>0?(k=j+c|0,(k|0)!=(i|0)):0)f[h>>2]=k}else{if(e){g=0;return g|0}k=a+4|0;h=f[k>>2]|0;i=f[a>>2]|0;j=h-i|0;do if(0<(d|0)|0==(d|0)&j>>>0>>0){if(j>>>0>>0){ri(a,c-j|0);break}if(j>>>0>c>>>0?(l=i+c|0,(l|0)!=(h|0)):0){f[k>>2]=l;m=15}else m=15}else m=15;while(0);if((m|0)==15?(c|0)==0:0)break;Xl(f[a>>2]|0,b|0,c|0)|0}while(0);c=a+24|0;a=c;b=Tn(f[a>>2]|0,f[a+4>>2]|0,1,0)|0;a=c;f[a>>2]=b;f[a+4>>2]=I;g=1;return g|0}function Uh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;if(!(ve(a,c)|0)){i=0;u=d;return i|0}j=a+36|0;k=a+40|0;a=f[j>>2]|0;if((f[k>>2]|0)==(a|0)){i=1;u=d;return i|0}l=c+16|0;m=c+4|0;n=h+1|0;o=0;p=a;do{a=f[p+(o<<2)>>2]|0;q=Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0;b[h>>0]=q;q=l;a=f[q+4>>2]|0;if(!((a|0)>0|(a|0)==0&(f[q>>2]|0)>>>0>0)){f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];ye(c,e,h,n)|0}o=o+1|0;p=f[j>>2]|0}while(o>>>0<(f[k>>2]|0)-p>>2>>>0);i=1;u=d;return i|0}function Vh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=u;u=u+16|0;d=c;wp(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;e=a+24|0;wp(e);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;a=dn(32)|0;f[d>>2]=a;f[d+8>>2]=-2147483616;f[d+4>>2]=20;g=a;h=13101;i=g+20|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[a+20>>0]=0;Mj(e,d,1);if((b[d+11>>0]|0)<0)br(f[d>>2]|0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;a=dn(32)|0;f[d>>2]=a;f[d+8>>2]=-2147483616;f[d+4>>2]=22;g=a;h=13122;i=g+22|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[a+22>>0]=0;Mj(e,d,1);if((b[d+11>>0]|0)>=0){u=c;return}br(f[d>>2]|0);u=c;return}function Wh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=f[a+4>>2]|0;c=a+8|0;d=f[c>>2]|0;if((d|0)!=(b|0)){e=d;do{d=e+-4|0;f[c>>2]=d;g=f[d>>2]|0;f[d>>2]=0;if(g|0){d=g+88|0;h=f[d>>2]|0;f[d>>2]=0;if(h|0){d=f[h+8>>2]|0;if(d|0){i=h+12|0;if((f[i>>2]|0)!=(d|0))f[i>>2]=d;br(d)}br(h)}h=f[g+68>>2]|0;if(h|0){d=g+72|0;i=f[d>>2]|0;if((i|0)!=(h|0))f[d>>2]=i+(~((i+-4-h|0)>>>2)<<2);br(h)}h=g+64|0;i=f[h>>2]|0;f[h>>2]=0;if(i|0){h=f[i>>2]|0;if(h|0){d=i+4|0;if((f[d>>2]|0)!=(h|0))f[d>>2]=h;br(h)}br(i)}br(g)}e=f[c>>2]|0}while((e|0)!=(b|0))}b=f[a>>2]|0;if(!b)return;br(b);return}function Xh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;u=c;return 1}function Yh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c;e=dn(16)|0;f[d>>2]=e;f[d+8>>2]=-2147483632;f[d+4>>2]=14;g=e;h=12975;i=g+14|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[e+14>>0]=0;e=yk(a,d,-1)|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);j=dn(16)|0;f[d>>2]=j;f[d+8>>2]=-2147483632;f[d+4>>2]=14;g=j;h=12990;i=g+14|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[j+14>>0]=0;j=yk(a,d,-1)|0;if((b[d+11>>0]|0)>=0){k=(e|0)<(j|0);l=k?j:e;m=(l|0)==-1;n=m?5:l;u=c;return n|0}br(f[d>>2]|0);k=(e|0)<(j|0);l=k?j:e;m=(l|0)==-1;n=m?5:l;u=c;return n|0}function Zh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];ye(b,d,g,g+4|0)|0;u=c;return 1}function _h(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=dn(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;c=a+8|0;b[c>>0]=0;h=g+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;h=g+20|0;i=e+12|0;f[h>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;g=e+16|0;e=f[g>>2]|0;j=f[i>>2]|0;k=e-j|0;if(!k){l=j;m=e;n=0}else{ri(h,k);l=f[i>>2]|0;m=f[g>>2]|0;n=f[h>>2]|0}Rg(n|0,l|0,m-l|0)|0;b[c>>0]=1;c=f[a>>2]|0;f[c+4>>2]=d;f[c>>2]=0;return}function $h(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;b=a+32|0;fd(a,b);c=a+80|0;d=f[c>>2]|0;if((d|0?(e=a+84|0,(f[e>>2]|0)>0):0)?(fd(d,b),(f[e>>2]|0)>1):0){d=1;do{fd((f[c>>2]|0)+(d<<5)|0,b);d=d+1|0}while((d|0)<(f[e>>2]|0))}e=a+136|0;d=a+140|0;a=f[e>>2]|0;if((f[d>>2]|0)==(a|0))return;c=0;g=a;while(1){a=g;Nh((f[a+(c*12|0)+4>>2]|0)-(f[a+(c*12|0)>>2]|0)>>2,b)|0;a=f[e>>2]|0;h=f[a+(c*12|0)>>2]|0;i=(f[a+(c*12|0)+4>>2]|0)-h>>2;if(!i)j=a;else{Dc(h,i,1,0,b)|0;j=f[e>>2]|0}c=c+1|0;if(c>>>0>=(((f[d>>2]|0)-j|0)/12|0)>>>0)break;else g=j}return}function ai(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=d+16|0;g=f[e>>2]|0;if(!g)if(!(pl(d)|0)){h=f[e>>2]|0;i=5}else j=0;else{h=g;i=5}a:do if((i|0)==5){g=d+20|0;e=f[g>>2]|0;k=e;if((h-e|0)>>>0>>0){j=Sa[f[d+36>>2]&31](d,a,c)|0;break}b:do if((b[d+75>>0]|0)>-1){e=c;while(1){if(!e){l=0;m=a;n=c;o=k;break b}p=e+-1|0;if((b[a+p>>0]|0)==10)break;else e=p}p=Sa[f[d+36>>2]&31](d,a,e)|0;if(p>>>0>>0){j=p;break a}l=e;m=a+e|0;n=c-e|0;o=f[g>>2]|0}else{l=0;m=a;n=c;o=k}while(0);Rg(o|0,m|0,n|0)|0;f[g>>2]=(f[g>>2]|0)+n;j=l+n|0}while(0);return j|0}function bi(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+12|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d+28>>2]|0;if(c|0){e=c;do{c=e;e=f[e>>2]|0;bi(c+8|0);br(c)}while((e|0)!=0)}e=d+20|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0)br(c);c=f[d+8>>2]|0;if(c|0){e=c;do{c=e;e=f[e>>2]|0;g=c+8|0;h=f[c+20>>2]|0;if(h|0){i=c+24|0;if((f[i>>2]|0)!=(h|0))f[i>>2]=h;br(h)}if((b[g+11>>0]|0)<0)br(f[g>>2]|0);br(c)}while((e|0)!=0)}e=f[d>>2]|0;f[d>>2]=0;if(e|0)br(e);br(d)}if((b[a+11>>0]|0)>=0)return;br(f[a>>2]|0);return}function ci(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0;g=u;u=u+32|0;h=g+12|0;i=g;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;if((e|0)>0){j=i+11|0;k=i+4|0;l=0;do{if((l|0)>0)vn(h,12890)|0;cl(i,$(n[d+(l<<2)>>2]));m=b[j>>0]|0;o=m<<24>>24<0;$i(h,o?f[i>>2]|0:i,o?f[k>>2]|0:m&255)|0;if((b[j>>0]|0)<0)br(f[i>>2]|0);l=l+1|0}while((l|0)<(e|0))}Ql(mi(a,c)|0,h)|0;if((b[h+11>>0]|0)>=0){u=g;return}br(f[h>>2]|0);u=g;return}function di(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((f[d+56>>2]|0)==-1){h=0;f[a>>2]=h;return}i=dn(96)|0;nl(i,d);d=i;do if(!e){j=f[c+80>>2]|0;b[i+84>>0]=0;k=i+68|0;l=i+72|0;m=f[l>>2]|0;n=f[k>>2]|0;o=m-n>>2;p=m;if(j>>>0>o>>>0){kh(k,j-o|0,5908);break}if(j>>>0>>0?(o=n+(j<<2)|0,(o|0)!=(p|0)):0)f[l>>2]=p+(~((p+-4-o|0)>>>2)<<2)}else{b[i+84>>0]=1;o=f[i+68>>2]|0;p=i+72|0;l=f[p>>2]|0;if((l|0)!=(o|0))f[p>>2]=l+(~((l+-4-o|0)>>>2)<<2);f[i+80>>2]=f[c+80>>2]}while(0);if(!g){h=d;f[a>>2]=h;return}pj(i,g)|0;h=d;f[a>>2]=h;return}function ei(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d|0;g=e>>3;h=g+1|0;if(h>>>0>536870911)mq(a);i=a+8|0;j=(f[i>>2]|0)-d|0;k=j>>2;l=j>>3>>>0<268435455?(k>>>0>>0?h:k):536870911;do if(l)if(l>>>0>536870911){k=ra(8)|0;Wo(k,14941);f[k>>2]=6944;va(k|0,1080,114)}else{k=dn(l<<3)|0;m=k;n=k;break}else{m=0;n=0}while(0);k=m+(g<<3)|0;g=b;b=f[g+4>>2]|0;h=k;f[h>>2]=f[g>>2];f[h+4>>2]=b;if((e|0)>0)Rg(n|0,d|0,e|0)|0;f[a>>2]=m;f[c>>2]=k+8;f[i>>2]=m+(l<<3);if(!d)return;br(d);return}function fi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c;if((Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)<=0){e=1;u=c;return e|0}g=a+4|0;h=a+20|0;i=a+24|0;j=a+16|0;a=0;while(1){k=f[(f[g>>2]|0)+4>>2]|0;l=Tl(k,Ra[f[(f[b>>2]|0)+24>>2]&127](b,a)|0)|0;f[d>>2]=l;if((l|0)==-1)break;k=f[h>>2]|0;if((k|0)==(f[i>>2]|0))Ci(j,d);else{f[k>>2]=l;f[h>>2]=k+4}al(f[g>>2]|0,f[d>>2]|0)|0;a=a+1|0;if((a|0)>=(Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)){e=1;m=9;break}}if((m|0)==9){u=c;return e|0}e=0;u=c;return e|0}function gi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;f[a>>2]=1276;Sh(a+60|0);b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=a+36|0;d=f[b>>2]|0;if(d|0){c=a+40|0;e=f[c>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-24|0;f[c>>2]=e;Va[f[f[e>>2]>>2]&127](e);h=f[c>>2]|0}while((h|0)!=(d|0));g=f[b>>2]|0}br(g)}f[a>>2]=1216;g=f[a+16>>2]|0;if(g|0){b=a+20|0;d=f[b>>2]|0;if((d|0)!=(g|0))f[b>>2]=d+(~((d+-4-g|0)>>>2)<<2);br(g)}g=f[a+4>>2]|0;if(!g)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(g|0))f[d>>2]=a+(~((a+-4-g|0)>>>2)<<2);br(g);return}function hi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=u;u=u+32|0;d=c+16|0;e=c+8|0;g=c;h=a+8|0;if(f[h>>2]<<5>>>0>=b>>>0){u=c;return}f[d>>2]=0;i=d+4|0;f[i>>2]=0;j=d+8|0;f[j>>2]=0;if((b|0)<0)mq(d);k=((b+-1|0)>>>5)+1|0;b=dn(k<<2)|0;f[d>>2]=b;f[i>>2]=0;f[j>>2]=k;k=f[a>>2]|0;f[e>>2]=k;f[e+4>>2]=0;b=a+4|0;l=f[b>>2]|0;f[g>>2]=k+(l>>>5<<2);f[g+4>>2]=l&31;ig(d,e,g);g=f[a>>2]|0;f[a>>2]=f[d>>2];f[d>>2]=g;d=f[b>>2]|0;f[b>>2]=f[i>>2];f[i>>2]=d;d=f[h>>2]|0;f[h>>2]=f[j>>2];f[j>>2]=d;if(g|0)br(g);u=c;return}function ii(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=a+136|0;c=f[b>>2]|0;if(c|0){d=a+140|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);br(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}br(g)}g=f[a+104>>2]|0;if(g|0){b=a+108|0;j=f[b>>2]|0;if((j|0)!=(g|0))f[b>>2]=j+(~((j+-4-g|0)>>>2)<<2);br(g)}g=f[a+92>>2]|0;if(!g){jj(a);return}j=a+96|0;b=f[j>>2]|0;if((b|0)!=(g|0))f[j>>2]=b+(~((b+-4-g|0)>>>2)<<2);br(g);jj(a);return}function ji(a){a=a|0;var c=0,d=0,e=0,g=0;f[a>>2]=3340;c=a+72|0;d=a+136|0;e=a+4|0;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));e=c;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));n[d>>2]=$(1.0);d=a+140|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[a+164>>2]=-1;d=a+168|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[d+24>>2]=0;rn(a+200|0);Cn(a+232|0);d=a+316|0;e=a+264|0;g=e+52|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[d>>2]=-1;f[a+320>>2]=-1;f[a+324>>2]=0;f[a+328>>2]=2;f[a+332>>2]=7;f[a+336>>2]=0;f[a+340>>2]=0;f[a+344>>2]=0;b[a+352>>0]=0;return}function ki(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d|0;g=(e|0)/12|0;h=g+1|0;if(h>>>0>357913941)mq(a);i=a+8|0;j=((f[i>>2]|0)-d|0)/12|0;k=j<<1;l=j>>>0<178956970?(k>>>0>>0?h:k):357913941;do if(l)if(l>>>0>357913941){k=ra(8)|0;Wo(k,14941);f[k>>2]=6944;va(k|0,1080,114)}else{m=dn(l*12|0)|0;break}else m=0;while(0);k=m+(g*12|0)|0;f[k>>2]=f[b>>2];f[k+4>>2]=f[b+4>>2];f[k+8>>2]=f[b+8>>2];b=k+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Rg(b|0,d|0,e|0)|0;f[a>>2]=b;f[c>>2]=k+12;f[i>>2]=m+(l*12|0);if(!d)return;br(d);return}function li(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=a+16|0;h=g;i=f[h+4>>2]|0;if((d|0)<0|(d|0)==0&c>>>0<1|((i|0)>0|(i|0)==0&(f[h>>2]|0)>>>0>0)){j=0;return j|0}b[a+24>>0]=e&1;h=Tn(c|0,d|0,7,0)|0;d=zk(h|0,I|0,8,0)|0;h=I;c=g;f[c>>2]=d;f[c+4>>2]=h;c=a+4|0;g=f[c>>2]|0;i=f[a>>2]|0;k=g-i|0;l=Tn(k|0,0,8,0)|0;m=e?l:k;l=Tn(m|0,(e?I:0)|0,d|0,h|0)|0;h=i;i=g;if(k>>>0>=l>>>0)if(k>>>0>l>>>0?(g=h+l|0,(g|0)!=(i|0)):0){f[c>>2]=g;n=h}else n=h;else{ri(a,l-k|0);n=f[a>>2]|0}k=dn(8)|0;f[k>>2]=n+m;f[k+4>>2]=0;m=a+12|0;a=f[m>>2]|0;f[m>>2]=k;if(!a){j=1;return j|0}br(a);j=1;return j|0}function mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=u;u=u+16|0;d=c;e=hg(a,d,b)|0;g=f[e>>2]|0;if(g|0){h=g;i=h+28|0;u=c;return i|0}g=dn(40)|0;dj(g+16|0,b);b=g+28|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;b=f[d>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=b;f[e>>2]=g;b=f[f[a>>2]>>2]|0;if(!b)j=g;else{f[a>>2]=b;j=f[e>>2]|0}Ae(f[a+4>>2]|0,j);j=a+8|0;f[j>>2]=(f[j>>2]|0)+1;h=g;i=h+28|0;u=c;return i|0}function ni(a,c,d,e,g,h,i,j){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=u;u=u+16|0;l=k;if((-18-c|0)>>>0>>0)mq(a);if((b[a+11>>0]|0)<0)m=f[a>>2]|0;else m=a;if(c>>>0<2147483623){n=d+c|0;d=c<<1;o=n>>>0>>0?d:n;p=o>>>0<11?11:o+16&-16}else p=-17;o=dn(p)|0;if(g|0)Lo(o,m,g)|0;if(i|0)Lo(o+g|0,j,i)|0;j=e-h|0;e=j-g|0;if(e|0)Lo(o+g+i|0,m+g+h|0,e)|0;if((c|0)!=10)br(m);f[a>>2]=o;f[a+8>>2]=p|-2147483648;p=j+i|0;f[a+4>>2]=p;b[l>>0]=0;Hp(o+p|0,l);u=k;return}function oi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;if(d-g>>2>>>0>=b>>>0){hj(g|0,0,b<<2|0)|0;f[e>>2]=g+(b<<2);return}h=f[a>>2]|0;i=g-h|0;g=i>>2;j=g+b|0;if(j>>>0>1073741823)mq(a);k=d-h|0;d=k>>1;l=k>>2>>>0<536870911?(d>>>0>>0?j:d):1073741823;do if(l)if(l>>>0>1073741823){d=ra(8)|0;Wo(d,14941);f[d>>2]=6944;va(d|0,1080,114)}else{d=dn(l<<2)|0;m=d;n=d;break}else{m=0;n=0}while(0);d=m+(g<<2)|0;hj(d|0,0,b<<2|0)|0;if((i|0)>0)Rg(n|0,h|0,i|0)|0;f[a>>2]=m;f[e>>2]=d+(b<<2);f[c>>2]=m+(l<<2);if(!h)return;br(h);return}function pi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=dn(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;c=a+8|0;b[c>>0]=0;dj(g+8|0,e);h=g+20|0;i=e+12|0;f[h>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;g=e+16|0;e=f[g>>2]|0;j=f[i>>2]|0;k=e-j|0;if(!k){l=j;m=e;n=0}else{ri(h,k);l=f[i>>2]|0;m=f[g>>2]|0;n=f[h>>2]|0}Rg(n|0,l|0,m-l|0)|0;b[c>>0]=1;c=f[a>>2]|0;f[c+4>>2]=d;f[c>>2]=0;return}function qi(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e;h=c+11|0;i=b[h>>0]|0;if(i<<24>>24<0)j=f[c+4>>2]|0;else j=i&255;k=+d;l=j;j=i;while(1){if(j<<24>>24<0)m=f[c>>2]|0;else m=c;p[g>>3]=k;n=wn(m,l+1|0,17468,g)|0;if((n|0)>-1)if(n>>>0>l>>>0)o=n;else break;else o=l<<1|1;wj(c,o,0);l=o;j=b[h>>0]|0}wj(c,n,0);f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];a=0;while(1){if((a|0)==3)break;f[c+(a<<2)>>2]=0;a=a+1|0}u=e;return}function ri(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if((e-h|0)>>>0>=c>>>0){i=c;j=h;do{b[j>>0]=0;j=(f[g>>2]|0)+1|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=h-i|0;h=j+c|0;if((h|0)<0)mq(a);k=e-i|0;i=k<<1;e=k>>>0<1073741823?(i>>>0>>0?h:i):2147483647;if(!e)l=0;else l=dn(e)|0;i=l+j|0;j=l+e|0;e=c;c=i;l=i;do{b[l>>0]=0;l=c+1|0;c=l;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;l=(f[g>>2]|0)-e|0;h=i+(0-l)|0;if((l|0)>0)Rg(h|0,e|0,l|0)|0;f[a>>2]=h;f[g>>2]=c;f[d>>2]=j;if(!e)return;br(e);return}function si(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=(d-e|0)/136|0;h=d;if(g>>>0>>0){te(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+(b*136|0)|0;if((g|0)==(h|0))return;else i=h;do{f[c>>2]=i+-136;h=f[i+-20>>2]|0;if(h|0){b=i+-16|0;e=f[b>>2]|0;if((e|0)!=(h|0))f[b>>2]=e+(~((e+-4-h|0)>>>2)<<2);br(h)}h=f[i+-32>>2]|0;if(h|0){e=i+-28|0;b=f[e>>2]|0;if((b|0)!=(h|0))f[e>>2]=b+(~((b+-4-h|0)>>>2)<<2);br(h)}yi(i+-132|0);i=f[c>>2]|0}while((i|0)!=(g|0));return}function ti(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Hd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Hd(a,e);return}function ui(a){a=a|0;var b=0,c=0,d=0;b=f[a+76>>2]|0;if(b|0){c=a+80|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+64>>2]|0;if(b|0){d=a+68|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;br(b)}b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+24>>2]|0;if(b|0){c=a+28|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function vi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=u;u=u+16|0;g=e;h=c+11|0;i=b[h>>0]|0;if(i<<24>>24<0)j=f[c+4>>2]|0;else j=i&255;k=j;j=i;while(1){if(j<<24>>24<0)l=f[c>>2]|0;else l=c;f[g>>2]=d;m=wn(l,k+1|0,17465,g)|0;if((m|0)>-1)if(m>>>0>k>>>0)n=m;else break;else n=k<<1|1;wj(c,n,0);k=n;j=b[h>>0]|0}wj(c,m,0);f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];a=0;while(1){if((a|0)==3)break;f[c+(a<<2)>>2]=0;a=a+1|0}u=e;return}function wi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=a+8|0;c=f[b>>2]|0;if((c|0)<0){d=0;return d|0}e=a+4|0;a=f[e>>2]|0;g=a+4|0;h=f[g>>2]|0;i=f[a>>2]|0;j=h-i>>2;k=i;i=h;if(c>>>0<=j>>>0)if(c>>>0>>0?(h=k+(c<<2)|0,(h|0)!=(i|0)):0){f[g>>2]=i+(~((i+-4-h|0)>>>2)<<2);l=c}else l=c;else{oi(a,c-j|0);l=f[b>>2]|0}if((l|0)<=0){d=1;return d|0}b=f[e>>2]|0;e=f[b>>2]|0;j=(f[b+4>>2]|0)-e>>2;c=e;e=0;while(1){if(j>>>0<=e>>>0){m=10;break}f[c+(e<<2)>>2]=e;e=e+1|0;if((e|0)>=(l|0)){d=1;m=12;break}}if((m|0)==10)mq(b);else if((m|0)==12)return d|0;return 0}function xi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d;g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=30;h=g;i=14791;j=h+30|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[g+30>>0]=0;g=a+4|0;Mj(g,e,c);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);a=dn(32)|0;f[e>>2]=a;f[e+8>>2]=-2147483616;f[e+4>>2]=29;h=a;i=14510;j=h+29|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[a+29>>0]=0;Mj(g,e,c);if((b[e+11>>0]|0)>=0){u=d;return}br(f[e>>2]|0);u=d;return}function yi(a){a=a|0;var b=0,c=0,d=0;b=f[a+84>>2]|0;if(b|0){c=a+88|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+72>>2]|0;if(b|0){d=a+76|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;br(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+28>>2]|0;if(b|0){d=a+32|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+12>>2]|0;if(b|0)br(b);b=f[a>>2]|0;if(!b)return;br(b);return}function zi(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=1336;b=a+32|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=c+88|0;d=f[b>>2]|0;f[b>>2]=0;if(d|0){b=f[d+8>>2]|0;if(b|0){e=d+12|0;if((f[e>>2]|0)!=(b|0))f[e>>2]=b;br(b)}br(d)}d=f[c+68>>2]|0;if(d|0){b=c+72|0;e=f[b>>2]|0;if((e|0)!=(d|0))f[b>>2]=e+(~((e+-4-d|0)>>>2)<<2);br(d)}d=c+64|0;e=f[d>>2]|0;f[d>>2]=0;if(e|0){d=f[e>>2]|0;if(d|0){b=e+4|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;br(d)}br(e)}br(c)}c=f[a+16>>2]|0;if(!c)return;e=a+20|0;a=f[e>>2]|0;if((a|0)!=(c|0))f[e>>2]=a+(~((a+-4-c|0)>>>2)<<2);br(c);return}function Ai(){var a=0,b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;a=u;u=u+48|0;b=a+32|0;c=a+24|0;d=a+16|0;e=a;g=a+36|0;a=mn()|0;if(a|0?(h=f[a>>2]|0,h|0):0){a=h+48|0;i=f[a>>2]|0;j=f[a+4>>2]|0;if(!((i&-256|0)==1126902528&(j|0)==1129074247)){f[c>>2]=17607;Dn(17557,c)}if((i|0)==1126902529&(j|0)==1129074247)k=f[h+44>>2]|0;else k=h+80|0;f[g>>2]=k;k=f[h>>2]|0;h=f[k+4>>2]|0;if(Sa[f[(f[250]|0)+16>>2]&31](1e3,k,g)|0){k=f[g>>2]|0;g=Qa[f[(f[k>>2]|0)+8>>2]&127](k)|0;f[e>>2]=17607;f[e+4>>2]=h;f[e+8>>2]=g;Dn(17471,e)}else{f[d>>2]=17607;f[d+4>>2]=h;Dn(17516,d)}}Dn(17595,b)}function Bi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;do if(a){if(c>>>0<128){b[a>>0]=c;e=1;break}d=(Yq()|0)+188|0;if(!(f[f[d>>2]>>2]|0))if((c&-128|0)==57216){b[a>>0]=c;e=1;break}else{d=ir()|0;f[d>>2]=84;e=-1;break}if(c>>>0<2048){b[a>>0]=c>>>6|192;b[a+1>>0]=c&63|128;e=2;break}if(c>>>0<55296|(c&-8192|0)==57344){b[a>>0]=c>>>12|224;b[a+1>>0]=c>>>6&63|128;b[a+2>>0]=c&63|128;e=3;break}if((c+-65536|0)>>>0<1048576){b[a>>0]=c>>>18|240;b[a+1>>0]=c>>>12&63|128;b[a+2>>0]=c>>>6&63|128;b[a+3>>0]=c&63|128;e=4;break}else{d=ir()|0;f[d>>2]=84;e=-1;break}}else e=1;while(0);return e|0}function Ci(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d|0;g=e>>2;h=g+1|0;if(h>>>0>1073741823)mq(a);i=a+8|0;j=(f[i>>2]|0)-d|0;k=j>>1;l=j>>2>>>0<536870911?(k>>>0>>0?h:k):1073741823;do if(l)if(l>>>0>1073741823){k=ra(8)|0;Wo(k,14941);f[k>>2]=6944;va(k|0,1080,114)}else{k=dn(l<<2)|0;m=k;n=k;break}else{m=0;n=0}while(0);k=m+(g<<2)|0;f[k>>2]=f[b>>2];if((e|0)>0)Rg(n|0,d|0,e|0)|0;f[a>>2]=m;f[c>>2]=k+4;f[i>>2]=m+(l<<2);if(!d)return;br(d);return}function Di(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=a+104|0;d=f[c>>2]|0;if((d|0)!=0?(f[a+108>>2]|0)>=(d|0):0)e=4;else{d=Qm(a)|0;if((d|0)>=0){g=f[c>>2]|0;c=a+8|0;if(g){i=f[c>>2]|0;j=f[a+4>>2]|0;k=g-(f[a+108>>2]|0)|0;g=i;if((i-j|0)<(k|0)){l=g;m=g}else{l=j+(k+-1)|0;m=g}}else{g=f[c>>2]|0;l=g;m=g}f[a+100>>2]=l;l=a+4|0;if(!m)n=f[l>>2]|0;else{g=f[l>>2]|0;l=a+108|0;f[l>>2]=m+1-g+(f[l>>2]|0);n=g}g=n+-1|0;if((d|0)==(h[g>>0]|0|0))o=d;else{b[g>>0]=d;o=d}}else e=4}if((e|0)==4){f[a+100>>2]=0;o=-1}return o|0}function Ei(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;f[a>>2]=1528;f[a+4>>2]=b;b=a+8|0;f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];f[b+12>>2]=f[c+12>>2];f[b+16>>2]=f[c+16>>2];f[b+20>>2]=f[c+20>>2];_j(a+32|0,c+24|0);f[a>>2]=2144;c=a+44|0;f[c>>2]=f[d>>2];f[c+4>>2]=f[d+4>>2];f[c+8>>2]=f[d+8>>2];f[c+12>>2]=f[d+12>>2];f[a>>2]=2200;d=a+112|0;c=a+60|0;b=c+52|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(b|0));Sm(d);f[a+152>>2]=0;f[a+156>>2]=0;f[a+160>>2]=0;return}function Fi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=dn(16)|0;f[g>>2]=h;f[g+8>>2]=-2147483632;f[g+4>>2]=14;i=h;j=12975;k=i+14|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[h+14>>0]=0;Nj(a,g,c);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);c=dn(16)|0;f[g>>2]=c;f[g+8>>2]=-2147483632;f[g+4>>2]=14;i=c;j=12990;k=i+14|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[c+14>>0]=0;Nj(a,g,d);if((b[g+11>>0]|0)>=0){u=e;return}br(f[g>>2]|0);u=e;return}function Gi(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3320;b=f[a+88>>2]|0;if(b|0){c=a+92|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+72>>2]|0;if(b|0){d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+60>>2]|0;if(b|0){c=a+64|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Hi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;f[a>>2]=1528;f[a+4>>2]=b;b=a+8|0;f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];f[b+12>>2]=f[c+12>>2];f[b+16>>2]=f[c+16>>2];f[b+20>>2]=f[c+20>>2];_j(a+32|0,c+24|0);f[a>>2]=1836;c=a+44|0;f[c>>2]=f[d>>2];f[c+4>>2]=f[d+4>>2];f[c+8>>2]=f[d+8>>2];f[c+12>>2]=f[d+12>>2];f[a>>2]=1892;d=a+112|0;c=a+60|0;b=c+52|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(b|0));Sm(d);f[a+152>>2]=0;f[a+156>>2]=0;f[a+160>>2]=0;return}function Ii(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2200;b=f[a+152>>2]|0;if(b|0){c=a+156|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+112>>2]|0;if(b|0){d=a+116|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+96>>2]|0;if(b|0)br(b);b=f[a+84>>2]|0;if(b|0)br(b);b=f[a+72>>2]|0;if(b|0)br(b);b=f[a+60>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Ji(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;g=f[(f[c+4>>2]|0)+4>>2]|0;if(!g){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=d;return}if(!(rj(d+12|0,f[c+44>>2]|0,g)|0)){g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=26;c=g;h=14822;i=c+26|0;do{b[c>>0]=b[h>>0]|0;c=c+1|0;h=h+1|0}while((c|0)<(i|0));b[g+26>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}else{f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}u=d;return}function Ki(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=b+48|0;if((Yh(f[c>>2]|0)|0)>9){d=0;return d|0}if((Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)!=1){d=0;return d|0}e=b+4|0;b=(f[(f[(f[e>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)+56|0;a=f[b>>2]|0;do if((a|0)==3)if((Yh(f[c>>2]|0)|0)<4){d=5;return d|0}else{g=f[b>>2]|0;break}else g=a;while(0);a=Yh(f[c>>2]|0)|0;if((g|0)==1){d=(a|0)<4?6:0;return d|0}if((a|0)>7){d=0;return d|0}if((Yh(f[c>>2]|0)|0)>1){d=1;return d|0}else return ((f[(f[e>>2]|0)+80>>2]|0)>>>0<40?1:4)|0;return 0}function Li(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1892;b=f[a+152>>2]|0;if(b|0){c=a+156|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+112>>2]|0;if(b|0){d=a+116|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+96>>2]|0;if(b|0)br(b);b=f[a+84>>2]|0;if(b|0)br(b);b=f[a+72>>2]|0;if(b|0)br(b);b=f[a+60>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Mi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=u;u=u+128|0;h=g+124|0;i=g;j=i;k=6284;l=j+124|0;do{f[j>>2]=f[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(l|0));if((c+-1|0)>>>0>2147483646)if(!c){m=h;n=1;o=4}else{h=ir()|0;f[h>>2]=75;p=-1}else{m=a;n=c;o=4}if((o|0)==4){o=-2-m|0;c=n>>>0>o>>>0?o:n;f[i+48>>2]=c;n=i+20|0;f[n>>2]=m;f[i+44>>2]=m;o=m+c|0;m=i+16|0;f[m>>2]=o;f[i+28>>2]=o;o=hh(i,d,e)|0;if(!c)p=o;else{c=f[n>>2]|0;b[c+(((c|0)==(f[m>>2]|0))<<31>>31)>>0]=0;p=o}}u=g;return p|0}function Ni(a){a=a|0;var c=0,d=0,e=0,g=0;f[a>>2]=3080;c=a+72|0;d=a+136|0;e=a+4|0;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));e=c;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));n[d>>2]=$(1.0);d=a+140|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[a+164>>2]=-1;d=a+168|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[d+24>>2]=0;rn(a+200|0);Cn(a+232|0);d=a+264|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;b[d+24>>0]=0;return}function Oi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=u;u=u+16|0;g=a;if(!c){h=0;u=a;return h|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;i=vj(d)|0;if(i>>>0>4294967279)mq(g);if(i>>>0<11){b[g+11>>0]=i;if(!i)j=g;else{k=g;l=7}}else{m=i+16&-16;n=dn(m)|0;f[g>>2]=n;f[g+8>>2]=m|-2147483648;f[g+4>>2]=i;k=n;l=7}if((l|0)==7){Rg(k|0,d|0,i|0)|0;j=k}b[j+i>>0]=0;Ol(c,g,e);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);h=1;u=a;return h|0}function Pi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=u;u=u+16|0;g=a;if(!c){h=0;u=a;return h|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;i=vj(d)|0;if(i>>>0>4294967279)mq(g);if(i>>>0<11){b[g+11>>0]=i;if(!i)j=g;else{k=g;l=7}}else{m=i+16&-16;n=dn(m)|0;f[g>>2]=n;f[g+8>>2]=m|-2147483648;f[g+4>>2]=i;k=n;l=7}if((l|0)==7){Rg(k|0,d|0,i|0)|0;j=k}b[j+i>>0]=0;Pl(c,g,e);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);h=1;u=a;return h|0}function Qi(a){a=a|0;var c=0,d=0,e=0,g=0,h=0;c=f[a+28>>2]|0;if(c|0){d=c;do{c=d;d=f[d>>2]|0;e=c+8|0;g=c+20|0;h=f[g>>2]|0;f[g>>2]=0;if(h|0){Qi(h);br(h)}if((b[e+11>>0]|0)<0)br(f[e>>2]|0);br(c)}while((d|0)!=0)}d=a+20|0;c=f[d>>2]|0;f[d>>2]=0;if(c|0)br(c);c=f[a+8>>2]|0;if(c|0){d=c;do{c=d;d=f[d>>2]|0;e=c+8|0;h=f[c+20>>2]|0;if(h|0){g=c+24|0;if((f[g>>2]|0)!=(h|0))f[g>>2]=h;br(h)}if((b[e+11>>0]|0)<0)br(f[e>>2]|0);br(c)}while((d|0)!=0)}d=f[a>>2]|0;f[a>>2]=0;if(!d)return;br(d);return}function Ri(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;Wa[f[(f[c>>2]|0)+64>>2]&15](a,c);if(f[a>>2]|0){u=d;return}g=a+4|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);g=f[c+48>>2]|0;h=dn(32)|0;f[e>>2]=h;f[e+8>>2]=-2147483616;f[e+4>>2]=29;i=h;j=14510;k=i+29|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[h+29>>0]=0;h=Oj(g,e,0)|0;if((b[e+11>>0]|0)<0)br(f[e>>2]|0);if(h)Va[f[(f[c>>2]|0)+68>>2]&127](c);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=d;return}function Si(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;e=u;u=u+16|0;g=e;h=f[c+48>>2]|0;if(!h){i=dn(32)|0;f[g>>2]=i;f[g+8>>2]=-2147483616;f[g+4>>2]=23;j=i;k=14670;l=j+23|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[i+23>>0]=0;f[a>>2]=-1;dj(a+4|0,g);if((b[g+11>>0]|0)<0)br(f[g>>2]|0);u=e;return}g=f[c+52>>2]|0;if(!g){Ic(a,c,h,d);u=e;return}else{jg(a,c,g,d);u=e;return}}function Ti(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;lk(a);b=a+84|0;c=f[b>>2]|0;if((c|0)<=0)return;d=c<<5;e=_q(c>>>0>134217727|d>>>0>4294967291?-1:d+4|0)|0;f[e>>2]=c;d=e+4|0;e=d+(c<<5)|0;c=d;do{rn(c);c=c+32|0}while((c|0)!=(e|0));e=a+80|0;a=f[e>>2]|0;f[e>>2]=d;if(a|0){d=a+-4|0;c=f[d>>2]|0;if(c|0){g=a+(c<<5)|0;do{g=g+-32|0;tj(g)}while((g|0)!=(a|0))}$q(d)}if((f[b>>2]|0)>0)h=0;else return;do{lk((f[e>>2]|0)+(h<<5)|0);h=h+1|0}while((h|0)<(f[b>>2]|0));return}function Ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(!b){d=0;return d|0}if(f[b+4>>2]|0){d=0;return d|0}a=dn(52)|0;Ub(a,c);f[a+40>>2]=0;f[a+44>>2]=0;f[a+48>>2]=0;c=b+4|0;b=f[c>>2]|0;f[c>>2]=a;if(!b){d=1;return d|0}a=b+40|0;c=f[a>>2]|0;if(c|0){e=b+44|0;g=f[e>>2]|0;if((g|0)==(c|0))h=c;else{i=g;do{g=i+-4|0;f[e>>2]=g;j=f[g>>2]|0;f[g>>2]=0;if(j|0){Qi(j);br(j)}i=f[e>>2]|0}while((i|0)!=(c|0));h=f[a>>2]|0}br(h)}Qi(b);br(b);d=1;return d|0}function Vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=f[a>>2]|0;if(b){b=c+8|0;d=b;e=Tn(f[d>>2]|0,f[d+4>>2]|0,1,0)|0;d=b;f[d>>2]=e;f[d+4>>2]=I;d=a+28|0;e=f[d>>2]|0;b=a+24|0;f[b>>2]=f[b>>2]|1<>2]|0,f[e+4>>2]|0,1,0)|0;e=c;f[e>>2]=d;f[e+4>>2]=I;e=a+28|0;g=e;h=f[e>>2]|0}e=h+1|0;f[g>>2]=e;if((e|0)!=32)return;e=a+24|0;h=a+16|0;d=f[h>>2]|0;if((d|0)==(f[a+20>>2]|0))Ci(a+12|0,e);else{f[d>>2]=f[e>>2];f[h>>2]=d+4}f[g>>2]=0;f[e>>2]=0;return}function Wi(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+32|0;a=f[b>>2]|0;f[b>>2]=0;b=f[c>>2]|0;f[c>>2]=a;if(!b)return;a=b+88|0;c=f[a>>2]|0;f[a>>2]=0;if(c|0){a=f[c+8>>2]|0;if(a|0){d=c+12|0;if((f[d>>2]|0)!=(a|0))f[d>>2]=a;br(a)}br(c)}c=f[b+68>>2]|0;if(c|0){a=b+72|0;d=f[a>>2]|0;if((d|0)!=(c|0))f[a>>2]=d+(~((d+-4-c|0)>>>2)<<2);br(c)}c=b+64|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d>>2]|0;if(c|0){a=d+4|0;if((f[a>>2]|0)!=(c|0))f[a>>2]=c;br(c)}br(d)}br(b);return}function Xi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;if(c|0){h=a+11|0;i=b[h>>0]|0;if(i<<24>>24<0){j=f[a+4>>2]|0;k=(f[a+8>>2]&2147483647)+-1|0}else{j=i&255;k=10}if((k-j|0)>>>0>>0){lj(a,k,c-k+j|0,j,j,0,0);l=b[h>>0]|0}else l=i;if(l<<24>>24<0)m=f[a>>2]|0;else m=a;On(m+j|0,c,d)|0;d=j+c|0;if((b[h>>0]|0)<0)f[a+4>>2]=d;else b[h>>0]=d;b[g>>0]=0;Hp(m+d|0,g)}u=e;return a|0}function Yi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+48|0;e=d+4|0;g=d;h=f[b+12>>2]|0;i=f[b+4>>2]|0;b=e;j=b+36|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));gh(g,c,h,i,e);i=f[e+24>>2]|0;if(!i){k=f[g>>2]|0;f[a>>2]=k;u=d;return}h=e+28|0;e=f[h>>2]|0;if((e|0)!=(i|0))f[h>>2]=e+(~((e+-4-i|0)>>>2)<<2);br(i);k=f[g>>2]|0;f[a>>2]=k;u=d;return}function Zi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j)k=(f[a+8>>2]&2147483647)+-1|0;else k=10;do if(k>>>0>=d>>>0){if(j)l=f[a>>2]|0;else l=a;Jo(l,c,d)|0;b[g>>0]=0;Hp(l+d|0,g);if((b[h>>0]|0)<0){f[a+4>>2]=d;break}else{b[h>>0]=d;break}}else{if(j)m=f[a+4>>2]|0;else m=i&255;ni(a,k,d-k|0,m,0,m,d,c)}while(0);u=e;return a|0}function _i(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d;do{f[c>>2]=g+-136;d=f[g+-20>>2]|0;if(d|0){h=g+-16|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);br(d)}d=f[g+-32>>2]|0;if(d|0){i=g+-28|0;h=f[i>>2]|0;if((h|0)!=(d|0))f[i>>2]=h+(~((h+-4-d|0)>>>2)<<2);br(d)}yi(g+-132|0);g=f[c>>2]|0}while((g|0)!=(b|0));e=f[a>>2]|0}br(e);return}function $i(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j){k=f[a+4>>2]|0;l=(f[a+8>>2]&2147483647)+-1|0}else{k=i&255;l=10}if((l-k|0)>>>0>=d>>>0){if(d|0){if(j)m=f[a>>2]|0;else m=a;Lo(m+k|0,c,d)|0;j=k+d|0;if((b[h>>0]|0)<0)f[a+4>>2]=j;else b[h>>0]=j;b[g>>0]=0;Hp(m+j|0,g)}}else ni(a,l,d-l+k|0,k,k,0,d,c);u=e;return a|0}function aj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;f[a>>2]=3608;b=f[a+32>>2]|0;if(b|0){c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=a+8|0;c=f[b>>2]|0;if(!c)return;d=a+12|0;a=f[d>>2]|0;if((a|0)==(c|0))e=c;else{g=a;do{a=g+-4|0;f[d>>2]=a;h=f[a>>2]|0;f[a>>2]=0;if(h|0)Va[f[(f[h>>2]|0)+4>>2]&127](h);g=f[d>>2]|0}while((g|0)!=(c|0));e=f[b>>2]|0}br(e);return}function bj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;if((Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)<=0){d=1;return d|0}a=0;while(1){e=f[(f[c>>2]|0)+4>>2]|0;g=Tl(e,Ra[f[(f[b>>2]|0)+24>>2]&127](b,a)|0)|0;if((g|0)==-1){d=0;h=6;break}e=f[(f[b>>2]|0)+28>>2]|0;i=$k(f[c>>2]|0,g)|0;a=a+1|0;if(!(Ra[e&127](b,i)|0)){d=0;h=6;break}if((a|0)>=(Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)){d=1;h=6;break}}if((h|0)==6)return d|0;return 0}function cj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(!(lo(a,b,c)|0)){d=0;return d|0}if(!(Qa[f[(f[a>>2]|0)+52>>2]&127](a)|0)){d=0;return d|0}c=a+4|0;e=a+8|0;g=f[c>>2]|0;if((f[e>>2]|0)==(g|0)){d=1;return d|0}h=a+36|0;a=0;i=g;while(1){g=f[(f[h>>2]|0)+(a<<2)>>2]|0;if(!(Sa[f[(f[g>>2]|0)+8>>2]&31](g,b,f[i+(a<<2)>>2]|0)|0)){d=0;j=7;break}a=a+1|0;i=f[c>>2]|0;if(a>>>0>=(f[e>>2]|0)-i>>2>>>0){d=1;j=7;break}}if((j|0)==7)return d|0;return 0}function dj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;if((b[c+11>>0]|0)<0){g=f[c>>2]|0;h=f[c+4>>2]|0;if(h>>>0>4294967279)mq(a);if(h>>>0<11){b[a+11>>0]=h;i=a}else{j=h+16&-16;k=dn(j)|0;f[a>>2]=k;f[a+8>>2]=j|-2147483648;f[a+4>>2]=h;i=k}Lo(i,g,h)|0;b[e>>0]=0;Hp(i+h|0,e)}else{f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2]}u=d;return}function ej(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[(f[b+4>>2]|0)+80>>2];h=f[b+44>>2]|0;b=h+16|0;i=f[b+4>>2]|0;if((i|0)>0|(i|0)==0&(f[b>>2]|0)>>>0>0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=c;return}f[e>>2]=f[h+4>>2];f[d>>2]=f[e>>2];ye(h,d,g,g+4|0)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=c;return}function fj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0;b[c+53>>0]=1;do if((f[c+4>>2]|0)==(e|0)){b[c+52>>0]=1;a=c+16|0;h=f[a>>2]|0;if(!h){f[a>>2]=d;f[c+24>>2]=g;f[c+36>>2]=1;if(!((g|0)==1?(f[c+48>>2]|0)==1:0))break;b[c+54>>0]=1;break}if((h|0)!=(d|0)){h=c+36|0;f[h>>2]=(f[h>>2]|0)+1;b[c+54>>0]=1;break}h=c+24|0;a=f[h>>2]|0;if((a|0)==2){f[h>>2]=g;i=g}else i=a;if((i|0)==1?(f[c+48>>2]|0)==1:0)b[c+54>>0]=1}while(0);return}function gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=a+36|0;d=a+40|0;e=f[c>>2]|0;if((f[d>>2]|0)!=(e|0)){g=0;h=e;do{eg(h+(g*24|0)|0,b)|0;g=g+1|0;h=f[c>>2]|0}while(g>>>0<(((f[d>>2]|0)-h|0)/24|0)>>>0)}h=a+48|0;d=a+52|0;a=f[h>>2]|0;if((f[d>>2]|0)==(a|0))return 1;else{i=0;j=a}do{a=f[j+(i<<2)>>2]|0;Nh(a<<1^a>>31,b)|0;i=i+1|0;j=f[h>>2]|0}while(i>>>0<(f[d>>2]|0)-j>>2>>>0);return 1}function hj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}g=e&-4|0;h=g-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(h|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(g|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(e|0)){b[a>>0]=c;a=a+1|0}return e-d|0}function ij(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;do if(!(qp(a,f[c+8>>2]|0,g)|0)){if(qp(a,f[c>>2]|0,g)|0){if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[c+32>>2]=e;f[h>>2]=d;h=c+40|0;f[h>>2]=(f[h>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[c+32>>2]=1}}else Om(0,c,d,e);while(0);return}function jj(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+80|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=c+-4|0;d=f[b>>2]|0;if(d|0){e=c+(d<<5)|0;do{e=e+-32|0;tj(e)}while((e|0)!=(c|0))}$q(b)}b=f[a+68>>2]|0;if(b|0){c=a+72|0;e=f[c>>2]|0;if((e|0)!=(b|0))f[c>>2]=e+(~((e+-4-b|0)>>>2)<<2);br(b)}b=a+44|0;e=f[b>>2]|0;f[b>>2]=0;if(e|0)br(e);e=f[a+32>>2]|0;if(!e){tj(a);return}b=a+36|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;br(e);tj(a);return}function kj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2684;b=f[a+136>>2]|0;if(b|0){c=a+140|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+76>>2]|0;if(b|0)br(b);b=f[a+64>>2]|0;if(b|0)br(b);b=f[a+52>>2]|0;if(b|0)br(b);b=f[a+40>>2]|0;if(!b)return;br(b);return}function lj(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;if((-17-c|0)>>>0>>0)mq(a);if((b[a+11>>0]|0)<0)j=f[a>>2]|0;else j=a;if(c>>>0<2147483623){k=d+c|0;d=c<<1;l=k>>>0>>0?d:k;m=l>>>0<11?11:l+16&-16}else m=-17;l=dn(m)|0;if(g|0)Lo(l,j,g)|0;k=e-h-g|0;if(k|0)Lo(l+g+i|0,j+g+h|0,k)|0;if((c|0)!=10)br(j);f[a>>2]=l;f[a+8>>2]=m|-2147483648;return}function mj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2432;b=f[a+136>>2]|0;if(b|0){c=a+140|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b)}b=f[a+76>>2]|0;if(b|0)br(b);b=f[a+64>>2]|0;if(b|0)br(b);b=f[a+52>>2]|0;if(b|0)br(b);b=f[a+40>>2]|0;if(!b)return;br(b);return}function nj(a,b){a=a|0;b=b|0;if(!b)return;else{nj(a,f[b>>2]|0);nj(a,f[b+4>>2]|0);sj(b+20|0,f[b+24>>2]|0);br(b);return}}function oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;If(a,b,c);c=f[a+100>>2]|0;d=f[a+96>>2]|0;a=d;if((c|0)==(d|0))return;e=f[b>>2]|0;b=(c-d|0)/12|0;d=0;do{c=a+(d*12|0)|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];c=a+(d*12|0)+4|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];c=a+(d*12|0)+8|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];d=d+1|0}while(d>>>0>>0);return}function pj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=a+64|0;if((f[d>>2]|0)==0?(e=dn(32)|0,tn(e),g=f[d>>2]|0,f[d>>2]=e,g|0):0){e=f[g>>2]|0;if(e|0){h=g+4|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;br(e)}br(g)}g=Ll(f[a+28>>2]|0)|0;e=X(g,b[a+24>>0]|0)|0;g=((e|0)<0)<<31>>31;h=f[d>>2]|0;i=on(e|0,g|0,c|0,0)|0;if(!(Th(h,0,i,I)|0)){j=0;return j|0}Ak(a,f[d>>2]|0,e,g,0,0);f[a+80>>2]=c;j=1;return j|0}function qj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+64|0;e=d;if(!(qp(a,b,0)|0))if((b|0)!=0?(g=mh(b,1024,1008,0)|0,(g|0)!=0):0){b=e+4|0;h=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(h|0));f[e>>2]=g;f[e+8>>2]=a;f[e+12>>2]=-1;f[e+48>>2]=1;Ya[f[(f[g>>2]|0)+28>>2]&7](g,e,f[c>>2]|0,1);if((f[e+24>>2]|0)==1){f[c>>2]=f[e+16>>2];i=1}else i=0;j=i}else j=0;else j=1;u=d;return j|0}function rj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;if(!c){d=0;return d|0}e=c+40|0;g=c+44|0;Nh((f[g>>2]|0)-(f[e>>2]|0)>>2,b)|0;h=f[e>>2]|0;e=f[g>>2]|0;if((h|0)!=(e|0)){g=h;do{h=f[g>>2]|0;if(h|0){Nh(f[h+40>>2]|0,b)|0;Wf(a,b,h)|0}g=g+4|0}while((g|0)!=(e|0))}Wf(a,b,c)|0;d=1;return d|0}function sj(a,c){a=a|0;c=c|0;var d=0;if(!c)return;sj(a,f[c>>2]|0);sj(a,f[c+4>>2]|0);a=c+16|0;d=c+28|0;if((b[d+11>>0]|0)<0)br(f[d>>2]|0);if((b[a+11>>0]|0)<0)br(f[a>>2]|0);br(c);return}function tj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=u;u=u+16|0;c=b;d=c;f[d>>2]=0;f[d+4>>2]=0;cf(a,2,c);c=f[a+12>>2]|0;d=a+16|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e+(~((e+-4-c|0)>>>2)<<2)|0;f[d>>2]=h;g=h}f[a+24>>2]=0;f[a+28>>2]=0;if(c|0){if((g|0)!=(c|0))f[d>>2]=g+(~((g+-4-c|0)>>>2)<<2);br(c)}c=f[a>>2]|0;if(!c){u=b;return}g=a+4|0;a=f[g>>2]|0;if((a|0)!=(c|0))f[g>>2]=a+(~((a+-8-c|0)>>>3)<<3);br(c);u=b;return} -function $a(a){a=a|0;var b=0,c=0,d=0,e=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,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,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,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;b=u;u=u+16|0;c=b;do if(a>>>0<245){d=a>>>0<11?16:a+11&-8;e=d>>>3;g=f[4512]|0;h=g>>>e;if(h&3|0){i=(h&1^1)+e|0;j=18088+(i<<1<<2)|0;k=j+8|0;l=f[k>>2]|0;m=l+8|0;n=f[m>>2]|0;if((n|0)==(j|0))f[4512]=g&~(1<>2]=j;f[k>>2]=n}n=i<<3;f[l+4>>2]=n|3;i=l+n+4|0;f[i>>2]=f[i>>2]|1;o=m;u=b;return o|0}m=f[4514]|0;if(d>>>0>m>>>0){if(h|0){i=2<>>12&16;e=i>>>n;i=e>>>5&8;h=e>>>i;e=h>>>2&4;l=h>>>e;h=l>>>1&2;k=l>>>h;l=k>>>1&1;j=(i|n|e|h|l)+(k>>>l)|0;l=18088+(j<<1<<2)|0;k=l+8|0;h=f[k>>2]|0;e=h+8|0;n=f[e>>2]|0;if((n|0)==(l|0)){i=g&~(1<>2]=l;f[k>>2]=n;p=g}n=j<<3;j=n-d|0;f[h+4>>2]=d|3;k=h+d|0;f[k+4>>2]=j|1;f[h+n>>2]=j;if(m|0){n=f[4517]|0;h=m>>>3;l=18088+(h<<1<<2)|0;i=1<>2]|0;r=i}f[r>>2]=n;f[q+12>>2]=n;f[n+8>>2]=q;f[n+12>>2]=l}f[4514]=j;f[4517]=k;o=e;u=b;return o|0}e=f[4513]|0;if(e){k=(e&0-e)+-1|0;j=k>>>12&16;l=k>>>j;k=l>>>5&8;n=l>>>k;l=n>>>2&4;i=n>>>l;n=i>>>1&2;h=i>>>n;i=h>>>1&1;s=f[18352+((k|j|l|n|i)+(h>>>i)<<2)>>2]|0;i=(f[s+4>>2]&-8)-d|0;h=f[s+16+(((f[s+16>>2]|0)==0&1)<<2)>>2]|0;if(!h){t=s;v=i}else{n=s;s=i;i=h;while(1){h=(f[i+4>>2]&-8)-d|0;l=h>>>0>>0;j=l?h:s;h=l?i:n;i=f[i+16+(((f[i+16>>2]|0)==0&1)<<2)>>2]|0;if(!i){t=h;v=j;break}else{n=h;s=j}}}s=t+d|0;if(s>>>0>t>>>0){n=f[t+24>>2]|0;i=f[t+12>>2]|0;do if((i|0)==(t|0)){j=t+20|0;h=f[j>>2]|0;if(!h){l=t+16|0;k=f[l>>2]|0;if(!k){w=0;break}else{x=k;y=l}}else{x=h;y=j}while(1){j=x+20|0;h=f[j>>2]|0;if(h|0){x=h;y=j;continue}j=x+16|0;h=f[j>>2]|0;if(!h)break;else{x=h;y=j}}f[y>>2]=0;w=x}else{j=f[t+8>>2]|0;f[j+12>>2]=i;f[i+8>>2]=j;w=i}while(0);do if(n|0){i=f[t+28>>2]|0;j=18352+(i<<2)|0;if((t|0)==(f[j>>2]|0)){f[j>>2]=w;if(!w){f[4513]=e&~(1<>2]|0)!=(t|0)&1)<<2)>>2]=w;if(!w)break}f[w+24>>2]=n;i=f[t+16>>2]|0;if(i|0){f[w+16>>2]=i;f[i+24>>2]=w}i=f[t+20>>2]|0;if(i|0){f[w+20>>2]=i;f[i+24>>2]=w}}while(0);if(v>>>0<16){n=v+d|0;f[t+4>>2]=n|3;e=t+n+4|0;f[e>>2]=f[e>>2]|1}else{f[t+4>>2]=d|3;f[s+4>>2]=v|1;f[s+v>>2]=v;if(m|0){e=f[4517]|0;n=m>>>3;i=18088+(n<<1<<2)|0;j=1<>2]|0;A=j}f[A>>2]=e;f[z+12>>2]=e;f[e+8>>2]=z;f[e+12>>2]=i}f[4514]=v;f[4517]=s}o=t+8|0;u=b;return o|0}else B=d}else B=d}else B=d}else if(a>>>0<=4294967231){i=a+11|0;e=i&-8;j=f[4513]|0;if(j){n=0-e|0;h=i>>>8;if(h)if(e>>>0>16777215)C=31;else{i=(h+1048320|0)>>>16&8;l=h<>>16&4;k=l<>>16&2;D=14-(h|i|l)+(k<>>15)|0;C=e>>>(D+7|0)&1|D<<1}else C=0;D=f[18352+(C<<2)>>2]|0;a:do if(!D){E=0;F=0;G=n;H=57}else{l=0;k=n;i=D;h=e<<((C|0)==31?0:25-(C>>>1)|0);I=0;while(1){J=(f[i+4>>2]&-8)-e|0;if(J>>>0>>0)if(!J){K=0;L=i;M=i;H=61;break a}else{N=i;O=J}else{N=l;O=k}J=f[i+20>>2]|0;i=f[i+16+(h>>>31<<2)>>2]|0;P=(J|0)==0|(J|0)==(i|0)?I:J;J=(i|0)==0;if(J){E=P;F=N;G=O;H=57;break}else{l=N;k=O;h=h<<((J^1)&1);I=P}}}while(0);if((H|0)==57){if((E|0)==0&(F|0)==0){D=2<>>12&16;d=D>>>n;D=d>>>5&8;s=d>>>D;d=s>>>2&4;g=s>>>d;s=g>>>1&2;m=g>>>s;g=m>>>1&1;Q=0;R=f[18352+((D|n|d|s|g)+(m>>>g)<<2)>>2]|0}else{Q=F;R=E}if(!R){S=Q;T=G}else{K=G;L=R;M=Q;H=61}}if((H|0)==61)while(1){H=0;g=(f[L+4>>2]&-8)-e|0;m=g>>>0>>0;s=m?g:K;g=m?L:M;L=f[L+16+(((f[L+16>>2]|0)==0&1)<<2)>>2]|0;if(!L){S=g;T=s;break}else{K=s;M=g;H=61}}if((S|0)!=0?T>>>0<((f[4514]|0)-e|0)>>>0:0){g=S+e|0;if(g>>>0<=S>>>0){o=0;u=b;return o|0}s=f[S+24>>2]|0;m=f[S+12>>2]|0;do if((m|0)==(S|0)){d=S+20|0;n=f[d>>2]|0;if(!n){D=S+16|0;I=f[D>>2]|0;if(!I){U=0;break}else{V=I;W=D}}else{V=n;W=d}while(1){d=V+20|0;n=f[d>>2]|0;if(n|0){V=n;W=d;continue}d=V+16|0;n=f[d>>2]|0;if(!n)break;else{V=n;W=d}}f[W>>2]=0;U=V}else{d=f[S+8>>2]|0;f[d+12>>2]=m;f[m+8>>2]=d;U=m}while(0);do if(s){m=f[S+28>>2]|0;d=18352+(m<<2)|0;if((S|0)==(f[d>>2]|0)){f[d>>2]=U;if(!U){d=j&~(1<>2]|0)!=(S|0)&1)<<2)>>2]=U;if(!U){X=j;break}}f[U+24>>2]=s;d=f[S+16>>2]|0;if(d|0){f[U+16>>2]=d;f[d+24>>2]=U}d=f[S+20>>2]|0;if(d){f[U+20>>2]=d;f[d+24>>2]=U;X=j}else X=j}else X=j;while(0);do if(T>>>0>=16){f[S+4>>2]=e|3;f[g+4>>2]=T|1;f[g+T>>2]=T;j=T>>>3;if(T>>>0<256){s=18088+(j<<1<<2)|0;d=f[4512]|0;m=1<>2]|0;Z=m}f[Z>>2]=g;f[Y+12>>2]=g;f[g+8>>2]=Y;f[g+12>>2]=s;break}s=T>>>8;if(s)if(T>>>0>16777215)_=31;else{m=(s+1048320|0)>>>16&8;d=s<>>16&4;j=d<>>16&2;n=14-(s|m|d)+(j<>>15)|0;_=T>>>(n+7|0)&1|n<<1}else _=0;n=18352+(_<<2)|0;f[g+28>>2]=_;d=g+16|0;f[d+4>>2]=0;f[d>>2]=0;d=1<<_;if(!(X&d)){f[4513]=X|d;f[n>>2]=g;f[g+24>>2]=n;f[g+12>>2]=g;f[g+8>>2]=g;break}d=T<<((_|0)==31?0:25-(_>>>1)|0);j=f[n>>2]|0;while(1){if((f[j+4>>2]&-8|0)==(T|0)){H=97;break}$=j+16+(d>>>31<<2)|0;n=f[$>>2]|0;if(!n){H=96;break}else{d=d<<1;j=n}}if((H|0)==96){f[$>>2]=g;f[g+24>>2]=j;f[g+12>>2]=g;f[g+8>>2]=g;break}else if((H|0)==97){d=j+8|0;n=f[d>>2]|0;f[n+12>>2]=g;f[d>>2]=g;f[g+8>>2]=n;f[g+12>>2]=j;f[g+24>>2]=0;break}}else{n=T+e|0;f[S+4>>2]=n|3;d=S+n+4|0;f[d>>2]=f[d>>2]|1}while(0);o=S+8|0;u=b;return o|0}else B=e}else B=e}else B=-1;while(0);S=f[4514]|0;if(S>>>0>=B>>>0){T=S-B|0;$=f[4517]|0;if(T>>>0>15){_=$+B|0;f[4517]=_;f[4514]=T;f[_+4>>2]=T|1;f[$+S>>2]=T;f[$+4>>2]=B|3}else{f[4514]=0;f[4517]=0;f[$+4>>2]=S|3;T=$+S+4|0;f[T>>2]=f[T>>2]|1}o=$+8|0;u=b;return o|0}$=f[4515]|0;if($>>>0>B>>>0){T=$-B|0;f[4515]=T;S=f[4518]|0;_=S+B|0;f[4518]=_;f[_+4>>2]=T|1;f[S+4>>2]=B|3;o=S+8|0;u=b;return o|0}if(!(f[4630]|0)){f[4632]=4096;f[4631]=4096;f[4633]=-1;f[4634]=-1;f[4635]=0;f[4623]=0;f[4630]=c&-16^1431655768;aa=4096}else aa=f[4632]|0;c=B+48|0;S=B+47|0;T=aa+S|0;_=0-aa|0;aa=T&_;if(aa>>>0<=B>>>0){o=0;u=b;return o|0}X=f[4622]|0;if(X|0?(Y=f[4620]|0,Z=Y+aa|0,Z>>>0<=Y>>>0|Z>>>0>X>>>0):0){o=0;u=b;return o|0}b:do if(!(f[4623]&4)){X=f[4518]|0;c:do if(X){Z=18496;while(1){Y=f[Z>>2]|0;if(Y>>>0<=X>>>0?(ba=Z+4|0,(Y+(f[ba>>2]|0)|0)>>>0>X>>>0):0)break;Y=f[Z+8>>2]|0;if(!Y){H=118;break c}else Z=Y}j=T-$&_;if(j>>>0<2147483647){Y=Fl(j|0)|0;if((Y|0)==((f[Z>>2]|0)+(f[ba>>2]|0)|0))if((Y|0)==(-1|0))ca=j;else{da=j;ea=Y;H=135;break b}else{fa=Y;ga=j;H=126}}else ca=0}else H=118;while(0);do if((H|0)==118){X=Fl(0)|0;if((X|0)!=(-1|0)?(e=X,j=f[4631]|0,Y=j+-1|0,U=((Y&e|0)==0?0:(Y+e&0-j)-e|0)+aa|0,e=f[4620]|0,j=U+e|0,U>>>0>B>>>0&U>>>0<2147483647):0){Y=f[4622]|0;if(Y|0?j>>>0<=e>>>0|j>>>0>Y>>>0:0){ca=0;break}Y=Fl(U|0)|0;if((Y|0)==(X|0)){da=U;ea=X;H=135;break b}else{fa=Y;ga=U;H=126}}else ca=0}while(0);do if((H|0)==126){U=0-ga|0;if(!(c>>>0>ga>>>0&(ga>>>0<2147483647&(fa|0)!=(-1|0))))if((fa|0)==(-1|0)){ca=0;break}else{da=ga;ea=fa;H=135;break b}Y=f[4632]|0;X=S-ga+Y&0-Y;if(X>>>0>=2147483647){da=ga;ea=fa;H=135;break b}if((Fl(X|0)|0)==(-1|0)){Fl(U|0)|0;ca=0;break}else{da=X+ga|0;ea=fa;H=135;break b}}while(0);f[4623]=f[4623]|4;ha=ca;H=133}else{ha=0;H=133}while(0);if(((H|0)==133?aa>>>0<2147483647:0)?(ca=Fl(aa|0)|0,aa=Fl(0)|0,fa=aa-ca|0,ga=fa>>>0>(B+40|0)>>>0,!((ca|0)==(-1|0)|ga^1|ca>>>0>>0&((ca|0)!=(-1|0)&(aa|0)!=(-1|0))^1)):0){da=ga?fa:ha;ea=ca;H=135}if((H|0)==135){ca=(f[4620]|0)+da|0;f[4620]=ca;if(ca>>>0>(f[4621]|0)>>>0)f[4621]=ca;ca=f[4518]|0;do if(ca){ha=18496;while(1){ia=f[ha>>2]|0;ja=ha+4|0;ka=f[ja>>2]|0;if((ea|0)==(ia+ka|0)){H=143;break}fa=f[ha+8>>2]|0;if(!fa)break;else ha=fa}if(((H|0)==143?(f[ha+12>>2]&8|0)==0:0)?ea>>>0>ca>>>0&ia>>>0<=ca>>>0:0){f[ja>>2]=ka+da;fa=(f[4515]|0)+da|0;ga=ca+8|0;aa=(ga&7|0)==0?0:0-ga&7;ga=ca+aa|0;S=fa-aa|0;f[4518]=ga;f[4515]=S;f[ga+4>>2]=S|1;f[ca+fa+4>>2]=40;f[4519]=f[4634];break}if(ea>>>0<(f[4516]|0)>>>0)f[4516]=ea;fa=ea+da|0;S=18496;while(1){if((f[S>>2]|0)==(fa|0)){H=151;break}ga=f[S+8>>2]|0;if(!ga){la=18496;break}else S=ga}if((H|0)==151)if(!(f[S+12>>2]&8)){f[S>>2]=ea;ha=S+4|0;f[ha>>2]=(f[ha>>2]|0)+da;ha=ea+8|0;ga=ea+((ha&7|0)==0?0:0-ha&7)|0;ha=fa+8|0;aa=fa+((ha&7|0)==0?0:0-ha&7)|0;ha=ga+B|0;c=aa-ga-B|0;f[ga+4>>2]=B|3;do if((ca|0)!=(aa|0)){if((f[4517]|0)==(aa|0)){ba=(f[4514]|0)+c|0;f[4514]=ba;f[4517]=ha;f[ha+4>>2]=ba|1;f[ha+ba>>2]=ba;break}ba=f[aa+4>>2]|0;if((ba&3|0)==1){_=ba&-8;$=ba>>>3;d:do if(ba>>>0<256){T=f[aa+8>>2]|0;X=f[aa+12>>2]|0;if((X|0)==(T|0)){f[4512]=f[4512]&~(1<<$);break}else{f[T+12>>2]=X;f[X+8>>2]=T;break}}else{T=f[aa+24>>2]|0;X=f[aa+12>>2]|0;do if((X|0)==(aa|0)){U=aa+16|0;Y=U+4|0;j=f[Y>>2]|0;if(!j){e=f[U>>2]|0;if(!e){ma=0;break}else{na=e;oa=U}}else{na=j;oa=Y}while(1){Y=na+20|0;j=f[Y>>2]|0;if(j|0){na=j;oa=Y;continue}Y=na+16|0;j=f[Y>>2]|0;if(!j)break;else{na=j;oa=Y}}f[oa>>2]=0;ma=na}else{Y=f[aa+8>>2]|0;f[Y+12>>2]=X;f[X+8>>2]=Y;ma=X}while(0);if(!T)break;X=f[aa+28>>2]|0;Y=18352+(X<<2)|0;do if((f[Y>>2]|0)!=(aa|0)){f[T+16+(((f[T+16>>2]|0)!=(aa|0)&1)<<2)>>2]=ma;if(!ma)break d}else{f[Y>>2]=ma;if(ma|0)break;f[4513]=f[4513]&~(1<>2]=T;X=aa+16|0;Y=f[X>>2]|0;if(Y|0){f[ma+16>>2]=Y;f[Y+24>>2]=ma}Y=f[X+4>>2]|0;if(!Y)break;f[ma+20>>2]=Y;f[Y+24>>2]=ma}while(0);pa=aa+_|0;qa=_+c|0}else{pa=aa;qa=c}$=pa+4|0;f[$>>2]=f[$>>2]&-2;f[ha+4>>2]=qa|1;f[ha+qa>>2]=qa;$=qa>>>3;if(qa>>>0<256){ba=18088+($<<1<<2)|0;Z=f[4512]|0;Y=1<<$;if(!(Z&Y)){f[4512]=Z|Y;ra=ba;sa=ba+8|0}else{Y=ba+8|0;ra=f[Y>>2]|0;sa=Y}f[sa>>2]=ha;f[ra+12>>2]=ha;f[ha+8>>2]=ra;f[ha+12>>2]=ba;break}ba=qa>>>8;do if(!ba)ta=0;else{if(qa>>>0>16777215){ta=31;break}Y=(ba+1048320|0)>>>16&8;Z=ba<>>16&4;X=Z<<$;Z=(X+245760|0)>>>16&2;j=14-($|Y|Z)+(X<>>15)|0;ta=qa>>>(j+7|0)&1|j<<1}while(0);ba=18352+(ta<<2)|0;f[ha+28>>2]=ta;_=ha+16|0;f[_+4>>2]=0;f[_>>2]=0;_=f[4513]|0;j=1<>2]=ha;f[ha+24>>2]=ba;f[ha+12>>2]=ha;f[ha+8>>2]=ha;break}j=qa<<((ta|0)==31?0:25-(ta>>>1)|0);_=f[ba>>2]|0;while(1){if((f[_+4>>2]&-8|0)==(qa|0)){H=192;break}ua=_+16+(j>>>31<<2)|0;ba=f[ua>>2]|0;if(!ba){H=191;break}else{j=j<<1;_=ba}}if((H|0)==191){f[ua>>2]=ha;f[ha+24>>2]=_;f[ha+12>>2]=ha;f[ha+8>>2]=ha;break}else if((H|0)==192){j=_+8|0;ba=f[j>>2]|0;f[ba+12>>2]=ha;f[j>>2]=ha;f[ha+8>>2]=ba;f[ha+12>>2]=_;f[ha+24>>2]=0;break}}else{ba=(f[4515]|0)+c|0;f[4515]=ba;f[4518]=ha;f[ha+4>>2]=ba|1}while(0);o=ga+8|0;u=b;return o|0}else la=18496;while(1){ha=f[la>>2]|0;if(ha>>>0<=ca>>>0?(va=ha+(f[la+4>>2]|0)|0,va>>>0>ca>>>0):0)break;la=f[la+8>>2]|0}ga=va+-47|0;ha=ga+8|0;c=ga+((ha&7|0)==0?0:0-ha&7)|0;ha=ca+16|0;ga=c>>>0>>0?ca:c;c=ga+8|0;aa=da+-40|0;fa=ea+8|0;S=(fa&7|0)==0?0:0-fa&7;fa=ea+S|0;ba=aa-S|0;f[4518]=fa;f[4515]=ba;f[fa+4>>2]=ba|1;f[ea+aa+4>>2]=40;f[4519]=f[4634];aa=ga+4|0;f[aa>>2]=27;f[c>>2]=f[4624];f[c+4>>2]=f[4625];f[c+8>>2]=f[4626];f[c+12>>2]=f[4627];f[4624]=ea;f[4625]=da;f[4627]=0;f[4626]=c;c=ga+24|0;do{ba=c;c=c+4|0;f[c>>2]=7}while((ba+8|0)>>>0>>0);if((ga|0)!=(ca|0)){c=ga-ca|0;f[aa>>2]=f[aa>>2]&-2;f[ca+4>>2]=c|1;f[ga>>2]=c;ba=c>>>3;if(c>>>0<256){fa=18088+(ba<<1<<2)|0;S=f[4512]|0;j=1<>2]|0;xa=j}f[xa>>2]=ca;f[wa+12>>2]=ca;f[ca+8>>2]=wa;f[ca+12>>2]=fa;break}fa=c>>>8;if(fa)if(c>>>0>16777215)ya=31;else{j=(fa+1048320|0)>>>16&8;S=fa<>>16&4;ba=S<>>16&2;Z=14-(fa|j|S)+(ba<>>15)|0;ya=c>>>(Z+7|0)&1|Z<<1}else ya=0;Z=18352+(ya<<2)|0;f[ca+28>>2]=ya;f[ca+20>>2]=0;f[ha>>2]=0;S=f[4513]|0;ba=1<>2]=ca;f[ca+24>>2]=Z;f[ca+12>>2]=ca;f[ca+8>>2]=ca;break}ba=c<<((ya|0)==31?0:25-(ya>>>1)|0);S=f[Z>>2]|0;while(1){if((f[S+4>>2]&-8|0)==(c|0)){H=213;break}za=S+16+(ba>>>31<<2)|0;Z=f[za>>2]|0;if(!Z){H=212;break}else{ba=ba<<1;S=Z}}if((H|0)==212){f[za>>2]=ca;f[ca+24>>2]=S;f[ca+12>>2]=ca;f[ca+8>>2]=ca;break}else if((H|0)==213){ba=S+8|0;c=f[ba>>2]|0;f[c+12>>2]=ca;f[ba>>2]=ca;f[ca+8>>2]=c;f[ca+12>>2]=S;f[ca+24>>2]=0;break}}}else{c=f[4516]|0;if((c|0)==0|ea>>>0>>0)f[4516]=ea;f[4624]=ea;f[4625]=da;f[4627]=0;f[4521]=f[4630];f[4520]=-1;f[4525]=18088;f[4524]=18088;f[4527]=18096;f[4526]=18096;f[4529]=18104;f[4528]=18104;f[4531]=18112;f[4530]=18112;f[4533]=18120;f[4532]=18120;f[4535]=18128;f[4534]=18128;f[4537]=18136;f[4536]=18136;f[4539]=18144;f[4538]=18144;f[4541]=18152;f[4540]=18152;f[4543]=18160;f[4542]=18160;f[4545]=18168;f[4544]=18168;f[4547]=18176;f[4546]=18176;f[4549]=18184;f[4548]=18184;f[4551]=18192;f[4550]=18192;f[4553]=18200;f[4552]=18200;f[4555]=18208;f[4554]=18208;f[4557]=18216;f[4556]=18216;f[4559]=18224;f[4558]=18224;f[4561]=18232;f[4560]=18232;f[4563]=18240;f[4562]=18240;f[4565]=18248;f[4564]=18248;f[4567]=18256;f[4566]=18256;f[4569]=18264;f[4568]=18264;f[4571]=18272;f[4570]=18272;f[4573]=18280;f[4572]=18280;f[4575]=18288;f[4574]=18288;f[4577]=18296;f[4576]=18296;f[4579]=18304;f[4578]=18304;f[4581]=18312;f[4580]=18312;f[4583]=18320;f[4582]=18320;f[4585]=18328;f[4584]=18328;f[4587]=18336;f[4586]=18336;c=da+-40|0;ba=ea+8|0;ha=(ba&7|0)==0?0:0-ba&7;ba=ea+ha|0;ga=c-ha|0;f[4518]=ba;f[4515]=ga;f[ba+4>>2]=ga|1;f[ea+c+4>>2]=40;f[4519]=f[4634]}while(0);ea=f[4515]|0;if(ea>>>0>B>>>0){da=ea-B|0;f[4515]=da;ea=f[4518]|0;ca=ea+B|0;f[4518]=ca;f[ca+4>>2]=da|1;f[ea+4>>2]=B|3;o=ea+8|0;u=b;return o|0}}ea=ir()|0;f[ea>>2]=12;o=0;u=b;return o|0}function ab(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0.0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0;i=u;u=u+240|0;j=i+104|0;k=i+224|0;l=i+176|0;m=i+160|0;n=i+228|0;o=i+72|0;p=i+40|0;q=i+132|0;r=i;s=i+172|0;t=i+156|0;v=i+152|0;w=i+148|0;x=i+144|0;y=i+128|0;z=a+8|0;Ah(z,c,e,g);e=f[a+48>>2]|0;A=f[a+52>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{oi(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else oi(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)mq(m);else{D=g<<2;B=dn(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;hj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+152|0;D=a+156|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else oi(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=dn(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;hj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+56|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>>2;R=e+64|0;S=e+28|0;T=(g|0)>0;U=r+4|0;V=r+8|0;Z=r+12|0;_=a+152|0;$=a+112|0;aa=r+16|0;ba=r+28|0;ca=a+16|0;da=a+32|0;ea=a+12|0;fa=a+28|0;ga=a+20|0;ha=a+24|0;ia=r+28|0;ja=r+16|0;ka=r+20|0;la=r+32|0;ma=n+1|0;na=g<<2;oa=(g|0)==1;pa=Q+-1|0;if(F-D>>2>>>0>pa>>>0){qa=Q;ra=pa;sa=D;ta=M;ua=P;va=O;wa=M;xa=N;ya=M;za=N}else{Aa=G;mq(Aa)}b:while(1){pa=f[sa+(ra<<2)>>2]|0;Q=(((pa>>>0)%3|0|0)==0?2:-1)+pa|0;Ba=Q>>>5;Ca=1<<(Q&31);Da=(pa|0)==-1|(Q|0)==-1;Ea=1;Fa=0;Ga=pa;c:while(1){Ha=Ea^1;Ia=Fa;Ja=Ga;while(1){if((Ja|0)==-1){Ka=Ia;break c}La=f[l+(Ia*12|0)>>2]|0;if(((f[(f[e>>2]|0)+(Ja>>>5<<2)>>2]&1<<(Ja&31)|0)==0?(Ma=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ja<<2)>>2]|0,(Ma|0)!=-1):0)?(Na=f[S>>2]|0,Oa=f[A>>2]|0,Pa=f[Oa+(f[Na+(Ma<<2)>>2]<<2)>>2]|0,Qa=Ma+1|0,Ra=f[Oa+(f[Na+((((Qa>>>0)%3|0|0)==0?Ma+-2|0:Qa)<<2)>>2]<<2)>>2]|0,Qa=f[Oa+(f[Na+((((Ma>>>0)%3|0|0)==0?2:-1)+Ma<<2)>>2]<<2)>>2]|0,(Pa|0)<(ra|0)&(Ra|0)<(ra|0)&(Qa|0)<(ra|0)):0){Ma=X(Pa,g)|0;Pa=X(Ra,g)|0;Ra=X(Qa,g)|0;if(T){Qa=0;do{f[La+(Qa<<2)>>2]=(f[c+(Qa+Ra<<2)>>2]|0)+(f[c+(Qa+Pa<<2)>>2]|0)-(f[c+(Qa+Ma<<2)>>2]|0);Qa=Qa+1|0}while((Qa|0)!=(g|0))}Qa=Ia+1|0;if((Qa|0)==4){Ka=4;break c}else Sa=Qa}else Sa=Ia;do if(Ea){Qa=Ja+1|0;Ma=((Qa>>>0)%3|0|0)==0?Ja+-2|0:Qa;if(((Ma|0)!=-1?(f[(f[e>>2]|0)+(Ma>>>5<<2)>>2]&1<<(Ma&31)|0)==0:0)?(Qa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ma<<2)>>2]|0,Ma=Qa+1|0,(Qa|0)!=-1):0)Ta=((Ma>>>0)%3|0|0)==0?Qa+-2|0:Ma;else Ta=-1}else{Ma=(((Ja>>>0)%3|0|0)==0?2:-1)+Ja|0;if(((Ma|0)!=-1?(f[(f[e>>2]|0)+(Ma>>>5<<2)>>2]&1<<(Ma&31)|0)==0:0)?(Qa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ma<<2)>>2]|0,(Qa|0)!=-1):0)if(!((Qa>>>0)%3|0)){Ta=Qa+2|0;break}else{Ta=Qa+-1|0;break}else Ta=-1}while(0);if((Ta|0)==(pa|0)){Ka=Sa;break c}if((Ta|0)!=-1|Ha){Ia=Sa;Ja=Ta}else break}if(Da){Ea=0;Fa=Sa;Ga=-1;continue}if(f[(f[e>>2]|0)+(Ba<<2)>>2]&Ca|0){Ea=0;Fa=Sa;Ga=-1;continue}Ja=f[(f[(f[R>>2]|0)+12>>2]|0)+(Q<<2)>>2]|0;if((Ja|0)==-1){Ea=0;Fa=Sa;Ga=-1;continue}if(!((Ja>>>0)%3|0)){Ea=0;Fa=Sa;Ga=Ja+2|0;continue}else{Ea=0;Fa=Sa;Ga=Ja+-1|0;continue}}Ga=X(ra,g)|0;f[r>>2]=0;f[U>>2]=0;b[V>>0]=0;f[Z>>2]=0;f[Z+4>>2]=0;f[Z+8>>2]=0;f[Z+12>>2]=0;f[Z+16>>2]=0;f[Z+20>>2]=0;f[Z+24>>2]=0;Fa=c+((X(qa+-2|0,g)|0)<<2)|0;Ea=c+(Ga<<2)|0;Q=f[_>>2]|0;if(T){Ca=0;Ba=0;while(1){Da=(f[Fa+(Ca<<2)>>2]|0)-(f[Ea+(Ca<<2)>>2]|0)|0;pa=((Da|0)>-1?Da:0-Da|0)+Ba|0;f[ta+(Ca<<2)>>2]=Da;f[Q+(Ca<<2)>>2]=Da<<1^Da>>31;Ca=Ca+1|0;if((Ca|0)==(g|0)){Ua=pa;break}else Ba=pa}}else Ua=0;ho(j,$,Q,g);Ba=Tk(j)|0;Ca=I;pa=om(j)|0;Da=Tn(pa|0,I|0,Ba|0,Ca|0)|0;Ca=I;Ba=(Ka|0)>0;if(Ba){pa=Ka+-1|0;Ja=p+(pa<<3)|0;Ia=Ja;Ha=Tn(f[Ia>>2]|0,f[Ia+4>>2]|0,Ka|0,((Ka|0)<0)<<31>>31|0)|0;Ia=I;Qa=Ja;f[Qa>>2]=Ha;f[Qa+4>>2]=Ia;Va=+W(+(+jm(Ha,f[o+(pa<<3)>>2]|0)*(+(Ha>>>0)+4294967296.0*+(Ia|0))));Ia=Tn(Da|0,Ca|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;Wa=Ia}else Wa=Da;Da=r;f[Da>>2]=Wa;f[Da+4>>2]=Ua;b[V>>0]=0;f[Z>>2]=0;Mf(aa,Fa,Fa+(g<<2)|0);f[s>>2]=ua;f[t>>2]=va;f[k>>2]=f[s>>2];f[j>>2]=f[t>>2];tf(ba,k,j);if((Ka|0)<1){Xa=za;Ya=ya;Za=xa;_a=wa;$a=va;ab=ua;bb=ua}else{Da=n+Ka|0;Ia=f[q>>2]|0;Ca=Ka+-1|0;Ha=o+(Ca<<3)|0;pa=p+(Ca<<3)|0;Ca=Ia;Qa=f[H>>2]|0;Ja=Da+-1|0;Ma=(Ja|0)==(n|0);Pa=Da+-2|0;Ra=ma>>>0>>0;La=~Ka;Na=Ka+2+((La|0)>-2?La:-2)|0;La=Qa;Oa=Ja>>>0>n>>>0;cb=0;db=1;while(1){cb=cb+1|0;hj(n|0,1,Na|0)|0;hj(n|0,0,cb|0)|0;d:while(1){if(T){hj(f[m>>2]|0,0,na|0)|0;eb=f[m>>2]|0;fb=0;gb=0;while(1){if(!(b[n+fb>>0]|0)){hb=f[l+(fb*12|0)>>2]|0;ib=0;do{jb=eb+(ib<<2)|0;f[jb>>2]=(f[jb>>2]|0)+(f[hb+(ib<<2)>>2]|0);ib=ib+1|0}while((ib|0)!=(g|0));kb=(1<>0]|0))mb=(1<>2]|0;do if(T){f[fb>>2]=(f[fb>>2]|0)/(db|0)|0;if(!oa){gb=1;do{eb=fb+(gb<<2)|0;f[eb>>2]=(f[eb>>2]|0)/(db|0)|0;gb=gb+1|0}while((gb|0)!=(g|0));gb=f[_>>2]|0;if(T)nb=gb;else{ob=0;pb=gb;break}}else nb=f[_>>2]|0;gb=0;eb=0;while(1){ib=(f[fb+(gb<<2)>>2]|0)-(f[Ea+(gb<<2)>>2]|0)|0;hb=((ib|0)>-1?ib:0-ib|0)+eb|0;f[Ia+(gb<<2)>>2]=ib;f[nb+(gb<<2)>>2]=ib<<1^ib>>31;gb=gb+1|0;if((gb|0)==(g|0)){ob=hb;pb=nb;break}else eb=hb}}else{ob=0;pb=f[_>>2]|0}while(0);ho(j,$,pb,g);fb=Tk(j)|0;eb=I;gb=om(j)|0;hb=Tn(gb|0,I|0,fb|0,eb|0)|0;eb=I;if(Ba){fb=Ha;gb=Tn(f[fb>>2]|0,f[fb+4>>2]|0,db|0,0)|0;fb=pa;ib=f[fb>>2]|0;jb=f[fb+4>>2]|0;Va=+W(+(+jm(ib,gb)*(+(ib>>>0)+4294967296.0*+(jb|0))));jb=Tn(hb|0,eb|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;qb=jb}else qb=hb;hb=f[r>>2]|0;if(!((qb|0)>=(hb|0)?!((qb|0)<=(hb|0)?(ob|0)<(f[U>>2]|0):0):0)){hb=r;f[hb>>2]=qb;f[hb+4>>2]=ob;b[V>>0]=lb;f[Z>>2]=db;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[k>>2]=f[v>>2];f[j>>2]=f[w>>2];tf(aa,k,j);f[x>>2]=Ca;f[y>>2]=Qa;f[k>>2]=f[x>>2];f[j>>2]=f[y>>2];tf(ba,k,j)}if(Ma)break;rb=b[Ja>>0]|0;hb=-1;jb=rb;while(1){eb=hb+-1|0;sb=Da+eb|0;ib=jb;jb=b[sb>>0]|0;if((jb&255)<(ib&255))break;if((sb|0)==(n|0)){tb=86;break d}else hb=eb}eb=Da+hb|0;if((jb&255)<(rb&255)){ub=Ja;vb=rb}else{ib=Da;gb=Ja;while(1){fb=gb+-1|0;if((jb&255)<(h[ib+-2>>0]|0)){ub=fb;vb=1;break}else{wb=gb;gb=fb;ib=wb}}}b[sb>>0]=vb;b[ub>>0]=jb;if((hb|0)<-1){xb=eb;yb=Ja}else continue;while(1){ib=b[xb>>0]|0;b[xb>>0]=b[yb>>0]|0;b[yb>>0]=ib;ib=xb+1|0;gb=yb+-1|0;if(ib>>>0>>0){xb=ib;yb=gb}else continue d}}if(((tb|0)==86?(tb=0,Oa):0)?(eb=b[n>>0]|0,b[n>>0]=rb,b[Ja>>0]=eb,Ra):0){eb=Pa;hb=ma;do{jb=b[hb>>0]|0;b[hb>>0]=b[eb>>0]|0;b[eb>>0]=jb;hb=hb+1|0;eb=eb+-1|0}while(hb>>>0>>0)}if((db|0)>=(Ka|0)){Xa=La;Ya=Ia;Za=La;_a=Ia;$a=Qa;ab=Ca;bb=Ia;break}else db=db+1|0}}if(Ba){db=f[Z>>2]|0;Ia=o+(Ka+-1<<3)|0;Ca=Ia;Qa=Tn(f[Ca>>2]|0,f[Ca+4>>2]|0,db|0,((db|0)<0)<<31>>31|0)|0;db=Ia;f[db>>2]=Qa;f[db+4>>2]=I}if(T){db=f[ba>>2]|0;Qa=f[C>>2]|0;Ia=0;do{Ca=f[db+(Ia<<2)>>2]|0;f[Qa+(Ia<<2)>>2]=Ca<<1^Ca>>31;Ia=Ia+1|0}while((Ia|0)!=(g|0));zb=Qa}else zb=f[C>>2]|0;go(j,$,zb,g);if(Ba){Qa=Ka+-1|0;Ab=a+60+(Qa*12|0)|0;Ia=a+60+(Qa*12|0)+4|0;db=a+60+(Qa*12|0)+8|0;Qa=0;do{Ca=f[Ia>>2]|0;La=f[db>>2]|0;Pa=(Ca|0)==(La<<5|0);if(!(1<>0])){if(Pa){if((Ca+1|0)<0){tb=114;break b}Ra=La<<6;Ja=Ca+32&-32;hi(Ab,Ca>>>0<1073741823?(Ra>>>0>>0?Ja:Ra):2147483647);Bb=f[Ia>>2]|0}else Bb=Ca;f[Ia>>2]=Bb+1;Ra=(f[Ab>>2]|0)+(Bb>>>5<<2)|0;f[Ra>>2]=f[Ra>>2]|1<<(Bb&31)}else{if(Pa){if((Ca+1|0)<0){tb=119;break b}Pa=La<<6;La=Ca+32&-32;hi(Ab,Ca>>>0<1073741823?(Pa>>>0>>0?La:Pa):2147483647);Cb=f[Ia>>2]|0}else Cb=Ca;f[Ia>>2]=Cb+1;Ca=(f[Ab>>2]|0)+(Cb>>>5<<2)|0;f[Ca>>2]=f[Ca>>2]&~(1<<(Cb&31))}Qa=Qa+1|0}while((Qa|0)<(Ka|0))}Qa=d+(Ga<<2)|0;Ia=f[z>>2]|0;if((Ia|0)>0){db=0;Ba=f[aa>>2]|0;Ca=Ia;while(1){if((Ca|0)>0){Ia=0;do{Pa=f[Ba+(Ia<<2)>>2]|0;La=f[ca>>2]|0;if((Pa|0)>(La|0)){Ra=f[da>>2]|0;f[Ra+(Ia<<2)>>2]=La;Db=Ra}else{Ra=f[ea>>2]|0;La=f[da>>2]|0;f[La+(Ia<<2)>>2]=(Pa|0)<(Ra|0)?Ra:Pa;Db=La}Ia=Ia+1|0}while((Ia|0)<(f[z>>2]|0));Eb=Db}else Eb=f[da>>2]|0;Ia=(f[Ea+(db<<2)>>2]|0)-(f[Eb+(db<<2)>>2]|0)|0;La=Qa+(db<<2)|0;f[La>>2]=Ia;do if((Ia|0)<(f[fa>>2]|0)){Fb=(f[ga>>2]|0)+Ia|0;tb=109}else{if((Ia|0)<=(f[ha>>2]|0))break;Fb=Ia-(f[ga>>2]|0)|0;tb=109}while(0);if((tb|0)==109){tb=0;f[La>>2]=Fb}db=db+1|0;Ca=f[z>>2]|0;if((db|0)>=(Ca|0))break;else Ba=Eb}}Ba=f[ia>>2]|0;if(Ba|0){Ca=f[la>>2]|0;if((Ca|0)!=(Ba|0))f[la>>2]=Ca+(~((Ca+-4-Ba|0)>>>2)<<2);br(Ba)}Ba=f[ja>>2]|0;if(Ba|0){Ca=f[ka>>2]|0;if((Ca|0)!=(Ba|0))f[ka>>2]=Ca+(~((Ca+-4-Ba|0)>>>2)<<2);br(Ba)}if((qa|0)<=2){Gb=_a;Hb=Za;break a}Ba=f[B>>2]|0;sa=f[Ba>>2]|0;Ca=ra+-1|0;if((f[Ba+4>>2]|0)-sa>>2>>>0<=Ca>>>0){Aa=Ba;tb=18;break}else{Ba=ra;ra=Ca;ta=bb;ua=ab;va=$a;wa=_a;xa=Za;ya=Ya;za=Xa;qa=Ba}}if((tb|0)==18)mq(Aa);else if((tb|0)==114)mq(Ab);else if((tb|0)==119)mq(Ab)}else{Gb=M;Hb=N}while(0);N=f[l>>2]|0;if((g|0)>0?(f[N>>2]=0,(g|0)!=1):0){M=1;do{f[N+(M<<2)>>2]=0;M=M+1|0}while((M|0)!=(g|0))}g=f[z>>2]|0;if((g|0)>0){M=a+16|0;Ab=a+32|0;Aa=a+12|0;qa=a+28|0;Xa=a+20|0;za=a+24|0;a=0;Ya=N;N=g;while(1){if((N|0)>0){g=0;do{ya=f[Ya+(g<<2)>>2]|0;Za=f[M>>2]|0;if((ya|0)>(Za|0)){xa=f[Ab>>2]|0;f[xa+(g<<2)>>2]=Za;Ib=xa}else{xa=f[Aa>>2]|0;Za=f[Ab>>2]|0;f[Za+(g<<2)>>2]=(ya|0)<(xa|0)?xa:ya;Ib=Za}g=g+1|0}while((g|0)<(f[z>>2]|0));Jb=Ib}else Jb=f[Ab>>2]|0;g=(f[c+(a<<2)>>2]|0)-(f[Jb+(a<<2)>>2]|0)|0;Za=d+(a<<2)|0;f[Za>>2]=g;if((g|0)>=(f[qa>>2]|0)){if((g|0)>(f[za>>2]|0)){Kb=g-(f[Xa>>2]|0)|0;tb=145}}else{Kb=(f[Xa>>2]|0)+g|0;tb=145}if((tb|0)==145){tb=0;f[Za>>2]=Kb}a=a+1|0;N=f[z>>2]|0;if((a|0)>=(N|0))break;else Ya=Jb}}if(Gb|0){if((Hb|0)!=(Gb|0))f[H>>2]=Hb+(~((Hb+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[m>>2]|0;if(Gb|0){m=f[E>>2]|0;if((m|0)!=(Gb|0))f[E>>2]=m+(~((m+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[l+36>>2]|0;if(Gb|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Gb|0))f[m>>2]=E+(~((E+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[l+24>>2]|0;if(Gb|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Gb|0))f[E>>2]=m+(~((m+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[l+12>>2]|0;if(Gb|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Gb|0))f[m>>2]=E+(~((E+-4-Gb|0)>>>2)<<2);br(Gb)}Gb=f[l>>2]|0;if(!Gb){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Gb|0))f[E>>2]=l+(~((l+-4-Gb|0)>>>2)<<2);br(Gb);u=i;return 1}function bb(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0.0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0;i=u;u=u+240|0;j=i+104|0;k=i+224|0;l=i+176|0;m=i+160|0;n=i+228|0;o=i+72|0;p=i+40|0;q=i+132|0;r=i;s=i+172|0;t=i+156|0;v=i+152|0;w=i+148|0;x=i+144|0;y=i+128|0;z=a+8|0;Ah(z,c,e,g);e=f[a+48>>2]|0;A=f[a+52>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{oi(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else oi(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)mq(m);else{D=g<<2;B=dn(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;hj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+152|0;D=a+156|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else oi(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=dn(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;hj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+56|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>>2;R=e+12|0;S=(g|0)>0;T=r+4|0;U=r+8|0;V=r+12|0;Z=a+152|0;_=a+112|0;$=r+16|0;aa=r+28|0;ba=a+16|0;ca=a+32|0;da=a+12|0;ea=a+28|0;fa=a+20|0;ga=a+24|0;ha=r+28|0;ia=r+16|0;ja=r+20|0;ka=r+32|0;la=n+1|0;ma=g<<2;na=(g|0)==1;oa=Q+-1|0;if(F-D>>2>>>0>oa>>>0){pa=Q;qa=oa;ra=D;sa=M;ta=P;ua=O;va=M;wa=N;xa=M;ya=N}else{za=G;mq(za)}b:while(1){oa=f[ra+(qa<<2)>>2]|0;Q=(((oa>>>0)%3|0|0)==0?2:-1)+oa|0;Aa=(oa|0)==-1|(Q|0)==-1;Ba=1;Ca=0;Da=oa;c:while(1){Ea=Ba^1;Fa=Ca;Ga=Da;while(1){if((Ga|0)==-1){Ha=Fa;break c}Ia=f[l+(Fa*12|0)>>2]|0;Ja=f[R>>2]|0;Ka=f[Ja+(Ga<<2)>>2]|0;if((Ka|0)!=-1){La=f[e>>2]|0;Ma=f[A>>2]|0;Na=f[Ma+(f[La+(Ka<<2)>>2]<<2)>>2]|0;Oa=Ka+1|0;Pa=((Oa>>>0)%3|0|0)==0?Ka+-2|0:Oa;if((Pa|0)==-1)Qa=-1;else Qa=f[La+(Pa<<2)>>2]|0;Pa=f[Ma+(Qa<<2)>>2]|0;Oa=(((Ka>>>0)%3|0|0)==0?2:-1)+Ka|0;if((Oa|0)==-1)Ra=-1;else Ra=f[La+(Oa<<2)>>2]|0;Oa=f[Ma+(Ra<<2)>>2]|0;if((Na|0)<(qa|0)&(Pa|0)<(qa|0)&(Oa|0)<(qa|0)){Ma=X(Na,g)|0;Na=X(Pa,g)|0;Pa=X(Oa,g)|0;if(S){Oa=0;do{f[Ia+(Oa<<2)>>2]=(f[c+(Oa+Pa<<2)>>2]|0)+(f[c+(Oa+Na<<2)>>2]|0)-(f[c+(Oa+Ma<<2)>>2]|0);Oa=Oa+1|0}while((Oa|0)!=(g|0))}Oa=Fa+1|0;if((Oa|0)==4){Ha=4;break c}else Sa=Oa}else Sa=Fa}else Sa=Fa;do if(Ba){Oa=Ga+1|0;Ma=((Oa>>>0)%3|0|0)==0?Ga+-2|0:Oa;if((Ma|0)!=-1?(Oa=f[Ja+(Ma<<2)>>2]|0,Ma=Oa+1|0,(Oa|0)!=-1):0)Ta=((Ma>>>0)%3|0|0)==0?Oa+-2|0:Ma;else Ta=-1}else{Ma=(((Ga>>>0)%3|0|0)==0?2:-1)+Ga|0;if((Ma|0)!=-1?(Oa=f[Ja+(Ma<<2)>>2]|0,(Oa|0)!=-1):0)if(!((Oa>>>0)%3|0)){Ta=Oa+2|0;break}else{Ta=Oa+-1|0;break}else Ta=-1}while(0);if((Ta|0)==(oa|0)){Ha=Sa;break c}if((Ta|0)!=-1|Ea){Fa=Sa;Ga=Ta}else break}if(Aa){Ba=0;Ca=Sa;Da=-1;continue}Ga=f[Ja+(Q<<2)>>2]|0;if((Ga|0)==-1){Ba=0;Ca=Sa;Da=-1;continue}if(!((Ga>>>0)%3|0)){Ba=0;Ca=Sa;Da=Ga+2|0;continue}else{Ba=0;Ca=Sa;Da=Ga+-1|0;continue}}Da=X(qa,g)|0;f[r>>2]=0;f[T>>2]=0;b[U>>0]=0;f[V>>2]=0;f[V+4>>2]=0;f[V+8>>2]=0;f[V+12>>2]=0;f[V+16>>2]=0;f[V+20>>2]=0;f[V+24>>2]=0;Ca=c+((X(pa+-2|0,g)|0)<<2)|0;Ba=c+(Da<<2)|0;Q=f[Z>>2]|0;if(S){Aa=0;oa=0;while(1){Ga=(f[Ca+(Aa<<2)>>2]|0)-(f[Ba+(Aa<<2)>>2]|0)|0;Fa=((Ga|0)>-1?Ga:0-Ga|0)+oa|0;f[sa+(Aa<<2)>>2]=Ga;f[Q+(Aa<<2)>>2]=Ga<<1^Ga>>31;Aa=Aa+1|0;if((Aa|0)==(g|0)){Ua=Fa;break}else oa=Fa}}else Ua=0;ho(j,_,Q,g);oa=Tk(j)|0;Aa=I;Fa=om(j)|0;Ga=Tn(Fa|0,I|0,oa|0,Aa|0)|0;Aa=I;oa=(Ha|0)>0;if(oa){Fa=Ha+-1|0;Ea=p+(Fa<<3)|0;Oa=Ea;Ma=Tn(f[Oa>>2]|0,f[Oa+4>>2]|0,Ha|0,((Ha|0)<0)<<31>>31|0)|0;Oa=I;Na=Ea;f[Na>>2]=Ma;f[Na+4>>2]=Oa;Va=+W(+(+jm(Ma,f[o+(Fa<<3)>>2]|0)*(+(Ma>>>0)+4294967296.0*+(Oa|0))));Oa=Tn(Ga|0,Aa|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;Wa=Oa}else Wa=Ga;Ga=r;f[Ga>>2]=Wa;f[Ga+4>>2]=Ua;b[U>>0]=0;f[V>>2]=0;Mf($,Ca,Ca+(g<<2)|0);f[s>>2]=ta;f[t>>2]=ua;f[k>>2]=f[s>>2];f[j>>2]=f[t>>2];tf(aa,k,j);if((Ha|0)<1){Xa=ya;Ya=xa;Za=wa;_a=va;$a=ua;ab=ta;bb=ta}else{Ga=n+Ha|0;Oa=f[q>>2]|0;Aa=Ha+-1|0;Ma=o+(Aa<<3)|0;Fa=p+(Aa<<3)|0;Aa=Oa;Na=f[H>>2]|0;Ea=Ga+-1|0;Pa=(Ea|0)==(n|0);Ia=Ga+-2|0;La=la>>>0>>0;Ka=~Ha;cb=Ha+2+((Ka|0)>-2?Ka:-2)|0;Ka=Na;db=Ea>>>0>n>>>0;eb=0;fb=1;while(1){eb=eb+1|0;hj(n|0,1,cb|0)|0;hj(n|0,0,eb|0)|0;d:while(1){if(S){hj(f[m>>2]|0,0,ma|0)|0;gb=f[m>>2]|0;hb=0;ib=0;while(1){if(!(b[n+hb>>0]|0)){jb=f[l+(hb*12|0)>>2]|0;kb=0;do{lb=gb+(kb<<2)|0;f[lb>>2]=(f[lb>>2]|0)+(f[jb+(kb<<2)>>2]|0);kb=kb+1|0}while((kb|0)!=(g|0));mb=(1<>0]|0))ob=(1<>2]|0;do if(S){f[hb>>2]=(f[hb>>2]|0)/(fb|0)|0;if(!na){ib=1;do{gb=hb+(ib<<2)|0;f[gb>>2]=(f[gb>>2]|0)/(fb|0)|0;ib=ib+1|0}while((ib|0)!=(g|0));ib=f[Z>>2]|0;if(S)pb=ib;else{qb=0;rb=ib;break}}else pb=f[Z>>2]|0;ib=0;gb=0;while(1){kb=(f[hb+(ib<<2)>>2]|0)-(f[Ba+(ib<<2)>>2]|0)|0;jb=((kb|0)>-1?kb:0-kb|0)+gb|0;f[Oa+(ib<<2)>>2]=kb;f[pb+(ib<<2)>>2]=kb<<1^kb>>31;ib=ib+1|0;if((ib|0)==(g|0)){qb=jb;rb=pb;break}else gb=jb}}else{qb=0;rb=f[Z>>2]|0}while(0);ho(j,_,rb,g);hb=Tk(j)|0;gb=I;ib=om(j)|0;jb=Tn(ib|0,I|0,hb|0,gb|0)|0;gb=I;if(oa){hb=Ma;ib=Tn(f[hb>>2]|0,f[hb+4>>2]|0,fb|0,0)|0;hb=Fa;kb=f[hb>>2]|0;lb=f[hb+4>>2]|0;Va=+W(+(+jm(kb,ib)*(+(kb>>>0)+4294967296.0*+(lb|0))));lb=Tn(jb|0,gb|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;sb=lb}else sb=jb;jb=f[r>>2]|0;if(!((sb|0)>=(jb|0)?!((sb|0)<=(jb|0)?(qb|0)<(f[T>>2]|0):0):0)){jb=r;f[jb>>2]=sb;f[jb+4>>2]=qb;b[U>>0]=nb;f[V>>2]=fb;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[k>>2]=f[v>>2];f[j>>2]=f[w>>2];tf($,k,j);f[x>>2]=Aa;f[y>>2]=Na;f[k>>2]=f[x>>2];f[j>>2]=f[y>>2];tf(aa,k,j)}if(Pa)break;tb=b[Ea>>0]|0;jb=-1;lb=tb;while(1){gb=jb+-1|0;ub=Ga+gb|0;kb=lb;lb=b[ub>>0]|0;if((lb&255)<(kb&255))break;if((ub|0)==(n|0)){vb=86;break d}else jb=gb}gb=Ga+jb|0;if((lb&255)<(tb&255)){wb=Ea;xb=tb}else{kb=Ga;ib=Ea;while(1){hb=ib+-1|0;if((lb&255)<(h[kb+-2>>0]|0)){wb=hb;xb=1;break}else{yb=ib;ib=hb;kb=yb}}}b[ub>>0]=xb;b[wb>>0]=lb;if((jb|0)<-1){zb=gb;Ab=Ea}else continue;while(1){kb=b[zb>>0]|0;b[zb>>0]=b[Ab>>0]|0;b[Ab>>0]=kb;kb=zb+1|0;ib=Ab+-1|0;if(kb>>>0>>0){zb=kb;Ab=ib}else continue d}}if(((vb|0)==86?(vb=0,db):0)?(gb=b[n>>0]|0,b[n>>0]=tb,b[Ea>>0]=gb,La):0){gb=Ia;jb=la;do{lb=b[jb>>0]|0;b[jb>>0]=b[gb>>0]|0;b[gb>>0]=lb;jb=jb+1|0;gb=gb+-1|0}while(jb>>>0>>0)}if((fb|0)>=(Ha|0)){Xa=Ka;Ya=Oa;Za=Ka;_a=Oa;$a=Na;ab=Aa;bb=Oa;break}else fb=fb+1|0}}if(oa){fb=f[V>>2]|0;Oa=o+(Ha+-1<<3)|0;Aa=Oa;Na=Tn(f[Aa>>2]|0,f[Aa+4>>2]|0,fb|0,((fb|0)<0)<<31>>31|0)|0;fb=Oa;f[fb>>2]=Na;f[fb+4>>2]=I}if(S){fb=f[aa>>2]|0;Na=f[C>>2]|0;Oa=0;do{Aa=f[fb+(Oa<<2)>>2]|0;f[Na+(Oa<<2)>>2]=Aa<<1^Aa>>31;Oa=Oa+1|0}while((Oa|0)!=(g|0));Bb=Na}else Bb=f[C>>2]|0;go(j,_,Bb,g);if(oa){Na=Ha+-1|0;Cb=a+60+(Na*12|0)|0;Oa=a+60+(Na*12|0)+4|0;fb=a+60+(Na*12|0)+8|0;Na=0;do{Aa=f[Oa>>2]|0;Ka=f[fb>>2]|0;Ia=(Aa|0)==(Ka<<5|0);if(!(1<>0])){if(Ia){if((Aa+1|0)<0){vb=114;break b}La=Ka<<6;Ea=Aa+32&-32;hi(Cb,Aa>>>0<1073741823?(La>>>0>>0?Ea:La):2147483647);Db=f[Oa>>2]|0}else Db=Aa;f[Oa>>2]=Db+1;La=(f[Cb>>2]|0)+(Db>>>5<<2)|0;f[La>>2]=f[La>>2]|1<<(Db&31)}else{if(Ia){if((Aa+1|0)<0){vb=119;break b}Ia=Ka<<6;Ka=Aa+32&-32;hi(Cb,Aa>>>0<1073741823?(Ia>>>0>>0?Ka:Ia):2147483647);Eb=f[Oa>>2]|0}else Eb=Aa;f[Oa>>2]=Eb+1;Aa=(f[Cb>>2]|0)+(Eb>>>5<<2)|0;f[Aa>>2]=f[Aa>>2]&~(1<<(Eb&31))}Na=Na+1|0}while((Na|0)<(Ha|0))}Na=d+(Da<<2)|0;Oa=f[z>>2]|0;if((Oa|0)>0){fb=0;oa=f[$>>2]|0;Aa=Oa;while(1){if((Aa|0)>0){Oa=0;do{Ia=f[oa+(Oa<<2)>>2]|0;Ka=f[ba>>2]|0;if((Ia|0)>(Ka|0)){La=f[ca>>2]|0;f[La+(Oa<<2)>>2]=Ka;Fb=La}else{La=f[da>>2]|0;Ka=f[ca>>2]|0;f[Ka+(Oa<<2)>>2]=(Ia|0)<(La|0)?La:Ia;Fb=Ka}Oa=Oa+1|0}while((Oa|0)<(f[z>>2]|0));Gb=Fb}else Gb=f[ca>>2]|0;Oa=(f[Ba+(fb<<2)>>2]|0)-(f[Gb+(fb<<2)>>2]|0)|0;Ka=Na+(fb<<2)|0;f[Ka>>2]=Oa;do if((Oa|0)<(f[ea>>2]|0)){Hb=(f[fa>>2]|0)+Oa|0;vb=109}else{if((Oa|0)<=(f[ga>>2]|0))break;Hb=Oa-(f[fa>>2]|0)|0;vb=109}while(0);if((vb|0)==109){vb=0;f[Ka>>2]=Hb}fb=fb+1|0;Aa=f[z>>2]|0;if((fb|0)>=(Aa|0))break;else oa=Gb}}oa=f[ha>>2]|0;if(oa|0){Aa=f[ka>>2]|0;if((Aa|0)!=(oa|0))f[ka>>2]=Aa+(~((Aa+-4-oa|0)>>>2)<<2);br(oa)}oa=f[ia>>2]|0;if(oa|0){Aa=f[ja>>2]|0;if((Aa|0)!=(oa|0))f[ja>>2]=Aa+(~((Aa+-4-oa|0)>>>2)<<2);br(oa)}if((pa|0)<=2){Ib=_a;Jb=Za;break a}oa=f[B>>2]|0;ra=f[oa>>2]|0;Aa=qa+-1|0;if((f[oa+4>>2]|0)-ra>>2>>>0<=Aa>>>0){za=oa;vb=18;break}else{oa=qa;qa=Aa;sa=bb;ta=ab;ua=$a;va=_a;wa=Za;xa=Ya;ya=Xa;pa=oa}}if((vb|0)==18)mq(za);else if((vb|0)==114)mq(Cb);else if((vb|0)==119)mq(Cb)}else{Ib=M;Jb=N}while(0);N=f[l>>2]|0;if((g|0)>0?(f[N>>2]=0,(g|0)!=1):0){M=1;do{f[N+(M<<2)>>2]=0;M=M+1|0}while((M|0)!=(g|0))}g=f[z>>2]|0;if((g|0)>0){M=a+16|0;Cb=a+32|0;za=a+12|0;pa=a+28|0;Xa=a+20|0;ya=a+24|0;a=0;Ya=N;N=g;while(1){if((N|0)>0){g=0;do{xa=f[Ya+(g<<2)>>2]|0;Za=f[M>>2]|0;if((xa|0)>(Za|0)){wa=f[Cb>>2]|0;f[wa+(g<<2)>>2]=Za;Kb=wa}else{wa=f[za>>2]|0;Za=f[Cb>>2]|0;f[Za+(g<<2)>>2]=(xa|0)<(wa|0)?wa:xa;Kb=Za}g=g+1|0}while((g|0)<(f[z>>2]|0));Lb=Kb}else Lb=f[Cb>>2]|0;g=(f[c+(a<<2)>>2]|0)-(f[Lb+(a<<2)>>2]|0)|0;Za=d+(a<<2)|0;f[Za>>2]=g;if((g|0)>=(f[pa>>2]|0)){if((g|0)>(f[ya>>2]|0)){Mb=g-(f[Xa>>2]|0)|0;vb=145}}else{Mb=(f[Xa>>2]|0)+g|0;vb=145}if((vb|0)==145){vb=0;f[Za>>2]=Mb}a=a+1|0;N=f[z>>2]|0;if((a|0)>=(N|0))break;else Ya=Lb}}if(Ib|0){if((Jb|0)!=(Ib|0))f[H>>2]=Jb+(~((Jb+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[m>>2]|0;if(Ib|0){m=f[E>>2]|0;if((m|0)!=(Ib|0))f[E>>2]=m+(~((m+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[l+36>>2]|0;if(Ib|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Ib|0))f[m>>2]=E+(~((E+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[l+24>>2]|0;if(Ib|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Ib|0))f[E>>2]=m+(~((m+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[l+12>>2]|0;if(Ib|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Ib|0))f[m>>2]=E+(~((E+-4-Ib|0)>>>2)<<2);br(Ib)}Ib=f[l>>2]|0;if(!Ib){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Ib|0))f[E>>2]=l+(~((l+-4-Ib|0)>>>2)<<2);br(Ib);u=i;return 1}function cb(a){a=a|0;var b=0,c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;b=u;u=u+16|0;c=b;d=b+8|0;e=b+4|0;f[d>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;h=g*210|0;f[e>>2]=a-h;i=0;j=g;g=(zl(6640,6832,e,c)|0)-6640>>2;k=h;a:while(1){l=(f[6640+(g<<2)>>2]|0)+k|0;h=5;while(1){if(h>>>0>=47){m=211;n=i;o=8;break}p=f[6448+(h<<2)>>2]|0;q=(l>>>0)/(p>>>0)|0;if(q>>>0

>>0){o=106;break a}if((l|0)==(X(q,p)|0)){r=i;break}else h=h+1|0}b:do if((o|0)==8){c:while(1){o=0;h=(l>>>0)/(m>>>0)|0;do if(h>>>0>=m>>>0)if((l|0)!=(X(h,m)|0)){p=m+10|0;q=(l>>>0)/(p>>>0)|0;if(q>>>0>=p>>>0)if((l|0)!=(X(q,p)|0)){q=m+12|0;s=(l>>>0)/(q>>>0)|0;if(s>>>0>=q>>>0)if((l|0)!=(X(s,q)|0)){s=m+16|0;t=(l>>>0)/(s>>>0)|0;if(t>>>0>=s>>>0)if((l|0)!=(X(t,s)|0)){t=m+18|0;v=(l>>>0)/(t>>>0)|0;if(v>>>0>=t>>>0)if((l|0)!=(X(v,t)|0)){v=m+22|0;w=(l>>>0)/(v>>>0)|0;if(w>>>0>=v>>>0)if((l|0)!=(X(w,v)|0)){w=m+28|0;x=(l>>>0)/(w>>>0)|0;if(x>>>0>=w>>>0)if((l|0)==(X(x,w)|0)){y=w;z=9;A=n}else{x=m+30|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+36|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+40|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+42|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+46|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+52|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+58|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+60|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+66|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+70|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+72|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+78|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+82|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+88|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+96|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+100|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+102|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+106|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+108|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+112|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+120|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+126|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+130|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+136|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+138|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+142|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+148|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+150|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+156|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+162|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+166|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+168|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+172|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+178|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+180|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+186|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+190|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+192|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+196|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+198|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+208|0;B=(l>>>0)/(x>>>0)|0;C=B>>>0>>0;D=(l|0)==(X(B,x)|0);y=C|D?x:m+210|0;z=C?1:D?9:0;A=C?l:n}else{y=w;z=1;A=l}}else{y=v;z=9;A=n}else{y=v;z=1;A=l}}else{y=t;z=9;A=n}else{y=t;z=1;A=l}}else{y=s;z=9;A=n}else{y=s;z=1;A=l}}else{y=q;z=9;A=n}else{y=q;z=1;A=l}}else{y=p;z=9;A=n}else{y=p;z=1;A=l}}else{y=m;z=9;A=n}else{y=m;z=1;A=l}while(0);switch(z&15){case 9:{r=A;break b;break}case 0:{m=y;n=A;o=8;break}default:break c}}if(!z)r=A;else{o=107;break a}}while(0);h=g+1|0;p=(h|0)==48;q=j+(p&1)|0;i=r;j=q;g=p?0:h;k=q*210|0}if((o|0)==106){f[d>>2]=l;E=l;break}else if((o|0)==107){f[d>>2]=l;E=A;break}}else{k=zl(6448,6640,d,c)|0;E=f[k>>2]|0}while(0);u=b;return E|0}function db(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0;i=u;u=u+256|0;e=i+104|0;j=i+240|0;k=i+224|0;l=i+160|0;m=i+140|0;n=i+248|0;o=i+72|0;p=i+40|0;q=i+128|0;r=i;s=i+232|0;t=i+220|0;v=i+216|0;w=i+212|0;x=i+208|0;y=i+152|0;z=f[a+28>>2]|0;A=f[a+32>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{oi(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else oi(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)mq(m);else{D=g<<2;B=dn(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;hj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+136|0;D=a+140|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else oi(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=dn(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;hj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+36|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>>2;R=z+64|0;S=z+28|0;T=(g|0)>0;U=r+4|0;V=r+8|0;Z=r+12|0;_=a+136|0;$=a+96|0;aa=r+16|0;ba=r+28|0;ca=a+8|0;da=j+4|0;ea=k+4|0;fa=e+4|0;ga=r+28|0;ha=r+16|0;ia=r+20|0;ja=r+32|0;ka=n+1|0;la=g<<2;ma=(g|0)==1;na=Q+-1|0;if(F-D>>2>>>0>na>>>0){oa=Q;pa=na;qa=D;ra=M;sa=P;ta=O;ua=M;va=N;wa=M;xa=N}else{ya=G;mq(ya)}b:while(1){na=f[qa+(pa<<2)>>2]|0;Q=(((na>>>0)%3|0|0)==0?2:-1)+na|0;za=Q>>>5;Aa=1<<(Q&31);Ba=(na|0)==-1|(Q|0)==-1;Ca=1;Da=0;Ea=na;c:while(1){Fa=Ca^1;Ga=Da;Ha=Ea;while(1){if((Ha|0)==-1){Ia=Ga;break c}Ja=f[l+(Ga*12|0)>>2]|0;if(((f[(f[z>>2]|0)+(Ha>>>5<<2)>>2]&1<<(Ha&31)|0)==0?(Ka=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ha<<2)>>2]|0,(Ka|0)!=-1):0)?(La=f[S>>2]|0,Ma=f[A>>2]|0,Na=f[Ma+(f[La+(Ka<<2)>>2]<<2)>>2]|0,Oa=Ka+1|0,Pa=f[Ma+(f[La+((((Oa>>>0)%3|0|0)==0?Ka+-2|0:Oa)<<2)>>2]<<2)>>2]|0,Oa=f[Ma+(f[La+((((Ka>>>0)%3|0|0)==0?2:-1)+Ka<<2)>>2]<<2)>>2]|0,(Na|0)<(pa|0)&(Pa|0)<(pa|0)&(Oa|0)<(pa|0)):0){Ka=X(Na,g)|0;Na=X(Pa,g)|0;Pa=X(Oa,g)|0;if(T){Oa=0;do{f[Ja+(Oa<<2)>>2]=(f[c+(Oa+Pa<<2)>>2]|0)+(f[c+(Oa+Na<<2)>>2]|0)-(f[c+(Oa+Ka<<2)>>2]|0);Oa=Oa+1|0}while((Oa|0)!=(g|0))}Oa=Ga+1|0;if((Oa|0)==4){Ia=4;break c}else Qa=Oa}else Qa=Ga;do if(Ca){Oa=Ha+1|0;Ka=((Oa>>>0)%3|0|0)==0?Ha+-2|0:Oa;if(((Ka|0)!=-1?(f[(f[z>>2]|0)+(Ka>>>5<<2)>>2]&1<<(Ka&31)|0)==0:0)?(Oa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ka<<2)>>2]|0,Ka=Oa+1|0,(Oa|0)!=-1):0)Ra=((Ka>>>0)%3|0|0)==0?Oa+-2|0:Ka;else Ra=-1}else{Ka=(((Ha>>>0)%3|0|0)==0?2:-1)+Ha|0;if(((Ka|0)!=-1?(f[(f[z>>2]|0)+(Ka>>>5<<2)>>2]&1<<(Ka&31)|0)==0:0)?(Oa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ka<<2)>>2]|0,(Oa|0)!=-1):0)if(!((Oa>>>0)%3|0)){Ra=Oa+2|0;break}else{Ra=Oa+-1|0;break}else Ra=-1}while(0);if((Ra|0)==(na|0)){Ia=Qa;break c}if((Ra|0)!=-1|Fa){Ga=Qa;Ha=Ra}else break}if(Ba){Ca=0;Da=Qa;Ea=-1;continue}if(f[(f[z>>2]|0)+(za<<2)>>2]&Aa|0){Ca=0;Da=Qa;Ea=-1;continue}Ha=f[(f[(f[R>>2]|0)+12>>2]|0)+(Q<<2)>>2]|0;if((Ha|0)==-1){Ca=0;Da=Qa;Ea=-1;continue}if(!((Ha>>>0)%3|0)){Ca=0;Da=Qa;Ea=Ha+2|0;continue}else{Ca=0;Da=Qa;Ea=Ha+-1|0;continue}}Ea=X(pa,g)|0;f[r>>2]=0;f[U>>2]=0;b[V>>0]=0;f[Z>>2]=0;f[Z+4>>2]=0;f[Z+8>>2]=0;f[Z+12>>2]=0;f[Z+16>>2]=0;f[Z+20>>2]=0;f[Z+24>>2]=0;Da=c+((X(oa+-2|0,g)|0)<<2)|0;Ca=c+(Ea<<2)|0;Q=f[_>>2]|0;if(T){Aa=0;za=0;while(1){Ba=(f[Da+(Aa<<2)>>2]|0)-(f[Ca+(Aa<<2)>>2]|0)|0;na=((Ba|0)>-1?Ba:0-Ba|0)+za|0;f[ra+(Aa<<2)>>2]=Ba;f[Q+(Aa<<2)>>2]=Ba<<1^Ba>>31;Aa=Aa+1|0;if((Aa|0)==(g|0)){Sa=na;break}else za=na}}else Sa=0;ho(e,$,Q,g);za=Tk(e)|0;Aa=I;na=om(e)|0;Ba=Tn(na|0,I|0,za|0,Aa|0)|0;Aa=I;za=(Ia|0)>0;if(za){na=Ia+-1|0;Ha=p+(na<<3)|0;Ga=Ha;Fa=Tn(f[Ga>>2]|0,f[Ga+4>>2]|0,Ia|0,((Ia|0)<0)<<31>>31|0)|0;Ga=I;Oa=Ha;f[Oa>>2]=Fa;f[Oa+4>>2]=Ga;Ta=+W(+(+jm(Fa,f[o+(na<<3)>>2]|0)*(+(Fa>>>0)+4294967296.0*+(Ga|0))));Ga=Tn(Ba|0,Aa|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;Ua=Ga}else Ua=Ba;Ba=r;f[Ba>>2]=Ua;f[Ba+4>>2]=Sa;b[V>>0]=0;f[Z>>2]=0;Mf(aa,Da,Da+(g<<2)|0);f[s>>2]=sa;f[t>>2]=ta;f[j>>2]=f[s>>2];f[e>>2]=f[t>>2];tf(ba,j,e);if((Ia|0)<1){Va=xa;Wa=wa;Xa=va;Ya=ua;Za=ta;_a=sa;$a=sa}else{Ba=n+Ia|0;Ga=f[q>>2]|0;Aa=Ia+-1|0;Fa=o+(Aa<<3)|0;na=p+(Aa<<3)|0;Aa=Ga;Oa=f[H>>2]|0;Ha=Ba+-1|0;Ka=(Ha|0)==(n|0);Na=Ba+-2|0;Pa=ka>>>0>>0;Ja=~Ia;La=Ia+2+((Ja|0)>-2?Ja:-2)|0;Ja=Oa;Ma=Ha>>>0>n>>>0;ab=0;bb=1;while(1){ab=ab+1|0;hj(n|0,1,La|0)|0;hj(n|0,0,ab|0)|0;d:while(1){if(T){hj(f[m>>2]|0,0,la|0)|0;cb=f[m>>2]|0;db=0;eb=0;while(1){if(!(b[n+db>>0]|0)){fb=f[l+(db*12|0)>>2]|0;gb=0;do{hb=cb+(gb<<2)|0;f[hb>>2]=(f[hb>>2]|0)+(f[fb+(gb<<2)>>2]|0);gb=gb+1|0}while((gb|0)!=(g|0));ib=(1<>0]|0))kb=(1<>2]|0;do if(T){f[db>>2]=(f[db>>2]|0)/(bb|0)|0;if(!ma){eb=1;do{cb=db+(eb<<2)|0;f[cb>>2]=(f[cb>>2]|0)/(bb|0)|0;eb=eb+1|0}while((eb|0)!=(g|0));eb=f[_>>2]|0;if(T)lb=eb;else{mb=0;nb=eb;break}}else lb=f[_>>2]|0;eb=0;cb=0;while(1){gb=(f[db+(eb<<2)>>2]|0)-(f[Ca+(eb<<2)>>2]|0)|0;fb=((gb|0)>-1?gb:0-gb|0)+cb|0;f[Ga+(eb<<2)>>2]=gb;f[lb+(eb<<2)>>2]=gb<<1^gb>>31;eb=eb+1|0;if((eb|0)==(g|0)){mb=fb;nb=lb;break}else cb=fb}}else{mb=0;nb=f[_>>2]|0}while(0);ho(e,$,nb,g);db=Tk(e)|0;cb=I;eb=om(e)|0;fb=Tn(eb|0,I|0,db|0,cb|0)|0;cb=I;if(za){db=Fa;eb=Tn(f[db>>2]|0,f[db+4>>2]|0,bb|0,0)|0;db=na;gb=f[db>>2]|0;hb=f[db+4>>2]|0;Ta=+W(+(+jm(gb,eb)*(+(gb>>>0)+4294967296.0*+(hb|0))));hb=Tn(fb|0,cb|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;ob=hb}else ob=fb;fb=f[r>>2]|0;if(!((ob|0)>=(fb|0)?!((ob|0)<=(fb|0)?(mb|0)<(f[U>>2]|0):0):0)){fb=r;f[fb>>2]=ob;f[fb+4>>2]=mb;b[V>>0]=jb;f[Z>>2]=bb;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[j>>2]=f[v>>2];f[e>>2]=f[w>>2];tf(aa,j,e);f[x>>2]=Aa;f[y>>2]=Oa;f[j>>2]=f[x>>2];f[e>>2]=f[y>>2];tf(ba,j,e)}if(Ka)break;pb=b[Ha>>0]|0;fb=-1;hb=pb;while(1){cb=fb+-1|0;qb=Ba+cb|0;gb=hb;hb=b[qb>>0]|0;if((hb&255)<(gb&255))break;if((qb|0)==(n|0)){rb=86;break d}else fb=cb}cb=Ba+fb|0;if((hb&255)<(pb&255)){sb=Ha;tb=pb}else{gb=Ba;eb=Ha;while(1){db=eb+-1|0;if((hb&255)<(h[gb+-2>>0]|0)){sb=db;tb=1;break}else{ub=eb;eb=db;gb=ub}}}b[qb>>0]=tb;b[sb>>0]=hb;if((fb|0)<-1){vb=cb;wb=Ha}else continue;while(1){gb=b[vb>>0]|0;b[vb>>0]=b[wb>>0]|0;b[wb>>0]=gb;gb=vb+1|0;eb=wb+-1|0;if(gb>>>0>>0){vb=gb;wb=eb}else continue d}}if(((rb|0)==86?(rb=0,Ma):0)?(cb=b[n>>0]|0,b[n>>0]=pb,b[Ha>>0]=cb,Pa):0){cb=Na;fb=ka;do{hb=b[fb>>0]|0;b[fb>>0]=b[cb>>0]|0;b[cb>>0]=hb;fb=fb+1|0;cb=cb+-1|0}while(fb>>>0>>0)}if((bb|0)>=(Ia|0)){Va=Ja;Wa=Ga;Xa=Ja;Ya=Ga;Za=Oa;_a=Aa;$a=Ga;break}else bb=bb+1|0}}if(za){bb=f[Z>>2]|0;Ga=o+(Ia+-1<<3)|0;Aa=Ga;Oa=Tn(f[Aa>>2]|0,f[Aa+4>>2]|0,bb|0,((bb|0)<0)<<31>>31|0)|0;bb=Ga;f[bb>>2]=Oa;f[bb+4>>2]=I}if(T){bb=f[ba>>2]|0;Oa=f[C>>2]|0;Ga=0;do{Aa=f[bb+(Ga<<2)>>2]|0;f[Oa+(Ga<<2)>>2]=Aa<<1^Aa>>31;Ga=Ga+1|0}while((Ga|0)!=(g|0));xb=Oa}else xb=f[C>>2]|0;go(e,$,xb,g);if(za){Oa=Ia+-1|0;yb=a+40+(Oa*12|0)|0;Ga=a+40+(Oa*12|0)+4|0;bb=a+40+(Oa*12|0)+8|0;Oa=0;do{Aa=f[Ga>>2]|0;Ja=f[bb>>2]|0;Na=(Aa|0)==(Ja<<5|0);if(!(1<>0])){if(Na){if((Aa+1|0)<0){rb=101;break b}Pa=Ja<<6;Ha=Aa+32&-32;hi(yb,Aa>>>0<1073741823?(Pa>>>0>>0?Ha:Pa):2147483647);zb=f[Ga>>2]|0}else zb=Aa;f[Ga>>2]=zb+1;Pa=(f[yb>>2]|0)+(zb>>>5<<2)|0;f[Pa>>2]=f[Pa>>2]|1<<(zb&31)}else{if(Na){if((Aa+1|0)<0){rb=106;break b}Na=Ja<<6;Ja=Aa+32&-32;hi(yb,Aa>>>0<1073741823?(Na>>>0>>0?Ja:Na):2147483647);Ab=f[Ga>>2]|0}else Ab=Aa;f[Ga>>2]=Ab+1;Aa=(f[yb>>2]|0)+(Ab>>>5<<2)|0;f[Aa>>2]=f[Aa>>2]&~(1<<(Ab&31))}Oa=Oa+1|0}while((Oa|0)<(Ia|0))}Oa=f[aa>>2]|0;Ga=d+(Ea<<2)|0;bb=f[Ca+4>>2]|0;za=f[Oa>>2]|0;Aa=f[Oa+4>>2]|0;f[j>>2]=f[Ca>>2];f[da>>2]=bb;f[k>>2]=za;f[ea>>2]=Aa;Dd(e,ca,j,k);f[Ga>>2]=f[e>>2];f[Ga+4>>2]=f[fa>>2];Ga=f[ga>>2]|0;if(Ga|0){Aa=f[ja>>2]|0;if((Aa|0)!=(Ga|0))f[ja>>2]=Aa+(~((Aa+-4-Ga|0)>>>2)<<2);br(Ga)}Ga=f[ha>>2]|0;if(Ga|0){Aa=f[ia>>2]|0;if((Aa|0)!=(Ga|0))f[ia>>2]=Aa+(~((Aa+-4-Ga|0)>>>2)<<2);br(Ga)}if((oa|0)<=2){Bb=Ya;Cb=Xa;break a}Ga=f[B>>2]|0;qa=f[Ga>>2]|0;Aa=pa+-1|0;if((f[Ga+4>>2]|0)-qa>>2>>>0<=Aa>>>0){ya=Ga;rb=18;break}else{Ga=pa;pa=Aa;ra=$a;sa=_a;ta=Za;ua=Ya;va=Xa;wa=Wa;xa=Va;oa=Ga}}if((rb|0)==18)mq(ya);else if((rb|0)==101)mq(yb);else if((rb|0)==106)mq(yb)}else{Bb=M;Cb=N}while(0);if((g|0)>0)hj(f[l>>2]|0,0,g<<2|0)|0;g=f[l>>2]|0;N=f[c+4>>2]|0;M=f[g>>2]|0;yb=f[g+4>>2]|0;f[j>>2]=f[c>>2];f[j+4>>2]=N;f[k>>2]=M;f[k+4>>2]=yb;Dd(e,a+8|0,j,k);f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];if(Bb|0){if((Cb|0)!=(Bb|0))f[H>>2]=Cb+(~((Cb+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[m>>2]|0;if(Bb|0){m=f[E>>2]|0;if((m|0)!=(Bb|0))f[E>>2]=m+(~((m+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[l+36>>2]|0;if(Bb|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Bb|0))f[m>>2]=E+(~((E+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[l+24>>2]|0;if(Bb|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Bb|0))f[E>>2]=m+(~((m+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[l+12>>2]|0;if(Bb|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Bb|0))f[m>>2]=E+(~((E+-4-Bb|0)>>>2)<<2);br(Bb)}Bb=f[l>>2]|0;if(!Bb){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Bb|0))f[E>>2]=l+(~((l+-4-Bb|0)>>>2)<<2);br(Bb);u=i;return 1}function eb(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0;i=u;u=u+256|0;e=i+104|0;j=i+240|0;k=i+224|0;l=i+160|0;m=i+140|0;n=i+248|0;o=i+72|0;p=i+40|0;q=i+128|0;r=i;s=i+232|0;t=i+220|0;v=i+216|0;w=i+212|0;x=i+208|0;y=i+152|0;z=f[a+28>>2]|0;A=f[a+32>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{oi(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else oi(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else oi(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)mq(m);else{D=g<<2;B=dn(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;hj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+136|0;D=a+140|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else oi(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=dn(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;hj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+36|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>>2;R=z+12|0;S=(g|0)>0;T=r+4|0;U=r+8|0;V=r+12|0;Z=a+136|0;_=a+96|0;$=r+16|0;aa=r+28|0;ba=a+8|0;ca=j+4|0;da=k+4|0;ea=e+4|0;fa=r+28|0;ga=r+16|0;ha=r+20|0;ia=r+32|0;ja=n+1|0;ka=g<<2;la=(g|0)==1;ma=Q+-1|0;if(F-D>>2>>>0>ma>>>0){na=Q;oa=ma;pa=M;qa=P;ra=O;sa=M;ta=N;ua=M;va=N;wa=D}else{xa=G;mq(xa)}b:while(1){ma=f[wa+(oa<<2)>>2]|0;Q=(((ma>>>0)%3|0|0)==0?2:-1)+ma|0;ya=(ma|0)==-1|(Q|0)==-1;za=1;Aa=0;Ba=ma;c:while(1){Ca=za^1;Da=Aa;Ea=Ba;while(1){if((Ea|0)==-1){Fa=Da;break c}Ga=f[l+(Da*12|0)>>2]|0;Ha=f[R>>2]|0;Ia=f[Ha+(Ea<<2)>>2]|0;if((Ia|0)!=-1){Ja=f[z>>2]|0;Ka=f[A>>2]|0;La=f[Ka+(f[Ja+(Ia<<2)>>2]<<2)>>2]|0;Ma=Ia+1|0;Na=((Ma>>>0)%3|0|0)==0?Ia+-2|0:Ma;if((Na|0)==-1)Oa=-1;else Oa=f[Ja+(Na<<2)>>2]|0;Na=f[Ka+(Oa<<2)>>2]|0;Ma=(((Ia>>>0)%3|0|0)==0?2:-1)+Ia|0;if((Ma|0)==-1)Pa=-1;else Pa=f[Ja+(Ma<<2)>>2]|0;Ma=f[Ka+(Pa<<2)>>2]|0;if((La|0)<(oa|0)&(Na|0)<(oa|0)&(Ma|0)<(oa|0)){Ka=X(La,g)|0;La=X(Na,g)|0;Na=X(Ma,g)|0;if(S){Ma=0;do{f[Ga+(Ma<<2)>>2]=(f[c+(Ma+Na<<2)>>2]|0)+(f[c+(Ma+La<<2)>>2]|0)-(f[c+(Ma+Ka<<2)>>2]|0);Ma=Ma+1|0}while((Ma|0)!=(g|0))}Ma=Da+1|0;if((Ma|0)==4){Fa=4;break c}else Qa=Ma}else Qa=Da}else Qa=Da;do if(za){Ma=Ea+1|0;Ka=((Ma>>>0)%3|0|0)==0?Ea+-2|0:Ma;if((Ka|0)!=-1?(Ma=f[Ha+(Ka<<2)>>2]|0,Ka=Ma+1|0,(Ma|0)!=-1):0)Ra=((Ka>>>0)%3|0|0)==0?Ma+-2|0:Ka;else Ra=-1}else{Ka=(((Ea>>>0)%3|0|0)==0?2:-1)+Ea|0;if((Ka|0)!=-1?(Ma=f[Ha+(Ka<<2)>>2]|0,(Ma|0)!=-1):0)if(!((Ma>>>0)%3|0)){Ra=Ma+2|0;break}else{Ra=Ma+-1|0;break}else Ra=-1}while(0);if((Ra|0)==(ma|0)){Fa=Qa;break c}if((Ra|0)!=-1|Ca){Da=Qa;Ea=Ra}else break}if(ya){za=0;Aa=Qa;Ba=-1;continue}Ea=f[Ha+(Q<<2)>>2]|0;if((Ea|0)==-1){za=0;Aa=Qa;Ba=-1;continue}if(!((Ea>>>0)%3|0)){za=0;Aa=Qa;Ba=Ea+2|0;continue}else{za=0;Aa=Qa;Ba=Ea+-1|0;continue}}Ba=X(oa,g)|0;f[r>>2]=0;f[T>>2]=0;b[U>>0]=0;f[V>>2]=0;f[V+4>>2]=0;f[V+8>>2]=0;f[V+12>>2]=0;f[V+16>>2]=0;f[V+20>>2]=0;f[V+24>>2]=0;Aa=c+((X(na+-2|0,g)|0)<<2)|0;za=c+(Ba<<2)|0;Q=f[Z>>2]|0;if(S){ya=0;ma=0;while(1){Ea=(f[Aa+(ya<<2)>>2]|0)-(f[za+(ya<<2)>>2]|0)|0;Da=((Ea|0)>-1?Ea:0-Ea|0)+ma|0;f[pa+(ya<<2)>>2]=Ea;f[Q+(ya<<2)>>2]=Ea<<1^Ea>>31;ya=ya+1|0;if((ya|0)==(g|0)){Sa=Da;break}else ma=Da}}else Sa=0;ho(e,_,Q,g);ma=Tk(e)|0;ya=I;Da=om(e)|0;Ea=Tn(Da|0,I|0,ma|0,ya|0)|0;ya=I;ma=(Fa|0)>0;if(ma){Da=Fa+-1|0;Ca=p+(Da<<3)|0;Ma=Ca;Ka=Tn(f[Ma>>2]|0,f[Ma+4>>2]|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;Ma=I;La=Ca;f[La>>2]=Ka;f[La+4>>2]=Ma;Ta=+W(+(+jm(Ka,f[o+(Da<<3)>>2]|0)*(+(Ka>>>0)+4294967296.0*+(Ma|0))));Ma=Tn(Ea|0,ya|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;Ua=Ma}else Ua=Ea;Ea=r;f[Ea>>2]=Ua;f[Ea+4>>2]=Sa;b[U>>0]=0;f[V>>2]=0;Mf($,Aa,Aa+(g<<2)|0);f[s>>2]=qa;f[t>>2]=ra;f[j>>2]=f[s>>2];f[e>>2]=f[t>>2];tf(aa,j,e);if((Fa|0)<1){Va=va;Wa=ua;Xa=ta;Ya=sa;Za=ra;_a=qa;$a=qa}else{Ea=n+Fa|0;Ma=f[q>>2]|0;ya=Fa+-1|0;Ka=o+(ya<<3)|0;Da=p+(ya<<3)|0;ya=Ma;La=f[H>>2]|0;Ca=Ea+-1|0;Na=(Ca|0)==(n|0);Ga=Ea+-2|0;Ja=ja>>>0>>0;Ia=~Fa;ab=Fa+2+((Ia|0)>-2?Ia:-2)|0;Ia=La;bb=Ca>>>0>n>>>0;cb=0;db=1;while(1){cb=cb+1|0;hj(n|0,1,ab|0)|0;hj(n|0,0,cb|0)|0;d:while(1){if(S){hj(f[m>>2]|0,0,ka|0)|0;eb=f[m>>2]|0;fb=0;gb=0;while(1){if(!(b[n+fb>>0]|0)){hb=f[l+(fb*12|0)>>2]|0;ib=0;do{jb=eb+(ib<<2)|0;f[jb>>2]=(f[jb>>2]|0)+(f[hb+(ib<<2)>>2]|0);ib=ib+1|0}while((ib|0)!=(g|0));kb=(1<>0]|0))mb=(1<>2]|0;do if(S){f[fb>>2]=(f[fb>>2]|0)/(db|0)|0;if(!la){gb=1;do{eb=fb+(gb<<2)|0;f[eb>>2]=(f[eb>>2]|0)/(db|0)|0;gb=gb+1|0}while((gb|0)!=(g|0));gb=f[Z>>2]|0;if(S)nb=gb;else{ob=0;pb=gb;break}}else nb=f[Z>>2]|0;gb=0;eb=0;while(1){ib=(f[fb+(gb<<2)>>2]|0)-(f[za+(gb<<2)>>2]|0)|0;hb=((ib|0)>-1?ib:0-ib|0)+eb|0;f[Ma+(gb<<2)>>2]=ib;f[nb+(gb<<2)>>2]=ib<<1^ib>>31;gb=gb+1|0;if((gb|0)==(g|0)){ob=hb;pb=nb;break}else eb=hb}}else{ob=0;pb=f[Z>>2]|0}while(0);ho(e,_,pb,g);fb=Tk(e)|0;eb=I;gb=om(e)|0;hb=Tn(gb|0,I|0,fb|0,eb|0)|0;eb=I;if(ma){fb=Ka;gb=Tn(f[fb>>2]|0,f[fb+4>>2]|0,db|0,0)|0;fb=Da;ib=f[fb>>2]|0;jb=f[fb+4>>2]|0;Ta=+W(+(+jm(ib,gb)*(+(ib>>>0)+4294967296.0*+(jb|0))));jb=Tn(hb|0,eb|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;qb=jb}else qb=hb;hb=f[r>>2]|0;if(!((qb|0)>=(hb|0)?!((qb|0)<=(hb|0)?(ob|0)<(f[T>>2]|0):0):0)){hb=r;f[hb>>2]=qb;f[hb+4>>2]=ob;b[U>>0]=lb;f[V>>2]=db;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[j>>2]=f[v>>2];f[e>>2]=f[w>>2];tf($,j,e);f[x>>2]=ya;f[y>>2]=La;f[j>>2]=f[x>>2];f[e>>2]=f[y>>2];tf(aa,j,e)}if(Na)break;rb=b[Ca>>0]|0;hb=-1;jb=rb;while(1){eb=hb+-1|0;sb=Ea+eb|0;ib=jb;jb=b[sb>>0]|0;if((jb&255)<(ib&255))break;if((sb|0)==(n|0)){tb=86;break d}else hb=eb}eb=Ea+hb|0;if((jb&255)<(rb&255)){ub=Ca;vb=rb}else{ib=Ea;gb=Ca;while(1){fb=gb+-1|0;if((jb&255)<(h[ib+-2>>0]|0)){ub=fb;vb=1;break}else{wb=gb;gb=fb;ib=wb}}}b[sb>>0]=vb;b[ub>>0]=jb;if((hb|0)<-1){xb=eb;yb=Ca}else continue;while(1){ib=b[xb>>0]|0;b[xb>>0]=b[yb>>0]|0;b[yb>>0]=ib;ib=xb+1|0;gb=yb+-1|0;if(ib>>>0>>0){xb=ib;yb=gb}else continue d}}if(((tb|0)==86?(tb=0,bb):0)?(eb=b[n>>0]|0,b[n>>0]=rb,b[Ca>>0]=eb,Ja):0){eb=Ga;hb=ja;do{jb=b[hb>>0]|0;b[hb>>0]=b[eb>>0]|0;b[eb>>0]=jb;hb=hb+1|0;eb=eb+-1|0}while(hb>>>0>>0)}if((db|0)>=(Fa|0)){Va=Ia;Wa=Ma;Xa=Ia;Ya=Ma;Za=La;_a=ya;$a=Ma;break}else db=db+1|0}}if(ma){db=f[V>>2]|0;Ma=o+(Fa+-1<<3)|0;ya=Ma;La=Tn(f[ya>>2]|0,f[ya+4>>2]|0,db|0,((db|0)<0)<<31>>31|0)|0;db=Ma;f[db>>2]=La;f[db+4>>2]=I}if(S){db=f[aa>>2]|0;La=f[C>>2]|0;Ma=0;do{ya=f[db+(Ma<<2)>>2]|0;f[La+(Ma<<2)>>2]=ya<<1^ya>>31;Ma=Ma+1|0}while((Ma|0)!=(g|0));zb=La}else zb=f[C>>2]|0;go(e,_,zb,g);if(ma){La=Fa+-1|0;Ab=a+40+(La*12|0)|0;Ma=a+40+(La*12|0)+4|0;db=a+40+(La*12|0)+8|0;La=0;do{ya=f[Ma>>2]|0;Ia=f[db>>2]|0;Ga=(ya|0)==(Ia<<5|0);if(!(1<>0])){if(Ga){if((ya+1|0)<0){tb=101;break b}Ja=Ia<<6;Ca=ya+32&-32;hi(Ab,ya>>>0<1073741823?(Ja>>>0>>0?Ca:Ja):2147483647);Bb=f[Ma>>2]|0}else Bb=ya;f[Ma>>2]=Bb+1;Ja=(f[Ab>>2]|0)+(Bb>>>5<<2)|0;f[Ja>>2]=f[Ja>>2]|1<<(Bb&31)}else{if(Ga){if((ya+1|0)<0){tb=106;break b}Ga=Ia<<6;Ia=ya+32&-32;hi(Ab,ya>>>0<1073741823?(Ga>>>0>>0?Ia:Ga):2147483647);Cb=f[Ma>>2]|0}else Cb=ya;f[Ma>>2]=Cb+1;ya=(f[Ab>>2]|0)+(Cb>>>5<<2)|0;f[ya>>2]=f[ya>>2]&~(1<<(Cb&31))}La=La+1|0}while((La|0)<(Fa|0))}La=f[$>>2]|0;Ma=d+(Ba<<2)|0;db=f[za+4>>2]|0;ma=f[La>>2]|0;ya=f[La+4>>2]|0;f[j>>2]=f[za>>2];f[ca>>2]=db;f[k>>2]=ma;f[da>>2]=ya;Dd(e,ba,j,k);f[Ma>>2]=f[e>>2];f[Ma+4>>2]=f[ea>>2];Ma=f[fa>>2]|0;if(Ma|0){ya=f[ia>>2]|0;if((ya|0)!=(Ma|0))f[ia>>2]=ya+(~((ya+-4-Ma|0)>>>2)<<2);br(Ma)}Ma=f[ga>>2]|0;if(Ma|0){ya=f[ha>>2]|0;if((ya|0)!=(Ma|0))f[ha>>2]=ya+(~((ya+-4-Ma|0)>>>2)<<2);br(Ma)}if((na|0)<=2){Db=Ya;Eb=Xa;break a}Ma=f[B>>2]|0;wa=f[Ma>>2]|0;ya=oa+-1|0;if((f[Ma+4>>2]|0)-wa>>2>>>0<=ya>>>0){xa=Ma;tb=18;break}else{Ma=oa;oa=ya;pa=$a;qa=_a;ra=Za;sa=Ya;ta=Xa;ua=Wa;va=Va;na=Ma}}if((tb|0)==18)mq(xa);else if((tb|0)==101)mq(Ab);else if((tb|0)==106)mq(Ab)}else{Db=M;Eb=N}while(0);if((g|0)>0)hj(f[l>>2]|0,0,g<<2|0)|0;g=f[l>>2]|0;N=f[c+4>>2]|0;M=f[g>>2]|0;Ab=f[g+4>>2]|0;f[j>>2]=f[c>>2];f[j+4>>2]=N;f[k>>2]=M;f[k+4>>2]=Ab;Dd(e,a+8|0,j,k);f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];if(Db|0){if((Eb|0)!=(Db|0))f[H>>2]=Eb+(~((Eb+-4-Db|0)>>>2)<<2);br(Db)}Db=f[m>>2]|0;if(Db|0){m=f[E>>2]|0;if((m|0)!=(Db|0))f[E>>2]=m+(~((m+-4-Db|0)>>>2)<<2);br(Db)}Db=f[l+36>>2]|0;if(Db|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Db|0))f[m>>2]=E+(~((E+-4-Db|0)>>>2)<<2);br(Db)}Db=f[l+24>>2]|0;if(Db|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Db|0))f[E>>2]=m+(~((m+-4-Db|0)>>>2)<<2);br(Db)}Db=f[l+12>>2]|0;if(Db|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Db|0))f[m>>2]=E+(~((E+-4-Db|0)>>>2)<<2);br(Db)}Db=f[l>>2]|0;if(!Db){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Db|0))f[E>>2]=l+(~((l+-4-Db|0)>>>2)<<2);br(Db);u=i;return 1}function fb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,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,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0;c=u;u=u+32|0;d=c+16|0;e=c+4|0;g=c;f[a+36>>2]=b;h=a+24|0;i=a+28|0;j=f[i>>2]|0;k=f[h>>2]|0;l=j-k>>2;m=k;k=j;if(l>>>0>=b>>>0){if(l>>>0>b>>>0?(j=m+(b<<2)|0,(j|0)!=(k|0)):0)f[i>>2]=k+(~((k+-4-j|0)>>>2)<<2)}else kh(h,b-l|0,5828);f[d>>2]=0;l=d+4|0;f[l>>2]=0;j=d+8|0;f[j>>2]=0;if(b){if((b|0)<0)mq(d);k=((b+-1|0)>>>5)+1|0;m=dn(k<<2)|0;f[d>>2]=m;f[j>>2]=k;f[l>>2]=b;k=b>>>5;hj(m|0,0,k<<2|0)|0;n=b&31;o=m+(k<<2)|0;k=m;if(!n){p=b;q=k;r=m}else{f[o>>2]=f[o>>2]&~(-1>>>(32-n|0));p=b;q=k;r=m}}else{p=0;q=0;r=0}m=a+4|0;k=f[a>>2]|0;n=(f[m>>2]|0)-k|0;o=n>>2;f[e>>2]=0;s=e+4|0;f[s>>2]=0;t=e+8|0;f[t>>2]=0;do if(o){if((n|0)<0)mq(e);v=((o+-1|0)>>>5)+1|0;w=dn(v<<2)|0;f[e>>2]=w;f[t>>2]=v;f[s>>2]=o;v=o>>>5;hj(w|0,0,v<<2|0)|0;x=o&31;y=w+(v<<2)|0;if(x|0)f[y>>2]=f[y>>2]&~(-1>>>(32-x|0));if(o>>>0>2){x=a+12|0;y=a+32|0;v=a+52|0;w=a+56|0;z=a+48|0;A=b;B=k;C=0;D=q;E=r;a:while(1){F=B;G=C*3|0;if((G|0)!=-1){H=f[F+(G<<2)>>2]|0;I=G+1|0;J=((I>>>0)%3|0|0)==0?G+-2|0:I;if((J|0)==-1)K=-1;else K=f[F+(J<<2)>>2]|0;J=(((G>>>0)%3|0|0)==0?2:-1)+G|0;if((J|0)==-1)L=-1;else L=f[F+(J<<2)>>2]|0;if((H|0)!=(K|0)?!((H|0)==(L|0)|(K|0)==(L|0)):0){H=0;J=A;F=E;I=D;while(1){M=H+G|0;if(!(f[(f[e>>2]|0)+(M>>>5<<2)>>2]&1<<(M&31))){N=f[(f[a>>2]|0)+(M<<2)>>2]|0;f[g>>2]=N;if(!(f[F+(N>>>5<<2)>>2]&1<<(N&31))){O=0;P=J;Q=N}else{N=f[i>>2]|0;if((N|0)==(f[y>>2]|0))Ci(h,5828);else{f[N>>2]=-1;f[i>>2]=N+4}N=f[v>>2]|0;if((N|0)==(f[w>>2]|0))Ci(z,g);else{f[N>>2]=f[g>>2];f[v>>2]=N+4}N=f[l>>2]|0;R=f[j>>2]|0;if((N|0)==(R<<5|0)){if((N+1|0)<0){S=50;break a}T=R<<6;R=N+32&-32;hi(d,N>>>0<1073741823?(T>>>0>>0?R:T):2147483647);U=f[l>>2]|0}else U=N;f[l>>2]=U+1;N=(f[d>>2]|0)+(U>>>5<<2)|0;f[N>>2]=f[N>>2]&~(1<<(U&31));f[g>>2]=J;O=1;P=J+1|0;Q=J}N=f[d>>2]|0;T=N+(Q>>>5<<2)|0;f[T>>2]=f[T>>2]|1<<(Q&31);T=N;b:do if(O){R=M;while(1){if((R|0)==-1){S=64;break b}V=(f[e>>2]|0)+(R>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(R&31);V=f[g>>2]|0;f[(f[h>>2]|0)+(V<<2)>>2]=R;f[(f[a>>2]|0)+(R<<2)>>2]=V;V=R+1|0;W=((V>>>0)%3|0|0)==0?R+-2|0:V;do if((W|0)==-1)X=-1;else{V=f[(f[x>>2]|0)+(W<<2)>>2]|0;Y=V+1|0;if((V|0)==-1){X=-1;break}X=((Y>>>0)%3|0|0)==0?V+-2|0:Y}while(0);if((X|0)==(M|0))break;else R=X}}else{R=M;while(1){if((R|0)==-1){S=64;break b}W=(f[e>>2]|0)+(R>>>5<<2)|0;f[W>>2]=f[W>>2]|1<<(R&31);f[(f[h>>2]|0)+(f[g>>2]<<2)>>2]=R;W=R+1|0;Y=((W>>>0)%3|0|0)==0?R+-2|0:W;do if((Y|0)==-1)Z=-1;else{W=f[(f[x>>2]|0)+(Y<<2)>>2]|0;V=W+1|0;if((W|0)==-1){Z=-1;break}Z=((V>>>0)%3|0|0)==0?W+-2|0:V}while(0);if((Z|0)==(M|0))break;else R=Z}}while(0);c:do if((S|0)==64){S=0;if((M|0)==-1)break;R=(((M>>>0)%3|0|0)==0?2:-1)+M|0;if((R|0)==-1)break;Y=f[(f[x>>2]|0)+(R<<2)>>2]|0;if((Y|0)==-1)break;R=Y+(((Y>>>0)%3|0|0)==0?2:-1)|0;if((R|0)==-1)break;if(!O){Y=R;while(1){V=(f[e>>2]|0)+(Y>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(Y&31);V=(((Y>>>0)%3|0|0)==0?2:-1)+Y|0;if((V|0)==-1)break c;W=f[(f[x>>2]|0)+(V<<2)>>2]|0;if((W|0)==-1)break c;Y=W+(((W>>>0)%3|0|0)==0?2:-1)|0;if((Y|0)==-1)break c}}Y=f[a>>2]|0;W=R;do{V=(f[e>>2]|0)+(W>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(W&31);f[Y+(W<<2)>>2]=f[g>>2];V=(((W>>>0)%3|0|0)==0?2:-1)+W|0;if((V|0)==-1)break c;_=f[(f[x>>2]|0)+(V<<2)>>2]|0;if((_|0)==-1)break c;W=_+(((_>>>0)%3|0|0)==0?2:-1)|0}while((W|0)!=-1)}while(0);$=P;aa=T;ba=N}else{$=J;aa=I;ba=F}if((H|0)<2){H=H+1|0;J=$;F=ba;I=aa}else{ca=$;da=aa;ea=ba;break}}}else{ca=A;da=D;ea=E}}else{ca=A;da=D;ea=E}C=C+1|0;B=f[a>>2]|0;if(C>>>0>=(((f[m>>2]|0)-B>>2>>>0)/3|0)>>>0){S=18;break}else{A=ca;D=da;E=ea}}if((S|0)==18){fa=da;ga=f[l>>2]|0;break}else if((S|0)==50)mq(d)}else{fa=q;ga=p}}else{fa=q;ga=p}while(0);p=a+44|0;f[p>>2]=0;a=fa;fa=ga>>>5;q=a+(fa<<2)|0;S=ga&31;ga=(fa|0)!=0;d:do if(fa|S|0)if(!S){l=a;da=0;ea=ga;while(1){e:do if(ea){if(!(f[l>>2]&1)){ca=da+1|0;f[p>>2]=ca;ha=ca}else ha=da;if(!(f[l>>2]&2)){ca=ha+1|0;f[p>>2]=ca;ia=ca}else ia=ha;if(!(f[l>>2]&4)){ca=ia+1|0;f[p>>2]=ca;ja=ca}else ja=ia;if(!(f[l>>2]&8)){ca=ja+1|0;f[p>>2]=ca;ka=ca}else ka=ja;if(!(f[l>>2]&16)){ca=ka+1|0;f[p>>2]=ca;la=ca}else la=ka;if(!(f[l>>2]&32)){ca=la+1|0;f[p>>2]=ca;ma=ca}else ma=la;if(!(f[l>>2]&64)){ca=ma+1|0;f[p>>2]=ca;na=ca}else na=ma;if(!(f[l>>2]&128)){ca=na+1|0;f[p>>2]=ca;oa=ca}else oa=na;if(!(f[l>>2]&256)){ca=oa+1|0;f[p>>2]=ca;pa=ca}else pa=oa;if(!(f[l>>2]&512)){ca=pa+1|0;f[p>>2]=ca;qa=ca}else qa=pa;if(!(f[l>>2]&1024)){ca=qa+1|0;f[p>>2]=ca;ra=ca}else ra=qa;if(!(f[l>>2]&2048)){ca=ra+1|0;f[p>>2]=ca;sa=ca}else sa=ra;if(!(f[l>>2]&4096)){ca=sa+1|0;f[p>>2]=ca;ta=ca}else ta=sa;if(!(f[l>>2]&8192)){ca=ta+1|0;f[p>>2]=ca;ua=ca}else ua=ta;if(!(f[l>>2]&16384)){ca=ua+1|0;f[p>>2]=ca;va=ca}else va=ua;if(!(f[l>>2]&32768)){ca=va+1|0;f[p>>2]=ca;wa=ca}else wa=va;if(!(f[l>>2]&65536)){ca=wa+1|0;f[p>>2]=ca;xa=ca}else xa=wa;if(!(f[l>>2]&131072)){ca=xa+1|0;f[p>>2]=ca;ya=ca}else ya=xa;if(!(f[l>>2]&262144)){ca=ya+1|0;f[p>>2]=ca;za=ca}else za=ya;if(!(f[l>>2]&524288)){ca=za+1|0;f[p>>2]=ca;Aa=ca}else Aa=za;if(!(f[l>>2]&1048576)){ca=Aa+1|0;f[p>>2]=ca;Ba=ca}else Ba=Aa;if(!(f[l>>2]&2097152)){ca=Ba+1|0;f[p>>2]=ca;Ca=ca}else Ca=Ba;if(!(f[l>>2]&4194304)){ca=Ca+1|0;f[p>>2]=ca;Da=ca}else Da=Ca;if(!(f[l>>2]&8388608)){ca=Da+1|0;f[p>>2]=ca;Ea=ca}else Ea=Da;if(!(f[l>>2]&16777216)){ca=Ea+1|0;f[p>>2]=ca;Fa=ca}else Fa=Ea;if(!(f[l>>2]&33554432)){ca=Fa+1|0;f[p>>2]=ca;Ga=ca}else Ga=Fa;if(!(f[l>>2]&67108864)){ca=Ga+1|0;f[p>>2]=ca;Ha=ca}else Ha=Ga;if(!(f[l>>2]&134217728)){ca=Ha+1|0;f[p>>2]=ca;Ia=ca}else Ia=Ha;if(!(f[l>>2]&268435456)){ca=Ia+1|0;f[p>>2]=ca;Ja=ca}else Ja=Ia;if(!(f[l>>2]&536870912)){ca=Ja+1|0;f[p>>2]=ca;Ka=ca}else Ka=Ja;if(!(f[l>>2]&1073741824)){ca=Ka+1|0;f[p>>2]=ca;La=ca}else La=Ka;if((f[l>>2]|0)<=-1){Ma=La;break}ca=La+1|0;f[p>>2]=ca;Ma=ca}else{ca=0;m=da;while(1){if(!(f[l>>2]&1<>2]=ba;Na=ba}else Na=m;if((ca|0)==31){Ma=Na;break e}ca=ca+1|0;if(!ca)break d;else m=Na}}while(0);l=l+4|0;if((q|0)==(l|0))break;else{da=Ma;ea=1}}}else{if(ga){ea=0;da=a;l=0;while(1){if(!(f[da>>2]&1)){m=l+1|0;f[p>>2]=m;Oa=m;Pa=m}else{Oa=l;Pa=ea}if(!(f[da>>2]&2)){m=Oa+1|0;f[p>>2]=m;Qa=m;Ra=m}else{Qa=Oa;Ra=Pa}if(!(f[da>>2]&4)){m=Qa+1|0;f[p>>2]=m;Sa=m;Ta=m}else{Sa=Qa;Ta=Ra}if(!(f[da>>2]&8)){m=Sa+1|0;f[p>>2]=m;Ua=m;Va=m}else{Ua=Sa;Va=Ta}if(!(f[da>>2]&16)){m=Ua+1|0;f[p>>2]=m;Wa=m;Xa=m}else{Wa=Ua;Xa=Va}if(!(f[da>>2]&32)){m=Wa+1|0;f[p>>2]=m;Ya=m;Za=m}else{Ya=Wa;Za=Xa}if(!(f[da>>2]&64)){m=Ya+1|0;f[p>>2]=m;_a=m;$a=m}else{_a=Ya;$a=Za}if(!(f[da>>2]&128)){m=_a+1|0;f[p>>2]=m;ab=m;bb=m}else{ab=_a;bb=$a}if(!(f[da>>2]&256)){m=ab+1|0;f[p>>2]=m;cb=m;db=m}else{cb=ab;db=bb}if(!(f[da>>2]&512)){m=cb+1|0;f[p>>2]=m;eb=m;fb=m}else{eb=cb;fb=db}if(!(f[da>>2]&1024)){m=eb+1|0;f[p>>2]=m;gb=m;hb=m}else{gb=eb;hb=fb}if(!(f[da>>2]&2048)){m=gb+1|0;f[p>>2]=m;ib=m;jb=m}else{ib=gb;jb=hb}if(!(f[da>>2]&4096)){m=ib+1|0;f[p>>2]=m;kb=m;lb=m}else{kb=ib;lb=jb}if(!(f[da>>2]&8192)){m=kb+1|0;f[p>>2]=m;mb=m;nb=m}else{mb=kb;nb=lb}if(!(f[da>>2]&16384)){m=mb+1|0;f[p>>2]=m;ob=m;pb=m}else{ob=mb;pb=nb}if(!(f[da>>2]&32768)){m=ob+1|0;f[p>>2]=m;qb=m;rb=m}else{qb=ob;rb=pb}if(!(f[da>>2]&65536)){m=qb+1|0;f[p>>2]=m;sb=m;tb=m}else{sb=qb;tb=rb}if(!(f[da>>2]&131072)){m=sb+1|0;f[p>>2]=m;ub=m;vb=m}else{ub=sb;vb=tb}if(!(f[da>>2]&262144)){m=ub+1|0;f[p>>2]=m;wb=m;xb=m}else{wb=ub;xb=vb}if(!(f[da>>2]&524288)){m=wb+1|0;f[p>>2]=m;yb=m;zb=m}else{yb=wb;zb=xb}if(!(f[da>>2]&1048576)){m=yb+1|0;f[p>>2]=m;Ab=m;Bb=m}else{Ab=yb;Bb=zb}if(!(f[da>>2]&2097152)){m=Ab+1|0;f[p>>2]=m;Cb=m;Db=m}else{Cb=Ab;Db=Bb}if(!(f[da>>2]&4194304)){m=Cb+1|0;f[p>>2]=m;Eb=m;Fb=m}else{Eb=Cb;Fb=Db}if(!(f[da>>2]&8388608)){m=Eb+1|0;f[p>>2]=m;Gb=m;Hb=m}else{Gb=Eb;Hb=Fb}if(!(f[da>>2]&16777216)){m=Gb+1|0;f[p>>2]=m;Ib=m;Jb=m}else{Ib=Gb;Jb=Hb}if(!(f[da>>2]&33554432)){m=Ib+1|0;f[p>>2]=m;Kb=m;Lb=m}else{Kb=Ib;Lb=Jb}if(!(f[da>>2]&67108864)){m=Kb+1|0;f[p>>2]=m;Mb=m;Nb=m}else{Mb=Kb;Nb=Lb}if(!(f[da>>2]&134217728)){m=Mb+1|0;f[p>>2]=m;Ob=m;Pb=m}else{Ob=Mb;Pb=Nb}if(!(f[da>>2]&268435456)){m=Ob+1|0;f[p>>2]=m;Qb=m;Rb=m}else{Qb=Ob;Rb=Pb}if(!(f[da>>2]&536870912)){m=Qb+1|0;f[p>>2]=m;Sb=m;Tb=m}else{Sb=Qb;Tb=Rb}if(!(f[da>>2]&1073741824)){m=Sb+1|0;f[p>>2]=m;Ub=m;Vb=m}else{Ub=Sb;Vb=Tb}if((f[da>>2]|0)>-1){m=Ub+1|0;f[p>>2]=m;Wb=m;Xb=m}else{Wb=Ub;Xb=Vb}m=da+4|0;if((q|0)==(m|0)){Yb=m;Zb=Xb;break}else{ea=Xb;da=m;l=Wb}}}else{Yb=a;Zb=0}l=0;da=Zb;while(1){if(!(f[Yb>>2]&1<>2]=ea;_b=ea}else _b=da;l=l+1|0;if((l|0)==(S|0))break;else da=_b}}while(0);_b=f[e>>2]|0;if(_b|0)br(_b);_b=f[d>>2]|0;if(!_b){u=c;return 1}br(_b);u=c;return 1}function gb(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=Oa,La=0,Ma=0,Na=0,Pa=0,Qa=Oa,Ra=0,Sa=0,Ta=0,Ua=0,Va=0;c=u;u=u+80|0;d=c+60|0;e=c+48|0;g=c+24|0;h=c+12|0;i=c;j=a+28|0;k=f[j>>2]|0;l=f[k+4>>2]|0;m=f[l+80>>2]|0;o=a+4|0;p=a+8|0;q=f[p>>2]|0;r=f[o>>2]|0;s=(q|0)==(r|0);t=r;if(s){f[a+72>>2]=0;v=1;u=c;return v|0}w=f[l+8>>2]|0;x=q-r>>2;r=0;q=0;do{r=r+(b[(f[w+(f[t+(q<<2)>>2]<<2)>>2]|0)+24>>0]|0)|0;q=q+1|0}while(q>>>0>>0);f[a+72>>2]=r;if(s){v=1;u=c;return v|0}s=g+4|0;r=g+8|0;x=d+8|0;q=d+4|0;w=d+11|0;y=g+12|0;z=d+8|0;A=d+4|0;B=d+11|0;C=h+4|0;D=h+8|0;E=i+8|0;F=i+4|0;G=d+11|0;H=d+4|0;I=i+11|0;J=d+8|0;K=d+4|0;L=d+11|0;M=d+11|0;N=d+4|0;O=h+8|0;P=a+40|0;Q=a+44|0;R=a+36|0;S=a+64|0;T=a+68|0;U=a+60|0;V=g+8|0;W=g+20|0;X=e+8|0;Y=e+4|0;Z=e+11|0;_=g+4|0;aa=g+8|0;ba=h+4|0;ca=h+8|0;da=h+8|0;ea=a+52|0;fa=a+56|0;ga=a+48|0;a=g+8|0;ha=0;ia=t;t=l;l=k;a:while(1){k=f[ia+(ha<<2)>>2]|0;ja=f[(f[t+8>>2]|0)+(k<<2)>>2]|0;switch(f[ja+28>>2]|0){case 9:{f[g>>2]=1180;f[s>>2]=-1;f[r>>2]=0;f[r+4>>2]=0;f[r+8>>2]=0;f[r+12>>2]=0;ka=f[l+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;la=dn(32)|0;f[d>>2]=la;f[x>>2]=-2147483616;f[q>>2]=17;ma=la;na=12932;oa=ma+17|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[la+17>>0]=0;pa=ka+16|0;qa=f[pa>>2]|0;if(qa){ra=pa;sa=qa;b:while(1){qa=sa;while(1){if((f[qa+16>>2]|0)>=(k|0))break;ta=f[qa+4>>2]|0;if(!ta){ua=ra;break b}else qa=ta}sa=f[qa>>2]|0;if(!sa){ua=qa;break}else ra=qa}if(((ua|0)!=(pa|0)?(k|0)>=(f[ua+16>>2]|0):0)?(ra=ua+20|0,(sh(ra,d)|0)!=0):0)va=yk(ra,d,-1)|0;else wa=17}else wa=17;if((wa|0)==17){wa=0;va=yk(ka,d,-1)|0}if((b[w>>0]|0)<0)br(f[d>>2]|0);if((va|0)<1)xa=1;else{ra=f[(f[j>>2]|0)+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;sa=dn(32)|0;f[d>>2]=sa;f[z>>2]=-2147483616;f[A>>2]=19;ma=sa;na=13005;oa=ma+19|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[sa+19>>0]=0;ka=ra+16|0;pa=f[ka>>2]|0;if(pa){la=ka;ta=pa;c:while(1){pa=ta;while(1){if((f[pa+16>>2]|0)>=(k|0))break;ya=f[pa+4>>2]|0;if(!ya){za=la;break c}else pa=ya}ta=f[pa>>2]|0;if(!ta){za=pa;break}else la=pa}if((za|0)!=(ka|0)?(k|0)>=(f[za+16>>2]|0):0)Aa=za+20|0;else wa=29}else wa=29;if((wa|0)==29){wa=0;Aa=ra}if(!(sh(Aa,d)|0))Ba=0;else{la=f[(f[j>>2]|0)+48>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;ta=dn(32)|0;f[e>>2]=ta;f[X>>2]=-2147483616;f[Y>>2]=18;ma=ta;na=13025;oa=ma+18|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ta+18>>0]=0;ra=la+16|0;ka=f[ra>>2]|0;if(ka){sa=ra;qa=ka;d:while(1){ka=qa;while(1){if((f[ka+16>>2]|0)>=(k|0))break;ya=f[ka+4>>2]|0;if(!ya){Ca=sa;break d}else ka=ya}qa=f[ka>>2]|0;if(!qa){Ca=ka;break}else sa=ka}if((Ca|0)!=(ra|0)?(k|0)>=(f[Ca+16>>2]|0):0)Da=Ca+20|0;else wa=39}else wa=39;if((wa|0)==39){wa=0;Da=la}sa=(sh(Da,e)|0)!=0;if((b[Z>>0]|0)<0)br(f[e>>2]|0);Ba=sa}if((b[B>>0]|0)<0)br(f[d>>2]|0);if(Ba){sa=ja+24|0;qa=b[sa>>0]|0;ta=qa<<24>>24;f[h>>2]=0;f[C>>2]=0;f[D>>2]=0;if(!(qa<<24>>24))Ea=0;else{if(qa<<24>>24<0){wa=48;break a}qa=ta<<2;pa=dn(qa)|0;f[h>>2]=pa;ya=pa+(ta<<2)|0;f[O>>2]=ya;hj(pa|0,0,qa|0)|0;f[C>>2]=ya;Ea=pa}pa=f[(f[j>>2]|0)+48>>2]|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;ya=dn(32)|0;f[i>>2]=ya;f[E>>2]=-2147483616;f[F>>2]=19;ma=ya;na=13005;oa=ma+19|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ya+19>>0]=0;la=b[sa>>0]|0;ra=la<<24>>24;qa=pa+16|0;ta=f[qa>>2]|0;if(ta){Fa=qa;Ga=ta;e:while(1){ta=Ga;while(1){if((f[ta+16>>2]|0)>=(k|0))break;Ha=f[ta+4>>2]|0;if(!Ha){Ia=Fa;break e}else ta=Ha}Ga=f[ta>>2]|0;if(!Ga){Ia=ta;break}else Fa=ta}if(((Ia|0)!=(qa|0)?(k|0)>=(f[Ia+16>>2]|0):0)?(Fa=Ia+20|0,(sh(Fa,i)|0)!=0):0){Ga=zg(Fa,i)|0;if((Ga|0)!=(Ia+24|0)){dj(d,Ga+28|0);Ga=b[M>>0]|0;Fa=Ga<<24>>24<0;if(!((Fa?f[N>>2]|0:Ga&255)|0))Ja=Ga;else{if(la<<24>>24>0){ya=Fa?f[d>>2]|0:d;Fa=0;do{Ka=$(pq(ya,e));ka=ya;ya=f[e>>2]|0;if((ka|0)==(ya|0))break;n[Ea+(Fa<<2)>>2]=Ka;Fa=Fa+1|0}while((Fa|0)<(ra|0));La=b[M>>0]|0}else La=Ga;Ja=La}if(Ja<<24>>24<0)br(f[d>>2]|0)}}else wa=69}else wa=69;if((wa|0)==69?(wa=0,Fa=zg(pa,i)|0,(Fa|0)!=(pa+4|0)):0){dj(d,Fa+28|0);Fa=b[G>>0]|0;ya=Fa<<24>>24<0;if(!((ya?f[H>>2]|0:Fa&255)|0))Ma=Fa;else{if(la<<24>>24>0){qa=ya?f[d>>2]|0:d;ya=0;do{Ka=$(pq(qa,e));ka=qa;qa=f[e>>2]|0;if((ka|0)==(qa|0))break;n[Ea+(ya<<2)>>2]=Ka;ya=ya+1|0}while((ya|0)<(ra|0));Na=b[G>>0]|0}else Na=Fa;Ma=Na}if(Ma<<24>>24<0)br(f[d>>2]|0)}if((b[I>>0]|0)<0)br(f[i>>2]|0);ra=f[(f[j>>2]|0)+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;ya=dn(32)|0;f[d>>2]=ya;f[J>>2]=-2147483616;f[K>>2]=18;ma=ya;na=13025;oa=ma+18|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ya+18>>0]=0;na=ra+16|0;ma=f[na>>2]|0;do if(ma){oa=na;Fa=ma;f:while(1){qa=Fa;while(1){if((f[qa+16>>2]|0)>=(k|0))break;la=f[qa+4>>2]|0;if(!la){Pa=oa;break f}else qa=la}Fa=f[qa>>2]|0;if(!Fa){Pa=qa;break}else oa=qa}if((Pa|0)!=(na|0)?(k|0)>=(f[Pa+16>>2]|0):0){oa=Pa+20|0;if(!(sh(oa,d)|0)){wa=91;break}Qa=$(kk(oa,d,$(1.0)))}else wa=91}else wa=91;while(0);if((wa|0)==91){wa=0;Qa=$(kk(ra,d,$(1.0)))}if((b[L>>0]|0)<0)br(f[d>>2]|0);wl(g,va,f[h>>2]|0,b[sa>>0]|0,Qa);k=f[h>>2]|0;if(k|0){na=f[C>>2]|0;if((na|0)!=(k|0))f[C>>2]=na+(~((na+-4-k|0)>>>2)<<2);br(k)}}else Kd(g,ja,va)|0;k=f[P>>2]|0;if((k|0)==(f[Q>>2]|0))of(R,g);else{f[k>>2]=1180;f[k+4>>2]=f[s>>2];Ra=k+8|0;f[Ra>>2]=0;na=k+12|0;f[na>>2]=0;f[k+16>>2]=0;ma=(f[y>>2]|0)-(f[V>>2]|0)|0;ya=ma>>2;if(ya|0){if(ya>>>0>1073741823){wa=103;break a}oa=dn(ma)|0;f[na>>2]=oa;f[Ra>>2]=oa;f[k+16>>2]=oa+(ya<<2);ya=f[V>>2]|0;ma=(f[y>>2]|0)-ya|0;if((ma|0)>0){Rg(oa|0,ya|0,ma|0)|0;f[na>>2]=oa+(ma>>>2<<2)}}f[k+20>>2]=f[W>>2];f[P>>2]=(f[P>>2]|0)+24}Re(d,g,ja,m);k=f[S>>2]|0;if(k>>>0<(f[T>>2]|0)>>>0){ma=f[d>>2]|0;f[d>>2]=0;f[k>>2]=ma;f[S>>2]=k+4}else Me(U,d);k=f[d>>2]|0;f[d>>2]=0;if(k|0){ma=k+88|0;oa=f[ma>>2]|0;f[ma>>2]=0;if(oa|0){ma=f[oa+8>>2]|0;if(ma|0){na=oa+12|0;if((f[na>>2]|0)!=(ma|0))f[na>>2]=ma;br(ma)}br(oa)}oa=f[k+68>>2]|0;if(oa|0){ma=k+72|0;na=f[ma>>2]|0;if((na|0)!=(oa|0))f[ma>>2]=na+(~((na+-4-oa|0)>>>2)<<2);br(oa)}oa=k+64|0;na=f[oa>>2]|0;f[oa>>2]=0;if(na|0){oa=f[na>>2]|0;if(oa|0){ma=na+4|0;if((f[ma>>2]|0)!=(oa|0))f[ma>>2]=oa;br(oa)}br(na)}br(k)}xa=0}f[g>>2]=1180;k=f[r>>2]|0;if(k|0){na=f[y>>2]|0;if((na|0)!=(k|0))f[y>>2]=na+(~((na+-4-k|0)>>>2)<<2);br(k)}if(xa|0){v=0;wa=169;break a}break}case 1:case 3:case 5:{k=ja+24|0;na=b[k>>0]|0;oa=na<<24>>24;f[g>>2]=0;f[_>>2]=0;f[aa>>2]=0;if(!(na<<24>>24))Sa=0;else{if(na<<24>>24<0){wa=137;break a}na=dn(oa<<2)|0;f[_>>2]=na;f[g>>2]=na;ma=na+(oa<<2)|0;f[a>>2]=ma;ya=oa;oa=na;while(1){f[oa>>2]=2147483647;ya=ya+-1|0;if(!ya)break;else oa=oa+4|0}f[_>>2]=ma;Sa=b[k>>0]|0}oa=Sa<<24>>24;f[h>>2]=0;f[ba>>2]=0;f[ca>>2]=0;if(!(Sa<<24>>24))Ta=0;else{if(Sa<<24>>24<0){wa=144;break a}ya=oa<<2;sa=dn(ya)|0;f[h>>2]=sa;ra=sa+(oa<<2)|0;f[da>>2]=ra;hj(sa|0,0,ya|0)|0;f[ba>>2]=ra;Ta=sa}sa=ja+80|0;ra=b[k>>0]|0;g:do if(!(f[sa>>2]|0))Ua=ra;else{ya=0;oa=ra;na=Ta;while(1){f[e>>2]=ya;f[d>>2]=f[e>>2];Pb(ja,d,oa,na)|0;Fa=b[k>>0]|0;if(Fa<<24>>24>0){ta=f[g>>2]|0;la=f[h>>2]|0;pa=Fa<<24>>24;Ga=0;do{ka=ta+(Ga<<2)|0;Ha=f[la+(Ga<<2)>>2]|0;if((f[ka>>2]|0)>(Ha|0))f[ka>>2]=Ha;Ga=Ga+1|0}while((Ga|0)<(pa|0))}pa=ya+1|0;if(pa>>>0>=(f[sa>>2]|0)>>>0){Ua=Fa;break g}ya=pa;oa=Fa;na=f[h>>2]|0}}while(0);if(Ua<<24>>24>0){sa=0;ja=Ua;while(1){ra=(f[g>>2]|0)+(sa<<2)|0;ma=f[ea>>2]|0;if((ma|0)==(f[fa>>2]|0)){Ci(ga,ra);Va=b[k>>0]|0}else{f[ma>>2]=f[ra>>2];f[ea>>2]=ma+4;Va=ja}sa=sa+1|0;if((sa|0)>=(Va<<24>>24|0))break;else ja=Va}}ja=f[h>>2]|0;if(ja|0){sa=f[ba>>2]|0;if((sa|0)!=(ja|0))f[ba>>2]=sa+(~((sa+-4-ja|0)>>>2)<<2);br(ja)}ja=f[g>>2]|0;if(ja|0){sa=f[_>>2]|0;if((sa|0)!=(ja|0))f[_>>2]=sa+(~((sa+-4-ja|0)>>>2)<<2);br(ja)}break}default:{}}ja=ha+1|0;sa=f[o>>2]|0;if(ja>>>0>=(f[p>>2]|0)-sa>>2>>>0){v=1;wa=169;break}k=f[j>>2]|0;ha=ja;ia=sa;t=f[k+4>>2]|0;l=k}if((wa|0)==48)mq(h);else if((wa|0)==103)mq(Ra);else if((wa|0)==137)mq(g);else if((wa|0)==144)mq(h);else if((wa|0)==169){u=c;return v|0}return 0}function hb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)mq(e);else{j=h<<2;k=dn(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;hj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+128|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);br(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)mq(e);else{r=s<<2;o=dn(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;hj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+140|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);br(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Jc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+116|0;y=a+48|0;h=a+44|0;j=a+36|0;m=a+40|0;n=a+32|0;A=b+8|0;B=c+8|0;C=a+28|0;D=a+24|0;E=a+16|0;F=a+20|0;G=a+12|0;H=a+88|0;I=a+84|0;J=a+76|0;K=a+80|0;L=a+72|0;M=i+4|0;N=i+24|0;O=i+24|0;P=p+24|0;Q=z;while(1){z=f[v>>2]|0;R=Q+-1|0;S=R+z|0;T=f[t>>2]|0;U=f[T+(((S>>>0)/113|0)<<2)>>2]|0;V=(S>>>0)%113|0;S=f[U+(V*36|0)>>2]|0;W=f[U+(V*36|0)+12>>2]|0;Y=f[U+(V*36|0)+24>>2]|0;Z=f[U+(V*36|0)+32>>2]|0;f[l>>2]=R;R=f[o>>2]|0;V=R-T>>2;if((1-Q-z+((V|0)==0?0:(V*113|0)+-1|0)|0)>>>0>225){br(f[R+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=S;f[c>>2]=W;R=f[k>>2]|0;V=((f[g>>2]|0)+-1|0)==(Y|0)?0:Y+1|0;Y=(f[s>>2]|0)+(Z*12|0)|0;z=W-S|0;T=(f[a>>2]|0)-(f[(f[Y>>2]|0)+(V<<2)>>2]|0)|0;a:do if(T){if(z>>>0<3){U=f[w>>2]|0;f[U>>2]=V;$=f[g>>2]|0;if($>>>0>1){aa=1;ba=$;ca=V;while(1){ca=(ca|0)==(ba+-1|0)?0:ca+1|0;f[U+(aa<<2)>>2]=ca;aa=aa+1|0;da=f[g>>2]|0;if(aa>>>0>=da>>>0){ea=da;break}else ba=da}}else ea=$;if(!z){fa=99;break}else{ga=0;ha=ea}while(1){ba=(f[N>>2]|0)+((X(f[M>>2]|0,S+ga|0)|0)<<2)|0;if(!ha)ia=0;else{aa=0;do{ca=f[(f[w>>2]|0)+(aa<<2)>>2]|0;U=(f[a>>2]|0)-(f[(f[Y>>2]|0)+(ca<<2)>>2]|0)|0;do if(U|0){da=f[y>>2]|0;ja=32-da|0;ka=32-U|0;la=f[ba+(ca<<2)>>2]<(ja|0)){ma=la>>>ka;ka=U-ja|0;f[y>>2]=ka;ja=f[h>>2]|ma>>>ka;f[h>>2]=ja;ka=f[j>>2]|0;if((ka|0)==(f[m>>2]|0))Ci(n,h);else{f[ka>>2]=ja;f[j>>2]=ka+4}f[h>>2]=ma<<32-(f[y>>2]|0);break}ma=f[h>>2]|la>>>da;f[h>>2]=ma;la=da+U|0;f[y>>2]=la;if((la|0)!=32)break;la=f[j>>2]|0;if((la|0)==(f[m>>2]|0))Ci(n,h);else{f[la>>2]=ma;f[j>>2]=la+4}f[h>>2]=0;f[y>>2]=0}while(0);aa=aa+1|0;U=f[g>>2]|0}while(aa>>>0>>0);ia=U}ga=ga+1|0;if(ga>>>0>=z>>>0){fa=99;break a}else ha=ia}}$=Z+1|0;qg(R+($*12|0)|0,f[R+(Z*12|0)>>2]|0,f[R+(Z*12|0)+4>>2]|0);aa=(f[(f[k>>2]|0)+($*12|0)>>2]|0)+(V<<2)|0;ba=(f[aa>>2]|0)+(1<>2]=ba;aa=f[A>>2]|0;U=f[B>>2]|0;b:do if((W|0)==(S|0))na=S;else{ca=f[O>>2]|0;if(!aa){if((f[ca+(V<<2)>>2]|0)>>>0>>0){na=W;break}else{oa=W;pa=S}while(1){la=oa;do{la=la+-1|0;if((pa|0)==(la|0)){na=pa;break b}ma=(f[P>>2]|0)+((X(la,U)|0)<<2)+(V<<2)|0}while((f[ma>>2]|0)>>>0>=ba>>>0);pa=pa+1|0;if((pa|0)==(la|0)){na=la;break b}else oa=la}}else{qa=W;ra=S}while(1){ma=ra;while(1){sa=ca+((X(ma,aa)|0)<<2)|0;if((f[sa+(V<<2)>>2]|0)>>>0>=ba>>>0){ta=qa;break}da=ma+1|0;if((da|0)==(qa|0)){na=qa;break b}else ma=da}while(1){ta=ta+-1|0;if((ma|0)==(ta|0)){na=ma;break b}ua=(f[P>>2]|0)+((X(ta,U)|0)<<2)|0;if((f[ua+(V<<2)>>2]|0)>>>0>>0){va=0;break}}do{la=sa+(va<<2)|0;da=ua+(va<<2)|0;ka=f[la>>2]|0;f[la>>2]=f[da>>2];f[da>>2]=ka;va=va+1|0}while((va|0)!=(aa|0));ra=ma+1|0;if((ra|0)==(ta|0)){na=ta;break}else qa=ta}}while(0);ba=(_(z|0)|0)^31;U=na-S|0;ca=W-na|0;ka=U>>>0>>0;if((U|0)!=(ca|0)){da=f[H>>2]|0;if(ka)f[I>>2]=f[I>>2]|1<<31-da;la=da+1|0;f[H>>2]=la;if((la|0)==32){la=f[J>>2]|0;if((la|0)==(f[K>>2]|0))Ci(L,I);else{f[la>>2]=f[I>>2];f[J>>2]=la+4}f[H>>2]=0;f[I>>2]=0}}la=z>>>1;do if(ka){da=f[C>>2]|0;ja=32-da|0;wa=32-ba|0;xa=la-U<(ja|0)){ya=xa>>>wa;wa=ba-ja|0;f[C>>2]=wa;ja=f[D>>2]|ya>>>wa;f[D>>2]=ja;wa=f[E>>2]|0;if((wa|0)==(f[F>>2]|0))Ci(G,D);else{f[wa>>2]=ja;f[E>>2]=wa+4}f[D>>2]=ya<<32-(f[C>>2]|0);break}ya=f[D>>2]|xa>>>da;f[D>>2]=ya;xa=da+ba|0;f[C>>2]=xa;if((xa|0)==32){xa=f[E>>2]|0;if((xa|0)==(f[F>>2]|0))Ci(G,D);else{f[xa>>2]=ya;f[E>>2]=xa+4}f[D>>2]=0;f[C>>2]=0}}else{xa=f[C>>2]|0;ya=32-xa|0;da=32-ba|0;wa=la-ca<(ya|0)){ja=wa>>>da;da=ba-ya|0;f[C>>2]=da;ya=f[D>>2]|ja>>>da;f[D>>2]=ya;da=f[E>>2]|0;if((da|0)==(f[F>>2]|0))Ci(G,D);else{f[da>>2]=ya;f[E>>2]=da+4}f[D>>2]=ja<<32-(f[C>>2]|0);break}ja=f[D>>2]|wa>>>xa;f[D>>2]=ja;wa=xa+ba|0;f[C>>2]=wa;if((wa|0)==32){wa=f[E>>2]|0;if((wa|0)==(f[F>>2]|0))Ci(G,D);else{f[wa>>2]=ja;f[E>>2]=wa+4}f[D>>2]=0;f[C>>2]=0}}while(0);ba=f[s>>2]|0;la=f[ba+(Z*12|0)>>2]|0;ka=la+(V<<2)|0;f[ka>>2]=(f[ka>>2]|0)+1;qg(ba+($*12|0)|0,la,f[ba+(Z*12|0)+4>>2]|0);if((na|0)!=(S|0)){ba=f[o>>2]|0;la=f[t>>2]|0;ka=ba-la>>2;wa=f[v>>2]|0;ja=f[l>>2]|0;if((((ka|0)==0?0:(ka*113|0)+-1|0)|0)==(ja+wa|0)){Jc(e);za=f[v>>2]|0;Aa=f[l>>2]|0;Ba=f[o>>2]|0;Ca=f[t>>2]|0}else{za=wa;Aa=ja;Ba=ba;Ca=la}la=Aa+za|0;if((Ba|0)==(Ca|0))Da=0;else Da=(f[Ca+(((la>>>0)/113|0)<<2)>>2]|0)+(((la>>>0)%113|0)*36|0)|0;f[Da>>2]=S;la=Da+4|0;f[la>>2]=r;f[la+4>>2]=x;f[Da+12>>2]=na;f[Da+16>>2]=i;f[Da+20>>2]=aa;f[Da+24>>2]=V;f[Da+28>>2]=U;f[Da+32>>2]=Z;f[l>>2]=(f[l>>2]|0)+1}if((W|0)!=(na|0)){la=f[o>>2]|0;ba=f[t>>2]|0;ja=la-ba>>2;wa=f[v>>2]|0;ka=f[l>>2]|0;if((((ja|0)==0?0:(ja*113|0)+-1|0)|0)==(ka+wa|0)){Jc(e);Ea=f[v>>2]|0;Fa=f[l>>2]|0;Ga=f[o>>2]|0;Ha=f[t>>2]|0}else{Ea=wa;Fa=ka;Ga=la;Ha=ba}ba=Fa+Ea|0;if((Ga|0)==(Ha|0))Ia=0;else Ia=(f[Ha+(((ba>>>0)/113|0)<<2)>>2]|0)+(((ba>>>0)%113|0)*36|0)|0;f[Ia>>2]=na;f[Ia+4>>2]=i;f[Ia+8>>2]=aa;f[Ia+12>>2]=W;ba=Ia+16|0;f[ba>>2]=p;f[ba+4>>2]=q;f[Ia+24>>2]=V;f[Ia+28>>2]=ca;f[Ia+32>>2]=$;ba=(f[l>>2]|0)+1|0;f[l>>2]=ba;Ja=ba}else fa=99}else fa=99;while(0);if((fa|0)==99){fa=0;Ja=f[l>>2]|0}if(!Ja)break;else Q=Ja}}Ja=f[t>>2]|0;Q=f[v>>2]|0;Ia=Ja+(((Q>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ja;if((q|0)==(Ja|0)){Ka=0;La=0}else{na=(f[Ia>>2]|0)+(((Q>>>0)%113|0)*36|0)|0;Ka=na;La=na}na=Ia;Ia=La;c:while(1){La=Ia;do{Q=La;if((Ka|0)==(Q|0))break c;La=Q+36|0}while((La-(f[na>>2]|0)|0)!=4068);La=na+4|0;na=La;Ia=f[La>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ja;do{br(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Ma=f[o>>2]|0;Na=Ma-i>>2}while(Na>>>0>2);Oa=Na;Pa=i;Qa=Ma}else{Oa=l;Pa=Ja;Qa=q}switch(Oa|0){case 1:{Ra=56;fa=113;break}case 2:{Ra=113;fa=113;break}default:{}}if((fa|0)==113)f[v>>2]=Ra;if((Pa|0)!=(Qa|0)){Ra=Pa;do{br(f[Ra>>2]|0);Ra=Ra+4|0}while((Ra|0)!=(Qa|0));Qa=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Qa|0))f[o>>2]=t+(~((t+-4-Qa|0)>>>2)<<2)}Qa=f[e>>2]|0;if(!Qa){u=d;return}br(Qa);u=d;return}function ib(a,c){a=a|0;c=c|0;var d=0,e=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,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,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;d=u;u=u+80|0;e=d+56|0;g=d+52|0;h=d+48|0;i=d+68|0;j=d;k=d+44|0;l=d+40|0;m=d+36|0;n=d+32|0;o=d+28|0;p=d+24|0;q=d+20|0;r=d+16|0;s=d+12|0;if(!(b[c+288>>0]|0)){Ne(e,f[c+8>>2]|0);t=c+12|0;v=f[e>>2]|0;f[e>>2]=0;w=f[t>>2]|0;f[t>>2]=v;if(w){ui(w);br(w);w=f[e>>2]|0;f[e>>2]=0;if(w|0){ui(w);br(w)}}else f[e>>2]=0}else{Mg(e,f[c+8>>2]|0);w=c+12|0;v=f[e>>2]|0;f[e>>2]=0;t=f[w>>2]|0;f[w>>2]=v;if(t){ui(t);br(t);t=f[e>>2]|0;f[e>>2]=0;if(t|0){ui(t);br(t)}}else f[e>>2]=0}t=c+12|0;v=f[t>>2]|0;if(v|0?(((f[v+4>>2]|0)-(f[v>>2]|0)>>2>>>0)/3|0|0)!=(f[v+40>>2]|0):0){w=c+200|0;f[c+264>>2]=c;x=c+4|0;Nh(((f[v+28>>2]|0)-(f[v+24>>2]|0)>>2)-(f[v+44>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;v=f[t>>2]|0;Nh((((f[v+4>>2]|0)-(f[v>>2]|0)>>2>>>0)/3|0)-(f[v+40>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;v=c+28|0;y=c+8|0;z=f[y>>2]|0;A=((f[z+100>>2]|0)-(f[z+96>>2]|0)|0)/12|0;b[e>>0]=0;Xg(v,A,e);A=f[t>>2]|0;z=(f[A+28>>2]|0)-(f[A+24>>2]|0)>>2;f[e>>2]=-1;Sf(c+52|0,z,e);z=c+40|0;A=f[z>>2]|0;B=c+44|0;C=f[B>>2]|0;if((C|0)!=(A|0))f[B>>2]=C+(~((C+-4-A|0)>>>2)<<2);A=f[t>>2]|0;C=(f[A+4>>2]|0)-(f[A>>2]|0)>>2;$j(z,C-((C>>>0)%3|0)|0);C=c+84|0;z=f[t>>2]|0;A=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2;b[e>>0]=0;Xg(C,A,e);A=c+96|0;z=f[A>>2]|0;B=c+100|0;D=f[B>>2]|0;if((D|0)!=(z|0))f[B>>2]=D+(~((D+-4-z|0)>>>2)<<2);f[c+164>>2]=-1;z=c+168|0;f[z>>2]=0;D=f[c+108>>2]|0;E=c+112|0;F=f[E>>2]|0;if((F|0)!=(D|0))f[E>>2]=F+(~(((F+-12-D|0)>>>0)/12|0)*12|0);D=c+132|0;if(f[D>>2]|0){F=c+128|0;E=f[F>>2]|0;if(E|0){G=E;do{E=G;G=f[G>>2]|0;br(E)}while((G|0)!=0)}f[F>>2]=0;F=f[c+124>>2]|0;if(F|0){G=c+120|0;E=0;do{f[(f[G>>2]|0)+(E<<2)>>2]=0;E=E+1|0}while((E|0)!=(F|0))}f[D>>2]=0}f[c+144>>2]=0;D=f[t>>2]|0;F=(f[D+28>>2]|0)-(f[D+24>>2]|0)>>2;f[e>>2]=-1;Sf(c+152|0,F,e);F=c+72|0;D=f[F>>2]|0;E=c+76|0;G=f[E>>2]|0;if((G|0)!=(D|0))f[E>>2]=G+(~((G+-4-D|0)>>>2)<<2);D=f[t>>2]|0;$j(F,((f[D+4>>2]|0)-(f[D>>2]|0)>>2>>>0)/3|0);f[c+64>>2]=0;if(!(oe(c)|0)){D=dn(32)|0;f[e>>2]=D;f[e+8>>2]=-2147483616;f[e+4>>2]=29;H=D;I=13227;J=H+29|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[D+29>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}if(!(ch(c)|0)){D=dn(48)|0;f[e>>2]=D;f[e+8>>2]=-2147483600;f[e+4>>2]=36;H=D;I=13257;J=H+36|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[D+36>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}D=c+172|0;G=c+176|0;K=(((f[G>>2]|0)-(f[D>>2]|0)|0)/136|0)&255;b[i>>0]=K;L=f[(f[x>>2]|0)+44>>2]|0;M=L+16|0;N=f[M+4>>2]|0;if((N|0)>0|(N|0)==0&(f[M>>2]|0)>>>0>0)O=K;else{f[g>>2]=f[L+4>>2];f[e>>2]=f[g>>2];ye(L,e,i,i+1|0)|0;O=b[i>>0]|0}i=c+284|0;f[i>>2]=O&255;O=f[t>>2]|0;L=(f[O+4>>2]|0)-(f[O>>2]|0)|0;O=L>>2;Ti(w);f[j>>2]=0;K=j+4|0;f[K>>2]=0;f[j+8>>2]=0;a:do if((L|0)>0){M=c+104|0;N=j+8|0;P=0;b:while(1){Q=(P>>>0)/3|0;R=Q>>>5;S=1<<(Q&31);if((f[(f[v>>2]|0)+(R<<2)>>2]&S|0)==0?(T=f[t>>2]|0,f[k>>2]=Q,f[e>>2]=f[k>>2],!(Rj(T,e)|0)):0){f[g>>2]=0;f[l>>2]=Q;f[e>>2]=f[l>>2];Q=gg(c,e,g)|0;Vi(w,Q);T=f[g>>2]|0;U=(T|0)==-1;do if(Q){do if(U){V=-1;W=-1;X=-1}else{Y=f[f[t>>2]>>2]|0;Z=f[Y+(T<<2)>>2]|0;_=T+1|0;$=((_>>>0)%3|0|0)==0?T+-2|0:_;if(($|0)==-1)aa=-1;else aa=f[Y+($<<2)>>2]|0;$=(((T>>>0)%3|0|0)==0?2:-1)+T|0;if(($|0)==-1){V=-1;W=aa;X=Z;break}V=f[Y+($<<2)>>2]|0;W=aa;X=Z}while(0);Z=f[C>>2]|0;$=Z+(X>>>5<<2)|0;f[$>>2]=f[$>>2]|1<<(X&31);$=Z+(W>>>5<<2)|0;f[$>>2]=f[$>>2]|1<<(W&31);$=Z+(V>>>5<<2)|0;f[$>>2]=f[$>>2]|1<<(V&31);f[e>>2]=1;$=f[B>>2]|0;if($>>>0<(f[M>>2]|0)>>>0){f[$>>2]=1;f[B>>2]=$+4}else Ci(A,e);$=(f[v>>2]|0)+(R<<2)|0;f[$>>2]=f[$>>2]|S;$=T+1|0;if(U)ba=-1;else ba=(($>>>0)%3|0|0)==0?T+-2|0:$;f[e>>2]=ba;Z=f[K>>2]|0;if(Z>>>0<(f[N>>2]|0)>>>0){f[Z>>2]=ba;f[K>>2]=Z+4}else Ci(j,e);if(U)break;Z=(($>>>0)%3|0|0)==0?T+-2|0:$;if((Z|0)==-1)break;$=f[(f[(f[t>>2]|0)+12>>2]|0)+(Z<<2)>>2]|0;Z=($|0)==-1;Y=Z?-1:($>>>0)/3|0;if(Z)break;if(f[(f[v>>2]|0)+(Y>>>5<<2)>>2]&1<<(Y&31)|0)break;f[m>>2]=$;f[e>>2]=f[m>>2];if(!(hc(c,e)|0)){ca=65;break b}}else{$=T+1|0;if(U)da=-1;else da=(($>>>0)%3|0|0)==0?T+-2|0:$;f[n>>2]=da;f[e>>2]=f[n>>2];Ce(c,e,1)|0;f[o>>2]=f[g>>2];f[e>>2]=f[o>>2];if(!(hc(c,e)|0)){ca=71;break b}}while(0)}P=P+1|0;if((P|0)>=(O|0)){ca=77;break a}}if((ca|0)==65){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;P=dn(48)|0;f[e>>2]=P;f[e+8>>2]=-2147483600;f[e+4>>2]=32;H=P;I=13294;J=H+32|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[P+32>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}else if((ca|0)==71){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;N=dn(48)|0;f[e>>2]=N;f[e+8>>2]=-2147483600;f[e+4>>2]=32;H=N;I=13294;J=H+32|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[N+32>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}}else ca=77;while(0);do if((ca|0)==77){O=f[F>>2]|0;o=f[E>>2]|0;n=o;if((O|0)!=(o|0)?(da=o+-4|0,O>>>0>>0):0){o=O;O=da;do{da=f[o>>2]|0;f[o>>2]=f[O>>2];f[O>>2]=da;o=o+4|0;O=O+-4|0}while(o>>>0>>0)}f[p>>2]=n;f[q>>2]=f[j>>2];f[r>>2]=f[K>>2];f[h>>2]=f[p>>2];f[g>>2]=f[q>>2];f[e>>2]=f[r>>2];Md(F,h,g,e)|0;if((f[G>>2]|0)!=(f[D>>2]|0)?(O=f[y>>2]|0,o=((f[O+100>>2]|0)-(f[O+96>>2]|0)|0)/12|0,b[e>>0]=0,Xg(v,o,e),o=f[F>>2]|0,O=f[E>>2]|0,(o|0)!=(O|0)):0){N=o;do{f[s>>2]=f[N>>2];f[e>>2]=f[s>>2];ue(c,e)|0;N=N+4|0}while((N|0)!=(O|0))}_g(w);O=c+232|0;fd(w,O);N=c+280|0;n=f[N>>2]|0;if((n|0?(f[i>>2]|0)>0:0)?(fd(n,O),(f[i>>2]|0)>1):0){n=1;do{fd((f[N>>2]|0)+(n<<5)|0,O);n=n+1|0}while((n|0)<(f[i>>2]|0))}Nh((f[c+272>>2]|0)-(f[c+268>>2]|0)>>2,f[(f[x>>2]|0)+44>>2]|0)|0;Nh(f[z>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;if(Jg(c)|0){n=f[(f[x>>2]|0)+44>>2]|0;N=f[O>>2]|0;o=n+16|0;da=f[o+4>>2]|0;if(!((da|0)>0|(da|0)==0&(f[o>>2]|0)>>>0>0)){o=(f[c+236>>2]|0)-N|0;f[g>>2]=f[n+4>>2];f[e>>2]=f[g>>2];ye(n,e,N,N+o|0)|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;break}else{f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;o=dn(32)|0;f[e>>2]=o;f[e+8>>2]=-2147483616;f[e+4>>2]=28;H=o;I=13327;J=H+28|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[o+28>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);break}}while(0);g=f[j>>2]|0;if(g|0){j=f[K>>2]|0;if((j|0)!=(g|0))f[K>>2]=j+(~((j+-4-g|0)>>>2)<<2);br(g)}u=d;return}g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=29;H=g;I=13197;J=H+29|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[g+29>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}function jb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0;d=u;u=u+48|0;e=d+36|0;g=d+24|0;h=d;i=a+8|0;j=f[i>>2]|0;f[e>>2]=0;k=e+4|0;f[k>>2]=0;f[e+8>>2]=0;do if(j)if(j>>>0>1073741823)mq(e);else{l=j<<2;m=dn(l)|0;f[e>>2]=m;n=m+(j<<2)|0;f[e+8>>2]=n;hj(m|0,0,l|0)|0;f[k>>2]=n;o=n;p=m;break}else{o=0;p=0}while(0);m=a+1164|0;n=f[m>>2]|0;l=f[n>>2]|0;q=n+4|0;if(!l){r=n+8|0;s=p;t=o;v=j}else{j=f[q>>2]|0;if((j|0)!=(l|0))f[q>>2]=j+(~((j+-4-l|0)>>>2)<<2);br(l);l=n+8|0;f[l>>2]=0;f[q>>2]=0;f[n>>2]=0;r=l;s=f[e>>2]|0;t=f[k>>2]|0;v=f[i>>2]|0}f[n>>2]=s;f[q>>2]=t;f[r>>2]=f[e+8>>2];f[e>>2]=0;r=e+4|0;f[r>>2]=0;f[e+8>>2]=0;do if(v)if(v>>>0>1073741823)mq(e);else{t=v<<2;q=dn(t)|0;f[e>>2]=q;s=q+(v<<2)|0;f[e+8>>2]=s;hj(q|0,0,t|0)|0;f[r>>2]=s;w=s;x=q;break}else{w=0;x=0}while(0);v=a+1176|0;q=f[v>>2]|0;s=f[q>>2]|0;t=q+4|0;if(!s){y=q+8|0;z=x;A=w}else{w=f[t>>2]|0;if((w|0)!=(s|0))f[t>>2]=w+(~((w+-4-s|0)>>>2)<<2);br(s);s=q+8|0;f[s>>2]=0;f[t>>2]=0;f[q>>2]=0;y=s;z=f[e>>2]|0;A=f[r>>2]|0}f[q>>2]=z;f[t>>2]=A;f[y>>2]=f[e+8>>2];y=f[b>>2]|0;A=b+4|0;t=f[A>>2]|0;z=f[A+4>>2]|0;A=f[c>>2]|0;q=c+4|0;r=f[q>>2]|0;s=f[q+4>>2]|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;f[h+16>>2]=0;f[h+20>>2]=0;q=h+8|0;w=h+4|0;x=h+16|0;n=h+20|0;k=t;Jc(h);l=f[w>>2]|0;j=(f[n>>2]|0)+(f[x>>2]|0)|0;if((f[q>>2]|0)==(l|0))B=0;else B=(f[l+(((j>>>0)/113|0)<<2)>>2]|0)+(((j>>>0)%113|0)*36|0)|0;f[B>>2]=y;j=B+4|0;f[j>>2]=t;f[j+4>>2]=z;f[B+12>>2]=A;j=B+16|0;f[j>>2]=r;f[j+4>>2]=s;f[B+24>>2]=0;f[B+28>>2]=A-y;f[B+32>>2]=0;B=(f[n>>2]|0)+1|0;f[n>>2]=B;if(B|0){y=a+1152|0;A=a+1084|0;j=a+1080|0;l=a+1072|0;o=a+1076|0;p=a+1068|0;C=b+8|0;D=c+8|0;E=a+1124|0;F=a+1120|0;G=a+1112|0;H=a+1116|0;I=a+1108|0;J=k+4|0;K=k+24|0;L=k+24|0;M=r+24|0;N=B;while(1){B=f[x>>2]|0;O=N+-1|0;P=O+B|0;Q=f[w>>2]|0;R=f[Q+(((P>>>0)/113|0)<<2)>>2]|0;S=(P>>>0)%113|0;P=f[R+(S*36|0)>>2]|0;T=f[R+(S*36|0)+12>>2]|0;U=f[R+(S*36|0)+24>>2]|0;V=f[R+(S*36|0)+32>>2]|0;f[n>>2]=O;O=f[q>>2]|0;S=O-Q>>2;if((1-N-B+((S|0)==0?0:(S*113|0)+-1|0)|0)>>>0>225){br(f[O+-4>>2]|0);f[q>>2]=(f[q>>2]|0)+-4}f[b>>2]=P;f[c>>2]=T;O=f[m>>2]|0;S=O+(V*12|0)|0;B=(f[v>>2]|0)+(V*12|0)|0;f[g>>2]=f[b>>2];f[g+4>>2]=f[b+4>>2];f[g+8>>2]=f[b+8>>2];f[e>>2]=f[c>>2];f[e+4>>2]=f[c+4>>2];f[e+8>>2]=f[c+8>>2];Q=Gd(a,g,e,S,B,U)|0;U=T-P|0;R=(f[a>>2]|0)-(f[(f[B>>2]|0)+(Q<<2)>>2]|0)|0;a:do if(R){if(U>>>0<3){W=f[y>>2]|0;f[W>>2]=Q;Y=f[i>>2]|0;if(Y>>>0>1){Z=1;$=Y;aa=Q;while(1){aa=(aa|0)==($+-1|0)?0:aa+1|0;f[W+(Z<<2)>>2]=aa;Z=Z+1|0;ba=f[i>>2]|0;if(Z>>>0>=ba>>>0){ca=ba;break}else $=ba}}else ca=Y;if(!U){da=87;break}else{ea=0;fa=ca}while(1){$=(f[K>>2]|0)+((X(f[J>>2]|0,P+ea|0)|0)<<2)|0;if(!fa)ga=0;else{Z=0;do{aa=f[(f[y>>2]|0)+(Z<<2)>>2]|0;W=(f[a>>2]|0)-(f[(f[B>>2]|0)+(aa<<2)>>2]|0)|0;do if(W|0){ba=f[A>>2]|0;ha=32-ba|0;ia=32-W|0;ja=f[$+(aa<<2)>>2]<(ha|0)){ka=ja>>>ia;ia=W-ha|0;f[A>>2]=ia;ha=f[j>>2]|ka>>>ia;f[j>>2]=ha;ia=f[l>>2]|0;if((ia|0)==(f[o>>2]|0))Ci(p,j);else{f[ia>>2]=ha;f[l>>2]=ia+4}f[j>>2]=ka<<32-(f[A>>2]|0);break}ka=f[j>>2]|ja>>>ba;f[j>>2]=ka;ja=ba+W|0;f[A>>2]=ja;if((ja|0)!=32)break;ja=f[l>>2]|0;if((ja|0)==(f[o>>2]|0))Ci(p,j);else{f[ja>>2]=ka;f[l>>2]=ja+4}f[j>>2]=0;f[A>>2]=0}while(0);Z=Z+1|0;W=f[i>>2]|0}while(Z>>>0>>0);ga=W}ea=ea+1|0;if(ea>>>0>=U>>>0){da=87;break a}else fa=ga}}Y=V+1|0;Z=f[m>>2]|0;$=Z+(Y*12|0)|0;if(($|0)==(S|0))la=Z;else{qg($,f[S>>2]|0,f[O+(V*12|0)+4>>2]|0);la=f[m>>2]|0}$=(f[la+(Y*12|0)>>2]|0)+(Q<<2)|0;Z=(f[$>>2]|0)+(1<>2]=Z;$=f[C>>2]|0;W=f[D>>2]|0;b:do if((T|0)==(P|0))ma=P;else{aa=f[L>>2]|0;if(!$){if((f[aa+(Q<<2)>>2]|0)>>>0>>0){ma=T;break}else{na=T;oa=P}while(1){ja=na;do{ja=ja+-1|0;if((oa|0)==(ja|0)){ma=oa;break b}ka=(f[M>>2]|0)+((X(ja,W)|0)<<2)+(Q<<2)|0}while((f[ka>>2]|0)>>>0>=Z>>>0);oa=oa+1|0;if((oa|0)==(ja|0)){ma=ja;break b}else na=ja}}else{pa=T;qa=P}while(1){ka=qa;while(1){ra=aa+((X(ka,$)|0)<<2)|0;if((f[ra+(Q<<2)>>2]|0)>>>0>=Z>>>0){sa=pa;break}ba=ka+1|0;if((ba|0)==(pa|0)){ma=pa;break b}else ka=ba}while(1){sa=sa+-1|0;if((ka|0)==(sa|0)){ma=ka;break b}ta=(f[M>>2]|0)+((X(sa,W)|0)<<2)|0;if((f[ta+(Q<<2)>>2]|0)>>>0>>0){ua=0;break}}do{ja=ra+(ua<<2)|0;ba=ta+(ua<<2)|0;ia=f[ja>>2]|0;f[ja>>2]=f[ba>>2];f[ba>>2]=ia;ua=ua+1|0}while((ua|0)!=($|0));qa=ka+1|0;if((qa|0)==(sa|0)){ma=sa;break}else pa=sa}}while(0);Z=(_(U|0)|0)^31;W=ma-P|0;aa=T-ma|0;ia=W>>>0>>0;if((W|0)!=(aa|0)){ba=f[E>>2]|0;if(ia)f[F>>2]=f[F>>2]|1<<31-ba;ja=ba+1|0;f[E>>2]=ja;if((ja|0)==32){ja=f[G>>2]|0;if((ja|0)==(f[H>>2]|0))Ci(I,F);else{f[ja>>2]=f[F>>2];f[G>>2]=ja+4}f[E>>2]=0;f[F>>2]=0}}ja=U>>>1;if(ia){ia=ja-W|0;if(Z|0){ba=0;ha=1<>>1}}}else{ha=ja-aa|0;if(Z|0){ba=0;ia=1<>>1}}}ia=f[v>>2]|0;Z=f[ia+(V*12|0)>>2]|0;ba=Z+(Q<<2)|0;f[ba>>2]=(f[ba>>2]|0)+1;qg(ia+(Y*12|0)|0,Z,f[ia+(V*12|0)+4>>2]|0);if((ma|0)!=(P|0)){ia=f[q>>2]|0;Z=f[w>>2]|0;ba=ia-Z>>2;ha=f[x>>2]|0;ja=f[n>>2]|0;if((((ba|0)==0?0:(ba*113|0)+-1|0)|0)==(ja+ha|0)){Jc(h);va=f[x>>2]|0;wa=f[n>>2]|0;xa=f[q>>2]|0;ya=f[w>>2]|0}else{va=ha;wa=ja;xa=ia;ya=Z}Z=wa+va|0;if((xa|0)==(ya|0))za=0;else za=(f[ya+(((Z>>>0)/113|0)<<2)>>2]|0)+(((Z>>>0)%113|0)*36|0)|0;f[za>>2]=P;Z=za+4|0;f[Z>>2]=t;f[Z+4>>2]=z;f[za+12>>2]=ma;f[za+16>>2]=k;f[za+20>>2]=$;f[za+24>>2]=Q;f[za+28>>2]=W;f[za+32>>2]=V;f[n>>2]=(f[n>>2]|0)+1}if((T|0)!=(ma|0)){Z=f[q>>2]|0;ia=f[w>>2]|0;ja=Z-ia>>2;ha=f[x>>2]|0;ba=f[n>>2]|0;if((((ja|0)==0?0:(ja*113|0)+-1|0)|0)==(ba+ha|0)){Jc(h);Aa=f[x>>2]|0;Ba=f[n>>2]|0;Ca=f[q>>2]|0;Da=f[w>>2]|0}else{Aa=ha;Ba=ba;Ca=Z;Da=ia}ia=Ba+Aa|0;if((Ca|0)==(Da|0))Ea=0;else Ea=(f[Da+(((ia>>>0)/113|0)<<2)>>2]|0)+(((ia>>>0)%113|0)*36|0)|0;f[Ea>>2]=ma;f[Ea+4>>2]=k;f[Ea+8>>2]=$;f[Ea+12>>2]=T;ia=Ea+16|0;f[ia>>2]=r;f[ia+4>>2]=s;f[Ea+24>>2]=Q;f[Ea+28>>2]=aa;f[Ea+32>>2]=Y;ia=(f[n>>2]|0)+1|0;f[n>>2]=ia;Fa=ia}else da=87}else da=87;while(0);if((da|0)==87){da=0;Fa=f[n>>2]|0}if(!Fa)break;else N=Fa}}Fa=f[w>>2]|0;N=f[x>>2]|0;Ea=Fa+(((N>>>0)/113|0)<<2)|0;s=f[q>>2]|0;r=s;k=Fa;if((s|0)==(Fa|0)){Ga=0;Ha=0}else{ma=(f[Ea>>2]|0)+(((N>>>0)%113|0)*36|0)|0;Ga=ma;Ha=ma}ma=Ea;Ea=Ha;c:while(1){Ha=Ea;do{N=Ha;if((Ga|0)==(N|0))break c;Ha=N+36|0}while((Ha-(f[ma>>2]|0)|0)!=4068);Ha=ma+4|0;ma=Ha;Ea=f[Ha>>2]|0}f[n>>2]=0;n=r-k>>2;if(n>>>0>2){k=Fa;do{br(f[k>>2]|0);k=(f[w>>2]|0)+4|0;f[w>>2]=k;Ia=f[q>>2]|0;Ja=Ia-k>>2}while(Ja>>>0>2);Ka=Ja;La=k;Ma=Ia}else{Ka=n;La=Fa;Ma=s}switch(Ka|0){case 1:{Na=56;da=101;break}case 2:{Na=113;da=101;break}default:{}}if((da|0)==101)f[x>>2]=Na;if((La|0)!=(Ma|0)){Na=La;do{br(f[Na>>2]|0);Na=Na+4|0}while((Na|0)!=(Ma|0));Ma=f[w>>2]|0;w=f[q>>2]|0;if((w|0)!=(Ma|0))f[q>>2]=w+(~((w+-4-Ma|0)>>>2)<<2)}Ma=f[h>>2]|0;if(!Ma){u=d;return}br(Ma);u=d;return}function kb(a,c){a=a|0;c=c|0;var d=0,e=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,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,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,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;d=u;u=u+1424|0;e=d+1408|0;g=d+1396|0;h=d+1420|0;i=d+1200|0;j=d+12|0;k=d;l=d+1384|0;m=d+1372|0;n=d+1360|0;o=d+1348|0;p=d+1336|0;q=d+1324|0;r=d+1312|0;s=d+1300|0;t=d+1288|0;v=d+1276|0;w=d+1264|0;x=d+1252|0;y=d+1240|0;z=d+1228|0;A=a+28|0;B=10-(Yh(f[(f[A>>2]|0)+48>>2]|0)|0)|0;C=(B|0)<6?B:6;b[h>>0]=C;if((C&255|0)==6?(f[a+72>>2]|0)>15:0)b[h>>0]=5;C=c+16|0;B=f[C+4>>2]|0;if(!((B|0)>0|(B|0)==0&(f[C>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}C=f[A>>2]|0;B=f[(f[C+4>>2]|0)+80>>2]|0;D=a+72|0;E=f[D>>2]|0;f[i>>2]=B;F=i+4|0;f[F>>2]=E;f[i+8>>2]=E<<2;G=i+12|0;H=X(E,B)|0;f[G>>2]=0;J=i+16|0;f[J>>2]=0;f[i+20>>2]=0;do if(H)if(H>>>0>1073741823)mq(G);else{K=H<<2;L=dn(K)|0;f[G>>2]=L;M=L+(H<<2)|0;f[i+20>>2]=M;hj(L|0,0,K|0)|0;f[J>>2]=M;N=L;break}else N=0;while(0);H=i+24|0;f[H>>2]=N;G=a+4|0;L=a+8|0;M=f[G>>2]|0;a:do if((f[L>>2]|0)!=(M|0)){K=j+4|0;O=j+8|0;P=j+8|0;Q=(B|0)==0;R=j+4|0;S=j+8|0;T=k+4|0;U=k+8|0;V=k+8|0;W=a+48|0;Y=j+8|0;Z=a+60|0;$=0;aa=0;ba=0;ca=0;da=M;ea=C;b:while(1){fa=f[(f[(f[ea+4>>2]|0)+8>>2]|0)+(f[da+(ca<<2)>>2]<<2)>>2]|0;switch(f[fa+28>>2]|0){case 1:case 3:case 5:case 2:case 4:case 6:{ga=fa;ha=aa;break}case 9:{ga=f[(f[Z>>2]|0)+(aa<<2)>>2]|0;ha=aa+1|0;break}default:{ia=0;break a}}if(!ga){ia=0;break a}c:do switch(f[ga+28>>2]|0){case 6:{if(Q){ja=ba;ka=ga+24|0;break c}fa=ga+84|0;la=ga+68|0;ma=ga+48|0;na=ga+40|0;oa=ga+24|0;pa=0;do{if(!(b[fa>>0]|0))qa=f[(f[la>>2]|0)+(pa<<2)>>2]|0;else qa=pa;ra=ma;sa=f[ra>>2]|0;ta=f[ra+4>>2]|0;ra=na;ua=on(f[ra>>2]|0,f[ra+4>>2]|0,qa|0,0)|0;ra=Tn(ua|0,I|0,sa|0,ta|0)|0;Rg((f[H>>2]|0)+((X(f[F>>2]|0,pa)|0)<<2)+($<<2)|0,(f[f[ga>>2]>>2]|0)+ra|0,b[oa>>0]<<2|0)|0;pa=pa+1|0}while((pa|0)!=(B|0));ja=ba;ka=oa;break}case 1:case 3:case 5:{oa=ga+24|0;pa=b[oa>>0]|0;na=pa<<24>>24;f[j>>2]=0;f[R>>2]=0;f[S>>2]=0;if(!(pa<<24>>24))va=0;else{if(pa<<24>>24<0){wa=24;break b}pa=na<<2;ma=dn(pa)|0;f[j>>2]=ma;la=ma+(na<<2)|0;f[Y>>2]=la;hj(ma|0,0,pa|0)|0;f[R>>2]=la;va=b[oa>>0]|0}la=va<<24>>24;f[k>>2]=0;f[T>>2]=0;f[U>>2]=0;if(!(va<<24>>24)){xa=0;ya=0}else{if(va<<24>>24<0){wa=30;break b}pa=la<<2;ma=dn(pa)|0;f[k>>2]=ma;na=ma+(la<<2)|0;f[V>>2]=na;hj(ma|0,0,pa|0)|0;f[T>>2]=na;xa=ma;ya=ma}if(Q){za=ya;Aa=xa}else{ma=ga+84|0;na=ga+68|0;pa=0;do{if(!(b[ma>>0]|0))Ba=f[(f[na>>2]|0)+(pa<<2)>>2]|0;else Ba=pa;la=f[j>>2]|0;f[g>>2]=Ba;fa=b[oa>>0]|0;f[e>>2]=f[g>>2];Pb(ga,e,fa,la)|0;la=b[oa>>0]|0;fa=la<<24>>24;if(la<<24>>24>0){la=f[j>>2]|0;ra=f[W>>2]|0;ta=f[k>>2]|0;sa=0;do{f[ta+(sa<<2)>>2]=(f[la+(sa<<2)>>2]|0)-(f[ra+(sa+ba<<2)>>2]|0);sa=sa+1|0}while((sa|0)<(fa|0));Ca=ta}else Ca=f[k>>2]|0;Rg((f[H>>2]|0)+((X(f[F>>2]|0,pa)|0)<<2)+($<<2)|0,Ca|0,fa<<2|0)|0;pa=pa+1|0}while(pa>>>0>>0);pa=f[k>>2]|0;za=pa;Aa=pa}pa=ba+(b[oa>>0]|0)|0;if(za|0){na=f[T>>2]|0;if((na|0)!=(za|0))f[T>>2]=na+(~((na+-4-za|0)>>>2)<<2);br(Aa)}na=f[j>>2]|0;if(na|0){ma=f[R>>2]|0;if((ma|0)!=(na|0))f[R>>2]=ma+(~((ma+-4-na|0)>>>2)<<2);br(na)}ja=pa;ka=oa;break}default:{pa=ga+24|0;na=b[pa>>0]|0;ma=na<<24>>24;f[j>>2]=0;f[K>>2]=0;f[O>>2]=0;if(!(na<<24>>24)){Da=0;Ea=0}else{if(na<<24>>24<0){wa=53;break b}na=ma<<2;ta=dn(na)|0;f[j>>2]=ta;sa=ta+(ma<<2)|0;f[P>>2]=sa;hj(ta|0,0,na|0)|0;f[K>>2]=sa;Da=ta;Ea=ta}if(Q){Fa=Ea;Ga=Da}else{ta=ga+84|0;sa=ga+68|0;na=0;do{if(!(b[ta>>0]|0))Ha=f[(f[sa>>2]|0)+(na<<2)>>2]|0;else Ha=na;ma=f[j>>2]|0;f[g>>2]=Ha;ra=b[pa>>0]|0;f[e>>2]=f[g>>2];Ob(ga,e,ra,ma)|0;Rg((f[H>>2]|0)+((X(f[F>>2]|0,na)|0)<<2)+($<<2)|0,f[j>>2]|0,b[pa>>0]<<2|0)|0;na=na+1|0}while(na>>>0>>0);na=f[j>>2]|0;Fa=na;Ga=na}if(Fa|0){na=f[K>>2]|0;if((na|0)!=(Fa|0))f[K>>2]=na+(~((na+-4-Fa|0)>>>2)<<2);br(Ga)}ja=ba;ka=pa}}while(0);na=ca+1|0;sa=f[G>>2]|0;if(na>>>0>=(f[L>>2]|0)-sa>>2>>>0){wa=66;break}$=$+(b[ka>>0]|0)|0;aa=ha;ba=ja;ca=na;da=sa;ea=f[A>>2]|0}if((wa|0)==24)mq(j);else if((wa|0)==30)mq(k);else if((wa|0)==53)mq(j);else if((wa|0)==66){Ia=f[D>>2]|0;Ja=f[H>>2]|0;wa=67;break}}else{Ia=E;Ja=N;wa=67}while(0);d:do if((wa|0)==67){N=X(Ia,B)|0;if((N|0)>0){E=0;H=0;while(1){D=f[Ja+(E<<2)>>2]|0;if(!D)Ka=H;else{A=(_(D|0)|0)^31;Ka=(A|0)<(H|0)?H:A+1|0}E=E+1|0;if((E|0)>=(N|0)){La=Ka;break}else H=Ka}}else La=0;switch(b[h>>0]|0){case 6:{Ge(j,Ia);f[l>>2]=0;f[l+4>>2]=i;H=f[F>>2]|0;f[l+8>>2]=H;f[m>>2]=f[i>>2];f[m+4>>2]=i;f[m+8>>2]=H;f[k>>2]=La;f[g>>2]=f[l>>2];f[g+4>>2]=f[l+4>>2];f[g+8>>2]=f[l+8>>2];f[e>>2]=f[m>>2];f[e+4>>2]=f[m+4>>2];f[e+8>>2]=f[m+8>>2];H=ff(j,g,e,k,c)|0;Ee(j);if(!H){ia=0;break d}break}case 5:{Ge(j,Ia);f[n>>2]=0;f[n+4>>2]=i;H=f[F>>2]|0;f[n+8>>2]=H;f[o>>2]=f[i>>2];f[o+4>>2]=i;f[o+8>>2]=H;f[k>>2]=La;f[g>>2]=f[n>>2];f[g+4>>2]=f[n+4>>2];f[g+8>>2]=f[n+8>>2];f[e>>2]=f[o>>2];f[e+4>>2]=f[o+4>>2];f[e+8>>2]=f[o+8>>2];H=gf(j,g,e,k,c)|0;Ee(j);if(!H){ia=0;break d}break}case 4:{Ge(j,Ia);f[p>>2]=0;f[p+4>>2]=i;H=f[F>>2]|0;f[p+8>>2]=H;f[q>>2]=f[i>>2];f[q+4>>2]=i;f[q+8>>2]=H;f[k>>2]=La;f[g>>2]=f[p>>2];f[g+4>>2]=f[p+4>>2];f[g+8>>2]=f[p+8>>2];f[e>>2]=f[q>>2];f[e+4>>2]=f[q+4>>2];f[e+8>>2]=f[q+8>>2];H=gf(j,g,e,k,c)|0;Ee(j);if(!H){ia=0;break d}break}case 3:{Oe(j,Ia);f[r>>2]=0;f[r+4>>2]=i;H=f[F>>2]|0;f[r+8>>2]=H;f[s>>2]=f[i>>2];f[s+4>>2]=i;f[s+8>>2]=H;f[k>>2]=La;f[g>>2]=f[r>>2];f[g+4>>2]=f[r+4>>2];f[g+8>>2]=f[r+8>>2];f[e>>2]=f[s>>2];f[e+4>>2]=f[s+4>>2];f[e+8>>2]=f[s+8>>2];H=mf(j,g,e,k,c)|0;Ue(j);if(!H){ia=0;break d}break}case 2:{Oe(j,Ia);f[t>>2]=0;f[t+4>>2]=i;H=f[F>>2]|0;f[t+8>>2]=H;f[v>>2]=f[i>>2];f[v+4>>2]=i;f[v+8>>2]=H;f[k>>2]=La;f[g>>2]=f[t>>2];f[g+4>>2]=f[t+4>>2];f[g+8>>2]=f[t+8>>2];f[e>>2]=f[v>>2];f[e+4>>2]=f[v+4>>2];f[e+8>>2]=f[v+8>>2];H=mf(j,g,e,k,c)|0;Ue(j);if(!H){ia=0;break d}break}case 1:{Pe(j,Ia);f[w>>2]=0;f[w+4>>2]=i;H=f[F>>2]|0;f[w+8>>2]=H;f[x>>2]=f[i>>2];f[x+4>>2]=i;f[x+8>>2]=H;f[k>>2]=La;f[g>>2]=f[w>>2];f[g+4>>2]=f[w+4>>2];f[g+8>>2]=f[w+8>>2];f[e>>2]=f[x>>2];f[e+4>>2]=f[x+4>>2];f[e+8>>2]=f[x+8>>2];H=lf(j,g,e,k,c)|0;Te(j);if(!H){ia=0;break d}break}case 0:{Pe(j,Ia);f[y>>2]=0;f[y+4>>2]=i;H=f[F>>2]|0;f[y+8>>2]=H;f[z>>2]=f[i>>2];f[z+4>>2]=i;f[z+8>>2]=H;f[k>>2]=La;f[g>>2]=f[y>>2];f[g+4>>2]=f[y+4>>2];f[g+8>>2]=f[y+8>>2];f[e>>2]=f[z>>2];f[e+4>>2]=f[z+4>>2];f[e+8>>2]=f[z+8>>2];H=lf(j,g,e,k,c)|0;Te(j);if(!H){ia=0;break d}break}default:{ia=0;break d}}ia=1}while(0);j=f[i+12>>2]|0;if(!j){u=d;return ia|0}i=f[J>>2]|0;if((i|0)!=(j|0))f[J>>2]=i+(~((i+-4-j|0)>>>2)<<2);br(j);u=d;return ia|0}function lb(a,c){a=a|0;c=c|0;var d=0,e=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,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,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;d=u;u=u+80|0;e=d+56|0;g=d+52|0;h=d+48|0;i=d+68|0;j=d;k=d+44|0;l=d+40|0;m=d+36|0;n=d+32|0;o=d+28|0;p=d+24|0;q=d+20|0;r=d+16|0;s=d+12|0;if(!(b[c+352>>0]|0)){Ne(e,f[c+8>>2]|0);t=c+12|0;v=f[e>>2]|0;f[e>>2]=0;w=f[t>>2]|0;f[t>>2]=v;if(w){ui(w);br(w);w=f[e>>2]|0;f[e>>2]=0;if(w|0){ui(w);br(w)}}else f[e>>2]=0}else{Mg(e,f[c+8>>2]|0);w=c+12|0;v=f[e>>2]|0;f[e>>2]=0;t=f[w>>2]|0;f[w>>2]=v;if(t){ui(t);br(t);t=f[e>>2]|0;f[e>>2]=0;if(t|0){ui(t);br(t)}}else f[e>>2]=0}t=c+12|0;v=f[t>>2]|0;if(v|0?(((f[v+4>>2]|0)-(f[v>>2]|0)>>2>>>0)/3|0|0)!=(f[v+40>>2]|0):0){v=c+200|0;Td(v,c)|0;w=f[t>>2]|0;x=c+4|0;Nh(((f[w+28>>2]|0)-(f[w+24>>2]|0)>>2)-(f[w+44>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;w=f[t>>2]|0;Nh((((f[w+4>>2]|0)-(f[w>>2]|0)>>2>>>0)/3|0)-(f[w+40>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;w=c+28|0;y=c+8|0;z=f[y>>2]|0;A=((f[z+100>>2]|0)-(f[z+96>>2]|0)|0)/12|0;b[e>>0]=0;Xg(w,A,e);A=f[t>>2]|0;z=(f[A+28>>2]|0)-(f[A+24>>2]|0)>>2;f[e>>2]=-1;Sf(c+52|0,z,e);z=c+40|0;A=f[z>>2]|0;B=c+44|0;C=f[B>>2]|0;if((C|0)!=(A|0))f[B>>2]=C+(~((C+-4-A|0)>>>2)<<2);A=f[t>>2]|0;C=(f[A+4>>2]|0)-(f[A>>2]|0)>>2;$j(z,C-((C>>>0)%3|0)|0);C=c+84|0;z=f[t>>2]|0;A=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2;b[e>>0]=0;Xg(C,A,e);A=c+96|0;z=f[A>>2]|0;B=c+100|0;D=f[B>>2]|0;if((D|0)!=(z|0))f[B>>2]=D+(~((D+-4-z|0)>>>2)<<2);f[c+164>>2]=-1;z=c+168|0;f[z>>2]=0;D=f[c+108>>2]|0;E=c+112|0;F=f[E>>2]|0;if((F|0)!=(D|0))f[E>>2]=F+(~(((F+-12-D|0)>>>0)/12|0)*12|0);D=c+132|0;if(f[D>>2]|0){F=c+128|0;E=f[F>>2]|0;if(E|0){G=E;do{E=G;G=f[G>>2]|0;br(E)}while((G|0)!=0)}f[F>>2]=0;F=f[c+124>>2]|0;if(F|0){G=c+120|0;E=0;do{f[(f[G>>2]|0)+(E<<2)>>2]=0;E=E+1|0}while((E|0)!=(F|0))}f[D>>2]=0}f[c+144>>2]=0;D=f[t>>2]|0;F=(f[D+28>>2]|0)-(f[D+24>>2]|0)>>2;f[e>>2]=-1;Sf(c+152|0,F,e);F=c+72|0;D=f[F>>2]|0;E=c+76|0;G=f[E>>2]|0;if((G|0)!=(D|0))f[E>>2]=G+(~((G+-4-D|0)>>>2)<<2);D=f[t>>2]|0;$j(F,((f[D+4>>2]|0)-(f[D>>2]|0)>>2>>>0)/3|0);f[c+64>>2]=0;if(!(oe(c)|0)){D=dn(32)|0;f[e>>2]=D;f[e+8>>2]=-2147483616;f[e+4>>2]=29;H=D;I=13227;J=H+29|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[D+29>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}if(!(bh(c)|0)){D=dn(48)|0;f[e>>2]=D;f[e+8>>2]=-2147483600;f[e+4>>2]=36;H=D;I=13257;J=H+36|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[D+36>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}D=c+172|0;G=c+176|0;K=(((f[G>>2]|0)-(f[D>>2]|0)|0)/136|0)&255;b[i>>0]=K;L=f[(f[x>>2]|0)+44>>2]|0;M=L+16|0;N=f[M+4>>2]|0;if((N|0)>0|(N|0)==0&(f[M>>2]|0)>>>0>0)O=K;else{f[g>>2]=f[L+4>>2];f[e>>2]=f[g>>2];ye(L,e,i,i+1|0)|0;O=b[i>>0]|0}f[c+284>>2]=O&255;O=f[t>>2]|0;i=(f[O+4>>2]|0)-(f[O>>2]|0)|0;O=i>>2;Ti(v);f[j>>2]=0;L=j+4|0;f[L>>2]=0;f[j+8>>2]=0;a:do if((i|0)>0){K=c+104|0;M=j+8|0;N=0;b:while(1){P=(N>>>0)/3|0;Q=P>>>5;R=1<<(P&31);if((f[(f[w>>2]|0)+(Q<<2)>>2]&R|0)==0?(S=f[t>>2]|0,f[k>>2]=P,f[e>>2]=f[k>>2],!(Rj(S,e)|0)):0){f[g>>2]=0;f[l>>2]=P;f[e>>2]=f[l>>2];P=gg(c,e,g)|0;Vi(v,P);S=f[g>>2]|0;T=(S|0)==-1;do if(P){do if(T){U=-1;V=-1;W=-1}else{X=f[f[t>>2]>>2]|0;Y=f[X+(S<<2)>>2]|0;Z=S+1|0;_=((Z>>>0)%3|0|0)==0?S+-2|0:Z;if((_|0)==-1)$=-1;else $=f[X+(_<<2)>>2]|0;_=(((S>>>0)%3|0|0)==0?2:-1)+S|0;if((_|0)==-1){U=-1;V=$;W=Y;break}U=f[X+(_<<2)>>2]|0;V=$;W=Y}while(0);Y=f[C>>2]|0;_=Y+(W>>>5<<2)|0;f[_>>2]=f[_>>2]|1<<(W&31);_=Y+(V>>>5<<2)|0;f[_>>2]=f[_>>2]|1<<(V&31);_=Y+(U>>>5<<2)|0;f[_>>2]=f[_>>2]|1<<(U&31);f[e>>2]=1;_=f[B>>2]|0;if(_>>>0<(f[K>>2]|0)>>>0){f[_>>2]=1;f[B>>2]=_+4}else Ci(A,e);_=(f[w>>2]|0)+(Q<<2)|0;f[_>>2]=f[_>>2]|R;_=S+1|0;if(T)aa=-1;else aa=((_>>>0)%3|0|0)==0?S+-2|0:_;f[e>>2]=aa;Y=f[L>>2]|0;if(Y>>>0<(f[M>>2]|0)>>>0){f[Y>>2]=aa;f[L>>2]=Y+4}else Ci(j,e);if(T)break;Y=((_>>>0)%3|0|0)==0?S+-2|0:_;if((Y|0)==-1)break;_=f[(f[(f[t>>2]|0)+12>>2]|0)+(Y<<2)>>2]|0;Y=(_|0)==-1;X=Y?-1:(_>>>0)/3|0;if(Y)break;if(f[(f[w>>2]|0)+(X>>>5<<2)>>2]&1<<(X&31)|0)break;f[m>>2]=_;f[e>>2]=f[m>>2];if(!(Zb(c,e)|0)){ba=65;break b}}else{_=S+1|0;if(T)ca=-1;else ca=((_>>>0)%3|0|0)==0?S+-2|0:_;f[n>>2]=ca;f[e>>2]=f[n>>2];Ce(c,e,1)|0;f[o>>2]=f[g>>2];f[e>>2]=f[o>>2];if(!(Zb(c,e)|0)){ba=71;break b}}while(0)}N=N+1|0;if((N|0)>=(O|0)){ba=77;break a}}if((ba|0)==65){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;N=dn(48)|0;f[e>>2]=N;f[e+8>>2]=-2147483600;f[e+4>>2]=32;H=N;I=13294;J=H+32|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[N+32>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}else if((ba|0)==71){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;M=dn(48)|0;f[e>>2]=M;f[e+8>>2]=-2147483600;f[e+4>>2]=32;H=M;I=13294;J=H+32|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[M+32>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0)}}else ba=77;while(0);do if((ba|0)==77){O=f[F>>2]|0;o=f[E>>2]|0;n=o;if((O|0)!=(o|0)?(ca=o+-4|0,O>>>0>>0):0){o=O;O=ca;do{ca=f[o>>2]|0;f[o>>2]=f[O>>2];f[O>>2]=ca;o=o+4|0;O=O+-4|0}while(o>>>0>>0)}f[p>>2]=n;f[q>>2]=f[j>>2];f[r>>2]=f[L>>2];f[h>>2]=f[p>>2];f[g>>2]=f[q>>2];f[e>>2]=f[r>>2];Md(F,h,g,e)|0;if((f[G>>2]|0)!=(f[D>>2]|0)?(O=f[y>>2]|0,o=((f[O+100>>2]|0)-(f[O+96>>2]|0)|0)/12|0,b[e>>0]=0,Xg(w,o,e),o=f[F>>2]|0,O=f[E>>2]|0,(o|0)!=(O|0)):0){M=o;do{f[s>>2]=f[M>>2];f[e>>2]=f[s>>2];ue(c,e)|0;M=M+4|0}while((M|0)!=(O|0))}$h(v);Nh(f[c+324>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;Nh(f[z>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;if(Jg(c)|0){O=f[(f[x>>2]|0)+44>>2]|0;M=f[c+232>>2]|0;n=O+16|0;o=f[n+4>>2]|0;if(!((o|0)>0|(o|0)==0&(f[n>>2]|0)>>>0>0)){n=(f[c+236>>2]|0)-M|0;f[g>>2]=f[O+4>>2];f[e>>2]=f[g>>2];ye(O,e,M,M+n|0)|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;break}else{f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;n=dn(32)|0;f[e>>2]=n;f[e+8>>2]=-2147483616;f[e+4>>2]=28;H=n;I=13327;J=H+28|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[n+28>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);break}}while(0);g=f[j>>2]|0;if(g|0){j=f[L>>2]|0;if((j|0)!=(g|0))f[L>>2]=j+(~((j+-4-g|0)>>>2)<<2);br(g)}u=d;return}g=dn(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=29;H=g;I=13197;J=H+29|0;do{b[H>>0]=b[I>>0]|0;H=H+1|0;I=I+1|0}while((H|0)<(J|0));b[g+29>>0]=0;f[a>>2]=-1;dj(a+4|0,e);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);u=d;return}function mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)mq(e);else{j=h<<2;k=dn(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;hj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+1164|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);br(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)mq(e);else{r=s<<2;o=dn(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;hj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+1176|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);br(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Jc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+1152|0;y=a+1084|0;h=a+1080|0;j=a+1072|0;m=a+1076|0;n=a+1068|0;A=b+8|0;B=c+8|0;C=a+1124|0;D=a+1120|0;E=a+1112|0;F=a+1116|0;G=a+1108|0;H=i+4|0;I=i+24|0;J=i+24|0;K=p+24|0;L=z;while(1){z=f[v>>2]|0;M=L+-1|0;N=M+z|0;O=f[t>>2]|0;P=f[O+(((N>>>0)/113|0)<<2)>>2]|0;Q=(N>>>0)%113|0;N=f[P+(Q*36|0)>>2]|0;R=f[P+(Q*36|0)+12>>2]|0;S=f[P+(Q*36|0)+24>>2]|0;T=f[P+(Q*36|0)+32>>2]|0;f[l>>2]=M;M=f[o>>2]|0;Q=M-O>>2;if((1-L-z+((Q|0)==0?0:(Q*113|0)+-1|0)|0)>>>0>225){br(f[M+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=N;f[c>>2]=R;M=f[k>>2]|0;Q=((f[g>>2]|0)+-1|0)==(S|0)?0:S+1|0;S=(f[s>>2]|0)+(T*12|0)|0;z=R-N|0;O=(f[a>>2]|0)-(f[(f[S>>2]|0)+(Q<<2)>>2]|0)|0;a:do if(O){if(z>>>0<3){P=f[w>>2]|0;f[P>>2]=Q;U=f[g>>2]|0;if(U>>>0>1){V=1;W=U;Y=Q;while(1){Y=(Y|0)==(W+-1|0)?0:Y+1|0;f[P+(V<<2)>>2]=Y;V=V+1|0;Z=f[g>>2]|0;if(V>>>0>=Z>>>0){$=Z;break}else W=Z}}else $=U;if(!z){aa=85;break}else{ba=0;ca=$}while(1){W=(f[I>>2]|0)+((X(f[H>>2]|0,N+ba|0)|0)<<2)|0;if(!ca)da=0;else{V=0;do{Y=f[(f[w>>2]|0)+(V<<2)>>2]|0;P=(f[a>>2]|0)-(f[(f[S>>2]|0)+(Y<<2)>>2]|0)|0;do if(P|0){Z=f[y>>2]|0;ea=32-Z|0;fa=32-P|0;ga=f[W+(Y<<2)>>2]<(ea|0)){ha=ga>>>fa;fa=P-ea|0;f[y>>2]=fa;ea=f[h>>2]|ha>>>fa;f[h>>2]=ea;fa=f[j>>2]|0;if((fa|0)==(f[m>>2]|0))Ci(n,h);else{f[fa>>2]=ea;f[j>>2]=fa+4}f[h>>2]=ha<<32-(f[y>>2]|0);break}ha=f[h>>2]|ga>>>Z;f[h>>2]=ha;ga=Z+P|0;f[y>>2]=ga;if((ga|0)!=32)break;ga=f[j>>2]|0;if((ga|0)==(f[m>>2]|0))Ci(n,h);else{f[ga>>2]=ha;f[j>>2]=ga+4}f[h>>2]=0;f[y>>2]=0}while(0);V=V+1|0;P=f[g>>2]|0}while(V>>>0

>>0);da=P}ba=ba+1|0;if(ba>>>0>=z>>>0){aa=85;break a}else ca=da}}U=T+1|0;qg(M+(U*12|0)|0,f[M+(T*12|0)>>2]|0,f[M+(T*12|0)+4>>2]|0);V=(f[(f[k>>2]|0)+(U*12|0)>>2]|0)+(Q<<2)|0;W=(f[V>>2]|0)+(1<>2]=W;V=f[A>>2]|0;P=f[B>>2]|0;b:do if((R|0)==(N|0))ia=N;else{Y=f[J>>2]|0;if(!V){if((f[Y+(Q<<2)>>2]|0)>>>0>>0){ia=R;break}else{ja=R;ka=N}while(1){ga=ja;do{ga=ga+-1|0;if((ka|0)==(ga|0)){ia=ka;break b}ha=(f[K>>2]|0)+((X(ga,P)|0)<<2)+(Q<<2)|0}while((f[ha>>2]|0)>>>0>=W>>>0);ka=ka+1|0;if((ka|0)==(ga|0)){ia=ga;break b}else ja=ga}}else{la=R;ma=N}while(1){ha=ma;while(1){na=Y+((X(ha,V)|0)<<2)|0;if((f[na+(Q<<2)>>2]|0)>>>0>=W>>>0){oa=la;break}Z=ha+1|0;if((Z|0)==(la|0)){ia=la;break b}else ha=Z}while(1){oa=oa+-1|0;if((ha|0)==(oa|0)){ia=ha;break b}pa=(f[K>>2]|0)+((X(oa,P)|0)<<2)|0;if((f[pa+(Q<<2)>>2]|0)>>>0>>0){qa=0;break}}do{ga=na+(qa<<2)|0;Z=pa+(qa<<2)|0;fa=f[ga>>2]|0;f[ga>>2]=f[Z>>2];f[Z>>2]=fa;qa=qa+1|0}while((qa|0)!=(V|0));ma=ha+1|0;if((ma|0)==(oa|0)){ia=oa;break}else la=oa}}while(0);W=(_(z|0)|0)^31;P=ia-N|0;Y=R-ia|0;fa=P>>>0>>0;if((P|0)!=(Y|0)){Z=f[C>>2]|0;if(fa)f[D>>2]=f[D>>2]|1<<31-Z;ga=Z+1|0;f[C>>2]=ga;if((ga|0)==32){ga=f[E>>2]|0;if((ga|0)==(f[F>>2]|0))Ci(G,D);else{f[ga>>2]=f[D>>2];f[E>>2]=ga+4}f[C>>2]=0;f[D>>2]=0}}ga=z>>>1;if(fa){fa=ga-P|0;if(W|0){Z=0;ea=1<>>1}}}else{ea=ga-Y|0;if(W|0){Z=0;fa=1<>>1}}}fa=f[s>>2]|0;W=f[fa+(T*12|0)>>2]|0;Z=W+(Q<<2)|0;f[Z>>2]=(f[Z>>2]|0)+1;qg(fa+(U*12|0)|0,W,f[fa+(T*12|0)+4>>2]|0);if((ia|0)!=(N|0)){fa=f[o>>2]|0;W=f[t>>2]|0;Z=fa-W>>2;ea=f[v>>2]|0;ga=f[l>>2]|0;if((((Z|0)==0?0:(Z*113|0)+-1|0)|0)==(ga+ea|0)){Jc(e);ra=f[v>>2]|0;sa=f[l>>2]|0;ta=f[o>>2]|0;ua=f[t>>2]|0}else{ra=ea;sa=ga;ta=fa;ua=W}W=sa+ra|0;if((ta|0)==(ua|0))va=0;else va=(f[ua+(((W>>>0)/113|0)<<2)>>2]|0)+(((W>>>0)%113|0)*36|0)|0;f[va>>2]=N;W=va+4|0;f[W>>2]=r;f[W+4>>2]=x;f[va+12>>2]=ia;f[va+16>>2]=i;f[va+20>>2]=V;f[va+24>>2]=Q;f[va+28>>2]=P;f[va+32>>2]=T;f[l>>2]=(f[l>>2]|0)+1}if((R|0)!=(ia|0)){W=f[o>>2]|0;fa=f[t>>2]|0;ga=W-fa>>2;ea=f[v>>2]|0;Z=f[l>>2]|0;if((((ga|0)==0?0:(ga*113|0)+-1|0)|0)==(Z+ea|0)){Jc(e);wa=f[v>>2]|0;xa=f[l>>2]|0;ya=f[o>>2]|0;za=f[t>>2]|0}else{wa=ea;xa=Z;ya=W;za=fa}fa=xa+wa|0;if((ya|0)==(za|0))Aa=0;else Aa=(f[za+(((fa>>>0)/113|0)<<2)>>2]|0)+(((fa>>>0)%113|0)*36|0)|0;f[Aa>>2]=ia;f[Aa+4>>2]=i;f[Aa+8>>2]=V;f[Aa+12>>2]=R;fa=Aa+16|0;f[fa>>2]=p;f[fa+4>>2]=q;f[Aa+24>>2]=Q;f[Aa+28>>2]=Y;f[Aa+32>>2]=U;fa=(f[l>>2]|0)+1|0;f[l>>2]=fa;Ba=fa}else aa=85}else aa=85;while(0);if((aa|0)==85){aa=0;Ba=f[l>>2]|0}if(!Ba)break;else L=Ba}}Ba=f[t>>2]|0;L=f[v>>2]|0;Aa=Ba+(((L>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ba;if((q|0)==(Ba|0)){Ca=0;Da=0}else{ia=(f[Aa>>2]|0)+(((L>>>0)%113|0)*36|0)|0;Ca=ia;Da=ia}ia=Aa;Aa=Da;c:while(1){Da=Aa;do{L=Da;if((Ca|0)==(L|0))break c;Da=L+36|0}while((Da-(f[ia>>2]|0)|0)!=4068);Da=ia+4|0;ia=Da;Aa=f[Da>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ba;do{br(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Ea=f[o>>2]|0;Fa=Ea-i>>2}while(Fa>>>0>2);Ga=Fa;Ha=i;Ia=Ea}else{Ga=l;Ha=Ba;Ia=q}switch(Ga|0){case 1:{Ja=56;aa=99;break}case 2:{Ja=113;aa=99;break}default:{}}if((aa|0)==99)f[v>>2]=Ja;if((Ha|0)!=(Ia|0)){Ja=Ha;do{br(f[Ja>>2]|0);Ja=Ja+4|0}while((Ja|0)!=(Ia|0));Ia=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Ia|0))f[o>>2]=t+(~((t+-4-Ia|0)>>>2)<<2)}Ia=f[e>>2]|0;if(!Ia){u=d;return}br(Ia);u=d;return}function nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)mq(e);else{j=h<<2;k=dn(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;hj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+140|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);br(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)mq(e);else{r=s<<2;o=dn(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;hj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+152|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);br(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Jc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+128|0;y=a+60|0;h=a+56|0;j=a+48|0;m=a+52|0;n=a+44|0;A=b+8|0;B=c+8|0;C=a+12|0;D=a+100|0;E=a+96|0;F=a+88|0;G=a+92|0;H=a+84|0;I=i+4|0;J=i+24|0;K=i+24|0;L=p+24|0;M=z;while(1){z=f[v>>2]|0;N=M+-1|0;O=N+z|0;P=f[t>>2]|0;Q=f[P+(((O>>>0)/113|0)<<2)>>2]|0;R=(O>>>0)%113|0;O=f[Q+(R*36|0)>>2]|0;S=f[Q+(R*36|0)+12>>2]|0;T=f[Q+(R*36|0)+24>>2]|0;U=f[Q+(R*36|0)+32>>2]|0;f[l>>2]=N;N=f[o>>2]|0;R=N-P>>2;if((1-M-z+((R|0)==0?0:(R*113|0)+-1|0)|0)>>>0>225){br(f[N+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=O;f[c>>2]=S;N=f[k>>2]|0;R=((f[g>>2]|0)+-1|0)==(T|0)?0:T+1|0;T=(f[s>>2]|0)+(U*12|0)|0;z=S-O|0;P=(f[a>>2]|0)-(f[(f[T>>2]|0)+(R<<2)>>2]|0)|0;a:do if(P){if(z>>>0<3){Q=f[w>>2]|0;f[Q>>2]=R;V=f[g>>2]|0;if(V>>>0>1){W=1;Y=V;Z=R;while(1){Z=(Z|0)==(Y+-1|0)?0:Z+1|0;f[Q+(W<<2)>>2]=Z;W=W+1|0;$=f[g>>2]|0;if(W>>>0>=$>>>0){aa=$;break}else Y=$}}else aa=V;if(!z){ba=81;break}else{ca=0;da=aa}while(1){Y=(f[J>>2]|0)+((X(f[I>>2]|0,O+ca|0)|0)<<2)|0;if(!da)ea=0;else{W=0;do{Z=f[(f[w>>2]|0)+(W<<2)>>2]|0;Q=(f[a>>2]|0)-(f[(f[T>>2]|0)+(Z<<2)>>2]|0)|0;do if(Q|0){$=f[y>>2]|0;fa=32-$|0;ga=32-Q|0;ha=f[Y+(Z<<2)>>2]<(fa|0)){ia=ha>>>ga;ga=Q-fa|0;f[y>>2]=ga;fa=f[h>>2]|ia>>>ga;f[h>>2]=fa;ga=f[j>>2]|0;if((ga|0)==(f[m>>2]|0))Ci(n,h);else{f[ga>>2]=fa;f[j>>2]=ga+4}f[h>>2]=ia<<32-(f[y>>2]|0);break}ia=f[h>>2]|ha>>>$;f[h>>2]=ia;ha=$+Q|0;f[y>>2]=ha;if((ha|0)!=32)break;ha=f[j>>2]|0;if((ha|0)==(f[m>>2]|0))Ci(n,h);else{f[ha>>2]=ia;f[j>>2]=ha+4}f[h>>2]=0;f[y>>2]=0}while(0);W=W+1|0;Q=f[g>>2]|0}while(W>>>0>>0);ea=Q}ca=ca+1|0;if(ca>>>0>=z>>>0){ba=81;break a}else da=ea}}V=U+1|0;qg(N+(V*12|0)|0,f[N+(U*12|0)>>2]|0,f[N+(U*12|0)+4>>2]|0);W=(f[(f[k>>2]|0)+(V*12|0)>>2]|0)+(R<<2)|0;Y=(f[W>>2]|0)+(1<>2]=Y;W=f[A>>2]|0;Q=f[B>>2]|0;b:do if((S|0)==(O|0))ja=O;else{Z=f[K>>2]|0;if(!W){if((f[Z+(R<<2)>>2]|0)>>>0>>0){ja=S;break}else{ka=S;la=O}while(1){ha=ka;do{ha=ha+-1|0;if((la|0)==(ha|0)){ja=la;break b}ia=(f[L>>2]|0)+((X(ha,Q)|0)<<2)+(R<<2)|0}while((f[ia>>2]|0)>>>0>=Y>>>0);la=la+1|0;if((la|0)==(ha|0)){ja=ha;break b}else ka=ha}}else{ma=S;na=O}while(1){ia=na;while(1){oa=Z+((X(ia,W)|0)<<2)|0;if((f[oa+(R<<2)>>2]|0)>>>0>=Y>>>0){pa=ma;break}$=ia+1|0;if(($|0)==(ma|0)){ja=ma;break b}else ia=$}while(1){pa=pa+-1|0;if((ia|0)==(pa|0)){ja=ia;break b}qa=(f[L>>2]|0)+((X(pa,Q)|0)<<2)|0;if((f[qa+(R<<2)>>2]|0)>>>0>>0){ra=0;break}}do{ha=oa+(ra<<2)|0;$=qa+(ra<<2)|0;ga=f[ha>>2]|0;f[ha>>2]=f[$>>2];f[$>>2]=ga;ra=ra+1|0}while((ra|0)!=(W|0));na=ia+1|0;if((na|0)==(pa|0)){ja=pa;break}else ma=pa}}while(0);Y=(_(z|0)|0)^31;Q=ja-O|0;Z=S-ja|0;ga=Q>>>0>>0;if((Q|0)!=(Z|0)){$=f[D>>2]|0;if(ga)f[E>>2]=f[E>>2]|1<<31-$;ha=$+1|0;f[D>>2]=ha;if((ha|0)==32){ha=f[F>>2]|0;if((ha|0)==(f[G>>2]|0))Ci(H,E);else{f[ha>>2]=f[E>>2];f[F>>2]=ha+4}f[D>>2]=0;f[E>>2]=0}}ha=z>>>1;if(ga)bg(C,Y,ha-Q|0);else bg(C,Y,ha-Z|0);ha=f[s>>2]|0;Y=f[ha+(U*12|0)>>2]|0;ga=Y+(R<<2)|0;f[ga>>2]=(f[ga>>2]|0)+1;qg(ha+(V*12|0)|0,Y,f[ha+(U*12|0)+4>>2]|0);if((ja|0)!=(O|0)){ha=f[o>>2]|0;Y=f[t>>2]|0;ga=ha-Y>>2;$=f[v>>2]|0;fa=f[l>>2]|0;if((((ga|0)==0?0:(ga*113|0)+-1|0)|0)==(fa+$|0)){Jc(e);sa=f[v>>2]|0;ta=f[l>>2]|0;ua=f[o>>2]|0;va=f[t>>2]|0}else{sa=$;ta=fa;ua=ha;va=Y}Y=ta+sa|0;if((ua|0)==(va|0))wa=0;else wa=(f[va+(((Y>>>0)/113|0)<<2)>>2]|0)+(((Y>>>0)%113|0)*36|0)|0;f[wa>>2]=O;Y=wa+4|0;f[Y>>2]=r;f[Y+4>>2]=x;f[wa+12>>2]=ja;f[wa+16>>2]=i;f[wa+20>>2]=W;f[wa+24>>2]=R;f[wa+28>>2]=Q;f[wa+32>>2]=U;f[l>>2]=(f[l>>2]|0)+1}if((S|0)!=(ja|0)){Q=f[o>>2]|0;Y=f[t>>2]|0;ha=Q-Y>>2;fa=f[v>>2]|0;$=f[l>>2]|0;if((((ha|0)==0?0:(ha*113|0)+-1|0)|0)==($+fa|0)){Jc(e);xa=f[v>>2]|0;ya=f[l>>2]|0;za=f[o>>2]|0;Aa=f[t>>2]|0}else{xa=fa;ya=$;za=Q;Aa=Y}Y=ya+xa|0;if((za|0)==(Aa|0))Ba=0;else Ba=(f[Aa+(((Y>>>0)/113|0)<<2)>>2]|0)+(((Y>>>0)%113|0)*36|0)|0;f[Ba>>2]=ja;f[Ba+4>>2]=i;f[Ba+8>>2]=W;f[Ba+12>>2]=S;Y=Ba+16|0;f[Y>>2]=p;f[Y+4>>2]=q;f[Ba+24>>2]=R;f[Ba+28>>2]=Z;f[Ba+32>>2]=V;Z=(f[l>>2]|0)+1|0;f[l>>2]=Z;Ca=Z}else ba=81}else ba=81;while(0);if((ba|0)==81){ba=0;Ca=f[l>>2]|0}if(!Ca)break;else M=Ca}}Ca=f[t>>2]|0;M=f[v>>2]|0;Ba=Ca+(((M>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ca;if((q|0)==(Ca|0)){Da=0;Ea=0}else{ja=(f[Ba>>2]|0)+(((M>>>0)%113|0)*36|0)|0;Da=ja;Ea=ja}ja=Ba;Ba=Ea;c:while(1){Ea=Ba;do{M=Ea;if((Da|0)==(M|0))break c;Ea=M+36|0}while((Ea-(f[ja>>2]|0)|0)!=4068);Ea=ja+4|0;ja=Ea;Ba=f[Ea>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ca;do{br(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Fa=f[o>>2]|0;Ga=Fa-i>>2}while(Ga>>>0>2);Ha=Ga;Ia=i;Ja=Fa}else{Ha=l;Ia=Ca;Ja=q}switch(Ha|0){case 1:{Ka=56;ba=95;break}case 2:{Ka=113;ba=95;break}default:{}}if((ba|0)==95)f[v>>2]=Ka;if((Ia|0)!=(Ja|0)){Ka=Ia;do{br(f[Ka>>2]|0);Ka=Ka+4|0}while((Ka|0)!=(Ja|0));Ja=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Ja|0))f[o>>2]=t+(~((t+-4-Ja|0)>>>2)<<2)}Ja=f[e>>2]|0;if(!Ja){u=d;return}br(Ja);u=d;return}function ob(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,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,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0.0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0.0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0.0,ob=0.0,pb=0.0,qb=0.0,rb=0.0,sb=0.0,tb=0;i=u;u=u+512|0;j=i;k=d+c|0;l=0-k|0;m=a+4|0;n=a+100|0;o=b;b=0;a:while(1){switch(o|0){case 46:{p=6;break a;break}case 48:break;default:{q=0;r=o;s=b;t=0;v=0;break a}}w=f[m>>2]|0;if(w>>>0<(f[n>>2]|0)>>>0){f[m>>2]=w+1;o=h[w>>0]|0;b=1;continue}else{o=Di(a)|0;b=1;continue}}if((p|0)==6){o=f[m>>2]|0;if(o>>>0<(f[n>>2]|0)>>>0){f[m>>2]=o+1;x=h[o>>0]|0}else x=Di(a)|0;if((x|0)==48){o=0;w=0;while(1){y=Tn(o|0,w|0,-1,-1)|0;z=I;A=f[m>>2]|0;if(A>>>0<(f[n>>2]|0)>>>0){f[m>>2]=A+1;B=h[A>>0]|0}else B=Di(a)|0;if((B|0)==48){o=y;w=z}else{q=1;r=B;s=1;t=y;v=z;break}}}else{q=1;r=x;s=b;t=0;v=0}}f[j>>2]=0;b=r+-48|0;x=(r|0)==46;b:do if(x|b>>>0<10){B=j+496|0;w=0;o=0;z=0;y=q;A=s;C=r;D=x;E=b;F=t;G=v;H=0;J=0;c:while(1){do if(D)if(!y){L=w;M=o;N=1;O=z;P=A;Q=H;R=J;S=H;T=J}else break c;else{U=Tn(H|0,J|0,1,0)|0;V=I;W=(C|0)!=48;if((o|0)>=125){if(!W){L=w;M=o;N=y;O=z;P=A;Q=F;R=G;S=U;T=V;break}f[B>>2]=f[B>>2]|1;L=w;M=o;N=y;O=z;P=A;Q=F;R=G;S=U;T=V;break}Y=j+(o<<2)|0;if(!w)Z=E;else Z=C+-48+((f[Y>>2]|0)*10|0)|0;f[Y>>2]=Z;Y=w+1|0;_=(Y|0)==9;L=_?0:Y;M=o+(_&1)|0;N=y;O=W?U:z;P=1;Q=F;R=G;S=U;T=V}while(0);V=f[m>>2]|0;if(V>>>0<(f[n>>2]|0)>>>0){f[m>>2]=V+1;$=h[V>>0]|0}else $=Di(a)|0;E=$+-48|0;D=($|0)==46;if(!(D|E>>>0<10)){aa=L;ba=M;ca=O;da=N;ea=$;fa=P;ga=S;ha=Q;ia=T;ja=R;p=29;break b}else{w=L;o=M;z=O;y=N;A=P;C=$;F=Q;G=R;H=S;J=T}}ka=w;la=o;ma=z;na=H;oa=J;pa=F;qa=G;ra=(A|0)!=0;p=37}else{aa=0;ba=0;ca=0;da=q;ea=r;fa=s;ga=0;ha=t;ia=0;ja=v;p=29}while(0);do if((p|0)==29){v=(da|0)==0;t=v?ga:ha;s=v?ia:ja;v=(fa|0)!=0;if(!(v&(ea|32|0)==101))if((ea|0)>-1){ka=aa;la=ba;ma=ca;na=ga;oa=ia;pa=t;qa=s;ra=v;p=37;break}else{sa=aa;ta=ba;ua=ca;va=ga;wa=ia;xa=v;ya=t;za=s;p=39;break}v=De(a,g)|0;r=I;if((v|0)==0&(r|0)==-2147483648){if(!g){Rm(a,0);Aa=0.0;break}if(!(f[n>>2]|0)){Ba=0;Ca=0}else{f[m>>2]=(f[m>>2]|0)+-1;Ba=0;Ca=0}}else{Ba=v;Ca=r}r=Tn(Ba|0,Ca|0,t|0,s|0)|0;Da=aa;Ea=ba;Fa=ca;Ga=r;Ha=ga;Ia=I;Ja=ia;p=41}while(0);if((p|0)==37)if(f[n>>2]|0){f[m>>2]=(f[m>>2]|0)+-1;if(ra){Da=ka;Ea=la;Fa=ma;Ga=pa;Ha=na;Ia=qa;Ja=oa;p=41}else p=40}else{sa=ka;ta=la;ua=ma;va=na;wa=oa;xa=ra;ya=pa;za=qa;p=39}if((p|0)==39)if(xa){Da=sa;Ea=ta;Fa=ua;Ga=ya;Ha=va;Ia=za;Ja=wa;p=41}else p=40;do if((p|0)==40){wa=ir()|0;f[wa>>2]=22;Rm(a,0);Aa=0.0}else if((p|0)==41){wa=f[j>>2]|0;if(!wa){Aa=+(e|0)*0.0;break}if(((Ja|0)<0|(Ja|0)==0&Ha>>>0<10)&((Ga|0)==(Ha|0)&(Ia|0)==(Ja|0))?(c|0)>30|(wa>>>c|0)==0:0){Aa=+(e|0)*+(wa>>>0);break}wa=(d|0)/-2|0;za=((wa|0)<0)<<31>>31;if((Ia|0)>(za|0)|(Ia|0)==(za|0)&Ga>>>0>wa>>>0){wa=ir()|0;f[wa>>2]=34;Aa=+(e|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}wa=d+-106|0;za=((wa|0)<0)<<31>>31;if((Ia|0)<(za|0)|(Ia|0)==(za|0)&Ga>>>0>>0){wa=ir()|0;f[wa>>2]=34;Aa=+(e|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(!Da)Ka=Ea;else{if((Da|0)<9){wa=j+(Ea<<2)|0;za=Da;va=f[wa>>2]|0;while(1){va=va*10|0;if((za|0)>=8)break;else za=za+1|0}f[wa>>2]=va}Ka=Ea+1|0}if((Fa|0)<9?(Fa|0)<=(Ga|0)&(Ga|0)<18:0){if((Ga|0)==9){Aa=+(e|0)*+((f[j>>2]|0)>>>0);break}if((Ga|0)<9){Aa=+(e|0)*+((f[j>>2]|0)>>>0)/+(f[6408+(8-Ga<<2)>>2]|0);break}za=c+27+(X(Ga,-3)|0)|0;A=f[j>>2]|0;if((za|0)>30|(A>>>za|0)==0){Aa=+(e|0)*+(A>>>0)*+(f[6408+(Ga+-10<<2)>>2]|0);break}}A=(Ga|0)%9|0;if(!A){La=0;Ma=Ka;Na=0;Oa=Ga}else{za=(Ga|0)>-1?A:A+9|0;A=f[6408+(8-za<<2)>>2]|0;if(Ka){G=1e9/(A|0)|0;F=0;J=0;H=Ga;z=0;do{o=j+(z<<2)|0;w=f[o>>2]|0;ya=((w>>>0)/(A>>>0)|0)+F|0;f[o>>2]=ya;F=X(G,(w>>>0)%(A>>>0)|0)|0;w=(z|0)==(J|0)&(ya|0)==0;H=w?H+-9|0:H;J=w?J+1&127:J;z=z+1|0}while((z|0)!=(Ka|0));if(!F){Pa=J;Qa=Ka;Ra=H}else{f[j+(Ka<<2)>>2]=F;Pa=J;Qa=Ka+1|0;Ra=H}}else{Pa=0;Qa=0;Ra=Ga}La=0;Ma=Qa;Na=Pa;Oa=9-za+Ra|0}d:while(1){z=(Oa|0)<18;A=(Oa|0)==18;G=j+(Na<<2)|0;va=La;wa=Ma;while(1){if(!z){if(!A){Sa=va;Ta=Na;Ua=Oa;Va=wa;break d}if((f[G>>2]|0)>>>0>=9007199){Sa=va;Ta=Na;Ua=18;Va=wa;break d}}w=0;Wa=wa;ya=wa+127|0;while(1){o=ya&127;ua=j+(o<<2)|0;ta=Rn(f[ua>>2]|0,0,29)|0;sa=Tn(ta|0,I|0,w|0,0)|0;ta=I;if(ta>>>0>0|(ta|0)==0&sa>>>0>1e9){xa=up(sa|0,ta|0,1e9,0)|0;qa=an(sa|0,ta|0,1e9,0)|0;Xa=xa;Ya=qa}else{Xa=0;Ya=sa}f[ua>>2]=Ya;ua=(o|0)==(Na|0);Wa=(Ya|0)==0&(((o|0)!=(Wa+127&127|0)|ua)^1)?o:Wa;if(ua)break;else{w=Xa;ya=o+-1|0}}va=va+-29|0;if(Xa|0)break;else wa=Wa}wa=Na+127&127;G=Wa+127&127;A=j+((Wa+126&127)<<2)|0;if((wa|0)==(Wa|0)){f[A>>2]=f[A>>2]|f[j+(G<<2)>>2];Za=G}else Za=Wa;f[j+(wa<<2)>>2]=Xa;La=va;Ma=Za;Na=wa;Oa=Oa+9|0}e:while(1){za=Va+1&127;H=j+((Va+127&127)<<2)|0;J=Sa;F=Ta;wa=Ua;while(1){G=(wa|0)==18;A=(wa|0)>27?9:1;_a=J;$a=F;while(1){z=0;while(1){ya=z+$a&127;if((ya|0)==(Va|0)){ab=2;p=88;break}w=f[j+(ya<<2)>>2]|0;ya=f[6440+(z<<2)>>2]|0;if(w>>>0>>0){ab=2;p=88;break}if(w>>>0>ya>>>0)break;ya=z+1|0;if((z|0)<1)z=ya;else{ab=ya;p=88;break}}if((p|0)==88?(p=0,G&(ab|0)==2):0){bb=0.0;cb=0;db=Va;break e}eb=A+_a|0;if(($a|0)==(Va|0)){_a=eb;$a=Va}else break}G=(1<>>A;fb=0;gb=$a;hb=wa;ya=$a;do{w=j+(ya<<2)|0;o=f[w>>2]|0;ua=(o>>>A)+fb|0;f[w>>2]=ua;fb=X(o&G,z)|0;o=(ya|0)==(gb|0)&(ua|0)==0;hb=o?hb+-9|0:hb;gb=o?gb+1&127:gb;ya=ya+1&127}while((ya|0)!=(Va|0));if(!fb){J=eb;F=gb;wa=hb;continue}if((za|0)!=(gb|0))break;f[H>>2]=f[H>>2]|1;J=eb;F=gb;wa=hb}f[j+(Va<<2)>>2]=fb;Sa=eb;Ta=gb;Ua=hb;Va=za}while(1){wa=cb+$a&127;F=db+1&127;if((wa|0)==(db|0)){f[j+(F+-1<<2)>>2]=0;ib=F}else ib=db;bb=bb*1.0e9+ +((f[j+(wa<<2)>>2]|0)>>>0);cb=cb+1|0;if((cb|0)==2)break;else db=ib}jb=+(e|0);kb=bb*jb;wa=_a+53|0;F=wa-d|0;J=(F|0)<(c|0);H=J?((F|0)>0?F:0):c;if((H|0)<53){lb=+Gq(+Wj(1.0,105-H|0),kb);mb=+Sq(kb,+Wj(1.0,53-H|0));nb=lb;ob=mb;pb=lb+(kb-mb)}else{nb=0.0;ob=0.0;pb=kb}va=$a+2&127;if((va|0)!=(ib|0)){ya=f[j+(va<<2)>>2]|0;do if(ya>>>0>=5e8){if((ya|0)!=5e8){qb=jb*.75+ob;break}if(($a+3&127|0)==(ib|0)){qb=jb*.5+ob;break}else{qb=jb*.75+ob;break}}else{if((ya|0)==0?($a+3&127|0)==(ib|0):0){qb=ob;break}qb=jb*.25+ob}while(0);if((53-H|0)>1?!(+Sq(qb,1.0)!=0.0):0)rb=qb+1.0;else rb=qb}else rb=ob;jb=pb+rb-nb;do if((wa&2147483647|0)>(-2-k|0)){ya=!(+K(+jb)>=9007199254740992.0);va=_a+((ya^1)&1)|0;kb=ya?jb:jb*.5;if((va+50|0)<=(l|0)?!(rb!=0.0&(J&((H|0)!=(F|0)|ya))):0){sb=kb;tb=va;break}ya=ir()|0;f[ya>>2]=34;sb=kb;tb=va}else{sb=jb;tb=_a}while(0);Aa=+Hq(sb,tb)}while(0);u=i;return +Aa}function pb(a,c,d,e,g,i){a=a|0;c=+c;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0.0,E=0,F=0,G=0,H=0.0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0.0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0;j=u;u=u+560|0;k=j+8|0;l=j;m=j+524|0;n=m;o=j+512|0;f[l>>2]=0;p=o+12|0;xo(c)|0;if((I|0)<0){q=-c;r=1;s=15511}else{q=c;r=(g&2049|0)!=0&1;s=(g&2048|0)==0?((g&1|0)==0?15512:15517):15514}xo(q)|0;do if(0==0&(I&2146435072|0)==2146435072){t=(i&32|0)!=0;v=r+3|0;Hk(a,32,d,v,g&-65537);ep(a,s,r);ep(a,q!=q|0.0!=0.0?(t?17461:15538):t?15530:15534,3);Hk(a,32,d,v,g^8192);w=v}else{c=+Iq(q,l)*2.0;v=c!=0.0;if(v)f[l>>2]=(f[l>>2]|0)+-1;t=i|32;if((t|0)==97){x=i&32;y=(x|0)==0?s:s+9|0;z=r|2;A=12-e|0;do if(!(e>>>0>11|(A|0)==0)){B=8.0;C=A;do{C=C+-1|0;B=B*16.0}while((C|0)!=0);if((b[y>>0]|0)==45){D=-(B+(-c-B));break}else{D=c+B-B;break}}else D=c;while(0);A=f[l>>2]|0;C=(A|0)<0?0-A|0:A;E=Jj(C,((C|0)<0)<<31>>31,p)|0;if((E|0)==(p|0)){C=o+11|0;b[C>>0]=48;F=C}else F=E;b[F+-1>>0]=(A>>31&2)+43;A=F+-2|0;b[A>>0]=i+15;E=(e|0)<1;C=(g&8|0)==0;G=m;H=D;while(1){J=~~H;K=G+1|0;b[G>>0]=x|h[15542+J>>0];H=(H-+(J|0))*16.0;if((K-n|0)==1?!(C&(E&H==0.0)):0){b[K>>0]=46;L=G+2|0}else L=K;if(!(H!=0.0))break;else G=L}G=L;if((e|0)!=0?(-2-n+G|0)<(e|0):0){M=G-n|0;N=e+2|0}else{E=G-n|0;M=E;N=E}E=p-A|0;G=E+z+N|0;Hk(a,32,d,G,g);ep(a,y,z);Hk(a,48,d,G,g^65536);ep(a,m,M);Hk(a,48,N-M|0,0,0);ep(a,A,E);Hk(a,32,d,G,g^8192);w=G;break}G=(e|0)<0?6:e;if(v){E=(f[l>>2]|0)+-28|0;f[l>>2]=E;O=c*268435456.0;P=E}else{O=c;P=f[l>>2]|0}E=(P|0)<0?k:k+288|0;C=E;H=O;do{x=~~H>>>0;f[C>>2]=x;C=C+4|0;H=(H-+(x>>>0))*1.0e9}while(H!=0.0);if((P|0)>0){v=E;A=C;z=P;while(1){y=(z|0)<29?z:29;x=A+-4|0;if(x>>>0>=v>>>0){K=x;x=0;do{J=Rn(f[K>>2]|0,0,y|0)|0;Q=Tn(J|0,I|0,x|0,0)|0;J=I;R=an(Q|0,J|0,1e9,0)|0;f[K>>2]=R;x=up(Q|0,J|0,1e9,0)|0;K=K+-4|0}while(K>>>0>=v>>>0);if(x){K=v+-4|0;f[K>>2]=x;S=K}else S=v}else S=v;K=A;while(1){if(K>>>0<=S>>>0)break;J=K+-4|0;if(!(f[J>>2]|0))K=J;else break}x=(f[l>>2]|0)-y|0;f[l>>2]=x;if((x|0)>0){v=S;A=K;z=x}else{T=S;U=K;V=x;break}}}else{T=E;U=C;V=P}if((V|0)<0){z=((G+25|0)/9|0)+1|0;A=(t|0)==102;v=T;x=U;J=V;while(1){Q=0-J|0;R=(Q|0)<9?Q:9;if(v>>>0>>0){Q=(1<>>R;Y=0;Z=v;do{_=f[Z>>2]|0;f[Z>>2]=(_>>>R)+Y;Y=X(_&Q,W)|0;Z=Z+4|0}while(Z>>>0>>0);Z=(f[v>>2]|0)==0?v+4|0:v;if(!Y){$=Z;aa=x}else{f[x>>2]=Y;$=Z;aa=x+4|0}}else{$=(f[v>>2]|0)==0?v+4|0:v;aa=x}Z=A?E:$;W=(aa-Z>>2|0)>(z|0)?Z+(z<<2)|0:aa;J=(f[l>>2]|0)+R|0;f[l>>2]=J;if((J|0)>=0){ba=$;ca=W;break}else{v=$;x=W}}}else{ba=T;ca=U}x=E;if(ba>>>0>>0){v=(x-ba>>2)*9|0;J=f[ba>>2]|0;if(J>>>0<10)da=v;else{z=v;v=10;while(1){v=v*10|0;A=z+1|0;if(J>>>0>>0){da=A;break}else z=A}}}else da=0;z=(t|0)==103;v=(G|0)!=0;J=G-((t|0)!=102?da:0)+((v&z)<<31>>31)|0;if((J|0)<(((ca-x>>2)*9|0)+-9|0)){A=J+9216|0;J=E+4+(((A|0)/9|0)+-1024<<2)|0;C=(A|0)%9|0;if((C|0)<8){A=C;C=10;while(1){W=C*10|0;if((A|0)<7){A=A+1|0;C=W}else{ea=W;break}}}else ea=10;C=f[J>>2]|0;A=(C>>>0)%(ea>>>0)|0;t=(J+4|0)==(ca|0);if(!(t&(A|0)==0)){B=(((C>>>0)/(ea>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;W=(ea|0)/2|0;H=A>>>0>>0?.5:t&(A|0)==(W|0)?1.0:1.5;if(!r){fa=H;ga=B}else{W=(b[s>>0]|0)==45;fa=W?-H:H;ga=W?-B:B}W=C-A|0;f[J>>2]=W;if(ga+fa!=ga){A=W+ea|0;f[J>>2]=A;if(A>>>0>999999999){A=ba;W=J;while(1){C=W+-4|0;f[W>>2]=0;if(C>>>0>>0){t=A+-4|0;f[t>>2]=0;ha=t}else ha=A;t=(f[C>>2]|0)+1|0;f[C>>2]=t;if(t>>>0>999999999){A=ha;W=C}else{ia=ha;ja=C;break}}}else{ia=ba;ja=J}W=(x-ia>>2)*9|0;A=f[ia>>2]|0;if(A>>>0<10){ka=ja;la=W;ma=ia}else{C=W;W=10;while(1){W=W*10|0;t=C+1|0;if(A>>>0>>0){ka=ja;la=t;ma=ia;break}else C=t}}}else{ka=J;la=da;ma=ba}}else{ka=J;la=da;ma=ba}C=ka+4|0;na=la;oa=ca>>>0>C>>>0?C:ca;pa=ma}else{na=da;oa=ca;pa=ba}C=oa;while(1){if(C>>>0<=pa>>>0){qa=0;break}W=C+-4|0;if(!(f[W>>2]|0))C=W;else{qa=1;break}}J=0-na|0;do if(z){W=G+((v^1)&1)|0;if((W|0)>(na|0)&(na|0)>-5){ra=i+-1|0;sa=W+-1-na|0}else{ra=i+-2|0;sa=W+-1|0}W=g&8;if(!W){if(qa?(A=f[C+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){t=0;Z=10;while(1){Z=Z*10|0;Q=t+1|0;if((A>>>0)%(Z>>>0)|0|0){ta=Q;break}else t=Q}}else ta=0;else ta=9;t=((C-x>>2)*9|0)+-9|0;if((ra|32|0)==102){Z=t-ta|0;A=(Z|0)>0?Z:0;ua=ra;va=(sa|0)<(A|0)?sa:A;wa=0;break}else{A=t+na-ta|0;t=(A|0)>0?A:0;ua=ra;va=(sa|0)<(t|0)?sa:t;wa=0;break}}else{ua=ra;va=sa;wa=W}}else{ua=i;va=G;wa=g&8}while(0);G=va|wa;x=(G|0)!=0&1;v=(ua|32|0)==102;if(v){xa=0;ya=(na|0)>0?na:0}else{z=(na|0)<0?J:na;t=Jj(z,((z|0)<0)<<31>>31,p)|0;z=p;if((z-t|0)<2){A=t;while(1){Z=A+-1|0;b[Z>>0]=48;if((z-Z|0)<2)A=Z;else{za=Z;break}}}else za=t;b[za+-1>>0]=(na>>31&2)+43;A=za+-2|0;b[A>>0]=ua;xa=A;ya=z-A|0}A=r+1+va+x+ya|0;Hk(a,32,d,A,g);ep(a,s,r);Hk(a,48,d,A,g^65536);if(v){J=pa>>>0>E>>>0?E:pa;Z=m+9|0;R=Z;Y=m+8|0;Q=J;do{K=Jj(f[Q>>2]|0,0,Z)|0;if((Q|0)==(J|0))if((K|0)==(Z|0)){b[Y>>0]=48;Aa=Y}else Aa=K;else if(K>>>0>m>>>0){hj(m|0,48,K-n|0)|0;y=K;while(1){_=y+-1|0;if(_>>>0>m>>>0)y=_;else{Aa=_;break}}}else Aa=K;ep(a,Aa,R-Aa|0);Q=Q+4|0}while(Q>>>0<=E>>>0);if(G|0)ep(a,15558,1);if(Q>>>0>>0&(va|0)>0){E=va;R=Q;while(1){Y=Jj(f[R>>2]|0,0,Z)|0;if(Y>>>0>m>>>0){hj(m|0,48,Y-n|0)|0;J=Y;while(1){v=J+-1|0;if(v>>>0>m>>>0)J=v;else{Ba=v;break}}}else Ba=Y;ep(a,Ba,(E|0)<9?E:9);R=R+4|0;J=E+-9|0;if(!(R>>>0>>0&(E|0)>9)){Ca=J;break}else E=J}}else Ca=va;Hk(a,48,Ca+9|0,9,0)}else{E=qa?C:pa+4|0;if((va|0)>-1){R=m+9|0;Z=(wa|0)==0;Q=R;G=0-n|0;J=m+8|0;K=va;v=pa;while(1){x=Jj(f[v>>2]|0,0,R)|0;if((x|0)==(R|0)){b[J>>0]=48;Da=J}else Da=x;do if((v|0)==(pa|0)){x=Da+1|0;ep(a,Da,1);if(Z&(K|0)<1){Ea=x;break}ep(a,15558,1);Ea=x}else{if(Da>>>0<=m>>>0){Ea=Da;break}hj(m|0,48,Da+G|0)|0;x=Da;while(1){z=x+-1|0;if(z>>>0>m>>>0)x=z;else{Ea=z;break}}}while(0);Y=Q-Ea|0;ep(a,Ea,(K|0)>(Y|0)?Y:K);x=K-Y|0;v=v+4|0;if(!(v>>>0>>0&(x|0)>-1)){Fa=x;break}else K=x}}else Fa=va;Hk(a,48,Fa+18|0,18,0);ep(a,xa,p-xa|0)}Hk(a,32,d,A,g^8192);w=A}while(0);u=j;return ((w|0)<(d|0)?d:w)|0}function qb(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0;i=u;u=u+64|0;j=i+16|0;k=i;l=i+24|0;m=i+8|0;n=i+20|0;f[j>>2]=c;c=(a|0)!=0;o=l+40|0;q=o;r=l+39|0;l=m+4|0;s=0;t=0;v=0;a:while(1){do if((t|0)>-1)if((s|0)>(2147483647-t|0)){w=ir()|0;f[w>>2]=75;x=-1;break}else{x=s+t|0;break}else x=t;while(0);w=f[j>>2]|0;y=b[w>>0]|0;if(!(y<<24>>24)){z=88;break}else{A=y;B=w}b:while(1){switch(A<<24>>24){case 37:{C=B;D=B;z=9;break b;break}case 0:{E=B;break b;break}default:{}}y=B+1|0;f[j>>2]=y;A=b[y>>0]|0;B=y}c:do if((z|0)==9)while(1){z=0;if((b[D+1>>0]|0)!=37){E=C;break c}y=C+1|0;D=D+2|0;f[j>>2]=D;if((b[D>>0]|0)!=37){E=y;break}else{C=y;z=9}}while(0);y=E-w|0;if(c)ep(a,w,y);if(y|0){s=y;t=x;continue}y=(Pq(b[(f[j>>2]|0)+1>>0]|0)|0)==0;F=f[j>>2]|0;if(!y?(b[F+2>>0]|0)==36:0){G=(b[F+1>>0]|0)+-48|0;H=1;J=3}else{G=-1;H=v;J=1}y=F+J|0;f[j>>2]=y;F=b[y>>0]|0;K=(F<<24>>24)+-32|0;if(K>>>0>31|(1<>24)+-32|K;P=F+1|0;f[j>>2]=P;Q=b[P>>0]|0;R=(Q<<24>>24)+-32|0;if(R>>>0>31|(1<>24==42){if((Pq(b[N+1>>0]|0)|0)!=0?(F=f[j>>2]|0,(b[F+2>>0]|0)==36):0){O=F+1|0;f[h+((b[O>>0]|0)+-48<<2)>>2]=10;S=f[g+((b[O>>0]|0)+-48<<3)>>2]|0;T=1;U=F+3|0}else{if(H|0){V=-1;break}if(c){F=(f[e>>2]|0)+(4-1)&~(4-1);O=f[F>>2]|0;f[e>>2]=F+4;W=O}else W=0;S=W;T=0;U=(f[j>>2]|0)+1|0}f[j>>2]=U;O=(S|0)<0;X=O?0-S|0:S;Y=O?L|8192:L;Z=T;_=U}else{O=Cl(j)|0;if((O|0)<0){V=-1;break}X=O;Y=L;Z=H;_=f[j>>2]|0}do if((b[_>>0]|0)==46){if((b[_+1>>0]|0)!=42){f[j>>2]=_+1;O=Cl(j)|0;$=O;aa=f[j>>2]|0;break}if(Pq(b[_+2>>0]|0)|0?(O=f[j>>2]|0,(b[O+3>>0]|0)==36):0){F=O+2|0;f[h+((b[F>>0]|0)+-48<<2)>>2]=10;K=f[g+((b[F>>0]|0)+-48<<3)>>2]|0;F=O+4|0;f[j>>2]=F;$=K;aa=F;break}if(Z|0){V=-1;break a}if(c){F=(f[e>>2]|0)+(4-1)&~(4-1);K=f[F>>2]|0;f[e>>2]=F+4;ba=K}else ba=0;K=(f[j>>2]|0)+2|0;f[j>>2]=K;$=ba;aa=K}else{$=-1;aa=_}while(0);K=0;F=aa;while(1){if(((b[F>>0]|0)+-65|0)>>>0>57){V=-1;break a}O=F;F=F+1|0;f[j>>2]=F;ca=b[(b[O>>0]|0)+-65+(15030+(K*58|0))>>0]|0;da=ca&255;if((da+-1|0)>>>0>=8)break;else K=da}if(!(ca<<24>>24)){V=-1;break}O=(G|0)>-1;do if(ca<<24>>24==19)if(O){V=-1;break a}else z=50;else{if(O){f[h+(G<<2)>>2]=da;P=g+(G<<3)|0;Q=f[P+4>>2]|0;y=k;f[y>>2]=f[P>>2];f[y+4>>2]=Q;z=50;break}if(!c){V=0;break a}Ie(k,da,e);ea=f[j>>2]|0}while(0);if((z|0)==50){z=0;if(c)ea=F;else{s=0;t=x;v=Z;continue}}O=b[ea+-1>>0]|0;Q=(K|0)!=0&(O&15|0)==3?O&-33:O;O=Y&-65537;y=(Y&8192|0)==0?Y:O;d:do switch(Q|0){case 110:{switch((K&255)<<24>>24){case 0:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 1:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 2:{P=f[k>>2]|0;f[P>>2]=x;f[P+4>>2]=((x|0)<0)<<31>>31;s=0;t=x;v=Z;continue a;break}case 3:{d[f[k>>2]>>1]=x;s=0;t=x;v=Z;continue a;break}case 4:{b[f[k>>2]>>0]=x;s=0;t=x;v=Z;continue a;break}case 6:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 7:{P=f[k>>2]|0;f[P>>2]=x;f[P+4>>2]=((x|0)<0)<<31>>31;s=0;t=x;v=Z;continue a;break}default:{s=0;t=x;v=Z;continue a}}break}case 112:{fa=120;ga=$>>>0>8?$:8;ha=y|8;z=62;break}case 88:case 120:{fa=Q;ga=$;ha=y;z=62;break}case 111:{P=k;R=f[P>>2]|0;ia=f[P+4>>2]|0;P=Gl(R,ia,o)|0;ja=q-P|0;ka=P;la=0;ma=15494;na=(y&8|0)==0|($|0)>(ja|0)?$:ja+1|0;oa=y;pa=R;qa=ia;z=68;break}case 105:case 100:{ia=k;R=f[ia>>2]|0;ja=f[ia+4>>2]|0;if((ja|0)<0){ia=Vn(0,0,R|0,ja|0)|0;P=I;ra=k;f[ra>>2]=ia;f[ra+4>>2]=P;sa=1;ta=15494;ua=ia;va=P;z=67;break d}else{sa=(y&2049|0)!=0&1;ta=(y&2048|0)==0?((y&1|0)==0?15494:15496):15495;ua=R;va=ja;z=67;break d}break}case 117:{ja=k;sa=0;ta=15494;ua=f[ja>>2]|0;va=f[ja+4>>2]|0;z=67;break}case 99:{b[r>>0]=f[k>>2];wa=r;xa=0;ya=15494;za=o;Aa=1;Ba=O;break}case 109:{ja=ir()|0;Ca=kp(f[ja>>2]|0)|0;z=72;break}case 115:{ja=f[k>>2]|0;Ca=ja|0?ja:15504;z=72;break}case 67:{f[m>>2]=f[k>>2];f[l>>2]=0;f[k>>2]=m;Da=-1;Ea=m;z=76;break}case 83:{ja=f[k>>2]|0;if(!$){Hk(a,32,X,0,y);Fa=0;z=85}else{Da=$;Ea=ja;z=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{s=pb(a,+p[k>>3],X,$,y,Q)|0;t=x;v=Z;continue a;break}default:{wa=w;xa=0;ya=15494;za=o;Aa=$;Ba=y}}while(0);e:do if((z|0)==62){z=0;w=k;Q=f[w>>2]|0;K=f[w+4>>2]|0;w=ol(Q,K,o,fa&32)|0;F=(ha&8|0)==0|(Q|0)==0&(K|0)==0;ka=w;la=F?0:2;ma=F?15494:15494+(fa>>4)|0;na=ga;oa=ha;pa=Q;qa=K;z=68}else if((z|0)==67){z=0;ka=Jj(ua,va,o)|0;la=sa;ma=ta;na=$;oa=y;pa=ua;qa=va;z=68}else if((z|0)==72){z=0;K=cg(Ca,0,$)|0;Q=(K|0)==0;wa=Ca;xa=0;ya=15494;za=Q?Ca+$|0:K;Aa=Q?$:K-Ca|0;Ba=O}else if((z|0)==76){z=0;K=Ea;Q=0;F=0;while(1){w=f[K>>2]|0;if(!w){Ga=Q;Ha=F;break}ja=Yo(n,w)|0;if((ja|0)<0|ja>>>0>(Da-Q|0)>>>0){Ga=Q;Ha=ja;break}w=ja+Q|0;if(Da>>>0>w>>>0){K=K+4|0;Q=w;F=ja}else{Ga=w;Ha=ja;break}}if((Ha|0)<0){V=-1;break a}Hk(a,32,X,Ga,y);if(!Ga){Fa=0;z=85}else{F=Ea;Q=0;while(1){K=f[F>>2]|0;if(!K){Fa=Ga;z=85;break e}ja=Yo(n,K)|0;Q=ja+Q|0;if((Q|0)>(Ga|0)){Fa=Ga;z=85;break e}ep(a,n,ja);if(Q>>>0>=Ga>>>0){Fa=Ga;z=85;break}else F=F+4|0}}}while(0);if((z|0)==68){z=0;O=(pa|0)!=0|(qa|0)!=0;F=(na|0)!=0|O;Q=q-ka+((O^1)&1)|0;wa=F?ka:o;xa=la;ya=ma;za=o;Aa=F?((na|0)>(Q|0)?na:Q):na;Ba=(na|0)>-1?oa&-65537:oa}else if((z|0)==85){z=0;Hk(a,32,X,Fa,y^8192);s=(X|0)>(Fa|0)?X:Fa;t=x;v=Z;continue}Q=za-wa|0;F=(Aa|0)<(Q|0)?Q:Aa;O=F+xa|0;ja=(X|0)<(O|0)?O:X;Hk(a,32,ja,O,Ba);ep(a,ya,xa);Hk(a,48,ja,O,Ba^65536);Hk(a,48,F,Q,0);ep(a,wa,Q);Hk(a,32,ja,O,Ba^8192);s=ja;t=x;v=Z}f:do if((z|0)==88)if(!a)if(v){Z=1;while(1){t=f[h+(Z<<2)>>2]|0;if(!t){Ia=Z;break}Ie(g+(Z<<3)|0,t,e);t=Z+1|0;if((Z|0)<9)Z=t;else{Ia=t;break}}if((Ia|0)<10){Z=Ia;while(1){if(f[h+(Z<<2)>>2]|0){V=-1;break f}if((Z|0)<9)Z=Z+1|0;else{V=1;break}}}else V=1}else V=0;else V=x;while(0);u=i;return V|0}function rb(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=Oa,ma=Oa,na=Oa,oa=0,pa=0,qa=0,ra=0,sa=0;c=u;u=u+64|0;d=c+28|0;e=c+16|0;g=c+4|0;h=c;i=a;j=a+80|0;k=f[j>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=i;l=d+20|0;n[l>>2]=$(1.0);f[d+24>>2]=i;qh(d,k);k=f[j>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;m=(k|0)==0;do if(!m)if(k>>>0>1073741823)mq(e);else{o=k<<2;p=dn(o)|0;f[e>>2]=p;q=p+(k<<2)|0;f[e+8>>2]=q;hj(p|0,0,o|0)|0;f[i>>2]=q;break}while(0);f[g>>2]=0;k=g+4|0;f[k>>2]=0;f[g+8>>2]=0;f[h>>2]=0;if(!m){m=d+16|0;q=d+4|0;o=d+12|0;p=d+8|0;r=g+8|0;s=d+24|0;t=0;v=0;while(1){w=f[m>>2]|0;x=f[w+8>>2]|0;y=(f[w+12>>2]|0)-x|0;w=(y|0)>0;z=x;if(w){x=y>>>2;A=0;B=0;while(1){C=f[z+(A<<2)>>2]|0;if(!(b[C+84>>0]|0))D=f[(f[C+68>>2]|0)+(v<<2)>>2]|0;else D=v;C=D+239^B;A=A+1|0;if((A|0)>=(x|0)){E=C;break}else B=C}}else E=0;B=f[q>>2]|0;x=(B|0)==0;a:do if(!x){A=B+-1|0;C=(A&B|0)==0;if(!C)if(E>>>0>>0)F=E;else F=(E>>>0)%(B>>>0)|0;else F=A&E;G=f[(f[d>>2]|0)+(F<<2)>>2]|0;if((G|0)!=0?(H=f[G>>2]|0,(H|0)!=0):0){G=f[s>>2]|0;I=G+8|0;J=G+12|0;b:do if(C){G=H;while(1){K=f[G+4>>2]|0;L=(K|0)==(E|0);if(!(L|(K&A|0)==(F|0))){M=44;break a}c:do if(L){K=f[G+8>>2]|0;N=f[I>>2]|0;O=(f[J>>2]|0)-N|0;P=N;if((O|0)<=0){Q=G;break b}N=O>>>2;O=0;while(1){R=f[P+(O<<2)>>2]|0;if(!(b[R+84>>0]|0)){S=f[R+68>>2]|0;T=f[S+(v<<2)>>2]|0;U=f[S+(K<<2)>>2]|0}else{T=v;U=K}O=O+1|0;if((U|0)!=(T|0))break c;if((O|0)>=(N|0)){V=G;M=42;break b}}}while(0);G=f[G>>2]|0;if(!G){M=44;break a}}}else{G=H;while(1){L=f[G+4>>2]|0;d:do if((L|0)!=(E|0)){if(L>>>0>>0)X=L;else X=(L>>>0)%(B>>>0)|0;if((X|0)!=(F|0)){M=44;break a}}else{N=f[G+8>>2]|0;O=f[I>>2]|0;K=(f[J>>2]|0)-O|0;P=O;if((K|0)<=0){Q=G;break b}O=K>>>2;K=0;while(1){S=f[P+(K<<2)>>2]|0;if(!(b[S+84>>0]|0)){R=f[S+68>>2]|0;Y=f[R+(v<<2)>>2]|0;Z=f[R+(N<<2)>>2]|0}else{Y=v;Z=N}K=K+1|0;if((Z|0)!=(Y|0))break d;if((K|0)>=(O|0)){V=G;M=42;break b}}}while(0);G=f[G>>2]|0;if(!G){M=44;break a}}}while(0);if((M|0)==42){M=0;if(!V){M=44;break}else Q=V}f[(f[e>>2]|0)+(v<<2)>>2]=f[Q+12>>2];_=t}else M=44}else M=44;while(0);do if((M|0)==44){M=0;if(w){J=y>>>2;I=0;H=0;while(1){A=f[z+(I<<2)>>2]|0;if(!(b[A+84>>0]|0))aa=f[(f[A+68>>2]|0)+(v<<2)>>2]|0;else aa=v;A=aa+239^H;I=I+1|0;if((I|0)>=(J|0)){ba=A;break}else H=A}}else ba=0;e:do if(!x){H=B+-1|0;J=(H&B|0)==0;if(!J)if(ba>>>0>>0)ca=ba;else ca=(ba>>>0)%(B>>>0)|0;else ca=H&ba;I=f[(f[d>>2]|0)+(ca<<2)>>2]|0;if((I|0)!=0?(A=f[I>>2]|0,(A|0)!=0):0){I=f[s>>2]|0;C=I+8|0;G=I+12|0;if(J){J=A;while(1){I=f[J+4>>2]|0;if(!((I|0)==(ba|0)|(I&H|0)==(ca|0))){da=ca;M=76;break e}I=f[J+8>>2]|0;L=f[C>>2]|0;O=(f[G>>2]|0)-L|0;K=L;if((O|0)<=0){ea=v;break e}L=O>>>2;O=0;while(1){N=f[K+(O<<2)>>2]|0;if(!(b[N+84>>0]|0)){P=f[N+68>>2]|0;fa=f[P+(v<<2)>>2]|0;ga=f[P+(I<<2)>>2]|0}else{fa=v;ga=I}O=O+1|0;if((ga|0)!=(fa|0))break;if((O|0)>=(L|0)){ea=v;break e}}J=f[J>>2]|0;if(!J){da=ca;M=76;break e}}}else ha=A;while(1){J=f[ha+4>>2]|0;if((J|0)!=(ba|0)){if(J>>>0>>0)ia=J;else ia=(J>>>0)%(B>>>0)|0;if((ia|0)!=(ca|0)){da=ca;M=76;break e}}J=f[ha+8>>2]|0;H=f[C>>2]|0;L=(f[G>>2]|0)-H|0;O=H;if((L|0)<=0){ea=v;break e}H=L>>>2;L=0;while(1){I=f[O+(L<<2)>>2]|0;if(!(b[I+84>>0]|0)){K=f[I+68>>2]|0;ja=f[K+(v<<2)>>2]|0;ka=f[K+(J<<2)>>2]|0}else{ja=v;ka=J}L=L+1|0;if((ka|0)!=(ja|0))break;if((L|0)>=(H|0)){ea=v;break e}}ha=f[ha>>2]|0;if(!ha){da=ca;M=76;break}}}else{da=ca;M=76}}else{da=0;M=76}while(0);if((M|0)==76){M=0;G=dn(16)|0;f[G+8>>2]=v;f[G+12>>2]=t;f[G+4>>2]=ba;f[G>>2]=0;la=$(((f[o>>2]|0)+1|0)>>>0);ma=$(B>>>0);na=$(n[l>>2]);do if(x|$(na*ma)>>0<3|(B+-1&B|0)!=0)&1;A=~~$(W($(la/na)))>>>0;qh(d,C>>>0>>0?A:C);C=f[q>>2]|0;A=C+-1|0;if(!(A&C)){oa=C;pa=A&ba;break}if(ba>>>0>>0){oa=C;pa=ba}else{oa=C;pa=(ba>>>0)%(C>>>0)|0}}else{oa=B;pa=da}while(0);C=(f[d>>2]|0)+(pa<<2)|0;A=f[C>>2]|0;if(!A){f[G>>2]=f[p>>2];f[p>>2]=G;f[C>>2]=p;C=f[G>>2]|0;if(C|0){H=f[C+4>>2]|0;C=oa+-1|0;if(C&oa)if(H>>>0>>0)qa=H;else qa=(H>>>0)%(oa>>>0)|0;else qa=H&C;ra=(f[d>>2]|0)+(qa<<2)|0;M=89}}else{f[G>>2]=f[A>>2];ra=A;M=89}if((M|0)==89){M=0;f[ra>>2]=G}f[o>>2]=(f[o>>2]|0)+1;ea=f[h>>2]|0}A=t+1|0;f[(f[e>>2]|0)+(ea<<2)>>2]=t;C=f[k>>2]|0;if((C|0)==(f[r>>2]|0)){Ci(g,h);_=A;break}else{f[C>>2]=f[h>>2];f[k>>2]=C+4;_=A;break}}while(0);v=(f[h>>2]|0)+1|0;f[h>>2]=v;sa=f[j>>2]|0;if(v>>>0>=sa>>>0)break;else t=_}if((_|0)!=(sa|0)){Xa[f[(f[a>>2]|0)+24>>2]&15](a,e,g);f[j>>2]=_}}_=f[g>>2]|0;if(_|0){g=f[k>>2]|0;if((g|0)!=(_|0))f[k>>2]=g+(~((g+-4-_|0)>>>2)<<2);br(_)}_=f[e>>2]|0;if(_|0){e=f[i>>2]|0;if((e|0)!=(_|0))f[i>>2]=e+(~((e+-4-_|0)>>>2)<<2);br(_)}_=f[d+8>>2]|0;if(_|0){e=_;do{_=e;e=f[e>>2]|0;br(_)}while((e|0)!=0)}e=f[d>>2]|0;f[d>>2]=0;if(!e){u=c;return}br(e);u=c;return}function sb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;g=u;u=u+80|0;h=g+76|0;i=g+72|0;j=g+48|0;k=g+24|0;l=g;m=a+32|0;n=f[c>>2]|0;c=n+1|0;if((n|0)!=-1){o=((c>>>0)%3|0|0)==0?n+-2|0:c;c=(((n>>>0)%3|0|0)==0?2:-1)+n|0;if((o|0)==-1)p=-1;else p=f[(f[f[m>>2]>>2]|0)+(o<<2)>>2]|0;if((c|0)==-1){q=p;r=-1}else{q=p;r=f[(f[f[m>>2]>>2]|0)+(c<<2)>>2]|0}}else{q=-1;r=-1}c=f[a+36>>2]|0;m=f[c>>2]|0;p=(f[c+4>>2]|0)-m>>2;if(p>>>0<=q>>>0)mq(c);o=m;m=f[o+(q<<2)>>2]|0;if(p>>>0<=r>>>0)mq(c);c=f[o+(r<<2)>>2]|0;r=(m|0)<(e|0);do if(r&(c|0)<(e|0)){o=m<<1;p=f[d+(o<<2)>>2]|0;q=((p|0)<0)<<31>>31;n=f[d+((o|1)<<2)>>2]|0;o=((n|0)<0)<<31>>31;s=c<<1;t=f[d+(s<<2)>>2]|0;v=f[d+((s|1)<<2)>>2]|0;if(!((t|0)!=(p|0)|(v|0)!=(n|0))){f[a+8>>2]=p;f[a+12>>2]=n;u=g;return 1}s=a+4|0;w=f[(f[s>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))y=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else y=w;f[i>>2]=y;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];ub(x,h,w,j)|0;w=f[(f[s>>2]|0)+(m<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))z=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else z=w;f[i>>2]=z;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];ub(x,h,w,k)|0;w=f[(f[s>>2]|0)+(c<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;s=f[a>>2]|0;if(!(b[s+84>>0]|0))A=f[(f[s+68>>2]|0)+(w<<2)>>2]|0;else A=w;f[i>>2]=A;w=b[s+24>>0]|0;f[h>>2]=f[i>>2];ub(s,h,w,l)|0;w=l;s=k;x=f[s>>2]|0;B=f[s+4>>2]|0;s=Vn(f[w>>2]|0,f[w+4>>2]|0,x|0,B|0)|0;w=I;C=l+8|0;D=k+8|0;E=f[D>>2]|0;F=f[D+4>>2]|0;D=Vn(f[C>>2]|0,f[C+4>>2]|0,E|0,F|0)|0;C=I;G=l+16|0;H=k+16|0;J=f[H>>2]|0;K=f[H+4>>2]|0;H=Vn(f[G>>2]|0,f[G+4>>2]|0,J|0,K|0)|0;G=I;L=on(s|0,w|0,s|0,w|0)|0;M=I;N=on(D|0,C|0,D|0,C|0)|0;O=Tn(N|0,I|0,L|0,M|0)|0;M=I;L=on(H|0,G|0,H|0,G|0)|0;N=Tn(O|0,M|0,L|0,I|0)|0;L=I;if((N|0)==0&(L|0)==0)break;M=j;O=Vn(f[M>>2]|0,f[M+4>>2]|0,x|0,B|0)|0;B=I;x=j+8|0;M=Vn(f[x>>2]|0,f[x+4>>2]|0,E|0,F|0)|0;F=I;E=j+16|0;x=Vn(f[E>>2]|0,f[E+4>>2]|0,J|0,K|0)|0;K=I;J=on(O|0,B|0,s|0,w|0)|0;E=I;P=on(M|0,F|0,D|0,C|0)|0;Q=Tn(P|0,I|0,J|0,E|0)|0;E=I;J=on(x|0,K|0,H|0,G|0)|0;P=Tn(Q|0,E|0,J|0,I|0)|0;J=I;E=Vn(t|0,((t|0)<0)<<31>>31|0,p|0,q|0)|0;t=I;Q=Vn(v|0,((v|0)<0)<<31>>31|0,n|0,o|0)|0;v=I;R=on(N|0,L|0,p|0,q|0)|0;q=I;p=on(N|0,L|0,n|0,o|0)|0;o=I;n=on(P|0,J|0,E|0,t|0)|0;S=I;T=on(P|0,J|0,Q|0,v|0)|0;U=I;V=Tn(n|0,S|0,R|0,q|0)|0;q=I;R=Tn(T|0,U|0,p|0,o|0)|0;o=I;p=on(P|0,J|0,s|0,w|0)|0;w=I;s=on(P|0,J|0,D|0,C|0)|0;C=I;D=on(P|0,J|0,H|0,G|0)|0;G=I;H=zk(p|0,w|0,N|0,L|0)|0;w=I;p=zk(s|0,C|0,N|0,L|0)|0;C=I;s=zk(D|0,G|0,N|0,L|0)|0;G=I;D=Vn(O|0,B|0,H|0,w|0)|0;w=I;H=Vn(M|0,F|0,p|0,C|0)|0;C=I;p=Vn(x|0,K|0,s|0,G|0)|0;G=I;s=on(D|0,w|0,D|0,w|0)|0;w=I;D=on(H|0,C|0,H|0,C|0)|0;C=Tn(D|0,I|0,s|0,w|0)|0;w=I;s=on(p|0,G|0,p|0,G|0)|0;G=Tn(C|0,w|0,s|0,I|0)|0;s=I;w=Vn(0,0,E|0,t|0)|0;t=I;E=on(G|0,s|0,N|0,L|0)|0;s=I;switch(E|0){case 0:{if(!s){W=0;X=0}else{Y=1;Z=0;_=E;$=s;aa=23}break}case 1:{if(!s){ba=1;ca=0;aa=24}else{Y=1;Z=0;_=E;$=s;aa=23}break}default:{Y=1;Z=0;_=E;$=s;aa=23}}if((aa|0)==23)while(1){aa=0;G=Rn(Y|0,Z|0,1)|0;C=I;p=_;_=Wn(_|0,$|0,2)|0;if(!($>>>0>0|($|0)==0&p>>>0>7)){ba=G;ca=C;aa=24;break}else{Y=G;Z=C;$=I;aa=23}}if((aa|0)==24)while(1){aa=0;C=up(E|0,s|0,ba|0,ca|0)|0;G=Tn(C|0,I|0,ba|0,ca|0)|0;C=Wn(G|0,I|0,1)|0;G=I;p=on(C|0,G|0,C|0,G|0)|0;D=I;if(D>>>0>s>>>0|(D|0)==(s|0)&p>>>0>E>>>0){ba=C;ca=G;aa=24}else{W=C;X=G;break}}E=on(W|0,X|0,Q|0,v|0)|0;s=I;G=on(W|0,X|0,w|0,t|0)|0;C=I;p=Tn(E|0,s|0,V|0,q|0)|0;D=I;H=Tn(G|0,C|0,R|0,o|0)|0;K=I;x=zk(p|0,D|0,N|0,L|0)|0;D=I;p=zk(H|0,K|0,N|0,L|0)|0;K=I;H=Vn(V|0,q|0,E|0,s|0)|0;s=I;E=Vn(R|0,o|0,G|0,C|0)|0;C=I;G=zk(H|0,s|0,N|0,L|0)|0;s=I;H=zk(E|0,C|0,N|0,L|0)|0;C=I;E=e<<1;F=f[d+(E<<2)>>2]|0;M=((F|0)<0)<<31>>31;B=f[d+((E|1)<<2)>>2]|0;E=((B|0)<0)<<31>>31;O=Vn(F|0,M|0,x|0,D|0)|0;J=I;P=Vn(B|0,E|0,p|0,K|0)|0;U=I;T=on(O|0,J|0,O|0,J|0)|0;J=I;O=on(P|0,U|0,P|0,U|0)|0;U=Tn(O|0,I|0,T|0,J|0)|0;J=I;T=Vn(F|0,M|0,G|0,s|0)|0;M=I;F=Vn(B|0,E|0,H|0,C|0)|0;E=I;B=on(T|0,M|0,T|0,M|0)|0;M=I;T=on(F|0,E|0,F|0,E|0)|0;E=Tn(T|0,I|0,B|0,M|0)|0;M=I;B=a+16|0;T=a+20|0;F=f[T>>2]|0;O=f[a+24>>2]|0;P=(F|0)==(O<<5|0);if(J>>>0>>0|(J|0)==(M|0)&U>>>0>>0){do if(P)if((F+1|0)<0)mq(B);else{E=O<<6;U=F+32&-32;hi(B,F>>>0<1073741823?(E>>>0>>0?U:E):2147483647);da=f[T>>2]|0;break}else da=F;while(0);f[T>>2]=da+1;L=(f[B>>2]|0)+(da>>>5<<2)|0;f[L>>2]=f[L>>2]|1<<(da&31);ea=x;fa=p;ga=K;ha=D}else{do if(P)if((F+1|0)<0)mq(B);else{L=O<<6;N=F+32&-32;hi(B,F>>>0<1073741823?(L>>>0>>0?N:L):2147483647);ia=f[T>>2]|0;break}else ia=F;while(0);f[T>>2]=ia+1;F=(f[B>>2]|0)+(ia>>>5<<2)|0;f[F>>2]=f[F>>2]&~(1<<(ia&31));ea=G;fa=H;ga=C;ha=s}f[a+8>>2]=ea;f[a+12>>2]=fa;u=g;return 1}while(0);do if(r)ja=m<<1;else{if((e|0)>0){ja=(e<<1)+-2|0;break}fa=a+8|0;f[fa>>2]=0;f[fa+4>>2]=0;u=g;return 1}while(0);f[a+8>>2]=f[d+(ja<<2)>>2];f[a+12>>2]=f[d+(ja+1<<2)>>2];u=g;return 1}function tb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;g=u;u=u+80|0;h=g+76|0;i=g+72|0;j=g+48|0;k=g+24|0;l=g;m=a+32|0;n=f[c>>2]|0;c=n+1|0;do if((n|0)!=-1){o=((c>>>0)%3|0|0)==0?n+-2|0:c;if(!((n>>>0)%3|0)){p=n+2|0;q=o;break}else{p=n+-1|0;q=o;break}}else{p=-1;q=-1}while(0);n=f[(f[m>>2]|0)+28>>2]|0;m=f[n+(q<<2)>>2]|0;q=f[n+(p<<2)>>2]|0;p=f[a+36>>2]|0;n=f[p>>2]|0;c=(f[p+4>>2]|0)-n>>2;if(c>>>0<=m>>>0)mq(p);o=n;n=f[o+(m<<2)>>2]|0;if(c>>>0<=q>>>0)mq(p);p=f[o+(q<<2)>>2]|0;q=(n|0)<(e|0);do if(q&(p|0)<(e|0)){o=n<<1;c=f[d+(o<<2)>>2]|0;m=((c|0)<0)<<31>>31;r=f[d+((o|1)<<2)>>2]|0;o=((r|0)<0)<<31>>31;s=p<<1;t=f[d+(s<<2)>>2]|0;v=f[d+((s|1)<<2)>>2]|0;if(!((t|0)!=(c|0)|(v|0)!=(r|0))){f[a+8>>2]=c;f[a+12>>2]=r;u=g;return 1}s=a+4|0;w=f[(f[s>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))y=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else y=w;f[i>>2]=y;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];ub(x,h,w,j)|0;w=f[(f[s>>2]|0)+(n<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))z=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else z=w;f[i>>2]=z;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];ub(x,h,w,k)|0;w=f[(f[s>>2]|0)+(p<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;s=f[a>>2]|0;if(!(b[s+84>>0]|0))A=f[(f[s+68>>2]|0)+(w<<2)>>2]|0;else A=w;f[i>>2]=A;w=b[s+24>>0]|0;f[h>>2]=f[i>>2];ub(s,h,w,l)|0;w=l;s=k;x=f[s>>2]|0;B=f[s+4>>2]|0;s=Vn(f[w>>2]|0,f[w+4>>2]|0,x|0,B|0)|0;w=I;C=l+8|0;D=k+8|0;E=f[D>>2]|0;F=f[D+4>>2]|0;D=Vn(f[C>>2]|0,f[C+4>>2]|0,E|0,F|0)|0;C=I;G=l+16|0;H=k+16|0;J=f[H>>2]|0;K=f[H+4>>2]|0;H=Vn(f[G>>2]|0,f[G+4>>2]|0,J|0,K|0)|0;G=I;L=on(s|0,w|0,s|0,w|0)|0;M=I;N=on(D|0,C|0,D|0,C|0)|0;O=Tn(N|0,I|0,L|0,M|0)|0;M=I;L=on(H|0,G|0,H|0,G|0)|0;N=Tn(O|0,M|0,L|0,I|0)|0;L=I;if((N|0)==0&(L|0)==0)break;M=j;O=Vn(f[M>>2]|0,f[M+4>>2]|0,x|0,B|0)|0;B=I;x=j+8|0;M=Vn(f[x>>2]|0,f[x+4>>2]|0,E|0,F|0)|0;F=I;E=j+16|0;x=Vn(f[E>>2]|0,f[E+4>>2]|0,J|0,K|0)|0;K=I;J=on(O|0,B|0,s|0,w|0)|0;E=I;P=on(M|0,F|0,D|0,C|0)|0;Q=Tn(P|0,I|0,J|0,E|0)|0;E=I;J=on(x|0,K|0,H|0,G|0)|0;P=Tn(Q|0,E|0,J|0,I|0)|0;J=I;E=Vn(t|0,((t|0)<0)<<31>>31|0,c|0,m|0)|0;t=I;Q=Vn(v|0,((v|0)<0)<<31>>31|0,r|0,o|0)|0;v=I;R=on(N|0,L|0,c|0,m|0)|0;m=I;c=on(N|0,L|0,r|0,o|0)|0;o=I;r=on(P|0,J|0,E|0,t|0)|0;S=I;T=on(P|0,J|0,Q|0,v|0)|0;U=I;V=Tn(r|0,S|0,R|0,m|0)|0;m=I;R=Tn(T|0,U|0,c|0,o|0)|0;o=I;c=on(P|0,J|0,s|0,w|0)|0;w=I;s=on(P|0,J|0,D|0,C|0)|0;C=I;D=on(P|0,J|0,H|0,G|0)|0;G=I;H=zk(c|0,w|0,N|0,L|0)|0;w=I;c=zk(s|0,C|0,N|0,L|0)|0;C=I;s=zk(D|0,G|0,N|0,L|0)|0;G=I;D=Vn(O|0,B|0,H|0,w|0)|0;w=I;H=Vn(M|0,F|0,c|0,C|0)|0;C=I;c=Vn(x|0,K|0,s|0,G|0)|0;G=I;s=on(D|0,w|0,D|0,w|0)|0;w=I;D=on(H|0,C|0,H|0,C|0)|0;C=Tn(D|0,I|0,s|0,w|0)|0;w=I;s=on(c|0,G|0,c|0,G|0)|0;G=Tn(C|0,w|0,s|0,I|0)|0;s=I;w=Vn(0,0,E|0,t|0)|0;t=I;E=on(G|0,s|0,N|0,L|0)|0;s=I;switch(E|0){case 0:{if(!s){W=0;X=0}else{Y=1;Z=0;_=E;$=s;aa=22}break}case 1:{if(!s){ba=1;ca=0;aa=23}else{Y=1;Z=0;_=E;$=s;aa=22}break}default:{Y=1;Z=0;_=E;$=s;aa=22}}if((aa|0)==22)while(1){aa=0;G=Rn(Y|0,Z|0,1)|0;C=I;c=_;_=Wn(_|0,$|0,2)|0;if(!($>>>0>0|($|0)==0&c>>>0>7)){ba=G;ca=C;aa=23;break}else{Y=G;Z=C;$=I;aa=22}}if((aa|0)==23)while(1){aa=0;C=up(E|0,s|0,ba|0,ca|0)|0;G=Tn(C|0,I|0,ba|0,ca|0)|0;C=Wn(G|0,I|0,1)|0;G=I;c=on(C|0,G|0,C|0,G|0)|0;D=I;if(D>>>0>s>>>0|(D|0)==(s|0)&c>>>0>E>>>0){ba=C;ca=G;aa=23}else{W=C;X=G;break}}E=on(W|0,X|0,Q|0,v|0)|0;s=I;G=on(W|0,X|0,w|0,t|0)|0;C=I;c=Tn(E|0,s|0,V|0,m|0)|0;D=I;H=Tn(G|0,C|0,R|0,o|0)|0;K=I;x=zk(c|0,D|0,N|0,L|0)|0;D=I;c=zk(H|0,K|0,N|0,L|0)|0;K=I;H=Vn(V|0,m|0,E|0,s|0)|0;s=I;E=Vn(R|0,o|0,G|0,C|0)|0;C=I;G=zk(H|0,s|0,N|0,L|0)|0;s=I;H=zk(E|0,C|0,N|0,L|0)|0;C=I;E=e<<1;F=f[d+(E<<2)>>2]|0;M=((F|0)<0)<<31>>31;B=f[d+((E|1)<<2)>>2]|0;E=((B|0)<0)<<31>>31;O=Vn(F|0,M|0,x|0,D|0)|0;J=I;P=Vn(B|0,E|0,c|0,K|0)|0;U=I;T=on(O|0,J|0,O|0,J|0)|0;J=I;O=on(P|0,U|0,P|0,U|0)|0;U=Tn(O|0,I|0,T|0,J|0)|0;J=I;T=Vn(F|0,M|0,G|0,s|0)|0;M=I;F=Vn(B|0,E|0,H|0,C|0)|0;E=I;B=on(T|0,M|0,T|0,M|0)|0;M=I;T=on(F|0,E|0,F|0,E|0)|0;E=Tn(T|0,I|0,B|0,M|0)|0;M=I;B=a+16|0;T=a+20|0;F=f[T>>2]|0;O=f[a+24>>2]|0;P=(F|0)==(O<<5|0);if(J>>>0>>0|(J|0)==(M|0)&U>>>0>>0){do if(P)if((F+1|0)<0)mq(B);else{E=O<<6;U=F+32&-32;hi(B,F>>>0<1073741823?(E>>>0>>0?U:E):2147483647);da=f[T>>2]|0;break}else da=F;while(0);f[T>>2]=da+1;L=(f[B>>2]|0)+(da>>>5<<2)|0;f[L>>2]=f[L>>2]|1<<(da&31);ea=x;fa=c;ga=K;ha=D}else{do if(P)if((F+1|0)<0)mq(B);else{L=O<<6;N=F+32&-32;hi(B,F>>>0<1073741823?(L>>>0>>0?N:L):2147483647);ia=f[T>>2]|0;break}else ia=F;while(0);f[T>>2]=ia+1;F=(f[B>>2]|0)+(ia>>>5<<2)|0;f[F>>2]=f[F>>2]&~(1<<(ia&31));ea=G;fa=H;ga=C;ha=s}f[a+8>>2]=ea;f[a+12>>2]=fa;u=g;return 1}while(0);do if(q)ja=n<<1;else{if((e|0)>0){ja=(e<<1)+-2|0;break}fa=a+8|0;f[fa>>2]=0;f[fa+4>>2]=0;u=g;return 1}while(0);f[a+8>>2]=f[d+(ja<<2)>>2];f[a+12>>2]=f[d+(ja+1<<2)>>2];u=g;return 1}function ub(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=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=Oa,D=0,E=0.0,F=0,G=0;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){m=b[o>>0]|0;q=g+(r<<3)|0;f[q>>2]=m;f[q+4>>2]=((m|0)<0)<<31>>31;r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<3)|0,0,(e<<24>>24)-o<<3|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=g+(t<<3)|0;f[k>>2]=h[m>>0];f[k+4>>2]=0;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<3)|0,0,(e<<24>>24)-m<<3|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){o=d[l>>1]|0;k=g+(q<<3)|0;f[k>>2]=o;f[k+4>>2]=((o|0)<0)<<31>>31;q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<3)|0,0,(e<<24>>24)-l<<3|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){m=g+(k<<3)|0;f[m>>2]=j[r>>1];f[m+4>>2]=0;k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<3)|0,0,(e<<24>>24)-r<<3|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=on(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Tn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){l=f[t>>2]|0;m=g+(o<<3)|0;f[m>>2]=l;f[m+4>>2]=((l|0)<0)<<31>>31;o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(t<<3)|0,0,(e<<24>>24)-t<<3|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=on(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Tn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){r=g+(m<<3)|0;f[r>>2]=f[q>>2];f[r+4>>2]=0;m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(q<<3)|0,0,(e<<24>>24)-q<<3|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=on(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Tn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){t=k;r=f[t+4>>2]|0;z=g+(l<<3)|0;f[z>>2]=f[t>>2];f[z+4>>2]=r;l=l+1|0;r=b[q>>0]|0;if((l|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){A=r;break}else k=k+8|0}}else A=m;k=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(k<<3)|0,0,(e<<24>>24)-k<<3|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;r=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;z=Tn(r|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+z|0;z=0;while(1){q=o;r=f[q+4>>2]|0;t=g+(z<<3)|0;f[t>>2]=f[q>>2];f[t+4>>2]=r;z=z+1|0;r=b[k>>0]|0;if((z|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){B=r;break}else o=o+8|0}}else B=l;o=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<3)|0,0,(e<<24>>24)-o<<3|0)|0;i=1;return i|0}case 9:{o=a+24|0;z=b[o>>0]|0;if((z<<24>>24>e<<24>>24?e:z)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;r=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(r|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){C=$(n[m>>2]);k=+K(+C)>=1.0?(+C>0.0?~~+Y(+J(+C/4294967296.0),4294967295.0)>>>0:~~+W((+C-+(~~+C>>>0))/4294967296.0)>>>0):0;r=g+(t<<3)|0;f[r>>2]=~~+C>>>0;f[r+4>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){D=k;break}else m=m+4|0}}else D=z;m=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<3)|0,0,(e<<24>>24)-m<<3|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;r=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+r|0;r=0;while(1){E=+p[l>>3];o=+K(E)>=1.0?(E>0.0?~~+Y(+J(E/4294967296.0),4294967295.0)>>>0:~~+W((E-+(~~E>>>0))/4294967296.0)>>>0):0;k=g+(r<<3)|0;f[k>>2]=~~E>>>0;f[k+4>>2]=o;r=r+1|0;o=b[m>>0]|0;if((r|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){F=o;break}else l=l+8|0}}else F=t;l=F<<24>>24;if(F<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<3)|0,0,(e<<24>>24)-l<<3|0)|0;i=1;return i|0}case 11:{l=a+24|0;r=b[l>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){m=f[f[a>>2]>>2]|0;z=a+40|0;o=on(f[z>>2]|0,f[z+4>>2]|0,f[c>>2]|0,0)|0;z=a+48|0;k=Tn(o|0,I|0,f[z>>2]|0,f[z+4>>2]|0)|0;z=m+k|0;k=0;while(1){m=g+(k<<3)|0;f[m>>2]=h[z>>0];f[m+4>>2]=0;k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){G=m;break}else z=z+1|0}}else G=r;z=G<<24>>24;if(G<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(z<<3)|0,0,(e<<24>>24)-z<<3|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function vb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,Q=0,R=0;c=u;u=u+16|0;d=c+8|0;e=c;if((f[a+92>>2]|0)==(f[a+88>>2]|0)){u=c;return 1}g=a+52|0;h=f[g>>2]|0;if((h|0)==(f[a+56>>2]|0)){Ci(a+48|0,b);i=b}else{f[h>>2]=f[b>>2];f[g>>2]=h+4;i=b}b=a+84|0;f[b>>2]=0;h=a+4|0;g=f[h>>2]|0;j=f[i>>2]|0;k=j+1|0;if((j|0)!=-1){l=((k>>>0)%3|0|0)==0?j+-2|0:k;if((l|0)==-1)m=-1;else m=f[(f[g>>2]|0)+(l<<2)>>2]|0;l=(((j>>>0)%3|0|0)==0?2:-1)+j|0;if((l|0)==-1){n=m;o=-1}else{n=m;o=f[(f[g>>2]|0)+(l<<2)>>2]|0}}else{n=-1;o=-1}l=a+36|0;g=f[l>>2]|0;m=g+(n>>>5<<2)|0;j=1<<(n&31);k=f[m>>2]|0;if(!(k&j)){f[m>>2]=k|j;j=f[i>>2]|0;k=j+1|0;if((j|0)==-1)p=-1;else p=((k>>>0)%3|0|0)==0?j+-2|0:k;f[e>>2]=p;k=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((p>>>0)/3|0)*12|0)+(((p>>>0)%3|0)<<2)>>2]|0;p=f[a+20>>2]|0;f[d>>2]=k;j=f[p+4>>2]|0;p=j+4|0;m=f[p>>2]|0;if((m|0)==(f[j+8>>2]|0))Ci(j,d);else{f[m>>2]=k;f[p>>2]=m+4}m=a+12|0;p=f[m>>2]|0;k=p+4|0;j=f[k>>2]|0;if((j|0)==(f[p+8>>2]|0)){Ci(p,e);q=f[m>>2]|0}else{f[j>>2]=f[e>>2];f[k>>2]=j+4;q=p}p=q+24|0;f[(f[q+12>>2]|0)+(n<<2)>>2]=f[p>>2];f[p>>2]=(f[p>>2]|0)+1;r=f[l>>2]|0}else r=g;g=r+(o>>>5<<2)|0;r=1<<(o&31);p=f[g>>2]|0;if(!(p&r)){f[g>>2]=p|r;r=f[i>>2]|0;do if((r|0)!=-1)if(!((r>>>0)%3|0)){s=r+2|0;break}else{s=r+-1|0;break}else s=-1;while(0);f[e>>2]=s;r=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((s>>>0)/3|0)*12|0)+(((s>>>0)%3|0)<<2)>>2]|0;s=f[a+20>>2]|0;f[d>>2]=r;p=f[s+4>>2]|0;s=p+4|0;g=f[s>>2]|0;if((g|0)==(f[p+8>>2]|0))Ci(p,d);else{f[g>>2]=r;f[s>>2]=g+4}g=a+12|0;s=f[g>>2]|0;r=s+4|0;p=f[r>>2]|0;if((p|0)==(f[s+8>>2]|0)){Ci(s,e);t=f[g>>2]|0}else{f[p>>2]=f[e>>2];f[r>>2]=p+4;t=s}s=t+24|0;f[(f[t+12>>2]|0)+(o<<2)>>2]=f[s>>2];f[s>>2]=(f[s>>2]|0)+1}s=f[i>>2]|0;if((s|0)==-1)v=-1;else v=f[(f[f[h>>2]>>2]|0)+(s<<2)>>2]|0;s=(f[l>>2]|0)+(v>>>5<<2)|0;o=1<<(v&31);t=f[s>>2]|0;if(!(o&t)){f[s>>2]=t|o;o=f[i>>2]|0;f[e>>2]=o;t=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((o>>>0)/3|0)*12|0)+(((o>>>0)%3|0)<<2)>>2]|0;o=f[a+20>>2]|0;f[d>>2]=t;s=f[o+4>>2]|0;o=s+4|0;p=f[o>>2]|0;if((p|0)==(f[s+8>>2]|0))Ci(s,d);else{f[p>>2]=t;f[o>>2]=p+4}p=a+12|0;o=f[p>>2]|0;t=o+4|0;s=f[t>>2]|0;if((s|0)==(f[o+8>>2]|0)){Ci(o,e);w=f[p>>2]|0}else{f[s>>2]=f[e>>2];f[t>>2]=s+4;w=o}o=w+24|0;f[(f[w+12>>2]|0)+(v<<2)>>2]=f[o>>2];f[o>>2]=(f[o>>2]|0)+1}o=f[b>>2]|0;a:do if((o|0)<3){v=a+24|0;w=a+16|0;s=a+20|0;t=a+12|0;p=a+88|0;r=o;while(1){g=r;while(1){x=a+48+(g*12|0)+4|0;y=f[x>>2]|0;if((f[a+48+(g*12|0)>>2]|0)!=(y|0))break;if((g|0)<2)g=g+1|0;else break a}n=y+-4|0;q=f[n>>2]|0;f[x>>2]=n;f[b>>2]=g;f[i>>2]=q;if((q|0)==-1)break;n=(q>>>0)/3|0;j=f[v>>2]|0;do if(!(f[j+(n>>>5<<2)>>2]&1<<(n&31))){k=q;m=j;b:while(1){z=(k>>>0)/3|0;A=m+(z>>>5<<2)|0;f[A>>2]=1<<(z&31)|f[A>>2];A=f[i>>2]|0;if((A|0)==-1)B=-1;else B=f[(f[f[h>>2]>>2]|0)+(A<<2)>>2]|0;z=(f[l>>2]|0)+(B>>>5<<2)|0;C=1<<(B&31);D=f[z>>2]|0;if(!(C&D)){f[z>>2]=D|C;C=f[i>>2]|0;f[e>>2]=C;D=f[(f[(f[w>>2]|0)+96>>2]|0)+(((C>>>0)/3|0)*12|0)+(((C>>>0)%3|0)<<2)>>2]|0;C=f[s>>2]|0;f[d>>2]=D;z=f[C+4>>2]|0;C=z+4|0;E=f[C>>2]|0;if((E|0)==(f[z+8>>2]|0))Ci(z,d);else{f[E>>2]=D;f[C>>2]=E+4}E=f[t>>2]|0;C=E+4|0;D=f[C>>2]|0;if((D|0)==(f[E+8>>2]|0)){Ci(E,e);F=f[t>>2]|0}else{f[D>>2]=f[e>>2];f[C>>2]=D+4;F=E}E=F+24|0;f[(f[F+12>>2]|0)+(B<<2)>>2]=f[E>>2];f[E>>2]=(f[E>>2]|0)+1;G=f[i>>2]|0}else G=A;A=f[h>>2]|0;if((G|0)==-1){H=93;break}E=G+1|0;D=((E>>>0)%3|0|0)==0?G+-2|0:E;if((D|0)==-1)I=-1;else I=f[(f[A+12>>2]|0)+(D<<2)>>2]|0;D=(((G>>>0)%3|0|0)==0?2:-1)+G|0;if((D|0)==-1)J=-1;else J=f[(f[A+12>>2]|0)+(D<<2)>>2]|0;D=(I|0)==-1;E=D?-1:(I>>>0)/3|0;C=(J|0)==-1;z=C?-1:(J>>>0)/3|0;if(D)K=1;else K=(f[(f[v>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)!=0;do if(C)if(K){H=93;break b}else H=82;else{if(f[(f[v>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)if(K){H=93;break b}else{H=82;break}E=f[(f[A>>2]|0)+(J<<2)>>2]|0;if(!(1<<(E&31)&f[(f[l>>2]|0)+(E>>>5<<2)>>2])){L=(f[p>>2]|0)+(E<<2)|0;E=f[L>>2]|0;f[L>>2]=E+1;M=(E|0)>0?1:2}else M=0;if(K?(M|0)<=(f[b>>2]|0):0){N=J;break}f[d>>2]=J;E=a+48+(M*12|0)+4|0;L=f[E>>2]|0;if((L|0)==(f[a+48+(M*12|0)+8>>2]|0))Ci(a+48+(M*12|0)|0,d);else{f[L>>2]=J;f[E>>2]=L+4}if((f[b>>2]|0)>(M|0))f[b>>2]=M;if(K){H=93;break b}else H=82}while(0);if((H|0)==82){H=0;if(D)O=-1;else O=f[(f[f[h>>2]>>2]|0)+(I<<2)>>2]|0;if(!(1<<(O&31)&f[(f[l>>2]|0)+(O>>>5<<2)>>2])){A=(f[p>>2]|0)+(O<<2)|0;z=f[A>>2]|0;f[A>>2]=z+1;P=(z|0)>0?1:2}else P=0;if((P|0)>(f[b>>2]|0))break;else N=I}f[i>>2]=N;k=N;m=f[v>>2]|0}if((H|0)==93){H=0;Q=f[b>>2]|0;break}f[d>>2]=I;m=a+48+(P*12|0)+4|0;k=f[m>>2]|0;if((k|0)==(f[a+48+(P*12|0)+8>>2]|0))Ci(a+48+(P*12|0)|0,d);else{f[k>>2]=I;f[m>>2]=k+4}k=f[b>>2]|0;if((k|0)>(P|0)){f[b>>2]=P;R=P}else R=k;Q=R}else Q=g;while(0);if((Q|0)<3)r=Q;else break a}u=c;return 1}while(0);f[i>>2]=-1;u=c;return 1}function wb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}wb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;wb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function xb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}xb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;xb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}yb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;yb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function zb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}zb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;zb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Ab(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Ab(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Ab(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}} -function Bb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Bb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Bb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Cb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Cb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Cb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Db(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Db(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Db(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Eb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Eb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Eb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Fb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Fb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Fb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Gb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Gb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Gb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Hb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Hb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Hb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Ib(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Ib(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Jb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Jb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Jb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Kb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Kb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Kb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Lb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Lb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Lb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Mb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Mb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=Tf(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Cg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=Qd(h,Y,c)|0;j=Y+4|0;if(Qd(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Nb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Nb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)mq(d);_=$;if(i>>>0<=Y>>>0)mq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Cg(h,h+4|0,e,c)|0;return}case 12:{Qg(h,h+4|0,h+8|0,e,c)|0;return}case 13:{Tf(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{Pg(h,a,c);return}case 20:{mq(p);break}case 22:{mq(p);break}case 26:{mq(p);break}case 32:{mq(p);break}case 38:{mq(A);break}case 40:{mq(A);break}case 46:{mq(A);break}case 47:{mq(A);break}case 51:{mq(p);break}case 57:{mq(R);break}case 59:{mq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)mq(S);else mq(S);break}case 66:{mq(S);break}case 72:{mq(Z);break}case 74:{mq(Z);break}case 84:return}}function Ob(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=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;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){f[g+(r<<2)>>2]=b[o>>0];r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){f[g+(t<<2)>>2]=h[m>>0];t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=d[l>>1];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=j[r>>1];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=on(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Tn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){f[g+(o<<2)>>2]=f[t>>2];o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(t<<2)|0,0,(e<<24>>24)-t<<2|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=on(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Tn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){f[g+(m<<2)>>2]=f[q>>2];m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(q<<2)|0,0,(e<<24>>24)-q<<2|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=on(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Tn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){f[g+(l<<2)>>2]=f[k>>2];l=l+1|0;t=b[q>>0]|0;if((l|0)>=((t<<24>>24>e<<24>>24?e:t)<<24>>24|0)){z=t;break}else k=k+8|0}}else z=m;k=z<<24>>24;if(z<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(k<<2)|0,0,(e<<24>>24)-k<<2|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;t=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(t|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+r|0;r=0;while(1){f[g+(r<<2)>>2]=f[o>>2];r=r+1|0;q=b[k>>0]|0;if((r|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){A=q;break}else o=o+8|0}}else A=l;o=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 9:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=~~$(n[m>>2])>>>0;f[g+(t<<2)>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){B=k;break}else m=m+4|0}}else B=r;m=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=~~+p[l>>3]>>>0;q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){C=o;break}else l=l+8|0}}else C=t;l=C<<24>>24;if(C<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 11:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=h[r>>0];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){D=m;break}else r=r+1|0}}else D=q;r=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function Pb(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=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;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){f[g+(r<<2)>>2]=b[o>>0];r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){f[g+(t<<2)>>2]=h[m>>0];t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=d[l>>1];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=j[r>>1];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=on(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Tn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){f[g+(o<<2)>>2]=f[t>>2];o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(t<<2)|0,0,(e<<24>>24)-t<<2|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=on(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Tn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){f[g+(m<<2)>>2]=f[q>>2];m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(q<<2)|0,0,(e<<24>>24)-q<<2|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=on(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Tn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){f[g+(l<<2)>>2]=f[k>>2];l=l+1|0;t=b[q>>0]|0;if((l|0)>=((t<<24>>24>e<<24>>24?e:t)<<24>>24|0)){z=t;break}else k=k+8|0}}else z=m;k=z<<24>>24;if(z<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(k<<2)|0,0,(e<<24>>24)-k<<2|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;t=on(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Tn(t|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+r|0;r=0;while(1){f[g+(r<<2)>>2]=f[o>>2];r=r+1|0;q=b[k>>0]|0;if((r|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){A=q;break}else o=o+8|0}}else A=l;o=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 9:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=on(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Tn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=~~$(n[m>>2]);f[g+(t<<2)>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){B=k;break}else m=m+4|0}}else B=r;m=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=on(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Tn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=~~+p[l>>3];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){C=o;break}else l=l+8|0}}else C=t;l=C<<24>>24;if(C<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 11:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=on(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Tn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=h[r>>0];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){D=m;break}else r=r+1|0}}else D=q;r=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}hj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function Qb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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=Oa,J=0,K=0,L=0,M=0,N=Oa;e=u;u=u+48|0;g=e+36|0;h=e+24|0;i=e+12|0;j=e;if(!(ih(a,c,d)|0)){k=0;u=e;return k|0}l=f[(f[(f[c+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;if((f[l+28>>2]|0)!=9){k=0;u=e;return k|0}m=c+48|0;c=f[m>>2]|0;o=dn(32)|0;f[g>>2]=o;f[g+8>>2]=-2147483616;f[g+4>>2]=17;p=o;q=12932;r=p+17|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[o+17>>0]=0;o=c+16|0;s=f[o>>2]|0;if(s){t=o;v=s;a:while(1){s=v;while(1){if((f[s+16>>2]|0)>=(d|0))break;w=f[s+4>>2]|0;if(!w){x=t;break a}else s=w}v=f[s>>2]|0;if(!v){x=s;break}else t=s}if(((x|0)!=(o|0)?(f[x+16>>2]|0)<=(d|0):0)?(o=x+20|0,(sh(o,g)|0)!=0):0)y=yk(o,g,-1)|0;else z=12}else z=12;if((z|0)==12)y=yk(c,g,-1)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if((y|0)<1){k=0;u=e;return k|0}c=f[m>>2]|0;o=dn(32)|0;f[g>>2]=o;f[g+8>>2]=-2147483616;f[g+4>>2]=19;p=o;q=13005;r=p+19|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[o+19>>0]=0;o=c+16|0;x=f[o>>2]|0;if(x){t=o;v=x;b:while(1){x=v;while(1){if((f[x+16>>2]|0)>=(d|0))break;w=f[x+4>>2]|0;if(!w){A=t;break b}else x=w}v=f[x>>2]|0;if(!v){A=x;break}else t=x}if((A|0)!=(o|0)?(f[A+16>>2]|0)<=(d|0):0)B=A+20|0;else z=24}else z=24;if((z|0)==24)B=c;if(!(sh(B,g)|0))C=0;else{B=f[m>>2]|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;c=dn(32)|0;f[h>>2]=c;f[h+8>>2]=-2147483616;f[h+4>>2]=18;p=c;q=13025;r=p+18|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[c+18>>0]=0;c=B+16|0;A=f[c>>2]|0;if(A){o=c;t=A;c:while(1){A=t;while(1){if((f[A+16>>2]|0)>=(d|0))break;v=f[A+4>>2]|0;if(!v){D=o;break c}else A=v}t=f[A>>2]|0;if(!t){D=A;break}else o=A}if((D|0)!=(c|0)?(f[D+16>>2]|0)<=(d|0):0)E=D+20|0;else z=34}else z=34;if((z|0)==34)E=B;B=(sh(E,h)|0)!=0;if((b[h+11>>0]|0)<0)br(f[h>>2]|0);C=B}if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if(!C){Kd(a+40|0,l,y)|0;k=1;u=e;return k|0}C=l+24|0;l=b[C>>0]|0;B=l<<24>>24;f[i>>2]=0;E=i+4|0;f[E>>2]=0;f[i+8>>2]=0;do if(l<<24>>24)if(l<<24>>24<0)mq(i);else{D=B<<2;c=dn(D)|0;f[i>>2]=c;o=c+(B<<2)|0;f[i+8>>2]=o;hj(c|0,0,D|0)|0;f[E>>2]=o;F=c;break}else F=0;while(0);B=f[m>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;l=dn(32)|0;f[j>>2]=l;f[j+8>>2]=-2147483616;f[j+4>>2]=19;p=l;q=13005;r=p+19|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[l+19>>0]=0;l=b[C>>0]|0;c=l<<24>>24;o=B+16|0;D=f[o>>2]|0;if(D){t=o;x=D;d:while(1){D=x;while(1){if((f[D+16>>2]|0)>=(d|0))break;v=f[D+4>>2]|0;if(!v){G=t;break d}else D=v}x=f[D>>2]|0;if(!x){G=D;break}else t=D}if(((G|0)!=(o|0)?(f[G+16>>2]|0)<=(d|0):0)?(o=G+20|0,(sh(o,j)|0)!=0):0){t=zg(o,j)|0;if((t|0)!=(G+24|0)){dj(g,t+28|0);t=g+11|0;G=b[t>>0]|0;o=G<<24>>24<0;if(!((o?f[g+4>>2]|0:G&255)|0))H=G;else{if(l<<24>>24>0){x=o?f[g>>2]|0:g;o=0;do{I=$(pq(x,h));A=x;x=f[h>>2]|0;if((A|0)==(x|0))break;n[F+(o<<2)>>2]=I;o=o+1|0}while((o|0)<(c|0));J=b[t>>0]|0}else J=G;H=J}if(H<<24>>24<0)br(f[g>>2]|0)}}else z=64}else z=64;if((z|0)==64?(H=zg(B,j)|0,(H|0)!=(B+4|0)):0){dj(g,H+28|0);H=g+11|0;B=b[H>>0]|0;J=B<<24>>24<0;if(!((J?f[g+4>>2]|0:B&255)|0))K=B;else{if(l<<24>>24>0){l=J?f[g>>2]|0:g;J=0;do{I=$(pq(l,h));G=l;l=f[h>>2]|0;if((G|0)==(l|0))break;n[F+(J<<2)>>2]=I;J=J+1|0}while((J|0)<(c|0));L=b[H>>0]|0}else L=B;K=L}if(K<<24>>24<0)br(f[g>>2]|0)}if((b[j+11>>0]|0)<0)br(f[j>>2]|0);j=f[m>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;m=dn(32)|0;f[g>>2]=m;f[g+8>>2]=-2147483616;f[g+4>>2]=18;p=m;q=13025;r=p+18|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[m+18>>0]=0;m=j+16|0;q=f[m>>2]|0;if(q){p=m;r=q;e:while(1){q=r;while(1){if((f[q+16>>2]|0)>=(d|0))break;K=f[q+4>>2]|0;if(!K){M=p;break e}else q=K}r=f[q>>2]|0;if(!r){M=q;break}else p=q}if(((M|0)!=(m|0)?(f[M+16>>2]|0)<=(d|0):0)?(d=M+20|0,(sh(d,g)|0)!=0):0)N=$(kk(d,g,$(1.0)));else z=86}else z=86;if((z|0)==86)N=$(kk(j,g,$(1.0)));if((b[g+11>>0]|0)<0)br(f[g>>2]|0);wl(a+40|0,y,f[i>>2]|0,b[C>>0]|0,N);C=f[i>>2]|0;if(C|0){i=f[E>>2]|0;if((i|0)!=(C|0))f[E>>2]=i+(~((i+-4-C|0)>>>2)<<2);br(C)}k=1;u=e;return k|0}function Rb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;e=u;u=u+64|0;d=e+48|0;h=e+36|0;i=e+24|0;j=e+16|0;k=e+8|0;l=e;m=e+32|0;n=a+60|0;f[a+68>>2]=g;g=a+108|0;lk(g);o=a+56|0;p=f[o>>2]|0;q=(f[p+4>>2]|0)-(f[p>>2]|0)|0;r=q>>2;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;s=i;f[s>>2]=0;f[s+4>>2]=0;s=j;f[s>>2]=0;f[s+4>>2]=0;s=k;f[s>>2]=0;f[s+4>>2]=0;s=l;f[s>>2]=0;f[s+4>>2]=0;if((q|0)<=0){u=e;return 1}q=h+4|0;s=h+8|0;t=a+104|0;v=i+4|0;w=a+100|0;x=j+4|0;y=a+8|0;z=a+16|0;A=a+32|0;B=a+12|0;C=a+28|0;D=a+20|0;E=a+24|0;F=a+96|0;a=k+4|0;G=l+4|0;H=f[p>>2]|0;if((f[p+4>>2]|0)==(H|0)){J=p;mq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];fc(n,d,h);H=f[h>>2]|0;p=(H|0)>-1?H:0-H|0;M=f[q>>2]|0;N=(M|0)>-1?M:0-M|0;O=Tn(N|0,((N|0)<0)<<31>>31|0,p|0,((p|0)<0)<<31>>31|0)|0;p=f[s>>2]|0;N=(p|0)>-1;P=N?p:0-p|0;p=Tn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((p|0)==0&(P|0)==0){O=f[t>>2]|0;Q=O;R=h;S=M;T=O}else{O=f[t>>2]|0;U=((O|0)<0)<<31>>31;V=on(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=zk(V|0,I|0,p|0,P|0)|0;f[h>>2]=H;V=on(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=zk(V|0,I|0,p|0,P|0)|0;f[q>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=s;S=M;T=O}f[R>>2]=Q;O=f[h>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[s>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[s>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[s>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){p=(N|0)==(Z|0);if(!(P&p)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(p&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);f[i>>2]=$;f[v>>2]=aa;P=0-S|0;M=0-_|0;f[h>>2]=0-O;f[q>>2]=P;f[s>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(p=(N|0)==(ca|0),!(M&p)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(p&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);f[j>>2]=da;f[x>>2]=ea;N=K<<1;M=b+(N<<2)|0;H=f[y>>2]|0;if((H|0)>0){O=0;P=i;p=H;while(1){if((p|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;U=f[z>>2]|0;if((V|0)>(U|0)){fa=f[A>>2]|0;f[fa+(H<<2)>>2]=U;ga=fa}else{fa=f[B>>2]|0;U=f[A>>2]|0;f[U+(H<<2)>>2]=(V|0)<(fa|0)?fa:V;ga=U}H=H+1|0;U=f[y>>2]|0}while((H|0)<(U|0));ha=ga;ia=U}else{ha=f[A>>2]|0;ia=p}H=(f[M+(O<<2)>>2]|0)-(f[ha+(O<<2)>>2]|0)|0;U=k+(O<<2)|0;f[U>>2]=H;ja=f[C>>2]|0;if((H|0)>=(ja|0)){if((H|0)>(f[E>>2]|0)){ka=H-(f[D>>2]|0)|0;la=52}}else{ka=(f[D>>2]|0)+H|0;la=52}if((la|0)==52){la=0;f[U>>2]=ka}O=O+1|0;if((O|0)>=(ia|0))break;else{P=ha;p=ia}}if((ia|0)>0){p=0;P=j;O=ia;U=ja;while(1){if((O|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;fa=f[z>>2]|0;if((V|0)>(fa|0))f[ha+(H<<2)>>2]=fa;else{fa=f[B>>2]|0;f[ha+(H<<2)>>2]=(V|0)<(fa|0)?fa:V}H=H+1|0;ma=f[y>>2]|0}while((H|0)<(ma|0));na=f[C>>2]|0;oa=ma}else{na=U;oa=O}H=(f[M+(p<<2)>>2]|0)-(f[ha+(p<<2)>>2]|0)|0;V=l+(p<<2)|0;f[V>>2]=H;if((H|0)>=(na|0)){if((H|0)>(f[E>>2]|0)){pa=H-(f[D>>2]|0)|0;la=65}}else{pa=(f[D>>2]|0)+H|0;la=65}if((la|0)==65){la=0;f[V>>2]=pa}p=p+1|0;if((p|0)>=(oa|0))break;else{P=ha;O=oa;U=na}}}}U=f[k>>2]|0;O=f[t>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))qa=(f[F>>2]|0)+U|0;else qa=U;else qa=U-(f[F>>2]|0)|0;f[k>>2]=qa;U=f[a>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ra=(f[F>>2]|0)+U|0;else ra=U;else ra=U-(f[F>>2]|0)|0;f[a>>2]=ra;U=f[l>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))sa=(f[F>>2]|0)+U|0;else sa=U;else sa=U-(f[F>>2]|0)|0;f[l>>2]=sa;U=f[G>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ta=(f[F>>2]|0)+U|0;else ta=U;else ta=U-(f[F>>2]|0)|0;f[G>>2]=ta;if((((ra|0)>-1?ra:0-ra|0)+((qa|0)>-1?qa:0-qa|0)|0)<(((sa|0)>-1?sa:0-sa|0)+((ta|0)>-1?ta:0-ta|0)|0)){Vi(g,0);ua=k}else{Vi(g,1);ua=l}U=f[ua>>2]|0;if((U|0)<0)va=(f[F>>2]|0)+U|0;else va=U;U=c+(N<<2)|0;f[U>>2]=va;O=f[ua+4>>2]|0;if((O|0)<0)wa=(f[F>>2]|0)+O|0;else wa=O;f[U+4>>2]=wa;K=K+1|0;if((K|0)>=(r|0)){la=3;break}U=f[o>>2]|0;L=f[U>>2]|0;if((f[U+4>>2]|0)-L>>2>>>0<=K>>>0){J=U;la=4;break}}if((la|0)==3){u=e;return 1}else if((la|0)==4)mq(J);return 0}function Sb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;e=u;u=u+64|0;d=e+48|0;h=e+36|0;i=e+24|0;j=e+16|0;k=e+8|0;l=e;m=e+32|0;n=a+60|0;f[a+68>>2]=g;g=a+108|0;lk(g);o=a+56|0;p=f[o>>2]|0;q=(f[p+4>>2]|0)-(f[p>>2]|0)|0;r=q>>2;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;s=i;f[s>>2]=0;f[s+4>>2]=0;s=j;f[s>>2]=0;f[s+4>>2]=0;s=k;f[s>>2]=0;f[s+4>>2]=0;s=l;f[s>>2]=0;f[s+4>>2]=0;if((q|0)<=0){u=e;return 1}q=h+4|0;s=h+8|0;t=a+104|0;v=i+4|0;w=a+100|0;x=j+4|0;y=a+8|0;z=a+16|0;A=a+32|0;B=a+12|0;C=a+28|0;D=a+20|0;E=a+24|0;F=a+96|0;a=k+4|0;G=l+4|0;H=f[p>>2]|0;if((f[p+4>>2]|0)==(H|0)){J=p;mq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];$b(n,d,h);H=f[h>>2]|0;p=(H|0)>-1?H:0-H|0;M=f[q>>2]|0;N=(M|0)>-1?M:0-M|0;O=Tn(N|0,((N|0)<0)<<31>>31|0,p|0,((p|0)<0)<<31>>31|0)|0;p=f[s>>2]|0;N=(p|0)>-1;P=N?p:0-p|0;p=Tn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((p|0)==0&(P|0)==0){O=f[t>>2]|0;Q=O;R=h;S=M;T=O}else{O=f[t>>2]|0;U=((O|0)<0)<<31>>31;V=on(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=zk(V|0,I|0,p|0,P|0)|0;f[h>>2]=H;V=on(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=zk(V|0,I|0,p|0,P|0)|0;f[q>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=s;S=M;T=O}f[R>>2]=Q;O=f[h>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[s>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[s>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[s>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){p=(N|0)==(Z|0);if(!(P&p)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(p&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);f[i>>2]=$;f[v>>2]=aa;P=0-S|0;M=0-_|0;f[h>>2]=0-O;f[q>>2]=P;f[s>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(p=(N|0)==(ca|0),!(M&p)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(p&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);f[j>>2]=da;f[x>>2]=ea;N=K<<1;M=b+(N<<2)|0;H=f[y>>2]|0;if((H|0)>0){O=0;P=i;p=H;while(1){if((p|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;U=f[z>>2]|0;if((V|0)>(U|0)){fa=f[A>>2]|0;f[fa+(H<<2)>>2]=U;ga=fa}else{fa=f[B>>2]|0;U=f[A>>2]|0;f[U+(H<<2)>>2]=(V|0)<(fa|0)?fa:V;ga=U}H=H+1|0;U=f[y>>2]|0}while((H|0)<(U|0));ha=ga;ia=U}else{ha=f[A>>2]|0;ia=p}H=(f[M+(O<<2)>>2]|0)-(f[ha+(O<<2)>>2]|0)|0;U=k+(O<<2)|0;f[U>>2]=H;ja=f[C>>2]|0;if((H|0)>=(ja|0)){if((H|0)>(f[E>>2]|0)){ka=H-(f[D>>2]|0)|0;la=52}}else{ka=(f[D>>2]|0)+H|0;la=52}if((la|0)==52){la=0;f[U>>2]=ka}O=O+1|0;if((O|0)>=(ia|0))break;else{P=ha;p=ia}}if((ia|0)>0){p=0;P=j;O=ia;U=ja;while(1){if((O|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;fa=f[z>>2]|0;if((V|0)>(fa|0))f[ha+(H<<2)>>2]=fa;else{fa=f[B>>2]|0;f[ha+(H<<2)>>2]=(V|0)<(fa|0)?fa:V}H=H+1|0;ma=f[y>>2]|0}while((H|0)<(ma|0));na=f[C>>2]|0;oa=ma}else{na=U;oa=O}H=(f[M+(p<<2)>>2]|0)-(f[ha+(p<<2)>>2]|0)|0;V=l+(p<<2)|0;f[V>>2]=H;if((H|0)>=(na|0)){if((H|0)>(f[E>>2]|0)){pa=H-(f[D>>2]|0)|0;la=65}}else{pa=(f[D>>2]|0)+H|0;la=65}if((la|0)==65){la=0;f[V>>2]=pa}p=p+1|0;if((p|0)>=(oa|0))break;else{P=ha;O=oa;U=na}}}}U=f[k>>2]|0;O=f[t>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))qa=(f[F>>2]|0)+U|0;else qa=U;else qa=U-(f[F>>2]|0)|0;f[k>>2]=qa;U=f[a>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ra=(f[F>>2]|0)+U|0;else ra=U;else ra=U-(f[F>>2]|0)|0;f[a>>2]=ra;U=f[l>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))sa=(f[F>>2]|0)+U|0;else sa=U;else sa=U-(f[F>>2]|0)|0;f[l>>2]=sa;U=f[G>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ta=(f[F>>2]|0)+U|0;else ta=U;else ta=U-(f[F>>2]|0)|0;f[G>>2]=ta;if((((ra|0)>-1?ra:0-ra|0)+((qa|0)>-1?qa:0-qa|0)|0)<(((sa|0)>-1?sa:0-sa|0)+((ta|0)>-1?ta:0-ta|0)|0)){Vi(g,0);ua=k}else{Vi(g,1);ua=l}U=f[ua>>2]|0;if((U|0)<0)va=(f[F>>2]|0)+U|0;else va=U;U=c+(N<<2)|0;f[U>>2]=va;O=f[ua+4>>2]|0;if((O|0)<0)wa=(f[F>>2]|0)+O|0;else wa=O;f[U+4>>2]=wa;K=K+1|0;if((K|0)>=(r|0)){la=3;break}U=f[o>>2]|0;L=f[U>>2]|0;if((f[U+4>>2]|0)-L>>2>>>0<=K>>>0){J=U;la=4;break}}if((la|0)==3){u=e;return 1}else if((la|0)==4)mq(J);return 0}function Tb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,Q=0,R=0;c=u;u=u+16|0;d=c+8|0;e=c;g=f[b>>2]|0;if((g|0)==-1){h=1;u=c;return h|0}i=(g>>>0)/3|0;j=a+24|0;if(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0){h=1;u=c;return h|0}i=a+48|0;k=f[i>>2]|0;l=a+52|0;m=f[l>>2]|0;if((m|0)==(k|0))n=k;else{o=m+(~((m+-4-k|0)>>>2)<<2)|0;f[l>>2]=o;n=o}o=a+56|0;if((n|0)==(f[o>>2]|0))Ci(i,b);else{f[n>>2]=g;f[l>>2]=n+4}n=a+4|0;g=f[n>>2]|0;k=f[b>>2]|0;m=k+1|0;do if((k|0)!=-1){p=f[g+28>>2]|0;q=f[p+((((m>>>0)%3|0|0)==0?k+-2|0:m)<<2)>>2]|0;if(!((k>>>0)%3|0)){r=q;s=k+2|0;t=p;break}else{r=q;s=k+-1|0;t=p;break}}else{p=f[g+28>>2]|0;r=f[p+-4>>2]|0;s=-1;t=p}while(0);g=f[t+(s<<2)>>2]|0;if((r|0)==-1|(g|0)==-1){h=0;u=c;return h|0}s=a+36|0;t=f[s>>2]|0;k=t+(r>>>5<<2)|0;m=1<<(r&31);p=f[k>>2]|0;if(!(p&m)){f[k>>2]=p|m;m=f[b>>2]|0;p=m+1|0;if((m|0)==-1)v=-1;else v=((p>>>0)%3|0|0)==0?m+-2|0:p;f[e>>2]=v;p=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((v>>>0)/3|0)*12|0)+(((v>>>0)%3|0)<<2)>>2]|0;v=f[a+20>>2]|0;f[d>>2]=p;m=f[v+4>>2]|0;v=m+4|0;k=f[v>>2]|0;if((k|0)==(f[m+8>>2]|0))Ci(m,d);else{f[k>>2]=p;f[v>>2]=k+4}k=a+12|0;v=f[k>>2]|0;p=v+4|0;m=f[p>>2]|0;if((m|0)==(f[v+8>>2]|0)){Ci(v,e);w=f[k>>2]|0}else{f[m>>2]=f[e>>2];f[p>>2]=m+4;w=v}v=w+24|0;f[(f[w+12>>2]|0)+(r<<2)>>2]=f[v>>2];f[v>>2]=(f[v>>2]|0)+1;x=f[s>>2]|0}else x=t;t=x+(g>>>5<<2)|0;x=1<<(g&31);v=f[t>>2]|0;if(!(v&x)){f[t>>2]=v|x;x=f[b>>2]|0;do if((x|0)!=-1)if(!((x>>>0)%3|0)){y=x+2|0;break}else{y=x+-1|0;break}else y=-1;while(0);f[e>>2]=y;x=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((y>>>0)/3|0)*12|0)+(((y>>>0)%3|0)<<2)>>2]|0;y=f[a+20>>2]|0;f[d>>2]=x;v=f[y+4>>2]|0;y=v+4|0;t=f[y>>2]|0;if((t|0)==(f[v+8>>2]|0))Ci(v,d);else{f[t>>2]=x;f[y>>2]=t+4}t=a+12|0;y=f[t>>2]|0;x=y+4|0;v=f[x>>2]|0;if((v|0)==(f[y+8>>2]|0)){Ci(y,e);z=f[t>>2]|0}else{f[v>>2]=f[e>>2];f[x>>2]=v+4;z=y}y=z+24|0;f[(f[z+12>>2]|0)+(g<<2)>>2]=f[y>>2];f[y>>2]=(f[y>>2]|0)+1}y=f[i>>2]|0;g=f[l>>2]|0;if((y|0)==(g|0)){h=1;u=c;return h|0}z=a+16|0;v=a+20|0;x=a+12|0;a=g;g=y;a:while(1){y=f[a+-4>>2]|0;f[b>>2]=y;t=(y>>>0)/3|0;if((y|0)!=-1?(y=(f[j>>2]|0)+(t>>>5<<2)|0,r=1<<(t&31),t=f[y>>2]|0,(t&r|0)==0):0){f[y>>2]=t|r;r=f[n>>2]|0;t=f[b>>2]|0;y=f[(f[r+28>>2]|0)+(t<<2)>>2]|0;if((y|0)==-1){h=0;A=79;break}else{B=y;C=r;D=t}b:while(1){t=(f[s>>2]|0)+(B>>>5<<2)|0;r=1<<(B&31);y=f[t>>2]|0;do if(!(y&r)){w=f[(f[C+40>>2]|0)+(B<<2)>>2]|0;if((w|0)==-1)E=1;else{m=f[(f[f[C+64>>2]>>2]|0)+(w<<2)>>2]|0;E=(1<<(m&31)&f[(f[C+12>>2]|0)+(m>>>5<<2)>>2]|0)!=0}f[t>>2]=y|r;m=f[b>>2]|0;f[e>>2]=m;w=f[(f[(f[z>>2]|0)+96>>2]|0)+(((m>>>0)/3|0)*12|0)+(((m>>>0)%3|0)<<2)>>2]|0;m=f[v>>2]|0;f[d>>2]=w;p=f[m+4>>2]|0;m=p+4|0;k=f[m>>2]|0;if((k|0)==(f[p+8>>2]|0))Ci(p,d);else{f[k>>2]=w;f[m>>2]=k+4}k=f[x>>2]|0;m=k+4|0;w=f[m>>2]|0;if((w|0)==(f[k+8>>2]|0)){Ci(k,e);F=f[x>>2]|0}else{f[w>>2]=f[e>>2];f[m>>2]=w+4;F=k}k=F+24|0;f[(f[F+12>>2]|0)+(B<<2)>>2]=f[k>>2];f[k>>2]=(f[k>>2]|0)+1;k=f[n>>2]|0;w=f[b>>2]|0;if(E){G=w;H=k;A=59;break}m=w+1|0;do if((w|0)==-1)I=-1;else{p=((m>>>0)%3|0|0)==0?w+-2|0:m;if((p|0)==-1){I=-1;break}if(f[(f[k>>2]|0)+(p>>>5<<2)>>2]&1<<(p&31)|0){I=-1;break}I=f[(f[(f[k+64>>2]|0)+12>>2]|0)+(p<<2)>>2]|0}while(0);f[b>>2]=I;J=(I>>>0)/3|0;K=k}else{G=D;H=C;A=59}while(0);if((A|0)==59){A=0;r=G+1|0;if((G|0)==-1){A=60;break}y=((r>>>0)%3|0|0)==0?G+-2|0:r;do if((y|0)==-1)L=-1;else{if(f[(f[H>>2]|0)+(y>>>5<<2)>>2]&1<<(y&31)|0){L=-1;break}L=f[(f[(f[H+64>>2]|0)+12>>2]|0)+(y<<2)>>2]|0}while(0);f[d>>2]=L;y=(((G>>>0)%3|0|0)==0?2:-1)+G|0;do if((y|0)==-1)M=-1;else{if(f[(f[H>>2]|0)+(y>>>5<<2)>>2]&1<<(y&31)|0){M=-1;break}M=f[(f[(f[H+64>>2]|0)+12>>2]|0)+(y<<2)>>2]|0}while(0);y=(L|0)==-1;r=(L>>>0)/3|0;t=y?-1:r;m=(M|0)==-1;w=(M>>>0)/3|0;p=m?-1:w;do if(!y){q=f[j>>2]|0;if(f[q+(t>>>5<<2)>>2]&1<<(t&31)|0){A=69;break}if(m){N=L;O=r;break}if(!(f[q+(p>>>5<<2)>>2]&1<<(p&31))){A=74;break b}else{N=L;O=r}}else A=69;while(0);if((A|0)==69){A=0;if(m){A=71;break}if(!(f[(f[j>>2]|0)+(p>>>5<<2)>>2]&1<<(p&31))){N=M;O=w}else{A=71;break}}f[b>>2]=N;J=O;K=H}r=(f[j>>2]|0)+(J>>>5<<2)|0;f[r>>2]=f[r>>2]|1<<(J&31);D=f[b>>2]|0;B=f[(f[K+28>>2]|0)+(D<<2)>>2]|0;if((B|0)==-1){h=0;A=79;break a}else C=K}do if((A|0)==60){A=0;f[d>>2]=-1;A=71}else if((A|0)==74){A=0;r=f[l>>2]|0;f[r+-4>>2]=M;if((r|0)==(f[o>>2]|0)){Ci(i,d);P=f[l>>2]|0;break}else{f[r>>2]=f[d>>2];t=r+4|0;f[l>>2]=t;P=t;break}}while(0);if((A|0)==71){A=0;t=(f[l>>2]|0)+-4|0;f[l>>2]=t;P=t}Q=f[i>>2]|0;R=P}else{t=a+-4|0;f[l>>2]=t;Q=g;R=t}if((Q|0)==(R|0)){h=1;A=79;break}else{a=R;g=Q}}if((A|0)==79){u=c;return h|0}return 0}function Ub(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,Y=Oa,Z=0,_=0,aa=0,ba=0;d=u;u=u+16|0;e=d;g=a+16|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[g>>2]=$(1.0);i=a+20|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[a+36>>2]=$(1.0);j=f[c+8>>2]|0;a:do if(j|0){k=a+4|0;l=a+12|0;m=a+8|0;o=j;p=j;while(1){q=o+8|0;r=b[q+11>>0]|0;s=r<<24>>24<0;t=s?f[q>>2]|0:q;v=s?f[o+12>>2]|0:r&255;if(v>>>0>3){r=t;s=v;w=v;while(1){x=X(h[r>>0]|h[r+1>>0]<<8|h[r+2>>0]<<16|h[r+3>>0]<<24,1540483477)|0;s=(X(x>>>24^x,1540483477)|0)^(X(s,1540483477)|0);w=w+-4|0;if(w>>>0<=3)break;else r=r+4|0}r=v+-4|0;w=r&-4;y=r-w|0;z=t+(w+4)|0;A=s}else{y=v;z=t;A=v}switch(y|0){case 3:{B=h[z+2>>0]<<16^A;C=8;break}case 2:{B=A;C=8;break}case 1:{D=A;C=9;break}default:E=A}if((C|0)==8){C=0;D=h[z+1>>0]<<8^B;C=9}if((C|0)==9){C=0;E=X(D^h[z>>0],1540483477)|0}w=X(E>>>13^E,1540483477)|0;r=w>>>15^w;w=f[k>>2]|0;x=(w|0)==0;b:do if(!x){F=w+-1|0;G=(F&w|0)==0;if(!G)if(r>>>0>>0)H=r;else H=(r>>>0)%(w>>>0)|0;else H=r&F;I=f[(f[a>>2]|0)+(H<<2)>>2]|0;if((I|0)!=0?(J=f[I>>2]|0,(J|0)!=0):0){I=(v|0)==0;if(G){if(I){G=J;while(1){K=f[G+4>>2]|0;if(!((K|0)==(r|0)|(K&F|0)==(H|0))){L=H;C=50;break b}K=b[G+8+11>>0]|0;if(!((K<<24>>24<0?f[G+12>>2]|0:K&255)|0))break b;G=f[G>>2]|0;if(!G){L=H;C=50;break b}}}else M=J;while(1){G=f[M+4>>2]|0;if(!((G|0)==(r|0)|(G&F|0)==(H|0))){L=H;C=50;break b}G=M+8|0;K=b[G+11>>0]|0;N=K<<24>>24<0;O=K&255;do if(((N?f[M+12>>2]|0:O)|0)==(v|0)){K=f[G>>2]|0;if(N)if(!(Pk(K,t,v)|0))break b;else break;if((b[t>>0]|0)==(K&255)<<24>>24){K=G;P=O;Q=t;do{P=P+-1|0;K=K+1|0;if(!P)break b;Q=Q+1|0}while((b[K>>0]|0)==(b[Q>>0]|0))}}while(0);M=f[M>>2]|0;if(!M){L=H;C=50;break b}}}if(I){F=J;while(1){O=f[F+4>>2]|0;if((O|0)!=(r|0)){if(O>>>0>>0)R=O;else R=(O>>>0)%(w>>>0)|0;if((R|0)!=(H|0)){L=H;C=50;break b}}O=b[F+8+11>>0]|0;if(!((O<<24>>24<0?f[F+12>>2]|0:O&255)|0))break b;F=f[F>>2]|0;if(!F){L=H;C=50;break b}}}else S=J;while(1){F=f[S+4>>2]|0;if((F|0)!=(r|0)){if(F>>>0>>0)T=F;else T=(F>>>0)%(w>>>0)|0;if((T|0)!=(H|0)){L=H;C=50;break b}}F=S+8|0;I=b[F+11>>0]|0;O=I<<24>>24<0;G=I&255;do if(((O?f[S+12>>2]|0:G)|0)==(v|0)){I=f[F>>2]|0;if(O)if(!(Pk(I,t,v)|0))break b;else break;if((b[t>>0]|0)==(I&255)<<24>>24){I=F;N=G;Q=t;do{N=N+-1|0;I=I+1|0;if(!N)break b;Q=Q+1|0}while((b[I>>0]|0)==(b[Q>>0]|0))}}while(0);S=f[S>>2]|0;if(!S){L=H;C=50;break}}}else{L=H;C=50}}else{L=0;C=50}while(0);if((C|0)==50){C=0;pi(e,a,r,q);U=$(((f[l>>2]|0)+1|0)>>>0);V=$(w>>>0);Y=$(n[g>>2]);do if(x|$(Y*V)>>0<3|(w+-1&w|0)!=0)&1;v=~~$(W($(U/Y)))>>>0;Ph(a,t>>>0>>0?v:t);t=f[k>>2]|0;v=t+-1|0;if(!(v&t)){Z=t;_=v&r;break}if(r>>>0>>0){Z=t;_=r}else{Z=t;_=(r>>>0)%(t>>>0)|0}}else{Z=w;_=L}while(0);w=f[(f[a>>2]|0)+(_<<2)>>2]|0;if(!w){f[f[e>>2]>>2]=f[m>>2];f[m>>2]=f[e>>2];f[(f[a>>2]|0)+(_<<2)>>2]=m;r=f[e>>2]|0;x=f[r>>2]|0;if(x|0){q=f[x+4>>2]|0;x=Z+-1|0;if(x&Z)if(q>>>0>>0)aa=q;else aa=(q>>>0)%(Z>>>0)|0;else aa=q&x;f[(f[a>>2]|0)+(aa<<2)>>2]=r}}else{f[f[e>>2]>>2]=f[w>>2];f[w>>2]=f[e>>2]}f[l>>2]=(f[l>>2]|0)+1}w=f[p>>2]|0;if(!w)break a;else{o=w;p=w}}}while(0);e=f[c+28>>2]|0;if(!e){u=d;return}else ba=e;do{e=ba;c=dn(40)|0;Ub(c,f[e+20>>2]|0);aa=xc(i,e+8|0)|0;e=f[aa>>2]|0;f[aa>>2]=c;if(e|0){c=f[e+28>>2]|0;if(c|0){aa=c;do{c=aa;aa=f[aa>>2]|0;bi(c+8|0);br(c)}while((aa|0)!=0)}aa=e+20|0;c=f[aa>>2]|0;f[aa>>2]=0;if(c|0)br(c);c=f[e+8>>2]|0;if(c|0){aa=c;do{c=aa;aa=f[aa>>2]|0;a=c+8|0;Z=f[c+20>>2]|0;if(Z|0){_=c+24|0;if((f[_>>2]|0)!=(Z|0))f[_>>2]=Z;br(Z)}if((b[a+11>>0]|0)<0)br(f[a>>2]|0);br(c)}while((aa|0)!=0)}aa=f[e>>2]|0;f[e>>2]=0;if(aa|0)br(aa);br(e)}ba=f[ba>>2]|0}while((ba|0)!=0);u=d;return}function Vb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+16|0;j=g+12|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=r;z=0;A=0;B=r;C=r;D=0;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=on(f[r>>2]|0,f[r+4>>2]|0,y+z|0,0)|0;r=Tn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8|h[G+2>>0]<<16|h[G+3>>0]<<24;f[j>>2]=r;G=r&65535;F=r>>>16;H=F&65535;J=(r&65535^318)+239^F;F=(D|0)==0;a:do if(!F){K=D+-1|0;L=(K&D|0)==0;if(!L)if(J>>>0>>0)M=J;else M=(J>>>0)%(D>>>0)|0;else M=J&K;N=f[(f[i>>2]|0)+(M<<2)>>2]|0;do if(N|0?(O=f[N>>2]|0,O|0):0){b:do if(L){P=O;while(1){Q=f[P+4>>2]|0;R=(Q|0)==(J|0);if(!(R|(Q&K|0)==(M|0))){S=27;break b}if((R?(R=P+8|0,(d[R>>1]|0)==G<<16>>16):0)?(d[R+2>>1]|0)==H<<16>>16:0){T=P;S=26;break b}P=f[P>>2]|0;if(!P){S=27;break}}}else{P=O;while(1){R=f[P+4>>2]|0;if((R|0)==(J|0)){Q=P+8|0;if((d[Q>>1]|0)==G<<16>>16?(d[Q+2>>1]|0)==H<<16>>16:0){T=P;S=26;break b}}else{if(R>>>0>>0)U=R;else U=(R>>>0)%(D>>>0)|0;if((U|0)!=(M|0)){S=27;break b}}P=f[P>>2]|0;if(!P){S=27;break}}}while(0);if((S|0)==26){S=0;f[E+(z<<2)>>2]=f[T+12>>2];V=e;X=A;Y=C;Z=B;_=E;break a}else if((S|0)==27){S=0;if(F){aa=0;S=46;break a}else break}}while(0);K=D+-1|0;L=(K&D|0)==0;if(!L)if(J>>>0>>0)ba=J;else ba=(J>>>0)%(D>>>0)|0;else ba=K&J;N=f[(f[i>>2]|0)+(ba<<2)>>2]|0;if((N|0)!=0?(O=f[N>>2]|0,(O|0)!=0):0){if(L){L=O;while(1){N=f[L+4>>2]|0;if(!((N|0)==(J|0)|(N&K|0)==(ba|0))){aa=ba;S=46;break a}N=L+8|0;if((d[N>>1]|0)==G<<16>>16?(d[N+2>>1]|0)==H<<16>>16:0){S=61;break a}L=f[L>>2]|0;if(!L){aa=ba;S=46;break a}}}else ca=O;while(1){L=f[ca+4>>2]|0;if((L|0)!=(J|0)){if(L>>>0>>0)da=L;else da=(L>>>0)%(D>>>0)|0;if((da|0)!=(ba|0)){aa=ba;S=46;break a}}L=ca+8|0;if((d[L>>1]|0)==G<<16>>16?(d[L+2>>1]|0)==H<<16>>16:0){S=61;break a}ca=f[ca>>2]|0;if(!ca){aa=ba;S=46;break}}}else{aa=ba;S=46}}else{aa=0;S=46}while(0);if((S|0)==46){S=0;H=dn(16)|0;G=H+8|0;d[G>>1]=r;d[G+2>>1]=r>>>16;f[H+12>>2]=A;f[H+4>>2]=J;f[H>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(D>>>0);ga=$(n[l>>2]);do if(F|$(ga*fa)>>0<3|(D+-1&D|0)!=0)&1;O=~~$(W($(ea/ga)))>>>0;Eh(i,G>>>0>>0?O:G);G=f[o>>2]|0;O=G+-1|0;if(!(O&G)){ha=G;ia=O&J;break}if(J>>>0>>0){ha=G;ia=J}else{ha=G;ia=(J>>>0)%(G>>>0)|0}}else{ha=D;ia=aa}while(0);J=(f[i>>2]|0)+(ia<<2)|0;F=f[J>>2]|0;if(!F){f[H>>2]=f[v>>2];f[v>>2]=H;f[J>>2]=v;J=f[H>>2]|0;if(J|0){r=f[J+4>>2]|0;J=ha+-1|0;if(J&ha)if(r>>>0>>0)ja=r;else ja=(r>>>0)%(ha>>>0)|0;else ja=r&J;ka=(f[i>>2]|0)+(ja<<2)|0;S=59}}else{f[H>>2]=f[F>>2];ka=F;S=59}if((S|0)==59){S=0;f[ka>>2]=H}f[t>>2]=(f[t>>2]|0)+1;S=61}if((S|0)==61){S=0;F=w;J=f[F>>2]|0;r=on(J|0,f[F+4>>2]|0,A|0,0)|0;Rg((f[f[x>>2]>>2]|0)+r|0,j|0,J|0)|0;J=f[k>>2]|0;f[J+(z<<2)>>2]=A;V=J;X=A+1|0;Y=J;Z=J;_=J}J=z+1|0;la=f[m>>2]|0;if(J>>>0>=la>>>0)break;e=V;z=J;A=X;B=Z;C=Y;D=f[o>>2]|0;E=_}if((X|0)==(la|0))ma=Z;else{Z=a+84|0;if(!(b[Z>>0]|0)){_=f[a+72>>2]|0;E=f[a+68>>2]|0;o=E;if((_|0)==(E|0))na=V;else{D=_-E>>2;E=0;do{_=o+(E<<2)|0;f[_>>2]=f[Y+(f[_>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=V}}else{b[Z>>0]=0;Z=a+68|0;V=a+72|0;D=f[V>>2]|0;E=f[Z>>2]|0;Y=D-E>>2;o=E;E=D;if(la>>>0<=Y>>>0)if(la>>>0>>0?(D=o+(la<<2)|0,(D|0)!=(E|0)):0){f[V>>2]=E+(~((E+-4-D|0)>>>2)<<2);oa=la}else oa=la;else{kh(Z,la-Y|0,1204);oa=f[m>>2]|0}Y=f[k>>2]|0;if(!oa)na=Y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[Y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=Y}}f[m>>2]=X;ma=na}if(!ma)pa=X;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);br(ma);pa=X}}else pa=0;X=f[i+8>>2]|0;if(X|0){ma=X;do{X=ma;ma=f[ma>>2]|0;br(X)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}br(ma);u=g;return pa|0}function Wb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,Q=0;c=u;u=u+16|0;d=c+8|0;e=c;g=f[b>>2]|0;if((g|0)==-1){h=1;u=c;return h|0}i=(g>>>0)/3|0;j=a+24|0;if(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0){h=1;u=c;return h|0}i=a+48|0;k=f[i>>2]|0;l=a+52|0;m=f[l>>2]|0;if((m|0)==(k|0))n=k;else{o=m+(~((m+-4-k|0)>>>2)<<2)|0;f[l>>2]=o;n=o}o=a+56|0;if((n|0)==(f[o>>2]|0))Ci(i,b);else{f[n>>2]=g;f[l>>2]=n+4}n=a+4|0;g=f[n>>2]|0;k=f[b>>2]|0;m=k+1|0;if((k|0)==-1){h=0;u=c;return h|0}p=((m>>>0)%3|0|0)==0?k+-2|0:m;if((p|0)==-1)q=-1;else q=f[(f[g>>2]|0)+(p<<2)>>2]|0;p=(((k>>>0)%3|0|0)==0?2:-1)+k|0;if((p|0)==-1){h=0;u=c;return h|0}k=f[(f[g>>2]|0)+(p<<2)>>2]|0;if((q|0)==-1|(k|0)==-1){h=0;u=c;return h|0}p=a+36|0;g=f[p>>2]|0;m=g+(q>>>5<<2)|0;r=1<<(q&31);s=f[m>>2]|0;if(!(s&r)){f[m>>2]=s|r;r=f[b>>2]|0;s=r+1|0;if((r|0)==-1)t=-1;else t=((s>>>0)%3|0|0)==0?r+-2|0:s;f[e>>2]=t;s=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((t>>>0)/3|0)*12|0)+(((t>>>0)%3|0)<<2)>>2]|0;t=f[a+20>>2]|0;f[d>>2]=s;r=f[t+4>>2]|0;t=r+4|0;m=f[t>>2]|0;if((m|0)==(f[r+8>>2]|0))Ci(r,d);else{f[m>>2]=s;f[t>>2]=m+4}m=a+12|0;t=f[m>>2]|0;s=t+4|0;r=f[s>>2]|0;if((r|0)==(f[t+8>>2]|0)){Ci(t,e);v=f[m>>2]|0}else{f[r>>2]=f[e>>2];f[s>>2]=r+4;v=t}t=v+24|0;f[(f[v+12>>2]|0)+(q<<2)>>2]=f[t>>2];f[t>>2]=(f[t>>2]|0)+1;w=f[p>>2]|0}else w=g;g=w+(k>>>5<<2)|0;w=1<<(k&31);t=f[g>>2]|0;if(!(t&w)){f[g>>2]=t|w;w=f[b>>2]|0;do if((w|0)!=-1)if(!((w>>>0)%3|0)){x=w+2|0;break}else{x=w+-1|0;break}else x=-1;while(0);f[e>>2]=x;w=f[(f[(f[a+16>>2]|0)+96>>2]|0)+(((x>>>0)/3|0)*12|0)+(((x>>>0)%3|0)<<2)>>2]|0;x=f[a+20>>2]|0;f[d>>2]=w;t=f[x+4>>2]|0;x=t+4|0;g=f[x>>2]|0;if((g|0)==(f[t+8>>2]|0))Ci(t,d);else{f[g>>2]=w;f[x>>2]=g+4}g=a+12|0;x=f[g>>2]|0;w=x+4|0;t=f[w>>2]|0;if((t|0)==(f[x+8>>2]|0)){Ci(x,e);y=f[g>>2]|0}else{f[t>>2]=f[e>>2];f[w>>2]=t+4;y=x}x=y+24|0;f[(f[y+12>>2]|0)+(k<<2)>>2]=f[x>>2];f[x>>2]=(f[x>>2]|0)+1}x=f[i>>2]|0;k=f[l>>2]|0;if((x|0)==(k|0)){h=1;u=c;return h|0}y=a+16|0;t=a+20|0;w=a+12|0;a=k;k=x;a:while(1){x=f[a+-4>>2]|0;f[b>>2]=x;g=(x>>>0)/3|0;if((x|0)!=-1?(x=(f[j>>2]|0)+(g>>>5<<2)|0,q=1<<(g&31),g=f[x>>2]|0,(g&q|0)==0):0){f[x>>2]=g|q;q=f[b>>2]|0;if((q|0)==-1){h=0;z=80;break}g=f[n>>2]|0;x=q;b:while(1){q=f[(f[g>>2]|0)+(x<<2)>>2]|0;if((q|0)==-1){h=0;z=80;break a}v=(f[p>>2]|0)+(q>>>5<<2)|0;r=1<<(q&31);s=f[v>>2]|0;do if(!(s&r)){m=f[(f[g+24>>2]|0)+(q<<2)>>2]|0;A=m+1|0;do if((m|0)==-1)B=1;else{C=((A>>>0)%3|0|0)==0?m+-2|0:A;if((C|0)==-1){B=1;break}D=f[(f[g+12>>2]|0)+(C<<2)>>2]|0;C=D+1|0;if((D|0)==-1){B=1;break}B=((((C>>>0)%3|0|0)==0?D+-2|0:C)|0)==-1}while(0);f[v>>2]=s|r;A=f[b>>2]|0;f[e>>2]=A;m=f[(f[(f[y>>2]|0)+96>>2]|0)+(((A>>>0)/3|0)*12|0)+(((A>>>0)%3|0)<<2)>>2]|0;A=f[t>>2]|0;f[d>>2]=m;C=f[A+4>>2]|0;A=C+4|0;D=f[A>>2]|0;if((D|0)==(f[C+8>>2]|0))Ci(C,d);else{f[D>>2]=m;f[A>>2]=D+4}D=f[w>>2]|0;A=D+4|0;m=f[A>>2]|0;if((m|0)==(f[D+8>>2]|0)){Ci(D,e);E=f[w>>2]|0}else{f[m>>2]=f[e>>2];f[A>>2]=m+4;E=D}D=E+24|0;f[(f[E+12>>2]|0)+(q<<2)>>2]=f[D>>2];f[D>>2]=(f[D>>2]|0)+1;D=f[n>>2]|0;m=f[b>>2]|0;if(B)if((m|0)==-1){z=63;break b}else{F=m;G=D;z=64;break}do if((m|0)==-1)H=-1;else{A=m+1|0;C=((A>>>0)%3|0|0)==0?m+-2|0:A;if((C|0)==-1){H=-1;break}H=f[(f[D+12>>2]|0)+(C<<2)>>2]|0}while(0);f[b>>2]=H;I=(H>>>0)/3|0;J=D}else{F=x;G=g;z=64}while(0);if((z|0)==64){z=0;q=F+1|0;r=((q>>>0)%3|0|0)==0?F+-2|0:q;if((r|0)==-1)K=-1;else K=f[(f[G+12>>2]|0)+(r<<2)>>2]|0;f[d>>2]=K;r=(((F>>>0)%3|0|0)==0?2:-1)+F|0;if((r|0)==-1)L=-1;else L=f[(f[G+12>>2]|0)+(r<<2)>>2]|0;r=(K|0)==-1;q=(K>>>0)/3|0;s=r?-1:q;v=(L|0)==-1;m=(L>>>0)/3|0;C=v?-1:m;do if(!r){A=f[j>>2]|0;if(f[A+(s>>>5<<2)>>2]&1<<(s&31)|0){z=70;break}if(v){M=K;N=q;break}if(!(f[A+(C>>>5<<2)>>2]&1<<(C&31))){z=75;break b}else{M=K;N=q}}else z=70;while(0);if((z|0)==70){z=0;if(v){z=72;break}if(!(f[(f[j>>2]|0)+(C>>>5<<2)>>2]&1<<(C&31))){M=L;N=m}else{z=72;break}}f[b>>2]=M;I=N;J=G}q=(f[j>>2]|0)+(I>>>5<<2)|0;f[q>>2]=f[q>>2]|1<<(I&31);x=f[b>>2]|0;if((x|0)==-1){h=0;z=80;break a}else g=J}do if((z|0)==63){z=0;f[d>>2]=-1;z=72}else if((z|0)==75){z=0;g=f[l>>2]|0;f[g+-4>>2]=L;if((g|0)==(f[o>>2]|0)){Ci(i,d);O=f[l>>2]|0;break}else{f[g>>2]=f[d>>2];x=g+4|0;f[l>>2]=x;O=x;break}}while(0);if((z|0)==72){z=0;x=(f[l>>2]|0)+-4|0;f[l>>2]=x;O=x}P=f[i>>2]|0;Q=O}else{x=a+-4|0;f[l>>2]=x;P=k;Q=x}if((P|0)==(Q|0)){h=1;z=80;break}else{a=Q;k=P}}if((z|0)==80){u=c;return h|0}return 0}function Xb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=Oa,da=Oa,ea=Oa,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;e=u;u=u+48|0;g=e+20|0;i=e;j=e+8|0;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=c+48|0;p=c+40|0;m=g+4|0;s=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=f[d>>2]|0;d=q;y=0;z=0;A=q;B=q;C=q;q=0;while(1){D=r;E=f[D>>2]|0;F=f[D+4>>2]|0;D=p;G=on(f[D>>2]|0,f[D+4>>2]|0,x+y|0,0)|0;D=Tn(G|0,I|0,E|0,F|0)|0;F=(f[f[c>>2]>>2]|0)+D|0;D=F;E=h[D>>0]|h[D+1>>0]<<8|h[D+2>>0]<<16|h[D+3>>0]<<24;D=F+4|0;F=h[D>>0]|h[D+1>>0]<<8|h[D+2>>0]<<16|h[D+3>>0]<<24;D=i;f[D>>2]=E;f[D+4>>2]=F;D=(E^318)+239^F;G=(q|0)==0;a:do if(!G){H=q+-1|0;J=(H&q|0)==0;if(!J)if(D>>>0>>0)K=D;else K=(D>>>0)%(q>>>0)|0;else K=D&H;L=f[(f[g>>2]|0)+(K<<2)>>2]|0;do if(L|0?(M=f[L>>2]|0,M|0):0){b:do if(J){N=M;while(1){O=f[N+4>>2]|0;P=(O|0)==(D|0);if(!(P|(O&H|0)==(K|0))){Q=27;break b}if((P?(f[N+8>>2]|0)==(E|0):0)?(f[N+12>>2]|0)==(F|0):0){R=N;Q=26;break b}N=f[N>>2]|0;if(!N){Q=27;break}}}else{N=M;while(1){P=f[N+4>>2]|0;if((P|0)==(D|0)){if((f[N+8>>2]|0)==(E|0)?(f[N+12>>2]|0)==(F|0):0){R=N;Q=26;break b}}else{if(P>>>0>>0)S=P;else S=(P>>>0)%(q>>>0)|0;if((S|0)!=(K|0)){Q=27;break b}}N=f[N>>2]|0;if(!N){Q=27;break}}}while(0);if((Q|0)==26){Q=0;f[A+(y<<2)>>2]=f[R+16>>2];T=d;U=z;V=C;X=B;Y=A;break a}else if((Q|0)==27){Q=0;if(G){Z=0;Q=46;break a}else break}}while(0);H=q+-1|0;J=(H&q|0)==0;if(!J)if(D>>>0>>0)_=D;else _=(D>>>0)%(q>>>0)|0;else _=H&D;L=f[(f[g>>2]|0)+(_<<2)>>2]|0;if((L|0)!=0?(M=f[L>>2]|0,(M|0)!=0):0){if(J){J=M;while(1){L=f[J+4>>2]|0;if(!((L|0)==(D|0)|(L&H|0)==(_|0))){Z=_;Q=46;break a}if((f[J+8>>2]|0)==(E|0)?(f[J+12>>2]|0)==(F|0):0){Q=61;break a}J=f[J>>2]|0;if(!J){Z=_;Q=46;break a}}}else aa=M;while(1){J=f[aa+4>>2]|0;if((J|0)!=(D|0)){if(J>>>0>>0)ba=J;else ba=(J>>>0)%(q>>>0)|0;if((ba|0)!=(_|0)){Z=_;Q=46;break a}}if((f[aa+8>>2]|0)==(E|0)?(f[aa+12>>2]|0)==(F|0):0){Q=61;break a}aa=f[aa>>2]|0;if(!aa){Z=_;Q=46;break}}}else{Z=_;Q=46}}else{Z=0;Q=46}while(0);if((Q|0)==46){Q=0;M=dn(20)|0;J=M+8|0;f[J>>2]=E;f[J+4>>2]=F;f[M+16>>2]=z;f[M+4>>2]=D;f[M>>2]=0;ca=$(((f[s>>2]|0)+1|0)>>>0);da=$(q>>>0);ea=$(n[k>>2]);do if(G|$(ea*da)>>0<3|(q+-1&q|0)!=0)&1;H=~~$(W($(ca/ea)))>>>0;Ih(g,J>>>0>>0?H:J);J=f[m>>2]|0;H=J+-1|0;if(!(H&J)){fa=J;ga=H&D;break}if(D>>>0>>0){fa=J;ga=D}else{fa=J;ga=(D>>>0)%(J>>>0)|0}}else{fa=q;ga=Z}while(0);D=(f[g>>2]|0)+(ga<<2)|0;G=f[D>>2]|0;if(!G){f[M>>2]=f[t>>2];f[t>>2]=M;f[D>>2]=t;D=f[M>>2]|0;if(D|0){F=f[D+4>>2]|0;D=fa+-1|0;if(D&fa)if(F>>>0>>0)ha=F;else ha=(F>>>0)%(fa>>>0)|0;else ha=F&D;ia=(f[g>>2]|0)+(ha<<2)|0;Q=59}}else{f[M>>2]=f[G>>2];ia=G;Q=59}if((Q|0)==59){Q=0;f[ia>>2]=M}f[s>>2]=(f[s>>2]|0)+1;Q=61}if((Q|0)==61){Q=0;G=v;D=f[G>>2]|0;F=on(D|0,f[G+4>>2]|0,z|0,0)|0;Rg((f[f[w>>2]>>2]|0)+F|0,i|0,D|0)|0;D=f[j>>2]|0;f[D+(y<<2)>>2]=z;T=D;U=z+1|0;V=D;X=D;Y=D}D=y+1|0;ja=f[l>>2]|0;if(D>>>0>=ja>>>0)break;d=T;y=D;z=U;A=Y;B=X;C=V;q=f[m>>2]|0}if((U|0)==(ja|0))ka=X;else{X=a+84|0;if(!(b[X>>0]|0)){m=f[a+72>>2]|0;q=f[a+68>>2]|0;C=q;if((m|0)==(q|0))la=T;else{B=m-q>>2;q=0;do{m=C+(q<<2)|0;f[m>>2]=f[V+(f[m>>2]<<2)>>2];q=q+1|0}while(q>>>0>>0);la=T}}else{b[X>>0]=0;X=a+68|0;T=a+72|0;B=f[T>>2]|0;q=f[X>>2]|0;V=B-q>>2;C=q;q=B;if(ja>>>0<=V>>>0)if(ja>>>0>>0?(B=C+(ja<<2)|0,(B|0)!=(q|0)):0){f[T>>2]=q+(~((q+-4-B|0)>>>2)<<2);ma=ja}else ma=ja;else{kh(X,ja-V|0,1204);ma=f[l>>2]|0}V=f[j>>2]|0;if(!ma)la=V;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[V+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);la=V}}f[l>>2]=U;ka=la}if(!ka)na=U;else{la=f[o>>2]|0;if((la|0)!=(ka|0))f[o>>2]=la+(~((la+-4-ka|0)>>>2)<<2);br(ka);na=U}}else na=0;U=f[g+8>>2]|0;if(U|0){ka=U;do{U=ka;ka=f[ka>>2]|0;br(U)}while((ka|0)!=0)}ka=f[g>>2]|0;f[g>>2]=0;if(!ka){u=e;return na|0}br(ka);u=e;return na|0}function Yb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+12|0;j=g+32|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=r;z=0;A=0;B=r;C=r;D=0;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=on(f[r>>2]|0,f[r+4>>2]|0,y+z|0,0)|0;r=Tn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8;d[j>>1]=r;G=r&255;F=(r&65535)>>>8;H=F&255;J=((r&255^318)+239<<16>>16^F)&65535;F=(D|0)==0;a:do if(!F){K=D+-1|0;L=(K&D|0)==0;if(!L)if(D>>>0>J>>>0)M=J;else M=(J>>>0)%(D>>>0)|0;else M=K&J;N=f[(f[i>>2]|0)+(M<<2)>>2]|0;do if(N|0?(O=f[N>>2]|0,O|0):0){b:do if(L){P=O;while(1){Q=f[P+4>>2]|0;R=(Q|0)==(J|0);if(!(R|(Q&K|0)==(M|0))){S=27;break b}if((R?(R=P+8|0,(b[R>>0]|0)==G<<24>>24):0)?(b[R+1>>0]|0)==H<<24>>24:0){T=P;S=26;break b}P=f[P>>2]|0;if(!P){S=27;break}}}else{P=O;while(1){R=f[P+4>>2]|0;if((R|0)==(J|0)){Q=P+8|0;if((b[Q>>0]|0)==G<<24>>24?(b[Q+1>>0]|0)==H<<24>>24:0){T=P;S=26;break b}}else{if(R>>>0>>0)U=R;else U=(R>>>0)%(D>>>0)|0;if((U|0)!=(M|0)){S=27;break b}}P=f[P>>2]|0;if(!P){S=27;break}}}while(0);if((S|0)==26){S=0;f[E+(z<<2)>>2]=f[T+12>>2];V=e;X=A;Y=C;Z=B;_=E;break a}else if((S|0)==27){S=0;if(F){aa=0;S=46;break a}else break}}while(0);K=D+-1|0;L=(K&D|0)==0;if(!L)if(D>>>0>J>>>0)ba=J;else ba=(J>>>0)%(D>>>0)|0;else ba=K&J;N=f[(f[i>>2]|0)+(ba<<2)>>2]|0;if((N|0)!=0?(O=f[N>>2]|0,(O|0)!=0):0){if(L){L=O;while(1){N=f[L+4>>2]|0;if(!((N|0)==(J|0)|(N&K|0)==(ba|0))){aa=ba;S=46;break a}N=L+8|0;if((b[N>>0]|0)==G<<24>>24?(b[N+1>>0]|0)==H<<24>>24:0){S=61;break a}L=f[L>>2]|0;if(!L){aa=ba;S=46;break a}}}else ca=O;while(1){L=f[ca+4>>2]|0;if((L|0)!=(J|0)){if(L>>>0>>0)da=L;else da=(L>>>0)%(D>>>0)|0;if((da|0)!=(ba|0)){aa=ba;S=46;break a}}L=ca+8|0;if((b[L>>0]|0)==G<<24>>24?(b[L+1>>0]|0)==H<<24>>24:0){S=61;break a}ca=f[ca>>2]|0;if(!ca){aa=ba;S=46;break}}}else{aa=ba;S=46}}else{aa=0;S=46}while(0);if((S|0)==46){S=0;H=dn(16)|0;G=H+8|0;b[G>>0]=r;b[G+1>>0]=r>>8;f[H+12>>2]=A;f[H+4>>2]=J;f[H>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(D>>>0);ga=$(n[l>>2]);do if(F|$(ga*fa)>>0<3|(D+-1&D|0)!=0)&1;O=~~$(W($(ea/ga)))>>>0;Lh(i,G>>>0>>0?O:G);G=f[o>>2]|0;O=G+-1|0;if(!(O&G)){ha=G;ia=O&J;break}if(G>>>0>J>>>0){ha=G;ia=J}else{ha=G;ia=(J>>>0)%(G>>>0)|0}}else{ha=D;ia=aa}while(0);J=(f[i>>2]|0)+(ia<<2)|0;F=f[J>>2]|0;if(!F){f[H>>2]=f[v>>2];f[v>>2]=H;f[J>>2]=v;J=f[H>>2]|0;if(J|0){r=f[J+4>>2]|0;J=ha+-1|0;if(J&ha)if(r>>>0>>0)ja=r;else ja=(r>>>0)%(ha>>>0)|0;else ja=r&J;ka=(f[i>>2]|0)+(ja<<2)|0;S=59}}else{f[H>>2]=f[F>>2];ka=F;S=59}if((S|0)==59){S=0;f[ka>>2]=H}f[t>>2]=(f[t>>2]|0)+1;S=61}if((S|0)==61){S=0;F=w;J=f[F>>2]|0;r=on(J|0,f[F+4>>2]|0,A|0,0)|0;Rg((f[f[x>>2]>>2]|0)+r|0,j|0,J|0)|0;J=f[k>>2]|0;f[J+(z<<2)>>2]=A;V=J;X=A+1|0;Y=J;Z=J;_=J}J=z+1|0;la=f[m>>2]|0;if(J>>>0>=la>>>0)break;e=V;z=J;A=X;B=Z;C=Y;D=f[o>>2]|0;E=_}if((X|0)==(la|0))ma=Z;else{Z=a+84|0;if(!(b[Z>>0]|0)){_=f[a+72>>2]|0;E=f[a+68>>2]|0;o=E;if((_|0)==(E|0))na=V;else{D=_-E>>2;E=0;do{_=o+(E<<2)|0;f[_>>2]=f[Y+(f[_>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=V}}else{b[Z>>0]=0;Z=a+68|0;V=a+72|0;D=f[V>>2]|0;E=f[Z>>2]|0;Y=D-E>>2;o=E;E=D;if(la>>>0<=Y>>>0)if(la>>>0>>0?(D=o+(la<<2)|0,(D|0)!=(E|0)):0){f[V>>2]=E+(~((E+-4-D|0)>>>2)<<2);oa=la}else oa=la;else{kh(Z,la-Y|0,1204);oa=f[m>>2]|0}Y=f[k>>2]|0;if(!oa)na=Y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[Y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=Y}}f[m>>2]=X;ma=na}if(!ma)pa=X;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);br(ma);pa=X}}else pa=0;X=f[i+8>>2]|0;if(X|0){ma=X;do{X=ma;ma=f[ma>>2]|0;br(X)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}br(ma);u=g;return pa|0}function Zb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,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,ha=0;c=u;u=u+16|0;d=c+8|0;e=c;g=c+4|0;h=a+16|0;i=f[h>>2]|0;j=a+20|0;k=f[j>>2]|0;if((k|0)==(i|0))l=i;else{m=k+(~((k+-4-i|0)>>>2)<<2)|0;f[j>>2]=m;l=m}m=a+24|0;if((l|0)==(f[m>>2]|0)){Ci(h,b);n=f[h>>2]|0;o=f[j>>2]|0}else{f[l>>2]=f[b>>2];k=l+4|0;f[j>>2]=k;n=i;o=k}k=f[a+8>>2]|0;i=(f[k+100>>2]|0)-(f[k+96>>2]|0)|0;k=(i|0)/12|0;if((n|0)==(o|0)){u=c;return 1}n=a+28|0;l=(i|0)>0;i=a+164|0;p=a+12|0;q=a+76|0;r=a+80|0;s=a+72|0;t=a+200|0;v=a+320|0;w=a+152|0;x=a+84|0;y=a+324|0;z=a+292|0;A=a+304|0;B=a+316|0;C=a+328|0;D=a+336|0;E=a+332|0;F=a+168|0;G=a+140|0;H=a+120|0;I=o;do{o=f[I+-4>>2]|0;f[b>>2]=o;a:do if((o|0)!=-1?(J=(o>>>0)/3|0,K=f[n>>2]|0,(f[K+(J>>>5<<2)>>2]&1<<(J&31)|0)==0):0){if(l){J=0;L=K;b:while(1){K=J+1|0;f[i>>2]=(f[i>>2]|0)+1;M=f[b>>2]|0;N=(M|0)==-1?-1:(M>>>0)/3|0;M=L+(N>>>5<<2)|0;f[M>>2]=1<<(N&31)|f[M>>2];M=f[q>>2]|0;if((M|0)==(f[r>>2]|0))Ci(s,b);else{f[M>>2]=f[b>>2];f[q>>2]=M+4}f[v>>2]=f[b>>2];M=f[b>>2]|0;if((M|0)==-1)O=-1;else O=f[(f[f[p>>2]>>2]|0)+(M<<2)>>2]|0;P=(f[(f[w>>2]|0)+(O<<2)>>2]|0)!=-1;Q=(f[x>>2]|0)+(O>>>5<<2)|0;R=1<<(O&31);S=f[Q>>2]|0;do if(!(S&R)){f[Q>>2]=S|R;if(P){T=f[b>>2]|0;U=38;break}f[y>>2]=(f[y>>2]|0)+1;V=f[v>>2]|0;W=V+1|0;do if((V|0)!=-1){X=((W>>>0)%3|0|0)==0?V+-2|0:W;if(!((V>>>0)%3|0)){Y=V+2|0;Z=X;break}else{Y=V+-1|0;Z=X;break}}else{Y=-1;Z=-1}while(0);V=f[z>>2]|0;W=f[A>>2]|0;X=W+(f[V+(Z<<2)>>2]<<2)|0;_=f[X>>2]|0;f[X>>2]=_+-1;X=W+(f[V+(Y<<2)>>2]<<2)|0;f[X>>2]=(f[X>>2]|0)+-1;X=f[B>>2]|0;if((X|0)!=-1){V=f[C>>2]|0;if((_|0)<(V|0))$=V;else{W=f[E>>2]|0;$=(_|0)>(W|0)?W:_}_=$-V|0;V=f[D>>2]|0;W=f[3384+(X<<2)>>2]|0;f[d>>2]=W;X=V+(_*12|0)+4|0;aa=f[X>>2]|0;if(aa>>>0<(f[V+(_*12|0)+8>>2]|0)>>>0){f[aa>>2]=W;f[X>>2]=aa+4}else Ci(V+(_*12|0)|0,d)}f[B>>2]=0;_=f[b>>2]|0;V=_+1|0;if((_|0)!=-1?(aa=((V>>>0)%3|0|0)==0?_+-2|0:V,(aa|0)!=-1):0)ba=f[(f[(f[p>>2]|0)+12>>2]|0)+(aa<<2)>>2]|0;else ba=-1;f[b>>2]=ba}else{T=M;U=38}while(0);if((U|0)==38){U=0;M=T+1|0;if((T|0)==-1){U=43;break}R=((M>>>0)%3|0|0)==0?T+-2|0:M;if((R|0)==-1)ca=-1;else ca=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;f[e>>2]=ca;R=(((T>>>0)%3|0|0)==0?2:-1)+T|0;if((R|0)==-1)da=-1;else da=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;R=(ca|0)==-1;S=R?-1:(ca>>>0)/3|0;ea=(da|0)==-1;fa=ea?-1:(da>>>0)/3|0;Q=((M>>>0)%3|0|0)==0?T+-2|0:M;if(((Q|0)!=-1?(M=f[(f[p>>2]|0)+12>>2]|0,aa=f[M+(Q<<2)>>2]|0,(aa|0)!=-1):0)?(Q=(aa>>>0)/3|0,aa=f[n>>2]|0,(f[aa+(Q>>>5<<2)>>2]&1<<(Q&31)|0)==0):0){Q=(((T>>>0)%3|0|0)==0?2:-1)+T|0;do if((Q|0)!=-1){V=f[M+(Q<<2)>>2]|0;if((V|0)==-1)break;_=(V>>>0)/3|0;if(!(f[aa+(_>>>5<<2)>>2]&1<<(_&31))){U=62;break b}}while(0);if(!ea)jf(a,f[i>>2]|0,N,0,fa);hd(t,3);ga=f[e>>2]|0}else{if(!R){jf(a,f[i>>2]|0,N,1,S);aa=f[b>>2]|0;if((aa|0)==-1){U=52;break}else ha=aa}else ha=T;aa=(((ha>>>0)%3|0|0)==0?2:-1)+ha|0;if((aa|0)==-1){U=52;break}Q=f[(f[(f[p>>2]|0)+12>>2]|0)+(aa<<2)>>2]|0;if((Q|0)==-1){U=52;break}aa=(Q>>>0)/3|0;if(f[(f[n>>2]|0)+(aa>>>5<<2)>>2]&1<<(aa&31)|0){U=52;break}hd(t,5);ga=da}f[b>>2]=ga}if((K|0)>=(k|0))break a;J=K;L=f[n>>2]|0}do if((U|0)==43){U=0;f[e>>2]=-1;U=54}else if((U|0)==52){U=0;if(ea)U=54;else{jf(a,f[i>>2]|0,N,0,fa);U=54}}else if((U|0)==62){U=0;hd(t,1);f[F>>2]=(f[F>>2]|0)+1;if(P?(L=f[(f[w>>2]|0)+(O<<2)>>2]|0,(1<<(L&31)&f[(f[G>>2]|0)+(L>>>5<<2)>>2]|0)==0):0){f[g>>2]=f[b>>2];f[d>>2]=f[g>>2];Ce(a,d,0)|0}L=f[i>>2]|0;f[d>>2]=N;J=Sd(H,d)|0;f[J>>2]=L;L=f[j>>2]|0;f[L+-4>>2]=da;if((L|0)==(f[m>>2]|0)){Ci(h,e);break}else{f[L>>2]=f[e>>2];f[j>>2]=L+4;break}}while(0);if((U|0)==54){U=0;hd(t,7);f[j>>2]=(f[j>>2]|0)+-4}}}else U=11;while(0);if((U|0)==11){U=0;f[j>>2]=I+-4}I=f[j>>2]|0}while((f[h>>2]|0)!=(I|0));u=c;return 1}function _b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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=Oa,K=Oa,L=Oa,M=0,N=0,O=0,P=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=xd(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];Xe(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;ri(j,8);l=d;d=l;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;d=l+4|0;l=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;d=f[j>>2]|0;o=d;b[o>>0]=m;b[o+1>>0]=m>>8;b[o+2>>0]=m>>16;b[o+3>>0]=m>>24;m=d+4|0;b[m>>0]=l;b[m+1>>0]=l>>8;b[m+2>>0]=l>>16;b[m+3>>0]=l>>24;dj(i,c);c=i+12|0;f[c>>2]=0;l=i+16|0;f[l>>2]=0;f[i+20>>2]=0;m=f[k>>2]|0;d=f[j>>2]|0;o=m-d|0;if(!o){p=d;q=m;r=0}else{ri(c,o);p=f[j>>2]|0;q=f[k>>2]|0;r=f[c>>2]|0}Rg(r|0,p|0,q-p|0)|0;p=i+11|0;q=b[p>>0]|0;r=q<<24>>24<0;c=r?f[i>>2]|0:i;o=r?f[i+4>>2]|0:q&255;if(o>>>0>3){q=c;r=o;m=o;while(1){d=X(h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24,1540483477)|0;r=(X(d>>>24^d,1540483477)|0)^(X(r,1540483477)|0);m=m+-4|0;if(m>>>0<=3)break;else q=q+4|0}q=o+-4|0;m=q&-4;s=q-m|0;t=c+(m+4)|0;v=r}else{s=o;t=c;v=o}switch(s|0){case 3:{w=h[t+2>>0]<<16^v;x=10;break}case 2:{w=v;x=10;break}case 1:{y=v;x=11;break}default:z=v}if((x|0)==10){y=h[t+1>>0]<<8^w;x=11}if((x|0)==11)z=X(y^h[t>>0],1540483477)|0;t=X(z>>>13^z,1540483477)|0;z=t>>>15^t;t=a+4|0;y=f[t>>2]|0;w=(y|0)==0;a:do if(!w){v=y+-1|0;s=(v&y|0)==0;if(!s)if(z>>>0>>0)A=z;else A=(z>>>0)%(y>>>0)|0;else A=z&v;r=f[(f[a>>2]|0)+(A<<2)>>2]|0;if((r|0)!=0?(m=f[r>>2]|0,(m|0)!=0):0){r=(o|0)==0;if(s){if(r){s=m;while(1){q=f[s+4>>2]|0;if(!((q|0)==(z|0)|(q&v|0)==(A|0))){B=A;x=52;break a}q=b[s+8+11>>0]|0;if(!((q<<24>>24<0?f[s+12>>2]|0:q&255)|0))break a;s=f[s>>2]|0;if(!s){B=A;x=52;break a}}}else C=m;while(1){s=f[C+4>>2]|0;if(!((s|0)==(z|0)|(s&v|0)==(A|0))){B=A;x=52;break a}s=C+8|0;q=b[s+11>>0]|0;d=q<<24>>24<0;D=q&255;do if(((d?f[C+12>>2]|0:D)|0)==(o|0)){q=f[s>>2]|0;if(d)if(!(Pk(q,c,o)|0))break a;else break;if((b[c>>0]|0)==(q&255)<<24>>24){q=s;E=D;F=c;do{E=E+-1|0;q=q+1|0;if(!E)break a;F=F+1|0}while((b[q>>0]|0)==(b[F>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){B=A;x=52;break a}}}if(r){v=m;while(1){D=f[v+4>>2]|0;if((D|0)!=(z|0)){if(D>>>0>>0)G=D;else G=(D>>>0)%(y>>>0)|0;if((G|0)!=(A|0)){B=A;x=52;break a}}D=b[v+8+11>>0]|0;if(!((D<<24>>24<0?f[v+12>>2]|0:D&255)|0))break a;v=f[v>>2]|0;if(!v){B=A;x=52;break a}}}else H=m;while(1){v=f[H+4>>2]|0;if((v|0)!=(z|0)){if(v>>>0>>0)I=v;else I=(v>>>0)%(y>>>0)|0;if((I|0)!=(A|0)){B=A;x=52;break a}}v=H+8|0;r=b[v+11>>0]|0;D=r<<24>>24<0;s=r&255;do if(((D?f[H+12>>2]|0:s)|0)==(o|0)){r=f[v>>2]|0;if(D)if(!(Pk(r,c,o)|0))break a;else break;if((b[c>>0]|0)==(r&255)<<24>>24){r=v;d=s;F=c;do{d=d+-1|0;r=r+1|0;if(!d)break a;F=F+1|0}while((b[r>>0]|0)==(b[F>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){B=A;x=52;break}}}else{B=A;x=52}}else{B=0;x=52}while(0);if((x|0)==52){_h(g,a,z,i);x=a+12|0;J=$(((f[x>>2]|0)+1|0)>>>0);K=$(y>>>0);L=$(n[a+16>>2]);do if(w|$(L*K)>>0<3|(y+-1&y|0)!=0)&1;H=~~$(W($(J/L)))>>>0;Ph(a,A>>>0>>0?H:A);A=f[t>>2]|0;H=A+-1|0;if(!(H&A)){M=A;N=H&z;break}if(z>>>0>>0){M=A;N=z}else{M=A;N=(z>>>0)%(A>>>0)|0}}else{M=y;N=B}while(0);B=f[(f[a>>2]|0)+(N<<2)>>2]|0;if(!B){y=a+8|0;f[f[g>>2]>>2]=f[y>>2];f[y>>2]=f[g>>2];f[(f[a>>2]|0)+(N<<2)>>2]=y;y=f[g>>2]|0;N=f[y>>2]|0;if(!N)O=g;else{z=f[N+4>>2]|0;N=M+-1|0;if(N&M)if(z>>>0>>0)P=z;else P=(z>>>0)%(M>>>0)|0;else P=z&N;f[(f[a>>2]|0)+(P<<2)>>2]=y;O=g}}else{f[f[g>>2]>>2]=f[B>>2];f[B>>2]=f[g>>2];O=g}f[x>>2]=(f[x>>2]|0)+1;f[O>>2]=0}O=f[i+12>>2]|0;if(O|0){if((f[l>>2]|0)!=(O|0))f[l>>2]=O;br(O)}if((b[p>>0]|0)<0)br(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;br(i);u=e;return}function $b(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;e=u;u=u+96|0;g=e+92|0;h=e+88|0;i=e+72|0;j=e+48|0;k=e+24|0;l=e;m=a+16|0;n=f[m>>2]|0;o=f[c>>2]|0;f[i>>2]=n;f[i+4>>2]=o;c=i+8|0;f[c>>2]=o;b[i+12>>0]=1;p=(o|0)==-1;if(p)q=-1;else q=f[(f[n>>2]|0)+(o<<2)>>2]|0;n=a+20|0;r=f[n>>2]|0;s=f[r>>2]|0;if((f[r+4>>2]|0)-s>>2>>>0<=q>>>0)mq(r);r=a+8|0;t=f[(f[r>>2]|0)+(f[s+(q<<2)>>2]<<2)>>2]|0;q=a+4|0;s=f[q>>2]|0;if(!(b[s+84>>0]|0))v=f[(f[s+68>>2]|0)+(t<<2)>>2]|0;else v=t;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;f[h>>2]=v;v=b[s+24>>0]|0;f[g>>2]=f[h>>2];ub(s,g,v,j)|0;v=a+28|0;a=(f[v>>2]|0)==0;a:do if(!p){s=k+8|0;t=j+8|0;w=k+16|0;x=j+16|0;y=l+8|0;z=l+16|0;A=o;B=o;C=0;D=0;E=0;F=0;G=0;H=0;J=a;K=o;while(1){do if(J){L=K+1|0;if((K|0)==-1){M=A;N=-1;O=-1;P=-1;break}Q=((L>>>0)%3|0|0)==0?K+-2|0:L;if((A|0)!=-1)if(!((A>>>0)%3|0)){R=A;S=A+2|0;T=Q;U=A;V=19;break}else{R=A;S=A+-1|0;T=Q;U=A;V=19;break}else{R=-1;S=-1;T=Q;U=-1;V=19}}else{Q=B+1|0;L=((Q>>>0)%3|0|0)==0?B+-2|0:Q;if(!((B>>>0)%3|0)){R=A;S=B+2|0;T=L;U=K;V=19;break}else{R=A;S=B+-1|0;T=L;U=K;V=19;break}}while(0);if((V|0)==19){V=0;if((T|0)==-1){M=R;N=-1;O=S;P=U}else{M=R;N=f[(f[f[m>>2]>>2]|0)+(T<<2)>>2]|0;O=S;P=U}}W=f[n>>2]|0;L=f[W>>2]|0;if((f[W+4>>2]|0)-L>>2>>>0<=N>>>0){V=22;break}Q=f[(f[r>>2]|0)+(f[L+(N<<2)>>2]<<2)>>2]|0;L=f[q>>2]|0;if(!(b[L+84>>0]|0))X=f[(f[L+68>>2]|0)+(Q<<2)>>2]|0;else X=Q;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[h>>2]=X;Q=b[L+24>>0]|0;f[g>>2]=f[h>>2];ub(L,g,Q,k)|0;if((O|0)==-1)Y=-1;else Y=f[(f[f[m>>2]>>2]|0)+(O<<2)>>2]|0;Z=f[n>>2]|0;Q=f[Z>>2]|0;if((f[Z+4>>2]|0)-Q>>2>>>0<=Y>>>0){V=28;break}L=f[(f[r>>2]|0)+(f[Q+(Y<<2)>>2]<<2)>>2]|0;Q=f[q>>2]|0;if(!(b[Q+84>>0]|0))_=f[(f[Q+68>>2]|0)+(L<<2)>>2]|0;else _=L;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;f[h>>2]=_;L=b[Q+24>>0]|0;f[g>>2]=f[h>>2];ub(Q,g,L,l)|0;L=k;Q=j;$=f[Q>>2]|0;aa=f[Q+4>>2]|0;Q=Vn(f[L>>2]|0,f[L+4>>2]|0,$|0,aa|0)|0;L=I;ba=s;ca=t;da=f[ca>>2]|0;ea=f[ca+4>>2]|0;ca=Vn(f[ba>>2]|0,f[ba+4>>2]|0,da|0,ea|0)|0;ba=I;fa=w;ga=x;ha=f[ga>>2]|0;ia=f[ga+4>>2]|0;ga=Vn(f[fa>>2]|0,f[fa+4>>2]|0,ha|0,ia|0)|0;fa=I;ja=l;ka=Vn(f[ja>>2]|0,f[ja+4>>2]|0,$|0,aa|0)|0;aa=I;$=y;ja=Vn(f[$>>2]|0,f[$+4>>2]|0,da|0,ea|0)|0;ea=I;da=z;$=Vn(f[da>>2]|0,f[da+4>>2]|0,ha|0,ia|0)|0;ia=I;ha=on($|0,ia|0,ca|0,ba|0)|0;da=I;la=on(ja|0,ea|0,ga|0,fa|0)|0;ma=I;na=on(ka|0,aa|0,ga|0,fa|0)|0;fa=I;ga=on($|0,ia|0,Q|0,L|0)|0;ia=I;$=on(ja|0,ea|0,Q|0,L|0)|0;L=I;Q=on(ka|0,aa|0,ca|0,ba|0)|0;ba=I;ca=Vn(C|0,D|0,la|0,ma|0)|0;ma=Tn(ca|0,I|0,ha|0,da|0)|0;da=I;ha=Tn(na|0,fa|0,E|0,F|0)|0;fa=Vn(ha|0,I|0,ga|0,ia|0)|0;ia=I;ga=Vn(G|0,H|0,Q|0,ba|0)|0;ba=Tn(ga|0,I|0,$|0,L|0)|0;L=I;ph(i);B=f[c>>2]|0;$=(f[v>>2]|0)==0;if((B|0)==-1){oa=$;pa=da;qa=ma;ra=ia;sa=fa;ta=L;ua=ba;break a}else{A=M;C=ma;D=da;E=fa;F=ia;G=ba;H=L;J=$;K=P}}if((V|0)==22)mq(W);else if((V|0)==28)mq(Z)}else{oa=a;pa=0;qa=0;ra=0;sa=0;ta=0;ua=0}while(0);a=(pa|0)>-1|(pa|0)==-1&qa>>>0>4294967295;Z=Vn(0,0,qa|0,pa|0)|0;V=a?pa:I;W=(ra|0)>-1|(ra|0)==-1&sa>>>0>4294967295;P=Vn(0,0,sa|0,ra|0)|0;M=W?ra:I;v=(ta|0)>-1|(ta|0)==-1&ua>>>0>4294967295;c=Vn(0,0,ua|0,ta|0)|0;i=Tn((W?sa:P)|0,M|0,(v?ua:c)|0,(v?ta:I)|0)|0;v=Tn(i|0,I|0,(a?qa:Z)|0,V|0)|0;V=I;if(oa){if((v|0)<=536870912){va=qa;wa=sa;xa=ua;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}oa=Wn(v|0,V|0,29)|0;Z=oa&7;oa=zk(qa|0,pa|0,Z|0,0)|0;a=zk(sa|0,ra|0,Z|0,0)|0;i=zk(ua|0,ta|0,Z|0,0)|0;va=oa;wa=a;xa=i;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}else{if(!((V|0)>0|(V|0)==0&v>>>0>536870912)){va=qa;wa=sa;xa=ua;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}i=Wn(v|0,V|0,29)|0;V=I;v=zk(qa|0,pa|0,i|0,V|0)|0;pa=zk(sa|0,ra|0,i|0,V|0)|0;ra=zk(ua|0,ta|0,i|0,V|0)|0;va=v;wa=pa;xa=ra;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}}function ac(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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=Oa,M=Oa,N=Oa,O=0,P=0,Q=0,R=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=xd(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];Xe(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;l=d+11|0;m=b[l>>0]|0;o=d+4|0;p=f[o>>2]|0;q=m<<24>>24<0?p:m&255;if(!q){r=m;s=p;t=0}else{ri(j,q);r=b[l>>0]|0;s=f[o>>2]|0;t=f[j>>2]|0}o=r<<24>>24<0;Rg(t|0,(o?f[d>>2]|0:d)|0,(o?s:r&255)|0)|0;dj(i,c);c=i+12|0;f[c>>2]=0;r=i+16|0;f[r>>2]=0;f[i+20>>2]=0;s=f[k>>2]|0;o=f[j>>2]|0;d=s-o|0;if(!d){v=o;w=s;x=0}else{ri(c,d);v=f[j>>2]|0;w=f[k>>2]|0;x=f[c>>2]|0}Rg(x|0,v|0,w-v|0)|0;v=i+11|0;w=b[v>>0]|0;x=w<<24>>24<0;c=x?f[i>>2]|0:i;d=x?f[i+4>>2]|0:w&255;if(d>>>0>3){w=c;x=d;s=d;while(1){o=X(h[w>>0]|h[w+1>>0]<<8|h[w+2>>0]<<16|h[w+3>>0]<<24,1540483477)|0;x=(X(o>>>24^o,1540483477)|0)^(X(x,1540483477)|0);s=s+-4|0;if(s>>>0<=3)break;else w=w+4|0}w=d+-4|0;s=w&-4;y=w-s|0;z=c+(s+4)|0;A=x}else{y=d;z=c;A=d}switch(y|0){case 3:{B=h[z+2>>0]<<16^A;C=12;break}case 2:{B=A;C=12;break}case 1:{D=A;C=13;break}default:E=A}if((C|0)==12){D=h[z+1>>0]<<8^B;C=13}if((C|0)==13)E=X(D^h[z>>0],1540483477)|0;z=X(E>>>13^E,1540483477)|0;E=z>>>15^z;z=a+4|0;D=f[z>>2]|0;B=(D|0)==0;a:do if(!B){A=D+-1|0;y=(A&D|0)==0;if(!y)if(E>>>0>>0)F=E;else F=(E>>>0)%(D>>>0)|0;else F=E&A;x=f[(f[a>>2]|0)+(F<<2)>>2]|0;if((x|0)!=0?(s=f[x>>2]|0,(s|0)!=0):0){x=(d|0)==0;if(y){if(x){y=s;while(1){w=f[y+4>>2]|0;if(!((w|0)==(E|0)|(w&A|0)==(F|0))){G=F;C=54;break a}w=b[y+8+11>>0]|0;if(!((w<<24>>24<0?f[y+12>>2]|0:w&255)|0))break a;y=f[y>>2]|0;if(!y){G=F;C=54;break a}}}else H=s;while(1){y=f[H+4>>2]|0;if(!((y|0)==(E|0)|(y&A|0)==(F|0))){G=F;C=54;break a}y=H+8|0;w=b[y+11>>0]|0;o=w<<24>>24<0;t=w&255;do if(((o?f[H+12>>2]|0:t)|0)==(d|0)){w=f[y>>2]|0;if(o)if(!(Pk(w,c,d)|0))break a;else break;if((b[c>>0]|0)==(w&255)<<24>>24){w=y;l=t;q=c;do{l=l+-1|0;w=w+1|0;if(!l)break a;q=q+1|0}while((b[w>>0]|0)==(b[q>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){G=F;C=54;break a}}}if(x){A=s;while(1){t=f[A+4>>2]|0;if((t|0)!=(E|0)){if(t>>>0>>0)I=t;else I=(t>>>0)%(D>>>0)|0;if((I|0)!=(F|0)){G=F;C=54;break a}}t=b[A+8+11>>0]|0;if(!((t<<24>>24<0?f[A+12>>2]|0:t&255)|0))break a;A=f[A>>2]|0;if(!A){G=F;C=54;break a}}}else J=s;while(1){A=f[J+4>>2]|0;if((A|0)!=(E|0)){if(A>>>0>>0)K=A;else K=(A>>>0)%(D>>>0)|0;if((K|0)!=(F|0)){G=F;C=54;break a}}A=J+8|0;x=b[A+11>>0]|0;t=x<<24>>24<0;y=x&255;do if(((t?f[J+12>>2]|0:y)|0)==(d|0)){x=f[A>>2]|0;if(t)if(!(Pk(x,c,d)|0))break a;else break;if((b[c>>0]|0)==(x&255)<<24>>24){x=A;o=y;q=c;do{o=o+-1|0;x=x+1|0;if(!o)break a;q=q+1|0}while((b[x>>0]|0)==(b[q>>0]|0))}}while(0);J=f[J>>2]|0;if(!J){G=F;C=54;break}}}else{G=F;C=54}}else{G=0;C=54}while(0);if((C|0)==54){_h(g,a,E,i);C=a+12|0;L=$(((f[C>>2]|0)+1|0)>>>0);M=$(D>>>0);N=$(n[a+16>>2]);do if(B|$(N*M)>>0<3|(D+-1&D|0)!=0)&1;J=~~$(W($(L/N)))>>>0;Ph(a,F>>>0>>0?J:F);F=f[z>>2]|0;J=F+-1|0;if(!(J&F)){O=F;P=J&E;break}if(E>>>0>>0){O=F;P=E}else{O=F;P=(E>>>0)%(F>>>0)|0}}else{O=D;P=G}while(0);G=f[(f[a>>2]|0)+(P<<2)>>2]|0;if(!G){D=a+8|0;f[f[g>>2]>>2]=f[D>>2];f[D>>2]=f[g>>2];f[(f[a>>2]|0)+(P<<2)>>2]=D;D=f[g>>2]|0;P=f[D>>2]|0;if(!P)Q=g;else{E=f[P+4>>2]|0;P=O+-1|0;if(P&O)if(E>>>0>>0)R=E;else R=(E>>>0)%(O>>>0)|0;else R=E&P;f[(f[a>>2]|0)+(R<<2)>>2]=D;Q=g}}else{f[f[g>>2]>>2]=f[G>>2];f[G>>2]=f[g>>2];Q=g}f[C>>2]=(f[C>>2]|0)+1;f[Q>>2]=0}Q=f[i+12>>2]|0;if(Q|0){if((f[r>>2]|0)!=(Q|0))f[r>>2]=Q;br(Q)}if((b[v>>0]|0)<0)br(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;br(i);u=e;return}function bc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+12|0;j=g+32|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=0;z=r;A=0;B=0;C=r;D=r;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=on(f[r>>2]|0,f[r+4>>2]|0,y+A|0,0)|0;r=Tn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8;d[j>>1]=r;G=(r^318)&65535;a:do if(e){F=e+-1|0;H=(F&e|0)==0;if(!H)if(e>>>0>G>>>0)J=G;else J=(G>>>0)%(e>>>0)|0;else J=F&G;K=f[i>>2]|0;L=f[K+(J<<2)>>2]|0;b:do if(L|0?(M=f[L>>2]|0,M|0):0){c:do if(H){N=M;while(1){O=f[N+4>>2]|0;P=(O|0)==(G|0);if(!(P|(O&F|0)==(J|0)))break b;if(P?(d[N+8>>1]|0)==r<<16>>16:0){Q=N;break c}N=f[N>>2]|0;if(!N)break b}}else{N=M;while(1){P=f[N+4>>2]|0;if((P|0)==(G|0)){if((d[N+8>>1]|0)==r<<16>>16){Q=N;break c}}else{if(P>>>0>>0)R=P;else R=(P>>>0)%(e>>>0)|0;if((R|0)!=(J|0))break b}N=f[N>>2]|0;if(!N)break b}}while(0);f[E+(A<<2)>>2]=f[Q+12>>2];S=z;T=B;U=D;V=C;X=E;break a}while(0);if(!H)if(e>>>0>G>>>0)Y=G;else Y=(G>>>0)%(e>>>0)|0;else Y=F&G;L=f[K+(Y<<2)>>2]|0;if(!L){Z=Y;_=e;aa=0;ba=40}else{if(H){M=L;while(1){M=f[M>>2]|0;if(!M){Z=Y;_=e;aa=0;ba=40;break a}N=f[M+4>>2]|0;if(!((N|0)==(G|0)|(N&F|0)==(Y|0))){Z=Y;_=e;aa=0;ba=40;break a}if((d[M+8>>1]|0)==r<<16>>16){ba=55;break a}}}else ca=L;while(1){ca=f[ca>>2]|0;if(!ca){Z=Y;_=e;aa=0;ba=40;break a}M=f[ca+4>>2]|0;if((M|0)!=(G|0)){if(M>>>0>>0)da=M;else da=(M>>>0)%(e>>>0)|0;if((da|0)!=(Y|0)){Z=Y;_=e;aa=0;ba=40;break a}}if((d[ca+8>>1]|0)==r<<16>>16){ba=55;break}}}}else{Z=0;_=0;aa=1;ba=40}while(0);if((ba|0)==40){ba=0;L=dn(16)|0;d[L+8>>1]=r;f[L+12>>2]=B;f[L+4>>2]=G;f[L>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(_>>>0);ga=$(n[l>>2]);do if(aa|$(ga*fa)>>0<3|(_+-1&_|0)!=0)&1;F=~~$(W($(ea/ga)))>>>0;Fh(i,M>>>0>>0?F:M);M=f[o>>2]|0;F=M+-1|0;if(!(F&M)){ha=M;ia=F&G;break}if(M>>>0>G>>>0){ha=M;ia=G}else{ha=M;ia=(G>>>0)%(M>>>0)|0}}else{ha=_;ia=Z}while(0);G=(f[i>>2]|0)+(ia<<2)|0;r=f[G>>2]|0;if(!r){f[L>>2]=f[v>>2];f[v>>2]=L;f[G>>2]=v;G=f[L>>2]|0;if(G|0){M=f[G+4>>2]|0;G=ha+-1|0;if(G&ha)if(M>>>0>>0)ja=M;else ja=(M>>>0)%(ha>>>0)|0;else ja=M&G;ka=(f[i>>2]|0)+(ja<<2)|0;ba=53}}else{f[L>>2]=f[r>>2];ka=r;ba=53}if((ba|0)==53){ba=0;f[ka>>2]=L}f[t>>2]=(f[t>>2]|0)+1;ba=55}if((ba|0)==55){ba=0;r=w;G=f[r>>2]|0;M=on(G|0,f[r+4>>2]|0,B|0,0)|0;Rg((f[f[x>>2]>>2]|0)+M|0,j|0,G|0)|0;G=f[k>>2]|0;f[G+(A<<2)>>2]=B;S=G;T=B+1|0;U=G;V=G;X=G}G=A+1|0;la=f[m>>2]|0;if(G>>>0>=la>>>0)break;e=f[o>>2]|0;z=S;A=G;B=T;C=V;D=U;E=X}if((T|0)==(la|0))ma=V;else{V=a+84|0;if(!(b[V>>0]|0)){X=f[a+72>>2]|0;E=f[a+68>>2]|0;D=E;if((X|0)==(E|0))na=S;else{C=X-E>>2;E=0;do{X=D+(E<<2)|0;f[X>>2]=f[U+(f[X>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=S}}else{b[V>>0]=0;V=a+68|0;S=a+72|0;C=f[S>>2]|0;E=f[V>>2]|0;U=C-E>>2;D=E;E=C;if(la>>>0<=U>>>0)if(la>>>0>>0?(C=D+(la<<2)|0,(C|0)!=(E|0)):0){f[S>>2]=E+(~((E+-4-C|0)>>>2)<<2);oa=la}else oa=la;else{kh(V,la-U|0,1204);oa=f[m>>2]|0}U=f[k>>2]|0;if(!oa)na=U;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[U+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=U}}f[m>>2]=T;ma=na}if(!ma)pa=T;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);br(ma);pa=T}}else pa=0;T=f[i+8>>2]|0;if(T|0){ma=T;do{T=ma;ma=f[ma>>2]|0;br(T)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}br(ma);u=g;return pa|0}function cc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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=Oa,K=Oa,L=Oa,M=0,N=0,O=0,P=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=xd(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];Xe(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;ri(j,4);l=f[j>>2]|0;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[l>>0]=m;b[l+1>>0]=m>>8;b[l+2>>0]=m>>16;b[l+3>>0]=m>>24;dj(i,c);c=i+12|0;f[c>>2]=0;m=i+16|0;f[m>>2]=0;f[i+20>>2]=0;l=f[k>>2]|0;d=f[j>>2]|0;o=l-d|0;if(!o){p=d;q=l;r=0}else{ri(c,o);p=f[j>>2]|0;q=f[k>>2]|0;r=f[c>>2]|0}Rg(r|0,p|0,q-p|0)|0;p=i+11|0;q=b[p>>0]|0;r=q<<24>>24<0;c=r?f[i>>2]|0:i;o=r?f[i+4>>2]|0:q&255;if(o>>>0>3){q=c;r=o;l=o;while(1){d=X(h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24,1540483477)|0;r=(X(d>>>24^d,1540483477)|0)^(X(r,1540483477)|0);l=l+-4|0;if(l>>>0<=3)break;else q=q+4|0}q=o+-4|0;l=q&-4;s=q-l|0;t=c+(l+4)|0;v=r}else{s=o;t=c;v=o}switch(s|0){case 3:{w=h[t+2>>0]<<16^v;x=10;break}case 2:{w=v;x=10;break}case 1:{y=v;x=11;break}default:z=v}if((x|0)==10){y=h[t+1>>0]<<8^w;x=11}if((x|0)==11)z=X(y^h[t>>0],1540483477)|0;t=X(z>>>13^z,1540483477)|0;z=t>>>15^t;t=a+4|0;y=f[t>>2]|0;w=(y|0)==0;a:do if(!w){v=y+-1|0;s=(v&y|0)==0;if(!s)if(z>>>0>>0)A=z;else A=(z>>>0)%(y>>>0)|0;else A=z&v;r=f[(f[a>>2]|0)+(A<<2)>>2]|0;if((r|0)!=0?(l=f[r>>2]|0,(l|0)!=0):0){r=(o|0)==0;if(s){if(r){s=l;while(1){q=f[s+4>>2]|0;if(!((q|0)==(z|0)|(q&v|0)==(A|0))){B=A;x=52;break a}q=b[s+8+11>>0]|0;if(!((q<<24>>24<0?f[s+12>>2]|0:q&255)|0))break a;s=f[s>>2]|0;if(!s){B=A;x=52;break a}}}else C=l;while(1){s=f[C+4>>2]|0;if(!((s|0)==(z|0)|(s&v|0)==(A|0))){B=A;x=52;break a}s=C+8|0;q=b[s+11>>0]|0;d=q<<24>>24<0;D=q&255;do if(((d?f[C+12>>2]|0:D)|0)==(o|0)){q=f[s>>2]|0;if(d)if(!(Pk(q,c,o)|0))break a;else break;if((b[c>>0]|0)==(q&255)<<24>>24){q=s;E=D;F=c;do{E=E+-1|0;q=q+1|0;if(!E)break a;F=F+1|0}while((b[q>>0]|0)==(b[F>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){B=A;x=52;break a}}}if(r){v=l;while(1){D=f[v+4>>2]|0;if((D|0)!=(z|0)){if(D>>>0>>0)G=D;else G=(D>>>0)%(y>>>0)|0;if((G|0)!=(A|0)){B=A;x=52;break a}}D=b[v+8+11>>0]|0;if(!((D<<24>>24<0?f[v+12>>2]|0:D&255)|0))break a;v=f[v>>2]|0;if(!v){B=A;x=52;break a}}}else H=l;while(1){v=f[H+4>>2]|0;if((v|0)!=(z|0)){if(v>>>0>>0)I=v;else I=(v>>>0)%(y>>>0)|0;if((I|0)!=(A|0)){B=A;x=52;break a}}v=H+8|0;r=b[v+11>>0]|0;D=r<<24>>24<0;s=r&255;do if(((D?f[H+12>>2]|0:s)|0)==(o|0)){r=f[v>>2]|0;if(D)if(!(Pk(r,c,o)|0))break a;else break;if((b[c>>0]|0)==(r&255)<<24>>24){r=v;d=s;F=c;do{d=d+-1|0;r=r+1|0;if(!d)break a;F=F+1|0}while((b[r>>0]|0)==(b[F>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){B=A;x=52;break}}}else{B=A;x=52}}else{B=0;x=52}while(0);if((x|0)==52){_h(g,a,z,i);x=a+12|0;J=$(((f[x>>2]|0)+1|0)>>>0);K=$(y>>>0);L=$(n[a+16>>2]);do if(w|$(L*K)>>0<3|(y+-1&y|0)!=0)&1;H=~~$(W($(J/L)))>>>0;Ph(a,A>>>0>>0?H:A);A=f[t>>2]|0;H=A+-1|0;if(!(H&A)){M=A;N=H&z;break}if(z>>>0>>0){M=A;N=z}else{M=A;N=(z>>>0)%(A>>>0)|0}}else{M=y;N=B}while(0);B=f[(f[a>>2]|0)+(N<<2)>>2]|0;if(!B){y=a+8|0;f[f[g>>2]>>2]=f[y>>2];f[y>>2]=f[g>>2];f[(f[a>>2]|0)+(N<<2)>>2]=y;y=f[g>>2]|0;N=f[y>>2]|0;if(!N)O=g;else{z=f[N+4>>2]|0;N=M+-1|0;if(N&M)if(z>>>0>>0)P=z;else P=(z>>>0)%(M>>>0)|0;else P=z&N;f[(f[a>>2]|0)+(P<<2)>>2]=y;O=g}}else{f[f[g>>2]>>2]=f[B>>2];f[B>>2]=f[g>>2];O=g}f[x>>2]=(f[x>>2]|0)+1;f[O>>2]=0}O=f[i+12>>2]|0;if(O|0){if((f[m>>2]|0)!=(O|0))f[m>>2]=O;br(O)}if((b[p>>0]|0)<0)br(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;br(i);u=e;return}function dc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=Oa,da=Oa,ea=Oa,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;e=u;u=u+48|0;g=e+12|0;h=e+32|0;i=e;j=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[j>>2]=$(1.0);k=a+80|0;l=f[k>>2]|0;f[i>>2]=0;m=i+4|0;f[m>>2]=0;f[i+8>>2]=0;if(l){if(l>>>0>1073741823)mq(i);o=l<<2;p=dn(o)|0;f[i>>2]=p;q=p+(l<<2)|0;f[i+8>>2]=q;hj(p|0,0,o|0)|0;f[m>>2]=q;q=c+48|0;o=c+40|0;l=g+4|0;r=g+12|0;s=g+8|0;t=a+40|0;v=a+64|0;w=f[d>>2]|0;d=0;x=p;y=0;z=0;A=p;B=p;C=p;while(1){p=q;D=f[p>>2]|0;E=f[p+4>>2]|0;p=o;F=on(f[p>>2]|0,f[p+4>>2]|0,w+y|0,0)|0;p=Tn(F|0,I|0,D|0,E|0)|0;E=b[(f[f[c>>2]>>2]|0)+p>>0]|0;b[h>>0]=E;p=E&255^318;a:do if(d){D=d+-1|0;F=(D&d|0)==0;if(!F)if(p>>>0>>0)G=p;else G=(p>>>0)%(d>>>0)|0;else G=D&p;H=f[g>>2]|0;J=f[H+(G<<2)>>2]|0;b:do if(J|0?(K=f[J>>2]|0,K|0):0){c:do if(F){L=K;while(1){M=f[L+4>>2]|0;N=(M|0)==(p|0);if(!(N|(M&D|0)==(G|0)))break b;if(N?(b[L+8>>0]|0)==E<<24>>24:0){O=L;break c}L=f[L>>2]|0;if(!L)break b}}else{L=K;while(1){N=f[L+4>>2]|0;if((N|0)==(p|0)){if((b[L+8>>0]|0)==E<<24>>24){O=L;break c}}else{if(N>>>0>>0)P=N;else P=(N>>>0)%(d>>>0)|0;if((P|0)!=(G|0))break b}L=f[L>>2]|0;if(!L)break b}}while(0);f[C+(y<<2)>>2]=f[O+12>>2];Q=x;R=z;S=B;T=A;U=C;break a}while(0);if(!F)if(p>>>0>>0)V=p;else V=(p>>>0)%(d>>>0)|0;else V=D&p;J=f[H+(V<<2)>>2]|0;if(!J){X=V;Y=d;Z=0;_=40}else{if(F){K=J;while(1){K=f[K>>2]|0;if(!K){X=V;Y=d;Z=0;_=40;break a}L=f[K+4>>2]|0;if(!((L|0)==(p|0)|(L&D|0)==(V|0))){X=V;Y=d;Z=0;_=40;break a}if((b[K+8>>0]|0)==E<<24>>24){_=55;break a}}}else aa=J;while(1){aa=f[aa>>2]|0;if(!aa){X=V;Y=d;Z=0;_=40;break a}K=f[aa+4>>2]|0;if((K|0)!=(p|0)){if(K>>>0>>0)ba=K;else ba=(K>>>0)%(d>>>0)|0;if((ba|0)!=(V|0)){X=V;Y=d;Z=0;_=40;break a}}if((b[aa+8>>0]|0)==E<<24>>24){_=55;break}}}}else{X=0;Y=0;Z=1;_=40}while(0);if((_|0)==40){_=0;J=dn(16)|0;b[J+8>>0]=E;f[J+12>>2]=z;f[J+4>>2]=p;f[J>>2]=0;ca=$(((f[r>>2]|0)+1|0)>>>0);da=$(Y>>>0);ea=$(n[j>>2]);do if(Z|$(ea*da)>>0<3|(Y+-1&Y|0)!=0)&1;D=~~$(W($(ca/ea)))>>>0;Mh(g,K>>>0>>0?D:K);K=f[l>>2]|0;D=K+-1|0;if(!(D&K)){fa=K;ga=D&p;break}if(p>>>0>>0){fa=K;ga=p}else{fa=K;ga=(p>>>0)%(K>>>0)|0}}else{fa=Y;ga=X}while(0);p=(f[g>>2]|0)+(ga<<2)|0;E=f[p>>2]|0;if(!E){f[J>>2]=f[s>>2];f[s>>2]=J;f[p>>2]=s;p=f[J>>2]|0;if(p|0){K=f[p+4>>2]|0;p=fa+-1|0;if(p&fa)if(K>>>0>>0)ha=K;else ha=(K>>>0)%(fa>>>0)|0;else ha=K&p;ia=(f[g>>2]|0)+(ha<<2)|0;_=53}}else{f[J>>2]=f[E>>2];ia=E;_=53}if((_|0)==53){_=0;f[ia>>2]=J}f[r>>2]=(f[r>>2]|0)+1;_=55}if((_|0)==55){_=0;E=t;p=f[E>>2]|0;K=on(p|0,f[E+4>>2]|0,z|0,0)|0;Rg((f[f[v>>2]>>2]|0)+K|0,h|0,p|0)|0;p=f[i>>2]|0;f[p+(y<<2)>>2]=z;Q=p;R=z+1|0;S=p;T=p;U=p}p=y+1|0;ja=f[k>>2]|0;if(p>>>0>=ja>>>0)break;d=f[l>>2]|0;x=Q;y=p;z=R;A=T;B=S;C=U}if((R|0)==(ja|0))ka=T;else{T=a+84|0;if(!(b[T>>0]|0)){U=f[a+72>>2]|0;C=f[a+68>>2]|0;B=C;if((U|0)==(C|0))la=Q;else{A=U-C>>2;C=0;do{U=B+(C<<2)|0;f[U>>2]=f[S+(f[U>>2]<<2)>>2];C=C+1|0}while(C>>>0>>0);la=Q}}else{b[T>>0]=0;T=a+68|0;Q=a+72|0;A=f[Q>>2]|0;C=f[T>>2]|0;S=A-C>>2;B=C;C=A;if(ja>>>0<=S>>>0)if(ja>>>0>>0?(A=B+(ja<<2)|0,(A|0)!=(C|0)):0){f[Q>>2]=C+(~((C+-4-A|0)>>>2)<<2);ma=ja}else ma=ja;else{kh(T,ja-S|0,1204);ma=f[k>>2]|0}S=f[i>>2]|0;if(!ma)la=S;else{i=f[a+68>>2]|0;a=0;do{f[i+(a<<2)>>2]=f[S+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);la=S}}f[k>>2]=R;ka=la}if(!ka)na=R;else{la=f[m>>2]|0;if((la|0)!=(ka|0))f[m>>2]=la+(~((la+-4-ka|0)>>>2)<<2);br(ka);na=R}}else na=0;R=f[g+8>>2]|0;if(R|0){ka=R;do{R=ka;ka=f[ka>>2]|0;br(R)}while((ka|0)!=0)}ka=f[g>>2]|0;f[g>>2]=0;if(!ka){u=e;return na|0}br(ka);u=e;return na|0}function ec(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=Oa,ea=Oa,fa=Oa,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;e=u;u=u+48|0;g=e+16|0;i=e+12|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=c+48|0;p=c+40|0;m=g+4|0;s=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=f[d>>2]|0;d=0;y=q;z=0;A=0;B=q;C=q;D=q;while(1){q=r;E=f[q>>2]|0;F=f[q+4>>2]|0;q=p;G=on(f[q>>2]|0,f[q+4>>2]|0,x+z|0,0)|0;q=Tn(G|0,I|0,E|0,F|0)|0;F=(f[f[c>>2]>>2]|0)+q|0;q=h[F>>0]|h[F+1>>0]<<8|h[F+2>>0]<<16|h[F+3>>0]<<24;f[i>>2]=q;F=q^318;a:do if(d){E=d+-1|0;G=(E&d|0)==0;if(!G)if(F>>>0>>0)H=F;else H=(F>>>0)%(d>>>0)|0;else H=E&F;J=f[g>>2]|0;K=f[J+(H<<2)>>2]|0;b:do if(K|0?(L=f[K>>2]|0,L|0):0){c:do if(G){M=L;while(1){N=f[M+4>>2]|0;O=(N|0)==(F|0);if(!(O|(N&E|0)==(H|0)))break b;if(O?(f[M+8>>2]|0)==(q|0):0){P=M;break c}M=f[M>>2]|0;if(!M)break b}}else{M=L;while(1){O=f[M+4>>2]|0;if((O|0)==(F|0)){if((f[M+8>>2]|0)==(q|0)){P=M;break c}}else{if(O>>>0>>0)Q=O;else Q=(O>>>0)%(d>>>0)|0;if((Q|0)!=(H|0))break b}M=f[M>>2]|0;if(!M)break b}}while(0);f[D+(z<<2)>>2]=f[P+12>>2];R=y;S=A;T=C;U=B;V=D;break a}while(0);if(!G)if(F>>>0>>0)X=F;else X=(F>>>0)%(d>>>0)|0;else X=E&F;K=f[J+(X<<2)>>2]|0;if(!K){Y=X;Z=d;_=0;aa=40}else{if(G){L=K;while(1){L=f[L>>2]|0;if(!L){Y=X;Z=d;_=0;aa=40;break a}M=f[L+4>>2]|0;if(!((M|0)==(F|0)|(M&E|0)==(X|0))){Y=X;Z=d;_=0;aa=40;break a}if((f[L+8>>2]|0)==(q|0)){aa=55;break a}}}else ba=K;while(1){ba=f[ba>>2]|0;if(!ba){Y=X;Z=d;_=0;aa=40;break a}L=f[ba+4>>2]|0;if((L|0)!=(F|0)){if(L>>>0>>0)ca=L;else ca=(L>>>0)%(d>>>0)|0;if((ca|0)!=(X|0)){Y=X;Z=d;_=0;aa=40;break a}}if((f[ba+8>>2]|0)==(q|0)){aa=55;break}}}}else{Y=0;Z=0;_=1;aa=40}while(0);if((aa|0)==40){aa=0;K=dn(16)|0;f[K+8>>2]=q;f[K+12>>2]=A;f[K+4>>2]=F;f[K>>2]=0;da=$(((f[s>>2]|0)+1|0)>>>0);ea=$(Z>>>0);fa=$(n[k>>2]);do if(_|$(fa*ea)>>0<3|(Z+-1&Z|0)!=0)&1;E=~~$(W($(da/fa)))>>>0;ti(g,L>>>0>>0?E:L);L=f[m>>2]|0;E=L+-1|0;if(!(E&L)){ga=L;ha=E&F;break}if(F>>>0>>0){ga=L;ha=F}else{ga=L;ha=(F>>>0)%(L>>>0)|0}}else{ga=Z;ha=Y}while(0);F=(f[g>>2]|0)+(ha<<2)|0;q=f[F>>2]|0;if(!q){f[K>>2]=f[t>>2];f[t>>2]=K;f[F>>2]=t;F=f[K>>2]|0;if(F|0){L=f[F+4>>2]|0;F=ga+-1|0;if(F&ga)if(L>>>0>>0)ia=L;else ia=(L>>>0)%(ga>>>0)|0;else ia=L&F;ja=(f[g>>2]|0)+(ia<<2)|0;aa=53}}else{f[K>>2]=f[q>>2];ja=q;aa=53}if((aa|0)==53){aa=0;f[ja>>2]=K}f[s>>2]=(f[s>>2]|0)+1;aa=55}if((aa|0)==55){aa=0;q=v;F=f[q>>2]|0;L=on(F|0,f[q+4>>2]|0,A|0,0)|0;Rg((f[f[w>>2]>>2]|0)+L|0,i|0,F|0)|0;F=f[j>>2]|0;f[F+(z<<2)>>2]=A;R=F;S=A+1|0;T=F;U=F;V=F}F=z+1|0;ka=f[l>>2]|0;if(F>>>0>=ka>>>0)break;d=f[m>>2]|0;y=R;z=F;A=S;B=U;C=T;D=V}if((S|0)==(ka|0))la=U;else{U=a+84|0;if(!(b[U>>0]|0)){V=f[a+72>>2]|0;D=f[a+68>>2]|0;C=D;if((V|0)==(D|0))ma=R;else{B=V-D>>2;D=0;do{V=C+(D<<2)|0;f[V>>2]=f[T+(f[V>>2]<<2)>>2];D=D+1|0}while(D>>>0>>0);ma=R}}else{b[U>>0]=0;U=a+68|0;R=a+72|0;B=f[R>>2]|0;D=f[U>>2]|0;T=B-D>>2;C=D;D=B;if(ka>>>0<=T>>>0)if(ka>>>0>>0?(B=C+(ka<<2)|0,(B|0)!=(D|0)):0){f[R>>2]=D+(~((D+-4-B|0)>>>2)<<2);na=ka}else na=ka;else{kh(U,ka-T|0,1204);na=f[l>>2]|0}T=f[j>>2]|0;if(!na)ma=T;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[T+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);ma=T}}f[l>>2]=S;la=ma}if(!la)oa=S;else{ma=f[o>>2]|0;if((ma|0)!=(la|0))f[o>>2]=ma+(~((ma+-4-la|0)>>>2)<<2);br(la);oa=S}}else oa=0;S=f[g+8>>2]|0;if(S|0){la=S;do{S=la;la=f[la>>2]|0;br(S)}while((la|0)!=0)}la=f[g>>2]|0;f[g>>2]=0;if(!la){u=e;return oa|0}br(la);u=e;return oa|0}function fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;e=u;u=u+96|0;g=e+92|0;h=e+88|0;i=e+72|0;j=e+48|0;k=e+24|0;l=e;m=a+16|0;n=f[m>>2]|0;o=f[c>>2]|0;f[i>>2]=n;f[i+4>>2]=o;c=i+8|0;f[c>>2]=o;b[i+12>>0]=1;p=f[(f[n+28>>2]|0)+(o<<2)>>2]|0;n=a+20|0;q=f[n>>2]|0;r=f[q>>2]|0;if((f[q+4>>2]|0)-r>>2>>>0<=p>>>0)mq(q);q=a+8|0;s=f[(f[q>>2]|0)+(f[r+(p<<2)>>2]<<2)>>2]|0;p=a+4|0;r=f[p>>2]|0;if(!(b[r+84>>0]|0))t=f[(f[r+68>>2]|0)+(s<<2)>>2]|0;else t=s;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;f[h>>2]=t;t=b[r+24>>0]|0;f[g>>2]=f[h>>2];ub(r,g,t,j)|0;t=a+28|0;a=(f[t>>2]|0)==0;a:do if((o|0)!=-1){r=k+8|0;s=j+8|0;v=k+16|0;w=j+16|0;x=l+8|0;y=l+16|0;z=o;A=o;B=0;C=0;D=0;E=0;F=0;G=0;H=a;J=o;while(1){do if(H){K=J+1|0;if((J|0)!=-1){L=((K>>>0)%3|0|0)==0?J+-2|0:K;if((z|0)!=-1)if(!((z>>>0)%3|0)){M=z;N=z+2|0;O=L;P=z;break}else{M=z;N=z+-1|0;O=L;P=z;break}else{M=-1;N=-1;O=L;P=-1}}else{M=z;N=-1;O=-1;P=-1}}else{L=A+1|0;K=((L>>>0)%3|0|0)==0?A+-2|0:L;if(!((A>>>0)%3|0)){M=z;N=A+2|0;O=K;P=J;break}else{M=z;N=A+-1|0;O=K;P=J;break}}while(0);K=f[(f[(f[m>>2]|0)+28>>2]|0)+(O<<2)>>2]|0;Q=f[n>>2]|0;L=f[Q>>2]|0;if((f[Q+4>>2]|0)-L>>2>>>0<=K>>>0){R=17;break}S=f[(f[q>>2]|0)+(f[L+(K<<2)>>2]<<2)>>2]|0;K=f[p>>2]|0;if(!(b[K+84>>0]|0))T=f[(f[K+68>>2]|0)+(S<<2)>>2]|0;else T=S;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[h>>2]=T;S=b[K+24>>0]|0;f[g>>2]=f[h>>2];ub(K,g,S,k)|0;S=f[(f[(f[m>>2]|0)+28>>2]|0)+(N<<2)>>2]|0;U=f[n>>2]|0;K=f[U>>2]|0;if((f[U+4>>2]|0)-K>>2>>>0<=S>>>0){R=21;break}L=f[(f[q>>2]|0)+(f[K+(S<<2)>>2]<<2)>>2]|0;S=f[p>>2]|0;if(!(b[S+84>>0]|0))V=f[(f[S+68>>2]|0)+(L<<2)>>2]|0;else V=L;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;f[h>>2]=V;L=b[S+24>>0]|0;f[g>>2]=f[h>>2];ub(S,g,L,l)|0;L=k;S=j;K=f[S>>2]|0;W=f[S+4>>2]|0;S=Vn(f[L>>2]|0,f[L+4>>2]|0,K|0,W|0)|0;L=I;X=r;Y=s;Z=f[Y>>2]|0;_=f[Y+4>>2]|0;Y=Vn(f[X>>2]|0,f[X+4>>2]|0,Z|0,_|0)|0;X=I;$=v;aa=w;ba=f[aa>>2]|0;ca=f[aa+4>>2]|0;aa=Vn(f[$>>2]|0,f[$+4>>2]|0,ba|0,ca|0)|0;$=I;da=l;ea=Vn(f[da>>2]|0,f[da+4>>2]|0,K|0,W|0)|0;W=I;K=x;da=Vn(f[K>>2]|0,f[K+4>>2]|0,Z|0,_|0)|0;_=I;Z=y;K=Vn(f[Z>>2]|0,f[Z+4>>2]|0,ba|0,ca|0)|0;ca=I;ba=on(K|0,ca|0,Y|0,X|0)|0;Z=I;fa=on(da|0,_|0,aa|0,$|0)|0;ga=I;ha=on(ea|0,W|0,aa|0,$|0)|0;$=I;aa=on(K|0,ca|0,S|0,L|0)|0;ca=I;K=on(da|0,_|0,S|0,L|0)|0;L=I;S=on(ea|0,W|0,Y|0,X|0)|0;X=I;Y=Vn(B|0,C|0,fa|0,ga|0)|0;ga=Tn(Y|0,I|0,ba|0,Z|0)|0;Z=I;ba=Tn(ha|0,$|0,D|0,E|0)|0;$=Vn(ba|0,I|0,aa|0,ca|0)|0;ca=I;aa=Vn(F|0,G|0,S|0,X|0)|0;X=Tn(aa|0,I|0,K|0,L|0)|0;L=I;xg(i);A=f[c>>2]|0;K=(f[t>>2]|0)==0;if((A|0)==-1){ia=K;ja=Z;ka=ga;la=ca;ma=$;na=L;oa=X;break a}else{z=M;B=ga;C=Z;D=$;E=ca;F=X;G=L;H=K;J=P}}if((R|0)==17)mq(Q);else if((R|0)==21)mq(U)}else{ia=a;ja=0;ka=0;la=0;ma=0;na=0;oa=0}while(0);a=(ja|0)>-1|(ja|0)==-1&ka>>>0>4294967295;U=Vn(0,0,ka|0,ja|0)|0;R=a?ja:I;Q=(la|0)>-1|(la|0)==-1&ma>>>0>4294967295;P=Vn(0,0,ma|0,la|0)|0;M=Q?la:I;t=(na|0)>-1|(na|0)==-1&oa>>>0>4294967295;c=Vn(0,0,oa|0,na|0)|0;i=Tn((Q?ma:P)|0,M|0,(t?oa:c)|0,(t?na:I)|0)|0;t=Tn(i|0,I|0,(a?ka:U)|0,R|0)|0;R=I;if(ia){if((t|0)<=536870912){pa=ka;qa=ma;ra=oa;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}ia=Wn(t|0,R|0,29)|0;U=ia&7;ia=zk(ka|0,ja|0,U|0,0)|0;a=zk(ma|0,la|0,U|0,0)|0;i=zk(oa|0,na|0,U|0,0)|0;pa=ia;qa=a;ra=i;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}else{if(!((R|0)>0|(R|0)==0&t>>>0>536870912)){pa=ka;qa=ma;ra=oa;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}i=Wn(t|0,R|0,29)|0;R=I;t=zk(ka|0,ja|0,i|0,R|0)|0;ja=zk(ma|0,la|0,i|0,R|0)|0;la=zk(oa|0,na|0,i|0,R|0)|0;pa=t;qa=ja;ra=la;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}}function gc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;g=u;u=u+48|0;i=g+28|0;j=g+8|0;k=g;l=g+16|0;m=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[m>>2]=$(1.0);o=a+80|0;p=f[o>>2]|0;f[l>>2]=0;q=l+4|0;f[q>>2]=0;f[l+8>>2]=0;if(p){if(p>>>0>1073741823)mq(l);r=p<<2;s=dn(r)|0;f[l>>2]=s;t=s+(p<<2)|0;f[l+8>>2]=t;hj(s|0,0,r|0)|0;f[q>>2]=t;t=f[e>>2]|0;e=c+48|0;r=c+40|0;s=i+4|0;p=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=e;B=f[A>>2]|0;C=f[A+4>>2]|0;A=r;D=on(f[A>>2]|0,f[A+4>>2]|0,t+y|0,0)|0;A=Tn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;A=C;B=h[A>>0]|h[A+1>>0]<<8|h[A+2>>0]<<16|h[A+3>>0]<<24;A=C+4|0;C=h[A>>0]|h[A+1>>0]<<8|h[A+2>>0]<<16|h[A+3>>0]<<24;A=j;f[A>>2]=B;f[A+4>>2]=C;A=k;f[A>>2]=B;f[A+4>>2]=C;C=kf(i,k)|0;if(!C){A=k;B=f[A>>2]|0;D=f[A+4>>2]|0;A=B&65535;E=Wn(B|0,D|0,16)|0;F=E&65535;G=D&65535;H=Wn(B|0,D|0,48)|0;J=H&65535;K=((((A^318)&65535)+239^E&65535)+239^D&65535)+239^H&65535;H=f[s>>2]|0;E=(H|0)==0;a:do if(!E){L=H+-1|0;M=(L&H|0)==0;if(!M)if(K>>>0>>0)N=K;else N=(K>>>0)%(H>>>0)|0;else N=K&L;O=f[(f[i>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(K|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}O=M+8|0;if((((d[O>>1]|0)==A<<16>>16?(d[O+2>>1]|0)==F<<16>>16:0)?(d[M+12>>1]|0)==G<<16>>16:0)?(d[O+6>>1]|0)==J<<16>>16:0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(K|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(H>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}M=S+8|0;if((((d[M>>1]|0)==A<<16>>16?(d[M+2>>1]|0)==F<<16>>16:0)?(d[S+12>>1]|0)==G<<16>>16:0)?(d[M+6>>1]|0)==J<<16>>16:0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;J=dn(20)|0;G=J+8|0;F=G;d[F>>1]=B;d[F+2>>1]=B>>>16;F=G+4|0;d[F>>1]=D;d[F+2>>1]=D>>>16;f[J+16>>2]=z;f[J+4>>2]=K;f[J>>2]=0;U=$(((f[p>>2]|0)+1|0)>>>0);V=$(H>>>0);X=$(n[m>>2]);do if(E|$(X*V)>>0<3|(H+-1&H|0)!=0)&1;G=~~$(W($(U/X)))>>>0;Ch(i,F>>>0>>0?G:F);F=f[s>>2]|0;G=F+-1|0;if(!(G&F)){Y=F;Z=G&K;break}if(K>>>0>>0){Y=F;Z=K}else{Y=F;Z=(K>>>0)%(F>>>0)|0}}else{Y=H;Z=Q}while(0);H=(f[i>>2]|0)+(Z<<2)|0;K=f[H>>2]|0;if(!K){f[J>>2]=f[v>>2];f[v>>2]=J;f[H>>2]=v;H=f[J>>2]|0;if(H|0){E=f[H+4>>2]|0;H=Y+-1|0;if(H&Y)if(E>>>0>>0)_=E;else _=(E>>>0)%(Y>>>0)|0;else _=E&H;aa=(f[i>>2]|0)+(_<<2)|0;R=44}}else{f[J>>2]=f[K>>2];aa=K;R=44}if((R|0)==44){R=0;f[aa>>2]=J}f[p>>2]=(f[p>>2]|0)+1}K=w;H=f[K>>2]|0;E=on(H|0,f[K+4>>2]|0,z|0,0)|0;Rg((f[f[x>>2]>>2]|0)+E|0,j|0,H|0)|0;H=f[l>>2]|0;f[H+(y<<2)>>2]=z;ba=z+1|0;ca=H}else{H=f[l>>2]|0;f[H+(y<<2)>>2]=f[C+16>>2];ba=z;ca=H}y=y+1|0;da=f[o>>2]|0;if(y>>>0>=da>>>0)break;else z=ba}if((ba|0)==(da|0))ea=ca;else{z=a+84|0;if(!(b[z>>0]|0)){y=f[a+72>>2]|0;j=f[a+68>>2]|0;x=j;if((y|0)==(j|0))fa=ca;else{w=y-j>>2;j=0;do{y=x+(j<<2)|0;f[y>>2]=f[ca+(f[y>>2]<<2)>>2];j=j+1|0}while(j>>>0>>0);fa=ca}}else{b[z>>0]=0;z=a+68|0;ca=a+72|0;w=f[ca>>2]|0;j=f[z>>2]|0;x=w-j>>2;y=j;j=w;if(da>>>0<=x>>>0)if(da>>>0>>0?(w=y+(da<<2)|0,(w|0)!=(j|0)):0){f[ca>>2]=j+(~((j+-4-w|0)>>>2)<<2);ga=da}else ga=da;else{kh(z,da-x|0,1204);ga=f[o>>2]|0}x=f[l>>2]|0;if(!ga)fa=x;else{l=f[a+68>>2]|0;a=0;do{f[l+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=x}}f[o>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[q>>2]|0;if((fa|0)!=(ea|0))f[q>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);br(ea);ha=ba}}else ha=0;ba=f[i+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;br(ba)}while((ea|0)!=0)}ea=f[i>>2]|0;f[i>>2]=0;if(!ea){u=g;return ha|0}br(ea);u=g;return ha|0}function hc(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;c=u;u=u+16|0;d=c+8|0;e=c;g=c+4|0;h=a+16|0;i=f[h>>2]|0;j=a+20|0;k=f[j>>2]|0;if((k|0)==(i|0))l=i;else{m=k+(~((k+-4-i|0)>>>2)<<2)|0;f[j>>2]=m;l=m}m=a+24|0;if((l|0)==(f[m>>2]|0)){Ci(h,b);n=f[h>>2]|0;o=f[j>>2]|0}else{f[l>>2]=f[b>>2];k=l+4|0;f[j>>2]=k;n=i;o=k}k=f[a+8>>2]|0;i=(f[k+100>>2]|0)-(f[k+96>>2]|0)|0;k=(i|0)/12|0;if((n|0)==(o|0)){u=c;return 1}n=a+28|0;l=(i|0)>0;i=a+164|0;p=a+12|0;q=a+76|0;r=a+80|0;s=a+72|0;t=a+152|0;v=a+84|0;w=a+272|0;x=a+276|0;y=a+268|0;z=a+168|0;A=a+140|0;B=a+120|0;C=o;do{o=f[C+-4>>2]|0;f[b>>2]=o;a:do if((o|0)!=-1?(D=(o>>>0)/3|0,E=f[n>>2]|0,(f[E+(D>>>5<<2)>>2]&1<<(D&31)|0)==0):0){if(l){D=0;F=E;b:while(1){E=D+1|0;f[i>>2]=(f[i>>2]|0)+1;G=f[b>>2]|0;H=(G|0)==-1?-1:(G>>>0)/3|0;G=F+(H>>>5<<2)|0;f[G>>2]=1<<(H&31)|f[G>>2];G=f[q>>2]|0;if((G|0)==(f[r>>2]|0))Ci(s,b);else{f[G>>2]=f[b>>2];f[q>>2]=G+4}G=f[b>>2]|0;if((G|0)==-1)I=-1;else I=f[(f[f[p>>2]>>2]|0)+(G<<2)>>2]|0;J=(f[(f[t>>2]|0)+(I<<2)>>2]|0)!=-1;K=(f[v>>2]|0)+(I>>>5<<2)|0;L=1<<(I&31);M=f[K>>2]|0;do if(!(M&L)){f[K>>2]=M|L;if(J){N=f[b>>2]|0;O=30;break}f[d>>2]=0;P=f[w>>2]|0;if((P|0)==(f[x>>2]|0))Ci(y,d);else{f[P>>2]=0;f[w>>2]=P+4}P=f[b>>2]|0;Q=P+1|0;if((P|0)!=-1?(R=((Q>>>0)%3|0|0)==0?P+-2|0:Q,(R|0)!=-1):0)S=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;else S=-1;f[b>>2]=S}else{N=G;O=30}while(0);if((O|0)==30){O=0;G=N+1|0;if((N|0)==-1){O=35;break}L=((G>>>0)%3|0|0)==0?N+-2|0:G;if((L|0)==-1)T=-1;else T=f[(f[(f[p>>2]|0)+12>>2]|0)+(L<<2)>>2]|0;f[e>>2]=T;L=(((N>>>0)%3|0|0)==0?2:-1)+N|0;if((L|0)==-1)U=-1;else U=f[(f[(f[p>>2]|0)+12>>2]|0)+(L<<2)>>2]|0;L=(T|0)==-1;M=L?-1:(T>>>0)/3|0;V=(U|0)==-1;W=V?-1:(U>>>0)/3|0;K=((G>>>0)%3|0|0)==0?N+-2|0:G;if(((K|0)!=-1?(G=f[(f[p>>2]|0)+12>>2]|0,R=f[G+(K<<2)>>2]|0,(R|0)!=-1):0)?(K=(R>>>0)/3|0,R=f[n>>2]|0,(f[R+(K>>>5<<2)>>2]&1<<(K&31)|0)==0):0){K=(((N>>>0)%3|0|0)==0?2:-1)+N|0;do if((K|0)!=-1){Q=f[G+(K<<2)>>2]|0;if((Q|0)==-1)break;P=(Q>>>0)/3|0;if(!(f[R+(P>>>5<<2)>>2]&1<<(P&31))){O=63;break b}}while(0);if(!V)jf(a,f[i>>2]|0,H,0,W);f[d>>2]=3;R=f[w>>2]|0;if((R|0)==(f[x>>2]|0))Ci(y,d);else{f[R>>2]=3;f[w>>2]=R+4}X=f[e>>2]|0}else{if(!L){jf(a,f[i>>2]|0,H,1,M);R=f[b>>2]|0;if((R|0)==-1){O=44;break}else Y=R}else Y=N;R=(((Y>>>0)%3|0|0)==0?2:-1)+Y|0;if((R|0)==-1){O=44;break}K=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;if((K|0)==-1){O=44;break}R=(K>>>0)/3|0;if(f[(f[n>>2]|0)+(R>>>5<<2)>>2]&1<<(R&31)|0){O=44;break}f[d>>2]=5;R=f[w>>2]|0;if((R|0)==(f[x>>2]|0))Ci(y,d);else{f[R>>2]=5;f[w>>2]=R+4}X=U}f[b>>2]=X}if((E|0)>=(k|0))break a;D=E;F=f[n>>2]|0}do if((O|0)==35){O=0;f[e>>2]=-1;O=46}else if((O|0)==44){O=0;if(V)O=46;else{jf(a,f[i>>2]|0,H,0,W);O=46}}else if((O|0)==63){O=0;f[d>>2]=1;F=f[w>>2]|0;if((F|0)==(f[x>>2]|0))Ci(y,d);else{f[F>>2]=1;f[w>>2]=F+4}f[z>>2]=(f[z>>2]|0)+1;if(J?(F=f[(f[t>>2]|0)+(I<<2)>>2]|0,(1<<(F&31)&f[(f[A>>2]|0)+(F>>>5<<2)>>2]|0)==0):0){f[g>>2]=f[b>>2];f[d>>2]=f[g>>2];Ce(a,d,0)|0}F=f[i>>2]|0;f[d>>2]=H;D=Sd(B,d)|0;f[D>>2]=F;F=f[j>>2]|0;f[F+-4>>2]=U;if((F|0)==(f[m>>2]|0)){Ci(h,e);break}else{f[F>>2]=f[e>>2];f[j>>2]=F+4;break}}while(0);if((O|0)==46){O=0;f[d>>2]=7;F=f[w>>2]|0;if((F|0)==(f[x>>2]|0))Ci(y,d);else{f[F>>2]=7;f[w>>2]=F+4}f[j>>2]=(f[j>>2]|0)+-4}}}else O=11;while(0);if((O|0)==11){O=0;f[j>>2]=C+-4}C=f[j>>2]|0}while((f[h>>2]|0)!=(C|0));u=c;return 1}function ic(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;e=u;u=u+48|0;g=e+20|0;i=e+16|0;j=e+12|0;k=e;l=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=f[d>>2]|0;d=c+48|0;q=c+40|0;r=g+4|0;o=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=0;y=0;while(1){z=d;A=f[z>>2]|0;B=f[z+4>>2]|0;z=q;C=on(f[z>>2]|0,f[z+4>>2]|0,s+x|0,0)|0;z=Tn(C|0,I|0,A|0,B|0)|0;B=(f[f[c>>2]>>2]|0)+z|0;z=h[B>>0]|h[B+1>>0]<<8|h[B+2>>0]<<16|h[B+3>>0]<<24;f[i>>2]=z;f[j>>2]=z;z=pf(g,j)|0;if(!z){B=f[j>>2]|0;A=B&255;C=B>>>8;D=C&255;E=B>>>16;F=E&255;G=B>>>24;H=G&255;J=C&255;C=E&255;E=(((B&255^318)+239^J)+239^C)+239^G;G=f[r>>2]|0;K=(G|0)==0;a:do if(!K){L=G+-1|0;M=(L&G|0)==0;if(!M)if(E>>>0>>0)N=E;else N=(E>>>0)%(G>>>0)|0;else N=E&L;O=f[(f[g>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(E|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}O=M+8|0;if((((b[O>>0]|0)==A<<24>>24?(b[O+1>>0]|0)==D<<24>>24:0)?(b[O+2>>0]|0)==F<<24>>24:0)?(b[O+3>>0]|0)==H<<24>>24:0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(E|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(G>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}M=S+8|0;if((((b[M>>0]|0)==A<<24>>24?(b[M+1>>0]|0)==D<<24>>24:0)?(b[M+2>>0]|0)==F<<24>>24:0)?(b[M+3>>0]|0)==H<<24>>24:0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;H=dn(16)|0;F=H+8|0;D=B&-16776961|C<<16|J<<8;b[F>>0]=D;b[F+1>>0]=D>>8;b[F+2>>0]=D>>16;b[F+3>>0]=D>>24;f[H+12>>2]=y;f[H+4>>2]=E;f[H>>2]=0;U=$(((f[o>>2]|0)+1|0)>>>0);V=$(G>>>0);X=$(n[l>>2]);do if(K|$(X*V)>>0<3|(G+-1&G|0)!=0)&1;F=~~$(W($(U/X)))>>>0;Jh(g,D>>>0>>0?F:D);D=f[r>>2]|0;F=D+-1|0;if(!(F&D)){Y=D;Z=F&E;break}if(E>>>0>>0){Y=D;Z=E}else{Y=D;Z=(E>>>0)%(D>>>0)|0}}else{Y=G;Z=Q}while(0);G=(f[g>>2]|0)+(Z<<2)|0;E=f[G>>2]|0;if(!E){f[H>>2]=f[t>>2];f[t>>2]=H;f[G>>2]=t;G=f[H>>2]|0;if(G|0){K=f[G+4>>2]|0;G=Y+-1|0;if(G&Y)if(K>>>0>>0)_=K;else _=(K>>>0)%(Y>>>0)|0;else _=K&G;aa=(f[g>>2]|0)+(_<<2)|0;R=44}}else{f[H>>2]=f[E>>2];aa=E;R=44}if((R|0)==44){R=0;f[aa>>2]=H}f[o>>2]=(f[o>>2]|0)+1}E=v;G=f[E>>2]|0;K=on(G|0,f[E+4>>2]|0,y|0,0)|0;Rg((f[f[w>>2]>>2]|0)+K|0,i|0,G|0)|0;G=f[k>>2]|0;f[G+(x<<2)>>2]=y;ba=y+1|0;ca=G}else{G=f[k>>2]|0;f[G+(x<<2)>>2]=f[z+12>>2];ba=y;ca=G}x=x+1|0;da=f[m>>2]|0;if(x>>>0>=da>>>0)break;else y=ba}if((ba|0)==(da|0))ea=ca;else{y=a+84|0;if(!(b[y>>0]|0)){x=f[a+72>>2]|0;i=f[a+68>>2]|0;w=i;if((x|0)==(i|0))fa=ca;else{v=x-i>>2;i=0;do{x=w+(i<<2)|0;f[x>>2]=f[ca+(f[x>>2]<<2)>>2];i=i+1|0}while(i>>>0>>0);fa=ca}}else{b[y>>0]=0;y=a+68|0;ca=a+72|0;v=f[ca>>2]|0;i=f[y>>2]|0;w=v-i>>2;x=i;i=v;if(da>>>0<=w>>>0)if(da>>>0>>0?(v=x+(da<<2)|0,(v|0)!=(i|0)):0){f[ca>>2]=i+(~((i+-4-v|0)>>>2)<<2);ga=da}else ga=da;else{kh(y,da-w|0,1204);ga=f[m>>2]|0}w=f[k>>2]|0;if(!ga)fa=w;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[w+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=w}}f[m>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[p>>2]|0;if((fa|0)!=(ea|0))f[p>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);br(ea);ha=ba}}else ha=0;ba=f[g+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;br(ba)}while((ea|0)!=0)}ea=f[g>>2]|0;f[g>>2]=0;if(!ea){u=e;return ha|0}br(ea);u=e;return ha|0}function jc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;e=u;u=u+80|0;g=e+48|0;h=e+32|0;i=e+16|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+4|0;m=i+8|0;s=i+12|0;t=g+4|0;v=g+12|0;w=g+8|0;x=a+40|0;y=a+64|0;z=0;A=0;while(1){B=d;C=f[B>>2]|0;D=f[B+4>>2]|0;B=p;E=on(f[B>>2]|0,f[B+4>>2]|0,r+A|0,0)|0;B=Tn(E|0,I|0,C|0,D|0)|0;D=(f[f[c>>2]>>2]|0)+B|0;B=h;C=D;E=B+16|0;do{b[B>>0]=b[C>>0]|0;B=B+1|0;C=C+1|0}while((B|0)<(E|0));Xl(i|0,D|0,16)|0;C=Ff(g,i)|0;if(!C){B=f[i>>2]|0;E=f[q>>2]|0;F=f[m>>2]|0;G=f[s>>2]|0;H=(((B^318)+239^E)+239^F)+239^G;J=f[t>>2]|0;K=(J|0)==0;a:do if(!K){L=J+-1|0;M=(L&J|0)==0;if(!M)if(H>>>0>>0)N=H;else N=(H>>>0)%(J>>>0)|0;else N=H&L;O=f[(f[g>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(H|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}if((((f[M+8>>2]|0)==(B|0)?(f[M+12>>2]|0)==(E|0):0)?(f[M+16>>2]|0)==(F|0):0)?(f[M+20>>2]|0)==(G|0):0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(H|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(J>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}if((((f[S+8>>2]|0)==(B|0)?(f[S+12>>2]|0)==(E|0):0)?(f[S+16>>2]|0)==(F|0):0)?(f[S+20>>2]|0)==(G|0):0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;D=dn(28)|0;f[D+8>>2]=B;f[D+12>>2]=E;f[D+16>>2]=F;f[D+20>>2]=G;f[D+24>>2]=z;f[D+4>>2]=H;f[D>>2]=0;U=$(((f[v>>2]|0)+1|0)>>>0);V=$(J>>>0);X=$(n[k>>2]);do if(K|$(X*V)>>0<3|(J+-1&J|0)!=0)&1;M=~~$(W($(U/X)))>>>0;Gh(g,P>>>0>>0?M:P);P=f[t>>2]|0;M=P+-1|0;if(!(M&P)){Y=P;Z=M&H;break}if(H>>>0

>>0){Y=P;Z=H}else{Y=P;Z=(H>>>0)%(P>>>0)|0}}else{Y=J;Z=Q}while(0);J=(f[g>>2]|0)+(Z<<2)|0;H=f[J>>2]|0;if(!H){f[D>>2]=f[w>>2];f[w>>2]=D;f[J>>2]=w;J=f[D>>2]|0;if(J|0){K=f[J+4>>2]|0;J=Y+-1|0;if(J&Y)if(K>>>0>>0)_=K;else _=(K>>>0)%(Y>>>0)|0;else _=K&J;aa=(f[g>>2]|0)+(_<<2)|0;R=44}}else{f[D>>2]=f[H>>2];aa=H;R=44}if((R|0)==44){R=0;f[aa>>2]=D}f[v>>2]=(f[v>>2]|0)+1}H=x;J=f[H>>2]|0;K=on(J|0,f[H+4>>2]|0,z|0,0)|0;Rg((f[f[y>>2]>>2]|0)+K|0,h|0,J|0)|0;J=f[j>>2]|0;f[J+(A<<2)>>2]=z;ba=z+1|0;ca=J}else{J=f[j>>2]|0;f[J+(A<<2)>>2]=f[C+24>>2];ba=z;ca=J}A=A+1|0;da=f[l>>2]|0;if(A>>>0>=da>>>0)break;else z=ba}if((ba|0)==(da|0))ea=ca;else{z=a+84|0;if(!(b[z>>0]|0)){A=f[a+72>>2]|0;h=f[a+68>>2]|0;y=h;if((A|0)==(h|0))fa=ca;else{x=A-h>>2;h=0;do{A=y+(h<<2)|0;f[A>>2]=f[ca+(f[A>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);fa=ca}}else{b[z>>0]=0;z=a+68|0;ca=a+72|0;x=f[ca>>2]|0;h=f[z>>2]|0;y=x-h>>2;A=h;h=x;if(da>>>0<=y>>>0)if(da>>>0>>0?(x=A+(da<<2)|0,(x|0)!=(h|0)):0){f[ca>>2]=h+(~((h+-4-x|0)>>>2)<<2);ga=da}else ga=da;else{kh(z,da-y|0,1204);ga=f[l>>2]|0}y=f[j>>2]|0;if(!ga)fa=y;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=y}}f[l>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[o>>2]|0;if((fa|0)!=(ea|0))f[o>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);br(ea);ha=ba}}else ha=0;ba=f[g+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;br(ba)}while((ea|0)!=0)}ea=f[g>>2]|0;f[g>>2]=0;if(!ea){u=e;return ha|0}br(ea);u=e;return ha|0}function kc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=Oa,T=Oa,U=Oa,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;g=u;u=u+48|0;h=g+12|0;i=g+38|0;j=g+32|0;k=g;l=h+16|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)mq(k);q=o<<2;r=dn(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;hj(r|0,0,q|0)|0;f[p>>2]=s;s=f[e>>2]|0;e=c+48|0;q=c+40|0;r=j+2|0;o=j+4|0;t=h+4|0;v=h+12|0;w=h+8|0;x=a+40|0;y=a+64|0;z=0;A=0;while(1){B=e;C=f[B>>2]|0;D=f[B+4>>2]|0;B=q;E=on(f[B>>2]|0,f[B+4>>2]|0,s+A|0,0)|0;B=Tn(E|0,I|0,C|0,D|0)|0;D=(f[f[c>>2]>>2]|0)+B|0;b[i>>0]=b[D>>0]|0;b[i+1>>0]=b[D+1>>0]|0;b[i+2>>0]=b[D+2>>0]|0;b[i+3>>0]=b[D+3>>0]|0;b[i+4>>0]=b[D+4>>0]|0;b[i+5>>0]=b[D+5>>0]|0;Xl(j|0,D|0,6)|0;D=Pf(h,j)|0;if(!D){B=d[j>>1]|0;C=d[r>>1]|0;E=d[o>>1]|0;F=(((B^318)&65535)+239^C&65535)+239^E&65535;G=f[t>>2]|0;H=(G|0)==0;a:do if(!H){J=G+-1|0;K=(J&G|0)==0;if(!K)if(F>>>0>>0)L=F;else L=(F>>>0)%(G>>>0)|0;else L=F&J;M=f[(f[h>>2]|0)+(L<<2)>>2]|0;if((M|0)!=0?(N=f[M>>2]|0,(N|0)!=0):0){if(K){K=N;while(1){M=f[K+4>>2]|0;if(!((M|0)==(F|0)|(M&J|0)==(L|0))){O=L;P=29;break a}M=K+8|0;if(((d[M>>1]|0)==B<<16>>16?(d[M+2>>1]|0)==C<<16>>16:0)?(d[K+12>>1]|0)==E<<16>>16:0)break a;K=f[K>>2]|0;if(!K){O=L;P=29;break a}}}else Q=N;while(1){K=f[Q+4>>2]|0;if((K|0)!=(F|0)){if(K>>>0>>0)R=K;else R=(K>>>0)%(G>>>0)|0;if((R|0)!=(L|0)){O=L;P=29;break a}}K=Q+8|0;if(((d[K>>1]|0)==B<<16>>16?(d[K+2>>1]|0)==C<<16>>16:0)?(d[Q+12>>1]|0)==E<<16>>16:0)break a;Q=f[Q>>2]|0;if(!Q){O=L;P=29;break}}}else{O=L;P=29}}else{O=0;P=29}while(0);if((P|0)==29){P=0;N=dn(20)|0;d[N+8>>1]=B;d[N+10>>1]=C;d[N+12>>1]=E;f[N+16>>2]=z;f[N+4>>2]=F;f[N>>2]=0;S=$(((f[v>>2]|0)+1|0)>>>0);T=$(G>>>0);U=$(n[l>>2]);do if(H|$(U*T)>>0<3|(G+-1&G|0)!=0)&1;J=~~$(W($(S/U)))>>>0;Dh(h,K>>>0>>0?J:K);K=f[t>>2]|0;J=K+-1|0;if(!(J&K)){V=K;X=J&F;break}if(F>>>0>>0){V=K;X=F}else{V=K;X=(F>>>0)%(K>>>0)|0}}else{V=G;X=O}while(0);G=(f[h>>2]|0)+(X<<2)|0;F=f[G>>2]|0;if(!F){f[N>>2]=f[w>>2];f[w>>2]=N;f[G>>2]=w;G=f[N>>2]|0;if(G|0){H=f[G+4>>2]|0;G=V+-1|0;if(G&V)if(H>>>0>>0)Y=H;else Y=(H>>>0)%(V>>>0)|0;else Y=H&G;Z=(f[h>>2]|0)+(Y<<2)|0;P=42}}else{f[N>>2]=f[F>>2];Z=F;P=42}if((P|0)==42){P=0;f[Z>>2]=N}f[v>>2]=(f[v>>2]|0)+1}F=x;G=f[F>>2]|0;H=on(G|0,f[F+4>>2]|0,z|0,0)|0;Rg((f[f[y>>2]>>2]|0)+H|0,i|0,G|0)|0;G=f[k>>2]|0;f[G+(A<<2)>>2]=z;_=z+1|0;aa=G}else{G=f[k>>2]|0;f[G+(A<<2)>>2]=f[D+16>>2];_=z;aa=G}A=A+1|0;ba=f[m>>2]|0;if(A>>>0>=ba>>>0)break;else z=_}if((_|0)==(ba|0))ca=aa;else{z=a+84|0;if(!(b[z>>0]|0)){A=f[a+72>>2]|0;i=f[a+68>>2]|0;y=i;if((A|0)==(i|0))da=aa;else{x=A-i>>2;i=0;do{A=y+(i<<2)|0;f[A>>2]=f[aa+(f[A>>2]<<2)>>2];i=i+1|0}while(i>>>0>>0);da=aa}}else{b[z>>0]=0;z=a+68|0;aa=a+72|0;x=f[aa>>2]|0;i=f[z>>2]|0;y=x-i>>2;A=i;i=x;if(ba>>>0<=y>>>0)if(ba>>>0>>0?(x=A+(ba<<2)|0,(x|0)!=(i|0)):0){f[aa>>2]=i+(~((i+-4-x|0)>>>2)<<2);ea=ba}else ea=ba;else{kh(z,ba-y|0,1204);ea=f[m>>2]|0}y=f[k>>2]|0;if(!ea)da=y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);da=y}}f[m>>2]=_;ca=da}if(!ca)fa=_;else{da=f[p>>2]|0;if((da|0)!=(ca|0))f[p>>2]=da+(~((da+-4-ca|0)>>>2)<<2);br(ca);fa=_}}else fa=0;_=f[h+8>>2]|0;if(_|0){ca=_;do{_=ca;ca=f[ca>>2]|0;br(_)}while((ca|0)!=0)}ca=f[h>>2]|0;f[h>>2]=0;if(!ca){u=g;return fa|0}br(ca);u=g;return fa|0}function lc(a,c){a=a|0;c=c|0;var d=0,e=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,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;d=u;u=u+80|0;e=d+72|0;g=d+64|0;h=d;i=d+68|0;j=d+60|0;k=a+352|0;if(b[k>>0]|0?(l=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0,((f[l+12>>2]|0)-(f[l+8>>2]|0)|0)>0):0){l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+8|0;m=f[f[l>>2]>>2]|0;f[e>>2]=c;l=m+4|0;n=m+8|0;o=f[n>>2]|0;if((o|0)==(f[m+12>>2]|0))Ci(l,e);else{f[o>>2]=c;f[n>>2]=o+4}o=f[e>>2]|0;p=m+16|0;q=m+20|0;m=f[q>>2]|0;r=f[p>>2]|0;s=m-r>>2;t=r;if((o|0)<(s|0)){v=t;w=o}else{r=o+1|0;f[g>>2]=-1;x=m;if(r>>>0<=s>>>0)if(r>>>0>>0?(m=t+(r<<2)|0,(m|0)!=(x|0)):0){f[q>>2]=x+(~((x+-4-m|0)>>>2)<<2);y=o;z=t}else{y=o;z=t}else{kh(p,r-s|0,g);y=f[e>>2]|0;z=f[p>>2]|0}v=z;w=y}f[v+(w<<2)>>2]=((f[n>>2]|0)-(f[l>>2]|0)>>2)+-1;A=1;u=d;return A|0}l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+56|0;n=f[(f[(f[l>>2]|0)+84>>2]|0)+(c<<2)>>2]|0;l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+4|0;w=f[(f[(f[l>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;f[g>>2]=-1;l=a+172|0;v=f[a+176>>2]|0;y=f[l>>2]|0;z=y;a:do if((v|0)==(y|0))B=-1;else{p=(v-y|0)/136|0;s=0;while(1){if((f[z+(s*136|0)>>2]|0)==(c|0))break;r=s+1|0;if(r>>>0

>>0)s=r;else{B=-1;break a}}f[g>>2]=s;B=s}while(0);b:do if(!(b[k>>0]|0)){y=(f[w+56>>2]|0)==0;do if(!((n|0)==0|y)){if((n|0)==1?b[z+(B*136|0)+28>>0]|0:0)break;v=z+(B*136|0)+104|0;p=z+(B*136|0)+4|0;r=(f[z+(B*136|0)+60>>2]|0)-(f[z+(B*136|0)+56>>2]|0)>>2;f[e>>2]=-1;Sf(z+(B*136|0)+116|0,r,e);r=dn(80)|0;t=f[a+8>>2]|0;f[r+4>>2]=0;f[r>>2]=3164;o=r+8|0;m=r+12|0;x=m+44|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(x|0));f[o>>2]=3188;q=r+56|0;f[q>>2]=0;f[r+60>>2]=0;f[r+64>>2]=0;f[r+68>>2]=t;f[r+72>>2]=v;C=r+76|0;f[C>>2]=0;D=h+4|0;m=D+4|0;x=m+40|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(x|0));f[h>>2]=3188;m=h+48|0;f[m>>2]=0;x=h+52|0;f[x>>2]=0;f[h+56>>2]=0;f[D>>2]=p;E=f[z+(B*136|0)+68>>2]|0;F=((f[E+4>>2]|0)-(f[E>>2]|0)>>2>>>0)/3|0;b[e>>0]=0;Xg(h+24|0,F,e);F=f[D>>2]|0;E=(f[F+56>>2]|0)-(f[F+52>>2]|0)>>2;b[e>>0]=0;Xg(h+36|0,E,e);f[h+8>>2]=p;f[h+12>>2]=v;f[h+16>>2]=t;f[h+20>>2]=r;f[C>>2]=a+72;ef(o,h)|0;Yf(q,f[m>>2]|0,f[x>>2]|0);E=r;f[h>>2]=3188;F=f[m>>2]|0;if(F|0){m=f[x>>2]|0;if((m|0)!=(F|0))f[x>>2]=m+(~((m+-4-F|0)>>>2)<<2);br(F)}f[h>>2]=3208;F=f[h+36>>2]|0;if(F|0)br(F);F=f[h+24>>2]|0;if(F|0)br(F);G=0;H=E;I=42;break b}while(0);if(!y){s=f[a+12>>2]|0;E=(f[s+28>>2]|0)-(f[s+24>>2]|0)>>2;f[e>>2]=-1;Sf(z+(B*136|0)+116|0,E,e);b[(f[l>>2]|0)+((f[g>>2]|0)*136|0)+100>>0]=0;J=z+(B*136|0)+104|0;I=26}else I=24}else I=24;while(0);if((I|0)==24){J=a+40|0;I=26}if((I|0)==26){B=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+48|0;do if((Yh(f[B>>2]|0)|0)==0?(f[w+56>>2]|0)==0:0){if(b[k>>0]|0?(z=f[a+8>>2]|0,((f[z+12>>2]|0)-(f[z+8>>2]|0)|0)>=5):0){I=31;break}uf(e,a,J);K=1;L=f[e>>2]|0}else I=31;while(0);if((I|0)==31){Le(e,a,J);K=0;L=f[e>>2]|0}if(!L)M=0;else{G=K;H=L;I=42}}if((I|0)==42){I=f[g>>2]|0;if((I|0)==-1)N=a+68|0;else N=(f[l>>2]|0)+(I*136|0)+132|0;f[N>>2]=G;G=dn(76)|0;f[i>>2]=H;ml(G,i,c);c=G;G=f[i>>2]|0;f[i>>2]=0;if(G|0)Va[f[(f[G>>2]|0)+4>>2]&127](G);G=a+188|0;i=f[G>>2]|0;if((i|0)==(f[a+192>>2]|0))Ci(a+184|0,g);else{f[i>>2]=f[g>>2];f[G>>2]=i+4}i=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0;f[j>>2]=c;a=i+12|0;G=f[a>>2]|0;if(G>>>0<(f[i+16>>2]|0)>>>0){f[j>>2]=0;f[G>>2]=c;f[a>>2]=G+4;O=j}else{yg(i+8|0,j);O=j}j=f[O>>2]|0;f[O>>2]=0;if(!j)M=1;else{Va[f[(f[j>>2]|0)+4>>2]&127](j);M=1}}A=M;u=d;return A|0}function mc(a,c){a=a|0;c=c|0;var d=0,e=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,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;d=u;u=u+80|0;e=d+72|0;g=d+64|0;h=d;i=d+68|0;j=d+60|0;k=a+288|0;if(b[k>>0]|0?(l=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0,((f[l+12>>2]|0)-(f[l+8>>2]|0)|0)>0):0){l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+8|0;m=f[f[l>>2]>>2]|0;f[e>>2]=c;l=m+4|0;n=m+8|0;o=f[n>>2]|0;if((o|0)==(f[m+12>>2]|0))Ci(l,e);else{f[o>>2]=c;f[n>>2]=o+4}o=f[e>>2]|0;p=m+16|0;q=m+20|0;m=f[q>>2]|0;r=f[p>>2]|0;s=m-r>>2;t=r;if((o|0)<(s|0)){v=t;w=o}else{r=o+1|0;f[g>>2]=-1;x=m;if(r>>>0<=s>>>0)if(r>>>0>>0?(m=t+(r<<2)|0,(m|0)!=(x|0)):0){f[q>>2]=x+(~((x+-4-m|0)>>>2)<<2);y=o;z=t}else{y=o;z=t}else{kh(p,r-s|0,g);y=f[e>>2]|0;z=f[p>>2]|0}v=z;w=y}f[v+(w<<2)>>2]=((f[n>>2]|0)-(f[l>>2]|0)>>2)+-1;A=1;u=d;return A|0}l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+56|0;n=f[(f[(f[l>>2]|0)+84>>2]|0)+(c<<2)>>2]|0;l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+4|0;w=f[(f[(f[l>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;f[g>>2]=-1;l=a+172|0;v=f[a+176>>2]|0;y=f[l>>2]|0;z=y;a:do if((v|0)==(y|0))B=-1;else{p=(v-y|0)/136|0;s=0;while(1){if((f[z+(s*136|0)>>2]|0)==(c|0))break;r=s+1|0;if(r>>>0

>>0)s=r;else{B=-1;break a}}f[g>>2]=s;B=s}while(0);b:do if(!(b[k>>0]|0)){y=(f[w+56>>2]|0)==0;do if(!((n|0)==0|y)){if((n|0)==1?b[z+(B*136|0)+28>>0]|0:0)break;v=z+(B*136|0)+104|0;p=z+(B*136|0)+4|0;r=(f[z+(B*136|0)+60>>2]|0)-(f[z+(B*136|0)+56>>2]|0)>>2;f[e>>2]=-1;Sf(z+(B*136|0)+116|0,r,e);r=dn(80)|0;t=f[a+8>>2]|0;f[r+4>>2]=0;f[r>>2]=3164;o=r+8|0;m=r+12|0;x=m+44|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(x|0));f[o>>2]=3188;q=r+56|0;f[q>>2]=0;f[r+60>>2]=0;f[r+64>>2]=0;f[r+68>>2]=t;f[r+72>>2]=v;C=r+76|0;f[C>>2]=0;D=h+4|0;m=D+4|0;x=m+40|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(x|0));f[h>>2]=3188;m=h+48|0;f[m>>2]=0;x=h+52|0;f[x>>2]=0;f[h+56>>2]=0;f[D>>2]=p;E=f[z+(B*136|0)+68>>2]|0;F=((f[E+4>>2]|0)-(f[E>>2]|0)>>2>>>0)/3|0;b[e>>0]=0;Xg(h+24|0,F,e);F=f[D>>2]|0;E=(f[F+56>>2]|0)-(f[F+52>>2]|0)>>2;b[e>>0]=0;Xg(h+36|0,E,e);f[h+8>>2]=p;f[h+12>>2]=v;f[h+16>>2]=t;f[h+20>>2]=r;f[C>>2]=a+72;ef(o,h)|0;Yf(q,f[m>>2]|0,f[x>>2]|0);E=r;f[h>>2]=3188;F=f[m>>2]|0;if(F|0){m=f[x>>2]|0;if((m|0)!=(F|0))f[x>>2]=m+(~((m+-4-F|0)>>>2)<<2);br(F)}f[h>>2]=3208;F=f[h+36>>2]|0;if(F|0)br(F);F=f[h+24>>2]|0;if(F|0)br(F);G=0;H=E;I=42;break b}while(0);if(!y){s=f[a+12>>2]|0;E=(f[s+28>>2]|0)-(f[s+24>>2]|0)>>2;f[e>>2]=-1;Sf(z+(B*136|0)+116|0,E,e);b[(f[l>>2]|0)+((f[g>>2]|0)*136|0)+100>>0]=0;J=z+(B*136|0)+104|0;I=26}else I=24}else I=24;while(0);if((I|0)==24){J=a+40|0;I=26}if((I|0)==26){B=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+48|0;do if((Yh(f[B>>2]|0)|0)==0?(f[w+56>>2]|0)==0:0){if(b[k>>0]|0?(z=f[a+8>>2]|0,((f[z+12>>2]|0)-(f[z+8>>2]|0)|0)>=5):0){I=31;break}uf(e,a,J);K=1;L=f[e>>2]|0}else I=31;while(0);if((I|0)==31){Le(e,a,J);K=0;L=f[e>>2]|0}if(!L)M=0;else{G=K;H=L;I=42}}if((I|0)==42){I=f[g>>2]|0;if((I|0)==-1)N=a+68|0;else N=(f[l>>2]|0)+(I*136|0)+132|0;f[N>>2]=G;G=dn(76)|0;f[i>>2]=H;ml(G,i,c);c=G;G=f[i>>2]|0;f[i>>2]=0;if(G|0)Va[f[(f[G>>2]|0)+4>>2]&127](G);G=a+188|0;i=f[G>>2]|0;if((i|0)==(f[a+192>>2]|0))Ci(a+184|0,g);else{f[i>>2]=f[g>>2];f[G>>2]=i+4}i=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0;f[j>>2]=c;a=i+12|0;G=f[a>>2]|0;if(G>>>0<(f[i+16>>2]|0)>>>0){f[j>>2]=0;f[G>>2]=c;f[a>>2]=G+4;O=j}else{yg(i+8|0,j);O=j}j=f[O>>2]|0;f[O>>2]=0;if(!j)M=1;else{Va[f[(f[j>>2]|0)+4>>2]&127](j);M=1}}A=M;u=d;return A|0}function nc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=u;u=u+64|0;d=e+48|0;h=e+40|0;i=e+32|0;j=e+16|0;k=e+8|0;l=e;m=e+28|0;n=a+8|0;o=f[n>>2]|0;if((o+-2|0)>>>0<=28){f[a+72>>2]=o;p=1<>2]=p+-1;o=p+-2|0;f[a+80>>2]=o;f[a+84>>2]=(o|0)/2|0}o=a+40|0;f[a+48>>2]=g;g=a+88|0;lk(g);p=a+36|0;q=f[p>>2]|0;r=(f[q+4>>2]|0)-(f[q>>2]|0)|0;s=r>>2;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;t=k;f[t>>2]=0;f[t+4>>2]=0;t=l;f[t>>2]=0;f[t+4>>2]=0;if((r|0)<=0){u=e;return 1}r=j+4|0;t=j+8|0;v=a+84|0;w=a+80|0;x=h+4|0;y=i+4|0;z=d+4|0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=l+4|0;F=a+76|0;a=k+4|0;G=l+4|0;H=f[q>>2]|0;if((f[q+4>>2]|0)==(H|0)){J=q;mq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];fc(o,d,j);H=f[j>>2]|0;q=(H|0)>-1?H:0-H|0;M=f[r>>2]|0;N=(M|0)>-1?M:0-M|0;O=Tn(N|0,((N|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;q=f[t>>2]|0;N=(q|0)>-1;P=N?q:0-q|0;q=Tn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((q|0)==0&(P|0)==0){O=f[v>>2]|0;Q=O;R=j;S=M;T=O}else{O=f[v>>2]|0;U=((O|0)<0)<<31>>31;V=on(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=zk(V|0,I|0,q|0,P|0)|0;f[j>>2]=H;V=on(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=zk(V|0,I|0,q|0,P|0)|0;f[r>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=t;S=M;T=O}f[R>>2]=Q;O=f[j>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[t>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[t>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[t>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){q=(N|0)==(Z|0);if(!(P&q)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(q&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);P=0-S|0;M=0-_|0;f[j>>2]=0-O;f[r>>2]=P;f[t>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(q=(N|0)==(ca|0),!(M&q)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(q&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);N=K<<1;M=b+(N<<2)|0;H=M+4|0;O=f[H>>2]|0;f[h>>2]=f[M>>2];f[x>>2]=O;f[i>>2]=$;f[y>>2]=aa;Dd(d,n,h,i);O=f[d>>2]|0;f[k>>2]=O;P=f[z>>2]|0;f[A>>2]=P;q=f[H>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=q;f[i>>2]=da;f[C>>2]=ea;Dd(d,n,h,i);q=f[d>>2]|0;f[l>>2]=q;M=f[D>>2]|0;f[E>>2]=M;H=f[v>>2]|0;if((H|0)>=(O|0))if((O|0)<(0-H|0))fa=(f[F>>2]|0)+O|0;else fa=O;else fa=O-(f[F>>2]|0)|0;f[k>>2]=fa;if((H|0)>=(P|0))if((P|0)<(0-H|0))ga=(f[F>>2]|0)+P|0;else ga=P;else ga=P-(f[F>>2]|0)|0;f[a>>2]=ga;if((H|0)>=(q|0))if((q|0)<(0-H|0))ha=(f[F>>2]|0)+q|0;else ha=q;else ha=q-(f[F>>2]|0)|0;f[l>>2]=ha;if((H|0)>=(M|0))if((M|0)<(0-H|0))ia=(f[F>>2]|0)+M|0;else ia=M;else ia=M-(f[F>>2]|0)|0;f[G>>2]=ia;if((((ga|0)>-1?ga:0-ga|0)+((fa|0)>-1?fa:0-fa|0)|0)<(((ha|0)>-1?ha:0-ha|0)+((ia|0)>-1?ia:0-ia|0)|0)){Vi(g,0);ja=k}else{Vi(g,1);ja=l}M=f[ja>>2]|0;if((M|0)<0)ka=(f[F>>2]|0)+M|0;else ka=M;M=c+(N<<2)|0;f[M>>2]=ka;N=f[ja+4>>2]|0;if((N|0)<0)la=(f[F>>2]|0)+N|0;else la=N;f[M+4>>2]=la;K=K+1|0;if((K|0)>=(s|0)){ma=5;break}M=f[p>>2]|0;L=f[M>>2]|0;if((f[M+4>>2]|0)-L>>2>>>0<=K>>>0){J=M;ma=6;break}}if((ma|0)==5){u=e;return 1}else if((ma|0)==6)mq(J);return 0}function oc(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,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;c=u;u=u+48|0;d=c+24|0;e=c+12|0;g=c;if(!b){h=0;u=c;return h|0}i=a+12|0;j=a+4|0;k=f[j>>2]|0;l=f[a>>2]|0;m=k-l>>2;n=a+16|0;o=f[n>>2]|0;p=f[i>>2]|0;q=o-p>>2;r=p;p=o;if(m>>>0<=q>>>0)if(m>>>0>>0?(o=r+(m<<2)|0,(o|0)!=(p|0)):0){f[n>>2]=p+(~((p+-4-o|0)>>>2)<<2);s=l;t=k}else{s=l;t=k}else{kh(i,m-q|0,5828);s=f[a>>2]|0;t=f[j>>2]|0}f[d>>2]=0;q=d+4|0;f[q>>2]=0;f[d+8>>2]=0;$j(d,t-s>>2);s=f[j>>2]|0;t=f[a>>2]|0;if((s|0)==(t|0)){v=s;w=s}else{m=f[d>>2]|0;k=m;l=k;o=0;p=s;s=k;k=t;t=m;while(1){m=f[k+(o<<2)>>2]|0;n=f[q>>2]|0;if(m>>>0>2>>>0){x=l;y=s;z=k;A=p}else{r=m+1|0;f[e>>2]=0;B=n-t>>2;C=t;D=n;if(r>>>0<=B>>>0)if(r>>>0>>0?(n=C+(r<<2)|0,(n|0)!=(D|0)):0){f[q>>2]=D+(~((D+-4-n|0)>>>2)<<2);E=l;F=p;G=k}else{E=l;F=p;G=k}else{kh(d,r-B|0,e);E=f[d>>2]|0;F=f[j>>2]|0;G=f[a>>2]|0}x=E;y=E;z=G;A=F}B=y+(m<<2)|0;f[B>>2]=(f[B>>2]|0)+1;o=o+1|0;if(o>>>0>=A-z>>2>>>0){v=z;w=A;break}else{l=x;p=A;s=y;k=z;t=y}}}y=w-v|0;v=y>>2;f[e>>2]=0;w=e+4|0;f[w>>2]=0;f[e+8>>2]=0;if(!v){H=0;I=0}else{if(v>>>0>536870911)mq(e);t=dn(y<<1)|0;f[w>>2]=t;f[e>>2]=t;y=t+(v<<3)|0;f[e+8>>2]=y;z=v;v=t;k=t;while(1){s=v;f[s>>2]=-1;f[s+4>>2]=-1;s=k+8|0;A=z+-1|0;if(!A)break;else{z=A;v=s;k=s}}f[w>>2]=y;H=t;I=t}t=f[q>>2]|0;y=f[d>>2]|0;k=t-y|0;v=k>>2;f[g>>2]=0;z=g+4|0;f[z>>2]=0;f[g+8>>2]=0;s=y;do if(v)if(v>>>0>1073741823)mq(g);else{A=dn(k)|0;f[g>>2]=A;p=A+(v<<2)|0;f[g+8>>2]=p;hj(A|0,0,k|0)|0;f[z>>2]=p;J=A;K=p;L=A;break}else{J=0;K=0;L=0}while(0);if((t|0)!=(y|0)){y=0;t=0;while(1){f[J+(t<<2)>>2]=y;k=t+1|0;if(k>>>0>>0){y=(f[s+(t<<2)>>2]|0)+y|0;t=k}else break}}t=f[j>>2]|0;j=f[a>>2]|0;y=j;if((t|0)!=(j|0)){k=a+40|0;a=t-j>>2;j=H;t=H;g=H;A=H;p=H;x=H;l=0;o=J;while(1){F=f[y+(l<<2)>>2]|0;G=l+1|0;E=((G>>>0)%3|0|0)==0?l+-2|0:G;if((E|0)==-1)M=-1;else M=f[y+(E<<2)>>2]|0;E=((l>>>0)%3|0|0)==0;G=(E?2:-1)+l|0;if((G|0)==-1)N=-1;else N=f[y+(G<<2)>>2]|0;if(E?(M|0)==(N|0)|((F|0)==(M|0)|(F|0)==(N|0)):0){f[k>>2]=(f[k>>2]|0)+1;O=j;P=t;Q=g;R=A;S=p;T=x;U=l+2|0;V=o}else W=51;a:do if((W|0)==51){W=0;E=f[s+(N<<2)>>2]|0;b:do if((E|0)>0){G=0;B=f[o+(N<<2)>>2]|0;while(1){m=f[p+(B<<3)>>2]|0;if((m|0)==-1){X=j;Y=t;Z=A;_=p;break b}if((m|0)==(M|0)){m=f[p+(B<<3)+4>>2]|0;if((m|0)==-1)$=-1;else $=f[y+(m<<2)>>2]|0;if((F|0)!=($|0))break}m=G+1|0;if((m|0)<(E|0)){G=m;B=B+1|0}else{X=j;Y=t;Z=A;_=p;break b}}m=f[A+(B<<3)+4>>2]|0;r=G;n=B;D=t;while(1){r=r+1|0;if((r|0)>=(E|0))break;C=n+1|0;f[D+(n<<3)>>2]=f[D+(C<<3)>>2];f[D+(n<<3)+4>>2]=f[D+(C<<3)+4>>2];if((f[j+(n<<3)>>2]|0)==-1)break;else{n=C;D=j}}f[g+(n<<3)>>2]=-1;if((m|0)==-1){X=g;Y=g;Z=g;_=g}else{D=f[i>>2]|0;f[D+(l<<2)>>2]=m;f[D+(m<<2)>>2]=l;O=g;P=g;Q=g;R=g;S=g;T=x;U=l;V=o;break a}}else{X=j;Y=t;Z=A;_=p}while(0);E=f[s+(M<<2)>>2]|0;if((E|0)>0){D=0;r=f[J+(M<<2)>>2]|0;while(1){aa=x+(r<<3)|0;if((f[aa>>2]|0)==-1)break;D=D+1|0;if((D|0)>=(E|0)){O=x;P=x;Q=x;R=x;S=x;T=x;U=l;V=J;break a}else r=r+1|0}f[aa>>2]=N;f[H+(r<<3)+4>>2]=l;O=H;P=H;Q=H;R=H;S=H;T=H;U=l;V=J}else{O=X;P=Y;Q=g;R=Z;S=_;T=x;U=l;V=o}}while(0);l=U+1|0;if(l>>>0>=a>>>0)break;else{j=O;t=P;g=Q;A=R;p=S;x=T;o=V}}}f[b>>2]=v;if(!J){ba=H;ca=I}else{if((K|0)!=(J|0))f[z>>2]=K+(~((K+-4-J|0)>>>2)<<2);br(L);L=f[e>>2]|0;ba=L;ca=L}if(ba|0){L=f[w>>2]|0;if((L|0)!=(ba|0))f[w>>2]=L+(~((L+-8-ba|0)>>>3)<<3);br(ca)}ca=f[d>>2]|0;if(ca|0){d=f[q>>2]|0;if((d|0)!=(ca|0))f[q>>2]=d+(~((d+-4-ca|0)>>>2)<<2);br(ca)}h=1;u=c;return h|0}function pc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=Oa,S=Oa,T=Oa,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0;e=u;u=u+48|0;g=e+12|0;h=e+35|0;i=e+32|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+1|0;m=i+2|0;s=g+4|0;t=g+12|0;v=g+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=d;B=f[A>>2]|0;C=f[A+4>>2]|0;A=p;D=on(f[A>>2]|0,f[A+4>>2]|0,r+y|0,0)|0;A=Tn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;b[h>>0]=b[C>>0]|0;b[h+1>>0]=b[C+1>>0]|0;b[h+2>>0]=b[C+2>>0]|0;Xl(i|0,C|0,3)|0;C=Uf(g,i)|0;if(!C){A=b[i>>0]|0;B=b[q>>0]|0;D=b[m>>0]|0;E=((A&255^318)+239^B&255)+239^D&255;F=f[s>>2]|0;G=(F|0)==0;a:do if(!G){H=F+-1|0;J=(H&F|0)==0;if(!J)if(E>>>0>>0)K=E;else K=(E>>>0)%(F>>>0)|0;else K=E&H;L=f[(f[g>>2]|0)+(K<<2)>>2]|0;if((L|0)!=0?(M=f[L>>2]|0,(M|0)!=0):0){if(J){J=M;while(1){L=f[J+4>>2]|0;if(!((L|0)==(E|0)|(L&H|0)==(K|0))){N=K;O=29;break a}L=J+8|0;if(((b[L>>0]|0)==A<<24>>24?(b[L+1>>0]|0)==B<<24>>24:0)?(b[L+2>>0]|0)==D<<24>>24:0)break a;J=f[J>>2]|0;if(!J){N=K;O=29;break a}}}else P=M;while(1){J=f[P+4>>2]|0;if((J|0)!=(E|0)){if(J>>>0>>0)Q=J;else Q=(J>>>0)%(F>>>0)|0;if((Q|0)!=(K|0)){N=K;O=29;break a}}J=P+8|0;if(((b[J>>0]|0)==A<<24>>24?(b[J+1>>0]|0)==B<<24>>24:0)?(b[J+2>>0]|0)==D<<24>>24:0)break a;P=f[P>>2]|0;if(!P){N=K;O=29;break}}}else{N=K;O=29}}else{N=0;O=29}while(0);if((O|0)==29){O=0;M=dn(16)|0;b[M+8>>0]=A;b[M+9>>0]=B;b[M+10>>0]=D;f[M+12>>2]=z;f[M+4>>2]=E;f[M>>2]=0;R=$(((f[t>>2]|0)+1|0)>>>0);S=$(F>>>0);T=$(n[k>>2]);do if(G|$(T*S)>>0<3|(F+-1&F|0)!=0)&1;H=~~$(W($(R/T)))>>>0;Kh(g,J>>>0>>0?H:J);J=f[s>>2]|0;H=J+-1|0;if(!(H&J)){U=J;V=H&E;break}if(E>>>0>>0){U=J;V=E}else{U=J;V=(E>>>0)%(J>>>0)|0}}else{U=F;V=N}while(0);F=(f[g>>2]|0)+(V<<2)|0;E=f[F>>2]|0;if(!E){f[M>>2]=f[v>>2];f[v>>2]=M;f[F>>2]=v;F=f[M>>2]|0;if(F|0){G=f[F+4>>2]|0;F=U+-1|0;if(F&U)if(G>>>0>>0)X=G;else X=(G>>>0)%(U>>>0)|0;else X=G&F;Y=(f[g>>2]|0)+(X<<2)|0;O=42}}else{f[M>>2]=f[E>>2];Y=E;O=42}if((O|0)==42){O=0;f[Y>>2]=M}f[t>>2]=(f[t>>2]|0)+1}E=w;F=f[E>>2]|0;G=on(F|0,f[E+4>>2]|0,z|0,0)|0;Rg((f[f[x>>2]>>2]|0)+G|0,h|0,F|0)|0;F=f[j>>2]|0;f[F+(y<<2)>>2]=z;Z=z+1|0;_=F}else{F=f[j>>2]|0;f[F+(y<<2)>>2]=f[C+12>>2];Z=z;_=F}y=y+1|0;aa=f[l>>2]|0;if(y>>>0>=aa>>>0)break;else z=Z}if((Z|0)==(aa|0))ba=_;else{z=a+84|0;if(!(b[z>>0]|0)){y=f[a+72>>2]|0;h=f[a+68>>2]|0;x=h;if((y|0)==(h|0))ca=_;else{w=y-h>>2;h=0;do{y=x+(h<<2)|0;f[y>>2]=f[_+(f[y>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);ca=_}}else{b[z>>0]=0;z=a+68|0;_=a+72|0;w=f[_>>2]|0;h=f[z>>2]|0;x=w-h>>2;y=h;h=w;if(aa>>>0<=x>>>0)if(aa>>>0>>0?(w=y+(aa<<2)|0,(w|0)!=(h|0)):0){f[_>>2]=h+(~((h+-4-w|0)>>>2)<<2);da=aa}else da=aa;else{kh(z,aa-x|0,1204);da=f[l>>2]|0}x=f[j>>2]|0;if(!da)ca=x;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);ca=x}}f[l>>2]=Z;ba=ca}if(!ba)ea=Z;else{ca=f[o>>2]|0;if((ca|0)!=(ba|0))f[o>>2]=ca+(~((ca+-4-ba|0)>>>2)<<2);br(ba);ea=Z}}else ea=0;Z=f[g+8>>2]|0;if(Z|0){ba=Z;do{Z=ba;ba=f[ba>>2]|0;br(Z)}while((ba|0)!=0)}ba=f[g>>2]|0;f[g>>2]=0;if(!ba){u=e;return ea|0}br(ba);u=e;return ea|0}function qc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=u;u=u+64|0;d=e+48|0;h=e+40|0;i=e+32|0;j=e+16|0;k=e+8|0;l=e;m=e+28|0;n=a+8|0;o=f[n>>2]|0;if((o+-2|0)>>>0<=28){f[a+72>>2]=o;p=1<>2]=p+-1;o=p+-2|0;f[a+80>>2]=o;f[a+84>>2]=(o|0)/2|0}o=a+40|0;f[a+48>>2]=g;g=a+88|0;lk(g);p=a+36|0;q=f[p>>2]|0;r=(f[q+4>>2]|0)-(f[q>>2]|0)|0;s=r>>2;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;t=k;f[t>>2]=0;f[t+4>>2]=0;t=l;f[t>>2]=0;f[t+4>>2]=0;if((r|0)<=0){u=e;return 1}r=j+4|0;t=j+8|0;v=a+84|0;w=a+80|0;x=h+4|0;y=i+4|0;z=d+4|0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=l+4|0;F=a+76|0;a=k+4|0;G=l+4|0;H=f[q>>2]|0;if((f[q+4>>2]|0)==(H|0)){J=q;mq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];$b(o,d,j);H=f[j>>2]|0;q=(H|0)>-1?H:0-H|0;M=f[r>>2]|0;N=(M|0)>-1?M:0-M|0;O=Tn(N|0,((N|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;q=f[t>>2]|0;N=(q|0)>-1;P=N?q:0-q|0;q=Tn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((q|0)==0&(P|0)==0){O=f[v>>2]|0;Q=O;R=j;S=M;T=O}else{O=f[v>>2]|0;U=((O|0)<0)<<31>>31;V=on(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=zk(V|0,I|0,q|0,P|0)|0;f[j>>2]=H;V=on(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=zk(V|0,I|0,q|0,P|0)|0;f[r>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=t;S=M;T=O}f[R>>2]=Q;O=f[j>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[t>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[t>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[t>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){q=(N|0)==(Z|0);if(!(P&q)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(q&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);P=0-S|0;M=0-_|0;f[j>>2]=0-O;f[r>>2]=P;f[t>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(q=(N|0)==(ca|0),!(M&q)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(q&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);N=K<<1;M=b+(N<<2)|0;H=M+4|0;O=f[H>>2]|0;f[h>>2]=f[M>>2];f[x>>2]=O;f[i>>2]=$;f[y>>2]=aa;Dd(d,n,h,i);O=f[d>>2]|0;f[k>>2]=O;P=f[z>>2]|0;f[A>>2]=P;q=f[H>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=q;f[i>>2]=da;f[C>>2]=ea;Dd(d,n,h,i);q=f[d>>2]|0;f[l>>2]=q;M=f[D>>2]|0;f[E>>2]=M;H=f[v>>2]|0;if((H|0)>=(O|0))if((O|0)<(0-H|0))fa=(f[F>>2]|0)+O|0;else fa=O;else fa=O-(f[F>>2]|0)|0;f[k>>2]=fa;if((H|0)>=(P|0))if((P|0)<(0-H|0))ga=(f[F>>2]|0)+P|0;else ga=P;else ga=P-(f[F>>2]|0)|0;f[a>>2]=ga;if((H|0)>=(q|0))if((q|0)<(0-H|0))ha=(f[F>>2]|0)+q|0;else ha=q;else ha=q-(f[F>>2]|0)|0;f[l>>2]=ha;if((H|0)>=(M|0))if((M|0)<(0-H|0))ia=(f[F>>2]|0)+M|0;else ia=M;else ia=M-(f[F>>2]|0)|0;f[G>>2]=ia;if((((ga|0)>-1?ga:0-ga|0)+((fa|0)>-1?fa:0-fa|0)|0)<(((ha|0)>-1?ha:0-ha|0)+((ia|0)>-1?ia:0-ia|0)|0)){Vi(g,0);ja=k}else{Vi(g,1);ja=l}M=f[ja>>2]|0;if((M|0)<0)ka=(f[F>>2]|0)+M|0;else ka=M;M=c+(N<<2)|0;f[M>>2]=ka;N=f[ja+4>>2]|0;if((N|0)<0)la=(f[F>>2]|0)+N|0;else la=N;f[M+4>>2]=la;K=K+1|0;if((K|0)>=(s|0)){ma=5;break}M=f[p>>2]|0;L=f[M>>2]|0;if((f[M+4>>2]|0)-L>>2>>>0<=K>>>0){J=M;ma=6;break}}if((ma|0)==5){u=e;return 1}else if((ma|0)==6)mq(J);return 0}function rc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=Oa,T=Oa,U=Oa,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;e=u;u=u+64|0;g=e+36|0;h=e+24|0;i=e+12|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)mq(j);p=m<<2;q=dn(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;hj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+4|0;m=i+8|0;s=g+4|0;t=g+12|0;v=g+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=d;B=f[A>>2]|0;C=f[A+4>>2]|0;A=p;D=on(f[A>>2]|0,f[A+4>>2]|0,r+z|0,0)|0;A=Tn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;A=h;B=C;D=A+12|0;do{b[A>>0]=b[B>>0]|0;A=A+1|0;B=B+1|0}while((A|0)<(D|0));Xl(i|0,C|0,12)|0;B=_f(g,i)|0;if(!B){A=f[i>>2]|0;D=f[q>>2]|0;E=f[m>>2]|0;F=((A^318)+239^D)+239^E;G=f[s>>2]|0;H=(G|0)==0;a:do if(!H){J=G+-1|0;K=(J&G|0)==0;if(!K)if(F>>>0>>0)L=F;else L=(F>>>0)%(G>>>0)|0;else L=F&J;M=f[(f[g>>2]|0)+(L<<2)>>2]|0;if((M|0)!=0?(N=f[M>>2]|0,(N|0)!=0):0){if(K){K=N;while(1){M=f[K+4>>2]|0;if(!((M|0)==(F|0)|(M&J|0)==(L|0))){O=L;P=29;break a}if(((f[K+8>>2]|0)==(A|0)?(f[K+12>>2]|0)==(D|0):0)?(f[K+16>>2]|0)==(E|0):0)break a;K=f[K>>2]|0;if(!K){O=L;P=29;break a}}}else Q=N;while(1){K=f[Q+4>>2]|0;if((K|0)!=(F|0)){if(K>>>0>>0)R=K;else R=(K>>>0)%(G>>>0)|0;if((R|0)!=(L|0)){O=L;P=29;break a}}if(((f[Q+8>>2]|0)==(A|0)?(f[Q+12>>2]|0)==(D|0):0)?(f[Q+16>>2]|0)==(E|0):0)break a;Q=f[Q>>2]|0;if(!Q){O=L;P=29;break}}}else{O=L;P=29}}else{O=0;P=29}while(0);if((P|0)==29){P=0;C=dn(24)|0;f[C+8>>2]=A;f[C+12>>2]=D;f[C+16>>2]=E;f[C+20>>2]=y;f[C+4>>2]=F;f[C>>2]=0;S=$(((f[t>>2]|0)+1|0)>>>0);T=$(G>>>0);U=$(n[k>>2]);do if(H|$(U*T)>>0<3|(G+-1&G|0)!=0)&1;K=~~$(W($(S/U)))>>>0;Hh(g,N>>>0>>0?K:N);N=f[s>>2]|0;K=N+-1|0;if(!(K&N)){V=N;X=K&F;break}if(F>>>0>>0){V=N;X=F}else{V=N;X=(F>>>0)%(N>>>0)|0}}else{V=G;X=O}while(0);G=(f[g>>2]|0)+(X<<2)|0;F=f[G>>2]|0;if(!F){f[C>>2]=f[v>>2];f[v>>2]=C;f[G>>2]=v;G=f[C>>2]|0;if(G|0){H=f[G+4>>2]|0;G=V+-1|0;if(G&V)if(H>>>0>>0)Y=H;else Y=(H>>>0)%(V>>>0)|0;else Y=H&G;Z=(f[g>>2]|0)+(Y<<2)|0;P=42}}else{f[C>>2]=f[F>>2];Z=F;P=42}if((P|0)==42){P=0;f[Z>>2]=C}f[t>>2]=(f[t>>2]|0)+1}F=w;G=f[F>>2]|0;H=on(G|0,f[F+4>>2]|0,y|0,0)|0;Rg((f[f[x>>2]>>2]|0)+H|0,h|0,G|0)|0;G=f[j>>2]|0;f[G+(z<<2)>>2]=y;_=y+1|0;aa=G}else{G=f[j>>2]|0;f[G+(z<<2)>>2]=f[B+20>>2];_=y;aa=G}z=z+1|0;ba=f[l>>2]|0;if(z>>>0>=ba>>>0)break;else y=_}if((_|0)==(ba|0))ca=aa;else{y=a+84|0;if(!(b[y>>0]|0)){z=f[a+72>>2]|0;h=f[a+68>>2]|0;x=h;if((z|0)==(h|0))da=aa;else{w=z-h>>2;h=0;do{z=x+(h<<2)|0;f[z>>2]=f[aa+(f[z>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);da=aa}}else{b[y>>0]=0;y=a+68|0;aa=a+72|0;w=f[aa>>2]|0;h=f[y>>2]|0;x=w-h>>2;z=h;h=w;if(ba>>>0<=x>>>0)if(ba>>>0>>0?(w=z+(ba<<2)|0,(w|0)!=(h|0)):0){f[aa>>2]=h+(~((h+-4-w|0)>>>2)<<2);ea=ba}else ea=ba;else{kh(y,ba-x|0,1204);ea=f[l>>2]|0}x=f[j>>2]|0;if(!ea)da=x;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);da=x}}f[l>>2]=_;ca=da}if(!ca)fa=_;else{da=f[o>>2]|0;if((da|0)!=(ca|0))f[o>>2]=da+(~((da+-4-ca|0)>>>2)<<2);br(ca);fa=_}}else fa=0;_=f[g+8>>2]|0;if(_|0){ca=_;do{_=ca;ca=f[ca>>2]|0;br(_)}while((ca|0)!=0)}ca=f[g>>2]|0;f[g>>2]=0;if(!ca){u=e;return fa|0}br(ca);u=e;return fa|0}function sc(a,c){a=a|0;c=c|0;var e=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,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;e=u;u=u+32|0;g=e+4|0;h=e;i=e+16|0;j=c+56|0;k=f[j>>2]|0;l=(f[k+100>>2]|0)-(f[k+96>>2]|0)|0;k=(l|0)/12|0;m=c+44|0;Nh(k,f[m>>2]|0)|0;Nh(f[(f[j>>2]|0)+80>>2]|0,f[m>>2]|0)|0;n=f[c+48>>2]|0;o=dn(32)|0;f[g>>2]=o;f[g+8>>2]=-2147483616;f[g+4>>2]=21;p=o;q=14562;r=p+21|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[o+21>>0]=0;o=Oj(n,g,0)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);n=f[m>>2]|0;if(o){b[i>>0]=0;o=n+16|0;q=f[o+4>>2]|0;if(!((q|0)>0|(q|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];ye(n,g,i,i+1|0)|0}Ye(c)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}b[i>>0]=1;c=n+16|0;o=f[c+4>>2]|0;if(!((o|0)>0|(o|0)==0&(f[c>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];ye(n,g,i,i+1|0)|0}n=f[j>>2]|0;c=f[n+80>>2]|0;if(c>>>0<256){if(!l){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}o=i+1|0;q=i+1|0;p=i+1|0;r=0;s=n;while(1){t=f[s+96>>2]|0;v=f[m>>2]|0;b[i>>0]=f[t+(r*12|0)>>2];w=v+16|0;x=f[w>>2]|0;y=f[w+4>>2]|0;if((y|0)>0|(y|0)==0&x>>>0>0){z=x;A=v;B=y}else{f[h>>2]=f[v+4>>2];f[g>>2]=f[h>>2];ye(v,g,i,p)|0;v=f[m>>2]|0;y=v+16|0;z=f[y>>2]|0;A=v;B=f[y+4>>2]|0}b[i>>0]=f[t+(r*12|0)+4>>2];if((B|0)>0|(B|0)==0&z>>>0>0){C=B;D=z;E=A}else{f[h>>2]=f[A+4>>2];f[g>>2]=f[h>>2];ye(A,g,i,q)|0;y=f[m>>2]|0;v=y+16|0;C=f[v+4>>2]|0;D=f[v>>2]|0;E=y}b[i>>0]=f[t+(r*12|0)+8>>2];if(!((C|0)>0|(C|0)==0&D>>>0>0)){f[h>>2]=f[E+4>>2];f[g>>2]=f[h>>2];ye(E,g,i,o)|0}t=r+1|0;if(t>>>0>=k>>>0)break;r=t;s=f[j>>2]|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}if(c>>>0<65536){if(!l){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}s=i+2|0;r=i+2|0;o=i+2|0;E=0;D=n;while(1){C=f[D+96>>2]|0;q=f[m>>2]|0;d[i>>1]=f[C+(E*12|0)>>2];A=q+16|0;z=f[A>>2]|0;B=f[A+4>>2]|0;if((B|0)>0|(B|0)==0&z>>>0>0){F=B;G=z;H=q}else{f[h>>2]=f[q+4>>2];f[g>>2]=f[h>>2];ye(q,g,i,o)|0;q=f[m>>2]|0;z=q+16|0;F=f[z+4>>2]|0;G=f[z>>2]|0;H=q}d[i>>1]=f[C+(E*12|0)+4>>2];if((F|0)>0|(F|0)==0&G>>>0>0){I=F;J=G;K=H}else{f[h>>2]=f[H+4>>2];f[g>>2]=f[h>>2];ye(H,g,i,r)|0;q=f[m>>2]|0;z=q+16|0;I=f[z+4>>2]|0;J=f[z>>2]|0;K=q}d[i>>1]=f[C+(E*12|0)+8>>2];if(!((I|0)>0|(I|0)==0&J>>>0>0)){f[h>>2]=f[K+4>>2];f[g>>2]=f[h>>2];ye(K,g,i,s)|0}C=E+1|0;if(C>>>0>=k>>>0)break;E=C;D=f[j>>2]|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}D=(l|0)!=0;if(c>>>0<2097152){if(D){L=0;M=n}else{f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}while(1){c=f[M+96>>2]|0;Nh(f[c+(L*12|0)>>2]|0,f[m>>2]|0)|0;Nh(f[c+(L*12|0)+4>>2]|0,f[m>>2]|0)|0;Nh(f[c+(L*12|0)+8>>2]|0,f[m>>2]|0)|0;c=L+1|0;if(c>>>0>=k>>>0)break;L=c;M=f[j>>2]|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}if(!D){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}D=0;M=n;while(1){n=(f[M+96>>2]|0)+(D*12|0)|0;L=f[m>>2]|0;c=L+16|0;l=f[c+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[c>>2]|0)>>>0>0)){f[h>>2]=f[L+4>>2];f[g>>2]=f[h>>2];ye(L,g,n,n+12|0)|0}n=D+1|0;if(n>>>0>=k>>>0)break;D=n;M=f[j>>2]|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}function tc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0;e=u;u=u+32|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;switch(f[c+28>>2]|0){case 9:{l=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=l;f[g>>2]=f[h>>2];m=ec(a,c,g)|0;break}case 2:{f[i>>2]=l;f[g>>2]=f[i>>2];m=Xb(a,c,g)|0;break}case 3:{f[j>>2]=l;f[g>>2]=f[j>>2];m=rc(a,c,g)|0;break}case 4:{f[k>>2]=l;f[g>>2]=f[k>>2];m=jc(a,c,g)|0;break}default:m=0}n=m;break}case 1:{m=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=m;f[g>>2]=f[h>>2];o=dc(a,c,g)|0;break}case 2:{f[i>>2]=m;f[g>>2]=f[i>>2];o=Yb(a,c,g)|0;break}case 3:{f[j>>2]=m;f[g>>2]=f[j>>2];o=pc(a,c,g)|0;break}case 4:{f[k>>2]=m;f[g>>2]=f[k>>2];o=ic(a,c,g)|0;break}default:o=0}n=o;break}case 11:case 2:{o=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=o;f[g>>2]=f[h>>2];p=dc(a,c,g)|0;break}case 2:{f[i>>2]=o;f[g>>2]=f[i>>2];p=Yb(a,c,g)|0;break}case 3:{f[j>>2]=o;f[g>>2]=f[j>>2];p=pc(a,c,g)|0;break}case 4:{f[k>>2]=o;f[g>>2]=f[k>>2];p=ic(a,c,g)|0;break}default:p=0}n=p;break}case 4:{p=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=p;f[g>>2]=f[h>>2];q=bc(a,c,g)|0;break}case 2:{f[i>>2]=p;f[g>>2]=f[i>>2];q=Vb(a,c,g)|0;break}case 3:{f[j>>2]=p;f[g>>2]=f[j>>2];q=kc(a,c,g)|0;break}case 4:{f[k>>2]=p;f[g>>2]=f[k>>2];q=gc(a,c,g)|0;break}default:q=0}n=q;break}case 3:{q=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=q;f[g>>2]=f[h>>2];r=bc(a,c,g)|0;break}case 2:{f[i>>2]=q;f[g>>2]=f[i>>2];r=Vb(a,c,g)|0;break}case 3:{f[j>>2]=q;f[g>>2]=f[j>>2];r=kc(a,c,g)|0;break}case 4:{f[k>>2]=q;f[g>>2]=f[k>>2];r=gc(a,c,g)|0;break}default:r=0}n=r;break}case 6:{r=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=r;f[g>>2]=f[h>>2];s=ec(a,c,g)|0;break}case 2:{f[i>>2]=r;f[g>>2]=f[i>>2];s=Xb(a,c,g)|0;break}case 3:{f[j>>2]=r;f[g>>2]=f[j>>2];s=rc(a,c,g)|0;break}case 4:{f[k>>2]=r;f[g>>2]=f[k>>2];s=jc(a,c,g)|0;break}default:s=0}n=s;break}case 5:{s=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=s;f[g>>2]=f[h>>2];t=ec(a,c,g)|0;break}case 2:{f[i>>2]=s;f[g>>2]=f[i>>2];t=Xb(a,c,g)|0;break}case 3:{f[j>>2]=s;f[g>>2]=f[j>>2];t=rc(a,c,g)|0;break}case 4:{f[k>>2]=s;f[g>>2]=f[k>>2];t=jc(a,c,g)|0;break}default:t=0}n=t;break}default:{v=-1;u=e;return v|0}}v=(n|0)==0?-1:n;u=e;return v|0}function uc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;e=u;u=u+32|0;g=e+16|0;h=e+12|0;i=e+29|0;j=e;k=e+28|0;if(!(f[(f[a+8>>2]|0)+80>>2]|0)){l=1;u=e;return l|0}b[i>>0]=-2;m=a+36|0;n=f[m>>2]|0;if(n)if(Ra[f[(f[a>>2]|0)+40>>2]&127](a,n)|0){n=f[m>>2]|0;o=(Qa[f[(f[n>>2]|0)+8>>2]&127](n)|0)&255;b[i>>0]=o;p=5}else q=0;else p=5;if((p|0)==5){o=d+16|0;n=o;r=f[n+4>>2]|0;if(!((r|0)>0|(r|0)==0&(f[n>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,i,i+1|0)|0}i=f[m>>2]|0;if(i|0?(n=(Qa[f[(f[i>>2]|0)+36>>2]&127](i)|0)&255,b[j>>0]=n,n=o,i=f[n+4>>2]|0,!((i|0)>0|(i|0)==0&(f[n>>2]|0)>>>0>0)):0){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,j,j+1|0)|0}n=f[a+32>>2]|0;i=b[n+24>>0]|0;r=X(f[n+80>>2]|0,i)|0;s=(f[f[n>>2]>>2]|0)+(f[n+48>>2]|0)|0;f[j>>2]=0;n=j+4|0;f[n>>2]=0;f[j+8>>2]=0;t=(r|0)==0;do if(!t)if(r>>>0>1073741823)mq(j);else{v=r<<2;w=dn(v)|0;f[j>>2]=w;x=w+(r<<2)|0;f[j+8>>2]=x;hj(w|0,0,v|0)|0;f[n>>2]=x;y=w;break}else y=0;while(0);w=f[m>>2]|0;do if(w){Ta[f[(f[w>>2]|0)+44>>2]&31](w,s,y,r,i,f[c>>2]|0)|0;x=f[m>>2]|0;if(!x){z=s;A=f[j>>2]|0;p=20;break}if(!(Qa[f[(f[x>>2]|0)+32>>2]&127](x)|0)){x=f[j>>2]|0;z=f[m>>2]|0?x:s;A=x;p=20}}else{z=s;A=y;p=20}while(0);if((p|0)==20)km(z,r,A);A=a+4|0;a=f[A>>2]|0;do if(a){z=f[a+48>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;y=dn(48)|0;f[g>>2]=y;f[g+8>>2]=-2147483600;f[g+4>>2]=34;s=y;w=9835;x=s+34|0;do{b[s>>0]=b[w>>0]|0;s=s+1|0;w=w+1|0}while((s|0)<(x|0));b[y+34>>0]=0;w=Oj(z,g,1)|0;if((b[g+11>>0]|0)<0)br(f[g>>2]|0);if(!w){if(!t){w=f[j>>2]|0;s=0;x=0;do{x=f[w+(s<<2)>>2]|x;s=s+1|0}while((s|0)!=(r|0));if(x)B=((_(x|0)|0)>>>3^3)+1|0;else B=1}else B=1;b[k>>0]=0;s=o;w=f[s>>2]|0;z=f[s+4>>2]|0;if((z|0)>0|(z|0)==0&w>>>0>0){C=z;D=w}else{f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,k,k+1|0)|0;w=o;C=f[w+4>>2]|0;D=f[w>>2]|0}b[k>>0]=B;if(!((C|0)>0|(C|0)==0&D>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,k,k+1|0)|0}if((B|0)==(Ll(5)|0)){w=f[j>>2]|0;z=o;s=f[z+4>>2]|0;if(!((s|0)>0|(s|0)==0&(f[z>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,w,w+(r<<2)|0)|0}p=48;break}if(t)p=48;else{w=d+4|0;z=0;do{s=(f[j>>2]|0)+(z<<2)|0;y=o;v=f[y+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[y>>2]|0)>>>0>0)){f[h>>2]=f[w>>2];f[g>>2]=f[h>>2];ye(d,g,s,s+B|0)|0}z=z+1|0}while(z>>>0>>0);p=48}}else p=27}else p=27;while(0);if((p|0)==27){b[k>>0]=1;r=o;o=f[r+4>>2]|0;if(!((o|0)>0|(o|0)==0&(f[r>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];ye(d,g,k,k+1|0)|0}wp(g);k=f[A>>2]|0;if(k|0)Pj(g,10-(Yh(f[k+48>>2]|0)|0)|0)|0;k=Dc(f[j>>2]|0,X((f[c+4>>2]|0)-(f[c>>2]|0)>>2,i)|0,i,g,d)|0;sj(g,f[g+4>>2]|0);if(k)p=48;else E=0}if((p|0)==48){p=f[m>>2]|0;if(!p)E=1;else{Ra[f[(f[p>>2]|0)+40>>2]&127](p,d)|0;E=1}}d=f[j>>2]|0;if(d|0){j=f[n>>2]|0;if((j|0)!=(d|0))f[n>>2]=j+(~((j+-4-d|0)>>>2)<<2);br(d)}q=E}l=q;u=e;return l|0}function vc(a){a=a|0;var b=0,c=0,d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;b=u;u=u+48|0;c=b+24|0;d=b+12|0;e=b;g=a+32|0;h=a+8|0;i=a+12|0;j=f[i>>2]|0;k=f[h>>2]|0;l=j-k>>2;m=a+36|0;n=f[m>>2]|0;o=f[g>>2]|0;p=n-o>>2;q=o;o=n;n=k;if(l>>>0<=p>>>0)if(l>>>0

>>0?(r=q+(l<<2)|0,(r|0)!=(o|0)):0){f[m>>2]=o+(~((o+-4-r|0)>>>2)<<2);s=n;t=k;v=j}else{s=n;t=k;v=j}else{oi(g,l-p|0);p=f[h>>2]|0;s=p;t=p;v=f[i>>2]|0}p=v-t|0;l=p>>2;f[c>>2]=0;j=c+4|0;f[j>>2]=0;k=c+8|0;f[k>>2]=0;if(l|0){if((p|0)<0)mq(c);p=((l+-1|0)>>>5)+1|0;n=dn(p<<2)|0;f[c>>2]=n;f[k>>2]=p;f[j>>2]=l;j=l>>>5;hj(n|0,0,j<<2|0)|0;p=l&31;l=n+(j<<2)|0;if(p|0)f[l>>2]=f[l>>2]&~(-1>>>(32-p|0))}p=a+20|0;l=0;j=s;s=t;t=v;while(1){if(l>>>0>2>>>0){w=0;x=0;y=l;z=s;A=j}else{B=25;break}while(1){v=x>>>5;n=1<<(x&31);do if(!(f[(f[c>>2]|0)+(v<<2)>>2]&n)){k=f[A+(x<<2)>>2]|0;if((f[k+8>>2]|0)!=(f[k+4>>2]|0)){r=0;o=1;m=A;q=k;while(1){k=f[(f[q+4>>2]|0)+(r<<2)>>2]|0;C=0;D=m;while(1){E=f[D+(x<<2)>>2]|0;if((C|0)>=(Ra[f[(f[E>>2]|0)+24>>2]&127](E,k)|0)){F=o;break}E=f[(f[h>>2]|0)+(x<<2)>>2]|0;G=Sa[f[(f[E>>2]|0)+28>>2]&31](E,k,C)|0;if((G|0)!=(x|0)?(E=f[(f[p>>2]|0)+(G<<2)>>2]|0,(1<<(E&31)&f[(f[c>>2]|0)+(E>>>5<<2)>>2]|0)==0):0){F=0;break}C=C+1|0;D=f[h>>2]|0}r=r+1|0;m=f[h>>2]|0;q=f[m+(x<<2)>>2]|0;if(r>>>0>=(f[q+8>>2]|0)-(f[q+4>>2]|0)>>2>>>0)break;else o=F}o=m;if(F)H=o;else{I=w;J=y;K=o;break}}else H=z;f[(f[g>>2]|0)+(y<<2)>>2]=x;o=(f[c>>2]|0)+(v<<2)|0;f[o>>2]=f[o>>2]|n;I=1;J=y+1|0;K=H}else{I=w;J=y;K=z}while(0);x=x+1|0;L=f[i>>2]|0;M=L-K>>2;A=K;if(x>>>0>=M>>>0)break;else{w=I;y=J;z=K}}if(J>>>0>>0&(I^1)){N=0;break}else{l=J;j=A;s=K;t=L}}if((B|0)==25){f[d>>2]=0;B=d+4|0;f[B>>2]=0;f[d+8>>2]=0;L=f[a+4>>2]|0;a=(f[L+12>>2]|0)-(f[L+8>>2]|0)|0;L=a>>2;f[e>>2]=0;K=e+4|0;f[K>>2]=0;A=e+8|0;f[A>>2]=0;if(L|0){if((a|0)<0)mq(e);a=((L+-1|0)>>>5)+1|0;J=dn(a<<2)|0;f[e>>2]=J;f[A>>2]=a;f[K>>2]=L;K=L>>>5;hj(J|0,0,K<<2|0)|0;a=L&31;L=J+(K<<2)|0;if(a|0)f[L>>2]=f[L>>2]&~(-1>>>(32-a|0))}a:do if((t|0)==(s|0))O=1;else{a=0;L=j;K=s;J=t;while(1){A=f[(f[g>>2]|0)+(a<<2)>>2]|0;l=f[L+(A<<2)>>2]|0;I=(f[l+8>>2]|0)-(f[l+4>>2]|0)|0;l=I>>2;if((I|0)<8){P=K;Q=J}else{I=f[B>>2]|0;M=f[d>>2]|0;z=I-M>>2;y=M;M=I;if(l>>>0<=z>>>0)if(l>>>0>>0?(I=y+(l<<2)|0,(I|0)!=(M|0)):0){f[B>>2]=M+(~((M+-4-I|0)>>>2)<<2);R=0}else R=0;else{oi(d,l-z|0);R=0}while(1){if((R|0)<(l|0)){S=0;T=0;U=R}else break;while(1){z=f[(f[h>>2]|0)+(A<<2)>>2]|0;I=f[(f[z+4>>2]|0)+(S<<2)>>2]|0;M=S>>>5;y=1<<(S&31);if(!(f[(f[e>>2]|0)+(M<<2)>>2]&y)){w=0;x=1;H=z;while(1){if((w|0)>=(Ra[f[(f[H>>2]|0)+24>>2]&127](H,I)|0)){V=x;break}z=f[(f[h>>2]|0)+(A<<2)>>2]|0;F=Sa[f[(f[z>>2]|0)+28>>2]&31](z,I,w)|0;z=(f[(f[e>>2]|0)+(F>>>5<<2)>>2]&1<<(F&31)|0)!=0;F=x&z;if(!z){V=F;break}w=w+1|0;x=F;H=f[(f[h>>2]|0)+(A<<2)>>2]|0}if(V){f[(f[d>>2]|0)+(U<<2)>>2]=S;H=(f[e>>2]|0)+(M<<2)|0;f[H>>2]=f[H>>2]|y;W=1;X=U+1|0}else{W=T;X=U}}else{W=T;X=U}S=S+1|0;if((S|0)>=(l|0))break;else{T=W;U=X}}if(W|(X|0)>=(l|0))R=X;else{O=0;break a}}Of(f[(f[h>>2]|0)+(A<<2)>>2]|0,d);P=f[h>>2]|0;Q=f[i>>2]|0}a=a+1|0;if(a>>>0>=Q-P>>2>>>0){O=1;break}else{L=P;K=P;J=Q}}}while(0);Q=f[e>>2]|0;if(Q|0)br(Q);Q=f[d>>2]|0;if(Q|0){d=f[B>>2]|0;if((d|0)!=(Q|0))f[B>>2]=d+(~((d+-4-Q|0)>>>2)<<2);br(Q)}N=O}O=f[c>>2]|0;if(!O){u=b;return N|0}br(O);u=b;return N|0} -function uj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=u;u=u+16|0;g=e;h=a+4|0;f[h>>2]=c;i=f[c+64>>2]|0;c=((f[i+4>>2]|0)-(f[i>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;Xg(a+24|0,c,g);c=f[h>>2]|0;h=(f[c+56>>2]|0)-(f[c+52>>2]|0)>>2;b[g>>0]=0;Xg(a+36|0,h,g);g=a+8|0;f[g>>2]=f[d>>2];f[g+4>>2]=f[d+4>>2];f[g+8>>2]=f[d+8>>2];f[g+12>>2]=f[d+12>>2];u=e;return}function vj(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a;a:do if(!(c&3)){d=a;e=4}else{g=a;h=c;while(1){if(!(b[g>>0]|0)){i=h;break a}j=g+1|0;h=j;if(!(h&3)){d=j;e=4;break}else g=j}}while(0);if((e|0)==4){e=d;while(1){k=f[e>>2]|0;if(!((k&-2139062144^-2139062144)&k+-16843009))e=e+4|0;else break}if(!((k&255)<<24>>24))l=e;else{k=e;while(1){e=k+1|0;if(!(b[e>>0]|0)){l=e;break}else k=e}}i=l}return i-c|0}function wj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j)k=f[a+4>>2]|0;else k=i&255;do if(k>>>0>=c>>>0)if(j){i=(f[a>>2]|0)+c|0;b[g>>0]=0;Hp(i,g);f[a+4>>2]=c;break}else{b[g>>0]=0;Hp(a+c|0,g);b[h>>0]=c;break}else Xi(a,c-k|0,d)|0;while(0);u=e;return}function xj(a){a=a|0;var b=0,c=0,d=0;if(!a)return;b=a+88|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=f[c+8>>2]|0;if(b|0){d=c+12|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;br(b)}br(c)}c=f[a+68>>2]|0;if(c|0){b=a+72|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);br(c)}c=a+64|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d>>2]|0;if(c|0){b=d+4|0;if((f[b>>2]|0)!=(c|0))f[b>>2]=c;br(c)}br(d)}br(a);return}function yj(a,c,d,e,g,h,i,j,k,l){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;f[a>>2]=d;if(d|0){m=d+16|0;n=f[m+4>>2]|0;o=a+8|0;f[o>>2]=f[m>>2];f[o+4>>2]=n;n=d+24|0;d=f[n+4>>2]|0;o=a+16|0;f[o>>2]=f[n>>2];f[o+4>>2]=d}b[a+24>>0]=e;f[a+28>>2]=g;b[a+32>>0]=h&1;h=a+40|0;f[h>>2]=i;f[h+4>>2]=j;j=a+48|0;f[j>>2]=k;f[j+4>>2]=l;f[a+56>>2]=c;return}function zj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;if((f[c+76>>2]|0)>=0?(gr(c)|0)!=0:0){d=a&255;e=a&255;if((e|0)!=(b[c+75>>0]|0)?(g=c+20|0,h=f[g>>2]|0,h>>>0<(f[c+16>>2]|0)>>>0):0){f[g>>2]=h+1;b[h>>0]=d;i=e}else i=Bj(c,a)|0;fr(c);j=i}else k=3;do if((k|0)==3){i=a&255;e=a&255;if((e|0)!=(b[c+75>>0]|0)?(d=c+20|0,h=f[d>>2]|0,h>>>0<(f[c+16>>2]|0)>>>0):0){f[d>>2]=h+1;b[h>>0]=i;j=e;break}j=Bj(c,a)|0}while(0);return j|0}function Aj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=f[a+4>>2]|0;if((i|0)==-1){j=0;u=d;return j|0}b[h>>0]=i;i=c+16|0;a=f[i+4>>2]|0;if(!((a|0)>0|(a|0)==0&(f[i>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];ye(c,e,h,h+1|0)|0}j=1;u=d;return j|0}function Bj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=u;u=u+16|0;e=d;g=c&255;b[e>>0]=g;i=a+16|0;j=f[i>>2]|0;if(!j)if(!(pl(a)|0)){k=f[i>>2]|0;l=4}else m=-1;else{k=j;l=4}do if((l|0)==4){j=a+20|0;i=f[j>>2]|0;if(i>>>0>>0?(n=c&255,(n|0)!=(b[a+75>>0]|0)):0){f[j>>2]=i+1;b[i>>0]=g;m=n;break}if((Sa[f[a+36>>2]&31](a,e,1)|0)==1)m=h[e>>0]|0;else m=-1}while(0);u=d;return m|0}function Cj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=dn(88)|0;d=c+60|0;e=c;g=e+60|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[d>>2]=c;d=c+64|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;d=Kf(c,b)|0;f[a>>2]=d?c:0;a=d?0:c;if(d)return;ui(a);br(a);return}function Dj(a,b){a=a|0;b=b|0;if(!b)return;else{Dj(a,f[b>>2]|0);Dj(a,f[b+4>>2]|0);sj(b+20|0,f[b+24>>2]|0);br(b);return}}function Ej(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=u;u=u+16|0;g=e;h=a+4|0;f[h>>2]=c;i=((f[c+4>>2]|0)-(f[c>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;Xg(a+24|0,i,g);i=f[h>>2]|0;h=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;b[g>>0]=0;Xg(a+36|0,h,g);g=a+8|0;f[g>>2]=f[d>>2];f[g+4>>2]=f[d+4>>2];f[g+8>>2]=f[d+8>>2];f[g+12>>2]=f[d+12>>2];u=e;return}function Fj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=e+4|0;f[g>>2]=c;c=a+4|0;a=dn(32)|0;f[h>>2]=a;f[h+8>>2]=-2147483616;f[h+4>>2]=17;i=a;j=12932;k=i+17|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[a+17>>0]=0;Nj(wd(c,g)|0,h,d);if((b[h+11>>0]|0)>=0){u=e;return}br(f[h>>2]|0);u=e;return}function Gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=a+48|0;if((f[a+52>>2]|0)>>>0<=e>>>0)pe(b,e+1|0,0);c=(f[b>>2]|0)+(e>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(e&31);c=f[a+36>>2]|0;if((f[a+40>>2]|0)-c>>2>>>0<=e>>>0){d=1;return d|0}Pp(f[c+(e<<2)>>2]|0);d=1;return d|0}function Hj(a){a=a|0;if(!a)return;f[a>>2]=1136;sj(a+28|0,f[a+32>>2]|0);nj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);br(a);return}function Ij(a){a=a|0;f[a>>2]=1136;sj(a+28|0,f[a+32>>2]|0);nj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);return}function Jj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(c>>>0>0|(c|0)==0&a>>>0>4294967295){e=d;f=a;g=c;while(1){c=an(f|0,g|0,10,0)|0;e=e+-1|0;b[e>>0]=c&255|48;c=f;f=up(f|0,g|0,10,0)|0;if(!(g>>>0>9|(g|0)==9&c>>>0>4294967295))break;else g=I}h=f;i=e}else{h=a;i=d}if(!h)j=i;else{d=h;h=i;while(1){i=h+-1|0;b[i>>0]=(d>>>0)%10|0|48;if(d>>>0<10){j=i;break}else{d=(d>>>0)/10|0;h=i}}}return j|0}function Kj(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=a;while(1){d=c+1|0;if(!(tq(b[c>>0]|0)|0))break;else c=d}a=b[c>>0]|0;switch(a<<24>>24|0){case 45:{e=1;f=5;break}case 43:{e=0;f=5;break}default:{g=0;h=c;i=a}}if((f|0)==5){g=e;h=d;i=b[d>>0]|0}if(!(Pq(i<<24>>24)|0))j=0;else{i=0;d=h;while(1){h=(i*10|0)+48-(b[d>>0]|0)|0;d=d+1|0;if(!(Pq(b[d>>0]|0)|0)){j=h;break}else i=h}}return (g|0?j:0-j|0)|0}function Lj(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=0,h=0;e=u;u=u+16|0;g=e;cl(g,d);h=mi(a,c)|0;c=h+11|0;if((b[c>>0]|0)<0){b[f[h>>2]>>0]=0;f[h+4>>2]=0}else{b[h>>0]=0;b[c>>0]=0}Ng(h,0);f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];u=e;return}function Mj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;fl(g,d&1);d=mi(a,c)|0;c=d+11|0;if((b[c>>0]|0)<0){b[f[d>>2]>>0]=0;f[d+4>>2]=0}else{b[d>>0]=0;b[c>>0]=0}Ng(d,0);f[d>>2]=f[g>>2];f[d+4>>2]=f[g+4>>2];f[d+8>>2]=f[g+8>>2];u=e;return}function Nj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;fl(g,d);d=mi(a,c)|0;c=d+11|0;if((b[c>>0]|0)<0){b[f[d>>2]>>0]=0;f[d+4>>2]=0}else{b[d>>0]=0;b[c>>0]=0}Ng(d,0);f[d>>2]=f[g>>2];f[d+4>>2]=f[g+4>>2];f[d+8>>2]=f[g+8>>2];u=e;return}function Oj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=zg(a,c)|0;if((e|0)==(a+4|0)){g=-1;h=(g|0)==-1;i=(g|0)!=0;j=h?d:i;return j|0}a=e+28|0;if((b[a+11>>0]|0)<0)k=f[a>>2]|0;else k=a;g=Kj(k)|0;h=(g|0)==-1;i=(g|0)!=0;j=h?d:i;return j|0}function Pj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;if(c>>>0>10){g=0;u=d;return g|0}h=dn(48)|0;f[e>>2]=h;f[e+8>>2]=-2147483600;f[e+4>>2]=33;i=h;j=13067;k=i+33|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[h+33>>0]=0;Nj(a,e,c);if((b[e+11>>0]|0)<0)br(f[e>>2]|0);g=1;u=d;return g|0}function Qj(a){a=a|0;f[a>>2]=1136;sj(a+28|0,f[a+32>>2]|0);nj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);br(a);return}function Rj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=f[b>>2]|0;if((c|0)==-1)return 1;b=c*3|0;if((b|0)==-1)return 1;c=f[a>>2]|0;a=f[c+(b<<2)>>2]|0;d=b+1|0;e=((d>>>0)%3|0|0)==0?b+-2|0:d;if((e|0)==-1)g=-1;else g=f[c+(e<<2)>>2]|0;e=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((e|0)==-1)h=-1;else h=f[c+(e<<2)>>2]|0;if((a|0)==(g|0))return 1;else return (a|0)==(h|0)|(g|0)==(h|0)|0;return 0}function Sj(a){a=a|0;f[a>>2]=2968;sj(a+28|0,f[a+32>>2]|0);Dj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);return}function Tj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0;d=0;while(1){if((h[15560+d>>0]|0)==(a|0)){e=2;break}g=d+1|0;if((g|0)==87){i=15648;j=87;e=5;break}else d=g}if((e|0)==2)if(!d)k=15648;else{i=15648;j=d;e=5}if((e|0)==5)while(1){e=0;d=i;do{a=d;d=d+1|0}while((b[a>>0]|0)!=0);j=j+-1|0;if(!j){k=d;break}else{i=d;e=5}}return yq(k,f[c+20>>2]|0)|0}function Uj(a,b){a=+a;b=b|0;var c=0,d=0,e=0,g=0.0,h=0.0,i=0,j=0.0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;e=Wn(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){g=+Uj(a*18446744073709551616.0,b);h=g;i=(f[b>>2]|0)+-64|0}else{h=a;i=0}f[b>>2]=i;j=h;break}case 2047:{j=a;break}default:{f[b>>2]=(e&2047)+-1022;f[s>>2]=c;f[s+4>>2]=d&-2146435073|1071644672;j=+p[s>>3]}}return +j}function Vj(a){a=a|0;f[a>>2]=2968;sj(a+28|0,f[a+32>>2]|0);Dj(a+16|0,f[a+20>>2]|0);sj(a+4|0,f[a+8>>2]|0);br(a);return}function Wj(a,b){a=+a;b=b|0;var c=0.0,d=0,e=0,g=0.0,h=0;if((b|0)<=1023)if((b|0)<-1022){c=a*2.2250738585072014e-308;d=(b|0)<-2044;e=b+2044|0;g=d?c*2.2250738585072014e-308:c;h=d?((e|0)>-1022?e:-1022):b+1022|0}else{g=a;h=b}else{c=a*8988465674311579538646525.0e283;e=(b|0)>2046;d=b+-2046|0;g=e?c*8988465674311579538646525.0e283:c;h=e?((d|0)<1023?d:1023):b+-1023|0}b=Rn(h+1023|0,0,52)|0;h=I;f[s>>2]=b;f[s+4>>2]=h;return +(g*+p[s>>3])}function Xj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;if(!(f[a+80>>2]|0)){b=0;return b|0}c=a+8|0;d=a+12|0;a=f[c>>2]|0;if(((f[d>>2]|0)-a|0)>0){e=0;g=a}else{b=1;return b|0}while(1){a=f[g+(e<<2)>>2]|0;e=e+1|0;if(!(yl(a,a)|0)){b=0;h=5;break}g=f[c>>2]|0;if((e|0)>=((f[d>>2]|0)-g>>2|0)){b=1;h=5;break}}if((h|0)==5)return b|0;return 0}function Yj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=a+36|0;d=a+40|0;e=f[c>>2]|0;if((f[d>>2]|0)==(e|0)){g=1;return g|0}h=a+60|0;a=0;i=e;while(1){e=f[i+(a<<2)>>2]|0;a=a+1|0;if(!(Sa[f[(f[e>>2]|0)+20>>2]&31](e,h,b)|0)){g=0;j=5;break}i=f[c>>2]|0;if(a>>>0>=(f[d>>2]|0)-i>>2>>>0){g=1;j=5;break}}if((j|0)==5)return g|0;return 0}function Zj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+36|0;d=a+40|0;a=f[c>>2]|0;if((f[d>>2]|0)==(a|0)){e=1;return e|0}else{g=0;h=a}while(1){a=f[h+(g<<2)>>2]|0;g=g+1|0;if(!(Ra[f[(f[a>>2]|0)+24>>2]&127](a,b)|0)){e=0;i=4;break}h=f[c>>2]|0;if(g>>>0>=(f[d>>2]|0)-h>>2>>>0){e=1;i=4;break}}if((i|0)==4)return e|0;return 0}function _j(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;f[a>>2]=0;c=a+4|0;f[c>>2]=0;f[a+8>>2]=0;d=b+4|0;e=(f[d>>2]|0)-(f[b>>2]|0)|0;g=e>>2;if(!g)return;if(g>>>0>1073741823)mq(a);h=dn(e)|0;f[c>>2]=h;f[a>>2]=h;f[a+8>>2]=h+(g<<2);g=f[b>>2]|0;b=(f[d>>2]|0)-g|0;if((b|0)<=0)return;Rg(h|0,g|0,b|0)|0;f[c>>2]=h+(b>>>2<<2);return}function $j(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=a+8|0;d=f[a>>2]|0;if((f[c>>2]|0)-d>>2>>>0>=b>>>0)return;e=a+4|0;if(b>>>0>1073741823){g=ra(8)|0;Wo(g,14941);f[g>>2]=6944;va(g|0,1080,114)}g=(f[e>>2]|0)-d|0;h=dn(b<<2)|0;if((g|0)>0)Rg(h|0,d|0,g|0)|0;f[a>>2]=h;f[e>>2]=h+(g>>2<<2);f[c>>2]=h+(b<<2);if(!d)return;br(d);return}function ak(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=a+36|0;c=a+40|0;d=f[b>>2]|0;if((f[c>>2]|0)==(d|0)){e=1;return e|0}g=a+60|0;a=0;h=d;while(1){d=f[h+(a<<2)>>2]|0;a=a+1|0;if(!(Ra[f[(f[d>>2]|0)+16>>2]&127](d,g)|0)){e=0;i=5;break}h=f[b>>2]|0;if(a>>>0>=(f[c>>2]|0)-h>>2>>>0){e=1;i=5;break}}if((i|0)==5)return e|0;return 0}function bk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d;g=dn(16)|0;f[e>>2]=g;f[e+8>>2]=-2147483632;f[e+4>>2]=15;h=g;i=12916;j=h+15|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[g+15>>0]=0;Nj(a+4|0,e,c);if((b[e+11>>0]|0)>=0){u=d;return}br(f[e>>2]|0);u=d;return}function ck(a,b){a=a|0;b=b|0;var c=0,d=0;f[a>>2]=0;f[a+4>>2]=b;if(b|0?(c=mh(b,992,976,0)|0,c|0):0){d=dn(56)|0;Gm(d,c);c=f[a>>2]|0;f[a>>2]=d;if(!c)return;Va[f[(f[c>>2]|0)+4>>2]&127](c);return}c=dn(56)|0;Am(c,b);b=f[a>>2]|0;f[a>>2]=c;if(!b)return;Va[f[(f[b>>2]|0)+4>>2]&127](b);return}function dk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0;d=f[a+176>>2]|0;e=f[a+172>>2]|0;a=e;if((d|0)==(e|0))return 0;g=(d-e|0)/136|0;e=0;while(1){if((f[a+(e*136|0)>>2]|0)==(c|0)){h=4;break}d=e+1|0;if(d>>>0>>0)e=d;else{h=6;break}}if((h|0)==4)return ((b[a+(e*136|0)+100>>0]|0)==0?0:a+(e*136|0)+4|0)|0;else if((h|0)==6)return 0;return 0}function ek(a,b){a=a|0;b=b|0;var c=0,d=0;c=f[a+72>>2]|0;if(!c){d=0;return d|0}f[c+4>>2]=a+60;if(!(Qa[f[(f[c>>2]|0)+12>>2]&127](c)|0)){d=0;return d|0}if(!(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)){d=0;return d|0}if(!(Ra[f[(f[a>>2]|0)+44>>2]&127](a,b)|0)){d=0;return d|0}d=Ra[f[(f[a>>2]|0)+48>>2]&127](a,b)|0;return d|0}function fk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>357913941)mq(a);e=dn(b*12|0)|0;f[d>>2]=e;f[a>>2]=e;f[a+8>>2]=e+(b*12|0);a=b;b=e;do{_j(b,c);b=(f[d>>2]|0)+12|0;f[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function gk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=f[b>>2]|0;if(!c){d=0;return d|0}e=a+44|0;g=f[e>>2]|0;if(g>>>0<(f[a+48>>2]|0)>>>0){f[b>>2]=0;f[g>>2]=c;f[e>>2]=(f[e>>2]|0)+4;d=1;return d|0}else{Bg(a+40|0,b);d=1;return d|0}return 0}function hk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2880;f[a+40>>2]=1180;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=1460;b=a+36|0;d=f[b>>2]|0;f[b>>2]=0;if(!d){zi(a);br(a);return}Va[f[(f[d>>2]|0)+4>>2]&127](d);zi(a);br(a);return}function ik(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0;f[c>>2]=2;d=a+4|0;a=c+8|0;e=f[a>>2]|0;g=(f[c+12>>2]|0)-e|0;if(g>>>0<4294967292){Bk(a,g+4|0,0);i=f[a>>2]|0}else i=e;e=i+g|0;g=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;return}function jk(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3164;b=a+8|0;f[b>>2]=3188;c=f[a+56>>2]|0;if(c|0){d=a+60|0;e=f[d>>2]|0;if((e|0)!=(c|0))f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);br(c)}f[b>>2]=3208;b=f[a+44>>2]|0;if(b|0)br(b);b=f[a+32>>2]|0;if(!b){br(a);return}br(b);br(a);return}function kk(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=Oa,h=0;e=zg(a,c)|0;if((e|0)==(a+4|0)){g=d;return $(g)}a=e+28|0;if((b[a+11>>0]|0)<0)h=f[a>>2]|0;else h=a;g=$(+Xq(h));return $(g)}function lk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=u;u=u+16|0;c=b;d=c;f[d>>2]=0;f[d+4>>2]=0;cf(a,2,c);c=f[a+12>>2]|0;d=a+16|0;e=f[d>>2]|0;if((e|0)==(c|0)){g=a+24|0;f[g>>2]=0;h=a+28|0;f[h>>2]=0;u=b;return}f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);g=a+24|0;f[g>>2]=0;h=a+28|0;f[h>>2]=0;u=b;return}function mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=f[a+176>>2]|0;d=f[a+172>>2]|0;e=d;a:do if((c|0)!=(d|0)){g=(c-d|0)/136|0;h=0;while(1){if((f[e+(h*136|0)>>2]|0)==(b|0))break;i=h+1|0;if(i>>>0>>0)h=i;else break a}j=e+(h*136|0)+104|0;return j|0}while(0);j=a+40|0;return j|0}function nk(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3232;b=a+8|0;f[b>>2]=3256;c=f[a+56>>2]|0;if(c|0){d=a+60|0;e=f[d>>2]|0;if((e|0)!=(c|0))f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);br(c)}f[b>>2]=3276;b=f[a+44>>2]|0;if(b|0)br(b);b=f[a+32>>2]|0;if(!b){br(a);return}br(b);br(a);return}function ok(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2880;f[a+40>>2]=1180;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=1460;b=a+36|0;d=f[b>>2]|0;f[b>>2]=0;if(!d){zi(a);return}Va[f[(f[d>>2]|0)+4>>2]&127](d);zi(a);return}function pk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;Ec(a,b);if((b|0)<=-1)return;c=a+88|0;d=f[c>>2]|0;e=f[a+84>>2]|0;if((d-e>>2|0)<=(b|0))return;a=e+(b<<2)|0;b=a+4|0;e=d-b|0;g=e>>2;if(!g)h=d;else{Xl(a|0,b|0,e|0)|0;h=f[c>>2]|0}e=a+(g<<2)|0;if((h|0)==(e|0))return;f[c>>2]=h+(~((h+-4-e|0)>>>2)<<2);return}function qk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a+32>>2]|0;c=f[a+36>>2]|0;if((b|0)==(c|0)){d=1;return d|0}e=a+8|0;g=a+44|0;a=b;while(1){b=f[(f[e>>2]|0)+(f[a>>2]<<2)>>2]|0;a=a+4|0;if(!(Ra[f[(f[b>>2]|0)+20>>2]&127](b,f[g>>2]|0)|0)){d=0;h=5;break}if((a|0)==(c|0)){d=1;h=5;break}}if((h|0)==5)return d|0;return 0}function rk(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3164;b=a+8|0;f[b>>2]=3188;c=f[a+56>>2]|0;if(c|0){d=a+60|0;e=f[d>>2]|0;if((e|0)!=(c|0))f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);br(c)}f[b>>2]=3208;b=f[a+44>>2]|0;if(b|0)br(b);b=f[a+32>>2]|0;if(!b)return;br(b);return}function sk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0.0;d=u;u=u+128|0;e=d;g=e;h=g+124|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(h|0));g=e+4|0;f[g>>2]=a;h=e+8|0;f[h>>2]=-1;f[e+44>>2]=a;f[e+76>>2]=-1;Rm(e,0);i=+Lc(e,c,1);c=(f[g>>2]|0)-(f[h>>2]|0)+(f[e+108>>2]|0)|0;if(b|0)f[b>>2]=c|0?a+c|0:a;u=d;return +i}function tk(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0;a=c+16|0;g=f[a>>2]|0;do if(g){if((g|0)!=(d|0)){h=c+36|0;f[h>>2]=(f[h>>2]|0)+1;f[c+24>>2]=2;b[c+54>>0]=1;break}h=c+24|0;if((f[h>>2]|0)==2)f[h>>2]=e}else{f[a>>2]=d;f[c+24>>2]=e;f[c+36>>2]=1}while(0);return}function uk(a){a=a|0;var c=0,d=0,e=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;d=a+20|0;c=a+28|0;if((f[d>>2]|0)>>>0>(f[c>>2]|0)>>>0)Sa[f[a+36>>2]&31](a,0,0)|0;f[a+16>>2]=0;f[c>>2]=0;f[d>>2]=0;d=f[a>>2]|0;if(!(d&4)){c=(f[a+44>>2]|0)+(f[a+48>>2]|0)|0;f[a+8>>2]=c;f[a+4>>2]=c;e=d<<27>>31}else{f[a>>2]=d|32;e=-1}return e|0}function vk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=zg(a,c)|0;if((d|0)==(a+4|0)){e=0;return e|0}a=d+28|0;if((b[a+11>>0]|0)<0)g=f[a>>2]|0;else g=a;e=((Kj(g)|0)+1|0)>>>0>1;return e|0}function wk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5840;b=f[a+96>>2]|0;if(b|0){c=a+100|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);br(b)}b=f[a+84>>2]|0;if(!b){wg(a);br(a);return}d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b);wg(a);br(a);return}function xk(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3232;b=a+8|0;f[b>>2]=3256;c=f[a+56>>2]|0;if(c|0){d=a+60|0;e=f[d>>2]|0;if((e|0)!=(c|0))f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);br(c)}f[b>>2]=3276;b=f[a+44>>2]|0;if(b|0)br(b);b=f[a+32>>2]|0;if(!b)return;br(b);return}function yk(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=zg(a,c)|0;if((e|0)==(a+4|0)){g=d;return g|0}d=e+28|0;if((b[d+11>>0]|0)<0)h=f[d>>2]|0;else h=d;g=Kj(h)|0;return g|0}function zk(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;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=Vn(e^a|0,f^b|0,e|0,f|0)|0;b=I;a=g^e;e=h^f;return Vn((Bd(i,b,Vn(g^c|0,h^d|0,g|0,h|0)|0,I,0)|0)^a|0,I^e|0,a|0,e|0)|0}function Ak(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0;f[a>>2]=b;h=b+16|0;i=f[h+4>>2]|0;j=a+8|0;f[j>>2]=f[h>>2];f[j+4>>2]=i;i=b+24|0;b=f[i+4>>2]|0;j=a+16|0;f[j>>2]=f[i>>2];f[j+4>>2]=b;b=a+40|0;f[b>>2]=c;f[b+4>>2]=d;d=a+48|0;f[d>>2]=e;f[d+4>>2]=g;return}function Bk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e|0;h=e;e=d;if(g>>>0>=b>>>0){if(g>>>0>b>>>0?(d=h+b|0,(d|0)!=(e|0)):0)f[c>>2]=d}else ri(a,b-g|0);g=a+24|0;a=g;b=Tn(f[a>>2]|0,f[a+4>>2]|0,1,0)|0;a=g;f[a>>2]=b;f[a+4>>2]=I;return}function Ck(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=zg(a,c)|0;if((d|0)==(a+4|0)){e=-1;return e|0}a=d+28|0;if((b[a+11>>0]|0)<0)g=f[a>>2]|0;else g=a;e=Kj(g)|0;return e|0}function Dk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5840;b=f[a+96>>2]|0;if(b|0){c=a+100|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);br(b)}b=f[a+84>>2]|0;if(!b){wg(a);return}d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);br(b);wg(a);return}function Ek(a){a=a|0;var c=0,d=0,e=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=1;c=a+68|0;d=a+28|0;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));f[c>>2]=a;c=a+72|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;f[c+20>>2]=0;return}function Fk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3188;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3208;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b){br(a);return}br(b);br(a);return}function Gk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2004;b=f[a+76>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Hk(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;f=u;u=u+256|0;g=f;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;hj(g|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;d=e;do{ep(a,g,256);d=d+-256|0}while(d>>>0>255);h=b&255}else h=e;ep(a,g,h)}u=f;return}function Ik(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3256;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b){br(a);return}br(b);br(a);return}function Jk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1696;b=f[a+76>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Kk(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;if(qp(a,f[b+8>>2]|0,g)|0)fj(0,b,c,d,e);else{h=f[a+8>>2]|0;_a[f[(f[h>>2]|0)+20>>2]&3](h,b,c,d,e,g)}return}function Lk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3188;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3208;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Mk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2060;tj(a+108|0);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Nk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3256;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Ok(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1752;tj(a+108|0);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Pk(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;a:do if(!d)e=0;else{f=a;g=d;h=c;while(1){i=b[f>>0]|0;j=b[h>>0]|0;if(i<<24>>24!=j<<24>>24)break;g=g+-1|0;if(!g){e=0;break a}else{f=f+1|0;h=h+1|0}}e=(i&255)-(j&255)|0}while(0);return e|0}function Qk(a){a=a|0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+24>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;else return (f[a+36>>2]|0)!=0|0;return 0}function Rk(a){a=a|0;var b=0,c=0;f[a>>2]=2004;b=f[a+76>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Sk(a){a=a|0;var c=0,d=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=0;while(1){if((c|0)==3)break;f[a+(c<<2)>>2]=0;c=c+1|0}if((b[a+11>>0]|0)<0)d=(f[a+8>>2]&2147483647)+-1|0;else d=10;wj(a,d,0);return}function Tk(a){a=a|0;var b=0,c=0,d=0,e=0.0,g=0.0;b=f[a+8>>2]|0;if((b|0)<2){c=0;d=0;I=c;return d|0}e=+(b|0);g=+Fg(e)*e;e=+W(+(g-+p[a>>3]));c=+K(e)>=1.0?(e>0.0?~~+Y(+J(e/4294967296.0),4294967295.0)>>>0:~~+W((e-+(~~e>>>0))/4294967296.0)>>>0):0;d=~~e>>>0;I=c;return d|0}function Uk(a){a=a|0;var b=0,c=0;f[a>>2]=1696;b=f[a+76>>2]|0;if(b|0)br(b);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Vk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=f[(f[a+36>>2]|0)+(e<<2)>>2]|0;e=f[b+32>>2]|0;if(e|0){d=e;return d|0}d=f[b+8>>2]|0;return d|0}function Wk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1216;b=f[a+16>>2]|0;if(b|0){c=a+20|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b)}b=f[a+4>>2]|0;if(!b)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(b|0))f[d>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Xk(a){a=a|0;var b=0,c=0;f[a>>2]=2060;tj(a+108|0);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Yk(a){a=a|0;if(!(f[a+64>>2]|0))return 0;if(!(f[a+68>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function Zk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(qp(a,f[b+8>>2]|0,0)|0)tk(0,b,c,d);else{e=f[a+8>>2]|0;Ya[f[(f[e>>2]|0)+28>>2]&7](e,b,c,d)}return}function _k(a){a=a|0;var b=0,c=0;f[a>>2]=1752;tj(a+108|0);f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function $k(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<0){c=0;return c|0}d=f[a+4>>2]|0;if(((f[d+12>>2]|0)-(f[d+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}d=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Ra[f[(f[d>>2]|0)+36>>2]&127](d,b)|0;return c|0}function al(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<0){c=0;return c|0}d=f[a+4>>2]|0;if(((f[d+12>>2]|0)-(f[d+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}d=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Ra[f[(f[d>>2]|0)+32>>2]&127](d,b)|0;return c|0}function bl(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0;d=b[a>>0]|0;e=b[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24){f=e;g=d}else{d=c;c=a;do{c=c+1|0;d=d+1|0;a=b[c>>0]|0;e=b[d>>0]|0}while(!(a<<24>>24==0?1:a<<24>>24!=e<<24>>24));f=e;g=a}return (g&255)-(f&255)|0}function cl(a,b){a=a|0;b=$(b);var c=0,d=0;c=u;u=u+16|0;d=c;Sk(d);qi(a,d,b);Go(d);u=c;return}function dl(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;b=f[a>>2]|0;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d+(~((d+-4-b|0)>>>2)<<2)|0;f[c>>2]=g;e=g}f[a+12>>2]=0;f[a+16>>2]=0;if(!b)return;if((e|0)!=(b|0))f[c>>2]=e+(~((e+-4-b|0)>>>2)<<2);br(b);return}function el(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=f[a+16>>2]|0;if(((f[a+20>>2]|0)-d>>2|0)<=(b|0)){e=-1;return e|0}g=f[d+(b<<2)>>2]|0;if((g|0)<0){e=-1;return e|0}e=f[(f[(f[(f[a+36>>2]|0)+(g<<2)>>2]|0)+16>>2]|0)+(c<<2)>>2]|0;return e|0}function fl(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;Sk(d);vi(a,d,b);Go(d);u=c;return}function gl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;d=u;u=u+32|0;e=d;g=d+20|0;f[e>>2]=f[a+60>>2];f[e+4>>2]=0;f[e+8>>2]=b;f[e+12>>2]=g;f[e+16>>2]=c;if((ro(za(140,e|0)|0)|0)<0){f[g>>2]=-1;h=-1}else h=f[g>>2]|0;u=d;return h|0}function hl(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)==-1|(b|0)>4){c=0;return c|0}d=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-d|0)<=0){c=0;return c|0}b=f[d>>2]|0;if((b|0)==-1){c=0;return c|0}c=f[(f[a+8>>2]|0)+(b<<2)>>2]|0;return c|0}function il(a){a=a|0;if(!(f[a+40>>2]|0))return 0;if(!(f[a+24>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;else return (f[a+36>>2]|0)!=0|0;return 0}function jl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=f[(f[a+36>>2]|0)+(e<<2)>>2]|0;d=(f[b+20>>2]|0)-(f[b+16>>2]|0)>>2;return d|0}function kl(a){a=a|0;var b=0;if(!(f[a+24>>2]|0)){b=0;return b|0}if(!(f[a+28>>2]|0)){b=0;return b|0}if(!(f[a+32>>2]|0)){b=0;return b|0}b=(f[a+36>>2]|0)!=0;return b|0}function ll(a){a=a|0;if(!(f[a+60>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function ml(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;Sg(a,c);f[a>>2]=1392;c=a+72|0;d=a+36|0;a=d+36|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(a|0));d=f[b>>2]|0;f[b>>2]=0;f[c>>2]=d;return}function nl(a,c){a=a|0;c=c|0;var d=0,e=0;d=a;e=c;c=d+64|0;do{f[d>>2]=f[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(c|0));e=a+64|0;f[a+88>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;b[e+20>>0]=0;return}function ol(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if((a|0)==0&(c|0)==0)f=d;else{g=d;d=c;c=a;while(1){a=g+-1|0;b[a>>0]=h[15542+(c&15)>>0]|0|e;c=Wn(c|0,d|0,4)|0;d=I;if((c|0)==0&(d|0)==0){f=a;break}else g=a}}return f|0}function pl(a){a=a|0;var c=0,d=0,e=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;d=f[a>>2]|0;if(!(d&8)){f[a+8>>2]=0;f[a+4>>2]=0;c=f[a+44>>2]|0;f[a+28>>2]=c;f[a+20>>2]=c;f[a+16>>2]=c+(f[a+48>>2]|0);e=0}else{f[a>>2]=d|32;e=-1}return e|0}function ql(a,b){a=a|0;b=b|0;var c=0,d=0;c=f[b+88>>2]|0;if(!c){d=0;return d|0}if((f[c>>2]|0)!=2){d=0;return d|0}b=f[c+8>>2]|0;f[a+4>>2]=h[b>>0]|h[b+1>>0]<<8|h[b+2>>0]<<16|h[b+3>>0]<<24;d=1;return d|0}function rl(a){a=a|0;var b=0;if(!(f[a+44>>2]|0)){b=0;return b|0}if(!(f[a+48>>2]|0)){b=0;return b|0}if(!(f[a+52>>2]|0)){b=0;return b|0}b=(f[a+56>>2]|0)!=0;return b|0}function sl(a){a=a|0;kj(a);br(a);return}function tl(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+40>>2]=c;d=1;return d|0}function ul(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+44>>2]=c;d=1;return d|0}function vl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e|0;if(g>>>0>>0){ri(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+b|0;if((g|0)==(d|0))return;f[c>>2]=g;return}function wl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=$(e);f[a+4>>2]=b;Jf(a+8|0,c,c+(d<<2)|0);n[a+20>>2]=e;return}function xl(a,b){a=a|0;b=b|0;var c=0;if(!(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)){c=0;return c|0}if(!(Ra[f[(f[a>>2]|0)+44>>2]&127](a,b)|0)){c=0;return c|0}c=Ra[f[(f[a>>2]|0)+48>>2]&127](a,b)|0;return c|0}function yl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c+4|0;e=c;f[e>>2]=0;f[d>>2]=f[e>>2];e=tc(a,b,d)|0;u=c;return e|0}function zl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;d=f[c>>2]|0;c=a;e=b-a>>2;while(1){if(!e)break;a=(e|0)/2|0;b=c+(a<<2)|0;g=(f[b>>2]|0)>>>0>>0;c=g?b+4|0:c;e=g?e+-1-a|0:a}return c|0}function Al(a){a=a|0;var c=0;f[a>>2]=0;c=a+8|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;b[a+24>>0]=1;f[a+28>>2]=9;c=a+40|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[a+56>>2]=-1;f[a+60>>2]=0;return}function Bl(a){a=a|0;mj(a);br(a);return}function Cl(a){a=a|0;var c=0,d=0,e=0,g=0,h=0;if(!(Pq(b[f[a>>2]>>0]|0)|0))c=0;else{d=0;while(1){e=f[a>>2]|0;g=(d*10|0)+-48+(b[e>>0]|0)|0;h=e+1|0;f[a>>2]=h;if(!(Pq(b[h>>0]|0)|0)){c=g;break}else d=g}}return c|0}function Dl(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+60>>2]=c;d=1;return d|0}function El(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+64>>2]=c;d=1;return d|0}function Fl(a){a=a|0;var b=0,c=0;b=f[r>>2]|0;c=b+a|0;if((a|0)>0&(c|0)<(b|0)|(c|0)<0){ea()|0;ya(12);return -1}f[r>>2]=c;if((c|0)>(da()|0)?(ca()|0)==0:0){f[r>>2]=b;ya(12);return -1}return b|0}function Gl(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;if((a|0)==0&(c|0)==0)e=d;else{f=d;d=c;c=a;while(1){a=f+-1|0;b[a>>0]=c&7|48;c=Wn(c|0,d|0,3)|0;d=I;if((c|0)==0&(d|0)==0){e=a;break}else f=a}}return e|0}function Hl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1528;b=f[a+32>>2]|0;if(!b){br(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Il(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(qp(a,f[b+8>>2]|0,g)|0)fj(0,b,c,d,e);return}function Jl(a){a=a|0;var b=0,c=0;b=f[a+64>>2]|0;if(!b)return;c=Qa[f[(f[b>>2]|0)+32>>2]&127](b)|0;if(!c)return;f[a+60>>2]=(((f[c+4>>2]|0)-(f[c>>2]|0)>>2>>>0)/3|0)-(f[c+40>>2]|0);return}function Kl(a){a=a|0;Ii(a);br(a);return}function Ll(a){a=a|0;var b=0;switch(a|0){case 11:case 2:case 1:{b=1;break}case 4:case 3:{b=2;break}case 6:case 5:{b=4;break}case 8:case 7:{b=8;break}case 9:{b=4;break}case 10:{b=8;break}default:b=-1}return b|0}function Ml(){var a=0,b=0;a=dn(40)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[a+16>>2]=$(1.0);b=a+20|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;n[a+36>>2]=$(1.0);return a|0}function Nl(a,b){a=+a;b=+b;var c=0,d=0,e=0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;p[s>>3]=b;e=f[s+4>>2]&-2147483648|d&2147483647;f[s>>2]=c;f[s+4>>2]=e;return +(+p[s>>3])}function Ol(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0;d=u;u=u+16|0;e=d;p[e>>3]=c;_b(a,b,e);u=d;return}function Pl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;cc(a,b,e);u=d;return}function Ql(a,c){a=a|0;c=c|0;var d=0,e=0;if((a|0)!=(c|0)){d=b[c+11>>0]|0;e=d<<24>>24<0;Zi(a,e?f[c>>2]|0:c,e?f[c+4>>2]|0:d&255)|0}return a|0}function Rl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=X(d,c)|0;f=a>>>16;a=(e>>>16)+(X(d,f)|0)|0;d=b>>>16;b=X(d,c)|0;return (I=(a>>>16)+(X(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function Sl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=vj(b)|0;d=dn(c+13|0)|0;f[d>>2]=c;f[d+4>>2]=c;f[d+8>>2]=0;e=Sp(d)|0;Rg(e|0,b|0,c+1|0)|0;f[a>>2]=e;return}function Tl(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)==-1|(b|0)>4){c=-1;return c|0}d=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-d|0)<=0){c=-1;return c|0}c=f[d>>2]|0;return c|0}function Ul(a){a=a|0;Li(a);br(a);return}function Vl(a){a=a|0;var b=0,c=0;f[a>>2]=1528;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Wl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(qp(a,f[b+8>>2]|0,0)|0)tk(0,b,c,d);return}function Xl(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if((c|0)<(a|0)&(a|0)<(c+d|0)){e=a;c=c+d|0;a=a+d|0;while((d|0)>0){a=a-1|0;c=c-1|0;d=d-1|0;b[a>>0]=b[c>>0]|0}a=e}else Rg(a,c,d)|0;return a|0}function Yl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1180;b=f[a+8>>2]|0;if(!b){br(a);return}c=a+12|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);br(b);br(a);return}function Zl(a){a=a|0;var b=0;f[a>>2]=2740;b=f[a+56>>2]|0;if(!b){br(a);return}br(b);br(a);return}function _l(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=u;u=u+16|0;e=d;f[e>>2]=f[c>>2];g=Sa[f[(f[a>>2]|0)+16>>2]&31](a,b,e)|0;if(g)f[c>>2]=f[e>>2];u=d;return g&1|0}function $l(a,b){a=a|0;b=b|0;var c=0;if(b>>>0>=2){c=0;return c|0}f[a+28>>2]=b;c=1;return c|0}function am(a){a=a|0;var b=0,c=0;f[a>>2]=3e3;b=a+64|0;c=f[b>>2]|0;f[b>>2]=0;if(!c){aj(a);return}Va[f[(f[c>>2]|0)+4>>2]&127](c);aj(a);return}function bm(){var a=0,b=0;a=mn()|0;if((a|0?(b=f[a>>2]|0,b|0):0)?(a=b+48|0,(f[a>>2]&-256|0)==1126902528?(f[a+4>>2]|0)==1129074247:0):0)Qo(f[b+12>>2]|0);Qo(bq()|0)}function cm(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 Bf(a,b,c,d,e,f,6)|0}function dm(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 Af(a,b,c,d,e,f,4)|0}function em(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 Gf(a,b,c,d,e,f,2)|0}function fm(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 Af(a,b,c,d,e,f,3)|0}function gm(a){a=a|0;var b=0;f[a>>2]=2488;b=f[a+56>>2]|0;if(!b){br(a);return}br(b);br(a);return}function hm(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 Gf(a,b,c,d,e,f,1)|0}function im(a){a=a|0;var c=0;c=b[w+(a&255)>>0]|0;if((c|0)<8)return c|0;c=b[w+(a>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=b[w+(a>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (b[w+(a>>>24)>>0]|0)+24|0}function jm(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;if(!a){c=0.0;return +c}if((b|0)==0|(a|0)==(b|0)){c=0.0;return +c}d=+(b>>>0)/+(a>>>0);e=1.0-d;f=d*+Fg(d);c=-(f+e*+Fg(e));return +c}function km(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=f[a+(d<<2)>>2]|0;f[c+(d<<2)>>2]=e<<1^e>>31;d=d+1|0}while((d|0)!=(b|0));return}function lm(a){a=a|0;var b=0,c=0;if(Eq(a)|0?(b=Zp(f[a>>2]|0)|0,a=b+8|0,c=f[a>>2]|0,f[a>>2]=c+-1,(c+-1|0)<0):0)br(b);return}function mm(a){a=a|0;var b=0;Ao(a);f[a>>2]=2880;f[a+40>>2]=1180;f[a+44>>2]=-1;b=a+48|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;return}function nm(a,c){a=a|0;c=c|0;var d=0;b[c+84>>0]=1;a=f[c+68>>2]|0;d=c+72|0;c=f[d>>2]|0;if((c|0)==(a|0))return 1;f[d>>2]=c+(~((c+-4-a|0)>>>2)<<2);return 1}function om(a){a=a|0;var b=0,c=0;b=f[a+16>>2]|0;c=(((f[a+12>>2]|0)+1-b|0)/64|0)+b<<3;a=b<<3;b=Tn(c|0,((c|0)<0)<<31>>31|0,a|0,((a|0)<0)<<31>>31|0)|0;return b|0}function pm(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 Bf(a,b,c,d,e,f,5)|0}function qm(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 Bf(a,b,c,d,e,f,9)|0}function rm(a){a=a|0;var b=0;f[a>>2]=3208;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b){br(a);return}br(b);br(a);return}function sm(a){a=a|0;var b=0;f[a>>2]=2740;b=f[a+56>>2]|0;if(!b)return;br(b);return}function tm(a){a=a|0;var b=0,c=0;f[a>>2]=1460;b=a+36|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);zi(a);br(a);return}function um(a){a=a|0;var b=0,c=0;f[a>>2]=1180;b=f[a+8>>2]|0;if(!b)return;c=a+12|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function vm(a){a=a|0;var b=0;f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b){br(a);return}br(b);br(a);return}function wm(a){a=a|0;var c=0;f[a>>2]=1336;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=-1;c=a+16|0;f[a+32>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;b[c+12>>0]=0;return}function xm(a){a=a|0;f[a>>2]=3296;Gi(a+8|0);br(a);return}function ym(a){a=a|0;var b=0;f[a>>2]=2488;b=f[a+56>>2]|0;if(!b)return;br(b);return}function zm(a){a=a|0;var b=0,c=0;f[a>>2]=1460;b=a+36|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);zi(a);return}function Am(a,b){a=a|0;b=b|0;f[a>>2]=2968;Vh(a+4|0);f[a+40>>2]=0;f[a+44>>2]=0;f[a>>2]=2984;f[a+48>>2]=b;f[a+52>>2]=0;return}function Bm(a){a=a|0;var b=0,c=0;f[a>>2]=3e3;b=a+64|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);aj(a);br(a);return}function Cm(a){a=a|0;var b=0,c=0,d=0;b=f[a>>2]|0;c=a+4|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);f[a+12>>2]=0;f[a+16>>2]=0;return}function Dm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=a+20|0;e=f[d>>2]|0;g=(f[a+16>>2]|0)-e|0;a=g>>>0>c>>>0?c:g;Rg(e|0,b|0,a|0)|0;f[d>>2]=(f[d>>2]|0)+a;return c|0}function Em(a){a=a|0;var b=0;f[a>>2]=3208;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Fm(a){a=a|0;f[a>>2]=3296;Gi(a+8|0);return}function Gm(a,b){a=a|0;b=b|0;f[a>>2]=2968;Vh(a+4|0);f[a+40>>2]=0;f[a+44>>2]=0;f[a>>2]=2984;f[a+48>>2]=b;f[a+52>>2]=b;return}function Hm(a){a=a|0;var b=0,c=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-8-b|0)>>>3)<<3);br(b);return}function Im(a){a=a|0;var b=0,c=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);br(b);return}function Jm(a,b){a=a|0;b=b|0;var c=0;c=f[b>>2]|0;return (1<<(c&31)&f[(f[a+28>>2]|0)+(c>>>5<<2)>>2]|0)!=0|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;return Sa[f[(f[a>>2]|0)+44>>2]&31](a,b,c)|0}function Lm(a){a=a|0;var c=0;Al(a);c=a+64|0;f[a+88>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;b[c+20>>0]=0;return}function Mm(a){a=a|0;f[a>>2]=2796;tj(a+88|0);br(a);return}function Nm(a){a=a|0;var b=0;f[a>>2]=3276;b=f[a+36>>2]|0;if(b|0)br(b);b=f[a+24>>2]|0;if(!b)return;br(b);return}function Om(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((f[b+4>>2]|0)==(c|0)?(c=b+28|0,(f[c>>2]|0)!=1):0)f[c>>2]=d;return}function Pm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=$(f);pg(a,b,c,d,e,f);return}function Qm(a){a=a|0;var b=0,c=0,d=0;b=u;u=u+16|0;c=b;if((uk(a)|0)==0?(Sa[f[a+32>>2]&31](a,c,1)|0)==1:0)d=h[c>>0]|0;else d=-1;u=b;return d|0}function Rm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;f[a+104>>2]=b;c=f[a+8>>2]|0;d=f[a+4>>2]|0;e=c-d|0;f[a+108>>2]=e;f[a+100>>2]=(b|0)!=0&(e|0)>(b|0)?d+b|0:c;return}function Sm(a){a=a|0;var b=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;b=a+16|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;return}function Tm(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=$(g);pg(f[a>>2]|0,b,c,d,e,g);return}function Um(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=$(f);Pm(a,b,c,d,e,f);return}function Vm(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 cm(a,b,c,d,e,f)|0}function Wm(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 dm(a,b,c,d,e,f)|0}function Xm(a){a=a|0;var b=0,c=0;if(!a)return;b=f[a>>2]|0;if(b|0){c=a+4|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;br(b)}br(a);return}function Ym(a){a=a|0;f[a>>2]=2544;tj(a+88|0);br(a);return}function Zm(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 em(a,b,c,d,e,f)|0}function _m(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 fm(a,b,c,d,e,f)|0}function $m(a){a=a|0;f[a>>2]=2796;tj(a+88|0);return}function an(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e|0;Bd(a,b,c,d,g)|0;u=e;return (I=f[g+4>>2]|0,f[g>>2]|0)|0}function bn(a){a=a|0;var b=0;$n(a);f[a>>2]=5840;b=a+84|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;f[b+20>>2]=0;return}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;return hm(a,b,c,d,e,f)|0}function dn(a){a=a|0;var b=0,c=0;b=(a|0)==0?1:a;while(1){a=$a(b)|0;if(a|0){c=a;break}a=$p()|0;if(!a){c=0;break}Ua[a&3]()}return c|0}function en(a,b,c){a=a|0;b=b|0;c=c|0;ac(a,b,c);return}function fn(a,b,c){a=a|0;b=b|0;c=c|0;f[a+4>>2]=b;f[a+8>>2]=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(c<<2)>>2];f[a+12>>2]=c;return 1}function gn(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 pm(a,b,c,d,e,f)|0}function hn(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 qm(a,b,c,d,e,f)|0}function jn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=$(f);Tm(a,b,c,d,e,f);return}function kn(a){a=a|0;f[a>>2]=2544;tj(a+88|0);return}function ln(a){a=a|0;var b=0,c=0,d=0;b=u;u=u+16|0;c=b;d=dr(f[a+60>>2]|0)|0;f[c>>2]=d;d=ro(Ba(6,c|0)|0)|0;u=b;return d|0}function mn(){var a=0,b=0;a=u;u=u+16|0;if(!(Ka(18612,3)|0)){b=Ia(f[4654]|0)|0;u=a;return b|0}else Dn(17746,a);return 0}function nn(a){a=a|0;var b=0;if(!a)return;b=f[a>>2]|0;f[a>>2]=0;if(b|0)Va[f[(f[b>>2]|0)+4>>2]&127](b);br(a);return}function on(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=Rl(e,a)|0;f=I;return (I=(X(b,a)|0)+(X(d,e)|0)+f|f&0,c|0|0)|0}function pn(a,b){a=a|0;b=b|0;Sg(a,b);f[a>>2]=1276;b=a+36|0;a=b+40|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function qn(a){a=a|0;Gi(a);br(a);return}function rn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;f[a+28>>2]=0;return}function sn(a){a=a|0;var b=0;b=u;u=u+16|0;wc(a);if(!(La(f[4654]|0,0)|0)){u=b;return}else Dn(17845,b)}function tn(a){a=a|0;var b=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;b=a+16|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;return}function un(a,b){a=a|0;b=b|0;return eg(a+40|0,b)|0}function vn(a,b){a=a|0;b=b|0;return $i(a,b,Aq(b)|0)|0}function wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;f[g>>2]=d;d=Mi(a,b,c,g)|0;u=e;return d|0}function xn(a,b){a=a|0;b=b|0;return Aj(a+40|0,b)|0}function yn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return zh(a,b,c,d)|0}function zn(a){a=a|0;var b=0;f[a>>2]=3608;f[a+52>>2]=0;b=a+4|0;a=b+44|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function An(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return $g(a,b,c,d)|0}function Bn(a,b){a=a|0;b=b|0;var c=0;c=f[a+64>>2]|0;return Ra[f[(f[c>>2]|0)+24>>2]&127](c,b)|0}function Cn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=0;return}function Dn(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;f[d>>2]=b;b=f[1478]|0;hh(b,a,d)|0;zj(10,b)|0;Ca()}function En(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 Ta[a&31](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Fn(a){a=a|0;var b=0;b=f[a+56>>2]|0;f[a+60>>2]=((f[b+100>>2]|0)-(f[b+96>>2]|0)|0)/12|0;return}function Gn(a,b){a=a|0;b=b|0;var c=0;c=f[a+64>>2]|0;return Ra[f[(f[c>>2]|0)+16>>2]&127](c,b)|0}function Hn(a,b){a=a|0;b=b|0;var c=0;c=f[a+64>>2]|0;return Ra[f[(f[c>>2]|0)+20>>2]&127](c,b)|0}function In(a,b){a=a|0;b=b|0;var c=0;c=f[a+64>>2]|0;return Ra[f[(f[c>>2]|0)+12>>2]&127](c,b)|0}function Jn(){var a=0;a=u;u=u+16|0;if(!(Ja(18616,117)|0)){u=a;return}else Dn(17795,a)}function Kn(a){a=a|0;f[a>>2]=1136;Vh(a+4|0);f[a+40>>2]=0;f[a+44>>2]=0;f[a>>2]=2944;return}function Ln(a){a=a|0;Se(a);br(a);return}function Mn(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;_a[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Nn(a,b){a=a|0;b=b|0;var c=0;c=f[b+64>>2]|0;Wa[f[(f[c>>2]|0)+28>>2]&15](a,c);return}function On(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)hj(a|0,(zq(c)|0)&255|0,b|0)|0;return a|0}function Pn(a){a=a|0;return 4}function Qn(a,b,c){a=a|0;b=b|0;c=c|0;return Ui(0,b,c)|0}function Rn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b<>>32-c;return a<>>0;return (I=b+d+(e>>>0>>0|0)>>>0,e|0)|0}function Un(a,b){a=a|0;b=b|0;var c=0;if(!b)c=0;else c=lh(f[b>>2]|0,f[b+4>>2]|0,a)|0;return (c|0?c:a)|0}function Vn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return (I=e,a-c>>>0|0)|0}function Wn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return qe(a,b,c,d)|0}function Yn(a){a=a|0;Ve(a);br(a);return}function Zn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return Oi(a,b,c,d)|0}function _n(a){a=a|0;return 5}function $n(a){a=a|0;var b=0;f[a>>2]=5880;b=a+4|0;a=b+80|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function ao(a){a=a|0;return 6}function bo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Pi(a,b,c,d)|0}function co(a,b,c){a=a|0;b=b|0;c=c|0;Fj(a,b,c);return}function eo(a,b){a=a|0;b=b|0;xi(f[a>>2]|0,b);return}function fo(a,b,c){a=a|0;b=b|0;c=c|0;co(a,b,c);return}function go(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;He(a,b,c,d,1);return}function ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;He(a,b,c,d,0);return}function io(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Eg(a,b,c,d)|0}function jo(a,b,c){a=a|0;b=b|0;c=c|0;return Qh(a,b,c)|0}function ko(a){a=a|0;var b=0;b=f[a+64>>2]|0;return Qa[f[(f[b>>2]|0)+32>>2]&127](b)|0}function lo(a,b,c){a=a|0;b=b|0;c=c|0;f[a+28>>2]=b;f[a+32>>2]=c;return 1}function mo(a,b){a=a|0;b=b|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;return}function no(a,b,c){a=a|0;b=b|0;c=c|0;Fj(f[a>>2]|0,b,c);return}function oo(a,b,c){a=a|0;b=b|0;c=c|0;return Ui(a,b,c)|0}function po(a,b,c){a=a|0;b=b|0;c=c|0;return Qn(a,b,c)|0}function qo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Za[a&3](b|0,c|0,d|0,e|0,f|0)}function ro(a){a=a|0;var b=0,c=0;if(a>>>0>4294963200){b=ir()|0;f[b>>2]=0-a;c=-1}else c=a;return c|0}function so(a,b,c){a=a|0;b=b|0;c=c|0;return rh(a,b,c)|0}function to(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;return}function uo(a,b){a=a|0;b=b|0;f[a+8>>2]=b;f[a+12>>2]=-1;return 1}function vo(a,b){a=a|0;b=b|0;f[a+56>>2]=b;tp(a,b);return}function wo(a,b,c){a=a|0;b=b|0;c=c|0;no(a,b,c);return}function xo(a){a=+a;var b=0;p[s>>3]=a;b=f[s>>2]|0;I=f[s+4>>2]|0;return b|0}function yo(a,b,c){a=a|0;b=$(b);c=c|0;var d=Oa;d=$($(c|0)/b);n[a>>2]=d;return}function zo(a,b){a=a|0;b=b|0;xi(a,b);return}function Ao(a){a=a|0;wm(a);f[a>>2]=1460;f[a+36>>2]=0;return}function Bo(a){a=a|0;zn(a);f[a>>2]=3424;f[a+56>>2]=0;f[a+60>>2]=0;return}function Co(a){a=a|0;var b=0;if(!a)b=0;else b=(mh(a,1024,1112,0)|0)!=0&1;return b|0}function Do(a,b,c){a=a|0;b=b|0;c=c|0;Eo(f[a>>2]|0,b,c);return}function Eo(a,b,c){a=a|0;b=b|0;c=c|0;Fi(a+4|0,b,c);return}function Fo(a){a=a|0;var b=0;b=dn(8)|0;ck(b,a);return b|0}function Go(a){a=a|0;if((b[a+11>>0]|0)<0)br(f[a>>2]|0);return}function Ho(a){a=a|0;if(!a)return;Va[f[(f[a>>2]|0)+4>>2]&127](a);return}function Io(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Ya[a&7](b|0,c|0,d|0,e|0)}function Jo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)Xl(a|0,b|0,c|0)|0;return a|0}function Ko(a,b,c){a=a|0;b=b|0;c=c|0;Do(a,b,c);return}function Lo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)Rg(a|0,b|0,c|0)|0;return a|0}function Mo(a){a=a|0;f[a+52>>2]=f[(f[a+4>>2]|0)+80>>2];return}function No(a,b){a=a|0;b=b|0;eo(a,b);return}function Oo(a){a=a|0;f[a+52>>2]=f[(f[a+56>>2]|0)+80>>2];return}function Po(a,b){a=a|0;b=b|0;return -1}function Qo(a){a=a|0;var b=0;b=u;u=u+16|0;Ua[a&3]();Dn(17898,b)}function Ro(a){a=a|0;wh(a);br(a);return}function So(a,b,c){a=a|0;b=b|0;c=c|0;$o(a,b,c);return}function To(a,b){a=a|0;b=b|0;bk(f[a>>2]|0,b);return}function Uo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Sa[a&31](b|0,c|0,d|0)|0}function Vo(a,b){a=a|0;b=b|0;return (Jp(a,b)|0)<<24>>24|0}function Wo(a,b){a=a|0;b=b|0;f[a>>2]=6924;Sl(a+4|0,b);return}function Xo(a){a=a|0;Bo(a);f[a>>2]=3e3;f[a+64>>2]=0;return}function Yo(a,b){a=a|0;b=b|0;var c=0;if(!a)c=0;else c=Bi(a,b,0)|0;return c|0}function Zo(a,b){a=a|0;b=b|0;zo(a,b);return}function _o(a){a=a|0;return f[a+12>>2]|0}function $o(a,b,c){a=a|0;b=b|0;c=c|0;Eo(a,b,c);return}function ap(){var a=0;a=dn(64)|0;Al(a);return a|0}function bp(a,b){a=a|0;b=b|0;To(a,b);return}function cp(a){a=a|0;if(!a)return;Qi(a);br(a);return}function dp(a){a=a|0;return f[a+4>>2]|0}function ep(a,b,c){a=a|0;b=b|0;c=c|0;if(!(f[a>>2]&32))ai(b,c,a)|0;return}function fp(a){a=a|0;return Mp(a)|0}function gp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Xa[a&15](b|0,c|0,d|0)}function hp(){var a=0;a=dn(96)|0;Lm(a);return a|0}function ip(a){a=a|0;return Np(a)|0}function jp(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function kp(a){a=a|0;var b=0;b=(Yq()|0)+188|0;return Tj(a,f[b>>2]|0)|0}function lp(a){a=a|0;return ((f[a+100>>2]|0)-(f[a+96>>2]|0)|0)/12|0|0}function mp(a,b){a=a|0;b=b|0;vp(a,b);return}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;aa(3);return 0}function op(){var a=0;a=dn(12)|0;Bp(a);return a|0}function pp(a){a=a|0;zi(a);br(a);return}function qp(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function rp(a,b){a=a|0;b=b|0;var c=0;c=Fp(a|0)|0;return ((b|0)==0?a:c)|0}function sp(a){a=a|0;return (f[a+12>>2]|0)-(f[a+8>>2]|0)>>2|0}function tp(a,b){a=a|0;b=b|0;f[a+4>>2]=b;return}function up(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Bd(a,b,c,d,0)|0}function vp(a,b){a=a|0;b=b|0;bk(a,b);return}function wp(a){a=a|0;f[a+4>>2]=0;f[a+8>>2]=0;f[a>>2]=a+4;return}function xp(a){a=a|0;return nq(a)|0}function yp(){var a=0;a=dn(84)|0;$n(a);return a|0}function zp(a){a=a|0;gi(a);br(a);return}function Ap(a){a=a|0;return oq(a)|0}function Bp(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;return}function Cp(a){a=a|0;f[a>>2]=6924;lm(a+4|0);return}function Dp(a,b,c){a=a|0;b=b|0;c=c|0;return Ra[a&127](b|0,c|0)|0}function Ep(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(10)}function Fp(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function Gp(a){a=a|0;Bo(a);f[a>>2]=3504;return}function Hp(a,c){a=a|0;c=c|0;b[a>>0]=b[c>>0]|0;return}function Ip(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function Jp(a,c){a=a|0;c=c|0;return b[(f[a>>2]|0)+c>>0]|0}function Kp(a){a=a|0;return (f[a+4>>2]|0)-(f[a>>2]|0)|0}function Lp(a){a=a|0;aj(a);br(a);return}function Mp(a){a=a|0;return f[(f[a>>2]|0)+40>>2]|0}function Np(a){a=a|0;return f[(f[a>>2]|0)+44>>2]|0}function Op(a){a=a|0;if(!a)return;br(a);return}function Pp(a){a=a|0;b[a+28>>0]=1;return}function Qp(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function Rp(a,b){a=a|0;b=b|0;return 1}function Sp(a){a=a|0;return a+12|0}function Tp(a,b,c){a=a|0;b=b|0;c=c|0;Wa[a&15](b|0,c|0)}function Up(a,b){a=a|0;b=b|0;f[a+80>>2]=b;return}function Vp(){var a=0;a=dn(48)|0;Fq(a);return a|0}function Wp(a){a=a|0;return vq(a+4|0)|0}function Xp(){var a=0;a=dn(108)|0;bn(a);return a|0}function Yp(a){a=a|0;return (b[a+32>>0]|0)!=0|0}function Zp(a){a=a|0;return a+-12|0}function _p(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(9)}function $p(){var a=0;a=f[4655]|0;f[4655]=a+0;return a|0}function aq(a){a=a|0;return f[a+56>>2]|0}function bq(){var a=0;a=f[1708]|0;f[1708]=a+0;return a|0}function cq(a){a=a|0;wg(a);br(a);return}function dq(a){a=a|0;fr(a);br(a);return}function eq(a){a=a|0;return b[a+24>>0]|0}function fq(a,b){a=a|0;b=b|0;return 0}function gq(a){a=a|0;return f[a+48>>2]|0}function hq(a,b){a=a|0;b=b|0;return Qa[a&127](b|0)|0}function iq(a){a=a|0;return f[a+60>>2]|0}function jq(a){a=a|0;return f[a+28>>2]|0}function kq(a){a=a|0;sa(a|0)|0;bm()}function lq(a){a=a|0;Cp(a);br(a);return}function mq(a){a=a|0;Ca()}function nq(a){a=a|0;return f[a+40>>2]|0}function oq(a){a=a|0;return f[a+44>>2]|0}function pq(a,b){a=a|0;b=b|0;return $(+sk(a,b,0))}function qq(a){a=a|0;return 3}function rq(a,b){a=a|0;b=b|0;u=a;v=b}function sq(a){a=a|0;n[a>>2]=$(1.0);return}function tq(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function uq(a){a=a|0;return f[a+80>>2]|0}function vq(a){a=a|0;return f[a>>2]|0}function wq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(8)}function xq(a,b){a=a|0;b=b|0;Va[a&127](b|0)}function yq(a,b){a=a|0;b=b|0;return Un(a,b)|0}function zq(a){a=a|0;return a&255|0}function Aq(a){a=a|0;return vj(a)|0}function Bq(a,b){a=a|0;b=b|0;return +(+sk(a,b,1))}function Cq(a,b,c){a=a|0;b=b|0;c=c|0;aa(2);return 0}function Dq(a){a=a|0;return 2}function Eq(a){a=a|0;return 1}function Fq(a){a=a|0;Kn(a);return}function Gq(a,b){a=+a;b=+b;return +(+Nl(a,b))}function Hq(a,b){a=+a;b=b|0;return +(+Wj(a,b))}function Iq(a,b){a=+a;b=b|0;return +(+Uj(a,b))}function Jq(){return 3}function Kq(a,b,c){a=a|0;b=b|0;c=c|0;aa(7)}function Lq(){return 0}function Mq(){return -1}function Nq(){return dn(1)|0}function Oq(){return 4}function Pq(a){a=a|0;return (a+-48|0)>>>0<10|0}function Qq(){return 1}function Rq(){return 2}function Sq(a,b){a=+a;b=+b;return +(+pd(a,b))}function Tq(a,b){a=a|0;b=b|0;aa(1);return 0}function Uq(a){a=a|0;Ha()}function Vq(a){a=a|0;Ua[a&3]()}function Wq(){ua()}function Xq(a){a=a|0;return +(+Bq(a,0))}function Yq(){return lr()|0}function Zq(a,b){a=a|0;b=b|0;aa(6)}function _q(a){a=a|0;return dn(a)|0}function $q(a){a=a|0;br(a);return}function ar(a){a=a|0;u=a}function br(a){a=a|0;wc(a);return}function cr(a){a=a|0;I=a}function dr(a){a=a|0;return a|0}function er(a){a=a|0;aa(0);return 0}function fr(a){a=a|0;return}function gr(a){a=a|0;return 0}function hr(){return I|0}function ir(){return 18544}function jr(){return u|0}function kr(a){a=a|0;aa(5)}function lr(){return 6040}function mr(){aa(4)} - -// EMSCRIPTEN_END_FUNCS -var Qa=[er,Dq,Eq,Eq,Dq,gb,gr,gr,gr,ak,Vf,Eq,dp,gr,gr,Eq,gr,Eq,Eq,rl,_n,ll,Eq,ao,Yk,Eq,jq,Pn,rl,Eq,rl,_n,ll,Eq,ao,Yk,Eq,jq,Pn,rl,Eq,qq,gr,dp,Eq,gr,Eq,qq,Eq,kl,Pn,kl,_n,il,Eq,ao,Qk,Eq,jq,Eq,kl,Pn,kl,_n,il,Eq,ao,Qk,Eq,jq,Eq,Dq,Eq,Eq,Cd,Eq,Je,Tg,qk,ko,_o,dp,lg,sg,$e,_o,dp,Eq,gr,gr,wi,gr,Eq,gr,Xj,ln,Wp,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er];var Ra=[Tq,ql,Ug,ve,xl,fq,fq,fq,Rp,kb,gj,uo,Rp,Rp,fi,bj,Uh,ek,jl,Gj,Vk,Yj,Zj,Fe,Po,fq,Zh,fq,Dl,_e,fq,El,Zg,$l,td,fq,Dl,_e,fq,El,Zg,$l,td,xn,Po,fq,Xh,sd,fq,tl,We,fq,ul,Yg,$l,sd,fq,tl,We,fq,ul,Yg,$l,un,Hn,Bn,In,Gn,Kg,dk,mk,mc,le,Jm,wf,af,Ze,Ig,dk,mk,lc,le,Jm,Rp,fq,fq,bf,nm,Xf,bf,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq,Tq];var Sa=[Cq,lo,Ip,fn,Km,fg,cj,el,ih,uc,vh,$f,Rh,Qb,Oh,vg,gl,Dm,qj,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq];var Ta=[np,Ld,Bc,ne,Sb,bb,Cc,me,Rb,ab,Lg,ed,eb,sf,qc,id,db,qf,nc,np,np,np,np,np,np,np,np,np,np,np,np,np];var Ua=[mr,Wq,Ai,Jn];var Va=[kr,Ij,Qj,fr,$q,um,Yl,Wk,Uq,gi,zp,zi,pp,wh,Ro,zm,tm,Vl,Uq,Hl,Hl,Uk,Jk,_k,Ok,fr,$q,Uq,Li,Ul,Hl,Rk,Gk,Xk,Mk,fr,$q,Uq,Ii,Kl,zm,tm,fr,$q,$q,mj,Bl,ym,gm,kn,Ym,fr,$q,$q,kj,sl,sm,Zl,$m,Mm,fr,$q,ok,hk,Qj,Sj,Vj,Vj,am,Bm,Mc,Jl,Ve,Yn,rk,jk,Lk,Fk,Em,rm,xk,nk,Nk,Ik,Nm,vm,Fm,xm,Gi,qn,Se,Ln,aj,Uq,Lp,Oo,Fn,fr,$q,Uq,Lp,Mo,Lp,Mo,Dk,wk,rb,wg,cq,fr,dq,fr,fr,dq,Cp,lq,lq,sn,kr,kr,kr,kr,kr,kr,kr,kr,kr,kr];var Wa=[Zq,ik,Rf,Ri,Nn,ib,lb,sc,mo,ej,ej,pk,Ec,Zq,Zq,Zq];var Xa=[Kq,ze,Yi,$b,fc,Fc,$b,fc,uj,Ej,Hg,oj,ug,If,Kq,Kq];var Ya=[wq,Dg,Zf,Wl,Zk,wq,wq,wq];var Za=[_p,ij,Vg,_p];var _a=[Ep,Il,Kk,Ep];return{___cxa_can_catch:_l,___cxa_is_pointer_type:Co,___divdi3:zk,___muldi3:on,___udivdi3:up,___uremdi3:an,_bitshift64Lshr:Wn,_bitshift64Shl:Rn,_emscripten_bind_DracoInt8Array_DracoInt8Array_0:op,_emscripten_bind_DracoInt8Array_GetValue_1:Vo,_emscripten_bind_DracoInt8Array___destroy___0:Xm,_emscripten_bind_DracoInt8Array_size_0:Kp,_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2:jo,_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3:An,_emscripten_bind_Encoder_Encoder_0:Vp,_emscripten_bind_Encoder_GetNumberOfEncodedFaces_0:Ap,_emscripten_bind_Encoder_GetNumberOfEncodedPoints_0:xp,_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5:Um,_emscripten_bind_Encoder_SetAttributeQuantization_2:fo,_emscripten_bind_Encoder_SetEncodingMethod_1:mp,_emscripten_bind_Encoder_SetSpeedOptions_2:So,_emscripten_bind_Encoder_SetTrackEncodedProperties_1:Zo,_emscripten_bind_Encoder___destroy___0:Hj,_emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2:so,_emscripten_bind_ExpertEncoder_ExpertEncoder_1:Fo,_emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0:ip,_emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0:fp,_emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5:jn,_emscripten_bind_ExpertEncoder_SetAttributeQuantization_2:wo,_emscripten_bind_ExpertEncoder_SetEncodingMethod_1:bp,_emscripten_bind_ExpertEncoder_SetSpeedOptions_2:Ko,_emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1:No,_emscripten_bind_ExpertEncoder___destroy___0:nn,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:ap,_emscripten_bind_GeometryAttribute___destroy___0:Op,_emscripten_bind_MeshBuilder_AddFacesToMesh_3:io,_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5:hn,_emscripten_bind_MeshBuilder_AddFloatAttribute_5:hn,_emscripten_bind_MeshBuilder_AddInt16Attribute_5:_m,_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5:gn,_emscripten_bind_MeshBuilder_AddInt32Attribute_5:gn,_emscripten_bind_MeshBuilder_AddInt8Attribute_5:cn,_emscripten_bind_MeshBuilder_AddMetadataToMesh_2:po,_emscripten_bind_MeshBuilder_AddMetadata_2:oo,_emscripten_bind_MeshBuilder_AddUInt16Attribute_5:Wm,_emscripten_bind_MeshBuilder_AddUInt32Attribute_5:Vm,_emscripten_bind_MeshBuilder_AddUInt8Attribute_5:Zm,_emscripten_bind_MeshBuilder_MeshBuilder_0:Nq,_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3:yn,_emscripten_bind_MeshBuilder___destroy___0:Op,_emscripten_bind_Mesh_Mesh_0:Xp,_emscripten_bind_Mesh___destroy___0:Ho,_emscripten_bind_Mesh_num_attributes_0:sp,_emscripten_bind_Mesh_num_faces_0:lp,_emscripten_bind_Mesh_num_points_0:uq,_emscripten_bind_Mesh_set_num_points_1:Up,_emscripten_bind_MetadataBuilder_AddDoubleEntry_3:Zn,_emscripten_bind_MetadataBuilder_AddIntEntry_3:bo,_emscripten_bind_MetadataBuilder_AddStringEntry_3:Xn,_emscripten_bind_MetadataBuilder_MetadataBuilder_0:Nq,_emscripten_bind_MetadataBuilder___destroy___0:Op,_emscripten_bind_Metadata_Metadata_0:Ml,_emscripten_bind_Metadata___destroy___0:cp,_emscripten_bind_PointAttribute_PointAttribute_0:hp,_emscripten_bind_PointAttribute___destroy___0:xj,_emscripten_bind_PointAttribute_attribute_type_0:aq,_emscripten_bind_PointAttribute_byte_offset_0:gq,_emscripten_bind_PointAttribute_byte_stride_0:nq,_emscripten_bind_PointAttribute_data_type_0:jq,_emscripten_bind_PointAttribute_normalized_0:Yp,_emscripten_bind_PointAttribute_num_components_0:eq,_emscripten_bind_PointAttribute_size_0:uq,_emscripten_bind_PointAttribute_unique_id_0:iq,_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5:hn,_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5:_m,_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5:gn,_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5:cn,_emscripten_bind_PointCloudBuilder_AddMetadata_2:oo,_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5:Wm,_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5:Vm,_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5:Zm,_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0:Nq,_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3:yn,_emscripten_bind_PointCloudBuilder___destroy___0:Op,_emscripten_bind_PointCloud_PointCloud_0:yp,_emscripten_bind_PointCloud___destroy___0:Ho,_emscripten_bind_PointCloud_num_attributes_0:sp,_emscripten_bind_PointCloud_num_points_0:uq,_emscripten_bind_VoidPtr___destroy___0:Op,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:Mq,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:Lq,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:Qq,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:Rq,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:Oq,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:Mq,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:Qq,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:Lq,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:Jq,_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING:Qq,_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING:Lq,_emscripten_replace_memory:Pa,_free:wc,_i64Add:Tn,_i64Subtract:Vn,_llvm_bswap_i32:Fp,_malloc:$a,_memcpy:Rg,_memmove:Xl,_memset:hj,_sbrk:Fl,dynCall_ii:hq,dynCall_iii:Dp,dynCall_iiii:Uo,dynCall_iiiiiii:En,dynCall_v:Vq,dynCall_vi:xq,dynCall_vii:Tp,dynCall_viii:gp,dynCall_viiii:Io,dynCall_viiiii:qo,dynCall_viiiiii:Mn,establishStackSpace:rq,getTempRet0:hr,runPostSets:Sn,setTempRet0:cr,setThrew:Qp,stackAlloc:jp,stackRestore:ar,stackSave:jr}}) - - -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___divdi3=Module["___divdi3"]=asm["___divdi3"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_bind_DracoInt8Array_DracoInt8Array_0=Module["_emscripten_bind_DracoInt8Array_DracoInt8Array_0"]=asm["_emscripten_bind_DracoInt8Array_DracoInt8Array_0"];var _emscripten_bind_DracoInt8Array_GetValue_1=Module["_emscripten_bind_DracoInt8Array_GetValue_1"]=asm["_emscripten_bind_DracoInt8Array_GetValue_1"];var _emscripten_bind_DracoInt8Array___destroy___0=Module["_emscripten_bind_DracoInt8Array___destroy___0"]=asm["_emscripten_bind_DracoInt8Array___destroy___0"];var _emscripten_bind_DracoInt8Array_size_0=Module["_emscripten_bind_DracoInt8Array_size_0"]=asm["_emscripten_bind_DracoInt8Array_size_0"];var _emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2=Module["_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2"]=asm["_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2"];var _emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3=Module["_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3"]=asm["_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3"];var _emscripten_bind_Encoder_Encoder_0=Module["_emscripten_bind_Encoder_Encoder_0"]=asm["_emscripten_bind_Encoder_Encoder_0"];var _emscripten_bind_Encoder_GetNumberOfEncodedFaces_0=Module["_emscripten_bind_Encoder_GetNumberOfEncodedFaces_0"]=asm["_emscripten_bind_Encoder_GetNumberOfEncodedFaces_0"];var _emscripten_bind_Encoder_GetNumberOfEncodedPoints_0=Module["_emscripten_bind_Encoder_GetNumberOfEncodedPoints_0"]=asm["_emscripten_bind_Encoder_GetNumberOfEncodedPoints_0"];var _emscripten_bind_Encoder_SetAttributeExplicitQuantization_5=Module["_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5"]=asm["_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5"];var _emscripten_bind_Encoder_SetAttributeQuantization_2=Module["_emscripten_bind_Encoder_SetAttributeQuantization_2"]=asm["_emscripten_bind_Encoder_SetAttributeQuantization_2"];var _emscripten_bind_Encoder_SetEncodingMethod_1=Module["_emscripten_bind_Encoder_SetEncodingMethod_1"]=asm["_emscripten_bind_Encoder_SetEncodingMethod_1"];var _emscripten_bind_Encoder_SetSpeedOptions_2=Module["_emscripten_bind_Encoder_SetSpeedOptions_2"]=asm["_emscripten_bind_Encoder_SetSpeedOptions_2"];var _emscripten_bind_Encoder_SetTrackEncodedProperties_1=Module["_emscripten_bind_Encoder_SetTrackEncodedProperties_1"]=asm["_emscripten_bind_Encoder_SetTrackEncodedProperties_1"];var _emscripten_bind_Encoder___destroy___0=Module["_emscripten_bind_Encoder___destroy___0"]=asm["_emscripten_bind_Encoder___destroy___0"];var _emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2=Module["_emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2"]=asm["_emscripten_bind_ExpertEncoder_EncodeToDracoBuffer_2"];var _emscripten_bind_ExpertEncoder_ExpertEncoder_1=Module["_emscripten_bind_ExpertEncoder_ExpertEncoder_1"]=asm["_emscripten_bind_ExpertEncoder_ExpertEncoder_1"];var _emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0=Module["_emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0"]=asm["_emscripten_bind_ExpertEncoder_GetNumberOfEncodedFaces_0"];var _emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0=Module["_emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0"]=asm["_emscripten_bind_ExpertEncoder_GetNumberOfEncodedPoints_0"];var _emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5=Module["_emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5"]=asm["_emscripten_bind_ExpertEncoder_SetAttributeExplicitQuantization_5"];var _emscripten_bind_ExpertEncoder_SetAttributeQuantization_2=Module["_emscripten_bind_ExpertEncoder_SetAttributeQuantization_2"]=asm["_emscripten_bind_ExpertEncoder_SetAttributeQuantization_2"];var _emscripten_bind_ExpertEncoder_SetEncodingMethod_1=Module["_emscripten_bind_ExpertEncoder_SetEncodingMethod_1"]=asm["_emscripten_bind_ExpertEncoder_SetEncodingMethod_1"];var _emscripten_bind_ExpertEncoder_SetSpeedOptions_2=Module["_emscripten_bind_ExpertEncoder_SetSpeedOptions_2"]=asm["_emscripten_bind_ExpertEncoder_SetSpeedOptions_2"];var _emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1=Module["_emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1"]=asm["_emscripten_bind_ExpertEncoder_SetTrackEncodedProperties_1"];var _emscripten_bind_ExpertEncoder___destroy___0=Module["_emscripten_bind_ExpertEncoder___destroy___0"]=asm["_emscripten_bind_ExpertEncoder___destroy___0"];var _emscripten_bind_GeometryAttribute_GeometryAttribute_0=Module["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"]=asm["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"];var _emscripten_bind_GeometryAttribute___destroy___0=Module["_emscripten_bind_GeometryAttribute___destroy___0"]=asm["_emscripten_bind_GeometryAttribute___destroy___0"];var _emscripten_bind_MeshBuilder_AddFacesToMesh_3=Module["_emscripten_bind_MeshBuilder_AddFacesToMesh_3"]=asm["_emscripten_bind_MeshBuilder_AddFacesToMesh_3"];var _emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5=Module["_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5"]=asm["_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5"];var _emscripten_bind_MeshBuilder_AddFloatAttribute_5=Module["_emscripten_bind_MeshBuilder_AddFloatAttribute_5"]=asm["_emscripten_bind_MeshBuilder_AddFloatAttribute_5"];var _emscripten_bind_MeshBuilder_AddInt16Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt16Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt16Attribute_5"];var _emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5=Module["_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5"]=asm["_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5"];var _emscripten_bind_MeshBuilder_AddInt32Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt32Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt32Attribute_5"];var _emscripten_bind_MeshBuilder_AddInt8Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt8Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt8Attribute_5"];var _emscripten_bind_MeshBuilder_AddMetadataToMesh_2=Module["_emscripten_bind_MeshBuilder_AddMetadataToMesh_2"]=asm["_emscripten_bind_MeshBuilder_AddMetadataToMesh_2"];var _emscripten_bind_MeshBuilder_AddMetadata_2=Module["_emscripten_bind_MeshBuilder_AddMetadata_2"]=asm["_emscripten_bind_MeshBuilder_AddMetadata_2"];var _emscripten_bind_MeshBuilder_AddUInt16Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt16Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt16Attribute_5"];var _emscripten_bind_MeshBuilder_AddUInt32Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt32Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt32Attribute_5"];var _emscripten_bind_MeshBuilder_AddUInt8Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt8Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt8Attribute_5"];var _emscripten_bind_MeshBuilder_MeshBuilder_0=Module["_emscripten_bind_MeshBuilder_MeshBuilder_0"]=asm["_emscripten_bind_MeshBuilder_MeshBuilder_0"];var _emscripten_bind_MeshBuilder_SetMetadataForAttribute_3=Module["_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3"]=asm["_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3"];var _emscripten_bind_MeshBuilder___destroy___0=Module["_emscripten_bind_MeshBuilder___destroy___0"]=asm["_emscripten_bind_MeshBuilder___destroy___0"];var _emscripten_bind_Mesh_Mesh_0=Module["_emscripten_bind_Mesh_Mesh_0"]=asm["_emscripten_bind_Mesh_Mesh_0"];var _emscripten_bind_Mesh___destroy___0=Module["_emscripten_bind_Mesh___destroy___0"]=asm["_emscripten_bind_Mesh___destroy___0"];var _emscripten_bind_Mesh_num_attributes_0=Module["_emscripten_bind_Mesh_num_attributes_0"]=asm["_emscripten_bind_Mesh_num_attributes_0"];var _emscripten_bind_Mesh_num_faces_0=Module["_emscripten_bind_Mesh_num_faces_0"]=asm["_emscripten_bind_Mesh_num_faces_0"];var _emscripten_bind_Mesh_num_points_0=Module["_emscripten_bind_Mesh_num_points_0"]=asm["_emscripten_bind_Mesh_num_points_0"];var _emscripten_bind_Mesh_set_num_points_1=Module["_emscripten_bind_Mesh_set_num_points_1"]=asm["_emscripten_bind_Mesh_set_num_points_1"];var _emscripten_bind_MetadataBuilder_AddDoubleEntry_3=Module["_emscripten_bind_MetadataBuilder_AddDoubleEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddDoubleEntry_3"];var _emscripten_bind_MetadataBuilder_AddIntEntry_3=Module["_emscripten_bind_MetadataBuilder_AddIntEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddIntEntry_3"];var _emscripten_bind_MetadataBuilder_AddStringEntry_3=Module["_emscripten_bind_MetadataBuilder_AddStringEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddStringEntry_3"];var _emscripten_bind_MetadataBuilder_MetadataBuilder_0=Module["_emscripten_bind_MetadataBuilder_MetadataBuilder_0"]=asm["_emscripten_bind_MetadataBuilder_MetadataBuilder_0"];var _emscripten_bind_MetadataBuilder___destroy___0=Module["_emscripten_bind_MetadataBuilder___destroy___0"]=asm["_emscripten_bind_MetadataBuilder___destroy___0"];var _emscripten_bind_Metadata_Metadata_0=Module["_emscripten_bind_Metadata_Metadata_0"]=asm["_emscripten_bind_Metadata_Metadata_0"];var _emscripten_bind_Metadata___destroy___0=Module["_emscripten_bind_Metadata___destroy___0"]=asm["_emscripten_bind_Metadata___destroy___0"];var _emscripten_bind_PointAttribute_PointAttribute_0=Module["_emscripten_bind_PointAttribute_PointAttribute_0"]=asm["_emscripten_bind_PointAttribute_PointAttribute_0"];var _emscripten_bind_PointAttribute___destroy___0=Module["_emscripten_bind_PointAttribute___destroy___0"]=asm["_emscripten_bind_PointAttribute___destroy___0"];var _emscripten_bind_PointAttribute_attribute_type_0=Module["_emscripten_bind_PointAttribute_attribute_type_0"]=asm["_emscripten_bind_PointAttribute_attribute_type_0"];var _emscripten_bind_PointAttribute_byte_offset_0=Module["_emscripten_bind_PointAttribute_byte_offset_0"]=asm["_emscripten_bind_PointAttribute_byte_offset_0"];var _emscripten_bind_PointAttribute_byte_stride_0=Module["_emscripten_bind_PointAttribute_byte_stride_0"]=asm["_emscripten_bind_PointAttribute_byte_stride_0"];var _emscripten_bind_PointAttribute_data_type_0=Module["_emscripten_bind_PointAttribute_data_type_0"]=asm["_emscripten_bind_PointAttribute_data_type_0"];var _emscripten_bind_PointAttribute_normalized_0=Module["_emscripten_bind_PointAttribute_normalized_0"]=asm["_emscripten_bind_PointAttribute_normalized_0"];var _emscripten_bind_PointAttribute_num_components_0=Module["_emscripten_bind_PointAttribute_num_components_0"]=asm["_emscripten_bind_PointAttribute_num_components_0"];var _emscripten_bind_PointAttribute_size_0=Module["_emscripten_bind_PointAttribute_size_0"]=asm["_emscripten_bind_PointAttribute_size_0"];var _emscripten_bind_PointAttribute_unique_id_0=Module["_emscripten_bind_PointAttribute_unique_id_0"]=asm["_emscripten_bind_PointAttribute_unique_id_0"];var _emscripten_bind_PointCloudBuilder_AddFloatAttribute_5=Module["_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt16Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt32Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt8Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddMetadata_2=Module["_emscripten_bind_PointCloudBuilder_AddMetadata_2"]=asm["_emscripten_bind_PointCloudBuilder_AddMetadata_2"];var _emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5"];var _emscripten_bind_PointCloudBuilder_PointCloudBuilder_0=Module["_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0"]=asm["_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0"];var _emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3=Module["_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3"]=asm["_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3"];var _emscripten_bind_PointCloudBuilder___destroy___0=Module["_emscripten_bind_PointCloudBuilder___destroy___0"]=asm["_emscripten_bind_PointCloudBuilder___destroy___0"];var _emscripten_bind_PointCloud_PointCloud_0=Module["_emscripten_bind_PointCloud_PointCloud_0"]=asm["_emscripten_bind_PointCloud_PointCloud_0"];var _emscripten_bind_PointCloud___destroy___0=Module["_emscripten_bind_PointCloud___destroy___0"]=asm["_emscripten_bind_PointCloud___destroy___0"];var _emscripten_bind_PointCloud_num_attributes_0=Module["_emscripten_bind_PointCloud_num_attributes_0"]=asm["_emscripten_bind_PointCloud_num_attributes_0"];var _emscripten_bind_PointCloud_num_points_0=Module["_emscripten_bind_PointCloud_num_points_0"]=asm["_emscripten_bind_PointCloud_num_points_0"];var _emscripten_bind_VoidPtr___destroy___0=Module["_emscripten_bind_VoidPtr___destroy___0"]=asm["_emscripten_bind_VoidPtr___destroy___0"];var _emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=Module["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"]=asm["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"];var _emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=Module["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"]=asm["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"];var _emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=Module["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"]=asm["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"];var _emscripten_enum_draco_GeometryAttribute_Type_COLOR=Module["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"];var _emscripten_enum_draco_GeometryAttribute_Type_GENERIC=Module["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"];var _emscripten_enum_draco_GeometryAttribute_Type_INVALID=Module["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"];var _emscripten_enum_draco_GeometryAttribute_Type_NORMAL=Module["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"];var _emscripten_enum_draco_GeometryAttribute_Type_POSITION=Module["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"];var _emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=Module["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"];var _emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING=Module["_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING"]=asm["_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING"];var _emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING=Module["_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING"]=asm["_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];Module["asm"]=asm;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});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;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){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"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=exit;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;i>>0,$jscomp.propertyToPolyfillSymbol[h]=$jscomp.IS_SYMBOL_NATIVE? -$jscomp.global.Symbol(h):$jscomp.POLYFILL_PREFIX+l+"$"+h),$jscomp.defineProperty(p,$jscomp.propertyToPolyfillSymbol[h],{configurable:!0,writable:!0,value:n})))}; -$jscomp.polyfill("Promise",function(k){function n(){this.batch_=null}function l(f){return f instanceof h?f:new h(function(q,v){q(f)})}if(k&&(!($jscomp.FORCE_POLYFILL_PROMISE||$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&"undefined"===typeof $jscomp.global.PromiseRejectionEvent)||!$jscomp.global.Promise||-1===$jscomp.global.Promise.toString().indexOf("[native code]")))return k;n.prototype.asyncExecute=function(f){if(null==this.batch_){this.batch_=[];var q=this;this.asyncExecuteFunction(function(){q.executeBatch_()})}this.batch_.push(f)}; -var p=$jscomp.global.setTimeout;n.prototype.asyncExecuteFunction=function(f){p(f,0)};n.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var f=this.batch_;this.batch_=[];for(var q=0;q=A}},"es6","es3"); -$jscomp.polyfill("Array.prototype.copyWithin",function(k){function n(l){l=Number(l);return Infinity===l||-Infinity===l?l:l|0}return k?k:function(l,p,h){var A=this.length;l=n(l);p=n(p);h=void 0===h?A:n(h);l=0>l?Math.max(A+l,0):Math.min(l,A);p=0>p?Math.max(A+p,0):Math.min(p,A);h=0>h?Math.max(A+h,0):Math.min(h,A);if(lp;)--h in this?this[--l]=this[h]:delete this[--l];return this}},"es6","es3"); -$jscomp.typedArrayCopyWithin=function(k){return k?k:Array.prototype.copyWithin};$jscomp.polyfill("Int8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8ClampedArray.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5"); -$jscomp.polyfill("Uint16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float64Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5"); -var DracoDecoderModule=function(){var k="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;"undefined"!==typeof __filename&&(k=k||__filename);return function(n){function l(e){return a.locateFile?a.locateFile(e,U):U+e}function p(e,b,c){var d=b+c;for(c=b;e[c]&&!(c>=d);)++c;if(16g?d+=String.fromCharCode(g):(g-=65536,d+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else d+=String.fromCharCode(g)}return d}function h(e,b){return e?p(ea,e,b):""}function A(){var e=ja.buffer;a.HEAP8=Y=new Int8Array(e);a.HEAP16=new Int16Array(e);a.HEAP32=ca=new Int32Array(e);a.HEAPU8=ea=new Uint8Array(e);a.HEAPU16=new Uint16Array(e);a.HEAPU32=V=new Uint32Array(e);a.HEAPF32=new Float32Array(e);a.HEAPF64=new Float64Array(e)}function f(e){if(a.onAbort)a.onAbort(e); -e="Aborted("+e+")";da(e);wa=!0;e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info.");ka(e);throw e;}function q(e){try{if(e==P&&fa)return new Uint8Array(fa);if(ma)return ma(e);throw"both async and sync fetching of the wasm failed";}catch(b){f(b)}}function v(){if(!fa&&(xa||ha)){if("function"==typeof fetch&&!P.startsWith("file://"))return fetch(P,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+P+"'";return e.arrayBuffer()}).catch(function(){return q(P)}); -if(na)return new Promise(function(e,b){na(P,function(c){e(new Uint8Array(c))},b)})}return Promise.resolve().then(function(){return q(P)})}function z(e){for(;0>2]=b};this.get_type=function(){return V[this.ptr+4>>2]};this.set_destructor=function(b){V[this.ptr+8>>2]=b};this.get_destructor=function(){return V[this.ptr+8>>2]};this.set_refcount=function(b){ca[this.ptr>>2]=b};this.set_caught=function(b){Y[this.ptr+ -12>>0]=b?1:0};this.get_caught=function(){return 0!=Y[this.ptr+12>>0]};this.set_rethrown=function(b){Y[this.ptr+13>>0]=b?1:0};this.get_rethrown=function(){return 0!=Y[this.ptr+13>>0]};this.init=function(b,c){this.set_adjusted_ptr(0);this.set_type(b);this.set_destructor(c);this.set_refcount(0);this.set_caught(!1);this.set_rethrown(!1)};this.add_ref=function(){ca[this.ptr>>2]+=1};this.release_ref=function(){var b=ca[this.ptr>>2];ca[this.ptr>>2]=b-1;return 1===b};this.set_adjusted_ptr=function(b){V[this.ptr+ -16>>2]=b};this.get_adjusted_ptr=function(){return V[this.ptr+16>>2]};this.get_exception_ptr=function(){if(ya(this.get_type()))return V[this.excPtr>>2];var b=this.get_adjusted_ptr();return 0!==b?b:this.excPtr}}function ba(){function e(){if(!la&&(la=!0,a.calledRun=!0,!wa)){za=!0;z(oa);Aa(a);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ba.unshift(a.postRun.shift());z(Ba)}}if(!(0=d?b++:2047>=d?b+=2:55296<=d&&57343>= -d?(b+=4,++c):b+=3}b=Array(b+1);c=0;d=b.length;if(0=u){var X=e.charCodeAt(++g);u=65536+((u&1023)<<10)|X&1023}if(127>=u){if(c>=d)break;b[c++]=u}else{if(2047>=u){if(c+1>=d)break;b[c++]=192|u>>6}else{if(65535>=u){if(c+2>=d)break;b[c++]=224|u>>12}else{if(c+3>=d)break;b[c++]=240|u>>18;b[c++]=128|u>>12&63}b[c++]=128|u>>6&63}b[c++]=128|u&63}}b[c]=0}e=r.alloc(b,Y);r.copy(b,Y,e);return e}return e}function pa(e){if("object"===typeof e){var b= -r.alloc(e,Y);r.copy(e,Y,b);return b}return e}function Z(){throw"cannot construct a VoidPtr, no constructor in IDL";}function S(){this.ptr=Da();x(S)[this.ptr]=this}function Q(){this.ptr=Ea();x(Q)[this.ptr]=this}function W(){this.ptr=Fa();x(W)[this.ptr]=this}function w(){this.ptr=Ga();x(w)[this.ptr]=this}function C(){this.ptr=Ha();x(C)[this.ptr]=this}function F(){this.ptr=Ia();x(F)[this.ptr]=this}function G(){this.ptr=Ja();x(G)[this.ptr]=this}function E(){this.ptr=Ka();x(E)[this.ptr]=this}function T(){this.ptr= -La();x(T)[this.ptr]=this}function B(){throw"cannot construct a Status, no constructor in IDL";}function H(){this.ptr=Ma();x(H)[this.ptr]=this}function I(){this.ptr=Na();x(I)[this.ptr]=this}function J(){this.ptr=Oa();x(J)[this.ptr]=this}function K(){this.ptr=Pa();x(K)[this.ptr]=this}function L(){this.ptr=Qa();x(L)[this.ptr]=this}function M(){this.ptr=Ra();x(M)[this.ptr]=this}function N(){this.ptr=Sa();x(N)[this.ptr]=this}function y(){this.ptr=Ta();x(y)[this.ptr]=this}function m(){this.ptr=Ua();x(m)[this.ptr]= -this}n=void 0===n?{}:n;var a="undefined"!=typeof n?n:{},Aa,ka;a.ready=new Promise(function(e,b){Aa=e;ka=b});var Va=!1,Wa=!1;a.onRuntimeInitialized=function(){Va=!0;if(Wa&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Wa=!0;if(Va&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(e){if("string"!==typeof e)return!1;e=e.split(".");return 2>e.length||3=e[1]?!0:0!=e[0]||10>>=0;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,e+100663296);var g=Math;d=Math.max(e,d);g=g.min.call(g,2147483648,d+(65536-d%65536)%65536);a:{d=ja.buffer;try{ja.grow(g-d.byteLength+65535>>>16);A();var u=1;break a}catch(X){}u=void 0}if(u)return!0}return!1},f:function(e){return 52},d:function(e,b,c,d,g){return 70},c:function(e,b,c,d){for(var g=0,u=0;u>2],ab=V[b+4>>2];b+=8;for(var sa=0;sa>2]=g;return 0}};(function(){function e(g,u){a.asm=g.exports;ja=a.asm.h;A();oa.unshift(a.asm.i);aa--;a.monitorRunDependencies&&a.monitorRunDependencies(aa);0==aa&&(null!==ra&&(clearInterval(ra),ra=null),ia&&(g=ia,ia=null,g()))}function b(g){e(g.instance)}function c(g){return v().then(function(u){return WebAssembly.instantiate(u,d)}).then(function(u){return u}).then(g,function(u){da("failed to asynchronously prepare wasm: "+u);f(u)})}var d={a:xd};aa++;a.monitorRunDependencies&&a.monitorRunDependencies(aa); -if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(g){da("Module.instantiateWasm callback failed with error: "+g),ka(g)}(function(){return fa||"function"!=typeof WebAssembly.instantiateStreaming||P.startsWith("data:application/octet-stream;base64,")||P.startsWith("file://")||Ya||"function"!=typeof fetch?c(b):fetch(P,{credentials:"same-origin"}).then(function(g){return WebAssembly.instantiateStreaming(g,d).then(b,function(u){da("wasm streaming compile failed: "+u);da("falling back to ArrayBuffer instantiation"); -return c(b)})})})().catch(ka);return{}})();var bb=a._emscripten_bind_VoidPtr___destroy___0=function(){return(bb=a._emscripten_bind_VoidPtr___destroy___0=a.asm.k).apply(null,arguments)},Da=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return(Da=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=a.asm.l).apply(null,arguments)},cb=a._emscripten_bind_DecoderBuffer_Init_2=function(){return(cb=a._emscripten_bind_DecoderBuffer_Init_2=a.asm.m).apply(null,arguments)},db=a._emscripten_bind_DecoderBuffer___destroy___0= -function(){return(db=a._emscripten_bind_DecoderBuffer___destroy___0=a.asm.n).apply(null,arguments)},Ea=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return(Ea=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=a.asm.o).apply(null,arguments)},eb=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return(eb=a._emscripten_bind_AttributeTransformData_transform_type_0=a.asm.p).apply(null,arguments)},fb=a._emscripten_bind_AttributeTransformData___destroy___0= -function(){return(fb=a._emscripten_bind_AttributeTransformData___destroy___0=a.asm.q).apply(null,arguments)},Fa=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return(Fa=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=a.asm.r).apply(null,arguments)},gb=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return(gb=a._emscripten_bind_GeometryAttribute___destroy___0=a.asm.s).apply(null,arguments)},Ga=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return(Ga= -a._emscripten_bind_PointAttribute_PointAttribute_0=a.asm.t).apply(null,arguments)},hb=a._emscripten_bind_PointAttribute_size_0=function(){return(hb=a._emscripten_bind_PointAttribute_size_0=a.asm.u).apply(null,arguments)},ib=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return(ib=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=a.asm.v).apply(null,arguments)},jb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return(jb=a._emscripten_bind_PointAttribute_attribute_type_0= -a.asm.w).apply(null,arguments)},kb=a._emscripten_bind_PointAttribute_data_type_0=function(){return(kb=a._emscripten_bind_PointAttribute_data_type_0=a.asm.x).apply(null,arguments)},lb=a._emscripten_bind_PointAttribute_num_components_0=function(){return(lb=a._emscripten_bind_PointAttribute_num_components_0=a.asm.y).apply(null,arguments)},mb=a._emscripten_bind_PointAttribute_normalized_0=function(){return(mb=a._emscripten_bind_PointAttribute_normalized_0=a.asm.z).apply(null,arguments)},nb=a._emscripten_bind_PointAttribute_byte_stride_0= -function(){return(nb=a._emscripten_bind_PointAttribute_byte_stride_0=a.asm.A).apply(null,arguments)},ob=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return(ob=a._emscripten_bind_PointAttribute_byte_offset_0=a.asm.B).apply(null,arguments)},pb=a._emscripten_bind_PointAttribute_unique_id_0=function(){return(pb=a._emscripten_bind_PointAttribute_unique_id_0=a.asm.C).apply(null,arguments)},qb=a._emscripten_bind_PointAttribute___destroy___0=function(){return(qb=a._emscripten_bind_PointAttribute___destroy___0= -a.asm.D).apply(null,arguments)},Ha=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return(Ha=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=a.asm.E).apply(null,arguments)},rb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return(rb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=a.asm.F).apply(null,arguments)},sb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0= -function(){return(sb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=a.asm.G).apply(null,arguments)},tb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return(tb=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=a.asm.H).apply(null,arguments)},ub=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return(ub=a._emscripten_bind_AttributeQuantizationTransform_range_0=a.asm.I).apply(null,arguments)},vb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0= -function(){return(vb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=a.asm.J).apply(null,arguments)},Ia=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return(Ia=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=a.asm.K).apply(null,arguments)},wb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return(wb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=a.asm.L).apply(null, -arguments)},xb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return(xb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=a.asm.M).apply(null,arguments)},yb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return(yb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=a.asm.N).apply(null,arguments)},Ja=a._emscripten_bind_PointCloud_PointCloud_0=function(){return(Ja=a._emscripten_bind_PointCloud_PointCloud_0=a.asm.O).apply(null, -arguments)},zb=a._emscripten_bind_PointCloud_num_attributes_0=function(){return(zb=a._emscripten_bind_PointCloud_num_attributes_0=a.asm.P).apply(null,arguments)},Ab=a._emscripten_bind_PointCloud_num_points_0=function(){return(Ab=a._emscripten_bind_PointCloud_num_points_0=a.asm.Q).apply(null,arguments)},Bb=a._emscripten_bind_PointCloud___destroy___0=function(){return(Bb=a._emscripten_bind_PointCloud___destroy___0=a.asm.R).apply(null,arguments)},Ka=a._emscripten_bind_Mesh_Mesh_0=function(){return(Ka= -a._emscripten_bind_Mesh_Mesh_0=a.asm.S).apply(null,arguments)},Cb=a._emscripten_bind_Mesh_num_faces_0=function(){return(Cb=a._emscripten_bind_Mesh_num_faces_0=a.asm.T).apply(null,arguments)},Db=a._emscripten_bind_Mesh_num_attributes_0=function(){return(Db=a._emscripten_bind_Mesh_num_attributes_0=a.asm.U).apply(null,arguments)},Eb=a._emscripten_bind_Mesh_num_points_0=function(){return(Eb=a._emscripten_bind_Mesh_num_points_0=a.asm.V).apply(null,arguments)},Fb=a._emscripten_bind_Mesh___destroy___0=function(){return(Fb= -a._emscripten_bind_Mesh___destroy___0=a.asm.W).apply(null,arguments)},La=a._emscripten_bind_Metadata_Metadata_0=function(){return(La=a._emscripten_bind_Metadata_Metadata_0=a.asm.X).apply(null,arguments)},Gb=a._emscripten_bind_Metadata___destroy___0=function(){return(Gb=a._emscripten_bind_Metadata___destroy___0=a.asm.Y).apply(null,arguments)},Hb=a._emscripten_bind_Status_code_0=function(){return(Hb=a._emscripten_bind_Status_code_0=a.asm.Z).apply(null,arguments)},Ib=a._emscripten_bind_Status_ok_0=function(){return(Ib= -a._emscripten_bind_Status_ok_0=a.asm._).apply(null,arguments)},Jb=a._emscripten_bind_Status_error_msg_0=function(){return(Jb=a._emscripten_bind_Status_error_msg_0=a.asm.$).apply(null,arguments)},Kb=a._emscripten_bind_Status___destroy___0=function(){return(Kb=a._emscripten_bind_Status___destroy___0=a.asm.aa).apply(null,arguments)},Ma=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return(Ma=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=a.asm.ba).apply(null,arguments)}, -Lb=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return(Lb=a._emscripten_bind_DracoFloat32Array_GetValue_1=a.asm.ca).apply(null,arguments)},Mb=a._emscripten_bind_DracoFloat32Array_size_0=function(){return(Mb=a._emscripten_bind_DracoFloat32Array_size_0=a.asm.da).apply(null,arguments)},Nb=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return(Nb=a._emscripten_bind_DracoFloat32Array___destroy___0=a.asm.ea).apply(null,arguments)},Na=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0= -function(){return(Na=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=a.asm.fa).apply(null,arguments)},Ob=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return(Ob=a._emscripten_bind_DracoInt8Array_GetValue_1=a.asm.ga).apply(null,arguments)},Pb=a._emscripten_bind_DracoInt8Array_size_0=function(){return(Pb=a._emscripten_bind_DracoInt8Array_size_0=a.asm.ha).apply(null,arguments)},Qb=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return(Qb=a._emscripten_bind_DracoInt8Array___destroy___0= -a.asm.ia).apply(null,arguments)},Oa=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return(Oa=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=a.asm.ja).apply(null,arguments)},Rb=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return(Rb=a._emscripten_bind_DracoUInt8Array_GetValue_1=a.asm.ka).apply(null,arguments)},Sb=a._emscripten_bind_DracoUInt8Array_size_0=function(){return(Sb=a._emscripten_bind_DracoUInt8Array_size_0=a.asm.la).apply(null,arguments)},Tb=a._emscripten_bind_DracoUInt8Array___destroy___0= -function(){return(Tb=a._emscripten_bind_DracoUInt8Array___destroy___0=a.asm.ma).apply(null,arguments)},Pa=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return(Pa=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=a.asm.na).apply(null,arguments)},Ub=a._emscripten_bind_DracoInt16Array_GetValue_1=function(){return(Ub=a._emscripten_bind_DracoInt16Array_GetValue_1=a.asm.oa).apply(null,arguments)},Vb=a._emscripten_bind_DracoInt16Array_size_0=function(){return(Vb=a._emscripten_bind_DracoInt16Array_size_0= -a.asm.pa).apply(null,arguments)},Wb=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return(Wb=a._emscripten_bind_DracoInt16Array___destroy___0=a.asm.qa).apply(null,arguments)},Qa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return(Qa=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=a.asm.ra).apply(null,arguments)},Xb=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return(Xb=a._emscripten_bind_DracoUInt16Array_GetValue_1=a.asm.sa).apply(null,arguments)}, -Yb=a._emscripten_bind_DracoUInt16Array_size_0=function(){return(Yb=a._emscripten_bind_DracoUInt16Array_size_0=a.asm.ta).apply(null,arguments)},Zb=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return(Zb=a._emscripten_bind_DracoUInt16Array___destroy___0=a.asm.ua).apply(null,arguments)},Ra=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return(Ra=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=a.asm.va).apply(null,arguments)},$b=a._emscripten_bind_DracoInt32Array_GetValue_1= -function(){return($b=a._emscripten_bind_DracoInt32Array_GetValue_1=a.asm.wa).apply(null,arguments)},ac=a._emscripten_bind_DracoInt32Array_size_0=function(){return(ac=a._emscripten_bind_DracoInt32Array_size_0=a.asm.xa).apply(null,arguments)},bc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return(bc=a._emscripten_bind_DracoInt32Array___destroy___0=a.asm.ya).apply(null,arguments)},Sa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return(Sa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0= -a.asm.za).apply(null,arguments)},cc=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return(cc=a._emscripten_bind_DracoUInt32Array_GetValue_1=a.asm.Aa).apply(null,arguments)},dc=a._emscripten_bind_DracoUInt32Array_size_0=function(){return(dc=a._emscripten_bind_DracoUInt32Array_size_0=a.asm.Ba).apply(null,arguments)},ec=a._emscripten_bind_DracoUInt32Array___destroy___0=function(){return(ec=a._emscripten_bind_DracoUInt32Array___destroy___0=a.asm.Ca).apply(null,arguments)},Ta=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0= -function(){return(Ta=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=a.asm.Da).apply(null,arguments)},fc=a._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return(fc=a._emscripten_bind_MetadataQuerier_HasEntry_2=a.asm.Ea).apply(null,arguments)},gc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return(gc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=a.asm.Fa).apply(null,arguments)},hc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=function(){return(hc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3= -a.asm.Ga).apply(null,arguments)},ic=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return(ic=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=a.asm.Ha).apply(null,arguments)},jc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return(jc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=a.asm.Ia).apply(null,arguments)},kc=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return(kc=a._emscripten_bind_MetadataQuerier_NumEntries_1=a.asm.Ja).apply(null,arguments)}, -lc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return(lc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=a.asm.Ka).apply(null,arguments)},mc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return(mc=a._emscripten_bind_MetadataQuerier___destroy___0=a.asm.La).apply(null,arguments)},Ua=a._emscripten_bind_Decoder_Decoder_0=function(){return(Ua=a._emscripten_bind_Decoder_Decoder_0=a.asm.Ma).apply(null,arguments)},nc=a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=function(){return(nc= -a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=a.asm.Na).apply(null,arguments)},oc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=function(){return(oc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=a.asm.Oa).apply(null,arguments)},pc=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return(pc=a._emscripten_bind_Decoder_GetAttributeId_2=a.asm.Pa).apply(null,arguments)},qc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return(qc=a._emscripten_bind_Decoder_GetAttributeIdByName_2= -a.asm.Qa).apply(null,arguments)},rc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return(rc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=a.asm.Ra).apply(null,arguments)},sc=a._emscripten_bind_Decoder_GetAttribute_2=function(){return(sc=a._emscripten_bind_Decoder_GetAttribute_2=a.asm.Sa).apply(null,arguments)},tc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return(tc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=a.asm.Ta).apply(null,arguments)}, -uc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return(uc=a._emscripten_bind_Decoder_GetMetadata_1=a.asm.Ua).apply(null,arguments)},vc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return(vc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=a.asm.Va).apply(null,arguments)},wc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return(wc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=a.asm.Wa).apply(null,arguments)},xc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2= -function(){return(xc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=a.asm.Xa).apply(null,arguments)},yc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return(yc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=a.asm.Ya).apply(null,arguments)},zc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=function(){return(zc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=a.asm.Za).apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return(Ac= -a._emscripten_bind_Decoder_GetAttributeFloat_3=a.asm._a).apply(null,arguments)},Bc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return(Bc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=a.asm.$a).apply(null,arguments)},Cc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return(Cc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=a.asm.ab).apply(null,arguments)},Dc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return(Dc= -a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=a.asm.bb).apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return(Ec=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=a.asm.cb).apply(null,arguments)},Fc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return(Fc=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=a.asm.db).apply(null,arguments)},Gc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3= -function(){return(Gc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=a.asm.eb).apply(null,arguments)},Hc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return(Hc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=a.asm.fb).apply(null,arguments)},Ic=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return(Ic=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=a.asm.gb).apply(null,arguments)},Jc=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5= -function(){return(Jc=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=a.asm.hb).apply(null,arguments)},Kc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return(Kc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=a.asm.ib).apply(null,arguments)},Lc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=function(){return(Lc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=a.asm.jb).apply(null,arguments)},Mc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2= -function(){return(Mc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=a.asm.kb).apply(null,arguments)},Nc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return(Nc=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=a.asm.lb).apply(null,arguments)},Oc=a._emscripten_bind_Decoder___destroy___0=function(){return(Oc=a._emscripten_bind_Decoder___destroy___0=a.asm.mb).apply(null,arguments)},Pc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return(Pc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM= -a.asm.nb).apply(null,arguments)},Qc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return(Qc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=a.asm.ob).apply(null,arguments)},Rc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return(Rc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=a.asm.pb).apply(null,arguments)},Sc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM= -function(){return(Sc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=a.asm.qb).apply(null,arguments)},Tc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return(Tc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=a.asm.rb).apply(null,arguments)},Uc=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return(Uc=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=a.asm.sb).apply(null,arguments)},Vc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL= -function(){return(Vc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=a.asm.tb).apply(null,arguments)},Wc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return(Wc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=a.asm.ub).apply(null,arguments)},Xc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return(Xc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=a.asm.vb).apply(null,arguments)},Yc=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC= -function(){return(Yc=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=a.asm.wb).apply(null,arguments)},Zc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return(Zc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=a.asm.xb).apply(null,arguments)},$c=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return($c=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=a.asm.yb).apply(null,arguments)},ad=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH= -function(){return(ad=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=a.asm.zb).apply(null,arguments)},bd=a._emscripten_enum_draco_DataType_DT_INVALID=function(){return(bd=a._emscripten_enum_draco_DataType_DT_INVALID=a.asm.Ab).apply(null,arguments)},cd=a._emscripten_enum_draco_DataType_DT_INT8=function(){return(cd=a._emscripten_enum_draco_DataType_DT_INT8=a.asm.Bb).apply(null,arguments)},dd=a._emscripten_enum_draco_DataType_DT_UINT8=function(){return(dd=a._emscripten_enum_draco_DataType_DT_UINT8= -a.asm.Cb).apply(null,arguments)},ed=a._emscripten_enum_draco_DataType_DT_INT16=function(){return(ed=a._emscripten_enum_draco_DataType_DT_INT16=a.asm.Db).apply(null,arguments)},fd=a._emscripten_enum_draco_DataType_DT_UINT16=function(){return(fd=a._emscripten_enum_draco_DataType_DT_UINT16=a.asm.Eb).apply(null,arguments)},gd=a._emscripten_enum_draco_DataType_DT_INT32=function(){return(gd=a._emscripten_enum_draco_DataType_DT_INT32=a.asm.Fb).apply(null,arguments)},hd=a._emscripten_enum_draco_DataType_DT_UINT32= -function(){return(hd=a._emscripten_enum_draco_DataType_DT_UINT32=a.asm.Gb).apply(null,arguments)},id=a._emscripten_enum_draco_DataType_DT_INT64=function(){return(id=a._emscripten_enum_draco_DataType_DT_INT64=a.asm.Hb).apply(null,arguments)},jd=a._emscripten_enum_draco_DataType_DT_UINT64=function(){return(jd=a._emscripten_enum_draco_DataType_DT_UINT64=a.asm.Ib).apply(null,arguments)},kd=a._emscripten_enum_draco_DataType_DT_FLOAT32=function(){return(kd=a._emscripten_enum_draco_DataType_DT_FLOAT32=a.asm.Jb).apply(null, -arguments)},ld=a._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return(ld=a._emscripten_enum_draco_DataType_DT_FLOAT64=a.asm.Kb).apply(null,arguments)},md=a._emscripten_enum_draco_DataType_DT_BOOL=function(){return(md=a._emscripten_enum_draco_DataType_DT_BOOL=a.asm.Lb).apply(null,arguments)},nd=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return(nd=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=a.asm.Mb).apply(null,arguments)},od=a._emscripten_enum_draco_StatusCode_OK=function(){return(od= -a._emscripten_enum_draco_StatusCode_OK=a.asm.Nb).apply(null,arguments)},pd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return(pd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=a.asm.Ob).apply(null,arguments)},qd=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return(qd=a._emscripten_enum_draco_StatusCode_IO_ERROR=a.asm.Pb).apply(null,arguments)},rd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return(rd=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER= -a.asm.Qb).apply(null,arguments)},sd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return(sd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=a.asm.Rb).apply(null,arguments)},td=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return(td=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=a.asm.Sb).apply(null,arguments)};a._malloc=function(){return(a._malloc=a.asm.Tb).apply(null,arguments)};a._free=function(){return(a._free=a.asm.Ub).apply(null,arguments)}; -var ya=function(){return(ya=a.asm.Vb).apply(null,arguments)};a.___start_em_js=15856;a.___stop_em_js=15954;var la;ia=function b(){la||ba();la||(ia=b)};if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0=r.size?(0>>=0;switch(c.BYTES_PER_ELEMENT){case 2:d>>>=1;break;case 4:d>>>=2;break;case 8:d>>>=3}for(var g=0;gb.byteLength)return a.INVALID_GEOMETRY_TYPE;switch(b[7]){case 0:return a.POINT_CLOUD;case 1:return a.TRIANGULAR_MESH;default:return a.INVALID_GEOMETRY_TYPE}};return n.ready}}(); -"object"===typeof exports&&"object"===typeof module?module.exports=DracoDecoderModule:"function"===typeof define&&define.amd?define([],function(){return DracoDecoderModule}):"object"===typeof exports&&(exports.DracoDecoderModule=DracoDecoderModule); diff --git a/three/addons/libs/draco/gltf/draco_decoder.js b/three/addons/libs/draco/gltf/draco_decoder.js deleted file mode 100644 index 7c84b0b..0000000 --- a/three/addons/libs/draco/gltf/draco_decoder.js +++ /dev/null @@ -1,33 +0,0 @@ - -var DracoDecoderModule = (() => { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(DracoDecoderModule = {}) { - -var Module=typeof DracoDecoderModule!="undefined"?DracoDecoderModule:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var isRuntimeInitialized=false;var isModuleParsed=false;Module["onRuntimeInitialized"]=function(){isRuntimeInitialized=true;if(isModuleParsed){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}};Module["onModuleParsed"]=function(){isModuleParsed=true;if(isRuntimeInitialized){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}};function isVersionSupported(versionString){if(typeof versionString!=="string")return false;const version=versionString.split(".");if(version.length<2||version.length>3)return false;if(version[0]==1&&version[1]>=0&&version[1]<=5)return true;if(version[0]!=0||version[1]>10)return false;return true}Module["isVersionSupported"]=isVersionSupported;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function(binary){},Instance:function(module,info){this.exports=( -// EMSCRIPTEN_START_ASM -function instantiate(ia){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2];o=F[c+12>>2];g=F[c+16>>2];a:{if((e|0)>=(o|0)&g>>>0>=I[c+8>>2]|(e|0)>(o|0)){break a}o=G[g+F[c>>2]|0];g=g+1|0;e=g?e:e+1|0;F[c+16>>2]=g;F[c+20>>2]=e;b:{switch(o|0){case 0:e=a;f=b;g=d;a=0;d=0;j=Z+-64|0;Z=j;F[j+56>>2]=0;F[j+48>>2]=0;F[j+52>>2]=0;F[j+40>>2]=0;F[j+44>>2]=0;F[j+32>>2]=0;F[j+36>>2]=0;F[j+24>>2]=0;F[j+28>>2]=0;F[j+16>>2]=0;F[j+20>>2]=0;F[j+8>>2]=0;F[j+12>>2]=0;c:{if(!Nd(j+8|0,c)){break c}if(!Md(j+8|0,c)|(F[j+20>>2]?0:e)){break c}hc(c,0,0);if(e){s=f<<2;t=F[j+36>>2];u=F[j+48>>2];x=F[j+24>>2];l=F[j+56>>2];i=F[j+52>>2];while(1){d:{if(l>>>0>16383){break d}while(1){if((i|0)<=0){break d}i=i-1|0;F[j+52>>2]=i;l=G[i+u|0]|l<<8;F[j+56>>2]=l;if(l>>>0<16384){continue}break}}a=l&4095;r=F[(a<<2)+x>>2];b=(r<<3)+t|0;l=(L(F[b>>2],l>>>12|0)+a|0)-F[b+4>>2]|0;F[j+56>>2]=l;if((f|0)>0){a=0;if(!G[c+36|0]|r>>>0>32){break c}o=d+f|0;e:{if(!r){ma(g+(d<<2)|0,0,s);break e}y=r&-2;z=r&1;b=F[c+32>>2];h=F[c+28>>2];q=F[c+24>>2];while(1){k=0;a=b;m=0;n=0;if((r|0)!=1){while(1){p=q+(a>>>3|0)|0;f:{if(p>>>0>=h>>>0){p=0;break f}p=G[p|0];b=a+1|0;F[c+32>>2]=b;p=p>>>(a&7)&1;a=b}p=p<>>3|0)|0;if(v>>>0>>0){m=G[v|0];b=a+1|0;F[c+32>>2]=b;m=m>>>(a&7)&1;a=b}v=k|1;k=k+2|0;m=p|m<>>3|0)|0;if(p>>>0>>0){p=G[p|0];b=a+1|0;F[c+32>>2]=b;a=p>>>(a&7)&1}else{a=0}m=a<>2]=m;d=d+1|0;if((o|0)!=(d|0)){continue}break}}d=o}w=f+w|0;if(e>>>0>w>>>0){continue}break}}D[c+36|0]=0;f=F[c+20>>2];a=0;m=F[c+32>>2]+7|0;a=m>>>0<7?1:a;m=a<<29|m>>>3;b=m+F[c+16>>2]|0;a=(a>>>3|0)+f|0;F[c+16>>2]=b;F[c+20>>2]=b>>>0>>0?a+1|0:a;a=1}b=F[j+36>>2];if(b){F[j+40>>2]=b;ja(b)}b=F[j+24>>2];if(b){F[j+28>>2]=b;ja(b)}b=F[j+8>>2];if(b){F[j+12>>2]=b;ja(b)}Z=j- -64|0;return a;case 1:break b;default:break a}}b=0;e=F[c+20>>2];o=F[c+12>>2];g=F[c+16>>2];g:{if((e|0)>=(o|0)&g>>>0>=I[c+8>>2]|(e|0)>(o|0)){break g}o=G[g+F[c>>2]|0];g=g+1|0;e=g?e:e+1|0;F[c+16>>2]=g;F[c+20>>2]=e;h:{switch(o-1|0){case 8:o=a;r=d;e=Z+-64|0;Z=e;F[e+56>>2]=0;F[e+48>>2]=0;F[e+52>>2]=0;F[e+40>>2]=0;F[e+44>>2]=0;F[e+32>>2]=0;F[e+36>>2]=0;F[e+24>>2]=0;F[e+28>>2]=0;F[e+16>>2]=0;F[e+20>>2]=0;F[e+8>>2]=0;F[e+12>>2]=0;h=e+8|0;i:{j:{if(!H[c+38>>1]){break j}if(!Ta(1,h+12|0,c)){break j}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break j}b=F[h>>2];a=F[h+4>>2]-b>>2;k:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break k}if(a>>>0<=i>>>0){break k}F[h+4>>2]=b+(i<<2)}g=1;if(!i){break i}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){g=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break i}g=F[c>>2];p=G[g+f|0];a=d;f=f+1|0;a=f?a:a+1|0;F[c+16>>2]=f;d=a;F[c+20>>2]=a;a=p>>>2|0;l=0;l:{m:{n:{o:{t=p&3;switch(t|0){case 0:break m;case 3:break o;default:break n}}a=a+b|0;g=0;if(a>>>0>=i>>>0){break i}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break l}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break j}i=G[f+g|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;a=i<<(l<<3|6)|a;l=l+1|0;if((t|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;p:{if(b>>>0<=32767){qa(a,8192-(b>>>2|0)|0);break p}if((b|0)==32768){break p}F[h+20>>2]=d+32768}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;q:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break q}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break j}}j=F[a>>2];f=0;d=0;while(1){g=n+(f<<2)|0;l=F[g>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;g=F[g>>2];d=g+a|0;if(d>>>0>8192){break j}r:{if(a>>>0>=d>>>0){break r}l=0;h=g&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(g-1>>>0<=6){break r}while(1){g=j+(a<<2)|0;F[g>>2]=f;F[g+28>>2]=f;F[g+24>>2]=f;F[g+20>>2]=f;F[g+16>>2]=f;F[g+12>>2]=f;F[g+8>>2]=f;F[g+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==8192}g=k}s:{if(!g|(F[e+20>>2]?0:o)){break s}d=0;k=Z-16|0;Z=k;t:{if(!Sa(1,k+8|0,c)){break t}a=F[c+8>>2];f=F[c+16>>2];g=a-f|0;j=F[k+12>>2];i=F[c+20>>2];a=F[c+12>>2]-(i+(a>>>0>>0)|0)|0;b=F[k+8>>2];if((j|0)==(a|0)&g>>>0>>0|a>>>0>>0){break t}a=i+j|0;g=b+f|0;a=g>>>0>>0?a+1|0:a;F[c+16>>2]=g;F[c+20>>2]=a;if((b|0)<=0){break t}a=f+F[c>>2]|0;F[e+48>>2]=a;c=b-1|0;f=c+a|0;g=G[f|0];u:{if(g>>>0<=63){F[e+52>>2]=c;a=G[f|0]&63;break u}v:{switch((g>>>6|0)-1|0){case 0:if(b>>>0<2){break t}b=b-2|0;F[e+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break u;case 1:if(b>>>0<3){break t}b=b-3|0;F[e+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break u;default:break v}}b=b-4|0;F[e+52>>2]=b;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[e+56>>2]=a+32768;d=a>>>0<8355840}Z=k+16|0;if(!d){break s}if(!o){m=1;break s}b=F[e+52>>2];a=F[e+56>>2];c=F[e+36>>2];d=F[e+48>>2];f=F[e+24>>2];while(1){w:{if(a>>>0>32767){break w}while(1){if((b|0)<=0){break w}b=b-1|0;F[e+52>>2]=b;a=G[b+d|0]|a<<8;F[e+56>>2]=a;if(a>>>0<32768){continue}break}}m=a&8191;k=F[f+(m<<2)>>2];g=c+(k<<3)|0;a=(L(F[g>>2],a>>>13|0)+m|0)-F[g+4>>2]|0;F[e+56>>2]=a;F[r+(q<<2)>>2]=k;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[e+36>>2];if(a){F[e+40>>2]=a;ja(a)}a=F[e+24>>2];if(a){F[e+28>>2]=a;ja(a)}a=F[e+8>>2];if(a){F[e+12>>2]=a;ja(a)}Z=e- -64|0;b=m;break g;case 9:o=a;r=d;g=Z+-64|0;Z=g;F[g+56>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;h=g+8|0;x:{y:{if(!H[c+38>>1]){break y}if(!Ta(1,h+12|0,c)){break y}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break y}b=F[h>>2];a=F[h+4>>2]-b>>2;z:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break z}if(a>>>0<=i>>>0){break z}F[h+4>>2]=b+(i<<2)}e=1;if(!i){break x}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){e=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break x}t=F[c>>2];p=G[t+f|0];e=d;f=f+1|0;e=f?e:e+1|0;F[c+16>>2]=f;d=e;F[c+20>>2]=e;a=p>>>2|0;l=0;A:{B:{C:{D:{e=p&3;switch(e|0){case 0:break B;case 3:break D;default:break C}}a=a+b|0;e=0;if(a>>>0>=i>>>0){break x}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break A}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break y}i=G[f+t|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;a=i<<(l<<3|6)|a;l=l+1|0;if((e|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;E:{if(b>>>0<=131071){qa(a,32768-(b>>>2|0)|0);break E}if((b|0)==131072){break E}F[h+20>>2]=d+131072}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;F:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break F}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break y}}j=F[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;l=F[e>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;e=F[e>>2];d=e+a|0;if(d>>>0>32768){break y}G:{if(a>>>0>=d>>>0){break G}l=0;h=e&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break G}while(1){e=j+(a<<2)|0;F[e>>2]=f;F[e+28>>2]=f;F[e+24>>2]=f;F[e+20>>2]=f;F[e+16>>2]=f;F[e+12>>2]=f;F[e+8>>2]=f;F[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==32768}e=k}H:{if(!e|(F[g+20>>2]?0:o)){break H}d=0;f=Z-16|0;Z=f;I:{if(!Sa(1,f+8|0,c)){break I}e=F[c+8>>2];b=F[c+16>>2];k=e-b|0;j=F[f+12>>2];i=F[c+20>>2];e=F[c+12>>2]-(i+(b>>>0>e>>>0)|0)|0;a=F[f+8>>2];if((j|0)==(e|0)&k>>>0>>0|e>>>0>>0){break I}e=i+j|0;k=a+b|0;e=k>>>0>>0?e+1|0:e;F[c+16>>2]=k;F[c+20>>2]=e;if((a|0)<=0){break I}b=b+F[c>>2]|0;F[g+48>>2]=b;c=a-1|0;e=c+b|0;k=G[e|0];J:{if(k>>>0<=63){F[g+52>>2]=c;a=G[e|0]&63;break J}K:{switch((k>>>6|0)-1|0){case 0:if(a>>>0<2){break I}a=a-2|0;F[g+52>>2]=a;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break J;case 1:if(a>>>0<3){break I}a=a-3|0;F[g+52>>2]=a;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break J;default:break K}}a=a-4|0;F[g+52>>2]=a;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[g+56>>2]=a+131072;d=a>>>0<33423360}Z=f+16|0;if(!d){break H}if(!o){m=1;break H}b=F[g+52>>2];a=F[g+56>>2];c=F[g+36>>2];d=F[g+48>>2];f=F[g+24>>2];while(1){L:{if(a>>>0>131071){break L}while(1){if((b|0)<=0){break L}b=b-1|0;F[g+52>>2]=b;a=G[b+d|0]|a<<8;F[g+56>>2]=a;if(a>>>0<131072){continue}break}}m=a&32767;e=F[f+(m<<2)>>2];k=c+(e<<3)|0;a=(L(F[k>>2],a>>>15|0)+m|0)-F[k+4>>2]|0;F[g+56>>2]=a;F[r+(q<<2)>>2]=e;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[g+36>>2];if(a){F[g+40>>2]=a;ja(a)}a=F[g+24>>2];if(a){F[g+28>>2]=a;ja(a)}a=F[g+8>>2];if(a){F[g+12>>2]=a;ja(a)}Z=g- -64|0;b=m;break g;case 10:o=a;r=d;g=Z+-64|0;Z=g;F[g+56>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;h=g+8|0;M:{N:{if(!H[c+38>>1]){break N}if(!Ta(1,h+12|0,c)){break N}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break N}b=F[h>>2];a=F[h+4>>2]-b>>2;O:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break O}if(a>>>0<=i>>>0){break O}F[h+4>>2]=b+(i<<2)}e=1;if(!i){break M}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){e=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break M}t=F[c>>2];p=G[t+f|0];a=d;f=f+1|0;a=f?a:a+1|0;F[c+16>>2]=f;d=a;F[c+20>>2]=a;a=p>>>2|0;l=0;P:{Q:{R:{S:{u=p&3;switch(u|0){case 0:break Q;case 3:break S;default:break R}}a=a+b|0;e=0;if(a>>>0>=i>>>0){break M}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break P}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break N}i=G[f+t|0];e=d;f=f+1|0;e=f?e:e+1|0;F[c+16>>2]=f;d=e;F[c+20>>2]=e;a=i<<(l<<3|6)|a;l=l+1|0;if((u|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;T:{if(b>>>0<=262143){qa(a,65536-(b>>>2|0)|0);break T}if((b|0)==262144){break T}F[h+20>>2]=d+262144}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;U:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break U}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break N}}j=F[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;l=F[e>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;e=F[e>>2];d=e+a|0;if(d>>>0>65536){break N}V:{if(a>>>0>=d>>>0){break V}l=0;h=e&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break V}while(1){e=j+(a<<2)|0;F[e>>2]=f;F[e+28>>2]=f;F[e+24>>2]=f;F[e+20>>2]=f;F[e+16>>2]=f;F[e+12>>2]=f;F[e+8>>2]=f;F[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==65536}e=k}W:{if(!e|(F[g+20>>2]?0:o)){break W}d=0;e=Z-16|0;Z=e;X:{if(!Sa(1,e+8|0,c)){break X}a=F[c+8>>2];f=F[c+16>>2];k=a-f|0;j=F[e+12>>2];i=F[c+20>>2];a=F[c+12>>2]-(i+(a>>>0>>0)|0)|0;b=F[e+8>>2];if((j|0)==(a|0)&k>>>0>>0|a>>>0>>0){break X}a=i+j|0;k=b+f|0;a=k>>>0>>0?a+1|0:a;F[c+16>>2]=k;F[c+20>>2]=a;if((b|0)<=0){break X}a=f+F[c>>2]|0;F[g+48>>2]=a;c=b-1|0;f=c+a|0;k=G[f|0];Y:{if(k>>>0<=63){F[g+52>>2]=c;a=G[f|0]&63;break Y}Z:{switch((k>>>6|0)-1|0){case 0:if(b>>>0<2){break X}b=b-2|0;F[g+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break Y;case 1:if(b>>>0<3){break X}b=b-3|0;F[g+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break Y;default:break Z}}b=b-4|0;F[g+52>>2]=b;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[g+56>>2]=a+262144;d=a>>>0<66846720}Z=e+16|0;if(!d){break W}if(!o){m=1;break W}b=F[g+52>>2];a=F[g+56>>2];c=F[g+36>>2];d=F[g+48>>2];f=F[g+24>>2];while(1){_:{if(a>>>0>262143){break _}while(1){if((b|0)<=0){break _}b=b-1|0;F[g+52>>2]=b;a=G[b+d|0]|a<<8;F[g+56>>2]=a;if(a>>>0<262144){continue}break}}m=a&65535;e=F[f+(m<<2)>>2];k=c+(e<<3)|0;a=(L(F[k>>2],a>>>16|0)+m|0)-F[k+4>>2]|0;F[g+56>>2]=a;F[r+(q<<2)>>2]=e;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[g+36>>2];if(a){F[g+40>>2]=a;ja(a)}a=F[g+24>>2];if(a){F[g+28>>2]=a;ja(a)}a=F[g+8>>2];if(a){F[g+12>>2]=a;ja(a)}Z=g- -64|0;b=m;break g;case 11:o=a;r=d;g=Z+-64|0;Z=g;F[g+56>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;h=g+8|0;$:{aa:{if(!H[c+38>>1]){break aa}if(!Ta(1,h+12|0,c)){break aa}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break aa}b=F[h>>2];a=F[h+4>>2]-b>>2;ba:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break ba}if(a>>>0<=i>>>0){break ba}F[h+4>>2]=b+(i<<2)}e=1;if(!i){break $}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){e=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break $}t=F[c>>2];p=G[t+f|0];e=d;f=f+1|0;e=f?e:e+1|0;F[c+16>>2]=f;d=e;F[c+20>>2]=e;a=p>>>2|0;l=0;ca:{da:{ea:{fa:{e=p&3;switch(e|0){case 0:break da;case 3:break fa;default:break ea}}a=a+b|0;e=0;if(a>>>0>=i>>>0){break $}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break ca}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break aa}i=G[f+t|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;a=i<<(l<<3|6)|a;l=l+1|0;if((e|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;ga:{if(b>>>0<=1048575){qa(a,262144-(b>>>2|0)|0);break ga}if((b|0)==1048576){break ga}F[h+20>>2]=d- -1048576}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;ha:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break ha}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break aa}}j=F[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;l=F[e>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;e=F[e>>2];d=e+a|0;if(d>>>0>262144){break aa}ia:{if(a>>>0>=d>>>0){break ia}l=0;h=e&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break ia}while(1){e=j+(a<<2)|0;F[e>>2]=f;F[e+28>>2]=f;F[e+24>>2]=f;F[e+20>>2]=f;F[e+16>>2]=f;F[e+12>>2]=f;F[e+8>>2]=f;F[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==262144}e=k}ja:{if(!e|(F[g+20>>2]?0:o)){break ja}d=0;f=Z-16|0;Z=f;ka:{if(!Sa(1,f+8|0,c)){break ka}e=F[c+8>>2];b=F[c+16>>2];k=e-b|0;j=F[f+12>>2];i=F[c+20>>2];e=F[c+12>>2]-(i+(b>>>0>e>>>0)|0)|0;a=F[f+8>>2];if((j|0)==(e|0)&k>>>0>>0|e>>>0>>0){break ka}e=i+j|0;k=a+b|0;e=k>>>0>>0?e+1|0:e;F[c+16>>2]=k;F[c+20>>2]=e;if((a|0)<=0){break ka}b=b+F[c>>2]|0;F[g+48>>2]=b;c=a-1|0;e=c+b|0;k=G[e|0];la:{if(k>>>0<=63){F[g+52>>2]=c;a=G[e|0]&63;break la}ma:{switch((k>>>6|0)-1|0){case 0:if(a>>>0<2){break ka}a=a-2|0;F[g+52>>2]=a;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break la;case 1:if(a>>>0<3){break ka}a=a-3|0;F[g+52>>2]=a;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break la;default:break ma}}a=a-4|0;F[g+52>>2]=a;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[g+56>>2]=a- -1048576;d=a>>>0<267386880}Z=f+16|0;if(!d){break ja}if(!o){m=1;break ja}b=F[g+52>>2];a=F[g+56>>2];c=F[g+36>>2];d=F[g+48>>2];f=F[g+24>>2];while(1){na:{if(a>>>0>1048575){break na}while(1){if((b|0)<=0){break na}b=b-1|0;F[g+52>>2]=b;a=G[b+d|0]|a<<8;F[g+56>>2]=a;if(a>>>0<1048576){continue}break}}m=a&262143;e=F[f+(m<<2)>>2];k=c+(e<<3)|0;a=(L(F[k>>2],a>>>18|0)+m|0)-F[k+4>>2]|0;F[g+56>>2]=a;F[r+(q<<2)>>2]=e;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[g+36>>2];if(a){F[g+40>>2]=a;ja(a)}a=F[g+24>>2];if(a){F[g+28>>2]=a;ja(a)}a=F[g+8>>2];if(a){F[g+12>>2]=a;ja(a)}Z=g- -64|0;b=m;break g;case 12:o=a;r=d;e=Z+-64|0;Z=e;F[e+56>>2]=0;F[e+48>>2]=0;F[e+52>>2]=0;F[e+40>>2]=0;F[e+44>>2]=0;F[e+32>>2]=0;F[e+36>>2]=0;F[e+24>>2]=0;F[e+28>>2]=0;F[e+16>>2]=0;F[e+20>>2]=0;F[e+8>>2]=0;F[e+12>>2]=0;h=e+8|0;oa:{pa:{if(!H[c+38>>1]){break pa}if(!Ta(1,h+12|0,c)){break pa}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break pa}b=F[h>>2];a=F[h+4>>2]-b>>2;qa:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break qa}if(a>>>0<=i>>>0){break qa}F[h+4>>2]=b+(i<<2)}g=1;if(!i){break oa}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){g=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break oa}g=F[c>>2];p=G[g+f|0];a=d;f=f+1|0;a=f?a:a+1|0;F[c+16>>2]=f;d=a;F[c+20>>2]=a;a=p>>>2|0;l=0;ra:{sa:{ta:{ua:{t=p&3;switch(t|0){case 0:break sa;case 3:break ua;default:break ta}}a=a+b|0;g=0;if(a>>>0>=i>>>0){break oa}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break ra}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break pa}i=G[f+g|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;a=i<<(l<<3|6)|a;l=l+1|0;if((t|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;va:{if(b>>>0<=2097151){qa(a,524288-(b>>>2|0)|0);break va}if((b|0)==2097152){break va}F[h+20>>2]=d+2097152}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;wa:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break wa}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break pa}}j=F[a>>2];f=0;d=0;while(1){g=n+(f<<2)|0;l=F[g>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;g=F[g>>2];d=g+a|0;if(d>>>0>524288){break pa}xa:{if(a>>>0>=d>>>0){break xa}l=0;h=g&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(g-1>>>0<=6){break xa}while(1){g=j+(a<<2)|0;F[g>>2]=f;F[g+28>>2]=f;F[g+24>>2]=f;F[g+20>>2]=f;F[g+16>>2]=f;F[g+12>>2]=f;F[g+8>>2]=f;F[g+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==524288}g=k}ya:{if(!g|(F[e+20>>2]?0:o)){break ya}d=0;k=Z-16|0;Z=k;za:{if(!Sa(1,k+8|0,c)){break za}a=F[c+8>>2];f=F[c+16>>2];g=a-f|0;j=F[k+12>>2];i=F[c+20>>2];a=F[c+12>>2]-(i+(a>>>0>>0)|0)|0;b=F[k+8>>2];if((j|0)==(a|0)&g>>>0>>0|a>>>0>>0){break za}a=i+j|0;g=b+f|0;a=g>>>0>>0?a+1|0:a;F[c+16>>2]=g;F[c+20>>2]=a;if((b|0)<=0){break za}a=f+F[c>>2]|0;F[e+48>>2]=a;c=b-1|0;f=c+a|0;g=G[f|0];Aa:{if(g>>>0<=63){F[e+52>>2]=c;a=G[f|0]&63;break Aa}Ba:{switch((g>>>6|0)-1|0){case 0:if(b>>>0<2){break za}b=b-2|0;F[e+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break Aa;case 1:if(b>>>0<3){break za}b=b-3|0;F[e+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break Aa;default:break Ba}}b=b-4|0;F[e+52>>2]=b;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[e+56>>2]=a+2097152;d=a>>>0<534773760}Z=k+16|0;if(!d){break ya}if(!o){m=1;break ya}b=F[e+52>>2];a=F[e+56>>2];c=F[e+36>>2];d=F[e+48>>2];f=F[e+24>>2];while(1){Ca:{if(a>>>0>2097151){break Ca}while(1){if((b|0)<=0){break Ca}b=b-1|0;F[e+52>>2]=b;a=G[b+d|0]|a<<8;F[e+56>>2]=a;if(a>>>0<2097152){continue}break}}m=a&524287;k=F[f+(m<<2)>>2];g=c+(k<<3)|0;a=(L(F[g>>2],a>>>19|0)+m|0)-F[g+4>>2]|0;F[e+56>>2]=a;F[r+(q<<2)>>2]=k;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[e+36>>2];if(a){F[e+40>>2]=a;ja(a)}a=F[e+24>>2];if(a){F[e+28>>2]=a;ja(a)}a=F[e+8>>2];if(a){F[e+12>>2]=a;ja(a)}Z=e- -64|0;b=m;break g;case 17:b=Ld(a,c,d);break g;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:b=Z+-64|0;Z=b;F[b+56>>2]=0;F[b+48>>2]=0;F[b+52>>2]=0;F[b+40>>2]=0;F[b+44>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;F[b+24>>2]=0;F[b+28>>2]=0;F[b+16>>2]=0;F[b+20>>2]=0;F[b+8>>2]=0;F[b+12>>2]=0;Da:{if(!Nd(b+8|0,c)|(F[b+20>>2]?0:a)){break Da}if(!Md(b+8|0,c)){break Da}if(!a){f=1;break Da}m=F[b+52>>2];c=F[b+56>>2];e=F[b+36>>2];g=F[b+48>>2];o=F[b+24>>2];while(1){Ea:{if(c>>>0>16383){break Ea}while(1){if((m|0)<=0){break Ea}m=m-1|0;F[b+52>>2]=m;c=G[g+m|0]|c<<8;F[b+56>>2]=c;if(c>>>0<16384){continue}break}}f=c&4095;j=F[o+(f<<2)>>2];r=e+(j<<3)|0;c=(L(F[r>>2],c>>>12|0)+f|0)-F[r+4>>2]|0;F[b+56>>2]=c;F[(k<<2)+d>>2]=j;f=1;k=k+1|0;if((k|0)!=(a|0)){continue}break}}a=F[b+36>>2];if(a){F[b+40>>2]=a;ja(a)}a=F[b+24>>2];if(a){F[b+28>>2]=a;ja(a)}a=F[b+8>>2];if(a){F[b+12>>2]=a;ja(a)}Z=b- -64|0;b=f;break g;case 13:case 14:case 15:case 16:break h;default:break g}}b=Ld(a,c,d)}f=b}return f}function ih(a){a=a|0;var 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,w=0,x=0,y=0,z=0,A=0,B=0,C=0,J=0,K=0,M=0,N=0,O=0,P=0;u=Z+-64|0;Z=u;F[a+132>>2]=0;if(F[a+148>>2]){b=F[a+144>>2];if(b){while(1){f=F[b>>2];ja(b);b=f;if(b){continue}break}}b=0;F[a+144>>2]=0;f=F[a+140>>2];a:{if(!f){break a}if(f>>>0>=4){c=f&-4;while(1){e=b<<2;F[e+F[a+136>>2]>>2]=0;F[F[a+136>>2]+(e|4)>>2]=0;F[F[a+136>>2]+(e|8)>>2]=0;F[F[a+136>>2]+(e|12)>>2]=0;b=b+4|0;d=d+4|0;if((c|0)!=(d|0)){continue}break}}f=f&3;if(!f){break a}d=0;while(1){F[F[a+136>>2]+(b<<2)>>2]=0;b=b+1|0;d=d+1|0;if((f|0)!=(d|0)){continue}break}}F[a+148>>2]=0}b:{c:{if(!Da(1,u+60|0,F[F[a+4>>2]+32>>2])){break c}F[a+156>>2]=F[u+60>>2];if(!Da(1,u+56|0,F[F[a+4>>2]+32>>2])){break c}e=F[u+56>>2];if(e>>>0>1431655765|I[a+156>>2]>L(e,3)>>>0){break c}b=F[F[a+4>>2]+32>>2];c=F[b+8>>2];k=F[b+12>>2];d=F[b+20>>2];f=F[b+16>>2];if((k|0)<=(d|0)&f>>>0>=c>>>0|(d|0)>(k|0)){break c}k=G[f+F[b>>2]|0];f=f+1|0;d=f?d:d+1|0;F[b+16>>2]=f;F[b+20>>2]=d;if(!Da(1,u+52|0,b)){break c}q=F[u+52>>2];if(q>>>0>e>>>0|e>>>0>q+((q>>>0)/3|0)>>>0){break c}if(!Da(1,u+48|0,F[F[a+4>>2]+32>>2])){break c}d=F[u+48>>2];if(d>>>0>q>>>0){break c}F[a+28>>2]=F[a+24>>2];f=Zb(ka(88));b=F[a+8>>2];F[a+8>>2]=f;if(b){Za(b);if(!F[a+8>>2]){break c}}F[a+164>>2]=F[a+160>>2];Ib(a+160|0,e);F[a+176>>2]=F[a+172>>2];Ib(a+172|0,e);F[a- -64>>2]=0;F[a+92>>2]=-1;F[a+84>>2]=-1;F[a+88>>2]=-1;F[a+40>>2]=F[a+36>>2];F[a+52>>2]=F[a+48>>2];F[a+76>>2]=F[a+72>>2];A=a+216|0;Dd(A);Cd(A,k);if(!_c(F[a+8>>2],e,d+F[a+156>>2]|0)){break c}b=F[a+156>>2];D[u+8|0]=1;Ea(a+120|0,b+d|0,u+8|0);if((Bd(a,F[F[a+4>>2]+32>>2])|0)==-1){break c}c=a+232|0;b=c;F[b+144>>2]=a;f=F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2];f=F[f>>2]+F[f+16>>2]|0;e=F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2];e=F[e+8>>2]-F[e+16>>2]|0;O=b,P=H[F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2]+38>>1],E[O+38>>1]=P;F[b>>2]=f;F[b+16>>2]=0;F[b+20>>2]=0;F[b+8>>2]=e;F[b+12>>2]=0;O=b,P=$[F[F[a>>2]+36>>2]](a)|0,F[O+148>>2]=P;F[a+372>>2]=k;F[a+384>>2]=d+F[a+156>>2];K=Ja(u+8|0);k=K;f=0;j=Z-16|0;Z=j;d:{if(!Aa(b+80|0,b)){break d}if(!yd(c)){break d}b=F[c+4>>2];F[k>>2]=F[c>>2];F[k+4>>2]=b;b=F[c+36>>2];F[k+32>>2]=F[c+32>>2];F[k+36>>2]=b;b=F[c+28>>2];F[k+24>>2]=F[c+24>>2];F[k+28>>2]=b;b=F[c+20>>2];F[k+16>>2]=F[c+16>>2];F[k+20>>2]=b;b=F[c+12>>2];F[k+8>>2]=F[c+8>>2];F[k+12>>2]=b;F[c+176>>2]=2;F[c+180>>2]=7;b=F[c+152>>2];if((b|0)<0){break d}F[j+12>>2]=0;f=2;h=F[c+156>>2];e=F[c+160>>2]-h>>2;e:{if(e>>>0>>0){Fa(c+156|0,b-e|0,j+12|0);f=F[c+176>>2];d=F[c+180>>2];break e}d=7;if(b>>>0>=e>>>0){break e}F[c+160>>2]=h+(b<<2)}e=c+184|0;d=(d-f|0)+1|0;b=F[c+188>>2];f=F[c+184>>2];s=(b-f|0)/12|0;f:{if(d>>>0>s>>>0){h=0;b=d-s|0;o=F[e+8>>2];f=F[e+4>>2];g:{if(b>>>0<=(o-f|0)/12>>>0){if(b){b=L(b,12)-12|0;b=(b-((b>>>0)%12|0)|0)+12|0;f=ma(f,0,b)+b|0}F[e+4>>2]=f;break g}h:{i:{j:{s=F[e>>2];g=(f-s|0)/12|0;d=g+b|0;if(d>>>0<357913942){o=(o-s|0)/12|0;i=o<<1;o=o>>>0>=178956970?357913941:d>>>0>>0?i:d;if(o){if(o>>>0>=357913942){break j}h=ka(L(o,12))}d=L(g,12)+h|0;b=L(b,12)-12|0;g=(b-((b>>>0)%12|0)|0)+12|0;b=ma(d,0,g);g=b+g|0;h=L(o,12)+h|0;if((f|0)==(s|0)){break i}while(1){d=d-12|0;f=f-12|0;F[d>>2]=F[f>>2];F[d+4>>2]=F[f+4>>2];F[d+8>>2]=F[f+8>>2];F[f+8>>2]=0;F[f>>2]=0;F[f+4>>2]=0;if((f|0)!=(s|0)){continue}break}F[e+8>>2]=h;b=F[e+4>>2];F[e+4>>2]=g;f=F[e>>2];F[e>>2]=d;if((b|0)==(f|0)){break h}while(1){d=b-12|0;h=F[d>>2];if(h){F[b-8>>2]=h;ja(h)}b=d;if((f|0)!=(b|0)){continue}break}break h}break b}oa();v()}F[e+8>>2]=h;F[e+4>>2]=g;F[e>>2]=b}if(f){ja(f)}}d=F[c+188>>2];break f}if(d>>>0>=s>>>0){d=b;break f}d=f+L(d,12)|0;if((d|0)!=(b|0)){while(1){f=b-12|0;h=F[f>>2];if(h){F[b-8>>2]=h;ja(h)}b=f;if((d|0)!=(b|0)){continue}break}}F[c+188>>2]=d}s=c+196|0;f=F[c+184>>2];b=(d-f|0)/12|0;o=F[c+196>>2];h=F[c+200>>2]-o>>2;k:{if(b>>>0>h>>>0){qa(s,b-h|0);f=F[c+184>>2];d=F[c+188>>2];break k}if(b>>>0>=h>>>0){break k}F[c+200>>2]=o+(b<<2)}if((d|0)==(f|0)){f=1;break d}b=0;while(1){l:{if(!Da(1,j+8|0,k)){break l}f=F[j+8>>2];d=F[c+148>>2];if(f>>>0>(F[d+4>>2]-F[d>>2]>>2>>>0)/3>>>0){break l}if(f){g=L(b,12);h=g+F[e>>2]|0;d=F[h>>2];o=F[h+4>>2]-d>>2;m:{if(o>>>0>>0){qa(h,f-o|0);d=F[g+F[e>>2]>>2];break m}if(f>>>0>=o>>>0){break m}F[h+4>>2]=(f<<2)+d}mc(f,1,k,d);F[F[s>>2]+(b<<2)>>2]=f}f=1;b=b+1|0;if(b>>>0<(F[c+188>>2]-F[c+184>>2]|0)/12>>>0){continue}break d}break}f=0}Z=j+16|0;n:{if(!f){break n}e=0;c=0;d=0;b=0;k=0;f=0;s=0;o=0;l=Z-96|0;Z=l;F[l+72>>2]=0;F[l+64>>2]=0;F[l+68>>2]=0;F[l+48>>2]=0;F[l+52>>2]=0;F[l+40>>2]=0;F[l+44>>2]=0;F[l+56>>2]=1065353216;F[l+32>>2]=0;F[l+24>>2]=0;F[l+28>>2]=0;j=a;C=F[a+124>>2];o:{p:{q:{r:{s:{if((q|0)<=0){break s}J=j+232|0;M=F[j+216>>2]!=F[j+220>>2];B=1;t:{while(1){h=s;s=h+1|0;u:{v:{w:{g=F[j+404>>2];if((g|0)==-1){F[j+400>>2]=7;break w}a=-1;i=F[j+428>>2]+(g<<2)|0;m=F[i>>2];g=m-1|0;F[i>>2]=g;if((m|0)<=0){break r}g=F[F[F[j+416>>2]+L(F[j+404>>2],12)>>2]+(g<<2)>>2];if(g>>>0>4){break r}i=F[(g<<2)+8896>>2];F[j+400>>2]=i;if(!g){if((b|0)==(c|0)){break r}i=-1;m=F[j+8>>2];B=F[m+24>>2];t=c-4|0;e=F[t>>2];g=-1;x:{if((e|0)==-1){break x}p=e+1|0;p=(p>>>0)%3|0?p:e-2|0;g=-1;if((p|0)==-1){break x}g=F[F[m>>2]+(p<<2)>>2]}n=F[B+(g<<2)>>2];if((n|0)!=-1){i=n+1|0;i=(i>>>0)%3|0?i:n-2|0}if((e|0)!=-1&F[F[m+12>>2]+(e<<2)>>2]!=-1|(e|0)==(i|0)){break r}n=F[m+12>>2];if((i|0)!=-1&F[n+(i<<2)>>2]!=-1){break r}p=L(h,3);h=p+1|0;F[n+(e<<2)>>2]=h;x=h<<2;F[x+n>>2]=e;r=p+2|0;F[n+(i<<2)>>2]=r;w=r<<2;F[w+n>>2]=i;n=-1;h=-1;y:{if((e|0)==-1){break y}z:{if((e>>>0)%3|0){e=e-1|0;break z}e=e+2|0;h=-1;if((e|0)==-1){break y}}h=F[F[m>>2]+(e<<2)>>2]}e=h;A:{if((i|0)==-1){break A}h=i+1|0;h=(h>>>0)%3|0?h:i-2|0;if((h|0)==-1){break A}n=F[F[m>>2]+(h<<2)>>2]}if((e|0)==(g|0)|(g|0)==(n|0)){break r}a=F[m>>2];F[a+(p<<2)>>2]=g;F[a+x>>2]=n;F[a+w>>2]=e;if((e|0)!=-1){F[B+(e<<2)>>2]=r}a=F[j+120>>2]+(g>>>3&536870908)|0;e=F[a>>2];O=a,P=oi(g)&e,F[O>>2]=P;F[t>>2]=p;e=b;kc(J,p);break u}B:{switch(i-1|0){case 2:case 4:if((b|0)==(c|0)){break r}r=c-4|0;e=F[r>>2];i=F[j+8>>2];m=F[i+12>>2];if((e|0)!=-1&F[m+(e<<2)>>2]!=-1){break r}c=L(h,3);n=(g|0)==3;g=c+(n?2:1)|0;t=g<<2;F[t+m>>2]=e;F[m+(e<<2)>>2]=g;Ma(i+24|0,8324);p=F[j+8>>2];m=F[p+24>>2];if(F[p+28>>2]-m>>2>(C|0)){break r}a=F[p>>2];w=a+t|0;p=F[i+28>>2];i=F[i+24>>2];t=(p-i>>2)-1|0;F[w>>2]=t;if((i|0)!=(p|0)){F[m+(t<<2)>>2]=g}g=n?c:c+2|0;w=a+(c+n<<2)|0;C:{if((e|0)==-1){F[a+(g<<2)>>2]=-1;i=-1;break C}D:{E:{F:{if((e>>>0)%3|0){i=e-1|0;break F}i=e+2|0;if((i|0)==-1){break E}}i=F[a+(i<<2)>>2];F[a+(g<<2)>>2]=i;if((i|0)==-1){break D}F[m+(i<<2)>>2]=g;break D}F[a+(g<<2)>>2]=-1}i=e+1|0;e=(i>>>0)%3|0?i:e-2|0;i=-1;if((e|0)==-1){break C}i=F[a+(e<<2)>>2]}F[w>>2]=i;F[r>>2]=c;e=b;break v;case 6:break w;case 0:break B;default:break r}}if((e|0)==(c|0)){break r}f=c-4|0;m=F[f>>2];F[l+68>>2]=f;n=F[l+44>>2];G:{if(!n){break G}g=F[l+40>>2];p=ni(n)>>>0>1;a=h&n+2147483647;H:{if(!p){break H}a=h;if(a>>>0>>0){break H}a=(h>>>0)%(n>>>0)|0}i=a;a=F[g+(i<<2)>>2];if(!a){break G}a=F[a>>2];if(!a){break G}I:{if(!p){g=n-1|0;while(1){n=F[a+4>>2];J:{if((n|0)!=(h|0)){if((i|0)==(g&n)){break J}break G}if((h|0)==F[a+8>>2]){break I}}a=F[a>>2];if(a){continue}break}break G}while(1){g=F[a+4>>2];K:{if((g|0)!=(h|0)){if(g>>>0>=n>>>0){g=(g>>>0)%(n>>>0)|0}if((g|0)==(i|0)){break K}break G}if((h|0)==F[a+8>>2]){break I}}a=F[a>>2];if(a){continue}break}break G}if((f|0)!=(k|0)){F[f>>2]=F[a+12>>2];F[l+68>>2]=c;f=c;break G}b=k-e|0;c=b>>2;d=c+1|0;if(d>>>0>=1073741824){break b}f=b>>>1|0;d=b>>>0>=2147483644?1073741823:d>>>0>>0?f:d;if(d){if(d>>>0>=1073741824){break p}f=ka(d<<2)}else{f=0}b=f+(c<<2)|0;F[b>>2]=F[a+12>>2];d=f+(d<<2)|0;f=b+4|0;if((e|0)!=(k|0)){while(1){b=b-4|0;k=k-4|0;F[b>>2]=F[k>>2];if((e|0)!=(k|0)){continue}break}}F[l+72>>2]=d;F[l+68>>2]=f;F[l+64>>2]=b;if(e){ja(e)}e=b;k=d}if((e|0)==(f|0)){break t}x=f-4|0;a=F[x>>2];if((a|0)==(m|0)){break t}i=(a|0)==-1;g=F[j+8>>2];if(!i&F[F[g+12>>2]+(a<<2)>>2]!=-1){break t}n=F[g+12>>2];if((m|0)!=-1&F[n+(m<<2)>>2]!=-1){break t}p=L(h,3);t=p+2|0;F[n+(a<<2)>>2]=t;c=t<<2;F[c+n>>2]=a;h=p+1|0;F[n+(m<<2)>>2]=h;w=h<<2;F[w+n>>2]=m;L:{M:{N:{if(!i){if((a>>>0)%3|0){h=a-1|0;break N}h=a+2|0;if((h|0)!=-1){break N}i=F[g>>2];h=-1;break M}h=-1;i=F[g>>2];F[i+(p<<2)>>2]=-1;r=-1;break L}i=F[g>>2];h=F[i+(h<<2)>>2]}F[(p<<2)+i>>2]=h;r=a+1|0;a=(r>>>0)%3|0?r:a-2|0;r=-1;if((a|0)==-1){break L}r=F[(a<<2)+i>>2]}F[i+w>>2]=r;O:{if((m|0)==-1){F[c+i>>2]=-1;r=-1;c=-1;break O}P:{Q:{R:{if((m>>>0)%3|0){a=m-1|0;break R}a=m+2|0;if((a|0)==-1){break Q}}a=F[(a<<2)+i>>2];F[c+i>>2]=a;if((a|0)==-1){break P}F[F[g+24>>2]+(a<<2)>>2]=t;break P}F[c+i>>2]=-1}r=-1;a=m+1|0;a=(a>>>0)%3|0?a:m-2|0;c=-1;if((a|0)==-1){break O}r=F[(a<<2)+i>>2];c=a}a=F[j+388>>2];t=h<<2;m=a+t|0;w=a;a=r<<2;F[m>>2]=F[m>>2]+F[w+a>>2];w=a;a=F[g+24>>2];m=w+a|0;if((h|0)!=-1){F[a+t>>2]=F[m>>2]}a=c;while(1){if((a|0)!=-1){F[(a<<2)+i>>2]=h;t=a+1|0;a=(t>>>0)%3|0?t:a-2|0;g=-1;S:{if((a|0)==-1){break S}a=F[n+(a<<2)>>2];g=-1;if((a|0)==-1){break S}g=a+1|0;g=(g>>>0)%3|0?g:a-2|0}a=g;if((c|0)!=(a|0)){continue}break t}break}F[m>>2]=-1;T:{U:{if(M){break U}if((y|0)!=(z|0)){F[z>>2]=r;z=z+4|0;F[l+28>>2]=z;break U}a=y-o|0;g=a>>2;c=g+1|0;if(c>>>0>=1073741824){break T}h=a>>>1|0;h=a>>>0>=2147483644?1073741823:c>>>0>>0?h:c;if(h){if(h>>>0>=1073741824){break p}c=ka(h<<2)}else{c=0}a=c+(g<<2)|0;F[a>>2]=r;z=a+4|0;if((o|0)!=(y|0)){while(1){a=a-4|0;y=y-4|0;F[a>>2]=F[y>>2];if((o|0)!=(y|0)){continue}break}}y=c+(h<<2)|0;F[l+32>>2]=y;F[l+28>>2]=z;F[l+24>>2]=a;if(o){ja(o)}o=a}F[x>>2]=p;c=f;kc(J,p);break u}break b}g=F[j+8>>2];Ma(g+24|0,8324);a=-1;k=F[j+8>>2];f=L(h,3);i=F[g+28>>2];m=F[g+24>>2];n=i-m|0;g=n>>2;p=g-1|0;F[F[k>>2]+(f<<2)>>2]=p;Ma(k+24|0,8324);r=f+1|0;F[F[k>>2]+(r<<2)>>2]=(F[k+28>>2]-F[k+24>>2]>>2)-1;k=F[j+8>>2];Ma(k+24|0,8324);t=f+2|0;F[F[k>>2]+(t<<2)>>2]=(F[k+28>>2]-F[k+24>>2]>>2)-1;x=F[j+8>>2];k=F[x+24>>2];if(F[x+28>>2]-k>>2>(C|0)){break r}V:{W:{if((i|0)!=(m|0)){F[k+(p<<2)>>2]=f;a=0;if((n|0)==-4){break W}}F[k+(g<<2)>>2]=r;a=g+1|0;if((a|0)==-1){break V}}F[k+(a<<2)>>2]=t}if((d|0)!=(c|0)){F[c>>2]=f;f=c+4|0;F[l+68>>2]=f;k=d;break v}a=d-b|0;k=a>>2;e=k+1|0;if(e>>>0>=1073741824){break b}c=a>>>1|0;a=a>>>0>=2147483644?1073741823:e>>>0>>0?c:e;if(a){if(a>>>0>=1073741824){break p}c=ka(a<<2)}else{c=0}e=c+(k<<2)|0;F[e>>2]=f;k=c+(a<<2)|0;f=e+4|0;if((b|0)!=(d|0)){while(1){e=e-4|0;d=d-4|0;F[e>>2]=F[d>>2];if((b|0)!=(d|0)){continue}break}}F[l+72>>2]=k;F[l+68>>2]=f;F[l+64>>2]=e;if(b){ja(b)}d=k;b=e}kc(J,F[f-4>>2]);a=F[j+40>>2];X:{if((a|0)==F[j+36>>2]){break X}c=a-12|0;g=F[c+4>>2];h=q+(h^-1)|0;if(g>>>0>h>>>0){break t}if((g|0)!=(h|0)){break X}i=G[a-4|0];g=F[c>>2];F[j+40>>2]=c;if((g|0)<0){break t}m=f-4|0;a=F[m>>2];F[l+20>>2]=q+(g^-1);c=l+20|0;F[l+88>>2]=c;Fb(l,l+40|0,c,l+88|0);g=F[l>>2];Y:{if(i&1){c=-1;if((a|0)==-1){break Y}c=a+1|0;c=(c>>>0)%3|0?c:a-2|0;break Y}c=-1;if((a|0)==-1){break Y}c=a-1|0;if((a>>>0)%3|0){break Y}c=a+2|0}F[g+12>>2]=c;a=F[j+40>>2];if((a|0)==F[j+36>>2]){break X}while(1){c=a-12|0;g=F[c+4>>2];if(g>>>0>h>>>0){break t}if((g|0)!=(h|0)){break X}i=G[a-4|0];g=F[c>>2];F[j+40>>2]=c;if((g|0)<0){break t}a=F[m>>2];F[l+20>>2]=q+(g^-1);c=l+20|0;F[l+88>>2]=c;Fb(l,l+40|0,c,l+88|0);g=F[l>>2];Z:{if(i&1){c=-1;if((a|0)==-1){break Z}c=a+1|0;c=(c>>>0)%3|0?c:a-2|0;break Z}c=-1;if((a|0)==-1){break Z}c=a-1|0;if((a>>>0)%3|0){break Z}c=a+2|0}F[g+12>>2]=c;a=F[j+40>>2];if((a|0)!=F[j+36>>2]){continue}break}}c=f}B=(q|0)>(s|0);if((q|0)!=(s|0)){continue}break}s=q;break s}a=-1;if(B){break r}}a=-1;c=F[j+8>>2];if(F[c+28>>2]-F[c+24>>2]>>2>(C|0)){break r}if((b|0)!=(f|0)){m=j+72|0;k=j+60|0;n=j+312|0;while(1){f=f-4|0;q=F[f>>2];F[l+68>>2]=f;_:{if(wa(n)){g=F[j+8>>2];o=F[g>>2];if(((F[g+4>>2]-o>>2>>>0)/3|0)<=(s|0)){a=-1;break r}b=-1;i=F[g+24>>2];a=-1;$:{if((q|0)==-1){break $}e=q+1|0;e=(e>>>0)%3|0?e:q-2|0;a=-1;if((e|0)==-1){break $}a=F[o+(e<<2)>>2]}e=a;a=F[i+(e<<2)>>2];aa:{if((a|0)==-1){h=1;c=-1;break aa}h=1;c=-1;d=a+1|0;a=(d>>>0)%3|0?d:a-2|0;if((a|0)==-1){break aa}h=0;b=a+1|0;b=(b>>>0)%3|0?b:a-2|0;if((b|0)!=-1){c=F[o+(b<<2)>>2]}b=a}a=-1;d=-1;i=F[i+(c<<2)>>2];if((i|0)!=-1){d=i+1|0;d=(d>>>0)%3|0?d:i-2|0}if((b|0)==(q|0)|(d|0)==(q|0)|((q|0)!=-1&F[F[g+12>>2]+(q<<2)>>2]!=-1|(b|0)==(d|0))){break r}if(!h&F[F[g+12>>2]+(b<<2)>>2]!=-1){break r}h=-1;g=F[g+12>>2];i=-1;ba:{if((d|0)==-1){break ba}if(F[g+(d<<2)>>2]!=-1){break r}a=d+1|0;a=(a>>>0)%3|0?a:d-2|0;i=-1;if((a|0)==-1){break ba}i=F[o+(a<<2)>>2]}a=L(s,3);F[l>>2]=a;F[g+(a<<2)>>2]=q;F[g+(q<<2)>>2]=a;a=F[l>>2]+1|0;F[g+(a<<2)>>2]=b;F[g+(b<<2)>>2]=a;a=F[l>>2]+2|0;F[g+(a<<2)>>2]=d;F[g+(d<<2)>>2]=a;a=F[l>>2];F[o+(a<<2)>>2]=c;b=a+1|0;d=o+(b<<2)|0;F[d>>2]=i;q=a+2|0;o=o+(q<<2)|0;F[o>>2]=e;a=F[j+120>>2];e=b?c:-1;c=a+(e>>>3&536870908)|0;g=F[c>>2];O=c,P=oi(e)&g,F[O>>2]=P;h=(b|0)!=-1?F[d>>2]:h;b=a+(h>>>3&536870908)|0;d=F[b>>2];O=b,P=oi(h)&d,F[O>>2]=P;d=-1;d=(q|0)!=-1?F[o>>2]:d;a=a+(d>>>3&536870908)|0;b=F[a>>2];O=a,P=oi(d)&b,F[O>>2]=P;D[l+88|0]=1;wd(k,l+88|0);Ma(m,l);s=s+1|0;b=F[l+64>>2];break _}d=F[j+64>>2];a=F[j+68>>2];if((d|0)==a<<5){if((d+1|0)<0){break b}if(d>>>0<=1073741822){a=a<<6;d=(d&-32)+32|0;a=a>>>0>d>>>0?a:d}else{a=2147483647}$a(k,a);d=F[j+64>>2]}F[j+64>>2]=d+1;a=F[j+60>>2]+(d>>>3&536870908)|0;e=F[a>>2];O=a,P=oi(d)&e,F[O>>2]=P;d=F[j+76>>2];if((d|0)!=F[j+80>>2]){F[d>>2]=q;F[j+76>>2]=d+4;break _}c=F[m>>2];a=d-c|0;o=a>>2;e=o+1|0;if(e>>>0>=1073741824){break b}h=a>>>1|0;h=a>>>0>=2147483644?1073741823:e>>>0>>0?h:e;if(h){if(h>>>0>=1073741824){break p}a=ka(h<<2)}else{a=0}e=a+(o<<2)|0;F[e>>2]=q;q=e+4|0;if((d|0)!=(c|0)){while(1){e=e-4|0;d=d-4|0;F[e>>2]=F[d>>2];if((d|0)!=(c|0)){continue}break}}F[j+80>>2]=a+(h<<2);F[j+76>>2]=q;F[j+72>>2]=e;if(!c){break _}ja(c)}if((b|0)!=(f|0)){continue}break}c=F[j+8>>2]}a=-1;if(((F[c+4>>2]-F[c>>2]>>2>>>0)/3|0)!=(s|0)){break r}a=F[c+28>>2]-F[c+24>>2]>>2;f=F[l+24>>2];h=F[l+28>>2];if((f|0)==(h|0)){break q}while(1){b=F[f>>2];k=F[c+24>>2];d=a-1|0;e=k+(d<<2)|0;if(F[e>>2]==-1){while(1){d=a-2|0;a=a-1|0;e=k+(d<<2)|0;if(F[e>>2]==-1){continue}break}}if(b>>>0<=d>>>0){F[l>>2]=c;e=F[e>>2];D[l+12|0]=1;F[l+8>>2]=e;F[l+4>>2]=e;if((e|0)!=-1){while(1){e=F[F[j+8>>2]>>2]+(e<<2)|0;if(F[e>>2]!=(d|0)){a=-1;break r}F[e>>2]=b;nc(l);e=F[l+8>>2];if((e|0)!=-1){continue}break}c=F[j+8>>2]}k=F[c+24>>2];e=k+(d<<2)|0;if((b|0)!=-1){F[k+(b<<2)>>2]=F[e>>2]}F[e>>2]=-1;e=1<>2];b=k+(b>>>3&536870908)|0;k=k+(d>>>3&536870908)|0;d=1<>2]&d){e=e|F[b>>2]}else{e=F[b>>2]&(e^-1)}F[b>>2]=e;F[k>>2]=F[k>>2]&(d^-1);a=a-1|0}f=f+4|0;if((h|0)!=(f|0)){continue}break}}f=F[l+24>>2]}if(f){ja(f)}b=F[l+48>>2];if(b){while(1){d=F[b>>2];ja(b);b=d;if(b){continue}break}}b=F[l+40>>2];F[l+40>>2]=0;if(b){ja(b)}b=F[l+64>>2];if(b){F[l+68>>2]=b;ja(b)}Z=l+96|0;break o}oa();v()}f=a;if((a|0)==-1){break n}a=K;b=F[a+16>>2];d=b+F[a>>2]|0;b=F[a+8>>2]-b|0;a=F[F[j+4>>2]+32>>2];E[a+38>>1]=H[a+38>>1];F[a>>2]=d;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=b;F[a+12>>2]=0;ca:{if(F[j+216>>2]==F[j+220>>2]){break ca}a=F[j+8>>2];if(F[a+4>>2]==F[a>>2]){break ca}b=0;while(1){if(Ad(j,b)){b=b+3|0;a=F[j+8>>2];if(b>>>0>2]-F[a>>2]>>2>>>0){continue}break ca}break}break n}if(G[j+308|0]){D[j+308|0]=0;d=F[j+292>>2];a=0;e=F[j+304>>2]+7|0;a=e>>>0<7?1:a;e=a<<29|e>>>3;b=e+F[j+288>>2]|0;a=(a>>>3|0)+d|0;F[j+288>>2]=b;F[j+292>>2]=b>>>0>>0?a+1|0:a}b=F[j+216>>2];if((b|0)!=F[j+220>>2]){a=0;while(1){e=L(a,144);Zc((e+b|0)+4|0,F[j+8>>2]);d=F[A>>2];c=d+e|0;b=F[c+132>>2];c=F[c+136>>2];if((b|0)!=(c|0)){while(1){Xc((e+F[A>>2]|0)+4|0,F[b>>2]);b=b+4|0;if((c|0)!=(b|0)){continue}break}d=F[A>>2]}if(!Yc((d+e|0)+4|0)){break n}a=a+1|0;b=F[j+216>>2];if(a>>>0<(F[j+220>>2]-b|0)/144>>>0){continue}break}}a=F[j+8>>2];Hb(j+184|0,F[a+28>>2]-F[a+24>>2]>>2);d=F[j+216>>2];if((d|0)!=F[j+220>>2]){b=0;while(1){a=L(b,144)+d|0;d=F[a+60>>2]-F[a+56>>2]>>2;c=a+104|0;a=F[j+8>>2];a=F[a+28>>2]-F[a+24>>2]>>2;Hb(c,(a|0)<(d|0)?d:a);b=b+1|0;d=F[j+216>>2];if(b>>>0<(F[j+220>>2]-d|0)/144>>>0){continue}break}}N=zd(j,f)}}Z=u- -64|0;return N|0}na();v()}function lh(a){a=a|0;var 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,w=0,x=0,y=0,z=0,A=0,B=0,C=0,J=0,K=0,M=0,N=0;t=Z+-64|0;Z=t;F[a+132>>2]=0;if(F[a+148>>2]){c=F[a+144>>2];if(c){while(1){b=F[c>>2];ja(c);c=b;if(b){continue}break}}c=0;F[a+144>>2]=0;b=F[a+140>>2];a:{if(!b){break a}if(b>>>0>=4){h=b&-4;while(1){e=c<<2;F[e+F[a+136>>2]>>2]=0;F[F[a+136>>2]+(e|4)>>2]=0;F[F[a+136>>2]+(e|8)>>2]=0;F[F[a+136>>2]+(e|12)>>2]=0;c=c+4|0;g=g+4|0;if((h|0)!=(g|0)){continue}break}}b=b&3;if(!b){break a}g=0;while(1){F[F[a+136>>2]+(c<<2)>>2]=0;c=c+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}F[a+148>>2]=0}b:{if(!Da(1,t+60|0,F[F[a+4>>2]+32>>2])){break b}F[a+156>>2]=F[t+60>>2];if(!Da(1,t+56|0,F[F[a+4>>2]+32>>2])){break b}e=F[t+56>>2];if(e>>>0>1431655765|I[a+156>>2]>L(e,3)>>>0){break b}c=F[F[a+4>>2]+32>>2];h=F[c+8>>2];m=F[c+12>>2];b=F[c+20>>2];g=F[c+16>>2];if((m|0)<=(b|0)&g>>>0>=h>>>0|(b|0)>(m|0)){break b}h=G[g+F[c>>2]|0];g=g+1|0;b=g?b:b+1|0;F[c+16>>2]=g;F[c+20>>2]=b;if(!Da(1,t+52|0,c)){break b}n=F[t+52>>2];if(n>>>0>e>>>0|e>>>0>n+((n>>>0)/3|0)>>>0){break b}if(!Da(1,t+48|0,F[F[a+4>>2]+32>>2])){break b}c=F[t+48>>2];if(c>>>0>n>>>0){break b}F[a+28>>2]=F[a+24>>2];g=Zb(ka(88));b=F[a+8>>2];F[a+8>>2]=g;if(b){Za(b);if(!F[a+8>>2]){break b}}F[a+164>>2]=F[a+160>>2];Ib(a+160|0,e);F[a+176>>2]=F[a+172>>2];Ib(a+172|0,e);F[a- -64>>2]=0;F[a+92>>2]=-1;F[a+84>>2]=-1;F[a+88>>2]=-1;F[a+40>>2]=F[a+36>>2];F[a+52>>2]=F[a+48>>2];F[a+76>>2]=F[a+72>>2];y=a+216|0;Dd(y);Cd(y,h);if(!_c(F[a+8>>2],e,c+F[a+156>>2]|0)){break b}b=F[a+156>>2];D[t+8|0]=1;Ea(a+120|0,b+c|0,t+8|0);if((Bd(a,F[F[a+4>>2]+32>>2])|0)==-1){break b}c=a+232|0;F[c+144>>2]=a;b=F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2];b=F[b>>2]+F[b+16>>2]|0;g=F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2];g=F[g+8>>2]-F[g+16>>2]|0;M=c,N=H[F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2]+38>>1],E[M+38>>1]=N;F[c>>2]=b;F[c+16>>2]=0;F[c+20>>2]=0;F[c+8>>2]=g;F[c+12>>2]=0;F[a+372>>2]=h;C=Ja(t+8|0);h=C;m=0;d=Z-16|0;Z=d;b=F[c+4>>2];F[c+40>>2]=F[c>>2];F[c+44>>2]=b;b=F[c+36>>2];F[c+72>>2]=F[c+32>>2];F[c+76>>2]=b;g=F[c+28>>2];b=c- -64|0;F[b>>2]=F[c+24>>2];F[b+4>>2]=g;b=F[c+20>>2];F[c+56>>2]=F[c+16>>2];F[c+60>>2]=b;b=F[c+12>>2];F[c+48>>2]=F[c+8>>2];F[c+52>>2]=b;c:{d:{if(hc(c+40|0,1,d+8|0)){b=F[c+44>>2];F[c>>2]=F[c+40>>2];F[c+4>>2]=b;b=F[c+76>>2];F[c+32>>2]=F[c+72>>2];F[c+36>>2]=b;b=F[c+68>>2];F[c+24>>2]=F[c+64>>2];F[c+28>>2]=b;g=F[c+60>>2];f=g;b=F[c+56>>2];F[c+16>>2]=b;F[c+20>>2]=g;e=F[c+52>>2];g=F[c+48>>2];F[c+8>>2]=g;F[c+12>>2]=e;k=F[d+12>>2];i=e-((b>>>0>g>>>0)+f|0)|0;e=g-b|0;g=F[d+8>>2];if((k|0)==(i|0)&e>>>0>=g>>>0|i>>>0>k>>>0){break d}}break c}e=f+k|0;b=b+g|0;e=b>>>0>>0?e+1|0:e;F[c+16>>2]=b;F[c+20>>2]=e;if(!Aa(c+80|0,c)){break c}if(!yd(c)){break c}b=F[c+4>>2];F[h>>2]=F[c>>2];F[h+4>>2]=b;b=F[c+36>>2];F[h+32>>2]=F[c+32>>2];F[h+36>>2]=b;b=F[c+28>>2];F[h+24>>2]=F[c+24>>2];F[h+28>>2]=b;b=F[c+20>>2];F[h+16>>2]=F[c+16>>2];F[h+20>>2]=b;b=F[c+12>>2];F[h+8>>2]=F[c+8>>2];F[h+12>>2]=b;m=1}Z=d+16|0;e:{if(!m){break e}b=0;c=0;g=0;m=0;j=Z-96|0;Z=j;F[j+72>>2]=0;F[j+64>>2]=0;F[j+68>>2]=0;F[j+48>>2]=0;F[j+52>>2]=0;F[j+40>>2]=0;F[j+44>>2]=0;F[j+56>>2]=1065353216;F[j+32>>2]=0;F[j+24>>2]=0;F[j+28>>2]=0;h=a;B=F[a+124>>2];f:{g:{h:{i:{j:{k:{l:{m:{if((n|0)<=0){break m}J=F[h+216>>2]!=F[h+220>>2];z=1;while(1){e=m;m=e+1|0;n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{if(!G[h+308|0]){break B}k=F[h+296>>2];d=F[h+304>>2];a=k+(d>>>3|0)|0;l=F[h+300>>2];if(a>>>0>=l>>>0){break B}f=G[a|0];a=d+1|0;F[h+304>>2]=a;p=f>>>(d&7)&1;if(!p){break B}i=0;f=a>>>3|0;r=k+f|0;C:{if(r>>>0>=l>>>0){d=a;a=0;break C}r=G[r|0];d=d+2|0;F[h+304>>2]=d;f=d>>>3|0;a=r>>>(a&7)&1}f=f+k|0;if(f>>>0>>0){f=G[f|0];F[h+304>>2]=d+1;i=f>>>(d&7)<<1&2}f=-1;i=p|(a|i)<<1;switch(i-1|0){case 6:break y;case 0:break z;case 2:case 4:break A;default:break l}}if((c|0)==(g|0)){f=-1;break l}d=-1;i=F[h+8>>2];z=F[i+24>>2];r=c-4|0;b=F[r>>2];a=-1;D:{if((b|0)==-1){break D}k=b+1|0;k=(k>>>0)%3|0?k:b-2|0;a=-1;if((k|0)==-1){break D}a=F[F[i>>2]+(k<<2)>>2]}f=F[z+(a<<2)>>2];if((f|0)!=-1){d=f+1|0;d=(d>>>0)%3|0?d:f-2|0}if((b|0)==(d|0)){f=-1;break l}if((b|0)!=-1){f=-1;if(F[F[i+12>>2]+(b<<2)>>2]!=-1){break l}}k=F[i+12>>2];if((d|0)!=-1){f=-1;if(F[k+(d<<2)>>2]!=-1){break l}}l=L(e,3);e=l+1|0;F[k+(b<<2)>>2]=e;s=e<<2;F[s+k>>2]=b;p=l+2|0;F[k+(d<<2)>>2]=p;u=p<<2;F[u+k>>2]=d;k=-1;e=-1;E:{if((b|0)==-1){break E}F:{if((b>>>0)%3|0){b=b-1|0;break F}b=b+2|0;e=-1;if((b|0)==-1){break E}}e=F[F[i>>2]+(b<<2)>>2]}b=e;G:{if((d|0)==-1){break G}e=d+1|0;e=(e>>>0)%3|0?e:d-2|0;if((e|0)==-1){break G}k=F[F[i>>2]+(e<<2)>>2]}f=-1;if((a|0)==(b|0)|(a|0)==(k|0)){break l}e=F[i>>2];F[e+(l<<2)>>2]=a;F[e+s>>2]=k;F[e+u>>2]=b;if((b|0)!=-1){F[z+(b<<2)>>2]=p}b=F[h+120>>2]+(a>>>3&536870908)|0;e=F[b>>2];M=b,N=oi(a)&e,F[M>>2]=N;F[r>>2]=l;b=g;break n}if((c|0)==(g|0)){break l}r=c-4|0;b=F[r>>2];a=F[h+8>>2];d=F[a+12>>2];if((b|0)!=-1&F[d+(b<<2)>>2]!=-1){break l}l=(i|0)==5;i=L(e,3);p=(l?2:1)+i|0;s=p<<2;F[s+d>>2]=b;F[d+(b<<2)>>2]=p;Ma(a+24|0,8324);d=F[h+8>>2];k=F[d+24>>2];if(F[d+28>>2]-k>>2>(B|0)){break l}d=F[d>>2];u=d+s|0;f=F[a+28>>2];a=F[a+24>>2];s=(f-a>>2)-1|0;F[u>>2]=s;if((a|0)!=(f|0)){F[k+(s<<2)>>2]=p}f=l?i:i+2|0;l=d+(i+l<<2)|0;H:{if((b|0)==-1){F[d+(f<<2)>>2]=-1;a=-1;break H}I:{J:{K:{if((b>>>0)%3|0){a=b-1|0;break K}a=b+2|0;if((a|0)==-1){break J}}a=F[d+(a<<2)>>2];F[d+(f<<2)>>2]=a;if((a|0)==-1){break I}F[k+(a<<2)>>2]=f;break I}F[d+(f<<2)>>2]=-1}f=b+1|0;b=(f>>>0)%3|0?f:b-2|0;a=-1;if((b|0)==-1){break H}a=F[d+(b<<2)>>2]}F[l>>2]=a;F[r>>2]=i;b=g;break t}if((b|0)==(c|0)){break l}a=c-4|0;k=F[a>>2];F[j+68>>2]=a;l=F[j+44>>2];L:{if(!l){c=a;break L}f=F[j+40>>2];p=ni(l)>>>0>1;d=e&l+2147483647;M:{if(!p){break M}d=e;if(d>>>0>>0){break M}d=(e>>>0)%(l>>>0)|0}i=d;d=F[f+(i<<2)>>2];if(!d){c=a;break L}d=F[d>>2];if(!d){c=a;break L}N:{if(!p){f=l-1|0;while(1){l=F[d+4>>2];O:{if((l|0)!=(e|0)){if((i|0)==(f&l)){break O}c=a;break L}if((e|0)==F[d+8>>2]){break N}}d=F[d>>2];if(d){continue}break}c=a;break L}while(1){f=F[d+4>>2];P:{if((f|0)!=(e|0)){if(f>>>0>=l>>>0){f=(f>>>0)%(l>>>0)|0}if((f|0)==(i|0)){break P}c=a;break L}if((e|0)==F[d+8>>2]){break N}}d=F[d>>2];if(d){continue}break}c=a;break L}if((a|0)!=(q|0)){F[a>>2]=F[d+12>>2];F[j+68>>2]=c;break L}a=q-b|0;g=a>>2;c=g+1|0;if(c>>>0>=1073741824){break x}f=a>>>1|0;f=a>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break j}a=ka(f<<2)}else{a=0}g=a+(g<<2)|0;F[g>>2]=F[d+12>>2];c=g+4|0;if((b|0)!=(q|0)){while(1){g=g-4|0;q=q-4|0;F[g>>2]=F[q>>2];if((b|0)!=(q|0)){continue}break}}q=a+(f<<2)|0;F[j+72>>2]=q;F[j+68>>2]=c;F[j+64>>2]=g;if(b){ja(b)}}if((c|0)==(g|0)){break p}s=c-4|0;b=F[s>>2];if((b|0)==(k|0)){break p}a=(b|0)==-1;f=F[h+8>>2];if(!a&F[F[f+12>>2]+(b<<2)>>2]!=-1){break p}l=F[f+12>>2];if((k|0)!=-1&F[l+(k<<2)>>2]!=-1){break p}p=L(e,3);r=p+2|0;F[l+(b<<2)>>2]=r;e=r<<2;F[e+l>>2]=b;d=p+1|0;F[l+(k<<2)>>2]=d;u=d<<2;F[u+l>>2]=k;if(a){break w}if((b>>>0)%3|0){d=b-1|0;break s}d=b+2|0;if((d|0)!=-1){break s}a=F[f>>2];d=-1;break r}i=F[h+8>>2];Ma(i+24|0,8324);d=F[h+8>>2];a=L(e,3);k=F[i+28>>2];l=F[i+24>>2];p=k-l|0;i=p>>2;r=i-1|0;F[F[d>>2]+(a<<2)>>2]=r;Ma(d+24|0,8324);s=a+1|0;F[F[d>>2]+(s<<2)>>2]=(F[d+28>>2]-F[d+24>>2]>>2)-1;d=F[h+8>>2];Ma(d+24|0,8324);u=a+2|0;F[F[d>>2]+(u<<2)>>2]=(F[d+28>>2]-F[d+24>>2]>>2)-1;A=F[h+8>>2];d=F[A+24>>2];if(F[A+28>>2]-d>>2>(B|0)){break l}Q:{R:{if((k|0)!=(l|0)){F[d+(r<<2)>>2]=a;f=0;if((p|0)==-4){break R}}F[d+(i<<2)>>2]=s;f=i+1|0;if((f|0)==-1){break Q}}F[d+(f<<2)>>2]=u}if((c|0)!=(q|0)){F[c>>2]=a;c=c+4|0;F[j+68>>2]=c;break t}g=c-b|0;i=g>>2;d=i+1|0;if(d>>>0>=1073741824){break v}f=g>>>1|0;d=g>>>0>=2147483644?1073741823:d>>>0>>0?f:d;if(d){if(d>>>0>=1073741824){break j}f=ka(d<<2)}else{f=0}g=f+(i<<2)|0;F[g>>2]=a;q=f+(d<<2)|0;a=g+4|0;if((b|0)!=(c|0)){while(1){g=g-4|0;c=c-4|0;F[g>>2]=F[c>>2];if((b|0)!=(c|0)){continue}break}}F[j+72>>2]=q;F[j+68>>2]=a;F[j+64>>2]=g;if(!b){break u}ja(b);break u}na();v()}d=-1;a=F[f>>2];F[a+(p<<2)>>2]=-1;i=-1;break q}na();v()}c=a;b=g}a=F[h+40>>2];if((a|0)==F[h+36>>2]){break n}d=a-12|0;i=F[d+4>>2];f=n+(e^-1)|0;if(i>>>0>f>>>0){break p}if((f|0)!=(i|0)){break n}i=G[a-4|0];e=F[d>>2];F[h+40>>2]=d;if((e|0)<0){break p}k=c-4|0;a=F[k>>2];F[j+20>>2]=n+(e^-1);e=j+20|0;F[j+88>>2]=e;Fb(j,j+40|0,e,j+88|0);d=F[j>>2];S:{if(i&1){e=-1;if((a|0)==-1){break S}e=a+1|0;e=(e>>>0)%3|0?e:a-2|0;break S}e=-1;if((a|0)==-1){break S}e=a-1|0;if((a>>>0)%3|0){break S}e=a+2|0}F[d+12>>2]=e;d=F[h+40>>2];if((d|0)==F[h+36>>2]){break n}while(1){a=d-12|0;e=F[a+4>>2];if(e>>>0>f>>>0){break p}if((f|0)!=(e|0)){break n}d=G[d-4|0];e=F[a>>2];F[h+40>>2]=a;if((e|0)<0){break p}a=F[k>>2];F[j+20>>2]=n+(e^-1);e=j+20|0;F[j+88>>2]=e;Fb(j,j+40|0,e,j+88|0);i=F[j>>2];T:{if(d&1){e=-1;if((a|0)==-1){break T}e=a+1|0;e=(e>>>0)%3|0?e:a-2|0;break T}e=-1;if((a|0)==-1){break T}e=a-1|0;if((a>>>0)%3|0){break T}e=a+2|0}F[i+12>>2]=e;d=F[h+40>>2];if((d|0)!=F[h+36>>2]){continue}break}break n}a=F[f>>2];d=F[a+(d<<2)>>2]}F[(p<<2)+a>>2]=d;A=b+1|0;b=(A>>>0)%3|0?A:b-2|0;i=-1;if((b|0)==-1){break q}i=F[(b<<2)+a>>2]}F[a+u>>2]=i;U:{if((k|0)==-1){F[a+e>>2]=-1;i=-1;e=-1;break U}V:{W:{X:{if((k>>>0)%3|0){b=k-1|0;break X}b=k+2|0;if((b|0)==-1){break W}}b=F[(b<<2)+a>>2];F[a+e>>2]=b;if((b|0)==-1){break V}F[F[f+24>>2]+(b<<2)>>2]=r;break V}F[a+e>>2]=-1}i=-1;b=k+1|0;b=(b>>>0)%3|0?b:k-2|0;e=-1;if((b|0)==-1){break U}i=F[(b<<2)+a>>2];e=b}b=F[f+24>>2];k=b+(i<<2)|0;if((d|0)!=-1){F[b+(d<<2)>>2]=F[k>>2]}b=e;while(1){if((b|0)==-1){break o}F[(b<<2)+a>>2]=d;r=b+1|0;b=(r>>>0)%3|0?r:b-2|0;f=-1;Y:{if((b|0)==-1){break Y}b=F[l+(b<<2)>>2];f=-1;if((b|0)==-1){break Y}f=b+1|0;f=(f>>>0)%3|0?f:b-2|0}b=f;if((e|0)!=(b|0)){continue}break}}f=-1;if(!z){break m}break l}F[k>>2]=-1;Z:{if(J){break Z}if((w|0)!=(x|0)){F[x>>2]=i;x=x+4|0;F[j+28>>2]=x;break Z}a=w-o|0;d=a>>2;b=d+1|0;if(b>>>0>=1073741824){break i}e=a>>>1|0;e=a>>>0>=2147483644?1073741823:b>>>0>>0?e:b;if(e){if(e>>>0>=1073741824){break j}a=ka(e<<2)}else{a=0}b=a+(d<<2)|0;F[b>>2]=i;x=b+4|0;if((o|0)!=(w|0)){while(1){b=b-4|0;w=w-4|0;F[b>>2]=F[w>>2];if((o|0)!=(w|0)){continue}break}}w=a+(e<<2)|0;F[j+32>>2]=w;F[j+28>>2]=x;F[j+24>>2]=b;if(o){ja(o)}o=b}F[s>>2]=p;b=g}z=(m|0)<(n|0);if((m|0)!=(n|0)){continue}break}m=n}f=-1;a=F[h+8>>2];if(F[a+28>>2]-F[a+24>>2]>>2>(B|0)){break l}if((c|0)!=(g|0)){l=h+72|0;e=h+60|0;w=h+312|0;while(1){c=c-4|0;i=F[c>>2];F[j+68>>2]=c;_:{if(wa(w)){q=F[h+8>>2];k=F[q>>2];if(((F[q+4>>2]-k>>2>>>0)/3|0)<=(m|0)){f=-1;break l}a=-1;f=-1;b=-1;x=F[q+24>>2];g=-1;$:{if((i|0)==-1){break $}n=i+1|0;n=(n>>>0)%3|0?n:i-2|0;g=-1;if((n|0)==-1){break $}g=F[k+(n<<2)>>2]}n=g;o=F[x+(n<<2)>>2];aa:{if((o|0)==-1){d=1;g=-1;break aa}d=1;p=o+1|0;o=(p>>>0)%3|0?p:o-2|0;g=-1;if((o|0)==-1){break aa}d=0;a=o;g=a+1|0;g=(g>>>0)%3|0?g:a-2|0;if((g|0)!=-1){g=F[k+(g<<2)>>2]}else{g=-1}}o=F[(g<<2)+x>>2];if((o|0)!=-1){b=o+1|0;b=(b>>>0)%3|0?b:o-2|0}if((a|0)==(i|0)|(b|0)==(i|0)|((i|0)!=-1&F[F[q+12>>2]+(i<<2)>>2]!=-1|(a|0)==(b|0))){break l}if(!d&F[F[q+12>>2]+(a<<2)>>2]!=-1){break l}d=-1;o=F[q+12>>2];q=-1;ba:{if((b|0)==-1){break ba}if(F[o+(b<<2)>>2]!=-1){break l}f=b+1|0;f=(f>>>0)%3|0?f:b-2|0;q=-1;if((f|0)==-1){break ba}q=F[k+(f<<2)>>2]}f=L(m,3);F[j>>2]=f;F[o+(f<<2)>>2]=i;F[o+(i<<2)>>2]=f;f=F[j>>2]+1|0;F[o+(f<<2)>>2]=a;F[o+(a<<2)>>2]=f;a=F[j>>2]+2|0;F[o+(a<<2)>>2]=b;F[o+(b<<2)>>2]=a;a=F[j>>2];F[k+(a<<2)>>2]=g;b=a+1|0;f=k+(b<<2)|0;F[f>>2]=q;o=a+2|0;i=k+(o<<2)|0;F[i>>2]=n;a=F[h+120>>2];g=b?g:-1;n=a+(g>>>3&536870908)|0;k=F[n>>2];M=n,N=oi(g)&k,F[M>>2]=N;d=(b|0)!=-1?F[f>>2]:d;b=a+(d>>>3&536870908)|0;g=F[b>>2];M=b,N=oi(d)&g,F[M>>2]=N;b=-1;b=(o|0)!=-1?F[i>>2]:b;a=a+(b>>>3&536870908)|0;g=F[a>>2];M=a,N=oi(b)&g,F[M>>2]=N;D[j+88|0]=1;wd(e,j+88|0);Ma(l,j);m=m+1|0;g=F[j+64>>2];break _}b=F[h+64>>2];a=F[h+68>>2];if((b|0)==a<<5){if((b+1|0)<0){break h}if(b>>>0<=1073741822){a=a<<6;b=(b&-32)+32|0;a=a>>>0>b>>>0?a:b}else{a=2147483647}$a(e,a);b=F[h+64>>2]}F[h+64>>2]=b+1;a=F[h+60>>2]+(b>>>3&536870908)|0;d=F[a>>2];M=a,N=oi(b)&d,F[M>>2]=N;b=F[h+76>>2];if((b|0)!=F[h+80>>2]){F[b>>2]=i;F[h+76>>2]=b+4;break _}f=F[l>>2];a=b-f|0;o=a>>2;d=o+1|0;if(d>>>0>=1073741824){break g}n=a>>>1|0;n=a>>>0>=2147483644?1073741823:d>>>0>>0?n:d;if(n){if(n>>>0>=1073741824){break j}a=ka(n<<2)}else{a=0}d=a+(o<<2)|0;F[d>>2]=i;o=d+4|0;if((b|0)!=(f|0)){while(1){d=d-4|0;b=b-4|0;F[d>>2]=F[b>>2];if((b|0)!=(f|0)){continue}break}}F[h+80>>2]=a+(n<<2);F[h+76>>2]=o;F[h+72>>2]=d;if(!f){break _}ja(f)}if((c|0)!=(g|0)){continue}break}a=F[h+8>>2]}f=-1;if(((F[a+4>>2]-F[a>>2]>>2>>>0)/3|0)!=(m|0)){break l}f=F[a+28>>2]-F[a+24>>2]>>2;c=F[j+24>>2];n=F[j+28>>2];if((c|0)==(n|0)){break k}while(1){g=F[c>>2];e=F[a+24>>2];b=f-1|0;d=e+(b<<2)|0;if(F[d>>2]==-1){while(1){b=f-2|0;f=f-1|0;d=e+(b<<2)|0;if(F[d>>2]==-1){continue}break}}if(b>>>0>=g>>>0){F[j>>2]=a;d=F[d>>2];D[j+12|0]=1;F[j+8>>2]=d;F[j+4>>2]=d;if((d|0)!=-1){while(1){a=F[F[h+8>>2]>>2]+(d<<2)|0;if(F[a>>2]!=(b|0)){f=-1;break l}F[a>>2]=g;nc(j);d=F[j+8>>2];if((d|0)!=-1){continue}break}a=F[h+8>>2]}m=F[a+24>>2];e=m+(b<<2)|0;if((g|0)!=-1){F[m+(g<<2)>>2]=F[e>>2]}F[e>>2]=-1;e=1<>2];g=m+(g>>>3&536870908)|0;d=1<>>3&536870908)|0;if(d&F[m>>2]){b=e|F[g>>2]}else{b=F[g>>2]&(e^-1)}F[g>>2]=b;F[m>>2]=F[m>>2]&(d^-1);f=f-1|0}c=c+4|0;if((n|0)!=(c|0)){continue}break}}c=F[j+24>>2]}if(c){ja(c)}a=F[j+48>>2];if(a){while(1){c=F[a>>2];ja(a);a=c;if(a){continue}break}}a=F[j+40>>2];F[j+40>>2]=0;if(a){ja(a)}a=F[j+64>>2];if(a){F[j+68>>2]=a;ja(a)}Z=j+96|0;a=f;break f}oa();v()}na();v()}na();v()}na();v()}b=a;if((a|0)==-1){break e}a=C;c=F[a+16>>2];g=c+F[a>>2]|0;c=F[a+8>>2]-c|0;a=F[F[h+4>>2]+32>>2];E[a+38>>1]=H[a+38>>1];F[a>>2]=g;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=c;F[a+12>>2]=0;ca:{if(F[h+216>>2]==F[h+220>>2]){break ca}a=F[h+8>>2];if(F[a+4>>2]==F[a>>2]){break ca}c=0;while(1){if(Ad(h,c)){c=c+3|0;a=F[h+8>>2];if(c>>>0>2]-F[a>>2]>>2>>>0){continue}break ca}break}break e}if(G[h+308|0]){D[h+308|0]=0;g=F[h+292>>2];a=0;e=F[h+304>>2]+7|0;a=e>>>0<7?1:a;c=a>>>3|0;m=a<<29|e>>>3;a=m+F[h+288>>2]|0;e=c+g|0;F[h+288>>2]=a;F[h+292>>2]=a>>>0>>0?e+1|0:e}c=F[h+216>>2];if((c|0)!=F[h+220>>2]){a=0;while(1){e=L(a,144);Zc((e+c|0)+4|0,F[h+8>>2]);g=F[y>>2];m=g+e|0;c=F[m+132>>2];m=F[m+136>>2];if((c|0)!=(m|0)){while(1){Xc((e+F[y>>2]|0)+4|0,F[c>>2]);c=c+4|0;if((m|0)!=(c|0)){continue}break}g=F[y>>2]}if(!Yc((g+e|0)+4|0)){break e}a=a+1|0;c=F[h+216>>2];if(a>>>0<(F[h+220>>2]-c|0)/144>>>0){continue}break}}a=F[h+8>>2];Hb(h+184|0,F[a+28>>2]-F[a+24>>2]>>2);g=F[h+216>>2];if((g|0)!=F[h+220>>2]){c=0;while(1){a=L(c,144)+g|0;g=F[a+60>>2]-F[a+56>>2]>>2;e=a+104|0;a=F[h+8>>2];a=F[a+28>>2]-F[a+24>>2]>>2;Hb(e,(a|0)<(g|0)?g:a);c=c+1|0;g=F[h+216>>2];if(c>>>0<(F[h+220>>2]-g|0)/144>>>0){continue}break}}K=zd(h,b)}}Z=t- -64|0;return K|0}function Cf(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0;B=c;c=0;m=Z-96|0;Z=m;l=m+16|0;ma(l,0,76);F[m+92>>2]=-1;F[m+8>>2]=0;F[m>>2]=0;F[m+4>>2]=0;r=Z-16|0;Z=r;F[l+68>>2]=0;F[l+72>>2]=0;F[l>>2]=b;s=Z-16|0;Z=s;u=b;a=F[b+20>>2];a:{if((F[b+24>>2]-a|0)<=0){break a}a=F[a>>2];if((a|0)==-1){break a}c=F[F[u+8>>2]+(a<<2)>>2]}b:{c:{d:{if(!c){a=0;break d}a=F[u+100>>2];e=F[u+96>>2];F[s+8>>2]=0;F[s>>2]=0;F[s+4>>2]=0;f=a-e|0;b=(f|0)/12|0;e:{if((a|0)==(e|0)){break e}if(b>>>0>=357913942){break c}d=ka(f);F[s>>2]=d;F[s+8>>2]=d+L(b,12);a=0;n=d;f=f-12|0;d=(f-((f>>>0)%12|0)|0)+12|0;f=ma(n,0,d);F[s+4>>2]=d+f;if(G[c+84|0]){c=b>>>0<=1?1:b;h=c&1;if(b>>>0>=2){g=c&-2;c=0;while(1){d=L(a,12);b=d+e|0;i=F[b+4>>2];j=F[b>>2];d=d+f|0;F[d+8>>2]=F[b+8>>2];F[d>>2]=j;F[d+4>>2]=i;d=L(a|1,12);b=d+e|0;i=F[b+4>>2];j=F[b>>2];d=d+f|0;F[d+8>>2]=F[b+8>>2];F[d>>2]=j;F[d+4>>2]=i;a=a+2|0;c=c+2|0;if((g|0)!=(c|0)){continue}break}}if(!h){break e}b=L(a,12);a=b+e|0;c=F[a+4>>2];e=F[a>>2];b=b+f|0;F[b+8>>2]=F[a+8>>2];F[b>>2]=e;F[b+4>>2]=c;break e}h=b>>>0<=1?1:b;a=F[c+68>>2];c=0;while(1){d=L(c,12);b=d+e|0;g=F[a+(F[b>>2]<<2)>>2];i=F[a+(F[b+4>>2]<<2)>>2];d=d+f|0;F[d+8>>2]=F[a+(F[b+8>>2]<<2)>>2];F[d+4>>2]=i;F[d>>2]=g;c=c+1|0;if((h|0)!=(c|0)){continue}break}}d=0;H=Z-16|0;Z=H;h=ka(88);Zb(h);C=Z-16|0;Z=C;F[h+80>>2]=0;F[h+84>>2]=0;a=F[h+76>>2];F[h+76>>2]=0;if(a){ja(a)}F[h+68>>2]=0;F[h+72>>2]=0;b=h- -64|0;a=F[b>>2];F[b>>2]=0;if(a){ja(a)}g=F[s+4>>2];b=F[s>>2];c=(g-b|0)/12|0;a=L(c,3);f=F[h>>2];e=F[h+4>>2]-f>>2;f:{if(a>>>0>e>>>0){nd(h,a-e|0);g=F[s+4>>2];b=F[s>>2];c=(g-b|0)/12|0;break f}if(a>>>0>=e>>>0){break f}F[h+4>>2]=f+(a<<2)}g:{if((b|0)==(g|0)){break g}e=c>>>0<=1?1:c;g=e&1;a=F[h>>2];if(c>>>0>=2){i=e&-2;c=0;while(1){e=L(d,12);j=e+a|0;f=b+e|0;F[j>>2]=F[f>>2];F[a+(e|4)>>2]=F[f+4>>2];F[j+8>>2]=F[f+8>>2];f=L(d|1,12);e=f+a|0;f=b+f|0;F[e>>2]=F[f>>2];F[e+4>>2]=F[f+4>>2];F[e+8>>2]=F[f+8>>2];d=d+2|0;c=c+2|0;if((i|0)!=(c|0)){continue}break}}if(!g){break g}c=L(d,12);a=c+a|0;b=b+c|0;F[a>>2]=F[b>>2];F[a+4>>2]=F[b+4>>2];F[a+8>>2]=F[b+8>>2]}F[C+12>>2]=-1;a=0;e=0;g=0;f=Z-32|0;Z=f;h:{i:{w=C+12|0;j:{if(!w){break j}c=F[h+4>>2];j=F[h>>2];d=c-j|0;i=d>>2;n=F[h+12>>2];b=F[h+16>>2]-n>>2;k:{if(i>>>0>b>>>0){ab(h+12|0,i-b|0,10228);c=F[h+4>>2];j=F[h>>2];d=c-j|0;i=d>>2;break k}if(b>>>0<=i>>>0){break k}F[h+16>>2]=n+(i<<2)}F[f+24>>2]=0;F[f+16>>2]=0;F[f+20>>2]=0;b=(c|0)==(j|0);if(!b){if((d|0)<0){break i}e=ka(d);F[f+20>>2]=e;F[f+16>>2]=e;F[f+24>>2]=(i<<2)+e}l:{m:{n:{o:{p:{if(d){while(1){i=F[(a<<2)+j>>2];b=F[f+20>>2]-e>>2;q:{if(i>>>0>>0){break q}F[f>>2]=0;d=i+1|0;if(d>>>0>b>>>0){Fa(f+16|0,d-b|0,f);j=F[h>>2];c=F[h+4>>2];e=F[f+16>>2];break q}if(b>>>0<=d>>>0){break q}F[f+20>>2]=(d<<2)+e}b=(i<<2)+e|0;F[b>>2]=F[b>>2]+1;a=a+1|0;d=c-j|0;i=d>>2;if(a>>>0>>0){continue}break}break p}d=0;if(!b){break o}break n}if((c|0)==(j|0)){d=0;break n}if(d>>>0>=2147483645){break m}}d=ka(d<<1);ma(d,255,i<<3)}F[f+8>>2]=0;F[f>>2]=0;F[f+4>>2]=0;b=F[f+20>>2];a=b-e|0;t=a>>2;r:{s:{if((b|0)==(e|0)){break s}if((a|0)<0){break r}q=ka(a);F[f>>2]=q;F[f+8>>2]=(t<<2)+q;b=ma(q,0,a);F[f+4>>2]=b+a;c=t>>>0<=1?1:t;n=c&3;a=0;if(c-1>>>0>=3){o=c&-4;while(1){c=g<<2;F[c+b>>2]=a;x=c|4;a=F[c+e>>2]+a|0;F[x+b>>2]=a;y=c|8;a=a+F[e+x>>2]|0;F[y+b>>2]=a;c=c|12;a=a+F[e+y>>2]|0;F[c+b>>2]=a;a=a+F[c+e>>2]|0;g=g+4|0;p=p+4|0;if((o|0)!=(p|0)){continue}break}}if(!n){break s}while(1){c=g<<2;F[c+b>>2]=a;g=g+1|0;a=F[c+e>>2]+a|0;k=k+1|0;if((n|0)!=(k|0)){continue}break}}if(!i){break l}x=F[h+40>>2];y=F[h+12>>2];n=0;while(1){I=n<<2;a=I+j|0;k=-1;c=n+1|0;b=(c>>>0)%3|0?c:n-2|0;if((b|0)!=-1){k=F[(b<<2)+j>>2]}b=F[a>>2];t:{u:{if(!((n>>>0)%3|0)){p=-1;a=n+2|0;if((a|0)!=-1){p=F[(a<<2)+j>>2]}if(!((b|0)==(k|0)|(b|0)==(p|0))&(k|0)!=(p|0)){break u}x=x+1|0;F[h+40>>2]=x;c=n+3|0;break t}p=F[a-4>>2]}a=p<<2;A=F[a+e>>2];v:{w:{if((A|0)<=0){break w}a=F[a+q>>2];g=0;while(1){o=(a<<3)+d|0;z=F[o>>2];if((z|0)==-1){break w}x:{if((k|0)!=(z|0)){break x}o=F[o+4>>2];if((o|0)!=-1){z=F[(o<<2)+j>>2]}else{z=-1}if((z|0)==(b|0)){break x}while(1){y:{b=a;g=g+1|0;if((A|0)<=(g|0)){break y}a=b+1|0;J=(a<<3)+d|0;z=F[J>>2];K=(b<<3)+d|0;F[K+4>>2]=F[J+4>>2];F[K>>2]=z;if((z|0)!=-1){continue}}break}F[(b<<3)+d>>2]=-1;if((o|0)==-1){break w}F[y+I>>2]=o;F[y+(o<<2)>>2]=n;break v}a=a+1|0;g=g+1|0;if((A|0)!=(g|0)){continue}break}}a=k<<2;k=F[a+e>>2];if((k|0)<=0){break v}a=F[a+q>>2];g=0;while(1){b=(a<<3)+d|0;if(F[b>>2]==-1){F[b>>2]=p;F[b+4>>2]=n;break v}a=a+1|0;g=g+1|0;if((k|0)!=(g|0)){continue}break}}}n=c;if(n>>>0>>0){continue}break}break l}break i}na();v()}F[w>>2]=t;if(q){ja(q)}if(d){ja(d)}a=F[f+16>>2];if(!a){break j}F[f+20>>2]=a;ja(a)}Z=f+32|0;x=(w|0)!=0;if(x){k=Z-32|0;Z=k;a=F[h>>2];g=F[h+4>>2];F[k+24>>2]=0;F[k+16>>2]=0;F[k+20>>2]=0;if((a|0)==(g|0)){c=g}else{a=g-a|0;if((a|0)<0){break i}a=a>>2;b=(a-1>>>5|0)+1|0;c=ka(b<<2);F[k+24>>2]=b;F[k+20>>2]=0;F[k+16>>2]=c;Yb(k+16|0,a);g=F[h>>2];c=F[h+4>>2]}F[k+8>>2]=0;F[k>>2]=0;while(1){z:{o=0;i=0;if((c|0)==(g|0)){break z}while(1){b=F[k+16>>2];A:{if(F[b+(i>>>3&536870908)>>2]>>>i&1){break A}c=F[k>>2];F[k+4>>2]=c;e=F[h+12>>2];a=i;while(1){B:{f=a+1|0;d=a;a=(f>>>0)%3|0?f:a-2|0;if((a|0)==-1){break B}a=F[e+(a<<2)>>2];if((a|0)==-1){break B}f=a+1|0;a=(f>>>0)%3|0?f:a-2|0;if((i|0)==(a|0)|(a|0)==-1){break B}if(!(F[b+(a>>>3&536870908)>>2]>>>a&1)){continue}}break}j=d;C:{D:{E:{while(1){a=F[k+16>>2]+(j>>>3&536870908)|0;F[a>>2]=F[a>>2]|1<>>0)%3|0?a:j-2|0;g=F[h>>2];y=(j>>>0)%3|0;b=(y?-1:2)+j|0;n=F[k>>2];A=(n|0)==(c|0);F:{if(A){break F}w=F[(f<<2)+g>>2];q=F[h+12>>2];a=n;if((b|0)!=-1){e=q+(b<<2)|0;while(1){G:{if((w|0)!=F[a>>2]){break G}p=F[a+4>>2];t=F[e>>2];if((p|0)==(t|0)){break G}e=b;c=-1;a=-1;if((p|0)==-1){break C}break D}a=a+8|0;if((c|0)!=(a|0)){continue}break}break F}while(1){if((w|0)==F[a>>2]){t=-1;e=-1;p=F[a+4>>2];if((p|0)!=-1){break D}}a=a+8|0;if((c|0)!=(a|0)){continue}break}}b=F[(b<<2)+g>>2];H:{if(F[k+8>>2]!=(c|0)){F[c>>2]=b;F[c+4>>2]=f;c=c+8|0;F[k+4>>2]=c;break H}a=c-n|0;p=a>>3;e=p+1|0;if(e>>>0>=536870912){break i}g=a>>>2|0;g=a>>>0>=2147483640?536870911:e>>>0>>0?g:e;if(g){if(g>>>0>=536870912){break E}e=ka(g<<3)}else{e=0}a=e+(p<<3)|0;F[a>>2]=b;F[a+4>>2]=f;b=a+8|0;if(!A){while(1){c=c-8|0;f=F[c+4>>2];a=a-8|0;F[a>>2]=F[c>>2];F[a+4>>2]=f;if((c|0)!=(n|0)){continue}break}c=F[k>>2]}F[k+8>>2]=e+(g<<3);F[k+4>>2]=b;F[k>>2]=a;if(c){ja(c)}c=b}I:{J:{if(y){a=j-1|0;break J}a=j+2|0;if((a|0)==-1){break I}}a=F[F[h+12>>2]+(a<<2)>>2];if((a|0)==-1){break I}j=a+((a>>>0)%3|0?-1:2)|0;if((d|0)==(j|0)){break I}if((j|0)!=-1){continue}}break}g=F[h>>2];break A}oa();v()}c=F[q+(p<<2)>>2];b=e;a=p}if((t|0)!=-1){F[q+(t<<2)>>2]=-1}if((c|0)!=-1){F[q+(c<<2)>>2]=-1}F[q+(b<<2)>>2]=-1;F[q+(a<<2)>>2]=-1;o=1}i=i+1|0;c=F[h+4>>2];if(i>>>0>2>>>0){continue}break}if(o){continue}}break}a=F[k>>2];if(a){ja(a)}a=F[k+16>>2];if(a){ja(a)}Z=k+32|0;n=0;g=Z-32|0;Z=g;e=F[C+12>>2];F[h+36>>2]=e;p=h+24|0;b=F[h+24>>2];a=F[h+28>>2]-b>>2;K:{L:{if(a>>>0>>0){ab(p,e-a|0,10228);F[g+24>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;break L}if(a>>>0>e>>>0){F[h+28>>2]=b+(e<<2)}F[g+24>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;if(!e){break K}}if((e|0)<0){break i}a=(e-1>>>5|0)+1|0;b=ka(a<<2);F[g+24>>2]=a;F[g+20>>2]=0;F[g+16>>2]=b;Yb(g+16|0,e)}a=F[h>>2];b=F[h+4>>2];F[g+8>>2]=0;F[g>>2]=0;F[g+4>>2]=0;M:{if((a|0)==(b|0)){a=b}else{a=b-a|0;if((a|0)<0){break i}a=a>>2;b=(a-1>>>5|0)+1|0;c=ka(b<<2);F[g+8>>2]=b;F[g+4>>2]=0;F[g>>2]=c;Yb(g,a);b=F[h>>2];a=F[h+4>>2]}if(a-b>>>0<12){break M}N:{while(1){q=L(n,3);d=(q<<2)+b|0;f=F[d>>2];c=-1;i=q+1|0;if((i|0)!=-1){c=F[(i<<2)+b>>2]}O:{if((c|0)==(f|0)){break O}i=f;f=F[d+8>>2];if((i|0)==(f|0)|(c|0)==(f|0)){break O}k=0;i=F[g>>2];while(1){f=k+q|0;if(!(F[(f>>>3&536870908)+i>>2]>>>f&1)){a=F[(f<<2)+b>>2];c=1<>2];b=a>>>5|0;i=F[d+(b<<2)>>2];t=c&i;if(t){c=F[h+28>>2];P:{if((c|0)!=F[h+32>>2]){F[c>>2]=-1;F[h+28>>2]=c+4;break P}i=F[p>>2];b=c-i|0;o=b>>2;d=o+1|0;if(d>>>0>=1073741824){break i}j=b>>>1|0;j=b>>>0>=2147483644?1073741823:d>>>0>>0?j:d;if(j){if(j>>>0>=1073741824){break N}b=ka(j<<2)}else{b=0}d=b+(o<<2)|0;F[d>>2]=-1;o=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;F[d>>2]=F[c>>2];if((c|0)!=(i|0)){continue}break}}F[h+32>>2]=b+(j<<2);F[h+28>>2]=o;F[h+24>>2]=d;if(!i){break P}ja(i)}c=F[h+52>>2];Q:{if((c|0)!=F[h+56>>2]){F[c>>2]=a;F[h+52>>2]=c+4;break Q}i=F[h+48>>2];b=c-i|0;o=b>>2;d=o+1|0;if(d>>>0>=1073741824){break i}j=b>>>1|0;j=b>>>0>=2147483644?1073741823:d>>>0>>0?j:d;if(j){if(j>>>0>=1073741824){break N}b=ka(j<<2)}else{b=0}d=b+(o<<2)|0;F[d>>2]=a;a=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;F[d>>2]=F[c>>2];if((c|0)!=(i|0)){continue}break}}F[h+56>>2]=b+(j<<2);F[h+52>>2]=a;F[h+48>>2]=d;if(!i){break Q}ja(i)}c=F[g+20>>2];a=F[g+24>>2];if((c|0)==a<<5){if((c+1|0)<0){break i}b=g+16|0;if(c>>>0<=1073741822){a=a<<6;c=(c&-32)+32|0;a=a>>>0>c>>>0?a:c}else{a=2147483647}$a(b,a);c=F[g+20>>2]}F[g+20>>2]=c+1;d=F[g+16>>2];a=d+(c>>>3&536870908)|0;b=F[a>>2];N=a,O=oi(c)&b,F[N>>2]=O;c=1<>>5|0;i=F[(b<<2)+d>>2];a=e;e=a+1|0}F[(b<<2)+d>>2]=c|i;o=F[h+24>>2]+(a<<2)|0;j=F[h+12>>2];b=F[h>>2];i=F[g>>2];c=f;R:{S:{T:{while(1){if((c|0)==-1){break T}d=(c>>>3&536870908)+i|0;F[d>>2]=F[d>>2]|1<>2]=c;if(t){F[(c<<2)+b>>2]=a}w=c+1|0;c=(w>>>0)%3|0?w:c-2|0;d=-1;U:{if((c|0)==-1){break U}c=F[j+(c<<2)>>2];d=-1;if((c|0)==-1){break U}d=c+1|0;d=(d>>>0)%3|0?d:c-2|0}c=d;if((f|0)!=(c|0)){continue}break}if((f|0)!=-1){break R}c=1;break S}if((f>>>0)%3|0){c=f-1|0;break S}c=f+2|0;if((c|0)==-1){break R}}c=F[j+(c<<2)>>2];if((c|0)==-1){break R}V:{if((c>>>0)%3|0){c=c-1|0;break V}c=c+2|0;if((c|0)==-1){break R}}f=F[h+12>>2];b=F[h>>2];while(1){d=(c>>>3&536870908)+i|0;F[d>>2]=F[d>>2]|1<>2]=a}W:{if((c>>>0)%3|0){c=c-1|0;break W}c=c+2|0;if((c|0)==-1){break R}}c=F[f+(c<<2)>>2];if((c|0)==-1){break R}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)!=-1){continue}break}}}k=k+1|0;if((k|0)!=3){continue}break}b=F[h>>2];a=F[h+4>>2]}n=n+1|0;if(n>>>0<(a-b>>2>>>0)/3>>>0){continue}break}break M}oa();v()}c=0;F[h+44>>2]=0;a=F[g+16>>2];b=F[g+20>>2];if(b){e=b&31;b=(b>>>3&536870908)+a|0;d=a;i=0;while(1){if(!(F[d>>2]>>>c&1)){i=i+1|0;F[h+44>>2]=i}f=(c|0)==31;c=f?0:c+1|0;d=(f<<2)+d|0;if((b|0)!=(d|0)|(c|0)!=(e|0)){continue}break}}b=F[g>>2];if(b){ja(b);a=F[g+16>>2]}if(a){ja(a)}Z=g+32|0}Z=C+16|0;if(!x){F[H+8>>2]=0;Za(h);h=0}Z=H+16|0;a=h;break h}na();v()}b=F[s>>2];if(!b){break d}F[s+4>>2]=b;ja(b)}Z=s+16|0;break b}na();v()}c=F[l+4>>2];b=a;F[l+4>>2]=a;if(c){Za(c);b=F[l+4>>2]}X:{if(!b){break X}a=F[u+100>>2];c=F[u+96>>2];D[r+12|0]=0;Ea(l+56|0,(a-c|0)/12|0,r+12|0);a=F[u+100>>2];c=F[u+96>>2];if((a|0)==(c|0)){break X}while(1){if(!(F[F[l+56>>2]+(E>>>3&536870908)>>2]>>>E&1)){a=L(E,3);Vb(l,0,a);c=F[l+8>>2];e=F[l+12>>2];Vb(l,1,a+1|0);f=F[l+20>>2];d=F[l+24>>2];Vb(l,2,a+2|0);n=(c|0)==(e|0)?-1:0;a=d-f>>2;c=e-c>>2;e=a>>>0>c>>>0;c=F[l+36>>2]-F[l+32>>2]>>2>>>0>(e?a:c)>>>0?2:e?1:n;Y:{if(F[l+68>>2]<=0){break Y}F[r+12>>2]=F[l+76>>2];F[r+8>>2]=m;Qa(r+8|0,r+12|0);a=F[((c<<2)+l|0)+44>>2];if((a|0)<0){a=-1}else{e=(a>>>0)/3|0;a=F[(F[F[l>>2]+96>>2]+L(e,12)|0)+(a-L(e,3)<<2)>>2]}F[r+12>>2]=a;F[r+8>>2]=m;Qa(r+8|0,r+12|0);e=F[l+72>>2];F[l+72>>2]=e+2;if(!(e&1)){break Y}F[r+12>>2]=a;F[r+8>>2]=m;Qa(r+8|0,r+12|0);F[l+72>>2]=F[l+72>>2]+1}d=0;e=Z-16|0;Z=e;F[l+68>>2]=F[l+68>>2]+1;a=L(c,12)+l|0;a=F[a+12>>2]-F[a+8>>2]|0;if((a|0)>0){a=a>>>2|0;h=a>>>0<=1?1:a;c=F[((c<<2)+l|0)+44>>2];while(1){a=c;f=(a>>>0)/3|0;c=(a|0)==-1;g=c?-1:f;i=F[l+56>>2]+(g>>>3&536870908)|0;F[i>>2]=F[i>>2]|1<>2]=F[l+72>>2]+1;Z:{_:{$:{aa:{ba:{if(!d){ca:{if((a|0)>=0){F[e+12>>2]=F[(F[F[l>>2]+96>>2]+L(f,12)|0)+((a>>>0)%3<<2)>>2];F[e+8>>2]=m;Qa(e+8|0,e+12|0);break ca}F[e+12>>2]=-1;F[e+8>>2]=m;Qa(e+8|0,e+12|0);if(c){break ba}}c=-1;f=a+1|0;f=(f>>>0)%3|0?f:a-2|0;if((f|0)>=0){g=(f>>>0)/3|0;f=F[(F[F[l>>2]+96>>2]+L(g,12)|0)+(f-L(g,3)<<2)>>2]}else{f=-1}F[e+12>>2]=f;F[e+8>>2]=m;Qa(e+8|0,e+12|0);f=((a>>>0)%3|0?-1:2)+a|0;if((f|0)<0){break aa}c=(f>>>0)/3|0;c=F[(F[F[l>>2]+96>>2]+L(c,12)|0)+(f-L(c,3)<<2)>>2];break aa}c=(a|0)<0?-1:F[(F[F[l>>2]+96>>2]+L(f,12)|0)+((a>>>0)%3<<2)>>2];F[l+76>>2]=c;F[e+12>>2]=c;F[e+8>>2]=m;Qa(e+8|0,e+12|0);if(d&1){c=-1;if((a|0)==-1){break Z}if((L(f,3)|0)!=(a|0)){a=a-1|0;break _}a=a+2|0;break $}c=-1;if((a|0)==-1){break Z}c=a+1|0;a=(c>>>0)%3|0?c:a-2|0;break $}c=-1;F[e+12>>2]=-1;F[e+8>>2]=m;Qa(e+8|0,e+12|0)}F[l+76>>2]=c;F[e+12>>2]=c;F[e+8>>2]=m;Qa(e+8|0,e+12|0)}c=-1;if((a|0)==-1){break Z}}c=F[F[F[l+4>>2]+12>>2]+(a<<2)>>2]}d=d+1|0;if((h|0)!=(d|0)){continue}break}}Z=e+16|0;c=F[u+96>>2];a=F[u+100>>2]}E=E+1|0;if(E>>>0<(a-c|0)/12>>>0){continue}break}}Z=r+16|0;da:{if(b){a=F[B>>2];if(a){F[B+4>>2]=a;ja(a)}F[B>>2]=F[m>>2];F[B+4>>2]=F[m+4>>2];F[B+8>>2]=F[m+8>>2];M=F[m+84>>2];break da}a=F[m>>2];if(!a){break da}F[m+4>>2]=a;ja(a)}a=F[m+72>>2];if(a){ja(a)}a=F[m+48>>2];if(a){F[m+52>>2]=a;ja(a)}a=F[m+36>>2];if(a){F[m+40>>2]=a;ja(a)}a=F[m+24>>2];if(a){F[m+28>>2]=a;ja(a)}a=F[m+20>>2];F[m+20>>2]=0;if(a){Za(a)}Z=m+96|0;return M|0}function sf(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=b;a=0;b=0;a:{b:{switch(d-1|0){case 0:j=F[i+80>>2];h=G[c+24|0];c:{if((L(j,h)|0)!=(e|0)){break c}d=F[c+28>>2]!=1;b=G[c+84|0];if(!(d|!b)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);b=1;break c}if(h){a=ka(h);ma(a,0,h)}d:{if(!j){b=1;break d}if(!d){if(h){d=0;e=0;while(1){i=d+f|0;k=F[F[c>>2]>>2];m=F[c+48>>2];g=F[c+40>>2];b=ki(g,F[c+44>>2],G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],0);n=b;b=b+m|0;la(i,la(a,b+k|0,g),h);d=d+h|0;b=1;e=e+1|0;if((j|0)!=(e|0)){continue}break}break d}if(b){b=1;h=F[c>>2];e=F[c+48>>2];f=F[c+40>>2];i=F[c+44>>2];if((j|0)!=1){g=j&-2;c=0;d=0;while(1){k=F[h>>2];m=ki(f,i,c,0)+e|0;k=la(a,k+m|0,f);m=F[h>>2];n=ki(f,i,c|1,0)+e|0;la(k,m+n|0,f);c=c+2|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}g=c}if(!(j&1)){break d}c=F[h>>2];d=ki(g,0,f,i)+e|0;la(a,c+d|0,f);break d}b=1;h=F[c>>2];e=F[c+48>>2];g=F[c+68>>2];f=F[c+40>>2];i=F[c+44>>2];c=0;if((j|0)!=1){k=j&-2;d=0;while(1){m=F[h>>2];n=c<<2;l=ki(f,i,F[n+g>>2],0)+e|0;m=la(a,m+l|0,f);l=F[h>>2];n=ki(f,i,F[g+(n|4)>>2],0)+e|0;la(m,l+n|0,f);c=c+2|0;d=d+2|0;if((k|0)!=(d|0)){continue}break}}if(!(j&1)){break d}d=F[h>>2];c=ki(f,i,F[g+(c<<2)>>2],0)+e|0;la(a,c+d|0,f);break d}b=0;if(!h){d=0;while(1){if(!Cb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],a)){break d}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break d}d=0;e=0;while(1){if(!Cb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break d}la(d+f|0,a,h);d=d+h|0;e=e+1|0;b=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}}if(!a){break c}ja(a)}break a;case 2:n=G[c+24|0];l=n<<1;j=F[i+80>>2];e:{if((L(l,j)|0)!=(e|0)){break e}i=F[c+28>>2]!=3;d=G[c+84|0];if(!(i|!d)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);a=1;break e}f:{if(!n){e=0;break f}e=ka(l);ma(e,0,l)}g:{if(!j){a=1;break g}if(!i){o=F[c+68>>2];k=F[c>>2];b=F[c+48>>2];i=F[c+40>>2];m=F[c+44>>2];if(n){if(!d){c=0;d=0;while(1){a=1;g=F[k>>2];p=ki(i,m,F[o+(d<<2)>>2],0)+b|0;la((c<<1)+f|0,la(e,g+p|0,i),l);c=c+n|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break g}c=0;while(1){a=1;o=F[k>>2];p=ki(g,h,i,m)+b|0;la((c<<1)+f|0,la(e,o+p|0,i),l);c=c+n|0;d=h;g=g+1|0;d=g?d:d+1|0;h=d;if((j|0)!=(g|0)|d){continue}break}break g}if(!d){a=1;c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=F[k>>2];g=c<<2;n=ki(i,m,F[g+o>>2],0)+b|0;h=la(e,h+n|0,i);n=F[k>>2];g=ki(i,m,F[o+(g|4)>>2],0)+b|0;la(h,g+n|0,i);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break g}d=F[k>>2];b=ki(i,m,F[o+(c<<2)>>2],0)+b|0;la(e,b+d|0,i);break g}n=j&1;a=1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){d=F[k>>2];l=ki(g,h,i,m)+b|0;d=la(e,d+l|0,i);l=F[k>>2];o=ki(i,m,g|1,h)+b|0;la(d,l+o|0,i);g=g+2|0;h=g>>>0<2?h+1|0:h;f=f+2|0;d=f>>>0<2?c+1|0:c;c=d;if((f|0)!=(j|0)|c){continue}break}}if(!n){break g}c=F[k>>2];b=ki(g,h,i,m)+b|0;la(e,b+c|0,i);break g}if(!n){d=0;while(1){if(!Ab(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break g}d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break g}d=0;while(1){if(!Ab(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break g}la((b<<1)+f|0,e,l);b=b+n|0;d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break e}ja(e)}b=a;break a;case 4:l=G[c+24|0];o=l<<2;j=F[i+80>>2];h:{if((L(o,j)|0)!=(e|0)){break h}i=F[c+28>>2]!=5;d=G[c+84|0];if(!(i|!d)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);b=1;break h}i:{if(!l){e=0;break i}e=ka(o);ma(e,0,o)}b=1;j:{if(!j){break j}if(!i){a=F[c+68>>2];m=F[c>>2];i=F[c+48>>2];k=F[c+40>>2];n=F[c+44>>2];if(l){if(!d){c=0;d=0;while(1){g=F[m>>2];p=ki(k,n,F[a+(d<<2)>>2],0)+i|0;la((c<<2)+f|0,la(e,g+p|0,k),o);c=c+l|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break j}c=0;while(1){d=F[m>>2];p=ki(g,h,k,n)+i|0;la((c<<2)+f|0,la(e,d+p|0,k),o);c=c+l|0;g=g+1|0;a=g?h:h+1|0;h=a;if((j|0)!=(g|0)|h){continue}break}break j}if(!d){c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=F[m>>2];g=c<<2;l=ki(k,n,F[g+a>>2],0)+i|0;h=la(e,h+l|0,k);l=F[m>>2];g=ki(k,n,F[a+(g|4)>>2],0)+i|0;la(h,g+l|0,k);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break j}d=F[m>>2];a=ki(k,n,F[a+(c<<2)>>2],0)+i|0;la(e,a+d|0,k);break j}l=j&1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){a=F[m>>2];d=ki(g,h,k,n)+i|0;a=la(e,a+d|0,k);d=F[m>>2];o=ki(k,n,g|1,h)+i|0;la(a,d+o|0,k);d=h;g=g+2|0;h=g>>>0<2?d+1|0:d;f=f+2|0;a=f>>>0<2?c+1|0:c;c=a;if((f|0)!=(j|0)|c){continue}break}}if(!l){break j}a=F[m>>2];c=ki(g,h,k,n)+i|0;la(e,a+c|0,k);break j}b=0;if(!l){d=0;while(1){if(!yb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break j}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break j}d=0;while(1){if(!yb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break j}la((a<<2)+f|0,e,o);a=a+l|0;d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break h}ja(e)}break a;case 1:j=F[i+80>>2];h=G[c+24|0];k:{if((L(j,h)|0)!=(e|0)){break k}d=F[c+28>>2]!=2;b=G[c+84|0];if(!(d|!b)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);b=1;break k}if(h){a=ka(h);ma(a,0,h)}l:{if(!j){b=1;break l}if(!d){if(h){d=0;e=0;while(1){i=d+f|0;k=F[F[c>>2]>>2];m=F[c+48>>2];g=F[c+40>>2];b=ki(g,F[c+44>>2],G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],0);n=b;b=b+m|0;la(i,la(a,b+k|0,g),h);d=d+h|0;b=1;e=e+1|0;if((j|0)!=(e|0)){continue}break}break l}if(b){b=1;h=F[c>>2];e=F[c+48>>2];f=F[c+40>>2];i=F[c+44>>2];if((j|0)!=1){g=j&-2;c=0;d=0;while(1){k=F[h>>2];m=ki(f,i,c,0)+e|0;k=la(a,k+m|0,f);m=F[h>>2];n=ki(f,i,c|1,0)+e|0;la(k,m+n|0,f);c=c+2|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}g=c}if(!(j&1)){break l}c=F[h>>2];d=ki(g,0,f,i)+e|0;la(a,c+d|0,f);break l}b=1;h=F[c>>2];e=F[c+48>>2];g=F[c+68>>2];f=F[c+40>>2];i=F[c+44>>2];c=0;if((j|0)!=1){k=j&-2;d=0;while(1){m=F[h>>2];n=c<<2;l=ki(f,i,F[n+g>>2],0)+e|0;m=la(a,m+l|0,f);l=F[h>>2];n=ki(f,i,F[g+(n|4)>>2],0)+e|0;la(m,l+n|0,f);c=c+2|0;d=d+2|0;if((k|0)!=(d|0)){continue}break}}if(!(j&1)){break l}d=F[h>>2];c=ki(f,i,F[g+(c<<2)>>2],0)+e|0;la(a,c+d|0,f);break l}b=0;if(!h){d=0;while(1){if(!Bb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],a)){break l}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break l}d=0;e=0;while(1){if(!Bb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break l}la(d+f|0,a,h);d=d+h|0;e=e+1|0;b=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}}if(!a){break k}ja(a)}break a;case 3:n=G[c+24|0];l=n<<1;j=F[i+80>>2];m:{if((L(l,j)|0)!=(e|0)){break m}i=F[c+28>>2]!=4;d=G[c+84|0];if(!(i|!d)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);a=1;break m}n:{if(!n){e=0;break n}e=ka(l);ma(e,0,l)}o:{if(!j){a=1;break o}if(!i){o=F[c+68>>2];k=F[c>>2];b=F[c+48>>2];i=F[c+40>>2];m=F[c+44>>2];if(n){if(!d){c=0;d=0;while(1){a=1;g=F[k>>2];p=ki(i,m,F[o+(d<<2)>>2],0)+b|0;la((c<<1)+f|0,la(e,g+p|0,i),l);c=c+n|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break o}c=0;while(1){a=1;o=F[k>>2];p=ki(g,h,i,m)+b|0;la((c<<1)+f|0,la(e,o+p|0,i),l);c=c+n|0;d=h;g=g+1|0;d=g?d:d+1|0;h=d;if((j|0)!=(g|0)|d){continue}break}break o}if(!d){a=1;c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=F[k>>2];g=c<<2;n=ki(i,m,F[g+o>>2],0)+b|0;h=la(e,h+n|0,i);n=F[k>>2];g=ki(i,m,F[o+(g|4)>>2],0)+b|0;la(h,g+n|0,i);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break o}d=F[k>>2];b=ki(i,m,F[o+(c<<2)>>2],0)+b|0;la(e,b+d|0,i);break o}n=j&1;a=1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){d=F[k>>2];l=ki(g,h,i,m)+b|0;d=la(e,d+l|0,i);l=F[k>>2];o=ki(i,m,g|1,h)+b|0;la(d,l+o|0,i);g=g+2|0;h=g>>>0<2?h+1|0:h;f=f+2|0;d=f>>>0<2?c+1|0:c;c=d;if((f|0)!=(j|0)|c){continue}break}}if(!n){break o}c=F[k>>2];b=ki(g,h,i,m)+b|0;la(e,b+c|0,i);break o}if(!n){d=0;while(1){if(!zb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break o}d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break o}d=0;while(1){if(!zb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break o}la((b<<1)+f|0,e,l);b=b+n|0;d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break m}ja(e)}b=a;break a;case 5:l=G[c+24|0];o=l<<2;j=F[i+80>>2];p:{if((L(o,j)|0)!=(e|0)){break p}i=F[c+28>>2]!=6;d=G[c+84|0];if(!(i|!d)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);b=1;break p}q:{if(!l){e=0;break q}e=ka(o);ma(e,0,o)}b=1;r:{if(!j){break r}if(!i){a=F[c+68>>2];m=F[c>>2];i=F[c+48>>2];k=F[c+40>>2];n=F[c+44>>2];if(l){if(!d){c=0;d=0;while(1){g=F[m>>2];p=ki(k,n,F[a+(d<<2)>>2],0)+i|0;la((c<<2)+f|0,la(e,g+p|0,k),o);c=c+l|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break r}c=0;while(1){d=F[m>>2];p=ki(g,h,k,n)+i|0;la((c<<2)+f|0,la(e,d+p|0,k),o);c=c+l|0;g=g+1|0;a=g?h:h+1|0;h=a;if((j|0)!=(g|0)|h){continue}break}break r}if(!d){c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=F[m>>2];g=c<<2;l=ki(k,n,F[g+a>>2],0)+i|0;h=la(e,h+l|0,k);l=F[m>>2];g=ki(k,n,F[a+(g|4)>>2],0)+i|0;la(h,g+l|0,k);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break r}d=F[m>>2];a=ki(k,n,F[a+(c<<2)>>2],0)+i|0;la(e,a+d|0,k);break r}l=j&1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){a=F[m>>2];d=ki(g,h,k,n)+i|0;a=la(e,a+d|0,k);d=F[m>>2];o=ki(k,n,g|1,h)+i|0;la(a,d+o|0,k);d=h;g=g+2|0;h=g>>>0<2?d+1|0:d;f=f+2|0;a=f>>>0<2?c+1|0:c;c=a;if((f|0)!=(j|0)|c){continue}break}}if(!l){break r}a=F[m>>2];c=ki(g,h,k,n)+i|0;la(e,a+c|0,k);break r}b=0;if(!l){d=0;while(1){if(!xb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break r}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break r}d=0;while(1){if(!xb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break r}la((a<<2)+f|0,e,o);a=a+l|0;d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break p}ja(e)}break a;case 8:p=G[c+24|0];q=p<<2;k=F[i+80>>2];s:{if((L(q,k)|0)!=(e|0)){break s}i=F[c+28>>2];t:{if(!p){break t}a=ka(q);d=a;m=q-4|0;l=(m>>>2|0)+1&7;if(l){e=0;while(1){F[d>>2]=-1073741824;d=d+4|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}if(m>>>0<28){break t}e=(p<<2)+a|0;while(1){F[d+24>>2]=-1073741824;F[d+28>>2]=-1073741824;F[d+16>>2]=-1073741824;F[d+20>>2]=-1073741824;F[d+8>>2]=-1073741824;F[d+12>>2]=-1073741824;F[d>>2]=-1073741824;F[d+4>>2]=-1073741824;d=d+32|0;if((e|0)!=(d|0)){continue}break}}u:{if(!k){b=1;break u}if((i|0)==9){r=F[c+68>>2];l=F[c>>2];i=F[c+48>>2];s=G[c+84|0];m=F[c+44>>2];c=F[c+40>>2];o=c;if(p){e=0;d=0;while(1){h=(e<<2)+f|0;g=F[l>>2];b=ki(c,m,s?d:F[r+(d<<2)>>2],0)+i|0;la(h,la(a,b+g|0,o),q);e=e+p|0;b=1;d=d+1|0;if((k|0)!=(d|0)){continue}break}break u}if(!s){b=1;d=0;if((k|0)!=1){f=k&-2;e=0;while(1){h=F[l>>2];g=d<<2;j=ki(c,m,F[g+r>>2],0)+i|0;h=la(a,h+j|0,o);j=F[l>>2];g=ki(c,m,F[r+(g|4)>>2],0)+i|0;la(h,j+g|0,o);d=d+2|0;e=e+2|0;if((f|0)!=(e|0)){continue}break}}if(!(k&1)){break u}e=F[l>>2];c=ki(c,m,F[r+(d<<2)>>2],0)+i|0;la(a,c+e|0,o);break u}f=k&1;b=1;if((k|0)!=1){k=k&-2;while(1){d=F[l>>2];e=ki(g,h,c,m)+i|0;d=la(a,d+e|0,o);e=F[l>>2];p=ki(c,m,g|1,h)+i|0;la(d,e+p|0,o);g=g+2|0;h=g>>>0<2?h+1|0:h;d=j;e=n+2|0;d=e>>>0<2?d+1|0:d;n=e;j=d;if((e|0)!=(k|0)|d){continue}break}}if(!f){break u}d=F[l>>2];c=ki(g,h,c,m)+i|0;la(a,c+d|0,o);break u}if(!p){d=0;while(1){if(!lb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],a)){break u}d=d+1|0;b=k>>>0<=d>>>0;if((d|0)!=(k|0)){continue}break}break u}e=0;d=0;while(1){if(!lb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],a)){break u}la((e<<2)+f|0,a,q);e=e+p|0;d=d+1|0;b=k>>>0<=d>>>0;if((d|0)!=(k|0)){continue}break}}if(!a){break s}ja(a)}a=b;break;default:break b}}b=a}return b|0}function Pd(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=Z-80|0;Z=h;e=F[c+36>>2];F[h+72>>2]=F[c+32>>2];F[h+76>>2]=e;f=F[c+28>>2];e=h- -64|0;F[e>>2]=F[c+24>>2];F[e+4>>2]=f;e=F[c+20>>2];F[h+56>>2]=F[c+16>>2];F[h+60>>2]=e;e=F[c+12>>2];F[h+48>>2]=F[c+8>>2];F[h+52>>2]=e;e=F[c+4>>2];F[h+40>>2]=F[c>>2];F[h+44>>2]=e;jc(a,h+40|0,h+24|0);a:{if(F[a>>2]){break a}if(D[a+15|0]<0){ja(F[a+4>>2])}if(G[h+31|0]!=1){b=ka(32);D[b+20|0]=0;c=G[1446]|G[1447]<<8|(G[1448]<<16|G[1449]<<24);D[b+16|0]=c;D[b+17|0]=c>>>8;D[b+18|0]=c>>>16;D[b+19|0]=c>>>24;c=G[1442]|G[1443]<<8|(G[1444]<<16|G[1445]<<24);d=G[1438]|G[1439]<<8|(G[1440]<<16|G[1441]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1434]|G[1435]<<8|(G[1436]<<16|G[1437]<<24);d=G[1430]|G[1431]<<8|(G[1432]<<16|G[1433]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,20);ja(b);break a}j=Z-16|0;Z=j;b:{c:{switch(G[h+32|0]){case 0:e=Kd(ka(48));F[e>>2]=9864;F[h+8>>2]=0;F[h+12>>2]=0;F[h>>2]=0;F[h+4>>2]=0;F[h+16>>2]=e;break b;case 1:e=Kd(ka(52));F[e+48>>2]=0;F[e>>2]=8176;F[h+8>>2]=0;F[h+12>>2]=0;F[h>>2]=0;F[h+4>>2]=0;F[h+16>>2]=e;break b;default:break c}}f=ka(32);D[f+28|0]=0;e=G[1520]|G[1521]<<8|(G[1522]<<16|G[1523]<<24);D[f+24|0]=e;D[f+25|0]=e>>>8;D[f+26|0]=e>>>16;D[f+27|0]=e>>>24;e=G[1516]|G[1517]<<8|(G[1518]<<16|G[1519]<<24);g=G[1512]|G[1513]<<8|(G[1514]<<16|G[1515]<<24);D[f+16|0]=g;D[f+17|0]=g>>>8;D[f+18|0]=g>>>16;D[f+19|0]=g>>>24;D[f+20|0]=e;D[f+21|0]=e>>>8;D[f+22|0]=e>>>16;D[f+23|0]=e>>>24;e=G[1508]|G[1509]<<8|(G[1510]<<16|G[1511]<<24);g=G[1504]|G[1505]<<8|(G[1506]<<16|G[1507]<<24);D[f+8|0]=g;D[f+9|0]=g>>>8;D[f+10|0]=g>>>16;D[f+11|0]=g>>>24;D[f+12|0]=e;D[f+13|0]=e>>>8;D[f+14|0]=e>>>16;D[f+15|0]=e>>>24;e=G[1500]|G[1501]<<8|(G[1502]<<16|G[1503]<<24);g=G[1496]|G[1497]<<8|(G[1498]<<16|G[1499]<<24);D[f|0]=g;D[f+1|0]=g>>>8;D[f+2|0]=g>>>16;D[f+3|0]=g>>>24;D[f+4|0]=e;D[f+5|0]=e>>>8;D[f+6|0]=e>>>16;D[f+7|0]=e>>>24;F[j>>2]=-1;e=j|4;ra(e,f,28);k=D[j+15|0];F[h>>2]=F[j>>2];g=h+4|0;d:{if((k|0)>=0){k=F[e+4>>2];F[g>>2]=F[e>>2];F[g+4>>2]=k;F[g+8>>2]=F[e+8>>2];F[h+16>>2]=0;break d}ra(g,F[j+4>>2],F[j+8>>2]);e=D[j+15|0];F[h+16>>2]=0;if((e|0)>=0){break d}ja(F[j+4>>2])}ja(f)}Z=j+16|0;e=F[h>>2];e:{if(e){F[a>>2]=e;a=a+4|0;if(D[h+15|0]>=0){b=h|4;c=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=c;F[a+8>>2]=F[b+8>>2];break e}ra(a,F[h+4>>2],F[h+8>>2]);break e}e=F[h+16>>2];F[h+16>>2]=0;F[e+44>>2]=d;f=Z-32|0;Z=f;F[e+32>>2]=c;F[e+40>>2]=b;F[e+4>>2]=d;jc(a,c,f+16|0);f:{if(F[a>>2]){break f}if(D[a+15|0]<0){ja(F[a+4>>2])}b=G[f+23|0];if(($[F[F[e>>2]+8>>2]](e)|0)!=(b|0)){b=ka(64);D[b+50|0]=0;c=G[1304]|G[1305]<<8;D[b+48|0]=c;D[b+49|0]=c>>>8;c=G[1300]|G[1301]<<8|(G[1302]<<16|G[1303]<<24);d=G[1296]|G[1297]<<8|(G[1298]<<16|G[1299]<<24);D[b+40|0]=d;D[b+41|0]=d>>>8;D[b+42|0]=d>>>16;D[b+43|0]=d>>>24;D[b+44|0]=c;D[b+45|0]=c>>>8;D[b+46|0]=c>>>16;D[b+47|0]=c>>>24;c=G[1292]|G[1293]<<8|(G[1294]<<16|G[1295]<<24);d=G[1288]|G[1289]<<8|(G[1290]<<16|G[1291]<<24);D[b+32|0]=d;D[b+33|0]=d>>>8;D[b+34|0]=d>>>16;D[b+35|0]=d>>>24;D[b+36|0]=c;D[b+37|0]=c>>>8;D[b+38|0]=c>>>16;D[b+39|0]=c>>>24;c=G[1284]|G[1285]<<8|(G[1286]<<16|G[1287]<<24);d=G[1280]|G[1281]<<8|(G[1282]<<16|G[1283]<<24);D[b+24|0]=d;D[b+25|0]=d>>>8;D[b+26|0]=d>>>16;D[b+27|0]=d>>>24;D[b+28|0]=c;D[b+29|0]=c>>>8;D[b+30|0]=c>>>16;D[b+31|0]=c>>>24;c=G[1276]|G[1277]<<8|(G[1278]<<16|G[1279]<<24);d=G[1272]|G[1273]<<8|(G[1274]<<16|G[1275]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1268]|G[1269]<<8|(G[1270]<<16|G[1271]<<24);d=G[1264]|G[1265]<<8|(G[1266]<<16|G[1267]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1260]|G[1261]<<8|(G[1262]<<16|G[1263]<<24);d=G[1256]|G[1257]<<8|(G[1258]<<16|G[1259]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,50);ja(b);break f}c=G[f+21|0];D[e+36|0]=c;d=G[f+22|0];D[e+37|0]=d;if((c|0)!=2){b=ka(32);D[b+26|0]=0;c=G[1427]|G[1428]<<8;D[b+24|0]=c;D[b+25|0]=c>>>8;c=G[1423]|G[1424]<<8|(G[1425]<<16|G[1426]<<24);d=G[1419]|G[1420]<<8|(G[1421]<<16|G[1422]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1415]|G[1416]<<8|(G[1417]<<16|G[1418]<<24);d=G[1411]|G[1412]<<8|(G[1413]<<16|G[1414]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1407]|G[1408]<<8|(G[1409]<<16|G[1410]<<24);d=G[1403]|G[1404]<<8|(G[1405]<<16|G[1406]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-5;ra(a+4|0,b,26);ja(b);break f}b=b?2:3;if((b|0)!=(d|0)){b=ka(32);D[b+26|0]=0;c=G[1400]|G[1401]<<8;D[b+24|0]=c;D[b+25|0]=c>>>8;c=G[1396]|G[1397]<<8|(G[1398]<<16|G[1399]<<24);d=G[1392]|G[1393]<<8|(G[1394]<<16|G[1395]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1388]|G[1389]<<8|(G[1390]<<16|G[1391]<<24);d=G[1384]|G[1385]<<8|(G[1386]<<16|G[1387]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1380]|G[1381]<<8|(G[1382]<<16|G[1383]<<24);d=G[1376]|G[1377]<<8|(G[1378]<<16|G[1379]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-5;ra(a+4|0,b,26);ja(b);break f}E[F[e+32>>2]+38>>1]=b|512;g:{if(E[f+26>>1]>=0){break g}j=Z-16|0;Z=j;d=ka(36);b=d;F[b+4>>2]=0;F[b+8>>2]=0;F[b+24>>2]=0;F[b+28>>2]=0;b=b+16|0;F[b>>2]=0;F[b+4>>2]=0;F[d>>2]=d+4;F[d+32>>2]=0;F[d+12>>2]=b;F[j>>2]=0;c=F[e+32>>2];k=Z-16|0;Z=k;b=0;h:{if(!d){break h}F[j>>2]=c;F[k+12>>2]=0;b=0;if(!fb(1,k+12|0,c)){break h}n=F[k+12>>2];if(n){while(1){i:{if(fb(1,k+8|0,F[j>>2])){b=ka(28);F[b+4>>2]=0;F[b+8>>2]=0;c=b+16|0;F[c>>2]=0;F[c+4>>2]=0;F[b>>2]=b+4;F[b+12>>2]=c;F[b+24>>2]=F[k+8>>2];if(Vc(j,b)){break i}Ca(b+12|0,F[b+16>>2]);Ba(b,F[b+4>>2]);ja(b)}b=0;break h}g=Z-16|0;Z=g;F[g+8>>2]=b;j:{if(!b){break j}c=F[d+28>>2];k:{if(c>>>0>2]){F[g+8>>2]=0;F[c>>2]=b;F[d+28>>2]=c+4;break k}c=0;l:{m:{n:{i=F[d+24>>2];m=F[d+28>>2]-i>>2;b=m+1|0;if(b>>>0<1073741824){i=F[d+32>>2]-i|0;l=i>>>1|0;i=i>>>0>=2147483644?1073741823:b>>>0>>0?l:b;if(i){if(i>>>0>=1073741824){break n}c=ka(i<<2)}l=F[g+8>>2];F[g+8>>2]=0;b=(m<<2)+c|0;F[b>>2]=l;i=(i<<2)+c|0;m=b+4|0;c=F[d+28>>2];l=F[d+24>>2];if((c|0)==(l|0)){break m}while(1){c=c-4|0;p=F[c>>2];F[c>>2]=0;b=b-4|0;F[b>>2]=p;if((c|0)!=(l|0)){continue}break}F[d+32>>2]=i;i=F[d+28>>2];F[d+28>>2]=m;c=F[d+24>>2];F[d+24>>2]=b;if((c|0)==(i|0)){break l}while(1){i=i-4|0;b=F[i>>2];F[i>>2]=0;if(b){Ca(b+12|0,F[b+16>>2]);Ba(b,F[b+4>>2]);ja(b)}if((c|0)!=(i|0)){continue}break}break l}na();v()}oa();v()}F[d+32>>2]=i;F[d+28>>2]=m;F[d+24>>2]=b}if(c){ja(c)}}b=F[g+8>>2];F[g+8>>2]=0;if(!b){break j}Ca(b+12|0,F[b+16>>2]);Ba(b,F[b+4>>2]);ja(b)}Z=g+16|0;o=o+1|0;if((n|0)!=(o|0)){continue}break}}b=Vc(j,d)}Z=k+16|0;o:{if(b){c=F[e+4>>2];b=F[c+4>>2];F[c+4>>2]=d;if(b){ic(b)}F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;break o}b=ka(32);D[b+26|0]=0;c=G[1549]|G[1550]<<8;D[b+24|0]=c;D[b+25|0]=c>>>8;c=G[1545]|G[1546]<<8|(G[1547]<<16|G[1548]<<24);g=G[1541]|G[1542]<<8|(G[1543]<<16|G[1544]<<24);D[b+16|0]=g;D[b+17|0]=g>>>8;D[b+18|0]=g>>>16;D[b+19|0]=g>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1537]|G[1538]<<8|(G[1539]<<16|G[1540]<<24);g=G[1533]|G[1534]<<8|(G[1535]<<16|G[1536]<<24);D[b+8|0]=g;D[b+9|0]=g>>>8;D[b+10|0]=g>>>16;D[b+11|0]=g>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1529]|G[1530]<<8|(G[1531]<<16|G[1532]<<24);g=G[1525]|G[1526]<<8|(G[1527]<<16|G[1528]<<24);D[b|0]=g;D[b+1|0]=g>>>8;D[b+2|0]=g>>>16;D[b+3|0]=g>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,26);ja(b);F[j+8>>2]=0;ic(d)}Z=j+16|0;if(F[a>>2]){break f}if(D[a+15|0]>=0){break g}ja(F[a+4>>2])}if(!($[F[F[e>>2]+12>>2]](e)|0)){b=ka(48);D[b+33|0]=0;D[b+32|0]=G[1374];c=G[1370]|G[1371]<<8|(G[1372]<<16|G[1373]<<24);d=G[1366]|G[1367]<<8|(G[1368]<<16|G[1369]<<24);D[b+24|0]=d;D[b+25|0]=d>>>8;D[b+26|0]=d>>>16;D[b+27|0]=d>>>24;D[b+28|0]=c;D[b+29|0]=c>>>8;D[b+30|0]=c>>>16;D[b+31|0]=c>>>24;c=G[1362]|G[1363]<<8|(G[1364]<<16|G[1365]<<24);d=G[1358]|G[1359]<<8|(G[1360]<<16|G[1361]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1354]|G[1355]<<8|(G[1356]<<16|G[1357]<<24);d=G[1350]|G[1351]<<8|(G[1352]<<16|G[1353]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1346]|G[1347]<<8|(G[1348]<<16|G[1349]<<24);d=G[1342]|G[1343]<<8|(G[1344]<<16|G[1345]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,33);ja(b);break f}if(!($[F[F[e>>2]+20>>2]](e)|0)){b=Eb(f,1552);F[a>>2]=-1;c=a+4|0;if(D[b+11|0]>=0){d=F[b+4>>2];F[c>>2]=F[b>>2];F[c+4>>2]=d;F[c+8>>2]=F[b+8>>2];break f}ra(c,F[b>>2],F[b+4>>2]);if(D[b+11|0]>=0){break f}ja(F[b>>2]);break f}if(!($[F[F[e>>2]+24>>2]](e)|0)){b=Eb(f,1307);F[a>>2]=-1;c=a+4|0;if(D[b+11|0]>=0){d=F[b+4>>2];F[c>>2]=F[b>>2];F[c+4>>2]=d;F[c+8>>2]=F[b+8>>2];break f}ra(c,F[b>>2],F[b+4>>2]);if(D[b+11|0]>=0){break f}ja(F[b>>2]);break f}F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0}Z=f+32|0;if(!F[a>>2]){if(D[a+15|0]<0){ja(F[a+4>>2])}F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0}$[F[F[e>>2]+4>>2]](e)}a=F[h+16>>2];F[h+16>>2]=0;if(a){$[F[F[a>>2]+4>>2]](a)}if(D[h+15|0]>=0){break a}ja(F[h+4>>2])}Z=h+80|0}function Ub(a){a=a|0;var 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;l=Z-16|0;Z=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{if(a>>>0<=244){g=F[2941];h=a>>>0<11?16:a+11&-8;c=h>>>3|0;b=g>>>c|0;if(b&3){c=c+((b^-1)&1)|0;a=c<<3;b=a+11804|0;d=F[a+11812>>2];a=F[d+8>>2];j:{if((b|0)==(a|0)){m=11764,n=oi(c)&g,F[m>>2]=n;break j}F[a+12>>2]=b;F[b+8>>2]=a}a=d+8|0;b=c<<3;F[d+4>>2]=b|3;b=b+d|0;F[b+4>>2]=F[b+4>>2]|1;break a}k=F[2943];if(k>>>0>=h>>>0){break i}if(b){a=2<>2];a=F[e+8>>2];k:{if((b|0)==(a|0)){g=oi(d)&g;F[2941]=g;break k}F[a+12>>2]=b;F[b+8>>2]=a}F[e+4>>2]=h|3;c=e+h|0;a=d<<3;d=a-h|0;F[c+4>>2]=d|1;F[a+e>>2]=d;if(k){b=(k&-8)+11804|0;f=F[2946];a=1<<(k>>>3);l:{if(!(a&g)){F[2941]=a|g;a=b;break l}a=F[b+8>>2]}F[b+8>>2]=f;F[a+12>>2]=f;F[f+12>>2]=b;F[f+8>>2]=a}a=e+8|0;F[2946]=c;F[2943]=d;break a}j=F[2942];if(!j){break i}c=F[(ji(0-j&j)<<2)+12068>>2];f=(F[c+4>>2]&-8)-h|0;b=c;while(1){m:{a=F[b+16>>2];if(!a){a=F[b+20>>2];if(!a){break m}}b=(F[a+4>>2]&-8)-h|0;d=b>>>0>>0;f=d?b:f;c=d?a:c;b=a;continue}break}i=F[c+24>>2];d=F[c+12>>2];if((d|0)!=(c|0)){a=F[c+8>>2];F[a+12>>2]=d;F[d+8>>2]=a;break b}b=c+20|0;a=F[b>>2];if(!a){a=F[c+16>>2];if(!a){break h}b=c+16|0}while(1){e=b;d=a;b=a+20|0;a=F[b>>2];if(a){continue}b=d+16|0;a=F[d+16>>2];if(a){continue}break}F[e>>2]=0;break b}h=-1;if(a>>>0>4294967231){break i}a=a+11|0;h=a&-8;j=F[2942];if(!j){break i}f=0-h|0;g=0;n:{if(h>>>0<256){break n}g=31;if(h>>>0>16777215){break n}a=O(a>>>8|0);g=((h>>>38-a&1)-(a<<1)|0)+62|0}b=F[(g<<2)+12068>>2];o:{p:{q:{if(!b){a=0;break q}a=0;c=h<<((g|0)!=31?25-(g>>>1|0)|0:0);while(1){r:{e=(F[b+4>>2]&-8)-h|0;if(e>>>0>=f>>>0){break r}d=b;f=e;if(e){break r}f=0;a=b;break p}e=F[b+20>>2];b=F[((c>>>29&4)+b|0)+16>>2];a=e?(e|0)==(b|0)?a:e:a;c=c<<1;if(b){continue}break}}if(!(a|d)){d=0;a=2<>2]}if(!a){break o}}while(1){b=(F[a+4>>2]&-8)-h|0;c=b>>>0>>0;f=c?b:f;d=c?a:d;b=F[a+16>>2];if(b){a=b}else{a=F[a+20>>2]}if(a){continue}break}}if(!d|F[2943]-h>>>0<=f>>>0){break i}g=F[d+24>>2];c=F[d+12>>2];if((d|0)!=(c|0)){a=F[d+8>>2];F[a+12>>2]=c;F[c+8>>2]=a;break c}b=d+20|0;a=F[b>>2];if(!a){a=F[d+16>>2];if(!a){break g}b=d+16|0}while(1){e=b;c=a;b=a+20|0;a=F[b>>2];if(a){continue}b=c+16|0;a=F[c+16>>2];if(a){continue}break}F[e>>2]=0;break c}a=F[2943];if(a>>>0>=h>>>0){d=F[2946];b=a-h|0;s:{if(b>>>0>=16){c=d+h|0;F[c+4>>2]=b|1;F[a+d>>2]=b;F[d+4>>2]=h|3;break s}F[d+4>>2]=a|3;a=a+d|0;F[a+4>>2]=F[a+4>>2]|1;c=0;b=0}F[2943]=b;F[2946]=c;a=d+8|0;break a}i=F[2944];if(i>>>0>h>>>0){b=i-h|0;F[2944]=b;c=F[2947];a=c+h|0;F[2947]=a;F[a+4>>2]=b|1;F[c+4>>2]=h|3;a=c+8|0;break a}a=0;j=h+47|0;if(F[3059]){c=F[3061]}else{F[3062]=-1;F[3063]=-1;F[3060]=4096;F[3061]=4096;F[3059]=l+12&-16^1431655768;F[3064]=0;F[3052]=0;c=4096}e=j+c|0;f=0-c|0;b=e&f;if(b>>>0<=h>>>0){break a}d=F[3051];if(d){c=F[3049];g=c+b|0;if(d>>>0>>0|c>>>0>=g>>>0){break a}}t:{if(!(G[12208]&4)){u:{v:{w:{x:{d=F[2947];if(d){a=12212;while(1){c=F[a>>2];if(c>>>0<=d>>>0&d>>>0>2]>>>0){break x}a=F[a+8>>2];if(a){continue}break}}c=eb(0);if((c|0)==-1){break u}g=b;d=F[3060];a=d-1|0;if(a&c){g=(b-c|0)+(a+c&0-d)|0}if(g>>>0<=h>>>0){break u}d=F[3051];if(d){a=F[3049];f=a+g|0;if(d>>>0>>0|a>>>0>=f>>>0){break u}}a=eb(g);if((c|0)!=(a|0)){break w}break t}g=f&e-i;c=eb(g);if((c|0)==(F[a>>2]+F[a+4>>2]|0)){break v}a=c}if((a|0)==-1){break u}if(h+48>>>0<=g>>>0){c=a;break t}c=F[3061];c=c+(j-g|0)&0-c;if((eb(c)|0)==-1){break u}g=c+g|0;c=a;break t}if((c|0)!=-1){break t}}F[3052]=F[3052]|4}c=eb(b);a=eb(0);if((c|0)==-1|(a|0)==-1|a>>>0<=c>>>0){break d}g=a-c|0;if(g>>>0<=h+40>>>0){break d}}a=F[3049]+g|0;F[3049]=a;if(a>>>0>I[3050]){F[3050]=a}y:{e=F[2947];if(e){a=12212;while(1){d=F[a>>2];b=F[a+4>>2];if((d+b|0)==(c|0)){break y}a=F[a+8>>2];if(a){continue}break}break f}a=F[2945];if(!(a>>>0<=c>>>0?a:0)){F[2945]=c}a=0;F[3054]=g;F[3053]=c;F[2949]=-1;F[2950]=F[3059];F[3056]=0;while(1){d=a<<3;b=d+11804|0;F[d+11812>>2]=b;F[d+11816>>2]=b;a=a+1|0;if((a|0)!=32){continue}break}d=g-40|0;a=c+8&7?-8-c&7:0;b=d-a|0;F[2944]=b;a=a+c|0;F[2947]=a;F[a+4>>2]=b|1;F[(c+d|0)+4>>2]=40;F[2948]=F[3063];break e}if(G[a+12|0]&8|d>>>0>e>>>0|c>>>0<=e>>>0){break f}F[a+4>>2]=b+g;a=e+8&7?-8-e&7:0;c=a+e|0;F[2947]=c;b=F[2944]+g|0;a=b-a|0;F[2944]=a;F[c+4>>2]=a|1;F[(b+e|0)+4>>2]=40;F[2948]=F[3063];break e}d=0;break b}c=0;break c}if(I[2945]>c>>>0){F[2945]=c}b=c+g|0;a=12212;z:{A:{B:{C:{D:{E:{while(1){if((b|0)!=F[a>>2]){a=F[a+8>>2];if(a){continue}break E}break}if(!(G[a+12|0]&8)){break D}}a=12212;while(1){b=F[a>>2];if(b>>>0<=e>>>0){f=b+F[a+4>>2]|0;if(f>>>0>e>>>0){break C}}a=F[a+8>>2];continue}}F[a>>2]=c;F[a+4>>2]=F[a+4>>2]+g;j=(c+8&7?-8-c&7:0)+c|0;F[j+4>>2]=h|3;g=b+(b+8&7?-8-b&7:0)|0;i=h+j|0;a=g-i|0;if((e|0)==(g|0)){F[2947]=i;a=F[2944]+a|0;F[2944]=a;F[i+4>>2]=a|1;break A}if(F[2946]==(g|0)){F[2946]=i;a=F[2943]+a|0;F[2943]=a;F[i+4>>2]=a|1;F[a+i>>2]=a;break A}f=F[g+4>>2];if((f&3)==1){e=f&-8;F:{if(f>>>0<=255){d=F[g+8>>2];b=f>>>3|0;c=F[g+12>>2];if((c|0)==(d|0)){m=11764,n=F[2941]&oi(b),F[m>>2]=n;break F}F[d+12>>2]=c;F[c+8>>2]=d;break F}h=F[g+24>>2];c=F[g+12>>2];G:{if((g|0)!=(c|0)){b=F[g+8>>2];F[b+12>>2]=c;F[c+8>>2]=b;break G}H:{f=g+20|0;b=F[f>>2];if(b){break H}f=g+16|0;b=F[f>>2];if(b){break H}c=0;break G}while(1){d=f;c=b;f=c+20|0;b=F[f>>2];if(b){continue}f=c+16|0;b=F[c+16>>2];if(b){continue}break}F[d>>2]=0}if(!h){break F}d=F[g+28>>2];b=(d<<2)+12068|0;I:{if(F[b>>2]==(g|0)){F[b>>2]=c;if(c){break I}m=11768,n=F[2942]&oi(d),F[m>>2]=n;break F}F[h+(F[h+16>>2]==(g|0)?16:20)>>2]=c;if(!c){break F}}F[c+24>>2]=h;b=F[g+16>>2];if(b){F[c+16>>2]=b;F[b+24>>2]=c}b=F[g+20>>2];if(!b){break F}F[c+20>>2]=b;F[b+24>>2]=c}g=e+g|0;f=F[g+4>>2];a=a+e|0}F[g+4>>2]=f&-2;F[i+4>>2]=a|1;F[a+i>>2]=a;if(a>>>0<=255){b=(a&-8)+11804|0;c=F[2941];a=1<<(a>>>3);J:{if(!(c&a)){F[2941]=a|c;a=b;break J}a=F[b+8>>2]}F[b+8>>2]=i;F[a+12>>2]=i;F[i+12>>2]=b;F[i+8>>2]=a;break A}f=31;if(a>>>0<=16777215){b=O(a>>>8|0);f=((a>>>38-b&1)-(b<<1)|0)+62|0}F[i+28>>2]=f;F[i+16>>2]=0;F[i+20>>2]=0;b=(f<<2)+12068|0;d=F[2942];c=1<>2]=i;break K}f=a<<((f|0)!=31?25-(f>>>1|0)|0:0);c=F[b>>2];while(1){b=c;if((F[c+4>>2]&-8)==(a|0)){break B}c=f>>>29|0;f=f<<1;d=(c&4)+b|0;c=F[d+16>>2];if(c){continue}break}F[d+16>>2]=i}F[i+24>>2]=b;F[i+12>>2]=i;F[i+8>>2]=i;break A}d=g-40|0;a=c+8&7?-8-c&7:0;b=d-a|0;F[2944]=b;a=a+c|0;F[2947]=a;F[a+4>>2]=b|1;F[(c+d|0)+4>>2]=40;F[2948]=F[3063];a=(f+(f-39&7?39-f&7:0)|0)-47|0;d=a>>>0>>0?e:a;F[d+4>>2]=27;a=F[3056];F[d+16>>2]=F[3055];F[d+20>>2]=a;a=F[3054];F[d+8>>2]=F[3053];F[d+12>>2]=a;F[3055]=d+8;F[3054]=g;F[3053]=c;F[3056]=0;a=d+24|0;while(1){F[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((d|0)==(e|0)){break e}F[d+4>>2]=F[d+4>>2]&-2;f=d-e|0;F[e+4>>2]=f|1;F[d>>2]=f;if(f>>>0<=255){b=(f&-8)+11804|0;c=F[2941];a=1<<(f>>>3);L:{if(!(c&a)){F[2941]=a|c;a=b;break L}a=F[b+8>>2]}F[b+8>>2]=e;F[a+12>>2]=e;F[e+12>>2]=b;F[e+8>>2]=a;break e}a=31;if(f>>>0<=16777215){a=O(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}F[e+28>>2]=a;F[e+16>>2]=0;F[e+20>>2]=0;b=(a<<2)+12068|0;d=F[2942];c=1<>2]=e;break M}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);d=F[b>>2];while(1){b=d;if((f|0)==(F[b+4>>2]&-8)){break z}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;d=F[c+16>>2];if(d){continue}break}F[c+16>>2]=e}F[e+24>>2]=b;F[e+12>>2]=e;F[e+8>>2]=e;break e}a=F[b+8>>2];F[a+12>>2]=i;F[b+8>>2]=i;F[i+24>>2]=0;F[i+12>>2]=b;F[i+8>>2]=a}a=j+8|0;break a}a=F[b+8>>2];F[a+12>>2]=e;F[b+8>>2]=e;F[e+24>>2]=0;F[e+12>>2]=b;F[e+8>>2]=a}a=F[2944];if(a>>>0<=h>>>0){break d}b=a-h|0;F[2944]=b;c=F[2947];a=c+h|0;F[2947]=a;F[a+4>>2]=b|1;F[c+4>>2]=h|3;a=c+8|0;break a}F[2940]=48;a=0;break a}N:{if(!g){break N}b=F[d+28>>2];a=(b<<2)+12068|0;O:{if(F[a>>2]==(d|0)){F[a>>2]=c;if(c){break O}j=oi(b)&j;F[2942]=j;break N}F[g+(F[g+16>>2]==(d|0)?16:20)>>2]=c;if(!c){break N}}F[c+24>>2]=g;a=F[d+16>>2];if(a){F[c+16>>2]=a;F[a+24>>2]=c}a=F[d+20>>2];if(!a){break N}F[c+20>>2]=a;F[a+24>>2]=c}P:{if(f>>>0<=15){a=f+h|0;F[d+4>>2]=a|3;a=a+d|0;F[a+4>>2]=F[a+4>>2]|1;break P}F[d+4>>2]=h|3;e=d+h|0;F[e+4>>2]=f|1;F[e+f>>2]=f;if(f>>>0<=255){b=(f&-8)+11804|0;c=F[2941];a=1<<(f>>>3);Q:{if(!(c&a)){F[2941]=a|c;a=b;break Q}a=F[b+8>>2]}F[b+8>>2]=e;F[a+12>>2]=e;F[e+12>>2]=b;F[e+8>>2]=a;break P}a=31;if(f>>>0<=16777215){a=O(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}F[e+28>>2]=a;F[e+16>>2]=0;F[e+20>>2]=0;b=(a<<2)+12068|0;R:{c=1<>2]=e;break S}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);h=F[b>>2];while(1){b=h;if((F[b+4>>2]&-8)==(f|0)){break R}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;h=F[c+16>>2];if(h){continue}break}F[c+16>>2]=e}F[e+24>>2]=b;F[e+12>>2]=e;F[e+8>>2]=e;break P}a=F[b+8>>2];F[a+12>>2]=e;F[b+8>>2]=e;F[e+24>>2]=0;F[e+12>>2]=b;F[e+8>>2]=a}a=d+8|0;break a}T:{if(!i){break T}b=F[c+28>>2];a=(b<<2)+12068|0;U:{if(F[a>>2]==(c|0)){F[a>>2]=d;if(d){break U}m=11768,n=oi(b)&j,F[m>>2]=n;break T}F[i+(F[i+16>>2]==(c|0)?16:20)>>2]=d;if(!d){break T}}F[d+24>>2]=i;a=F[c+16>>2];if(a){F[d+16>>2]=a;F[a+24>>2]=d}a=F[c+20>>2];if(!a){break T}F[d+20>>2]=a;F[a+24>>2]=d}V:{if(f>>>0<=15){a=f+h|0;F[c+4>>2]=a|3;a=a+c|0;F[a+4>>2]=F[a+4>>2]|1;break V}F[c+4>>2]=h|3;d=c+h|0;F[d+4>>2]=f|1;F[d+f>>2]=f;if(k){b=(k&-8)+11804|0;e=F[2946];a=1<<(k>>>3);W:{if(!(a&g)){F[2941]=a|g;a=b;break W}a=F[b+8>>2]}F[b+8>>2]=e;F[a+12>>2]=e;F[e+12>>2]=b;F[e+8>>2]=a}F[2946]=d;F[2943]=f}a=c+8|0}Z=l+16|0;return a|0}function Vc(a,b){var 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,w=0,x=0,y=0,z=0,A=0;m=Z-32|0;Z=m;o=ka(12);F[o+8>>2]=0;F[o+4>>2]=b;F[o>>2]=0;s=o+12|0;b=s;a:{b:{c:{while(1){b=b-12|0;w=F[b+8>>2];j=F[b+4>>2];t=F[b>>2];if(t){if((w|0)>1e3){break a}F[m+24>>2]=0;F[m+16>>2]=0;F[m+20>>2]=0;d=1;c=F[a>>2];e=F[c+8>>2];h=F[c+12>>2];g=F[c+20>>2];f=F[c+16>>2];d:{if((h|0)<=(g|0)&f>>>0>=e>>>0|(g|0)>(h|0)){break d}e=G[f+F[c>>2]|0];h=c;c=g;f=f+1|0;c=f?c:c+1|0;F[h+16>>2]=f;F[h+20>>2]=c;Sb(m+16|0,e);if(e){c=F[a>>2];n=Tb(m+16|0);p=F[c+8>>2];g=F[c+12>>2];h=F[c+20>>2];f=F[c+16>>2];k=f+e|0;h=k>>>0>>0?h+1|0:h;if((g|0)<=(h|0)&k>>>0>p>>>0|(g|0)<(h|0)){break d}la(n,f+F[c>>2]|0,e);d=F[c+20>>2];f=e;e=e+F[c+16>>2]|0;d=f>>>0>e>>>0?d+1|0:d;F[c+16>>2]=e;F[c+20>>2]=d}j=ka(24);c=j;F[c+4>>2]=0;F[c+8>>2]=0;c=c+16|0;F[c>>2]=0;F[c+4>>2]=0;F[j>>2]=j+4;F[j+12>>2]=c;e=Z-32|0;Z=e;h=t+12|0;c=m+16|0;u=Ya(h,c);i=t+16|0;e:{if((u|0)==(i|0)){F[e+16>>2]=c;f:{g:{d=F[h+4>>2];h:{if(!d){f=h+4|0;c=f;break h}f=G[c+11|0];g=f<<24>>24<0;n=g?F[c>>2]:c;g=g?F[c+4>>2]:f;while(1){c=d;d=G[c+27|0];f=d<<24>>24<0;d=f?F[c+20>>2]:d;p=d>>>0>>0;i:{j:{k:{l:{k=p?d:g;m:{if(k){f=f?F[c+16>>2]:c+16|0;q=sa(n,f,k);if(!q){if(d>>>0>g>>>0){break m}break l}if((q|0)>=0){break l}break m}if(d>>>0<=g>>>0){break k}}f=c;d=F[c>>2];if(d){continue}break h}d=sa(f,n,k);if(d){break j}}if(p){break i}break g}if((d|0)>=0){break g}}d=F[c+4>>2];if(d){continue}break}f=c+4|0}d=ka(32);n=d+16|0;g=F[e+16>>2];n:{if(D[g+11|0]>=0){p=F[g+4>>2];F[n>>2]=F[g>>2];F[n+4>>2]=p;F[n+8>>2]=F[g+8>>2];break n}ra(n,F[g>>2],F[g+4>>2])}F[d+8>>2]=c;F[d>>2]=0;F[d+4>>2]=0;F[d+28>>2]=0;F[f>>2]=d;c=d;g=F[F[h>>2]>>2];if(g){F[h>>2]=g;c=F[f>>2]}nb(F[h+4>>2],c);F[h+8>>2]=F[h+8>>2]+1;c=1;break f}d=c;c=0}D[e+28|0]=c;F[e+24>>2]=d;d=F[e+24>>2];c=F[d+28>>2];F[d+28>>2]=j;if(!c){break e}Ca(c+12|0,F[c+16>>2]);Ba(c,F[c+4>>2]);ja(c);break e}if(!j){break e}Ca(j+12|0,F[j+16>>2]);Ba(j,F[j+4>>2]);ja(j)}Z=e+32|0;d=(i|0)!=(u|0)}if(D[m+27|0]<0){ja(F[m+16>>2])}if(d){break a}}if(!j){break a}F[m+16>>2]=0;if(!fb(1,m+16|0,F[a>>2])){break a}q=0;x=F[m+16>>2];if(x){while(1){d=0;i=Z-32|0;Z=i;F[i+24>>2]=0;F[i+16>>2]=0;F[i+20>>2]=0;c=F[a>>2];f=F[c+8>>2];o:{p:{h=F[c+12>>2];g=F[c+20>>2];e=F[c+16>>2];q:{if((h|0)<=(g|0)&e>>>0>=f>>>0|(g|0)>(h|0)){break q}f=G[e+F[c>>2]|0];h=c;c=g;e=e+1|0;c=e?c:c+1|0;F[h+16>>2]=e;F[h+20>>2]=c;Sb(i+16|0,f);if(f){e=F[a>>2];n=Tb(i+16|0);p=F[e+8>>2];g=F[e+12>>2];c=F[e+20>>2];h=F[e+16>>2];k=h+f|0;c=k>>>0>>0?c+1|0:c;if(k>>>0>p>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break q}la(n,h+F[e>>2]|0,f);c=F[e+20>>2];g=f;f=f+F[e+16>>2]|0;c=g>>>0>f>>>0?c+1|0:c;F[e+16>>2]=f;F[e+20>>2]=c}F[i+12>>2]=0;if(!fb(1,i+12|0,F[a>>2])){break q}f=F[i+12>>2];if(!f){break q}e=F[a>>2];c=F[e+8>>2];h=F[e+16>>2];g=c-h|0;c=F[e+12>>2]-(F[e+20>>2]+(c>>>0>>0)|0)|0;if((c|0)<=0&f>>>0>g>>>0|(c|0)<0){break q}F[i+8>>2]=0;F[i>>2]=0;F[i+4>>2]=0;if((f|0)<0){break p}d=ka(f);F[i>>2]=d;c=d+f|0;F[i+8>>2]=c;l=ma(d,0,f);F[i+4>>2]=c;h=F[e+12>>2];y=h;p=F[e+8>>2];c=F[e+20>>2];k=F[e+16>>2];g=f+k|0;c=g>>>0>>0?c+1|0:c;u=g;n=c;r:{if((c|0)<=(h|0)&g>>>0<=p>>>0|(c|0)<(h|0)){la(l,F[e>>2]+k|0,f);d=F[e+20>>2];c=f+F[e+16>>2]|0;d=c>>>0>>0?d+1|0:d;F[e+16>>2]=c;F[e+20>>2]=d;h=Z-48|0;Z=h;e=Ya(j,i+16|0);if((e|0)!=(j+4|0)){c=F[e+4>>2];s:{if(!c){c=e;while(1){d=F[c+8>>2];f=F[d>>2]!=(c|0);c=d;if(f){continue}break}break s}while(1){d=c;c=F[c>>2];if(c){continue}break}}if((e|0)==F[j>>2]){F[j>>2]=d}F[j+8>>2]=F[j+8>>2]-1;f=F[j+4>>2];t:{u:{g=e;d=e;e=F[d>>2];if(e){c=F[g+4>>2];if(!c){break u}while(1){d=c;c=F[c>>2];if(c){continue}break}}e=F[d+4>>2];if(e){break u}e=0;k=1;break t}F[e+8>>2]=F[d+8>>2];k=0}l=F[d+8>>2];c=F[l>>2];v:{if((d|0)==(c|0)){F[l>>2]=e;if((d|0)==(f|0)){c=0;f=e;break v}c=F[l+4>>2];break v}F[l+4>>2]=e}r=!G[d+12|0];if((d|0)!=(g|0)){l=F[g+8>>2];F[d+8>>2]=l;F[l+(((g|0)!=F[F[g+8>>2]>>2])<<2)>>2]=d;l=F[g>>2];F[d>>2]=l;F[l+8>>2]=d;l=F[g+4>>2];F[d+4>>2]=l;if(l){F[l+8>>2]=d}D[d+12|0]=G[g+12|0];f=(f|0)==(g|0)?d:f}w:{if(r|!f){break w}if(k){while(1){e=G[c+12|0];x:{d=F[c+8>>2];if(F[d>>2]!=(c|0)){if(!e){D[c+12|0]=1;D[d+12|0]=0;e=F[d+4>>2];k=F[e>>2];F[d+4>>2]=k;if(k){F[k+8>>2]=d}F[e+8>>2]=F[d+8>>2];k=F[d+8>>2];F[(((d|0)!=F[k>>2])<<2)+k>>2]=e;F[e>>2]=d;F[d+8>>2]=e;d=c;c=F[c>>2];f=(c|0)==(f|0)?d:f;c=F[c+4>>2]}y:{z:{d=F[c>>2];A:{if(!(G[d+12|0]?0:d)){e=F[c+4>>2];if(G[e+12|0]?0:e){break A}D[c+12|0]=0;c=F[c+8>>2];B:{if((f|0)==(c|0)){c=f;break B}if(G[c+12|0]){break x}}D[c+12|0]=1;break w}e=F[c+4>>2];if(!e){break z}}if(G[e+12|0]){break z}d=c;break y}D[d+12|0]=1;D[c+12|0]=0;e=F[d+4>>2];F[c>>2]=e;if(e){F[e+8>>2]=c}F[d+8>>2]=F[c+8>>2];e=F[c+8>>2];F[((F[e>>2]!=(c|0))<<2)+e>>2]=d;F[d+4>>2]=c;F[c+8>>2]=d;e=c}c=F[d+8>>2];D[d+12|0]=G[c+12|0];D[c+12|0]=1;D[e+12|0]=1;d=F[c+4>>2];e=F[d>>2];F[c+4>>2]=e;if(e){F[e+8>>2]=c}F[d+8>>2]=F[c+8>>2];e=F[c+8>>2];F[(((c|0)!=F[e>>2])<<2)+e>>2]=d;F[d>>2]=c;F[c+8>>2]=d;break w}if(!e){D[c+12|0]=1;D[d+12|0]=0;e=F[c+4>>2];F[d>>2]=e;if(e){F[e+8>>2]=d}F[c+8>>2]=F[d+8>>2];e=F[d+8>>2];F[(((d|0)!=F[e>>2])<<2)+e>>2]=c;F[c+4>>2]=d;F[d+8>>2]=c;f=(d|0)==(f|0)?c:f;c=F[d>>2]}e=F[c>>2];C:{if(!(!e|G[e+12|0])){d=c;break C}d=F[c+4>>2];if(!(G[d+12|0]?0:d)){D[c+12|0]=0;c=F[c+8>>2];if((c|0)!=(f|0)?G[c+12|0]:0){break x}D[c+12|0]=1;break w}if(e){if(!G[e+12|0]){d=c;break C}d=F[c+4>>2]}D[d+12|0]=1;D[c+12|0]=0;e=F[d>>2];F[c+4>>2]=e;if(e){F[e+8>>2]=c}F[d+8>>2]=F[c+8>>2];e=F[c+8>>2];F[((F[e>>2]!=(c|0))<<2)+e>>2]=d;F[d>>2]=c;F[c+8>>2]=d;e=c}c=F[d+8>>2];D[d+12|0]=G[c+12|0];D[c+12|0]=1;D[e+12|0]=1;d=F[c>>2];e=F[d+4>>2];F[c>>2]=e;if(e){F[e+8>>2]=c}F[d+8>>2]=F[c+8>>2];e=F[c+8>>2];F[(((c|0)!=F[e>>2])<<2)+e>>2]=d;F[d+4>>2]=c;F[c+8>>2]=d;break w}d=c;c=F[c+8>>2];c=F[(((d|0)==F[c>>2])<<2)+c>>2];continue}}D[e+12|0]=1}c=F[g+28>>2];if(c){F[g+32>>2]=c;ja(c)}if(D[g+27|0]<0){ja(F[g+16>>2])}ja(g)}F[h+8>>2]=0;F[h>>2]=0;F[h+4>>2]=0;c=F[i+4>>2];d=F[i>>2];f=c-d|0;e=0;D:{E:{if((c|0)!=(d|0)){if((f|0)<0){break E}e=ka(f);c=ma(e,0,f);g=c+f|0;F[h+8>>2]=g;F[h+4>>2]=g;F[h>>2]=c;c=d}la(e,c,f);F:{if(D[i+27|0]>=0){F[h+24>>2]=F[i+24>>2];c=F[i+20>>2];F[h+16>>2]=F[i+16>>2];F[h+20>>2]=c;break F}ra(h+16|0,F[i+16>>2],F[i+20>>2])}Tc(h+28|0,h);f=h+16|0;c=f;G:{H:{d=F[j+4>>2];I:{if(!d){e=j+4|0;c=e;break I}e=G[c+11|0];g=e<<24>>24<0;k=g?F[c>>2]:c;g=g?F[c+4>>2]:e;while(1){c=d;d=G[c+27|0];e=d<<24>>24<0;d=e?F[c+20>>2]:d;l=d>>>0>>0;J:{K:{L:{M:{r=l?d:g;N:{if(r){e=e?F[c+16>>2]:c+16|0;z=sa(k,e,r);if(!z){if(d>>>0>g>>>0){break N}break M}if((z|0)>=0){break M}break N}if(d>>>0<=g>>>0){break L}}e=c;d=F[c>>2];if(d){continue}break I}d=sa(e,k,r);if(d){break K}}if(l){break J}break H}if((d|0)>=0){break H}}d=F[c+4>>2];if(d){continue}break}e=c+4|0}d=ka(40);F[d+24>>2]=F[f+8>>2];g=F[f+4>>2];F[d+16>>2]=F[f>>2];F[d+20>>2]=g;F[f>>2]=0;F[f+4>>2]=0;F[f+8>>2]=0;Tc(d+28|0,f+12|0);F[d+8>>2]=c;F[d>>2]=0;F[d+4>>2]=0;F[e>>2]=d;c=d;f=F[F[j>>2]>>2];if(f){F[j>>2]=f;c=F[e>>2]}nb(F[j+4>>2],c);F[j+8>>2]=F[j+8>>2]+1;c=1;break G}d=c;c=0}D[h+44|0]=c;F[h+40>>2]=d;c=F[h+28>>2];if(c){F[h+32>>2]=c;ja(c)}if(D[h+27|0]<0){ja(F[h+16>>2])}c=F[h>>2];if(c){F[h+4>>2]=c;ja(c)}Z=h+48|0;break D}na();v()}d=F[i>>2];if(!d){break r}}F[i+4>>2]=d;ja(d)}d=(n|0)<=(y|0)&p>>>0>=u>>>0|(n|0)<(y|0)}if(D[i+27|0]<0){ja(F[i+16>>2])}Z=i+32|0;break o}na();v()}if(!d){break a}q=q+1|0;if((x|0)!=(q|0)){continue}break}}F[m+12>>2]=0;if(!fb(1,m+12|0,F[a>>2])){break a}c=F[a>>2];e=F[c+8>>2];f=F[c+16>>2];h=e-f|0;d=F[m+12>>2];c=F[c+12>>2]-(F[c+20>>2]+(e>>>0>>0)|0)|0;if(h>>>0>>0&(c|0)<=0|(c|0)<0){break a}if(d){q=0;h=((t|0)!=0)+w|0;while(1){O:{if(b>>>0>>0){F[b+8>>2]=h;F[b+4>>2]=0;F[b>>2]=j;b=b+12|0;d=F[m+12>>2];break O}c=b-o|0;g=(c|0)/12|0;b=g+1|0;if(b>>>0>=357913942){break c}e=(s-o|0)/12|0;f=e<<1;e=e>>>0>=178956970?357913941:b>>>0>>0?f:b;if(e){if(e>>>0>=357913942){break b}f=ka(L(e,12))}else{f=0}b=f+L(g,12)|0;F[b+8>>2]=h;F[b+4>>2]=0;F[b>>2]=j;c=pa(b+L((c|0)/-12|0,12)|0,o,c);s=f+L(e,12)|0;b=b+12|0;if(o){ja(o)}o=c}q=q+1|0;if(q>>>0>>0){continue}break}}if((b|0)!=(o|0)){continue}break}A=1;break a}na();v()}oa();v()}if(o){ja(o)}Z=m+32|0;return A}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,j=0,k=0,l=0;h=Z-48|0;Z=h;a:{if((c|0)!=1){break a}i=F[a+4>>2];c=F[a+12>>2];F[h+40>>2]=0;F[h+32>>2]=0;F[h+36>>2]=0;F[h+24>>2]=0;F[h+28>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;F[h+8>>2]=0;F[h+12>>2]=0;d=h+8|0;b:{if((b|0)==-2){break b}k=F[F[F[i+4>>2]+8>>2]+(c<<2)>>2];if(($[F[F[i>>2]+8>>2]](i)|0)==1){j=Z-32|0;Z=j;l=F[F[F[i+4>>2]+8>>2]+(c<<2)>>2];c:{d:{e:{if(($[F[F[i>>2]+8>>2]](i)|0)!=1|b-1>>>0>5){break e}g=$[F[F[i>>2]+36>>2]](i)|0;f=$[F[F[i>>2]+44>>2]](i,c)|0;if(!g|!f){break e}c=$[F[F[i>>2]+40>>2]](i,c)|0;if(c){a=F[i+44>>2];F[j+12>>2]=c;F[j+8>>2]=a;F[j+20>>2]=f;F[j+16>>2]=f+12;f=j+8|0;a=0;f:{g:{switch(b-1|0){case 0:b=ka(60);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b>>2]=2252;a=b;break f;case 3:b=ka(112);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b+60>>2]=0;F[b+64>>2]=0;F[b>>2]=3016;F[b+68>>2]=0;F[b+72>>2]=0;F[b+76>>2]=0;F[b+80>>2]=0;F[b+84>>2]=0;F[b+88>>2]=0;F[b+92>>2]=0;F[b+96>>2]=0;F[b+100>>2]=0;F[b+104>>2]=0;F[b+108>>2]=0;a=b;break f;case 4:b=ka(104);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b+84>>2]=0;F[b+76>>2]=0;F[b+80>>2]=0;F[b+60>>2]=0;F[b+64>>2]=0;F[b>>2]=3264;a=F[f+4>>2];F[b+88>>2]=F[f>>2];F[b+92>>2]=a;a=F[f+12>>2];F[b+96>>2]=F[f+8>>2];F[b+100>>2]=a;a=b;break f;case 5:break g;default:break f}}a=ka(128);F[a+4>>2]=l;F[a>>2]=2960;b=F[d+4>>2];F[a+8>>2]=F[d>>2];F[a+12>>2]=b;b=F[d+12>>2];F[a+16>>2]=F[d+8>>2];F[a+20>>2]=b;b=F[d+20>>2];F[a+24>>2]=F[d+16>>2];F[a+28>>2]=b;F[a+40>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;h:{i:{c=F[d+28>>2];b=F[d+24>>2];if((c|0)!=(b|0)){c=c-b|0;if((c|0)<0){break i}b=ka(c);F[a+36>>2]=b;F[a+32>>2]=b;F[a+40>>2]=(c&-4)+b;e=F[d+24>>2];c=F[d+28>>2];if((e|0)!=(c|0)){while(1){F[b>>2]=F[e>>2];b=b+4|0;e=e+4|0;if((c|0)!=(e|0)){continue}break}}F[a+36>>2]=b}F[a>>2]=2904;b=F[f+4>>2];F[a+44>>2]=F[f>>2];F[a+48>>2]=b;b=F[f+12>>2];F[a+52>>2]=F[f+8>>2];F[a+56>>2]=b;b=a- -64|0;F[b>>2]=0;F[b+4>>2]=0;F[a+60>>2]=4128;F[a>>2]=3500;b=F[f+4>>2];F[a+72>>2]=F[f>>2];F[a+76>>2]=b;b=F[f+12>>2];F[a+80>>2]=F[f+8>>2];F[a+84>>2]=b;F[a+104>>2]=1065353216;F[a+108>>2]=-1;F[a+96>>2]=-1;F[a+100>>2]=-1;F[a+88>>2]=1;F[a+92>>2]=-1;F[a+60>>2]=3736;F[a+112>>2]=0;F[a+116>>2]=0;D[a+117|0]=0;D[a+118|0]=0;D[a+119|0]=0;D[a+120|0]=0;D[a+121|0]=0;D[a+122|0]=0;D[a+123|0]=0;D[a+124|0]=0;break h}na();v()}break f}e=a;break e}a=F[i+44>>2];F[j+12>>2]=g;F[j+8>>2]=a;F[j+20>>2]=f;F[j+16>>2]=f+12;f=j+8|0;a=0;j:{k:{switch(b-1|0){case 0:b=ka(60);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b>>2]=4156;a=b;break j;case 3:b=ka(112);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b+60>>2]=0;F[b+64>>2]=0;F[b>>2]=4580;F[b+68>>2]=0;F[b+72>>2]=0;F[b+76>>2]=0;F[b+80>>2]=0;F[b+84>>2]=0;F[b+88>>2]=0;F[b+92>>2]=0;F[b+96>>2]=0;F[b+100>>2]=0;F[b+104>>2]=0;F[b+108>>2]=0;a=b;break j;case 4:b=ka(104);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b+84>>2]=0;F[b+76>>2]=0;F[b+80>>2]=0;F[b+60>>2]=0;F[b+64>>2]=0;F[b>>2]=4816;a=F[f+4>>2];F[b+88>>2]=F[f>>2];F[b+92>>2]=a;a=F[f+12>>2];F[b+96>>2]=F[f+8>>2];F[b+100>>2]=a;a=b;break j;case 5:break k;default:break j}}a=ka(128);F[a+4>>2]=l;F[a>>2]=2960;b=F[d+4>>2];F[a+8>>2]=F[d>>2];F[a+12>>2]=b;b=F[d+12>>2];F[a+16>>2]=F[d+8>>2];F[a+20>>2]=b;b=F[d+20>>2];F[a+24>>2]=F[d+16>>2];F[a+28>>2]=b;F[a+40>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;l:{m:{c=F[d+28>>2];b=F[d+24>>2];if((c|0)!=(b|0)){c=c-b|0;if((c|0)<0){break m}b=ka(c);F[a+36>>2]=b;F[a+32>>2]=b;F[a+40>>2]=(c&-4)+b;e=F[d+24>>2];c=F[d+28>>2];if((e|0)!=(c|0)){while(1){F[b>>2]=F[e>>2];b=b+4|0;e=e+4|0;if((c|0)!=(e|0)){continue}break}}F[a+36>>2]=b}F[a>>2]=4524;b=F[f+4>>2];F[a+44>>2]=F[f>>2];F[a+48>>2]=b;b=F[f+12>>2];F[a+52>>2]=F[f+8>>2];F[a+56>>2]=b;b=a- -64|0;F[b>>2]=0;F[b+4>>2]=0;F[a+60>>2]=5624;F[a>>2]=5040;b=F[f+4>>2];F[a+72>>2]=F[f>>2];F[a+76>>2]=b;b=F[f+12>>2];F[a+80>>2]=F[f+8>>2];F[a+84>>2]=b;F[a+104>>2]=1065353216;F[a+108>>2]=-1;F[a+96>>2]=-1;F[a+100>>2]=-1;F[a+88>>2]=1;F[a+92>>2]=-1;F[a+60>>2]=5260;F[a+112>>2]=0;F[a+116>>2]=0;D[a+117|0]=0;D[a+118|0]=0;D[a+119|0]=0;D[a+120|0]=0;D[a+121|0]=0;D[a+122|0]=0;D[a+123|0]=0;D[a+124|0]=0;break l}na();v()}break j}e=a}Z=j+32|0;break c}na();v()}if(e){break b}}e=ka(44);F[e+4>>2]=k;F[e>>2]=2960;a=F[d+4>>2];F[e+8>>2]=F[d>>2];F[e+12>>2]=a;a=F[d+12>>2];F[e+16>>2]=F[d+8>>2];F[e+20>>2]=a;a=F[d+20>>2];F[e+24>>2]=F[d+16>>2];F[e+28>>2]=a;F[e+40>>2]=0;F[e+32>>2]=0;F[e+36>>2]=0;n:{c=F[d+24>>2];b=F[d+28>>2];if((c|0)!=(b|0)){a=b-c|0;if((a|0)<0){break n}k=ka(a);F[e+32>>2]=k;F[e+40>>2]=(a&-4)+k;while(1){F[k>>2]=F[c>>2];k=k+4|0;c=c+4|0;if((b|0)!=(c|0)){continue}break}F[e+36>>2]=k}F[e>>2]=5652;break b}na();v()}k=e;a=F[h+32>>2];if(!a){break a}F[h+36>>2]=a;ja(a)}Z=h+48|0;return k|0}function rf(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0;m=Z-16|0;Z=m;F[m+12>>2]=b;b=ka(32);F[m>>2]=b;F[m+4>>2]=24;F[m+8>>2]=-2147483616;c=G[1196]|G[1197]<<8|(G[1198]<<16|G[1199]<<24);d=G[1192]|G[1193]<<8|(G[1194]<<16|G[1195]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1188]|G[1189]<<8|(G[1190]<<16|G[1191]<<24);d=G[1184]|G[1185]<<8|(G[1186]<<16|G[1187]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1180]|G[1181]<<8|(G[1182]<<16|G[1183]<<24);d=G[1176]|G[1177]<<8|(G[1178]<<16|G[1179]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;D[b+24|0]=0;l=Z-48|0;Z=l;f=F[m+12>>2];d=a;a=a+16|0;b=F[a>>2];a:{b:{if(!b){break b}c=a;while(1){e=(f|0)>F[b+16>>2];c=e?c:b;b=F[(e?b+4|0:b)>>2];if(b){continue}break}if((a|0)==(c|0)){break b}if((f|0)>=F[c+16>>2]){break a}}F[l+28>>2]=0;F[l+32>>2]=0;y=l+24|0;F[l+24>>2]=y|4;a=l+16|0;F[a>>2]=0;F[a+4>>2]=0;F[l+8>>2]=f;F[l+12>>2]=a;t=l+8|0;a=t;x=Z-16|0;Z=x;u=d+12|0;c=F[u+4>>2];c:{d:{if(!c){o=u+4|0;d=o;break d}a=F[a>>2];while(1){d=c;b=F[c+16>>2];if((b|0)>(a|0)){o=d;c=F[d>>2];if(c){continue}break d}if((a|0)<=(b|0)){g=d;a=0;break c}c=F[d+4>>2];if(c){continue}break}o=d+4|0}g=ka(32);b=F[t>>2];q=g+24|0;a=q;F[a>>2]=0;F[a+4>>2]=0;F[g+16>>2]=b;r=g+20|0;F[r>>2]=a;c=F[t+4>>2];z=t+8|0;if((c|0)!=(z|0)){while(1){p=Z-16|0;Z=p;a=p+8|0;k=c+16|0;e:{f:{g:{h:{i:{j:{k:{f=q;e=r+4|0;l:{if((f|0)==(e|0)){break l}b=G[f+27|0];h=b<<24>>24<0;i=G[k+11|0];n=i<<24>>24;j=(n|0)<0;i=j?F[k+4>>2]:i;b=h?F[f+20>>2]:b;s=i>>>0>b>>>0;w=s?b:i;if(w){j=j?F[k>>2]:k;h=h?F[f+16>>2]:f+16|0;A=sa(j,h,w);if(!A){if(b>>>0>i>>>0){break l}break k}if((A|0)>=0){break k}break l}if(b>>>0<=i>>>0){break j}}h=F[f>>2];m:{a=f;n:{if((a|0)==F[r>>2]){break n}o:{if(!h){b=f;while(1){a=F[b+8>>2];i=F[a>>2]==(b|0);b=a;if(i){continue}break}break o}b=h;while(1){a=b;b=F[b+4>>2];if(b){continue}break}}i=G[k+11|0];s=i<<24>>24;b=(s|0)<0;j=G[a+27|0];n=j<<24>>24<0;p:{i=b?F[k+4>>2]:i;j=n?F[a+20>>2]:j;w=i>>>0>>0?i:j;if(w){b=sa(n?F[a+16>>2]:a+16|0,b?F[k>>2]:k,w);if(b){break p}}if(i>>>0>j>>>0){break n}break m}if((b|0)>=0){break m}}if(!h){F[p+12>>2]=f;a=f;break e}F[p+12>>2]=a;a=a+4|0;break e}b=F[e>>2];if(!b){F[p+12>>2]=e;a=e;break e}h=(s|0)<0?F[k>>2]:k;f=e;while(1){a=b;b=G[b+27|0];e=b<<24>>24<0;b=e?F[a+20>>2]:b;k=b>>>0>>0;q:{r:{s:{t:{n=k?b:i;u:{if(n){e=e?F[a+16>>2]:a+16|0;j=sa(h,e,n);if(!j){if(b>>>0>i>>>0){break u}break t}if((j|0)>=0){break t}break u}if(b>>>0<=i>>>0){break s}}f=a;b=F[a>>2];if(b){continue}break g}b=sa(e,h,n);if(b){break r}}if(k){break q}break g}if((b|0)>=0){break g}}f=a+4|0;b=F[a+4>>2];if(b){continue}break}break g}b=sa(h,j,w);if(b){break i}}if(s){break h}break f}if((b|0)>=0){break f}}h=F[f+4>>2];v:{if(!h){b=f;while(1){a=F[b+8>>2];j=F[a>>2]!=(b|0);b=a;if(j){continue}break}break v}b=h;while(1){a=b;b=F[b>>2];if(b){continue}break}}w:{x:{if((a|0)==(e|0)){break x}j=G[a+27|0];b=j<<24>>24<0;y:{j=b?F[a+20>>2]:j;s=i>>>0>j>>>0?j:i;if(s){b=sa((n|0)<0?F[k>>2]:k,b?F[a+16>>2]:a+16|0,s);if(b){break y}}if(i>>>0>>0){break x}break w}if((b|0)>=0){break w}}if(!h){F[p+12>>2]=f;a=f+4|0;break e}F[p+12>>2]=a;break e}b=F[e>>2];if(!b){F[p+12>>2]=e;a=e;break e}h=(n|0)<0?F[k>>2]:k;f=e;while(1){a=b;b=G[b+27|0];e=b<<24>>24<0;b=e?F[a+20>>2]:b;k=b>>>0>>0;z:{A:{B:{C:{n=k?b:i;D:{if(n){e=e?F[a+16>>2]:a+16|0;j=sa(h,e,n);if(!j){if(b>>>0>i>>>0){break D}break C}if((j|0)>=0){break C}break D}if(b>>>0<=i>>>0){break B}}f=a;b=F[a>>2];if(b){continue}break g}b=sa(e,h,n);if(b){break A}}if(k){break z}break g}if((b|0)>=0){break g}}f=a+4|0;b=F[a+4>>2];if(b){continue}break}}F[p+12>>2]=a;a=f;break e}F[p+12>>2]=f;F[a>>2]=f}f=a;a=F[a>>2];if(a){b=0}else{a=ka(40);b=a+16|0;E:{if(D[c+27|0]>=0){e=F[c+20>>2];F[b>>2]=F[c+16>>2];F[b+4>>2]=e;F[b+8>>2]=F[c+24>>2];break E}ra(b,F[c+16>>2],F[c+20>>2])}b=a+28|0;F:{if(D[c+39|0]>=0){e=F[c+32>>2];F[b>>2]=F[c+28>>2];F[b+4>>2]=e;F[b+8>>2]=F[c+36>>2];break F}ra(b,F[c+28>>2],F[c+32>>2])}F[a+8>>2]=F[p+12>>2];F[a>>2]=0;F[a+4>>2]=0;F[f>>2]=a;b=a;e=F[F[r>>2]>>2];if(e){F[r>>2]=e;b=F[f>>2]}nb(F[r+4>>2],b);F[r+8>>2]=F[r+8>>2]+1;b=1}D[x+12|0]=b;F[x+8>>2]=a;Z=p+16|0;b=F[c+4>>2];G:{if(b){while(1){c=b;b=F[b>>2];if(b){continue}break G}}while(1){a=c;c=F[c+8>>2];if((a|0)!=F[c>>2]){continue}break}}if((c|0)!=(z|0)){continue}break}}F[g+8>>2]=d;F[g>>2]=0;F[g+4>>2]=0;F[o>>2]=g;c=g;a=F[F[u>>2]>>2];if(a){F[u>>2]=a;c=F[o>>2]}nb(F[u+4>>2],c);F[u+8>>2]=F[u+8>>2]+1;a=1}D[l+44|0]=a;F[l+40>>2]=g;Z=x+16|0;c=F[l+40>>2];ib(t|4,F[l+16>>2]);ib(y,F[l+28>>2])}f=Z-48|0;Z=f;d=f+8|0;g=Z-32|0;Z=g;o=g+32|0;b=o;a=g+21|0;H:{if((b|0)==(a|0)){break H}}e=b-a|0;I:{if((e|0)<=9){h=61;if((e|0)<(I[2684]<=1|0)){break I}}D[a|0]=49;b=a+1|0;h=0}F[g+12>>2]=h;F[g+8>>2]=b;h=Z-16|0;Z=h;e=Z-16|0;Z=e;J:{q=F[g+8>>2];g=q-a|0;if(g>>>0<=2147483631){K:{if(g>>>0<11){D[d+11|0]=g|G[d+11|0]&128;D[d+11|0]=G[d+11|0]&127;b=d;break K}t=e+8|0;if(g>>>0>=11){k=g+16&-16;b=k-1|0;b=(b|0)==11?k:b}else{b=10}sb(t,b+1|0);b=F[e+8>>2];F[d>>2]=b;F[d+8>>2]=F[d+8>>2]&-2147483648|F[e+12>>2]&2147483647;F[d+8>>2]=F[d+8>>2]|-2147483648;F[d+4>>2]=g}while(1){if((a|0)!=(q|0)){D[b|0]=G[a|0];b=b+1|0;a=a+1|0;continue}break}D[e+7|0]=0;D[b|0]=G[e+7|0];Z=e+16|0;break J}za();v()}Z=h+16|0;Z=o;F[f+32>>2]=m;L:{M:{a=c+20|0;d=F[a+4>>2];N:{if(!d){g=a+4|0;c=g;break N}b=G[m+11|0];c=b<<24>>24<0;e=c?F[m>>2]:m;b=c?F[m+4>>2]:b;while(1){c=d;d=G[c+27|0];g=d<<24>>24<0;d=g?F[c+20>>2]:d;o=d>>>0>>0;O:{P:{Q:{R:{h=o?d:b;S:{if(h){g=g?F[c+16>>2]:c+16|0;q=sa(e,g,h);if(!q){if(b>>>0>>0){break S}break R}if((q|0)>=0){break R}break S}if(b>>>0>=d>>>0){break Q}}g=c;d=F[c>>2];if(d){continue}break N}d=sa(g,e,h);if(d){break P}}if(o){break O}break M}if((d|0)>=0){break M}}d=F[c+4>>2];if(d){continue}break}g=c+4|0}d=ka(40);e=d+16|0;b=F[f+32>>2];T:{if(D[b+11|0]>=0){o=F[b+4>>2];F[e>>2]=F[b>>2];F[e+4>>2]=o;F[e+8>>2]=F[b+8>>2];break T}ra(e,F[b>>2],F[b+4>>2])}F[d+8>>2]=c;F[d>>2]=0;F[d+4>>2]=0;F[d+36>>2]=0;F[d+28>>2]=0;F[d+32>>2]=0;F[g>>2]=d;c=d;b=F[F[a>>2]>>2];if(b){F[a>>2]=b;c=F[g>>2]}nb(F[a+4>>2],c);F[a+8>>2]=F[a+8>>2]+1;a=1;break L}d=c;a=0}D[f+44|0]=a;F[f+40>>2]=d;a=F[f+40>>2];if(D[a+39|0]<0){ja(F[a+28>>2])}b=F[f+12>>2];F[a+28>>2]=F[f+8>>2];F[a+32>>2]=b;F[a+36>>2]=F[f+16>>2];Z=f+48|0;Z=l+48|0;if(D[m+11|0]<0){ja(F[m>>2])}Z=m+16|0}function zd(a,b){var 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,w=0;h=Z-32|0;Z=h;g=F[F[a+4>>2]+44>>2];c=F[a+8>>2];d=F[c>>2];c=F[c+4>>2];F[h+24>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;d=(c-d>>2>>>0)/3|0;c=F[g+96>>2];f=(F[g+100>>2]-c|0)/12|0;a:{if(d>>>0>f>>>0){e=d-f|0;i=F[g+104>>2];c=F[g+100>>2];if(e>>>0<=(i-c|0)/12>>>0){b:{if(!e){break b}d=c;f=L(e,12)-12|0;i=((f>>>0)/12|0)+1&3;if(i){while(1){l=F[h+20>>2];F[d>>2]=F[h+16>>2];F[d+4>>2]=l;F[d+8>>2]=F[h+24>>2];d=d+12|0;j=j+1|0;if((i|0)!=(j|0)){continue}break}}c=L(e,12)+c|0;if(f>>>0<36){break b}while(1){f=F[h+20>>2];F[d>>2]=F[h+16>>2];F[d+4>>2]=f;F[d+8>>2]=F[h+24>>2];F[d+20>>2]=F[h+24>>2];f=F[h+20>>2];F[d+12>>2]=F[h+16>>2];F[d+16>>2]=f;F[d+32>>2]=F[h+24>>2];f=F[h+20>>2];F[d+24>>2]=F[h+16>>2];F[d+28>>2]=f;f=F[h+20>>2];F[d+36>>2]=F[h+16>>2];F[d+40>>2]=f;F[d+44>>2]=F[h+24>>2];d=d+48|0;if((d|0)!=(c|0)){continue}break}}F[g+100>>2]=c;break a}c:{f=F[g+96>>2];n=(c-f|0)/12|0;d=n+e|0;if(d>>>0<357913942){f=(i-f|0)/12|0;i=f<<1;i=f>>>0>=178956970?357913941:d>>>0>>0?i:d;if(i){if(i>>>0>=357913942){break c}l=ka(L(i,12))}f=L(n,12)+l|0;d=f;e=L(e,12);n=e-12|0;q=((n>>>0)/12|0)+1&3;if(q){while(1){r=F[h+20>>2];F[d>>2]=F[h+16>>2];F[d+4>>2]=r;F[d+8>>2]=F[h+24>>2];d=d+12|0;j=j+1|0;if((q|0)!=(j|0)){continue}break}}e=e+f|0;if(n>>>0>=36){while(1){j=F[h+20>>2];F[d>>2]=F[h+16>>2];F[d+4>>2]=j;F[d+8>>2]=F[h+24>>2];F[d+20>>2]=F[h+24>>2];j=F[h+20>>2];F[d+12>>2]=F[h+16>>2];F[d+16>>2]=j;F[d+32>>2]=F[h+24>>2];j=F[h+20>>2];F[d+24>>2]=F[h+16>>2];F[d+28>>2]=j;j=F[h+20>>2];F[d+36>>2]=F[h+16>>2];F[d+40>>2]=j;F[d+44>>2]=F[h+24>>2];d=d+48|0;if((e|0)!=(d|0)){continue}break}}j=F[g+96>>2];if((j|0)!=(c|0)){while(1){c=c-12|0;n=F[c+4>>2];f=f-12|0;d=f;F[d>>2]=F[c>>2];F[d+4>>2]=n;F[d+8>>2]=F[c+8>>2];if((c|0)!=(j|0)){continue}break}c=F[g+96>>2]}F[g+104>>2]=L(i,12)+l;F[g+100>>2]=e;F[g+96>>2]=f;if(c){ja(c)}break a}na();v()}oa();v()}if(d>>>0>=f>>>0){break a}F[g+100>>2]=c+L(d,12)}d:{if(F[a+216>>2]==F[a+220>>2]){j=F[a+4>>2];c=F[j+44>>2];d=F[c+100>>2];f=F[c+96>>2];if((d|0)!=(f|0)){c=(d-f|0)/12|0;o=c>>>0<=1?1:c;c=0;while(1){d=F[a+8>>2];i=f+L(c,12)|0;g=L(c,3);e:{f:{if((g|0)==-1){e=F[(F[d>>2]+(g<<2)|0)+4>>2];k=-1;g=1;break f}e=-1;k=F[F[d>>2]+(g<<2)>>2];l=g+1|0;if((l|0)==-1){g=0;break f}e=F[F[d>>2]+(l<<2)>>2];g=g+2|0;m=-1;if((g|0)==-1){break e}}m=F[F[d>>2]+(g<<2)>>2]}F[i+8>>2]=m;F[i+4>>2]=e;F[i>>2]=k;c=c+1|0;if((o|0)!=(c|0)){continue}break}}F[F[j+4>>2]+80>>2]=b;c=1;break d}d=0;F[h+24>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;l=F[a+8>>2];c=F[l>>2];g=F[l+4>>2];F[h+8>>2]=0;F[h>>2]=0;F[h+4>>2]=0;b=0;g:{h:{i:{j:{k:{l:{if((c|0)!=(g|0)){c=g-c|0;if((c|0)<0){break l}b=ka(c);F[h>>2]=b;F[h+8>>2]=(c&-4)+b;u=h,w=ma(b,0,c)+c|0,F[u+4>>2]=w}c=F[l+24>>2];if((F[l+28>>2]-c|0)<4){break h}f=0;while(1){g=F[(p<<2)+c>>2];m:{if((g|0)==-1){break m}n:{if(F[F[a+120>>2]+(p>>>3&536870908)>>2]>>>p&1){break n}n=F[a+216>>2];c=F[a+220>>2];if((n|0)==(c|0)){break n}e=g+2|0;i=(g>>>0)%3|0;q=i?g-1|0:e;c=(c-n|0)/144|0;r=c>>>0<=1?1:c;j=0;t=(i|0)!=0|(e|0)!=-1;while(1){s=g<<2;i=L(j,144)+n|0;c=F[s+F[F[i+68>>2]>>2]>>2];o:{if(!(F[F[i+16>>2]+(c>>>3&536870908)>>2]>>>c&1)){break o}c=-1;p:{if(!t){break p}e=F[F[l+12>>2]+(q<<2)>>2];c=-1;if((e|0)==-1){break p}c=e-1|0;if((e>>>0)%3|0){break p}c=e+2|0}if((g|0)==(c|0)){break o}e=s;s=F[i+32>>2];i=F[e+s>>2];while(1){e=0;if((c|0)==-1){break g}if((i|0)!=F[s+(c<<2)>>2]){g=c;break n}q:{r:{if((c>>>0)%3|0){e=c-1|0;break r}e=c+2|0;m=-1;if((e|0)==-1){break q}}c=F[F[l+12>>2]+(e<<2)>>2];m=-1;if((c|0)==-1){break q}m=c-1|0;if((c>>>0)%3|0){break q}m=c+2|0}c=m;if((g|0)!=(c|0)){continue}break}}j=j+1|0;if((r|0)!=(j|0)){continue}break}}i=k-f|0;e=i>>2;F[(g<<2)+b>>2]=e;s:{if(k>>>0>>0){F[k>>2]=g;k=k+4|0;F[h+20>>2]=k;break s}c=e+1|0;if(c>>>0>=1073741824){break k}d=o-f|0;k=d>>>1|0;c=d>>>0>=2147483644?1073741823:c>>>0>>0?k:c;if(c){if(c>>>0>=1073741824){break j}d=ka(c<<2)}else{d=0}e=d+(e<<2)|0;F[e>>2]=g;m=c<<2;c=pa(d,f,i);o=m+c|0;F[h+24>>2]=o;k=e+4|0;F[h+20>>2]=k;F[h+16>>2]=c;if(f){ja(f);l=F[a+8>>2]}f=c}if((g|0)==-1){break m}t:{if((g>>>0)%3|0){c=g-1|0;break t}c=g+2|0;if((c|0)==-1){break m}}c=F[F[l+12>>2]+(c<<2)>>2];if((c|0)==-1){break m}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)==-1){break m}e=g;if((c|0)==(g|0)){break m}while(1){i=c;u:{v:{c=F[a+220>>2];j=F[a+216>>2];if((c|0)==(j|0)){break v}c=(c-j|0)/144|0;n=c>>>0<=1?1:c;c=0;while(1){q=F[(j+L(c,144)|0)+32>>2];r=i<<2;if(F[q+r>>2]==F[q+(e<<2)>>2]){c=c+1|0;if((n|0)!=(c|0)){continue}break v}break}j=k-d|0;e=j>>2;F[b+r>>2]=e;if(k>>>0>>0){F[k>>2]=i;k=k+4|0;F[h+20>>2]=k;f=d;break u}c=e+1|0;if(c>>>0>=1073741824){break i}f=o-d|0;k=f>>>1|0;c=f>>>0>=2147483644?1073741823:c>>>0>>0?k:c;if(c){if(c>>>0>=1073741824){break j}f=ka(c<<2)}else{f=0}e=f+(e<<2)|0;F[e>>2]=i;m=c<<2;c=pa(f,d,j);o=m+c|0;F[h+24>>2]=o;k=e+4|0;F[h+20>>2]=k;F[h+16>>2]=c;if(!d){d=c;break u}ja(d);l=F[a+8>>2];d=c;break u}F[(i<<2)+b>>2]=F[(e<<2)+b>>2]}if((i|0)==-1){break m}w:{if((i>>>0)%3|0){c=i-1|0;break w}c=i+2|0;if((c|0)==-1){break m}}c=F[F[l+12>>2]+(c<<2)>>2];if((c|0)==-1){break m}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)==-1){break m}e=i;if((c|0)!=(g|0)){continue}break}}p=p+1|0;c=F[l+24>>2];if((p|0)>2]-c>>2){continue}break}break h}na();v()}na();v()}oa();v()}na();v()}i=F[a+4>>2];a=F[i+44>>2];c=F[a+100>>2];a=F[a+96>>2];x:{if((c|0)==(a|0)){break x}g=(c-a|0)/12|0;f=g>>>0<=1?1:g;l=f&1;c=0;if(g>>>0>=2){j=f&-2;g=0;while(1){e=L(c,12);f=e+b|0;o=F[f>>2];p=F[f+4>>2];e=a+e|0;F[e+8>>2]=F[f+8>>2];F[e>>2]=o;F[e+4>>2]=p;e=L(c|1,12);f=e+b|0;o=F[f>>2];p=F[f+4>>2];e=a+e|0;F[e+8>>2]=F[f+8>>2];F[e>>2]=o;F[e+4>>2]=p;c=c+2|0;g=g+2|0;if((j|0)!=(g|0)){continue}break}}if(!l){break x}g=L(c,12);c=g+b|0;f=F[c>>2];e=F[c+4>>2];a=a+g|0;F[a+8>>2]=F[c+8>>2];F[a>>2]=f;F[a+4>>2]=e}F[F[i+4>>2]+80>>2]=k-d>>2;e=1}c=e;if(b){ja(b)}if(!d){break d}F[h+20>>2]=d;ja(d)}Z=h+32|0;return c}function de(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0;g=Z+-64|0;Z=g;F[a+8>>2]=e;y=a+32|0;f=F[y>>2];d=F[a+36>>2]-f>>2;a:{b:{if(d>>>0>>0){qa(y,e-d|0);F[g+56>>2]=0;F[g+60>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g>>2]=0;break b}if(d>>>0>e>>>0){F[a+36>>2]=f+(e<<2)}F[g+56>>2]=0;F[g+60>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g>>2]=0;d=0;if(!e){break a}}Fa(g+16|0,e,g);h=F[g+28>>2];d=F[g+32>>2]}F[g>>2]=0;d=d-h>>2;c:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break c}F[g+32>>2]=(e<<2)+h;break c}Fa(g+16|12,e-d|0,g)}F[g>>2]=0;f=F[g+40>>2];d=F[g+44>>2]-f>>2;d:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break d}F[g+44>>2]=f+(e<<2);break d}Fa(g+40|0,e-d|0,g)}F[g>>2]=0;f=F[g+52>>2];d=F[g+56>>2]-f>>2;e:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break e}F[g+56>>2]=f+(e<<2);break e}Fa(g+52|0,e-d|0,g)}f:{if(F[a+8>>2]<=0){break f}i=F[g+16>>2];j=F[a+32>>2];h=0;while(1){d=h<<2;f=F[d+i>>2];m=F[a+16>>2];g:{if((f|0)>(m|0)){F[d+j>>2]=m;break g}d=d+j|0;m=F[a+12>>2];if((m|0)>(f|0)){F[d>>2]=m;break g}F[d>>2]=f}h=h+1|0;d=F[a+8>>2];if((h|0)<(d|0)){continue}break}if((d|0)<=0){break f}d=0;while(1){i=d<<2;f=i+c|0;i=F[b+i>>2]+F[j+i>>2]|0;F[f>>2]=i;h:{if((i|0)>F[a+16>>2]){i=i-F[a+20>>2]|0}else{if((i|0)>=F[a+12>>2]){break h}i=i+F[a+20>>2]|0}F[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}}H=F[a+52>>2];t=F[a+48>>2];z=ka(16);d=z;F[d>>2]=0;F[d+4>>2]=0;F[d+8>>2]=0;F[d+12>>2]=0;F[g+8>>2]=0;F[g>>2]=0;F[g+4>>2]=0;i:{if(e){if(e>>>0>=1073741824){break i}d=e<<2;r=ka(d);F[g>>2]=r;F[g+8>>2]=d+r;ma(r,0,d)}A=1;d=F[a+56>>2];B=F[d>>2];d=F[d+4>>2]-B|0;j:{if((d|0)<8){break j}w=d>>2;I=(w|0)<=2?2:w;J=w>>>0<=1?1:w;C=e&-2;D=e&1;K=e&-4;E=e&3;G=e-1|0;M=e<<2;N=e>>>0<4;A=0;m=1;while(1){k:{l:{m:{n:{if((m|0)!=(J|0)){o:{p:{f=F[(m<<2)+B>>2];if((f|0)==-1){break p}k=1;d=f+2|0;j=(f>>>0)%3|0;x=j?f-1|0:d;s=1<>2];O=n+(x>>>3&536870908)|0;i=0;P=(j|0)!=0|(d|0)!=-1;d=f;q:{while(1){r:{if(F[n+(d>>>3&536870908)>>2]>>>d&1){break r}j=F[F[F[t+64>>2]+12>>2]+(d<<2)>>2];if((j|0)==-1){break r}l=F[H>>2];h=F[t+28>>2];p=F[l+(F[h+(j<<2)>>2]<<2)>>2];if((p|0)>=(m|0)){break r}q=j+1|0;q=F[l+(F[h+(((q>>>0)%3|0?q:j-2|0)<<2)>>2]<<2)>>2];if((q|0)>=(m|0)){break r}h=F[l+(F[h+(j+((j>>>0)%3|0?-1:2)<<2)>>2]<<2)>>2];if((h|0)>=(m|0)){break r}s:{if(!e){break s}j=F[(g+16|0)+L(i,12)>>2];l=L(e,h);q=L(e,q);p=L(e,p);h=0;o=0;if(G){while(1){F[j+(h<<2)>>2]=(F[(h+l<<2)+c>>2]+F[(h+q<<2)+c>>2]|0)-F[(h+p<<2)+c>>2];u=h|1;F[j+(u<<2)>>2]=(F[(l+u<<2)+c>>2]+F[(q+u<<2)+c>>2]|0)-F[(p+u<<2)+c>>2];h=h+2|0;o=o+2|0;if((C|0)!=(o|0)){continue}break}}if(!D){break s}F[j+(h<<2)>>2]=(F[(h+l<<2)+c>>2]+F[(h+q<<2)+c>>2]|0)-F[(h+p<<2)+c>>2]}j=4;i=i+1|0;if((i|0)==4){break q}}t:{if(k&1){h=d-2|0;j=d+1|0;d=-1;j=(j>>>0)%3|0?j:h;if((j|0)==-1|F[n+(j>>>3&536870908)>>2]>>>j&1){break t}j=F[F[F[t+64>>2]+12>>2]+(j<<2)>>2];if((j|0)==-1){break t}d=j+1|0;d=(d>>>0)%3|0?d:j-2|0;break t}u:{if((d>>>0)%3|0){h=d-1|0;break u}h=d+2|0;d=-1;if((h|0)==-1){break t}}d=-1;if(F[n+(h>>>3&536870908)>>2]>>>h&1){break t}j=F[F[F[t+64>>2]+12>>2]+(h<<2)>>2];if((j|0)==-1){break t}if((j>>>0)%3|0){d=j-1|0;break t}d=j+2|0}v:{if((d|0)==(f|0)){break v}if((d|0)==-1&k){if(!P|s&F[O>>2]){break v}d=F[F[F[t+64>>2]+12>>2]+(x<<2)>>2];if((d|0)==-1){break v}k=0;d=(d>>>0)%3|0?d-1|0:d+2|0}if((d|0)!=-1){continue}}break}j=i;if((j|0)<=0){break p}}if(e){ma(r,0,M)}d=j-1|0;q=(d<<2)+z|0;d=L(d,12)+a|0;u=d;x=F[d- -64>>2];k=0;d=F[g>>2];f=0;while(1){i=F[q>>2];F[q>>2]=i+1;if(i>>>0>=x>>>0){break j}w:{if(F[F[u+60>>2]+(i>>>3&536870908)>>2]>>>i&1){break w}f=f+1|0;if(!e){break w}n=F[(g+16|0)+L(k,12)>>2];i=0;h=0;p=0;if(!N){while(1){l=h<<2;o=l+d|0;F[o>>2]=F[l+n>>2]+F[o>>2];o=l|4;s=o+d|0;F[s>>2]=F[n+o>>2]+F[s>>2];o=l|8;s=o+d|0;F[s>>2]=F[n+o>>2]+F[s>>2];l=l|12;o=l+d|0;F[o>>2]=F[l+n>>2]+F[o>>2];h=h+4|0;p=p+4|0;if((K|0)!=(p|0)){continue}break}}if(!E){break w}while(1){l=h<<2;p=l+d|0;F[p>>2]=F[l+n>>2]+F[p>>2];h=h+1|0;i=i+1|0;if((E|0)!=(i|0)){continue}break}}k=k+1|0;if((k|0)!=(j|0)){continue}break}i=L(e,m);if(!f){break o}if(!e){break l}h=0;d=0;if(G){break n}break m}i=L(e,m)}if(F[a+8>>2]<=0){break k}k=(L(m-1|0,e)<<2)+c|0;j=F[y>>2];h=0;while(1){d=h<<2;f=F[d+k>>2];n=F[a+16>>2];x:{if((f|0)>(n|0)){F[d+j>>2]=n;break x}d=d+j|0;n=F[a+12>>2];if((n|0)>(f|0)){F[d>>2]=n;break x}F[d>>2]=f}h=h+1|0;f=F[a+8>>2];if((h|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=i<<2;h=f+c|0;k=b+f|0;while(1){i=d<<2;f=i+h|0;i=F[i+k>>2]+F[j+i>>2]|0;F[f>>2]=i;y:{if((i|0)>F[a+16>>2]){i=i-F[a+20>>2]|0}else{if((i|0)>=F[a+12>>2]){break y}i=i+F[a+20>>2]|0}F[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}break k}ta();v()}while(1){j=h<<2;k=j+r|0;F[k>>2]=F[k>>2]/(f|0);j=(j|4)+r|0;F[j>>2]=F[j>>2]/(f|0);h=h+2|0;d=d+2|0;if((C|0)!=(d|0)){continue}break}}if(!D){break l}d=(h<<2)+r|0;F[d>>2]=F[d>>2]/(f|0)}if(F[a+8>>2]<=0){break k}j=F[y>>2];h=0;while(1){d=h<<2;f=F[d+r>>2];k=F[a+16>>2];z:{if((f|0)>(k|0)){F[d+j>>2]=k;break z}d=d+j|0;k=F[a+12>>2];if((k|0)>(f|0)){F[d>>2]=k;break z}F[d>>2]=f}h=h+1|0;f=F[a+8>>2];if((h|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=i<<2;h=f+c|0;k=b+f|0;while(1){i=d<<2;f=i+h|0;i=F[i+k>>2]+F[j+i>>2]|0;F[f>>2]=i;A:{if((i|0)>F[a+16>>2]){i=i-F[a+20>>2]|0}else{if((i|0)>=F[a+12>>2]){break A}i=i+F[a+20>>2]|0}F[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}}m=m+1|0;A=(w|0)<=(m|0);if((m|0)!=(I|0)){continue}break}}a=F[g>>2];if(a){ja(a)}ja(z);a=F[g+52>>2];if(a){F[g+56>>2]=a;ja(a)}a=F[g+40>>2];if(a){F[g+44>>2]=a;ja(a)}a=F[g+28>>2];if(a){F[g+32>>2]=a;ja(a)}a=F[g+16>>2];if(a){F[g+20>>2]=a;ja(a)}Z=g- -64|0;return A|0}na();v()}function $h(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0;h=Z+-64|0;Z=h;F[a+8>>2]=e;x=a+32|0;f=F[x>>2];d=F[a+36>>2]-f>>2;a:{b:{if(d>>>0>>0){qa(x,e-d|0);F[h+56>>2]=0;F[h+60>>2]=0;F[h+48>>2]=0;F[h+52>>2]=0;F[h+40>>2]=0;F[h+44>>2]=0;F[h+32>>2]=0;F[h+36>>2]=0;F[h+24>>2]=0;F[h+28>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;F[h>>2]=0;break b}if(d>>>0>e>>>0){F[a+36>>2]=f+(e<<2)}F[h+56>>2]=0;F[h+60>>2]=0;F[h+48>>2]=0;F[h+52>>2]=0;F[h+40>>2]=0;F[h+44>>2]=0;F[h+32>>2]=0;F[h+36>>2]=0;F[h+24>>2]=0;F[h+28>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;F[h>>2]=0;d=0;if(!e){break a}}Fa(h+16|0,e,h);i=F[h+28>>2];d=F[h+32>>2]}F[h>>2]=0;d=d-i>>2;c:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break c}F[h+32>>2]=(e<<2)+i;break c}Fa(h+16|12,e-d|0,h)}F[h>>2]=0;f=F[h+40>>2];d=F[h+44>>2]-f>>2;d:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break d}F[h+44>>2]=f+(e<<2);break d}Fa(h+40|0,e-d|0,h)}F[h>>2]=0;f=F[h+52>>2];d=F[h+56>>2]-f>>2;e:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break e}F[h+56>>2]=f+(e<<2);break e}Fa(h+52|0,e-d|0,h)}f:{if(F[a+8>>2]<=0){break f}g=F[h+16>>2];j=F[a+32>>2];i=0;while(1){d=i<<2;f=F[d+g>>2];m=F[a+16>>2];g:{if((f|0)>(m|0)){F[d+j>>2]=m;break g}d=d+j|0;m=F[a+12>>2];if((m|0)>(f|0)){F[d>>2]=m;break g}F[d>>2]=f}i=i+1|0;d=F[a+8>>2];if((i|0)<(d|0)){continue}break}if((d|0)<=0){break f}d=0;while(1){g=d<<2;f=g+c|0;g=F[b+g>>2]+F[g+j>>2]|0;F[f>>2]=g;h:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break h}g=g+F[a+20>>2]|0}F[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}}H=F[a+52>>2];A=F[a+48>>2];y=ka(16);d=y;F[d>>2]=0;F[d+4>>2]=0;F[d+8>>2]=0;F[d+12>>2]=0;F[h+8>>2]=0;F[h>>2]=0;F[h+4>>2]=0;i:{if(e){if(e>>>0>=1073741824){break i}d=e<<2;t=ka(d);F[h>>2]=t;F[h+8>>2]=d+t;ma(t,0,d)}z=1;d=F[a+56>>2];B=F[d>>2];d=F[d+4>>2]-B|0;j:{if((d|0)<8){break j}w=d>>2;I=(w|0)<=2?2:w;J=w>>>0<=1?1:w;C=e&-2;D=e&1;K=e&-4;E=e&3;G=e-1|0;M=e<<2;N=e>>>0<4;z=0;m=1;while(1){k:{l:{m:{n:{if((m|0)!=(J|0)){o:{p:{f=F[(m<<2)+B>>2];if((f|0)==-1){break p}n=F[A+12>>2];d=f+2|0;g=(f>>>0)%3|0;q=n+((g?f-1|0:d)<<2)|0;j=0;u=(g|0)!=0|(d|0)!=-1;k=1;d=f;q:{while(1){g=F[n+(d<<2)>>2];r:{if((g|0)==-1){break r}l=-1;p=F[H>>2];r=F[A>>2];i=p+(F[r+(g<<2)>>2]<<2)|0;o=g+1|0;o=(o>>>0)%3|0?o:g-2|0;if((o|0)!=-1){l=F[r+(o<<2)>>2]}o=F[i>>2];s:{t:{if((g>>>0)%3|0){i=g-1|0;break t}i=g+2|0;s=-1;if((i|0)==-1){break s}}s=F[r+(i<<2)>>2]}if((m|0)<=(o|0)){break r}i=F[p+(l<<2)>>2];if((i|0)>=(m|0)){break r}l=F[p+(s<<2)>>2];if((l|0)>=(m|0)){break r}g=F[(h+16|0)+L(j,12)>>2];u:{if(!e){break u}l=L(e,l);r=L(e,i);p=L(e,o);i=0;s=0;if(G){while(1){F[g+(i<<2)>>2]=(F[(i+l<<2)+c>>2]+F[(i+r<<2)+c>>2]|0)-F[(i+p<<2)+c>>2];o=i|1;F[g+(o<<2)>>2]=(F[(l+o<<2)+c>>2]+F[(o+r<<2)+c>>2]|0)-F[(o+p<<2)+c>>2];i=i+2|0;s=s+2|0;if((C|0)!=(s|0)){continue}break}}if(!D){break u}F[g+(i<<2)>>2]=(F[(i+l<<2)+c>>2]+F[(i+r<<2)+c>>2]|0)-F[(i+p<<2)+c>>2]}g=4;j=j+1|0;if((j|0)==4){break q}}v:{if(k&1){i=d+1|0;d=(i>>>0)%3|0?i:d-2|0;g=-1;if((d|0)==-1){break v}d=F[n+(d<<2)>>2];g=-1;if((d|0)==-1){break v}g=d+1|0;g=(g>>>0)%3|0?g:d-2|0;break v}w:{if((d>>>0)%3|0){i=d-1|0;break w}i=d+2|0;g=-1;if((i|0)==-1){break v}}d=F[n+(i<<2)>>2];g=-1;if((d|0)==-1){break v}g=d-1|0;if((d>>>0)%3|0){break v}g=d+2|0}d=g;x:{if((f|0)==(d|0)){break x}if((d|0)==-1&k){if(!u){break x}d=F[q>>2];if((d|0)==-1){break x}k=0;d=(d>>>0)%3|0?d-1|0:d+2|0}if((d|0)!=-1){continue}}break}g=j;if((g|0)<=0){break p}}if(e){ma(t,0,M)}d=g-1|0;r=(d<<2)+y|0;d=L(d,12)+a|0;o=d;s=F[d- -64>>2];k=0;d=F[h>>2];f=0;while(1){j=F[r>>2];F[r>>2]=j+1;if(j>>>0>=s>>>0){break j}y:{if(F[F[o+60>>2]+(j>>>3&536870908)>>2]>>>j&1){break y}f=f+1|0;if(!e){break y}j=F[(h+16|0)+L(k,12)>>2];l=0;i=0;p=0;if(!N){while(1){n=i<<2;q=n+d|0;F[q>>2]=F[j+n>>2]+F[q>>2];q=n|4;u=q+d|0;F[u>>2]=F[j+q>>2]+F[u>>2];q=n|8;u=q+d|0;F[u>>2]=F[j+q>>2]+F[u>>2];n=n|12;q=n+d|0;F[q>>2]=F[j+n>>2]+F[q>>2];i=i+4|0;p=p+4|0;if((K|0)!=(p|0)){continue}break}}if(!E){break y}while(1){n=i<<2;p=n+d|0;F[p>>2]=F[j+n>>2]+F[p>>2];i=i+1|0;l=l+1|0;if((E|0)!=(l|0)){continue}break}}k=k+1|0;if((k|0)!=(g|0)){continue}break}g=L(e,m);if(!f){break o}if(!e){break l}i=0;d=0;if(G){break n}break m}g=L(e,m)}if(F[a+8>>2]<=0){break k}k=(L(m-1|0,e)<<2)+c|0;j=F[x>>2];i=0;while(1){d=i<<2;f=F[d+k>>2];l=F[a+16>>2];z:{if((f|0)>(l|0)){F[d+j>>2]=l;break z}d=d+j|0;l=F[a+12>>2];if((l|0)>(f|0)){F[d>>2]=l;break z}F[d>>2]=f}i=i+1|0;f=F[a+8>>2];if((i|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=g<<2;i=f+c|0;k=b+f|0;while(1){g=d<<2;f=g+i|0;g=F[g+k>>2]+F[g+j>>2]|0;F[f>>2]=g;A:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break A}g=g+F[a+20>>2]|0}F[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}break k}ta();v()}while(1){j=i<<2;k=j+t|0;F[k>>2]=F[k>>2]/(f|0);j=(j|4)+t|0;F[j>>2]=F[j>>2]/(f|0);i=i+2|0;d=d+2|0;if((C|0)!=(d|0)){continue}break}}if(!D){break l}d=(i<<2)+t|0;F[d>>2]=F[d>>2]/(f|0)}if(F[a+8>>2]<=0){break k}j=F[x>>2];i=0;while(1){d=i<<2;f=F[d+t>>2];k=F[a+16>>2];B:{if((f|0)>(k|0)){F[d+j>>2]=k;break B}d=d+j|0;k=F[a+12>>2];if((k|0)>(f|0)){F[d>>2]=k;break B}F[d>>2]=f}i=i+1|0;f=F[a+8>>2];if((i|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=g<<2;i=f+c|0;k=b+f|0;while(1){g=d<<2;f=g+i|0;g=F[g+k>>2]+F[g+j>>2]|0;F[f>>2]=g;C:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break C}g=g+F[a+20>>2]|0}F[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}}m=m+1|0;z=(w|0)<=(m|0);if((m|0)!=(I|0)){continue}break}}a=F[h>>2];if(a){ja(a)}ja(y);a=F[h+52>>2];if(a){F[h+56>>2]=a;ja(a)}a=F[h+40>>2];if(a){F[h+44>>2]=a;ja(a)}a=F[h+28>>2];if(a){F[h+32>>2]=a;ja(a)}a=F[h+16>>2];if(a){F[h+20>>2]=a;ja(a)}Z=h- -64|0;return z|0}na();v()}function Yh(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=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,$=0,aa=0;a:{b:{if((e|0)!=2){break b}F[a+8>>2]=2;F[a- -64>>2]=f;M=a+32|0;e=F[M>>2];d=F[a+36>>2]-e|0;c:{if(d>>>0<=7){qa(M,2-(d>>>2|0)|0);break c}if((d|0)==8){break c}F[a+36>>2]=e+8}i=1;d=F[a+56>>2];d=F[d+4>>2]-F[d>>2]|0;if((d|0)<=0){break b}o=a+60|0;d=d>>>2|0;X=d>>>0<=1?1:d;Y=a+68|0;d=0;while(1){f=F[a+56>>2];e=F[f>>2];if(F[f+4>>2]-e>>2>>>0<=d>>>0){break a}k=Z-80|0;Z=k;f=-1;d:{e:{e=F[e+(d<<2)>>2];if((e|0)==-1){break e}i=F[o+32>>2];g=e+1|0;g=(g>>>0)%3|0?g:e-2|0;if((g|0)!=-1){f=F[F[i>>2]+(g<<2)>>2]}p=-1;e=e+((e>>>0)%3|0?-1:2)|0;if((e|0)!=-1){p=F[F[i>>2]+(e<<2)>>2]}i=F[o+36>>2];e=F[i>>2];i=F[i+4>>2]-e>>2;if(i>>>0<=f>>>0|i>>>0<=p>>>0){break e}f:{g:{h:{i:{j:{k:{j=F[e+(p<<2)>>2];f=F[e+(f<<2)>>2];if((j|0)>=(d|0)|(f|0)>=(d|0)){break k}i=(j<<3)+c|0;w=F[i+4>>2];g=(f<<3)+c|0;e=F[g+4>>2];l=F[i>>2];i=F[g>>2];if(!((l|0)!=(i|0)|(e|0)!=(w|0))){F[o+8>>2]=i;F[o+12>>2]=e;break j}p=F[F[o+4>>2]+(d<<2)>>2];F[k+72>>2]=0;F[k+76>>2]=0;g=k- -64|0;F[g>>2]=0;F[g+4>>2]=0;F[k+56>>2]=0;F[k+60>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+56|0);p=F[F[o+4>>2]+(f<<2)>>2];F[k+48>>2]=0;F[k+52>>2]=0;F[k+40>>2]=0;F[k+44>>2]=0;F[k+32>>2]=0;F[k+36>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+32|0);p=F[F[o+4>>2]+(j<<2)>>2];F[k+24>>2]=0;F[k+28>>2]=0;F[k+16>>2]=0;F[k+20>>2]=0;F[k+8>>2]=0;F[k+12>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+8|0);g=F[k+16>>2];n=F[k+40>>2];x=g-n|0;N=F[k+44>>2];g=F[k+20>>2]-(N+(g>>>0>>0)|0)|0;H=g;j=ki(x,g,x,g);q=_;g=F[k+8>>2];z=F[k+32>>2];A=g-z|0;O=F[k+36>>2];g=F[k+12>>2]-(O+(g>>>0>>0)|0)|0;I=g;h=j;j=ki(A,g,A,g);g=h+j|0;h=_+q|0;h=g>>>0>>0?h+1|0:h;j=F[k+24>>2];B=F[k+48>>2];C=j-B|0;P=F[k+52>>2];j=F[k+28>>2]-(P+(j>>>0>>0)|0)|0;J=j;m=g;g=ki(C,j,C,j);r=m+g|0;h=_+h|0;s=g>>>0>r>>>0?h+1|0:h;if(!(s|r)){break k}p=0;E=mi(-1,2147483647,r,s);f=i>>31;R=f;h=f>>31;Q=i;g=h;q=i^g;i=q-g|0;f=(f^g)-((g>>>0>q>>>0)+g|0)|0;g=f;f=e>>31;S=f;K=e;e=f>>31;q=K^e;m=q-e|0;h=f>>31;e=(h^f)-((e>>>0>q>>>0)+h|0)|0;f=(g|0)==(e|0)&i>>>0>m>>>0|e>>>0>>0;i=f?i:m;j=_;e=f?g:e;if((j|0)==(e|0)&i>>>0>E>>>0|e>>>0>j>>>0){break f}i=F[k+64>>2];T=F[k+68>>2];e=ki(i-n|0,T-((i>>>0>>0)+N|0)|0,x,H);f=_;g=F[k+56>>2];U=F[k+60>>2];j=ki(g-z|0,U-((g>>>0>>0)+O|0)|0,A,I);e=j+e|0;h=_+f|0;h=e>>>0>>0?h+1|0:h;f=e;m=F[k+72>>2];V=F[k+76>>2];e=ki(m-B|0,V-((m>>>0>>0)+P|0)|0,C,J);j=f+e|0;f=_+h|0;q=e>>>0>j>>>0?f+1|0:f;e=l;E=e-Q|0;e=(e>>31)-((e>>>0>>0)+R|0)|0;W=e;l=e>>31;y=l^E;f=y-l|0;h=e>>31;e=(h^e)-((l>>>0>y>>>0)+h|0)|0;h=e;y=w-K|0;e=(w>>31)-((w>>>0>>0)+S|0)|0;w=e;l=f;t=e>>31;u=t^y;L=u-t|0;f=e>>31;e=(f^e)-((t>>>0>u>>>0)+f|0)|0;f=(h|0)==(e|0)&l>>>0>L>>>0|e>>>0>>0;f=mi(-1,2147483647,f?l:L,f?h:e)>>>0>>0;e=_;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break f}e=I>>31;f=e;l=e^A;e=l-e|0;f=(f^I)-((f>>>0>l>>>0)+f|0)|0;h=H>>31;t=h^x;u=t-h|0;l=(h^H)-((h>>>0>t>>>0)+h|0)|0;h=(f|0)==(l|0)&e>>>0>u>>>0|f>>>0>l>>>0;e=h?e:u;f=h?f:l;h=J>>31;L=e;t=h^C;u=t-h|0;l=(h^J)-((h>>>0>t>>>0)+h|0)|0;e=(f|0)==(l|0)&e>>>0>u>>>0|f>>>0>l>>>0;f=mi(-1,2147483647,e?L:u,e?f:l)>>>0>>0;e=_;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break f}l=1;e=0;f=n;n=li(ki(j,q,x,H),_,r,s);f=f+n|0;h=_+N|0;h=f>>>0>>0?h+1|0:h;n=i-f|0;f=T-((f>>>0>i>>>0)+h|0)|0;n=ki(n,f,n,f);x=_;f=g;h=li(ki(j,q,A,I),_,r,s);i=h+z|0;g=_+O|0;g=h>>>0>i>>>0?g+1|0:g;h=f-i|0;f=U-((f>>>0>>0)+g|0)|0;g=ki(h,f,h,f);i=g+n|0;f=_+x|0;f=g>>>0>i>>>0?f+1|0:f;n=i;g=li(ki(j,q,C,J),_,r,s);i=g+B|0;h=_+P|0;h=g>>>0>i>>>0?h+1|0:h;g=m-i|0;i=V-((i>>>0>m>>>0)+h|0)|0;m=ki(g,i,g,i);i=m+n|0;g=_+f|0;f=ki(i,i>>>0>>0?g+1|0:g,r,s);i=_;m=i;if(!i&f>>>0<=1){break i}h=f;while(1){g=e<<1|l>>>31;l=l<<1;e=g;n=!i&h>>>0>7|(i|0)!=0;h=(i&3)<<30|h>>>2;i=i>>>2|0;if(n){continue}break}break h}if((d|0)>(f|0)){e=f<<1}else{if((d|0)<=0){F[o+8>>2]=0;F[o+12>>2]=0;break j}e=(d<<1)-2|0}e=(e<<2)+c|0;F[o+8>>2]=F[e>>2];F[o+12>>2]=F[e+4>>2]}p=1;break f}e=m;l=f;if(f-1|0){break g}}while(1){i=mi(f,m,l,e);h=e+_|0;e=i+l|0;h=e>>>0>>0?h+1|0:h;l=(h&1)<<31|e>>>1;e=h>>>1|0;i=ki(l,e,l,e);g=_;if((m|0)==(g|0)&f>>>0>>0|g>>>0>m>>>0){continue}break}}f=F[o+20>>2];if(!f){break f}g=f-1|0;h=F[F[o+16>>2]+(g>>>3&536870908)>>2];F[o+20>>2]=g;p=1;f=ki(j,q,y,w);i=_;n=ki(r,s,K,S);m=n+f|0;f=_+i|0;f=m>>>0>>0?f+1|0:f;i=ki(l,e,E,W);g=h>>>g&1;h=g?0-i|0:i;m=h+m|0;n=f;f=_;i=n+(g?0-(f+((i|0)!=0)|0)|0:f)|0;$=o,aa=li(m,h>>>0>m>>>0?i+1|0:i,r,s),F[$+12>>2]=aa;f=ki(j,q,E,W);i=_;j=ki(r,s,Q,R);f=j+f|0;h=_+i|0;e=ki(l,e,y,w);i=0-e|0;l=_;h=(f>>>0>>0?h+1|0:h)+(g?l:0-(((e|0)!=0)+l|0)|0)|0;i=g?e:i;f=i+f|0;$=o,aa=li(f,f>>>0>>0?h+1|0:h,r,s),F[$+8>>2]=aa}Z=k+80|0;e=p;break d}ta();v()}i=e;if(!e){return 0}l:{if(F[a+8>>2]<=0){break l}l=F[M>>2];e=0;while(1){f=e<<2;g=F[f+Y>>2];j=F[a+16>>2];m:{if((g|0)>(j|0)){F[f+l>>2]=j;break m}f=f+l|0;j=F[a+12>>2];if((j|0)>(g|0)){F[f>>2]=j;break m}F[f>>2]=g}e=e+1|0;g=F[a+8>>2];if((e|0)<(g|0)){continue}break}f=0;if((g|0)<=0){break l}e=d<<3;j=e+c|0;q=b+e|0;while(1){g=f<<2;e=g+j|0;g=F[g+q>>2]+F[g+l>>2]|0;F[e>>2]=g;n:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break n}g=g+F[a+20>>2]|0}F[e>>2]=g}f=f+1|0;if((f|0)>2]){continue}break}}d=d+1|0;if((X|0)!=(d|0)){continue}break}}return i|0}ta();v()}function hi(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=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,$=0,aa=0;a:{b:{if((e|0)!=2){break b}F[a+8>>2]=2;F[a- -64>>2]=f;M=a+32|0;e=F[M>>2];d=F[a+36>>2]-e|0;c:{if(d>>>0<=7){qa(M,2-(d>>>2|0)|0);break c}if((d|0)==8){break c}F[a+36>>2]=e+8}p=1;d=F[a+56>>2];d=F[d+4>>2]-F[d>>2]|0;if((d|0)<=0){break b}o=a+60|0;d=d>>>2|0;X=d>>>0<=1?1:d;Y=a+68|0;d=0;while(1){e=F[a+56>>2];h=F[e>>2];if(F[e+4>>2]-h>>2>>>0<=d>>>0){break a}k=Z-80|0;Z=k;f=-1;h=F[h+(d<<2)>>2];e=-1;d:{if((h|0)==-1){break d}e=h+1|0;f=(e>>>0)%3|0?e:h-2|0;e=h-1|0;if((h>>>0)%3|0){break d}e=h+2|0}g=F[o+36>>2];h=F[g>>2];e:{f:{g:{h:{i:{g=F[g+4>>2]-h>>2;i=f<<2;f=F[F[o+32>>2]+28>>2];j=F[i+f>>2];if(g>>>0<=j>>>0){break i}e=F[f+(e<<2)>>2];if(e>>>0>=g>>>0){break i}j:{k:{l=F[h+(e<<2)>>2];f=F[h+(j<<2)>>2];if((l|0)>=(d|0)|(f|0)>=(d|0)){break k}h=(l<<3)+c|0;w=F[h+4>>2];g=(f<<3)+c|0;e=F[g+4>>2];j=F[h>>2];h=F[g>>2];if(!((j|0)!=(h|0)|(e|0)!=(w|0))){F[o+8>>2]=h;F[o+12>>2]=e;break j}p=F[F[o+4>>2]+(d<<2)>>2];F[k+72>>2]=0;F[k+76>>2]=0;g=k- -64|0;F[g>>2]=0;F[g+4>>2]=0;F[k+56>>2]=0;F[k+60>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+56|0);p=F[F[o+4>>2]+(f<<2)>>2];F[k+48>>2]=0;F[k+52>>2]=0;F[k+40>>2]=0;F[k+44>>2]=0;F[k+32>>2]=0;F[k+36>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+32|0);p=F[F[o+4>>2]+(l<<2)>>2];F[k+24>>2]=0;F[k+28>>2]=0;F[k+16>>2]=0;F[k+20>>2]=0;F[k+8>>2]=0;F[k+12>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+8|0);g=F[k+16>>2];n=F[k+40>>2];x=g-n|0;N=F[k+44>>2];g=F[k+20>>2]-(N+(g>>>0>>0)|0)|0;H=g;l=ki(x,g,x,g);q=_;g=F[k+8>>2];z=F[k+32>>2];A=g-z|0;O=F[k+36>>2];g=F[k+12>>2]-(O+(g>>>0>>0)|0)|0;I=g;i=l;l=ki(A,g,A,g);g=i+l|0;i=_+q|0;i=g>>>0>>0?i+1|0:i;l=F[k+24>>2];B=F[k+48>>2];C=l-B|0;P=F[k+52>>2];l=F[k+28>>2]-(P+(l>>>0>>0)|0)|0;J=l;m=g;g=ki(C,l,C,l);r=m+g|0;i=_+i|0;s=g>>>0>r>>>0?i+1|0:i;if(!(s|r)){break k}p=0;E=mi(-1,2147483647,r,s);f=h>>31;R=f;i=f>>31;Q=h;g=i;q=h^g;h=q-g|0;f=(f^g)-((g>>>0>q>>>0)+g|0)|0;g=f;f=e>>31;S=f;K=e;e=f>>31;q=K^e;m=q-e|0;i=f>>31;e=(i^f)-((e>>>0>q>>>0)+i|0)|0;f=(g|0)==(e|0)&h>>>0>m>>>0|e>>>0>>0;h=f?h:m;l=_;e=f?g:e;if((l|0)==(e|0)&h>>>0>E>>>0|e>>>0>l>>>0){break e}h=F[k+64>>2];T=F[k+68>>2];e=ki(h-n|0,T-((h>>>0>>0)+N|0)|0,x,H);f=_;g=F[k+56>>2];U=F[k+60>>2];l=ki(g-z|0,U-((g>>>0>>0)+O|0)|0,A,I);e=l+e|0;i=_+f|0;i=e>>>0>>0?i+1|0:i;f=e;m=F[k+72>>2];V=F[k+76>>2];e=ki(m-B|0,V-((m>>>0>>0)+P|0)|0,C,J);l=f+e|0;f=_+i|0;q=e>>>0>l>>>0?f+1|0:f;e=j;E=e-Q|0;e=(e>>31)-((e>>>0>>0)+R|0)|0;W=e;j=e>>31;y=j^E;f=y-j|0;i=e>>31;e=(i^e)-((j>>>0>y>>>0)+i|0)|0;i=e;y=w-K|0;e=(w>>31)-((w>>>0>>0)+S|0)|0;w=e;j=f;t=e>>31;u=t^y;L=u-t|0;f=e>>31;e=(f^e)-((t>>>0>u>>>0)+f|0)|0;f=(i|0)==(e|0)&j>>>0>L>>>0|e>>>0>>0;f=mi(-1,2147483647,f?j:L,f?i:e)>>>0>>0;e=_;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break e}e=I>>31;f=e;j=e^A;e=j-e|0;f=(f^I)-((f>>>0>j>>>0)+f|0)|0;i=H>>31;t=i^x;u=t-i|0;j=(i^H)-((i>>>0>t>>>0)+i|0)|0;i=(f|0)==(j|0)&e>>>0>u>>>0|f>>>0>j>>>0;e=i?e:u;f=i?f:j;i=J>>31;L=e;t=i^C;u=t-i|0;j=(i^J)-((i>>>0>t>>>0)+i|0)|0;e=(f|0)==(j|0)&e>>>0>u>>>0|f>>>0>j>>>0;f=mi(-1,2147483647,e?L:u,e?f:j)>>>0>>0;e=_;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break e}j=1;e=0;f=n;n=li(ki(l,q,x,H),_,r,s);f=f+n|0;i=_+N|0;i=f>>>0>>0?i+1|0:i;n=h-f|0;f=T-((f>>>0>h>>>0)+i|0)|0;n=ki(n,f,n,f);x=_;f=g;i=li(ki(l,q,A,I),_,r,s);h=i+z|0;g=_+O|0;g=h>>>0>>0?g+1|0:g;i=f-h|0;f=U-((f>>>0>>0)+g|0)|0;g=ki(i,f,i,f);h=g+n|0;f=_+x|0;f=h>>>0>>0?f+1|0:f;n=h;g=li(ki(l,q,C,J),_,r,s);h=g+B|0;i=_+P|0;i=h>>>0>>0?i+1|0:i;g=m-h|0;h=V-((h>>>0>m>>>0)+i|0)|0;m=ki(g,h,g,h);h=m+n|0;g=_+f|0;f=ki(h,h>>>0>>0?g+1|0:g,r,s);h=_;m=h;if(!h&f>>>0<=1){break h}i=f;while(1){g=e<<1|j>>>31;j=j<<1;e=g;n=!h&i>>>0>7|(h|0)!=0;i=(h&3)<<30|i>>>2;h=h>>>2|0;if(n){continue}break}break g}if((d|0)>(f|0)){e=f<<1}else{if((d|0)<=0){F[o+8>>2]=0;F[o+12>>2]=0;break j}e=(d<<1)-2|0}e=(e<<2)+c|0;F[o+8>>2]=F[e>>2];F[o+12>>2]=F[e+4>>2]}p=1;break e}ta();v()}e=m;j=f;if(f-1|0){break f}}while(1){h=mi(f,m,j,e);i=e+_|0;e=h+j|0;i=e>>>0>>0?i+1|0:i;j=(i&1)<<31|e>>>1;e=i>>>1|0;h=ki(j,e,j,e);g=_;if((m|0)==(g|0)&f>>>0>>0|g>>>0>m>>>0){continue}break}}f=F[o+20>>2];if(!f){break e}g=f-1|0;i=F[F[o+16>>2]+(g>>>3&536870908)>>2];F[o+20>>2]=g;p=1;f=ki(l,q,y,w);h=_;n=ki(r,s,K,S);m=n+f|0;f=_+h|0;f=m>>>0>>0?f+1|0:f;h=ki(j,e,E,W);g=i>>>g&1;i=g?0-h|0:h;m=i+m|0;n=f;f=_;h=n+(g?0-(f+((h|0)!=0)|0)|0:f)|0;$=o,aa=li(m,i>>>0>m>>>0?h+1|0:h,r,s),F[$+12>>2]=aa;f=ki(l,q,E,W);h=_;l=ki(r,s,Q,R);f=l+f|0;i=_+h|0;e=ki(j,e,y,w);h=0-e|0;j=_;i=(f>>>0>>0?i+1|0:i)+(g?j:0-(((e|0)!=0)+j|0)|0)|0;h=g?e:h;f=h+f|0;$=o,aa=li(f,f>>>0>>0?i+1|0:i,r,s),F[$+8>>2]=aa}Z=k+80|0;if(!p){return 0}l:{if(F[a+8>>2]<=0){break l}g=F[M>>2];e=0;while(1){f=e<<2;h=F[f+Y>>2];j=F[a+16>>2];m:{if((h|0)>(j|0)){F[f+g>>2]=j;break m}f=f+g|0;j=F[a+12>>2];if((j|0)>(h|0)){F[f>>2]=j;break m}F[f>>2]=h}e=e+1|0;h=F[a+8>>2];if((e|0)<(h|0)){continue}break}f=0;if((h|0)<=0){break l}e=d<<3;j=e+c|0;l=b+e|0;while(1){h=f<<2;e=h+j|0;h=F[h+l>>2]+F[h+g>>2]|0;F[e>>2]=h;n:{if((h|0)>F[a+16>>2]){i=h-F[a+20>>2]|0}else{if((h|0)>=F[a+12>>2]){break n}i=h+F[a+20>>2]|0}F[e>>2]=i}f=f+1|0;if((f|0)>2]){continue}break}}d=d+1|0;if((X|0)!=(d|0)){continue}break}}return p|0}ta();v()}function Gd(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=Z-96|0;Z=n;m=F[a+4>>2];d=F[m+32>>2];j=F[d+8>>2];i=F[d+12>>2];e=i;c=F[d+20>>2];f=F[d+16>>2];a:{if((e|0)<=(c|0)&f>>>0>=j>>>0|(c|0)>(e|0)){break a}o=F[d>>2];h=G[o+f|0];g=f+1|0;e=g?c:c+1|0;F[d+16>>2]=g;F[d+20>>2]=e;if((e|0)>=(i|0)&g>>>0>=j>>>0|(e|0)>(i|0)){break a}p=G[g+o|0];g=f+2|0;e=g>>>0<2?c+1|0:c;F[d+16>>2]=g;F[d+20>>2]=e;l=h<<24>>24;b:{if((l|0)>=0){k=F[a+216>>2];if(h>>>0>=(F[a+220>>2]-k|0)/144>>>0){break a}k=k+L(h,144)|0;if(F[k>>2]<0){break b}break a}if(F[a+212>>2]>=0){break a}k=a+212|0}F[k>>2]=b;c:{d:{e:{f:{g:{h:{k=H[m+36>>1];i:{if(((k<<8|k>>>8)&65535)>>>0>=258){if((e|0)>=(i|0)&g>>>0>=j>>>0|(e|0)>(i|0)){break a}e=G[g+o|0];f=f+3|0;c=f>>>0<3?c+1|0:c;F[d+16>>2]=f;F[d+20>>2]=c;if(e>>>0>1){break a}d=e>>>0<2?e:0;if(!p){break i}if(!d){break h}break a}if(p){break g}d=0}if((l|0)<0){e=a+184|0}else{c=F[a+216>>2]+L(h,144)|0;D[c+100|0]=0;e=c+104|0}if((d|0)!=1){break e}c=Z-112|0;Z=c;g=F[F[a+4>>2]+44>>2];d=ka(120);F[d>>2]=8924;F[d+4>>2]=0;F[d+116>>2]=0;F[d+112>>2]=e;F[d+108>>2]=g;F[d+12>>2]=0;F[d+16>>2]=0;F[d+20>>2]=0;F[d+24>>2]=0;F[d+28>>2]=0;F[d+32>>2]=0;F[d+36>>2]=0;F[d+40>>2]=0;F[d+44>>2]=0;F[d+48>>2]=0;F[d+52>>2]=0;F[d+56>>2]=0;F[d+60>>2]=0;F[d+8>>2]=9136;f=d- -64|0;F[f>>2]=0;F[f+4>>2]=0;F[d+72>>2]=0;F[d+76>>2]=0;F[d+80>>2]=0;F[d+84>>2]=0;F[d+88>>2]=0;F[d+104>>2]=0;F[d+96>>2]=0;F[d+100>>2]=0;f=F[a+8>>2];F[c+48>>2]=0;F[c+52>>2]=0;F[c+40>>2]=0;F[c+44>>2]=0;j=c+32|0;F[j>>2]=0;F[j+4>>2]=0;F[c+24>>2]=0;F[c+28>>2]=0;h=c- -64|0;F[h>>2]=0;F[h+4>>2]=0;F[c+72>>2]=0;F[c+76>>2]=0;F[c+80>>2]=0;F[c+84>>2]=0;F[c+88>>2]=0;F[c+104>>2]=0;F[c+16>>2]=0;F[c+20>>2]=0;F[c+56>>2]=0;F[c+60>>2]=0;F[c+8>>2]=9136;F[c+96>>2]=0;F[c+100>>2]=0;F[c+12>>2]=f;h=F[f>>2];i=F[f+4>>2];D[c+111|0]=0;k=j;j=c+111|0;Ea(k,(i-h>>2>>>0)/3|0,j);h=F[c+12>>2];i=F[h+28>>2];h=F[h+24>>2];D[c+111|0]=0;Ea(c+44|0,i-h>>2,j);F[c+28>>2]=d;F[c+24>>2]=g;F[c+20>>2]=e;F[c+16>>2]=f;f=d+8|0;e=c+8|0;lc(f,e);j:{if((e|0)==(f|0)){F[d+92>>2]=F[e+84>>2];break j}gb(d+56|0,F[e+48>>2],F[e+52>>2]);gb(d+68|0,F[e+60>>2],F[e- -64>>2]);gb(d+80|0,F[e+72>>2],F[e+76>>2]);F[d+92>>2]=F[e+84>>2];k:{h=F[e+92>>2];j=F[e+88>>2];i=h-j|0;e=i>>2;f=F[d+104>>2];g=F[d+96>>2];if(e>>>0<=f-g>>2>>>0){i=F[d+100>>2]-g|0;f=i+j|0;m=i>>2;i=e>>>0>m>>>0?f:h;l=i-j|0;if((i|0)!=(j|0)){pa(g,j,l)}if(e>>>0>m>>>0){e=F[d+100>>2];if((h|0)!=(i|0)){while(1){F[e>>2]=F[f>>2];e=e+4|0;f=f+4|0;if((h|0)!=(f|0)){continue}break}}F[d+100>>2]=e;break k}F[d+100>>2]=g+l;break k}if(g){F[d+100>>2]=g;ja(g);F[d+104>>2]=0;F[d+96>>2]=0;F[d+100>>2]=0;f=0}l:{if((i|0)<0){break l}g=f>>>1|0;e=f>>>0>=2147483644?1073741823:e>>>0>>0?g:e;if(e>>>0>=1073741824){break l}f=e<<2;e=ka(f);F[d+96>>2]=e;F[d+104>>2]=e+f;if((h|0)!=(j|0)){f=e;e=(i-4&-4)+4|0;e=la(f,j,e)+e|0}F[d+100>>2]=e;break k}na();v()}}F[c+8>>2]=9136;e=F[c+96>>2];if(e){F[c+100>>2]=e;ja(e)}e=F[c+80>>2];if(e){F[c+84>>2]=e;ja(e)}e=F[c+68>>2];if(e){F[c+72>>2]=e;ja(e)}e=F[c+56>>2];if(e){F[c+60>>2]=e;ja(e)}F[c+8>>2]=9372;e=F[c+44>>2];if(e){ja(e)}e=F[c+32>>2];if(e){ja(e)}Z=c+112|0;break d}if((l|0)>=0){break f}break a}if((l|0)<0){break a}}e=F[a+216>>2];c=F[m+44>>2];d=ka(80);F[d>>2]=9684;F[d+4>>2]=0;F[d+76>>2]=0;F[d+68>>2]=c;F[d+8>>2]=8624;F[d+12>>2]=0;F[d+16>>2]=0;F[d+20>>2]=0;F[d+24>>2]=0;F[d+28>>2]=0;F[d+32>>2]=0;F[d+36>>2]=0;F[d+40>>2]=0;F[d+44>>2]=0;F[d+48>>2]=0;F[d+52>>2]=0;e=e+L(h,144)|0;f=e+104|0;F[d+72>>2]=f;F[d- -64>>2]=0;F[d+56>>2]=0;F[d+60>>2]=0;F[n+24>>2]=c;c=n;F[c+68>>2]=0;F[c+72>>2]=0;F[c+60>>2]=0;F[c+64>>2]=0;F[c+52>>2]=0;F[c+56>>2]=0;F[c+44>>2]=0;F[c+48>>2]=0;F[c+84>>2]=0;F[c+88>>2]=0;F[c+76>>2]=0;F[c+80>>2]=0;F[c+28>>2]=d;g=F[c+28>>2];F[c+8>>2]=F[c+24>>2];F[c+12>>2]=g;F[c+20>>2]=f;f=e+4|0;F[c+16>>2]=f;F[c+36>>2]=0;F[c+40>>2]=0;F[c+32>>2]=8624;e=F[c+20>>2];F[c>>2]=F[c+16>>2];F[c+4>>2]=e;e=c+32|0;Fd(e,f,c);c=d+8|0;lc(c,e);if((c|0)!=(e|0)){gb(d+56|0,F[e+48>>2],F[e+52>>2])}Ed(e);break c}c=Z+-64|0;Z=c;g=F[F[a+4>>2]+44>>2];d=ka(80);F[d>>2]=9392;F[d+4>>2]=0;F[d+76>>2]=0;F[d+72>>2]=e;F[d+68>>2]=g;F[d+8>>2]=9556;F[d+12>>2]=0;F[d+16>>2]=0;F[d+20>>2]=0;F[d+24>>2]=0;F[d+28>>2]=0;F[d+32>>2]=0;F[d+36>>2]=0;F[d+40>>2]=0;F[d+44>>2]=0;F[d+48>>2]=0;F[d+52>>2]=0;F[d- -64>>2]=0;j=d+56|0;f=j;F[f>>2]=0;F[f+4>>2]=0;f=F[a+8>>2];F[c+40>>2]=0;F[c+44>>2]=0;F[c+32>>2]=0;F[c+36>>2]=0;h=c+24|0;F[h>>2]=0;F[h+4>>2]=0;F[c+16>>2]=0;F[c+20>>2]=0;F[c+56>>2]=0;F[c+8>>2]=0;F[c+12>>2]=0;F[c+48>>2]=0;F[c+52>>2]=0;F[c>>2]=9556;F[c+4>>2]=f;i=F[f>>2];l=F[f+4>>2];D[c+63|0]=0;k=h;h=c+63|0;Ea(k,(l-i>>2>>>0)/3|0,h);i=F[c+4>>2];l=F[i+28>>2];i=F[i+24>>2];D[c+63|0]=0;Ea(c+36|0,l-i>>2,h);F[c+20>>2]=d;F[c+16>>2]=g;F[c+12>>2]=e;F[c+8>>2]=f;lc(d+8|0,c);gb(j,F[c+48>>2],F[c+52>>2]);F[c>>2]=9556;e=F[c+48>>2];if(e){F[c+52>>2]=e;ja(e)}F[c>>2]=9372;e=F[c+36>>2];if(e){ja(e)}e=F[c+24>>2];if(e){ja(e)}Z=c- -64|0}if(!d){break a}}d=yc(ka(64),d);c=F[a+4>>2];a=d;d=b;m:{n:{if((d|0)>=0){g=c+8|0;b=F[c+12>>2];j=F[c+8>>2];e=b-j>>2;o:{if((e|0)>(d|0)){break o}f=d+1|0;if(d>>>0>=e>>>0){Pb(g,f-e|0);break o}if(e>>>0<=f>>>0){break o}f=j+(f<<2)|0;if((f|0)!=(b|0)){while(1){b=b-4|0;e=F[b>>2];F[b>>2]=0;if(e){$[F[F[e>>2]+4>>2]](e)}if((b|0)!=(f|0)){continue}break}}F[c+12>>2]=f}c=F[g>>2]+(d<<2)|0;b=F[c>>2];F[c>>2]=a;if(b){break n}break m}b=a;if(!a){break m}}$[F[F[b>>2]+4>>2]](b)}q=(d^-1)>>>31|0}Z=n+96|0;return q|0}function Ab(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=M(0),n=M(0),o=0;a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=D[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=H[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=E[b>>1];if((e|0)<0){break b}E[(g<<1)+d>>1]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(e+32768>>>0>65535){break b}E[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(e>>>0>32767){break b}E[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;k=F[e+4>>2];while(1){if(b>>>0>=k>>>0){break b}h=F[b+4>>2];e=F[b>>2];i=e+32768|0;h=i>>>0<32768?h+1|0:h;if(!h&i>>>0>65535|h){break b}E[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=F[b+4>>2];e=F[b>>2];if(!k&e>>>0>32767|k){break b}E[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=F[a>>2];j=F[e>>2];g=j;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-j|0;if(!G[a+32|0]){j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(32767)|m>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(32767)|mM(1)){break d}e=(b<<1)+d|0;l=R(+m*32767+.5);f:{if(N(l)<2147483648){i=~~l;break f}i=-2147483648}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=1;if(c>>>0<=e>>>0){break d}ma((e<<1)+d|0,0,c-e<<1)}return j;case 9:g:{h:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=F[a>>2];j=F[e>>2];g=j;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-j|0;if(!G[a+32|0]){j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=K[g>>3];if(l>=32767|l<-32768|l!=l){break g}o=N(l);if(o==Infinity){break g}e=(b<<1)+d|0;if(o<2147483648){i=~~l}else{i=-2147483648}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=K[g>>3];if(l>=32767|l<-32768|(N(l)==Infinity|l!=l)){break g}if(l<0|l>1){break g}e=(b<<1)+d|0;l=R(l*32767+.5);i:{if(N(l)<2147483648){i=~~l;break i}i=-2147483648}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=1;if(c>>>0<=e>>>0){break g}ma((e<<1)+d|0,0,c-e<<1)}return j;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}ma((e<<1)+d|0,0,(c&255)-e<<1)}return j}ma((e<<1)+d|0,0,(c&255)-e<<1);return 1}function yb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=M(0),n=M(0),o=0;a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=D[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=E[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=H[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=F[b>>2];b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=F[b>>2];if((e|0)<0){break b}F[(g<<2)+d>>2]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;k=F[e+4>>2];while(1){if(b>>>0>=k>>>0){break b}h=F[b+4>>2];e=F[b>>2];if(e- -2147483648>>>0<2147483648?h+1|0:h){break b}F[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=F[b+4>>2];e=F[b>>2];if(!k&e>>>0>2147483647|k){break b}F[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=F[a>>2];j=F[e>>2];g=j;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-j|0;if(!G[a+32|0]){j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(2147483648)|m>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(2147483648)|mM(1)){break d}e=(b<<2)+d|0;l=R(+m*2147483647+.5);f:{if(N(l)<2147483648){i=~~l;break f}i=-2147483648}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=1;if(c>>>0<=e>>>0){break d}ma((e<<2)+d|0,0,c-e<<2)}return j;case 9:g:{h:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=F[a>>2];j=F[e>>2];g=j;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-j|0;if(!G[a+32|0]){j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=K[g>>3];if(l>=2147483647|l<-2147483648|l!=l){break g}o=N(l);if(o==Infinity){break g}e=(b<<2)+d|0;if(o<2147483648){i=~~l}else{i=-2147483648}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=K[g>>3];if(l>=2147483647|l<-2147483648|(N(l)==Infinity|l!=l)){break g}if(l<0|l>1){break g}e=(b<<2)+d|0;l=R(l*2147483647+.5);i:{if(N(l)<2147483648){i=~~l;break i}i=-2147483648}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=1;if(c>>>0<=e>>>0){break g}ma((e<<2)+d|0,0,c-e<<2)}return j;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}ma((e<<2)+d|0,0,(c&255)-e<<2)}return j}ma((e<<2)+d|0,0,(c&255)-e<<2);return 1}function zb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=M(0);a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=D[b|0];if((e|0)<0){break b}E[(g<<1)+d>>1]=e&255;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=E[b>>1];if((e|0)<0){break b}E[(g<<1)+d>>1]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=H[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(e>>>0>65535){break b}E[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(e>>>0>65535){break b}E[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=F[b+4>>2];e=F[b>>2];if(!k&e>>>0>65535|k){break b}E[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=F[b+4>>2];e=F[b>>2];if(!k&e>>>0>65535|k){break b}E[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=F[a>>2];l=F[e>>2];g=l;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-l|0;if(!G[a+32|0]){l=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(65535)|m=M(0)){i=~~m>>>0}else{i=0}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}l=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(65535)|mM(1)){break d}e=(b<<1)+d|0;j=R(+m*65535+.5);f:{if(j<4294967296&j>=0){i=~~j>>>0;break f}i=0}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}l=1;if(c>>>0<=e>>>0){break d}ma((e<<1)+d|0,0,c-e<<1)}return l;case 9:g:{h:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=F[a>>2];l=F[e>>2];g=l;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-l|0;if(!G[a+32|0]){l=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=K[g>>3];if(j>=65535|j<0|(N(j)==Infinity|j!=j)){break g}e=(b<<1)+d|0;if(j<4294967296&j>=0){i=~~j>>>0}else{i=0}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}l=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=K[g>>3];if(j>=65535|j<0|(N(j)==Infinity|j!=j)){break g}if(j>1){break g}e=(b<<1)+d|0;j=R(j*65535+.5);i:{if(j<4294967296&j>=0){i=~~j>>>0;break i}i=0}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}l=1;if(c>>>0<=e>>>0){break g}ma((e<<1)+d|0,0,c-e<<1)}return l;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}ma((e<<1)+d|0,0,(c&255)-e<<1)}return l}ma((e<<1)+d|0,0,(c&255)-e<<1);return 1}function Ga(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=M(0),l=0,m=0,n=M(0),o=0;a:{if(!d){break a}b:{c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=D[b|0];F[e>>2]=i;F[e+4>>2]=i>>31;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;F[e>>2]=G[b|0];F[e+4>>2]=0;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=E[b>>1];F[e>>2]=i;F[e+4>>2]=i>>31;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;F[e>>2]=H[b>>1];F[e+4>>2]=0;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=F[b>>2];F[e>>2]=i;F[e+4>>2]=i>>31;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;F[e>>2]=F[b>>2];F[e+4>>2]=0;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}i=F[b+4>>2];e=(g<<3)+d|0;F[e>>2]=F[b>>2];F[e+4>>2]=i;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=F[b>>2];i=F[b+4>>2];if((i|0)<0){break a}j=(g<<3)+d|0;F[j>>2]=e;F[j+4>>2]=i;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 8:d:{e=G[a+24|0];f=c&255;if(!(e>>>0>>0?e:f)){break d}if(G[a+32|0]){break a}e=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+e|0;e=F[a>>2];i=F[e+4>>2];e=F[e>>2];if((b|0)>=(i-e|0)){break a}g=b+e|0;h=c&255;b=0;while(1){k=J[g>>2];if(k>=M(0x8000000000000000)|k=M(1)?~~(k>M(0)?M(P(M(R(M(k*M(2.3283064365386963e-10)))),M(4294967296))):M(S(M(M(k-M(~~k>>>0>>>0))*M(2.3283064365386963e-10)))))>>>0:0;m=~~k>>>0;break e}j=-2147483648;m=0}F[e>>2]=m;F[e+4>>2]=j;b=b+1|0;e=G[a+24|0];if(b>>>0>=(e>>>0>>0?e:h)>>>0){break d}g=g+4|0;if(i>>>0>g>>>0){continue}break}break a}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 9:f:{e=G[a+24|0];f=c&255;if(!(e>>>0>>0?e:f)){break f}if(G[a+32|0]){break a}e=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+e|0;e=F[a>>2];i=F[e+4>>2];e=F[e>>2];if((b|0)>=(i-e|0)){break a}g=b+e|0;h=c&255;b=0;while(1){l=K[g>>3];if(l>=0x8000000000000000|l<-0x8000000000000000|l!=l){break a}o=N(l);if(o==Infinity){break a}e=(b<<3)+d|0;g:{if(o<0x8000000000000000){j=N(l)>=1?~~(l>0?P(R(l*2.3283064365386963e-10),4294967295):S((l-+(~~l>>>0>>>0))*2.3283064365386963e-10))>>>0:0;m=~~l>>>0;break g}j=-2147483648;m=0}F[e>>2]=m;F[e+4>>2]=j;b=b+1|0;e=G[a+24|0];if(b>>>0>=(e>>>0>>0?e:h)>>>0){break f}g=g+8|0;if(i>>>0>g>>>0){continue}break}break a}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 10:break c;default:break a}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;F[e>>2]=G[b|0];F[e+4>>2]=0;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0}ma(d,0,a<<3)}}function le(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,k=0,l=0,m=0,n=0,o=0;j=a;a:{b:{c:{d:{e:{f:{g:{h:{a=F[a+8>>2];switch(F[a+28>>2]-1|0){case 4:break c;case 5:break d;case 2:break e;case 3:break f;case 0:break g;case 1:break h;default:break a}}f=G[a+24|0];c=ka(f);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(f){o=f&252;l=f&3;h=f>>>0<4;while(1){a=0;e=0;if(!h){while(1){k=g+(d<<2)|0;D[a+c|0]=F[k>>2];D[(a|1)+c|0]=F[k+4>>2];D[(a|2)+c|0]=F[k+8>>2];D[(a|3)+c|0]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){D[a+c|0]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+m|0,c,f);m=f+m|0;n=n+1|0;if((n|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,f);a=a+f|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,f);a=a+f|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,f);break b}f=G[a+24|0];c=ka(f);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(f){o=f&252;l=f&3;h=f>>>0<4;while(1){a=0;e=0;if(!h){while(1){k=g+(d<<2)|0;D[a+c|0]=F[k>>2];D[(a|1)+c|0]=F[k+4>>2];D[(a|2)+c|0]=F[k+8>>2];D[(a|3)+c|0]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){D[a+c|0]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+m|0,c,f);m=f+m|0;n=n+1|0;if((n|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,f);a=a+f|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,f);a=a+f|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,f);break b}h=G[a+24|0];i=h<<1;c=ka(i);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<1;k=g+(d<<2)|0;E[f+c>>1]=F[k>>2];E[(f|2)+c>>1]=F[k+4>>2];E[(f|4)+c>>1]=F[k+8>>2];E[(f|6)+c>>1]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){E[(a<<1)+c>>1]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=G[a+24|0];i=h<<1;c=ka(i);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<1;k=g+(d<<2)|0;E[f+c>>1]=F[k>>2];E[(f|2)+c>>1]=F[k+4>>2];E[(f|4)+c>>1]=F[k+8>>2];E[(f|6)+c>>1]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){E[(a<<1)+c>>1]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=G[a+24|0];i=h<<2;c=ka(i);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<2;k=g+(d<<2)|0;F[f+c>>2]=F[k>>2];F[(f|4)+c>>2]=F[k+4>>2];F[(f|8)+c>>2]=F[k+8>>2];F[(f|12)+c>>2]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){F[(a<<2)+c>>2]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=G[a+24|0];i=h<<2;c=ka(i);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<2;k=g+(d<<2)|0;F[f+c>>2]=F[k>>2];F[(f|4)+c>>2]=F[k+4>>2];F[(f|8)+c>>2]=F[k+8>>2];F[(f|12)+c>>2]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){F[(a<<2)+c>>2]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i)}ja(c);c=1}return c|0}function xb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=M(0);a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=D[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=E[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=H[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=F[b>>2];b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=F[b>>2];b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(F[b+4>>2]){break b}F[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(F[b+4>>2]){break b}F[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=F[a>>2];k=F[e>>2];g=k;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-k|0;if(!G[a+32|0]){k=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(4294967296)|m=M(0)){i=~~m>>>0}else{i=0}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}k=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(4294967296)|mM(1)){break d}e=(b<<2)+d|0;j=R(+m*4294967295+.5);f:{if(j<4294967296&j>=0){i=~~j>>>0;break f}i=0}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}k=1;if(c>>>0<=e>>>0){break d}ma((e<<2)+d|0,0,c-e<<2)}return k;case 9:g:{h:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=F[a>>2];k=F[e>>2];g=k;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-k|0;if(!G[a+32|0]){k=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=K[g>>3];if(j>=4294967295|j<0|(N(j)==Infinity|j!=j)){break g}e=(b<<2)+d|0;if(j<4294967296&j>=0){i=~~j>>>0}else{i=0}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}k=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=K[g>>3];if(j>=4294967295|j<0|(N(j)==Infinity|j!=j)){break g}if(j>1){break g}e=(b<<2)+d|0;j=R(j*4294967295+.5);i:{if(j<4294967296&j>=0){i=~~j>>>0;break i}i=0}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}k=1;if(c>>>0<=e>>>0){break g}ma((e<<2)+d|0,0,c-e<<2)}return k;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ma((e<<2)+d|0,0,(c&255)-e<<2)}return k}ma((e<<2)+d|0,0,(c&255)-e<<2);return 1}function rd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{if(F[a+92>>2]==F[a+88>>2]){break e}c=F[a+52>>2];f:{if((c|0)!=F[a+56>>2]){F[c>>2]=b;F[a+52>>2]=c+4;break f}h=F[a+48>>2];g=c-h|0;d=g>>2;f=d+1|0;if(f>>>0>=1073741824){break a}e=g>>>1|0;g=g>>>0>=2147483644?1073741823:f>>>0>>0?e:f;if(g){if(g>>>0>=1073741824){break d}e=ka(g<<2)}else{e=0}f=e+(d<<2)|0;F[f>>2]=b;d=f+4|0;if((c|0)!=(h|0)){while(1){f=f-4|0;c=c-4|0;F[f>>2]=F[c>>2];if((c|0)!=(h|0)){continue}break}}F[a+56>>2]=e+(g<<2);F[a+52>>2]=d;F[a+48>>2]=f;if(!h){break f}ja(h)}F[a+84>>2]=0;c=-1;e=-1;g:{if((b|0)==-1){break g}d=F[a+4>>2];e=b+1|0;e=(e>>>0)%3|0?e:b-2|0;if((e|0)!=-1){c=F[F[d>>2]+(e<<2)>>2]}h:{if((b>>>0)%3|0){l=b-1|0;break h}l=b+2|0;e=-1;if((l|0)==-1){break g}}e=F[F[d>>2]+(l<<2)>>2]}i=e>>>3&536870908;d=F[a+36>>2];h=d+(c>>>3&536870908)|0;g=F[h>>2];f=1<>2]=f|g;f=a+8|0;if((b|0)!=-1){d=b+1|0;d=(d>>>0)%3|0?d:b-2|0}else{d=-1}Ka(f,c,d);d=F[a+36>>2]}f=d+i|0;d=F[f>>2];c=1<>2]=c|d;d=a+8|0;c=-1;i:{if((b|0)==-1){break i}c=b-1|0;if((b>>>0)%3|0){break i}c=b+2|0}Ka(d,e,c)}c=-1;c=(b|0)!=-1?F[F[F[a+4>>2]>>2]+(b<<2)>>2]:c;f=F[a+36>>2]+(c>>>3&536870908)|0;d=F[f>>2];e=1<>2]=d|e;Ka(a+8|0,c,b)}d=F[a+84>>2];if((d|0)>2){break e}while(1){e=L(d,12)+a|0;b=F[e+52>>2];if((b|0)==F[e+48>>2]){d=d+1|0;if((d|0)!=3){continue}break e}b=b-4|0;c=F[b>>2];F[e+52>>2]=b;F[a+84>>2]=d;if((c|0)==-1){break e}f=F[a+24>>2];b=(c>>>0)/3|0;j:{if(F[f+(b>>>3&268435452)>>2]>>>b&1){break j}k:{while(1){k=(c>>>0)/3|0;b=(k>>>3&268435452)+f|0;F[b>>2]=F[b>>2]|1<>2]>>2]+(c<<2)>>2]:d;f=F[a+36>>2]+(d>>>3&536870908)|0;e=F[f>>2];b=1<>2]=b|e;i=F[(F[F[a+16>>2]+96>>2]+L(k,12)|0)+((c>>>0)%3<<2)>>2];l=F[F[a+20>>2]+4>>2];f=F[l+4>>2];t:{if((f|0)!=F[l+8>>2]){F[f>>2]=i;F[l+4>>2]=f+4;break t}j=F[l>>2];h=f-j|0;g=h>>2;e=g+1|0;if(e>>>0>=1073741824){break s}b=h>>>1|0;h=h>>>0>=2147483644?1073741823:b>>>0>e>>>0?b:e;if(h){if(h>>>0>=1073741824){break d}e=ka(h<<2)}else{e=0}b=e+(g<<2)|0;F[b>>2]=i;g=b+4|0;if((f|0)!=(j|0)){while(1){b=b-4|0;f=f-4|0;F[b>>2]=F[f>>2];if((f|0)!=(j|0)){continue}break}}F[l+8>>2]=e+(h<<2);F[l+4>>2]=g;F[l>>2]=b;if(!j){break t}ja(j)}j=F[a+12>>2];f=F[j+4>>2];u:{if((f|0)!=F[j+8>>2]){F[f>>2]=c;F[j+4>>2]=f+4;break u}i=F[j>>2];h=f-i|0;g=h>>2;e=g+1|0;if(e>>>0>=1073741824){break r}b=h>>>1|0;h=h>>>0>=2147483644?1073741823:b>>>0>e>>>0?b:e;if(h){if(h>>>0>=1073741824){break d}e=ka(h<<2)}else{e=0}b=e+(g<<2)|0;F[b>>2]=c;g=b+4|0;if((f|0)!=(i|0)){while(1){b=b-4|0;f=f-4|0;F[b>>2]=F[f>>2];if((f|0)!=(i|0)){continue}break}}F[j+8>>2]=e+(h<<2);F[j+4>>2]=g;F[j>>2]=b;if(!i){break u}ja(i)}b=F[a+12>>2];F[F[b+12>>2]+(d<<2)>>2]=F[b+24>>2];F[b+24>>2]=F[b+24>>2]+1}if((c|0)==-1){break k}g=F[a+4>>2];f=-1;b=c+1|0;b=(b>>>0)%3|0?b:c-2|0;if((b|0)!=-1){f=F[F[g+12>>2]+(b<<2)>>2]}v:{w:{if((L(k,3)|0)!=(c|0)){d=c-1|0;break w}d=c+2|0;c=-1;if((d|0)==-1){break v}}c=F[F[g+12>>2]+(d<<2)>>2]}d=(c|0)==-1;e=(c>>>0)/3|0;if((f|0)!=-1){b=(f>>>0)/3|0;b=F[F[a+24>>2]+(b>>>3&268435452)>>2]&1<>2]+(b>>>3&536870908)>>2]>>>b&1){break x}k=0;b=F[F[g>>2]+(c<<2)>>2];if(!(F[F[a+36>>2]+(b>>>3&536870908)>>2]>>>b&1)){b=F[a+88>>2]+(b<<2)|0;e=F[b>>2];F[b>>2]=e+1;k=(e|0)<=0?2:1}if(F[a+84>>2]>=(k|0)&l){break m}j=L(k,12)+a|0;b=F[j+52>>2];y:{if((b|0)!=F[j+56>>2]){F[b>>2]=c;F[j+52>>2]=b+4;break y}i=F[j+48>>2];h=b-i|0;d=h>>2;g=d+1|0;if(g>>>0>=1073741824){break c}e=h>>>1|0;g=h>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break d}e=ka(g<<2)}else{e=0}d=e+(d<<2)|0;F[d>>2]=c;c=d+4|0;if((b|0)!=(i|0)){while(1){d=d-4|0;b=b-4|0;F[d>>2]=F[b>>2];if((b|0)!=(i|0)){continue}break}}F[j+48>>2]=d;F[j+52>>2]=c;F[j+56>>2]=e+(g<<2);if(!i){break y}ja(i)}if(F[a+84>>2]<=(k|0)){break x}F[a+84>>2]=k}if(l){break k}c=-1;if((f|0)==-1){break n}}c=F[F[F[a+4>>2]>>2]+(f<<2)>>2]}b=0;if(!(F[F[a+36>>2]+(c>>>3&536870908)>>2]>>>c&1)){b=F[a+88>>2]+(c<<2)|0;c=F[b>>2];F[b>>2]=c+1;b=(c|0)<=0?2:1}if(F[a+84>>2]<(b|0)){break l}c=f}f=F[a+24>>2];continue}break}k=L(b,12)+a|0;c=F[k+52>>2];z:{if((c|0)!=F[k+56>>2]){F[c>>2]=f;F[k+52>>2]=c+4;break z}i=F[k+48>>2];h=c-i|0;d=h>>2;g=d+1|0;if(g>>>0>=1073741824){break b}e=h>>>1|0;g=h>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break d}e=ka(g<<2)}else{e=0}d=e+(d<<2)|0;F[d>>2]=f;f=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;F[d>>2]=F[c>>2];if((c|0)!=(i|0)){continue}break}}F[k+48>>2]=d;F[k+52>>2]=f;F[k+56>>2]=e+(g<<2);if(!i){break z}ja(i)}d=F[a+84>>2];if((d|0)<=(b|0)){break j}F[a+84>>2]=b;d=b;break j}d=F[a+84>>2]}if((d|0)<3){continue}break}}return 1}oa();v()}na();v()}na();v()}na();v()}function Mc(a){var b=0,c=0,d=0,e=0,f=0,g=0;e=Z-16|0;Z=e;F[e+12>>2]=a;a:{if(a>>>0<=211){d=F[Lc(10352,10544,e+12|0)>>2];break a}if(a>>>0>=4294967292){V();v()}f=(a>>>0)/210|0;d=L(f,210);F[e+8>>2]=a-d;g=Lc(10544,10736,e+8|0)-10544>>2;while(1){d=F[(g<<2)+10544>>2]+d|0;a=5;while(1){b:{if((a|0)==47){a=211;while(1){b=(d>>>0)/(a>>>0)|0;if(b>>>0>>0){break a}if((L(a,b)|0)==(d|0)){break b}b=a+10|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+12|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+16|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+18|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+22|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+28|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+30|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+36|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+40|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+42|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+46|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+52|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+58|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+60|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+66|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+70|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+72|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+78|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+82|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+88|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+96|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+100|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+102|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+106|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+108|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+112|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+120|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+126|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+130|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+136|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+138|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+142|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+148|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+150|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+156|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+162|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+166|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+168|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+172|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+178|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+180|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+186|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+190|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+192|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+196|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+198|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+208|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}a=a+210|0;if((L(b,c)|0)!=(d|0)){continue}break}break b}b=F[(a<<2)+10352>>2];c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}a=a+1|0;if((L(b,c)|0)!=(d|0)){continue}}break}d=g+1|0;a=(d|0)==48;g=a?0:d;f=a+f|0;d=L(f,210);continue}}Z=e+16|0;return d}function lb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=M(0),k=0,l=0;a:{if(!d){break a}b:{c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(D[b|0]);J[(h<<2)+d>>2]=i?M(j/M(127)):j;b=b+1|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(G[b|0]);J[(h<<2)+d>>2]=i?M(j/M(255)):j;b=b+1|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(E[b>>1]);J[(h<<2)+d>>2]=i?M(j/M(32767)):j;b=b+2|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(H[b>>1]);J[(h<<2)+d>>2]=i?M(j/M(65535)):j;b=b+2|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(F[b>>2]);J[(h<<2)+d>>2]=i?M(j*M(4.656612873077393e-10)):j;b=b+4|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(I[b>>2]);J[(h<<2)+d>>2]=i?M(j*M(2.3283064365386963e-10)):j;b=b+4|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(+I[b>>2]+ +F[b+4>>2]*4294967296);J[(h<<2)+d>>2]=i?M(j*M(10842021724855044e-35)):j;b=b+8|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(+I[b>>2]+ +I[b+4>>2]*4294967296);J[(h<<2)+d>>2]=i?M(j*M(5.421010862427522e-20)):j;b=b+8|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 8:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}J[(h<<2)+d>>2]=J[b>>2];b=b+4|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 9:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}J[(h<<2)+d>>2]=K[b>>3];b=b+8|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 10:break c;default:break a}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}J[(h<<2)+d>>2]=G[b|0]?M(1):M(0);b=b+1|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0}ma(d,0,a<<2)}return l}function Cb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=M(0),m=M(0);a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}D[d+g|0]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){return 0}e=D[b|0];if((e|0)<0){break b}D[d+g|0]=e;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>1];if((e+128&65535)>>>0>255){break b}D[d+g|0]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>1];if(e>>>0>127){break b}D[d+g|0]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=F[b>>2];if(e+128>>>0>255){break b}D[d+g|0]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=F[b>>2];if(e>>>0>127){break b}D[d+g|0]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}i=F[b+4>>2];e=F[b>>2];h=e+128|0;i=h>>>0<128?i+1|0:i;if(!i&h>>>0>255|i){break b}D[d+g|0]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}i=F[b+4>>2];e=F[b>>2];if(!i&e>>>0>127|i){break b}D[d+g|0]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:e=G[a+24|0];c=c&255;d:{if(c>>>0>e>>>0?e:c){e=F[F[a>>2]>>2];f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+f|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break d}l=J[b>>2];if(l>=M(127)|lM(1)){break d}j=R(+l*127+.5);if(!(N(j)<2147483648)){break f}h=~~j;break e}if(!(m>>0<(c>>>0>e>>>0?e:c)>>>0){continue}break}}k=1;if(c>>>0<=e>>>0){break d}ma(d+e|0,0,c-e|0)}return k;case 9:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}j=K[b>>3];if(j>=127|j<-128|(N(j)==Infinity|j!=j)){break b}e=d+g|0;if(G[a+32|0]){if(j<0|j>1){break b}j=R(j*127+.5)}g:{if(N(j)<2147483648){h=~~j;break g}h=-2147483648}D[e|0]=h;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}D[d+g|0]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ma(d+e|0,0,(c&255)-e|0)}return k}ma(d+e|0,0,(c&255)-e|0);return 1}function Bb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=M(0);a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){return 0}e=D[b|0];if((e|0)<0){break b}D[d+g|0]=e;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}D[d+g|0]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>1];if(e>>>0>255){break b}D[d+g|0]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>1];if(e>>>0>255){break b}D[d+g|0]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=F[b>>2];if(e>>>0>255){break b}D[d+g|0]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=F[b>>2];if(e>>>0>255){break b}D[d+g|0]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}i=F[b+4>>2];e=F[b>>2];if(!i&e>>>0>255|i){break b}D[d+g|0]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}i=F[b+4>>2];e=F[b>>2];if(!i&e>>>0>255|i){break b}D[d+g|0]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:e=G[a+24|0];c=c&255;d:{if(c>>>0>e>>>0?e:c){e=F[F[a>>2]>>2];f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+f|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break d}l=J[b>>2];if(l>=M(255)|lM(1)){break d}j=R(+l*255+.5);if(!(j<4294967296&j>=0)){break f}h=~~j>>>0;break e}if(!(l=M(0))){break f}h=~~l>>>0;break e}h=0}D[e|0]=h;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(c>>>0>e>>>0?e:c)>>>0){continue}break}}k=1;if(c>>>0<=e>>>0){break d}ma(d+e|0,0,c-e|0)}return k;case 9:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}j=K[b>>3];if(j>=255|j<0|(N(j)==Infinity|j!=j)){break b}e=d+g|0;if(G[a+32|0]){if(j>1){break b}j=R(j*255+.5)}g:{if(j<4294967296&j>=0){h=~~j>>>0;break g}h=0}D[e|0]=h;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}D[d+g|0]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ma(d+e|0,0,(c&255)-e|0)}return k}ma(d+e|0,0,(c&255)-e|0);return 1}function jc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=Z-48|0;Z=e;f=H[5053]|H[5054]<<16;d=H[5051]|H[5052]<<16;E[e+38>>1]=d;E[e+40>>1]=d>>>16;E[e+42>>1]=f;E[e+44>>1]=f>>>16;d=F[2525];F[e+32>>2]=F[2524];F[e+36>>2]=d;d=F[2523];F[e+24>>2]=F[2522];F[e+28>>2]=d;d=F[2521];F[e+16>>2]=F[2520];F[e+20>>2]=d;g=F[b+8>>2];i=F[b+12>>2];h=F[b+20>>2];d=F[b+16>>2];f=d+5|0;h=f>>>0<5?h+1|0:h;a:{b:{if(g>>>0>>0&(h|0)>=(i|0)|(h|0)>(i|0)){d=ya(e+16|0);if(d>>>0>=2147483632){break a}c:{d:{if(d>>>0>=11){b=(d|15)+1|0;c=ka(b);F[e+8>>2]=b|-2147483648;F[e>>2]=c;F[e+4>>2]=d;b=c+d|0;break d}D[e+11|0]=d;b=d+e|0;c=e;if(!d){break c}}la(c,e+16|0,d)}D[b|0]=0;F[a>>2]=-2;b=a+4|0;if(D[e+11|0]>=0){a=F[e+4>>2];F[b>>2]=F[e>>2];F[b+4>>2]=a;F[b+8>>2]=F[e+8>>2];break b}ra(b,F[e>>2],F[e+4>>2]);if(D[e+11|0]>=0){break b}ja(F[e>>2]);break b}f=d+F[b>>2]|0;d=G[f|0]|G[f+1|0]<<8|(G[f+2|0]<<16|G[f+3|0]<<24);D[c|0]=d;D[c+1|0]=d>>>8;D[c+2|0]=d>>>16;D[c+3|0]=d>>>24;D[c+4|0]=G[f+4|0];d=F[b+20>>2];f=F[b+16>>2]+5|0;d=f>>>0<5?d+1|0:d;F[b+16>>2]=f;F[b+20>>2]=d;if(sa(c,1250,5)){d=ka(32);D[d+17|0]=0;D[d+16|0]=G[1494];c=G[1490]|G[1491]<<8|(G[1492]<<16|G[1493]<<24);b=G[1486]|G[1487]<<8|(G[1488]<<16|G[1489]<<24);D[d+8|0]=b;D[d+9|0]=b>>>8;D[d+10|0]=b>>>16;D[d+11|0]=b>>>24;D[d+12|0]=c;D[d+13|0]=c>>>8;D[d+14|0]=c>>>16;D[d+15|0]=c>>>24;c=G[1482]|G[1483]<<8|(G[1484]<<16|G[1485]<<24);b=G[1478]|G[1479]<<8|(G[1480]<<16|G[1481]<<24);D[d|0]=b;D[d+1|0]=b>>>8;D[d+2|0]=b>>>16;D[d+3|0]=b>>>24;D[d+4|0]=c;D[d+5|0]=c>>>8;D[d+6|0]=c>>>16;D[d+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,d,17);ja(d);break b}g=F[b+12>>2];if((g|0)<=(d|0)&I[b+8>>2]<=f>>>0|(d|0)>(g|0)){d=ya(e+16|0);if(d>>>0>=2147483632){break a}e:{f:{if(d>>>0>=11){b=(d|15)+1|0;c=ka(b);F[e+8>>2]=b|-2147483648;F[e>>2]=c;F[e+4>>2]=d;b=c+d|0;break f}D[e+11|0]=d;b=d+e|0;c=e;if(!d){break e}}la(c,e+16|0,d)}D[b|0]=0;F[a>>2]=-2;b=a+4|0;if(D[e+11|0]>=0){a=F[e+4>>2];F[b>>2]=F[e>>2];F[b+4>>2]=a;F[b+8>>2]=F[e+8>>2];break b}ra(b,F[e>>2],F[e+4>>2]);if(D[e+11|0]>=0){break b}ja(F[e>>2]);break b}D[c+5|0]=G[f+F[b>>2]|0];g=F[b+20>>2];d=F[b+16>>2]+1|0;g=d?g:g+1|0;F[b+16>>2]=d;F[b+20>>2]=g;f=F[b+12>>2];if((f|0)<=(g|0)&I[b+8>>2]<=d>>>0|(g|0)>(f|0)){d=ya(e+16|0);if(d>>>0>=2147483632){break a}g:{h:{if(d>>>0>=11){b=(d|15)+1|0;c=ka(b);F[e+8>>2]=b|-2147483648;F[e>>2]=c;F[e+4>>2]=d;b=c+d|0;break h}D[e+11|0]=d;b=d+e|0;c=e;if(!d){break g}}la(c,e+16|0,d)}D[b|0]=0;F[a>>2]=-2;b=a+4|0;if(D[e+11|0]>=0){a=F[e+4>>2];F[b>>2]=F[e>>2];F[b+4>>2]=a;F[b+8>>2]=F[e+8>>2];break b}ra(b,F[e>>2],F[e+4>>2]);if(D[e+11|0]>=0){break b}ja(F[e>>2]);break b}D[c+6|0]=G[d+F[b>>2]|0];h=F[b+20>>2];d=F[b+16>>2]+1|0;h=d?h:h+1|0;F[b+16>>2]=d;F[b+20>>2]=h;f=F[b+12>>2];if((f|0)<=(h|0)&I[b+8>>2]<=d>>>0|(f|0)<(h|0)){d=ya(e+16|0);if(d>>>0>=2147483632){break a}i:{j:{if(d>>>0>=11){b=(d|15)+1|0;c=ka(b);F[e+8>>2]=b|-2147483648;F[e>>2]=c;F[e+4>>2]=d;b=c+d|0;break j}D[e+11|0]=d;b=d+e|0;c=e;if(!d){break i}}la(c,e+16|0,d)}D[b|0]=0;F[a>>2]=-2;b=a+4|0;if(D[e+11|0]>=0){a=F[e+4>>2];F[b>>2]=F[e>>2];F[b+4>>2]=a;F[b+8>>2]=F[e+8>>2];break b}ra(b,F[e>>2],F[e+4>>2]);if(D[e+11|0]>=0){break b}ja(F[e>>2]);break b}D[c+7|0]=G[d+F[b>>2]|0];g=F[b+20>>2];d=F[b+16>>2]+1|0;g=d?g:g+1|0;F[b+16>>2]=d;F[b+20>>2]=g;f=F[b+12>>2];if((f|0)<=(g|0)&I[b+8>>2]<=d>>>0|(g|0)>(f|0)){c=Eb(e,e+16|0);F[a>>2]=-2;b=a+4|0;if(D[c+11|0]>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break b}ra(b,F[c>>2],F[c+4>>2]);if(D[c+11|0]>=0){break b}ja(F[c>>2]);break b}D[c+8|0]=G[d+F[b>>2]|0];d=F[b+20>>2];g=F[b+16>>2];f=g+1|0;i=f?d:d+1|0;F[b+16>>2]=f;F[b+20>>2]=i;i=F[b+8>>2];h=F[b+12>>2];g=g+3|0;d=g>>>0<3?d+1|0:d;if(g>>>0>i>>>0&(d|0)>=(h|0)|(d|0)>(h|0)){c=Eb(e,e+16|0);F[a>>2]=-2;b=a+4|0;if(D[c+11|0]>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break b}ra(b,F[c>>2],F[c+4>>2]);if(D[c+11|0]>=0){break b}ja(F[c>>2]);break b}d=c;c=F[b>>2]+f|0;E[d+10>>1]=G[c|0]|G[c+1|0]<<8;g=F[b+20>>2];c=F[b+16>>2]+2|0;g=c>>>0<2?g+1|0:g;F[b+16>>2]=c;F[b+20>>2]=g;F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+4>>2]=0}Z=e+48|0;return}za();v()}function Mb(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0;e=Z-96|0;Z=e;f=F[a+16>>2];D[e+92|0]=1;F[e+88>>2]=b;F[e+84>>2]=b;F[e+80>>2]=f;j=F[a+20>>2];d=F[j>>2];a:{b:{f=F[F[f+28>>2]+(b<<2)>>2];if(f>>>0>2]-d>>2>>>0){d=F[F[a+8>>2]+(F[d+(f<<2)>>2]<<2)>>2];f=F[a+4>>2];if(!G[f+84|0]){d=F[F[f+68>>2]+(d<<2)>>2]}F[e+72>>2]=0;F[e+76>>2]=0;j=e- -64|0;F[j>>2]=0;F[j+4>>2]=0;F[e+56>>2]=0;F[e+60>>2]=0;Ga(f,d,D[f+24|0],e+56|0);if((b|0)!=-1){f=b+1|0;j=(f>>>0)%3|0?f:b-2|0;m=((b>>>0)%3|0?-1:2)+b|0;while(1){d=j;f=m;c:{if(!F[a+28>>2]){break c}f=b+1|0;d=(f>>>0)%3|0?f:b-2|0;f=b-1|0;if((b>>>0)%3|0){break c}f=b+2|0}n=F[a+20>>2];b=F[n>>2];d=F[F[F[a+16>>2]+28>>2]+(d<<2)>>2];if(d>>>0>=F[n+4>>2]-b>>2>>>0){break b}d=F[F[a+8>>2]+(F[b+(d<<2)>>2]<<2)>>2];b=F[a+4>>2];if(!G[b+84|0]){d=F[F[b+68>>2]+(d<<2)>>2]}F[e+48>>2]=0;F[e+52>>2]=0;F[e+40>>2]=0;F[e+44>>2]=0;F[e+32>>2]=0;F[e+36>>2]=0;Ga(b,d,D[b+24|0],e+32|0);d=F[a+20>>2];b=F[d>>2];f=F[F[F[a+16>>2]+28>>2]+(f<<2)>>2];if(f>>>0>=F[d+4>>2]-b>>2>>>0){break a}d=F[F[a+8>>2]+(F[b+(f<<2)>>2]<<2)>>2];b=F[a+4>>2];if(!G[b+84|0]){d=F[F[b+68>>2]+(d<<2)>>2]}F[e+24>>2]=0;F[e+28>>2]=0;F[e+16>>2]=0;F[e+20>>2]=0;F[e+8>>2]=0;F[e+12>>2]=0;Ga(b,d,D[b+24|0],e+8|0);g=F[e+8>>2];b=F[e+56>>2];d=g-b|0;p=F[e+60>>2];t=F[e+12>>2]-(p+(b>>>0>g>>>0)|0)|0;h=F[e+40>>2];f=F[e+64>>2];n=h-f|0;u=F[e+68>>2];y=F[e+44>>2]-(u+(f>>>0>h>>>0)|0)|0;g=ki(d,t,n,y);w=o-g|0;x=i-(_+(g>>>0>o>>>0)|0)|0;i=w;h=F[e+16>>2];g=h-f|0;u=F[e+20>>2]-((f>>>0>h>>>0)+u|0)|0;k=F[e+32>>2];h=k-b|0;w=F[e+36>>2]-((b>>>0>k>>>0)+p|0)|0;b=ki(g,u,h,w);o=i+b|0;i=_+x|0;i=b>>>0>o>>>0?i+1|0:i;b=l;l=d;p=t;k=F[e+48>>2];f=F[e+72>>2];d=k-f|0;t=F[e+76>>2];x=F[e+52>>2]-(t+(f>>>0>k>>>0)|0)|0;l=ki(l,p,d,x);k=b+l|0;b=_+q|0;b=k>>>0>>0?b+1|0:b;l=F[e+24>>2];p=l-f|0;f=F[e+28>>2]-((f>>>0>l>>>0)+t|0)|0;q=ki(p,f,h,w);l=k-q|0;q=b-(_+(k>>>0>>0)|0)|0;b=ki(g,u,d,x);d=r-b|0;b=s-(_+(b>>>0>r>>>0)|0)|0;s=ki(p,f,n,y);r=s+d|0;b=_+b|0;s=r>>>0>>0?b+1|0:b;b=F[e+88>>2];f=F[e+80>>2];d:{if(G[e+92|0]){e:{f:{g:{h:{if((b|0)==-1){break h}d=b+1|0;b=(d>>>0)%3|0?d:b-2|0;if((b|0)==-1|F[F[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break h}b=F[F[F[f+64>>2]+12>>2]+(b<<2)>>2];if((b|0)!=-1){break g}}F[e+88>>2]=-1;break f}d=b+1|0;b=(d>>>0)%3|0?d:b-2|0;F[e+88>>2]=b;if((b|0)!=-1){break e}}b=F[e+84>>2];d=-1;i:{if((b|0)==-1){break i}j:{if((b>>>0)%3|0){b=b-1|0;break j}b=b+2|0;d=-1;if((b|0)==-1){break i}}d=-1;if(F[F[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break i}b=F[F[F[f+64>>2]+12>>2]+(b<<2)>>2];d=-1;if((b|0)==-1){break i}d=b-1|0;if((b>>>0)%3|0){break i}d=b+2|0}D[e+92|0]=0;F[e+88>>2]=d;break d}if((b|0)!=F[e+84>>2]){break d}F[e+88>>2]=-1;break d}d=-1;k:{if((b|0)==-1){break k}l:{if((b>>>0)%3|0){b=b-1|0;break l}b=b+2|0;d=-1;if((b|0)==-1){break k}}d=-1;if(F[F[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break k}b=F[F[F[f+64>>2]+12>>2]+(b<<2)>>2];d=-1;if((b|0)==-1){break k}d=b-1|0;if((b>>>0)%3|0){break k}d=b+2|0}F[e+88>>2]=d}b=F[e+88>>2];if((b|0)!=-1){continue}break}}b=s>>31;f=b^r;d=f-b|0;b=(b^s)-((b>>>0>f>>>0)+b|0)|0;m=-1;f=2147483647;g=q>>31;h=g^l;j=h-g|0;n=(g^q)-((h>>>0>>0)+g|0)|0;h=n;k=j^-1;g=h^2147483647;n=i;m:{n:{if(!F[a+28>>2]){if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break m}b=b+h|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;f=a;g=i;a=g>>31;d=a;m=d^o;a=m-d|0;i=a;d=(d^g)-((d>>>0>m>>>0)+d|0)|0;a=a+f|0;d=d^2147483647;i=(d|0)==(b|0)&(i^-1)>>>0>>0|b>>>0>d>>>0;a=i?-1:a;if(!(i&0)&(a|0)<=536870912|(a|0)<536870912){break m}b=0;a=a>>>29|0;break n}o:{if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break o}b=b+h|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;k=i;d=i>>31;h=d^o;i=h-d|0;j=(d^k)-((d>>>0>h>>>0)+d|0)|0;g=j^2147483647;d=a;a=i;if((g|0)==(b|0)&d>>>0>(a^-1)>>>0|b>>>0>g>>>0){break o}b=b+j|0;m=a+d|0;b=m>>>0>>0?b+1|0:b;f=b;if(!b&m>>>0<536870913){break m}}b=f>>>29|0;a=(f&536870911)<<3|m>>>29}o=li(o,n,a,b);l=li(l,q,a,b);r=li(r,s,a,b)}F[c+8>>2]=o;F[c+4>>2]=l;F[c>>2]=r;Z=e+96|0;return}ta();v()}ta();v()}ta();v()}function te(a){a=a|0;var 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;g=Z-16|0;Z=g;f=1;m=$[F[F[a>>2]+24>>2]](a)|0;a:{if((m|0)<=0){break a}r=a+48|0;f=0;while(1){b:{c:{if(!F[($[F[F[a>>2]+28>>2]](a)|0)+40>>2]){break c}o=l<<2;d=F[o+F[a+36>>2]>>2];c=F[d+8>>2];e=bb(d);if(!e){break c}h=F[($[F[F[a>>2]+28>>2]](a)|0)+40>>2];F[g+12>>2]=F[c+56>>2];d=ka(32);F[g>>2]=d;F[g+4>>2]=24;F[g+8>>2]=-2147483616;c=G[1196]|G[1197]<<8|(G[1198]<<16|G[1199]<<24);b=G[1192]|G[1193]<<8|(G[1194]<<16|G[1195]<<24);D[d+16|0]=b;D[d+17|0]=b>>>8;D[d+18|0]=b>>>16;D[d+19|0]=b>>>24;D[d+20|0]=c;D[d+21|0]=c>>>8;D[d+22|0]=c>>>16;D[d+23|0]=c>>>24;c=G[1188]|G[1189]<<8|(G[1190]<<16|G[1191]<<24);b=G[1184]|G[1185]<<8|(G[1186]<<16|G[1187]<<24);D[d+8|0]=b;D[d+9|0]=b>>>8;D[d+10|0]=b>>>16;D[d+11|0]=b>>>24;D[d+12|0]=c;D[d+13|0]=c>>>8;D[d+14|0]=c>>>16;D[d+15|0]=c>>>24;c=G[1180]|G[1181]<<8|(G[1182]<<16|G[1183]<<24);b=G[1176]|G[1177]<<8|(G[1178]<<16|G[1179]<<24);D[d|0]=b;D[d+1|0]=b>>>8;D[d+2|0]=b>>>16;D[d+3|0]=b>>>24;D[d+4|0]=c;D[d+5|0]=c>>>8;D[d+6|0]=c>>>16;D[d+7|0]=c>>>24;D[d+24|0]=0;c=h+16|0;b=F[c>>2];d:{e:{if(!b){break e}i=F[g+12>>2];d=c;while(1){k=(i|0)>F[b+16>>2];d=k?d:b;b=F[(k?b+4|0:b)>>2];if(b){continue}break}if((c|0)==(d|0)|(i|0)>2]){break e}b=F[d+24>>2];if(!b){break e}i=d+20|0;d=G[g+11|0];c=d<<24>>24<0;k=c?F[g>>2]:g;d=c?F[g+4>>2]:d;while(1){c=G[b+27|0];j=c<<24>>24<0;c=j?F[b+20>>2]:c;p=c>>>0>>0;f:{g:{h:{i:{j:{k:{n=p?c:d;if(n){j=j?F[b+16>>2]:b+16|0;q=sa(k,j,n);if(q){break k}if(c>>>0<=d>>>0){break j}break f}if(c>>>0<=d>>>0){break i}break f}if((q|0)<0){break f}}c=sa(j,k,n);if(c){break h}}if(p){break g}d=gc(i,g);break d}if((c|0)<0){break g}d=gc(i,g);break d}b=b+4|0}b=F[b>>2];if(b){continue}break}}d=gc(h,g)}if(D[g+11|0]<0){ja(F[g>>2])}if(!d){break c}d=0;c=F[F[o+F[a+36>>2]>>2]+8>>2];if(!F[c+64>>2]){b=ka(32);F[b+16>>2]=0;F[b+20>>2]=0;F[b+8>>2]=0;F[b>>2]=0;F[b+4>>2]=0;F[b+24>>2]=0;F[b+28>>2]=0;f=F[c+64>>2];F[c+64>>2]=b;if(f){b=F[f>>2];if(b){F[f+4>>2]=b;ja(b)}ja(f);b=F[c+64>>2]}F[c>>2]=b;f=F[b+20>>2];F[c+8>>2]=F[b+16>>2];F[c+12>>2]=f;f=F[b+24>>2];b=F[b+28>>2];F[c+48>>2]=0;F[c+52>>2]=0;F[c+40>>2]=0;F[c+44>>2]=0;F[c+16>>2]=f;F[c+20>>2]=b}l:{D[c+24|0]=G[e+24|0];F[c+28>>2]=F[e+28>>2];D[c+32|0]=G[e+32|0];b=F[e+44>>2];F[c+40>>2]=F[e+40>>2];F[c+44>>2]=b;b=F[e+52>>2];F[c+48>>2]=F[e+48>>2];F[c+52>>2]=b;F[c+56>>2]=F[e+56>>2];b=F[e+12>>2];F[c+8>>2]=F[e+8>>2];F[c+12>>2]=b;b=F[e+20>>2];F[c+16>>2]=F[e+16>>2];F[c+20>>2]=b;F[c+60>>2]=F[e+60>>2];f=F[e>>2];m:{if(!f){F[c>>2]=0;b=1;break m}h=F[c>>2];b=0;if(!h){break m}b=F[f>>2];f=F[f+4>>2]-b|0;md(h,b,f,0);b=1}if(!b){break l}D[c+84|0]=G[e+84|0];F[c+80>>2]=F[e+80>>2];if((c|0)!=(e|0)){gb(c+68|0,F[e+68>>2],F[e+72>>2])}n:{h=F[e+88>>2];o:{if(h){f=ka(40);e=F[h>>2];F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;F[f>>2]=e;e=F[h+12>>2];b=F[h+8>>2];if((e|0)!=(b|0)){b=e-b|0;if((b|0)<0){break n}e=ka(b);F[f+12>>2]=e;F[f+8>>2]=e;F[f+16>>2]=b+e;b=F[h+8>>2];i=F[h+12>>2];p:{if((b|0)==(i|0)){break p}k=i+(b^-1)|0;j=i-b&7;if(j){while(1){D[e|0]=G[b|0];e=e+1|0;b=b+1|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}}if(k>>>0<7){break p}while(1){D[e|0]=G[b|0];D[e+1|0]=G[b+1|0];D[e+2|0]=G[b+2|0];D[e+3|0]=G[b+3|0];D[e+4|0]=G[b+4|0];D[e+5|0]=G[b+5|0];D[e+6|0]=G[b+6|0];D[e+7|0]=G[b+7|0];e=e+8|0;b=b+8|0;if((i|0)!=(b|0)){continue}break}}F[f+12>>2]=e}d=F[h+36>>2];F[f+32>>2]=F[h+32>>2];F[f+36>>2]=d;d=F[h+28>>2];F[f+24>>2]=F[h+24>>2];F[f+28>>2]=d;e=F[c+88>>2];F[c+88>>2]=f;if(e){break o}break l}e=F[c+88>>2];F[c+88>>2]=0;if(!e){break l}}d=F[e+8>>2];if(d){F[e+12>>2]=d;ja(d)}ja(e);break l}na();v()}break b}d=F[F[a+36>>2]+(l<<2)>>2];if(!($[F[F[d>>2]+24>>2]](d,r)|0)){break a}}l=l+1|0;f=(m|0)<=(l|0);if((l|0)!=(m|0)){continue}break}}Z=g+16|0;return f|0}function Jg(a){a=a|0;var 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;f=Z-32|0;Z=f;a:{if(!hb(1,f+28|0,F[a+32>>2])){break a}if(!hb(1,f+24|0,F[a+32>>2])){break a}l=F[f+28>>2];if(l>>>0>1431655765){break a}d=F[a+32>>2];c=d;i=F[c+8>>2];b=F[c+16>>2];h=F[c+12>>2];c=F[c+20>>2];g=li(i-b|0,h-(c+(b>>>0>i>>>0)|0)|0,3,0);if(!_&g>>>0>>0){break a}n=F[f+24>>2];g=ki(l,0,3,0);if(!_&g>>>0>>0|((c|0)>=(h|0)&b>>>0>=i>>>0|(c|0)>(h|0))){break a}i=G[b+F[d>>2]|0];b=b+1|0;c=b?c:c+1|0;F[d+16>>2]=b;F[d+20>>2]=c;b:{c:{if(!i){d=0;c=Z-32|0;Z=c;F[c+24>>2]=0;F[c+16>>2]=0;F[c+20>>2]=0;d:{e:{b=L(l,3);if(b){if(b>>>0>=1073741824){break e}i=L(l,12);d=ka(i);ma(d,0,i)}b=mc(b,1,F[a+32>>2],d);f:{g:{if(!(!l|!b)){i=0;while(1){h:{g=e;b=(i<<2)+d|0;h=F[b>>2];e=h>>>1|0;h=g+(h&1?0-e|0:e)|0;if((h|0)<0){break h}F[c>>2]=h;e=F[b+4>>2];g=e>>>1|0;h=h+(e&1?0-g|0:g)|0;if((h|0)<0){break h}F[c+4>>2]=h;b=F[b+8>>2];e=b>>>1|0;e=h+(b&1?0-e|0:e)|0;if((e|0)<0){break h}F[c+8>>2]=e;mb(F[a+44>>2]+96|0,c);i=i+3|0;b=1;j=j+1|0;if((j|0)!=(l|0)){continue}break g}break}b=0;break g}if(!d){break f}}ja(d)}Z=c+32|0;break d}na();v()}if(b){break c}break a}if(n>>>0<=255){if(!l){break c}while(1){i:{F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;d=F[a+32>>2];b=d;i=F[b+16>>2];e=F[b+8>>2];c=F[b+20>>2];g=F[b+12>>2];b=g;if(e>>>0<=i>>>0&(c|0)>=(b|0)|(b|0)<(c|0)){break i}j=F[d>>2];m=G[j+i|0];b=c;h=i+1|0;b=h?b:b+1|0;F[d+16>>2]=h;F[d+20>>2]=b;F[f+8>>2]=m;m=e>>>0>>0&(c|0)>=(g|0)|(c|0)>(g|0);e=m?i:e;g=m?c:g;if((e|0)==(h|0)&(g|0)==(b|0)){break i}m=G[h+j|0];b=c;h=i+2|0;b=h>>>0<2?b+1|0:b;F[d+16>>2]=h;F[d+20>>2]=b;F[f+12>>2]=m;if((e|0)==(h|0)&(b|0)==(g|0)){break i}h=G[h+j|0];b=c;c=i+3|0;b=c>>>0<3?b+1|0:b;F[d+16>>2]=c;F[d+20>>2]=b;F[f+16>>2]=h;mb(F[a+44>>2]+96|0,f+8|0);k=k+1|0;if((l|0)!=(k|0)){continue}break c}break}k=0;break a}if(n>>>0<=65535){if(!l){break c}while(1){j:{F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;j=F[a+32>>2];b=j;c=F[b+8>>2];d=F[b+12>>2];h=F[b+16>>2];b=F[b+20>>2];i=b;e=h+2|0;b=e>>>0<2?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break j}m=F[j>>2];g=m+h|0;g=G[g|0]|G[g+1|0]<<8;F[j+16>>2]=e;F[j+20>>2]=b;F[f+8>>2]=g;b=i;g=h+4|0;b=g>>>0<4?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break j}e=e+m|0;e=G[e|0]|G[e+1|0]<<8;F[j+16>>2]=g;F[j+20>>2]=b;F[f+12>>2]=e;e=c;b=i;c=h+6|0;b=c>>>0<6?b+1|0:b;if(c>>>0>e>>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break j}d=g+m|0;d=G[d|0]|G[d+1|0]<<8;F[j+16>>2]=c;F[j+20>>2]=b;F[f+16>>2]=d;mb(F[a+44>>2]+96|0,f+8|0);k=k+1|0;if((l|0)!=(k|0)){continue}break c}break}k=0;break a}k:{if(n>>>0>2097151){break k}b=H[a+36>>1];if(((b<<8|b>>>8)&65535)>>>0<514){break k}if(!l){break c}while(1){l:{F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;if(!hb(1,f+4|0,F[a+32>>2])){break l}F[f+8>>2]=F[f+4>>2];if(!hb(1,f+4|0,F[a+32>>2])){break l}F[f+12>>2]=F[f+4>>2];if(!hb(1,f+4|0,F[a+32>>2])){break l}F[f+16>>2]=F[f+4>>2];mb(F[a+44>>2]+96|0,f+8|0);k=k+1|0;if((l|0)!=(k|0)){continue}break c}break}k=0;break a}if(!l){break c}while(1){F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;j=F[a+32>>2];b=j;c=F[b+8>>2];d=F[b+12>>2];h=F[b+16>>2];b=F[b+20>>2];i=b;e=h+4|0;b=e>>>0<4?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break b}m=F[j>>2];g=m+h|0;g=G[g|0]|G[g+1|0]<<8|(G[g+2|0]<<16|G[g+3|0]<<24);F[j+16>>2]=e;F[j+20>>2]=b;F[f+8>>2]=g;b=i;g=h+8|0;b=g>>>0<8?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break b}e=e+m|0;e=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);F[j+16>>2]=g;F[j+20>>2]=b;F[f+12>>2]=e;e=c;b=i;c=h+12|0;b=c>>>0<12?b+1|0:b;if(c>>>0>e>>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break b}d=g+m|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[j+16>>2]=c;F[j+20>>2]=b;F[f+16>>2]=d;mb(F[a+44>>2]+96|0,f+8|0);k=k+1|0;if((l|0)!=(k|0)){continue}break}}F[F[a+4>>2]+80>>2]=n;k=1;break a}k=0}Z=f+32|0;return k|0}function Ld(a,b,c){var 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;g=Z+-64|0;Z=g;F[g+56>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;h=g+8|0;a:{b:{if(!H[b+38>>1]){break b}if(!Ta(1,h+12|0,b)){break b}e=F[b+8>>2];f=F[b+16>>2];j=e-f|0;k=F[h+12>>2];e=F[b+12>>2]-(F[b+20>>2]+(e>>>0>>0)|0)|0;if(j>>>0>>6>>>0&(e|0)<=0|(e|0)<0){break b}e=F[h>>2];d=F[h+4>>2]-e>>2;c:{if(d>>>0>>0){qa(h,k-d|0);k=F[h+12>>2];break c}if(d>>>0<=k>>>0){break c}F[h+4>>2]=e+(k<<2)}i=1;if(!k){break a}e=F[b+16>>2];d=F[b+20>>2];r=F[h>>2];l=F[b+8>>2];o=F[b+12>>2];j=0;while(1){i=0;if((d|0)>=(o|0)&e>>>0>=l>>>0|(d|0)>(o|0)){break a}i=F[b>>2];p=G[i+e|0];e=e+1|0;d=e?d:d+1|0;F[b+16>>2]=e;F[b+20>>2]=d;f=p>>>2|0;m=0;d:{e:{f:{g:{s=p&3;switch(s|0){case 3:break g;case 0:break e;default:break f}}f=f+j|0;i=0;if(f>>>0>=k>>>0){break a}ma(r+(j<<2)|0,0,(p&252)+4|0);j=f;break d}while(1){if((e|0)==(l|0)&(d|0)==(o|0)){break b}k=G[e+i|0];e=e+1|0;d=e?d:d+1|0;F[b+16>>2]=e;F[b+20>>2]=d;f=k<<(m<<3|6)|f;m=m+1|0;if((s|0)!=(m|0)){continue}break}}F[r+(j<<2)>>2]=f}j=j+1|0;k=F[h+12>>2];if(j>>>0>>0){continue}break}d=h+16|0;o=F[h>>2];f=F[h+16>>2];e=F[h+20>>2]-f|0;h:{if(e>>>0<=4194303){qa(d,1048576-(e>>>2|0)|0);break h}if((e|0)==4194304){break h}F[h+20>>2]=f+4194304}e=h+28|0;j=F[e>>2];f=F[h+32>>2]-j>>3;i:{if(f>>>0>>0){_a(e,k-f|0);j=F[e>>2];break i}if(f>>>0>k>>>0){F[h+32>>2]=(k<<3)+j}if(!k){break b}}l=F[d>>2];d=0;i=0;while(1){e=o+(d<<2)|0;h=F[e>>2];m=(d<<3)+j|0;f=i;F[m+4>>2]=f;F[m>>2]=h;e=F[e>>2];i=e+f|0;if(i>>>0>1048576){break b}j:{if(f>>>0>=i>>>0){break j}m=0;h=e&7;if(h){while(1){F[l+(f<<2)>>2]=d;f=f+1|0;m=m+1|0;if((h|0)!=(m|0)){continue}break}}if(e-1>>>0<=6){break j}while(1){e=l+(f<<2)|0;F[e>>2]=d;F[e+28>>2]=d;F[e+24>>2]=d;F[e+20>>2]=d;F[e+16>>2]=d;F[e+12>>2]=d;F[e+8>>2]=d;F[e+4>>2]=d;f=f+8|0;if((i|0)!=(f|0)){continue}break}}d=d+1|0;if((k|0)!=(d|0)){continue}break}n=(i|0)==1048576}i=n}k:{if(!i|(F[g+20>>2]?0:a)){break k}i=0;j=Z-16|0;Z=j;l:{if(!Sa(1,j+8|0,b)){break l}d=F[b+8>>2];f=F[b+16>>2];l=d-f|0;n=F[j+12>>2];h=F[b+20>>2];d=F[b+12>>2]-(h+(d>>>0>>0)|0)|0;e=F[j+8>>2];if((n|0)==(d|0)&e>>>0>l>>>0|d>>>0>>0){break l}d=h+n|0;l=e+f|0;d=l>>>0>>0?d+1|0:d;F[b+16>>2]=l;F[b+20>>2]=d;if((e|0)<=0){break l}b=f+F[b>>2]|0;F[g+48>>2]=b;d=e-1|0;f=d+b|0;l=G[f|0];m:{if(l>>>0<=63){F[g+52>>2]=d;b=G[f|0]&63;break m}n:{switch((l>>>6|0)-1|0){case 0:if(e>>>0<2){break l}d=e-2|0;F[g+52>>2]=d;b=b+d|0;b=G[b+1|0]<<8&16128|G[b|0];break m;case 1:if(e>>>0<3){break l}d=e-3|0;F[g+52>>2]=d;b=b+d|0;b=G[b+1|0]<<8|G[b+2|0]<<16&4128768|G[b|0];break m;default:break n}}d=e-4|0;F[g+52>>2]=d;b=b+d|0;b=(G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24))&1073741823}F[g+56>>2]=b+4194304;i=b>>>0<1069547520}Z=j+16|0;if(!i){break k}if(!a){t=1;break k}b=F[g+52>>2];f=F[g+56>>2];d=F[g+36>>2];e=F[g+48>>2];j=F[g+24>>2];while(1){o:{if(f>>>0>4194303){break o}while(1){if((b|0)<=0){break o}b=b-1|0;F[g+52>>2]=b;f=G[b+e|0]|f<<8;F[g+56>>2]=f;if(f>>>0<4194304){continue}break}}i=f&1048575;l=F[j+(i<<2)>>2];n=d+(l<<3)|0;f=(L(F[n>>2],f>>>20|0)+i|0)-F[n+4>>2]|0;F[g+56>>2]=f;F[(q<<2)+c>>2]=l;t=1;q=q+1|0;if((q|0)!=(a|0)){continue}break}}a=F[g+36>>2];if(a){F[g+40>>2]=a;ja(a)}a=F[g+24>>2];if(a){F[g+28>>2]=a;ja(a)}a=F[g+8>>2];if(a){F[g+12>>2]=a;ja(a)}Z=g- -64|0;return t}function kh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=M(0),f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=M(0),p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;if(F[c>>2]==F[c+4>>2]){m=F[d+80>>2];u=Z-16|0;Z=u;g=F[a+4>>2];k=G[b+24|0];h=F[d+48>>2];n=F[F[d>>2]>>2];c=u+8|0;F[c>>2]=1065353216;d=c;J[c>>2]=M(-1<>2];c=ka(k<<2);a:{if(!m|!k){break a}p=h+n|0;o=J[d>>2];n=F[a+8>>2];v=F[b>>2];d=F[b+48>>2];g=F[b+40>>2];w=F[b+44>>2];if(!G[b+84|0]){f=F[b+68>>2];s=k&254;t=k&1;a=0;while(1){b=F[v>>2];l=ki(g,w,F[f+(i<<2)>>2],0)+d|0;h=la(c,b+l|0,g);b=0;q=0;if((k|0)!=1){while(1){l=p+(a<<2)|0;j=b<<2;e=M(R(M(M(o*M(J[j+h>>2]-J[n+j>>2]))+M(.5))));b:{if(M(N(e))>2]=r;j=j|4;e=M(R(M(M(o*M(J[j+h>>2]-J[n+j>>2]))+M(.5))));c:{if(M(N(e))>2]=j;b=b+2|0;a=a+2|0;q=q+2|0;if((s|0)!=(q|0)){continue}break}}if(t){l=p+(a<<2)|0;b=b<<2;e=M(R(M(M(o*M(J[b+h>>2]-J[b+n>>2]))+M(.5))));d:{if(M(N(e))>2]=b;a=a+1|0}i=i+1|0;if((m|0)!=(i|0)){continue}break}break a}s=k&254;t=k&1;a=0;while(1){b=F[v>>2];h=ki(g,w,i,l)+d|0;j=la(c,b+h|0,g);b=0;q=0;if((k|0)!=1){while(1){h=p+(a<<2)|0;f=b<<2;e=M(R(M(M(o*M(J[f+j>>2]-J[f+n>>2]))+M(.5))));e:{if(M(N(e))>2]=r;f=f|4;e=M(R(M(M(o*M(J[f+j>>2]-J[f+n>>2]))+M(.5))));f:{if(M(N(e))>2]=f;b=b+2|0;a=a+2|0;q=q+2|0;if((s|0)!=(q|0)){continue}break}}if(t){h=p+(a<<2)|0;b=b<<2;e=M(R(M(M(o*M(J[b+j>>2]-J[b+n>>2]))+M(.5))));g:{if(M(N(e))>2]=b;a=a+1|0}b=l;i=i+1|0;b=i?b:b+1|0;l=b;if((i|0)!=(m|0)|b){continue}break}}ja(c);Z=u+16|0;return 1}j=Z-16|0;Z=j;m=F[a+4>>2];i=G[b+24|0];g=F[d+48>>2];h=F[F[d>>2]>>2];d=j+8|0;F[d>>2]=1065353216;l=d;J[d>>2]=M(-1<>2];d=ka(i<<2);m=F[c+4>>2];q=F[c>>2];h:{if(!i|(m|0)==(q|0)){break h}n=h+g|0;c=m-q>>2;u=c>>>0<=1?1:c;o=J[l>>2];h=F[a+8>>2];v=F[b>>2];l=F[b+48>>2];m=F[b+40>>2];w=F[b+44>>2];if(G[b+84|0]){s=i&254;t=i&1;a=0;c=0;while(1){b=F[v>>2];g=ki(m,w,F[q+(c<<2)>>2],0)+l|0;p=la(d,b+g|0,m);b=0;k=0;if((i|0)!=1){while(1){g=n+(a<<2)|0;f=b<<2;e=M(R(M(M(o*M(J[f+p>>2]-J[h+f>>2]))+M(.5))));i:{if(M(N(e))>2]=r;f=f|4;e=M(R(M(M(o*M(J[f+p>>2]-J[h+f>>2]))+M(.5))));j:{if(M(N(e))>2]=f;b=b+2|0;a=a+2|0;k=k+2|0;if((s|0)!=(k|0)){continue}break}}if(t){g=n+(a<<2)|0;b=b<<2;e=M(R(M(M(o*M(J[b+p>>2]-J[b+h>>2]))+M(.5))));k:{if(M(N(e))>2]=b;a=a+1|0}c=c+1|0;if((u|0)!=(c|0)){continue}break}break h}s=F[b+68>>2];t=i&254;x=i&1;a=0;c=0;while(1){b=F[v>>2];g=ki(m,w,F[s+(F[q+(c<<2)>>2]<<2)>>2],0)+l|0;p=la(d,b+g|0,m);b=0;k=0;if((i|0)!=1){while(1){g=n+(a<<2)|0;f=b<<2;e=M(R(M(M(o*M(J[f+p>>2]-J[h+f>>2]))+M(.5))));l:{if(M(N(e))>2]=r;f=f|4;e=M(R(M(M(o*M(J[f+p>>2]-J[h+f>>2]))+M(.5))));m:{if(M(N(e))>2]=f;b=b+2|0;a=a+2|0;k=k+2|0;if((t|0)!=(k|0)){continue}break}}if(x){g=n+(a<<2)|0;b=b<<2;e=M(R(M(M(o*M(J[b+p>>2]-J[b+h>>2]))+M(.5))));n:{if(M(N(e))>2]=b;a=a+1|0}c=c+1|0;if((u|0)!=(c|0)){continue}break}}ja(d);Z=j+16|0;return 1} -function Cd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=F[a+4>>2];e=F[a>>2];f=(c-e|0)/144|0;if(f>>>0>>0){e=a;b=b-f|0;h=F[a+8>>2];c=F[a+4>>2];a:{if(b>>>0<=(h-c|0)/144>>>0){b:{if(!b){break b}a=c;f=b&7;if(f){while(1){va(a);a=a+144|0;d=d+1|0;if((f|0)!=(d|0)){continue}break}}c=L(b,144)+c|0;if((b-1&268435455)>>>0<7){break b}while(1){va(a);va(a+144|0);va(a+288|0);va(a+432|0);va(a+576|0);va(a+720|0);va(a+864|0);va(a+1008|0);a=a+1152|0;if((c|0)!=(a|0)){continue}break}}F[e+4>>2]=c;break a}c:{d:{e:{a=c;c=F[e>>2];i=(a-c|0)/144|0;a=i+b|0;if(a>>>0<29826162){c=(h-c|0)/144|0;f=c<<1;f=c>>>0>=14913080?29826161:a>>>0>>0?f:a;if(f){if(f>>>0>=29826162){break e}g=ka(L(f,144))}c=L(i,144)+g|0;a=c;h=b&7;if(h){while(1){va(a);a=a+144|0;d=d+1|0;if((h|0)!=(d|0)){continue}break}}h=L(b,144)+c|0;if((b-1&268435455)>>>0>=7){while(1){va(a);va(a+144|0);va(a+288|0);va(a+432|0);va(a+576|0);va(a+720|0);va(a+864|0);va(a+1008|0);a=a+1152|0;if((h|0)!=(a|0)){continue}break}}b=L(f,144)+g|0;d=F[e+4>>2];f=F[e>>2];if((d|0)==(f|0)){break d}while(1){c=c-144|0;d=d-144|0;a=d;F[c>>2]=F[a>>2];F[c+4>>2]=F[a+4>>2];F[c+8>>2]=F[a+8>>2];F[c+12>>2]=F[a+12>>2];F[a+12>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[c+16>>2]=F[a+16>>2];F[c+20>>2]=F[a+20>>2];F[c+24>>2]=F[a+24>>2];F[a+24>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;g=G[a+28|0];F[c+40>>2]=0;F[c+32>>2]=0;F[c+36>>2]=0;D[c+28|0]=g;F[c+32>>2]=F[a+32>>2];F[c+36>>2]=F[a+36>>2];F[c+40>>2]=F[a+40>>2];F[a+40>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;F[c+52>>2]=0;F[c+44>>2]=0;F[c+48>>2]=0;F[c+44>>2]=F[a+44>>2];F[c+48>>2]=F[a+48>>2];F[c+52>>2]=F[a+52>>2];F[a+52>>2]=0;F[a+44>>2]=0;F[a+48>>2]=0;g=c- -64|0;F[g>>2]=0;F[c+56>>2]=0;F[c+60>>2]=0;F[c+56>>2]=F[a+56>>2];F[c+60>>2]=F[a+60>>2];i=g;g=a- -64|0;F[i>>2]=F[g>>2];F[g>>2]=0;F[a+56>>2]=0;F[a+60>>2]=0;F[c+68>>2]=F[a+68>>2];g=F[a+72>>2];F[c+84>>2]=0;F[c+76>>2]=0;F[c+80>>2]=0;F[c+72>>2]=g;F[c+76>>2]=F[a+76>>2];F[c+80>>2]=F[a+80>>2];F[c+84>>2]=F[a+84>>2];F[a+84>>2]=0;F[a+76>>2]=0;F[a+80>>2]=0;F[c+96>>2]=0;F[c+88>>2]=0;F[c+92>>2]=0;F[c+88>>2]=F[a+88>>2];F[c+92>>2]=F[a+92>>2];F[c+96>>2]=F[a+96>>2];F[a+96>>2]=0;F[a+88>>2]=0;F[a+92>>2]=0;g=G[a+100|0];F[c+112>>2]=0;F[c+104>>2]=0;F[c+108>>2]=0;D[c+100|0]=g;F[c+104>>2]=F[a+104>>2];F[c+108>>2]=F[a+108>>2];F[c+112>>2]=F[a+112>>2];F[a+112>>2]=0;F[a+104>>2]=0;F[a+108>>2]=0;F[c+124>>2]=0;F[c+116>>2]=0;F[c+120>>2]=0;F[c+116>>2]=F[a+116>>2];F[c+120>>2]=F[a+120>>2];F[c+124>>2]=F[a+124>>2];F[a+124>>2]=0;F[a+116>>2]=0;F[a+120>>2]=0;g=F[a+128>>2];F[c+140>>2]=0;F[c+132>>2]=0;F[c+136>>2]=0;F[c+128>>2]=g;F[c+132>>2]=F[a+132>>2];F[c+136>>2]=F[a+136>>2];F[c+140>>2]=F[a+140>>2];F[a+140>>2]=0;F[a+132>>2]=0;F[a+136>>2]=0;if((a|0)!=(f|0)){continue}break}F[e+8>>2]=b;a=F[e+4>>2];F[e+4>>2]=h;d=F[e>>2];F[e>>2]=c;if((a|0)==(d|0)){break c}while(1){b=a-144|0;c=F[b+132>>2];if(c){F[a-8>>2]=c;ja(c)}c=F[a-28>>2];if(c){F[a-24>>2]=c;ja(c)}c=F[a-40>>2];if(c){F[a-36>>2]=c;ja(c)}Gb(a-140|0);a=b;if((d|0)!=(a|0)){continue}break}break c}na();v()}oa();v()}F[e+8>>2]=b;F[e+4>>2]=h;F[e>>2]=c}if(d){ja(d)}}return}if(b>>>0>>0){e=e+L(b,144)|0;if((e|0)!=(c|0)){while(1){b=c-144|0;d=F[b+132>>2];if(d){F[c-8>>2]=d;ja(d)}d=F[c-28>>2];if(d){F[c-24>>2]=d;ja(d)}d=F[c-40>>2];if(d){F[c-36>>2]=d;ja(d)}Gb(c-140|0);c=b;if((e|0)!=(c|0)){continue}break}}F[a+4>>2]=e}}function Yc(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;F[a+56>>2]=F[a+52>>2];F[a+44>>2]=F[a+40>>2];b=F[a+64>>2];c=F[b+24>>2];if((c|0)==F[b+28>>2]){return 1}a:{b:{c:{while(1){g=i;i=F[(k<<2)+c>>2];d:{if((i|0)==-1){i=g;break d}b=F[a+56>>2];e:{if((b|0)!=F[a+60>>2]){F[b>>2]=g;F[a+56>>2]=b+4;break e}d=F[a+52>>2];e=b-d|0;h=e>>2;c=h+1|0;if(c>>>0>=1073741824){break c}f=e>>>1|0;f=e>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break b}e=ka(f<<2)}else{e=0}c=e+(h<<2)|0;F[c>>2]=g;h=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[a+60>>2]=e+(f<<2);F[a+56>>2]=h;F[a+52>>2]=c;if(!d){break e}ja(d)}f:{g:{if(!(F[F[a+12>>2]+(k>>>3&536870908)>>2]>>>k&1)){break g}e=i+1|0;e=(e>>>0)%3|0?e:i-2|0;if((e|0)==-1|F[F[a>>2]+(e>>>3&536870908)>>2]>>>e&1){break g}e=F[F[F[a+64>>2]+12>>2]+(e<<2)>>2];if((e|0)==-1){break g}b=e+1|0;b=(b>>>0)%3|0?b:e-2|0;if((b|0)==-1){break g}c=F[a+64>>2];f=F[a>>2];while(1){e=b;b=-1;d=e+1|0;d=(d>>>0)%3|0?d:e-2|0;h:{if((d|0)==-1|F[f+(d>>>3&536870908)>>2]>>>d&1){break h}d=F[F[c+12>>2]+(d<<2)>>2];if((d|0)==-1){break h}b=d+1|0;b=(b>>>0)%3|0?b:d-2|0}if((b|0)!=(i|0)){if((b|0)==-1){break f}continue}break}return 0}e=i}F[F[a+28>>2]+(e<<2)>>2]=g;b=F[a+44>>2];i:{if((b|0)!=F[a+48>>2]){F[b>>2]=e;F[a+44>>2]=b+4;break i}d=F[a+40>>2];i=b-d|0;h=i>>2;c=h+1|0;if(c>>>0>=1073741824){break a}f=i>>>1|0;f=i>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break b}i=ka(f<<2)}else{i=0}c=i+(h<<2)|0;F[c>>2]=e;h=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[a+48>>2]=i+(f<<2);F[a+44>>2]=h;F[a+40>>2]=c;if(!d){break i}ja(d)}i=g+1|0;b=F[a+64>>2];if((e|0)==-1){break d}j:{if((e>>>0)%3|0){c=e-1|0;break j}c=e+2|0;if((c|0)==-1){break d}}d=F[F[b+12>>2]+(c<<2)>>2];if((d|0)==-1){break d}f=d+((d>>>0)%3|0?-1:2)|0;if((f|0)==-1|(e|0)==(f|0)){break d}while(1){b=f+1|0;b=(b>>>0)%3|0?b:f-2|0;if(F[F[a>>2]+(b>>>3&536870908)>>2]>>>b&1){b=F[a+56>>2];k:{if((b|0)!=F[a+60>>2]){F[b>>2]=i;F[a+56>>2]=b+4;break k}d=F[a+52>>2];g=b-d|0;j=g>>2;c=j+1|0;if(c>>>0>=1073741824){break c}h=g>>>1|0;h=g>>>0>=2147483644?1073741823:c>>>0>>0?h:c;if(h){if(h>>>0>=1073741824){break b}g=ka(h<<2)}else{g=0}c=g+(j<<2)|0;F[c>>2]=i;j=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[a+60>>2]=g+(h<<2);F[a+56>>2]=j;F[a+52>>2]=c;if(!d){break k}ja(d)}d=i+1|0;b=F[a+44>>2];l:{if((b|0)!=F[a+48>>2]){F[b>>2]=f;F[a+44>>2]=b+4;break l}h=F[a+40>>2];g=b-h|0;l=g>>2;c=l+1|0;if(c>>>0>=1073741824){break a}j=g>>>1|0;j=g>>>0>=2147483644?1073741823:c>>>0>>0?j:c;if(j){if(j>>>0>=1073741824){break b}g=ka(j<<2)}else{g=0}c=g+(l<<2)|0;F[c>>2]=f;l=c+4|0;if((b|0)!=(h|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(h|0)){continue}break}}F[a+48>>2]=g+(j<<2);F[a+44>>2]=l;F[a+40>>2]=c;if(!h){break l}ja(h)}g=i;i=d}F[F[a+28>>2]+(f<<2)>>2]=g;b=F[a+64>>2];m:{if((f>>>0)%3|0){c=f-1|0;break m}c=f+2|0;if((c|0)==-1){break d}}d=F[F[b+12>>2]+(c<<2)>>2];if((d|0)==-1){break d}f=d+((d>>>0)%3|0?-1:2)|0;if((f|0)==-1){break d}if((e|0)!=(f|0)){continue}break}}k=k+1|0;c=F[b+24>>2];if(k>>>0>2]-c>>2>>>0){continue}break}return 1}na();v()}oa();v()}na();v()}function Kb(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0;f=Z-96|0;Z=f;e=F[a+16>>2];D[f+92|0]=1;F[f+88>>2]=b;F[f+84>>2]=b;F[f+80>>2]=e;a:{if((b|0)==-1){break a}j=F[a+20>>2];d=F[j>>2];e=F[F[e>>2]+(b<<2)>>2];if(e>>>0>=F[j+4>>2]-d>>2>>>0){break a}e=F[F[a+8>>2]+(F[d+(e<<2)>>2]<<2)>>2];d=F[a+4>>2];if(!G[d+84|0]){e=F[F[d+68>>2]+(e<<2)>>2]}F[f+72>>2]=0;F[f+76>>2]=0;j=f- -64|0;F[j>>2]=0;F[j+4>>2]=0;F[f+56>>2]=0;F[f+60>>2]=0;Ga(d,e,D[d+24|0],f+56|0);e=b+1|0;j=(e>>>0)%3|0?e:b-2|0;n=((b>>>0)%3|0?-1:2)+b|0;b:{c:{while(1){d=j;e=n;d:{if(!F[a+28>>2]){break d}e=b+1|0;d=(e>>>0)%3|0?e:b-2|0;e=b-1|0;if((b>>>0)%3|0){break d}e=b+2|0}if((d|0)==-1){break b}m=F[a+20>>2];b=F[m>>2];d=F[F[F[a+16>>2]>>2]+(d<<2)>>2];if(d>>>0>=F[m+4>>2]-b>>2>>>0){break b}d=F[F[a+8>>2]+(F[(d<<2)+b>>2]<<2)>>2];b=F[a+4>>2];if(!G[b+84|0]){d=F[F[b+68>>2]+(d<<2)>>2]}F[f+48>>2]=0;F[f+52>>2]=0;F[f+40>>2]=0;F[f+44>>2]=0;F[f+32>>2]=0;F[f+36>>2]=0;Ga(b,d,D[b+24|0],f+32|0);if((e|0)==-1){break c}d=F[a+20>>2];b=F[d>>2];e=F[F[F[a+16>>2]>>2]+(e<<2)>>2];if(e>>>0>=F[d+4>>2]-b>>2>>>0){break c}d=F[F[a+8>>2]+(F[b+(e<<2)>>2]<<2)>>2];b=F[a+4>>2];if(!G[b+84|0]){d=F[F[b+68>>2]+(d<<2)>>2]}F[f+24>>2]=0;F[f+28>>2]=0;F[f+16>>2]=0;F[f+20>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;Ga(b,d,D[b+24|0],f+8|0);g=F[f+8>>2];b=F[f+56>>2];d=g-b|0;p=F[f+60>>2];t=F[f+12>>2]-(p+(b>>>0>g>>>0)|0)|0;i=F[f+40>>2];e=F[f+64>>2];m=i-e|0;u=F[f+68>>2];y=F[f+44>>2]-(u+(e>>>0>i>>>0)|0)|0;g=ki(d,t,m,y);w=o-g|0;x=h-(_+(g>>>0>o>>>0)|0)|0;h=w;i=F[f+16>>2];g=i-e|0;u=F[f+20>>2]-((e>>>0>i>>>0)+u|0)|0;k=F[f+32>>2];i=k-b|0;w=F[f+36>>2]-((b>>>0>k>>>0)+p|0)|0;b=ki(g,u,i,w);o=h+b|0;h=_+x|0;h=b>>>0>o>>>0?h+1|0:h;b=l;l=d;p=t;k=F[f+48>>2];e=F[f+72>>2];d=k-e|0;t=F[f+76>>2];x=F[f+52>>2]-(t+(e>>>0>k>>>0)|0)|0;l=ki(l,p,d,x);k=b+l|0;b=_+q|0;b=k>>>0>>0?b+1|0:b;l=F[f+24>>2];p=l-e|0;e=F[f+28>>2]-((e>>>0>l>>>0)+t|0)|0;q=ki(p,e,i,w);l=k-q|0;q=b-(_+(k>>>0>>0)|0)|0;b=ki(g,u,d,x);d=r-b|0;b=s-(_+(b>>>0>r>>>0)|0)|0;s=ki(p,e,m,y);r=s+d|0;b=_+b|0;s=r>>>0>>0?b+1|0:b;nc(f+80|0);b=F[f+88>>2];if((b|0)!=-1){continue}break}b=s>>31;e=b^r;d=e-b|0;b=(b^s)-((b>>>0>e>>>0)+b|0)|0;n=-1;e=2147483647;m=q>>31;g=m;i=g^l;j=i-g|0;m=(g^q)-((i>>>0>>0)+g|0)|0;i=m;k=j^-1;g=i^2147483647;m=h;e:{f:{if(!F[a+28>>2]){if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break e}b=b+i|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;e=a;g=h;a=g>>31;d=a;n=d^o;a=n-d|0;h=a;d=(d^g)-((d>>>0>n>>>0)+d|0)|0;a=a+e|0;d=d^2147483647;h=(d|0)==(b|0)&(h^-1)>>>0>>0|b>>>0>d>>>0;a=h?-1:a;if(!(h&0)&(a|0)<=536870912|(a|0)<536870912){break e}b=0;a=a>>>29|0;break f}g:{if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break g}b=b+i|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;k=h;h=h>>31;g=h;i=g^o;h=i-g|0;j=(g^k)-((g>>>0>i>>>0)+g|0)|0;g=j^2147483647;d=a;a=h;if((g|0)==(b|0)&d>>>0>(a^-1)>>>0|b>>>0>g>>>0){break g}b=b+j|0;n=a+d|0;b=n>>>0>>0?b+1|0:b;e=b;if(!b&n>>>0<536870913){break e}}b=e>>>29|0;a=(e&536870911)<<3|n>>>29}o=li(o,m,a,b);l=li(l,q,a,b);r=li(r,s,a,b)}F[c+8>>2]=o;F[c+4>>2]=l;F[c>>2]=r;Z=f+96|0;return}ta();v()}ta();v()}ta();v()}function Nc(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;a:{if((b|0)<0){break a}c=F[a+12>>2];d=F[a+8>>2];if(c-d>>2>>>0<=b>>>0){break a}d=d+(b<<2)|0;e=F[d>>2];i=F[e+60>>2];f=F[e+56>>2];e=d+4|0;if((e|0)!=(c|0)){while(1){h=F[e>>2];F[e>>2]=0;g=F[d>>2];F[d>>2]=h;if(g){xa(g)}d=d+4|0;e=e+4|0;if((e|0)!=(c|0)){continue}break}c=F[a+12>>2]}if((c|0)!=(d|0)){while(1){c=c-4|0;e=F[c>>2];F[c>>2]=0;if(e){xa(e)}if((c|0)!=(d|0)){continue}break}}F[a+12>>2]=d;g=F[a+4>>2];b:{if(!g|(i|0)<0){break b}c=F[g+24>>2];d=F[g+28>>2];if((c|0)==(d|0)){break b}while(1){if((i|0)==F[F[c>>2]+24>>2]){d=c+4|0;i=F[g+28>>2];if((d|0)!=(i|0)){while(1){h=F[d>>2];F[d>>2]=0;e=F[c>>2];F[c>>2]=h;if(e){Ca(e+12|0,F[e+16>>2]);Ba(e,F[e+4>>2]);ja(e)}c=c+4|0;d=d+4|0;if((i|0)!=(d|0)){continue}break}d=F[g+28>>2]}if((c|0)!=(d|0)){while(1){d=d-4|0;e=F[d>>2];F[d>>2]=0;if(e){Ca(e+12|0,F[e+16>>2]);Ba(e,F[e+4>>2]);ja(e)}if((c|0)!=(d|0)){continue}break}}F[g+28>>2]=c;break b}c=c+4|0;if((d|0)!=(c|0)){continue}break}}c:{if((f|0)>4){break c}d:{e=L(f,12)+a|0;c=F[e+20>>2];d=F[e+24>>2];if((c|0)==(d|0)){break d}while(1){if(F[c>>2]==(b|0)){break d}c=c+4|0;if((d|0)!=(c|0)){continue}break}break c}if((c|0)==(d|0)){break c}f=c;c=c+4|0;pa(f,c,d-c|0);F[e+24>>2]=d-4}c=F[a+24>>2];d=F[a+20>>2];e:{if((c|0)==(d|0)){break e}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=F[h>>2];if((j|0)>(b|0)){F[h>>2]=j-1}f=d+(f|4)|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break e}c=d+(c<<2)|0;d=F[c>>2];if((d|0)<=(b|0)){break e}F[c>>2]=d-1}c=F[a+36>>2];d=F[a+32>>2];f:{if((c|0)==(d|0)){break f}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=F[h>>2];if((j|0)>(b|0)){F[h>>2]=j-1}f=d+(f|4)|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break f}c=d+(c<<2)|0;d=F[c>>2];if((d|0)<=(b|0)){break f}F[c>>2]=d-1}c=F[a+48>>2];d=F[a+44>>2];g:{if((c|0)==(d|0)){break g}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=F[h>>2];if((j|0)>(b|0)){F[h>>2]=j-1}f=d+(f|4)|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break g}c=d+(c<<2)|0;d=F[c>>2];if((d|0)<=(b|0)){break g}F[c>>2]=d-1}c=F[a+60>>2];d=F[a+56>>2];h:{if((c|0)==(d|0)){break h}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=F[h>>2];if((j|0)>(b|0)){F[h>>2]=j-1}f=d+(f|4)|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break h}c=d+(c<<2)|0;d=F[c>>2];if((d|0)<=(b|0)){break h}F[c>>2]=d-1}c=F[a+72>>2];a=F[a+68>>2];if((c|0)==(a|0)){break a}d=c-a|0;c=d>>2;e=c>>>0<=1?1:c;g=e&1;c=0;if(d>>>0>=8){d=e&-2;e=0;while(1){i=c<<2;f=i+a|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}i=a+(i|4)|0;f=F[i>>2];if((f|0)>(b|0)){F[i>>2]=f-1}c=c+2|0;e=e+2|0;if((d|0)!=(e|0)){continue}break}}if(!g){break a}f=b;a=a+(c<<2)|0;b=F[a>>2];if((f|0)>=(b|0)){break a}F[a>>2]=b-1}}function ja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!a){break a}d=a-8|0;b=F[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=F[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=F[d+8>>2];b=b>>>3|0;c=F[d+12>>2];if((c|0)==(e|0)){i=11764,j=F[2941]&oi(b),F[i>>2]=j;break b}F[e+12>>2]=c;F[c+8>>2]=e;break b}h=F[d+24>>2];b=F[d+12>>2];c:{if((d|0)!=(b|0)){c=F[d+8>>2];F[c+12>>2]=b;F[b+8>>2]=c;break c}d:{e=d+20|0;c=F[e>>2];if(c){break d}e=d+16|0;c=F[e>>2];if(c){break d}b=0;break c}while(1){g=e;b=c;e=b+20|0;c=F[e>>2];if(c){continue}e=b+16|0;c=F[b+16>>2];if(c){continue}break}F[g>>2]=0}if(!h){break b}e=F[d+28>>2];c=(e<<2)+12068|0;e:{if(F[c>>2]==(d|0)){F[c>>2]=b;if(b){break e}i=11768,j=F[2942]&oi(e),F[i>>2]=j;break b}F[h+(F[h+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}F[b+24>>2]=h;c=F[d+16>>2];if(c){F[b+16>>2]=c;F[c+24>>2]=b}c=F[d+20>>2];if(!c){break b}F[b+20>>2]=c;F[c+24>>2]=b;break b}b=F[f+4>>2];if((b&3)!=3){break b}F[2943]=a;F[f+4>>2]=b&-2;F[d+4>>2]=a|1;F[a+d>>2]=a;return}if(d>>>0>=f>>>0){break a}b=F[f+4>>2];if(!(b&1)){break a}f:{if(!(b&2)){if(F[2947]==(f|0)){F[2947]=d;a=F[2944]+a|0;F[2944]=a;F[d+4>>2]=a|1;if(F[2946]!=(d|0)){break a}F[2943]=0;F[2946]=0;return}if(F[2946]==(f|0)){F[2946]=d;a=F[2943]+a|0;F[2943]=a;F[d+4>>2]=a|1;F[a+d>>2]=a;return}a=(b&-8)+a|0;g:{if(b>>>0<=255){e=F[f+8>>2];b=b>>>3|0;c=F[f+12>>2];if((c|0)==(e|0)){i=11764,j=F[2941]&oi(b),F[i>>2]=j;break g}F[e+12>>2]=c;F[c+8>>2]=e;break g}h=F[f+24>>2];b=F[f+12>>2];h:{if((f|0)!=(b|0)){c=F[f+8>>2];F[c+12>>2]=b;F[b+8>>2]=c;break h}i:{e=f+20|0;c=F[e>>2];if(c){break i}e=f+16|0;c=F[e>>2];if(c){break i}b=0;break h}while(1){g=e;b=c;e=b+20|0;c=F[e>>2];if(c){continue}e=b+16|0;c=F[b+16>>2];if(c){continue}break}F[g>>2]=0}if(!h){break g}e=F[f+28>>2];c=(e<<2)+12068|0;j:{if(F[c>>2]==(f|0)){F[c>>2]=b;if(b){break j}i=11768,j=F[2942]&oi(e),F[i>>2]=j;break g}F[h+(F[h+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}F[b+24>>2]=h;c=F[f+16>>2];if(c){F[b+16>>2]=c;F[c+24>>2]=b}c=F[f+20>>2];if(!c){break g}F[b+20>>2]=c;F[c+24>>2]=b}F[d+4>>2]=a|1;F[a+d>>2]=a;if(F[2946]!=(d|0)){break f}F[2943]=a;return}F[f+4>>2]=b&-2;F[d+4>>2]=a|1;F[a+d>>2]=a}if(a>>>0<=255){b=(a&-8)+11804|0;c=F[2941];a=1<<(a>>>3);k:{if(!(c&a)){F[2941]=a|c;a=b;break k}a=F[b+8>>2]}F[b+8>>2]=d;F[a+12>>2]=d;F[d+12>>2]=b;F[d+8>>2]=a;return}e=31;if(a>>>0<=16777215){b=O(a>>>8|0);e=((a>>>38-b&1)-(b<<1)|0)+62|0}F[d+28>>2]=e;F[d+16>>2]=0;F[d+20>>2]=0;g=(e<<2)+12068|0;l:{m:{c=F[2942];b=1<>2]=d;F[d+24>>2]=g;break n}e=a<<((e|0)!=31?25-(e>>>1|0)|0:0);b=F[g>>2];while(1){c=b;if((F[b+4>>2]&-8)==(a|0)){break m}b=e>>>29|0;e=e<<1;g=c+(b&4)|0;b=F[g+16>>2];if(b){continue}break}F[g+16>>2]=d;F[d+24>>2]=c}F[d+12>>2]=d;F[d+8>>2]=d;break l}a=F[c+8>>2];F[a+12>>2]=d;F[c+8>>2]=d;F[d+24>>2]=0;F[d+12>>2]=c;F[d+8>>2]=a}a=F[2949]-1|0;F[2949]=a?a:-1}}function di(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0;F[a+8>>2]=e;n=a+32|0;h=F[n>>2];f=F[a+36>>2]-h>>2;a:{if(f>>>0>>0){qa(n,e-f|0);d=F[a+8>>2];break a}d=e;if(d>>>0>=f>>>0){break a}F[a+36>>2]=h+(e<<2);d=e}s=F[a+52>>2];p=F[a+48>>2];f=0;h=e>>>0>1073741823?-1:e<<2;m=ma(ka(h),0,h);b:{if((d|0)<=0){break b}g=F[a+32>>2];while(1){d=f<<2;h=F[d+m>>2];j=F[a+16>>2];c:{if((h|0)>(j|0)){F[d+g>>2]=j;break c}d=d+g|0;j=F[a+12>>2];if((j|0)>(h|0)){F[d>>2]=j;break c}F[d>>2]=h}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}if((d|0)<=0){break b}f=0;while(1){h=f<<2;d=h+c|0;h=F[b+h>>2]+F[g+h>>2]|0;F[d>>2]=h;d:{if((h|0)>F[a+16>>2]){i=h-F[a+20>>2]|0}else{if((h|0)>=F[a+12>>2]){break d}i=h+F[a+20>>2]|0}F[d>>2]=i}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}f=F[a+56>>2];q=F[f>>2];f=F[f+4>>2]-q|0;if((f|0)>=5){o=f>>>2|0;t=o>>>0<=2?2:o;u=e&-2;w=e&1;h=1;while(1){e:{f:{if((h|0)!=(o|0)){r=L(e,h);f=F[(h<<2)+q>>2];if((f|0)==-1){break f}f=F[F[p+12>>2]+(f<<2)>>2];if((f|0)==-1){break f}j=F[s>>2];g=F[p>>2];k=F[j+(F[g+(f<<2)>>2]<<2)>>2];i=f+1|0;i=(i>>>0)%3|0?i:f-2|0;if((i|0)!=-1){i=F[g+(i<<2)>>2]}else{i=-1}g:{h:{if((f>>>0)%3|0){f=f-1|0;break h}f=f+2|0;l=-1;if((f|0)==-1){break g}}l=F[g+(f<<2)>>2]}if((h|0)<=(k|0)){break f}f=F[(i<<2)+j>>2];if((f|0)>=(h|0)){break f}g=F[j+(l<<2)>>2];if((g|0)>=(h|0)){break f}i:{if((e|0)<=0){break i}g=L(e,g);j=L(e,f);k=L(e,k);f=0;l=0;if((e|0)!=1){while(1){F[(f<<2)+m>>2]=(F[(f+g<<2)+c>>2]+F[(f+j<<2)+c>>2]|0)-F[(f+k<<2)+c>>2];i=f|1;F[(i<<2)+m>>2]=(F[(g+i<<2)+c>>2]+F[(j+i<<2)+c>>2]|0)-F[(i+k<<2)+c>>2];f=f+2|0;l=l+2|0;if((u|0)!=(l|0)){continue}break}}if(!w){break i}F[(f<<2)+m>>2]=(F[(f+g<<2)+c>>2]+F[(f+j<<2)+c>>2]|0)-F[(f+k<<2)+c>>2]}if((d|0)<=0){break e}j=F[n>>2];f=0;while(1){d=f<<2;g=F[d+m>>2];k=F[a+16>>2];j:{if((g|0)>(k|0)){F[d+j>>2]=k;break j}d=d+j|0;k=F[a+12>>2];if((k|0)>(g|0)){F[d>>2]=k;break j}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;i=b+d|0;while(1){g=f<<2;d=g+k|0;g=F[g+i>>2]+F[g+j>>2]|0;F[d>>2]=g;k:{if((g|0)>F[a+16>>2]){l=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break k}l=g+F[a+20>>2]|0}F[d>>2]=l}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}break e}ta();v()}if((d|0)<=0){break e}k=(L(h-1|0,e)<<2)+c|0;j=F[n>>2];f=0;while(1){d=f<<2;g=F[d+k>>2];i=F[a+16>>2];l:{if((g|0)>(i|0)){F[d+j>>2]=i;break l}d=d+j|0;i=F[a+12>>2];if((i|0)>(g|0)){F[d>>2]=i;break l}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;i=b+d|0;while(1){g=f<<2;d=g+k|0;g=F[g+i>>2]+F[g+j>>2]|0;F[d>>2]=g;m:{if((g|0)>F[a+16>>2]){l=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break m}l=g+F[a+20>>2]|0}F[d>>2]=l}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}h=h+1|0;if((t|0)!=(h|0)){continue}break}}ja(m);return 1}function od(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((b|0)==-1){return 1}g=(b>>>0)/3|0;if(!(F[F[a+24>>2]+(g>>>3&268435452)>>2]>>>g&1)){e=F[a+48>>2];F[a+52>>2]=e;a:{if((e|0)!=F[a+56>>2]){F[e>>2]=b;F[a+52>>2]=e+4;break a}d=ka(4);F[d>>2]=b;c=d+4|0;F[a+56>>2]=c;F[a+52>>2]=c;F[a+48>>2]=d;if(!e){break a}ja(e)}c=b+1|0;i=(c>>>0)%3|0?c:b-2|0;c=F[F[a+4>>2]+28>>2];k=F[(i<<2)+c>>2];if((k|0)==-1){return 0}e=(b-L(g,3)|0?-1:2)+b|0;j=F[c+(e<<2)>>2];if((j|0)==-1){return 0}b=F[a+36>>2];g=b+(k>>>3&536870908)|0;d=F[g>>2];c=1<>2]=c|d;Ka(a+8|0,k,i);b=F[a+36>>2]}d=(j>>>3&536870908)+b|0;c=F[d>>2];b=1<>2]=b|c;Ka(a+8|0,j,e)}f=F[a+52>>2];if((f|0)==F[a+48>>2]){return 1}k=a+8|0;while(1){b:{c:{f=f-4|0;b=F[f>>2];if((b|0)==-1){break c}c=(b>>>0)/3|0;g=F[a+24>>2]+(c>>>3&268435452)|0;d=F[g>>2];c=1<>2]=c|d;h=F[a+4>>2];c=F[F[h+28>>2]+(b<<2)>>2];if((c|0)==-1){return 0}while(1){d=b;d:{e:{j=F[a+36>>2]+(c>>>3&536870908)|0;i=F[j>>2];e=1<>2]+(c<<2)>>2];g:{if((g|0)==-1){break g}b=g+1|0;b=(b>>>0)%3|0?b:g-2|0;if((b|0)==-1|F[F[h>>2]+(b>>>3&536870908)>>2]>>>b&1){break g}g=F[F[F[h+64>>2]+12>>2]+(b<<2)>>2];if((g|0)!=-1){break f}}F[j>>2]=e|i;Ka(k,c,d);h=F[a+4>>2];break e}F[j>>2]=e|i;Ka(k,c,d);h=F[a+4>>2];b=g+1|0;if((((b>>>0)%3|0?b:g-2|0)|0)==-1){break e}b=-1;h:{if((d|0)==-1){break h}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1|F[F[h>>2]+(c>>>3&536870908)>>2]>>>c&1){break h}b=F[F[F[h+64>>2]+12>>2]+(c<<2)>>2]}c=(b>>>0)/3|0;d=1<>2];e=c>>>5|0;j=F[f+(e<<2)>>2];break d}i:{j:{if((d|0)==-1){break j}c=-1;b=d+1|0;b=(b>>>0)%3|0?b:d-2|0;if(!((b|0)==-1|F[F[h>>2]+(b>>>3&536870908)>>2]>>>b&1)){c=F[F[F[h+64>>2]+12>>2]+(b<<2)>>2]}k:{l:{if((d>>>0)%3|0){f=d-1|0;break l}f=d+2|0;b=-1;if((f|0)==-1){break k}}b=-1;if(F[F[h>>2]+(f>>>3&536870908)>>2]>>>f&1){break k}b=F[F[F[h+64>>2]+12>>2]+(f<<2)>>2]}g=(b|0)==-1;i=g?-1:(b>>>0)/3|0;if((c|0)!=-1){f=F[a+24>>2];d=(c>>>0)/3|0;e=d>>>5|0;j=F[f+(e<<2)>>2];d=1<>2];e=i>>>5|0;j=F[f+(e<<2)>>2];if(!(d&j)){break d}}f=F[a+52>>2]-4|0;F[a+52>>2]=f;break b}if(g){b=c;break d}if(F[(i>>>3&536870908)+f>>2]>>>i&1){b=c;break d}h=F[a+52>>2];F[h-4>>2]=b;if(F[a+56>>2]!=(h|0)){F[h>>2]=c;f=h+4|0;break c}m:{i=F[a+48>>2];e=h-i|0;g=e>>2;d=g+1|0;if(d>>>0<1073741824){b=e>>>1|0;e=e>>>0>=2147483644?1073741823:b>>>0>d>>>0?b:d;if(e){if(e>>>0>=1073741824){break m}d=ka(e<<2)}else{d=0}b=d+(g<<2)|0;F[b>>2]=c;f=b+4|0;if((h|0)!=(i|0)){while(1){b=b-4|0;h=h-4|0;F[b>>2]=F[h>>2];if((h|0)!=(i|0)){continue}break}}F[a+56>>2]=d+(e<<2);F[a+52>>2]=f;F[a+48>>2]=b;if(!i){break b}ja(i);f=F[a+52>>2];break b}na();v()}oa();v()}F[(e<<2)+f>>2]=d|j;c=F[F[h+28>>2]+(b<<2)>>2];if((c|0)!=-1){continue}break}return 0}F[a+52>>2]=f}if(F[a+48>>2]!=(f|0)){continue}break}}return 1}function he(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0;F[a+8>>2]=e;m=a+32|0;h=F[m>>2];f=F[a+36>>2]-h>>2;a:{if(f>>>0>>0){qa(m,e-f|0);d=F[a+8>>2];break a}d=e;if(d>>>0>=f>>>0){break a}F[a+36>>2]=h+(e<<2);d=e}s=F[a+52>>2];n=F[a+48>>2];f=0;h=e>>>0>1073741823?-1:e<<2;l=ma(ka(h),0,h);b:{if((d|0)<=0){break b}g=F[a+32>>2];while(1){d=f<<2;h=F[d+l>>2];i=F[a+16>>2];c:{if((h|0)>(i|0)){F[d+g>>2]=i;break c}d=d+g|0;i=F[a+12>>2];if((i|0)>(h|0)){F[d>>2]=i;break c}F[d>>2]=h}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}if((d|0)<=0){break b}f=0;while(1){h=f<<2;d=h+c|0;h=F[b+h>>2]+F[g+h>>2]|0;F[d>>2]=h;d:{if((h|0)>F[a+16>>2]){h=h-F[a+20>>2]|0}else{if((h|0)>=F[a+12>>2]){break d}h=h+F[a+20>>2]|0}F[d>>2]=h}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}f=F[a+56>>2];q=F[f>>2];f=F[f+4>>2]-q|0;if((f|0)>=5){o=f>>>2|0;t=o>>>0<=2?2:o;u=e&-2;w=e&1;h=1;while(1){e:{f:{if((h|0)!=(o|0)){r=L(e,h);f=F[(h<<2)+q>>2];if((f|0)==-1|F[F[n>>2]+(f>>>3&536870908)>>2]>>>f&1){break f}f=F[F[F[n+64>>2]+12>>2]+(f<<2)>>2];if((f|0)==-1){break f}i=F[s>>2];g=F[n+28>>2];k=F[i+(F[g+(f<<2)>>2]<<2)>>2];if((k|0)>=(h|0)){break f}j=f+1|0;j=F[i+(F[g+(((j>>>0)%3|0?j:f-2|0)<<2)>>2]<<2)>>2];if((j|0)>=(h|0)){break f}f=F[i+(F[g+(f+((f>>>0)%3|0?-1:2)<<2)>>2]<<2)>>2];if((f|0)>=(h|0)){break f}g:{if((e|0)<=0){break g}g=L(e,f);i=L(e,j);k=L(e,k);f=0;p=0;if((e|0)!=1){while(1){F[(f<<2)+l>>2]=(F[(f+g<<2)+c>>2]+F[(f+i<<2)+c>>2]|0)-F[(f+k<<2)+c>>2];j=f|1;F[(j<<2)+l>>2]=(F[(g+j<<2)+c>>2]+F[(i+j<<2)+c>>2]|0)-F[(k+j<<2)+c>>2];f=f+2|0;p=p+2|0;if((u|0)!=(p|0)){continue}break}}if(!w){break g}F[(f<<2)+l>>2]=(F[(f+g<<2)+c>>2]+F[(f+i<<2)+c>>2]|0)-F[(f+k<<2)+c>>2]}if((d|0)<=0){break e}i=F[m>>2];f=0;while(1){d=f<<2;g=F[d+l>>2];k=F[a+16>>2];h:{if((g|0)>(k|0)){F[d+i>>2]=k;break h}d=d+i|0;k=F[a+12>>2];if((k|0)>(g|0)){F[d>>2]=k;break h}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;j=b+d|0;while(1){g=f<<2;d=g+k|0;g=F[g+j>>2]+F[g+i>>2]|0;F[d>>2]=g;i:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break i}g=g+F[a+20>>2]|0}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}break e}ta();v()}if((d|0)<=0){break e}k=(L(h-1|0,e)<<2)+c|0;i=F[m>>2];f=0;while(1){d=f<<2;g=F[d+k>>2];j=F[a+16>>2];j:{if((g|0)>(j|0)){F[d+i>>2]=j;break j}d=d+i|0;j=F[a+12>>2];if((j|0)>(g|0)){F[d>>2]=j;break j}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;j=b+d|0;while(1){g=f<<2;d=g+k|0;g=F[g+j>>2]+F[g+i>>2]|0;F[d>>2]=g;k:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break k}g=g+F[a+20>>2]|0}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}h=h+1|0;if((t|0)!=(h|0)){continue}break}}ja(l);return 1}function Fb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=M(0),k=0,l=0,m=M(0);i=F[c>>2];a:{b:{f=F[b+4>>2];if(!f){break b}g=ni(f);c:{if(g>>>0>=2){e=i;if(f>>>0<=e>>>0){e=(i>>>0)%(f>>>0)|0}c=F[F[b>>2]+(e<<2)>>2];if(!c){break b}if(g>>>0<=1){break c}while(1){c=F[c>>2];if(!c){break b}g=F[c+4>>2];if((g|0)!=(i|0)){if(f>>>0<=g>>>0){g=(g>>>0)%(f>>>0)|0}if((e|0)!=(g|0)){break b}}if(F[c+8>>2]!=(i|0)){continue}break}b=0;break a}e=f-1&i;c=F[F[b>>2]+(e<<2)>>2];if(!c){break b}}h=f-1|0;while(1){c=F[c>>2];if(!c){break b}g=F[c+4>>2];if((g|0)!=(i|0)&(g&h)!=(e|0)){break b}if(F[c+8>>2]!=(i|0)){continue}break}b=0;break a}c=ka(16);d=F[F[d>>2]>>2];F[c+12>>2]=0;F[c+8>>2]=d;F[c+4>>2]=i;F[c>>2]=0;m=M(F[b+12>>2]+1>>>0);j=J[b+16>>2];d:{if(m>M(j*M(f>>>0))?0:f){break d}e=2;d=(f-1&f)!=0|f>>>0<3|f<<1;j=M(S(M(m/j)));e:{if(j=M(0)){g=~~j>>>0;break e}g=0}d=d>>>0>g>>>0?d:g;f:{if((d|0)==1){break f}if(!(d&d-1)){e=d;break f}e=Mc(d);f=F[b+4>>2]}g:{if(e>>>0<=f>>>0){if(e>>>0>=f>>>0){break g}g=f>>>0<3;j=M(S(M(M(I[b+12>>2])/J[b+16>>2])));h:{if(j=M(0)){d=~~j>>>0;break h}d=0}i:{j:{if(g){break j}if(ni(f)>>>0>1){break j}d=d>>>0<2?d:1<<32-O(d-1|0);break i}d=Mc(d)}e=d>>>0>>0?e:d;if(f>>>0<=e>>>0){break g}}f=0;g=0;h=e;k:{l:{m:{n:{if(e){if(h>>>0>=1073741824){break n}d=ka(h<<2);e=F[b>>2];F[b>>2]=d;if(e){ja(e)}F[b+4>>2]=h;d=0;if(h>>>0>=4){e=h&-4;while(1){k=d<<2;F[k+F[b>>2]>>2]=0;F[F[b>>2]+(k|4)>>2]=0;F[F[b>>2]+(k|8)>>2]=0;F[F[b>>2]+(k|12)>>2]=0;d=d+4|0;g=g+4|0;if((e|0)!=(g|0)){continue}break}}e=h&3;if(e){while(1){F[F[b>>2]+(d<<2)>>2]=0;d=d+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}e=F[b+8>>2];if(!e){break k}d=b+8|0;f=F[e+4>>2];g=ni(h);if(g>>>0<2){break m}f=f>>>0>=h>>>0?(f>>>0)%(h>>>0)|0:f;F[F[b>>2]+(f<<2)>>2]=d;d=F[e>>2];if(!d){break k}if(g>>>0<=1){break l}while(1){g=F[d+4>>2];if(h>>>0<=g>>>0){g=(g>>>0)%(h>>>0)|0}o:{if((f|0)==(g|0)){e=d;break o}l=g<<2;k=l+F[b>>2]|0;if(!F[k>>2]){F[k>>2]=e;e=d;f=g;break o}F[e>>2]=F[d>>2];F[d>>2]=F[F[l+F[b>>2]>>2]>>2];F[F[l+F[b>>2]>>2]>>2]=d}d=F[e>>2];if(d){continue}break}break k}d=F[b>>2];F[b>>2]=0;if(d){ja(d)}F[b+4>>2]=0;break k}oa();v()}f=h-1&f;F[F[b>>2]+(f<<2)>>2]=d;d=F[e>>2];if(!d){break k}}k=h-1|0;while(1){g=k&F[d+4>>2];p:{if((g|0)==(f|0)){e=d;break p}l=g<<2;h=l+F[b>>2]|0;if(F[h>>2]){F[e>>2]=F[d>>2];F[d>>2]=F[F[l+F[b>>2]>>2]>>2];F[F[l+F[b>>2]>>2]>>2]=d;break p}F[h>>2]=e;e=d;f=g}d=F[e>>2];if(d){continue}break}}}f=F[b+4>>2];d=f-1|0;if(!(d&f)){e=d&i;break d}if(f>>>0>i>>>0){e=i;break d}e=(i>>>0)%(f>>>0)|0}e=F[b>>2]+(e<<2)|0;d=F[e>>2];q:{r:{if(!d){d=b+8|0;F[c>>2]=F[d>>2];F[b+8>>2]=c;F[e>>2]=d;d=F[c>>2];if(!d){break q}d=F[d+4>>2];e=f-1|0;s:{if(!(e&f)){d=d&e;break s}if(d>>>0>>0){break s}d=(d>>>0)%(f>>>0)|0}d=F[b>>2]+(d<<2)|0;break r}F[c>>2]=F[d>>2]}F[d>>2]=c}F[b+12>>2]=F[b+12>>2]+1;b=1}D[a+4|0]=b;F[a>>2]=c}function Vb(a,b,c){var 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;j=L(b,12)+a|0;F[j+12>>2]=F[j+8>>2];m=(c|0)==-1?-1:(c>>>0)/3|0;d=1;k=c;a:{b:{c:{while(1){d:{l=d;if(!d){if((k|0)==-1){break d}if((Wc(a,((k>>>0)%3|0?-1:2)+k|0)|0)==-1){break a}c=k+1|0;d=(c>>>0)%3|0?c:k-2|0;if((d|0)==-1){break a}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break a}d=F[F[F[a+4>>2]+12>>2]+(c<<2)>>2];if((d|0)==-1){break a}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break a}m=(c>>>0)/3|0}e:{d=F[a+56>>2]+(m>>>3&536870908)|0;h=F[d>>2];e=1<>2]=e|h;d=F[j+12>>2];f:{if((d|0)!=F[j+16>>2]){F[d>>2]=m;F[j+12>>2]=d+4;break f}n=F[j+8>>2];h=d-n|0;e=h>>2;i=e+1|0;if(i>>>0>=1073741824){break c}g=h>>>1|0;i=h>>>0>=2147483644?1073741823:i>>>0>>0?g:i;if(i){if(i>>>0>=1073741824){break b}g=ka(i<<2)}else{g=0}h=g+(e<<2)|0;F[h>>2]=m;e=h+4|0;if((d|0)!=(n|0)){while(1){h=h-4|0;d=d-4|0;F[h>>2]=F[d>>2];if((d|0)!=(n|0)){continue}break}}F[j+8>>2]=h;F[j+12>>2]=e;F[j+16>>2]=g+(i<<2);if(!n){break f}ja(n)}g=f+1|0;g:{h:{i:{if(!f){break i}if(g&1){if((c|0)==-1){c=-1;break g}d=c+1|0;c=(d>>>0)%3|0?d:c-2|0;break i}k=l?k:c;if((c|0)==-1){c=-1;break g}if((c>>>0)%3|0){d=c-1|0;break h}c=c+2|0}d=c;c=-1;if((d|0)==-1){break g}}c=F[F[F[a+4>>2]+12>>2]+(d<<2)>>2];h=-1;f=-1;e=d+1|0;e=(e>>>0)%3|0?e:d-2|0;if((e|0)>=0){f=(e>>>0)/3|0;f=F[(F[F[a>>2]+96>>2]+L(f,12)|0)+(e-L(f,3)<<2)>>2]}j:{if((c|0)==-1){break j}i=((c>>>0)%3|0?-1:2)+c|0;if((i|0)<0){break j}e=(i>>>0)/3|0;h=F[(F[F[a>>2]+96>>2]+L(e,12)|0)+(i-L(e,3)<<2)>>2]}if((f|0)!=(h|0)){c=-1;break g}k:{l:{f=((d>>>0)%3|0?-1:2)+d|0;if((f|0)>=0){d=(f>>>0)/3|0;if((c|0)!=-1){break l}c=-1;break g}d=-1;if((c|0)!=-1){break k}c=-1;break g}d=F[(F[F[a>>2]+96>>2]+L(d,12)|0)+(f-L(d,3)<<2)>>2]}f=c+1|0;e=(f>>>0)%3|0?f:c-2|0;if((e|0)>=0){f=(e>>>0)/3|0;f=F[(F[F[a>>2]+96>>2]+L(f,12)|0)+(e-L(f,3)<<2)>>2]}else{f=-1}if((f|0)!=(d|0)){c=-1;break g}f=g;m=(c>>>0)/3|0;d=F[a+56>>2]+(m>>>3&268435452)|0;h=F[d>>2];e=1<>2]-4|0;g=F[l>>2];d=F[a+56>>2]+(g>>>3&536870908)|0;c=F[d>>2];o=d,p=oi(g)&c,F[o>>2]=p;F[j+12>>2]=l;break a}d=0;if(l){continue}break a}break}k=-1;Wc(a,-1);break a}na();v()}oa();v()}F[((b<<2)+a|0)+44>>2]=k;b=F[j+12>>2];i=F[j+8>>2];m:{if((b|0)==(i|0)){break m}c=b-i|0;b=c>>2;b=b>>>0<=1?1:b;k=b&1;e=F[a+56>>2];d=0;if(c>>>0>=8){f=b&-2;c=0;while(1){l=d<<2;g=F[l+i>>2];b=e+(g>>>3&536870908)|0;a=F[b>>2];o=b,p=oi(g)&a,F[o>>2]=p;g=F[i+(l|4)>>2];b=e+(g>>>3&536870908)|0;a=F[b>>2];o=b,p=oi(g)&a,F[o>>2]=p;d=d+2|0;c=c+2|0;if((f|0)!=(c|0)){continue}break}}if(!k){break m}c=F[i+(d<<2)>>2];b=e+(c>>>3&536870908)|0;a=F[b>>2];o=b,p=oi(c)&a,F[o>>2]=p}}function pd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if((b|0)==-1){return 1}g=(b>>>0)/3|0;if(!(F[F[a+24>>2]+(g>>>3&268435452)>>2]>>>g&1)){f=F[a+48>>2];F[a+52>>2]=f;a:{if((f|0)!=F[a+56>>2]){F[f>>2]=b;F[a+52>>2]=f+4;break a}d=ka(4);F[d>>2]=b;c=d+4|0;F[a+56>>2]=c;F[a+52>>2]=c;F[a+48>>2]=d;if(!f){break a}ja(f)}e=-1;d=F[a+4>>2];c=b+1|0;i=(c>>>0)%3|0?c:b-2|0;if((i|0)!=-1){e=F[F[d>>2]+(i<<2)>>2]}b:{h=b-L(g,3)|0;if(h){c=b-1|0;break b}c=b+2|0;if((c|0)!=-1){break b}return 0}if((e|0)==-1){return 0}j=F[F[d>>2]+(c<<2)>>2];if((j|0)==-1){return 0}c=F[a+36>>2];f=c+(e>>>3&536870908)|0;g=F[f>>2];d=1<>2]=d|g;Ka(a+8|0,e,i);c=F[a+36>>2]}g=(j>>>3&536870908)+c|0;d=F[g>>2];c=1<>2]=c|d;Ka(a+8|0,j,(h?-1:2)+b|0)}c=F[a+52>>2];if((c|0)==F[a+48>>2]){return 1}j=a+8|0;while(1){c:{d:{c=c-4|0;b=F[c>>2];if((b|0)==-1){break d}d=(b>>>0)/3|0;f=F[a+24>>2]+(d>>>3&268435452)|0;g=F[f>>2];d=1<>2]=d|g;while(1){i=F[a+4>>2];e=F[F[i>>2]+(b<<2)>>2];if((e|0)==-1){return 0}e:{f:{h=F[a+36>>2]+(e>>>3&536870908)|0;f=F[h>>2];g=1<>2]+(e<<2)>>2];h:{if((d|0)==-1){break h}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break h}d=F[F[i+12>>2]+(c<<2)>>2];if((d|0)!=-1){break g}}F[h>>2]=f|g;Ka(j,e,b);break f}F[h>>2]=f|g;Ka(j,e,b);c=d+1|0;if((((c>>>0)%3|0?c:d-2|0)|0)==-1){break f}c=b-2|0;d=b+1|0;b=-1;c=(d>>>0)%3|0?d:c;if((c|0)!=-1){b=F[F[F[a+4>>2]+12>>2]+(c<<2)>>2]}c=(b>>>0)/3|0;d=1<>2];f=c>>>5|0;i=F[e+(f<<2)>>2];break e}c=-1;g=F[a+4>>2];d=b+1|0;d=(d>>>0)%3|0?d:b-2|0;if((d|0)!=-1){c=F[F[g+12>>2]+(d<<2)>>2]}i:{j:{if((b>>>0)%3|0){e=b-1|0;break j}e=b+2|0;b=-1;if((e|0)==-1){break i}}b=F[F[g+12>>2]+(e<<2)>>2]}g=(b|0)==-1;h=g?-1:(b>>>0)/3|0;k:{if((c|0)!=-1){e=F[a+24>>2];d=(c>>>0)/3|0;f=d>>>5|0;i=F[e+(f<<2)>>2];d=1<>2];f=h>>>5|0;i=F[e+(f<<2)>>2];if(!(d&i)){break e}}c=F[a+52>>2]-4|0;F[a+52>>2]=c;break c}if(g){b=c;break e}if(F[(h>>>3&536870908)+e>>2]>>>h&1){b=c;break e}e=F[a+52>>2];F[e-4>>2]=b;if(F[a+56>>2]!=(e|0)){F[e>>2]=c;c=e+4|0;break d}l:{h=F[a+48>>2];f=e-h|0;g=f>>2;d=g+1|0;if(d>>>0<1073741824){b=f>>>1|0;f=f>>>0>=2147483644?1073741823:b>>>0>d>>>0?b:d;if(f){if(f>>>0>=1073741824){break l}d=ka(f<<2)}else{d=0}b=d+(g<<2)|0;F[b>>2]=c;c=b+4|0;if((e|0)!=(h|0)){while(1){b=b-4|0;e=e-4|0;F[b>>2]=F[e>>2];if((e|0)!=(h|0)){continue}break}}F[a+56>>2]=d+(f<<2);F[a+52>>2]=c;F[a+48>>2]=b;if(!h){break c}ja(h);c=F[a+52>>2];break c}na();v()}oa();v()}F[(f<<2)+e>>2]=d|i;if((b|0)!=-1){continue}break}return 0}F[a+52>>2]=c}if(F[a+48>>2]!=(c|0)){continue}break}}return 1}function ee(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,k=0,l=0,m=0;h=Z-32|0;Z=h;a:{b:{if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[F[a+48>>2]+64>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}c:{if(d){Na(a+60|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[F[a+48>>2]+64>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+72|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[F[a+48>>2]+64>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+84|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[F[a+48>>2]+64>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+96|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}e=0;c=F[b+8>>2];f=F[b+12>>2];d=c;c=F[b+20>>2];i=c;g=F[b+16>>2];j=g+4|0;c=j>>>0<4?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break a}m=F[b>>2];k=m+g|0;l=G[k|0]|G[k+1|0]<<8|(G[k+2|0]<<16|G[k+3|0]<<24);F[b+16>>2]=j;F[b+20>>2]=c;k=d;d=f;c=i;f=g+8|0;c=f>>>0<8?c+1|0:c;if(f>>>0>k>>>0&(c|0)>=(d|0)|(c|0)>(d|0)){break a}d=j+m|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=f;F[b+20>>2]=c;if((d|0)<(l|0)){break a}F[a+16>>2]=d;F[a+12>>2]=l;c=(d>>31)-((l>>31)+(d>>>0>>0)|0)|0;b=d-l|0;if(!c&b>>>0>2147483646|c){break a}e=1;b=b+1|0;F[a+20>>2]=b;c=b>>>1|0;F[a+24>>2]=c;F[a+28>>2]=0-c;if(b&1){break a}F[a+24>>2]=c-1;break a}}e=0}Z=h+32|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,i=0,j=0,k=0,l=0,m=0;h=Z-32|0;Z=h;a:{b:{if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[a+48>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}c:{if(d){Na(a+60|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[a+48>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+72|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[a+48>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+84|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[a+48>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+96|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}e=0;c=F[b+8>>2];f=F[b+12>>2];d=c;c=F[b+20>>2];i=c;g=F[b+16>>2];j=g+4|0;c=j>>>0<4?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break a}m=F[b>>2];k=m+g|0;l=G[k|0]|G[k+1|0]<<8|(G[k+2|0]<<16|G[k+3|0]<<24);F[b+16>>2]=j;F[b+20>>2]=c;k=d;d=f;c=i;f=g+8|0;c=f>>>0<8?c+1|0:c;if(f>>>0>k>>>0&(c|0)>=(d|0)|(c|0)>(d|0)){break a}d=j+m|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=f;F[b+20>>2]=c;if((d|0)<(l|0)){break a}F[a+16>>2]=d;F[a+12>>2]=l;c=(d>>31)-((l>>31)+(d>>>0>>0)|0)|0;b=d-l|0;if(!c&b>>>0>2147483646|c){break a}e=1;b=b+1|0;F[a+20>>2]=b;c=b>>>1|0;F[a+24>>2]=c;F[a+28>>2]=0-c;if(b&1){break a}F[a+24>>2]=c-1;break a}}e=0}Z=h+32|0;return e|0}function uh(a){a=a|0;var b=0,c=0,d=0,e=0;c=F[a+32>>2];d=F[c+16>>2];e=F[c+12>>2];b=F[c+20>>2];if(I[c+8>>2]>d>>>0&(e|0)>=(b|0)|(b|0)<(e|0)){e=G[F[c>>2]+d|0];d=d+1|0;b=d?b:b+1|0;F[c+16>>2]=d;F[c+20>>2]=b;b=F[a+48>>2];F[a+48>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}a:{b:{c:{d:{switch(e|0){case 0:b=ka(384);F[b>>2]=8284;ma(b+4|0,0,80);F[b+96>>2]=0;F[b+100>>2]=0;F[b+92>>2]=-1;F[b+84>>2]=-1;F[b+88>>2]=-1;F[b+104>>2]=0;F[b+108>>2]=0;F[b+112>>2]=0;F[b+116>>2]=0;F[b+120>>2]=0;F[b+124>>2]=0;F[b+128>>2]=0;F[b+132>>2]=0;F[b+136>>2]=0;F[b+140>>2]=0;F[b+144>>2]=0;F[b+148>>2]=0;F[b+156>>2]=0;F[b+160>>2]=0;F[b+152>>2]=1065353216;F[b+164>>2]=0;F[b+168>>2]=0;F[b+172>>2]=0;F[b+176>>2]=0;F[b+180>>2]=0;F[b+184>>2]=0;F[b+188>>2]=0;F[b+192>>2]=0;F[b+196>>2]=0;F[b+200>>2]=0;F[b+204>>2]=0;F[b+208>>2]=0;F[b+212>>2]=-1;F[b+216>>2]=0;F[b+220>>2]=0;F[b+224>>2]=0;Ja(b+232|0);Ja(b+272|0);c=b+312|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;Ja(b+328|0);F[b+376>>2]=0;F[b+368>>2]=0;F[b+372>>2]=0;break c;case 2:break d;default:break b}}b=ka(440);F[b>>2]=8336;ma(b+4|0,0,80);F[b+96>>2]=0;F[b+100>>2]=0;F[b+92>>2]=-1;F[b+84>>2]=-1;F[b+88>>2]=-1;F[b+104>>2]=0;F[b+108>>2]=0;F[b+112>>2]=0;F[b+116>>2]=0;F[b+120>>2]=0;F[b+124>>2]=0;F[b+128>>2]=0;F[b+132>>2]=0;F[b+136>>2]=0;F[b+140>>2]=0;F[b+144>>2]=0;F[b+148>>2]=0;F[b+156>>2]=0;F[b+160>>2]=0;F[b+152>>2]=1065353216;F[b+164>>2]=0;F[b+168>>2]=0;F[b+172>>2]=0;F[b+176>>2]=0;F[b+180>>2]=0;F[b+184>>2]=0;F[b+188>>2]=0;F[b+192>>2]=0;F[b+196>>2]=0;F[b+200>>2]=0;F[b+204>>2]=0;F[b+208>>2]=0;F[b+212>>2]=-1;F[b+216>>2]=0;F[b+220>>2]=0;F[b+224>>2]=0;Ja(b+232|0);Ja(b+272|0);c=b+312|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;Ja(b+328|0);F[b+392>>2]=0;F[b+396>>2]=0;F[b+384>>2]=0;F[b+388>>2]=0;F[b+376>>2]=0;F[b+380>>2]=0;F[b+368>>2]=0;F[b+372>>2]=0;F[b+416>>2]=0;F[b+420>>2]=0;F[b+408>>2]=2;F[b+412>>2]=7;F[b+400>>2]=-1;F[b+404>>2]=-1;F[b+424>>2]=0;F[b+428>>2]=0;F[b+432>>2]=0;F[b+436>>2]=0}c=F[a+48>>2];F[a+48>>2]=b;if(!c){break a}$[F[F[c>>2]+4>>2]](c)}b=F[a+48>>2];if(b){break a}return 0}a=$[F[F[b>>2]+8>>2]](b,a)|0}else{a=0}return a|0}function ei(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,k=0,l=0,m=0,n=0,o=0;g=Z-32|0;Z=g;F[a+68>>2]=f;d=F[a+56>>2];e=F[d>>2];d=F[d+4>>2];F[g+24>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+60|0;d=d>>>2|0;n=d>>>0<=1?1:d;o=a+112|0;while(1){e=F[a+56>>2];d=F[e>>2];if(F[e+4>>2]-d>>2>>>0<=j>>>0){break a}Mb(m,F[d+(j<<2)>>2],g+16|0);i=F[g+20>>2];d=i>>31;h=F[g+16>>2];e=h>>31;f=(d^i)-d+((e^h)-e)|0;k=F[g+24>>2];d=k>>31;e=(d^k)-d|0;d=0;l=e;e=e+f|0;d=l>>>0>e>>>0?1:d;b:{if(!(d|e)){F[g+16>>2]=F[a+108>>2];break b}f=F[a+108>>2];l=f>>31;h=li(ki(f,l,h,h>>31),_,e,d);F[g+16>>2]=h;d=li(ki(f,l,i,i>>31),_,e,d);F[g+20>>2]=d;e=d;d=d>>31;e=(e^d)-d|0;d=h>>31;d=e+((d^h)-d|0)|0;if((k|0)>=0){F[g+24>>2]=f-d;break b}F[g+24>>2]=d-f}d=wa(o);f=F[g+16>>2];c:{if(d){F[g+24>>2]=0-F[g+24>>2];e=0-F[g+20>>2]|0;F[g+20>>2]=e;f=0-f|0;F[g+16>>2]=f;break c}e=F[g+20>>2]}d:{if((f|0)>=0){f=F[a+108>>2];d=f+F[g+24>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=F[g+24>>2];f=d>>31;f=(d^f)-f|0;break e}d=F[g+24>>2];f=d>>31;f=F[a+100>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=F[a+100>>2]+(d-(d^e)|0)|0}e=F[a+100>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}i=F[a+108>>2];if((i|0)>=(d|0)){break g}d=(i<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}i=F[a+108>>2];if((i|0)<=(d|0)){break h}d=(i<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=F[a+108>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=F[a+108>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}F[g+12>>2]=d;F[g+8>>2]=f;j:{if(F[a+8>>2]<=0){break j}i=F[a+32>>2];f=0;while(1){d=f<<2;e=F[d+(g+8|0)>>2];h=F[a+16>>2];k:{if((e|0)>(h|0)){F[d+i>>2]=h;break k}d=d+i|0;h=F[a+12>>2];if((h|0)>(e|0)){F[d>>2]=h;break k}F[d>>2]=e}f=f+1|0;e=F[a+8>>2];if((f|0)<(e|0)){continue}break}d=0;if((e|0)<=0){break j}e=j<<3;h=e+c|0;k=b+e|0;while(1){f=d<<2;e=f+h|0;f=F[f+k>>2]+F[f+i>>2]|0;F[e>>2]=f;l:{if((f|0)>F[a+16>>2]){f=f-F[a+20>>2]|0}else{if((f|0)>=F[a+12>>2]){break l}f=f+F[a+20>>2]|0}F[e>>2]=f}d=d+1|0;if((d|0)>2]){continue}break}}j=j+1|0;if((n|0)!=(j|0)){continue}break}}Z=g+32|0;return 1}ta();v()}function Vh(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,k=0,l=0,m=0,n=0,o=0;g=Z-32|0;Z=g;F[a+68>>2]=f;d=F[a+56>>2];e=F[d>>2];d=F[d+4>>2];F[g+24>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+60|0;d=d>>>2|0;n=d>>>0<=1?1:d;o=a+112|0;while(1){e=F[a+56>>2];d=F[e>>2];if(F[e+4>>2]-d>>2>>>0<=j>>>0){break a}Kb(m,F[d+(j<<2)>>2],g+16|0);i=F[g+20>>2];d=i>>31;h=F[g+16>>2];e=h>>31;f=(d^i)-d+((e^h)-e)|0;k=F[g+24>>2];d=k>>31;e=(d^k)-d|0;d=0;l=e;e=e+f|0;d=l>>>0>e>>>0?1:d;b:{if(!(d|e)){F[g+16>>2]=F[a+108>>2];break b}f=F[a+108>>2];l=f>>31;h=li(ki(f,l,h,h>>31),_,e,d);F[g+16>>2]=h;d=li(ki(f,l,i,i>>31),_,e,d);F[g+20>>2]=d;e=d;d=d>>31;e=(e^d)-d|0;d=h>>31;d=e+((d^h)-d|0)|0;if((k|0)>=0){F[g+24>>2]=f-d;break b}F[g+24>>2]=d-f}d=wa(o);f=F[g+16>>2];c:{if(d){F[g+24>>2]=0-F[g+24>>2];e=0-F[g+20>>2]|0;F[g+20>>2]=e;f=0-f|0;F[g+16>>2]=f;break c}e=F[g+20>>2]}d:{if((f|0)>=0){f=F[a+108>>2];d=f+F[g+24>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=F[g+24>>2];f=d>>31;f=(d^f)-f|0;break e}d=F[g+24>>2];f=d>>31;f=F[a+100>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=F[a+100>>2]+(d-(d^e)|0)|0}e=F[a+100>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}i=F[a+108>>2];if((i|0)>=(d|0)){break g}d=(i<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}i=F[a+108>>2];if((i|0)<=(d|0)){break h}d=(i<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=F[a+108>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=F[a+108>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}F[g+12>>2]=d;F[g+8>>2]=f;j:{if(F[a+8>>2]<=0){break j}i=F[a+32>>2];f=0;while(1){d=f<<2;e=F[d+(g+8|0)>>2];h=F[a+16>>2];k:{if((e|0)>(h|0)){F[d+i>>2]=h;break k}d=d+i|0;h=F[a+12>>2];if((h|0)>(e|0)){F[d>>2]=h;break k}F[d>>2]=e}f=f+1|0;e=F[a+8>>2];if((f|0)<(e|0)){continue}break}d=0;if((e|0)<=0){break j}e=j<<3;h=e+c|0;k=b+e|0;while(1){f=d<<2;e=f+h|0;f=F[f+k>>2]+F[f+i>>2]|0;F[e>>2]=f;l:{if((f|0)>F[a+16>>2]){f=f-F[a+20>>2]|0}else{if((f|0)>=F[a+12>>2]){break l}f=f+F[a+20>>2]|0}F[e>>2]=f}d=d+1|0;if((d|0)>2]){continue}break}}j=j+1|0;if((n|0)!=(j|0)){continue}break}}Z=g+32|0;return 1}ta();v()}function $a(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Z-32|0;Z=h;a:{b:{if(F[a+8>>2]<<5>>>0>=b>>>0){break b}if((b|0)<0){break a}b=(b-1>>>5|0)+1|0;c=ka(b<<2);F[h+24>>2]=b;F[h+20>>2]=0;F[h+16>>2]=c;b=F[a>>2];F[h+12>>2]=0;F[h+8>>2]=b;c=F[a+4>>2];F[h+4>>2]=c&31;F[h>>2]=b+(c>>>3&536870908);e=Z-32|0;Z=e;i=F[h+4>>2];g=F[h+12>>2];j=F[h>>2];d=F[h+8>>2];b=(i-g|0)+(j-d<<3)|0;f=F[h+20>>2];c=b+f|0;F[h+20>>2]=c;if(!((c-1^f-1)>>>0<32?f:0)){F[F[h+16>>2]+((c>>>0>=33?c-1>>>5|0:0)<<2)>>2]=0}c=F[h+16>>2]+(f>>>3&536870908)|0;f=f&31;c:{if((f|0)==(g|0)){if((b|0)<=0){break c}if(g){i=32-g|0;f=(b|0)<(i|0)?b:i;i=-1<>>i-f;F[c>>2]=F[c>>2]&(i^-1)|i&F[d>>2];d=d+4|0;c=(g+f>>>3&536870908)+c|0;b=b-f|0}g=(b|0)/32|0;if(b+31>>>0>=63){pa(c,d,g<<2)}b=b-(g<<5)|0;if((b|0)<=0){break c}f=c;c=g<<2;g=f+c|0;b=-1>>>32-b|0;F[g>>2]=F[g>>2]&(b^-1)|b&F[c+d>>2];break c}F[e+28>>2]=g;F[e+24>>2]=d;F[e+20>>2]=i;F[e+16>>2]=j;F[e+12>>2]=f;F[e+8>>2]=c;b=F[e+28>>2];c=F[e+24>>2];g=(F[e+20>>2]-b|0)+(F[e+16>>2]-c<<3)|0;d:{if((g|0)<=0){b=F[e+12>>2];d=F[e+8>>2];break d}e:{if(!b){b=F[e+12>>2];break e}d=F[e+12>>2];j=32-d|0;k=32-b|0;f=(g|0)<(k|0)?g:k;i=f>>>0>j>>>0?j:f;l=F[e+8>>2];m=F[l>>2]&(-1<>>j-i^-1);j=F[c>>2]&(-1<>>k-f);F[l>>2]=m|(b>>>0>>0?j<>>b-d|0);c=d+i|0;b=c&31;F[e+12>>2]=b;d=l+(c>>>3&536870908)|0;F[e+8>>2]=d;c=f-i|0;if((c|0)>0){F[d>>2]=F[d>>2]&(-1>>>32-c^-1)|j>>>i+F[e+28>>2];F[e+12>>2]=c;b=c}g=g-f|0;c=F[e+24>>2]+4|0;F[e+24>>2]=c}i=-1<=32){j=i^-1;while(1){d=F[e+8>>2];c=F[c>>2];F[d>>2]=j&F[d>>2]|c<>2]=d+4;F[d+4>>2]=i&F[d+4>>2]|c>>>f;c=F[e+24>>2]+4|0;F[e+24>>2]=c;d=g>>>0>63;g=g-32|0;if(d){continue}break}}d=F[e+8>>2];if((g|0)<=0){break d}j=f;f=(g|0)>(f|0)?f:g;j=F[d>>2]&(i&-1>>>j-f^-1);i=F[c>>2]&-1>>>32-g;F[d>>2]=j|i<>2]=c;d=(b>>>3&536870908)+d|0;F[e+8>>2]=d;b=g-f|0;if((b|0)<=0){b=c;break d}F[d>>2]=F[d>>2]&(-1>>>32-b^-1)|i>>>f;F[e+12>>2]=b}F[e+4>>2]=b;F[e>>2]=d}Z=e+32|0;b=F[a>>2];F[a>>2]=F[h+16>>2];F[h+16>>2]=b;c=F[a+4>>2];F[a+4>>2]=F[h+20>>2];F[h+20>>2]=c;c=F[a+8>>2];F[a+8>>2]=F[h+24>>2];F[h+24>>2]=c;if(!b){break b}ja(b)}Z=h+32|0;return}na();v()}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,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=$[F[F[a>>2]+44>>2]](a)|0;a:{if((n|0)<=0){break a}i=F[b+4>>2]-F[b>>2]>>2;e=Z+-64|0;Z=e;f=kb(e);d=L(F[2541],n);cc(f,F[F[a+8>>2]+56>>2],n&255,5,0,d,d>>31);f=bc(ka(96),f);D[f+84|0]=1;F[f+72>>2]=F[f+68>>2];ac(f,i);F[f+60>>2]=F[F[a+8>>2]+60>>2];d=F[a+16>>2];F[a+16>>2]=f;if(d){xa(d)}Z=e- -64|0;h=F[a+16>>2];if(!F[h+80>>2]){break a}j=F[F[h>>2]>>2];if(!j){break a}m=F[c+12>>2];e=m;d=F[c+20>>2];g=F[c+8>>2];k=F[c+16>>2];if((e|0)<=(d|0)&g>>>0<=k>>>0|(d|0)>(e|0)){break a}l=L(i,n);i=j+F[h+48>>2]|0;h=F[c>>2];j=G[h+k|0];e=k+1|0;f=e?d:d+1|0;F[c+16>>2]=e;F[c+20>>2]=f;b:{c:{if(j){if(mc(l,n,c,i)){break c}break a}if((f|0)>=(m|0)&e>>>0>=g>>>0|(f|0)>(m|0)){break a}g=G[e+h|0];f=k+2|0;d=f>>>0<2?d+1|0:d;F[c+16>>2]=f;F[c+20>>2]=d;d=F[F[a+16>>2]+64>>2];d=F[d+4>>2]-F[d>>2]|0;if((g|0)==F[2541]){e=l<<2;if(e>>>0>d>>>0){break a}g=F[c+8>>2];k=F[c+12>>2];j=F[c+20>>2];d=F[c+16>>2];f=e+d|0;j=f>>>0>>0?j+1|0:j;if(f>>>0>g>>>0&(j|0)>=(k|0)|(j|0)>(k|0)){break a}la(i,d+F[c>>2]|0,e);f=F[c+20>>2];d=e+F[c+16>>2]|0;f=d>>>0>>0?f+1|0:f;F[c+16>>2]=d;F[c+20>>2]=f;break c}if(d>>>0>>0){break a}d=F[c+8>>2];f=F[c+16>>2];e=d-f|0;m=d>>>0>>0;d=F[c+20>>2];k=F[c+12>>2]-(m+d|0)|0;m=ki(g,0,l,0)>>>0>e>>>0;e=_;if(m&(e|0)>=(k|0)|(e|0)>(k|0)){break a}e=1;if(!l){break b}h=0;while(1){k=F[c+8>>2];j=F[c+12>>2];e=f+g|0;d=e>>>0>>0?d+1|0:d;if(e>>>0>k>>>0&(d|0)>=(j|0)|(d|0)>(j|0)){return 0}la(i+(h<<2)|0,F[c>>2]+f|0,g);d=F[c+20>>2];f=g+F[c+16>>2]|0;d=f>>>0>>0?d+1|0:d;F[c+16>>2]=f;F[c+20>>2]=d;h=h+1|0;if((l|0)!=(h|0)){continue}break}}e=1;if(!l){break b}d=F[a+20>>2];if(d){e=0;if($[F[F[d>>2]+32>>2]](d)|0){break b}}g=0;h=0;d:{if((l|0)<=0){break d}if((l|0)!=1){f=l&-2;while(1){e=g<<2;d=F[e+i>>2];F[e+i>>2]=0-(d&1)^d>>>1;d=e|4;e=F[d+i>>2];F[d+i>>2]=0-(e&1)^e>>>1;g=g+2|0;h=h+2|0;if((f|0)!=(h|0)){continue}break}}if(!(l&1)){break d}d=g<<2;f=F[d+i>>2];F[d+i>>2]=0-(f&1)^f>>>1}e=0}d=e;f=F[a+20>>2];e:{if(!f){break e}if(!($[F[F[f>>2]+40>>2]](f,c)|0)){break a}if(d){break e}a=F[a+20>>2];if(!($[F[F[a>>2]+44>>2]](a,i,i,l,n,F[b>>2])|0)){break a}}o=1}return o|0}function Lh(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,k=0,l=0,m=0,n=0,o=0,p=0;g=Z-48|0;Z=g;d=F[a+8>>2];if(d-2>>>0<=28){F[a+76>>2]=d;e=-1<>2]=d;F[a+80>>2]=e^-1;F[a+92>>2]=(d|0)/2;J[a+88>>2]=M(2)/M(d|0)}F[a+52>>2]=f;d=F[a+40>>2];e=F[d>>2];d=F[d+4>>2];F[g+16>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+8|0;n=a+44|0;d=d>>>2|0;o=d>>>0<=1?1:d;p=a+96|0;while(1){e=F[a+40>>2];d=F[e>>2];if(F[e+4>>2]-d>>2>>>0<=j>>>0){break a}Mb(n,F[d+(j<<2)>>2],g+8|0);h=F[g+12>>2];d=h>>31;i=F[g+8>>2];e=i>>31;f=(d^h)-d+((e^i)-e)|0;l=F[g+16>>2];d=l>>31;e=(d^l)-d|0;d=0;k=e;e=e+f|0;d=k>>>0>e>>>0?1:d;b:{if(!(d|e)){F[g+8>>2]=F[a+92>>2];break b}f=F[a+92>>2];k=f>>31;i=li(ki(f,k,i,i>>31),_,e,d);F[g+8>>2]=i;d=li(ki(f,k,h,h>>31),_,e,d);F[g+12>>2]=d;e=d>>31;e=(d^e)-e|0;d=i>>31;d=e+((d^i)-d|0)|0;if((l|0)>=0){F[g+16>>2]=f-d;break b}F[g+16>>2]=d-f}d=wa(p);f=F[g+8>>2];c:{if(d){F[g+16>>2]=0-F[g+16>>2];e=0-F[g+12>>2]|0;F[g+12>>2]=e;f=0-f|0;F[g+8>>2]=f;break c}e=F[g+12>>2]}d:{if((f|0)>=0){f=F[a+92>>2];d=f+F[g+16>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=F[g+16>>2];f=d>>31;f=(d^f)-f|0;break e}d=F[g+16>>2];f=d>>31;f=F[a+84>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=F[a+84>>2]+(d-(d^e)|0)|0}e=F[a+84>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}h=F[a+92>>2];if((h|0)>=(d|0)){break g}d=(h<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}h=F[a+92>>2];if((h|0)<=(d|0)){break h}d=(h<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=F[a+92>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=F[a+92>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}e=j<<3;h=e+b|0;i=F[h>>2];h=F[h+4>>2];F[g+36>>2]=d;F[g+32>>2]=f;F[g+24>>2]=i;F[g+28>>2]=h;Jb(g+40|0,m,g+32|0,g+24|0);d=c+e|0;F[d>>2]=F[g+40>>2];F[d+4>>2]=F[g+44>>2];j=j+1|0;if((o|0)!=(j|0)){continue}break}}Z=g+48|0;return 1}ta();v()}function Hh(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,k=0,l=0,m=0,n=0,o=0,p=0;g=Z-48|0;Z=g;d=F[a+8>>2];if(d-2>>>0<=28){F[a+76>>2]=d;e=-1<>2]=d;F[a+80>>2]=e^-1;F[a+92>>2]=(d|0)/2;J[a+88>>2]=M(2)/M(d|0)}F[a+52>>2]=f;d=F[a+40>>2];e=F[d>>2];d=F[d+4>>2];F[g+16>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+8|0;n=a+44|0;d=d>>>2|0;o=d>>>0<=1?1:d;p=a+96|0;while(1){e=F[a+40>>2];d=F[e>>2];if(F[e+4>>2]-d>>2>>>0<=j>>>0){break a}Kb(n,F[d+(j<<2)>>2],g+8|0);h=F[g+12>>2];d=h>>31;i=F[g+8>>2];e=i>>31;f=(d^h)-d+((e^i)-e)|0;l=F[g+16>>2];d=l>>31;e=(d^l)-d|0;d=0;k=e;e=e+f|0;d=k>>>0>e>>>0?1:d;b:{if(!(d|e)){F[g+8>>2]=F[a+92>>2];break b}f=F[a+92>>2];k=f>>31;i=li(ki(f,k,i,i>>31),_,e,d);F[g+8>>2]=i;d=li(ki(f,k,h,h>>31),_,e,d);F[g+12>>2]=d;e=d>>31;e=(d^e)-e|0;d=i>>31;d=e+((d^i)-d|0)|0;if((l|0)>=0){F[g+16>>2]=f-d;break b}F[g+16>>2]=d-f}d=wa(p);f=F[g+8>>2];c:{if(d){F[g+16>>2]=0-F[g+16>>2];e=0-F[g+12>>2]|0;F[g+12>>2]=e;f=0-f|0;F[g+8>>2]=f;break c}e=F[g+12>>2]}d:{if((f|0)>=0){f=F[a+92>>2];d=f+F[g+16>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=F[g+16>>2];f=d>>31;f=(d^f)-f|0;break e}d=F[g+16>>2];f=d>>31;f=F[a+84>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=F[a+84>>2]+(d-(d^e)|0)|0}e=F[a+84>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}h=F[a+92>>2];if((h|0)>=(d|0)){break g}d=(h<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}h=F[a+92>>2];if((h|0)<=(d|0)){break h}d=(h<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=F[a+92>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=F[a+92>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}e=j<<3;h=e+b|0;i=F[h>>2];h=F[h+4>>2];F[g+36>>2]=d;F[g+32>>2]=f;F[g+24>>2]=i;F[g+28>>2]=h;Jb(g+40|0,m,g+32|0,g+24|0);d=c+e|0;F[d>>2]=F[g+40>>2];F[d+4>>2]=F[g+44>>2];j=j+1|0;if((o|0)!=(j|0)){continue}break}}Z=g+48|0;return 1}ta();v()}function Nd(a,b){var 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;a:{if(!H[b+38>>1]){break a}if(!Ta(1,a+12|0,b)){break a}d=F[b+8>>2];e=F[b+16>>2];g=d-e|0;f=F[a+12>>2];d=F[b+12>>2]-(F[b+20>>2]+(d>>>0>>0)|0)|0;if(g>>>0>>6>>>0&(d|0)<=0|(d|0)<0){break a}d=F[a>>2];c=F[a+4>>2]-d>>2;b:{if(c>>>0>>0){qa(a,f-c|0);f=F[a+12>>2];break b}if(c>>>0<=f>>>0){break b}F[a+4>>2]=d+(f<<2)}if(!f){return 1}d=F[b+16>>2];c=F[b+20>>2];l=F[a>>2];j=F[b+8>>2];i=F[b+12>>2];g=0;while(1){if((c|0)>=(i|0)&d>>>0>=j>>>0|(c|0)>(i|0)){return 0}m=F[b>>2];k=G[m+d|0];d=d+1|0;c=d?c:c+1|0;F[b+16>>2]=d;F[b+20>>2]=c;e=k>>>2|0;h=0;c:{d:{e:{f:{n=k&3;switch(n|0){case 3:break f;case 0:break d;default:break e}}e=e+g|0;if(e>>>0>=f>>>0){return 0}ma(l+(g<<2)|0,0,(k&252)+4|0);g=e;break c}while(1){if((d|0)==(j|0)&(c|0)==(i|0)){break a}f=G[d+m|0];d=d+1|0;c=d?c:c+1|0;F[b+16>>2]=d;F[b+20>>2]=c;e=f<<(h<<3|6)|e;h=h+1|0;if((n|0)!=(h|0)){continue}break}}F[l+(g<<2)>>2]=e}f=F[a+12>>2];g=g+1|0;if(f>>>0>g>>>0){continue}break}b=a+16|0;j=F[a>>2];d=F[a+16>>2];c=F[a+20>>2]-d|0;g:{if(c>>>0<=16383){qa(b,4096-(c>>>2|0)|0);break g}if((c|0)==16384){break g}F[a+20>>2]=d+16384}c=a+28|0;g=F[c>>2];d=F[a+32>>2]-g>>3;h:{if(d>>>0>>0){_a(c,f-d|0);g=F[c>>2];break h}if(d>>>0>f>>>0){F[a+32>>2]=(f<<3)+g}if(!f){break a}}d=F[b>>2];b=0;a=0;while(1){c=j+(b<<2)|0;h=F[c>>2];e=a;i=(b<<3)+g|0;F[i+4>>2]=a;F[i>>2]=h;c=F[c>>2];a=c+a|0;if(a>>>0>4096){break a}i:{if(a>>>0<=e>>>0){break i}h=0;i=c&7;if(i){while(1){F[d+(e<<2)>>2]=b;e=e+1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}if(c-1>>>0<=6){break i}while(1){c=d+(e<<2)|0;F[c>>2]=b;F[c+28>>2]=b;F[c+24>>2]=b;F[c+20>>2]=b;F[c+16>>2]=b;F[c+12>>2]=b;F[c+8>>2]=b;F[c+4>>2]=b;e=e+8|0;if((e|0)!=(a|0)){continue}break}}b=b+1|0;if((f|0)!=(b|0)){continue}break}o=(a|0)==4096}return o}function qf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=Z-32|0;Z=f;e=f+8|0;c=Z-80|0;Z=c;a=F[b+36>>2];F[c+72>>2]=F[b+32>>2];F[c+76>>2]=a;d=F[b+28>>2];a=c- -64|0;F[a>>2]=F[b+24>>2];F[a+4>>2]=d;a=F[b+20>>2];F[c+56>>2]=F[b+16>>2];F[c+60>>2]=a;a=F[b+12>>2];F[c+48>>2]=F[b+8>>2];F[c+52>>2]=a;a=F[b+4>>2];F[c+40>>2]=F[b>>2];F[c+44>>2]=a;jc(c+8|0,c+40|0,c+24|0);a=F[c+8>>2];a:{if(a){F[e>>2]=a;a=e+4|0;if(D[c+23|0]>=0){b=c+8|4;e=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=e;F[a+8>>2]=F[b+8>>2];break a}ra(a,F[c+12>>2],F[c+16>>2]);if(D[c+23|0]>=0){break a}ja(F[c+12>>2]);break a}if(D[c+23|0]<0){ja(F[c+12>>2])}a=G[c+31|0];if(a>>>0>=2){b=ka(32);D[b+26|0]=0;a=G[1475]|G[1476]<<8;D[b+24|0]=a;D[b+25|0]=a>>>8;a=G[1471]|G[1472]<<8|(G[1473]<<16|G[1474]<<24);d=G[1467]|G[1468]<<8|(G[1469]<<16|G[1470]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=a;D[b+21|0]=a>>>8;D[b+22|0]=a>>>16;D[b+23|0]=a>>>24;a=G[1463]|G[1464]<<8|(G[1465]<<16|G[1466]<<24);d=G[1459]|G[1460]<<8|(G[1461]<<16|G[1462]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=a;D[b+13|0]=a>>>8;D[b+14|0]=a>>>16;D[b+15|0]=a>>>24;a=G[1455]|G[1456]<<8|(G[1457]<<16|G[1458]<<24);d=G[1451]|G[1452]<<8|(G[1453]<<16|G[1454]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=a;D[b+5|0]=a>>>8;D[b+6|0]=a>>>16;D[b+7|0]=a>>>24;F[c+8>>2]=-1;a=c+8|4;ra(a,b,26);d=D[c+23|0];F[e>>2]=F[c+8>>2];e=e+4|0;if((d|0)>=0){d=F[a+4>>2];F[e>>2]=F[a>>2];F[e+4>>2]=d;F[e+8>>2]=F[a+8>>2];ja(b);break a}ra(e,F[c+12>>2],F[c+16>>2]);if(D[c+23|0]<0){ja(F[c+12>>2])}ja(b);break a}F[e>>2]=0;F[e+4>>2]=0;F[e+16>>2]=a;F[e+8>>2]=0;F[e+12>>2]=0}Z=c+80|0;a=F[f+24>>2];if(D[f+23|0]<0){ja(F[f+12>>2])}Z=f+32|0;return a|0}function Ph(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;e=Z-32|0;Z=e;a:{if((c|0)!=3){break a}c=F[a+4>>2];f=F[a+12>>2];F[e+24>>2]=-1;F[e+16>>2]=-1;F[e+20>>2]=1065353216;F[e+8>>2]=-1;F[e+12>>2]=-1;if((b|0)==-2){break a}i=F[F[F[c+4>>2]+8>>2]+(f<<2)>>2];if(($[F[F[c>>2]+8>>2]](c)|0)==1){h=F[F[F[c+4>>2]+8>>2]+(f<<2)>>2];b:{if(($[F[F[c>>2]+8>>2]](c)|0)!=1|b-1>>>0>5){break b}g=$[F[F[c>>2]+36>>2]](c)|0;a=$[F[F[c>>2]+44>>2]](c,f)|0;if(!g|!a){break b}f=$[F[F[c>>2]+40>>2]](c,f)|0;c:{if(f){if((b|0)!=6){break b}b=F[c+44>>2];d=ka(112);F[d+4>>2]=h;c=F[e+12>>2];F[d+8>>2]=F[e+8>>2];F[d+12>>2]=c;c=F[e+20>>2];F[d+16>>2]=F[e+16>>2];F[d+20>>2]=c;F[d+24>>2]=F[e+24>>2];F[d+40>>2]=a;c=a+12|0;F[d+36>>2]=c;F[d+32>>2]=f;F[d+28>>2]=b;F[d+68>>2]=a;F[d- -64>>2]=c;F[d+60>>2]=f;F[d+56>>2]=b;F[d+48>>2]=0;F[d+52>>2]=0;F[d>>2]=5928;F[d+88>>2]=1065353216;F[d+92>>2]=-1;F[d+80>>2]=-1;F[d+84>>2]=-1;F[d+72>>2]=1;F[d+76>>2]=-1;F[d+44>>2]=6492;a=d+96|0;break c}if((b|0)!=6){break b}b=F[c+44>>2];d=ka(112);F[d+4>>2]=h;c=F[e+12>>2];F[d+8>>2]=F[e+8>>2];F[d+12>>2]=c;c=F[e+20>>2];F[d+16>>2]=F[e+16>>2];F[d+20>>2]=c;F[d+24>>2]=F[e+24>>2];F[d+40>>2]=a;c=a+12|0;F[d+36>>2]=c;F[d+32>>2]=g;F[d+28>>2]=b;F[d+68>>2]=a;F[d- -64>>2]=c;F[d+60>>2]=g;F[d+56>>2]=b;F[d+48>>2]=0;F[d+52>>2]=0;F[d>>2]=6932;F[d+88>>2]=1065353216;F[d+92>>2]=-1;F[d+80>>2]=-1;F[d+84>>2]=-1;F[d+72>>2]=1;F[d+76>>2]=-1;F[d+44>>2]=7352;a=d+96|0}F[a>>2]=0;F[a+4>>2]=0;D[a+5|0]=0;D[a+6|0]=0;D[a+7|0]=0;D[a+8|0]=0;D[a+9|0]=0;D[a+10|0]=0;D[a+11|0]=0;D[a+12|0]=0}if(d){break a}}d=ka(28);F[d+4>>2]=i;a=F[e+12>>2];F[d+8>>2]=F[e+8>>2];F[d+12>>2]=a;a=F[e+20>>2];F[d+16>>2]=F[e+16>>2];F[d+20>>2]=a;F[d+24>>2]=F[e+24>>2];F[d>>2]=7764}Z=e+32|0;return d|0}function $c(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=Z-80|0;Z=f;a:{if(!Wb(1,f+76|0,b)){break a}k=F[f+76>>2];if(!k){break a}c=F[b+8>>2];e=F[b+16>>2];c=ki(c-e|0,F[b+12>>2]-(F[b+20>>2]+(c>>>0>>0)|0)|0,5,0);e=_;if(c>>>0>>0&(e|0)<=0|(e|0)<0){break a}c=F[a+4>>2];d=F[a+8>>2]-c>>2;b:{if(d>>>0>>0){qa(a+4|0,k-d|0);break b}if(d>>>0<=k>>>0){break b}F[a+8>>2]=c+(k<<2)}p=a+16|0;l=F[a+32>>2];while(1){g=F[b+12>>2];c=g;d=F[b+20>>2];h=F[b+8>>2];e=F[b+16>>2];if((c|0)<=(d|0)&h>>>0<=e>>>0|(c|0)<(d|0)){d=0;break a}m=F[b>>2];q=G[m+e|0];c=d;i=e+1|0;c=i?c:c+1|0;F[b+16>>2]=i;F[b+20>>2]=c;if(h>>>0<=i>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){d=0;break a}i=G[i+m|0];c=d;j=e+2|0;c=j>>>0<2?c+1|0:c;F[b+16>>2]=j;F[b+20>>2]=c;if(h>>>0<=j>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){d=0;break a}j=G[j+m|0];c=d;n=e+3|0;c=n>>>0<3?c+1|0:c;F[b+16>>2]=n;F[b+20>>2]=c;if(h>>>0<=n>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){d=0;break a}h=G[m+n|0];c=d;d=e+4|0;c=d>>>0<4?c+1|0:c;F[b+16>>2]=d;F[b+20>>2]=c;if(q>>>0>4){d=0;break a}if((i-12&255)>>>0<245){d=0;break a}if(!j){d=0;break a}c=kb(f+8|0);g=(h|0)!=0;d=i-1|0;if(d>>>0<=10){d=F[(d<<2)+10148>>2]}else{d=-1}d=L(d,j);cc(c,q,j,i,g,d,d>>31);if(Wb(1,f+4|0,b)){e=F[f+4>>2];F[f+68>>2]=e;d=bc(ka(96),c);$[F[F[l>>2]+8>>2]](l,F[l+12>>2]-F[l+8>>2]>>2,d);d=(F[l+12>>2]-F[l+8>>2]>>2)-1|0;h=d<<2;F[F[h+F[l+8>>2]>>2]+60>>2]=e;F[F[a+4>>2]+(o<<2)>>2]=d;c=F[a+16>>2];e=F[a+20>>2]-c>>2;c:{if((e|0)>(d|0)){break c}F[f>>2]=-1;d=d+1|0;if(d>>>0>e>>>0){Fa(p,d-e|0,f);c=F[p>>2];break c}if(d>>>0>=e>>>0){break c}F[a+20>>2]=(d<<2)+c}F[c+h>>2]=o;d=1;o=o+1|0;if((o|0)!=(k|0)){continue}break a}break}d=0}Z=f+80|0;return d|0}function Oc(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,k=0,l=0,m=0;k=Z-16|0;Z=k;F[k+8>>2]=c;h=F[a+12>>2];d=F[a+8>>2];g=h-d>>2;a:{if((g|0)>(b|0)){break a}e=b+1|0;if(e>>>0>g>>>0){l=e-g|0;f=F[a+16>>2];d=F[a+12>>2];if(l>>>0<=f-d>>2>>>0){if(l){e=d;d=l<<2;d=ma(e,0,d)+d|0}F[a+12>>2]=d;break a}b:{c:{d:{m=F[a+8>>2];g=d-m>>2;i=g+l|0;if(i>>>0<1073741824){e=f-m|0;f=e>>>1|0;e=e>>>0>=2147483644?1073741823:f>>>0>i>>>0?f:i;if(e){if(e>>>0>=1073741824){break d}j=ka(e<<2)}h=(g<<2)+j|0;f=l<<2;i=ma(h,0,f);g=f+i|0;e=(e<<2)+j|0;if((d|0)==(m|0)){break c}while(1){d=d-4|0;f=F[d>>2];F[d>>2]=0;h=h-4|0;F[h>>2]=f;if((d|0)!=(m|0)){continue}break}F[a+16>>2]=e;e=F[a+12>>2];F[a+12>>2]=g;d=F[a+8>>2];F[a+8>>2]=h;if((d|0)==(e|0)){break b}while(1){e=e-4|0;f=F[e>>2];F[e>>2]=0;if(f){xa(f)}if((d|0)!=(e|0)){continue}break}break b}na();v()}oa();v()}F[a+16>>2]=e;F[a+12>>2]=g;F[a+8>>2]=i}if(d){ja(d)}break a}if(e>>>0>=g>>>0){break a}d=d+(e<<2)|0;if((d|0)!=(h|0)){while(1){h=h-4|0;c=F[h>>2];F[h>>2]=0;if(c){xa(c)}if((d|0)!=(h|0)){continue}break}c=F[k+8>>2]}F[a+12>>2]=d}e:{f:{d=F[c+56>>2];g:{if((d|0)>4){break g}j=L(d,12)+a|0;d=F[j+24>>2];if((d|0)!=F[j+28>>2]){F[d>>2]=b;F[j+24>>2]=d+4;break g}i=F[j+20>>2];g=d-i|0;f=g>>2;e=f+1|0;if(e>>>0>=1073741824){break f}d=g>>>1|0;e=g>>>0>=2147483644?1073741823:d>>>0>e>>>0?d:e;if(e){if(e>>>0>=1073741824){break e}d=ka(e<<2)}else{d=0}f=d+(f<<2)|0;F[f>>2]=b;d=pa(d,i,g);F[j+20>>2]=d;F[j+24>>2]=f+4;F[j+28>>2]=d+(e<<2);if(!i){break g}ja(i)}F[c+60>>2]=b;a=F[a+8>>2];F[k+8>>2]=0;a=a+(b<<2)|0;b=F[a>>2];F[a>>2]=c;if(b){xa(b)}a=F[k+8>>2];F[k+8>>2]=0;if(a){xa(a)}Z=k+16|0;return}na();v()}oa();v()}function Pf(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,k=0;i=c;d=a;a:{if(F[a+12>>2]==(b|0)){break a}a=b;b=F[d+4>>2];e=F[d>>2];if((b|0)!=(e|0)){while(1){c=b-12|0;if(D[b-1|0]<0){ja(F[c>>2])}b=c;if((e|0)!=(b|0)){continue}break}}F[d+12>>2]=a;F[d+4>>2]=e;c=F[a>>2];j=a+4|0;if((c|0)==(j|0)){break a}while(1){a=F[d+4>>2];b:{if((a|0)!=F[d+8>>2]){c:{if(D[c+27|0]>=0){b=F[c+20>>2];F[a>>2]=F[c+16>>2];F[a+4>>2]=b;F[a+8>>2]=F[c+24>>2];break c}ra(a,F[c+16>>2],F[c+20>>2])}F[d+4>>2]=a+12;break b}g=0;d:{e:{f:{a=F[d+4>>2];e=F[d>>2];f=(a-e|0)/12|0;b=f+1|0;if(b>>>0<357913942){h=(F[d+8>>2]-e|0)/12|0;k=h<<1;b=h>>>0>=178956970?357913941:b>>>0>>0?k:b;if(b){if(b>>>0>=357913942){break f}g=ka(L(b,12))}h=L(b,12);b=L(f,12)+g|0;g:{if(D[c+27|0]>=0){f=F[c+20>>2];F[b>>2]=F[c+16>>2];F[b+4>>2]=f;F[b+8>>2]=F[c+24>>2];break g}ra(b,F[c+16>>2],F[c+20>>2]);e=F[d>>2];a=F[d+4>>2]}g=g+h|0;f=b+12|0;if((a|0)==(e|0)){break e}while(1){a=a-12|0;h=F[a+4>>2];b=b-12|0;F[b>>2]=F[a>>2];F[b+4>>2]=h;F[b+8>>2]=F[a+8>>2];F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;if((a|0)!=(e|0)){continue}break}F[d+8>>2]=g;a=F[d+4>>2];F[d+4>>2]=f;e=F[d>>2];F[d>>2]=b;if((a|0)==(e|0)){break d}while(1){b=a-12|0;if(D[a-1|0]<0){ja(F[b>>2])}a=b;if((e|0)!=(b|0)){continue}break}break d}na();v()}oa();v()}F[d+8>>2]=g;F[d+4>>2]=f;F[d>>2]=b}if(e){ja(e)}}b=F[c+4>>2];h:{if(b){while(1){a=b;b=F[b>>2];if(b){continue}break h}}while(1){a=F[c+8>>2];b=F[a>>2]!=(c|0);c=a;if(b){continue}break}}c=a;if((j|0)!=(a|0)){continue}break}}a=0;i:{if((i|0)<0){break i}b=F[d>>2];if((F[d+4>>2]-b|0)/12>>>0<=i>>>0){break i}a=b+L(i,12)|0;a=D[a+11|0]<0?F[a>>2]:a}return a|0}function Ad(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;i=Z-16|0;Z=i;F[i>>2]=b;f=-1;a:{if((b|0)==-1){F[i+4>>2]=-1;break a}f=b+1|0;F[i+4>>2]=(f>>>0)%3|0?f:b-2|0;if((b>>>0)%3|0){f=b-1|0;break a}f=b+2|0}F[i+8>>2]=f;n=(b>>>0)/3|0;b:{c:{d:{while(1){e:{f:{j=F[(l<<2)+i>>2];if((j|0)!=-1){f=F[F[F[a+8>>2]+12>>2]+(j<<2)>>2];if((f|0)!=-1){break f}}f=0;g=F[a+216>>2];if((g|0)==F[a+220>>2]){break e}while(1){g=L(f,144)+g|0;d=F[g+136>>2];c=F[g+140>>2];g:{if(d>>>0>>0){F[d>>2]=j;F[g+136>>2]=d+4;break g}e=d;d=F[g+132>>2];k=e-d|0;e=k>>2;h=e+1|0;if(h>>>0>=1073741824){break d}m=e<<2;c=c-d|0;e=c>>>1|0;h=c>>>0>=2147483644?1073741823:h>>>0>>0?e:h;if(h){if(h>>>0>=1073741824){break c}c=ka(h<<2)}else{c=0}e=m+c|0;F[e>>2]=j;c=pa(c,d,k);F[g+132>>2]=c;F[g+136>>2]=e+4;F[g+140>>2]=c+(h<<2);if(!d){break g}ja(d)}f=f+1|0;g=F[a+216>>2];if(f>>>0<(F[a+220>>2]-g|0)/144>>>0){continue}break}break e}if((b|0)==-1|(f>>>0)/3>>>0>>0){break e}f=0;if(F[a+220>>2]==F[a+216>>2]){break e}while(1){h:{if(!wa(F[a+368>>2]+(f<<4)|0)){break h}g=F[a+216>>2]+L(f,144)|0;d=F[g+136>>2];c=F[g+140>>2];if(d>>>0>>0){F[d>>2]=j;F[g+136>>2]=d+4;break h}e=d;d=F[g+132>>2];k=e-d|0;e=k>>2;h=e+1|0;if(h>>>0>=1073741824){break b}m=e<<2;c=c-d|0;e=c>>>1|0;h=c>>>0>=2147483644?1073741823:h>>>0>>0?e:h;if(h){if(h>>>0>=1073741824){break c}c=ka(h<<2)}else{c=0}e=m+c|0;F[e>>2]=j;c=pa(c,d,k);F[g+132>>2]=c;F[g+136>>2]=e+4;F[g+140>>2]=c+(h<<2);if(!d){break h}ja(d)}f=f+1|0;if(f>>>0<(F[a+220>>2]-F[a+216>>2]|0)/144>>>0){continue}break}}l=l+1|0;if((l|0)!=3){continue}break}Z=i+16|0;return 1}na();v()}oa();v()}na();v()}function Bd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Z-16|0;Z=h;m=-1;a:{b:{c:{if(!Da(1,h+12|0,b)){break c}j=F[h+12>>2];if(j){c=F[a+8>>2];if((F[c+4>>2]-F[c>>2]>>2>>>0)/3>>>0>>0){break c}while(1){if(!Da(1,h+8|0,b)){break c}c=F[h+8>>2];if(!Da(1,h+8|0,b)){break c}g=c+g|0;c=F[h+8>>2];if(g>>>0>>0){break c}e=g-c|0;c=F[a+40>>2];d:{if((c|0)!=F[a+44>>2]){F[c+4>>2]=g;F[c>>2]=e;F[a+40>>2]=c+12;j=F[h+12>>2];break d}d=c;c=F[a+36>>2];l=d-c|0;d=(l|0)/12|0;f=d+1|0;if(f>>>0>=357913942){break b}i=d<<1;f=d>>>0>=178956970?357913941:f>>>0>>0?i:f;if(f){if(f>>>0>=357913942){break a}i=ka(L(f,12))}else{i=0}d=i+L(d,12)|0;F[d+4>>2]=g;F[d>>2]=e;e=pa(d+L((l|0)/-12|0,12)|0,c,l);F[a+44>>2]=i+L(f,12);F[a+40>>2]=d+12;F[a+36>>2]=e;if(!c){break d}ja(c)}k=k+1|0;if(k>>>0>>0){continue}break}g=0;hc(b,0,0);if(j){while(1){c=G[b+36|0];d=H[F[a+4>>2]+36>>1];e:{f:{if(((d<<8|d>>>8)&65535)>>>0<=513){if(!c){break e}e=0;d=F[b+32>>2];k=d>>>3|0;f=F[b+24>>2];c=k+f|0;i=F[b+28>>2];g:{if(c>>>0>=i>>>0){c=d;break g}e=G[c|0];c=d+1|0;F[b+32>>2]=c;k=c>>>3|0;e=e>>>(d&7)&1}if(i>>>0>f+k>>>0){break f}break e}if(!c){break e}e=0;c=F[b+32>>2];d=F[b+24>>2]+(c>>>3|0)|0;if(d>>>0>=I[b+28>>2]){break e}e=G[d|0]>>>(c&7)&1}F[b+32>>2]=c+1}c=F[a+36>>2]+L(g,12)|0;D[c+8|0]=G[c+8|0]&254|e&1;g=g+1|0;if((j|0)!=(g|0)){continue}break}}D[b+36|0]=0;d=F[b+20>>2];a=0;e=F[b+32>>2]+7|0;a=e>>>0<7?1:a;e=a<<29|e>>>3;c=e+F[b+16>>2]|0;a=(a>>>3|0)+d|0;F[b+16>>2]=c;F[b+20>>2]=c>>>0>>0?a+1|0:a}m=F[b+16>>2]}Z=h+16|0;return m}na();v()}oa();v()}function xf(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,k=0,l=0,m=0,n=0,o=0;m=Z-16|0;Z=m;l=F[b+80>>2];e=G[c+24|0];a=L(l,e);a:{b:{c:{d:{b=F[c+28>>2];if(!(!G[c+84|0]|(b|0)!=1&(b|0)!=2)){b=F[c+48>>2];c=F[F[c>>2]>>2];F[m+8>>2]=0;F[m>>2]=0;F[m+4>>2]=0;if(a){if((a|0)<0){break d}f=ka(a);h=la(f,b+c|0,a)+a|0}a=F[d>>2];if(a){F[d+4>>2]=a;ja(a)}F[d+8>>2]=h;F[d+4>>2]=h;F[d>>2]=f;b=1;break a}if(e){f=ka(e);ma(f,0,e)}e:{i=F[d+4>>2];b=F[d>>2];g=i-b|0;f:{if(g>>>0>>0){k=a-g|0;j=F[d+8>>2];if(k>>>0<=j-i>>>0){n=d,o=ma(i,0,k)+k|0,F[n+4>>2]=o;break f}if((a|0)<0){break e}i=j-b|0;j=i<<1;i=i>>>0>=1073741823?2147483647:a>>>0>>0?j:a;j=ka(i);ma(j+g|0,0,k);g=pa(j,b,g);F[d+8>>2]=g+i;F[d+4>>2]=a+g;F[d>>2]=g;if(!b){break f}ja(b);break f}if(a>>>0>=g>>>0){break f}F[d+4>>2]=a+b}if(!l){b=1;break c}if(!e){b=0;a=0;while(1){if(!Cb(c,G[c+84|0]?a:F[F[c+68>>2]+(a<<2)>>2],D[c+24|0],f)){break c}a=a+1|0;b=l>>>0<=a>>>0;if((a|0)!=(l|0)){continue}break}break c}i=e&252;g=e&3;b=0;j=e>>>0<4;e=0;while(1){if(!Cb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],f)){break c}b=0;a=0;k=0;if(!j){while(1){D[F[d>>2]+h|0]=G[a+f|0];D[(F[d>>2]+h|0)+1|0]=G[(a|1)+f|0];D[(F[d>>2]+h|0)+2|0]=G[(a|2)+f|0];D[(F[d>>2]+h|0)+3|0]=G[(a|3)+f|0];a=a+4|0;h=h+4|0;k=k+4|0;if((i|0)!=(k|0)){continue}break}}if(g){while(1){D[F[d>>2]+h|0]=G[a+f|0];a=a+1|0;h=h+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}e=e+1|0;b=l>>>0<=e>>>0;if((e|0)!=(l|0)){continue}break}break b}na();v()}na();v()}if(!f){break a}}ja(f)}Z=m+16|0;return b&1}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,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=Z-16|0;Z=m;l=F[b+80>>2];e=G[c+24|0];a=L(l,e);a:{b:{c:{d:{b=F[c+28>>2];if(!(!G[c+84|0]|(b|0)!=1&(b|0)!=2)){b=F[c+48>>2];c=F[F[c>>2]>>2];F[m+8>>2]=0;F[m>>2]=0;F[m+4>>2]=0;if(a){if((a|0)<0){break d}f=ka(a);h=la(f,b+c|0,a)+a|0}a=F[d>>2];if(a){F[d+4>>2]=a;ja(a)}F[d+8>>2]=h;F[d+4>>2]=h;F[d>>2]=f;b=1;break a}if(e){f=ka(e);ma(f,0,e)}e:{i=F[d+4>>2];b=F[d>>2];g=i-b|0;f:{if(g>>>0>>0){k=a-g|0;j=F[d+8>>2];if(k>>>0<=j-i>>>0){n=d,o=ma(i,0,k)+k|0,F[n+4>>2]=o;break f}if((a|0)<0){break e}i=j-b|0;j=i<<1;i=i>>>0>=1073741823?2147483647:a>>>0>>0?j:a;j=ka(i);ma(j+g|0,0,k);g=pa(j,b,g);F[d+8>>2]=g+i;F[d+4>>2]=a+g;F[d>>2]=g;if(!b){break f}ja(b);break f}if(a>>>0>=g>>>0){break f}F[d+4>>2]=a+b}if(!l){b=1;break c}if(!e){b=0;a=0;while(1){if(!Bb(c,G[c+84|0]?a:F[F[c+68>>2]+(a<<2)>>2],D[c+24|0],f)){break c}a=a+1|0;b=l>>>0<=a>>>0;if((a|0)!=(l|0)){continue}break}break c}i=e&252;g=e&3;b=0;j=e>>>0<4;e=0;while(1){if(!Bb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],f)){break c}b=0;a=0;k=0;if(!j){while(1){D[F[d>>2]+h|0]=G[a+f|0];D[(F[d>>2]+h|0)+1|0]=G[(a|1)+f|0];D[(F[d>>2]+h|0)+2|0]=G[(a|2)+f|0];D[(F[d>>2]+h|0)+3|0]=G[(a|3)+f|0];a=a+4|0;h=h+4|0;k=k+4|0;if((i|0)!=(k|0)){continue}break}}if(g){while(1){D[F[d>>2]+h|0]=G[a+f|0];a=a+1|0;h=h+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}e=e+1|0;b=l>>>0<=e>>>0;if((e|0)!=(l|0)){continue}break}break b}na();v()}na();v()}if(!f){break a}}ja(f)}Z=m+16|0;return b&1}function Jb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=F[b+16>>2];h=F[c+4>>2]-k|0;e=F[c>>2]-k|0;F[c>>2]=e;f=h;F[c+4>>2]=f;l=F[b+16>>2];f=f>>31;g=(h^f)-f|0;f=e>>31;m=l>>>0>=g+((f^e)-f|0)>>>0;a:{if(m){f=h;break a}b:{c:{if((e|0)>=0){g=1;j=1;if((h|0)>=0){break b}i=1;g=-1;j=-1;if(e){break c}break b}i=-1;g=-1;j=-1;if((h|0)<=0){break b}}g=(h|0)<=0?-1:1;j=i}n=L(j,l);f=(e<<1)-n|0;i=(L(g,j)|0)>=0;e=L(g,l);f=((i?0-f|0:f)+e|0)/2|0;F[c+4>>2]=f;e=(h<<1)-e|0;e=((i?0-e|0:e)+n|0)/2|0;F[c>>2]=e}d:{e:{f:{g:{h:{i:{j:{if(e){if((e|0)<0){break j}if((f|0)>=0){break i}break f}if(f){break h}j=1;g=0;f=0;i=0;break d}j=1;if((f|0)>0){break g}i=(f|0)>0?3:0;g=f;f=e;break d}g=0-f|0;f=0-e|0;i=2;break e}if((f|0)<=0){break f}}f=0-f|0;g=e;i=3;break e}g=0-e|0;i=1}F[c>>2]=f;F[c+4>>2]=g;j=0}e=F[d>>2]+f|0;h=F[b+16>>2];k:{if((e|0)>(h|0)){e=e-F[b+4>>2]|0;break k}if((0-h|0)<=(e|0)){break k}e=F[b+4>>2]+e|0}c=F[d+4>>2]+g|0;l:{if((h|0)<(c|0)){c=c-F[b+4>>2]|0;break l}if((0-h|0)<=(c|0)){break l}c=F[b+4>>2]+c|0}m:{if(j){b=c;break m}b=c;n:{o:{p:{d=4-i|0;switch((d>>>0<4?d:0-i|0)-1|0){case 2:break n;case 1:break o;case 0:break p;default:break m}}b=0-e|0;e=c;break m}b=0-c|0;e=0-e|0;break m}b=e;e=0-c|0}q:{if(m){c=b;break q}r:{s:{if((e|0)>=0){c=1;f=1;if((b|0)>=0){break r}d=1;c=-1;f=-1;if(e){break s}break r}d=-1;c=-1;f=-1;if((b|0)<=0){break r}}c=(b|0)<=0?-1:1;f=d}d=e<<1;e=L(f,h);d=d-e|0;f=(L(c,f)|0)>=0;g=f?0-d|0:d;d=L(c,h);c=(g+d|0)/2|0;b=(b<<1)-d|0;e=(e+(f?0-b|0:b)|0)/2|0}b=a;F[b>>2]=e+k;F[b+4>>2]=c+k}function Uh(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,k=0,l=0,m=0,n=0,o=0,p=0,q=0;F[a+8>>2]=e;m=a+32|0;h=F[m>>2];g=F[a+36>>2]-h>>2;a:{if(g>>>0>>0){qa(m,e-g|0);f=F[a+8>>2];break a}f=e;if(f>>>0>=g>>>0){break a}F[a+36>>2]=h+(e<<2);f=e}g=e>>>0>1073741823?-1:e<<2;n=ma(ka(g),0,g);b:{if((f|0)<=0){break b}h=F[a+32>>2];while(1){f=i<<2;g=F[f+n>>2];j=F[a+16>>2];c:{if((g|0)>(j|0)){F[f+h>>2]=j;break c}f=f+h|0;j=F[a+12>>2];if((j|0)>(g|0)){F[f>>2]=j;break c}F[f>>2]=g}f=F[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}if((f|0)<=0){break b}i=0;while(1){g=i<<2;f=g+c|0;g=F[b+g>>2]+F[g+h>>2]|0;F[f>>2]=g;d:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break d}g=g+F[a+20>>2]|0}F[f>>2]=g}f=F[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}}if(!((d|0)<=(e|0)|(f|0)<=0)){p=0-e<<2;g=e;while(1){e:{if((f|0)<=0){break e}l=g<<2;o=l+c|0;q=o+p|0;j=F[m>>2];i=0;while(1){f=i<<2;h=F[f+q>>2];k=F[a+16>>2];f:{if((h|0)>(k|0)){F[f+j>>2]=k;break f}f=f+j|0;k=F[a+12>>2];if((k|0)>(h|0)){F[f>>2]=k;break f}F[f>>2]=h}f=F[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}i=0;if((f|0)<=0){break e}l=b+l|0;while(1){h=i<<2;f=h+o|0;h=F[h+l>>2]+F[h+j>>2]|0;F[f>>2]=h;g:{if((h|0)>F[a+16>>2]){h=h-F[a+20>>2]|0}else{if((h|0)>=F[a+12>>2]){break g}h=h+F[a+20>>2]|0}F[f>>2]=h}f=F[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}}g=e+g|0;if((g|0)<(d|0)){continue}break}}ja(n);return 1}function yf(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,k=0,l=0,m=0,n=0,o=0;j=F[b+80>>2];b=G[c+24|0];g=L(j,b);a:{if(!b){break a}h=b<<2;f=ka(h);a=f;k=b&7;if(k){while(1){F[a>>2]=-1073741824;a=a+4|0;e=e+1|0;if((k|0)!=(e|0)){continue}break}}if((b-1&1073741823)>>>0<7){break a}e=f+h|0;while(1){F[a+24>>2]=-1073741824;F[a+28>>2]=-1073741824;F[a+16>>2]=-1073741824;F[a+20>>2]=-1073741824;F[a+8>>2]=-1073741824;F[a+12>>2]=-1073741824;F[a>>2]=-1073741824;F[a+4>>2]=-1073741824;a=a+32|0;if((e|0)!=(a|0)){continue}break}}e=F[d>>2];a=F[d+4>>2]-e>>2;b:{if(a>>>0>>0){qa(d,g-a|0);break b}if(a>>>0<=g>>>0){break b}F[d+4>>2]=e+(g<<2)}c:{d:{e:{if(!j){i=1;break e}if(!b){a=0;while(1){if(!lb(c,G[c+84|0]?a:F[F[c+68>>2]+(a<<2)>>2],D[c+24|0],f)){break e}a=a+1|0;i=j>>>0<=a>>>0;if((a|0)!=(j|0)){continue}break}break e}n=b&252;k=b&3;o=b>>>0<4;e=0;b=0;while(1){if(!lb(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],f)){break e}m=F[d>>2];i=0;a=0;l=0;if(!o){while(1){g=(e<<2)+m|0;h=a<<2;J[g>>2]=J[h+f>>2];J[g+4>>2]=J[(h|4)+f>>2];J[g+8>>2]=J[(h|8)+f>>2];J[g+12>>2]=J[(h|12)+f>>2];a=a+4|0;e=e+4|0;l=l+4|0;if((n|0)!=(l|0)){continue}break}}if(k){while(1){J[(e<<2)+m>>2]=J[(a<<2)+f>>2];a=a+1|0;e=e+1|0;i=i+1|0;if((k|0)!=(i|0)){continue}break}}b=b+1|0;i=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break d}if(!f){break c}}ja(f)}return i|0}function $d(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,k=0,l=0,m=0;k=Z-16|0;Z=k;c=F[b+20>>2];d=F[b+16>>2];e=d+4|0;c=e>>>0<4?c+1|0:c;g=F[b+12>>2];a:{if(I[b+8>>2]>>0&(g|0)<=(c|0)|(c|0)>(g|0)){break a}d=d+F[b>>2]|0;h=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=e;F[b+20>>2]=c;if((h|0)<0){break a}Na(a+76|0,h);c=k;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;b:{if(!Aa(c,b)){break b}if(h){g=1;while(1){d=1<>2]+(i>>>3&536870908)|0;e=e^g;if(e&1){d=F[f>>2]&(d^-1)}else{d=d|F[f>>2]}g=e^1;F[f>>2]=d;i=i+1|0;if((h|0)!=(i|0)){continue}break}}i=0;c=F[b+8>>2];e=F[b+12>>2];f=e;e=F[b+20>>2];g=e;l=F[b+16>>2];d=l+4|0;e=d>>>0<4?e+1|0:e;h=d;if(d>>>0>c>>>0&(e|0)>=(f|0)|(e|0)>(f|0)){break b}m=F[b>>2];d=m+l|0;j=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=h;F[b+20>>2]=e;d=c;c=g;e=l+8|0;c=e>>>0<8?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break b}d=h+m|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=e;F[b+20>>2]=c;if((d|0)<(j|0)){break b}F[a+16>>2]=d;F[a+12>>2]=j;c=(d>>31)-((j>>31)+(d>>>0>>0)|0)|0;b=d-j|0;if(!c&b>>>0>2147483646|c){break b}i=1;c=b+1|0;F[a+20>>2]=c;b=c>>>1|0;F[a+24>>2]=b;F[a+28>>2]=0-b;if(c&1){break b}F[a+24>>2]=b-1}}Z=k+16|0;return i|0}function tf(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,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=Z-16|0;Z=k;j=F[b+80>>2];e=G[c+24|0];b=L(j,e);a:{b:{c:{d:{f=F[c+28>>2];if(!(!G[c+84|0]|(f|0)!=5&(f|0)!=6)){e=F[c+48>>2];c=F[F[c>>2]>>2];F[k+8>>2]=0;F[k>>2]=0;F[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<2;a=ka(b);g=la(a,c+e|0,b)+b|0}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=a;h=1;break a}if(e){f=e<<2;a=ka(f);ma(a,0,f)}i=F[d>>2];f=F[d+4>>2]-i>>2;e:{if(f>>>0>>0){qa(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}F[d+4>>2]=i+(b<<2)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!xb(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!xb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break c}n=F[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<2)+n|0;i=b<<2;F[f>>2]=F[i+a>>2];F[f+4>>2]=F[(i|4)+a>>2];F[f+8>>2]=F[(i|8)+a>>2];F[f+12>>2]=F[(i|12)+a>>2];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){F[(g<<2)+n>>2]=F[(b<<2)+a>>2];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}na();v()}if(!a){break a}}ja(a)}Z=k+16|0;return h|0}function cd(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,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=Z-16|0;Z=k;j=F[b+80>>2];e=G[c+24|0];b=L(j,e);a:{b:{c:{d:{f=F[c+28>>2];if(!(!G[c+84|0]|(f|0)!=5&(f|0)!=6)){e=F[c+48>>2];c=F[F[c>>2]>>2];F[k+8>>2]=0;F[k>>2]=0;F[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<2;a=ka(b);g=la(a,c+e|0,b)+b|0}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=a;h=1;break a}if(e){f=e<<2;a=ka(f);ma(a,0,f)}i=F[d>>2];f=F[d+4>>2]-i>>2;e:{if(f>>>0>>0){qa(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}F[d+4>>2]=i+(b<<2)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!yb(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!yb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break c}n=F[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<2)+n|0;i=b<<2;F[f>>2]=F[i+a>>2];F[f+4>>2]=F[(i|4)+a>>2];F[f+8>>2]=F[(i|8)+a>>2];F[f+12>>2]=F[(i|12)+a>>2];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){F[(g<<2)+n>>2]=F[(b<<2)+a>>2];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}na();v()}if(!a){break a}}ja(a)}Z=k+16|0;return h|0}function vf(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,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=Z-16|0;Z=k;j=F[b+80>>2];e=G[c+24|0];b=L(j,e);a:{b:{c:{d:{f=F[c+28>>2];if(!(!G[c+84|0]|(f|0)!=3&(f|0)!=4)){e=F[c+48>>2];c=F[F[c>>2]>>2];F[k+8>>2]=0;F[k>>2]=0;F[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<1;a=ka(b);g=la(a,c+e|0,b)+b|0}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=a;h=1;break a}if(e){f=e<<1;a=ka(f);ma(a,0,f)}i=F[d>>2];f=F[d+4>>2]-i>>1;e:{if(f>>>0>>0){kd(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}F[d+4>>2]=i+(b<<1)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!Ab(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!Ab(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break c}n=F[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<1)+n|0;i=b<<1;E[f>>1]=H[i+a>>1];E[f+2>>1]=H[(i|2)+a>>1];E[f+4>>1]=H[(i|4)+a>>1];E[f+6>>1]=H[(i|6)+a>>1];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){E[(g<<1)+n>>1]=H[(b<<1)+a>>1];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}na();v()}if(!a){break a}}ja(a)}Z=k+16|0;return h|0}function uf(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,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=Z-16|0;Z=k;j=F[b+80>>2];e=G[c+24|0];b=L(j,e);a:{b:{c:{d:{f=F[c+28>>2];if(!(!G[c+84|0]|(f|0)!=3&(f|0)!=4)){e=F[c+48>>2];c=F[F[c>>2]>>2];F[k+8>>2]=0;F[k>>2]=0;F[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<1;a=ka(b);g=la(a,c+e|0,b)+b|0}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=a;h=1;break a}if(e){f=e<<1;a=ka(f);ma(a,0,f)}i=F[d>>2];f=F[d+4>>2]-i>>1;e:{if(f>>>0>>0){kd(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}F[d+4>>2]=i+(b<<1)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!zb(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!zb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break c}n=F[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<1)+n|0;i=b<<1;E[f>>1]=H[i+a>>1];E[f+2>>1]=H[(i|2)+a>>1];E[f+4>>1]=H[(i|4)+a>>1];E[f+6>>1]=H[(i|6)+a>>1];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){E[(g<<1)+n>>1]=H[(b<<1)+a>>1];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}na();v()}if(!a){break a}}ja(a)}Z=k+16|0;return h|0}function kc(a,b){var c=0,d=0,e=0,f=0,g=0;f=-1;d=-1;a:{if((b|0)==-1){break a}d=b+1|0;f=(d>>>0)%3|0?d:b-2|0;d=b-1|0;if((b>>>0)%3|0){break a}d=b+2|0}b:{c:{d:{switch(F[a+168>>2]){case 0:case 1:e=F[a+148>>2];c=1;b=F[a+156>>2];g=b+(((f|0)==-1?-1:F[F[e>>2]+(f<<2)>>2])<<2)|0;F[g>>2]=F[g>>2]+1;b=(((d|0)==-1?-1:F[F[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 5:e=F[a+148>>2];c=-1;c=((b|0)!=-1?F[F[e>>2]+(b<<2)>>2]:c)<<2;b=F[a+156>>2];c=c+b|0;F[c>>2]=F[c>>2]+1;c=(((f|0)==-1?-1:F[F[e>>2]+(f<<2)>>2])<<2)+b|0;F[c>>2]=F[c>>2]+1;c=2;b=(((d|0)==-1?-1:F[F[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 3:e=F[a+148>>2];c=-1;c=((b|0)!=-1?F[F[e>>2]+(b<<2)>>2]:c)<<2;b=F[a+156>>2];c=c+b|0;F[c>>2]=F[c>>2]+1;c=(((f|0)==-1?-1:F[F[e>>2]+(f<<2)>>2])<<2)+b|0;F[c>>2]=F[c>>2]+2;c=1;b=(((d|0)==-1?-1:F[F[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 7:break d;default:break b}}e=F[a+148>>2];c=-1;c=((b|0)!=-1?F[F[e>>2]+(b<<2)>>2]:c)<<2;b=F[a+156>>2];c=c+b|0;F[c>>2]=F[c>>2]+2;c=(((f|0)==-1?-1:F[F[e>>2]+(f<<2)>>2])<<2)+b|0;F[c>>2]=F[c>>2]+2;c=2;b=(((d|0)==-1?-1:F[F[e>>2]+(d<<2)>>2])<<2)+b|0}F[b>>2]=F[b>>2]+c}c=a;b=F[F[a+156>>2]+(((f|0)==-1?-1:F[F[F[a+148>>2]>>2]+(f<<2)>>2])<<2)>>2];d=F[a+180>>2];a=F[a+176>>2];F[c+172>>2]=(a|0)<=(b|0)?((b|0)<(d|0)?b:d)-a|0:0}function Dg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:{b=F[a+32>>2];f=F[b+8>>2];h=F[b+12>>2];g=F[b+20>>2];c=F[b+16>>2];e=0;b:{if((h|0)<=(g|0)&c>>>0>=f>>>0|(g|0)>(h|0)){break b}f=G[F[b>>2]+c|0];e=b;b=g;c=c+1|0;b=c?b:b+1|0;F[e+16>>2]=c;F[e+20>>2]=b;c:{if(!f){break c}while(1){if($[F[F[a>>2]+16>>2]](a,d)|0){d=d+1|0;if((f|0)!=(d|0)){continue}break c}break}return 0}d=F[a+8>>2];b=F[a+12>>2];if((d|0)!=(b|0)){while(1){c=F[d>>2];if(!($[F[F[c>>2]+8>>2]](c,a,F[a+4>>2])|0)){break a}d=d+4|0;if((b|0)!=(d|0)){continue}break}}d:{if(!f){break d}d=0;while(1){b=F[F[a+8>>2]+(d<<2)>>2];if(!($[F[F[b>>2]+12>>2]](b,F[a+32>>2])|0)){break a}d=d+1|0;if((f|0)!=(d|0)){continue}break}if(!f){break d}i=a+20|0;b=0;while(1){d=0;j=b<<2;c=F[j+F[a+8>>2]>>2];k=$[F[F[c>>2]+24>>2]](c)|0;if((k|0)>0){while(1){c=F[F[a+8>>2]+j>>2];c=$[F[F[c>>2]+20>>2]](c,d)|0;e=F[a+20>>2];g=F[a+24>>2]-e>>2;e:{if(c>>>0>>0){break e}h=c+1|0;if(h>>>0>g>>>0){qa(i,h-g|0);e=F[i>>2];break e}if(g>>>0<=h>>>0){break e}F[a+24>>2]=(h<<2)+e}F[(c<<2)+e>>2]=b;d=d+1|0;if((k|0)!=(d|0)){continue}break}}b=b+1|0;if((f|0)!=(b|0)){continue}break}}e=0;if(!($[F[F[a>>2]+28>>2]](a)|0)){break b}e=$[F[F[a>>2]+32>>2]](a)|0}return e|0}return 0}function Ye(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;Oc(a,b,c);c=F[a+84>>2];d=F[a+88>>2]-c>>2;a:{if((d|0)>(b|0)){break a}b=b+1|0;if(b>>>0>d>>>0){b:{d=b-d|0;e=F[a+92>>2];c=F[a+88>>2];if(d>>>0<=e-c>>2>>>0){c:{if(!d){break c}b=c;e=d&7;if(e){while(1){F[b>>2]=1;b=b+4|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}c=(d<<2)+c|0;if((d-1&1073741823)>>>0<7){break c}while(1){F[b+24>>2]=1;F[b+28>>2]=1;F[b+16>>2]=1;F[b+20>>2]=1;F[b+8>>2]=1;F[b+12>>2]=1;F[b>>2]=1;F[b+4>>2]=1;b=b+32|0;if((c|0)!=(b|0)){continue}break}}F[a+88>>2]=c;break b}d:{b=c;c=F[a+84>>2];i=b-c|0;g=i>>2;b=g+d|0;if(b>>>0<1073741824){e=e-c|0;h=e>>>1|0;e=e>>>0>=2147483644?1073741823:b>>>0>>0?h:b;if(e){if(e>>>0>=1073741824){break d}j=ka(e<<2)}g=(g<<2)+j|0;b=g;h=d&7;if(h){while(1){F[b>>2]=1;b=b+4|0;f=f+1|0;if((h|0)!=(f|0)){continue}break}}f=g+(d<<2)|0;if((d-1&1073741823)>>>0>=7){while(1){F[b+24>>2]=1;F[b+28>>2]=1;F[b+16>>2]=1;F[b+20>>2]=1;F[b+8>>2]=1;F[b+12>>2]=1;F[b>>2]=1;F[b+4>>2]=1;b=b+32|0;if((f|0)!=(b|0)){continue}break}}b=pa(j,c,i);F[a+88>>2]=f;F[a+84>>2]=b;F[a+92>>2]=b+(e<<2);if(c){ja(c)}break b}na();v()}oa();v()}return}if(b>>>0>=d>>>0){break a}F[a+88>>2]=c+(b<<2)}}function ab(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=F[a+8>>2];e=F[a+4>>2];if(d-e>>2>>>0>=b>>>0){a:{if(!b){break a}d=e;g=b&7;if(g){while(1){F[d>>2]=F[c>>2];d=d+4|0;f=f+1|0;if((g|0)!=(f|0)){continue}break}}e=(b<<2)+e|0;if((b-1&1073741823)>>>0<7){break a}while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}F[a+4>>2]=e;return}b:{i=F[a>>2];f=e-i>>2;h=f+b|0;if(h>>>0<1073741824){j=d-i|0;d=j>>>1|0;h=j>>>0>=2147483644?1073741823:d>>>0>h>>>0?d:h;if(h){if(h>>>0>=1073741824){break b}k=ka(h<<2)}f=(f<<2)+k|0;d=f;j=b&7;if(j){while(1){F[d>>2]=F[c>>2];d=d+4|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}}g=(b<<2)+f|0;if((b-1&1073741823)>>>0>=7){while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;if((g|0)!=(d|0)){continue}break}}if((e|0)!=(i|0)){while(1){f=f-4|0;e=e-4|0;F[f>>2]=F[e>>2];if((e|0)!=(i|0)){continue}break}}F[a+8>>2]=(h<<2)+k;F[a+4>>2]=g;F[a>>2]=f;if(i){ja(i)}return}na();v()}oa();v()}function Xb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=F[a+8>>2];e=F[a>>2];if(d-e>>2>>>0>=b>>>0){f=F[a+4>>2];h=f-e>>2;i=b>>>0>h>>>0?h:b;a:{if(!i){break a}d=e;g=i;j=g&7;if(j){while(1){F[d>>2]=F[c>>2];g=g-1|0;d=d+4|0;k=k+1|0;if((k|0)!=(j|0)){continue}break}}if(i>>>0<8){break a}while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;g=g-8|0;if(g){continue}break}}if(b>>>0>h>>>0){b=(b-h<<2)+f|0;while(1){F[f>>2]=F[c>>2];f=f+4|0;if((b|0)!=(f|0)){continue}break}F[a+4>>2]=b;return}F[a+4>>2]=e+(b<<2);return}if(e){F[a+4>>2]=e;ja(e);F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;d=0}b:{if(b>>>0>=1073741824){break b}e=d>>>1|0;d=d>>>0>=2147483644?1073741823:b>>>0>>0?e:b;if(d>>>0>=1073741824){break b}d=d<<2;e=ka(d);F[a>>2]=e;F[a+8>>2]=d+e;c=F[c>>2];d=e;g=b&7;if(g){while(1){F[d>>2]=c;d=d+4|0;f=f+1|0;if((g|0)!=(f|0)){continue}break}}e=e+(b<<2)|0;if((b-1&1073741823)>>>0>=7){while(1){F[d+28>>2]=c;F[d+24>>2]=c;F[d+20>>2]=c;F[d+16>>2]=c;F[d+12>>2]=c;F[d+8>>2]=c;F[d+4>>2]=c;F[d>>2]=c;d=d+32|0;if((e|0)!=(d|0)){continue}break}}F[a+4>>2]=e;return}na();v()}function Ka(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=(c>>>0)/3|0;j=F[(F[F[a+8>>2]+96>>2]+L(f,12)|0)+(c-L(f,3)<<2)>>2];a:{h=F[F[a+12>>2]+4>>2];e=F[h+4>>2];if((e|0)!=F[h+8>>2]){F[e>>2]=j;F[h+4>>2]=e+4;break a}b:{i=F[h>>2];f=e-i|0;g=f>>2;d=g+1|0;if(d>>>0<1073741824){k=g<<2;g=f>>>1|0;g=f>>>0>=2147483644?1073741823:d>>>0>>0?g:d;if(g){if(g>>>0>=1073741824){break b}f=ka(g<<2)}else{f=0}d=k+f|0;F[d>>2]=j;j=d+4|0;if((e|0)!=(i|0)){while(1){d=d-4|0;e=e-4|0;F[d>>2]=F[e>>2];if((e|0)!=(i|0)){continue}break}}F[h+8>>2]=f+(g<<2);F[h+4>>2]=j;F[h>>2]=d;if(i){ja(i)}break a}na();v()}oa();v()}c:{d:{h=F[a+4>>2];e=F[h+4>>2];e:{if((e|0)!=F[h+8>>2]){F[e>>2]=c;F[h+4>>2]=e+4;break e}i=F[h>>2];f=e-i|0;j=f>>2;d=j+1|0;if(d>>>0>=1073741824){break d}g=f>>>1|0;g=f>>>0>=2147483644?1073741823:d>>>0>>0?g:d;if(g){if(g>>>0>=1073741824){break c}f=ka(g<<2)}else{f=0}d=f+(j<<2)|0;F[d>>2]=c;c=d+4|0;if((e|0)!=(i|0)){while(1){d=d-4|0;e=e-4|0;F[d>>2]=F[e>>2];if((e|0)!=(i|0)){continue}break}}F[h+8>>2]=f+(g<<2);F[h+4>>2]=c;F[h>>2]=d;if(!i){break e}ja(i)}a=F[a+4>>2];F[F[a+12>>2]+(b<<2)>>2]=F[a+24>>2];F[a+24>>2]=F[a+24>>2]+1;return}na();v()}oa();v()}function pb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=d-c|0;if((h|0)<=0){return}a:{e=F[a+8>>2];i=F[a+4>>2];if((e-i|0)>=(h|0)){j=i-b|0;if((j|0)>=(h|0)){f=i;g=d;break a}f=i;g=c+j|0;if((g|0)!=(d|0)){e=g;while(1){D[f|0]=G[e|0];f=f+1|0;e=e+1|0;if((e|0)!=(d|0)){continue}break}}F[a+4>>2]=f;if((j|0)>0){break a}return}k=F[a>>2];g=(i-k|0)+h|0;if((g|0)>=0){j=b-k|0;f=e-k|0;e=f<<1;f=f>>>0>=1073741823?2147483647:e>>>0>g>>>0?e:g;if(f){e=ka(f)}else{e=0}g=j+e|0;if((c|0)!=(d|0)){g=la(g,c,h)+h|0}d=pa(e,k,j);c=i-b|0;b=pa(g,b,c);F[a+8>>2]=e+f;F[a+4>>2]=b+c;F[a>>2]=d;if(k){ja(k)}return}na();v()}e=f;d=e-h|0;if(i>>>0>d>>>0){while(1){D[e|0]=G[d|0];e=e+1|0;d=d+1|0;if(i>>>0>d>>>0){continue}break}}F[a+4>>2]=e;a=b+h|0;if((a|0)!=(f|0)){a=f-a|0;pa(f-a|0,b,a)}if((c|0)==(g|0)){return}f=(c^-1)+g|0;a=g-c&7;b:{if(!a){e=b;break b}d=0;e=b;while(1){D[e|0]=G[c|0];e=e+1|0;c=c+1|0;d=d+1|0;if((a|0)!=(d|0)){continue}break}}if(f>>>0<7){return}while(1){D[e|0]=G[c|0];D[e+1|0]=G[c+1|0];D[e+2|0]=G[c+2|0];D[e+3|0]=G[c+3|0];D[e+4|0]=G[c+4|0];D[e+5|0]=G[c+5|0];D[e+6|0]=G[c+6|0];D[e+7|0]=G[c+7|0];e=e+8|0;c=c+8|0;if((g|0)!=(c|0)){continue}break}}function la(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){Y(a|0,b|0,c|0);return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if(!c){c=a;break b}c=a;while(1){D[c|0]=G[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){F[c>>2]=F[b>>2];F[c+4>>2]=F[b+4>>2];F[c+8>>2]=F[b+8>>2];F[c+12>>2]=F[b+12>>2];F[c+16>>2]=F[b+16>>2];F[c+20>>2]=F[b+20>>2];F[c+24>>2]=F[b+24>>2];F[c+28>>2]=F[b+28>>2];F[c+32>>2]=F[b+32>>2];F[c+36>>2]=F[b+36>>2];F[c+40>>2]=F[b+40>>2];F[c+44>>2]=F[b+44>>2];F[c+48>>2]=F[b+48>>2];F[c+52>>2]=F[b+52>>2];F[c+56>>2]=F[b+56>>2];F[c+60>>2]=F[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){F[c>>2]=F[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){D[c|0]=G[b|0];D[c+1|0]=G[b+1|0];D[c+2|0]=G[b+2|0];D[c+3|0]=G[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){D[c|0]=G[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function sd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;F[a>>2]=8336;d=a+232|0;b=F[d+196>>2];if(b){F[d+200>>2]=b;ja(b)}c=F[d+184>>2];if(c){b=c;e=F[d+188>>2];if((b|0)!=(e|0)){while(1){b=e-12|0;f=F[b>>2];if(f){F[e-8>>2]=f;ja(f)}e=b;if((b|0)!=(c|0)){continue}break}b=F[d+184>>2]}F[d+188>>2]=c;ja(b)}b=F[d+156>>2];if(b){F[d+160>>2]=b;ja(b)}c=F[d+136>>2];F[d+136>>2]=0;if(c){e=c-4|0;b=F[e>>2];if(b){b=c+(b<<4)|0;while(1){b=b-16|0;if((c|0)!=(b|0)){continue}break}}ja(e)}td(a+216|0);b=F[a+196>>2];if(b){F[a+200>>2]=b;ja(b)}b=F[a+184>>2];if(b){F[a+188>>2]=b;ja(b)}b=F[a+172>>2];if(b){F[a+176>>2]=b;ja(b)}b=F[a+160>>2];if(b){F[a+164>>2]=b;ja(b)}b=F[a+144>>2];if(b){while(1){c=F[b>>2];ja(b);b=c;if(b){continue}break}}b=F[a+136>>2];F[a+136>>2]=0;if(b){ja(b)}b=F[a+120>>2];if(b){ja(b)}b=F[a+108>>2];if(b){ja(b)}b=F[a+96>>2];if(b){ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+60>>2];if(b){ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}b=F[a+36>>2];if(b){F[a+40>>2]=b;ja(b)}b=F[a+24>>2];if(b){F[a+28>>2]=b;ja(b)}b=F[a+12>>2];if(b){F[a+16>>2]=b;ja(b)}b=F[a+8>>2];F[a+8>>2]=0;if(b){Za(b)}return a|0}function Fa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=F[a+8>>2];e=F[a+4>>2];if(d-e>>2>>>0>=b>>>0){a:{if(!b){break a}d=e;f=b&7;if(f){while(1){F[d>>2]=F[c>>2];d=d+4|0;h=h+1|0;if((f|0)!=(h|0)){continue}break}}e=(b<<2)+e|0;if((b-1&1073741823)>>>0<7){break a}while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}F[a+4>>2]=e;return}b:{i=F[a>>2];j=e-i|0;f=j>>2;g=f+b|0;if(g>>>0<1073741824){d=d-i|0;e=d>>>1|0;g=d>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break b}k=ka(g<<2)}f=(f<<2)+k|0;d=f;e=b&7;if(e){while(1){F[d>>2]=F[c>>2];d=d+4|0;h=h+1|0;if((e|0)!=(h|0)){continue}break}}e=f+(b<<2)|0;if((b-1&1073741823)>>>0>=7){while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}b=pa(k,i,j);F[a+4>>2]=e;F[a>>2]=b;F[a+8>>2]=b+(g<<2);if(i){ja(i)}return}na();v()}oa();v()}function Sb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(G[a+11|0]>>>7|0){d=F[a+4>>2]}else{d=G[a+11|0]&127}if(d>>>0>>0){h=Z-16|0;Z=h;b=b-d|0;if(b){g=G[a+11|0]>>>7|0?(F[a+8>>2]&2147483647)-1|0:10;if(G[a+11|0]>>>7|0){d=F[a+4>>2]}else{d=G[a+11|0]&127}i=d+b|0;if(g-d>>>0>>0){a:{e=Z-16|0;Z=e;c=i-g|0;if(c>>>0<=2147483631-g>>>0){if(G[a+11|0]>>>7|0){f=F[a>>2]}else{f=a}if(g>>>0<1073741799){F[e+12>>2]=g<<1;F[e>>2]=c+g;c=Z-16|0;Z=c;Z=c+16|0;c=e+12|0;c=F[(I[e>>2]>2]?c:e)>>2];if(c>>>0>=11){j=c+16&-16;c=j-1|0;c=(c|0)==11?j:c}else{c=10}c=c+1|0}else{c=2147483631}sb(e,c);c=F[e>>2];if(d){db(c,f,d)}if((g|0)!=10){ja(f)}F[a>>2]=c;F[a+8>>2]=F[a+8>>2]&-2147483648|F[e+4>>2]&2147483647;F[a+8>>2]=F[a+8>>2]|-2147483648;Z=e+16|0;break a}za();v()}}f=d;if(G[a+11|0]>>>7|0){d=F[a>>2]}else{d=a}f=f+d|0;e=Z-16|0;Z=e;D[e+15|0]=0;while(1){if(b){D[f|0]=G[e+15|0];b=b-1|0;f=f+1|0;continue}break}Z=e+16|0;Ic(a,i);D[h+15|0]=0;D[d+i|0]=G[h+15|0]}Z=h+16|0;return}if(G[a+11|0]>>>7|0){d=F[a>>2]}else{d=a}f=Z-16|0;Z=f;Ic(a,b);D[f+15|0]=0;D[b+d|0]=G[f+15|0];Z=f+16|0}function Zc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;g=Z-16|0;Z=g;a:{b:{if(b){F[a+88>>2]=0;F[a+92>>2]=0;d=F[a+84>>2];F[a+84>>2]=0;if(d){ja(d)}F[a+76>>2]=0;F[a+80>>2]=0;d=F[a+72>>2];F[a+72>>2]=0;if(d){ja(d)}d=F[b>>2];c=F[b+4>>2];D[g+15|0]=0;Ea(a,c-d>>2,g+15|0);d=F[b+28>>2];c=F[b+24>>2];D[g+14|0]=0;Ea(a+12|0,d-c>>2,g+14|0);Xb(a+28|0,F[b+4>>2]-F[b>>2]>>2,10284);c=F[b+28>>2]-F[b+24>>2]|0;f=c>>2;e=F[a+52>>2];c:{if(f>>>0<=F[a+60>>2]-e>>2>>>0){break c}if((c|0)<0){break b}d=F[a+56>>2];c=ka(c);f=c+(f<<2)|0;h=c+(d-e&-4)|0;c=h;if((d|0)!=(e|0)){while(1){c=c-4|0;d=d-4|0;F[c>>2]=F[d>>2];if((d|0)!=(e|0)){continue}break}}F[a+60>>2]=f;F[a+56>>2]=h;F[a+52>>2]=c;if(!e){break c}ja(e)}c=F[b+28>>2]-F[b+24>>2]|0;f=c>>2;e=F[a+40>>2];d:{if(f>>>0<=F[a+48>>2]-e>>2>>>0){break d}if((c|0)<0){break a}d=F[a+44>>2];c=ka(c);f=c+(f<<2)|0;h=c+(d-e&-4)|0;c=h;if((d|0)!=(e|0)){while(1){c=c-4|0;d=d-4|0;F[c>>2]=F[d>>2];if((d|0)!=(e|0)){continue}break}}F[a+48>>2]=f;F[a+44>>2]=h;F[a+40>>2]=c;if(!e){break d}ja(e)}D[a+24|0]=1;F[a+64>>2]=b}Z=g+16|0;return}na();v()}na();v()}function nb(a,b){var c=0,d=0,e=0;c=(a|0)==(b|0);D[b+12|0]=c;a:{if(c){break a}while(1){d=F[b+8>>2];if(G[d+12|0]){break a}b:{c=F[d+8>>2];e=F[c>>2];if((e|0)==(d|0)){e=F[c+4>>2];if(!(!e|G[e+12|0])){break b}c:{if(F[d>>2]==(b|0)){b=d;break c}b=F[d+4>>2];a=F[b>>2];F[d+4>>2]=a;if(a){F[a+8>>2]=d;c=F[d+8>>2]}F[b+8>>2]=c;a=F[d+8>>2];F[((F[a>>2]!=(d|0))<<2)+a>>2]=b;F[b>>2]=d;F[d+8>>2]=b;c=F[b+8>>2];d=F[c>>2]}D[b+12|0]=1;D[c+12|0]=0;a=F[d+4>>2];F[c>>2]=a;if(a){F[a+8>>2]=c}F[d+8>>2]=F[c+8>>2];a=F[c+8>>2];F[((F[a>>2]!=(c|0))<<2)+a>>2]=d;F[d+4>>2]=c;F[c+8>>2]=d;return}if(!(G[e+12|0]|!e)){break b}d:{if(F[d>>2]!=(b|0)){b=d;break d}a=F[b+4>>2];F[d>>2]=a;if(a){F[a+8>>2]=d;c=F[d+8>>2]}F[b+8>>2]=c;a=F[d+8>>2];F[((F[a>>2]!=(d|0))<<2)+a>>2]=b;F[b+4>>2]=d;F[d+8>>2]=b;c=F[b+8>>2]}D[b+12|0]=1;D[c+12|0]=0;a=F[c+4>>2];b=F[a>>2];F[c+4>>2]=b;if(b){F[b+8>>2]=c}F[a+8>>2]=F[c+8>>2];b=F[c+8>>2];F[((F[b>>2]!=(c|0))<<2)+b>>2]=a;F[a>>2]=c;F[c+8>>2]=a;break a}D[d+12|0]=1;D[c+12|0]=(a|0)==(c|0);D[e+12|0]=1;b=c;if((c|0)!=(a|0)){continue}break}}}function mi(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(b){if(!c){break k}if(!d){break j}e=O(d)-O(b)|0;if(e>>>0<=31){break i}break c}if((d|0)==1|d>>>0>1){break c}_=0;a=(a>>>0)/(c>>>0)|0;break a}if(!a){break h}if(!d|d-1&d){break g}a=b>>>ji(d)|0;_=0;break a}if(!(c-1&c)){break f}h=(O(c)+33|0)-O(b)|0;g=0-h|0;break d}h=e+1|0;g=63-e|0;break d}_=0;a=(b>>>0)/(d>>>0)|0;break a}e=O(d)-O(b)|0;if(e>>>0<31){break e}break c}if((c|0)==1){break b}d=ji(c);c=d&31;if((d&63)>>>0>=32){a=b>>>c|0}else{e=b>>>c|0;a=((1<>>c}_=e;break a}h=e+1|0;g=63-e|0}e=h&63;f=e&31;if(e>>>0>=32){e=0;i=b>>>f|0}else{e=b>>>f|0;i=((1<>>f}g=g&63;f=g&31;if(g>>>0>=32){b=a<>>32-f|b<>>31;e=i<<1|b>>>31;f=m-(j+(e>>>0>g>>>0)|0)>>31;k=c&f;i=e-k|0;e=j-((d&f)+(e>>>0>>0)|0)|0;b=b<<1|a>>>31;a=l|a<<1;l=f&1;h=h-1|0;if(h){continue}break}}_=b<<1|a>>>31;a=l|a<<1;break a}a=0;b=0}_=b}return a}function yh(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,k=0;c=F[b+88>>2];if(!(!c|F[c>>2]!=1)){e=F[c+8>>2];F[a+4>>2]=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);f=a+8|0;d=G[b+24|0];h=F[a+8>>2];g=F[a+12>>2]-h>>2;a:{if(d>>>0>g>>>0){qa(f,d-g|0);d=G[b+24|0];e=F[c+8>>2];break a}if(d>>>0>=g>>>0){break a}F[a+12>>2]=h+(d<<2)}b:{if(!d){b=4;break b}h=d&3;f=F[f>>2];c:{if(d-1>>>0<3){b=4;d=0;break c}k=d&252;d=0;b=4;while(1){g=d<<2;c=b+e|0;F[g+f>>2]=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[f+(g|4)>>2]=G[c+4|0]|G[c+5|0]<<8|(G[c+6|0]<<16|G[c+7|0]<<24);F[f+(g|8)>>2]=G[c+8|0]|G[c+9|0]<<8|(G[c+10|0]<<16|G[c+11|0]<<24);F[f+(g|12)>>2]=G[c+12|0]|G[c+13|0]<<8|(G[c+14|0]<<16|G[c+15|0]<<24);d=d+4|0;b=b+16|0;i=i+4|0;if((k|0)!=(i|0)){continue}break}}if(!h){break b}while(1){c=b+e|0;F[f+(d<<2)>>2]=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);d=d+1|0;b=b+4|0;j=j+1|0;if((h|0)!=(j|0)){continue}break}}d=a;a=b+e|0;F[d+20>>2]=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);d=1}return d|0}function Yg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=Z-16|0;Z=g;e=F[a+4>>2];d=F[e>>2];a:{b=F[a+12>>2];c=F[b+28>>2]-F[b+24>>2]|0;f=c>>2;b:{if(f>>>0<=F[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=F[e+4>>2];c=ka(c);f=c+(f<<2)|0;h=c+(b-d&-4)|0;c=h;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[e+8>>2]=f;F[e+4>>2]=h;F[e>>2]=c;if(!d){break b}ja(d)}b=F[a+12>>2];c=F[b+28>>2];b=F[b+24>>2];F[g+12>>2]=0;b=c-b>>2;d=a+96|0;e=F[d>>2];c=F[a+100>>2]-e>>2;c:{if(b>>>0>c>>>0){Fa(d,b-c|0,g+12|0);break c}if(b>>>0>=c>>>0){break c}F[a+100>>2]=e+(b<<2)}e=a+8|0;b=F[a+116>>2];d:{if(b){d=F[b>>2];if((d|0)==F[b+4>>2]){c=1;break d}b=0;while(1){c=rd(e,F[(b<<2)+d>>2]);if(!c){break d}f=F[a+116>>2];d=F[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break d}c=1;a=F[a+12>>2];a=F[a+4>>2]-F[a>>2]|0;if(a>>>0<12){break d}a=(a>>2>>>0)/3|0;b=0;while(1){c=rd(e,L(b,3));if(!c){break d}b=b+1|0;if((a|0)!=(b|0)){continue}break}}Z=g+16|0;return c|0}na();v()}function md(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{if(!b){if((d|0)<0){break a}f=F[a+4>>2];b=F[a>>2];d=f-b|0;if(c>>>0>d>>>0){g=c-d|0;e=F[a+8>>2];if(g>>>0<=e-f>>>0){i=a,j=ma(f,0,g)+g|0,F[i+4>>2]=j;break c}if((c|0)<0){break b}f=e-b|0;e=f<<1;f=f>>>0>=1073741823?2147483647:c>>>0>>0?e:c;e=ka(f);ma(e+d|0,0,g);d=pa(e,b,d);F[a+8>>2]=d+f;F[a+4>>2]=c+d;F[a>>2]=d;if(!b){break c}ja(b);break c}if(c>>>0>=d>>>0){break c}F[a+4>>2]=b+c;break c}if((d|0)<0){break a}e=F[a+4>>2];f=F[a>>2];g=e-f|0;d:{if((d|0)<=0&c>>>0<=g>>>0|(d|0)<0){break d}if(c>>>0>g>>>0){d=c-g|0;h=F[a+8>>2];if(d>>>0<=h-e>>>0){i=a,j=ma(e,0,d)+d|0,F[i+4>>2]=j;break d}if((c|0)<0){break b}e=h-f|0;h=e<<1;e=e>>>0>=1073741823?2147483647:c>>>0>>0?h:c;h=ka(e);ma(h+g|0,0,d);d=pa(h,f,g);F[a+8>>2]=d+e;F[a+4>>2]=c+d;F[a>>2]=d;if(!f){break d}ja(f);break d}if(c>>>0>=g>>>0){break d}F[a+4>>2]=c+f}if(!c){break c}pa(F[a>>2],b,c)}b=F[a+28>>2];c=F[a+24>>2]+1|0;b=c?b:b+1|0;F[a+24>>2]=c;F[a+28>>2]=b;g=1;break a}na();v()}return g}function Lg(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,k=0,l=0,m=0,n=0,o=0;k=F[a+12>>2];c=F[a+68>>2];d=F[c+80>>2];D[b+84|0]=0;n=b+68|0;i=F[b+68>>2];e=F[b+72>>2]-i>>2;a:{if(e>>>0>>0){ab(n,d-e|0,9124);c=F[a+68>>2];d=F[c+80>>2];break a}if(d>>>0>=e>>>0){break a}F[b+72>>2]=i+(d<<2)}b=F[c+100>>2];e=F[c+96>>2];i=(b-e|0)/12|0;m=1;b:{if((b|0)==(e|0)){break b}k=F[k+28>>2];f=F[k>>2];if((f|0)==-1){return 0}o=i>>>0<=1?1:i;c=e;b=0;m=0;while(1){g=F[c>>2];if(g>>>0>=d>>>0){break b}j=F[F[a+72>>2]+12>>2];h=F[j+(f<<2)>>2];if(h>>>0>=d>>>0){break b}f=F[n>>2];F[f+(g<<2)>>2]=h;g=k+(l<<2)|0;h=F[g+4>>2];if((h|0)==-1){break b}l=F[c+4>>2];if(l>>>0>=d>>>0){break b}h=F[(h<<2)+j>>2];if(h>>>0>=d>>>0){break b}F[f+(l<<2)>>2]=h;g=F[g+8>>2];if((g|0)==-1){break b}c=F[c+8>>2];if(c>>>0>=d>>>0){break b}j=F[(g<<2)+j>>2];if(j>>>0>=d>>>0){break b}F[f+(c<<2)>>2]=j;b=b+1|0;m=i>>>0<=b>>>0;if((b|0)==(o|0)){break b}c=e+L(b,12)|0;l=L(b,3);f=F[k+(l<<2)>>2];if((f|0)!=-1){continue}break}}return m|0}function ag(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,k=0,l=0,m=0;h=F[d+80>>2];e=Z-48|0;Z=e;a=F[a+4>>2];m=a-2|0;a:{if(m>>>0>28){break a}j=F[F[d>>2]>>2]+F[d+48>>2]|0;F[e+16>>2]=a;a=-1<>2]=a^-1;a=-2-a|0;F[e+24>>2]=a;F[e+32>>2]=(a|0)/2;J[e+28>>2]=M(2)/M(a|0);f=F[c>>2];if((f|0)!=F[c+4>>2]){a=0;d=0;while(1){g=F[(d<<2)+f>>2];h=e+36|0;k=F[F[b>>2]>>2];l=F[b+48>>2];f=F[b+40>>2];i=F[b+44>>2];if(!G[b+84|0]){g=F[F[b+68>>2]+(g<<2)>>2]}g=ki(f,i,g,0);i=g;g=g+l|0;la(h,g+k|0,f);Kc(e+16|0,h,e+12|0,e+8|0);f=a<<2;F[f+j>>2]=F[e+12>>2];F[(f|4)+j>>2]=F[e+8>>2];a=a+2|0;d=d+1|0;f=F[c>>2];if(d>>>0>2]-f>>2>>>0){continue}break}break a}if(!h){break a}d=0;a=0;while(1){k=e+36|0;l=F[F[b>>2]>>2];i=F[b+48>>2];c=F[b+40>>2];f=ki(c,F[b+44>>2],G[b+84|0]?a:F[F[b+68>>2]+(a<<2)>>2],0);g=f;f=f+i|0;la(k,f+l|0,c);Kc(e+16|0,k,e+12|0,e+8|0);c=d<<2;F[c+j>>2]=F[e+12>>2];F[(c|4)+j>>2]=F[e+8>>2];d=d+2|0;a=a+1|0;if((h|0)!=(a|0)){continue}break}}Z=e+48|0;return m>>>0<29|0}function Zg(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,k=0,l=0,m=0,n=0,o=0;c=F[a+12>>2];d=F[a+108>>2];e=F[d+80>>2];D[b+84|0]=0;m=b+68|0;h=F[b+68>>2];f=F[b+72>>2]-h>>2;a:{if(f>>>0>>0){ab(m,e-f|0,9124);d=F[a+108>>2];e=F[d+80>>2];break a}if(e>>>0>=f>>>0){break a}F[b+72>>2]=h+(e<<2)}b=F[d+100>>2];f=F[d+96>>2];h=(b-f|0)/12|0;k=1;b:{if((b|0)==(f|0)){break b}n=h>>>0<=1?1:h;o=F[c>>2];c=0;d=f;b=0;k=0;while(1){c=(c<<2)+o|0;i=F[c>>2];if((i|0)==-1){break b}g=F[d>>2];if(g>>>0>=e>>>0){break b}l=F[F[a+112>>2]+12>>2];j=F[l+(i<<2)>>2];if(j>>>0>=e>>>0){break b}i=F[m>>2];F[i+(g<<2)>>2]=j;g=F[c+4>>2];if((g|0)==-1){break b}j=F[d+4>>2];if(j>>>0>=e>>>0){break b}g=F[(g<<2)+l>>2];if(g>>>0>=e>>>0){break b}F[i+(j<<2)>>2]=g;c=F[c+8>>2];if((c|0)==-1){break b}d=F[d+8>>2];if(d>>>0>=e>>>0){break b}c=F[(c<<2)+l>>2];if(c>>>0>=e>>>0){break b}F[i+(d<<2)>>2]=c;b=b+1|0;k=h>>>0<=b>>>0;if((b|0)==(n|0)){break b}c=L(b,3);d=f+L(b,12)|0;if((b|0)!=1431655765){continue}break}}return k|0}function xd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=M(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;k=Z-16|0;Z=k;if(F[c+28>>2]==9){d=F[a+4>>2];h=G[c+24|0];e=h<<2;f=ka(e);l=k+8|0;F[l>>2]=1065353216;i=J[a+20>>2];d=-1<0){J[l>>2]=i/M(d|0)}o=(d|0)>0;a:{if(!o){break a}j=F[c+80>>2];if(!j){break a}if(h){p=F[F[b>>2]>>2]+F[b+48>>2]|0;t=h&254;u=h&1;b=0;while(1){m=F[a+8>>2];i=J[l>>2];d=0;n=0;if((h|0)!=1){while(1){g=d<<2;q=(b<<2)+p|0;J[g+f>>2]=M(i*M(F[q>>2]))+J[g+m>>2];g=g|4;J[g+f>>2]=M(i*M(F[q+4>>2]))+J[g+m>>2];d=d+2|0;b=b+2|0;n=n+2|0;if((t|0)!=(n|0)){continue}break}}if(u){d=d<<2;J[d+f>>2]=M(i*M(F[(b<<2)+p>>2]))+J[d+m>>2];b=b+1|0}la(F[F[c+64>>2]>>2]+r|0,f,e);r=e+r|0;s=s+1|0;if((s|0)!=(j|0)){continue}break}break a}b=0;if((j|0)!=1){a=j&-2;d=0;while(1){la(F[F[c+64>>2]>>2]+b|0,f,e);b=b+e|0;la(b+F[F[c+64>>2]>>2]|0,f,e);b=b+e|0;d=d+2|0;if((a|0)!=(d|0)){continue}break}}if(!(j&1)){break a}la(F[F[c+64>>2]>>2]+b|0,f,e)}ja(f)}Z=k+16|0;return o|0}function Rg(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,k=0,l=0,m=0,n=0,o=0;c=F[a+12>>2];d=F[a+68>>2];e=F[d+80>>2];D[b+84|0]=0;m=b+68|0;h=F[b+68>>2];f=F[b+72>>2]-h>>2;a:{if(f>>>0>>0){ab(m,e-f|0,9124);d=F[a+68>>2];e=F[d+80>>2];break a}if(e>>>0>=f>>>0){break a}F[b+72>>2]=h+(e<<2)}b=F[d+100>>2];f=F[d+96>>2];h=(b-f|0)/12|0;k=1;b:{if((b|0)==(f|0)){break b}n=h>>>0<=1?1:h;o=F[c>>2];c=0;d=f;b=0;k=0;while(1){c=(c<<2)+o|0;i=F[c>>2];if((i|0)==-1){break b}g=F[d>>2];if(g>>>0>=e>>>0){break b}l=F[F[a+72>>2]+12>>2];j=F[l+(i<<2)>>2];if(j>>>0>=e>>>0){break b}i=F[m>>2];F[i+(g<<2)>>2]=j;g=F[c+4>>2];if((g|0)==-1){break b}j=F[d+4>>2];if(j>>>0>=e>>>0){break b}g=F[(g<<2)+l>>2];if(g>>>0>=e>>>0){break b}F[i+(j<<2)>>2]=g;c=F[c+8>>2];if((c|0)==-1){break b}d=F[d+8>>2];if(d>>>0>=e>>>0){break b}c=F[(c<<2)+l>>2];if(c>>>0>=e>>>0){break b}F[i+(d<<2)>>2]=c;b=b+1|0;k=h>>>0<=b>>>0;if((b|0)==(n|0)){break b}c=L(b,3);d=f+L(b,12)|0;if((b|0)!=1431655765){continue}break}}return k|0}function Na(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Z-16|0;Z=d;a:{f=F[a+4>>2];b:{if(f>>>0>>0){e=b-f|0;c=F[a+8>>2];g=c<<5;c:{if(!(e>>>0>g>>>0|f>>>0>g-e>>>0)){F[a+4>>2]=b;h=f&31;b=F[a>>2]+(f>>>3&536870908)|0;break c}F[d+8>>2]=0;F[d>>2]=0;F[d+4>>2]=0;if((b|0)<0){break a}if(g>>>0<=1073741822){c=c<<6;b=b+31&-32;b=b>>>0>>0?c:b}else{b=2147483647}$a(d,b);f=F[a+4>>2];F[d+4>>2]=f+e;i=F[a>>2];b=F[d>>2];d:{if((f|0)<=0){break d}c=f>>>5|0;if(f>>>0>=32){pa(b,i,c<<2)}g=c<<2;b=g+b|0;h=f&31;if(h){c=-1>>>32-h|0;F[b>>2]=F[b>>2]&(c^-1)|F[i+g>>2]&c}i=F[a>>2]}F[a>>2]=F[d>>2];F[d>>2]=i;c=F[a+4>>2];F[a+4>>2]=F[d+4>>2];F[d+4>>2]=c;c=F[a+8>>2];F[a+8>>2]=F[d+8>>2];F[d+8>>2]=c;if(!i){break c}ja(i)}if(!e){break b}if(h){c=32-h|0;a=c>>>0>>0?c:e;F[b>>2]=F[b>>2]&(-1<>>c-a^-1);e=e-a|0;b=b+4|0}a=e>>>5|0;if(e>>>0>=32){ma(b,0,a<<2)}if((e&-32)==(e|0)){break b}a=(a<<2)+b|0;F[a>>2]=F[a>>2]&(-1>>>32-(e&31)^-1);break b}F[a+4>>2]=b}Z=d+16|0;return}na();v()}function Aa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=Z-16|0;Z=i;f=F[b+20>>2];h=F[b+12>>2];c=F[b+16>>2];a:{if((f|0)>=(h|0)&c>>>0>=I[b+8>>2]|(f|0)>(h|0)){break a}D[a+12|0]=G[c+F[b>>2]|0];c=F[b+20>>2];f=F[b+16>>2]+1|0;c=f?c:c+1|0;F[b+16>>2]=f;F[b+20>>2]=c;if(!Qd(1,i+12|0,b)){break a}h=F[b+8>>2];f=F[b+16>>2];g=h-f|0;c=F[i+12>>2];d=f>>>0>h>>>0;h=F[b+20>>2];e=F[b+12>>2]-(d+h|0)|0;if(g>>>0>>0&(e|0)<=0|(e|0)<0|(c|0)<=0){break a}g=f+F[b>>2]|0;F[a>>2]=g;b:{c:{e=c-1|0;j=e+g|0;d=G[j|0];d:{if(d>>>0<=63){F[a+4>>2]=e;d=G[j|0]&63;break d}e:{switch((d>>>6|0)-1|0){case 1:break c;case 0:break e;default:break a}}if(c>>>0<2){break a}e=c-2|0;F[a+4>>2]=e;g=g+e|0;d=G[g+1|0]<<8&16128|G[g|0]}F[a+8>>2]=d+4096;break b}if(c>>>0<3){break a}e=c-3|0;F[a+4>>2]=e;d=a;a=g+e|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];F[d+8>>2]=a+4096;if(a>>>0>1044479){break a}}a=h;d=c;c=c+f|0;a=d>>>0>c>>>0?a+1|0:a;F[b+16>>2]=c;F[b+20>>2]=a;k=1}Z=i+16|0;return k}function qd(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;e=F[a+12>>2];i=F[a+8>>2];d=e-i>>2;b=G[b+24|0];a:{if(d>>>0>>0){qa(a+8|0,b-d|0);i=F[a+8>>2];e=F[a+12>>2];break a}if(b>>>0>=d>>>0){break a}e=(b<<2)+i|0;F[a+12>>2]=e}b=0;f=F[c+8>>2];h=F[c+12>>2];j=F[c+20>>2];e=e-i|0;d=F[c+16>>2];g=e+d|0;j=e>>>0>g>>>0?j+1|0:j;b:{if(f>>>0>>0&(h|0)<=(j|0)|(h|0)<(j|0)){break b}la(i,d+F[c>>2]|0,e);d=F[c+20>>2];g=e;e=e+F[c+16>>2]|0;d=g>>>0>e>>>0?d+1|0:d;F[c+16>>2]=e;F[c+20>>2]=d;f=F[c+8>>2];h=F[c+12>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;if(f>>>0>>0&(d|0)>=(h|0)|(d|0)>(h|0)){break b}d=e+F[c>>2]|0;F[a+20>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);d=F[c+20>>2];g=d;f=d;e=F[c+16>>2];d=e+4|0;f=d>>>0<4?f+1|0:f;F[c+16>>2]=d;F[c+20>>2]=f;h=F[c+12>>2];if((f|0)>=(h|0)&d>>>0>=I[c+8>>2]|(f|0)>(h|0)){break b}f=G[d+F[c>>2]|0];d=g;e=e+5|0;d=e>>>0<5?d+1|0:d;F[c+16>>2]=e;F[c+20>>2]=d;if(f-1>>>0>29){break b}F[a+4>>2]=f;b=1}return b|0}function Kc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=+J[b>>2];k=+J[b+4>>2];l=+J[b+8>>2];g=N(j)+N(k)+N(l);a:{if(!(g>1e-6)){j=1;k=0;e=0;break a}g=1/g;k=g*k;j=g*j;e=g*l<0}h=F[a+16>>2];l=+(h|0);g=R(j*l+.5);b:{if(N(g)<2147483648){m=~~g;break b}m=-2147483648}f=m>>31;i=(f^m)-f|0;g=R(k*l+.5);c:{if(N(g)<2147483648){f=~~g;break c}f=-2147483648}b=f>>31;b=h-(i+((f^b)-b|0)|0)|0;i=(b|0)>0?b:0;e=e?0-i|0:i;f=f+(b>>31&((f|0)>0?b:0-b|0))|0;d:{if((m|0)>=0){b=e+h|0;a=F[a+8>>2];e=h+f|0;break d}b=f>>31;b=(b^f)-b|0;a=F[a+8>>2];b=(e|0)<0?b:a-b|0;e=(f|0)<0?i:a-i|0}e:{if(!(b|e)){b=a;break e}if(!((a|0)!=(b|0)|e)){b=a;break e}if(!((a|0)!=(e|0)|b)){b=a;break e}if(!((b|0)<=(h|0)|e)){b=(h<<1)-b|0;a=0;break e}if(!((a|0)!=(e|0)|(b|0)>=(h|0))){b=(h<<1)-b|0;break e}if(!((a|0)!=(b|0)|(e|0)>=(h|0))){b=a;a=(h<<1)-e|0;break e}if(b){a=e;break e}b=0;if((e|0)<=(h|0)){a=e;break e}a=(h<<1)-e|0}F[c>>2]=a;F[d>>2]=b}function ye(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,k=0,l=0,m=0;a:{if(!$c(a,b)){break a}h=a+36|0;g=$[F[F[a>>2]+24>>2]](a)|0;e=F[a+40>>2];d=F[a+36>>2];c=e-d>>2;b:{if(g>>>0>c>>>0){Pb(h,g-c|0);break b}if(c>>>0<=g>>>0){break b}d=d+(g<<2)|0;if((d|0)!=(e|0)){while(1){e=e-4|0;c=F[e>>2];F[e>>2]=0;if(c){$[F[F[c>>2]+4>>2]](c)}if((d|0)!=(e|0)){continue}break}}F[a+40>>2]=d}c=1;if((g|0)<=0){break a}e=0;while(1){c:{c=F[b+20>>2];f=F[b+12>>2];d=F[b+16>>2];if((c|0)>=(f|0)&d>>>0>=I[b+8>>2]|(c|0)>(f|0)){break c}f=G[F[b>>2]+d|0];d=d+1|0;c=d?c:c+1|0;F[b+16>>2]=d;F[b+20>>2]=c;d=$[F[F[a>>2]+48>>2]](a,f)|0;f=e<<2;i=f+F[a+36>>2]|0;c=F[i>>2];F[i>>2]=d;if(c){$[F[F[c>>2]+4>>2]](c)}c=F[F[h>>2]+f>>2];if(!c){break c}if(!(k=c,l=$[F[F[a>>2]+28>>2]](a)|0,m=$[F[F[a>>2]+20>>2]](a,e)|0,j=F[F[c>>2]+8>>2],$[j](k|0,l|0,m|0)|0)){break c}c=1;e=e+1|0;if((g|0)!=(e|0)){continue}break a}break}c=0}return c|0}function Xc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;g=F[a>>2];c=g+(b>>>3&536870908)|0;F[c>>2]=F[c>>2]|1<>2];e=(b|0)==-1;d=-1;a:{if(e){break a}c=b+1|0;c=(c>>>0)%3|0?c:b-2|0;d=-1;if((c|0)==-1){break a}d=F[F[f>>2]+(c<<2)>>2]}c=F[a+12>>2];h=(d>>>3&536870908)+c|0;F[h>>2]=F[h>>2]|1<>>0)%3|0){e=b-1|0;break e}e=b+2|0;d=-1;if((e|0)==-1){break d}}d=F[F[f>>2]+(e<<2)>>2]}e=(d>>>3&536870908)+c|0;F[e>>2]=F[e>>2]|1<>2]+(b<<2)>>2];if((b|0)==-1){break b}D[a+24|0]=0;a=(b>>>3&536870908)+g|0;F[a>>2]=F[a>>2]|1<>>0)%3|0?a:b-2|0;if((a|0)!=-1){d=F[F[f>>2]+(a<<2)>>2]}a=c+(d>>>3&536870908)|0;F[a>>2]=F[a>>2]|1<>>0)%3|0){b=b-1|0;break g}b=b+2|0;a=-1;if((b|0)==-1){break f}}a=F[F[f>>2]+(b<<2)>>2]}b=1<>>3&536870908)|0;c=F[a>>2];break c}a=c+536870908|0;b=F[c+536870908>>2];c=-2147483648}F[a>>2]=b|c}}function zc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=M(0),f=M(0),g=M(0),h=M(0),i=M(0),j=0,k=M(0),l=M(0),m=M(0),n=M(0),o=0;a:{if(F[c+28>>2]!=9|G[c+24|0]!=3){break a}a=F[a+4>>2];if(a-2>>>0>28){break a}o=1;j=F[c+80>>2];if(!j){break a}k=M(M(2)/M((1<>2]>>2]+F[c+48>>2]|0;a=F[F[b>>2]>>2]+F[b+48>>2]|0;b=0;while(1){g=M(0);l=M(0);m=M(0);e=M(M(M(F[a>>2])*k)+M(-1));f=M(M(M(F[a+4>>2])*k)+M(-1));i=M(M(M(1)-M(N(e)))-M(N(f)));h=M(Q(M(-i),M(0)));n=M(-h);f=M(f+(f>>8;D[c+10|0]=d>>>16;D[c+11|0]=d>>>24;d=(w(l),y(2));D[c+4|0]=d;D[c+5|0]=d>>>8;D[c+6|0]=d>>>16;D[c+7|0]=d>>>24;d=(w(g),y(2));D[c|0]=d;D[c+1|0]=d>>>8;D[c+2|0]=d>>>16;D[c+3|0]=d>>>24;c=c+12|0;b=b+1|0;if((j|0)!=(b|0)){continue}break}}return o|0}function Md(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=Z-16|0;Z=g;a:{if(!Sa(1,g+8|0,b)){break a}d=F[b+8>>2];e=F[b+16>>2];f=d-e|0;h=F[g+12>>2];c=d>>>0>>0;d=F[b+20>>2];i=F[b+12>>2]-(c+d|0)|0;c=F[g+8>>2];if((h|0)==(i|0)&c>>>0>f>>>0|h>>>0>i>>>0){break a}d=d+h|0;f=c+e|0;d=f>>>0>>0?d+1|0:d;F[b+16>>2]=f;F[b+20>>2]=d;if((c|0)<=0){break a}b=F[b>>2]+e|0;F[a+40>>2]=b;e=c-1|0;d=b+e|0;f=G[d|0];b:{if(f>>>0<=63){F[a+44>>2]=e;b=G[d|0]&63;break b}c:{switch((f>>>6|0)-1|0){case 0:if(c>>>0<2){break a}c=c-2|0;F[a+44>>2]=c;b=b+c|0;b=G[b+1|0]<<8&16128|G[b|0];break b;case 1:if(c>>>0<3){break a}c=c-3|0;F[a+44>>2]=c;b=b+c|0;b=G[b+1|0]<<8|G[b+2|0]<<16&4128768|G[b|0];break b;default:break c}}c=c-4|0;F[a+44>>2]=c;b=b+c|0;b=(G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24))&1073741823}F[a+48>>2]=b+16384;j=b>>>0<4177920}Z=g+16|0;return j}function Tf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a:{a=Z-32|0;Z=a;e=ya(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){g=(e|15)+1|0;f=ka(g);F[a+24>>2]=g|-2147483648;F[a+16>>2]=f;F[a+20>>2]=e;g=e+f|0;break c}D[a+27|0]=e;f=a+16|0;g=e+f|0;if(!e){break b}}la(f,c,e)}D[g|0]=0;F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;d:{c=Ya(b,a+16|0);if((c|0)==(b+4|0)){break d}b=F[c+28>>2];e=F[c+32>>2];if((b|0)==(e|0)){break d}b=e-b|0;if(b&3){break d}e=b>>>2|0;f=F[a+4>>2];b=F[a>>2];g=f-b>>2;e:{if(e>>>0>g>>>0){qa(a,e-g|0);b=F[a>>2];f=F[a+4>>2];break e}if(e>>>0>=g>>>0){break e}f=(e<<2)+b|0;F[a+4>>2]=f}if((b|0)!=(f|0)){e=b;b=F[c+28>>2];la(e,b,F[c+32>>2]-b|0);break d}ta();v()}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d>>2]=F[a>>2];F[d+4>>2]=F[a+4>>2];F[d+8>>2]=F[a+8>>2];if(D[a+27|0]<0){ja(F[a+16>>2])}Z=a+32|0;break a}za();v()}}function ud(a){a=a|0;var b=0,c=0,d=0,e=0;F[a>>2]=8284;d=F[a+368>>2];F[a+368>>2]=0;if(d){e=d-4|0;b=F[e>>2];if(b){c=(b<<4)+d|0;while(1){c=c-16|0;if((d|0)!=(c|0)){continue}break}}ja(e)}td(a+216|0);b=F[a+196>>2];if(b){F[a+200>>2]=b;ja(b)}b=F[a+184>>2];if(b){F[a+188>>2]=b;ja(b)}b=F[a+172>>2];if(b){F[a+176>>2]=b;ja(b)}b=F[a+160>>2];if(b){F[a+164>>2]=b;ja(b)}c=F[a+144>>2];if(c){while(1){b=F[c>>2];ja(c);c=b;if(b){continue}break}}b=F[a+136>>2];F[a+136>>2]=0;if(b){ja(b)}b=F[a+120>>2];if(b){ja(b)}b=F[a+108>>2];if(b){ja(b)}b=F[a+96>>2];if(b){ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+60>>2];if(b){ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}b=F[a+36>>2];if(b){F[a+40>>2]=b;ja(b)}b=F[a+24>>2];if(b){F[a+28>>2]=b;ja(b)}b=F[a+12>>2];if(b){F[a+16>>2]=b;ja(b)}b=F[a+8>>2];F[a+8>>2]=0;if(b){Za(b)}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,i=0,j=0;d=Z-16|0;Z=d;a:{e=ya(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){f=(e|15)+1|0;a=ka(f);F[d+8>>2]=f|-2147483648;F[d>>2]=a;F[d+4>>2]=e;f=a+e|0;break c}D[d+11|0]=e;f=d+e|0;a=d;if(!e){break b}}la(a,c,e)}D[f|0]=0;c=G[d+11|0];e=c<<24>>24;b=F[b+4>>2];a=0;d:{if(!b){break d}a=c;c=(e|0)<0;a=c?F[d+4>>2]:a;f=c?F[d>>2]:d;while(1){c=G[b+27|0];g=c<<24>>24<0;c=g?F[b+20>>2]:c;i=c>>>0>>0;e:{f:{g:{h:{i:{j:{h=i?c:a;if(h){g=g?F[b+16>>2]:b+16|0;j=sa(f,g,h);if(j){break j}if(a>>>0>=c>>>0){break i}break e}if(a>>>0>=c>>>0){break h}break e}if((j|0)<0){break e}}c=sa(g,f,h);if(c){break g}}if(i){break f}a=1;break d}if((c|0)<0){break f}a=1;break d}b=b+4|0}b=F[b>>2];if(b){continue}break}a=0}if((e|0)<0){ja(F[d>>2])}Z=d+16|0;break a}za();v()}return a|0}function lc(a,b){var c=0,d=0;c=F[b+8>>2];F[a+4>>2]=F[b+4>>2];F[a+8>>2]=c;F[a+20>>2]=F[b+20>>2];c=F[b+16>>2];F[a+12>>2]=F[b+12>>2];F[a+16>>2]=c;a:{b:{if((a|0)!=(b|0)){c=F[b+28>>2];if(c){d=F[a+24>>2];if(F[a+32>>2]<<5>>>0>>0){if(d){ja(d);F[a+32>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;c=F[b+28>>2]}if((c|0)<0){break b}c=(c-1>>>5|0)+1|0;d=ka(c<<2);F[a+32>>2]=c;F[a+28>>2]=0;F[a+24>>2]=d;c=F[b+28>>2]}pa(d,F[b+24>>2],(c-1>>>3&536870908)+4|0);c=F[b+28>>2]}else{c=0}F[a+28>>2]=c;c=F[b+40>>2];if(c){d=F[a+36>>2];if(F[a+44>>2]<<5>>>0>>0){if(d){ja(d);F[a+44>>2]=0;F[a+36>>2]=0;F[a+40>>2]=0;c=F[b+40>>2]}if((c|0)<0){break a}c=(c-1>>>5|0)+1|0;d=ka(c<<2);F[a+44>>2]=c;F[a+40>>2]=0;F[a+36>>2]=d;c=F[b+40>>2]}pa(d,F[b+36>>2],(c-1>>>3&536870908)+4|0);b=F[b+40>>2]}else{b=0}F[a+40>>2]=b}return}na();v()}na();v()}function nc(a){var b=0,c=0,d=0;b=F[a+8>>2];d=F[a>>2];a:{if(G[a+12|0]){b:{c:{d:{e:{if((b|0)==-1){break e}c=b+1|0;b=(c>>>0)%3|0?c:b-2|0;if((b|0)==-1){break e}b=F[F[d+12>>2]+(b<<2)>>2];if((b|0)!=-1){break d}}F[a+8>>2]=-1;break c}c=b+1|0;b=(c>>>0)%3|0?c:b-2|0;F[a+8>>2]=b;if((b|0)!=-1){break b}}c=F[a+4>>2];b=-1;f:{if((c|0)==-1){break f}g:{if((c>>>0)%3|0){c=c-1|0;break g}c=c+2|0;b=-1;if((c|0)==-1){break f}}c=F[F[d+12>>2]+(c<<2)>>2];b=-1;if((c|0)==-1){break f}b=c-1|0;if((c>>>0)%3|0){break f}b=c+2|0}D[a+12|0]=0;F[a+8>>2]=b;return}if((b|0)!=F[a+4>>2]){break a}F[a+8>>2]=-1;return}c=-1;h:{if((b|0)==-1){break h}i:{if((b>>>0)%3|0){b=b-1|0;break i}b=b+2|0;c=-1;if((b|0)==-1){break h}}b=F[F[d+12>>2]+(b<<2)>>2];c=-1;if((b|0)==-1){break h}c=b-1|0;if((b>>>0)%3|0){break h}c=b+2|0}F[a+8>>2]=c}}function Od(a){var b=0,c=0,d=0;b=ka(32);D[b+26|0]=0;c=G[1475]|G[1476]<<8;D[b+24|0]=c;D[b+25|0]=c>>>8;c=G[1471]|G[1472]<<8|(G[1473]<<16|G[1474]<<24);d=G[1467]|G[1468]<<8|(G[1469]<<16|G[1470]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1463]|G[1464]<<8|(G[1465]<<16|G[1466]<<24);d=G[1459]|G[1460]<<8|(G[1461]<<16|G[1462]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1455]|G[1456]<<8|(G[1457]<<16|G[1458]<<24);d=G[1451]|G[1452]<<8|(G[1453]<<16|G[1454]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,26);ja(b)}function Kg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=F[a+4>>2];d=F[e>>2];a:{b=F[a+12>>2];c=F[b+56>>2]-F[b+52>>2]|0;f=c>>2;b:{if(f>>>0<=F[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=F[e+4>>2];c=ka(c);f=c+(f<<2)|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[e+8>>2]=f;F[e+4>>2]=g;F[e>>2]=c;if(!d){break b}ja(d)}e=a+8|0;b=F[a+76>>2];c:{if(b){d=F[b>>2];if((d|0)==F[b+4>>2]){return 1}b=0;while(1){c=od(e,F[(b<<2)+d>>2]);if(!c){break c}f=F[a+76>>2];d=F[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break c}c=1;a=F[F[a+12>>2]+64>>2];a=F[a+4>>2]-F[a>>2]|0;if(a>>>0<12){break c}a=(a>>2>>>0)/3|0;b=0;while(1){c=od(e,L(b,3));if(!c){break c}b=b+1|0;if((a|0)!=(b|0)){continue}break}}return c|0}na();v()}function Qg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=F[a+4>>2];d=F[e>>2];a:{b=F[a+12>>2];c=F[b+28>>2]-F[b+24>>2]|0;f=c>>2;b:{if(f>>>0<=F[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=F[e+4>>2];c=ka(c);f=c+(f<<2)|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[e+8>>2]=f;F[e+4>>2]=g;F[e>>2]=c;if(!d){break b}ja(d)}e=a+8|0;b=F[a+76>>2];c:{if(b){d=F[b>>2];if((d|0)==F[b+4>>2]){return 1}b=0;while(1){c=pd(e,F[(b<<2)+d>>2]);if(!c){break c}f=F[a+76>>2];d=F[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break c}c=1;a=F[a+12>>2];a=F[a+4>>2]-F[a>>2]|0;if(a>>>0<12){break c}a=(a>>2>>>0)/3|0;b=0;while(1){c=pd(e,L(b,3));if(!c){break c}b=b+1|0;if((a|0)!=(b|0)){continue}break}}return c|0}na();v()}function pa(a,b,c){var d=0,e=0;a:{if((a|0)==(b|0)){break a}e=a+c|0;if(b-e>>>0<=0-(c<<1)>>>0){return la(a,b,c)}d=(a^b)&3;b:{c:{if(a>>>0>>0){if(d){d=a;break b}if(!(a&3)){d=a;break c}d=a;while(1){if(!c){break a}D[d|0]=G[b|0];b=b+1|0;c=c-1|0;d=d+1|0;if(d&3){continue}break}break c}d:{if(d){break d}if(e&3){while(1){if(!c){break a}c=c-1|0;d=c+a|0;D[d|0]=G[b+c|0];if(d&3){continue}break}}if(c>>>0<=3){break d}while(1){c=c-4|0;F[c+a>>2]=F[b+c>>2];if(c>>>0>3){continue}break}}if(!c){break a}while(1){c=c-1|0;D[c+a|0]=G[b+c|0];if(c){continue}break}break a}if(c>>>0<=3){break b}while(1){F[d>>2]=F[b>>2];b=b+4|0;d=d+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}while(1){D[d|0]=G[b|0];d=d+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}return a}function Pb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=F[a+8>>2];c=F[a+4>>2];if(d-c>>2>>>0>=b>>>0){if(b){b=b<<2;c=ma(c,0,b)+b|0}F[a+4>>2]=c;return}a:{b:{c:{g=F[a>>2];f=c-g>>2;e=f+b|0;if(e>>>0<1073741824){d=d-g|0;h=d>>>1|0;e=d>>>0>=2147483644?1073741823:e>>>0>>0?h:e;if(e){if(e>>>0>=1073741824){break c}i=ka(e<<2)}d=(f<<2)+i|0;f=b<<2;b=ma(d,0,f);f=b+f|0;e=(e<<2)+i|0;if((c|0)==(g|0)){break b}while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;d=d-4|0;F[d>>2]=b;if((c|0)!=(g|0)){continue}break}F[a+8>>2]=e;b=F[a+4>>2];F[a+4>>2]=f;c=F[a>>2];F[a>>2]=d;if((b|0)==(c|0)){break a}while(1){b=b-4|0;a=F[b>>2];F[b>>2]=0;if(a){$[F[F[a>>2]+4>>2]](a)}if((b|0)!=(c|0)){continue}break}break a}na();v()}oa();v()}F[a+8>>2]=e;F[a+4>>2]=f;F[a>>2]=b}if(c){ja(c)}}function Yd(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,k=0,l=0;e=F[b+8>>2];d=F[b+12>>2];g=d;d=F[b+20>>2];k=d;h=F[b+16>>2];c=h+4|0;d=c>>>0<4?d+1|0:d;i=c;a:{if(c>>>0>e>>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}j=F[b>>2];c=j+h|0;f=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+16>>2]=i;F[b+20>>2]=d;c=e;e=k;d=h+8|0;e=d>>>0<8?e+1|0:e;if(c>>>0>>0&(e|0)>=(g|0)|(e|0)>(g|0)){break a}c=i+j|0;c=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+16>>2]=d;F[b+20>>2]=e;if((c|0)<(f|0)){break a}F[a+16>>2]=c;F[a+12>>2]=f;d=(c>>31)-((f>>31)+(c>>>0>>0)|0)|0;e=c-f|0;if(!d&e>>>0>2147483646|d){break a}d=e+1|0;F[a+20>>2]=d;e=d>>>1|0;F[a+24>>2]=e;F[a+28>>2]=0-e;if(!(d&1)){F[a+24>>2]=e-1}l=Aa(a+112|0,b)}return l|0}function Wc(a,b){var c=0,d=0,e=0,f=0;d=-1;e=-1;f=-1;a:{b:{if((b|0)==-1){break b}e=F[F[F[a+4>>2]+12>>2]+(b<<2)>>2];c=b+1|0;c=(c>>>0)%3|0?c:b-2|0;if((c|0)>=0){f=(c>>>0)/3|0;f=F[(F[F[a>>2]+96>>2]+L(f,12)|0)+(c-L(f,3)<<2)>>2]}c:{if((e|0)==-1){break c}c=((e>>>0)%3|0?-1:2)+e|0;if((c|0)<0){break c}d=(c>>>0)/3|0;d=F[(F[F[a>>2]+96>>2]+L(d,12)|0)+(c-L(d,3)<<2)>>2]}c=-1;if((d|0)!=(f|0)){break a}f=-1;d:{b=((b>>>0)%3|0?-1:2)+b|0;if((b|0)>=0){d=(b>>>0)/3|0;d=F[(F[F[a>>2]+96>>2]+L(d,12)|0)+(b-L(d,3)<<2)>>2];if((e|0)==-1){break b}break d}d=-1;if((e|0)!=-1){break d}break b}b=e+1|0;b=(b>>>0)%3|0?b:e-2|0;if((b|0)<0){break b}c=F[F[a>>2]+96>>2];a=(b>>>0)/3|0;f=F[(c+L(a,12)|0)+(b-L(a,3)<<2)>>2]}c=(d|0)!=(f|0)?-1:e}return c}function Fc(a,b){var c=0,d=0,e=0;c=Z+-64|0;Z=c;d=F[a>>2];e=F[d-4>>2];d=F[d-8>>2];F[c+32>>2]=0;F[c+36>>2]=0;F[c+40>>2]=0;F[c+44>>2]=0;F[c+48>>2]=0;F[c+52>>2]=0;D[c+55|0]=0;D[c+56|0]=0;D[c+57|0]=0;D[c+58|0]=0;D[c+59|0]=0;D[c+60|0]=0;D[c+61|0]=0;D[c+62|0]=0;F[c+24>>2]=0;F[c+28>>2]=0;F[c+20>>2]=0;F[c+16>>2]=11020;F[c+12>>2]=a;F[c+8>>2]=b;a=a+d|0;d=0;a:{if(La(e,b,0)){F[c+56>>2]=1;$[F[F[e>>2]+20>>2]](e,c+8|0,a,a,1,0);d=F[c+32>>2]==1?a:0;break a}$[F[F[e>>2]+24>>2]](e,c+8|0,a,1,0);b:{switch(F[c+44>>2]){case 0:d=F[c+48>>2]==1?F[c+36>>2]==1?F[c+40>>2]==1?F[c+28>>2]:0:0:0;break a;case 1:break b;default:break a}}if(F[c+32>>2]!=1){if(F[c+48>>2]|F[c+36>>2]!=1|F[c+40>>2]!=1){break a}}d=F[c+24>>2]}Z=c- -64|0;return d}function ma(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!c){break a}D[a|0]=b;d=a+c|0;D[d-1|0]=b;if(c>>>0<3){break a}D[a+2|0]=b;D[a+1|0]=b;D[d-3|0]=b;D[d-2|0]=b;if(c>>>0<7){break a}D[a+3|0]=b;D[d-4|0]=b;if(c>>>0<9){break a}d=0-a&3;e=d+a|0;b=L(b&255,16843009);F[e>>2]=b;d=c-d&-4;c=d+e|0;F[c-4>>2]=b;if(d>>>0<9){break a}F[e+8>>2]=b;F[e+4>>2]=b;F[c-8>>2]=b;F[c-12>>2]=b;if(d>>>0<25){break a}F[e+24>>2]=b;F[e+20>>2]=b;F[e+16>>2]=b;F[e+12>>2]=b;F[c-16>>2]=b;F[c-20>>2]=b;F[c-24>>2]=b;F[c-28>>2]=b;g=e&4|24;c=d-g|0;if(c>>>0<32){break a}d=ki(b,0,1,1);f=_;b=e+g|0;while(1){F[b+24>>2]=d;F[b+28>>2]=f;F[b+16>>2]=d;F[b+20>>2]=f;F[b+8>>2]=d;F[b+12>>2]=f;F[b>>2]=d;F[b+4>>2]=f;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function ie(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,k=0,l=0;d=F[b+8>>2];e=F[b+12>>2];g=e;e=F[b+20>>2];k=e;h=F[b+16>>2];c=h+4|0;e=c>>>0<4?e+1|0:e;i=c;a:{if(c>>>0>d>>>0&(e|0)>=(g|0)|(e|0)>(g|0)){break a}j=F[b>>2];c=j+h|0;f=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+16>>2]=i;F[b+20>>2]=e;c=d;d=k;e=h+8|0;d=e>>>0<8?d+1|0:d;if(c>>>0>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}c=i+j|0;c=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+16>>2]=e;F[b+20>>2]=d;if((c|0)<(f|0)){break a}F[a+16>>2]=c;F[a+12>>2]=f;d=(c>>31)-((f>>31)+(c>>>0>>0)|0)|0;b=c-f|0;if(!d&b>>>0>2147483646|d){break a}l=1;d=b+1|0;F[a+20>>2]=d;b=d>>>1|0;F[a+24>>2]=b;F[a+28>>2]=0-b;if(d&1){break a}F[a+24>>2]=b-1}return l|0}function Uc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=Z-16|0;Z=d;f=F[a+24>>2];k=F[a+28>>2];a:{if((f|0)!=(k|0)){while(1){F[d+8>>2]=0;F[d>>2]=0;F[d+4>>2]=0;a=Sc(F[f>>2],b,d);g=G[d+11|0];h=g<<24>>24;i=3;b:{c:{d:{if(!a){break d}i=0;a=G[c+11|0];e=a<<24>>24;j=(h|0)<0?F[d+4>>2]:g;if((j|0)!=(((e|0)<0?F[c+4>>2]:a)|0)){break d}a=(e|0)<0?F[c>>2]:c;e=(h|0)<0;e:{if(!e){e=d;if(!h){break e}while(1){if(G[e|0]!=G[a|0]){break d}a=a+1|0;e=e+1|0;g=g-1|0;if(g){continue}break}break e}if(!j){break e}if(sa(e?F[d>>2]:d,a,j)){break c}}l=F[f>>2];i=1}if((h|0)>=0){break b}}ja(F[d>>2])}f:{switch(i|0){case 0:case 3:break f;default:break a}}f=f+4|0;if((k|0)!=(f|0)){continue}break}}l=0}Z=d+16|0;return l}function gb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=c-b|0;h=f>>2;d=F[a+8>>2];e=F[a>>2];if(h>>>0<=d-e>>2>>>0){d=F[a+4>>2];g=d-e|0;f=g+b|0;i=g>>2;g=i>>>0>>0?f:c;if((g|0)!=(b|0)){while(1){F[e>>2]=F[b>>2];e=e+4|0;b=b+4|0;if((g|0)!=(b|0)){continue}break}}if(h>>>0>i>>>0){if((c|0)!=(g|0)){while(1){F[d>>2]=F[f>>2];d=d+4|0;f=f+4|0;if((f|0)!=(c|0)){continue}break}}F[a+4>>2]=d;return}F[a+4>>2]=e;return}if(e){F[a+4>>2]=e;ja(e);F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;d=0}a:{if((f|0)<0){break a}e=d>>>1|0;d=d>>>0>=2147483644?1073741823:e>>>0>h>>>0?e:h;if(d>>>0>=1073741824){break a}e=d<<2;d=ka(e);F[a>>2]=d;F[a+8>>2]=d+e;if((b|0)!=(c|0)){c=b;b=(f-4&-4)+4|0;d=la(d,c,b)+b|0}F[a+4>>2]=d;return}na();v()}function Ea(a,b,c){var d=0,e=0,f=0;e=Z-16|0;Z=e;F[a+4>>2]=0;a:{b:{if(!b){break b}f=F[a+8>>2];d=f<<5;c:{if(d>>>0>=b>>>0){F[a+4>>2]=b;break c}F[e+8>>2]=0;F[e>>2]=0;F[e+4>>2]=0;if((b|0)<0){break a}if(d>>>0<=1073741822){f=f<<6;d=b+31&-32;d=d>>>0>>0?f:d}else{d=2147483647}$a(e,d);f=F[a>>2];F[a>>2]=F[e>>2];F[e>>2]=f;d=F[a+4>>2];F[a+4>>2]=b;F[e+4>>2]=d;d=F[a+8>>2];F[a+8>>2]=F[e+8>>2];F[e+8>>2]=d;if(!f){break c}ja(f)}d=b>>>5|0;a=F[a>>2];if(G[c|0]){if(b>>>0>=32){ma(a,255,d<<2)}if((b&-32)==(b|0)){break b}a=a+(d<<2)|0;F[a>>2]=F[a>>2]|-1>>>32-(b&31);break b}if(b>>>0>=32){ma(a,0,d<<2)}if((b&-32)==(b|0)){break b}a=a+(d<<2)|0;F[a>>2]=F[a>>2]&(-1>>>32-(b&31)^-1)}Z=e+16|0;return}na();v()}function If(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Z-32|0;Z=e;a:{b:{f=ya(c);if(f>>>0<2147483632){c:{d:{if(f>>>0>=11){a=(f|15)+1|0;g=ka(a);F[e+24>>2]=a|-2147483648;F[e+16>>2]=g;F[e+20>>2]=f;a=f+g|0;break d}D[e+27|0]=f;g=e+16|0;a=f+g|0;if(!f){break c}}la(g,c,f)}D[a|0]=0;c=ya(d);if(c>>>0>=2147483632){break b}e:{f:{if(c>>>0>=11){f=(c|15)+1|0;a=ka(f);F[e+8>>2]=f|-2147483648;F[e>>2]=a;F[e+4>>2]=c;g=a+c|0;break f}D[e+11|0]=c;g=c+e|0;a=e;if(!c){break e}}la(a,d,c)}D[g|0]=0;c=F[b+4>>2];a=-1;g:{if(!c){break g}c=Uc(c,e+16|0,e);a=-1;if(!c){break g}a=Pc(b,F[c+24>>2])}if(D[e+11|0]<0){ja(F[e>>2])}if(D[e+27|0]<0){ja(F[e+16>>2])}Z=e+32|0;break a}za();v()}za();v()}return a|0}function se(a,b){a=a|0;b=b|0;a=0;a:{switch(b|0){case 0:a=ka(20);F[a+12>>2]=-1;F[a+16>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1920;return a|0;case 1:a=ka(24);F[a+12>>2]=-1;F[a+16>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1920;F[a+20>>2]=0;F[a>>2]=2136;return a|0;case 2:a=ka(48);F[a+12>>2]=-1;F[a+16>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1920;F[a+20>>2]=0;F[a>>2]=2136;F[a+24>>2]=1624;F[a>>2]=7948;F[a+32>>2]=0;F[a+36>>2]=0;F[a+28>>2]=-1;F[a+40>>2]=0;F[a+44>>2]=0;return a|0;case 3:a=ka(32);F[a+12>>2]=-1;F[a+16>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1920;F[a+20>>2]=0;F[a>>2]=2136;F[a+24>>2]=1032;F[a>>2]=5812;F[a+28>>2]=-1;break;default:break a}}return a|0}function Be(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,k=0,l=0,m=0,n=0;f=F[b>>2];b=F[b+4>>2];d=F[F[a+8>>2]+40>>2];j=d;m=ka((d|0)<0?-1:d);i=b-f|0;e=1;a:{if((i|0)<4){break a}b=0;g=F[c+16>>2];k=d;f=g+d|0;d=0+F[c+20>>2]|0;d=f>>>0>>0?d+1|0:d;h=F[c+12>>2];e=0;if(I[c+8>>2]>>0&(d|0)>=(h|0)|(d|0)>(h|0)){break a}e=i>>2;i=(e|0)<=1?1:e;while(1){b:{g=la(m,F[c>>2]+g|0,j);F[c+16>>2]=f;F[c+20>>2]=d;la(F[F[F[a+8>>2]+64>>2]>>2]+b|0,g,j);l=l+1|0;if((i|0)==(l|0)){break b}b=b+j|0;d=n+F[c+20>>2]|0;g=F[c+16>>2];f=k+g|0;d=f>>>0>>0?d+1|0:d;h=F[c+12>>2];if((d|0)<=(h|0)&I[c+8>>2]>=f>>>0|(d|0)<(h|0)){continue}}break}e=(e|0)<=(l|0)}ja(m);return e|0}function mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;F[b>>2]=1;f=b+8|0;c=F[b+8>>2];d=F[b+12>>2]-c|0;if(d>>>0<=4294967291){Db(f,d+4|0);c=F[f>>2]}c=c+d|0;d=F[a+4>>2];D[c|0]=d;D[c+1|0]=d>>>8;D[c+2|0]=d>>>16;D[c+3|0]=d>>>24;c=F[a+8>>2];if((c|0)!=F[a+12>>2]){d=0;while(1){g=(d<<2)+c|0;c=F[b+8>>2];e=F[b+12>>2]-c|0;if(e>>>0<=4294967291){Db(f,e+4|0);c=F[f>>2]}c=c+e|0;e=F[g>>2];D[c|0]=e;D[c+1|0]=e>>>8;D[c+2|0]=e>>>16;D[c+3|0]=e>>>24;d=d+1|0;c=F[a+8>>2];if(d>>>0>2]-c>>2>>>0){continue}break}}c=F[b+12>>2];b=F[b+8>>2];c=c-b|0;if(c>>>0<=4294967291){Db(f,c+4|0);b=F[f>>2]}b=b+c|0;a=F[a+20>>2];D[b|0]=a;D[b+1|0]=a>>>8;D[b+2|0]=a>>>16;D[b+3|0]=a>>>24}function mb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=F[a+4>>2];if((c|0)!=F[a+8>>2]){e=F[b+4>>2];F[c>>2]=F[b>>2];F[c+4>>2]=e;F[c+8>>2]=F[b+8>>2];F[a+4>>2]=c+12;return}a:{g=F[a>>2];d=(c-g|0)/12|0;e=d+1|0;if(e>>>0<357913942){f=d<<1;f=d>>>0>=178956970?357913941:e>>>0>>0?f:e;if(f){if(f>>>0>=357913942){break a}e=ka(L(f,12))}else{e=0}d=e+L(d,12)|0;h=F[b+4>>2];F[d>>2]=F[b>>2];F[d+4>>2]=h;F[d+8>>2]=F[b+8>>2];b=d+12|0;if((c|0)!=(g|0)){while(1){c=c-12|0;h=F[c+4>>2];d=d-12|0;F[d>>2]=F[c>>2];F[d+4>>2]=h;F[d+8>>2]=F[c+8>>2];if((c|0)!=(g|0)){continue}break}c=F[a>>2]}F[a+8>>2]=e+L(f,12);F[a+4>>2]=b;F[a>>2]=d;if(c){ja(c)}return}na();v()}oa();v()}function ne(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,k=0,l=0;h=F[c+12>>2];f=h;e=F[c+20>>2];i=F[c+8>>2];g=F[c+16>>2];a:{if((f|0)<=(e|0)&i>>>0<=g>>>0|(e|0)>(f|0)){break a}j=F[c>>2];k=D[j+g|0];d=e;f=g+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;b:{if((k|0)==-2){break b}if((d|0)>=(h|0)&f>>>0>=i>>>0|(d|0)>(h|0)){break a}d=D[f+j|0];g=g+2|0;e=g>>>0<2?e+1|0:e;F[c+16>>2]=g;F[c+20>>2]=e;if((d-4&255)>>>0<251){break a}e=$[F[F[a>>2]+40>>2]](a,k,d)|0;d=F[a+20>>2];F[a+20>>2]=e;if(!d){break b}$[F[F[d>>2]+4>>2]](d)}d=F[a+20>>2];if(d){if(!($[F[F[a>>2]+28>>2]](a,d)|0)){break a}}l=$[F[F[a>>2]+36>>2]](a,b,c)|0}return l|0}function Bf(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;a:{if(I[b+80>>2]>65535){break a}a=F[b+100>>2];b=F[b+96>>2];e=(a-b|0)/12|0;f=L(e,6);g=(f|0)==(c|0);if((a|0)==(b|0)|(c|0)!=(f|0)){break a}g=1;c=e>>>0<=1?1:e;i=c&1;a=0;if(e>>>0>=2){j=c&-2;c=0;while(1){f=L(a,6);h=f+d|0;e=b+L(a,12)|0;E[h>>1]=F[e>>2];E[(f|2)+d>>1]=F[e+4>>2];E[h+4>>1]=F[e+8>>2];f=a|1;e=L(f,6)+d|0;f=b+L(f,12)|0;E[e>>1]=F[f>>2];E[e+2>>1]=F[f+4>>2];E[e+4>>1]=F[f+8>>2];a=a+2|0;c=c+2|0;if((j|0)!=(c|0)){continue}break}}if(!i){break a}c=L(a,6)+d|0;a=b+L(a,12)|0;E[c>>1]=F[a>>2];E[c+2>>1]=F[a+4>>2];E[c+4>>1]=F[a+8>>2]}return g|0}function Gh(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,k=0,l=0,m=0,n=0;f=Z-32|0;Z=f;h=e>>>0>1073741823?-1:e<<2;h=ma(ka(h),0,h);g=F[b>>2];i=F[b+4>>2];k=F[h+4>>2];F[f+16>>2]=F[h>>2];F[f+20>>2]=k;F[f+8>>2]=g;F[f+12>>2]=i;i=a+8|0;Jb(f+24|0,i,f+16|0,f+8|0);F[c>>2]=F[f+24>>2];F[c+4>>2]=F[f+28>>2];if((d|0)>(e|0)){k=0-e<<2;a=e;while(1){g=a<<2;j=g+b|0;m=F[j>>2];j=F[j+4>>2];g=c+g|0;l=g+k|0;n=F[l+4>>2];F[f+16>>2]=F[l>>2];F[f+20>>2]=n;F[f+8>>2]=m;F[f+12>>2]=j;Jb(f+24|0,i,f+16|0,f+8|0);F[g>>2]=F[f+24>>2];F[g+4>>2]=F[f+28>>2];a=a+e|0;if((d|0)>(a|0)){continue}break}}ja(h);Z=f+32|0;return 1}function Sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=Z-32|0;Z=a;F[a+24>>2]=0;F[a+28>>2]=0;a:{d=ya(c);if(d>>>0<2147483632){b:{c:{if(d>>>0>=11){e=(d|15)+1|0;f=ka(e);F[a+16>>2]=e|-2147483648;F[a+8>>2]=f;F[a+12>>2]=d;e=d+f|0;break c}D[a+19|0]=d;f=a+8|0;e=f+d|0;if(!d){break b}}la(f,c,d)}D[e|0]=0;c=b+4|0;b=Ya(b,a+8|0);d:{if((c|0)==(b|0)){break d}c=F[b+32>>2];b=F[b+28>>2];if((c-b|0)!=8){break d}c=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);F[a+24>>2]=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);F[a+28>>2]=c}g=K[a+24>>3];if(D[a+19|0]<0){ja(F[a+8>>2])}Z=a+32|0;break a}za();v()}return+g}function Gc(a,b,c,d,e,f,g){var h=0,i=0,j=0;h=Z-16|0;Z=h;if((b^-1)+2147483631>>>0>=c>>>0){if(G[a+11|0]>>>7|0){i=F[a>>2]}else{i=a}if(b>>>0<1073741799){F[h+12>>2]=b<<1;F[h>>2]=b+c;c=Z-16|0;Z=c;Z=c+16|0;c=h+12|0;c=F[(I[h>>2]>2]?c:h)>>2];if(c>>>0>=11){j=c+16&-16;c=j-1|0;c=(c|0)==11?j:c}else{c=10}c=c+1|0}else{c=2147483631}sb(h,c);c=F[h>>2];if(f){db(c,g,f)}g=d-e|0;if((d|0)!=(e|0)){db(c+f|0,e+i|0,g)}if((b|0)!=10){ja(i)}F[a>>2]=c;F[a+8>>2]=F[a+8>>2]&-2147483648|F[h+4>>2]&2147483647;F[a+8>>2]=F[a+8>>2]|-2147483648;b=a;a=f+g|0;F[b+4>>2]=a;D[h+12|0]=0;D[a+c|0]=G[h+12|0];Z=h+16|0;return}za();v()}function _c(a,b,c){var d=0,e=0,f=0,g=0;a:{f=b>>>0<1431655766&(b|c)>=0;b:{if(!f){break b}b=L(b,3);Xb(a,b,10224);Xb(a+12|0,b,10228);d=F[a+24>>2];c:{if(F[a+32>>2]-d>>2>>>0>=c>>>0){break c}if(c>>>0>=1073741824){break a}b=F[a+28>>2];e=c<<2;c=ka(e);e=c+e|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[a+32>>2]=e;F[a+28>>2]=g;F[a+24>>2]=c;if(!d){break c}ja(d)}F[a+80>>2]=0;F[a+84>>2]=0;b=F[a+76>>2];F[a+76>>2]=0;if(b){ja(b)}F[a+68>>2]=0;F[a+72>>2]=0;b=a- -64|0;a=F[b>>2];F[b>>2]=0;if(!a){break b}ja(a)}return f}na();v()}function yd(a){var b=0,c=0,d=0,e=0,f=0;f=1;c=F[a+140>>2];a:{if((c|0)<=0){break a}b=c<<4;d=ka(c>>>0>268435455?-1:b|4);F[d>>2]=c;d=d+4|0;c=d+b|0;b=d;while(1){F[b>>2]=0;F[b+4>>2]=0;D[b+5|0]=0;D[b+6|0]=0;D[b+7|0]=0;D[b+8|0]=0;D[b+9|0]=0;D[b+10|0]=0;D[b+11|0]=0;D[b+12|0]=0;b=b+16|0;if((c|0)!=(b|0)){continue}break}e=F[a+136>>2];F[a+136>>2]=d;if(e){c=e-4|0;d=F[c>>2];if(d){b=(d<<4)+e|0;while(1){b=b-16|0;if((e|0)!=(b|0)){continue}break}}ja(c)}b=0;if(F[a+140>>2]<=0){break a}while(1){f=Aa(F[a+136>>2]+(b<<4)|0,a);if(!f){break a}b=b+1|0;if((b|0)>2]){continue}break}}return f} -function Sd(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;d=F[b+8>>2];c=F[b+12>>2];g=c;c=F[b+20>>2];i=c;h=F[b+16>>2];f=h+4|0;c=f>>>0<4?c+1|0:c;a:{if(d>>>0>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break a}e=h+F[b>>2]|0;e=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);F[b+16>>2]=f;F[b+20>>2]=c;f=d;d=i;c=h+8|0;d=c>>>0<8?d+1|0:d;if(c>>>0>f>>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}F[b+16>>2]=c;F[b+20>>2]=d;if(!(e&1)){break a}d=O(e)^31;if(d-1>>>0>28){break a}F[a+8>>2]=d+1;d=-2<>2]=c;F[a+12>>2]=d^-1;F[a+24>>2]=c>>1;J[a+20>>2]=M(2)/M(c|0);j=Aa(a+96|0,b)}return j|0}function bc(a,b){var c=0;c=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=c;c=F[b+60>>2];F[a+56>>2]=F[b+56>>2];F[a+60>>2]=c;c=F[b+52>>2];F[a+48>>2]=F[b+48>>2];F[a+52>>2]=c;c=F[b+44>>2];F[a+40>>2]=F[b+40>>2];F[a+44>>2]=c;c=F[b+36>>2];F[a+32>>2]=F[b+32>>2];F[a+36>>2]=c;c=F[b+28>>2];F[a+24>>2]=F[b+24>>2];F[a+28>>2]=c;c=F[b+20>>2];F[a+16>>2]=F[b+16>>2];F[a+20>>2]=c;c=F[b+12>>2];F[a+8>>2]=F[b+8>>2];F[a+12>>2]=c;F[a+88>>2]=0;F[a+64>>2]=0;F[a+68>>2]=0;F[a+72>>2]=0;F[a+76>>2]=0;D[a+77|0]=0;D[a+78|0]=0;D[a+79|0]=0;D[a+80|0]=0;D[a+81|0]=0;D[a+82|0]=0;D[a+83|0]=0;D[a+84|0]=0;return a}function ac(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(F[a+64>>2]){break a}c=ka(32);F[c+16>>2]=0;F[c+20>>2]=0;F[c+8>>2]=0;F[c>>2]=0;F[c+4>>2]=0;F[c+24>>2]=0;F[c+28>>2]=0;d=F[a+64>>2];F[a+64>>2]=c;if(!d){break a}c=F[d>>2];if(c){F[d+4>>2]=c;ja(c)}ja(d)}d=F[a+64>>2];c=F[a+28>>2]-1|0;if(c>>>0<=10){c=F[(c<<2)+10148>>2]}else{c=-1}c=L(c,G[a+24|0]);f=c>>31;g=md(d,0,ki(c,f,b,0),_);if(g){d=F[a+64>>2];F[a>>2]=d;e=F[d+20>>2];F[a+8>>2]=F[d+16>>2];F[a+12>>2]=e;e=F[d+24>>2];d=F[d+28>>2];F[a+48>>2]=0;F[a+52>>2]=0;F[a+40>>2]=c;F[a+44>>2]=f;F[a+16>>2]=e;F[a+20>>2]=d;F[a+80>>2]=b}return g}function Af(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,k=0;a=F[b+100>>2];b=F[b+96>>2];h=a-b|0;a:{if((h|0)!=(c|0)|(a|0)==(b|0)){break a}g=(c|0)/12|0;e=g>>>0<=1?1:g;j=e&1;a=0;if(g>>>0>=2){k=e&-2;g=0;while(1){e=L(a,12);i=e+d|0;f=b+e|0;F[i>>2]=F[f>>2];F[(e|4)+d>>2]=F[f+4>>2];F[i+8>>2]=F[f+8>>2];f=L(a|1,12);e=f+d|0;f=b+f|0;F[e>>2]=F[f>>2];F[e+4>>2]=F[f+4>>2];F[e+8>>2]=F[f+8>>2];a=a+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!j){break a}e=d;d=L(a,12);a=e+d|0;b=b+d|0;F[a>>2]=F[b>>2];F[a+4>>2]=F[b+4>>2];F[a+8>>2]=F[b+8>>2]}return(c|0)==(h|0)|0}function Kh(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;c=F[b+8>>2];d=F[b+12>>2];g=d;d=F[b+20>>2];i=d;h=F[b+16>>2];f=h+4|0;d=f>>>0<4?d+1|0:d;a:{if(c>>>0>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}e=h+F[b>>2]|0;e=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);F[b+16>>2]=f;F[b+20>>2]=d;f=c;c=i;d=h+8|0;c=d>>>0<8?c+1|0:c;if(d>>>0>f>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break a}F[b+16>>2]=d;F[b+20>>2]=c;if(!(e&1)){break a}b=O(e)^31;if(b-1>>>0>28){break a}j=1;F[a+8>>2]=b+1;b=-2<>2]=c;F[a+12>>2]=b^-1;F[a+24>>2]=c>>1;J[a+20>>2]=M(2)/M(c|0)}return j|0}function Ya(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;a=F[a+4>>2];a:{b:{if(!a){break b}d=G[b+11|0];c=d<<24>>24<0;g=c?F[b>>2]:b;d=c?F[b+4>>2]:d;b=f;while(1){e=G[a+27|0];c=e<<24>>24<0;e=c?F[a+20>>2]:e;h=e>>>0>d>>>0;i=h?d:e;c:{if(i){c=sa(c?F[a+16>>2]:a+16|0,g,i);if(c){break c}}c=d>>>0>e>>>0?-1:h}c=(c|0)<0;b=c?b:a;a=F[(c?a+4|0:a)>>2];if(a){continue}break}if((b|0)==(f|0)){break b}c=G[b+27|0];a=c<<24>>24<0;d:{c=a?F[b+20>>2]:c;e=c>>>0>>0?c:d;if(e){a=sa(g,a?F[b+16>>2]:b+16|0,e);if(a){break d}}if(c>>>0>d>>>0){break b}break a}if((a|0)>=0){break a}}b=f}return b}function Oe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(La(a,F[b+8>>2],e)){if(!(F[b+28>>2]==1|F[b+4>>2]!=(c|0))){F[b+28>>2]=d}return}a:{if(La(a,F[b>>2],e)){if(!(F[b+16>>2]!=(c|0)&F[b+20>>2]!=(c|0))){if((d|0)!=1){break a}F[b+32>>2]=1;return}F[b+32>>2]=d;b:{if(F[b+44>>2]==4){break b}E[b+52>>1]=0;a=F[a+8>>2];$[F[F[a>>2]+20>>2]](a,b,c,c,1,e);if(G[b+53|0]){F[b+44>>2]=3;if(!G[b+52|0]){break b}break a}F[b+44>>2]=4}F[b+20>>2]=c;F[b+40>>2]=F[b+40>>2]+1;if(F[b+36>>2]!=1|F[b+24>>2]!=2){break a}D[b+54|0]=1;return}a=F[a+8>>2];$[F[F[a>>2]+24>>2]](a,b,c,d,e)}}function Ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=ka(64);c=ka(12);F[c+8>>2]=F[F[a+4>>2]+80>>2];F[c>>2]=9968;F[c+4>>2]=0;f=yc(f,c);a:{b:{if((b|0)<0){c=f;break b}h=a+8|0;c=F[a+12>>2];e=F[a+8>>2];g=c-e>>2;c:{if((g|0)>(b|0)){break c}d=b+1|0;if(b>>>0>=g>>>0){Pb(h,d-g|0);break c}if(d>>>0>=g>>>0){break c}e=e+(d<<2)|0;if((e|0)!=(c|0)){while(1){c=c-4|0;d=F[c>>2];F[c>>2]=0;if(d){$[F[F[d>>2]+4>>2]](d)}if((c|0)!=(e|0)){continue}break}}F[a+12>>2]=e}a=F[h>>2]+(b<<2)|0;c=F[a>>2];F[a>>2]=f;if(!c){break a}}$[F[F[c>>2]+4>>2]](c)}return(b^-1)>>>31|0}function we(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=F[a+60>>2];a:{if(!c){break a}F[c+4>>2]=a+48;if(!($[F[F[c>>2]+12>>2]](c)|0)){break a}b:{c=$[F[F[a>>2]+24>>2]](a)|0;if((c|0)<=0){break b}while(1){c:{f=F[($[F[F[a>>2]+28>>2]](a)|0)+4>>2];g=$[F[F[a>>2]+20>>2]](a,d)|0;e=F[a+60>>2];if(!($[F[F[e>>2]+8>>2]](e,F[F[f+8>>2]+(g<<2)>>2])|0)){break c}d=d+1|0;if((c|0)!=(d|0)){continue}break b}break}return 0}d=0;if(!($[F[F[a>>2]+36>>2]](a,b)|0)){break a}if(!($[F[F[a>>2]+40>>2]](a,b)|0)){break a}d=$[F[F[a>>2]+44>>2]](a)|0}return d|0}function Id(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=F[a+216>>2];if((c|0)!=F[a+220>>2]){while(1){a:{c=F[L(e,144)+c>>2];if((c|0)<0){break a}d=F[a+4>>2];f=F[d+8>>2];if((c|0)>=F[d+12>>2]-f>>2){break a}d=0;c=F[(c<<2)+f>>2];if(($[F[F[c>>2]+24>>2]](c)|0)<=0){break a}while(1){if(($[F[F[c>>2]+20>>2]](c,d)|0)!=(b|0)){d=d+1|0;if(($[F[F[c>>2]+24>>2]](c)|0)>(d|0)){continue}break a}break}a=F[a+216>>2]+L(e,144)|0;return(G[a+100|0]?a+4|0:0)|0}e=e+1|0;c=F[a+216>>2];if(e>>>0<(F[a+220>>2]-c|0)/144>>>0){continue}break}}return 0}function nd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=F[a+8>>2];d=F[a+4>>2];if(c-d>>2>>>0>=b>>>0){if(b){b=b<<2;d=ma(d,0,b)+b|0}F[a+4>>2]=d;return}a:{f=F[a>>2];g=d-f>>2;e=g+b|0;if(e>>>0<1073741824){c=c-f|0;h=c>>>1|0;e=c>>>0>=2147483644?1073741823:e>>>0>>0?h:e;if(e){if(e>>>0>=1073741824){break a}i=ka(e<<2)}c=(g<<2)+i|0;b=b<<2;b=ma(c,0,b)+b|0;if((d|0)!=(f|0)){while(1){c=c-4|0;d=d-4|0;F[c>>2]=F[d>>2];if((d|0)!=(f|0)){continue}break}}F[a+8>>2]=(e<<2)+i;F[a+4>>2]=b;F[a>>2]=c;if(f){ja(f)}return}na();v()}oa();v()}function bb(a){var b=0,c=0,d=0,e=0,f=0;d=F[a+8>>2];a:{if(G[d+84|0]){break a}b=F[a+16>>2];if(!b|!G[b+84|0]){break a}c=F[d+72>>2];e=F[d+68>>2];D[b+84|0]=0;c=c-e>>2;f=F[b+68>>2];e=F[b+72>>2]-f>>2;b:{if(c>>>0>e>>>0){ab(b+68|0,c-e|0,2004);d=F[a+8>>2];break b}if(c>>>0>=e>>>0){break b}F[b+72>>2]=f+(c<<2)}if(G[d+84|0]){break a}c=F[d+68>>2];if((c|0)==F[d+72>>2]){break a}e=F[F[a+16>>2]+68>>2];b=0;while(1){f=b<<2;F[f+e>>2]=F[c+f>>2];b=b+1|0;c=F[d+68>>2];if(b>>>0>2]-c>>2>>>0){continue}break}}return F[a+16>>2]}function Lf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Z+-64|0;Z=e;f=Ja(e+8|0);F[f+16>>2]=0;F[f+20>>2]=0;F[f>>2]=b;F[f+8>>2]=c;F[f+12>>2]=0;b=e+48|0;Pd(b,a,f,d);F[a+24>>2]=F[e+48>>2];f=a+24|0;a:{if((f|0)==(b|0)){break a}b=a+28|0;c=e+48|4;g=G[e+63|0];d=g<<24>>24;if(D[a+39|0]>=0){if((d|0)>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break a}qb(b,F[e+52>>2],F[e+56>>2]);break a}a=(d|0)<0;rb(b,a?F[e+52>>2]:c,a?F[e+56>>2]:g)}if(D[e+63|0]<0){ja(F[e+52>>2])}Z=e- -64|0;return f|0}function Jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=Z-32|0;Z=a;a:{d=ya(c);if(d>>>0<2147483632){b:{c:{if(d>>>0>=11){e=(d|15)+1|0;f=ka(e);F[a+24>>2]=e|-2147483648;F[a+16>>2]=f;F[a+20>>2]=d;e=d+f|0;break c}D[a+27|0]=d;f=a+16|0;e=f+d|0;if(!d){break b}}la(f,c,d)}D[e|0]=0;D[a+4|0]=0;F[a>>2]=1701667182;D[a+11|0]=4;d=F[b+4>>2];c=-1;d:{if(!d){break d}d=Uc(d,a,a+16|0);c=-1;if(!d){break d}c=Pc(b,F[d+24>>2])}b=c;if(D[a+11|0]<0){ja(F[a>>2])}if(D[a+27|0]<0){ja(F[a+16>>2])}Z=a+32|0;break a}za();v()}return b|0}function Hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=F[a+216>>2];if((c|0)!=F[a+220>>2]){while(1){a:{c=F[L(e,144)+c>>2];if((c|0)<0){break a}d=F[a+4>>2];f=F[d+8>>2];if((c|0)>=F[d+12>>2]-f>>2){break a}d=0;c=F[(c<<2)+f>>2];if(($[F[F[c>>2]+24>>2]](c)|0)<=0){break a}while(1){if(($[F[F[c>>2]+20>>2]](c,d)|0)!=(b|0)){d=d+1|0;if(($[F[F[c>>2]+24>>2]](c)|0)>(d|0)){continue}break a}break}return(F[a+216>>2]+L(e,144)|0)+104|0}e=e+1|0;c=F[a+216>>2];if(e>>>0<(F[a+220>>2]-c|0)/144>>>0){continue}break}}return a+184|0}function Uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Z-16|0;Z=d;F[d+12>>2]=0;a:{e=ya(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){f=(e|15)+1|0;a=ka(f);F[d+8>>2]=f|-2147483648;F[d>>2]=a;F[d+4>>2]=e;f=a+e|0;break c}D[d+11|0]=e;f=d+e|0;a=d;if(!e){break b}}la(a,c,e)}D[f|0]=0;a=Ya(b,d);d:{if((a|0)==(b+4|0)){break d}b=F[a+32>>2];a=F[a+28>>2];if((b-a|0)!=4){break d}F[d+12>>2]=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24)}a=F[d+12>>2];if(D[d+11|0]<0){ja(F[d>>2])}Z=d+16|0;break a}za();v()}return a|0}function Mf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;d=Z+-64|0;Z=d;e=Ja(d+8|0);F[e+16>>2]=0;F[e+20>>2]=0;F[e>>2]=b;F[e+8>>2]=c;F[e+12>>2]=0;b=d+48|0;Od(b);F[a+24>>2]=F[d+48>>2];f=a+24|0;a:{if((b|0)==(f|0)){break a}b=a+28|0;c=d+48|4;g=G[d+63|0];e=g<<24>>24;if(D[a+39|0]>=0){if((e|0)>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break a}qb(b,F[d+52>>2],F[d+56>>2]);break a}a=(e|0)<0;rb(b,a?F[d+52>>2]:c,a?F[d+56>>2]:g)}if(D[d+63|0]<0){ja(F[d+52>>2])}Z=d- -64|0;return f|0}function Ce(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=1;a:{if(($[F[F[b>>2]+20>>2]](b)|0)<=0){break a}while(1){e=0;d=Qc(F[F[a+4>>2]+4>>2],$[F[F[b>>2]+24>>2]](b,f)|0);if((d|0)==-1){break a}g=F[a+4>>2];c=0;b:{if((d|0)<0){break b}h=F[g+4>>2];if((d|0)>=F[h+12>>2]-F[h+8>>2]>>2){break b}c=F[F[g+8>>2]+(F[F[g+20>>2]+(d<<2)>>2]<<2)>>2];c=$[F[F[c>>2]+32>>2]](c,d)|0}if(!c){break a}if(!($[F[F[b>>2]+28>>2]](b,c)|0)){break a}e=1;f=f+1|0;if(($[F[F[b>>2]+20>>2]](b)|0)>(f|0)){continue}break}}return e|0}function Db(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{c=F[a+4>>2];e=F[a>>2];d=c-e|0;b:{if(d>>>0>>0){g=b-d|0;f=F[a+8>>2];if(g>>>0<=f-c>>>0){h=a,i=ma(c,0,g)+g|0,F[h+4>>2]=i;break b}if((b|0)<0){break a}c=f-e|0;f=c<<1;c=c>>>0>=1073741823?2147483647:b>>>0>>0?f:b;f=ka(c);ma(f+d|0,0,g);d=pa(f,e,d);F[a+8>>2]=d+c;F[a+4>>2]=b+d;F[a>>2]=d;if(!e){break b}ja(e);break b}if(b>>>0>=d>>>0){break b}F[a+4>>2]=b+e}b=F[a+28>>2];c=b;d=b+1|0;b=F[a+24>>2]+1|0;e=b?c:d;F[a+24>>2]=b;F[a+28>>2]=e;return}na();v()}function Ma(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=F[a+4>>2];if((e|0)!=F[a+8>>2]){F[e>>2]=F[b>>2];F[a+4>>2]=e+4;return}a:{g=F[a>>2];f=e-g|0;c=f>>2;d=c+1|0;if(d>>>0<1073741824){h=c<<2;c=f>>>1|0;c=f>>>0>=2147483644?1073741823:c>>>0>d>>>0?c:d;if(c){if(c>>>0>=1073741824){break a}f=ka(c<<2)}else{f=0}d=h+f|0;F[d>>2]=F[b>>2];b=d+4|0;if((e|0)!=(g|0)){while(1){d=d-4|0;e=e-4|0;F[d>>2]=F[e>>2];if((e|0)!=(g|0)){continue}break}}F[a+8>>2]=f+(c<<2);F[a+4>>2]=b;F[a>>2]=d;if(g){ja(g)}return}na();v()}oa();v()}function va(a){F[a>>2]=-1;F[a+4>>2]=0;F[a+8>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;D[a+28|0]=1;F[a+20>>2]=0;F[a+24>>2]=0;F[a+12>>2]=0;F[a+16>>2]=0;F[a+40>>2]=0;F[a+44>>2]=0;F[a+48>>2]=0;F[a+52>>2]=0;F[a+56>>2]=0;F[a+60>>2]=0;F[a+64>>2]=0;F[a+68>>2]=0;F[a+76>>2]=0;F[a+80>>2]=0;F[a+84>>2]=0;F[a+88>>2]=0;F[a+92>>2]=0;F[a+96>>2]=0;F[a+72>>2]=a+4;F[a+104>>2]=0;F[a+108>>2]=0;D[a+100|0]=1;F[a+112>>2]=0;F[a+116>>2]=0;F[a+120>>2]=0;F[a+124>>2]=0;F[a+128>>2]=0;F[a+132>>2]=0;F[a+136>>2]=0;F[a+140>>2]=0}function Hb(a,b){var c=0,d=0,e=0,f=0;d=F[a+12>>2];c=F[a+16>>2]-d>>2;a:{if(c>>>0>>0){qa(a+12|0,b-c|0);break a}if(b>>>0>=c>>>0){break a}F[a+16>>2]=d+(b<<2)}b:{c=F[a>>2];c:{if(F[a+8>>2]-c>>2>>>0>=b>>>0){break c}if(b>>>0>=1073741824){break b}d=F[a+4>>2];e=b<<2;b=ka(e);e=b+e|0;f=b+(d-c&-4)|0;b=f;if((c|0)!=(d|0)){while(1){b=b-4|0;d=d-4|0;F[b>>2]=F[d>>2];if((c|0)!=(d|0)){continue}break}}F[a+8>>2]=e;F[a+4>>2]=f;F[a>>2]=b;if(!c){break c}ja(c)}return}na();v()}function tb(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=10300;b=F[a+68>>2];if(b){F[a+72>>2]=b;ja(b)}b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}b=F[a+44>>2];if(b){F[a+48>>2]=b;ja(b)}b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}b=F[a+8>>2];if(b){d=b;c=F[a+12>>2];if((b|0)!=(c|0)){while(1){c=c-4|0;d=F[c>>2];F[c>>2]=0;if(d){xa(d)}if((b|0)!=(c|0)){continue}break}d=F[a+8>>2]}F[a+12>>2]=b;ja(d)}b=F[a+4>>2];F[a+4>>2]=0;if(b){ic(b)}return a|0}function qa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=F[a+8>>2];c=F[a+4>>2];if(e-c>>2>>>0>=b>>>0){if(b){b=b<<2;c=ma(c,0,b)+b|0}F[a+4>>2]=c;return}a:{f=c;c=F[a>>2];g=f-c|0;h=g>>2;d=h+b|0;if(d>>>0<1073741824){e=e-c|0;f=e>>>1|0;d=e>>>0>=2147483644?1073741823:d>>>0>>0?f:d;if(d){if(d>>>0>=1073741824){break a}i=ka(d<<2)}b=b<<2;e=ma((h<<2)+i|0,0,b);f=d<<2;d=pa(i,c,g);F[a+8>>2]=f+d;F[a+4>>2]=b+e;F[a>>2]=d;if(c){ja(c)}return}na();v()}oa();v()}function gc(a,b){var c=0,d=0,e=0,f=0;c=a+4|0;a=Ya(a,b);a:{if((c|0)==(a|0)){break a}b=a+28|0;b=D[a+39|0]<0?F[b>>2]:b;while(1){a=b;b=a+1|0;c=D[a|0];if((c|0)==32|c-9>>>0<5){continue}break}b:{c:{d:{c=D[a|0];switch(c-43|0){case 0:break c;case 2:break d;default:break b}}e=1}c=D[b|0];a=b}if(c-48>>>0<10){while(1){d=(L(d,10)-D[a|0]|0)+48|0;b=D[a+1|0];a=a+1|0;if(b-48>>>0<10){continue}break}}a=e?d:0-d|0;if((a|0)==-1){break a}f=(a|0)!=0}return f}function Qa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;a=F[a>>2];c=F[a+4>>2];e=F[a+8>>2];if(c>>>0>>0){F[c>>2]=F[b>>2];F[a+4>>2]=c+4;return}a:{d=c;c=F[a>>2];g=d-c|0;d=g>>2;f=d+1|0;if(f>>>0<1073741824){h=d<<2;e=e-c|0;d=e>>>1|0;f=e>>>0>=2147483644?1073741823:f>>>0>>0?d:f;if(f){if(f>>>0>=1073741824){break a}e=ka(f<<2)}else{e=0}d=h+e|0;F[d>>2]=F[b>>2];b=pa(e,c,g);F[a+8>>2]=b+(f<<2);F[a+4>>2]=d+4;F[a>>2]=b;if(c){ja(c)}return}na();v()}oa();v()}function db(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=Z-16|0;Z=f;d=Z-32|0;Z=d;e=Z-16|0;Z=e;F[e+12>>2]=b;F[e+8>>2]=b+c;F[d+24>>2]=F[e+12>>2];F[d+28>>2]=F[e+8>>2];Z=e+16|0;c=Z-16|0;Z=c;h=F[d+28>>2];e=F[d+24>>2];g=h-e|0;if((e|0)!=(h|0)){pa(a,e,g)}F[c+12>>2]=e+g;F[c+8>>2]=a+g;F[d+16>>2]=F[c+12>>2];F[d+20>>2]=F[c+8>>2];Z=c+16|0;F[d+12>>2]=(F[d+16>>2]-b|0)+b;F[d+8>>2]=(F[d+20>>2]-a|0)+a;F[f+8>>2]=F[d+12>>2];F[f+12>>2]=F[d+8>>2];Z=d+32|0;Z=f+16|0}function _a(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=F[a+8>>2];c=F[a+4>>2];if(e-c>>3>>>0>=b>>>0){if(b){b=b<<3;c=ma(c,0,b)+b|0}F[a+4>>2]=c;return}a:{f=c;c=F[a>>2];g=f-c|0;h=g>>3;d=h+b|0;if(d>>>0<536870912){e=e-c|0;f=e>>>2|0;d=e>>>0>=2147483640?536870911:d>>>0>>0?f:d;if(d){if(d>>>0>=536870912){break a}i=ka(d<<3)}b=b<<3;e=ma((h<<3)+i|0,0,b);f=d<<3;d=pa(i,c,g);F[a+8>>2]=f+d;F[a+4>>2]=b+e;F[a>>2]=d;if(c){ja(c)}return}na();v()}oa();v()}function re(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=2016;b=F[a+60>>2];F[a+60>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}d=F[a+36>>2];if(d){c=F[a+40>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+36>>2]}F[a+40>>2]=d;ja(b)}F[a>>2]=1776;b=F[a+16>>2];if(b){F[a+20>>2]=b;ja(b)}b=F[a+4>>2];if(b){F[a+8>>2]=b;ja(b)}return a|0}function qe(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=2016;b=F[a+60>>2];F[a+60>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}d=F[a+36>>2];if(d){c=F[a+40>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+36>>2]}F[a+40>>2]=d;ja(b)}F[a>>2]=1776;b=F[a+16>>2];if(b){F[a+20>>2]=b;ja(b)}b=F[a+4>>2];if(b){F[a+8>>2]=b;ja(b)}ja(a)}function Eg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;a:{b=F[a+8>>2];b:{if((b|0)<0){break b}c=F[a+4>>2];e=F[c>>2];d=F[c+4>>2]-e>>2;c:{if(d>>>0>>0){nd(c,b-d|0);f=F[a+8>>2];break c}f=b;if(b>>>0>=d>>>0){break c}F[c+4>>2]=e+(b<<2);f=b}d=f;if((d|0)<=0){break b}a=F[a+4>>2];c=F[a>>2];e=F[a+4>>2]-c>>2;a=0;while(1){if((a|0)==(e|0)){break a}F[c+(a<<2)>>2]=a;a=a+1|0;if((d|0)!=(a|0)){continue}break}}return(b^-1)>>>31|0}ta();v()}function fh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=Z-16|0;Z=d;e=F[a+4>>2];a:{if((e|0)==-1){break a}c=F[b+20>>2];if(!!F[b+16>>2]&(c|0)>=0|(c|0)>0){break a}pb(b,F[b+4>>2],F[a+8>>2],F[a+12>>2]);c=F[b+20>>2];if(!!F[b+16>>2]&(c|0)>=0|(c|0)>0){break a}pb(b,F[b+4>>2],a+20|0,a+24|0);c=F[b+20>>2];f=F[b+16>>2];D[d+15|0]=F[a+4>>2];if(!!f&(c|0)>=0|(c|0)>0){break a}pb(b,F[b+4>>2],d+15|0,d+16|0)}Z=d+16|0;return(e|0)!=-1|0}function kd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=F[a+8>>2];c=F[a+4>>2];if(e-c>>1>>>0>=b>>>0){if(b){b=b<<1;c=ma(c,0,b)+b|0}F[a+4>>2]=c;return}a:{f=c;c=F[a>>2];g=f-c|0;f=g>>1;d=f+b|0;if((d|0)>=0){e=e-c|0;d=e>>>0>=2147483646?2147483647:d>>>0>>0?e:d;if(d){if((d|0)<0){break a}h=ka(d<<1)}b=b<<1;e=ma((f<<1)+h|0,0,b);f=d<<1;d=pa(h,c,g);F[a+8>>2]=f+d;F[a+4>>2]=b+e;F[a>>2]=d;if(c){ja(c)}return}na();v()}oa();v()}function of(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=Z-16|0;Z=d;Pd(d,a,b,c);F[a+24>>2]=F[d>>2];e=a+24|0;a:{if((e|0)==(d|0)){break a}b=a+28|0;c=d|4;f=G[d+15|0];g=f<<24>>24;if(D[a+39|0]>=0){if((g|0)>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break a}qb(b,F[d+4>>2],F[d+8>>2]);break a}a=(g|0)<0;rb(b,a?F[d+4>>2]:c,a?F[d+8>>2]:f)}if(D[d+15|0]<0){ja(F[d+4>>2])}Z=d+16|0;return e|0}function ra(a,b,c){var d=0,e=0,f=0,g=0;e=Z-16|0;Z=e;a:{b:{if(c>>>0<11){d=a;D[a+11|0]=G[a+11|0]&128|c;D[a+11|0]=G[a+11|0]&127;break b}if(c>>>0>2147483631){break a}g=e+8|0;if(c>>>0>=11){f=c+16&-16;d=f-1|0;d=(d|0)==11?f:d}else{d=10}sb(g,d+1|0);d=F[e+8>>2];F[a>>2]=d;F[a+8>>2]=F[a+8>>2]&-2147483648|F[e+12>>2]&2147483647;F[a+8>>2]=F[a+8>>2]|-2147483648;F[a+4>>2]=c}db(d,b,c+1|0);Z=e+16|0;return}za();v()}function pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;b=Z-16|0;Z=b;Od(b);F[a+24>>2]=F[b>>2];e=a+24|0;a:{if((e|0)==(b|0)){break a}c=a+28|0;d=b|4;f=G[b+15|0];g=f<<24>>24;if(D[a+39|0]>=0){if((g|0)>=0){a=F[d+4>>2];F[c>>2]=F[d>>2];F[c+4>>2]=a;F[c+8>>2]=F[d+8>>2];break a}qb(c,F[b+4>>2],F[b+8>>2]);break a}a=(g|0)<0;rb(c,a?F[b+4>>2]:d,a?F[b+8>>2]:f)}if(D[b+15|0]<0){ja(F[b+4>>2])}Z=b+16|0;return e|0}function Rf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=Z-16|0;Z=d;a:{e=ya(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){g=(e|15)+1|0;f=ka(g);F[d+8>>2]=g|-2147483648;F[d>>2]=f;F[d+4>>2]=e;g=e+f|0;break c}D[d+11|0]=e;g=d+e|0;f=d;if(!e){break b}}la(f,c,e)}D[g|0]=0;f=a+16|0;c=Sc(b,d,f);b=F[a+16>>2];a=D[a+27|0];if(D[d+11|0]<0){ja(F[d>>2])}Z=d+16|0;a=c?(a|0)<0?b:f:0;break a}za();v()}return a|0}function Yb(a,b){var c=0,d=0,e=0;c=F[a+4>>2];d=c+b|0;F[a+4>>2]=d;if(!((d-1^c-1)>>>0<32?c:0)){F[F[a>>2]+((d>>>0>=33?d-1>>>5|0:0)<<2)>>2]=0}a:{if(!b){break a}a=F[a>>2]+(c>>>3&536870908)|0;c=c&31;if(c){d=32-c|0;e=b>>>0>d>>>0?d:b;F[a>>2]=F[a>>2]&(-1<>>d-e^-1);b=b-e|0;a=a+4|0}c=b>>>5|0;if(b>>>0>=32){ma(a,0,c<<2)}if((b&-32)==(b|0)){break a}a=(c<<2)+a|0;F[a>>2]=F[a>>2]&(-1>>>32-(b&31)^-1)}}function ld(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>10){break a}d=F[c+20>>2];f=F[c+12>>2];e=F[c+16>>2];if((d|0)>=(f|0)&e>>>0>=I[c+8>>2]|(d|0)>(f|0)){break a}f=D[e+F[c>>2]|0];e=e+1|0;d=e?d:d+1|0;F[c+16>>2]=e;F[c+20>>2]=d;d=f;b:{if((d|0)<0){if(!ld(a+1|0,b,c)){break a}a=F[b>>2];d=d&127|a<<7;a=F[b+4>>2]<<7|a>>>25;break b}d=d&255;a=0}F[b>>2]=d;F[b+4>>2]=a;g=1}return g}function Sa(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>10){break a}d=F[c+20>>2];f=F[c+12>>2];e=F[c+16>>2];if((d|0)>=(f|0)&e>>>0>=I[c+8>>2]|(d|0)>(f|0)){break a}f=D[e+F[c>>2]|0];e=e+1|0;d=e?d:d+1|0;F[c+16>>2]=e;F[c+20>>2]=d;d=f;b:{if((d|0)<0){if(!Sa(a+1|0,b,c)){break a}a=F[b>>2];d=d&127|a<<7;a=F[b+4>>2]<<7|a>>>25;break b}d=d&255;a=0}F[b>>2]=d;F[b+4>>2]=a;g=1}return g}function Ne(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(La(a,F[b+8>>2],e)){if(!(F[b+28>>2]==1|F[b+4>>2]!=(c|0))){F[b+28>>2]=d}return}a:{if(!La(a,F[b>>2],e)){break a}if(!(F[b+16>>2]!=(c|0)&F[b+20>>2]!=(c|0))){if((d|0)!=1){break a}F[b+32>>2]=1;return}F[b+20>>2]=c;F[b+32>>2]=d;F[b+40>>2]=F[b+40>>2]+1;if(!(F[b+36>>2]!=1|F[b+24>>2]!=2)){D[b+54|0]=1}F[b+44>>2]=4}}function jg(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;e=Z+-64|0;Z=e;d=$[F[F[a>>2]+44>>2]](a,b)|0;a=$[F[F[a>>2]+40>>2]](a,b)|0;f=kb(e);g=F[b+56>>2];h=d&255;i=a;a=a-1|0;if(a>>>0<=10){a=F[(a<<2)+10148>>2]}else{a=-1}d=L(a,d);cc(f,g,h,i,0,d,d>>31);a=bc(ka(96),f);ac(a,c);D[a+84|0]=1;F[a+72>>2]=F[a+68>>2];F[a+60>>2]=F[b+60>>2];Z=e- -64|0;return a|0}function rh(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=8176;b=F[a+48>>2];F[a+48>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=10032;b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}d=F[a+8>>2];if(d){c=F[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+8>>2]}F[a+12>>2]=d;ja(b)}return a|0}function Dc(a,b,c,d){D[a+53|0]=1;a:{if(F[a+4>>2]!=(c|0)){break a}D[a+52|0]=1;c=F[a+16>>2];b:{if(!c){F[a+36>>2]=1;F[a+24>>2]=d;F[a+16>>2]=b;if((d|0)!=1){break a}if(F[a+48>>2]==1){break b}break a}if((b|0)==(c|0)){c=F[a+24>>2];if((c|0)==2){F[a+24>>2]=d;c=d}if(F[a+48>>2]!=1){break a}if((c|0)==1){break b}break a}F[a+36>>2]=F[a+36>>2]+1}D[a+54|0]=1}}function qh(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=8176;b=F[a+48>>2];F[a+48>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=10032;b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}d=F[a+8>>2];if(d){c=F[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+8>>2]}F[a+12>>2]=d;ja(b)}ja(a)}function Se(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=Z+-64|0;Z=e;d=1;a:{if(La(a,b,0)){break a}d=0;if(!b){break a}b=Fc(b,11068);d=0;if(!b){break a}d=e+8|0;ma(d|4,0,52);F[e+56>>2]=1;F[e+20>>2]=-1;F[e+16>>2]=a;F[e+8>>2]=b;$[F[F[b>>2]+28>>2]](b,d,F[c>>2],1);a=F[e+32>>2];if((a|0)==1){F[c>>2]=F[e+24>>2]}d=(a|0)==1}Z=e- -64|0;return d|0}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Z-16|0;Z=d;F[a+4>>2]=b;b=F[b+64>>2];e=F[b>>2];b=F[b+4>>2];D[d+15|0]=0;Ea(a+24|0,(b-e>>2>>>0)/3|0,d+15|0);b=F[a+4>>2];e=F[b+56>>2];b=F[b+52>>2];D[d+14|0]=0;Ea(a+36|0,e-b>>2,d+14|0);b=F[c+12>>2];F[a+16>>2]=F[c+8>>2];F[a+20>>2]=b;b=F[c+4>>2];F[a+8>>2]=F[c>>2];F[a+12>>2]=b;Z=d+16|0}function zf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a=Z-16|0;Z=a;f=D[b+24|0];e=F[2555];F[a+8>>2]=F[2554];F[a+12>>2]=e;e=F[2553];F[a>>2]=F[2552];F[a+4>>2]=e;e=lb(b,c,f,a);if(e){b=0;if(f){c=(f&255)<<2;b=ka(c);g=la(b,a,c)+c|0}c=F[d>>2];if(c){F[d+4>>2]=c;ja(c)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=b}Z=a+16|0;return e|0}function wd(a,b){var c=0,d=0;a:{c=F[a+4>>2];d=F[a+8>>2];if((c|0)==d<<5){if((c+1|0)<0){break a}if(c>>>0<=1073741822){d=d<<6;c=(c&-32)+32|0;c=c>>>0>>0?d:c}else{c=2147483647}$a(a,c);c=F[a+4>>2]}F[a+4>>2]=c+1;d=1<>2]+(c>>>3&536870908)|0;if(G[b|0]){F[a>>2]=d|F[a>>2];return}F[a>>2]=F[a>>2]&(d^-1);return}na();v()}function Zb(a){var b=0;F[a>>2]=0;F[a+4>>2]=0;F[a+56>>2]=0;F[a+48>>2]=0;F[a+52>>2]=0;F[a+40>>2]=0;F[a+44>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;b=a- -64|0;F[b>>2]=0;F[b+4>>2]=0;F[a+72>>2]=0;F[a+76>>2]=0;F[a+80>>2]=0;F[a+84>>2]=0;F[a+60>>2]=a;return a}function ve(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=$[F[F[a>>2]+24>>2]](a)|0;c=1;a:{if((f|0)<=0){break a}d=F[F[a+36>>2]>>2];g=a+48|0;c=0;if(!($[F[F[d>>2]+16>>2]](d,g,b)|0)){break a}while(1){e=e+1|0;if((f|0)!=(e|0)){d=F[F[a+36>>2]+(e<<2)>>2];if($[F[F[d>>2]+16>>2]](d,g,b)|0){continue}}break}c=(e|0)>=(f|0)}return c|0}function ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=$[F[F[a>>2]+24>>2]](a)|0;c=1;a:{if((f|0)<=0){break a}d=F[F[a+36>>2]>>2];g=a+48|0;c=0;if(!($[F[F[d>>2]+20>>2]](d,g,b)|0)){break a}while(1){e=e+1|0;if((f|0)!=(e|0)){d=F[F[a+36>>2]+(e<<2)>>2];if($[F[F[d>>2]+20>>2]](d,g,b)|0){continue}}break}c=(e|0)>=(f|0)}return c|0}function bh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Z-16|0;Z=d;F[a+4>>2]=b;e=F[b>>2];b=F[b+4>>2];D[d+15|0]=0;Ea(a+24|0,(b-e>>2>>>0)/3|0,d+15|0);b=F[a+4>>2];e=F[b+28>>2];b=F[b+24>>2];D[d+14|0]=0;Ea(a+36|0,e-b>>2,d+14|0);b=F[c+12>>2];F[a+16>>2]=F[c+8>>2];F[a+20>>2]=b;b=F[c+4>>2];F[a+8>>2]=F[c>>2];F[a+12>>2]=b;Z=d+16|0}function hb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!hb(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function fb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!fb(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Wb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Wb(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Ta(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Ta(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Qd(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Qd(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Oa(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Oa(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Da(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Da(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function sa(a,b,c){var d=0,e=0;a:{b:{if(c>>>0>=4){if((a|b)&3){break b}while(1){if(F[a>>2]!=F[b>>2]){break b}b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}}while(1){d=G[a|0];e=G[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c-1|0;if(c){continue}break a}break}return d-e|0}return 0}function td(a){var b=0,c=0,d=0,e=0;d=F[a>>2];if(d){e=d;c=F[a+4>>2];if((d|0)!=(c|0)){while(1){e=c-144|0;b=F[e+132>>2];if(b){F[c-8>>2]=b;ja(b)}b=F[c-28>>2];if(b){F[c-24>>2]=b;ja(b)}b=F[c-40>>2];if(b){F[c-36>>2]=b;ja(b)}Gb(c-140|0);c=e;if((d|0)!=(c|0)){continue}break}e=F[a>>2]}F[a+4>>2]=d;ja(e)}}function Ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=F[b+4>>2];a:{if(!d){break a}b=F[F[F[b+8>>2]+(c<<2)>>2]+60>>2];if((b|0)<0){break a}a=F[d+24>>2];c=F[d+28>>2];if((a|0)==(c|0)){break a}b:{while(1){e=F[a>>2];if((b|0)==F[e+24>>2]){break b}a=a+4|0;if((c|0)!=(a|0)){continue}break}e=0}}return e|0}function ic(a){var b=0,c=0,d=0;if(a){d=F[a+24>>2];if(d){b=d;c=F[a+28>>2];if((b|0)!=(c|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){Ca(b+12|0,F[b+16>>2]);Ba(b,F[b+4>>2]);ja(b)}if((c|0)!=(d|0)){continue}break}b=F[a+24>>2]}F[a+28>>2]=d;ja(b)}Ca(a+12|0,F[a+16>>2]);Ba(a,F[a+4>>2]);ja(a)}}function $g(a){a=a|0;var b=0;F[a+8>>2]=9136;F[a>>2]=8924;b=F[a+96>>2];if(b){F[a+100>>2]=b;ja(b)}b=F[a+80>>2];if(b){F[a+84>>2]=b;ja(b)}b=F[a+68>>2];if(b){F[a+72>>2]=b;ja(b)}b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=9372;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}return a|0}function _g(a){a=a|0;var b=0;F[a+8>>2]=9136;F[a>>2]=8924;b=F[a+96>>2];if(b){F[a+100>>2]=b;ja(b)}b=F[a+80>>2];if(b){F[a+84>>2]=b;ja(b)}b=F[a+68>>2];if(b){F[a+72>>2]=b;ja(b)}b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=9372;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}ja(a)}function wh(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=10032;b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}d=F[a+8>>2];if(d){c=F[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+8>>2]}F[a+12>>2]=d;ja(b)}return a|0}function uc(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;h=F[c+8>>2];e=F[c+16>>2];g=F[c+12>>2];f=g;d=F[c+20>>2];if(h>>>0>e>>>0&(f|0)>=(d|0)|(d|0)<(f|0)){b=G[F[c>>2]+e|0];i=e+1|0;f=i?d:d+1|0;F[c+16>>2]=i;F[c+20>>2]=f;F[a+4>>2]=b}return e>>>0>>0&(d|0)<=(g|0)|(d|0)<(g|0)}function La(a,b,c){var d=0;if(!c){return F[a+4>>2]==F[b+4>>2]}if((a|0)==(b|0)){return 1}d=F[a+4>>2];a=G[d|0];c=F[b+4>>2];b=G[c|0];a:{if(!a|(b|0)!=(a|0)){break a}while(1){b=G[c+1|0];a=G[d+1|0];if(!a){break a}c=c+1|0;d=d+1|0;if((a|0)==(b|0)){continue}break}}return(a|0)==(b|0)}function Gg(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=10032;b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}d=F[a+8>>2];if(d){c=F[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+8>>2]}F[a+12>>2]=d;ja(b)}ja(a)}function Gf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=F[b+12>>2];b=F[b+8>>2];a=0;a:{if((d|0)==(b|0)){break a}a=d-b>>2;d=a>>>0<=1?1:a;a=0;b:{while(1){e=F[b+(a<<2)>>2];if(F[e+60>>2]==(c|0)){break b}a=a+1|0;if((d|0)!=(a|0)){continue}break}a=0;break a}a=(a|0)!=-1?e:0}return a|0}function ah(a){a=a|0;var b=0;F[a>>2]=9136;b=F[a+88>>2];if(b){F[a+92>>2]=b;ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+60>>2];if(b){F[a- -64>>2]=b;ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function Tc(a,b){var c=0,d=0,e=0;F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;a:{c=F[b+4>>2];d=F[b>>2];b:{if((c|0)==(d|0)){a=c;break b}c=c-d|0;if((c|0)<0){break a}d=c;e=ka(c);c=ma(e,0,c);d=d+c|0;F[a+8>>2]=d;F[a+4>>2]=d;F[a>>2]=c;c=F[b>>2];a=F[b+4>>2]}la(e,c,a-c|0);return}na();v()}function Dd(a){var b=0,c=0,d=0,e=0;c=F[a+4>>2];d=F[a>>2];if((c|0)!=(d|0)){while(1){e=c-144|0;b=F[e+132>>2];if(b){F[c-8>>2]=b;ja(b)}b=F[c-28>>2];if(b){F[c-24>>2]=b;ja(b)}b=F[c-40>>2];if(b){F[c-36>>2]=b;ja(b)}Gb(c-140|0);c=e;if((d|0)!=(c|0)){continue}break}}F[a+4>>2]=d}function Xg(a){a=a|0;var b=0;F[a>>2]=9136;b=F[a+88>>2];if(b){F[a+92>>2]=b;ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+60>>2];if(b){F[a- -64>>2]=b;ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Za(a){var b=0;if(a){b=F[a+76>>2];if(b){F[a+80>>2]=b;ja(b)}b=F[a- -64>>2];if(b){F[a+68>>2]=b;ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}b=F[a+24>>2];if(b){F[a+28>>2]=b;ja(b)}b=F[a+12>>2];if(b){F[a+16>>2]=b;ja(b)}b=F[a>>2];if(b){F[a+4>>2]=b;ja(b)}ja(a)}}function Gb(a){var b=0;b=F[a+84>>2];if(b){F[a+88>>2]=b;ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+52>>2];if(b){F[a+56>>2]=b;ja(b)}b=F[a+40>>2];if(b){F[a+44>>2]=b;ja(b)}b=F[a+28>>2];if(b){F[a+32>>2]=b;ja(b)}b=F[a+12>>2];if(b){ja(b)}a=F[a>>2];if(a){ja(a)}}function Lc(a,b,c){var d=0,e=0,f=0,g=0;f=Z-16|0;Z=f;d=Z-16|0;Z=d;b=b-a>>2;while(1){if(b){F[d+12>>2]=a;e=b>>>1|0;F[d+12>>2]=F[d+12>>2]+(e<<2);g=(e^-1)+b|0;b=e;e=I[F[d+12>>2]>>2]>2];b=e?g:b;a=e?F[d+12>>2]+4|0:a;continue}break}Z=d+16|0;Z=f+16|0;return a}function id(a,b){var c=0,d=0;d=ka(40);F[d>>2]=-1;c=d+8|0;F[c+16>>2]=0;F[c+20>>2]=0;F[c+8>>2]=0;F[c>>2]=0;F[c+4>>2]=0;F[c+24>>2]=0;F[c+28>>2]=0;$[F[F[a>>2]+16>>2]](a,d);a=F[b+88>>2];F[b+88>>2]=d;if(a){b=F[a+8>>2];if(b){F[a+12>>2]=b;ja(b)}ja(a)}return 1}function ya(a){var b=0,c=0,d=0;b=a;a:{if(b&3){while(1){if(!G[b|0]){break a}b=b+1|0;if(b&3){continue}break}}while(1){c=b;b=b+4|0;d=F[c>>2];if(!((d^-1)&d-16843009&-2139062144)){continue}break}while(1){b=c;c=b+1|0;if(G[b|0]){continue}break}}return b-a|0}function wa(a){var b=0,c=0,d=0,e=0,f=0;d=G[a+12|0];c=F[a+8>>2];a:{if(c>>>0>4095){break a}b=F[a+4>>2];if((b|0)<=0){break a}b=b-1|0;F[a+4>>2]=b;c=G[b+F[a>>2]|0]|c<<8}d=0-d&255;b=L(d,c>>>8|0);e=c&255;f=e>>>0>>0;F[a+8>>2]=f?b+e|0:c-(b+d|0)|0;return f}function yc(a,b){F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1776;F[a+12>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;F[a+40>>2]=0;F[a>>2]=2016;F[a+60>>2]=b;F[a+44>>2]=0;F[a+48>>2]=0;F[a+52>>2]=0;F[a+56>>2]=0;return a}function Eb(a,b){var c=0,d=0,e=0;c=ya(b);if(c>>>0<2147483632){a:{b:{if(c>>>0>=11){d=(c|15)+1|0;e=ka(d);F[a+8>>2]=d|-2147483648;F[a>>2]=e;F[a+4>>2]=c;d=c+e|0;break b}D[a+11|0]=c;d=a+c|0;e=a;if(!c){break a}}pa(e,b,c)}D[d|0]=0;return a}za();v()}function Of(a){a=a|0;var b=0,c=0,d=0;if(a){if(D[a+27|0]<0){ja(F[a+16>>2])}b=F[a>>2];if(b){c=b;d=F[a+4>>2];if((b|0)!=(d|0)){while(1){c=d-12|0;if(D[d-1|0]<0){ja(F[c>>2])}d=c;if((d|0)!=(b|0)){continue}break}c=F[a>>2]}F[a+4>>2]=b;ja(c)}ja(a)}}function xa(a){a=a|0;var b=0,c=0;if(a){b=F[a+88>>2];F[a+88>>2]=0;if(b){c=F[b+8>>2];if(c){F[b+12>>2]=c;ja(c)}ja(b)}b=F[a+68>>2];if(b){F[a+72>>2]=b;ja(b)}b=F[a+64>>2];F[a+64>>2]=0;if(b){c=F[b>>2];if(c){F[b+4>>2]=c;ja(c)}ja(b)}ja(a)}}function Ib(a,b){var c=0,d=0,e=0;a:{c=F[a>>2];b:{if(F[a+8>>2]-c>>2>>>0>=b>>>0){break b}if(b>>>0>=1073741824){break a}d=F[a+4>>2]-c|0;e=b<<2;b=pa(ka(e),c,d);F[a+8>>2]=b+e;F[a+4>>2]=b+d;F[a>>2]=b;if(!c){break b}ja(c)}return}na();v()}function Df(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=F[b+96>>2];a=ka(12);b=b+L(c,12)|0;c=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=c;F[a+8>>2]=F[b+8>>2];b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d>>2]=a;a=a+12|0;F[d+8>>2]=a;F[d+4>>2]=a;return 1}function Ah(a){a=a|0;var b=0;F[a+24>>2]=1624;F[a>>2]=7948;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}F[a>>2]=2136;b=F[a+20>>2];F[a+20>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}return a|0}function li(a,b,c,d){var e=0,f=0,g=0,h=0;f=b^d;g=f>>31;e=b>>31;a=a^e;h=a-e|0;e=(b^e)-((a>>>0>>0)+e|0)|0;a=d>>31;b=c^a;f=f>>31;a=mi(h,e,b-a|0,(a^d)-((a>>>0>b>>>0)+a|0)|0)^f;b=a-f|0;_=(g^_)-((a>>>0>>0)+g|0)|0;return b}function zh(a){a=a|0;var b=0;F[a+24>>2]=1624;F[a>>2]=7948;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}F[a>>2]=2136;b=F[a+20>>2];F[a+20>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}ja(a)}function rb(a,b,c){var d=0,e=0,f=0;e=Z-16|0;Z=e;d=F[a+8>>2]&2147483647;a:{if(d>>>0>c>>>0){d=F[a>>2];F[a+4>>2]=c;db(d,b,c);D[e+15|0]=0;D[c+d|0]=G[e+15|0];break a}f=a;a=F[a+4>>2];Gc(f,d-1|0,(c-d|0)+1|0,a,a,c,b)}Z=e+16|0}function xe(a,b){a=a|0;b=b|0;var c=0,d=0;c=Z-16|0;Z=c;a=F[a+4>>2];a:{if((a|0)==-1){break a}D[c+15|0]=a;d=F[b+20>>2];if(!!F[b+16>>2]&(d|0)>=0|(d|0)>0){break a}pb(b,F[b+4>>2],c+15|0,c+16|0)}Z=c+16|0;return(a|0)!=-1|0}function ki(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=L(e,f);g=c&65535;h=a&65535;i=L(g,h);f=(i>>>16|0)+L(f,g)|0;e=(f&65535)+L(e,h)|0;_=(L(b,c)+j|0)+L(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function qb(a,b,c){var d=0,e=0;d=Z-16|0;Z=d;a:{if(c>>>0<=10){D[a+11|0]=G[a+11|0]&128|c;D[a+11|0]=G[a+11|0]&127;db(a,b,c);D[d+15|0]=0;D[a+c|0]=G[d+15|0];break a}e=a;a=G[a+11|0]&127;Gc(e,10,c-10|0,a,a,c,b)}Z=d+16|0}function Ec(a,b,c){var d=0;d=F[a+16>>2];if(!d){F[a+36>>2]=1;F[a+24>>2]=c;F[a+16>>2]=b;return}a:{if((b|0)==(d|0)){if(F[a+24>>2]!=2){break a}F[a+24>>2]=c;return}D[a+54|0]=1;F[a+24>>2]=2;F[a+36>>2]=F[a+36>>2]+1}}function vg(){var a=0;a=kb(ka(96));F[a+64>>2]=0;F[a+68>>2]=0;F[a+88>>2]=0;F[a+72>>2]=0;F[a+76>>2]=0;D[a+77|0]=0;D[a+78|0]=0;D[a+79|0]=0;D[a+80|0]=0;D[a+81|0]=0;D[a+82|0]=0;D[a+83|0]=0;D[a+84|0]=0;return a|0}function jh(a,b){a=a|0;b=b|0;var c=0,d=0;F[b>>2]=2;c=F[b+8>>2];d=F[b+12>>2]-c|0;if(d>>>0<=4294967291){Db(b+8|0,d+4|0);c=F[b+8>>2]}b=c+d|0;a=F[a+4>>2];D[b|0]=a;D[b+1|0]=a>>>8;D[b+2|0]=a>>>16;D[b+3|0]=a>>>24}function ge(a){a=a|0;var b=0;F[a>>2]=3016;b=F[a+96>>2];if(b){ja(b)}b=F[a+84>>2];if(b){ja(b)}b=F[a+72>>2];if(b){ja(b)}b=F[a+60>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function ci(a){a=a|0;var b=0;F[a>>2]=4580;b=F[a+96>>2];if(b){ja(b)}b=F[a+84>>2];if(b){ja(b)}b=F[a+72>>2];if(b){ja(b)}b=F[a+60>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function Cg(a){a=a|0;var b=0,c=0,d=0;b=F[a+8>>2];d=F[a+12>>2];if((b|0)==(d|0)){return 1}while(1){c=F[b>>2];c=$[F[F[c>>2]+16>>2]](c,F[a+32>>2])|0;if(c){b=b+4|0;if((d|0)!=(b|0)){continue}}break}return c|0}function Pc(a,b){var c=0,d=0;c=F[a+8>>2];a=F[a+12>>2];if((c|0)!=(a|0)){a=a-c>>2;d=a>>>0<=1?1:a;a=0;while(1){if(F[F[(a<<2)+c>>2]+60>>2]==(b|0)){return a}a=a+1|0;if((d|0)!=(a|0)){continue}break}}return-1}function fe(a){a=a|0;var b=0;F[a>>2]=3016;b=F[a+96>>2];if(b){ja(b)}b=F[a+84>>2];if(b){ja(b)}b=F[a+72>>2];if(b){ja(b)}b=F[a+60>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function bi(a){a=a|0;var b=0;F[a>>2]=4580;b=F[a+96>>2];if(b){ja(b)}b=F[a+84>>2];if(b){ja(b)}b=F[a+72>>2];if(b){ja(b)}b=F[a+60>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function Sc(a,b,c){var d=0,e=0;d=a+4|0;a=Ya(a,b);a:{if((d|0)==(a|0)){break a}b=F[a+32>>2];d=F[a+28>>2];if((b|0)==(d|0)){break a}Sb(c,b-d|0);c=Tb(c);b=F[a+28>>2];la(c,b,F[a+32>>2]-b|0);e=1}return e}function Kd(a){F[a+40>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=10032;F[a+12>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+32>>2]=0;E[a+36>>1]=0;F[a+44>>2]=0;F[a>>2]=8080;return a}function kb(a){F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+40>>2]=0;F[a+44>>2]=0;F[a+28>>2]=9;D[a+24|0]=1;F[a+56>>2]=-1;F[a+60>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+48>>2]=0;F[a+52>>2]=0;return a}function pe(a,b){a=a|0;b=b|0;var c=0,d=0;d=F[a+16>>2];c=0;a:{if(F[a+20>>2]-d>>2<=(b|0)){break a}b=F[(b<<2)+d>>2];c=0;if((b|0)<0){break a}c=bb(F[F[a+36>>2]+(b<<2)>>2])}return c|0}function Nf(){var a=0,b=0;a=ka(40);F[a+4>>2]=0;F[a+8>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;b=a+16|0;F[b>>2]=0;F[b+4>>2]=0;F[a>>2]=a+4;F[a+12>>2]=b;F[a+32>>2]=0;F[a+36>>2]=0;return a|0}function Xe(a,b){a=a|0;b=b|0;var c=0,d=0;Nc(a,b);a:{if((b|0)<0){break a}d=F[a+88>>2];c=F[a+84>>2];if(d-c>>2<=(b|0)){break a}c=(b<<2)+c|0;b=c+4|0;pa(c,b,d-b|0);F[a+88>>2]=d-4}}function eb(a){var b=0,c=0;b=F[2909];c=a+7&-8;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>aa()<<16>>>0){if(!(X(a|0)|0)){break a}}F[2909]=a;return b}F[2940]=48;return-1}function Th(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;F[a+4>>2]=b;b=F[F[F[b+4>>2]+8>>2]+(c<<2)>>2];F[a+12>>2]=c;F[a+8>>2]=b;a=F[a+8>>2];if(G[a+24|0]==3){d=F[a+28>>2]==9}return d|0}function Tg(a){a=a|0;var b=0;F[a+8>>2]=9556;F[a>>2]=9392;b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=9372;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}return a|0}function Ng(a){a=a|0;var b=0;F[a+8>>2]=8624;F[a>>2]=9684;b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=8876;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}return a|0}function Ee(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=F[a+8>>2];a:{if(!G[d+24|0]){break a}if(!ac(d,F[b+4>>2]-F[b>>2]>>2)){break a}e=$[F[F[a>>2]+32>>2]](a,b,c)|0}return e|0}function Fh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;F[a+4>>2]=b;d=F[F[F[b+4>>2]+8>>2]+(c<<2)>>2];F[a+12>>2]=c;F[a+8>>2]=d;return F[F[F[F[b+4>>2]+8>>2]+(c<<2)>>2]+28>>2]==9|0}function Ca(a,b){if(b){Ca(a,F[b>>2]);Ca(a,F[b+4>>2]);a=F[b+28>>2];F[b+28>>2]=0;if(a){Ca(a+12|0,F[a+16>>2]);Ba(a,F[a+4>>2]);ja(a)}if(D[b+27|0]<0){ja(F[b+16>>2])}ja(b)}}function Sg(a){a=a|0;var b=0;F[a+8>>2]=9556;F[a>>2]=9392;b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=9372;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}ja(a)}function Mg(a){a=a|0;var b=0;F[a+8>>2]=8624;F[a>>2]=9684;b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=8876;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}ja(a)}function Hc(a,b){var c=0,d=0,e=0,f=0;F[a>>2]=11356;F[a>>2]=11468;c=ya(b);d=ka(c+13|0);F[d+8>>2]=0;F[d+4>>2]=c;F[d>>2]=c;e=a,f=la(d+12|0,b,c+1|0),F[e+4>>2]=f;return a}function hc(a,b,c){a:{if(b){b=0;if(!ld(1,c,a)){break a}}D[a+36|0]=1;F[a+32>>2]=0;b=F[a+16>>2];c=b+F[a>>2]|0;F[a+24>>2]=c;F[a+28>>2]=c+(F[a+8>>2]-b|0);b=1}return b}function Ue(a,b){a=a|0;b=b|0;var c=0;a:{if(!($[F[F[a>>2]+36>>2]](a,b)|0)){break a}if(!($[F[F[a>>2]+40>>2]](a,b)|0)){break a}c=$[F[F[a>>2]+44>>2]](a)|0}return c|0}function _d(a){a=a|0;var b=0;a:{if(!F[a- -64>>2]|!F[a+68>>2]|(!F[a+44>>2]|!F[a+48>>2])){break a}if(!F[a+52>>2]|!F[a+56>>2]){break a}b=F[a+92>>2]!=-1}return b|0}function ii(a,b){a=a|0;b=b|0;var c=0;b=F[b+88>>2];if(!(!b|F[b>>2]!=2)){c=a;a=F[b+8>>2];F[c+4>>2]=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);c=1}return c|0}function wc(a){a=a|0;var b=0;F[a>>2]=2136;b=F[a+20>>2];F[a+20>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}return a|0}function Ud(a){a=a|0;var b=0;a:{if(!F[a+48>>2]|!F[a+52>>2]|(!F[a+28>>2]|!F[a+32>>2])){break a}if(!F[a+36>>2]|!F[a+40>>2]){break a}b=F[a+76>>2]!=-1}return b|0}function Ug(a){a=a|0;var b=0;F[a>>2]=9556;b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function Ed(a){a=a|0;var b=0;F[a>>2]=8624;b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=8876;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function vc(a){a=a|0;var b=0;F[a>>2]=2136;b=F[a+20>>2];F[a+20>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}ja(a)}function yg(){var a=0,b=0;b=ka(40);F[b>>2]=-1;a=b+8|0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;return b|0}function eh(a){a=a|0;var b=0;F[a>>2]=8624;b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=8876;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Og(a){a=a|0;var b=0;F[a>>2]=9556;b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Ja(a){F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+32>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;E[a+38>>1]=0;D[a+36|0]=0;return a}function Me(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(La(a,F[b+8>>2],f)){Dc(b,c,d,e);return}a=F[a+8>>2];$[F[F[a>>2]+20>>2]](a,b,c,d,e,f)}function Eh(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(G[F[a+4>>2]+36|0]>=2){b=0;if(!($[F[F[a>>2]+52>>2]](a)|0)){break a}}b=id(a+24|0,F[a+16>>2])}return b|0}function hg(){var a=0;a=Rc(ka(108));F[a+84>>2]=0;F[a+88>>2]=0;F[a>>2]=10240;F[a+92>>2]=0;F[a+96>>2]=0;F[a+100>>2]=0;F[a+104>>2]=0;return a|0}function Qc(a,b){var c=0;c=-1;a:{if((b|0)==-1|(b|0)>4){break a}b=L(b,12)+a|0;a=F[b+20>>2];if((F[b+24>>2]-a|0)<=0){break a}c=F[a>>2]}return c}function cc(a,b,c,d,e,f,g){F[a>>2]=0;F[a+56>>2]=b;F[a+48>>2]=0;F[a+52>>2]=0;F[a+40>>2]=f;F[a+44>>2]=g;D[a+32|0]=e;F[a+28>>2]=d;D[a+24|0]=c}function Sh(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(G[F[a+4>>2]+36|0]>=2){b=0;if(!uc(a+24|0,bb(a),c)){break a}}b=id(a+24|0,F[a+16>>2])}return b|0}function _e(a){a=a|0;var b=0;F[a>>2]=10240;b=F[a+96>>2];if(b){F[a+100>>2]=b;ja(b)}b=F[a+84>>2];if(b){F[a+88>>2]=b;ja(b)}return tb(a)|0}function Tb(a){var b=0;if(G[a+11|0]>>>7|0){b=F[a+4>>2]}else{b=G[a+11|0]&127}if(!b){sc(1222);v()}if(G[a+11|0]>>>7|0){a=F[a>>2]}return a}function Ze(a){a=a|0;var b=0;F[a>>2]=10240;b=F[a+96>>2];if(b){F[a+100>>2]=b;ja(b)}b=F[a+84>>2];if(b){F[a+88>>2]=b;ja(b)}ja(tb(a))}function ce(a){a=a|0;var b=0;F[a>>2]=3264;b=F[a+76>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function _h(a){a=a|0;var b=0;F[a>>2]=4816;b=F[a+76>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function Ba(a,b){if(b){Ba(a,F[b>>2]);Ba(a,F[b+4>>2]);a=F[b+28>>2];if(a){F[b+32>>2]=a;ja(a)}if(D[b+27|0]<0){ja(F[b+16>>2])}ja(b)}}function Wf(){var a=0;a=ka(28);F[a>>2]=0;F[a+4>>2]=0;F[a+24>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;return a|0}function We(a){a=a|0;var b=0;F[a>>2]=1776;b=F[a+16>>2];if(b){F[a+20>>2]=b;ja(b)}b=F[a+4>>2];if(b){F[a+8>>2]=b;ja(b)}return a|0}function fg(){var a=0,b=0;a=ka(24);F[a+4>>2]=0;F[a+8>>2]=0;b=a+16|0;F[b>>2]=0;F[b+4>>2]=0;F[a>>2]=a+4;F[a+12>>2]=b;return a|0}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(La(a,F[b+8>>2],0)){Ec(b,c,d);return}a=F[a+8>>2];$[F[F[a>>2]+28>>2]](a,b,c,d)}function be(a){a=a|0;var b=0;F[a>>2]=3264;b=F[a+76>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function Zh(a){a=a|0;var b=0;F[a>>2]=4816;b=F[a+76>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function ka(a){var b=0;a=a?a:1;a:{while(1){b=Ub(a);if(b){break a}b=F[3065];if(b){$[b|0]();continue}break}V();v()}return b}function ib(a,b){if(b){ib(a,F[b>>2]);ib(a,F[b+4>>2]);if(D[b+39|0]<0){ja(F[b+28>>2])}if(D[b+27|0]<0){ja(F[b+16>>2])}ja(b)}}function Cc(a){a=a|0;var b=0,c=0;F[a>>2]=11468;b=F[a+4>>2]-12|0;c=F[b+8>>2]-1|0;F[b+8>>2]=c;if((c|0)<0){ja(b)}return a|0}function ng(){var a=0;a=ka(24);F[a+8>>2]=0;F[a+12>>2]=0;F[a+4>>2]=-1;F[a>>2]=1624;F[a+16>>2]=0;F[a+20>>2]=0;return a|0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;F[a+4>>2]=b;b=F[F[F[b+4>>2]+8>>2]+(c<<2)>>2];F[a+12>>2]=c;F[a+8>>2]=b;return 1}function pc(a){a=a|0;var b=0;if(!(!F[a+60>>2]|!F[a+44>>2]|(!F[a+48>>2]|!F[a+52>>2]))){b=F[a+56>>2]!=0}return b|0}function Ic(a,b){if(G[a+11|0]>>>7|0){F[a+4>>2]=b;return}D[a+11|0]=G[a+11|0]&128|b;D[a+11|0]=G[a+11|0]&127}function gi(a){a=a|0;var b=0;F[a>>2]=3500;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function Xh(a){a=a|0;var b=0;F[a>>2]=5040;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function nf(a){a=a|0;if(a){if(D[a+39|0]<0){ja(F[a+28>>2])}$b(a+12|0,F[a+16>>2]);ib(a,F[a+4>>2]);ja(a)}}function dh(a){a=a|0;var b=0;F[a>>2]=8876;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function Wg(a){a=a|0;var b=0;F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function ob(a){a=a|0;var b=0;if(!(!F[a+52>>2]|(!F[a+44>>2]|!F[a+48>>2]))){b=F[a+56>>2]!=0}return b|0}function oc(a,b){a=a|0;b=b|0;var c=0;if(!(F[b+56>>2]|!b|G[b+24|0]!=3)){F[a+60>>2]=b;c=1}return c|0}function fi(a){a=a|0;var b=0;F[a>>2]=3500;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function Wh(a){a=a|0;var b=0;F[a>>2]=5040;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function zg(a,b,c){a=a|0;b=b|0;c=c|0;F[a+16>>2]=0;F[a+20>>2]=0;F[a>>2]=b;F[a+8>>2]=c;F[a+12>>2]=0}function ch(a){a=a|0;var b=0;F[a>>2]=8876;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Zd(a,b){a=a|0;b=b|0;var c=0;if(!(F[b+56>>2]|G[b+24|0]!=3)){F[a- -64>>2]=b;c=1}return c|0}function Vg(a){a=a|0;var b=0;F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Td(a,b){a=a|0;b=b|0;var c=0;if(!(F[b+56>>2]|G[b+24|0]!=3)){F[a+48>>2]=b;c=1}return c|0}function Le(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(La(a,F[b+8>>2],f)){Dc(b,c,d,e)}}function oa(){var a=0;a=Rb(4);F[a>>2]=11356;F[a>>2]=11316;F[a>>2]=11336;W(a|0,11448,14);v()}function je(a){a=a|0;var b=0;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function Ae(a){a=a|0;var b=0;F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}return a|0}function Pg(a){a=a|0;var b=0;F[a>>2]=1624;b=F[a+8>>2];if(b){F[a+12>>2]=b;ja(b)}return a|0}function Ch(a){a=a|0;var b=0;b=bb(a);return qd(a+24|0,b?b:F[a+8>>2],F[F[a+4>>2]+32>>2])|0}function ze(a){a=a|0;var b=0;F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}ja(a)}function Ob(a){a=a|0;var b=0;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function Hg(a){a=a|0;var b=0;F[a>>2]=1624;b=F[a+8>>2];if(b){F[a+12>>2]=b;ja(b)}ja(a)}function oe(a,b){a=a|0;b=b|0;return $[F[F[a>>2]+48>>2]](a,F[b+4>>2]-F[b>>2]>>2)|0}function $b(a,b){if(b){$b(a,F[b>>2]);$b(a,F[b+4>>2]);ib(b+20|0,F[b+24>>2]);ja(b)}}function xg(a){a=a|0;var b=0;if(a){b=F[a+8>>2];if(b){F[a+12>>2]=b;ja(b)}ja(a)}}function xh(a){a=a|0;if(!F[a+44>>2]){return 0}return $[F[F[a>>2]+48>>2]](a)|0}function ni(a){var b=0;while(1){if(a){a=a-1&a;b=b+1|0;continue}break}return b}function Qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(La(a,F[b+8>>2],0)){Ec(b,c,d)}}function vh(a,b){a=a|0;b=b|0;a=F[a+48>>2];return $[F[F[a>>2]+20>>2]](a,b)|0}function oi(a){var b=0;b=a&31;a=0-a&31;return(-1>>>b&-2)<>>a} -function oh(a,b){a=a|0;b=b|0;a=F[a+48>>2];return $[F[F[a>>2]+12>>2]](a,b)|0}function nh(a,b){a=a|0;b=b|0;a=F[a+48>>2];return $[F[F[a>>2]+16>>2]](a,b)|0}function Xa(){var a=0;a=ka(12);F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;return a|0}function Wa(a){a=a|0;var b=0;if(a){b=F[a>>2];if(b){F[a+4>>2]=b;ja(b)}ja(a)}}function mf(a,b,c){a=a|0;b=b|0;c=c|0;F[a+32>>2]=c;F[a+28>>2]=b;return 1}function eg(a){a=a|0;if(a){Ca(a+12|0,F[a+16>>2]);Ba(a,F[a+4>>2]);ja(a)}}function Lb(a,b){a=a|0;b=b|0;if(b>>>0<=1){F[a+28>>2]=b}return b>>>0<2|0}function Fg(a,b){a=a|0;b=b|0;D[b+84|0]=1;F[b+72>>2]=F[b+68>>2];return 1}function kg(){var a=0;a=ka(8);F[a+4>>2]=-1;F[a>>2]=1032;return a|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;return F[F[b+8>>2]+(c<<2)>>2]}function th(a){a=a|0;a=F[a+48>>2];return $[F[F[a>>2]+24>>2]](a)|0}function sh(a){a=a|0;a=F[a+48>>2];return $[F[F[a>>2]+28>>2]](a)|0}function ph(a){a=a|0;a=F[a+48>>2];return $[F[F[a>>2]+36>>2]](a)|0}function Rh(a,b){a=a|0;b=b|0;return zc(a+24|0,bb(a),F[a+8>>2])|0}function Bh(a,b){a=a|0;b=b|0;return xd(a+24|0,bb(a),F[a+8>>2])|0}function bg(a){a=a|0;if(a){if(D[a+15|0]<0){ja(F[a+4>>2])}ja(a)}}function Ke(a){a=a|0;if(!a){return 0}return(Fc(a,11164)|0)!=0|0}function Fe(a,b){a=a|0;b=b|0;F[a+12>>2]=-1;F[a+8>>2]=b;return 1}function hd(a,b){a=a|0;b=b|0;return $[F[F[a>>2]+12>>2]](a,b)|0}function Dh(a,b){a=a|0;b=b|0;return $[F[F[a>>2]+56>>2]](a,b)|0}function sc(a){a=Hc(Rb(8),a);F[a>>2]=11568;W(a|0,11600,1);v()}function mg(a,b){a=a|0;b=b|0;return M(J[F[a+8>>2]+(b<<2)>>2])}function Rd(a){a=Hc(Rb(8),a);F[a>>2]=11516;W(a|0,11548,1);v()}function $f(a,b){a=a|0;b=b|0;return M(J[F[a>>2]+(b<<2)>>2])}function gg(a){a=a|0;return(F[a+100>>2]-F[a+96>>2]|0)/12|0}function cg(a){a=a|0;return(D[a+15|0]<0?F[a+4>>2]:a+4|0)|0}function Re(a,b){a=a|0;b=b|0;return F[F[a+4>>2]+(b<<2)>>2]}function dd(a,b){a=a|0;b=b|0;return F[F[a>>2]+(b<<2)>>2]}function Yf(a,b){a=a|0;b=b|0;return E[F[a>>2]+(b<<1)>>1]}function Xf(a,b){a=a|0;b=b|0;return H[F[a>>2]+(b<<1)>>1]}function Vd(a,b,c){a=a|0;b=b|0;c=c|0;return xc(a,b,c)|0}function sb(a,b){var c=0;c=ka(b);F[a+4>>2]=b;F[a>>2]=c}function Kf(a,b,c){a=a|0;b=b|0;c=c|0;return Qc(b,c)|0}function Rc(a){F[a>>2]=10300;ma(a+4|0,0,80);return a}function ji(a){if(a){return 31-O(a-1^a)|0}return 32}function gd(a){a=a|0;return F[a+12>>2]-F[a+8>>2]>>2}function _f(a,b){a=a|0;b=b|0;return D[F[a>>2]+b|0]}function Zf(a,b){a=a|0;b=b|0;return G[F[a>>2]+b|0]}function Ie(a){a=a|0;return F[a+8>>2]-F[a+4>>2]>>2}function wb(a){a=a|0;if(a){$[F[F[a>>2]+4>>2]](a)}}function Jd(a,b){a=a|0;b=b|0;F[a+4>>2]=b;return 1}function ed(a){a=a|0;return F[a+4>>2]-F[a>>2]>>1}function dc(a){a=a|0;return F[a+4>>2]-F[a>>2]>>2}function fd(a){a=a|0;return F[a+4>>2]-F[a>>2]|0}function ke(a){a=a|0;return G[F[a+8>>2]+24|0]}function Qf(a,b){a=a|0;b=b|0;return F[b+8>>2]}function Ff(a,b){a=a|0;b=b|0;return F[b+4>>2]}function De(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function Bg(a,b){a=a|0;b=b|0;return G[b+24|0]}function Oh(a){a=a|0;F[a>>2]=5928;return a|0}function Jh(a){a=a|0;F[a>>2]=6932;return a|0}function lg(a){a=a|0;return M(J[a+20>>2])}function Nh(a){a=a|0;F[a>>2]=5928;ja(a)}function Ih(a){a=a|0;F[a>>2]=6932;ja(a)}function ug(a){a=a|0;return F[a+88>>2]}function tg(a){a=a|0;return F[a+56>>2]}function qg(a){a=a|0;return F[a+40>>2]}function pg(a){a=a|0;return F[a+48>>2]}function og(a){a=a|0;return F[a+60>>2]}function ec(a){a=a|0;return F[a+80>>2]}function cb(a){a=a|0;return F[a+28>>2]}function vd(a){a=a|0;return F[a+8>>2]}function tc(a,b){a=a|0;b=b|0;return-1}function sg(a){a=a|0;return D[a+24|0]}function rg(a){a=a|0;return G[a+32|0]}function dg(a){a=a|0;return!F[a>>2]|0}function Wd(a,b){a=a|0;b=b|0;return 6}function Va(a){a=a|0;return F[a+4>>2]}function Rb(a){return Ub(a+80|0)+80|0}function Qh(a,b){a=a|0;b=b|0;return 2}function Ia(a,b){a=a|0;b=b|0;return 0}function Bc(a,b){a=a|0;b=b|0;return 1}function jd(a){a=a|0;return F[a>>2]}function wg(){return kb(ka(64))|0}function ig(){return Rc(ka(84))|0}function fc(a){a=a|0;if(a){ja(a)}}function Ag(){return Ja(ka(40))|0}function Qb(a){a=a|0;Cc(a);ja(a)}function Je(a){a=a|0;return 1161}function He(a){a=a|0;return 1235}function Ge(a){a=a|0;return 1201}function Pa(a){a=a|0;return a|0}function hh(a){a=a|0;ja(ud(a))}function gh(a){a=a|0;ja(sd(a))}function Ve(a){a=a|0;ja(tb(a))}function ua(a){a=a|0;return 1}function rc(a){a=a|0;return 4}function qc(a){a=a|0;return 5}function Xd(a){a=a|0;return 2}function Ua(a){a=a|0;return 0}function Nb(a){a=a|0;return 6}function Mh(a){a=a|0;return 3}function za(){Rd(1222);v()}function ta(){sc(1154);v()}function na(){Rd(1154);v()}function Ha(a){a=a|0;ja(a)}function Ra(a){a=a|0;v()}function ff(){return 10}function ef(){return 11}function df(){return 12}function vb(){return-1}function ub(){return 1}function lf(){return 5}function kf(){return 6}function jf(){return 7}function jb(){return 0}function hf(){return 8}function gf(){return 9}function cf(){return-2}function bf(){return-3}function bd(){return 3}function af(){return-4}function ad(){return 4}function _b(){return 2}function $e(){return-5}function Te(){V();v()}function Jc(a){a=a|0}function ae(){} -// EMSCRIPTEN_END_FUNCS -e=G;p(q);var $=c([null,Cc,Pa,Ha,Xd,ii,jh,ag,zc,xe,uc,jg,Wd,Qh,Pa,Pg,Hg,ua,yh,mh,kh,xd,fh,qd,Wd,Bg,We,Ra,mf,$c,Ue,Re,Ie,cb,Ia,Te,Bc,ua,Ae,ze,Ac,Fe,Ee,De,Bc,Ce,Be,re,qe,ye,we,pe,ve,ue,te,se,wc,vc,Ac,oe,ne,xc,me,ke,le,je,Ob,ua,Va,ob,Ua,tc,Ia,Ua,ua,ie,he,Ra,Ra,ge,fe,rc,ob,ee,de,ce,be,qc,pc,ua,Ia,oc,$d,hi,gi,fi,Nb,_d,ua,Ia,Zd,Yd,ei,Pa,Ha,Lb,cb,Mb,Ra,Ob,ua,ob,di,Ra,ci,bi,rc,ob,ai,$h,_h,Zh,qc,pc,ua,Ia,oc,$d,Yh,Xh,Wh,Nb,_d,ua,Ia,Zd,Yd,Vh,Pa,Ha,Lb,cb,Kb,Ra,Ob,Ua,ua,Uh,wc,vc,Th,Sh,Vd,Ph,Xd,Rh,Oh,Nh,Nb,Va,Ud,ua,Ia,Td,ua,Mh,Sd,Lh,Pa,Ha,Lb,cb,Mb,Jh,Ih,Nb,Ud,ua,Ia,Td,Sd,Hh,Pa,Ha,Lb,cb,Kb,Pa,Ha,Ua,ua,Ua,tc,Ia,Kh,Gh,Ah,zh,Fh,Eh,Vd,Dh,Ch,Bh,wh,Ra,ua,ua,xh,Dg,Cg,ua,Ua,Ia,Ia,rh,qh,uh,vh,sh,ph,oh,nh,th,ud,hh,Jd,Id,Hd,Gd,lh,ua,Va,vd,sd,gh,Jd,Id,Hd,Gd,ih,ua,Va,vd,Ed,eh,Fd,dh,ch,$g,_g,Zg,Yg,ah,Xg,bh,Wg,Vg,Tg,Sg,Rg,Qg,Ug,Og,Ng,Mg,Lg,Kg,Gg,Ig,Jg,Pa,Ha,Fg,Eg,Ra,Ua,ua,_e,Ze,Ye,Xe,tb,Ve,Oc,Nc,Pa,Ha,Jc,Jc,Se,Le,Ne,Qe,Ha,Me,Oe,Pe,Ha,He,Ha,Ge,Ha,Je,Qb,Va,Qb,Qb]);function aa(){return C.byteLength/65536|0}function fa(ga){ga=ga|0;var ba=aa()|0;var ca=ba+ga|0;if(ba=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536})}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}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 initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}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)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}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()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="draco_decoder_gltf.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmTable=Module["asm"]["g"];addOnInit(Module["asm"]["f"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}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}var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret},copy:function(array,view,offset){offset>>>=0;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offset>>>=1;break;case 4:offset>>>=2;break;case 8:offset>>>=3;break}for(var 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 diff --git a/three/addons/libs/draco/gltf/draco_encoder.js b/three/addons/libs/draco/gltf/draco_encoder.js deleted file mode 100644 index a67cdf2..0000000 --- a/three/addons/libs/draco/gltf/draco_encoder.js +++ /dev/null @@ -1,33 +0,0 @@ -var DracoEncoderModule = function(DracoEncoderModule) { - DracoEncoderModule = DracoEncoderModule || {}; - -var Module=typeof DracoEncoderModule!=="undefined"?DracoEncoderModule:{};var isRuntimeInitialized=false;var isModuleParsed=false;Module["onRuntimeInitialized"]=(function(){isRuntimeInitialized=true;if(isModuleParsed){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});Module["onModuleParsed"]=(function(){isModuleParsed=true;if(isRuntimeInitialized){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});function isVersionSupported(versionString){if(typeof versionString!=="string")return false;const version=versionString.split(".");if(version.length<2||version.length>3)return false;if(version[0]==1&&version[1]>=0&&version[1]<=3)return true;if(version[0]!=0||version[1]>10)return false;return true}Module["isVersionSupported"]=isVersionSupported;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("Module['ENVIRONMENT'] value is not valid. must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;ret=tryParseAsDataURI(filename);if(!ret){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename)}return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){process["exit"](1)}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}Module["readBinary"]=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}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}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}Module["readAsync"]=function readAsync(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);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}Module["print"]=typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null;Module["printErr"]=typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||Module["print"];Module.print=Module["print"];Module.printErr=Module["printErr"];for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){assert(DYNAMICTOP_PTR);var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(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 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;Module.printErr(text)}}var jsCallStartIndex=1;var functionPointers=new Array(0);var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var GLOBAL_BASE=8;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(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)}}var ALLOC_STATIC=2;var ALLOC_NONE=4;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=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;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 UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{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)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}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}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}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}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(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()}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){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)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();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;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["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)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}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_round=Math.round;var Math_min=Math.min;var Math_max=Math.max;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}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["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+19728;__ATINIT__.push();memoryInitializer="data:application/octet-stream;base64,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bAAAABIAAAACAAAAAgAAAAIAAAAAAAAASAQAAG4AAABvAAAAfAAAAAAAAABYBAAAbgAAAHAAAAB8AAAATjVkcmFjbzI4QXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybUUATjVkcmFjbzE4QXR0cmlidXRlVHJhbnNmb3JtRQBONWRyYWNvMzBBdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1FAE41ZHJhY28xN0F0dHJpYnV0ZXNFbmNvZGVyRQBONWRyYWNvMjNLZFRyZWVBdHRyaWJ1dGVzRW5jb2RlckUATjVkcmFjbzI2U2VxdWVudGlhbEF0dHJpYnV0ZUVuY29kZXJFAE41ZHJhY28zN1NlcXVlbnRpYWxBdHRyaWJ1dGVFbmNvZGVyc0NvbnRyb2xsZXJFAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFRUUATjVkcmFjbzIzUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFRUUATjVkcmFjbzM3UHJlZGljdGlvblNjaGVtZVR5cGVkRW5jb2RlckludGVyZmFjZUlpaUVFAE41ZHJhY28zMlByZWRpY3Rpb25TY2hlbWVFbmNvZGVySW50ZXJmYWNlRQBONWRyYWNvMjVQcmVkaWN0aW9uU2NoZW1lSW50ZXJmYWNlRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQyTWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280NE1lc2hQcmVkaWN0aW9uU2NoZW1lVGV4Q29vcmRzUG9ydGFibGVFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMzZNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc0VuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY281Nk1lc2hQcmVkaWN0aW9uU2NoZW1lQ29uc3RyYWluZWRNdWx0aVBhcmFsbGVsb2dyYW1FbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDVNZXNoUHJlZGljdGlvblNjaGVtZU11bHRpUGFyYWxsZWxvZ3JhbUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280ME1lc2hQcmVkaWN0aW9uU2NoZW1lUGFyYWxsZWxvZ3JhbUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQXJlYUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280OE1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsUHJlZGljdG9yQmFzZUlpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRW5jb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY28yN01lc2hQcmVkaWN0aW9uU2NoZW1lRW5jb2RlcklpTlNfMzdQcmVkaWN0aW9uU2NoZW1lV3JhcEVuY29kaW5nVHJhbnNmb3JtSWlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280NE1lc2hQcmVkaWN0aW9uU2NoZW1lVGV4Q29vcmRzUG9ydGFibGVFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzM2TWVzaFByZWRpY3Rpb25TY2hlbWVUZXhDb29yZHNFbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzU2TWVzaFByZWRpY3Rpb25TY2hlbWVDb25zdHJhaW5lZE11bHRpUGFyYWxsZWxvZ3JhbUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDVNZXNoUHJlZGljdGlvblNjaGVtZU11bHRpUGFyYWxsZWxvZ3JhbUVuY29kZXJJaU5TXzM3UHJlZGljdGlvblNjaGVtZVdyYXBFbmNvZGluZ1RyYW5zZm9ybUlpaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDBNZXNoUHJlZGljdGlvblNjaGVtZVBhcmFsbGVsb2dyYW1FbmNvZGVySWlOU18zN1ByZWRpY3Rpb25TY2hlbWVXcmFwRW5jb2RpbmdUcmFuc2Zvcm1JaWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUAdXNlX2J1aWx0X2luX2F0dHJpYnV0ZV9jb21wcmVzc2lvbgBONWRyYWNvMzNTZXF1ZW50aWFsSW50ZWdlckF0dHJpYnV0ZUVuY29kZXJFAE41ZHJhY28yOFByZWRpY3Rpb25TY2hlbWVEZWx0YUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFRUUATjVkcmFjbzIzUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFRUUATjVkcmFjbzQ4TWVzaFByZWRpY3Rpb25TY2hlbWVHZW9tZXRyaWNOb3JtYWxQcmVkaWN0b3JBcmVhSWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckJhc2VJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMTFDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY280Mk1lc2hQcmVkaWN0aW9uU2NoZW1lR2VvbWV0cmljTm9ybWFsRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzI3TWVzaFByZWRpY3Rpb25TY2hlbWVFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDRNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc1BvcnRhYmxlRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzM2TWVzaFByZWRpY3Rpb25TY2hlbWVUZXhDb29yZHNFbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNTZNZXNoUHJlZGljdGlvblNjaGVtZUNvbnN0cmFpbmVkTXVsdGlQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18xMUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ1TWVzaFByZWRpY3Rpb25TY2hlbWVNdWx0aVBhcmFsbGVsb2dyYW1FbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDBNZXNoUHJlZGljdGlvblNjaGVtZVBhcmFsbGVsb2dyYW1FbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzExQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckFyZWFJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDhNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbFByZWRpY3RvckJhc2VJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDJNZXNoUHJlZGljdGlvblNjaGVtZUdlb21ldHJpY05vcm1hbEVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvMjdNZXNoUHJlZGljdGlvblNjaGVtZUVuY29kZXJJaU5TXzYyUHJlZGljdGlvblNjaGVtZU5vcm1hbE9jdGFoZWRyb25DYW5vbmljYWxpemVkRW5jb2RpbmdUcmFuc2Zvcm1JaUVFTlNfMjRNZXNoUHJlZGljdGlvblNjaGVtZURhdGFJTlNfMjRNZXNoQXR0cmlidXRlQ29ybmVyVGFibGVFRUVFRQBONWRyYWNvNDRNZXNoUHJlZGljdGlvblNjaGVtZVRleENvb3Jkc1BvcnRhYmxlRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY28zNk1lc2hQcmVkaWN0aW9uU2NoZW1lVGV4Q29vcmRzRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY281Nk1lc2hQcmVkaWN0aW9uU2NoZW1lQ29uc3RyYWluZWRNdWx0aVBhcmFsbGVsb2dyYW1FbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQ1TWVzaFByZWRpY3Rpb25TY2hlbWVNdWx0aVBhcmFsbGVsb2dyYW1FbmNvZGVySWlOU182MlByZWRpY3Rpb25TY2hlbWVOb3JtYWxPY3RhaGVkcm9uQ2Fub25pY2FsaXplZEVuY29kaW5nVHJhbnNmb3JtSWlFRU5TXzI0TWVzaFByZWRpY3Rpb25TY2hlbWVEYXRhSU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFRUUATjVkcmFjbzQwTWVzaFByZWRpY3Rpb25TY2hlbWVQYXJhbGxlbG9ncmFtRW5jb2RlcklpTlNfNjJQcmVkaWN0aW9uU2NoZW1lTm9ybWFsT2N0YWhlZHJvbkNhbm9uaWNhbGl6ZWRFbmNvZGluZ1RyYW5zZm9ybUlpRUVOU18yNE1lc2hQcmVkaWN0aW9uU2NoZW1lRGF0YUlOU18yNE1lc2hBdHRyaWJ1dGVDb3JuZXJUYWJsZUVFRUVFAE41ZHJhY28zMlNlcXVlbnRpYWxOb3JtYWxBdHRyaWJ1dGVFbmNvZGVyRQBONWRyYWNvMzhTZXF1ZW50aWFsUXVhbnRpemF0aW9uQXR0cmlidXRlRW5jb2RlckUAcHJlZGljdGlvbl9zY2hlbWUAZW5jb2Rpbmdfc3BlZWQAZGVjb2Rpbmdfc3BlZWQAcXVhbnRpemF0aW9uX29yaWdpbgBxdWFudGl6YXRpb25fcmFuZ2UAIABlbmNvZGluZ19tZXRob2QAcXVhbnRpemF0aW9uX2JpdHMASW52YWxpZCBlbmNvZGluZyBtZXRob2QuAHN0YW5kYXJkX2VkZ2VicmVha2VyAHByZWRpY3RpdmVfZWRnZWJyZWFrZXIAZWRnZWJyZWFrZXJfbWV0aG9kAE41ZHJhY28yMk1lc2hFZGdlQnJlYWtlckVuY29kZXJFAE41ZHJhY28yOUNvcm5lclRhYmxlVHJhdmVyc2FsUHJvY2Vzc29ySU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFAE41ZHJhY28yMk1lc2hUcmF2ZXJzYWxTZXF1ZW5jZXJJTlNfMjBFZGdlQnJlYWtlclRyYXZlcnNlcklOU18yOUNvcm5lclRhYmxlVHJhdmVyc2FsUHJvY2Vzc29ySU5TXzI0TWVzaEF0dHJpYnV0ZUNvcm5lclRhYmxlRUVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzNfRUVOU18xOUVkZ2VCcmVha2VyT2JzZXJ2ZXJFRUVFRQBONWRyYWNvMTVQb2ludHNTZXF1ZW5jZXJFAE41ZHJhY28yOUNvcm5lclRhYmxlVHJhdmVyc2FsUHJvY2Vzc29ySU5TXzExQ29ybmVyVGFibGVFRUUATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18yMEVkZ2VCcmVha2VyVHJhdmVyc2VySU5TXzI5Q29ybmVyVGFibGVUcmF2ZXJzYWxQcm9jZXNzb3JJTlNfMTFDb3JuZXJUYWJsZUVFRU5TXzM2TWVzaEF0dHJpYnV0ZUluZGljZXNFbmNvZGluZ09ic2VydmVySVMzX0VFTlNfMTlFZGdlQnJlYWtlck9ic2VydmVyRUVFRUUATjVkcmFjbzIyTWVzaFRyYXZlcnNhbFNlcXVlbmNlcklOU18yNVByZWRpY3Rpb25EZWdyZWVUcmF2ZXJzZXJJTlNfMjlDb3JuZXJUYWJsZVRyYXZlcnNhbFByb2Nlc3NvcklOU18xMUNvcm5lclRhYmxlRUVFTlNfMzZNZXNoQXR0cmlidXRlSW5kaWNlc0VuY29kaW5nT2JzZXJ2ZXJJUzNfRUVFRUVFAHNwbGl0X21lc2hfb25fc2VhbXMATjVkcmFjbzI2TWVzaEVkZ2VCcmVha2VyRW5jb2RlckltcGxJTlNfMzFNZXNoRWRnZUJyZWFrZXJUcmF2ZXJzYWxFbmNvZGVyRUVFAE41ZHJhY28zNU1lc2hFZGdlQnJlYWtlckVuY29kZXJJbXBsSW50ZXJmYWNlRQBONWRyYWNvMjZNZXNoRWRnZUJyZWFrZXJFbmNvZGVySW1wbElOU18zOE1lc2hFZGdlQnJlYWtlclRyYXZlcnNhbFZhbGVuY2VFbmNvZGVyRUVFAE41ZHJhY28xMU1lc2hFbmNvZGVyRQBjb21wcmVzc19jb25uZWN0aXZpdHkATjVkcmFjbzE1TGluZWFyU2VxdWVuY2VyRQBONWRyYWNvMjFNZXNoU2VxdWVudGlhbEVuY29kZXJFAE41ZHJhY28xN1BvaW50Q2xvdWRFbmNvZGVyRQBJbnZhbGlkIGlucHV0IGdlb21ldHJ5LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBlbmNvZGVyLgBGYWlsZWQgdG8gZW5jb2RlIGludGVybmFsIGRhdGEuAEZhaWxlZCB0byBlbmNvZGUgZ2VvbWV0cnkgZGF0YS4ARmFpbGVkIHRvIGVuY29kZSBwb2ludCBhdHRyaWJ1dGVzLgBGYWlsZWQgdG8gZW5jb2RlIG1ldGFkYXRhLgBEUkFDTwBONWRyYWNvMjNQb2ludENsb3VkS2RUcmVlRW5jb2RlckUATjVkcmFjbzI3UG9pbnRDbG91ZFNlcXVlbnRpYWxFbmNvZGVyRQBzeW1ib2xfZW5jb2RpbmdfbWV0aG9kAHN5bWJvbF9lbmNvZGluZ19jb21wcmVzc2lvbl9sZXZlbABONWRyYWNvNE1lc2hFAGFsbG9jYXRvcjxUPjo6YWxsb2NhdGUoc2l6ZV90IG4pICduJyBleGNlZWRzIG1heGltdW0gc3VwcG9ydGVkIHNpemUATjVkcmFjbzEwUG9pbnRDbG91ZEUAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAETCQsLAAAJBgsAAAsABhEAAAAREREAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAANAAAABA0AAAAACQ4AAAAAAA4AAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAASEhIAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAKAAAAAAoAAAAACQsAAAAAAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAtKyAgIDBYMHgAKG51bGwpAC0wWCswWCAwWC0weCsweCAweABpbmYASU5GAE5BTgAwMTIzNDU2Nzg5QUJDREVGLgBUISIZDQECAxFLHAwQBAsdEh4naG5vcHFiIAUGDxMUFRoIFgcoJBcYCQoOGx8lI4OCfSYqKzw9Pj9DR0pNWFlaW1xdXl9gYWNkZWZnaWprbHJzdHl6e3wASWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AAGluZmluaXR5AG5hbgAlZAAlZgB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzOiAlcwB0ZXJtaW5hdGluZyB3aXRoICVzIGV4Y2VwdGlvbiBvZiB0eXBlICVzAHRlcm1pbmF0aW5nIHdpdGggJXMgZm9yZWlnbiBleGNlcHRpb24AdGVybWluYXRpbmcAdW5jYXVnaHQAU3Q5ZXhjZXB0aW9uAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAFN0OXR5cGVfaW5mbwBOMTBfX2N4eGFiaXYxMjBfX3NpX2NsYXNzX3R5cGVfaW5mb0UATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAHB0aHJlYWRfb25jZSBmYWlsdXJlIGluIF9fY3hhX2dldF9nbG9iYWxzX2Zhc3QoKQBjYW5ub3QgY3JlYXRlIHB0aHJlYWQga2V5IGZvciBfX2N4YV9nZXRfZ2xvYmFscygpAGNhbm5vdCB6ZXJvIG91dCB0aHJlYWQgdmFsdWUgZm9yIF9fY3hhX2dldF9nbG9iYWxzKCkAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAFN0MTFsb2dpY19lcnJvcgBTdDEybGVuZ3RoX2Vycm9yAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQ==";var tempDoublePtr=STATICTOP;STATICTOP+=16;function ___cxa_allocate_exception(size){return _malloc(size)}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&&!info.rethrown){if(info.destructor){Module["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 ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(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(setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___gxx_personality_v0(){}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>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 ___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;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 flush_NO_FILESYSTEM(){var fflush=Module["_fflush"];if(fflush)fflush(0);var printChar=___syscall146.printChar;if(!printChar)return;var buffers=___syscall146.buffers;if(buffers[1].length)printChar(1,10);if(buffers[2].length)printChar(2,10)}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffers){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;var ASSERTIONS=false;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}function intArrayToString(array){var ret=[];for(var i=0;i255){if(ASSERTIONS){assert(false,"Character code "+chr+" ("+String.fromCharCode(chr)+") at offset "+i+" not in 0x00-0xFF.")}chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}var decodeBase64=typeof atob==="function"?atob:(function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true} -// EMSCRIPTEN_START_FUNCS -function be(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;h=u;u=u+16|0;i=h+4|0;j=h;f[a+72>>2]=e;f[a+64>>2]=g;g=Lq(e>>>0>1073741823?-1:e<<2)|0;k=a+68|0;l=f[k>>2]|0;f[k>>2]=g;if(l|0)Mq(l);l=a+8|0;Mh(l,b,d,e);d=a+56|0;g=f[d>>2]|0;m=f[g+4>>2]|0;n=f[g>>2]|0;o=m-n|0;if((o|0)<=0){u=h;return 1}p=(o>>>2)+-1|0;o=a+16|0;q=a+32|0;r=a+12|0;s=a+28|0;t=a+20|0;v=a+24|0;if(m-n>>2>>>0>p>>>0){w=p;x=n}else{y=g;aq(y)}while(1){f[j>>2]=f[x+(w<<2)>>2];f[i>>2]=f[j>>2];Cc(a,i,b,w);g=X(w,e)|0;n=b+(g<<2)|0;p=c+(g<<2)|0;g=f[l>>2]|0;if((g|0)>0){m=0;z=f[k>>2]|0;A=g;while(1){if((A|0)>0){g=0;do{B=f[z+(g<<2)>>2]|0;C=f[o>>2]|0;if((B|0)>(C|0)){D=f[q>>2]|0;f[D+(g<<2)>>2]=C;E=D}else{D=f[r>>2]|0;C=f[q>>2]|0;f[C+(g<<2)>>2]=(B|0)<(D|0)?D:B;E=C}g=g+1|0}while((g|0)<(f[l>>2]|0));F=E}else F=f[q>>2]|0;g=(f[n+(m<<2)>>2]|0)-(f[F+(m<<2)>>2]|0)|0;C=p+(m<<2)|0;f[C>>2]=g;if((g|0)>=(f[s>>2]|0)){if((g|0)>(f[v>>2]|0)){G=g-(f[t>>2]|0)|0;H=21}}else{G=(f[t>>2]|0)+g|0;H=21}if((H|0)==21){H=0;f[C>>2]=G}m=m+1|0;A=f[l>>2]|0;if((m|0)>=(A|0))break;else z=F}}w=w+-1|0;if((w|0)<=-1){H=5;break}z=f[d>>2]|0;x=f[z>>2]|0;if((f[z+4>>2]|0)-x>>2>>>0<=w>>>0){y=z;H=6;break}}if((H|0)==5){u=h;return 1}else if((H|0)==6)aq(y);return 0}function ce(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;Uc(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Mf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function de(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;Vc(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Mf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function ee(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;Wc(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Mf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function fe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;Xc(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Mf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function ge(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;Yc(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=4194304;if(d){d=c;c=4194304;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<20)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Mf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function he(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;Zc(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=2097152;if(d){d=c;c=2097152;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<19)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Nf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function ie(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;_c(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=1048576;if(d){d=c;c=1048576;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<18)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Of(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function je(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=Oa,t=Oa,u=Oa,v=0,w=0,x=0,y=0,z=0;c=f[b>>2]|0;b=a+4|0;d=f[b>>2]|0;e=(d|0)==0;a:do if(!e){g=d+-1|0;h=(g&d|0)==0;if(!h)if(c>>>0>>0)i=c;else i=(c>>>0)%(d>>>0)|0;else i=g&c;j=f[(f[a>>2]|0)+(i<<2)>>2]|0;if(!j)k=i;else{if(h){h=j;while(1){l=f[h>>2]|0;if(!l){k=i;break a}m=f[l+4>>2]|0;if(!((m|0)==(c|0)|(m&g|0)==(i|0))){k=i;break a}if((f[l+8>>2]|0)==(c|0)){o=l;break}else h=l}p=o+12|0;return p|0}else q=j;while(1){h=f[q>>2]|0;if(!h){k=i;break a}g=f[h+4>>2]|0;if((g|0)!=(c|0)){if(g>>>0>>0)r=g;else r=(g>>>0)%(d>>>0)|0;if((r|0)!=(i|0)){k=i;break a}}if((f[h+8>>2]|0)==(c|0)){o=h;break}else q=h}p=o+12|0;return p|0}}else k=0;while(0);q=ln(16)|0;f[q+8>>2]=c;f[q+12>>2]=0;f[q+4>>2]=c;f[q>>2]=0;i=a+12|0;s=$(((f[i>>2]|0)+1|0)>>>0);t=$(d>>>0);u=$(n[a+16>>2]);do if(e|$(u*t)>>0<3|(d+-1&d|0)!=0)&1;j=~~$(W($(s/u)))>>>0;Hi(a,r>>>0>>0?j:r);r=f[b>>2]|0;j=r+-1|0;if(!(j&r)){v=r;w=j&c;break}if(c>>>0>>0){v=r;w=c}else{v=r;w=(c>>>0)%(r>>>0)|0}}else{v=d;w=k}while(0);k=(f[a>>2]|0)+(w<<2)|0;w=f[k>>2]|0;if(!w){d=a+8|0;f[q>>2]=f[d>>2];f[d>>2]=q;f[k>>2]=d;d=f[q>>2]|0;if(d|0){k=f[d+4>>2]|0;d=v+-1|0;if(d&v)if(k>>>0>>0)x=k;else x=(k>>>0)%(v>>>0)|0;else x=k&d;y=(f[a>>2]|0)+(x<<2)|0;z=30}}else{f[q>>2]=f[w>>2];y=w;z=30}if((z|0)==30)f[y>>2]=q;f[i>>2]=(f[i>>2]|0)+1;o=q;p=o+12|0;return p|0}function ke(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;$c(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=262144;if(d){d=c;c=262144;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<16)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Rf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function le(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;ad(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=131072;if(d){d=c;c=131072;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<15)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Sf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function me(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;bd(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=32768;if(d){d=c;c=32768;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<13)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}Uf(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function ne(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;cd(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}_f(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function oe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;dd(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}_f(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function pe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;ed(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}_f(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function qe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;fd(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}_f(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function re(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;gd(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}_f(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function se(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;hd(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}_f(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function te(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;id(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}_f(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function ue(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0;g=u;u=u+64|0;h=g+48|0;i=g;j=d+1|0;f[h>>2]=0;k=h+4|0;f[k>>2]=0;f[h+8>>2]=0;do if(j)if(j>>>0>536870911)aq(h);else{l=ln(j<<3)|0;f[h>>2]=l;m=l+(j<<3)|0;f[h+8>>2]=m;sj(l|0,0,(d<<3)+8|0)|0;f[k>>2]=m;n=l;o=m;break}else{n=0;o=0}while(0);d=(c|0)>0;if(d){j=0;do{m=n+(f[a+(j<<2)>>2]<<3)|0;l=m;p=Vn(f[l>>2]|0,f[l+4>>2]|0,1,0)|0;l=m;f[l>>2]=p;f[l+4>>2]=I;j=j+1|0}while((j|0)!=(c|0))}j=i+40|0;l=j;f[l>>2]=0;f[l+4>>2]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;f[i+16>>2]=0;f[i+20>>2]=0;jd(i,n,o-n>>3,e)|0;n=i+16|0;o=Tn(f[n>>2]|0,f[n+4>>2]|0,1)|0;n=(f[e+4>>2]|0)-(f[e>>2]|0)|0;l=j;f[l>>2]=n;f[l+4>>2]=0;l=Vn(o|0,I|0,39,0)|0;o=Yn(l|0,I|0,3)|0;l=Vn(o|0,I|0,8,0)|0;o=Vn(l|0,I|0,n|0,0)|0;Cl(e,o,I);o=i+24|0;f[o>>2]=(f[e>>2]|0)+(f[j>>2]|0);j=i+28|0;f[j>>2]=0;n=i+32|0;f[n>>2]=16384;if(d){d=c;c=16384;do{l=d;d=d+-1|0;p=f[a+(d<<2)>>2]|0;m=f[i>>2]|0;q=f[m+(p<<3)>>2]|0;r=q<<10;if(c>>>0>>0)s=c;else{t=c;while(1){v=f[o>>2]|0;w=f[j>>2]|0;f[j>>2]=w+1;b[v+w>>0]=t;w=(f[n>>2]|0)>>>8;f[n>>2]=w;if(w>>>0>>0){s=w;break}else t=w}}c=(((s>>>0)/(q>>>0)|0)<<12)+((s>>>0)%(q>>>0)|0)+(f[m+(p<<3)+4>>2]|0)|0;f[n>>2]=c}while((l|0)>1)}_f(i,e);e=f[i>>2]|0;if(e|0){c=i+4|0;i=f[c>>2]|0;if((i|0)!=(e|0))f[c>>2]=i+(~((i+-8-e|0)>>>3)<<3);Oq(e)}e=f[h>>2]|0;if(!e){u=g;return 1}h=f[k>>2]|0;if((h|0)!=(e|0))f[k>>2]=h+(~((h+-8-e|0)>>>3)<<3);Oq(e);u=g;return 1}function ve(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0;c=u;u=u+16|0;d=c+4|0;e=c;f[a+64>>2]=b;g=a+128|0;f[g>>2]=2;h=a+132|0;f[h>>2]=7;i=Qa[f[(f[b>>2]|0)+32>>2]&127](b)|0;b=a+88|0;f[b>>2]=i;j=a+104|0;k=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;i=a+108|0;l=f[i>>2]|0;m=f[j>>2]|0;n=l-m>>2;o=m;p=l;if(k>>>0<=n>>>0)if(k>>>0>>0?(q=o+(k<<2)|0,(q|0)!=(p|0)):0){o=p+(~((p+-4-q|0)>>>2)<<2)|0;f[i>>2]=o;r=o;s=m}else{r=l;s=m}else{Ci(j,k-n|0);r=f[i>>2]|0;s=f[j>>2]|0}if((r|0)!=(s|0)){s=0;do{r=f[b>>2]|0;f[e>>2]=s;f[d>>2]=f[e>>2];n=hh(r,d)|0;r=f[j>>2]|0;f[r+(s<<2)>>2]=n;s=s+1|0}while(s>>>0<(f[i>>2]|0)-r>>2>>>0)}i=a+92|0;s=f[b>>2]|0;j=f[s>>2]|0;d=(f[s+4>>2]|0)-j>>2;e=a+96|0;r=f[e>>2]|0;n=f[i>>2]|0;k=r-n>>2;m=n;n=r;if(d>>>0<=k>>>0)if(d>>>0>>0?(r=m+(d<<2)|0,(r|0)!=(n|0)):0){f[e>>2]=n+(~((n+-4-r|0)>>>2)<<2);t=s;v=j}else{t=s;v=j}else{Ci(i,d-k|0);k=f[b>>2]|0;t=k;v=f[k>>2]|0}k=f[t+4>>2]|0;if((k|0)!=(v|0)){v=f[i>>2]|0;i=f[t>>2]|0;t=k-i>>2;k=0;do{f[v+(k<<2)>>2]=f[i+(k<<2)>>2];k=k+1|0}while(k>>>0>>0)}t=(f[h>>2]|0)-(f[g>>2]|0)+1|0;g=a+136|0;h=a+140|0;a=f[h>>2]|0;k=f[g>>2]|0;i=(a-k|0)/12|0;v=a;if(t>>>0>i>>>0){Kf(g,t-i|0);u=c;return 1}if(t>>>0>=i>>>0){u=c;return 1}i=k+(t*12|0)|0;if((i|0)==(v|0)){u=c;return 1}else w=v;while(1){v=w+-12|0;f[h>>2]=v;t=f[v>>2]|0;if(!t)x=v;else{v=w+-8|0;k=f[v>>2]|0;if((k|0)!=(t|0))f[v>>2]=k+(~((k+-4-t|0)>>>2)<<2);Oq(t);x=f[h>>2]|0}if((x|0)==(i|0))break;else w=x}u=c;return 1}function we(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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;e=f[b>>2]|0;g=f[b+4>>2]|0;h=((f[c>>2]|0)-e<<3)+(f[c+4>>2]|0)-g|0;c=e;if((h|0)<=0){i=d+4|0;j=f[d>>2]|0;f[a>>2]=j;k=a+4|0;l=f[i>>2]|0;f[k>>2]=l;return}if(!g){e=d+4|0;m=h;n=e;o=f[e>>2]|0;p=c}else{e=32-g|0;q=(h|0)<(e|0)?h:e;r=-1>>>(e-q|0)&-1<>2];e=d+4|0;s=f[e>>2]|0;t=32-s|0;u=t>>>0>>0?t:q;v=f[d>>2]|0;w=f[v>>2]&~(-1>>>(t-u|0)&-1<>2]=w;s=f[e>>2]|0;f[v>>2]=(s>>>0>g>>>0?r<>>(g-s|0))|w;w=(f[e>>2]|0)+u|0;s=v+(w>>>5<<2)|0;f[d>>2]=s;v=w&31;f[e>>2]=v;w=q-u|0;if((w|0)>0){f[s>>2]=f[s>>2]&~(-1>>>(32-w|0))|r>>>(g+u|0);f[e>>2]=w;x=w}else x=v;v=c+4|0;f[b>>2]=v;m=h-q|0;n=e;o=x;p=v}v=32-o|0;x=-1<31){o=~x;e=f[d>>2]|0;q=~m;h=m+((q|0)>-64?q:-64)+32|0;q=(h>>>5)+1|0;c=m+-32-(h&-32)|0;h=m;w=p;u=f[e>>2]|0;g=e;while(1){r=f[w>>2]|0;s=u&o;f[g>>2]=s;f[g>>2]=s|r<>2];g=g+4|0;u=f[g>>2]&x|r>>>v;f[g>>2]=u;if((h|0)<=63)break;else{h=h+-32|0;w=w+4|0}}w=p+(q<<2)|0;f[b>>2]=w;f[d>>2]=e+(q<<2);y=c;z=w}else{y=m;z=p}if((y|0)<=0){i=n;j=f[d>>2]|0;f[a>>2]=j;k=a+4|0;l=f[i>>2]|0;f[k>>2]=l;return}p=f[z>>2]&-1>>>(32-y|0);z=(v|0)<(y|0)?v:y;m=f[d>>2]|0;w=f[m>>2]&~(-1<>2]&-1>>>(v-z|0));f[m>>2]=w;f[m>>2]=w|p<>2];w=(f[n>>2]|0)+z|0;v=m+(w>>>5<<2)|0;f[d>>2]=v;f[n>>2]=w&31;w=y-z|0;if((w|0)<=0){i=n;j=f[d>>2]|0;f[a>>2]=j;k=a+4|0;l=f[i>>2]|0;f[k>>2]=l;return}f[v>>2]=f[v>>2]&~(-1>>>(32-w|0))|p>>>z;f[n>>2]=w;i=n;j=f[d>>2]|0;f[a>>2]=j;k=a+4|0;l=f[i>>2]|0;f[k>>2]=l;return}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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;e=f[b>>2]|0;g=b+4|0;h=f[g>>2]|0;i=((f[c>>2]|0)-e<<3)+(f[c+4>>2]|0)-h|0;c=e;if((i|0)<=0){j=d+4|0;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}if(!h){e=d+4|0;n=i;o=e;p=c;q=f[e>>2]|0}else{e=32-h|0;r=(i|0)<(e|0)?i:e;s=-1>>>(e-r|0)&-1<>2];c=d+4|0;h=f[c>>2]|0;e=32-h|0;t=e>>>0>>0?e:r;u=f[d>>2]|0;v=f[u>>2]&~(-1>>>(e-t|0)&-1<>2]=v;h=f[c>>2]|0;e=f[g>>2]|0;f[u>>2]=(h>>>0>e>>>0?s<>>(e-h|0))|v;v=(f[c>>2]|0)+t|0;h=u+(v>>>5<<2)|0;f[d>>2]=h;u=v&31;f[c>>2]=u;v=r-t|0;if((v|0)>0){e=f[h>>2]&~(-1>>>(32-v|0));f[h>>2]=e;f[h>>2]=e|s>>>((f[g>>2]|0)+t|0);f[c>>2]=v;w=v}else w=u;u=(f[b>>2]|0)+4|0;f[b>>2]=u;n=i-r|0;o=c;p=u;q=w}w=32-q|0;u=-1<31){q=~u;c=~n;r=n+((c|0)>-64?c:-64)+32&-32;c=n;i=p;while(1){v=f[i>>2]|0;t=f[d>>2]|0;g=f[t>>2]&q;f[t>>2]=g;f[t>>2]=g|v<>2];g=t+4|0;f[d>>2]=g;f[g>>2]=f[g>>2]&u|v>>>w;i=(f[b>>2]|0)+4|0;f[b>>2]=i;if((c|0)<=63)break;else c=c+-32|0}x=n+-32-r|0;y=i}else{x=n;y=p}if((x|0)<=0){j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}p=f[y>>2]&-1>>>(32-x|0);y=(w|0)<(x|0)?w:x;n=f[d>>2]|0;i=f[n>>2]&~(-1<>2]&-1>>>(w-y|0));f[n>>2]=i;f[n>>2]=i|p<>2];i=(f[o>>2]|0)+y|0;w=n+(i>>>5<<2)|0;f[d>>2]=w;f[o>>2]=i&31;i=x-y|0;if((i|0)<=0){j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}f[w>>2]=f[w>>2]&~(-1>>>(32-i|0))|p>>>y;f[o>>2]=i;j=o;k=f[d>>2]|0;f[a>>2]=k;l=a+4|0;m=f[j>>2]|0;f[l>>2]=m;return}function ye(a,c){a=a|0;c=c|0;var d=0,e=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;d=u;u=u+16|0;e=d+4|0;g=d;h=d+9|0;i=d+8|0;j=f[(f[a+184>>2]|0)+(c<<2)>>2]&255;b[h>>0]=j;c=a+4|0;k=f[(f[c>>2]|0)+44>>2]|0;l=k+16|0;m=f[l+4>>2]|0;if((m|0)>0|(m|0)==0&(f[l>>2]|0)>>>0>0)n=j;else{f[g>>2]=f[k+4>>2];f[e>>2]=f[g>>2];Me(k,e,h,h+1|0)|0;n=b[h>>0]|0}a:do if(n<<24>>24>-1){k=a+172|0;j=f[(f[k>>2]|0)+((n<<24>>24)*136|0)>>2]|0;l=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+52|0;m=b[h>>0]|0;o=f[k>>2]|0;k=f[o+(m*136|0)+132>>2]|0;switch(f[(f[(f[l>>2]|0)+84>>2]|0)+(j<<2)>>2]|0){case 0:{p=k;q=7;break a;break}case 1:{if(b[o+(m*136|0)+28>>0]|0){p=k;q=7;break a}break}default:{}}m=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=1;o=m+16|0;j=f[o+4>>2]|0;if(!((j|0)>0|(j|0)==0&(f[o>>2]|0)>>>0>0)){f[g>>2]=f[m+4>>2];f[e>>2]=f[g>>2];Me(m,e,i,i+1|0)|0}r=k}else{p=f[a+68>>2]|0;q=7}while(0);if((q|0)==7){q=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=0;a=q+16|0;h=f[a+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[a>>2]|0)>>>0>0)){f[g>>2]=f[q+4>>2];f[e>>2]=f[g>>2];Me(q,e,i,i+1|0)|0}r=p}p=f[(f[c>>2]|0)+44>>2]|0;b[i>>0]=r;r=p+16|0;c=f[r+4>>2]|0;if((c|0)>0|(c|0)==0&(f[r>>2]|0)>>>0>0){u=d;return 1}f[g>>2]=f[p+4>>2];f[e>>2]=f[g>>2];Me(p,e,i,i+1|0)|0;u=d;return 1}function ze(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;h=u;u=u+16|0;i=h+4|0;j=h;k=a+60|0;f[a+64>>2]=g;g=a+8|0;Mh(g,b,d,e);d=a+56|0;l=f[d>>2]|0;m=f[l+4>>2]|0;n=f[l>>2]|0;o=m-n|0;if((o|0)<=0){u=h;return 1}p=(o>>>2)+-1|0;o=a+68|0;q=a+16|0;r=a+32|0;s=a+12|0;t=a+28|0;v=a+20|0;w=a+24|0;if(m-n>>2>>>0>p>>>0){x=p;y=n}else{z=l;aq(z)}while(1){f[j>>2]=f[y+(x<<2)>>2];f[i>>2]=f[j>>2];ub(k,i,b,x);l=X(x,e)|0;n=b+(l<<2)|0;p=c+(l<<2)|0;l=f[g>>2]|0;if((l|0)>0){m=0;a=o;A=l;while(1){if((A|0)>0){l=0;do{B=f[a+(l<<2)>>2]|0;C=f[q>>2]|0;if((B|0)>(C|0)){D=f[r>>2]|0;f[D+(l<<2)>>2]=C;E=D}else{D=f[s>>2]|0;C=f[r>>2]|0;f[C+(l<<2)>>2]=(B|0)<(D|0)?D:B;E=C}l=l+1|0}while((l|0)<(f[g>>2]|0));F=E}else F=f[r>>2]|0;l=(f[n+(m<<2)>>2]|0)-(f[F+(m<<2)>>2]|0)|0;C=p+(m<<2)|0;f[C>>2]=l;if((l|0)>=(f[t>>2]|0)){if((l|0)>(f[w>>2]|0)){G=l-(f[v>>2]|0)|0;H=18}}else{G=(f[v>>2]|0)+l|0;H=18}if((H|0)==18){H=0;f[C>>2]=G}m=m+1|0;A=f[g>>2]|0;if((m|0)>=(A|0))break;else a=F}}x=x+-1|0;if((x|0)<=-1){H=3;break}a=f[d>>2]|0;y=f[a>>2]|0;if((f[a+4>>2]|0)-y>>2>>>0<=x>>>0){z=a;H=4;break}}if((H|0)==3){u=h;return 1}else if((H|0)==4)aq(z);return 0}function Ae(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;h=u;u=u+16|0;i=h+4|0;j=h;k=a+60|0;f[a+64>>2]=g;g=a+8|0;Mh(g,b,d,e);d=a+56|0;l=f[d>>2]|0;m=f[l+4>>2]|0;n=f[l>>2]|0;o=m-n|0;if((o|0)<=0){u=h;return 1}p=(o>>>2)+-1|0;o=a+68|0;q=a+16|0;r=a+32|0;s=a+12|0;t=a+28|0;v=a+20|0;w=a+24|0;if(m-n>>2>>>0>p>>>0){x=p;y=n}else{z=l;aq(z)}while(1){f[j>>2]=f[y+(x<<2)>>2];f[i>>2]=f[j>>2];tb(k,i,b,x);l=X(x,e)|0;n=b+(l<<2)|0;p=c+(l<<2)|0;l=f[g>>2]|0;if((l|0)>0){m=0;a=o;A=l;while(1){if((A|0)>0){l=0;do{B=f[a+(l<<2)>>2]|0;C=f[q>>2]|0;if((B|0)>(C|0)){D=f[r>>2]|0;f[D+(l<<2)>>2]=C;E=D}else{D=f[s>>2]|0;C=f[r>>2]|0;f[C+(l<<2)>>2]=(B|0)<(D|0)?D:B;E=C}l=l+1|0}while((l|0)<(f[g>>2]|0));F=E}else F=f[r>>2]|0;l=(f[n+(m<<2)>>2]|0)-(f[F+(m<<2)>>2]|0)|0;C=p+(m<<2)|0;f[C>>2]=l;if((l|0)>=(f[t>>2]|0)){if((l|0)>(f[w>>2]|0)){G=l-(f[v>>2]|0)|0;H=18}}else{G=(f[v>>2]|0)+l|0;H=18}if((H|0)==18){H=0;f[C>>2]=G}m=m+1|0;A=f[g>>2]|0;if((m|0)>=(A|0))break;else a=F}}x=x+-1|0;if((x|0)<=-1){H=3;break}a=f[d>>2]|0;y=f[a>>2]|0;if((f[a+4>>2]|0)-y>>2>>>0<=x>>>0){z=a;H=4;break}}if((H|0)==3){u=h;return 1}else if((H|0)==4)aq(z);return 0}function Be(a){a=a|0;var b=0,c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+12|0;g=f[e>>2]|0;h=(f[g+4>>2]|0)-(f[g>>2]|0)>>2;if(!h){u=b;return 1}i=a+152|0;j=a+140|0;k=a+144|0;l=a+148|0;a=0;m=g;while(1){f[d>>2]=(a>>>0)/3|0;f[c>>2]=f[d>>2];if(!(_j(m,c)|0)?(g=f[e>>2]|0,(f[(f[g+12>>2]|0)+(a<<2)>>2]|0)==-1):0){n=a+1|0;o=((n>>>0)%3|0|0)==0?a+-2|0:n;if((o|0)==-1)p=-1;else p=f[(f[g>>2]|0)+(o<<2)>>2]|0;o=f[i>>2]|0;if((f[o+(p<<2)>>2]|0)==-1){g=f[k>>2]|0;n=f[l>>2]|0;if((g|0)==(n<<5|0)){if((g+1|0)<0){q=11;break}r=n<<6;n=g+32&-32;vi(j,g>>>0<1073741823?(r>>>0>>0?n:r):2147483647);s=f[k>>2]|0;t=f[i>>2]|0}else{s=g;t=o}f[k>>2]=s+1;o=(f[j>>2]|0)+(s>>>5<<2)|0;f[o>>2]=f[o>>2]&~(1<<(s&31));o=t+(p<<2)|0;if((f[o>>2]|0)==-1){r=a;n=o;while(1){f[n>>2]=g;o=r+1|0;a:do if((r|0)!=-1?(v=((o>>>0)%3|0|0)==0?r+-2|0:o,(v|0)!=-1):0){w=f[e>>2]|0;x=f[w+12>>2]|0;y=v;while(1){v=f[x+(y<<2)>>2]|0;if((v|0)==-1)break;z=v+1|0;A=((z>>>0)%3|0|0)==0?v+-2|0:z;if((A|0)==-1){B=-1;C=-1;break a}else y=A}x=y+1|0;A=((x>>>0)%3|0|0)==0?y+-2|0:x;if((A|0)==-1){B=y;C=-1}else{B=y;C=f[(f[w>>2]|0)+(A<<2)>>2]|0}}else{B=-1;C=-1}while(0);n=t+(C<<2)|0;if((f[n>>2]|0)!=-1)break;else r=B}}}}r=a+1|0;if(r>>>0>=h>>>0){q=3;break}a=r;m=f[e>>2]|0}if((q|0)==3){u=b;return 1}else if((q|0)==11)aq(j);return 0}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=u;u=u+32|0;e=d+8|0;g=d;h=a+4|0;i=f[h>>2]|0;if(i>>>0>=b>>>0){f[h>>2]=b;u=d;return}j=a+8|0;k=f[j>>2]|0;l=k<<5;m=b-i|0;if(l>>>0>>0|i>>>0>(l-m|0)>>>0){f[e>>2]=0;n=e+4|0;f[n>>2]=0;o=e+8|0;f[o>>2]=0;if((b|0)<0)aq(a);p=k<<6;k=b+31&-32;vi(e,l>>>0<1073741823?(p>>>0>>0?k:p):2147483647);p=f[h>>2]|0;f[n>>2]=p+m;k=f[a>>2]|0;l=k;q=f[e>>2]|0;r=(l+(p>>>5<<2)-k<<3)+(p&31)|0;if((r|0)>0){p=r>>>5;im(q|0,k|0,p<<2|0)|0;k=r&31;r=q+(p<<2)|0;s=r;if(!k){t=0;v=s}else{w=-1>>>(32-k|0);f[r>>2]=f[r>>2]&~w|f[l+(p<<2)>>2]&w;t=k;v=s}}else{t=0;v=q}f[g>>2]=v;f[g+4>>2]=t;t=g;g=f[t>>2]|0;v=f[t+4>>2]|0;t=f[a>>2]|0;f[a>>2]=f[e>>2];f[e>>2]=t;e=f[h>>2]|0;f[h>>2]=f[n>>2];f[n>>2]=e;e=f[j>>2]|0;f[j>>2]=f[o>>2];f[o>>2]=e;if(t|0)Oq(t);x=g;y=v}else{v=(f[a>>2]|0)+(i>>>5<<2)|0;f[h>>2]=b;x=v;y=i&31}if(!m){u=d;return}i=(y|0)==0;v=x;if(c){if(i){z=m;A=x;B=v}else{c=32-y|0;b=c>>>0>m>>>0?m:c;f[v>>2]=f[v>>2]|-1>>>(c-b|0)&-1<>>5;sj(A|0,-1,c<<2|0)|0;A=z&31;z=B+(c<<2)|0;if(!A){u=d;return}f[z>>2]=f[z>>2]|-1>>>(32-A|0);u=d;return}else{if(i){C=m;D=x;E=v}else{x=32-y|0;i=x>>>0>m>>>0?m:x;f[v>>2]=f[v>>2]&~(-1>>>(x-i|0)&-1<>>5;sj(D|0,0,y<<2|0)|0;D=C&31;C=E+(y<<2)|0;if(!D){u=d;return}f[C>>2]=f[C>>2]&~(-1>>>(32-D|0));u=d;return}}function De(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,v=0,w=0,x=0;a=u;u=u+48|0;g=a+36|0;h=a+24|0;i=a+12|0;j=a;if(!c){k=0;u=a;return k|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;l=Gj(d)|0;if(l>>>0>4294967279)aq(g);if(l>>>0<11){b[g+11>>0]=l;if(!l)m=g;else{n=g;o=7}}else{p=l+16&-16;q=ln(p)|0;f[g>>2]=q;f[g+8>>2]=p|-2147483648;f[g+4>>2]=l;n=q;o=7}if((o|0)==7){kh(n|0,d|0,l|0)|0;m=n}b[m+l>>0]=0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;l=Gj(e)|0;if(l>>>0>4294967279)aq(h);if(l>>>0<11){b[h+11>>0]=l;if(!l)r=h;else{s=h;o=13}}else{m=l+16&-16;n=ln(m)|0;f[h>>2]=n;f[h+8>>2]=m|-2147483648;f[h+4>>2]=l;s=n;o=13}if((o|0)==13){kh(s|0,e|0,l|0)|0;r=s}b[r+l>>0]=0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;l=Gj(d)|0;if(l>>>0>4294967279)aq(i);if(l>>>0<11){b[i+11>>0]=l;if(!l)t=i;else{v=i;o=19}}else{r=l+16&-16;s=ln(r)|0;f[i>>2]=s;f[i+8>>2]=r|-2147483648;f[i+4>>2]=l;v=s;o=19}if((o|0)==19){kh(v|0,d|0,l|0)|0;t=v}b[t+l>>0]=0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;l=Gj(e)|0;if(l>>>0>4294967279)aq(j);if(l>>>0<11){b[j+11>>0]=l;if(!l)w=j;else{x=j;o=25}}else{t=l+16&-16;v=ln(t)|0;f[j>>2]=v;f[j+8>>2]=t|-2147483648;f[j+4>>2]=l;x=v;o=25}if((o|0)==25){kh(x|0,e|0,l|0)|0;w=x}b[w+l>>0]=0;mn(c,i,j);if((b[j+11>>0]|0)<0)Oq(f[j>>2]|0);if((b[i+11>>0]|0)<0)Oq(f[i>>2]|0);if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);k=1;u=a;return k|0}function Ee(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;f[a>>2]=f[c>>2];d=c+4|0;f[a+4>>2]=f[d>>2];e=c+8|0;f[a+8>>2]=f[e>>2];g=c+12|0;f[a+12>>2]=f[g>>2];f[d>>2]=0;f[e>>2]=0;f[g>>2]=0;g=c+16|0;f[a+16>>2]=f[g>>2];e=c+20|0;f[a+20>>2]=f[e>>2];d=c+24|0;f[a+24>>2]=f[d>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;b[a+28>>0]=b[c+28>>0]|0;d=a+32|0;e=c+32|0;f[d>>2]=0;g=a+36|0;f[g>>2]=0;f[a+40>>2]=0;f[d>>2]=f[e>>2];d=c+36|0;f[g>>2]=f[d>>2];g=c+40|0;f[a+40>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;e=a+44|0;d=c+44|0;f[e>>2]=0;g=a+48|0;f[g>>2]=0;f[a+52>>2]=0;f[e>>2]=f[d>>2];e=c+48|0;f[g>>2]=f[e>>2];g=c+52|0;f[a+52>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+56|0;e=c+56|0;f[d>>2]=0;g=a+60|0;f[g>>2]=0;f[a+64>>2]=0;f[d>>2]=f[e>>2];d=c+60|0;f[g>>2]=f[d>>2];g=c+64|0;f[a+64>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;f[a+68>>2]=f[c+68>>2];f[a+72>>2]=f[c+72>>2];e=a+76|0;d=c+76|0;f[e>>2]=0;g=a+80|0;f[g>>2]=0;f[a+84>>2]=0;f[e>>2]=f[d>>2];e=c+80|0;f[g>>2]=f[e>>2];g=c+84|0;f[a+84>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+88|0;e=c+88|0;f[d>>2]=0;g=a+92|0;f[g>>2]=0;f[a+96>>2]=0;f[d>>2]=f[e>>2];d=c+92|0;f[g>>2]=f[d>>2];g=c+96|0;f[a+96>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;b[a+100>>0]=b[c+100>>0]|0;e=a+104|0;d=c+104|0;f[e>>2]=0;g=a+108|0;f[g>>2]=0;f[a+112>>2]=0;f[e>>2]=f[d>>2];e=c+108|0;f[g>>2]=f[e>>2];g=c+112|0;f[a+112>>2]=f[g>>2];f[g>>2]=0;f[e>>2]=0;f[d>>2]=0;d=a+116|0;e=c+116|0;f[d>>2]=0;g=a+120|0;f[g>>2]=0;f[a+124>>2]=0;f[d>>2]=f[e>>2];d=c+120|0;f[g>>2]=f[d>>2];g=c+124|0;f[a+124>>2]=f[g>>2];f[g>>2]=0;f[d>>2]=0;f[e>>2]=0;f[a+128>>2]=f[c+128>>2];f[a+132>>2]=f[c+132>>2];return}function Fe(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;h=u;u=u+48|0;i=h+36|0;j=h+24|0;k=h+8|0;l=h+4|0;m=h;n=e+4|0;Rh(i,c,(f[n>>2]|0)-(f[e>>2]|0)>>2,2,g,d,1);g=f[i>>2]|0;o=(f[f[g>>2]>>2]|0)+(f[g+48>>2]|0)|0;f[k>>2]=-1;f[k+4>>2]=-1;f[k+8>>2]=-1;f[k+12>>2]=-1;p=f[c+4>>2]|0;if((p+-2|0)>>>0<=28){f[k>>2]=p;c=1<>2]=c+-1;p=c+-2|0;f[k+8>>2]=p;f[k+12>>2]=(p|0)/2|0;p=f[e>>2]|0;if((f[n>>2]|0)==(p|0))q=g;else{c=d+84|0;r=d+68|0;s=d+48|0;t=d+40|0;v=0;w=0;x=p;while(1){p=f[x+(v<<2)>>2]|0;if(!(b[c>>0]|0))y=f[(f[r>>2]|0)+(p<<2)>>2]|0;else y=p;p=s;z=f[p>>2]|0;A=f[p+4>>2]|0;p=t;B=f[p>>2]|0;C=un(B|0,f[p+4>>2]|0,y|0,0)|0;p=Vn(C|0,I|0,z|0,A|0)|0;kh(j|0,(f[f[d>>2]>>2]|0)+p|0,B|0)|0;rf(k,j,l,m);f[o+(w<<2)>>2]=f[l>>2];f[o+((w|1)<<2)>>2]=f[m>>2];v=v+1|0;x=f[e>>2]|0;if(v>>>0>=(f[n>>2]|0)-x>>2>>>0)break;else w=w+2|0}q=f[i>>2]|0}f[a>>2]=q;f[i>>2]=0;u=h;return}f[a>>2]=0;f[i>>2]=0;if(!g){u=h;return}i=g+88|0;a=f[i>>2]|0;f[i>>2]=0;if(a|0){i=f[a+8>>2]|0;if(i|0){q=a+12|0;if((f[q>>2]|0)!=(i|0))f[q>>2]=i;Oq(i)}Oq(a)}a=f[g+68>>2]|0;if(a|0){i=g+72|0;q=f[i>>2]|0;if((q|0)!=(a|0))f[i>>2]=q+(~((q+-4-a|0)>>>2)<<2);Oq(a)}a=g+64|0;q=f[a>>2]|0;f[a>>2]=0;if(q|0){a=f[q>>2]|0;if(a|0){i=q+4|0;if((f[i>>2]|0)!=(a|0))f[i>>2]=a;Oq(a)}Oq(q)}Oq(g);u=h;return}function Ge(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if(((e-h|0)/136|0)>>>0>=c>>>0){i=c;j=h;do{f[j>>2]=-1;Ok(j+4|0);b[j+100>>0]=1;k=j+104|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[k+24>>2]=0;j=(f[g>>2]|0)+136|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=(h-i|0)/136|0;h=j+c|0;if(h>>>0>31580641)aq(a);k=(e-i|0)/136|0;i=k<<1;e=k>>>0<15790320?(i>>>0>>0?h:i):31580641;do if(e)if(e>>>0>31580641){i=ra(8)|0;Oo(i,16035);f[i>>2]=7256;va(i|0,1112,110)}else{l=ln(e*136|0)|0;break}else l=0;while(0);i=l+(j*136|0)|0;j=i;h=l+(e*136|0)|0;e=c;c=j;l=i;do{f[l>>2]=-1;Ok(l+4|0);b[l+100>>0]=1;k=l+104|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[k+24>>2]=0;l=c+136|0;c=l;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;l=f[g>>2]|0;if((l|0)==(e|0)){m=j;n=e;o=e}else{k=l;l=j;j=i;do{k=k+-136|0;Ee(j+-136|0,k);j=l+-136|0;l=j}while((k|0)!=(e|0));m=l;n=f[a>>2]|0;o=f[g>>2]|0}f[a>>2]=m;f[g>>2]=c;f[d>>2]=h;h=n;if((o|0)!=(h|0)){d=o;do{o=f[d+-20>>2]|0;if(o|0){c=d+-16|0;g=f[c>>2]|0;if((g|0)!=(o|0))f[c>>2]=g+(~((g+-4-o|0)>>>2)<<2);Oq(o)}o=f[d+-32>>2]|0;if(o|0){g=d+-28|0;c=f[g>>2]|0;if((c|0)!=(o|0))f[g>>2]=c+(~((c+-4-o|0)>>>2)<<2);Oq(o)}Mi(d+-132|0);d=d+-136|0}while((d|0)!=(h|0))}if(!n)return;Oq(n);return}function He(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=f[b>>2]|0;b=a+12|0;d=(c|0)==-1;e=c+1|0;do if(!d){g=((e>>>0)%3|0|0)==0?c+-2|0:e;if(!((c>>>0)%3|0)){h=g;i=c+2|0;break}else{h=g;i=c+-1|0;break}}else{h=-1;i=-1}while(0);e=d?-1:(c>>>0)/3|0;g=a+28|0;j=(f[g>>2]|0)+(e>>>5<<2)|0;f[j>>2]=1<<(e&31)|f[j>>2];j=a+172|0;e=a+176|0;k=a+280|0;if(((!d?(d=f[(f[(f[b>>2]|0)+12>>2]|0)+(c<<2)>>2]|0,(d|0)!=-1):0)?(a=(d>>>0)/3|0,(f[(f[g>>2]|0)+(a>>>5<<2)>>2]&1<<(a&31)|0)==0):0)?(a=f[j>>2]|0,(f[e>>2]|0)!=(a|0)):0){d=c>>>5;l=1<<(c&31);c=0;m=a;do{a=(f[k>>2]|0)+(c<<5)|0;if(!(l&f[(f[m+(c*136|0)+4>>2]|0)+(d<<2)>>2]))fj(a,0);else fj(a,1);c=c+1|0;m=f[j>>2]|0}while(c>>>0<(((f[e>>2]|0)-m|0)/136|0)>>>0)}if((((h|0)!=-1?(m=f[(f[(f[b>>2]|0)+12>>2]|0)+(h<<2)>>2]|0,(m|0)!=-1):0)?(c=(m>>>0)/3|0,(f[(f[g>>2]|0)+(c>>>5<<2)>>2]&1<<(c&31)|0)==0):0)?(c=f[j>>2]|0,(f[e>>2]|0)!=(c|0)):0){m=h>>>5;d=1<<(h&31);h=0;l=c;do{c=(f[k>>2]|0)+(h<<5)|0;if(!(d&f[(f[l+(h*136|0)+4>>2]|0)+(m<<2)>>2]))fj(c,0);else fj(c,1);h=h+1|0;l=f[j>>2]|0}while(h>>>0<(((f[e>>2]|0)-l|0)/136|0)>>>0)}if((i|0)==-1)return 1;l=f[(f[(f[b>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;if((l|0)==-1)return 1;b=(l>>>0)/3|0;if(f[(f[g>>2]|0)+(b>>>5<<2)>>2]&1<<(b&31)|0)return 1;b=f[j>>2]|0;if((f[e>>2]|0)==(b|0))return 1;g=i>>>5;l=1<<(i&31);i=0;h=b;do{b=(f[k>>2]|0)+(i<<5)|0;if(!(l&f[(f[h+(i*136|0)+4>>2]|0)+(g<<2)>>2]))fj(b,0);else fj(b,1);i=i+1|0;h=f[j>>2]|0}while(i>>>0<(((f[e>>2]|0)-h|0)/136|0)>>>0);return 1}function Ie(a,c){a=a|0;c=c|0;var d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+4|0;j=a+8|0;ci((f[j>>2]|0)-(f[i>>2]|0)>>2,c)|0;k=f[i>>2]|0;if((f[j>>2]|0)==(k|0)){u=d;return 1}l=a+32|0;a=c+16|0;m=c+4|0;n=h+1|0;o=h+1|0;p=h+1|0;q=h+1|0;r=0;s=k;do{k=f[(f[(f[l>>2]|0)+8>>2]|0)+(f[s+(r<<2)>>2]<<2)>>2]|0;b[h>>0]=f[k+56>>2];t=a;v=f[t>>2]|0;w=f[t+4>>2]|0;if((w|0)>0|(w|0)==0&v>>>0>0){x=w;y=v}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];Me(c,e,h,q)|0;v=a;x=f[v+4>>2]|0;y=f[v>>2]|0}b[h>>0]=f[k+28>>2];if((x|0)>0|(x|0)==0&y>>>0>0){z=x;A=y}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];Me(c,e,h,p)|0;v=a;z=f[v+4>>2]|0;A=f[v>>2]|0}b[h>>0]=b[k+24>>0]|0;if((z|0)>0|(z|0)==0&A>>>0>0){B=z;C=A}else{f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];Me(c,e,h,o)|0;v=a;B=f[v+4>>2]|0;C=f[v>>2]|0}b[h>>0]=b[k+32>>0]|0;if(!((B|0)>0|(B|0)==0&C>>>0>0)){f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];Me(c,e,h,n)|0}ci(f[k+60>>2]|0,c)|0;r=r+1|0;s=f[i>>2]|0}while(r>>>0<(f[j>>2]|0)-s>>2>>>0);u=d;return 1}function Je(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=Oa,D=Oa,E=Oa,F=Oa;h=u;u=u+16|0;i=h;j=e+4|0;k=b[d+24>>0]|0;l=k<<24>>24;Rh(a,c,(f[j>>2]|0)-(f[e>>2]|0)>>2,l,g,d,1);g=f[a>>2]|0;a=(f[f[g>>2]>>2]|0)+(f[g+48>>2]|0)|0;g=f[c+4>>2]|0;Ap(i);Ko(i,$(n[c+20>>2]),(1<>>0>1073741823?-1:l<<2)|0;m=f[j>>2]|0;j=f[e>>2]|0;e=j;if((m|0)==(j|0)){Mq(g);u=h;return}o=d+68|0;p=d+48|0;q=d+40|0;r=c+8|0;c=i+4|0;s=(b[d+84>>0]|0)==0;t=m-j>>2;if(k<<24>>24>0){v=0;w=0}else{k=0;do{j=f[e+(k<<2)>>2]|0;if(s)x=f[(f[o>>2]|0)+(j<<2)>>2]|0;else x=j;j=p;m=f[j>>2]|0;y=f[j+4>>2]|0;j=q;z=f[j>>2]|0;A=un(z|0,f[j+4>>2]|0,x|0,0)|0;j=Vn(A|0,I|0,m|0,y|0)|0;kh(g|0,(f[f[d>>2]>>2]|0)+j|0,z|0)|0;k=k+1|0}while(k>>>0>>0);Mq(g);u=h;return}while(1){k=f[e+(v<<2)>>2]|0;if(s)B=f[(f[o>>2]|0)+(k<<2)>>2]|0;else B=k;k=p;x=f[k>>2]|0;z=f[k+4>>2]|0;k=q;j=f[k>>2]|0;y=un(j|0,f[k+4>>2]|0,B|0,0)|0;k=Vn(y|0,I|0,x|0,z|0)|0;kh(g|0,(f[f[d>>2]>>2]|0)+k|0,j|0)|0;j=f[r>>2]|0;C=$(n[i>>2]);k=0;z=w;while(1){D=$(n[g+(k<<2)>>2]);E=$(D-$(n[j+(k<<2)>>2]));x=E<$(0.0);D=$(-E);F=$((x?D:E)/C);y=~~$(J($($(F*$(f[c>>2]|0))+$(.5))));f[a+(z<<2)>>2]=x?0-y|0:y;k=k+1|0;if((k|0)==(l|0))break;else z=z+1|0}v=v+1|0;if(v>>>0>=t>>>0)break;else w=w+l|0}Mq(g);u=h;return}function Ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0,w=0,x=0;d=u;u=u+32|0;e=d+16|0;g=d+12|0;h=d+8|0;i=d+4|0;j=d;lp(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;k=a+24|0;lp(k);if((a|0)!=(b|0)){f[h>>2]=f[b>>2];f[i>>2]=b+4;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Oc(a,g,e)}l=b+24|0;if((k|0)!=(l|0)){f[h>>2]=f[l>>2];f[i>>2]=b+28;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Oc(k,g,e)}f[j>>2]=0;k=c+8|0;l=c+12|0;c=f[l>>2]|0;m=f[k>>2]|0;if((c-m|0)<=0){u=d;return}n=b+16|0;b=m;m=c;c=0;while(1){o=f[(f[b+(c<<2)>>2]|0)+56>>2]|0;p=f[n>>2]|0;if(p){q=n;r=p;a:while(1){p=r;while(1){if((f[p+16>>2]|0)>=(o|0))break;s=f[p+4>>2]|0;if(!s){t=q;break a}else p=s}r=f[p>>2]|0;if(!r){t=p;break}else q=p}if((t|0)!=(n|0)?(o|0)>=(f[t+16>>2]|0):0){q=t+20|0;r=Hd(a,j)|0;if((r|0)!=(q|0)){f[h>>2]=f[q>>2];f[i>>2]=t+24;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Oc(r,g,e)}v=f[j>>2]|0;w=f[k>>2]|0;x=f[l>>2]|0}else{v=c;w=b;x=m}}else{v=c;w=b;x=m}c=v+1|0;f[j>>2]=c;if((c|0)>=(x-w>>2|0))break;else{b=w;m=x}}u=d;return}function Le(a,c){a=a|0;c=c|0;var d=0,e=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,v=0,w=0,x=0,y=0,z=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+12|0;ci(f[i>>2]|0,c)|0;if(!(f[i>>2]|0)){j=1;u=d;return j|0}k=c+16|0;l=c+4|0;m=h+1|0;n=h+1|0;o=h+1|0;p=0;while(1){q=f[a>>2]|0;r=f[q+(p<<3)>>2]|0;if(r>>>0>63)if(r>>>0>16383)if(r>>>0>4194303){j=0;s=20;break}else{t=2;s=13}else{t=1;s=13}else if(!r){v=p+1|0;w=0;while(1){if(f[q+(v+w<<3)>>2]|0){x=w;break}y=w+1|0;if(y>>>0<63)w=y;else{x=y;break}}b[h>>0]=x<<2|3;w=k;v=f[w+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[w>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];Me(c,e,h,o)|0}z=x+p|0}else{t=0;s=13}if((s|0)==13){s=0;b[h>>0]=t|r<<2;w=k;v=f[w+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[w>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];Me(c,e,h,n)|0}if(!t)z=p;else{w=0;do{w=w+1|0;b[h>>0]=r>>>((w<<3)+-2|0);v=k;q=f[v+4>>2]|0;if(!((q|0)>0|(q|0)==0&(f[v>>2]|0)>>>0>0)){f[g>>2]=f[l>>2];f[e>>2]=f[g>>2];Me(c,e,h,m)|0}}while((w|0)<(t|0));z=p}}p=z+1|0;if(p>>>0>=(f[i>>2]|0)>>>0){j=1;s=20;break}}if((s|0)==20){u=d;return j|0}return 0}function Me(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0;g=f[a>>2]|0;h=g;i=(f[c>>2]|0)-h|0;c=g+i|0;j=e-d|0;if((j|0)<=0){k=c;return k|0}l=a+8|0;m=f[l>>2]|0;n=a+4|0;o=f[n>>2]|0;p=o;if((j|0)<=(m-p|0)){q=p-c|0;if((j|0)>(q|0)){r=d+q|0;if((r|0)==(e|0))s=o;else{t=r;u=o;while(1){b[u>>0]=b[t>>0]|0;t=t+1|0;v=(f[n>>2]|0)+1|0;f[n>>2]=v;if((t|0)==(e|0)){s=v;break}else u=v}}if((q|0)>0){w=r;x=s}else{k=c;return k|0}}else{w=e;x=o}s=x-(c+j)|0;r=c+s|0;if(r>>>0>>0){q=r;r=x;do{b[r>>0]=b[q>>0]|0;q=q+1|0;r=(f[n>>2]|0)+1|0;f[n>>2]=r}while((q|0)!=(o|0))}if(s|0)im(x+(0-s)|0,c|0,s|0)|0;if((w|0)==(d|0)){k=c;return k|0}else{y=d;z=c}while(1){b[z>>0]=b[y>>0]|0;y=y+1|0;if((y|0)==(w|0)){k=c;break}else z=z+1|0}return k|0}z=p-h+j|0;if((z|0)<0)aq(a);j=m-h|0;h=j<<1;m=j>>>0<1073741823?(h>>>0>>0?z:h):2147483647;h=c;if(!m)A=0;else A=ln(m)|0;z=A+i|0;i=z;j=A+m|0;if((d|0)==(e|0)){B=i;C=g}else{g=d;d=i;i=z;do{b[i>>0]=b[g>>0]|0;i=d+1|0;d=i;g=g+1|0}while((g|0)!=(e|0));B=d;C=f[a>>2]|0}d=h-C|0;e=z+(0-d)|0;if((d|0)>0)kh(e|0,C|0,d|0)|0;d=(f[n>>2]|0)-h|0;if((d|0)>0){h=B;kh(h|0,c|0,d|0)|0;D=h+d|0;E=f[a>>2]|0}else{D=B;E=C}f[a>>2]=e;f[n>>2]=D;f[l>>2]=j;if(!E){k=z;return k|0}Oq(E);k=z;return k|0}function Ne(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=u;u=u+16|0;g=e;h=f[(f[c+4>>2]|0)+(d<<2)>>2]|0;d=f[c+28>>2]|0;c=f[(f[(f[d+4>>2]|0)+8>>2]|0)+(h<<2)>>2]|0;switch(f[c+28>>2]|0){case 5:case 6:case 3:case 4:case 1:case 2:{i=ln(40)|0;zo(i);j=i;k=j;f[a>>2]=k;u=e;return}case 9:{l=3;break}default:{}}if((l|0)==3){i=f[d+48>>2]|0;d=ln(32)|0;f[g>>2]=d;f[g+8>>2]=-2147483616;f[g+4>>2]=17;m=d;n=14495;o=m+17|0;do{b[m>>0]=b[n>>0]|0;m=m+1|0;n=n+1|0}while((m|0)<(o|0));b[d+17>>0]=0;d=i+16|0;n=f[d>>2]|0;if(n){p=d;q=n;a:while(1){n=q;while(1){if((f[n+16>>2]|0)>=(h|0))break;r=f[n+4>>2]|0;if(!r){s=p;break a}else n=r}q=f[n>>2]|0;if(!q){s=n;break}else p=n}if(((s|0)!=(d|0)?(h|0)>=(f[s+16>>2]|0):0)?(h=s+20|0,(Jh(h,g)|0)!=0):0)t=Hk(h,g,-1)|0;else l=12}else l=12;if((l|0)==12)t=Hk(i,g,-1)|0;if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);if((t|0)>0)if((f[c+56>>2]|0)==1){c=ln(48)|0;m=c;o=m+48|0;do{f[m>>2]=0;m=m+4|0}while((m|0)<(o|0));zo(c);f[c>>2]=2496;f[c+40>>2]=1168;f[c+44>>2]=-1;j=c;k=j;f[a>>2]=k;u=e;return}else{c=ln(64)|0;ym(c);j=c;k=j;f[a>>2]=k;u=e;return}}c=ln(36)|0;Hm(c);j=c;k=j;f[a>>2]=k;u=e;return}function Oe(a,c){a=a|0;c=c|0;var d=0,e=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;d=(c|0)==(a|0);b[c+12>>0]=d&1;if(d)return;else e=c;while(1){g=e+8|0;h=f[g>>2]|0;c=h+12|0;if(b[c>>0]|0){i=23;break}j=h+8|0;k=f[j>>2]|0;d=f[k>>2]|0;if((d|0)==(h|0)){l=f[k+4>>2]|0;if(!l){i=7;break}m=l+12|0;if(!(b[m>>0]|0))n=m;else{i=7;break}}else{if(!d){i=16;break}m=d+12|0;if(!(b[m>>0]|0))n=m;else{i=16;break}}b[c>>0]=1;c=(k|0)==(a|0);b[k+12>>0]=c&1;b[n>>0]=1;if(c){i=23;break}else e=k}if((i|0)==7){if((f[h>>2]|0)==(e|0)){o=h;p=k}else{n=h+4|0;a=f[n>>2]|0;c=f[a>>2]|0;f[n>>2]=c;if(!c)q=k;else{f[c+8>>2]=h;q=f[j>>2]|0}f[a+8>>2]=q;q=f[j>>2]|0;f[((f[q>>2]|0)==(h|0)?q:q+4|0)>>2]=a;f[a>>2]=h;f[j>>2]=a;o=a;p=f[a+8>>2]|0}b[o+12>>0]=1;b[p+12>>0]=0;o=f[p>>2]|0;a=o+4|0;q=f[a>>2]|0;f[p>>2]=q;if(q|0)f[q+8>>2]=p;q=p+8|0;f[o+8>>2]=f[q>>2];c=f[q>>2]|0;f[((f[c>>2]|0)==(p|0)?c:c+4|0)>>2]=o;f[a>>2]=p;f[q>>2]=o;return}else if((i|0)==16){if((f[h>>2]|0)==(e|0)){o=e+4|0;q=f[o>>2]|0;f[h>>2]=q;if(!q)r=k;else{f[q+8>>2]=h;r=f[j>>2]|0}f[g>>2]=r;r=f[j>>2]|0;f[((f[r>>2]|0)==(h|0)?r:r+4|0)>>2]=e;f[o>>2]=h;f[j>>2]=e;s=e;t=f[e+8>>2]|0}else{s=h;t=k}b[s+12>>0]=1;b[t+12>>0]=0;s=t+4|0;k=f[s>>2]|0;h=f[k>>2]|0;f[s>>2]=h;if(h|0)f[h+8>>2]=t;h=t+8|0;f[k+8>>2]=f[h>>2];s=f[h>>2]|0;f[((f[s>>2]|0)==(t|0)?s:s+4|0)>>2]=k;f[k>>2]=t;f[h>>2]=k;return}else if((i|0)==23)return}function Pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=f[b>>2]|0;b=a+12|0;e=(d|0)==-1;do if(e){g=1;h=-1;i=-1}else{j=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((j|0)!=-1){k=f[(f[b>>2]|0)+12>>2]|0;l=j;while(1){j=f[k+(l<<2)>>2]|0;if((j|0)==-1){m=0;n=l;break}o=j+1|0;l=((o>>>0)%3|0|0)==0?j+-2|0:o;if((l|0)==-1){m=1;n=-1;break}}if(e){g=m;h=-1;i=n;break}else{p=m;q=n}}else{p=1;q=-1}g=p;h=f[(f[f[b>>2]>>2]|0)+(d<<2)>>2]|0;i=q}while(0);if(c){c=(f[a+84>>2]|0)+(h>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(h&31);r=1}else r=0;c=f[(f[a+152>>2]|0)+(h<<2)>>2]|0;q=(f[a+140>>2]|0)+(c>>>5<<2)|0;f[q>>2]=f[q>>2]|1<<(c&31);if(!g){g=(((i>>>0)%3|0|0)==0?2:-1)+i|0;if((g|0)==-1){s=-1;t=i}else{s=f[(f[f[b>>2]>>2]|0)+(g<<2)>>2]|0;t=i}}else{s=-1;t=-1}if((s|0)==(h|0)){u=r;return u|0}i=f[a+84>>2]|0;a=r;r=s;s=t;while(1){t=i+(r>>>5<<2)|0;f[t>>2]=f[t>>2]|1<<(r&31);t=a+1|0;g=s+1|0;a:do if((s|0)!=-1?(c=((g>>>0)%3|0|0)==0?s+-2|0:g,(c|0)!=-1):0){q=f[b>>2]|0;d=f[q+12>>2]|0;p=c;while(1){c=f[d+(p<<2)>>2]|0;if((c|0)==-1)break;n=c+1|0;m=((n>>>0)%3|0|0)==0?c+-2|0:n;if((m|0)==-1){v=-1;w=-1;break a}else p=m}d=(((p>>>0)%3|0|0)==0?2:-1)+p|0;if((d|0)==-1){v=-1;w=p}else{v=f[(f[q>>2]|0)+(d<<2)>>2]|0;w=p}}else{v=-1;w=-1}while(0);if((v|0)==(h|0)){u=t;break}else{a=t;r=v;s=w}}return u|0}function Qe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=Oa,C=Oa,D=Oa,E=Oa;g=u;u=u+16|0;h=g;i=b[d+24>>0]|0;j=i<<24>>24;Rh(a,c,e,j,0,d,1);k=f[a>>2]|0;a=(f[f[k>>2]>>2]|0)+(f[k+48>>2]|0)|0;k=f[c+4>>2]|0;Ap(h);Ko(h,$(n[c+20>>2]),(1<>>0>1073741823?-1:j<<2)|0;if(!e){Mq(k);u=g;return}l=d+68|0;m=d+48|0;o=d+40|0;p=c+8|0;c=h+4|0;q=(b[d+84>>0]|0)==0;if(i<<24>>24>0){r=0;s=0}else{i=0;do{if(q)t=f[(f[l>>2]|0)+(i<<2)>>2]|0;else t=i;v=m;w=f[v>>2]|0;x=f[v+4>>2]|0;v=o;y=f[v>>2]|0;z=un(y|0,f[v+4>>2]|0,t|0,0)|0;v=Vn(z|0,I|0,w|0,x|0)|0;kh(k|0,(f[f[d>>2]>>2]|0)+v|0,y|0)|0;i=i+1|0}while((i|0)!=(e|0));Mq(k);u=g;return}while(1){if(q)A=f[(f[l>>2]|0)+(s<<2)>>2]|0;else A=s;i=m;t=f[i>>2]|0;y=f[i+4>>2]|0;i=o;v=f[i>>2]|0;x=un(v|0,f[i+4>>2]|0,A|0,0)|0;i=Vn(x|0,I|0,t|0,y|0)|0;kh(k|0,(f[f[d>>2]>>2]|0)+i|0,v|0)|0;v=f[p>>2]|0;B=$(n[h>>2]);i=0;y=r;while(1){C=$(n[k+(i<<2)>>2]);D=$(C-$(n[v+(i<<2)>>2]));t=D<$(0.0);C=$(-D);E=$((t?C:D)/B);x=~~$(J($($(E*$(f[c>>2]|0))+$(.5))));f[a+(y<<2)>>2]=t?0-x|0:x;i=i+1|0;if((i|0)==(j|0))break;else y=y+1|0}s=s+1|0;if((s|0)==(e|0))break;else r=r+j|0}Mq(k);u=g;return}function Re(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=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;c=a+4|0;d=f[c>>2]|0;e=a+100|0;if(d>>>0<(f[e>>2]|0)>>>0){f[c>>2]=d+1;g=h[d>>0]|0}else g=Si(a)|0;switch(g|0){case 43:case 45:{d=(g|0)==45&1;i=f[c>>2]|0;if(i>>>0<(f[e>>2]|0)>>>0){f[c>>2]=i+1;j=h[i>>0]|0}else j=Si(a)|0;if((b|0)!=0&(j+-48|0)>>>0>9?(f[e>>2]|0)!=0:0){f[c>>2]=(f[c>>2]|0)+-1;k=d;l=j}else{k=d;l=j}break}default:{k=0;l=g}}if((l+-48|0)>>>0>9)if(!(f[e>>2]|0)){m=-2147483648;n=0}else{f[c>>2]=(f[c>>2]|0)+-1;m=-2147483648;n=0}else{g=0;j=l;while(1){g=j+-48+(g*10|0)|0;l=f[c>>2]|0;if(l>>>0<(f[e>>2]|0)>>>0){f[c>>2]=l+1;o=h[l>>0]|0}else o=Si(a)|0;if(!((o+-48|0)>>>0<10&(g|0)<214748364))break;else j=o}j=((g|0)<0)<<31>>31;if((o+-48|0)>>>0<10){l=o;d=g;b=j;while(1){i=un(d|0,b|0,10,0)|0;p=I;q=Vn(l|0,((l|0)<0)<<31>>31|0,-48,-1)|0;r=Vn(q|0,I|0,i|0,p|0)|0;p=I;i=f[c>>2]|0;if(i>>>0<(f[e>>2]|0)>>>0){f[c>>2]=i+1;s=h[i>>0]|0}else s=Si(a)|0;if((s+-48|0)>>>0<10&((p|0)<21474836|(p|0)==21474836&r>>>0<2061584302)){l=s;d=r;b=p}else{t=s;u=r;v=p;break}}}else{t=o;u=g;v=j}if((t+-48|0)>>>0<10)do{t=f[c>>2]|0;if(t>>>0<(f[e>>2]|0)>>>0){f[c>>2]=t+1;w=h[t>>0]|0}else w=Si(a)|0}while((w+-48|0)>>>0<10);if(f[e>>2]|0)f[c>>2]=(f[c>>2]|0)+-1;c=(k|0)!=0;k=Xn(0,0,u|0,v|0)|0;m=c?I:v;n=c?k:u}I=m;return n|0}function Se(a){a=a|0;var b=0,c=0,d=0,e=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;b=a+1176|0;c=f[b>>2]|0;if(c|0){d=a+1180|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);Oq(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}Oq(g)}g=a+1164|0;b=f[g>>2]|0;if(b|0){j=a+1168|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);Oq(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}Oq(l)}l=f[a+1152>>2]|0;if(l|0){g=a+1156|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);Oq(l)}l=f[a+1140>>2]|0;if(l|0){m=a+1144|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);Oq(l)}l=f[a+1128>>2]|0;if(!l){n=a+1108|0;jl(n);o=a+1088|0;jl(o);p=a+1068|0;jl(p);q=a+1036|0;Fj(q);r=a+12|0;Nh(r);return}g=a+1132|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);Oq(l);n=a+1108|0;jl(n);o=a+1088|0;jl(o);p=a+1068|0;jl(p);q=a+1036|0;Fj(q);r=a+12|0;Nh(r);return}function Te(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=u;u=u+16|0;e=d;g=a+4|0;h=f[g>>2]|0;i=f[(f[a>>2]|0)+52>>2]|0;if(!h){if(!(Sa[i&31](a,c,0)|0)){j=0;u=d;return j|0}}else if(!(Sa[i&31](a,c,f[(f[h+4>>2]|0)+80>>2]|0)|0)){j=0;u=d;return j|0}if(!(b[a+28>>0]|0)){j=1;u=d;return j|0}h=f[a+8>>2]|0;i=f[a+32>>2]|0;a=f[h+80>>2]|0;f[e>>2]=0;k=e+4|0;f[k>>2]=0;f[e+8>>2]=0;do if(a)if(a>>>0>1073741823)aq(e);else{l=a<<2;m=ln(l)|0;f[e>>2]=m;n=m+(a<<2)|0;f[e+8>>2]=n;sj(m|0,0,l|0)|0;f[k>>2]=n;o=m;p=n;q=m;break}else{o=0;p=0;q=0}while(0);e=f[c+4>>2]|0;a=f[c>>2]|0;c=a;a:do if((e|0)!=(a|0)){m=e-a>>2;if(b[h+84>>0]|0){n=0;while(1){f[o+(f[c+(n<<2)>>2]<<2)>>2]=n;n=n+1|0;if(n>>>0>=m>>>0)break a}}n=f[h+68>>2]|0;l=0;do{f[o+(f[n+(f[c+(l<<2)>>2]<<2)>>2]<<2)>>2]=l;l=l+1|0}while(l>>>0>>0)}while(0);c=f[(f[(f[g>>2]|0)+4>>2]|0)+80>>2]|0;b:do if(c|0){g=f[i+68>>2]|0;if(b[h+84>>0]|0){a=0;while(1){f[g+(a<<2)>>2]=f[o+(a<<2)>>2];a=a+1|0;if(a>>>0>=c>>>0)break b}}a=f[h+68>>2]|0;e=0;do{f[g+(e<<2)>>2]=f[o+(f[a+(e<<2)>>2]<<2)>>2];e=e+1|0}while(e>>>0>>0)}while(0);if(o|0){if((p|0)!=(o|0))f[k>>2]=p+(~((p+-4-o|0)>>>2)<<2);Oq(q)}j=1;u=d;return j|0}function Ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;Oh(a+12|0);wn(a+1036|0);vo(a+1068|0);vo(a+1088|0);vo(a+1108|0);e=a+1128|0;f[e>>2]=0;g=a+1132|0;f[g>>2]=0;f[a+1136>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)aq(e);else{i=b<<2;j=ln(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+1136>>2]=k;sj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+1140|0;f[g>>2]=0;e=a+1144|0;f[e>>2]=0;f[a+1148>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+1148>>2]=g;sj(i|0,0,k|0)|0;f[e>>2]=g}g=a+1152|0;f[g>>2]=0;e=a+1156|0;f[e>>2]=0;f[a+1160>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+1160>>2]=g;sj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;sj(i|0,0,k|0)|0;f[e>>2]=j}lk(a+1164|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);Oq(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=ln(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;sj(k|0,0,h|0)|0;f[j>>2]=e}lk(a+1176|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);Oq(g);u=c;return}function Ve(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0;g=u;u=u+16|0;h=g;i=b+16|0;f[a>>2]=f[i>>2];f[a+4>>2]=f[i+4>>2];f[a+8>>2]=f[i+8>>2];f[a+12>>2]=f[i+12>>2];f[a+16>>2]=f[i+16>>2];f[a+20>>2]=f[i+20>>2];j=a+8|0;f[j>>2]=(f[j>>2]|0)+d;j=(d|0)>0;if(j){k=b+4|0;l=a+16|0;m=a+12|0;n=f[b>>2]|0;o=n;q=0;r=o;s=n;n=o;while(1){o=f[c+(q<<2)>>2]|0;t=f[k>>2]|0;if(t-s>>2>>>0>o>>>0){v=r;w=n}else{x=o+1|0;f[h>>2]=0;y=t-s>>2;z=s;A=t;if(x>>>0<=y>>>0)if(x>>>0>>0?(t=z+(x<<2)|0,(t|0)!=(A|0)):0){f[k>>2]=A+(~((A+-4-t|0)>>>2)<<2);B=r}else B=r;else{Ch(b,x-y|0,h);B=f[b>>2]|0}v=B;w=B}y=w+(o<<2)|0;x=f[y>>2]|0;s=w;if((x|0)<=1)if((x|0)==0?(f[l>>2]=(f[l>>2]|0)+1,o>>>0>(f[m>>2]|0)>>>0):0){f[m>>2]=o;C=0.0}else C=0.0;else{D=+(x|0);C=+Zg(D)*D}x=(f[y>>2]|0)+1|0;f[y>>2]=x;D=+(x|0);E=+Zg(D)*D-C;p[a>>3]=+p[a>>3]+E;q=q+1|0;if((q|0)==(d|0))break;else{r=v;n=w}}}if(e){f[i>>2]=f[a>>2];f[i+4>>2]=f[a+4>>2];f[i+8>>2]=f[a+8>>2];f[i+12>>2]=f[a+12>>2];f[i+16>>2]=f[a+16>>2];u=g;return}if(!j){u=g;return}j=f[b>>2]|0;b=0;do{a=j+(f[c+(b<<2)>>2]<<2)|0;f[a>>2]=(f[a>>2]|0)+-1;b=b+1|0}while((b|0)!=(d|0));u=g;return}function We(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(f[c>>2]|0)+(4-1)&~(4-1);e=f[d>>2]|0;f[c>>2]=d+4;f[a>>2]=e;break a;break}case 10:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a;break}case 11:{d=(f[c>>2]|0)+(4-1)&~(4-1);e=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=e;f[d+4>>2]=0;break a;break}case 12:{d=(f[c>>2]|0)+(8-1)&~(8-1);e=d;g=f[e>>2]|0;h=f[e+4>>2]|0;f[c>>2]=d+8;d=a;f[d>>2]=g;f[d+4>>2]=h;break a;break}case 13:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=(d&65535)<<16>>16;d=a;f[d>>2]=h;f[d+4>>2]=((h|0)<0)<<31>>31;break a;break}case 14:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=a;f[h>>2]=d&65535;f[h+4>>2]=0;break a;break}case 15:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=(d&255)<<24>>24;d=a;f[d>>2]=h;f[d+4>>2]=((h|0)<0)<<31>>31;break a;break}case 16:{h=(f[c>>2]|0)+(4-1)&~(4-1);d=f[h>>2]|0;f[c>>2]=h+4;h=a;f[h>>2]=d&255;f[h+4>>2]=0;break a;break}case 17:{h=(f[c>>2]|0)+(8-1)&~(8-1);i=+p[h>>3];f[c>>2]=h+8;p[a>>3]=i;break a;break}case 18:{h=(f[c>>2]|0)+(8-1)&~(8-1);i=+p[h>>3];f[c>>2]=h+8;p[a>>3]=i;break a;break}default:break a}while(0);while(0);return}function Xe(a){a=a|0;var c=0,d=0,e=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;c=u;u=u+16|0;d=c+4|0;e=c;g=c+8|0;if(!(Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0)){h=0;u=c;return h|0}i=a+44|0;j=f[i>>2]|0;k=a+8|0;l=a+12|0;m=f[l>>2]|0;n=f[k>>2]|0;b[g>>0]=(m-n|0)>>>2;o=j+16|0;p=f[o+4>>2]|0;if((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0){q=k;r=n;s=m}else{f[e>>2]=f[j+4>>2];f[d>>2]=f[e>>2];Me(j,d,g,g+1|0)|0;q=k;r=f[k>>2]|0;s=f[l>>2]|0}a:do if((r|0)!=(s|0)){l=a+4|0;k=r;while(1){g=f[k>>2]|0;k=k+4|0;if(!(Sa[f[(f[g>>2]|0)+8>>2]&31](g,a,f[l>>2]|0)|0)){h=0;break}if((k|0)==(s|0))break a}u=c;return h|0}while(0);if(!(xc(a)|0)){h=0;u=c;return h|0}s=a+32|0;r=f[s>>2]|0;k=a+36|0;l=f[k>>2]|0;b:do if((r|0)!=(l|0)){g=r;do{if(!(Ra[f[(f[a>>2]|0)+40>>2]&127](a,f[g>>2]|0)|0)){h=0;t=18;break}g=g+4|0}while((g|0)!=(l|0));if((t|0)==18){u=c;return h|0}g=f[s>>2]|0;d=f[k>>2]|0;if((g|0)!=(d|0)){j=g;while(1){g=f[(f[q>>2]|0)+(f[j>>2]<<2)>>2]|0;j=j+4|0;if(!(Ra[f[(f[g>>2]|0)+12>>2]&127](g,f[i>>2]|0)|0)){h=0;break}if((j|0)==(d|0))break b}u=c;return h|0}}while(0);h=Qa[f[(f[a>>2]|0)+44>>2]&127](a)|0;u=c;return h|0}function Ye(a,b){a=a|0;b=b|0;ld(a,b);ld(a+32|0,b);ld(a+64|0,b);ld(a+96|0,b);ld(a+128|0,b);ld(a+160|0,b);ld(a+192|0,b);ld(a+224|0,b);ld(a+256|0,b);ld(a+288|0,b);ld(a+320|0,b);ld(a+352|0,b);ld(a+384|0,b);ld(a+416|0,b);ld(a+448|0,b);ld(a+480|0,b);ld(a+512|0,b);ld(a+544|0,b);ld(a+576|0,b);ld(a+608|0,b);ld(a+640|0,b);ld(a+672|0,b);ld(a+704|0,b);ld(a+736|0,b);ld(a+768|0,b);ld(a+800|0,b);ld(a+832|0,b);ld(a+864|0,b);ld(a+896|0,b);ld(a+928|0,b);ld(a+960|0,b);ld(a+992|0,b);ld(a+1024|0,b);return}function Ze(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0;c=u;u=u+32|0;d=c;e=a+4|0;g=f[a>>2]|0;h=(f[e>>2]|0)-g>>2;i=h+1|0;if(i>>>0>1073741823)aq(a);j=a+8|0;k=(f[j>>2]|0)-g|0;g=k>>1;l=k>>2>>>0<536870911?(g>>>0>>0?i:g):1073741823;f[d+12>>2]=0;f[d+16>>2]=a+8;do if(l)if(l>>>0>1073741823){g=ra(8)|0;Oo(g,16035);f[g>>2]=7256;va(g|0,1112,110)}else{m=ln(l<<2)|0;break}else m=0;while(0);f[d>>2]=m;g=m+(h<<2)|0;h=d+8|0;i=d+4|0;f[i>>2]=g;k=m+(l<<2)|0;l=d+12|0;f[l>>2]=k;m=f[b>>2]|0;f[b>>2]=0;f[g>>2]=m;m=g+4|0;f[h>>2]=m;b=f[a>>2]|0;n=f[e>>2]|0;if((n|0)==(b|0)){o=g;p=l;q=h;r=b;s=m;t=n;v=k;w=o;f[a>>2]=w;f[i>>2]=r;f[e>>2]=s;f[q>>2]=t;x=f[j>>2]|0;f[j>>2]=v;f[p>>2]=x;f[d>>2]=r;ki(d);u=c;return}else{y=n;z=g}do{y=y+-4|0;g=f[y>>2]|0;f[y>>2]=0;f[z+-4>>2]=g;z=(f[i>>2]|0)+-4|0;f[i>>2]=z}while((y|0)!=(b|0));o=z;p=l;q=h;r=f[a>>2]|0;s=f[h>>2]|0;t=f[e>>2]|0;v=f[l>>2]|0;w=o;f[a>>2]=w;f[i>>2]=r;f[e>>2]=s;f[q>>2]=t;x=f[j>>2]|0;f[j>>2]=v;f[p>>2]=x;f[d>>2]=r;ki(d);u=c;return}function _e(a,c){a=a|0;c=c|0;var d=0,e=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;d=u;u=u+32|0;e=d+12|0;g=d;h=nl(c,0)|0;if(!h){f[a>>2]=0;u=d;return}i=f[c+100>>2]|0;j=f[c+96>>2]|0;c=i-j|0;k=(c|0)/12|0;f[e>>2]=0;l=e+4|0;f[l>>2]=0;f[e+8>>2]=0;m=j;do if(c)if(k>>>0>357913941)aq(e);else{n=ln(c)|0;f[e>>2]=n;f[e+8>>2]=n+(k*12|0);sj(n|0,0,c|0)|0;f[l>>2]=n+c;o=n;break}else o=0;while(0);f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;a:do if((i|0)!=(j|0)){c=g+4|0;n=g+8|0;if(b[h+84>>0]|0){p=0;while(1){q=m+(p*12|0)|0;f[g>>2]=f[q>>2];f[g+4>>2]=f[q+4>>2];f[g+8>>2]=f[q+8>>2];f[o+(p*12|0)>>2]=f[g>>2];f[o+(p*12|0)+4>>2]=f[c>>2];f[o+(p*12|0)+8>>2]=f[n>>2];p=p+1|0;if(p>>>0>=k>>>0)break a}}p=f[h+68>>2]|0;q=0;do{r=f[p+(f[m+(q*12|0)>>2]<<2)>>2]|0;f[g>>2]=r;s=f[p+(f[m+(q*12|0)+4>>2]<<2)>>2]|0;f[c>>2]=s;t=f[p+(f[m+(q*12|0)+8>>2]<<2)>>2]|0;f[n>>2]=t;f[o+(q*12|0)>>2]=r;f[o+(q*12|0)+4>>2]=s;f[o+(q*12|0)+8>>2]=t;q=q+1|0}while(q>>>0>>0)}while(0);Kj(a,e);a=f[e>>2]|0;if(a|0){e=f[l>>2]|0;if((e|0)!=(a|0))f[l>>2]=e+(~(((e+-12-a|0)>>>0)/12|0)*12|0);Oq(a)}u=d;return}function $e(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;wn(a+12|0);vo(a+44|0);vo(a+64|0);vo(a+84|0);e=a+104|0;f[e>>2]=0;g=a+108|0;f[g>>2]=0;f[a+112>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)aq(e);else{i=b<<2;j=ln(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+112>>2]=k;sj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+116|0;f[g>>2]=0;e=a+120|0;f[e>>2]=0;f[a+124>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+124>>2]=g;sj(i|0,0,k|0)|0;f[e>>2]=g}g=a+128|0;f[g>>2]=0;e=a+132|0;f[e>>2]=0;f[a+136>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+136>>2]=g;sj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;sj(i|0,0,k|0)|0;f[e>>2]=j}lk(a+140|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);Oq(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=ln(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;sj(k|0,0,h|0)|0;f[j>>2]=e}lk(a+152|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);Oq(g);u=c;return}function af(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=u;u=u+16|0;d=c;f[a>>2]=0;f[a+8>>2]=b;vo(a+12|0);vo(a+32|0);vo(a+52|0);vo(a+72|0);e=a+92|0;f[e>>2]=0;g=a+96|0;f[g>>2]=0;f[a+100>>2]=0;h=(b|0)==0;do if(!h)if(b>>>0>1073741823)aq(e);else{i=b<<2;j=ln(i)|0;f[e>>2]=j;k=j+(b<<2)|0;f[a+100>>2]=k;sj(j|0,0,i|0)|0;f[g>>2]=k;break}while(0);g=a+104|0;f[g>>2]=0;e=a+108|0;f[e>>2]=0;f[a+112>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+112>>2]=g;sj(i|0,0,k|0)|0;f[e>>2]=g}g=a+116|0;f[g>>2]=0;e=a+120|0;f[e>>2]=0;f[a+124>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[g>>2]=i;g=i+(b<<2)|0;f[a+124>>2]=g;sj(i|0,0,k|0)|0;f[e>>2]=g}g=b<<5|1;f[d>>2]=0;e=d+4|0;f[e>>2]=0;f[d+8>>2]=0;if(!h){k=b<<2;i=ln(k)|0;f[d>>2]=i;j=i+(b<<2)|0;f[d+8>>2]=j;sj(i|0,0,k|0)|0;f[e>>2]=j}lk(a+128|0,g,d);j=f[d>>2]|0;if(j|0){k=f[e>>2]|0;if((k|0)!=(j|0))f[e>>2]=k+(~((k+-4-j|0)>>>2)<<2);Oq(j)}f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;if(!h){h=b<<2;k=ln(h)|0;f[d>>2]=k;e=k+(b<<2)|0;f[d+8>>2]=e;sj(k|0,0,h|0)|0;f[j>>2]=e}lk(a+140|0,g,d);g=f[d>>2]|0;if(!g){u=c;return}d=f[j>>2]|0;if((d|0)!=(g|0))f[j>>2]=d+(~((d+-4-g|0)>>>2)<<2);Oq(g);u=c;return}function bf(a,c){a=a|0;c=c|0;var d=0,e=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;d=ln(40)|0;e=d+16|0;pj(e,c);pj(d+28|0,c+12|0);c=a+4|0;g=f[c>>2]|0;do if(g){h=b[d+27>>0]|0;i=h<<24>>24<0;j=i?f[d+20>>2]|0:h&255;h=i?f[e>>2]|0:e;i=g;while(1){k=i+16|0;l=b[k+11>>0]|0;m=l<<24>>24<0;n=m?f[i+20>>2]|0:l&255;l=n>>>0>>0?n:j;if((l|0)!=0?(o=Vk(h,m?f[k>>2]|0:k,l)|0,(o|0)!=0):0)if((o|0)<0)p=7;else p=9;else if(j>>>0>>0)p=7;else p=9;if((p|0)==7){p=0;n=f[i>>2]|0;if(!n){p=8;break}else q=n}else if((p|0)==9){p=0;r=i+4|0;n=f[r>>2]|0;if(!n){p=11;break}else q=n}i=q}if((p|0)==8){s=i;t=i;break}else if((p|0)==11){s=i;t=r;break}}else{s=c;t=c}while(0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=s;f[t>>2]=d;s=f[f[a>>2]>>2]|0;if(!s){u=d;v=a+4|0;w=f[v>>2]|0;Oe(w,u);x=a+8|0;y=f[x>>2]|0;z=y+1|0;f[x>>2]=z;return d|0}f[a>>2]=s;u=f[t>>2]|0;v=a+4|0;w=f[v>>2]|0;Oe(w,u);x=a+8|0;y=f[x>>2]|0;z=y+1|0;f[x>>2]=z;return d|0}function cf(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3680;wi(a+200|0);b=f[a+184>>2]|0;if(b|0){c=a+188|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}kj(a+172|0);b=f[a+152>>2]|0;if(b|0){d=a+156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+140>>2]|0;if(b|0)Oq(b);b=f[a+128>>2]|0;if(b|0){c=b;do{b=c;c=f[c>>2]|0;Oq(b)}while((c|0)!=0)}c=a+120|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)Oq(b);b=f[a+108>>2]|0;if(b|0){c=a+112|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);Oq(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+84>>2]|0;if(b|0)Oq(b);b=f[a+72>>2]|0;if(b|0){c=a+76|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+28>>2]|0;if(b|0)Oq(b);b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=a+12|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;Ii(a);Oq(a);return}function df(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=a+140|0;c=f[b>>2]|0;if(c|0){d=a+144|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);Oq(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}Oq(g)}g=a+128|0;b=f[g>>2]|0;if(b|0){j=a+132|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);Oq(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}Oq(l)}l=f[a+116>>2]|0;if(l|0){g=a+120|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);Oq(l)}l=f[a+104>>2]|0;if(l|0){m=a+108|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);Oq(l)}l=f[a+92>>2]|0;if(!l){n=a+72|0;jl(n);o=a+52|0;jl(o);p=a+32|0;jl(p);q=a+12|0;jl(q);return}g=a+96|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);Oq(l);n=a+72|0;jl(n);o=a+52|0;jl(o);p=a+32|0;jl(p);q=a+12|0;jl(q);return}function ef(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=a+152|0;c=f[b>>2]|0;if(c|0){d=a+156|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);Oq(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}Oq(g)}g=a+140|0;b=f[g>>2]|0;if(b|0){j=a+144|0;h=f[j>>2]|0;if((h|0)==(b|0))l=b;else{c=h;while(1){h=c+-12|0;f[j>>2]=h;d=f[h>>2]|0;if(!d)m=h;else{h=c+-8|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);Oq(d);m=f[j>>2]|0}if((m|0)==(b|0))break;else c=m}l=f[g>>2]|0}Oq(l)}l=f[a+128>>2]|0;if(l|0){g=a+132|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);Oq(l)}l=f[a+116>>2]|0;if(l|0){m=a+120|0;g=f[m>>2]|0;if((g|0)!=(l|0))f[m>>2]=g+(~((g+-4-l|0)>>>2)<<2);Oq(l)}l=f[a+104>>2]|0;if(!l){n=a+84|0;jl(n);o=a+64|0;jl(o);p=a+44|0;jl(p);q=a+12|0;Fj(q);return}g=a+108|0;m=f[g>>2]|0;if((m|0)!=(l|0))f[g>>2]=m+(~((m+-4-l|0)>>>2)<<2);Oq(l);n=a+84|0;jl(n);o=a+64|0;jl(o);p=a+44|0;jl(p);q=a+12|0;Fj(q);return}function ff(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3480;uj(a+200|0);b=f[a+184>>2]|0;if(b|0){c=a+188|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}kj(a+172|0);b=f[a+152>>2]|0;if(b|0){d=a+156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+140>>2]|0;if(b|0)Oq(b);b=f[a+128>>2]|0;if(b|0){c=b;do{b=c;c=f[c>>2]|0;Oq(b)}while((c|0)!=0)}c=a+120|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)Oq(b);b=f[a+108>>2]|0;if(b|0){c=a+112|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);Oq(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+84>>2]|0;if(b|0)Oq(b);b=f[a+72>>2]|0;if(b|0){c=a+76|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+28>>2]|0;if(b|0)Oq(b);b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=a+12|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;Ii(a);Oq(a);return}function gf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=u;u=u+144|0;g=e+136|0;h=e+104|0;i=e;j=ln(124)|0;k=f[c+8>>2]|0;f[j+4>>2]=0;f[j>>2]=3656;f[j+12>>2]=3636;f[j+100>>2]=0;f[j+104>>2]=0;f[j+108>>2]=0;l=j+16|0;m=l+80|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));f[j+112>>2]=k;f[j+116>>2]=d;n=j+120|0;f[n>>2]=0;o=j;f[h>>2]=3636;p=h+4|0;q=p+4|0;f[q>>2]=0;f[q+4>>2]=0;f[q+8>>2]=0;f[q+12>>2]=0;f[q+16>>2]=0;f[q+20>>2]=0;q=f[c+12>>2]|0;f[i+4>>2]=3636;f[i+92>>2]=0;f[i+96>>2]=0;f[i+100>>2]=0;l=i+8|0;m=l+80|0;do{f[l>>2]=0;l=l+4|0}while((l|0)<(m|0));l=q;f[p>>2]=l;m=((f[l+4>>2]|0)-(f[q>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;qh(h+8|0,m,g);Va[f[(f[h>>2]|0)+8>>2]&127](h);f[i>>2]=f[p>>2];fg(i+4|0,h)|0;f[i+36>>2]=q;f[i+40>>2]=d;f[i+44>>2]=k;f[i+48>>2]=j;f[n>>2]=c+72;Sg(j,i);f[a>>2]=o;Qi(i);f[h>>2]=3636;i=f[h+20>>2]|0;if(i|0)Oq(i);i=f[h+8>>2]|0;if(!i){u=e;return}Oq(i);u=e;return}function hf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+48|0;d=c+44|0;e=c+40|0;g=c+36|0;h=c+32|0;i=c;f[h>>2]=f[a+60>>2];j=b+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,h,h+4|0)|0}wn(i);tk(i);if((f[h>>2]|0)>0){k=a+56|0;l=1;m=0;do{n=l;l=(f[(f[k>>2]|0)+(m>>>5<<2)>>2]&1<<(m&31)|0)!=0;fj(i,n^l^1);m=m+1|0}while((m|0)<(f[h>>2]|0))}ld(i,b);f[g>>2]=f[a+12>>2];h=j;m=f[h>>2]|0;l=f[h+4>>2]|0;if((l|0)>0|(l|0)==0&m>>>0>0){o=l;p=m}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;m=j;o=f[m+4>>2]|0;p=f[m>>2]|0}f[g>>2]=f[a+20>>2];if((o|0)>0|(o|0)==0&p>>>0>0){Fj(i);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;Fj(i);u=c;return 1}function jf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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;g=u;u=u+16|0;h=g;if((f[c+56>>2]|0)==-1){i=-1;u=g;return i|0}j=ln(96)|0;tl(j,c);f[h>>2]=j;j=vh(a,h)|0;c=f[h>>2]|0;f[h>>2]=0;if(c|0){h=c+88|0;k=f[h>>2]|0;f[h>>2]=0;if(k|0){h=f[k+8>>2]|0;if(h|0){l=k+12|0;if((f[l>>2]|0)!=(h|0))f[l>>2]=h;Oq(h)}Oq(k)}k=f[c+68>>2]|0;if(k|0){h=c+72|0;l=f[h>>2]|0;if((l|0)!=(k|0))f[h>>2]=l+(~((l+-4-k|0)>>>2)<<2);Oq(k)}k=c+64|0;l=f[k>>2]|0;f[k>>2]=0;if(l|0){k=f[l>>2]|0;if(k|0){h=l+4|0;if((f[h>>2]|0)!=(k|0))f[h>>2]=k;Oq(k)}Oq(l)}Oq(c)}c=a+8|0;l=(f[c>>2]|0)+(j<<2)|0;k=f[l>>2]|0;do if(!d){h=f[a+80>>2]|0;b[k+84>>0]=0;m=k+68|0;n=k+72|0;o=f[n>>2]|0;p=f[m>>2]|0;q=o-p>>2;r=o;if(h>>>0>q>>>0){Ch(m,h-q|0,6220);break}if(h>>>0>>0?(q=p+(h<<2)|0,(q|0)!=(r|0)):0)f[n>>2]=r+(~((r+-4-q|0)>>>2)<<2)}else{b[k+84>>0]=1;q=f[k+68>>2]|0;r=k+72|0;n=f[r>>2]|0;if((n|0)==(q|0))s=k;else{f[r>>2]=n+(~((n+-4-q|0)>>>2)<<2);s=f[l>>2]|0}f[s+80>>2]=f[a+80>>2]}while(0);if(!e){i=j;u=g;return i|0}Bj(f[(f[c>>2]|0)+(j<<2)>>2]|0,e)|0;i=j;u=g;return i|0}function kf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,v=0,w=0,x=0,y=0,z=0,A=0;d=u;u=u+32|0;h=d+24|0;i=d+16|0;j=d;k=d+8|0;f[a+52>>2]=e;f[a+44>>2]=g;g=Lq(e>>>0>1073741823?-1:e<<2)|0;l=a+48|0;m=f[l>>2]|0;f[l>>2]=g;if(m|0)Mq(m);m=a+36|0;g=f[m>>2]|0;n=f[g+4>>2]|0;o=f[g>>2]|0;p=n-o|0;if((p|0)<=0){u=d;return 1}q=(p>>>2)+-1|0;p=a+8|0;r=i+4|0;s=j+4|0;t=h+4|0;if(n-o>>2>>>0>q>>>0){v=q;w=o}else{x=g;aq(x)}while(1){f[k>>2]=f[w+(v<<2)>>2];f[h>>2]=f[k>>2];Bc(a,h,b,v);g=X(v,e)|0;o=b+(g<<2)|0;q=f[l>>2]|0;n=c+(g<<2)|0;g=f[o+4>>2]|0;y=f[q>>2]|0;z=f[q+4>>2]|0;f[i>>2]=f[o>>2];f[r>>2]=g;f[j>>2]=y;f[s>>2]=z;Od(h,p,i,j);f[n>>2]=f[h>>2];f[n+4>>2]=f[t>>2];v=v+-1|0;if((v|0)<=-1){A=5;break}n=f[m>>2]|0;w=f[n>>2]|0;if((f[n+4>>2]|0)-w>>2>>>0<=v>>>0){x=n;A=6;break}}if((A|0)==5){u=d;return 1}else if((A|0)==6)aq(x);return 0}function lf(a,c){a=a|0;c=c|0;var d=0,e=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;d=f[c>>2]|0;c=f[d>>2]|0;e=f[a+4>>2]|0;g=f[d+4>>2]|0;h=e+-1|0;i=(h&e|0)==0;if(!i)if(g>>>0>>0)j=g;else j=(g>>>0)%(e>>>0)|0;else j=h&g;g=(f[a>>2]|0)+(j<<2)|0;k=f[g>>2]|0;while(1){l=f[k>>2]|0;if((l|0)==(d|0))break;else k=l}if((k|0)!=(a+8|0)){l=f[k+4>>2]|0;if(!i)if(l>>>0>>0)m=l;else m=(l>>>0)%(e>>>0)|0;else m=l&h;if((m|0)==(j|0)){n=c;o=21}else o=13}else o=13;do if((o|0)==13){if(c|0){m=f[c+4>>2]|0;if(!i)if(m>>>0>>0)p=m;else p=(m>>>0)%(e>>>0)|0;else p=m&h;if((p|0)==(j|0)){q=c;r=c;o=22;break}}f[g>>2]=0;n=f[d>>2]|0;o=21}while(0);if((o|0)==21){g=n;if(!n)s=g;else{q=n;r=g;o=22}}if((o|0)==22){o=f[q+4>>2]|0;if(!i)if(o>>>0>>0)t=o;else t=(o>>>0)%(e>>>0)|0;else t=o&h;if((t|0)==(j|0))s=r;else{f[(f[a>>2]|0)+(t<<2)>>2]=k;s=f[d>>2]|0}}f[k>>2]=s;f[d>>2]=0;s=a+12|0;f[s>>2]=(f[s>>2]|0)+-1;if(!d)return c|0;s=d+8|0;a=f[d+20>>2]|0;if(a|0){k=d+24|0;if((f[k>>2]|0)!=(a|0))f[k>>2]=a;Oq(a)}if((b[s+11>>0]|0)<0)Oq(f[s>>2]|0);Oq(d);return c|0}function mf(a){a=a|0;var b=0,c=0,d=0,e=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,v=0,w=0,x=0,y=0;b=u;u=u+16|0;c=b+4|0;d=b;f[c>>2]=0;e=c+4|0;f[e>>2]=0;f[c+8>>2]=0;g=a+52|0;h=f[g>>2]|0;i=(f[h+100>>2]|0)-(f[h+96>>2]|0)|0;j=(i|0)/12|0;if(!i){k=0;l=0}else{i=c+8|0;m=0;n=0;o=h;h=0;p=0;while(1){q=f[o+96>>2]|0;r=f[q+(n*12|0)>>2]|0;s=r-m|0;t=((s|0)>-1?s:0-s|0)<<1|s>>>31;f[d>>2]=t;if((h|0)==(p|0)){Ri(c,d);v=f[e>>2]|0;w=f[i>>2]|0}else{f[h>>2]=t;t=h+4|0;f[e>>2]=t;v=t;w=p}t=f[q+(n*12|0)+4>>2]|0;s=t-r|0;r=((s|0)>-1?s:0-s|0)<<1|s>>>31;f[d>>2]=r;if((v|0)==(w|0)){Ri(c,d);x=f[e>>2]|0;y=f[i>>2]|0}else{f[v>>2]=r;r=v+4|0;f[e>>2]=r;x=r;y=w}r=f[q+(n*12|0)+8>>2]|0;q=r-t|0;t=((q|0)>-1?q:0-q|0)<<1|q>>>31;f[d>>2]=t;if((x|0)==(y|0))Ri(c,d);else{f[x>>2]=t;f[e>>2]=x+4}t=n+1|0;if(t>>>0>=j>>>0)break;m=r;n=t;o=f[g>>2]|0;h=f[e>>2]|0;p=f[i>>2]|0}k=f[c>>2]|0;l=f[e>>2]|0}Mc(k,l-k>>2,1,0,f[a+44>>2]|0)|0;a=f[c>>2]|0;if(!a){u=b;return 1}c=f[e>>2]|0;if((c|0)!=(a|0))f[e>>2]=c+(~((c+-4-a|0)>>>2)<<2);Oq(a);u=b;return 1}function nf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+48|0;d=c+44|0;e=c+40|0;g=c+36|0;h=c+32|0;i=c;f[h>>2]=f[a+80>>2];j=b+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,h,h+4|0)|0}wn(i);tk(i);if((f[h>>2]|0)>0){k=a+76|0;l=1;m=0;do{n=l;l=(f[(f[k>>2]|0)+(m>>>5<<2)>>2]&1<<(m&31)|0)!=0;fj(i,n^l^1);m=m+1|0}while((m|0)<(f[h>>2]|0))}ld(i,b);f[g>>2]=f[a+12>>2];h=j;m=f[h>>2]|0;l=f[h+4>>2]|0;if((l|0)>0|(l|0)==0&m>>>0>0){o=l;p=m}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;m=j;o=f[m+4>>2]|0;p=f[m>>2]|0}f[g>>2]=f[a+16>>2];if((o|0)>0|(o|0)==0&p>>>0>0){Fj(i);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;Fj(i);u=c;return 1}function of(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=u;u=u+16|0;d=c+12|0;e=c+8|0;g=c+4|0;h=c;if(!b){i=ln(76)|0;j=ln(12)|0;k=f[(f[a+4>>2]|0)+80>>2]|0;f[j+4>>2]=0;f[j>>2]=3908;f[j+8>>2]=k;f[h>>2]=j;rl(i,h,0);j=i;f[g>>2]=j;i=a+12|0;k=f[i>>2]|0;if(k>>>0<(f[a+16>>2]|0)>>>0){f[g>>2]=0;f[k>>2]=j;f[i>>2]=k+4;l=g}else{Qg(a+8|0,g);l=g}g=f[l>>2]|0;f[l>>2]=0;if(g|0)Va[f[(f[g>>2]|0)+4>>2]&127](g);g=f[h>>2]|0;f[h>>2]=0;if(!g){u=c;return 1}Va[f[(f[g>>2]|0)+4>>2]&127](g);u=c;return 1}g=f[f[a+8>>2]>>2]|0;f[d>>2]=b;a=g+4|0;h=g+8|0;l=f[h>>2]|0;if((l|0)==(f[g+12>>2]|0))Ri(a,d);else{f[l>>2]=b;f[h>>2]=l+4}l=f[d>>2]|0;b=g+16|0;k=g+20|0;g=f[k>>2]|0;i=f[b>>2]|0;j=g-i>>2;m=i;if((l|0)<(j|0)){n=m;o=l}else{i=l+1|0;f[e>>2]=-1;p=g;if(i>>>0<=j>>>0)if(i>>>0>>0?(g=m+(i<<2)|0,(g|0)!=(p|0)):0){f[k>>2]=p+(~((p+-4-g|0)>>>2)<<2);q=l;r=m}else{q=l;r=m}else{Ch(b,i-j|0,e);q=f[d>>2]|0;r=f[b>>2]|0}n=r;o=q}f[n+(o<<2)>>2]=((f[h>>2]|0)-(f[a>>2]|0)>>2)+-1;u=c;return 1}function pf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,v=0,w=0,x=0,y=0,z=0,A=0;d=u;u=u+32|0;h=d+24|0;i=d+16|0;j=d;k=d+8|0;f[a+52>>2]=e;f[a+44>>2]=g;g=Lq(e>>>0>1073741823?-1:e<<2)|0;l=a+48|0;m=f[l>>2]|0;f[l>>2]=g;if(m|0)Mq(m);m=a+36|0;g=f[m>>2]|0;n=f[g+4>>2]|0;o=f[g>>2]|0;p=n-o|0;if((p|0)<=0){u=d;return 1}q=(p>>>2)+-1|0;p=a+8|0;r=i+4|0;s=j+4|0;t=h+4|0;if(n-o>>2>>>0>q>>>0){v=q;w=o}else{x=g;aq(x)}while(1){f[k>>2]=f[w+(v<<2)>>2];f[h>>2]=f[k>>2];Ac(a,h,b,v);g=X(v,e)|0;o=b+(g<<2)|0;q=f[l>>2]|0;n=c+(g<<2)|0;g=f[o+4>>2]|0;y=f[q>>2]|0;z=f[q+4>>2]|0;f[i>>2]=f[o>>2];f[r>>2]=g;f[j>>2]=y;f[s>>2]=z;Od(h,p,i,j);f[n>>2]=f[h>>2];f[n+4>>2]=f[t>>2];v=v+-1|0;if((v|0)<=-1){A=5;break}n=f[m>>2]|0;w=f[n>>2]|0;if((f[n+4>>2]|0)-w>>2>>>0<=v>>>0){x=n;A=6;break}}if((A|0)==5){u=d;return 1}else if((A|0)==6)aq(x);return 0}function qf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=a+8|0;e=f[d>>2]|0;g=f[a>>2]|0;h=g;do if(e-g>>3>>>0>=b>>>0){i=a+4|0;j=f[i>>2]|0;k=j-g>>3;l=k>>>0>>0;m=l?k:b;n=j;if(m|0){j=m;m=h;while(1){o=c;p=f[o+4>>2]|0;q=m;f[q>>2]=f[o>>2];f[q+4>>2]=p;j=j+-1|0;if(!j)break;else m=m+8|0}}if(!l){m=h+(b<<3)|0;if((m|0)==(n|0))return;else{r=i;s=n+(~((n+-8-m|0)>>>3)<<3)|0;break}}else{m=b-k|0;j=m;p=n;while(1){q=c;o=f[q+4>>2]|0;t=p;f[t>>2]=f[q>>2];f[t+4>>2]=o;j=j+-1|0;if(!j)break;else p=p+8|0}r=i;s=n+(m<<3)|0;break}}else{p=g;if(!g)u=e;else{j=a+4|0;k=f[j>>2]|0;if((k|0)!=(h|0))f[j>>2]=k+(~((k+-8-g|0)>>>3)<<3);Oq(p);f[d>>2]=0;f[j>>2]=0;f[a>>2]=0;u=0}if(b>>>0>536870911)aq(a);j=u>>2;p=u>>3>>>0<268435455?(j>>>0>>0?b:j):536870911;if(p>>>0>536870911)aq(a);j=ln(p<<3)|0;k=a+4|0;f[k>>2]=j;f[a>>2]=j;f[d>>2]=j+(p<<3);p=b;l=j;while(1){o=c;t=f[o+4>>2]|0;q=l;f[q>>2]=f[o>>2];f[q+4>>2]=t;p=p+-1|0;if(!p)break;else l=l+8|0}r=k;s=j+(b<<3)|0}while(0);f[r>>2]=s;return}function rf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0.0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=+$(n[b>>2]);g=+K(+e);h=+$(n[b+4>>2]);i=g+ +K(+h);g=+$(n[b+8>>2]);j=i+ +K(+g);b=j>1.0e-06;i=1.0/j;k=f[a+12>>2]|0;j=+(k|0);l=~~+J(+((b?i*e:1.0)*j+.5));m=~~+J(+((b?i*h:0.0)*j+.5));o=(l|0)>-1;p=k-(o?l:0-l|0)-((m|0)>-1?m:0-m|0)|0;l=(p|0)<0;q=(l?((m|0)>0?p:0-p|0):0)+m|0;m=l?0:p;p=(b?i*g:0.0)<0.0?0-m|0:m;do if(!o){if((q|0)<0)r=(p|0)>-1?p:0-p|0;else r=(f[a+8>>2]|0)-((p|0)>-1?p:0-p|0)|0;if((p|0)<0){s=(q|0)>-1?q:0-q|0;t=r;break}else{s=(f[a+8>>2]|0)-((q|0)>-1?q:0-q|0)|0;t=r;break}}else{s=k+p|0;t=k+q|0}while(0);q=(t|0)==0;p=(s|0)==0;r=f[a+8>>2]|0;if(!(s|t)){u=r;v=r;f[c>>2]=u;f[d>>2]=v;return}a=(r|0)==(s|0);if(q&a){u=s;v=s;f[c>>2]=u;f[d>>2]=v;return}o=(r|0)==(t|0);if(p&o){u=t;v=t;f[c>>2]=u;f[d>>2]=v;return}if(q&(k|0)<(s|0)){u=0;v=(k<<1)-s|0;f[c>>2]=u;f[d>>2]=v;return}if(o&(k|0)>(s|0)){u=t;v=(k<<1)-s|0;f[c>>2]=u;f[d>>2]=v;return}if(a&(k|0)>(t|0)){u=(k<<1)-t|0;v=s;f[c>>2]=u;f[d>>2]=v;return}if(!p){u=t;v=s;f[c>>2]=u;f[d>>2]=v;return}u=(k|0)<(t|0)?(k<<1)-t|0:t;v=0;f[c>>2]=u;f[d>>2]=v;return}function sf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],Me(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];Me(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;Gg(d);m=a+1068|0;Mm(m);k=a+1088|0;Mm(k);l=a+1108|0;Mm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];ib(a,i,h);Ye(d,e);Bg(m,e);Bg(k,e);Bg(l,e);u=g;return 1}function tf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],Me(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];Me(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;Gg(d);m=a+1068|0;Mm(m);k=a+1088|0;Mm(k);l=a+1108|0;Mm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];kb(a,i,h);Ye(d,e);Bg(m,e);Bg(k,e);Bg(l,e);u=g;return 1}function uf(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0;c=u;u=u+32|0;d=c;e=a+8|0;g=f[e>>2]|0;h=a+4|0;i=f[h>>2]|0;j=i;if(g-i>>2>>>0>=b>>>0){sj(i|0,0,b<<2|0)|0;f[h>>2]=i+(b<<2);u=c;return}k=f[a>>2]|0;l=i-k>>2;m=l+b|0;n=k;if(m>>>0>1073741823)aq(a);o=g-k|0;p=o>>1;q=o>>2>>>0<536870911?(p>>>0>>0?m:p):1073741823;f[d+12>>2]=0;f[d+16>>2]=a+8;do if(q)if(q>>>0>1073741823){p=ra(8)|0;Oo(p,16035);f[p>>2]=7256;va(p|0,1112,110)}else{r=ln(q<<2)|0;break}else r=0;while(0);f[d>>2]=r;p=r+(l<<2)|0;l=d+8|0;m=d+4|0;f[m>>2]=p;o=r+(q<<2)|0;q=d+12|0;f[q>>2]=o;r=p+(b<<2)|0;sj(p|0,0,b<<2|0)|0;f[l>>2]=r;if((j|0)==(n|0)){s=p;t=q;v=l;w=k;x=r;y=i;z=o;A=g}else{g=j;j=p;do{g=g+-4|0;p=f[g>>2]|0;f[g>>2]=0;f[j+-4>>2]=p;j=(f[m>>2]|0)+-4|0;f[m>>2]=j}while((g|0)!=(n|0));s=j;t=q;v=l;w=f[a>>2]|0;x=f[l>>2]|0;y=f[h>>2]|0;z=f[q>>2]|0;A=f[e>>2]|0}f[a>>2]=s;f[m>>2]=w;f[h>>2]=x;f[v>>2]=y;f[e>>2]=z;f[t>>2]=A;f[d>>2]=w;ki(d);u=c;return}function vf(a,c){a=a|0;c=c|0;var d=0,e=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;d=f[a+8>>2]|0;e=a+76|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{Ch(i,h-m|0,3600);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=a+80|0;a=c+68|0;c=f[o+96>>2]|0;o=0;while(1){h=o*3|0;if((h|0)==-1)r=-1;else r=f[(f[d>>2]|0)+(h<<2)>>2]|0;i=f[(f[m>>2]|0)+12>>2]|0;g=f[i+(r<<2)>>2]|0;if(g>>>0>=p>>>0){q=0;s=12;break}k=f[a>>2]|0;f[k+(f[c+(o*12|0)>>2]<<2)>>2]=g;g=h+1|0;if((g|0)==-1)t=-1;else t=f[(f[d>>2]|0)+(g<<2)>>2]|0;g=f[i+(t<<2)>>2]|0;if(g>>>0>=p>>>0){q=0;s=12;break}f[k+(f[c+(o*12|0)+4>>2]<<2)>>2]=g;g=h+2|0;if((g|0)==-1)u=-1;else u=f[(f[d>>2]|0)+(g<<2)>>2]|0;g=f[i+(u<<2)>>2]|0;if(g>>>0>=p>>>0){q=0;s=12;break}f[k+(f[c+(o*12|0)+8>>2]<<2)>>2]=g;o=o+1|0;if(o>>>0>=e>>>0){q=1;s=12;break}}if((s|0)==12)return q|0;return 0}function wf(a,c){a=a|0;c=c|0;var d=0,e=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;d=f[a+8>>2]|0;e=a+112|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{Ch(i,h-m|0,3600);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=a+116|0;a=c+68|0;c=f[o+96>>2]|0;o=0;while(1){h=o*3|0;if((h|0)==-1)r=-1;else r=f[(f[d>>2]|0)+(h<<2)>>2]|0;i=f[(f[m>>2]|0)+12>>2]|0;g=f[i+(r<<2)>>2]|0;if(g>>>0>=p>>>0){q=0;s=12;break}k=f[a>>2]|0;f[k+(f[c+(o*12|0)>>2]<<2)>>2]=g;g=h+1|0;if((g|0)==-1)t=-1;else t=f[(f[d>>2]|0)+(g<<2)>>2]|0;g=f[i+(t<<2)>>2]|0;if(g>>>0>=p>>>0){q=0;s=12;break}f[k+(f[c+(o*12|0)+4>>2]<<2)>>2]=g;g=h+2|0;if((g|0)==-1)u=-1;else u=f[(f[d>>2]|0)+(g<<2)>>2]|0;g=f[i+(u<<2)>>2]|0;if(g>>>0>=p>>>0){q=0;s=12;break}f[k+(f[c+(o*12|0)+8>>2]<<2)>>2]=g;o=o+1|0;if(o>>>0>=e>>>0){q=1;s=12;break}}if((s|0)==12)return q|0;return 0}function xf(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=u;u=u+16|0;h=d;i=f[a+124>>2]|0;if(!i){u=d;return}j=i+-1|0;k=(j&i|0)==0;if(!k)if(i>>>0>g>>>0)l=g;else l=(g>>>0)%(i>>>0)|0;else l=j&g;m=f[(f[a+120>>2]|0)+(l<<2)>>2]|0;if(!m){u=d;return}n=f[m>>2]|0;if(!n){u=d;return}a:do if(k){m=n;while(1){o=f[m+4>>2]|0;p=(o|0)==(g|0);if(!(p|(o&j|0)==(l|0))){q=24;break}if(p?(f[m+8>>2]|0)==(g|0):0){r=m;break a}m=f[m>>2]|0;if(!m){q=24;break}}if((q|0)==24){u=d;return}}else{m=n;while(1){p=f[m+4>>2]|0;if((p|0)==(g|0)){if((f[m+8>>2]|0)==(g|0)){r=m;break a}}else{if(p>>>0>>0)s=p;else s=(p>>>0)%(i>>>0)|0;if((s|0)!=(l|0)){q=24;break}}m=f[m>>2]|0;if(!m){q=24;break}}if((q|0)==24){u=d;return}}while(0);q=f[r+12>>2]|0;if((q|0)==-1){u=d;return}f[h>>2]=q;f[h+4>>2]=c;b[h+8>>0]=e&1;e=a+112|0;c=f[e>>2]|0;if((c|0)==(f[a+116>>2]|0))yi(a+108|0,h);else{f[c>>2]=f[h>>2];f[c+4>>2]=f[h+4>>2];f[c+8>>2]=f[h+8>>2];f[e>>2]=(f[e>>2]|0)+12}u=d;return}function yf(a,b){a=a|0;b=b|0;var c=0,e=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;c=d[b>>1]|0;e=d[b+2>>1]|0;g=d[b+4>>1]|0;h=d[b+6>>1]|0;b=((((c^318)&65535)+239^e&65535)+239^g&65535)+239^h&65535;i=f[a+4>>2]|0;if(!i){j=0;return j|0}k=i+-1|0;l=(k&i|0)==0;if(!l)if(b>>>0>>0)m=b;else m=(b>>>0)%(i>>>0)|0;else m=b&k;n=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!n){j=0;return j|0}a=f[n>>2]|0;if(!a){j=0;return j|0}if(l){l=a;while(1){n=f[l+4>>2]|0;o=(n|0)==(b|0);if(!(o|(n&k|0)==(m|0))){j=0;p=25;break}if((((o?(o=l+8|0,(d[o>>1]|0)==c<<16>>16):0)?(d[o+2>>1]|0)==e<<16>>16:0)?(d[l+12>>1]|0)==g<<16>>16:0)?(d[o+6>>1]|0)==h<<16>>16:0){j=l;p=25;break}l=f[l>>2]|0;if(!l){j=0;p=25;break}}if((p|0)==25)return j|0}else q=a;while(1){a=f[q+4>>2]|0;if((a|0)==(b|0)){l=q+8|0;if((((d[l>>1]|0)==c<<16>>16?(d[l+2>>1]|0)==e<<16>>16:0)?(d[q+12>>1]|0)==g<<16>>16:0)?(d[l+6>>1]|0)==h<<16>>16:0){j=q;p=25;break}}else{if(a>>>0>>0)r=a;else r=(a>>>0)%(i>>>0)|0;if((r|0)!=(m|0)){j=0;p=25;break}}q=f[q>>2]|0;if(!q){j=0;p=25;break}}if((p|0)==25)return j|0;return 0}function zf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],Me(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];Me(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;Mm(d);m=a+32|0;Mm(m);k=a+52|0;Mm(k);l=a+72|0;Mm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];hb(a,i,h);Bg(d,e);Bg(m,e);Bg(k,e);Bg(l,e);u=g;return 1}function Af(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+32|0;h=g+12|0;i=g;f[a>>2]=f[d>>2];d=a+4|0;f[d>>2]=(f[c>>2]|0)-(f[b>>2]|0);j=e+16|0;k=j;l=f[k+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0)?(k=e+4|0,f[i>>2]=f[k>>2],f[h>>2]=f[i>>2],Me(e,h,a,a+4|0)|0,l=j,j=f[l+4>>2]|0,!((j|0)>0|(j|0)==0&(f[l>>2]|0)>>>0>0)):0){f[i>>2]=f[k>>2];f[h>>2]=f[i>>2];Me(e,h,d,d+4|0)|0;m=i}else m=i;if(!(f[d>>2]|0)){u=g;return 1}d=a+12|0;tk(d);m=a+44|0;Mm(m);k=a+64|0;Mm(k);l=a+84|0;Mm(l);f[i>>2]=f[b>>2];f[i+4>>2]=f[b+4>>2];f[i+8>>2]=f[b+8>>2];f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];lb(a,i,h);ld(d,e);Bg(m,e);Bg(k,e);Bg(l,e);u=g;return 1}function Bf(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0;a=u;u=u+16|0;e=a+4|0;g=a;h=a+8|0;i=d+11|0;j=b[i>>0]|0;k=j<<24>>24<0;if(k){l=f[d+4>>2]|0;if(l>>>0>255){m=0;u=a;return m|0}else n=l}else n=j&255;if(!n){b[h>>0]=0;n=c+16|0;l=f[n+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[n>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+1|0)|0}m=1;u=a;return m|0}n=d+4|0;l=f[n>>2]|0;b[h>>0]=k?l:j&255;k=c+16|0;o=k;p=f[o>>2]|0;q=f[o+4>>2]|0;if((q|0)>0|(q|0)==0&p>>>0>0){r=j;s=q;t=p;v=l}else{f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+1|0)|0;h=k;r=b[i>>0]|0;s=f[h+4>>2]|0;t=f[h>>2]|0;v=f[n>>2]|0}n=r<<24>>24<0;h=n?f[d>>2]|0:d;if(!((s|0)>0|(s|0)==0&t>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+(n?v:r&255)|0)|0}m=1;u=a;return m|0}function Cf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=a+4|0;d=f[a>>2]|0;e=((f[c>>2]|0)-d|0)/24|0;g=e+1|0;if(g>>>0>178956970)aq(a);h=a+8|0;i=((f[h>>2]|0)-d|0)/24|0;d=i<<1;j=i>>>0<89478485?(d>>>0>>0?g:d):178956970;do if(j)if(j>>>0>178956970){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}else{k=ln(j*24|0)|0;break}else k=0;while(0);d=k+(e*24|0)|0;g=d;i=k+(j*24|0)|0;f[d>>2]=1196;f[k+(e*24|0)+4>>2]=f[b+4>>2];fk(k+(e*24|0)+8|0,b+8|0);f[k+(e*24|0)+20>>2]=f[b+20>>2];b=d+24|0;e=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(e|0)){l=g;m=e;n=e}else{j=k;k=g;g=d;do{f[g+-24>>2]=1196;f[g+-20>>2]=f[j+-20>>2];d=g+-16|0;o=j+-16|0;f[d>>2]=0;p=g+-12|0;f[p>>2]=0;f[g+-8>>2]=0;f[d>>2]=f[o>>2];d=j+-12|0;f[p>>2]=f[d>>2];p=j+-8|0;f[g+-8>>2]=f[p>>2];f[p>>2]=0;f[d>>2]=0;f[o>>2]=0;f[g+-4>>2]=f[j+-4>>2];j=j+-24|0;g=k+-24|0;k=g}while((j|0)!=(e|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=b;f[h>>2]=i;i=m;if((n|0)!=(i|0)){h=n;do{h=h+-24|0;Va[f[f[h>>2]>>2]&127](h)}while((h|0)!=(i|0))}if(!m)return;Oq(m);return}function Df(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+32|0;d=c+24|0;e=c+16|0;g=c+8|0;h=c;f[a>>2]=3588;f[a+4>>2]=f[b+4>>2];i=a+8|0;j=b+8|0;f[i>>2]=0;k=a+12|0;f[k>>2]=0;l=a+16|0;f[l>>2]=0;m=b+12|0;n=f[m>>2]|0;do if(n|0)if((n|0)<0)aq(i);else{o=((n+-1|0)>>>5)+1|0;p=ln(o<<2)|0;f[i>>2]=p;f[k>>2]=0;f[l>>2]=o;o=f[j>>2]|0;f[g>>2]=o;f[g+4>>2]=0;p=f[m>>2]|0;f[h>>2]=o+(p>>>5<<2);f[h+4>>2]=p&31;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[d>>2]=f[h>>2];f[d+4>>2]=f[h+4>>2];Tf(i,e,d);break}while(0);i=a+20|0;f[i>>2]=0;m=a+24|0;f[m>>2]=0;j=a+28|0;f[j>>2]=0;a=b+24|0;l=f[a>>2]|0;if(!l){u=c;return}if((l|0)<0)aq(i);k=((l+-1|0)>>>5)+1|0;l=ln(k<<2)|0;f[i>>2]=l;f[m>>2]=0;f[j>>2]=k;k=f[b+20>>2]|0;f[g>>2]=k;f[g+4>>2]=0;b=f[a>>2]|0;f[h>>2]=k+(b>>>5<<2);f[h+4>>2]=b&31;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[d>>2]=f[h>>2];f[d+4>>2]=f[h+4>>2];Tf(i,e,d);u=c;return}function Ef(a,c){a=a|0;c=c|0;var d=0,e=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;d=b[c>>0]|0;e=b[c+1>>0]|0;g=b[c+2>>0]|0;h=b[c+3>>0]|0;c=(((d&255^318)+239^e&255)+239^g&255)+239^h&255;i=f[a+4>>2]|0;if(!i){j=0;return j|0}k=i+-1|0;l=(k&i|0)==0;if(!l)if(c>>>0>>0)m=c;else m=(c>>>0)%(i>>>0)|0;else m=c&k;n=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!n){j=0;return j|0}a=f[n>>2]|0;if(!a){j=0;return j|0}if(l){l=a;while(1){n=f[l+4>>2]|0;o=(n|0)==(c|0);if(!(o|(n&k|0)==(m|0))){j=0;p=25;break}if((((o?(o=l+8|0,(b[o>>0]|0)==d<<24>>24):0)?(b[o+1>>0]|0)==e<<24>>24:0)?(b[o+2>>0]|0)==g<<24>>24:0)?(b[o+3>>0]|0)==h<<24>>24:0){j=l;p=25;break}l=f[l>>2]|0;if(!l){j=0;p=25;break}}if((p|0)==25)return j|0}else q=a;while(1){a=f[q+4>>2]|0;if((a|0)==(c|0)){l=q+8|0;if((((b[l>>0]|0)==d<<24>>24?(b[l+1>>0]|0)==e<<24>>24:0)?(b[l+2>>0]|0)==g<<24>>24:0)?(b[l+3>>0]|0)==h<<24>>24:0){j=q;p=25;break}}else{if(a>>>0>>0)r=a;else r=(a>>>0)%(i>>>0)|0;if((r|0)!=(m|0)){j=0;p=25;break}}q=f[q>>2]|0;if(!q){j=0;p=25;break}}if((p|0)==25)return j|0;return 0}function Ff(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+32|0;d=c+24|0;e=c+16|0;g=c+8|0;h=c;f[a>>2]=3636;f[a+4>>2]=f[b+4>>2];i=a+8|0;j=b+8|0;f[i>>2]=0;k=a+12|0;f[k>>2]=0;l=a+16|0;f[l>>2]=0;m=b+12|0;n=f[m>>2]|0;do if(n|0)if((n|0)<0)aq(i);else{o=((n+-1|0)>>>5)+1|0;p=ln(o<<2)|0;f[i>>2]=p;f[k>>2]=0;f[l>>2]=o;o=f[j>>2]|0;f[g>>2]=o;f[g+4>>2]=0;p=f[m>>2]|0;f[h>>2]=o+(p>>>5<<2);f[h+4>>2]=p&31;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[d>>2]=f[h>>2];f[d+4>>2]=f[h+4>>2];Tf(i,e,d);break}while(0);i=a+20|0;f[i>>2]=0;m=a+24|0;f[m>>2]=0;j=a+28|0;f[j>>2]=0;a=b+24|0;l=f[a>>2]|0;if(!l){u=c;return}if((l|0)<0)aq(i);k=((l+-1|0)>>>5)+1|0;l=ln(k<<2)|0;f[i>>2]=l;f[m>>2]=0;f[j>>2]=k;k=f[b+20>>2]|0;f[g>>2]=k;f[g+4>>2]=0;b=f[a>>2]|0;f[h>>2]=k+(b>>>5<<2);f[h+4>>2]=b&31;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[d>>2]=f[h>>2];f[d+4>>2]=f[h+4>>2];Tf(i,e,d);u=c;return}function Gf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,v=0,w=0,x=0,y=0,z=0,A=0;d=u;u=u+32|0;h=d+24|0;i=d+16|0;j=d;k=d+8|0;l=a+40|0;f[a+44>>2]=g;g=a+36|0;m=f[g>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;if((p|0)<=0){u=d;return 1}q=(p>>>2)+-1|0;p=a+8|0;r=a+48|0;s=a+52|0;a=i+4|0;t=j+4|0;v=h+4|0;if(n-o>>2>>>0>q>>>0){w=q;x=o}else{y=m;aq(y)}while(1){f[k>>2]=f[x+(w<<2)>>2];f[h>>2]=f[k>>2];ub(l,h,b,w);m=X(w,e)|0;o=b+(m<<2)|0;q=c+(m<<2)|0;m=f[o+4>>2]|0;n=f[r>>2]|0;z=f[s>>2]|0;f[i>>2]=f[o>>2];f[a>>2]=m;f[j>>2]=n;f[t>>2]=z;Od(h,p,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[v>>2];w=w+-1|0;if((w|0)<=-1){A=3;break}q=f[g>>2]|0;x=f[q>>2]|0;if((f[q+4>>2]|0)-x>>2>>>0<=w>>>0){y=q;A=4;break}}if((A|0)==3){u=d;return 1}else if((A|0)==4)aq(y);return 0}function Hf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=u;u=u+32|0;i=h;j=h+16|0;k=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)==1){l=Qa[f[(f[b>>2]|0)+48>>2]&127](b)|0;m=Ra[f[(f[b>>2]|0)+56>>2]&127](b,d)|0;if((l|0)==0|(m|0)==0){f[a>>2]=0;u=h;return}n=Ra[f[(f[b>>2]|0)+52>>2]&127](b,d)|0;if(!n){f[i>>2]=f[b+52>>2];f[i+4>>2]=l;f[i+12>>2]=m;f[i+8>>2]=m+12;Cd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}else{f[i>>2]=f[b+52>>2];f[i+4>>2]=n;f[i+12>>2]=m;f[i+8>>2]=m+12;Ad(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}}while(0);f[a>>2]=0;u=h;return}function If(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,v=0,w=0,x=0,y=0,z=0,A=0;d=u;u=u+32|0;h=d+24|0;i=d+16|0;j=d;k=d+8|0;l=a+40|0;f[a+44>>2]=g;g=a+36|0;m=f[g>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;if((p|0)<=0){u=d;return 1}q=(p>>>2)+-1|0;p=a+8|0;r=a+48|0;s=a+52|0;a=i+4|0;t=j+4|0;v=h+4|0;if(n-o>>2>>>0>q>>>0){w=q;x=o}else{y=m;aq(y)}while(1){f[k>>2]=f[x+(w<<2)>>2];f[h>>2]=f[k>>2];tb(l,h,b,w);m=X(w,e)|0;o=b+(m<<2)|0;q=c+(m<<2)|0;m=f[o+4>>2]|0;n=f[r>>2]|0;z=f[s>>2]|0;f[i>>2]=f[o>>2];f[a>>2]=m;f[j>>2]=n;f[t>>2]=z;Od(h,p,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[v>>2];w=w+-1|0;if((w|0)<=-1){A=3;break}q=f[g>>2]|0;x=f[q>>2]|0;if((f[q+4>>2]|0)-x>>2>>>0<=w>>>0){y=q;A=4;break}}if((A|0)==3){u=d;return 1}else if((A|0)==4)aq(y);return 0}function Jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=f[b>>2]|0;b=f[c>>2]|0;e=b-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;k=b;if(e>>>0<=h-i>>2>>>0){l=a+4|0;m=(f[l>>2]|0)-i>>2;n=e>>>0>m>>>0;o=n?d+(m<<2)|0:b;b=o-d|0;m=b>>2;if(m|0)im(i|0,d|0,b|0)|0;b=j+(m<<2)|0;if(!n){n=f[l>>2]|0;if((n|0)==(b|0))return;f[l>>2]=n+(~((n+-4-b|0)>>>2)<<2);return}b=f[c>>2]|0;c=o;if((b|0)==(c|0))return;n=f[l>>2]|0;m=b+-4-o|0;o=c;c=n;while(1){f[c>>2]=f[o>>2];o=o+4|0;if((o|0)==(b|0))break;else c=c+4|0}f[l>>2]=n+((m>>>2)+1<<2);return}m=i;if(!i)p=h;else{h=a+4|0;n=f[h>>2]|0;if((n|0)!=(j|0))f[h>>2]=n+(~((n+-4-i|0)>>>2)<<2);Oq(m);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;p=0}if(e>>>0>1073741823)aq(a);h=p>>1;m=p>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(m>>>0>1073741823)aq(a);h=ln(m<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(m<<2);m=d;if((k|0)==(m|0))return;g=k+-4-d|0;d=m;m=h;while(1){f[m>>2]=f[d>>2];d=d+4|0;if((d|0)==(k|0))break;else m=m+4|0}f[e>>2]=h+((g>>>2)+1<<2);return}function Kf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(((d-g|0)/12|0)>>>0>=b>>>0){sj(g|0,0,b*12|0)|0;f[e>>2]=h+(b*12|0);return}i=f[a>>2]|0;j=(g-i|0)/12|0;g=j+b|0;k=i;if(g>>>0>357913941)aq(a);l=(d-i|0)/12|0;d=l<<1;m=l>>>0<178956970?(d>>>0>>0?g:d):357913941;do if(m)if(m>>>0>357913941){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}else{n=ln(m*12|0)|0;break}else n=0;while(0);d=n+(j*12|0)|0;j=d;g=n+(m*12|0)|0;sj(d|0,0,b*12|0)|0;m=d+(b*12|0)|0;if((h|0)==(k|0)){o=j;p=i;q=h}else{i=h;h=j;j=d;do{d=j+-12|0;b=i;i=i+-12|0;f[d>>2]=0;n=j+-8|0;f[n>>2]=0;f[j+-4>>2]=0;f[d>>2]=f[i>>2];d=b+-8|0;f[n>>2]=f[d>>2];n=b+-4|0;f[j+-4>>2]=f[n>>2];f[n>>2]=0;f[d>>2]=0;f[i>>2]=0;j=h+-12|0;h=j}while((i|0)!=(k|0));o=h;p=f[a>>2]|0;q=f[e>>2]|0}f[a>>2]=o;f[e>>2]=m;f[c>>2]=g;g=p;if((q|0)!=(g|0)){c=q;do{q=c;c=c+-12|0;m=f[c>>2]|0;if(m|0){e=q+-8|0;q=f[e>>2]|0;if((q|0)!=(m|0))f[e>>2]=q+(~((q+-4-m|0)>>>2)<<2);Oq(m)}}while((c|0)!=(g|0))}if(!p)return;Oq(p);return}function Lf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=f[e>>2]|0;gk(f[a+4>>2]|0,(f[g+28>>2]|0)-(f[g+24>>2]|0)>>2);g=a+100|0;h=f[e>>2]|0;i=(f[h+28>>2]|0)-(f[h+24>>2]|0)>>2;f[c>>2]=0;h=a+104|0;j=f[h>>2]|0;k=f[g>>2]|0;l=j-k>>2;m=k;k=j;if(i>>>0<=l>>>0){if(i>>>0>>0?(j=m+(i<<2)|0,(j|0)!=(k|0)):0)f[h>>2]=k+(~((k+-4-j|0)>>>2)<<2)}else Ch(g,i-l|0,c);l=a+120|0;a=f[l>>2]|0;if(!a){i=f[e>>2]|0;g=(f[i+4>>2]|0)-(f[i>>2]|0)>>2;i=(g>>>0)/3|0;if(g>>>0<=2){u=b;return 1}g=0;do{f[d>>2]=g*3;f[c>>2]=f[d>>2];wb(e,c);g=g+1|0}while((g|0)<(i|0));u=b;return 1}else{i=f[a>>2]|0;if((f[a+4>>2]|0)==(i|0)){u=b;return 1}a=0;g=i;do{f[d>>2]=f[g+(a<<2)>>2];f[c>>2]=f[d>>2];wb(e,c);a=a+1|0;i=f[l>>2]|0;g=f[i>>2]|0}while(a>>>0<(f[i+4>>2]|0)-g>>2>>>0);u=b;return 1}return 0}function Mf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-4194304|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-4177920|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+4194304|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1077936128|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Gn(e);yh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;im(h+a|0,h|0,o|0)|0;kh(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Vn(a|0,0,o|0,k|0)|0;k=Vn(h|0,I|0,g|0,j|0)|0;Cl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oq(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;Oq(c);u=d;return}function Nf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-2097152|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-2080768|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+6291456|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1075838976|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Gn(e);yh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;im(h+a|0,h|0,o|0)|0;kh(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Vn(a|0,0,o|0,k|0)|0;k=Vn(h|0,I|0,g|0,j|0)|0;Cl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oq(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;Oq(c);u=d;return}function Of(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-1048576|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1032192|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+7340032|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1074790400|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Gn(e);yh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;im(h+a|0,h|0,o|0)|0;kh(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Vn(a|0,0,o|0,k|0)|0;k=Vn(h|0,I|0,g|0,j|0)|0;Cl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oq(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;Oq(c);u=d;return}function Pf(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Tm(j);Jj(j,d,0,g&255,i,0,g<<1,0,0,0);i=jf(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+((X(d,g)|0)<<1)|0;r=n;s=f[r>>2]|0;t=un(s|0,f[r+4>>2]|0,p|0,0)|0;kh((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;Oq(i)}Oq(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);Oq(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;Oq(v)}Oq(j)}k=w;u=a;return k|0}function Qf(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Tm(j);Jj(j,d,0,g&255,i,0,g<<2,0,0,0);i=jf(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+((X(d,g)|0)<<2)|0;r=n;s=f[r>>2]|0;t=un(s|0,f[r+4>>2]|0,p|0,0)|0;kh((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;Oq(i)}Oq(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);Oq(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;Oq(v)}Oq(j)}k=w;u=a;return k|0}function Rf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-262144|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-245760|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8126464|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1074003968|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Gn(e);yh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;im(h+a|0,h|0,o|0)|0;kh(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Vn(a|0,0,o|0,k|0)|0;k=Vn(h|0,I|0,g|0,j|0)|0;Cl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oq(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;Oq(c);u=d;return}function Sf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-131072|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-114688|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8257536|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1073872896|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Gn(e);yh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;im(h+a|0,h|0,o|0)|0;kh(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Vn(a|0,0,o|0,k|0)|0;k=Vn(h|0,I|0,g|0,j|0)|0;Cl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oq(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;Oq(c);u=d;return}function Tf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0,w=0,x=0,y=0;d=u;u=u+48|0;e=d+40|0;g=d+32|0;h=d+8|0;i=d;j=d+24|0;k=d+16|0;l=a+4|0;m=f[l>>2]|0;n=b;b=f[n>>2]|0;o=f[n+4>>2]|0;n=c;c=f[n>>2]|0;p=f[n+4>>2]|0;n=c-b<<3;f[l>>2]=m-o+p+n;l=(f[a>>2]|0)+(m>>>5<<2)|0;a=m&31;m=l;if((a|0)!=(o|0)){q=h;f[q>>2]=b;f[q+4>>2]=o;q=i;f[q>>2]=c;f[q+4>>2]=p;f[j>>2]=m;f[j+4>>2]=a;f[g>>2]=f[h>>2];f[g+4>>2]=f[h+4>>2];f[e>>2]=f[i>>2];f[e+4>>2]=f[i+4>>2];we(k,g,e,j);u=d;return}j=p-o+n|0;n=b;if((j|0)>0){if(!o){r=j;s=0;t=l;v=b;w=n}else{b=32-o|0;p=(j|0)<(b|0)?j:b;e=-1>>>(b-p|0)&-1<>2]=f[l>>2]&~e|f[n>>2]&e;e=p+o|0;b=n+4|0;r=j-p|0;s=e&31;t=l+(e>>>5<<2)|0;v=b;w=b}b=(r|0)/32|0;im(t|0,v|0,b<<2|0)|0;v=r-(b<<5)|0;r=t+(b<<2)|0;t=r;if((v|0)>0){e=-1>>>(32-v|0);f[r>>2]=f[r>>2]&~e|f[w+(b<<2)>>2]&e;x=v;y=t}else{x=s;y=t}}else{x=o;y=m}f[k>>2]=y;f[k+4>>2]=x;u=d;return}function Uf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-32768|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-16384|0;b[m>>0]=n;b[m+1>>0]=n>>>8;o=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;n=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+8355840|0;b[n>>0]=m;b[n+1>>0]=m>>>8;b[n+2>>0]=m>>>16;o=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;n=j+-1073774592|0;b[m>>0]=n;b[m+1>>0]=n>>>8;b[m+2>>0]=n>>>16;b[m+3>>0]=n>>>24;o=(f[l>>2]|0)+4|0;break}else{o=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;o=(f[l>>2]|0)+1|0}while(0);k=((o|0)<0)<<31>>31;Gn(e);yh(o,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;im(h+a|0,h|0,o|0)|0;kh(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Vn(a|0,0,o|0,k|0)|0;k=Vn(h|0,I|0,g|0,j|0)|0;Cl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oq(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;Oq(c);u=d;return}function Vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=f[b>>2]|0;d=f[b+4>>2]|0;e=f[b+8>>2]|0;g=f[b+12>>2]|0;b=(((c^318)+239^d)+239^e)+239^g;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(b>>>0>>0)l=b;else l=(b>>>0)%(h>>>0)|0;else l=b&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(b|0);if(!(n|(m&j|0)==(l|0))){i=0;o=25;break}if((((n?(f[k+8>>2]|0)==(c|0):0)?(f[k+12>>2]|0)==(d|0):0)?(f[k+16>>2]|0)==(e|0):0)?(f[k+20>>2]|0)==(g|0):0){i=k;o=25;break}k=f[k>>2]|0;if(!k){i=0;o=25;break}}if((o|0)==25)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(b|0)){if((((f[p+8>>2]|0)==(c|0)?(f[p+12>>2]|0)==(d|0):0)?(f[p+16>>2]|0)==(e|0):0)?(f[p+20>>2]|0)==(g|0):0){i=p;o=25;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=25;break}}p=f[p>>2]|0;if(!p){i=0;o=25;break}}if((o|0)==25)return i|0;return 0}function Wf(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;a=u;u=u+96|0;j=a;if(!c){k=-1;u=a;return k|0}Tm(j);Jj(j,d,0,g&255,i,0,g,0,0,0);i=jf(c,j,1,e)|0;d=f[(f[c+8>>2]|0)+(i<<2)>>2]|0;if(e|0){l=d+84|0;m=d+68|0;n=d+40|0;o=d+64|0;d=0;do{if(!(b[l>>0]|0))p=f[(f[m>>2]|0)+(d<<2)>>2]|0;else p=d;q=h+(X(d,g)|0)|0;r=n;s=f[r>>2]|0;t=un(s|0,f[r+4>>2]|0,p|0,0)|0;kh((f[f[o>>2]>>2]|0)+t|0,q|0,s|0)|0;d=d+1|0}while((d|0)!=(e|0))}d=c+80|0;c=f[d>>2]|0;if(c)if((c|0)==(e|0))v=10;else w=-1;else{f[d>>2]=e;v=10}if((v|0)==10)w=i;i=j+88|0;v=f[i>>2]|0;f[i>>2]=0;if(v|0){i=f[v+8>>2]|0;if(i|0){e=v+12|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;Oq(i)}Oq(v)}v=f[j+68>>2]|0;if(v|0){i=j+72|0;e=f[i>>2]|0;if((e|0)!=(v|0))f[i>>2]=e+(~((e+-4-v|0)>>>2)<<2);Oq(v)}v=j+64|0;j=f[v>>2]|0;f[v>>2]=0;if(j|0){v=f[j>>2]|0;if(v|0){e=j+4|0;if((f[e>>2]|0)!=(v|0))f[e>>2]=v;Oq(v)}Oq(j)}k=w;u=a;return k|0}function Xf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=u;u=u+32|0;i=h;j=h+16|0;k=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)==1){l=Qa[f[(f[b>>2]|0)+48>>2]&127](b)|0;m=Ra[f[(f[b>>2]|0)+56>>2]&127](b,d)|0;if((l|0)==0|(m|0)==0){f[a>>2]=0;u=h;return}n=Ra[f[(f[b>>2]|0)+52>>2]&127](b,d)|0;if(!n){f[i>>2]=f[b+52>>2];f[i+4>>2]=l;f[i+12>>2]=m;f[i+8>>2]=m+12;qd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}else{f[i>>2]=f[b+52>>2];f[i+4>>2]=n;f[i+12>>2]=m;f[i+8>>2]=m+12;pd(a,j,c,k,e,i,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=h;return}}while(0);f[a>>2]=0;u=h;return}function Yf(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=f[d>>2]|0;g=f[d+4>>2]|0;if((e|0)==(g|0)){h=0;i=a+12|0;j=a+8|0}else{d=f[c>>2]|0;c=a+8|0;k=a+12|0;a=0;l=e;while(1){e=f[l>>2]|0;m=f[d+(e<<2)>>2]|0;if(m>>>0>>0)n=a;else{o=f[c>>2]|0;p=(f[k>>2]|0)-o|0;q=o;if((p|0)>0){o=p>>>2;p=0;do{r=f[q+(p<<2)>>2]|0;s=f[r+68>>2]|0;if(!(b[r+84>>0]|0))t=f[s+(e<<2)>>2]|0;else t=e;f[s+(m<<2)>>2]=t;p=p+1|0}while((p|0)<(o|0))}n=m+1|0}l=l+4|0;if((l|0)==(g|0)){h=n;i=k;j=c;break}else a=n}}n=f[i>>2]|0;a=f[j>>2]|0;if((n-a|0)>0){u=0;v=a;w=n}else return;while(1){n=f[v+(u<<2)>>2]|0;b[n+84>>0]=0;a=n+68|0;c=n+72|0;n=f[c>>2]|0;k=f[a>>2]|0;g=n-k>>2;l=k;k=n;if(h>>>0<=g>>>0)if(h>>>0>>0?(n=l+(h<<2)|0,(n|0)!=(k|0)):0){f[c>>2]=k+(~((k+-4-n|0)>>>2)<<2);x=v;y=w}else{x=v;y=w}else{Ch(a,h-g|0,6220);x=f[j>>2]|0;y=f[i>>2]|0}u=u+1|0;if((u|0)>=(y-x>>2|0))break;else{v=x;w=y}}return}function Zf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=b;e=c-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;if(e>>>0<=h-i>>2>>>0){k=a+4|0;l=(f[k>>2]|0)-i>>2;m=e>>>0>l>>>0;n=b+(l<<2)|0;l=m?n:c;o=l;p=o-d|0;q=p>>2;if(q|0)im(i|0,b|0,p|0)|0;p=j+(q<<2)|0;if(!m){m=f[k>>2]|0;if((m|0)==(p|0))return;f[k>>2]=m+(~((m+-4-p|0)>>>2)<<2);return}if((l|0)==(c|0))return;l=f[k>>2]|0;p=((c+-4-o|0)>>>2)+1|0;o=n;n=l;while(1){f[n>>2]=f[o>>2];o=o+4|0;if((o|0)==(c|0))break;else n=n+4|0}f[k>>2]=l+(p<<2);return}p=i;if(!i)r=h;else{h=a+4|0;l=f[h>>2]|0;if((l|0)!=(j|0))f[h>>2]=l+(~((l+-4-i|0)>>>2)<<2);Oq(p);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;r=0}if(e>>>0>1073741823)aq(a);h=r>>1;p=r>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(p>>>0>1073741823)aq(a);h=ln(p<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(p<<2);if((b|0)==(c|0))return;p=((c+-4-d|0)>>>2)+1|0;d=b;b=h;while(1){f[b>>2]=f[d>>2];d=d+4|0;if((d|0)==(c|0))break;else b=b+4|0}f[e>>2]=h+(p<<2);return}function _f(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=u;u=u+32|0;e=d;g=a+40|0;h=(f[c>>2]|0)+(f[g>>2]|0)|0;i=a+24|0;j=f[a+32>>2]|0;k=j+-16384|0;do if(k>>>0>=64){if(k>>>0<16384){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;b[m>>0]=j;b[m+1>>0]=j>>>8;n=(f[l>>2]|0)+2|0;break}if(k>>>0<4194304){l=a+28|0;m=(f[i>>2]|0)+(f[l>>2]|0)|0;o=j+8372224|0;b[m>>0]=o;b[m+1>>0]=o>>>8;b[m+2>>0]=o>>>16;n=(f[l>>2]|0)+3|0;break}if(k>>>0<1073741824){l=a+28|0;o=(f[i>>2]|0)+(f[l>>2]|0)|0;m=j+-1073758208|0;b[o>>0]=m;b[o+1>>0]=m>>>8;b[o+2>>0]=m>>>16;b[o+3>>0]=m>>>24;n=(f[l>>2]|0)+4|0;break}else{n=f[a+28>>2]|0;break}}else{l=a+28|0;b[(f[i>>2]|0)+(f[l>>2]|0)>>0]=k;n=(f[l>>2]|0)+1|0}while(0);k=((n|0)<0)<<31>>31;Gn(e);yh(n,k,e)|0;i=e+4|0;a=(f[i>>2]|0)-(f[e>>2]|0)|0;im(h+a|0,h|0,n|0)|0;kh(h|0,f[e>>2]|0,a|0)|0;h=g;g=f[h>>2]|0;j=f[h+4>>2]|0;h=Vn(a|0,0,n|0,k|0)|0;k=Vn(h|0,I|0,g|0,j|0)|0;Cl(c,k,I);k=e+12|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oq(c);c=f[e>>2]|0;if(!c){u=d;return}if((f[i>>2]|0)!=(c|0))f[i>>2]=c;Oq(c);u=d;return}function $f(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=b;e=c-d>>2;g=a+8|0;h=f[g>>2]|0;i=f[a>>2]|0;j=i;if(e>>>0<=h-i>>2>>>0){k=a+4|0;l=(f[k>>2]|0)-i>>2;m=e>>>0>l>>>0;n=b+(l<<2)|0;l=m?n:c;o=l;p=o-d|0;q=p>>2;if(q|0)im(i|0,b|0,p|0)|0;p=j+(q<<2)|0;if(!m){m=f[k>>2]|0;if((m|0)==(p|0))return;f[k>>2]=m+(~((m+-4-p|0)>>>2)<<2);return}if((l|0)==(c|0))return;l=f[k>>2]|0;p=c+-4-o|0;o=n;n=l;while(1){f[n>>2]=f[o>>2];o=o+4|0;if((o|0)==(c|0))break;else n=n+4|0}f[k>>2]=l+((p>>>2)+1<<2);return}p=i;if(!i)r=h;else{h=a+4|0;l=f[h>>2]|0;if((l|0)!=(j|0))f[h>>2]=l+(~((l+-4-i|0)>>>2)<<2);Oq(p);f[g>>2]=0;f[h>>2]=0;f[a>>2]=0;r=0}if(e>>>0>1073741823)aq(a);h=r>>1;p=r>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;if(p>>>0>1073741823)aq(a);h=ln(p<<2)|0;e=a+4|0;f[e>>2]=h;f[a>>2]=h;f[g>>2]=h+(p<<2);if((b|0)==(c|0))return;p=c+-4-d|0;d=b;b=h;while(1){f[b>>2]=f[d>>2];d=d+4|0;if((d|0)==(c|0))break;else b=b+4|0}f[e>>2]=h+((p>>>2)+1<<2);return}function ag(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;g=u;u=u+80|0;h=g;i=g+64|0;Il(h);j=f[(f[a+8>>2]|0)+56>>2]|0;k=X(Vl(5)|0,d)|0;Jj(h,j,0,d&255,5,0,k,((k|0)<0)<<31>>31,0,0);k=ln(96)|0;tl(k,h);Bj(k,c)|0;f[i>>2]=k;gj(a,i);k=f[i>>2]|0;f[i>>2]=0;if(k|0){i=k+88|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){i=f[c+8>>2]|0;if(i|0){h=c+12|0;if((f[h>>2]|0)!=(i|0))f[h>>2]=i;Oq(i)}Oq(c)}c=f[k+68>>2]|0;if(c|0){i=k+72|0;h=f[i>>2]|0;if((h|0)!=(c|0))f[i>>2]=h+(~((h+-4-c|0)>>>2)<<2);Oq(c)}c=k+64|0;h=f[c>>2]|0;f[c>>2]=0;if(h|0){c=f[h>>2]|0;if(c|0){i=h+4|0;if((f[i>>2]|0)!=(c|0))f[i>>2]=c;Oq(c)}Oq(h)}Oq(k)}if(!e){u=g;return}k=f[a+32>>2]|0;b[k+84>>0]=0;a=k+68|0;h=k+72|0;k=f[h>>2]|0;c=f[a>>2]|0;i=k-c>>2;d=k;if(i>>>0>>0){Ch(a,e-i|0,1532);u=g;return}if(i>>>0<=e>>>0){u=g;return}i=c+(e<<2)|0;if((i|0)==(d|0)){u=g;return}f[h>>2]=d+(~((d+-4-i|0)>>>2)<<2);u=g;return}function bg(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0;c=u;u=u+16|0;d=c+4|0;e=c;g=a+4|0;h=f[g>>2]|0;i=a+8|0;j=f[i>>2]|0;if((j|0)==(h|0))k=h;else{l=j+(~((j+-4-h|0)>>>2)<<2)|0;f[i>>2]=l;k=l}l=a+16|0;h=f[l>>2]|0;j=a+20|0;m=f[j>>2]|0;n=h;if((m|0)!=(h|0))f[j>>2]=m+(~((m+-4-n|0)>>>2)<<2);m=f[b>>2]|0;h=f[b+4>>2]|0;if((m|0)==(h|0)){u=c;return}b=a+12|0;a=m;m=k;k=n;while(1){n=f[a>>2]|0;f[d>>2]=n;if((m|0)==(f[b>>2]|0)){Ri(g,d);o=f[l>>2]|0}else{f[m>>2]=n;f[i>>2]=m+4;o=k}n=f[d>>2]|0;p=f[j>>2]|0;q=p-o>>2;r=o;if((n|0)<(q|0)){s=r;t=n;v=o}else{w=n+1|0;f[e>>2]=-1;x=p;if(w>>>0<=q>>>0)if(w>>>0>>0?(p=r+(w<<2)|0,(p|0)!=(x|0)):0){f[j>>2]=x+(~((x+-4-p|0)>>>2)<<2);y=n;z=r;A=o}else{y=n;z=r;A=o}else{Ch(l,w-q|0,e);q=f[l>>2]|0;y=f[d>>2]|0;z=q;A=q}s=z;t=y;v=A}m=f[i>>2]|0;f[s+(t<<2)>>2]=(m-(f[g>>2]|0)>>2)+-1;a=a+4|0;if((a|0)==(h|0))break;else k=v}u=c;return}function cg(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=u;u=u+16|0;d=c;e=a+76|0;g=f[e>>2]|0;h=a+80|0;i=f[h>>2]|0;if((i|0)!=(g|0))f[h>>2]=i+(~((i+-4-g|0)>>>2)<<2);f[e>>2]=0;f[h>>2]=0;f[a+84>>2]=0;if(g|0)Oq(g);g=a+64|0;h=f[g>>2]|0;e=a+68|0;if((f[e>>2]|0)!=(h|0))f[e>>2]=h;f[g>>2]=0;f[e>>2]=0;f[a+72>>2]=0;if(h|0)Oq(h);h=b+4|0;e=f[h>>2]|0;g=f[b>>2]|0;i=((e-g|0)/12|0)*3|0;j=a+4|0;k=f[j>>2]|0;l=f[a>>2]|0;m=k-l>>2;n=l;l=k;k=g;if(i>>>0<=m>>>0)if(i>>>0>>0?(o=n+(i<<2)|0,(o|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-o|0)>>>2)<<2);p=e;q=g;r=k}else{p=e;q=g;r=k}else{Ci(a,i-m|0);m=f[b>>2]|0;p=f[h>>2]|0;q=m;r=m}if((p|0)!=(q|0)){q=f[a>>2]|0;m=(p-r|0)/12|0;p=0;do{h=p*3|0;f[q+(h<<2)>>2]=f[r+(p*12|0)>>2];f[q+(h+1<<2)>>2]=f[r+(p*12|0)+4>>2];f[q+(h+2<<2)>>2]=f[r+(p*12|0)+8>>2];p=p+1|0}while(p>>>0>>0)}f[d>>2]=-1;if(!(rc(a,d)|0)){s=0;u=c;return s|0}eb(a,f[d>>2]|0)|0;s=1;u=c;return s|0}function dg(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=d[b>>1]|0;e=d[b+2>>1]|0;g=d[b+4>>1]|0;b=(((c^318)&65535)+239^e&65535)+239^g&65535;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(b>>>0>>0)l=b;else l=(b>>>0)%(h>>>0)|0;else l=b&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(b|0);if(!(n|(m&j|0)==(l|0))){i=0;o=23;break}if(((n?(n=k+8|0,(d[n>>1]|0)==c<<16>>16):0)?(d[n+2>>1]|0)==e<<16>>16:0)?(d[k+12>>1]|0)==g<<16>>16:0){i=k;o=23;break}k=f[k>>2]|0;if(!k){i=0;o=23;break}}if((o|0)==23)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(b|0)){k=p+8|0;if(((d[k>>1]|0)==c<<16>>16?(d[k+2>>1]|0)==e<<16>>16:0)?(d[p+12>>1]|0)==g<<16>>16:0){i=p;o=23;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=23;break}}p=f[p>>2]|0;if(!p){i=0;o=23;break}}if((o|0)==23)return i|0;return 0}function eg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=u;u=u+32|0;d=c;e=a+16|0;g=e;h=f[g>>2]|0;i=f[g+4>>2]|0;if(!((i|0)>0|(i|0)==0&h>>>0>0)){u=c;return}g=Vn(f[(f[a+12>>2]|0)+4>>2]|0,0,7,0)|0;j=Yn(g|0,I|0,3)|0;g=I;if(!(b[a+24>>0]|0)){k=a+4|0;l=k;m=k;n=h;o=i}else{k=f[a>>2]|0;p=a+4|0;q=k+((f[p>>2]|0)-k)|0;k=Vn(h|0,i|0,8,0)|0;i=q+(0-k)|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;b[d+24>>0]=0;yh(j,g,d)|0;k=d+4|0;q=(f[k>>2]|0)-(f[d>>2]|0)|0;im(i+q|0,i+8|0,j|0)|0;kh(i|0,f[d>>2]|0,q|0)|0;i=e;h=Vn(f[i>>2]|0,f[i+4>>2]|0,8-q|0,0)|0;q=e;f[q>>2]=h;f[q+4>>2]=I;q=d+12|0;h=f[q>>2]|0;f[q>>2]=0;if(h|0)Oq(h);h=f[d>>2]|0;if(h|0){if((f[k>>2]|0)!=(h|0))f[k>>2]=h;Oq(h)}h=e;l=p;m=p;n=f[h>>2]|0;o=f[h+4>>2]|0}h=f[l>>2]|0;l=f[a>>2]|0;p=h-l|0;k=Xn(j|0,g|0,n|0,o|0)|0;o=Vn(k|0,I|0,p|0,0)|0;k=l;l=h;if(p>>>0>=o>>>0){if(p>>>0>o>>>0?(h=k+o|0,(h|0)!=(l|0)):0)f[m>>2]=h}else Fi(a,o-p|0);p=e;f[p>>2]=0;f[p+4>>2]=0;u=c;return}function fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;f[a+4>>2]=f[b+4>>2];c=a+8|0;d=b+8|0;if((a|0)==(b|0))return a|0;e=b+12|0;g=f[e>>2]|0;if(!g)h=0;else{i=a+16|0;do if(g>>>0>f[i>>2]<<5>>>0){j=f[c>>2]|0;if(!j)k=g;else{Oq(j);f[c>>2]=0;f[i>>2]=0;f[a+12>>2]=0;k=f[e>>2]|0}if((k|0)<0)aq(c);else{j=((k+-1|0)>>>5)+1|0;l=ln(j<<2)|0;f[c>>2]=l;f[a+12>>2]=0;f[i>>2]=j;m=f[e>>2]|0;n=l;break}}else{m=g;n=f[c>>2]|0}while(0);im(n|0,f[d>>2]|0,((m+-1|0)>>>5<<2)+4|0)|0;h=f[e>>2]|0}f[a+12>>2]=h;h=a+20|0;e=b+20|0;m=b+24|0;b=f[m>>2]|0;if(!b)o=0;else{d=a+28|0;do if(b>>>0>f[d>>2]<<5>>>0){n=f[h>>2]|0;if(!n)p=b;else{Oq(n);f[h>>2]=0;f[d>>2]=0;f[a+24>>2]=0;p=f[m>>2]|0}if((p|0)<0)aq(h);else{n=((p+-1|0)>>>5)+1|0;c=ln(n<<2)|0;f[h>>2]=c;f[a+24>>2]=0;f[d>>2]=n;q=f[m>>2]|0;r=c;break}}else{q=b;r=f[h>>2]|0}while(0);im(r|0,f[e>>2]|0,((q+-1|0)>>>5<<2)+4|0)|0;o=f[m>>2]|0}f[a+24>>2]=o;return a|0}function gg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f[c>>2]=1;d=a+4|0;e=c+8|0;g=c+12|0;c=f[e>>2]|0;i=(f[g>>2]|0)-c|0;if(i>>>0<4294967292){Lk(e,i+4|0,0);j=f[e>>2]|0}else j=c;c=j+i|0;i=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[c>>0]=i;b[c+1>>0]=i>>8;b[c+2>>0]=i>>16;b[c+3>>0]=i>>24;i=a+8|0;c=a+12|0;d=f[i>>2]|0;if((f[c>>2]|0)!=(d|0)){j=0;k=d;do{d=k+(j<<2)|0;l=f[e>>2]|0;m=(f[g>>2]|0)-l|0;if(m>>>0<4294967292){Lk(e,m+4|0,0);n=f[e>>2]|0}else n=l;l=n+m|0;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[l>>0]=m;b[l+1>>0]=m>>8;b[l+2>>0]=m>>16;b[l+3>>0]=m>>24;j=j+1|0;k=f[i>>2]|0}while(j>>>0<(f[c>>2]|0)-k>>2>>>0)}k=a+20|0;a=f[e>>2]|0;c=(f[g>>2]|0)-a|0;if(c>>>0<4294967292){Lk(e,c+4|0,0);o=f[e>>2]|0;p=o+c|0;q=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;b[p>>0]=q;b[p+1>>0]=q>>8;b[p+2>>0]=q>>16;b[p+3>>0]=q>>24;return}else{o=a;p=o+c|0;q=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;b[p>>0]=q;b[p+1>>0]=q>>8;b[p+2>>0]=q>>16;b[p+3>>0]=q>>24;return}}function hg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=a+8|0;e=f[d>>2]|0;g=f[a>>2]|0;h=g;do if(e-g>>2>>>0>=b>>>0){i=a+4|0;j=f[i>>2]|0;k=j-g>>2;l=k>>>0>>0;m=l?k:b;n=j;if(m|0){j=m;m=h;while(1){f[m>>2]=f[c>>2];j=j+-1|0;if(!j)break;else m=m+4|0}}if(!l){m=h+(b<<2)|0;if((m|0)==(n|0))return;else{o=i;p=n+(~((n+-4-m|0)>>>2)<<2)|0;break}}else{m=b-k|0;j=m;q=n;while(1){f[q>>2]=f[c>>2];j=j+-1|0;if(!j)break;else q=q+4|0}o=i;p=n+(m<<2)|0;break}}else{q=g;if(!g)r=e;else{j=a+4|0;k=f[j>>2]|0;if((k|0)!=(h|0))f[j>>2]=k+(~((k+-4-g|0)>>>2)<<2);Oq(q);f[d>>2]=0;f[j>>2]=0;f[a>>2]=0;r=0}if(b>>>0>1073741823)aq(a);j=r>>1;q=r>>2>>>0<536870911?(j>>>0>>0?b:j):1073741823;if(q>>>0>1073741823)aq(a);j=ln(q<<2)|0;k=a+4|0;f[k>>2]=j;f[a>>2]=j;f[d>>2]=j+(q<<2);q=b;l=j;while(1){f[l>>2]=f[c>>2];q=q+-1|0;if(!q)break;else l=l+4|0}o=k;p=j+(b<<2)|0}while(0);f[o>>2]=p;return}function ig(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=jh(a,b,c,d,g)|0;i=f[e>>2]|0;j=f[d>>2]|0;k=f[g>>2]|0;g=f[k>>2]|0;l=(f[k+4>>2]|0)-g>>3;if(l>>>0<=i>>>0)aq(k);m=g;if(l>>>0<=j>>>0)aq(k);if((f[m+(i<<3)>>2]|0)>>>0>=(f[m+(j<<3)>>2]|0)>>>0){n=h;return n|0}f[d>>2]=i;f[e>>2]=j;j=f[d>>2]|0;e=f[c>>2]|0;if(l>>>0<=j>>>0)aq(k);if(l>>>0<=e>>>0)aq(k);if((f[m+(j<<3)>>2]|0)>>>0>=(f[m+(e<<3)>>2]|0)>>>0){n=h+1|0;return n|0}f[c>>2]=j;f[d>>2]=e;e=f[c>>2]|0;d=f[b>>2]|0;if(l>>>0<=e>>>0)aq(k);if(l>>>0<=d>>>0)aq(k);if((f[m+(e<<3)>>2]|0)>>>0>=(f[m+(d<<3)>>2]|0)>>>0){n=h+2|0;return n|0}f[b>>2]=e;f[c>>2]=d;d=f[b>>2]|0;c=f[a>>2]|0;if(l>>>0<=d>>>0)aq(k);if(l>>>0<=c>>>0)aq(k);if((f[m+(d<<3)>>2]|0)>>>0>=(f[m+(c<<3)>>2]|0)>>>0){n=h+3|0;return n|0}f[a>>2]=d;f[b>>2]=c;n=h+4|0;return n|0}function jg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=b[c>>0]|0;e=b[c+1>>0]|0;g=b[c+2>>0]|0;c=((d&255^318)+239^e&255)+239^g&255;h=f[a+4>>2]|0;if(!h){i=0;return i|0}j=h+-1|0;k=(j&h|0)==0;if(!k)if(c>>>0>>0)l=c;else l=(c>>>0)%(h>>>0)|0;else l=c&j;m=f[(f[a>>2]|0)+(l<<2)>>2]|0;if(!m){i=0;return i|0}a=f[m>>2]|0;if(!a){i=0;return i|0}if(k){k=a;while(1){m=f[k+4>>2]|0;n=(m|0)==(c|0);if(!(n|(m&j|0)==(l|0))){i=0;o=23;break}if(((n?(n=k+8|0,(b[n>>0]|0)==d<<24>>24):0)?(b[n+1>>0]|0)==e<<24>>24:0)?(b[n+2>>0]|0)==g<<24>>24:0){i=k;o=23;break}k=f[k>>2]|0;if(!k){i=0;o=23;break}}if((o|0)==23)return i|0}else p=a;while(1){a=f[p+4>>2]|0;if((a|0)==(c|0)){k=p+8|0;if(((b[k>>0]|0)==d<<24>>24?(b[k+1>>0]|0)==e<<24>>24:0)?(b[k+2>>0]|0)==g<<24>>24:0){i=p;o=23;break}}else{if(a>>>0>>0)q=a;else q=(a>>>0)%(h>>>0)|0;if((q|0)!=(l|0)){i=0;o=23;break}}p=f[p>>2]|0;if(!p){i=0;o=23;break}}if((o|0)==23)return i|0;return 0}function kg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=u;u=u+16|0;c=b;d=a+36|0;e=a+4|0;g=a+8|0;h=(f[g>>2]|0)-(f[e>>2]|0)>>2;i=a+40|0;j=f[i>>2]|0;k=f[d>>2]|0;l=j-k>>2;m=k;k=j;if(h>>>0<=l>>>0){if(h>>>0>>0?(j=m+(h<<2)|0,(j|0)!=(k|0)):0){m=k;do{k=m+-4|0;f[i>>2]=k;n=f[k>>2]|0;f[k>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);m=f[i>>2]|0}while((m|0)!=(j|0))}}else Eg(d,h-l|0);if((f[g>>2]|0)==(f[e>>2]|0)){o=1;u=b;return o|0}l=a+52|0;h=a+48|0;j=0;while(1){Xa[f[(f[a>>2]|0)+56>>2]&15](c,a,j);m=(f[d>>2]|0)+(j<<2)|0;i=f[c>>2]|0;f[c>>2]=0;n=f[m>>2]|0;f[m>>2]=i;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);n=f[c>>2]|0;f[c>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n);n=f[(f[d>>2]|0)+(j<<2)>>2]|0;if(!n){o=0;p=19;break}if(j>>>0<(f[l>>2]|0)>>>0?f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0:0)Bp(n);j=j+1|0;if(j>>>0>=(f[g>>2]|0)-(f[e>>2]|0)>>2>>>0){o=1;p=19;break}}if((p|0)==19){u=b;return o|0}return 0}function lg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;d=u;u=u+16|0;e=d+4|0;g=d;ci(f[c+12>>2]|0,b)|0;h=f[c+8>>2]|0;a:do if(h|0){i=b+16|0;j=b+4|0;k=h;while(1){l=k;if(!(Bf(0,b,l+8|0)|0)){m=0;break}n=l+20|0;o=(f[l+24>>2]|0)-(f[n>>2]|0)|0;ci(o,b)|0;l=f[n>>2]|0;n=i;p=f[n+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[n>>2]|0)>>>0>0)){f[g>>2]=f[j>>2];f[e>>2]=f[g>>2];Me(b,e,l,l+o|0)|0}k=f[k>>2]|0;if(!k)break a}u=d;return m|0}while(0);ci(f[c+32>>2]|0,b)|0;e=f[c+28>>2]|0;if(!e){m=1;u=d;return m|0}else q=e;while(1){e=q;if(!(Bf(0,b,e+8|0)|0)){m=0;r=10;break}lg(a,b,f[e+20>>2]|0)|0;q=f[q>>2]|0;if(!q){m=1;r=10;break}}if((r|0)==10){u=d;return m|0}return 0}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+8|0;i=a+12|0;j=f[h>>2]|0;if((f[i>>2]|0)==(j|0)){k=ln(76)|0;vn(k,b);l=k;f[g>>2]=l;k=f[i>>2]|0;if(k>>>0<(f[a+16>>2]|0)>>>0){f[g>>2]=0;f[k>>2]=l;f[i>>2]=k+4;m=g}else{Qg(h,g);m=g}g=f[m>>2]|0;f[m>>2]=0;if(!g){u=c;return 1}Va[f[(f[g>>2]|0)+4>>2]&127](g);u=c;return 1}g=f[j>>2]|0;f[d>>2]=b;j=g+4|0;m=g+8|0;h=f[m>>2]|0;if((h|0)==(f[g+12>>2]|0))Ri(j,d);else{f[h>>2]=b;f[m>>2]=h+4}h=f[d>>2]|0;b=g+16|0;k=g+20|0;g=f[k>>2]|0;i=f[b>>2]|0;l=g-i>>2;a=i;if((h|0)<(l|0)){n=a;o=h}else{i=h+1|0;f[e>>2]=-1;p=g;if(i>>>0<=l>>>0)if(i>>>0>>0?(g=a+(i<<2)|0,(g|0)!=(p|0)):0){f[k>>2]=p+(~((p+-4-g|0)>>>2)<<2);q=h;r=a}else{q=h;r=a}else{Ch(b,i-l|0,e);q=f[d>>2]|0;r=f[b>>2]|0}n=r;o=q}f[n+(o<<2)>>2]=((f[m>>2]|0)-(f[j>>2]|0)>>2)+-1;u=c;return 1}function ng(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=c;e=b;g=d-e|0;h=g>>2;i=a+8|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(h>>>0>j-k>>2>>>0){m=k;if(!k)n=j;else{j=a+4|0;o=f[j>>2]|0;if((o|0)!=(l|0))f[j>>2]=o+(~((o+-4-k|0)>>>2)<<2);Oq(m);f[i>>2]=0;f[j>>2]=0;f[a>>2]=0;n=0}if(h>>>0>1073741823)aq(a);j=n>>1;m=n>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;if(m>>>0>1073741823)aq(a);j=ln(m<<2)|0;n=a+4|0;f[n>>2]=j;f[a>>2]=j;f[i>>2]=j+(m<<2);if((g|0)<=0)return;kh(j|0,b|0,g|0)|0;f[n>>2]=j+(g>>>2<<2);return}g=a+4|0;a=f[g>>2]|0;j=a-k>>2;k=h>>>0>j>>>0;h=k?b+(j<<2)|0:c;c=a;j=a;if((h|0)==(b|0))p=l;else{a=h+-4-e|0;e=b;b=l;while(1){f[b>>2]=f[e>>2];e=e+4|0;if((e|0)==(h|0))break;else b=b+4|0}p=l+((a>>>2)+1<<2)|0}if(k){k=d-h|0;if((k|0)<=0)return;kh(j|0,h|0,k|0)|0;f[g>>2]=(f[g>>2]|0)+(k>>>2<<2);return}else{if((p|0)==(c|0))return;f[g>>2]=c+(~((c+-4-p|0)>>>2)<<2);return}}function og(a,c){a=a|0;c=c|0;var d=0,e=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;d=f[a+8>>2]|0;e=a+76|0;g=f[e>>2]|0;h=f[g+80>>2]|0;b[c+84>>0]=0;i=c+68|0;j=c+72|0;k=f[j>>2]|0;l=f[i>>2]|0;m=k-l>>2;n=l;l=k;if(h>>>0<=m>>>0)if(h>>>0>>0?(k=n+(h<<2)|0,(k|0)!=(l|0)):0){f[j>>2]=l+(~((l+-4-k|0)>>>2)<<2);o=g;p=h}else{o=g;p=h}else{Ch(i,h-m|0,3600);m=f[e>>2]|0;o=m;p=f[m+80>>2]|0}m=(f[o+100>>2]|0)-(f[o+96>>2]|0)|0;e=(m|0)/12|0;if(!m){q=1;return q|0}m=c+68|0;c=f[o+96>>2]|0;o=f[d+28>>2]|0;d=f[(f[a+80>>2]|0)+12>>2]|0;a=0;while(1){h=a*3|0;i=f[d+(f[o+(h<<2)>>2]<<2)>>2]|0;if(i>>>0>=p>>>0){q=0;r=10;break}g=f[m>>2]|0;f[g+(f[c+(a*12|0)>>2]<<2)>>2]=i;i=f[d+(f[o+(h+1<<2)>>2]<<2)>>2]|0;if(i>>>0>=p>>>0){q=0;r=10;break}f[g+(f[c+(a*12|0)+4>>2]<<2)>>2]=i;i=f[d+(f[o+(h+2<<2)>>2]<<2)>>2]|0;if(i>>>0>=p>>>0){q=0;r=10;break}f[g+(f[c+(a*12|0)+8>>2]<<2)>>2]=i;a=a+1|0;if(a>>>0>=e>>>0){q=1;r=10;break}}if((r|0)==10)return q|0;return 0}function pg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=u;u=u+16|0;g=e;if(!(xh(a,c,d)|0)){h=0;u=e;return h|0}if((b[(f[a+8>>2]|0)+24>>0]|0)!=3){h=0;u=e;return h|0}i=f[c+48>>2]|0;c=ln(32)|0;f[g>>2]=c;f[g+8>>2]=-2147483616;f[g+4>>2]=17;j=c;k=14495;l=j+17|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[c+17>>0]=0;c=i+16|0;k=f[c>>2]|0;if(k){j=c;l=k;a:while(1){k=l;while(1){if((f[k+16>>2]|0)>=(d|0))break;m=f[k+4>>2]|0;if(!m){n=j;break a}else k=m}l=f[k>>2]|0;if(!l){n=k;break}else j=k}if(((n|0)!=(c|0)?(f[n+16>>2]|0)<=(d|0):0)?(d=n+20|0,(Jh(d,g)|0)!=0):0)o=Hk(d,g,-1)|0;else p=12}else p=12;if((p|0)==12)o=Hk(i,g,-1)|0;if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);if((o|0)<1){h=0;u=e;return h|0}ip(a+40|0,o);h=1;u=e;return h|0}function qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=f[b>>2]|0;d=f[b+4>>2]|0;e=f[b+8>>2]|0;b=((c^318)+239^d)+239^e;g=f[a+4>>2]|0;if(!g){h=0;return h|0}i=g+-1|0;j=(i&g|0)==0;if(!j)if(b>>>0>>0)k=b;else k=(b>>>0)%(g>>>0)|0;else k=b&i;l=f[(f[a>>2]|0)+(k<<2)>>2]|0;if(!l){h=0;return h|0}a=f[l>>2]|0;if(!a){h=0;return h|0}if(j){j=a;while(1){l=f[j+4>>2]|0;m=(l|0)==(b|0);if(!(m|(l&i|0)==(k|0))){h=0;n=23;break}if(((m?(f[j+8>>2]|0)==(c|0):0)?(f[j+12>>2]|0)==(d|0):0)?(f[j+16>>2]|0)==(e|0):0){h=j;n=23;break}j=f[j>>2]|0;if(!j){h=0;n=23;break}}if((n|0)==23)return h|0}else o=a;while(1){a=f[o+4>>2]|0;if((a|0)==(b|0)){if(((f[o+8>>2]|0)==(c|0)?(f[o+12>>2]|0)==(d|0):0)?(f[o+16>>2]|0)==(e|0):0){h=o;n=23;break}}else{if(a>>>0>>0)p=a;else p=(a>>>0)%(g>>>0)|0;if((p|0)!=(k|0)){h=0;n=23;break}}o=f[o>>2]|0;if(!o){h=0;n=23;break}}if((n|0)==23)return h|0;return 0}function rg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=c;g=d-e|0;h=a+8|0;i=f[h>>2]|0;j=f[a>>2]|0;k=j;if(g>>>0>(i-j|0)>>>0){if(!j)l=i;else{i=a+4|0;if((f[i>>2]|0)!=(k|0))f[i>>2]=k;Oq(k);f[h>>2]=0;f[i>>2]=0;f[a>>2]=0;l=0}if((g|0)<0)aq(a);i=l<<1;m=l>>>0<1073741823?(i>>>0>>0?g:i):2147483647;if((m|0)<0)aq(a);i=ln(m)|0;l=a+4|0;f[l>>2]=i;f[a>>2]=i;f[h>>2]=i+m;if((c|0)==(d|0))return;else{n=c;o=i}do{b[o>>0]=b[n>>0]|0;n=n+1|0;o=(f[l>>2]|0)+1|0;f[l>>2]=o}while((n|0)!=(d|0));return}n=a+4|0;a=(f[n>>2]|0)-j|0;j=g>>>0>a>>>0;g=c+a|0;a=j?g:d;if((a|0)==(c|0))p=k;else{o=c;c=k;while(1){b[c>>0]=b[o>>0]|0;o=o+1|0;if((o|0)==(a|0))break;else c=c+1|0}p=k+(a-e)|0}if(!j){if((f[n>>2]|0)==(p|0))return;f[n>>2]=p;return}if((a|0)==(d|0))return;a=g;g=f[n>>2]|0;do{b[g>>0]=b[a>>0]|0;a=a+1|0;g=(f[n>>2]|0)+1|0;f[n>>2]=g}while((a|0)!=(d|0));return}function sg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=c>>>1&1431655765|c<<1&-1431655766;c=d>>>2&858993459|d<<2&-858993460;d=c>>>4&252645135|c<<4&-252645136;c=d>>>8&16711935|d<<8&-16711936;d=32-b|0;e=(c>>>16|c<<16)>>>d;c=e-(e>>>1&1431655765)|0;g=(c>>>2&858993459)+(c&858993459)|0;c=(X((g>>>4)+g&252645135,16843009)|0)>>>24;g=b-c|0;h=f[a>>2]|0;i=h;j=Vn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;g=h;f[g>>2]=j;f[g+4>>2]=I;g=h+8|0;h=g;j=Vn(f[h>>2]|0,f[h+4>>2]|0,c|0,0)|0;c=g;f[c>>2]=j;f[c+4>>2]=I;c=a+28|0;j=f[c>>2]|0;g=32-j|0;h=a+24|0;do if((g|0)>=(b|0)){i=-1>>>d<>2]&~i|i&e<>2]=k;i=j+b|0;f[c>>2]=i;if((i|0)!=32)return;i=a+16|0;l=f[i>>2]|0;if((l|0)==(f[a+20>>2]|0)){Ri(a+12|0,h);m=0;n=0;break}else{f[l>>2]=k;f[i>>2]=l+4;m=0;n=0;break}}else{l=-1>>>j<>2]&~l|l&e<>2]=i;l=a+16|0;k=f[l>>2]|0;if((k|0)==(f[a+20>>2]|0))Ri(a+12|0,h);else{f[k>>2]=i;f[l>>2]=k+4}k=b-g|0;m=k;n=-1>>>(32-k|0)&e>>>g}while(0);f[h>>2]=n;f[c>>2]=m;return}function tg(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=c&255;g=(d|0)!=0;a:do if(g&(a&3|0)!=0){h=c&255;i=a;j=d;while(1){if((b[i>>0]|0)==h<<24>>24){k=i;l=j;m=6;break a}n=i+1|0;o=j+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){i=n;j=o}else{q=n;r=o;s=p;m=5;break}}}else{q=a;r=d;s=g;m=5}while(0);if((m|0)==5)if(s){k=q;l=r;m=6}else{t=q;u=0}b:do if((m|0)==6){q=c&255;if((b[k>>0]|0)==q<<24>>24){t=k;u=l}else{r=X(e,16843009)|0;c:do if(l>>>0>3){s=k;g=l;while(1){d=f[s>>2]^r;if((d&-2139062144^-2139062144)&d+-16843009|0)break;d=s+4|0;a=g+-4|0;if(a>>>0>3){s=d;g=a}else{v=d;w=a;m=11;break c}}x=s;y=g}else{v=k;w=l;m=11}while(0);if((m|0)==11)if(!w){t=v;u=0;break}else{x=v;y=w}while(1){if((b[x>>0]|0)==q<<24>>24){t=x;u=y;break b}r=x+1|0;y=y+-1|0;if(!y){t=r;u=0;break}else x=r}}}while(0);return (u|0?t:0)|0}function ug(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=e;do if((d|0)==(e|0)){h=a+8|0;i=f[h>>2]|0;j=a+12|0;k=f[j>>2]|0;l=k;if(i>>>0>>0){k=i;m=((l-k>>2)+1|0)/2|0;n=i+(m<<2)|0;o=k-d|0;k=o>>2;p=n+(0-k<<2)|0;if(!k){q=n;r=i}else{im(p|0,d|0,o|0)|0;q=p;r=f[h>>2]|0}f[c>>2]=q;f[h>>2]=r+(m<<2);s=q;break}m=l-g>>1;l=(m|0)==0?1:m;if(l>>>0>1073741823){m=ra(8)|0;Oo(m,16035);f[m>>2]=7256;va(m|0,1112,110)}m=ln(l<<2)|0;p=m;o=m+((l+3|0)>>>2<<2)|0;n=o;k=m+(l<<2)|0;if((d|0)==(i|0)){t=n;u=d}else{l=o;m=n;v=d;do{f[l>>2]=f[v>>2];l=m+4|0;m=l;v=v+4|0}while((v|0)!=(i|0));t=m;u=f[a>>2]|0}f[a>>2]=p;f[c>>2]=n;f[h>>2]=t;f[j>>2]=k;if(!u)s=o;else{Oq(u);s=f[c>>2]|0}}else s=d;while(0);f[s+-4>>2]=f[b>>2];f[c>>2]=(f[c>>2]|0)+-4;return}function vg(a,c){a=a|0;c=c|0;var d=0,e=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;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=a+4|0;if((f[i>>2]|0)==-1){j=0;u=d;return j|0}k=f[a+8>>2]|0;l=c+16|0;m=l;n=f[m>>2]|0;o=f[m+4>>2]|0;if(!((o|0)>0|(o|0)==0&n>>>0>0)){m=(f[a+12>>2]|0)-k|0;p=c+4|0;f[g>>2]=f[p>>2];f[e>>2]=f[g>>2];Me(c,e,k,k+m|0)|0;m=l;k=f[m>>2]|0;q=f[m+4>>2]|0;m=a+20|0;if((q|0)>0|(q|0)==0&k>>>0>0){r=q;s=k;t=g}else{f[g>>2]=f[p>>2];f[e>>2]=f[g>>2];Me(c,e,m,m+4|0)|0;m=l;r=f[m+4>>2]|0;s=f[m>>2]|0;t=g}}else{r=o;s=n;t=g}b[h>>0]=f[i>>2];if(!((r|0)>0|(r|0)==0&s>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+1|0)|0}j=1;u=d;return j|0}function wg(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0,w=0,x=0,y=0,z=0,A=0;e=u;u=u+16|0;g=e+4|0;h=e;i=a+8|0;a=f[i>>2]|0;j=f[a+40>>2]|0;k=Lq((j|0)>-1?j:-1)|0;l=c+4|0;m=f[l>>2]|0;n=f[c>>2]|0;if((m|0)==(n|0)){Mq(k);u=e;return 1}o=d+16|0;p=d+4|0;q=k+j|0;j=0;r=n;n=a;s=a;a=m;while(1){m=f[r+(j<<2)>>2]|0;if(!(b[n+84>>0]|0))t=f[(f[n+68>>2]|0)+(m<<2)>>2]|0;else t=m;m=s+48|0;v=f[m>>2]|0;w=f[m+4>>2]|0;m=s+40|0;x=f[m>>2]|0;y=un(x|0,f[m+4>>2]|0,t|0,0)|0;m=Vn(y|0,I|0,v|0,w|0)|0;kh(k|0,(f[f[s>>2]>>2]|0)+m|0,x|0)|0;x=o;m=f[x+4>>2]|0;if((m|0)>0|(m|0)==0&(f[x>>2]|0)>>>0>0){z=r;A=a}else{f[h>>2]=f[p>>2];f[g>>2]=f[h>>2];Me(d,g,k,q)|0;z=f[c>>2]|0;A=f[l>>2]|0}x=j+1|0;if(x>>>0>=A-z>>2>>>0)break;m=f[i>>2]|0;j=x;r=z;n=m;s=m;a=A}Mq(k);u=e;return 1}function xg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=(f[b>>2]|0)*3|0;if((d|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}b=f[a+12>>2]|0;h=f[b+12>>2]|0;if((f[h+(d<<2)>>2]|0)==-1){e=0;g=d;f[c>>2]=g;return e|0}i=f[b>>2]|0;b=f[a+152>>2]|0;if((f[b+(f[i+(d<<2)>>2]<<2)>>2]|0)==-1){a=d+1|0;j=((a>>>0)%3|0|0)==0?d+-2|0:a;if((j|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}if((f[h+(j<<2)>>2]|0)==-1){e=0;g=j;f[c>>2]=g;return e|0}if((f[b+(f[i+(j<<2)>>2]<<2)>>2]|0)==-1){a=j+1|0;k=((a>>>0)%3|0|0)==0?j+-2|0:a;if((k|0)==-1){e=0;g=-1;f[c>>2]=g;return e|0}if((f[h+(k<<2)>>2]|0)==-1){e=0;g=k;f[c>>2]=g;return e|0}if((f[b+(f[i+(k<<2)>>2]<<2)>>2]|0)==-1){i=k+1|0;e=1;g=((i>>>0)%3|0|0)==0?k+-2|0:i;f[c>>2]=g;return e|0}else l=k}else l=j}else l=d;while(1){d=(((l>>>0)%3|0|0)==0?2:-1)+l|0;if((d|0)==-1)break;j=f[h+(d<<2)>>2]|0;if((j|0)==-1)break;d=j+(((j>>>0)%3|0|0)==0?2:-1)|0;if((d|0)==-1)break;else l=d}e=0;g=(((l>>>0)%3|0|0)==0?2:-1)+l|0;f[c>>2]=g;return e|0}function yg(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=a+4|0;g=f[e>>2]|0;if(!g){f[c>>2]=e;h=e;return h|0}e=b[d+11>>0]|0;i=e<<24>>24<0;j=i?f[d+4>>2]|0:e&255;e=i?f[d>>2]|0:d;d=a+4|0;a=g;while(1){g=a+16|0;i=b[g+11>>0]|0;k=i<<24>>24<0;l=k?f[a+20>>2]|0:i&255;i=l>>>0>>0;m=i?l:j;if((m|0)!=0?(n=Vk(e,k?f[g>>2]|0:g,m)|0,(n|0)!=0):0)if((n|0)<0)o=8;else o=10;else if(j>>>0>>0)o=8;else o=10;if((o|0)==8){o=0;n=f[a>>2]|0;if(!n){o=9;break}else{p=a;q=n}}else if((o|0)==10){o=0;n=j>>>0>>0?j:l;if((n|0)!=0?(l=Vk(k?f[g>>2]|0:g,e,n)|0,(l|0)!=0):0){if((l|0)>=0){o=16;break}}else o=12;if((o|0)==12?(o=0,!i):0){o=16;break}r=a+4|0;i=f[r>>2]|0;if(!i){o=15;break}else{p=r;q=i}}d=p;a=q}if((o|0)==9){f[c>>2]=a;h=a;return h|0}else if((o|0)==15){f[c>>2]=a;h=r;return h|0}else if((o|0)==16){f[c>>2]=a;h=d;return h|0}return 0}function zg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0;d=u;u=u+32|0;e=d+24|0;g=d+16|0;h=d+8|0;i=d;j=a+4|0;k=f[j>>2]|0;l=f[b>>2]|0;m=f[b+4>>2]|0;b=f[c>>2]|0;n=f[c+4>>2]|0;c=b-l<<3;f[j>>2]=k-m+n+c;j=(f[a>>2]|0)+(k>>>5<<2)|0;a=k&31;k=j;if((m|0)!=(a|0)){f[e>>2]=l;f[e+4>>2]=m;f[g>>2]=b;f[g+4>>2]=n;f[h>>2]=k;f[h+4>>2]=a;xe(i,e,g,h);u=d;return}h=n-m+c|0;c=l;if((h|0)>0){if(!m){o=h;p=j;q=0;r=l;s=c}else{l=32-m|0;n=(h|0)<(l|0)?h:l;g=-1>>>(l-n|0)&-1<>2]=f[j>>2]&~g|f[c>>2]&g;g=n+m|0;l=c+4|0;o=h-n|0;p=j+(g>>>5<<2)|0;q=g&31;r=l;s=l}l=(o|0)/32|0;im(p|0,r|0,l<<2|0)|0;r=o-(l<<5)|0;o=p+(l<<2)|0;p=o;if((r|0)>0){g=-1>>>(32-r|0);f[o>>2]=f[o>>2]&~g|f[s+(l<<2)>>2]&g;t=r;v=p}else{t=q;v=p}}else{t=m;v=k}f[i>>2]=v;f[i+4>>2]=t;u=d;return}function Ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=a+8|0;d=f[c>>2]|0;e=a+12|0;g=f[e>>2]|0;h=g;do if((d|0)==(g|0)){i=a+4|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(j>>>0>k>>>0){m=j;n=((m-l>>2)+1|0)/-2|0;o=j+(n<<2)|0;p=d-m|0;m=p>>2;if(!m)q=j;else{im(o|0,j|0,p|0)|0;q=f[i>>2]|0}p=o+(m<<2)|0;f[c>>2]=p;f[i>>2]=q+(n<<2);r=p;break}p=h-l>>1;l=(p|0)==0?1:p;if(l>>>0>1073741823){p=ra(8)|0;Oo(p,16035);f[p>>2]=7256;va(p|0,1112,110)}p=ln(l<<2)|0;n=p;m=p+(l>>>2<<2)|0;o=m;s=p+(l<<2)|0;if((j|0)==(d|0)){t=o;u=k}else{k=m;m=o;l=j;do{f[k>>2]=f[l>>2];k=m+4|0;m=k;l=l+4|0}while((l|0)!=(d|0));t=m;u=f[a>>2]|0}f[a>>2]=n;f[i>>2]=o;f[c>>2]=t;f[e>>2]=s;if(!u)r=t;else{Oq(u);r=f[c>>2]|0}}else r=d;while(0);f[r>>2]=f[b>>2];f[c>>2]=(f[c>>2]|0)+4;return}function Bg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+12|0;i=a+4|0;j=f[i>>2]|0;if((j|0)==(f[a+8>>2]|0)){Ri(a,h);k=f[i>>2]|0}else{f[j>>2]=f[h>>2];l=j+4|0;f[i>>2]=l;k=l}l=f[a>>2]|0;f[g>>2]=k-l;k=b+16|0;j=k;m=f[j+4>>2]|0;if(!((m|0)>0|(m|0)==0&(f[j>>2]|0)>>>0>0)){f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;j=f[a>>2]|0;m=f[g>>2]|0;g=k;k=f[g+4>>2]|0;if((k|0)>0|(k|0)==0&(f[g>>2]|0)>>>0>0){n=j;o=e}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,j,j+m|0)|0;n=f[a>>2]|0;o=e}}else{n=l;o=e}e=f[i>>2]|0;if((e|0)==(n|0)){f[h>>2]=0;p=a+16|0;f[p>>2]=0;u=c;return}f[i>>2]=e+(~((e+-4-n|0)>>>2)<<2);f[h>>2]=0;p=a+16|0;f[p>>2]=0;u=c;return}function Cg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=c;g=d-e|0;h=a+8|0;i=f[h>>2]|0;j=f[a>>2]|0;k=j;if(g>>>0>(i-j|0)>>>0){if(!j)l=i;else{i=a+4|0;if((f[i>>2]|0)!=(k|0))f[i>>2]=k;Oq(k);f[h>>2]=0;f[i>>2]=0;f[a>>2]=0;l=0}if((g|0)<0)aq(a);i=l<<1;m=l>>>0<1073741823?(i>>>0>>0?g:i):2147483647;if((m|0)<0)aq(a);i=ln(m)|0;l=a+4|0;f[l>>2]=i;f[a>>2]=i;f[h>>2]=i+m;if((c|0)==(d|0))return;else{n=c;o=i}do{b[o>>0]=b[n>>0]|0;n=n+1|0;o=(f[l>>2]|0)+1|0;f[l>>2]=o}while((n|0)!=(d|0));return}else{n=a+4|0;a=(f[n>>2]|0)-j|0;j=g>>>0>a>>>0;g=c+a|0;a=j?g:d;o=a-e|0;if(o|0)im(k|0,c|0,o|0)|0;c=k+o|0;if(!j){if((f[n>>2]|0)==(c|0))return;f[n>>2]=c;return}if((a|0)==(d|0))return;a=g;g=f[n>>2]|0;do{b[g>>0]=b[a>>0]|0;a=a+1|0;g=(f[n>>2]|0)+1|0;f[n>>2]=g}while((a|0)!=(d|0));return}}function Dg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+16|0;d=c;if(b[a+352>>0]|0){u=c;return 1}e=a+8|0;g=f[e>>2]|0;h=(f[g+12>>2]|0)-(f[g+8>>2]|0)|0;g=h>>2;i=a+172|0;Gi(i,g+-1|0);if(!((g|0)!=1&(h|0)>0)){u=c;return 1}h=a+12|0;a=0;j=0;while(1){k=f[(f[(f[e>>2]|0)+8>>2]|0)+(a<<2)>>2]|0;if(!(f[k+56>>2]|0))l=j;else{m=f[i>>2]|0;f[m+(j*136|0)>>2]=a;n=f[m+(j*136|0)+104>>2]|0;o=m+(j*136|0)+108|0;p=f[o>>2]|0;if((p|0)!=(n|0))f[o>>2]=p+(~((p+-4-n|0)>>>2)<<2);n=f[h>>2]|0;gk(m+(j*136|0)+104|0,(f[n+4>>2]|0)-(f[n>>2]|0)>>2);n=(f[i>>2]|0)+(j*136|0)+116|0;m=f[h>>2]|0;p=(f[m+4>>2]|0)-(f[m>>2]|0)>>2;f[d>>2]=-1;hg(n,p,d);p=f[i>>2]|0;f[p+(j*136|0)+128>>2]=0;Gc(p+(j*136|0)+4|0,f[e>>2]|0,f[h>>2]|0,k)|0;l=j+1|0}a=a+1|0;if((a|0)>=(g|0))break;else j=l}u=c;return 1}function Eg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(d-g>>2>>>0>=b>>>0){sj(g|0,0,b<<2|0)|0;f[e>>2]=g+(b<<2);return}i=f[a>>2]|0;j=g-i>>2;g=j+b|0;k=i;if(g>>>0>1073741823)aq(a);l=d-i|0;d=l>>1;m=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(m)if(m>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}else{n=ln(m<<2)|0;break}else n=0;while(0);d=n+(j<<2)|0;sj(d|0,0,b<<2|0)|0;b=d;j=n+(m<<2)|0;m=n+(g<<2)|0;if((h|0)==(k|0)){o=b;p=i;q=h}else{i=h;h=b;b=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[b+-4>>2]=d;b=h+-4|0;h=b}while((i|0)!=(k|0));o=h;p=f[a>>2]|0;q=f[e>>2]|0}f[a>>2]=o;f[e>>2]=m;f[c>>2]=j;j=p;if((q|0)!=(j|0)){c=q;do{c=c+-4|0;q=f[c>>2]|0;f[c>>2]=0;if(q|0)Va[f[(f[q>>2]|0)+4>>2]&127](q)}while((c|0)!=(j|0))}if(!p)return;Oq(p);return}function Fg(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=$(h);var i=0,j=0,k=0,l=0,m=0,n=0;i=u;u=u+16|0;j=i;k=i+4|0;f[j>>2]=c;c=ln(32)|0;f[k>>2]=c;f[k+8>>2]=-2147483616;f[k+4>>2]=17;l=c;m=14495;n=l+17|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[c+17>>0]=0;Xj(Hd(a,j)|0,k,d);if((b[k+11>>0]|0)<0)Oq(f[k>>2]|0);d=ln(32)|0;f[k>>2]=d;f[k+8>>2]=-2147483616;f[k+4>>2]=19;l=d;m=14438;n=l+19|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[d+19>>0]=0;si(Hd(a,j)|0,k,g,e);if((b[k+11>>0]|0)<0)Oq(f[k>>2]|0);e=ln(32)|0;f[k>>2]=e;f[k+8>>2]=-2147483616;f[k+4>>2]=18;l=e;m=14458;n=l+18|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[e+18>>0]=0;Tj(Hd(a,j)|0,k,h);if((b[k+11>>0]|0)>=0){u=i;return}Oq(f[k>>2]|0);u=i;return}function Gg(a){a=a|0;tk(a);tk(a+32|0);tk(a+64|0);tk(a+96|0);tk(a+128|0);tk(a+160|0);tk(a+192|0);tk(a+224|0);tk(a+256|0);tk(a+288|0);tk(a+320|0);tk(a+352|0);tk(a+384|0);tk(a+416|0);tk(a+448|0);tk(a+480|0);tk(a+512|0);tk(a+544|0);tk(a+576|0);tk(a+608|0);tk(a+640|0);tk(a+672|0);tk(a+704|0);tk(a+736|0);tk(a+768|0);tk(a+800|0);tk(a+832|0);tk(a+864|0);tk(a+896|0);tk(a+928|0);tk(a+960|0);tk(a+992|0);tk(a+1024|0);return}function Hg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=u;u=u+16|0;d=c;if(b[a+288>>0]|0){u=c;return 1}e=a+8|0;g=f[e>>2]|0;h=(f[g+12>>2]|0)-(f[g+8>>2]|0)|0;g=h>>2;i=a+172|0;Gi(i,g+-1|0);if(!((g|0)!=1&(h|0)>0)){u=c;return 1}h=a+12|0;a=0;j=0;while(1){k=f[(f[(f[e>>2]|0)+8>>2]|0)+(a<<2)>>2]|0;if(!(f[k+56>>2]|0))l=j;else{m=f[i>>2]|0;f[m+(j*136|0)>>2]=a;n=f[m+(j*136|0)+104>>2]|0;o=m+(j*136|0)+108|0;p=f[o>>2]|0;if((p|0)!=(n|0))f[o>>2]=p+(~((p+-4-n|0)>>>2)<<2);n=f[h>>2]|0;gk(m+(j*136|0)+104|0,(f[n+4>>2]|0)-(f[n>>2]|0)>>2);n=(f[i>>2]|0)+(j*136|0)+116|0;m=f[h>>2]|0;p=(f[m+4>>2]|0)-(f[m>>2]|0)>>2;f[d>>2]=-1;hg(n,p,d);p=f[i>>2]|0;f[p+(j*136|0)+128>>2]=0;Gc(p+(j*136|0)+4|0,f[e>>2]|0,f[h>>2]|0,k)|0;l=j+1|0}a=a+1|0;if((a|0)>=(g|0))break;else j=l}u=c;return 1}function Ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=c;e=b;g=d-e|0;h=g>>2;i=a+8|0;j=f[i>>2]|0;k=f[a>>2]|0;l=k;if(h>>>0<=j-k>>2>>>0){m=a+4|0;n=(f[m>>2]|0)-k>>2;o=h>>>0>n>>>0;p=o?b+(n<<2)|0:c;c=p;n=c-e|0;e=n>>2;if(e|0)im(k|0,b|0,n|0)|0;n=l+(e<<2)|0;if(o){o=d-c|0;if((o|0)<=0)return;kh(f[m>>2]|0,p|0,o|0)|0;f[m>>2]=(f[m>>2]|0)+(o>>>2<<2);return}else{o=f[m>>2]|0;if((o|0)==(n|0))return;f[m>>2]=o+(~((o+-4-n|0)>>>2)<<2);return}}n=k;if(!k)q=j;else{j=a+4|0;o=f[j>>2]|0;if((o|0)!=(l|0))f[j>>2]=o+(~((o+-4-k|0)>>>2)<<2);Oq(n);f[i>>2]=0;f[j>>2]=0;f[a>>2]=0;q=0}if(h>>>0>1073741823)aq(a);j=q>>1;n=q>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;if(n>>>0>1073741823)aq(a);j=ln(n<<2)|0;h=a+4|0;f[h>>2]=j;f[a>>2]=j;f[i>>2]=j+(n<<2);if((g|0)<=0)return;kh(j|0,b|0,g|0)|0;f[h>>2]=j+(g>>>2<<2);return}function Jg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0,v=0.0;e=u;u=u+16|0;g=e;h=c+1|0;f[g>>2]=0;i=g+4|0;f[i>>2]=0;f[g+8>>2]=0;do if(h)if(h>>>0>1073741823)aq(g);else{j=ln(h<<2)|0;f[g>>2]=j;k=j+(h<<2)|0;f[g+8>>2]=k;sj(j|0,0,(c<<2)+4|0)|0;f[i>>2]=k;l=j;m=k;n=j;break}else{l=0;m=0;n=0}while(0);if((b|0)>0){g=0;do{j=l+(f[a+(g<<2)>>2]<<2)|0;f[j>>2]=(f[j>>2]|0)+1;g=g+1|0}while((g|0)!=(b|0))}o=+(b|0);if((c|0)<0){p=0;q=0.0}else{c=0;r=0.0;b=0;while(1){g=f[l+(b<<2)>>2]|0;s=+(g|0);if((g|0)>0){t=c+1|0;v=r+ +Zg(s/o)*s}else{t=c;v=r}b=b+1|0;if((b|0)==(h|0)){p=t;q=v;break}else{c=t;r=v}}}if(d|0)f[d>>2]=p;v=-q;p=~~v>>>0;d=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;if(!l){I=d;u=e;return p|0}if((m|0)!=(l|0))f[i>>2]=m+(~((m+-4-l|0)>>>2)<<2);Oq(n);I=d;u=e;return p|0}function Kg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e+4|0;h=e;i=ln(32)|0;f[a>>2]=i;f[a+4>>2]=c+4;c=a+8|0;b[c>>0]=0;f[i+16>>2]=f[d>>2];a=i+20|0;f[i+24>>2]=0;f[i+28>>2]=0;j=i+24|0;f[a>>2]=j;i=f[d+4>>2]|0;k=d+8|0;if((i|0)==(k|0)){b[c>>0]=1;u=e;return}d=j;j=i;while(1){i=j+16|0;f[h>>2]=d;f[g>>2]=f[h>>2];ph(a,g,i,i)|0;i=f[j+4>>2]|0;if(!i){l=j+8|0;m=f[l>>2]|0;if((f[m>>2]|0)==(j|0))n=m;else{m=l;do{l=f[m>>2]|0;m=l+8|0;o=f[m>>2]|0}while((f[o>>2]|0)!=(l|0));n=o}}else{m=i;while(1){o=f[m>>2]|0;if(!o)break;else m=o}n=m}if((n|0)==(k|0))break;else j=n}b[c>>0]=1;u=e;return}function Lg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d;f[e>>2]=b;g=a+8|0;if(((f[a+12>>2]|0)-(f[g>>2]|0)>>2|0)<=(b|0))Bh(g,b+1|0);h=f[(f[c>>2]|0)+56>>2]|0;do if((h|0)<5){i=a+20+(h*12|0)+4|0;j=f[i>>2]|0;if((j|0)==(f[a+20+(h*12|0)+8>>2]|0)){Ri(a+20+(h*12|0)|0,e);break}else{f[j>>2]=b;f[i>>2]=j+4;break}}while(0);b=f[c>>2]|0;h=f[e>>2]|0;f[b+60>>2]=h;e=(f[g>>2]|0)+(h<<2)|0;f[c>>2]=0;c=f[e>>2]|0;f[e>>2]=b;if(!c){u=d;return}b=c+88|0;e=f[b>>2]|0;f[b>>2]=0;if(e|0){b=f[e+8>>2]|0;if(b|0){h=e+12|0;if((f[h>>2]|0)!=(b|0))f[h>>2]=b;Oq(b)}Oq(e)}e=f[c+68>>2]|0;if(e|0){b=c+72|0;h=f[b>>2]|0;if((h|0)!=(e|0))f[b>>2]=h+(~((h+-4-e|0)>>>2)<<2);Oq(e)}e=c+64|0;h=f[e>>2]|0;f[e>>2]=0;if(h|0){e=f[h>>2]|0;if(e|0){b=h+4|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;Oq(e)}Oq(h)}Oq(c);u=d;return}function Mg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=f[e>>2]|0;gk(f[a+4>>2]|0,(f[g+56>>2]|0)-(f[g+52>>2]|0)>>2);g=a+84|0;a=f[g>>2]|0;if(!a){h=f[(f[e>>2]|0)+64>>2]|0;i=(f[h+4>>2]|0)-(f[h>>2]|0)>>2;h=(i>>>0)/3|0;if(i>>>0<=2){u=b;return 1}i=0;do{f[d>>2]=i*3;f[c>>2]=f[d>>2];Zb(e,c);i=i+1|0}while((i|0)<(h|0));u=b;return 1}else{h=f[a>>2]|0;if((f[a+4>>2]|0)==(h|0)){u=b;return 1}a=0;i=h;do{f[d>>2]=f[i+(a<<2)>>2];f[c>>2]=f[d>>2];Zb(e,c);a=a+1|0;h=f[g>>2]|0;i=f[h>>2]|0}while(a>>>0<(f[h+4>>2]|0)-i>>2>>>0);u=b;return 1}return 0}function Ng(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,v=0,w=0;d=u;u=u+48|0;e=d+16|0;g=d;h=d+32|0;i=a+28|0;j=f[i>>2]|0;f[h>>2]=j;k=a+20|0;l=(f[k>>2]|0)-j|0;f[h+4>>2]=l;f[h+8>>2]=b;f[h+12>>2]=c;b=l+c|0;l=a+60|0;f[g>>2]=f[l>>2];f[g+4>>2]=h;f[g+8>>2]=2;j=to(Aa(146,g|0)|0)|0;a:do if((b|0)!=(j|0)){g=2;m=b;n=h;o=j;while(1){if((o|0)<0)break;m=m-o|0;p=f[n+4>>2]|0;q=o>>>0>p>>>0;r=q?n+8|0:n;s=g+(q<<31>>31)|0;t=o-(q?p:0)|0;f[r>>2]=(f[r>>2]|0)+t;p=r+4|0;f[p>>2]=(f[p>>2]|0)-t;f[e>>2]=f[l>>2];f[e+4>>2]=r;f[e+8>>2]=s;o=to(Aa(146,e|0)|0)|0;if((m|0)==(o|0)){v=3;break a}else{g=s;n=r}}f[a+16>>2]=0;f[i>>2]=0;f[k>>2]=0;f[a>>2]=f[a>>2]|32;if((g|0)==2)w=0;else w=c-(f[n+4>>2]|0)|0}else v=3;while(0);if((v|0)==3){v=f[a+44>>2]|0;f[a+16>>2]=v+(f[a+48>>2]|0);a=v;f[i>>2]=a;f[k>>2]=a;w=c}u=d;return w|0}function Og(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;f[a>>2]=6192;b=f[a+68>>2]|0;if(b|0){c=a+72|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+56>>2]|0;if(b|0){d=a+60|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+44>>2]|0;if(b|0){c=a+48|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+32>>2]|0;if(b|0){d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+20>>2]|0;if(b|0){c=a+24|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}hi(a+8|0);b=a+4|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;b=a+40|0;d=f[b>>2]|0;if(d|0){c=a+44|0;e=f[c>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-4|0;f[c>>2]=e;i=f[e>>2]|0;f[e>>2]=0;if(i|0){bj(i);Oq(i)}h=f[c>>2]|0}while((h|0)!=(d|0));g=f[b>>2]|0}Oq(g)}bj(a);Oq(a);return}function Pg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a+12|0;d=f[a>>2]|0;e=a+8|0;g=f[e>>2]|0;h=(g|0)==-1;if(!(b[c>>0]|0)){do if(((!h?(i=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(i|0)!=-1):0)?(f[(f[d>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)==0:0)?(j=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(j|0)!=-1):0)if(!((j>>>0)%3|0)){k=j+2|0;break}else{k=j+-1|0;break}else k=-1;while(0);f[e>>2]=k;return}k=g+1|0;if(((!h?(h=((k>>>0)%3|0|0)==0?g+-2|0:k,(h|0)!=-1):0)?(f[(f[d>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)==0:0)?(k=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(h<<2)>>2]|0,h=k+1|0,(k|0)!=-1):0){g=((h>>>0)%3|0|0)==0?k+-2|0:h;f[e>>2]=g;if((g|0)!=-1){if((g|0)!=(f[a+4>>2]|0))return;f[e>>2]=-1;return}}else f[e>>2]=-1;g=f[a+4>>2]|0;do if((((g|0)!=-1?(a=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(a|0)!=-1):0)?(f[(f[d>>2]|0)+(a>>>5<<2)>>2]&1<<(a&31)|0)==0:0)?(h=f[(f[(f[d+64>>2]|0)+12>>2]|0)+(a<<2)>>2]|0,(h|0)!=-1):0)if(!((h>>>0)%3|0)){l=h+2|0;break}else{l=h+-1|0;break}else l=-1;while(0);f[e>>2]=l;b[c>>0]=0;return}function Qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d>>2;g=e+1|0;if(g>>>0>1073741823)aq(a);h=a+8|0;i=(f[h>>2]|0)-d|0;d=i>>1;j=i>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(j)if(j>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}else{k=ln(j<<2)|0;break}else k=0;while(0);d=k+(e<<2)|0;e=d;g=k+(j<<2)|0;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;j=d+4|0;b=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(b|0)){l=e;m=b;n=b}else{i=k;k=e;e=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[e+-4>>2]=d;e=k+-4|0;k=e}while((i|0)!=(b|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=j;f[h>>2]=g;g=m;if((n|0)!=(g|0)){h=n;do{h=h+-4|0;n=f[h>>2]|0;f[h>>2]=0;if(n|0)Va[f[(f[n>>2]|0)+4>>2]&127](n)}while((h|0)!=(g|0))}if(!m)return;Oq(m);return}function Rg(a,c){a=a|0;c=c|0;var d=0,e=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;d=a+4|0;a=f[d>>2]|0;do if(a|0){e=b[c+11>>0]|0;g=e<<24>>24<0;h=g?f[c+4>>2]|0:e&255;e=g?f[c>>2]|0:c;g=d;i=a;a:while(1){j=i;while(1){k=j+16|0;l=b[k+11>>0]|0;m=l<<24>>24<0;n=m?f[j+20>>2]|0:l&255;l=h>>>0>>0?h:n;if((l|0)!=0?(o=Vk(m?f[k>>2]|0:k,e,l)|0,(o|0)!=0):0){if((o|0)>=0)break}else p=6;if((p|0)==6?(p=0,n>>>0>=h>>>0):0)break;n=f[j+4>>2]|0;if(!n){q=g;break a}else j=n}i=f[j>>2]|0;if(!i){q=j;break}else g=j}if((q|0)!=(d|0)){g=q+16|0;i=b[g+11>>0]|0;n=i<<24>>24<0;o=n?f[q+20>>2]|0:i&255;i=o>>>0>>0?o:h;if(i|0?(l=Vk(e,n?f[g>>2]|0:g,i)|0,l|0):0){if((l|0)<0)break;else r=q;return r|0}if(h>>>0>=o>>>0){r=q;return r|0}}}while(0);r=d;return r|0}function Sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;f[c>>2]=f[b>>2];fg(a+12|0,b+4|0)|0;d=a+44|0;e=b+36|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];if((c|0)==(b|0)){f[a+96>>2]=f[b+88>>2];return}else{ng(a+60|0,f[b+52>>2]|0,f[b+56>>2]|0);ng(a+72|0,f[b+64>>2]|0,f[b+68>>2]|0);ng(a+84|0,f[b+76>>2]|0,f[b+80>>2]|0);f[a+96>>2]=f[b+88>>2];Ig(a+100|0,f[b+92>>2]|0,f[b+96>>2]|0);return}}function Tg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if(((e-h|0)/12|0)>>>0>=b>>>0){i=b;j=h;do{f[j>>2]=f[c>>2];f[j+4>>2]=f[c+4>>2];f[j+8>>2]=f[c+8>>2];j=(f[g>>2]|0)+12|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=(h-i|0)/12|0;h=j+b|0;if(h>>>0>357913941)aq(a);k=(e-i|0)/12|0;i=k<<1;e=k>>>0<178956970?(i>>>0>>0?h:i):357913941;do if(e)if(e>>>0>357913941){i=ra(8)|0;Oo(i,16035);f[i>>2]=7256;va(i|0,1112,110)}else{l=ln(e*12|0)|0;break}else l=0;while(0);i=l+(j*12|0)|0;j=l+(e*12|0)|0;e=b;b=i;l=i;do{f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];b=l+12|0;l=b;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;b=(f[g>>2]|0)-e|0;c=i+(((b|0)/-12|0)*12|0)|0;if((b|0)>0)kh(c|0,e|0,b|0)|0;f[a>>2]=c;f[g>>2]=l;f[d>>2]=j;if(!e)return;Oq(e);return}function Ug(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d>>2;g=e+1|0;if(g>>>0>1073741823)aq(a);h=a+8|0;i=(f[h>>2]|0)-d|0;d=i>>1;j=i>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;do if(j)if(j>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}else{k=ln(j<<2)|0;break}else k=0;while(0);d=k+(e<<2)|0;e=d;g=k+(j<<2)|0;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;j=d+4|0;b=f[a>>2]|0;k=f[c>>2]|0;if((k|0)==(b|0)){l=e;m=b;n=b}else{i=k;k=e;e=d;do{i=i+-4|0;d=f[i>>2]|0;f[i>>2]=0;f[e+-4>>2]=d;e=k+-4|0;k=e}while((i|0)!=(b|0));l=k;m=f[a>>2]|0;n=f[c>>2]|0}f[a>>2]=l;f[c>>2]=j;f[h>>2]=g;g=m;if((n|0)!=(g|0)){h=n;do{h=h+-4|0;n=f[h>>2]|0;f[h>>2]=0;if(n|0){bj(n);Oq(n)}}while((h|0)!=(g|0))}if(!m)return;Oq(m);return}function Vg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=f[b>>2]|0;g=f[a>>2]|0;h=f[d>>2]|0;d=f[h>>2]|0;i=(f[h+4>>2]|0)-d>>3;if(i>>>0<=e>>>0)aq(h);j=d;if(i>>>0<=g>>>0)aq(h);d=f[j+(e<<3)>>2]|0;k=f[c>>2]|0;if(i>>>0<=k>>>0)aq(h);l=j+(g<<3)|0;m=(f[j+(k<<3)>>2]|0)>>>0>>0;if(d>>>0<(f[l>>2]|0)>>>0){if(m){f[a>>2]=k;f[c>>2]=g;n=1;return n|0}f[a>>2]=e;f[b>>2]=g;d=f[c>>2]|0;if(i>>>0<=d>>>0)aq(h);if((f[j+(d<<3)>>2]|0)>>>0>=(f[l>>2]|0)>>>0){n=1;return n|0}f[b>>2]=d;f[c>>2]=g;n=2;return n|0}if(!m){n=0;return n|0}f[b>>2]=k;f[c>>2]=e;e=f[b>>2]|0;c=f[a>>2]|0;if(i>>>0<=e>>>0)aq(h);if(i>>>0<=c>>>0)aq(h);if((f[j+(e<<3)>>2]|0)>>>0>=(f[j+(c<<3)>>2]|0)>>>0){n=1;return n|0}f[a>>2]=e;f[b>>2]=c;n=2;return n|0}function Wg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=u;u=u+16|0;c=b+4|0;d=b;e=a+8|0;g=f[e>>2]|0;gk(f[a+4>>2]|0,(f[g+28>>2]|0)-(f[g+24>>2]|0)>>2);g=a+84|0;a=f[g>>2]|0;if(!a){h=f[e>>2]|0;i=(f[h+4>>2]|0)-(f[h>>2]|0)>>2;h=(i>>>0)/3|0;if(i>>>0<=2){u=b;return 1}i=0;do{f[d>>2]=i*3;f[c>>2]=f[d>>2];dc(e,c);i=i+1|0}while((i|0)<(h|0));u=b;return 1}else{h=f[a>>2]|0;if((f[a+4>>2]|0)==(h|0)){u=b;return 1}a=0;i=h;do{f[d>>2]=f[i+(a<<2)>>2];f[c>>2]=f[d>>2];dc(e,c);a=a+1|0;h=f[g>>2]|0;i=f[h>>2]|0}while(a>>>0<(f[h+4>>2]|0)-i>>2>>>0);u=b;return 1}return 0}function Xg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;a=u;u=u+16|0;e=a;if(!b){g=0;u=a;return g|0}h=b+96|0;i=b+100|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;b=f[i>>2]|0;j=f[h>>2]|0;k=(b-j|0)/12|0;l=j;j=b;if(k>>>0>=c>>>0){if(k>>>0>c>>>0?(b=l+(c*12|0)|0,(b|0)!=(j|0)):0)f[i>>2]=j+(~(((j+-12-b|0)>>>0)/12|0)*12|0);if(!c){g=1;u=a;return g|0}}else Tg(h,c-k|0,e);k=0;b=f[h>>2]|0;while(1){j=k*3|0;l=f[d+(j<<2)>>2]|0;m=f[d+(j+1<<2)>>2]|0;n=f[d+(j+2<<2)>>2]|0;j=((f[i>>2]|0)-b|0)/12|0;o=k;k=k+1|0;if(o>>>0>>0){p=b;q=b}else{f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Tg(h,k-j|0,e);j=f[h>>2]|0;p=j;q=j}f[p+(o*12|0)>>2]=l;f[p+(o*12|0)+4>>2]=m;f[p+(o*12|0)+8>>2]=n;if((k|0)==(c|0)){g=1;break}else b=q}u=a;return g|0}function Yg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=u;u=u+80|0;g=e+36|0;h=e;ao(g,c);Ke(h,b,c);Ph(g,h);Ej(h+24|0,f[h+28>>2]|0);Oj(h+12|0,f[h+16>>2]|0);Ej(h,f[h+4>>2]|0);cj(a,g,d);Ej(g+24|0,f[g+28>>2]|0);Oj(g+12|0,f[g+16>>2]|0);Ej(g,f[g+4>>2]|0);u=e;return}function Zg(a){a=+a;var b=0,c=0,d=0,e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,t=0.0;p[s>>3]=a;b=f[s>>2]|0;c=f[s+4>>2]|0;d=(c|0)<0;do if(d|c>>>0<1048576){if((b|0)==0&(c&2147483647|0)==0){e=-1.0/(a*a);break}if(d){e=(a-a)/0.0;break}else{p[s>>3]=a*18014398509481984.0;g=f[s+4>>2]|0;h=-1077;i=g;j=f[s>>2]|0;k=g;l=9;break}}else if(c>>>0<=2146435071)if((b|0)==0&0==0&(c|0)==1072693248)e=0.0;else{h=-1023;i=c;j=b;k=c;l=9}else e=a;while(0);if((l|0)==9){l=i+614242|0;f[s>>2]=j;f[s+4>>2]=(l&1048575)+1072079006;a=+p[s>>3]+-1.0;m=a*a*.5;n=a/(a+2.0);o=n*n;q=o*o;p[s>>3]=a-m;j=f[s+4>>2]|0;f[s>>2]=0;f[s+4>>2]=j;r=+p[s>>3];t=a-r-m+n*(m+(q*(q*(q*.15313837699209373+.22222198432149784)+.3999999999940942)+o*(q*(q*(q*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));q=r*1.4426950407214463;o=+(h+(l>>>20)|0);m=q+o;e=m+(q+(o-m)+(t*1.4426950407214463+(t+r)*1.6751713164886512e-10))}return +e}function _g(a,c){a=a|0;c=c|0;var d=0,e=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;d=u;u=u+16|0;e=d;g=ln(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=17;h=g;i=14390;j=h+17|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[g+17>>0]=0;g=c+16|0;i=f[g>>2]|0;if(i){h=g;j=i;a:while(1){i=j;while(1){if((f[i+16>>2]|0)>=(a|0))break;k=f[i+4>>2]|0;if(!k){l=h;break a}else i=k}j=f[i>>2]|0;if(!j){l=i;break}else h=i}if(((l|0)!=(g|0)?(f[l+16>>2]|0)<=(a|0):0)?(a=l+20|0,(Jh(a,e)|0)!=0):0)m=a;else n=10}else n=10;if((n|0)==10)m=c;c=Hk(m,e,-1)|0;if((b[e+11>>0]|0)>=0){o=(c|0)==-1;p=c>>>0>6;q=p?-2:c;r=o?-1:q;u=d;return r|0}Oq(f[e>>2]|0);o=(c|0)==-1;p=c>>>0>6;q=p?-2:c;r=o?-1:q;u=d;return r|0}function $g(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;g=f[c>>2]|0;f[c>>2]=0;f[e>>2]=g;Lg(a,b,e);g=f[e>>2]|0;f[e>>2]=0;if(g|0){e=g+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){h=c+12|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;Oq(e)}Oq(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;h=f[e>>2]|0;if((h|0)!=(c|0))f[e>>2]=h+(~((h+-4-c|0)>>>2)<<2);Oq(c)}c=g+64|0;h=f[c>>2]|0;f[c>>2]=0;if(h|0){c=f[h>>2]|0;if(c|0){e=h+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;Oq(c)}Oq(h)}Oq(g)}g=a+84|0;h=a+88|0;a=f[h>>2]|0;c=f[g>>2]|0;e=a-c>>2;if((e|0)>(b|0)){u=d;return}i=b+1|0;b=a;if(i>>>0>e>>>0){Fh(g,i-e|0);u=d;return}if(i>>>0>=e>>>0){u=d;return}e=c+(i<<2)|0;if((e|0)==(b|0)){u=d;return}f[h>>2]=b+(~((b+-4-e|0)>>>2)<<2);u=d;return}function ah(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;g=a+4|0;f[g>>2]=c;f[a+8>>2]=f[c+52>>2];h=f[a+184>>2]|0;i=a+188|0;j=f[i>>2]|0;if((j|0)!=(h|0))f[i>>2]=j+(~((j+-4-h|0)>>>2)<<2);h=f[c+48>>2]|0;c=ln(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=15351;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(Jh(h,e)|0)==0;if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);h=f[(f[g>>2]|0)+48>>2]|0;if(c){c=(mi(h)|0)>5&1;b[a+352>>0]=c;u=d;return 1}c=ln(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=15351;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(Yj(h,e,0)|0)&1;b[a+352>>0]=c;if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);u=d;return 1}function bh(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;c=a+108|0;d=(f[a+112>>2]|0)-(f[c>>2]|0)|0;e=(d|0)/12|0;g=a+4|0;ci(e,f[(f[g>>2]|0)+44>>2]|0)|0;if(!d)return 1;d=0;a=0;while(1){i=f[c>>2]|0;j=i+(d*12|0)+4|0;ci((f[j>>2]|0)-a|0,f[(f[g>>2]|0)+44>>2]|0)|0;ci((f[j>>2]|0)-(f[i+(d*12|0)>>2]|0)|0,f[(f[g>>2]|0)+44>>2]|0)|0;d=d+1|0;if(d>>>0>=e>>>0)break;else a=f[j>>2]|0}zi(f[(f[g>>2]|0)+44>>2]|0,e,0,0)|0;a=0;do{d=f[(f[g>>2]|0)+44>>2]|0;j=d+16|0;i=f[j+4>>2]|0;if((i|0)>0|(i|0)==0&(f[j>>2]|0)>>>0>0){j=f[d+12>>2]|0;d=j+4|0;i=f[d>>2]|0;k=b[(f[c>>2]|0)+(a*12|0)+8>>0]&1;l=i>>>3;m=i&7;i=(f[j>>2]|0)+l|0;b[i>>0]=(1<>0]|0);i=(f[j>>2]|0)+l|0;b[i>>0]=k<>0]|0);f[d>>2]=(f[d>>2]|0)+1}a=a+1|0}while(a>>>0>>0);eg(f[(f[g>>2]|0)+44>>2]|0);return 1}function ch(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=u;u=u+80|0;g=e+36|0;h=e;io(g,c);Ke(h,b,c);Ph(g,h);Ej(h+24|0,f[h+28>>2]|0);Oj(h+12|0,f[h+16>>2]|0);Ej(h,f[h+4>>2]|0);cj(a,g,d);Ej(g+24|0,f[g+28>>2]|0);Oj(g+12|0,f[g+16>>2]|0);Ej(g,f[g+4>>2]|0);u=e;return}function dh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;g=a+4|0;f[g>>2]=c;f[a+8>>2]=f[c+52>>2];h=f[a+184>>2]|0;i=a+188|0;j=f[i>>2]|0;if((j|0)!=(h|0))f[i>>2]=j+(~((j+-4-h|0)>>>2)<<2);h=f[c+48>>2]|0;c=ln(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=15351;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(Jh(h,e)|0)==0;if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);h=f[(f[g>>2]|0)+48>>2]|0;if(c){c=(mi(h)|0)>5&1;b[a+288>>0]=c;u=d;return 1}c=ln(32)|0;f[e>>2]=c;f[e+8>>2]=-2147483616;f[e+4>>2]=19;j=c;i=15351;k=j+19|0;do{b[j>>0]=b[i>>0]|0;j=j+1|0;i=i+1|0}while((j|0)<(k|0));b[c+19>>0]=0;c=(Yj(h,e,0)|0)&1;b[a+288>>0]=c;if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);u=d;return 1}function eh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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;g=u;u=u+32|0;h=g+16|0;i=g+8|0;j=g;k=d-e|0;d=a+8|0;if((k|0)>0){a=0-e|0;l=i+4|0;m=j+4|0;n=h+4|0;o=k;do{k=b+(o<<2)|0;p=k+(a<<2)|0;q=c+(o<<2)|0;r=f[k+4>>2]|0;s=f[p>>2]|0;t=f[p+4>>2]|0;f[i>>2]=f[k>>2];f[l>>2]=r;f[j>>2]=s;f[m>>2]=t;Od(h,d,i,j);f[q>>2]=f[h>>2];f[q+4>>2]=f[n>>2];o=o-e|0}while((o|0)>0)}o=e>>>0>1073741823?-1:e<<2;e=Lq(o)|0;sj(e|0,0,o|0)|0;o=f[b+4>>2]|0;n=f[e>>2]|0;m=f[e+4>>2]|0;f[i>>2]=f[b>>2];f[i+4>>2]=o;f[j>>2]=n;f[j+4>>2]=m;Od(h,d,i,j);f[c>>2]=f[h>>2];f[c+4>>2]=f[h+4>>2];Mq(e);u=g;return 1}function fh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+32|0;d=c+12|0;e=c;g=f[b+100>>2]|0;h=f[b+96>>2]|0;b=g-h|0;i=(b|0)/12|0;f[d>>2]=0;j=d+4|0;f[j>>2]=0;f[d+8>>2]=0;k=h;do if(b)if(i>>>0>357913941)aq(d);else{l=ln(b)|0;f[d>>2]=l;f[d+8>>2]=l+(i*12|0);sj(l|0,0,b|0)|0;f[j>>2]=l+b;m=l;break}else m=0;while(0);f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;if((g|0)!=(h|0)){h=e+4|0;g=e+8|0;b=0;do{l=k+(b*12|0)|0;f[e>>2]=f[l>>2];f[e+4>>2]=f[l+4>>2];f[e+8>>2]=f[l+8>>2];f[m+(b*12|0)>>2]=f[e>>2];f[m+(b*12|0)+4>>2]=f[h>>2];f[m+(b*12|0)+8>>2]=f[g>>2];b=b+1|0}while(b>>>0>>0)}Kj(a,d);a=f[d>>2]|0;if(!a){u=c;return}d=f[j>>2]|0;if((d|0)!=(a|0))f[j>>2]=d+(~(((d+-12-a|0)>>>0)/12|0)*12|0);Oq(a);u=c;return}function gh(a,c){a=a|0;c=c|0;var d=0,e=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;if(c>>>0>4294967279)aq(a);d=a+11|0;e=b[d>>0]|0;g=e<<24>>24<0;if(g){h=f[a+4>>2]|0;i=(f[a+8>>2]&2147483647)+-1|0}else{h=e&255;i=10}j=h>>>0>c>>>0?h:c;c=j>>>0<11;k=c?10:(j+16&-16)+-1|0;do if((k|0)!=(i|0)){do if(c){j=f[a>>2]|0;if(g){l=0;m=j;n=a;o=13}else{Fo(a,j,(e&255)+1|0)|0;Oq(j);o=16}}else{j=k+1|0;p=ln(j)|0;if(g){l=1;m=f[a>>2]|0;n=p;o=13;break}else{Fo(p,a,(e&255)+1|0)|0;q=p;r=j;s=a+4|0;o=15;break}}while(0);if((o|0)==13){j=a+4|0;Fo(n,m,(f[j>>2]|0)+1|0)|0;Oq(m);if(l){q=n;r=k+1|0;s=j;o=15}else o=16}if((o|0)==15){f[a+8>>2]=r|-2147483648;f[s>>2]=h;f[a>>2]=q;break}else if((o|0)==16){b[d>>0]=h;break}}while(0);return}function hh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=f[b>>2]|0;if((c|0)==-1){d=-1;return d|0}b=f[(f[a+24>>2]|0)+(c<<2)>>2]|0;if((b|0)==-1){d=0;return d|0}c=a+12|0;a=0;e=0;g=b;a:while(1){b:do if(e){h=a+1|0;i=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((i|0)==-1){d=h;j=15;break a}k=f[(f[c>>2]|0)+(i<<2)>>2]|0;if((k|0)==-1){d=h;j=15;break a}if(!((k>>>0)%3|0)){l=k+2|0;m=h;break}else{l=k+-1|0;m=h;break}}else{h=a;k=g;while(1){i=h+1|0;n=k+1|0;o=((n>>>0)%3|0|0)==0?k+-2|0:n;if((o|0)==-1){l=b;m=i;break b}n=f[(f[c>>2]|0)+(o<<2)>>2]|0;o=n+1|0;if((n|0)==-1){l=b;m=i;break b}k=((o>>>0)%3|0|0)==0?n+-2|0:o;if((k|0)==-1){l=b;m=i;break b}if((k|0)==(b|0)){d=i;j=15;break a}else h=i}}while(0);if((l|0)==-1){d=m;j=15;break}else{a=m;e=1;g=l}}if((j|0)==15)return d|0;return 0}function ih(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+8|0;Vg(a,a+4|0,d,c)|0;e=a+12|0;if((e|0)==(b|0))return;g=f[c>>2]|0;c=f[g>>2]|0;h=(f[g+4>>2]|0)-c>>3;i=c;c=e;e=d;a:while(1){d=f[c>>2]|0;j=f[e>>2]|0;if(h>>>0<=d>>>0){k=5;break}if(h>>>0<=j>>>0){k=7;break}l=i+(d<<3)|0;if((f[l>>2]|0)>>>0<(f[i+(j<<3)>>2]|0)>>>0){m=e;n=c;o=j;while(1){f[n>>2]=o;if((m|0)==(a|0)){p=a;break}j=m+-4|0;o=f[j>>2]|0;if(h>>>0<=o>>>0){k=11;break a}if((f[l>>2]|0)>>>0>=(f[i+(o<<3)>>2]|0)>>>0){p=m;break}else{q=m;m=j;n=q}}f[p>>2]=d}n=c+4|0;if((n|0)==(b|0)){k=3;break}else{m=c;c=n;e=m}}if((k|0)==3)return;else if((k|0)==5)aq(g);else if((k|0)==7)aq(g);else if((k|0)==11)aq(g)}function jh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=Vg(a,b,c,e)|0;h=f[d>>2]|0;i=f[c>>2]|0;j=f[e>>2]|0;e=f[j>>2]|0;k=(f[j+4>>2]|0)-e>>3;if(k>>>0<=h>>>0)aq(j);l=e;if(k>>>0<=i>>>0)aq(j);if((f[l+(h<<3)>>2]|0)>>>0>=(f[l+(i<<3)>>2]|0)>>>0){m=g;return m|0}f[c>>2]=h;f[d>>2]=i;i=f[c>>2]|0;d=f[b>>2]|0;if(k>>>0<=i>>>0)aq(j);if(k>>>0<=d>>>0)aq(j);if((f[l+(i<<3)>>2]|0)>>>0>=(f[l+(d<<3)>>2]|0)>>>0){m=g+1|0;return m|0}f[b>>2]=i;f[c>>2]=d;d=f[b>>2]|0;c=f[a>>2]|0;if(k>>>0<=d>>>0)aq(j);if(k>>>0<=c>>>0)aq(j);if((f[l+(d<<3)>>2]|0)>>>0>=(f[l+(c<<3)>>2]|0)>>>0){m=g+2|0;return m|0}f[a>>2]=d;f[b>>2]=c;m=g+3|0;return m|0}function kh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return Da(a|0,c|0,d|0)|0;e=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return e|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}h=g&-4|0;d=h-64|0;while((a|0)<=(d|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(h|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{h=g-4|0;while((a|0)<(h|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return e|0}function lh(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0;c=u;u=u+16|0;d=c+4|0;e=c;f[a>>2]=1232;g=a+4|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;f[g+16>>2]=0;f[g+20>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;f[d>>2]=b;b=a+4|0;g=a+8|0;Ri(b,d);h=f[d>>2]|0;i=a+20|0;j=f[i>>2]|0;k=a+16|0;a=f[k>>2]|0;l=j-a>>2;m=a;if((h|0)<(l|0)){n=m;o=h;p=f[g>>2]|0;q=f[b>>2]|0;r=p-q|0;s=r>>2;t=s+-1|0;v=n+(o<<2)|0;f[v>>2]=t;u=c;return}a=h+1|0;f[e>>2]=-1;w=j;if(a>>>0<=l>>>0)if(a>>>0>>0?(j=m+(a<<2)|0,(j|0)!=(w|0)):0){f[i>>2]=w+(~((w+-4-j|0)>>>2)<<2);x=h;y=m}else{x=h;y=m}else{Ch(k,a-l|0,e);x=f[d>>2]|0;y=f[k>>2]|0}n=y;o=x;p=f[g>>2]|0;q=f[b>>2]|0;r=p-q|0;s=r>>2;t=s+-1|0;v=n+(o<<2)|0;f[v>>2]=t;u=c;return}function mh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=a+4|0;c=f[b>>2]|0;d=(f[c+12>>2]|0)-(f[c+8>>2]|0)|0;c=d>>2;a:do if((d|0)>0){e=0;while(1){if(!(Ra[f[(f[a>>2]|0)+36>>2]&127](a,e)|0)){g=0;break}e=e+1|0;h=f[b>>2]|0;i=(f[h+12>>2]|0)-(f[h+8>>2]|0)>>2;if((e|0)>=(i|0)){j=i;break a}}return g|0}else j=c;while(0);c=a+20|0;b=a+24|0;d=f[b>>2]|0;e=f[c>>2]|0;i=d-e>>2;h=e;e=d;if(j>>>0<=i>>>0){if(j>>>0>>0?(d=h+(j<<2)|0,(d|0)!=(e|0)):0)f[b>>2]=e+(~((e+-4-d|0)>>>2)<<2)}else Ci(c,j-i|0);i=f[a+12>>2]|0;j=f[a+8>>2]|0;a=j;if((i|0)==(j|0)){g=1;return g|0}d=i-j>>2;j=0;do{i=f[a+(j<<2)>>2]|0;e=f[i+8>>2]|0;b=f[i+4>>2]|0;i=b;if((e|0)!=(b|0)?(h=f[c>>2]|0,k=e-b>>2,f[h+(f[i>>2]<<2)>>2]=j,k>>>0>1):0){b=1;do{f[h+(f[i+(b<<2)>>2]<<2)>>2]=j;b=b+1|0}while(b>>>0>>0)}j=j+1|0}while(j>>>0>>0);g=1;return g|0}function nh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;d=f[c+88>>2]|0;if(!d){e=0;return e|0}if((f[d>>2]|0)!=1){e=0;return e|0}g=d+8|0;d=f[g>>2]|0;f[a+4>>2]=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;i=a+8|0;j=c+24|0;c=b[j>>0]|0;k=c<<24>>24;l=a+12|0;m=f[l>>2]|0;n=f[i>>2]|0;o=m-n>>2;p=n;n=m;if(o>>>0>=k>>>0)if(o>>>0>k>>>0?(m=p+(k<<2)|0,(m|0)!=(n|0)):0){f[l>>2]=n+(~((n+-4-m|0)>>>2)<<2);q=c;r=d}else{q=c;r=d}else{Ci(i,k-o|0);q=b[j>>0]|0;r=f[g>>2]|0}g=r+4|0;j=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;if(q<<24>>24>0){g=f[i>>2]|0;i=q<<24>>24;q=j;o=4;k=0;while(1){f[g+(k<<2)>>2]=q;o=o+4|0;k=k+1|0;d=r+o|0;c=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;if((k|0)>=(i|0)){s=c;break}else q=c}}else s=j;f[a+20>>2]=s;e=1;return e|0}function oh(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;do if(!(fp(a,f[c+8>>2]|0,g)|0)){if(!(fp(a,f[c>>2]|0,g)|0)){h=f[a+8>>2]|0;Za[f[(f[h>>2]|0)+24>>2]&3](h,c,d,e,g);break}if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[c+32>>2]=e;i=c+44|0;if((f[i>>2]|0)==4)break;j=c+52|0;b[j>>0]=0;k=c+53|0;b[k>>0]=0;l=f[a+8>>2]|0;_a[f[(f[l>>2]|0)+20>>2]&3](l,c,d,d,1,g);if(b[k>>0]|0)if(!(b[j>>0]|0)){m=3;n=11}else o=3;else{m=4;n=11}if((n|0)==11){f[h>>2]=d;h=c+40|0;f[h>>2]=(f[h>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0){b[c+54>>0]=1;o=m}else o=m}f[i>>2]=o;break}if((e|0)==1)f[c+32>>2]=1}else Vm(0,c,d,e);while(0);return}function ph(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e+12|0;h=e+8|0;i=e;f[i>>2]=f[b>>2];f[g>>2]=f[i>>2];i=Kd(a,g,h,e+4|0,c)|0;c=f[i>>2]|0;if(c|0){j=c;u=e;return j|0}c=ln(40)|0;pj(c+16|0,d);pj(c+28|0,d+12|0);d=f[h>>2]|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=d;f[i>>2]=c;d=f[f[a>>2]>>2]|0;if(!d)k=c;else{f[a>>2]=d;k=f[i>>2]|0}Oe(f[a+4>>2]|0,k);k=a+8|0;f[k>>2]=(f[k>>2]|0)+1;j=c;u=e;return j|0}function qh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e;h=a+4|0;f[h>>2]=0;if(!c){u=e;return}i=a+8|0;j=f[i>>2]|0;k=j<<5;if(k>>>0>>0){f[g>>2]=0;l=g+4|0;f[l>>2]=0;m=g+8|0;f[m>>2]=0;if((c|0)<0)aq(a);n=j<<6;j=c+31&-32;vi(g,k>>>0<1073741823?(n>>>0>>0?j:n):2147483647);n=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=n;g=f[h>>2]|0;f[h>>2]=c;f[l>>2]=g;g=f[i>>2]|0;f[i>>2]=f[m>>2];f[m>>2]=g;if(n|0)Oq(n);o=a}else{f[h>>2]=c;o=a}a=f[o>>2]|0;o=a;h=a;a=c>>>5;n=a<<2;if(!(b[d>>0]|0)){sj(h|0,0,n|0)|0;d=c&31;g=o+(a<<2)|0;if(!d){u=e;return}f[g>>2]=f[g>>2]&~(-1>>>(32-d|0));u=e;return}else{sj(h|0,-1,n|0)|0;n=c&31;c=o+(a<<2)|0;if(!n){u=e;return}f[c>>2]=f[c>>2]|-1>>>(32-n|0);u=e;return}}function rh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){n=a+88|0;ld(n,b);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;n=a+88|0;ld(n,b);u=c;return 1}function sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){n=a+108|0;ld(n,b);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;n=a+108|0;ld(n,b);u=c;return 1}function th(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=a+32|0;d=f[a+64>>2]|0;e=(Qa[f[(f[d>>2]|0)+40>>2]&127](d)|0)+52|0;d=f[e>>2]|0;zi(c,(((f[d+100>>2]|0)-(f[d+96>>2]|0)|0)/12|0)*3|0,0,1)|0;d=a+68|0;e=f[d>>2]|0;g=(f[a+72>>2]|0)-e|0;if((g|0)<=0){eg(c);return}i=a+48|0;j=a+44|0;a=(g>>>2)+-1|0;g=e;while(1){e=f[g+(a<<2)>>2]|0;k=f[3524+(e<<2)>>2]|0;l=i;m=f[l+4>>2]|0;if((m|0)>0|(m|0)==0&(f[l>>2]|0)>>>0>0?(l=f[j>>2]|0,171>>>e&1|0):0){m=l+4|0;n=0;o=f[m>>2]|0;do{p=o>>>3;q=o&7;r=(f[l>>2]|0)+p|0;b[r>>0]=(1<>0]|0);r=(f[l>>2]|0)+p|0;b[r>>0]=(e>>>n&1)<>0]|0);o=(f[m>>2]|0)+1|0;f[m>>2]=o;n=n+1|0}while((n|0)!=(k|0))}k=a+-1|0;if((k|0)<=-1)break;a=k;g=f[d>>2]|0}eg(c);return}function uh(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=u;u=u+48|0;h=g;i=g+32|0;if(!c){j=0;u=g;return j|0}Gn(h);do if((dm(c,0)|0)!=-1){if(d){if(!(Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0)){k=0;break}Va[f[(f[c>>2]|0)+20>>2]&127](c)}Yg(i,a,c,h);l=(f[i>>2]|0)==0;m=i+4|0;if((b[m+11>>0]|0)<0)Oq(f[m>>2]|0);if(l){l=f[h>>2]|0;m=h+4|0;rg(e,l,l+((f[m>>2]|0)-l)|0);k=(f[m>>2]|0)-(f[h>>2]|0)|0}else k=0}else k=0;while(0);e=h+12|0;i=f[e>>2]|0;f[e>>2]=0;if(i|0)Oq(i);i=f[h>>2]|0;if(i|0){e=h+4|0;if((f[e>>2]|0)!=(i|0))f[e>>2]=i;Oq(i)}j=k;u=g;return j|0}function vh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=u;u=u+16|0;d=c;e=f[(f[a>>2]|0)+8>>2]|0;g=a+8|0;h=a+12|0;i=(f[h>>2]|0)-(f[g>>2]|0)>>2;j=f[b>>2]|0;f[b>>2]=0;f[d>>2]=j;Xa[e&15](a,i,d);i=f[d>>2]|0;f[d>>2]=0;if(!i){k=f[h>>2]|0;l=f[g>>2]|0;m=k-l|0;n=m>>2;o=n+-1|0;u=c;return o|0}d=i+88|0;a=f[d>>2]|0;f[d>>2]=0;if(a|0){d=f[a+8>>2]|0;if(d|0){e=a+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;Oq(d)}Oq(a)}a=f[i+68>>2]|0;if(a|0){d=i+72|0;e=f[d>>2]|0;if((e|0)!=(a|0))f[d>>2]=e+(~((e+-4-a|0)>>>2)<<2);Oq(a)}a=i+64|0;e=f[a>>2]|0;f[a>>2]=0;if(e|0){a=f[e>>2]|0;if(a|0){d=e+4|0;if((f[d>>2]|0)!=(a|0))f[d>>2]=a;Oq(a)}Oq(e)}Oq(i);k=f[h>>2]|0;l=f[g>>2]|0;m=k-l|0;n=m>>2;o=n+-1|0;u=c;return o|0}function wh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;if(d-g>>3>>>0>=b>>>0){h=b;i=g;do{j=i;f[j>>2]=0;f[j+4>>2]=0;i=(f[e>>2]|0)+8|0;f[e>>2]=i;h=h+-1|0}while((h|0)!=0);return}h=f[a>>2]|0;i=g-h>>3;g=i+b|0;if(g>>>0>536870911)aq(a);j=d-h|0;h=j>>2;d=j>>3>>>0<268435455?(h>>>0>>0?g:h):536870911;do if(d)if(d>>>0>536870911){h=ra(8)|0;Oo(h,16035);f[h>>2]=7256;va(h|0,1112,110)}else{k=ln(d<<3)|0;break}else k=0;while(0);h=k+(i<<3)|0;i=k+(d<<3)|0;d=b;b=h;k=h;do{g=b;f[g>>2]=0;f[g+4>>2]=0;b=k+8|0;k=b;d=d+-1|0}while((d|0)!=0);d=f[a>>2]|0;b=(f[e>>2]|0)-d|0;g=h+(0-(b>>3)<<3)|0;if((b|0)>0)kh(g|0,d|0,b|0)|0;f[a>>2]=g;f[e>>2]=k;f[c>>2]=i;if(!d)return;Oq(d);return}function xh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;if(!(bn(a,b,c)|0)){g=0;u=d;return g|0}if((Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0)<<24>>24==1?((f[(f[a+8>>2]|0)+28>>2]|0)+-1|0)>>>0>=6:0){g=0;u=d;return g|0}h=_g(c,f[b+48>>2]|0)|0;Xa[f[(f[a>>2]|0)+48>>2]&15](e,a,h);h=a+36|0;b=f[e>>2]|0;f[e>>2]=0;c=f[h>>2]|0;f[h>>2]=b;if(!c){f[e>>2]=0;i=b}else{Va[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0;f[e>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);i=f[h>>2]|0}if(!i){g=1;u=d;return g|0}if(Ra[f[(f[a>>2]|0)+36>>2]&127](a,i)|0){g=1;u=d;return g|0}i=f[h>>2]|0;f[h>>2]=0;if(!i){g=1;u=d;return g|0}Va[f[(f[i>>2]|0)+4>>2]&127](i);g=1;u=d;return g|0}function yh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=u;u=u+16|0;g=e+4|0;h=e;i=e+8|0;j=a&255;b[i>>0]=j&127;do if(c>>>0>0|(c|0)==0&a>>>0>127){b[i>>0]=j|-128;k=d+16|0;l=f[k+4>>2]|0;if((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0){m=0;break}else{f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];Me(d,g,i,i+1|0)|0;k=Yn(a|0,c|0,7)|0;m=yh(k,I,d)|0;break}}else{k=d+16|0;l=f[k+4>>2]|0;if((l|0)>0|(l|0)==0&(f[k>>2]|0)>>>0>0){m=0;break}f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];Me(d,g,i,i+1|0)|0;n=1;u=e;return n|0}while(0);n=m;u=e;return n|0}function zh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;g=f[(f[(f[d+4>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;if((b|0)==-1)h=Xi(c,d)|0;else h=b;if((h|0)==-2)i=0;else{do if((Qa[f[(f[d>>2]|0)+8>>2]&127](d)|0)==1){Xf(a,d,h,c,e,514);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);c=ln(44)|0;f[c>>2]=1544;f[c+4>>2]=g;g=c+8|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[g+16>>2]=f[e+16>>2];f[g+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);f[c>>2]=1600;i=c}f[a>>2]=i;return}function Ah(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=u;u=u+224|0;g=e+120|0;h=e+80|0;i=e;j=e+136|0;k=h;l=k+40|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(l|0));f[g>>2]=f[d>>2];if((qb(0,c,g,i,h)|0)<0)m=-1;else{if((f[a+76>>2]|0)>-1)n=Tq(a)|0;else n=0;d=f[a>>2]|0;k=d&32;if((b[a+74>>0]|0)<1)f[a>>2]=d&-33;d=a+48|0;if(!(f[d>>2]|0)){l=a+44|0;o=f[l>>2]|0;f[l>>2]=j;p=a+28|0;f[p>>2]=j;q=a+20|0;f[q>>2]=j;f[d>>2]=80;r=a+16|0;f[r>>2]=j+80;j=qb(a,c,g,i,h)|0;if(!o)s=j;else{Sa[f[a+36>>2]&31](a,0,0)|0;t=(f[q>>2]|0)==0?-1:j;f[l>>2]=o;f[d>>2]=0;f[r>>2]=0;f[p>>2]=0;f[q>>2]=0;s=t}}else s=qb(a,c,g,i,h)|0;h=f[a>>2]|0;f[a>>2]=h|k;if(n|0)Sq(a);m=(h&32|0)==0?s:-1}u=e;return m|0}function Bh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e>>2;h=d;if(g>>>0>>0){uf(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+(b<<2)|0;if((g|0)==(h|0))return;else i=h;do{h=i+-4|0;f[c>>2]=h;b=f[h>>2]|0;f[h>>2]=0;if(b|0){h=b+88|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){h=f[e+8>>2]|0;if(h|0){a=e+12|0;if((f[a>>2]|0)!=(h|0))f[a>>2]=h;Oq(h)}Oq(e)}e=f[b+68>>2]|0;if(e|0){h=b+72|0;a=f[h>>2]|0;if((a|0)!=(e|0))f[h>>2]=a+(~((a+-4-e|0)>>>2)<<2);Oq(e)}e=b+64|0;a=f[e>>2]|0;f[e>>2]=0;if(a|0){e=f[a>>2]|0;if(e|0){h=a+4|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;Oq(e)}Oq(a)}Oq(b)}i=f[c>>2]|0}while((i|0)!=(g|0));return}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;i=h;if(e-h>>2>>>0>=b>>>0){j=b;k=i;while(1){f[k>>2]=f[c>>2];j=j+-1|0;if(!j)break;else k=k+4|0}f[g>>2]=i+(b<<2);return}i=f[a>>2]|0;k=h-i|0;h=k>>2;j=h+b|0;if(j>>>0>1073741823)aq(a);l=e-i|0;e=l>>1;m=l>>2>>>0<536870911?(e>>>0>>0?j:e):1073741823;do if(m)if(m>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}else{e=ln(m<<2)|0;n=e;o=e;break}else{n=0;o=0}while(0);e=n+(h<<2)|0;h=n+(m<<2)|0;m=b;j=e;while(1){f[j>>2]=f[c>>2];m=m+-1|0;if(!m)break;else j=j+4|0}if((k|0)>0)kh(o|0,i|0,k|0)|0;f[a>>2]=n;f[g>>2]=e+(b<<2);f[d>>2]=h;if(!i)return;Oq(i);return}function Dh(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=(f[a>>2]|0)+1794895138|0;g=gp(f[a+8>>2]|0,e)|0;h=gp(f[a+12>>2]|0,e)|0;i=gp(f[a+16>>2]|0,e)|0;a:do if((g>>>0>>2>>>0?(j=c-(g<<2)|0,h>>>0>>0&i>>>0>>0):0)?((i|h)&3|0)==0:0){j=h>>>2;k=i>>>2;l=0;m=g;while(1){n=m>>>1;o=l+n|0;p=o<<1;q=p+j|0;r=gp(f[a+(q<<2)>>2]|0,e)|0;s=gp(f[a+(q+1<<2)>>2]|0,e)|0;if(!(s>>>0>>0&r>>>0<(c-s|0)>>>0)){t=0;break a}if(b[a+(s+r)>>0]|0){t=0;break a}r=hl(d,a+s|0)|0;if(!r)break;s=(r|0)<0;if((m|0)==1){t=0;break a}else{l=s?l:o;m=s?n:m-n|0}}m=p+k|0;l=gp(f[a+(m<<2)>>2]|0,e)|0;j=gp(f[a+(m+1<<2)>>2]|0,e)|0;if(j>>>0>>0&l>>>0<(c-j|0)>>>0)t=(b[a+(j+l)>>0]|0)==0?a+j|0:0;else t=0}else t=0;while(0);return t|0}function Eh(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=u;u=u+64|0;i=h;j=f[a>>2]|0;k=a+(f[j+-8>>2]|0)|0;l=f[j+-4>>2]|0;f[i>>2]=e;f[i+4>>2]=a;f[i+8>>2]=c;f[i+12>>2]=g;g=i+16|0;c=i+20|0;a=i+24|0;j=i+28|0;m=i+32|0;n=i+40|0;o=g;p=o+36|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(p|0));d[g+36>>1]=0;b[g+38>>0]=0;a:do if(fp(l,e,0)|0){f[i+48>>2]=1;_a[f[(f[l>>2]|0)+20>>2]&3](l,i,k,k,1,0);q=(f[a>>2]|0)==1?k:0}else{Za[f[(f[l>>2]|0)+24>>2]&3](l,i,k,1,0);switch(f[i+36>>2]|0){case 0:{q=(f[n>>2]|0)==1&(f[j>>2]|0)==1&(f[m>>2]|0)==1?f[c>>2]|0:0;break a;break}case 1:break;default:{q=0;break a}}if((f[a>>2]|0)!=1?!((f[n>>2]|0)==0&(f[j>>2]|0)==1&(f[m>>2]|0)==1):0){q=0;break}q=f[g>>2]|0}while(0);u=h;return q|0}function Fh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;h=g;if(d-g>>2>>>0>=b>>>0){i=b;j=h;while(1){f[j>>2]=1;i=i+-1|0;if(!i)break;else j=j+4|0}f[e>>2]=h+(b<<2);return}h=f[a>>2]|0;j=g-h|0;g=j>>2;i=g+b|0;if(i>>>0>1073741823)aq(a);k=d-h|0;d=k>>1;l=k>>2>>>0<536870911?(d>>>0>>0?i:d):1073741823;do if(l)if(l>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}else{d=ln(l<<2)|0;m=d;n=d;break}else{m=0;n=0}while(0);d=m+(g<<2)|0;g=m+(l<<2)|0;l=b;i=d;while(1){f[i>>2]=1;l=l+-1|0;if(!l)break;else i=i+4|0}if((j|0)>0)kh(n|0,h|0,j|0)|0;f[a>>2]=m;f[e>>2]=d+(b<<2);f[c>>2]=g;if(!h)return;Oq(h);return}function Gh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;if(!c){g=0;u=d;return g|0}h=a+84|0;i=f[h>>2]|0;j=a+88|0;k=f[j>>2]|0;if((k|0)!=(i|0))f[j>>2]=k+(~((k+-4-i|0)>>>2)<<2);f[h>>2]=0;f[j>>2]=0;f[a+92>>2]=0;if(i|0)Oq(i);i=a+72|0;j=f[i>>2]|0;h=a+76|0;if((f[h>>2]|0)!=(j|0))f[h>>2]=j;f[i>>2]=0;f[h>>2]=0;f[a+80>>2]=0;if(j|0)Oq(j);j=c+4|0;h=(f[j>>2]|0)-(f[c>>2]|0)>>2;b[e>>0]=0;qh(a,h,e);h=c+24|0;i=c+28|0;k=(f[i>>2]|0)-(f[h>>2]|0)>>2;b[e>>0]=0;qh(a+12|0,k,e);hg(a+28|0,(f[j>>2]|0)-(f[c>>2]|0)>>2,6180);gk(a+52|0,(f[i>>2]|0)-(f[h>>2]|0)>>2);gk(a+40|0,(f[i>>2]|0)-(f[h>>2]|0)>>2);f[a+64>>2]=c;b[a+24>>0]=1;g=1;u=d;return g|0}function Hh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a+12|0;d=f[a>>2]|0;e=a+8|0;g=f[e>>2]|0;h=(g|0)==-1;if(!(b[c>>0]|0)){do if((!h?(i=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(i|0)!=-1):0)?(j=f[(f[d+12>>2]|0)+(i<<2)>>2]|0,(j|0)!=-1):0)if(!((j>>>0)%3|0)){k=j+2|0;break}else{k=j+-1|0;break}else k=-1;while(0);f[e>>2]=k;return}k=g+1|0;if((!h?(h=((k>>>0)%3|0|0)==0?g+-2|0:k,(h|0)!=-1):0)?(k=f[(f[d+12>>2]|0)+(h<<2)>>2]|0,h=k+1|0,(k|0)!=-1):0){g=((h>>>0)%3|0|0)==0?k+-2|0:h;f[e>>2]=g;if((g|0)!=-1){if((g|0)!=(f[a+4>>2]|0))return;f[e>>2]=-1;return}}else f[e>>2]=-1;g=f[a+4>>2]|0;do if(((g|0)!=-1?(a=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(a|0)!=-1):0)?(h=f[(f[d+12>>2]|0)+(a<<2)>>2]|0,(h|0)!=-1):0)if(!((h>>>0)%3|0)){l=h+2|0;break}else{l=h+-1|0;break}else l=-1;while(0);f[e>>2]=l;b[c>>0]=0;return}function Ih(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Td(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+20>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Td(a,e);return}function Jh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=f[a+4>>2]|0;if(!d){e=0;return e|0}a=b[c+11>>0]|0;g=a<<24>>24<0;h=g?f[c+4>>2]|0:a&255;a=g?f[c>>2]|0:c;c=d;while(1){d=c+16|0;g=b[d+11>>0]|0;i=g<<24>>24<0;j=i?f[c+20>>2]|0:g&255;g=j>>>0>>0;k=g?j:h;if((k|0)!=0?(l=Vk(a,i?f[d>>2]|0:d,k)|0,(l|0)!=0):0)if((l|0)<0)m=7;else m=8;else if(h>>>0>>0)m=7;else m=8;if((m|0)==7){m=0;n=c}else if((m|0)==8){m=0;l=h>>>0>>0?h:j;if((l|0)!=0?(j=Vk(i?f[d>>2]|0:d,a,l)|0,(j|0)!=0):0){if((j|0)>=0){e=1;m=14;break}}else m=10;if((m|0)==10?(m=0,!g):0){e=1;m=14;break}n=c+4|0}c=f[n>>2]|0;if(!c){e=0;m=14;break}}if((m|0)==14)return e|0;return 0}function Kh(a,c,d){a=a|0;c=c|0;d=d|0;var e=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;e=u;u=u+16|0;g=e+4|0;h=e;i=f[a+8>>2]|0;j=i+24|0;k=b[j>>0]|0;l=c+4|0;ag(a,(f[l>>2]|0)-(f[c>>2]|0)>>2,k,d);d=f[a+32>>2]|0;a=(f[f[d>>2]>>2]|0)+(f[d+48>>2]|0)|0;d=f[c>>2]|0;c=f[l>>2]|0;if((d|0)==(c|0)){m=1;u=e;return m|0}l=i+84|0;n=i+68|0;o=0;p=d;while(1){d=f[p>>2]|0;if(!(b[l>>0]|0))q=f[(f[n>>2]|0)+(d<<2)>>2]|0;else q=d;f[h>>2]=q;d=b[j>>0]|0;f[g>>2]=f[h>>2];if(!(Qb(i,g,d,a+(o<<2)|0)|0)){m=0;r=7;break}p=p+4|0;if((p|0)==(c|0)){m=1;r=7;break}else o=o+k|0}if((r|0)==7){u=e;return m|0}return 0}function Lh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;f[a>>2]=1408;b=a+72|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);c=f[a+60>>2]|0;if(c|0){b=a+64|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);Oq(c)}c=f[a+48>>2]|0;if(c|0)Oq(c);c=a+36|0;d=f[c>>2]|0;if(d|0){b=a+40|0;e=f[b>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-4|0;f[b>>2]=e;i=f[e>>2]|0;f[e>>2]=0;if(i|0)Va[f[(f[i>>2]|0)+4>>2]&127](i);h=f[b>>2]|0}while((h|0)!=(d|0));g=f[c>>2]|0}Oq(g)}f[a>>2]=1232;g=f[a+16>>2]|0;if(g|0){c=a+20|0;d=f[c>>2]|0;if((d|0)!=(g|0))f[c>>2]=d+(~((d+-4-g|0)>>>2)<<2);Oq(g)}g=f[a+4>>2]|0;if(!g)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(g|0))f[d>>2]=a+(~((a+-4-g|0)>>>2)<<2);Oq(g);return}function Mh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f[a>>2]=d;e=a+24|0;g=a+28|0;h=f[g>>2]|0;i=f[e>>2]|0;j=h-i>>2;k=i;i=h;if(j>>>0>=d>>>0){if(j>>>0>d>>>0?(h=k+(d<<2)|0,(h|0)!=(i|0)):0)f[g>>2]=i+(~((i+-4-h|0)>>>2)<<2)}else Ci(e,d-j|0);if(!c)return;j=f[b>>2]|0;if((c|0)>1){d=j;e=j;h=1;while(1){i=f[b+(h<<2)>>2]|0;g=(i|0)<(e|0);k=g?i:e;l=g?d:(i|0)>(d|0)?i:d;h=h+1|0;if((h|0)==(c|0)){m=l;n=k;break}else{d=l;e=k}}}else{m=j;n=j}f[a+4>>2]=n;f[a+8>>2]=m;j=Xn(m|0,((m|0)<0)<<31>>31|0,n|0,((n|0)<0)<<31>>31|0)|0;n=I;if(!(n>>>0<0|(n|0)==0&j>>>0<2147483647))return;n=j+1|0;f[a+12>>2]=n;j=(n|0)/2|0;m=a+16|0;f[m>>2]=j;f[a+20>>2]=0-j;if(n&1|0)return;f[m>>2]=j+-1;return}function Nh(a){a=a|0;Fj(a+992|0);Fj(a+960|0);Fj(a+928|0);Fj(a+896|0);Fj(a+864|0);Fj(a+832|0);Fj(a+800|0);Fj(a+768|0);Fj(a+736|0);Fj(a+704|0);Fj(a+672|0);Fj(a+640|0);Fj(a+608|0);Fj(a+576|0);Fj(a+544|0);Fj(a+512|0);Fj(a+480|0);Fj(a+448|0);Fj(a+416|0);Fj(a+384|0);Fj(a+352|0);Fj(a+320|0);Fj(a+288|0);Fj(a+256|0);Fj(a+224|0);Fj(a+192|0);Fj(a+160|0);Fj(a+128|0);Fj(a+96|0);Fj(a+64|0);Fj(a+32|0);Fj(a);return}function Oh(a){a=a|0;wn(a);wn(a+32|0);wn(a+64|0);wn(a+96|0);wn(a+128|0);wn(a+160|0);wn(a+192|0);wn(a+224|0);wn(a+256|0);wn(a+288|0);wn(a+320|0);wn(a+352|0);wn(a+384|0);wn(a+416|0);wn(a+448|0);wn(a+480|0);wn(a+512|0);wn(a+544|0);wn(a+576|0);wn(a+608|0);wn(a+640|0);wn(a+672|0);wn(a+704|0);wn(a+736|0);wn(a+768|0);wn(a+800|0);wn(a+832|0);wn(a+864|0);wn(a+896|0);wn(a+928|0);wn(a+960|0);wn(a+992|0);return}function Ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=u;u=u+16|0;d=c+12|0;e=c+8|0;g=c+4|0;h=c;i=(a|0)==(b|0);if(!i){f[g>>2]=f[b>>2];f[h>>2]=b+4;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Oc(a,e,d)}if(!i){f[g>>2]=f[b+12>>2];f[h>>2]=b+16;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Hc(a+12|0,e,d)}if(i){u=c;return}f[g>>2]=f[b+24>>2];f[h>>2]=b+28;f[e>>2]=f[g>>2];f[d>>2]=f[h>>2];Oc(a+24|0,e,d);u=c;return}function Qh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;a=u;u=u+16|0;e=a;if((c|0)<0|((b|0)==0|(d|0)==0)){g=0;u=a;return g|0}h=f[b+8>>2]|0;if(((f[b+12>>2]|0)-h>>2|0)<=(c|0)){g=0;u=a;return g|0}i=b+4|0;if(!(f[i>>2]|0)){j=ln(52)|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;n[j+16>>2]=$(1.0);k=j+20|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;n[j+36>>2]=$(1.0);f[j+40>>2]=0;f[j+44>>2]=0;f[j+48>>2]=0;f[b+4>>2]=j}j=f[(f[h+(c<<2)>>2]|0)+60>>2]|0;c=ln(44)|0;Ub(c,d);f[c+40>>2]=j;j=f[i>>2]|0;f[e>>2]=c;mk(j,e)|0;j=f[e>>2]|0;f[e>>2]=0;if(!j){g=1;u=a;return g|0}bj(j);Oq(j);g=1;u=a;return g|0}function Rh(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;c=u;u=u+64|0;j=c;k=i?6:5;Il(j);i=f[h+56>>2]|0;h=X(Vl(k)|0,e)|0;Jj(j,i,0,e&255,k,0,h,((h|0)<0)<<31>>31,0,0);h=ln(96)|0;tl(h,j);f[a>>2]=h;Bj(h,d)|0;d=h+84|0;if(!g){b[d>>0]=1;a=f[h+68>>2]|0;j=h+72|0;k=f[j>>2]|0;if((k|0)==(a|0)){u=c;return}f[j>>2]=k+(~((k+-4-a|0)>>>2)<<2);u=c;return}b[d>>0]=0;d=h+68|0;a=h+72|0;h=f[a>>2]|0;k=f[d>>2]|0;j=h-k>>2;e=h;if(j>>>0>>0){Ch(d,g-j|0,1216);u=c;return}if(j>>>0<=g>>>0){u=c;return}j=k+(g<<2)|0;if((j|0)==(e|0)){u=c;return}f[a>>2]=e+(~((e+-4-j|0)>>>2)<<2);u=c;return}function Sh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){rd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;rd(a,e);return}function Th(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){vd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;vd(a,e);return}function Uh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Fd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Fd(a,e);return}function Vh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Pd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Pd(a,e);return}function Wh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){ud(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;ud(a,e);return}function Xh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){zd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;zd(a,e);return}function Yh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Jd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Jd(a,e);return}function Zh(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){sd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;sd(a,e);return}function _h(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){wd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;wd(a,e);return}function $h(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Gd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Gd(a,e);return}function ai(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Qd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Qd(a,e);return}function bi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=u;u=u+16|0;h=g;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;i=ln(16)|0;f[h>>2]=i;f[h+8>>2]=-2147483632;f[h+4>>2]=15;j=i;k=14479;l=j+15|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[i+15>>0]=0;i=Hk(c,h,-1)|0;if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);switch(i|0){case -1:{if((mi(c)|0)==10)m=6;else m=5;break}case 1:{m=5;break}default:m=6}if((m|0)==5){i=ln(60)|0;Lo(i);n=i}else if((m|0)==6){m=ln(56)|0;tp(m);n=m}xo(n,d);Md(a,n,c,e);Va[f[(f[n>>2]|0)+4>>2]&127](n);u=g;return}function ci(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;b[h>>0]=a&127;do if(a>>>0>127){b[h>>0]=a|128;i=c+16|0;j=f[i+4>>2]|0;if((j|0)>0|(j|0)==0&(f[i>>2]|0)>>>0>0){k=0;break}else{f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+1|0)|0;k=ci(a>>>7,c)|0;break}}else{i=c+16|0;j=f[i+4>>2]|0;if((j|0)>0|(j|0)==0&(f[i>>2]|0)>>>0>0){k=0;break}f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+1|0)|0;l=1;u=d;return l|0}while(0);l=k;u=d;return l|0} -function vc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0;e=u;u=u+32|0;g=e+16|0;h=e+12|0;i=e+8|0;j=e+4|0;k=e;switch(f[c+28>>2]|0){case 9:{l=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=l;f[g>>2]=f[h>>2];m=hc(a,c,g)|0;break}case 2:{f[i>>2]=l;f[g>>2]=f[i>>2];m=Wb(a,c,g)|0;break}case 3:{f[j>>2]=l;f[g>>2]=f[j>>2];m=uc(a,c,g)|0;break}case 4:{f[k>>2]=l;f[g>>2]=f[k>>2];m=mc(a,c,g)|0;break}default:m=0}n=m;break}case 1:{m=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=m;f[g>>2]=f[h>>2];o=gc(a,c,g)|0;break}case 2:{f[i>>2]=m;f[g>>2]=f[i>>2];o=Xb(a,c,g)|0;break}case 3:{f[j>>2]=m;f[g>>2]=f[j>>2];o=sc(a,c,g)|0;break}case 4:{f[k>>2]=m;f[g>>2]=f[k>>2];o=lc(a,c,g)|0;break}default:o=0}n=o;break}case 11:case 2:{o=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=o;f[g>>2]=f[h>>2];p=gc(a,c,g)|0;break}case 2:{f[i>>2]=o;f[g>>2]=f[i>>2];p=Xb(a,c,g)|0;break}case 3:{f[j>>2]=o;f[g>>2]=f[j>>2];p=sc(a,c,g)|0;break}case 4:{f[k>>2]=o;f[g>>2]=f[k>>2];p=lc(a,c,g)|0;break}default:p=0}n=p;break}case 4:{p=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=p;f[g>>2]=f[h>>2];q=ec(a,c,g)|0;break}case 2:{f[i>>2]=p;f[g>>2]=f[i>>2];q=Vb(a,c,g)|0;break}case 3:{f[j>>2]=p;f[g>>2]=f[j>>2];q=nc(a,c,g)|0;break}case 4:{f[k>>2]=p;f[g>>2]=f[k>>2];q=jc(a,c,g)|0;break}default:q=0}n=q;break}case 3:{q=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=q;f[g>>2]=f[h>>2];r=ec(a,c,g)|0;break}case 2:{f[i>>2]=q;f[g>>2]=f[i>>2];r=Vb(a,c,g)|0;break}case 3:{f[j>>2]=q;f[g>>2]=f[j>>2];r=nc(a,c,g)|0;break}case 4:{f[k>>2]=q;f[g>>2]=f[k>>2];r=jc(a,c,g)|0;break}default:r=0}n=r;break}case 6:{r=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=r;f[g>>2]=f[h>>2];s=hc(a,c,g)|0;break}case 2:{f[i>>2]=r;f[g>>2]=f[i>>2];s=Wb(a,c,g)|0;break}case 3:{f[j>>2]=r;f[g>>2]=f[j>>2];s=uc(a,c,g)|0;break}case 4:{f[k>>2]=r;f[g>>2]=f[k>>2];s=mc(a,c,g)|0;break}default:s=0}n=s;break}case 5:{s=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[h>>2]=s;f[g>>2]=f[h>>2];t=hc(a,c,g)|0;break}case 2:{f[i>>2]=s;f[g>>2]=f[i>>2];t=Wb(a,c,g)|0;break}case 3:{f[j>>2]=s;f[g>>2]=f[j>>2];t=uc(a,c,g)|0;break}case 4:{f[k>>2]=s;f[g>>2]=f[k>>2];t=mc(a,c,g)|0;break}default:t=0}n=t;break}default:{v=-1;u=e;return v|0}}v=(n|0)==0?-1:n;u=e;return v|0}function wc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;e=u;u=u+32|0;g=e+16|0;h=e+12|0;i=e+29|0;j=e;k=e+28|0;if(!(f[(f[a+8>>2]|0)+80>>2]|0)){l=1;u=e;return l|0}b[i>>0]=-2;m=a+36|0;n=f[m>>2]|0;if(n)if(Ra[f[(f[a>>2]|0)+40>>2]&127](a,n)|0){n=f[m>>2]|0;o=(Qa[f[(f[n>>2]|0)+8>>2]&127](n)|0)&255;b[i>>0]=o;p=5}else q=0;else p=5;if((p|0)==5){o=d+16|0;n=o;r=f[n+4>>2]|0;if(!((r|0)>0|(r|0)==0&(f[n>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];Me(d,g,i,i+1|0)|0}i=f[m>>2]|0;if(i|0?(n=(Qa[f[(f[i>>2]|0)+36>>2]&127](i)|0)&255,b[j>>0]=n,n=o,i=f[n+4>>2]|0,!((i|0)>0|(i|0)==0&(f[n>>2]|0)>>>0>0)):0){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];Me(d,g,j,j+1|0)|0}n=f[a+32>>2]|0;i=b[n+24>>0]|0;r=X(f[n+80>>2]|0,i)|0;s=(f[f[n>>2]>>2]|0)+(f[n+48>>2]|0)|0;f[j>>2]=0;n=j+4|0;f[n>>2]=0;f[j+8>>2]=0;t=(r|0)==0;do if(!t)if(r>>>0>1073741823)aq(j);else{v=r<<2;w=ln(v)|0;f[j>>2]=w;x=w+(r<<2)|0;f[j+8>>2]=x;sj(w|0,0,v|0)|0;f[n>>2]=x;y=w;break}else y=0;while(0);w=f[m>>2]|0;do if(w){Ta[f[(f[w>>2]|0)+44>>2]&31](w,s,y,r,i,f[c>>2]|0)|0;x=f[m>>2]|0;if(!x){z=s;A=f[j>>2]|0;p=20;break}if(!(Qa[f[(f[x>>2]|0)+32>>2]&127](x)|0)){x=f[j>>2]|0;z=f[m>>2]|0?x:s;A=x;p=20}}else{z=s;A=y;p=20}while(0);if((p|0)==20)xm(z,r,A);A=a+4|0;a=f[A>>2]|0;do if(a){z=f[a+48>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;y=ln(48)|0;f[g>>2]=y;f[g+8>>2]=-2147483600;f[g+4>>2]=34;s=y;w=10697;x=s+34|0;do{b[s>>0]=b[w>>0]|0;s=s+1|0;w=w+1|0}while((s|0)<(x|0));b[y+34>>0]=0;w=Yj(z,g,1)|0;if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);if(!w){if(!t){w=f[j>>2]|0;s=0;x=0;do{x=f[w+(s<<2)>>2]|x;s=s+1|0}while((s|0)!=(r|0));if(x)B=((_(x|0)|0)>>>3^3)+1|0;else B=1}else B=1;b[k>>0]=0;s=o;w=f[s>>2]|0;z=f[s+4>>2]|0;if((z|0)>0|(z|0)==0&w>>>0>0){C=z;D=w}else{f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];Me(d,g,k,k+1|0)|0;w=o;C=f[w+4>>2]|0;D=f[w>>2]|0}b[k>>0]=B;if(!((C|0)>0|(C|0)==0&D>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];Me(d,g,k,k+1|0)|0}if((B|0)==(Vl(5)|0)){w=f[j>>2]|0;z=o;s=f[z+4>>2]|0;if(!((s|0)>0|(s|0)==0&(f[z>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];Me(d,g,w,w+(r<<2)|0)|0}p=48;break}if(t)p=48;else{w=d+4|0;z=0;do{s=(f[j>>2]|0)+(z<<2)|0;y=o;v=f[y+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[y>>2]|0)>>>0>0)){f[h>>2]=f[w>>2];f[g>>2]=f[h>>2];Me(d,g,s,s+B|0)|0}z=z+1|0}while(z>>>0>>0);p=48}}else p=27}else p=27;while(0);if((p|0)==27){b[k>>0]=1;r=o;o=f[r+4>>2]|0;if(!((o|0)>0|(o|0)==0&(f[r>>2]|0)>>>0>0)){f[h>>2]=f[d+4>>2];f[g>>2]=f[h>>2];Me(d,g,k,k+1|0)|0}lp(g);k=f[A>>2]|0;if(k|0)Zj(g,10-(mi(f[k+48>>2]|0)|0)|0)|0;k=Mc(f[j>>2]|0,X((f[c+4>>2]|0)-(f[c>>2]|0)>>2,i)|0,i,g,d)|0;Ej(g,f[g+4>>2]|0);if(k)p=48;else E=0}if((p|0)==48){p=f[m>>2]|0;if(!p)E=1;else{Ra[f[(f[p>>2]|0)+40>>2]&127](p,d)|0;E=1}}d=f[j>>2]|0;if(d|0){j=f[n>>2]|0;if((j|0)!=(d|0))f[n>>2]=j+(~((j+-4-d|0)>>>2)<<2);Oq(d)}q=E}l=q;u=e;return l|0}function xc(a){a=a|0;var b=0,c=0,d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;b=u;u=u+48|0;c=b+24|0;d=b+12|0;e=b;g=a+32|0;h=a+8|0;i=a+12|0;j=f[i>>2]|0;k=f[h>>2]|0;l=j-k>>2;m=a+36|0;n=f[m>>2]|0;o=f[g>>2]|0;p=n-o>>2;q=o;o=n;n=k;if(l>>>0<=p>>>0)if(l>>>0

>>0?(r=q+(l<<2)|0,(r|0)!=(o|0)):0){f[m>>2]=o+(~((o+-4-r|0)>>>2)<<2);s=n;t=k;v=j}else{s=n;t=k;v=j}else{Ci(g,l-p|0);p=f[h>>2]|0;s=p;t=p;v=f[i>>2]|0}p=v-t|0;l=p>>2;f[c>>2]=0;j=c+4|0;f[j>>2]=0;k=c+8|0;f[k>>2]=0;if(l|0){if((p|0)<0)aq(c);p=((l+-1|0)>>>5)+1|0;n=ln(p<<2)|0;f[c>>2]=n;f[k>>2]=p;f[j>>2]=l;j=l>>>5;sj(n|0,0,j<<2|0)|0;p=l&31;l=n+(j<<2)|0;if(p|0)f[l>>2]=f[l>>2]&~(-1>>>(32-p|0))}p=a+20|0;l=0;j=s;s=t;t=v;while(1){if(l>>>0>2>>>0){w=0;x=0;y=l;z=s;A=j}else{B=25;break}while(1){v=x>>>5;n=1<<(x&31);do if(!(f[(f[c>>2]|0)+(v<<2)>>2]&n)){k=f[A+(x<<2)>>2]|0;if((f[k+8>>2]|0)!=(f[k+4>>2]|0)){r=0;o=1;m=A;q=k;while(1){k=f[(f[q+4>>2]|0)+(r<<2)>>2]|0;C=0;D=m;while(1){E=f[D+(x<<2)>>2]|0;if((C|0)>=(Ra[f[(f[E>>2]|0)+24>>2]&127](E,k)|0)){F=o;break}E=f[(f[h>>2]|0)+(x<<2)>>2]|0;G=Sa[f[(f[E>>2]|0)+28>>2]&31](E,k,C)|0;if((G|0)!=(x|0)?(E=f[(f[p>>2]|0)+(G<<2)>>2]|0,(1<<(E&31)&f[(f[c>>2]|0)+(E>>>5<<2)>>2]|0)==0):0){F=0;break}C=C+1|0;D=f[h>>2]|0}r=r+1|0;m=f[h>>2]|0;q=f[m+(x<<2)>>2]|0;if(r>>>0>=(f[q+8>>2]|0)-(f[q+4>>2]|0)>>2>>>0)break;else o=F}o=m;if(F)H=o;else{I=w;J=y;K=o;break}}else H=z;f[(f[g>>2]|0)+(y<<2)>>2]=x;o=(f[c>>2]|0)+(v<<2)|0;f[o>>2]=f[o>>2]|n;I=1;J=y+1|0;K=H}else{I=w;J=y;K=z}while(0);x=x+1|0;L=f[i>>2]|0;M=L-K>>2;A=K;if(x>>>0>=M>>>0)break;else{w=I;y=J;z=K}}if(J>>>0>>0&(I^1)){N=0;break}else{l=J;j=A;s=K;t=L}}if((B|0)==25){f[d>>2]=0;B=d+4|0;f[B>>2]=0;f[d+8>>2]=0;L=f[a+4>>2]|0;a=(f[L+12>>2]|0)-(f[L+8>>2]|0)|0;L=a>>2;f[e>>2]=0;K=e+4|0;f[K>>2]=0;A=e+8|0;f[A>>2]=0;if(L|0){if((a|0)<0)aq(e);a=((L+-1|0)>>>5)+1|0;J=ln(a<<2)|0;f[e>>2]=J;f[A>>2]=a;f[K>>2]=L;K=L>>>5;sj(J|0,0,K<<2|0)|0;a=L&31;L=J+(K<<2)|0;if(a|0)f[L>>2]=f[L>>2]&~(-1>>>(32-a|0))}a:do if((t|0)==(s|0))O=1;else{a=0;L=j;K=s;J=t;while(1){A=f[(f[g>>2]|0)+(a<<2)>>2]|0;l=f[L+(A<<2)>>2]|0;I=(f[l+8>>2]|0)-(f[l+4>>2]|0)|0;l=I>>2;if((I|0)<8){P=K;Q=J}else{I=f[B>>2]|0;M=f[d>>2]|0;z=I-M>>2;y=M;M=I;if(l>>>0<=z>>>0)if(l>>>0>>0?(I=y+(l<<2)|0,(I|0)!=(M|0)):0){f[B>>2]=M+(~((M+-4-I|0)>>>2)<<2);R=0}else R=0;else{Ci(d,l-z|0);R=0}while(1){if((R|0)<(l|0)){S=0;T=0;U=R}else break;while(1){z=f[(f[h>>2]|0)+(A<<2)>>2]|0;I=f[(f[z+4>>2]|0)+(S<<2)>>2]|0;M=S>>>5;y=1<<(S&31);if(!(f[(f[e>>2]|0)+(M<<2)>>2]&y)){w=0;x=1;H=z;while(1){if((w|0)>=(Ra[f[(f[H>>2]|0)+24>>2]&127](H,I)|0)){V=x;break}z=f[(f[h>>2]|0)+(A<<2)>>2]|0;F=Sa[f[(f[z>>2]|0)+28>>2]&31](z,I,w)|0;z=(f[(f[e>>2]|0)+(F>>>5<<2)>>2]&1<<(F&31)|0)!=0;F=x&z;if(!z){V=F;break}w=w+1|0;x=F;H=f[(f[h>>2]|0)+(A<<2)>>2]|0}if(V){f[(f[d>>2]|0)+(U<<2)>>2]=S;H=(f[e>>2]|0)+(M<<2)|0;f[H>>2]=f[H>>2]|y;W=1;X=U+1|0}else{W=T;X=U}}else{W=T;X=U}S=S+1|0;if((S|0)>=(l|0))break;else{T=W;U=X}}if(W|(X|0)>=(l|0))R=X;else{O=0;break a}}bg(f[(f[h>>2]|0)+(A<<2)>>2]|0,d);P=f[h>>2]|0;Q=f[i>>2]|0}a=a+1|0;if(a>>>0>=Q-P>>2>>>0){O=1;break}else{L=P;K=P;J=Q}}}while(0);Q=f[e>>2]|0;if(Q|0)Oq(Q);Q=f[d>>2]|0;if(Q|0){d=f[B>>2]|0;if((d|0)!=(Q|0))f[B>>2]=d+(~((d+-4-Q|0)>>>2)<<2);Oq(Q)}N=O}O=f[c>>2]|0;if(!O){u=b;return N|0}Oq(O);u=b;return N|0}function yc(a){a=a|0;var b=0,c=0,d=0,e=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,A=0,B=0,C=0,D=0;if(!a)return;b=a+-8|0;c=f[4788]|0;d=f[a+-4>>2]|0;a=d&-8;e=b+a|0;do if(!(d&1)){g=f[b>>2]|0;if(!(d&3))return;h=b+(0-g)|0;i=g+a|0;if(h>>>0>>0)return;if((f[4789]|0)==(h|0)){j=e+4|0;k=f[j>>2]|0;if((k&3|0)!=3){l=h;m=i;n=h;break}f[4786]=i;f[j>>2]=k&-2;f[h+4>>2]=i|1;f[h+i>>2]=i;return}k=g>>>3;if(g>>>0<256){g=f[h+8>>2]|0;j=f[h+12>>2]|0;if((j|0)==(g|0)){f[4784]=f[4784]&~(1<>2]=j;f[j+8>>2]=g;l=h;m=i;n=h;break}}g=f[h+24>>2]|0;j=f[h+12>>2]|0;do if((j|0)==(h|0)){k=h+16|0;o=k+4|0;p=f[o>>2]|0;if(!p){q=f[k>>2]|0;if(!q){r=0;break}else{s=q;t=k}}else{s=p;t=o}while(1){o=s+20|0;p=f[o>>2]|0;if(p|0){s=p;t=o;continue}o=s+16|0;p=f[o>>2]|0;if(!p)break;else{s=p;t=o}}f[t>>2]=0;r=s}else{o=f[h+8>>2]|0;f[o+12>>2]=j;f[j+8>>2]=o;r=j}while(0);if(g){j=f[h+28>>2]|0;o=19440+(j<<2)|0;if((f[o>>2]|0)==(h|0)){f[o>>2]=r;if(!r){f[4785]=f[4785]&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=r;if(!r){l=h;m=i;n=h;break}}f[r+24>>2]=g;j=h+16|0;o=f[j>>2]|0;if(o|0){f[r+16>>2]=o;f[o+24>>2]=r}o=f[j+4>>2]|0;if(o){f[r+20>>2]=o;f[o+24>>2]=r;l=h;m=i;n=h}else{l=h;m=i;n=h}}else{l=h;m=i;n=h}}else{l=b;m=a;n=b}while(0);if(n>>>0>=e>>>0)return;b=e+4|0;a=f[b>>2]|0;if(!(a&1))return;if(!(a&2)){if((f[4790]|0)==(e|0)){r=(f[4787]|0)+m|0;f[4787]=r;f[4790]=l;f[l+4>>2]=r|1;if((l|0)!=(f[4789]|0))return;f[4789]=0;f[4786]=0;return}if((f[4789]|0)==(e|0)){r=(f[4786]|0)+m|0;f[4786]=r;f[4789]=n;f[l+4>>2]=r|1;f[n+r>>2]=r;return}r=(a&-8)+m|0;s=a>>>3;do if(a>>>0<256){t=f[e+8>>2]|0;c=f[e+12>>2]|0;if((c|0)==(t|0)){f[4784]=f[4784]&~(1<>2]=c;f[c+8>>2]=t;break}}else{t=f[e+24>>2]|0;c=f[e+12>>2]|0;do if((c|0)==(e|0)){d=e+16|0;o=d+4|0;j=f[o>>2]|0;if(!j){p=f[d>>2]|0;if(!p){u=0;break}else{v=p;w=d}}else{v=j;w=o}while(1){o=v+20|0;j=f[o>>2]|0;if(j|0){v=j;w=o;continue}o=v+16|0;j=f[o>>2]|0;if(!j)break;else{v=j;w=o}}f[w>>2]=0;u=v}else{o=f[e+8>>2]|0;f[o+12>>2]=c;f[c+8>>2]=o;u=c}while(0);if(t|0){c=f[e+28>>2]|0;h=19440+(c<<2)|0;if((f[h>>2]|0)==(e|0)){f[h>>2]=u;if(!u){f[4785]=f[4785]&~(1<>2]|0)!=(e|0)&1)<<2)>>2]=u;if(!u)break}f[u+24>>2]=t;c=e+16|0;h=f[c>>2]|0;if(h|0){f[u+16>>2]=h;f[h+24>>2]=u}h=f[c+4>>2]|0;if(h|0){f[u+20>>2]=h;f[h+24>>2]=u}}}while(0);f[l+4>>2]=r|1;f[n+r>>2]=r;if((l|0)==(f[4789]|0)){f[4786]=r;return}else x=r}else{f[b>>2]=a&-2;f[l+4>>2]=m|1;f[n+m>>2]=m;x=m}m=x>>>3;if(x>>>0<256){n=19176+(m<<1<<2)|0;a=f[4784]|0;b=1<>2]|0;z=b}f[z>>2]=l;f[y+12>>2]=l;f[l+8>>2]=y;f[l+12>>2]=n;return}n=x>>>8;if(n)if(x>>>0>16777215)A=31;else{y=(n+1048320|0)>>>16&8;z=n<>>16&4;b=z<>>16&2;a=14-(n|y|z)+(b<>>15)|0;A=x>>>(a+7|0)&1|a<<1}else A=0;a=19440+(A<<2)|0;f[l+28>>2]=A;f[l+20>>2]=0;f[l+16>>2]=0;z=f[4785]|0;b=1<>>1)|0);n=f[a>>2]|0;while(1){if((f[n+4>>2]&-8|0)==(x|0)){B=73;break}C=n+16+(y>>>31<<2)|0;m=f[C>>2]|0;if(!m){B=72;break}else{y=y<<1;n=m}}if((B|0)==72){f[C>>2]=l;f[l+24>>2]=n;f[l+12>>2]=l;f[l+8>>2]=l;break}else if((B|0)==73){y=n+8|0;t=f[y>>2]|0;f[t+12>>2]=l;f[y>>2]=l;f[l+8>>2]=t;f[l+12>>2]=n;f[l+24>>2]=0;break}}else{f[4785]=z|b;f[a>>2]=l;f[l+24>>2]=a;f[l+12>>2]=l;f[l+8>>2]=l}while(0);l=(f[4792]|0)+-1|0;f[4792]=l;if(!l)D=19592;else return;while(1){l=f[D>>2]|0;if(!l)break;else D=l+8|0}f[4792]=-1;return}function zc(a){a=a|0;var c=0,e=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,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;c=u;u=u+32|0;e=c+4|0;g=c;h=c+16|0;i=a+52|0;j=f[i>>2]|0;k=(f[j+100>>2]|0)-(f[j+96>>2]|0)|0;j=(k|0)/12|0;l=a+44|0;ci(j,f[l>>2]|0)|0;ci(f[(f[i>>2]|0)+80>>2]|0,f[l>>2]|0)|0;m=f[a+48>>2]|0;n=ln(32)|0;f[e>>2]=n;f[e+8>>2]=-2147483616;f[e+4>>2]=21;o=n;p=15598;q=o+21|0;do{b[o>>0]=b[p>>0]|0;o=o+1|0;p=p+1|0}while((o|0)<(q|0));b[n+21>>0]=0;n=Yj(m,e,0)|0;if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);m=f[l>>2]|0;if(n){b[h>>0]=0;n=m+16|0;p=f[n+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[n>>2]|0)>>>0>0)){f[g>>2]=f[m+4>>2];f[e>>2]=f[g>>2];Me(m,e,h,h+1|0)|0}mf(a)|0;u=c;return 1}b[h>>0]=1;a=m+16|0;n=f[a+4>>2]|0;if(!((n|0)>0|(n|0)==0&(f[a>>2]|0)>>>0>0)){f[g>>2]=f[m+4>>2];f[e>>2]=f[g>>2];Me(m,e,h,h+1|0)|0}m=f[i>>2]|0;a=f[m+80>>2]|0;if(a>>>0<256){if(!k){u=c;return 1}n=h+1|0;p=h+1|0;o=h+1|0;q=0;r=m;while(1){s=f[r+96>>2]|0;t=f[l>>2]|0;b[h>>0]=f[s+(q*12|0)>>2];v=t+16|0;w=f[v>>2]|0;x=f[v+4>>2]|0;if((x|0)>0|(x|0)==0&w>>>0>0){y=w;z=t;A=x}else{f[g>>2]=f[t+4>>2];f[e>>2]=f[g>>2];Me(t,e,h,o)|0;t=f[l>>2]|0;x=t+16|0;y=f[x>>2]|0;z=t;A=f[x+4>>2]|0}b[h>>0]=f[s+(q*12|0)+4>>2];if((A|0)>0|(A|0)==0&y>>>0>0){B=A;C=y;D=z}else{f[g>>2]=f[z+4>>2];f[e>>2]=f[g>>2];Me(z,e,h,p)|0;x=f[l>>2]|0;t=x+16|0;B=f[t+4>>2]|0;C=f[t>>2]|0;D=x}b[h>>0]=f[s+(q*12|0)+8>>2];if(!((B|0)>0|(B|0)==0&C>>>0>0)){f[g>>2]=f[D+4>>2];f[e>>2]=f[g>>2];Me(D,e,h,n)|0}s=q+1|0;if(s>>>0>=j>>>0)break;q=s;r=f[i>>2]|0}u=c;return 1}if(a>>>0<65536){if(!k){u=c;return 1}r=h+2|0;q=h+2|0;n=h+2|0;D=0;C=m;while(1){B=f[C+96>>2]|0;p=f[l>>2]|0;d[h>>1]=f[B+(D*12|0)>>2];z=p+16|0;y=f[z>>2]|0;A=f[z+4>>2]|0;if((A|0)>0|(A|0)==0&y>>>0>0){E=A;F=y;G=p}else{f[g>>2]=f[p+4>>2];f[e>>2]=f[g>>2];Me(p,e,h,n)|0;p=f[l>>2]|0;y=p+16|0;E=f[y+4>>2]|0;F=f[y>>2]|0;G=p}d[h>>1]=f[B+(D*12|0)+4>>2];if((E|0)>0|(E|0)==0&F>>>0>0){H=E;I=F;J=G}else{f[g>>2]=f[G+4>>2];f[e>>2]=f[g>>2];Me(G,e,h,q)|0;p=f[l>>2]|0;y=p+16|0;H=f[y+4>>2]|0;I=f[y>>2]|0;J=p}d[h>>1]=f[B+(D*12|0)+8>>2];if(!((H|0)>0|(H|0)==0&I>>>0>0)){f[g>>2]=f[J+4>>2];f[e>>2]=f[g>>2];Me(J,e,h,r)|0}B=D+1|0;if(B>>>0>=j>>>0)break;D=B;C=f[i>>2]|0}u=c;return 1}C=(k|0)!=0;if(a>>>0<2097152){if(C){K=0;L=m}else{u=c;return 1}while(1){a=f[L+96>>2]|0;ci(f[a+(K*12|0)>>2]|0,f[l>>2]|0)|0;ci(f[a+(K*12|0)+4>>2]|0,f[l>>2]|0)|0;ci(f[a+(K*12|0)+8>>2]|0,f[l>>2]|0)|0;a=K+1|0;if(a>>>0>=j>>>0)break;K=a;L=f[i>>2]|0}u=c;return 1}if(!C){u=c;return 1}C=0;L=m;while(1){m=(f[L+96>>2]|0)+(C*12|0)|0;K=f[l>>2]|0;a=K+16|0;k=f[a+4>>2]|0;if(!((k|0)>0|(k|0)==0&(f[a>>2]|0)>>>0>0)){f[g>>2]=f[K+4>>2];f[e>>2]=f[g>>2];Me(K,e,m,m+12|0)|0}m=C+1|0;if(m>>>0>=j>>>0)break;C=m;L=f[i>>2]|0}u=c;return 1}function Ac(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=Oa,w=Oa,x=Oa,y=Oa,z=0,A=0,B=0,C=Oa,D=Oa,E=Oa,F=Oa,G=Oa,H=Oa,I=Oa,K=Oa,M=Oa,N=Oa,O=Oa,P=0,Q=Oa,R=Oa,S=0;g=u;u=u+48|0;h=g+40|0;i=g+36|0;j=g+24|0;k=g+12|0;l=g;m=a+28|0;o=f[c>>2]|0;c=o+1|0;if((o|0)!=-1){p=((c>>>0)%3|0|0)==0?o+-2|0:c;c=o+(((o>>>0)%3|0|0)==0?2:-1)|0;if((p|0)==-1)q=-1;else q=f[(f[f[m>>2]>>2]|0)+(p<<2)>>2]|0;if((c|0)==-1){r=-1;s=q}else{r=f[(f[f[m>>2]>>2]|0)+(c<<2)>>2]|0;s=q}}else{r=-1;s=-1}q=f[a+32>>2]|0;c=f[q>>2]|0;m=(f[q+4>>2]|0)-c>>2;if(m>>>0<=s>>>0)aq(q);p=c;c=f[p+(s<<2)>>2]|0;if(m>>>0<=r>>>0)aq(q);q=f[p+(r<<2)>>2]|0;r=(c|0)<(e|0);if(!(r&(q|0)<(e|0))){do if(r)t=c;else{if((e|0)>0){t=e+-1|0;break}p=a+52|0;if((f[p>>2]|0)<=0){u=g;return}m=f[a+48>>2]|0;s=0;do{f[m+(s<<2)>>2]=0;s=s+1|0}while((s|0)<(f[p>>2]|0));u=g;return}while(0);r=a+52|0;p=f[r>>2]|0;s=X(p,t)|0;if((p|0)<=0){u=g;return}p=f[a+48>>2]|0;t=0;do{f[p+(t<<2)>>2]=f[d+(t+s<<2)>>2];t=t+1|0}while((t|0)<(f[r>>2]|0));u=g;return}r=a+52|0;t=f[r>>2]|0;s=X(t,c)|0;v=$(f[d+(s<<2)>>2]|0);w=$(f[d+(s+1<<2)>>2]|0);s=X(t,q)|0;x=$(f[d+(s<<2)>>2]|0);y=$(f[d+(s+1<<2)>>2]|0);if(!(x!=v|y!=w)){s=f[a+48>>2]|0;f[s>>2]=~~x;f[s+4>>2]=~~y;u=g;return}s=a+44|0;t=f[(f[s>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;p=a+40|0;m=f[p>>2]|0;if(!(b[m+84>>0]|0))z=f[(f[m+68>>2]|0)+(t<<2)>>2]|0;else z=t;f[i>>2]=z;z=b[m+24>>0]|0;f[h>>2]=f[i>>2];mb(m,h,z,j)|0;z=f[(f[s>>2]|0)+(c<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;c=f[p>>2]|0;if(!(b[c+84>>0]|0))A=f[(f[c+68>>2]|0)+(z<<2)>>2]|0;else A=z;f[i>>2]=A;A=b[c+24>>0]|0;f[h>>2]=f[i>>2];mb(c,h,A,k)|0;A=f[(f[s>>2]|0)+(q<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;q=f[p>>2]|0;if(!(b[q+84>>0]|0))B=f[(f[q+68>>2]|0)+(A<<2)>>2]|0;else B=A;f[i>>2]=B;B=b[q+24>>0]|0;f[h>>2]=f[i>>2];mb(q,h,B,l)|0;C=$(n[l>>2]);D=$(n[k>>2]);E=$(C-D);C=$(n[l+4>>2]);F=$(n[k+4>>2]);G=$(C-F);C=$(n[l+8>>2]);H=$(n[k+8>>2]);I=$(C-H);C=$($(n[j>>2])-D);D=$($(n[j+4>>2])-F);F=$($(n[j+8>>2])-H);H=$($($($(E*E)+$(0.0))+$(G*G))+$(I*I));if(H>$(0.0)){K=$($($($($(E*C)+$(0.0))+$(G*D))+$(I*F))/H);M=$(C-$(E*K));E=$(D-$(G*K));G=$(F-$(I*K));N=K;O=$(L($($($(G*G)+$($(E*E)+$($(M*M)+$(0.0))))/H)))}else{N=$(0.0);O=$(0.0)}H=$(x-v);x=$(y-w);y=$($(H*N)+v);v=$(H*O);H=$($(x*N)+w);w=$(x*O);O=$(y-w);x=$(H+v);N=$(y+w);w=$(H-v);j=X(f[r>>2]|0,e)|0;v=$(f[d+(j<<2)>>2]|0);H=$(f[d+(j+1<<2)>>2]|0);y=$(v-O);M=$(H-x);E=$(v-N);v=$(H-w);j=$($($(y*y)+$(0.0))+$(M*M))<$($($(E*E)+$(0.0))+$(v*v));d=a+56|0;e=a+60|0;r=f[e>>2]|0;k=f[a+64>>2]|0;l=(r|0)==(k<<5|0);if(j){do if(l)if((r+1|0)<0)aq(d);else{j=k<<6;B=r+32&-32;vi(d,r>>>0<1073741823?(j>>>0>>0?B:j):2147483647);P=f[e>>2]|0;break}else P=r;while(0);f[e>>2]=P+1;j=(f[d>>2]|0)+(P>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(P&31);Q=O;R=x}else{do if(l)if((r+1|0)<0)aq(d);else{P=k<<6;j=r+32&-32;vi(d,r>>>0<1073741823?(P>>>0>>0?j:P):2147483647);S=f[e>>2]|0;break}else S=r;while(0);f[e>>2]=S+1;e=(f[d>>2]|0)+(S>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(S&31));Q=N;R=w}S=~~+J(+(+Q+.5));e=f[a+48>>2]|0;f[e>>2]=S;S=~~+J(+(+R+.5));f[e+4>>2]=S;u=g;return}function Bc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=Oa,v=Oa,w=Oa,x=Oa,y=0,z=0,A=0,B=Oa,C=Oa,D=Oa,E=Oa,F=Oa,G=Oa,H=Oa,I=Oa,K=Oa,M=Oa,N=Oa,O=0,P=Oa,Q=Oa,R=0;g=u;u=u+48|0;h=g+40|0;i=g+36|0;j=g+24|0;k=g+12|0;l=g;m=a+28|0;o=f[c>>2]|0;c=o+1|0;do if((o|0)!=-1){p=((c>>>0)%3|0|0)==0?o+-2|0:c;if(!((o>>>0)%3|0)){q=o+2|0;r=p;break}else{q=o+-1|0;r=p;break}}else{q=-1;r=-1}while(0);o=f[(f[m>>2]|0)+28>>2]|0;m=f[o+(r<<2)>>2]|0;r=f[o+(q<<2)>>2]|0;q=f[a+32>>2]|0;o=f[q>>2]|0;c=(f[q+4>>2]|0)-o>>2;if(c>>>0<=m>>>0)aq(q);p=o;o=f[p+(m<<2)>>2]|0;if(c>>>0<=r>>>0)aq(q);q=f[p+(r<<2)>>2]|0;r=(o|0)<(e|0);if(!(r&(q|0)<(e|0))){do if(r)s=o;else{if((e|0)>0){s=e+-1|0;break}p=a+52|0;if((f[p>>2]|0)<=0){u=g;return}c=f[a+48>>2]|0;m=0;do{f[c+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(f[p>>2]|0));u=g;return}while(0);r=a+52|0;p=f[r>>2]|0;m=X(p,s)|0;if((p|0)<=0){u=g;return}p=f[a+48>>2]|0;s=0;do{f[p+(s<<2)>>2]=f[d+(s+m<<2)>>2];s=s+1|0}while((s|0)<(f[r>>2]|0));u=g;return}r=a+52|0;s=f[r>>2]|0;m=X(s,o)|0;t=$(f[d+(m<<2)>>2]|0);v=$(f[d+(m+1<<2)>>2]|0);m=X(s,q)|0;w=$(f[d+(m<<2)>>2]|0);x=$(f[d+(m+1<<2)>>2]|0);if(!(w!=t|x!=v)){m=f[a+48>>2]|0;f[m>>2]=~~w;f[m+4>>2]=~~x;u=g;return}m=a+44|0;s=f[(f[m>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;p=a+40|0;c=f[p>>2]|0;if(!(b[c+84>>0]|0))y=f[(f[c+68>>2]|0)+(s<<2)>>2]|0;else y=s;f[i>>2]=y;y=b[c+24>>0]|0;f[h>>2]=f[i>>2];mb(c,h,y,j)|0;y=f[(f[m>>2]|0)+(o<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;o=f[p>>2]|0;if(!(b[o+84>>0]|0))z=f[(f[o+68>>2]|0)+(y<<2)>>2]|0;else z=y;f[i>>2]=z;z=b[o+24>>0]|0;f[h>>2]=f[i>>2];mb(o,h,z,k)|0;z=f[(f[m>>2]|0)+(q<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;q=f[p>>2]|0;if(!(b[q+84>>0]|0))A=f[(f[q+68>>2]|0)+(z<<2)>>2]|0;else A=z;f[i>>2]=A;A=b[q+24>>0]|0;f[h>>2]=f[i>>2];mb(q,h,A,l)|0;B=$(n[l>>2]);C=$(n[k>>2]);D=$(B-C);B=$(n[l+4>>2]);E=$(n[k+4>>2]);F=$(B-E);B=$(n[l+8>>2]);G=$(n[k+8>>2]);H=$(B-G);B=$($(n[j>>2])-C);C=$($(n[j+4>>2])-E);E=$($(n[j+8>>2])-G);G=$($($($(D*D)+$(0.0))+$(F*F))+$(H*H));if(G>$(0.0)){I=$($($($($(D*B)+$(0.0))+$(F*C))+$(H*E))/G);K=$(B-$(D*I));D=$(C-$(F*I));F=$(E-$(H*I));M=I;N=$(L($($($(F*F)+$($(D*D)+$($(K*K)+$(0.0))))/G)))}else{M=$(0.0);N=$(0.0)}G=$(w-t);w=$(x-v);x=$($(G*M)+t);t=$(G*N);G=$($(w*M)+v);v=$(w*N);N=$(x-v);w=$(G+t);M=$(x+v);v=$(G-t);j=X(f[r>>2]|0,e)|0;t=$(f[d+(j<<2)>>2]|0);G=$(f[d+(j+1<<2)>>2]|0);x=$(t-N);K=$(G-w);D=$(t-M);t=$(G-v);j=$($($(x*x)+$(0.0))+$(K*K))<$($($(D*D)+$(0.0))+$(t*t));d=a+56|0;e=a+60|0;r=f[e>>2]|0;k=f[a+64>>2]|0;l=(r|0)==(k<<5|0);if(j){do if(l)if((r+1|0)<0)aq(d);else{j=k<<6;A=r+32&-32;vi(d,r>>>0<1073741823?(j>>>0>>0?A:j):2147483647);O=f[e>>2]|0;break}else O=r;while(0);f[e>>2]=O+1;j=(f[d>>2]|0)+(O>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(O&31);P=N;Q=w}else{do if(l)if((r+1|0)<0)aq(d);else{O=k<<6;j=r+32&-32;vi(d,r>>>0<1073741823?(O>>>0>>0?j:O):2147483647);R=f[e>>2]|0;break}else R=r;while(0);f[e>>2]=R+1;e=(f[d>>2]|0)+(R>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(R&31));P=M;Q=v}R=~~+J(+(+P+.5));e=f[a+48>>2]|0;f[e>>2]=R;R=~~+J(+(+Q+.5));f[e+4>>2]=R;u=g;return}function Cc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=Oa,w=Oa,x=Oa,y=Oa,z=0,A=0,B=0,C=Oa,D=Oa,E=Oa,F=Oa,G=Oa,H=Oa,I=Oa,K=Oa,M=Oa,N=Oa,O=Oa,P=0,Q=Oa,R=Oa,S=0;g=u;u=u+48|0;h=g+40|0;i=g+36|0;j=g+24|0;k=g+12|0;l=g;m=a+48|0;o=f[c>>2]|0;c=o+1|0;if((o|0)!=-1){p=((c>>>0)%3|0|0)==0?o+-2|0:c;c=o+(((o>>>0)%3|0|0)==0?2:-1)|0;if((p|0)==-1)q=-1;else q=f[(f[f[m>>2]>>2]|0)+(p<<2)>>2]|0;if((c|0)==-1){r=-1;s=q}else{r=f[(f[f[m>>2]>>2]|0)+(c<<2)>>2]|0;s=q}}else{r=-1;s=-1}q=f[a+52>>2]|0;c=f[q>>2]|0;m=(f[q+4>>2]|0)-c>>2;if(m>>>0<=s>>>0)aq(q);p=c;c=f[p+(s<<2)>>2]|0;if(m>>>0<=r>>>0)aq(q);q=f[p+(r<<2)>>2]|0;r=(c|0)<(e|0);if(!(r&(q|0)<(e|0))){do if(r)t=c;else{if((e|0)>0){t=e+-1|0;break}p=a+72|0;if((f[p>>2]|0)<=0){u=g;return}m=f[a+68>>2]|0;s=0;do{f[m+(s<<2)>>2]=0;s=s+1|0}while((s|0)<(f[p>>2]|0));u=g;return}while(0);r=a+72|0;p=f[r>>2]|0;s=X(p,t)|0;if((p|0)<=0){u=g;return}p=f[a+68>>2]|0;t=0;do{f[p+(t<<2)>>2]=f[d+(t+s<<2)>>2];t=t+1|0}while((t|0)<(f[r>>2]|0));u=g;return}r=a+72|0;t=f[r>>2]|0;s=X(t,c)|0;v=$(f[d+(s<<2)>>2]|0);w=$(f[d+(s+1<<2)>>2]|0);s=X(t,q)|0;x=$(f[d+(s<<2)>>2]|0);y=$(f[d+(s+1<<2)>>2]|0);if(!(x!=v|y!=w)){s=f[a+68>>2]|0;f[s>>2]=~~x;f[s+4>>2]=~~y;u=g;return}s=a+64|0;t=f[(f[s>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;p=a+60|0;m=f[p>>2]|0;if(!(b[m+84>>0]|0))z=f[(f[m+68>>2]|0)+(t<<2)>>2]|0;else z=t;f[i>>2]=z;z=b[m+24>>0]|0;f[h>>2]=f[i>>2];mb(m,h,z,j)|0;z=f[(f[s>>2]|0)+(c<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;c=f[p>>2]|0;if(!(b[c+84>>0]|0))A=f[(f[c+68>>2]|0)+(z<<2)>>2]|0;else A=z;f[i>>2]=A;A=b[c+24>>0]|0;f[h>>2]=f[i>>2];mb(c,h,A,k)|0;A=f[(f[s>>2]|0)+(q<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;q=f[p>>2]|0;if(!(b[q+84>>0]|0))B=f[(f[q+68>>2]|0)+(A<<2)>>2]|0;else B=A;f[i>>2]=B;B=b[q+24>>0]|0;f[h>>2]=f[i>>2];mb(q,h,B,l)|0;C=$(n[l>>2]);D=$(n[k>>2]);E=$(C-D);C=$(n[l+4>>2]);F=$(n[k+4>>2]);G=$(C-F);C=$(n[l+8>>2]);H=$(n[k+8>>2]);I=$(C-H);C=$($(n[j>>2])-D);D=$($(n[j+4>>2])-F);F=$($(n[j+8>>2])-H);H=$($($($(E*E)+$(0.0))+$(G*G))+$(I*I));if(H>$(0.0)){K=$($($($($(E*C)+$(0.0))+$(G*D))+$(I*F))/H);M=$(C-$(E*K));E=$(D-$(G*K));G=$(F-$(I*K));N=K;O=$(L($($($(G*G)+$($(E*E)+$($(M*M)+$(0.0))))/H)))}else{N=$(0.0);O=$(0.0)}H=$(x-v);x=$(y-w);y=$($(H*N)+v);v=$(H*O);H=$($(x*N)+w);w=$(x*O);O=$(y-w);x=$(H+v);N=$(y+w);w=$(H-v);j=X(f[r>>2]|0,e)|0;v=$(f[d+(j<<2)>>2]|0);H=$(f[d+(j+1<<2)>>2]|0);y=$(v-O);M=$(H-x);E=$(v-N);v=$(H-w);j=$($($(y*y)+$(0.0))+$(M*M))<$($($(E*E)+$(0.0))+$(v*v));d=a+76|0;e=a+80|0;r=f[e>>2]|0;k=f[a+84>>2]|0;l=(r|0)==(k<<5|0);if(j){do if(l)if((r+1|0)<0)aq(d);else{j=k<<6;B=r+32&-32;vi(d,r>>>0<1073741823?(j>>>0>>0?B:j):2147483647);P=f[e>>2]|0;break}else P=r;while(0);f[e>>2]=P+1;j=(f[d>>2]|0)+(P>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(P&31);Q=O;R=x}else{do if(l)if((r+1|0)<0)aq(d);else{P=k<<6;j=r+32&-32;vi(d,r>>>0<1073741823?(P>>>0>>0?j:P):2147483647);S=f[e>>2]|0;break}else S=r;while(0);f[e>>2]=S+1;e=(f[d>>2]|0)+(S>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(S&31));Q=N;R=w}S=~~+J(+(+Q+.5));e=f[a+68>>2]|0;f[e>>2]=S;S=~~+J(+(+R+.5));f[e+4>>2]=S;u=g;return}function Dc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=Oa,v=Oa,w=Oa,x=Oa,y=0,z=0,A=0,B=Oa,C=Oa,D=Oa,E=Oa,F=Oa,G=Oa,H=Oa,I=Oa,K=Oa,M=Oa,N=Oa,O=0,P=Oa,Q=Oa,R=0;g=u;u=u+48|0;h=g+40|0;i=g+36|0;j=g+24|0;k=g+12|0;l=g;m=a+48|0;o=f[c>>2]|0;c=o+1|0;do if((o|0)!=-1){p=((c>>>0)%3|0|0)==0?o+-2|0:c;if(!((o>>>0)%3|0)){q=o+2|0;r=p;break}else{q=o+-1|0;r=p;break}}else{q=-1;r=-1}while(0);o=f[(f[m>>2]|0)+28>>2]|0;m=f[o+(r<<2)>>2]|0;r=f[o+(q<<2)>>2]|0;q=f[a+52>>2]|0;o=f[q>>2]|0;c=(f[q+4>>2]|0)-o>>2;if(c>>>0<=m>>>0)aq(q);p=o;o=f[p+(m<<2)>>2]|0;if(c>>>0<=r>>>0)aq(q);q=f[p+(r<<2)>>2]|0;r=(o|0)<(e|0);if(!(r&(q|0)<(e|0))){do if(r)s=o;else{if((e|0)>0){s=e+-1|0;break}p=a+72|0;if((f[p>>2]|0)<=0){u=g;return}c=f[a+68>>2]|0;m=0;do{f[c+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(f[p>>2]|0));u=g;return}while(0);r=a+72|0;p=f[r>>2]|0;m=X(p,s)|0;if((p|0)<=0){u=g;return}p=f[a+68>>2]|0;s=0;do{f[p+(s<<2)>>2]=f[d+(s+m<<2)>>2];s=s+1|0}while((s|0)<(f[r>>2]|0));u=g;return}r=a+72|0;s=f[r>>2]|0;m=X(s,o)|0;t=$(f[d+(m<<2)>>2]|0);v=$(f[d+(m+1<<2)>>2]|0);m=X(s,q)|0;w=$(f[d+(m<<2)>>2]|0);x=$(f[d+(m+1<<2)>>2]|0);if(!(w!=t|x!=v)){m=f[a+68>>2]|0;f[m>>2]=~~w;f[m+4>>2]=~~x;u=g;return}m=a+64|0;s=f[(f[m>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;p=a+60|0;c=f[p>>2]|0;if(!(b[c+84>>0]|0))y=f[(f[c+68>>2]|0)+(s<<2)>>2]|0;else y=s;f[i>>2]=y;y=b[c+24>>0]|0;f[h>>2]=f[i>>2];mb(c,h,y,j)|0;y=f[(f[m>>2]|0)+(o<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;o=f[p>>2]|0;if(!(b[o+84>>0]|0))z=f[(f[o+68>>2]|0)+(y<<2)>>2]|0;else z=y;f[i>>2]=z;z=b[o+24>>0]|0;f[h>>2]=f[i>>2];mb(o,h,z,k)|0;z=f[(f[m>>2]|0)+(q<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;q=f[p>>2]|0;if(!(b[q+84>>0]|0))A=f[(f[q+68>>2]|0)+(z<<2)>>2]|0;else A=z;f[i>>2]=A;A=b[q+24>>0]|0;f[h>>2]=f[i>>2];mb(q,h,A,l)|0;B=$(n[l>>2]);C=$(n[k>>2]);D=$(B-C);B=$(n[l+4>>2]);E=$(n[k+4>>2]);F=$(B-E);B=$(n[l+8>>2]);G=$(n[k+8>>2]);H=$(B-G);B=$($(n[j>>2])-C);C=$($(n[j+4>>2])-E);E=$($(n[j+8>>2])-G);G=$($($($(D*D)+$(0.0))+$(F*F))+$(H*H));if(G>$(0.0)){I=$($($($($(D*B)+$(0.0))+$(F*C))+$(H*E))/G);K=$(B-$(D*I));D=$(C-$(F*I));F=$(E-$(H*I));M=I;N=$(L($($($(F*F)+$($(D*D)+$($(K*K)+$(0.0))))/G)))}else{M=$(0.0);N=$(0.0)}G=$(w-t);w=$(x-v);x=$($(G*M)+t);t=$(G*N);G=$($(w*M)+v);v=$(w*N);N=$(x-v);w=$(G+t);M=$(x+v);v=$(G-t);j=X(f[r>>2]|0,e)|0;t=$(f[d+(j<<2)>>2]|0);G=$(f[d+(j+1<<2)>>2]|0);x=$(t-N);K=$(G-w);D=$(t-M);t=$(G-v);j=$($($(x*x)+$(0.0))+$(K*K))<$($($(D*D)+$(0.0))+$(t*t));d=a+76|0;e=a+80|0;r=f[e>>2]|0;k=f[a+84>>2]|0;l=(r|0)==(k<<5|0);if(j){do if(l)if((r+1|0)<0)aq(d);else{j=k<<6;A=r+32&-32;vi(d,r>>>0<1073741823?(j>>>0>>0?A:j):2147483647);O=f[e>>2]|0;break}else O=r;while(0);f[e>>2]=O+1;j=(f[d>>2]|0)+(O>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(O&31);P=N;Q=w}else{do if(l)if((r+1|0)<0)aq(d);else{O=k<<6;j=r+32&-32;vi(d,r>>>0<1073741823?(O>>>0>>0?j:O):2147483647);R=f[e>>2]|0;break}else R=r;while(0);f[e>>2]=R+1;e=(f[d>>2]|0)+(R>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(R&31));P=M;Q=v}R=~~+J(+(+P+.5));e=f[a+68>>2]|0;f[e>>2]=R;R=~~+J(+(+Q+.5));f[e+4>>2]=R;u=g;return}function Ec(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=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=Oa,F=Oa,G=Oa,H=0,I=0,J=0,K=0;d=b[c+11>>0]|0;e=d<<24>>24<0;g=e?f[c>>2]|0:c;i=e?f[c+4>>2]|0:d&255;if(i>>>0>3){d=g;e=i;j=i;while(1){k=X(h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24,1540483477)|0;e=(X(k>>>24^k,1540483477)|0)^(X(e,1540483477)|0);j=j+-4|0;if(j>>>0<=3)break;else d=d+4|0}d=i+-4|0;j=d&-4;l=d-j|0;m=g+(j+4)|0;o=e}else{l=i;m=g;o=i}switch(l|0){case 3:{p=h[m+2>>0]<<16^o;q=6;break}case 2:{p=o;q=6;break}case 1:{r=o;q=7;break}default:s=o}if((q|0)==6){r=h[m+1>>0]<<8^p;q=7}if((q|0)==7)s=X(r^h[m>>0],1540483477)|0;m=X(s>>>13^s,1540483477)|0;s=m>>>15^m;m=a+4|0;r=f[m>>2]|0;p=(r|0)==0;a:do if(!p){o=r+-1|0;l=(o&r|0)==0;if(!l)if(s>>>0>>0)t=s;else t=(s>>>0)%(r>>>0)|0;else t=s&o;e=f[(f[a>>2]|0)+(t<<2)>>2]|0;if((e|0)!=0?(j=f[e>>2]|0,(j|0)!=0):0){e=(i|0)==0;if(l){if(e){l=j;while(1){d=f[l+4>>2]|0;if(!((d|0)==(s|0)|(d&o|0)==(t|0))){u=t;break a}d=b[l+8+11>>0]|0;if(!((d<<24>>24<0?f[l+12>>2]|0:d&255)|0)){v=l;break}l=f[l>>2]|0;if(!l){u=t;break a}}w=v+20|0;return w|0}else x=j;b:while(1){l=f[x+4>>2]|0;if(!((l|0)==(s|0)|(l&o|0)==(t|0))){u=t;break a}l=x+8|0;d=b[l+11>>0]|0;k=d<<24>>24<0;y=d&255;do if(((k?f[x+12>>2]|0:y)|0)==(i|0)){d=f[l>>2]|0;if(k)if(!(Vk(d,g,i)|0)){v=x;q=63;break b}else break;if((b[g>>0]|0)==(d&255)<<24>>24){d=l;z=y;A=g;do{z=z+-1|0;d=d+1|0;if(!z){v=x;q=63;break b}A=A+1|0}while((b[d>>0]|0)==(b[A>>0]|0))}}while(0);x=f[x>>2]|0;if(!x){u=t;break a}}if((q|0)==63){w=v+20|0;return w|0}}if(e){o=j;while(1){y=f[o+4>>2]|0;if((y|0)!=(s|0)){if(y>>>0>>0)B=y;else B=(y>>>0)%(r>>>0)|0;if((B|0)!=(t|0)){u=t;break a}}y=b[o+8+11>>0]|0;if(!((y<<24>>24<0?f[o+12>>2]|0:y&255)|0)){v=o;break}o=f[o>>2]|0;if(!o){u=t;break a}}w=v+20|0;return w|0}else C=j;c:while(1){o=f[C+4>>2]|0;if((o|0)!=(s|0)){if(o>>>0>>0)D=o;else D=(o>>>0)%(r>>>0)|0;if((D|0)!=(t|0)){u=t;break a}}o=C+8|0;e=b[o+11>>0]|0;y=e<<24>>24<0;l=e&255;do if(((y?f[C+12>>2]|0:l)|0)==(i|0)){e=f[o>>2]|0;if(y)if(!(Vk(e,g,i)|0)){v=C;q=63;break c}else break;if((b[g>>0]|0)==(e&255)<<24>>24){e=o;k=l;A=g;do{k=k+-1|0;e=e+1|0;if(!k){v=C;q=63;break c}A=A+1|0}while((b[e>>0]|0)==(b[A>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){u=t;break a}}if((q|0)==63){w=v+20|0;return w|0}}else u=t}else u=0;while(0);t=ln(24)|0;pj(t+8|0,c);f[t+20>>2]=0;f[t+4>>2]=s;f[t>>2]=0;c=a+12|0;E=$(((f[c>>2]|0)+1|0)>>>0);F=$(r>>>0);G=$(n[a+16>>2]);do if(p|$(G*F)>>0<3|(r+-1&r|0)!=0)&1;g=~~$(W($(E/G)))>>>0;ei(a,C>>>0>>0?g:C);C=f[m>>2]|0;g=C+-1|0;if(!(g&C)){H=C;I=g&s;break}if(s>>>0>>0){H=C;I=s}else{H=C;I=(s>>>0)%(C>>>0)|0}}else{H=r;I=u}while(0);u=(f[a>>2]|0)+(I<<2)|0;I=f[u>>2]|0;if(!I){r=a+8|0;f[t>>2]=f[r>>2];f[r>>2]=t;f[u>>2]=r;r=f[t>>2]|0;if(r|0){u=f[r+4>>2]|0;r=H+-1|0;if(r&H)if(u>>>0>>0)J=u;else J=(u>>>0)%(H>>>0)|0;else J=u&r;K=(f[a>>2]|0)+(J<<2)|0;q=61}}else{f[t>>2]=f[I>>2];K=I;q=61}if((q|0)==61)f[K>>2]=t;f[c>>2]=(f[c>>2]|0)+1;v=t;w=v+20|0;return w|0}function Fc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.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.0,G=0.0,H=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0.0,R=0.0,S=0,T=0.0,U=0,V=0,W=0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0.0,da=0,ea=0.0;g=a+4|0;i=f[g>>2]|0;j=a+100|0;if(i>>>0<(f[j>>2]|0)>>>0){f[g>>2]=i+1;k=h[i>>0]|0;l=0}else{k=Si(a)|0;l=0}a:while(1){switch(k|0){case 46:{m=8;break a;break}case 48:break;default:{n=0;o=0;p=1.0;q=0.0;r=0;s=k;t=l;u=0;v=0;w=0;x=0;break a}}i=f[g>>2]|0;if(i>>>0<(f[j>>2]|0)>>>0){f[g>>2]=i+1;k=h[i>>0]|0;l=1;continue}else{k=Si(a)|0;l=1;continue}}if((m|0)==8){k=f[g>>2]|0;if(k>>>0<(f[j>>2]|0)>>>0){f[g>>2]=k+1;y=h[k>>0]|0}else y=Si(a)|0;if((y|0)==48){k=0;i=0;while(1){z=f[g>>2]|0;if(z>>>0<(f[j>>2]|0)>>>0){f[g>>2]=z+1;A=h[z>>0]|0}else A=Si(a)|0;z=Vn(k|0,i|0,-1,-1)|0;B=I;if((A|0)==48){k=z;i=B}else{n=1;o=0;p=1.0;q=0.0;r=0;s=A;t=1;u=0;v=0;w=z;x=B;break}}}else{n=1;o=0;p=1.0;q=0.0;r=0;s=y;t=l;u=0;v=0;w=0;x=0}}while(1){l=s+-48|0;y=s|32;if(l>>>0>=10){A=(s|0)==46;if(!(A|(y+-97|0)>>>0<6)){C=s;break}if(A)if(!n){D=1;E=o;F=p;G=q;H=r;J=t;K=v;L=u;M=v;N=u}else{C=46;break}else m=20}else m=20;if((m|0)==20){m=0;A=(s|0)>57?y+-87|0:l;do if(!((u|0)<0|(u|0)==0&v>>>0<8))if((u|0)<0|(u|0)==0&v>>>0<14){O=p*.0625;P=o;Q=O;R=q+O*+(A|0);S=r;break}else{l=(o|0)!=0|(A|0)==0;P=l?o:1;Q=p;R=l?q:q+p*.5;S=r;break}else{P=o;Q=p;R=q;S=A+(r<<4)|0}while(0);A=Vn(v|0,u|0,1,0)|0;D=n;E=P;F=Q;G=R;H=S;J=1;K=w;L=x;M=A;N=I}A=f[g>>2]|0;if(A>>>0<(f[j>>2]|0)>>>0){f[g>>2]=A+1;n=D;o=E;p=F;q=G;r=H;s=h[A>>0]|0;t=J;u=N;v=M;w=K;x=L;continue}else{n=D;o=E;p=F;q=G;r=H;s=Si(a)|0;t=J;u=N;v=M;w=K;x=L;continue}}do if(!t){L=(f[j>>2]|0)==0;if(!L)f[g>>2]=(f[g>>2]|0)+-1;if(e){if(!L)f[g>>2]=(f[g>>2]|0)+-1;if(!((n|0)==0|L))f[g>>2]=(f[g>>2]|0)+-1}else Ym(a,0);T=+(d|0)*0.0}else{L=(n|0)==0;K=L?v:w;M=L?u:x;if((u|0)<0|(u|0)==0&v>>>0<8){L=r;N=v;J=u;while(1){s=L<<4;H=N;N=Vn(N|0,J|0,1,0)|0;if(!((J|0)<0|(J|0)==0&H>>>0<7)){U=s;break}else{L=s;J=I}}}else U=r;if((C|32|0)==112){J=Re(a,e)|0;L=I;if((J|0)==0&(L|0)==-2147483648){if(!e){Ym(a,0);T=0.0;break}if(!(f[j>>2]|0)){V=0;W=0}else{f[g>>2]=(f[g>>2]|0)+-1;V=0;W=0}}else{V=J;W=L}}else if(!(f[j>>2]|0)){V=0;W=0}else{f[g>>2]=(f[g>>2]|0)+-1;V=0;W=0}L=Tn(K|0,M|0,2)|0;J=Vn(L|0,I|0,-32,-1)|0;L=Vn(J|0,I|0,V|0,W|0)|0;J=I;if(!U){T=+(d|0)*0.0;break}N=0-c|0;s=((N|0)<0)<<31>>31;if((J|0)>(s|0)|(J|0)==(s|0)&L>>>0>N>>>0){N=Vq()|0;f[N>>2]=34;T=+(d|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}N=c+-106|0;s=((N|0)<0)<<31>>31;if((J|0)<(s|0)|(J|0)==(s|0)&L>>>0>>0){N=Vq()|0;f[N>>2]=34;T=+(d|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((U|0)>-1){G=q;N=U;s=L;H=J;while(1){E=!(G>=.5);o=N<<1|(E^1)&1;F=G+(E?G:G+-1.0);E=Vn(s|0,H|0,-1,-1)|0;D=I;if((o|0)>-1){G=F;N=o;s=E;H=D}else{X=F;Y=o;Z=E;_=D;break}}}else{X=q;Y=U;Z=L;_=J}H=((b|0)<0)<<31>>31;s=Xn(32,0,c|0,((c|0)<0)<<31>>31|0)|0;N=Vn(s|0,I|0,Z|0,_|0)|0;s=I;if((s|0)<(H|0)|(s|0)==(H|0)&N>>>0>>0)if((N|0)>0){$=N;m=59}else{aa=0;ba=84;m=61}else{$=b;m=59}if((m|0)==59)if(($|0)<53){aa=$;ba=84-$|0;m=61}else{ca=0.0;da=$;ea=+(d|0)}if((m|0)==61){G=+(d|0);ca=+rq(+bk(1.0,ba),G);da=aa;ea=G}N=(Y&1|0)==0&(X!=0.0&(da|0)<32);G=(N?0.0:X)*ea+(ca+ea*+((Y+(N&1)|0)>>>0))-ca;if(!(G!=0.0)){N=Vq()|0;f[N>>2]=34}T=+sq(G,Z)}while(0);return +T}function Gc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,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,Q=0,R=0,S=0;g=u;u=u+16|0;h=g+4|0;i=g;if(!(Gh(a,d)|0)){j=0;u=g;return j|0}d=a+84|0;k=f[d>>2]|0;l=a+88|0;m=f[l>>2]|0;if((m|0)!=(k|0))f[l>>2]=m+(~((m+-4-k|0)>>>2)<<2);f[d>>2]=0;f[l>>2]=0;f[a+92>>2]=0;if(k|0)Oq(k);k=a+72|0;l=f[k>>2]|0;d=a+76|0;if((f[d>>2]|0)!=(l|0))f[d>>2]=l;f[k>>2]=0;f[d>>2]=0;f[a+80>>2]=0;if(l|0)Oq(l);l=a+64|0;d=f[l>>2]|0;if((f[d+4>>2]|0)!=(f[d>>2]|0)){k=a+12|0;m=e+84|0;n=e+68|0;o=c+96|0;p=a+24|0;q=0;r=d;do{f[i>>2]=(q>>>0)/3|0;f[h>>2]=f[i>>2];d=_j(r,h)|0;r=f[l>>2]|0;do if(!d){s=f[(f[r+12>>2]|0)+(q<<2)>>2]|0;if((s|0)==-1){t=(f[a>>2]|0)+(q>>>5<<2)|0;f[t>>2]=f[t>>2]|1<<(q&31);t=q+1|0;v=((t>>>0)%3|0|0)==0?q+-2|0:t;if((v|0)==-1)w=-1;else w=f[(f[r>>2]|0)+(v<<2)>>2]|0;v=(f[k>>2]|0)+(w>>>5<<2)|0;f[v>>2]=f[v>>2]|1<<(w&31);v=(((q>>>0)%3|0|0)==0?2:-1)+q|0;if((v|0)==-1)x=-1;else x=f[(f[r>>2]|0)+(v<<2)>>2]|0;v=(f[k>>2]|0)+(x>>>5<<2)|0;f[v>>2]=f[v>>2]|1<<(x&31);break}if(s>>>0>=q>>>0){v=q+1|0;t=((v>>>0)%3|0|0)==0?q+-2|0:v;y=s+(((s>>>0)%3|0|0)==0?2:-1)|0;z=(t|0)==-1;if(!(b[m>>0]|0)){if(z)A=-1;else A=f[(f[o>>2]|0)+(((t|0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]|0;B=(y|0)==-1;if(B)C=-1;else C=f[(f[o>>2]|0)+(((y|0)/3|0)*12|0)+(((y|0)%3|0)<<2)>>2]|0;D=f[n>>2]|0;if((f[D+(A<<2)>>2]|0)==(f[D+(C<<2)>>2]|0)){E=t+1|0;if(z)F=-1;else F=((E>>>0)%3|0|0)==0?t+-2|0:E;do if(!B)if(!((y>>>0)%3|0)){G=y+2|0;break}else{G=y+-1|0;break}else G=-1;while(0);if((F|0)==-1)H=-1;else H=f[(f[o>>2]|0)+(((F|0)/3|0)*12|0)+(((F|0)%3|0)<<2)>>2]|0;if((G|0)==-1)I=-1;else I=f[(f[o>>2]|0)+(((G|0)/3|0)*12|0)+(((G|0)%3|0)<<2)>>2]|0;if((f[D+(H<<2)>>2]|0)==(f[D+(I<<2)>>2]|0))break}}else{if(z)J=-1;else J=f[(f[o>>2]|0)+(((t|0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]|0;B=(y|0)==-1;if(B)K=-1;else K=f[(f[o>>2]|0)+(((y|0)/3|0)*12|0)+(((y|0)%3|0)<<2)>>2]|0;if((J|0)==(K|0)){E=t+1|0;if(z)L=-1;else L=((E>>>0)%3|0|0)==0?t+-2|0:E;do if(!B)if(!((y>>>0)%3|0)){M=y+2|0;break}else{M=y+-1|0;break}else M=-1;while(0);if((L|0)==-1)N=-1;else N=f[(f[o>>2]|0)+(((L|0)/3|0)*12|0)+(((L|0)%3|0)<<2)>>2]|0;if((M|0)==-1)O=-1;else O=f[(f[o>>2]|0)+(((M|0)/3|0)*12|0)+(((M|0)%3|0)<<2)>>2]|0;if((N|0)==(O|0))break}}b[p>>0]=0;y=f[a>>2]|0;B=y+(q>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(q&31);B=y+(s>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(s&31);B=((v>>>0)%3|0|0)==0?q+-2|0:v;if((B|0)==-1)P=-1;else P=f[(f[r>>2]|0)+(B<<2)>>2]|0;B=(f[k>>2]|0)+(P>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(P&31);B=(((q>>>0)%3|0|0)==0?2:-1)+q|0;if((B|0)==-1)Q=-1;else Q=f[(f[r>>2]|0)+(B<<2)>>2]|0;B=(f[k>>2]|0)+(Q>>>5<<2)|0;f[B>>2]=f[B>>2]|1<<(Q&31);B=s+1|0;y=((B>>>0)%3|0|0)==0?s+-2|0:B;if((y|0)==-1)R=-1;else R=f[(f[r>>2]|0)+(y<<2)>>2]|0;y=(f[k>>2]|0)+(R>>>5<<2)|0;f[y>>2]=f[y>>2]|1<<(R&31);y=(((s>>>0)%3|0|0)==0?2:-1)+s|0;if((y|0)==-1)S=-1;else S=f[(f[r>>2]|0)+(y<<2)>>2]|0;y=(f[k>>2]|0)+(S>>>5<<2)|0;f[y>>2]=f[y>>2]|1<<(S&31)}}while(0);q=q+1|0}while(q>>>0<(f[r+4>>2]|0)-(f[r>>2]|0)>>2>>>0)}if((c|0)!=0&(e|0)!=0){Qc(a,c,e);j=1;u=g;return j|0}else{md(a,0,0);j=1;u=g;return j|0}return 0}function Hc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=u;u=u+32|0;e=d+12|0;g=d+8|0;h=d+4|0;i=d;j=a+8|0;a:do if(f[j>>2]|0?(k=f[a>>2]|0,l=a+4|0,f[a>>2]=l,f[(f[l>>2]|0)+8>>2]=0,f[l>>2]=0,f[j>>2]=0,m=f[k+4>>2]|0,n=(m|0)==0?k:m,n|0):0){m=a+4|0;k=n;n=f[b>>2]|0;while(1){if((n|0)==(f[c>>2]|0))break;o=k+16|0;f[o>>2]=f[n+16>>2];if((k|0)!=(n|0)){f[h>>2]=f[n+20>>2];f[i>>2]=n+24;f[g>>2]=f[h>>2];f[e>>2]=f[i>>2];Oc(k+20|0,g,e)}p=k+8|0;q=f[p>>2]|0;do if(q){r=f[q>>2]|0;if((r|0)==(k|0)){f[q>>2]=0;s=f[q+4>>2]|0;if(!s){t=q;break}else v=s;while(1){s=f[v>>2]|0;if(s|0){v=s;continue}s=f[v+4>>2]|0;if(!s)break;else v=s}t=v;break}else{f[q+4>>2]=0;if(!r){t=q;break}else w=r;while(1){s=f[w>>2]|0;if(s|0){w=s;continue}s=f[w+4>>2]|0;if(!s)break;else w=s}t=w;break}}else t=0;while(0);q=f[l>>2]|0;do if(q){r=f[o>>2]|0;s=q;while(1){if((r|0)<(f[s+16>>2]|0)){x=f[s>>2]|0;if(!x){y=22;break}else z=x}else{A=s+4|0;x=f[A>>2]|0;if(!x){y=25;break}else z=x}s=z}if((y|0)==22){y=0;B=s;C=s;break}else if((y|0)==25){y=0;B=s;C=A;break}}else{B=l;C=l}while(0);f[k>>2]=0;f[k+4>>2]=0;f[p>>2]=B;f[C>>2]=k;q=f[f[a>>2]>>2]|0;if(!q)D=k;else{f[a>>2]=q;D=f[C>>2]|0}Oe(f[m>>2]|0,D);f[j>>2]=(f[j>>2]|0)+1;q=f[n+4>>2]|0;if(!q){o=n+8|0;r=f[o>>2]|0;if((f[r>>2]|0)==(n|0))E=r;else{r=o;do{o=f[r>>2]|0;r=o+8|0;x=f[r>>2]|0}while((f[x>>2]|0)!=(o|0));E=x}}else{r=q;while(1){p=f[r>>2]|0;if(!p)break;else r=p}E=r}f[b>>2]=E;if(!t)break a;else{k=t;n=E}}n=f[k+8>>2]|0;if(!n)F=k;else{m=n;while(1){n=f[m+8>>2]|0;if(!n)break;else m=n}F=m}Oj(a,F)}while(0);F=f[b>>2]|0;E=f[c>>2]|0;if((F|0)==(E|0)){u=d;return}c=a+4|0;t=a+4|0;D=F;while(1){Kg(e,a,D+16|0);F=f[c>>2]|0;do if(F){C=f[e>>2]|0;B=f[C+16>>2]|0;A=F;while(1){if((B|0)<(f[A+16>>2]|0)){z=f[A>>2]|0;if(!z){y=43;break}else G=z}else{H=A+4|0;z=f[H>>2]|0;if(!z){y=46;break}else G=z}A=G}if((y|0)==43){y=0;I=A;J=A;K=C;break}else if((y|0)==46){y=0;I=A;J=H;K=C;break}}else{I=c;J=c;K=f[e>>2]|0}while(0);f[K>>2]=0;f[K+4>>2]=0;f[K+8>>2]=I;f[J>>2]=K;F=f[f[a>>2]>>2]|0;if(!F)L=K;else{f[a>>2]=F;L=f[J>>2]|0}Oe(f[t>>2]|0,L);f[j>>2]=(f[j>>2]|0)+1;F=f[D+4>>2]|0;if(!F){m=D+8|0;B=f[m>>2]|0;if((f[B>>2]|0)==(D|0))M=B;else{B=m;do{m=f[B>>2]|0;B=m+8|0;r=f[B>>2]|0}while((f[r>>2]|0)!=(m|0));M=r}}else{B=F;while(1){r=f[B>>2]|0;if(!r)break;else B=r}M=B}f[b>>2]=M;if((M|0)==(E|0))break;else D=M}u=d;return}function Ic(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;g=u;u=u+32|0;d=g+16|0;h=g+8|0;i=g;j=f[a+28>>2]|0;k=f[a+32>>2]|0;l=e>>>0>1073741823?-1:e<<2;m=Lq(l)|0;sj(m|0,0,l|0)|0;n=Lq(l)|0;sj(n|0,0,l|0)|0;l=a+36|0;o=f[l>>2]|0;p=f[o+4>>2]|0;q=f[o>>2]|0;r=p-q|0;a:do if((r|0)>4){s=r>>2;t=(e|0)>0;v=a+8|0;w=h+4|0;x=i+4|0;y=d+4|0;z=m+4|0;A=h+4|0;B=i+4|0;C=d+4|0;D=j+12|0;E=e<<2;F=s+-1|0;if(p-q>>2>>>0>F>>>0){G=s;H=F;I=q}else{J=o;aq(J)}while(1){F=f[I+(H<<2)>>2]|0;if(t)sj(m|0,0,E|0)|0;if((F|0)!=-1){s=f[D>>2]|0;K=0;L=F;while(1){M=f[s+(L<<2)>>2]|0;if((M|0)!=-1){N=f[j>>2]|0;O=f[k>>2]|0;P=f[O+(f[N+(M<<2)>>2]<<2)>>2]|0;Q=M+1|0;R=((Q>>>0)%3|0|0)==0?M+-2|0:Q;if((R|0)==-1)S=-1;else S=f[N+(R<<2)>>2]|0;R=f[O+(S<<2)>>2]|0;Q=(((M>>>0)%3|0|0)==0?2:-1)+M|0;if((Q|0)==-1)T=-1;else T=f[N+(Q<<2)>>2]|0;Q=f[O+(T<<2)>>2]|0;if((P|0)<(H|0)&(R|0)<(H|0)&(Q|0)<(H|0)){O=X(P,e)|0;P=X(R,e)|0;R=X(Q,e)|0;if(t){Q=0;do{f[n+(Q<<2)>>2]=(f[b+(Q+R<<2)>>2]|0)+(f[b+(Q+P<<2)>>2]|0)-(f[b+(Q+O<<2)>>2]|0);Q=Q+1|0}while((Q|0)!=(e|0));if(t){Q=0;do{O=m+(Q<<2)|0;f[O>>2]=(f[O>>2]|0)+(f[n+(Q<<2)>>2]|0);Q=Q+1|0}while((Q|0)!=(e|0))}}U=K+1|0}else U=K}else U=K;Q=(((L>>>0)%3|0|0)==0?2:-1)+L|0;do if((Q|0)!=-1?(O=f[s+(Q<<2)>>2]|0,(O|0)!=-1):0)if(!((O>>>0)%3|0)){V=O+2|0;break}else{V=O+-1|0;break}else V=-1;while(0);L=(V|0)==(F|0)?-1:V;if((L|0)==-1)break;else K=U}K=X(H,e)|0;if(!U){W=K;Y=30}else{if(t){L=0;do{F=m+(L<<2)|0;f[F>>2]=(f[F>>2]|0)/(U|0)|0;L=L+1|0}while((L|0)!=(e|0))}L=b+(K<<2)|0;F=c+(K<<2)|0;s=f[L+4>>2]|0;Q=f[m>>2]|0;O=f[z>>2]|0;f[h>>2]=f[L>>2];f[A>>2]=s;f[i>>2]=Q;f[B>>2]=O;Od(d,v,h,i);f[F>>2]=f[d>>2];f[F+4>>2]=f[C>>2]}}else{W=X(H,e)|0;Y=30}if((Y|0)==30){Y=0;F=b+(W<<2)|0;O=b+((X(G+-2|0,e)|0)<<2)|0;Q=c+(W<<2)|0;s=f[F+4>>2]|0;L=f[O>>2]|0;P=f[O+4>>2]|0;f[h>>2]=f[F>>2];f[w>>2]=s;f[i>>2]=L;f[x>>2]=P;Od(d,v,h,i);f[Q>>2]=f[d>>2];f[Q+4>>2]=f[y>>2]}if((G|0)<=2)break a;Q=f[l>>2]|0;I=f[Q>>2]|0;P=H+-1|0;if((f[Q+4>>2]|0)-I>>2>>>0<=P>>>0){J=Q;break}else{Q=H;H=P;G=Q}}aq(J)}while(0);if((e|0)<=0){Z=a+8|0;_=b+4|0;$=f[b>>2]|0;aa=f[_>>2]|0;ba=m+4|0;ca=f[m>>2]|0;da=f[ba>>2]|0;f[h>>2]=$;ea=h+4|0;f[ea>>2]=aa;f[i>>2]=ca;fa=i+4|0;f[fa>>2]=da;Od(d,Z,h,i);ga=f[d>>2]|0;f[c>>2]=ga;ha=d+4|0;ia=f[ha>>2]|0;ja=c+4|0;f[ja>>2]=ia;Mq(n);Mq(m);u=g;return 1}sj(m|0,0,e<<2|0)|0;Z=a+8|0;_=b+4|0;$=f[b>>2]|0;aa=f[_>>2]|0;ba=m+4|0;ca=f[m>>2]|0;da=f[ba>>2]|0;f[h>>2]=$;ea=h+4|0;f[ea>>2]=aa;f[i>>2]=ca;fa=i+4|0;f[fa>>2]=da;Od(d,Z,h,i);ga=f[d>>2]|0;f[c>>2]=ga;ha=d+4|0;ia=f[ha>>2]|0;ja=c+4|0;f[ja>>2]=ia;Mq(n);Mq(m);u=g;return 1}function Jc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;g=a+8|0;Mh(g,b,d,e);d=e>>>0>1073741823?-1:e<<2;h=Lq(d)|0;sj(h|0,0,d|0)|0;d=f[a+48>>2]|0;i=f[a+56>>2]|0;j=f[i>>2]|0;k=(f[i+4>>2]|0)-j|0;l=k>>2;a:do if((k|0)>4){m=f[a+52>>2]|0;n=a+16|0;o=a+32|0;p=a+12|0;q=a+28|0;r=a+20|0;s=a+24|0;t=d+12|0;u=(e|0)>0;v=j;w=l;while(1){x=w;w=w+-1|0;if(l>>>0<=w>>>0)break;y=f[v+(w<<2)>>2]|0;z=X(w,e)|0;if((y|0)!=-1?(A=f[(f[t>>2]|0)+(y<<2)>>2]|0,(A|0)!=-1):0){y=f[d>>2]|0;B=f[m>>2]|0;C=f[B+(f[y+(A<<2)>>2]<<2)>>2]|0;D=A+1|0;E=((D>>>0)%3|0|0)==0?A+-2|0:D;if((E|0)==-1)F=-1;else F=f[y+(E<<2)>>2]|0;E=f[B+(F<<2)>>2]|0;D=(((A>>>0)%3|0|0)==0?2:-1)+A|0;if((D|0)==-1)G=-1;else G=f[y+(D<<2)>>2]|0;D=f[B+(G<<2)>>2]|0;if((C|0)<(w|0)&(E|0)<(w|0)&(D|0)<(w|0)){B=X(C,e)|0;C=X(E,e)|0;E=X(D,e)|0;if(u){D=0;do{f[h+(D<<2)>>2]=(f[b+(D+E<<2)>>2]|0)+(f[b+(D+C<<2)>>2]|0)-(f[b+(D+B<<2)>>2]|0);D=D+1|0}while((D|0)!=(e|0))}D=b+(z<<2)|0;B=c+(z<<2)|0;C=f[g>>2]|0;if((C|0)>0){E=0;y=h;A=C;while(1){if((A|0)>0){C=0;do{H=f[y+(C<<2)>>2]|0;I=f[n>>2]|0;if((H|0)>(I|0)){J=f[o>>2]|0;f[J+(C<<2)>>2]=I;K=J}else{J=f[p>>2]|0;I=f[o>>2]|0;f[I+(C<<2)>>2]=(H|0)<(J|0)?J:H;K=I}C=C+1|0}while((C|0)<(f[g>>2]|0));L=K}else L=f[o>>2]|0;C=(f[D+(E<<2)>>2]|0)-(f[L+(E<<2)>>2]|0)|0;I=B+(E<<2)|0;f[I>>2]=C;if((C|0)>=(f[q>>2]|0)){if((C|0)>(f[s>>2]|0)){M=C-(f[r>>2]|0)|0;N=42}}else{M=(f[r>>2]|0)+C|0;N=42}if((N|0)==42){N=0;f[I>>2]=M}E=E+1|0;A=f[g>>2]|0;if((E|0)>=(A|0))break;else y=L}}}else N=16}else N=16;if((N|0)==16?(N=0,y=b+(z<<2)|0,A=c+(z<<2)|0,E=f[g>>2]|0,(E|0)>0):0){B=0;D=b+((X(x+-2|0,e)|0)<<2)|0;I=E;while(1){if((I|0)>0){E=0;do{C=f[D+(E<<2)>>2]|0;H=f[n>>2]|0;if((C|0)>(H|0)){J=f[o>>2]|0;f[J+(E<<2)>>2]=H;O=J}else{J=f[p>>2]|0;H=f[o>>2]|0;f[H+(E<<2)>>2]=(C|0)<(J|0)?J:C;O=H}E=E+1|0}while((E|0)<(f[g>>2]|0));P=O}else P=f[o>>2]|0;E=(f[y+(B<<2)>>2]|0)-(f[P+(B<<2)>>2]|0)|0;H=A+(B<<2)|0;f[H>>2]=E;if((E|0)>=(f[q>>2]|0)){if((E|0)>(f[s>>2]|0)){Q=E-(f[r>>2]|0)|0;N=29}}else{Q=(f[r>>2]|0)+E|0;N=29}if((N|0)==29){N=0;f[H>>2]=Q}B=B+1|0;I=f[g>>2]|0;if((B|0)>=(I|0))break;else D=P}}if((x|0)<=2)break a}aq(i)}while(0);if((e|0)>0)sj(h|0,0,e<<2|0)|0;e=f[g>>2]|0;if((e|0)<=0){Mq(h);return 1}i=a+16|0;P=a+32|0;Q=a+12|0;O=a+28|0;L=a+20|0;M=a+24|0;a=0;K=h;G=e;while(1){if((G|0)>0){e=0;do{F=f[K+(e<<2)>>2]|0;d=f[i>>2]|0;if((F|0)>(d|0)){l=f[P>>2]|0;f[l+(e<<2)>>2]=d;R=l}else{l=f[Q>>2]|0;d=f[P>>2]|0;f[d+(e<<2)>>2]=(F|0)<(l|0)?l:F;R=d}e=e+1|0}while((e|0)<(f[g>>2]|0));S=R}else S=f[P>>2]|0;e=(f[b+(a<<2)>>2]|0)-(f[S+(a<<2)>>2]|0)|0;d=c+(a<<2)|0;f[d>>2]=e;if((e|0)>=(f[O>>2]|0)){if((e|0)>(f[M>>2]|0)){T=e-(f[L>>2]|0)|0;N=56}}else{T=(f[L>>2]|0)+e|0;N=56}if((N|0)==56){N=0;f[d>>2]=T}a=a+1|0;G=f[g>>2]|0;if((a|0)>=(G|0))break;else K=S}Mq(h);return 1}function Kc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;g=u;u=u+32|0;d=g+16|0;h=g+8|0;i=g;j=f[a+28>>2]|0;k=f[a+32>>2]|0;l=e>>>0>1073741823?-1:e<<2;m=Lq(l)|0;sj(m|0,0,l|0)|0;n=Lq(l)|0;sj(n|0,0,l|0)|0;l=a+36|0;o=f[l>>2]|0;p=f[o+4>>2]|0;q=f[o>>2]|0;r=p-q|0;a:do if((r|0)>4){s=r>>2;t=(e|0)>0;v=a+8|0;w=h+4|0;x=i+4|0;y=d+4|0;z=m+4|0;A=h+4|0;B=i+4|0;C=d+4|0;D=j+64|0;E=j+28|0;F=e<<2;G=s+-1|0;if(p-q>>2>>>0>G>>>0){H=s;I=G;J=q}else{K=o;aq(K)}while(1){G=f[J+(I<<2)>>2]|0;if(t)sj(m|0,0,F|0)|0;if((G|0)!=-1){s=f[j>>2]|0;L=0;M=G;while(1){if(((f[s+(M>>>5<<2)>>2]&1<<(M&31)|0)==0?(N=f[(f[(f[D>>2]|0)+12>>2]|0)+(M<<2)>>2]|0,(N|0)!=-1):0)?(O=f[E>>2]|0,P=f[k>>2]|0,Q=f[P+(f[O+(N<<2)>>2]<<2)>>2]|0,R=N+1|0,S=f[P+(f[O+((((R>>>0)%3|0|0)==0?N+-2|0:R)<<2)>>2]<<2)>>2]|0,R=f[P+(f[O+((((N>>>0)%3|0|0)==0?2:-1)+N<<2)>>2]<<2)>>2]|0,(Q|0)<(I|0)&(S|0)<(I|0)&(R|0)<(I|0)):0){N=X(Q,e)|0;Q=X(S,e)|0;S=X(R,e)|0;if(t){R=0;do{f[n+(R<<2)>>2]=(f[b+(R+S<<2)>>2]|0)+(f[b+(R+Q<<2)>>2]|0)-(f[b+(R+N<<2)>>2]|0);R=R+1|0}while((R|0)!=(e|0));if(t){R=0;do{N=m+(R<<2)|0;f[N>>2]=(f[N>>2]|0)+(f[n+(R<<2)>>2]|0);R=R+1|0}while((R|0)!=(e|0))}}T=L+1|0}else T=L;R=(((M>>>0)%3|0|0)==0?2:-1)+M|0;do if(((R|0)!=-1?(f[s+(R>>>5<<2)>>2]&1<<(R&31)|0)==0:0)?(N=f[(f[(f[D>>2]|0)+12>>2]|0)+(R<<2)>>2]|0,(N|0)!=-1):0)if(!((N>>>0)%3|0)){U=N+2|0;break}else{U=N+-1|0;break}else U=-1;while(0);M=(U|0)==(G|0)?-1:U;if((M|0)==-1)break;else L=T}L=X(I,e)|0;if(!T){V=L;W=28}else{if(t){M=0;do{G=m+(M<<2)|0;f[G>>2]=(f[G>>2]|0)/(T|0)|0;M=M+1|0}while((M|0)!=(e|0))}M=b+(L<<2)|0;G=c+(L<<2)|0;s=f[M+4>>2]|0;R=f[m>>2]|0;N=f[z>>2]|0;f[h>>2]=f[M>>2];f[A>>2]=s;f[i>>2]=R;f[B>>2]=N;Od(d,v,h,i);f[G>>2]=f[d>>2];f[G+4>>2]=f[C>>2]}}else{V=X(I,e)|0;W=28}if((W|0)==28){W=0;G=b+(V<<2)|0;N=b+((X(H+-2|0,e)|0)<<2)|0;R=c+(V<<2)|0;s=f[G+4>>2]|0;M=f[N>>2]|0;Q=f[N+4>>2]|0;f[h>>2]=f[G>>2];f[w>>2]=s;f[i>>2]=M;f[x>>2]=Q;Od(d,v,h,i);f[R>>2]=f[d>>2];f[R+4>>2]=f[y>>2]}if((H|0)<=2)break a;R=f[l>>2]|0;J=f[R>>2]|0;Q=I+-1|0;if((f[R+4>>2]|0)-J>>2>>>0<=Q>>>0){K=R;break}else{R=I;I=Q;H=R}}aq(K)}while(0);if((e|0)<=0){Y=a+8|0;Z=b+4|0;_=f[b>>2]|0;$=f[Z>>2]|0;aa=m+4|0;ba=f[m>>2]|0;ca=f[aa>>2]|0;f[h>>2]=_;da=h+4|0;f[da>>2]=$;f[i>>2]=ba;ea=i+4|0;f[ea>>2]=ca;Od(d,Y,h,i);fa=f[d>>2]|0;f[c>>2]=fa;ga=d+4|0;ha=f[ga>>2]|0;ia=c+4|0;f[ia>>2]=ha;Mq(n);Mq(m);u=g;return 1}sj(m|0,0,e<<2|0)|0;Y=a+8|0;Z=b+4|0;_=f[b>>2]|0;$=f[Z>>2]|0;aa=m+4|0;ba=f[m>>2]|0;ca=f[aa>>2]|0;f[h>>2]=_;da=h+4|0;f[da>>2]=$;f[i>>2]=ba;ea=i+4|0;f[ea>>2]=ca;Od(d,Y,h,i);fa=f[d>>2]|0;f[c>>2]=fa;ga=d+4|0;ha=f[ga>>2]|0;ia=c+4|0;f[ia>>2]=ha;Mq(n);Mq(m);u=g;return 1}function Lc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;g=a+8|0;Mh(g,b,d,e);d=e>>>0>1073741823?-1:e<<2;h=Lq(d)|0;sj(h|0,0,d|0)|0;d=f[a+48>>2]|0;i=f[a+56>>2]|0;j=f[i>>2]|0;k=(f[i+4>>2]|0)-j|0;l=k>>2;a:do if((k|0)>4){m=f[a+52>>2]|0;n=a+16|0;o=a+32|0;p=a+12|0;q=a+28|0;r=a+20|0;s=a+24|0;t=d+64|0;u=d+28|0;v=(e|0)>0;w=j;x=l;while(1){y=x;x=x+-1|0;if(l>>>0<=x>>>0)break;z=f[w+(x<<2)>>2]|0;A=X(x,e)|0;if((((z|0)!=-1?(f[(f[d>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)==0:0)?(B=f[(f[(f[t>>2]|0)+12>>2]|0)+(z<<2)>>2]|0,(B|0)!=-1):0)?(z=f[u>>2]|0,C=f[m>>2]|0,D=f[C+(f[z+(B<<2)>>2]<<2)>>2]|0,E=B+1|0,F=f[C+(f[z+((((E>>>0)%3|0|0)==0?B+-2|0:E)<<2)>>2]<<2)>>2]|0,E=f[C+(f[z+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(D|0)<(x|0)&(F|0)<(x|0)&(E|0)<(x|0)):0){B=X(D,e)|0;D=X(F,e)|0;F=X(E,e)|0;if(v){E=0;do{f[h+(E<<2)>>2]=(f[b+(E+F<<2)>>2]|0)+(f[b+(E+D<<2)>>2]|0)-(f[b+(E+B<<2)>>2]|0);E=E+1|0}while((E|0)!=(e|0))}E=b+(A<<2)|0;B=c+(A<<2)|0;D=f[g>>2]|0;if((D|0)>0){F=0;z=h;C=D;while(1){if((C|0)>0){D=0;do{G=f[z+(D<<2)>>2]|0;H=f[n>>2]|0;if((G|0)>(H|0)){I=f[o>>2]|0;f[I+(D<<2)>>2]=H;J=I}else{I=f[p>>2]|0;H=f[o>>2]|0;f[H+(D<<2)>>2]=(G|0)<(I|0)?I:G;J=H}D=D+1|0}while((D|0)<(f[g>>2]|0));K=J}else K=f[o>>2]|0;D=(f[E+(F<<2)>>2]|0)-(f[K+(F<<2)>>2]|0)|0;H=B+(F<<2)|0;f[H>>2]=D;if((D|0)>=(f[q>>2]|0)){if((D|0)>(f[s>>2]|0)){L=D-(f[r>>2]|0)|0;M=39}}else{L=(f[r>>2]|0)+D|0;M=39}if((M|0)==39){M=0;f[H>>2]=L}F=F+1|0;C=f[g>>2]|0;if((F|0)>=(C|0))break;else z=K}}}else M=13;if((M|0)==13?(M=0,z=b+(A<<2)|0,C=c+(A<<2)|0,F=f[g>>2]|0,(F|0)>0):0){B=0;E=b+((X(y+-2|0,e)|0)<<2)|0;H=F;while(1){if((H|0)>0){F=0;do{D=f[E+(F<<2)>>2]|0;G=f[n>>2]|0;if((D|0)>(G|0)){I=f[o>>2]|0;f[I+(F<<2)>>2]=G;N=I}else{I=f[p>>2]|0;G=f[o>>2]|0;f[G+(F<<2)>>2]=(D|0)<(I|0)?I:D;N=G}F=F+1|0}while((F|0)<(f[g>>2]|0));O=N}else O=f[o>>2]|0;F=(f[z+(B<<2)>>2]|0)-(f[O+(B<<2)>>2]|0)|0;G=C+(B<<2)|0;f[G>>2]=F;if((F|0)>=(f[q>>2]|0)){if((F|0)>(f[s>>2]|0)){P=F-(f[r>>2]|0)|0;M=26}}else{P=(f[r>>2]|0)+F|0;M=26}if((M|0)==26){M=0;f[G>>2]=P}B=B+1|0;H=f[g>>2]|0;if((B|0)>=(H|0))break;else E=O}}if((y|0)<=2)break a}aq(i)}while(0);if((e|0)>0)sj(h|0,0,e<<2|0)|0;e=f[g>>2]|0;if((e|0)<=0){Mq(h);return 1}i=a+16|0;O=a+32|0;P=a+12|0;N=a+28|0;K=a+20|0;L=a+24|0;a=0;J=h;d=e;while(1){if((d|0)>0){e=0;do{l=f[J+(e<<2)>>2]|0;j=f[i>>2]|0;if((l|0)>(j|0)){k=f[O>>2]|0;f[k+(e<<2)>>2]=j;Q=k}else{k=f[P>>2]|0;j=f[O>>2]|0;f[j+(e<<2)>>2]=(l|0)<(k|0)?k:l;Q=j}e=e+1|0}while((e|0)<(f[g>>2]|0));R=Q}else R=f[O>>2]|0;e=(f[b+(a<<2)>>2]|0)-(f[R+(a<<2)>>2]|0)|0;j=c+(a<<2)|0;f[j>>2]=e;if((e|0)>=(f[N>>2]|0)){if((e|0)>(f[L>>2]|0)){S=e-(f[K>>2]|0)|0;M=53}}else{S=(f[K>>2]|0)+e|0;M=53}if((M|0)==53){M=0;f[j>>2]=S}a=a+1|0;d=f[g>>2]|0;if((a|0)>=(d|0))break;else J=R}Mq(h);return 1}function Mc(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,J=0;h=u;u=u+48|0;i=h+28|0;j=h+24|0;k=h;l=h+12|0;m=h+40|0;if((c|0)<0){n=0;u=h;return n|0}if(!c){n=1;u=h;return n|0}o=(d|0)>1;p=o?d:1;f[k>>2]=0;d=k+4|0;f[d>>2]=0;f[k+8>>2]=0;gk(k,c);q=k+8|0;if(o){o=0;r=0;while(1){s=1;t=f[a+(r<<2)>>2]|0;do{v=f[a+(s+r<<2)>>2]|0;t=t>>>0>>0?v:t;s=s+1|0}while((s|0)!=(p|0));s=(_(t|0)|0)^31;v=t>>>0>o>>>0?t:o;w=(t|0)==0?1:s+1|0;f[i>>2]=w;s=f[d>>2]|0;if(s>>>0<(f[q>>2]|0)>>>0){f[s>>2]=w;f[d>>2]=s+4}else Ri(k,i);r=r+p|0;if((r|0)>=(c|0)){x=v;break}else o=v}}else{o=0;r=0;while(1){v=f[a+(o<<2)>>2]|0;s=(_(v|0)|0)^31;w=v>>>0>r>>>0?v:r;y=(v|0)==0?1:s+1|0;f[i>>2]=y;s=f[d>>2]|0;if(s>>>0<(f[q>>2]|0)>>>0){f[s>>2]=y;f[d>>2]=s+4}else Ri(k,i);o=o+p|0;if((o|0)>=(c|0)){x=w;break}else r=w}}f[l>>2]=0;r=l+4|0;f[r>>2]=0;f[l+8>>2]=0;o=f[k>>2]|0;q=(f[d>>2]|0)-o|0;w=q>>2;if(w){if(w>>>0>1073741823)aq(l);s=ln(q)|0;f[r>>2]=s;f[l>>2]=s;f[l+8>>2]=s+(w<<2);w=s;if((q|0)>0){y=s+(q>>>2<<2)|0;kh(s|0,o|0,q|0)|0;f[r>>2]=y;q=y-w>>2;if((y|0)==(s|0)){z=q;A=s;B=0;C=0}else{y=0;o=0;v=0;while(1){D=Vn(o|0,v|0,f[s+(y<<2)>>2]|0,0)|0;E=I;y=y+1|0;if(y>>>0>=q>>>0){z=q;A=s;B=D;C=E;break}else{o=D;v=E}}}}else{F=w;G=18}}else{F=0;G=18}if((G|0)==18){z=0;A=F;B=0;C=0}F=Jg(A,z,32,i)|0;z=I;A=f[i>>2]<<3;w=Tn(A|0,((A|0)<0)<<31>>31|0,1)|0;A=I;v=un(B|0,C|0,p|0,0)|0;C=Vn(F|0,z|0,v|0,I|0)|0;v=Vn(C|0,I|0,w|0,A|0)|0;A=I;w=f[l>>2]|0;if(w|0){l=f[r>>2]|0;if((l|0)!=(w|0))f[r>>2]=l+(~((l+-4-w|0)>>>2)<<2);Oq(w)}w=Jg(a,c,x,i)|0;l=f[i>>2]|0;r=((x-l|0)/64|0)+l<<3;C=l<<3;z=Vn(w|0,I|0,C|0,((C|0)<0)<<31>>31|0)|0;C=Vn(z|0,I|0,r|0,((r|0)<0)<<31>>31|0)|0;r=I;z=(_((x>>>0>1?x:1)|0)|0)^30;if(e){f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;w=ln(32)|0;f[i>>2]=w;f[i+8>>2]=-2147483616;f[i+4>>2]=22;F=w;B=15964;o=F+22|0;do{b[F>>0]=b[B>>0]|0;F=F+1|0;B=B+1|0}while((F|0)<(o|0));b[w+22>>0]=0;w=(Jh(e,i)|0)==0;if((b[i+11>>0]|0)<0)Oq(f[i>>2]|0);if(!w){f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;w=ln(32)|0;f[i>>2]=w;f[i+8>>2]=-2147483616;f[i+4>>2]=22;F=w;B=15964;o=F+22|0;do{b[F>>0]=b[B>>0]|0;F=F+1|0;B=B+1|0}while((F|0)<(o|0));b[w+22>>0]=0;w=Mk(e,i)|0;if((b[i+11>>0]|0)<0)Oq(f[i>>2]|0);H=w}else G=32}else G=32;if((G|0)==32)H=z>>>0<18&((A|0)>(r|0)|(A|0)==(r|0)&v>>>0>=C>>>0)&1;b[m>>0]=H;C=g+16|0;v=f[C+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[C>>2]|0)>>>0>0)){f[j>>2]=f[g+4>>2];f[i>>2]=f[j>>2];Me(g,i,m,m+1|0)|0}switch(H|0){case 0:{J=td(a,c,p,k,g)|0;break}case 1:{J=Tc(a,c,x,l,e,g)|0;break}default:J=0}g=f[k>>2]|0;if(g|0){k=f[d>>2]|0;if((k|0)!=(g|0))f[d>>2]=k+(~((k+-4-g|0)>>>2)<<2);Oq(g)}n=J;u=h;return n|0}function Nc(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;if((b|0)<0)return;c=a+12|0;d=f[c>>2]|0;e=f[a+8>>2]|0;g=e;h=d;if(d-e>>2>>>0<=b>>>0)return;e=g+(b<<2)|0;d=f[(f[e>>2]|0)+56>>2]|0;i=f[(f[g+(b<<2)>>2]|0)+60>>2]|0;g=e+4|0;if((g|0)!=(h|0)){j=g;g=e;do{k=f[j>>2]|0;f[j>>2]=0;l=f[g>>2]|0;f[g>>2]=k;if(l|0){k=l+88|0;m=f[k>>2]|0;f[k>>2]=0;if(m|0){k=f[m+8>>2]|0;if(k|0){n=m+12|0;if((f[n>>2]|0)!=(k|0))f[n>>2]=k;Oq(k)}Oq(m)}m=f[l+68>>2]|0;if(m|0){k=l+72|0;n=f[k>>2]|0;if((n|0)!=(m|0))f[k>>2]=n+(~((n+-4-m|0)>>>2)<<2);Oq(m)}m=l+64|0;n=f[m>>2]|0;f[m>>2]=0;if(n|0){m=f[n>>2]|0;if(m|0){k=n+4|0;if((f[k>>2]|0)!=(m|0))f[k>>2]=m;Oq(m)}Oq(n)}Oq(l)}j=j+4|0;g=g+4|0}while((j|0)!=(h|0));j=f[c>>2]|0;if((j|0)!=(g|0)){o=g;p=j;q=24}}else{o=e;p=h;q=24}if((q|0)==24){q=p;do{p=q+-4|0;f[c>>2]=p;h=f[p>>2]|0;f[p>>2]=0;if(h|0){p=h+88|0;e=f[p>>2]|0;f[p>>2]=0;if(e|0){p=f[e+8>>2]|0;if(p|0){j=e+12|0;if((f[j>>2]|0)!=(p|0))f[j>>2]=p;Oq(p)}Oq(e)}e=f[h+68>>2]|0;if(e|0){p=h+72|0;j=f[p>>2]|0;if((j|0)!=(e|0))f[p>>2]=j+(~((j+-4-e|0)>>>2)<<2);Oq(e)}e=h+64|0;j=f[e>>2]|0;f[e>>2]=0;if(j|0){e=f[j>>2]|0;if(e|0){p=j+4|0;if((f[p>>2]|0)!=(e|0))f[p>>2]=e;Oq(e)}Oq(j)}Oq(h)}q=f[c>>2]|0}while((q|0)!=(o|0))}o=f[a+4>>2]|0;a:do if(o|0){q=o+44|0;c=f[q>>2]|0;h=f[o+40>>2]|0;while(1){if((h|0)==(c|0))break a;r=h+4|0;if((f[(f[h>>2]|0)+40>>2]|0)==(i|0))break;else h=r}if((r|0)!=(c|0)){j=r;e=h;do{p=f[j>>2]|0;f[j>>2]=0;g=f[e>>2]|0;f[e>>2]=p;if(g|0){bj(g);Oq(g)}j=j+4|0;e=e+4|0}while((j|0)!=(c|0));j=f[q>>2]|0;if((j|0)==(e|0))break;else{s=e;t=j}}else{s=h;t=c}j=t;do{g=j+-4|0;f[q>>2]=g;p=f[g>>2]|0;f[g>>2]=0;if(p|0){bj(p);Oq(p)}j=f[q>>2]|0}while((j|0)!=(s|0))}while(0);b:do if((d|0)<5){s=f[a+20+(d*12|0)>>2]|0;t=a+20+(d*12|0)+4|0;r=f[t>>2]|0;i=r;c:do if((s|0)==(r|0))u=s;else{o=s;while(1){if((f[o>>2]|0)==(b|0)){u=o;break c}o=o+4|0;if((o|0)==(r|0))break b}}while(0);if((u|0)!=(r|0)){s=u+4|0;o=i-s|0;j=o>>2;if(!j)v=r;else{im(u|0,s|0,o|0)|0;v=f[t>>2]|0}o=u+(j<<2)|0;if((v|0)!=(o|0))f[t>>2]=v+(~((v+-4-o|0)>>>2)<<2)}}while(0);v=f[a+24>>2]|0;u=f[a+20>>2]|0;d=u;if((v|0)!=(u|0)){o=v-u>>2;u=0;do{v=d+(u<<2)|0;j=f[v>>2]|0;if((j|0)>(b|0))f[v>>2]=j+-1;u=u+1|0}while(u>>>0>>0)}o=f[a+36>>2]|0;u=f[a+32>>2]|0;d=u;if((o|0)!=(u|0)){j=o-u>>2;u=0;do{o=d+(u<<2)|0;v=f[o>>2]|0;if((v|0)>(b|0))f[o>>2]=v+-1;u=u+1|0}while(u>>>0>>0)}j=f[a+48>>2]|0;u=f[a+44>>2]|0;d=u;if((j|0)!=(u|0)){v=j-u>>2;u=0;do{j=d+(u<<2)|0;o=f[j>>2]|0;if((o|0)>(b|0))f[j>>2]=o+-1;u=u+1|0}while(u>>>0>>0)}v=f[a+60>>2]|0;u=f[a+56>>2]|0;d=u;if((v|0)!=(u|0)){o=v-u>>2;u=0;do{v=d+(u<<2)|0;j=f[v>>2]|0;if((j|0)>(b|0))f[v>>2]=j+-1;u=u+1|0}while(u>>>0>>0)}o=f[a+72>>2]|0;u=f[a+68>>2]|0;a=u;if((o|0)==(u|0))return;d=o-u>>2;u=0;do{o=a+(u<<2)|0;j=f[o>>2]|0;if((j|0)>(b|0))f[o>>2]=j+-1;u=u+1|0}while(u>>>0>>0);return}function Oc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;e=a+8|0;a:do if(f[e>>2]|0?(g=f[a>>2]|0,h=a+4|0,f[a>>2]=h,f[(f[h>>2]|0)+8>>2]=0,f[h>>2]=0,f[e>>2]=0,i=f[g+4>>2]|0,j=(i|0)==0?g:i,j|0):0){i=a+4|0;g=j;j=f[c>>2]|0;while(1){if((j|0)==(f[d>>2]|0))break;k=g+16|0;am(k,j+16|0)|0;am(g+28|0,j+28|0)|0;l=g+8|0;m=f[l>>2]|0;do if(m){n=f[m>>2]|0;if((n|0)==(g|0)){f[m>>2]=0;o=f[m+4>>2]|0;if(!o){p=m;break}else q=o;while(1){o=f[q>>2]|0;if(o|0){q=o;continue}o=f[q+4>>2]|0;if(!o)break;else q=o}p=q;break}else{f[m+4>>2]=0;if(!n){p=m;break}else r=n;while(1){o=f[r>>2]|0;if(o|0){r=o;continue}o=f[r+4>>2]|0;if(!o)break;else r=o}p=r;break}}else p=0;while(0);m=f[h>>2]|0;do if(m){n=b[k+11>>0]|0;o=n<<24>>24<0;s=o?f[g+20>>2]|0:n&255;n=o?f[k>>2]|0:k;o=m;while(1){t=o+16|0;u=b[t+11>>0]|0;v=u<<24>>24<0;w=v?f[o+20>>2]|0:u&255;u=w>>>0>>0?w:s;if((u|0)!=0?(x=Vk(n,v?f[t>>2]|0:t,u)|0,(x|0)!=0):0)if((x|0)<0)y=22;else y=24;else if(s>>>0>>0)y=22;else y=24;if((y|0)==22){y=0;w=f[o>>2]|0;if(!w){y=23;break}else z=w}else if((y|0)==24){y=0;A=o+4|0;w=f[A>>2]|0;if(!w){y=26;break}else z=w}o=z}if((y|0)==23){y=0;B=o;C=o;break}else if((y|0)==26){y=0;B=A;C=o;break}}else{B=h;C=h}while(0);f[g>>2]=0;f[g+4>>2]=0;f[l>>2]=C;f[B>>2]=g;m=f[f[a>>2]>>2]|0;if(!m)D=g;else{f[a>>2]=m;D=f[B>>2]|0}Oe(f[i>>2]|0,D);f[e>>2]=(f[e>>2]|0)+1;m=f[j+4>>2]|0;if(!m){k=j+8|0;s=f[k>>2]|0;if((f[s>>2]|0)==(j|0))E=s;else{s=k;do{k=f[s>>2]|0;s=k+8|0;n=f[s>>2]|0}while((f[n>>2]|0)!=(k|0));E=n}}else{s=m;while(1){l=f[s>>2]|0;if(!l)break;else s=l}E=s}f[c>>2]=E;if(!p)break a;else{g=p;j=E}}j=f[g+8>>2]|0;if(!j)F=g;else{i=j;while(1){j=f[i+8>>2]|0;if(!j)break;else i=j}F=i}Ej(a,F)}while(0);F=f[c>>2]|0;E=f[d>>2]|0;if((F|0)==(E|0))return;else G=F;while(1){bf(a,G+16|0)|0;F=f[G+4>>2]|0;if(!F){d=G+8|0;p=f[d>>2]|0;if((f[p>>2]|0)==(G|0))H=p;else{p=d;do{d=f[p>>2]|0;p=d+8|0;e=f[p>>2]|0}while((f[e>>2]|0)!=(d|0));H=e}}else{p=F;while(1){i=f[p>>2]|0;if(!i)break;else p=i}H=p}f[c>>2]=H;if((H|0)==(E|0))break;else G=H}return}function Pc(a){a=a|0;var b=0,c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;b=u;u=u+32|0;c=b+4|0;d=b;e=a+16|0;g=f[e>>2]|0;if(g>>>0>112){f[e>>2]=g+-113;g=a+4|0;e=f[g>>2]|0;h=f[e>>2]|0;i=e+4|0;f[g>>2]=i;e=a+8|0;j=f[e>>2]|0;k=a+12|0;l=f[k>>2]|0;m=l;do if((j|0)==(l|0)){n=f[a>>2]|0;o=n;if(i>>>0>n>>>0){p=i;q=((p-o>>2)+1|0)/-2|0;r=i+(q<<2)|0;s=j-p|0;p=s>>2;if(!p)t=i;else{im(r|0,i|0,s|0)|0;t=f[g>>2]|0}s=r+(p<<2)|0;f[e>>2]=s;f[g>>2]=t+(q<<2);v=s;break}s=m-o>>1;o=(s|0)==0?1:s;if(o>>>0>1073741823){s=ra(8)|0;Oo(s,16035);f[s>>2]=7256;va(s|0,1112,110)}s=ln(o<<2)|0;q=s;p=s+(o>>>2<<2)|0;r=p;w=s+(o<<2)|0;if((i|0)==(j|0)){x=r;y=n}else{n=p;p=r;o=i;do{f[n>>2]=f[o>>2];n=p+4|0;p=n;o=o+4|0}while((o|0)!=(j|0));x=p;y=f[a>>2]|0}f[a>>2]=q;f[g>>2]=r;f[e>>2]=x;f[k>>2]=w;if(!y)v=x;else{Oq(y);v=f[e>>2]|0}}else v=j;while(0);f[v>>2]=h;f[e>>2]=(f[e>>2]|0)+4;u=b;return}e=a+8|0;h=f[e>>2]|0;v=a+4|0;j=h-(f[v>>2]|0)|0;y=a+12|0;x=f[y>>2]|0;k=x-(f[a>>2]|0)|0;if(j>>>0>=k>>>0){g=k>>1;k=(g|0)==0?1:g;f[c+12>>2]=0;f[c+16>>2]=a+12;if(k>>>0>1073741823){g=ra(8)|0;Oo(g,16035);f[g>>2]=7256;va(g|0,1112,110)}g=ln(k<<2)|0;f[c>>2]=g;i=g+(j>>2<<2)|0;j=c+8|0;f[j>>2]=i;m=c+4|0;f[m>>2]=i;i=c+12|0;f[i>>2]=g+(k<<2);k=ln(4068)|0;f[d>>2]=k;Ag(c,d);d=f[e>>2]|0;while(1){z=f[v>>2]|0;if((d|0)==(z|0))break;k=d+-4|0;ug(c,k);d=k}k=z;z=f[a>>2]|0;f[a>>2]=f[c>>2];f[c>>2]=z;f[v>>2]=f[m>>2];f[m>>2]=k;m=f[e>>2]|0;f[e>>2]=f[j>>2];f[j>>2]=m;g=f[y>>2]|0;f[y>>2]=f[i>>2];f[i>>2]=g;g=m;if((d|0)!=(g|0))f[j>>2]=g+(~((g+-4-k|0)>>>2)<<2);if(z|0)Oq(z);u=b;return}if((x|0)!=(h|0)){h=ln(4068)|0;f[c>>2]=h;Ag(a,c);u=b;return}h=ln(4068)|0;f[c>>2]=h;ug(a,c);c=f[v>>2]|0;h=f[c>>2]|0;x=c+4|0;f[v>>2]=x;c=f[e>>2]|0;z=f[y>>2]|0;k=z;do if((c|0)==(z|0)){g=f[a>>2]|0;j=g;if(x>>>0>g>>>0){d=x;m=((d-j>>2)+1|0)/-2|0;i=x+(m<<2)|0;t=c-d|0;d=t>>2;if(!d)A=x;else{im(i|0,x|0,t|0)|0;A=f[v>>2]|0}t=i+(d<<2)|0;f[e>>2]=t;f[v>>2]=A+(m<<2);B=t;break}t=k-j>>1;j=(t|0)==0?1:t;if(j>>>0>1073741823){t=ra(8)|0;Oo(t,16035);f[t>>2]=7256;va(t|0,1112,110)}t=ln(j<<2)|0;m=t;d=t+(j>>>2<<2)|0;i=d;l=t+(j<<2)|0;if((x|0)==(c|0)){C=i;D=g}else{g=d;d=i;j=x;do{f[g>>2]=f[j>>2];g=d+4|0;d=g;j=j+4|0}while((j|0)!=(c|0));C=d;D=f[a>>2]|0}f[a>>2]=m;f[v>>2]=i;f[e>>2]=C;f[y>>2]=l;if(!D)B=C;else{Oq(D);B=f[e>>2]|0}}else B=c;while(0);f[B>>2]=h;f[e>>2]=(f[e>>2]|0)+4;u=b;return}function Qc(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,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,Q=0,R=0;e=u;u=u+16|0;g=e+8|0;h=e+4|0;i=e;j=a+64|0;k=f[j>>2]|0;if((f[k+28>>2]|0)==(f[k+24>>2]|0)){u=e;return}l=c+96|0;c=a+52|0;m=d+84|0;n=d+68|0;d=a+56|0;o=a+60|0;p=a+12|0;q=a+28|0;r=a+40|0;s=a+44|0;t=a+48|0;v=0;w=0;x=k;while(1){k=f[(f[x+24>>2]|0)+(w<<2)>>2]|0;if((k|0)==-1){y=v;z=x}else{A=v+1|0;B=f[(f[l>>2]|0)+(((k|0)/3|0)*12|0)+(((k|0)%3|0)<<2)>>2]|0;if(!(b[m>>0]|0))C=f[(f[n>>2]|0)+(B<<2)>>2]|0;else C=B;f[g>>2]=C;B=f[d>>2]|0;if(B>>>0<(f[o>>2]|0)>>>0){f[B>>2]=C;f[d>>2]=B+4}else Ri(c,g);f[g>>2]=k;f[h>>2]=0;a:do if(!(f[(f[p>>2]|0)+(w>>>5<<2)>>2]&1<<(w&31)))D=k;else{B=k+1|0;E=((B>>>0)%3|0|0)==0?k+-2|0:B;if(((E|0)!=-1?(f[(f[a>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)==0:0)?(B=f[(f[(f[j>>2]|0)+12>>2]|0)+(E<<2)>>2]|0,E=B+1|0,(B|0)!=-1):0){F=((E>>>0)%3|0|0)==0?B+-2|0:E;f[h>>2]=F;if((F|0)==-1){D=k;break}else G=F;while(1){f[g>>2]=G;F=G+1|0;E=((F>>>0)%3|0|0)==0?G+-2|0:F;if((E|0)==-1)break;if(f[(f[a>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)break;F=f[(f[(f[j>>2]|0)+12>>2]|0)+(E<<2)>>2]|0;E=F+1|0;if((F|0)==-1)break;B=((E>>>0)%3|0|0)==0?F+-2|0:E;f[h>>2]=B;if((B|0)==-1){D=G;break a}else G=B}f[h>>2]=-1;D=G;break}f[h>>2]=-1;D=k}while(0);f[(f[q>>2]|0)+(D<<2)>>2]=v;k=f[s>>2]|0;if((k|0)==(f[t>>2]|0))Ri(r,g);else{f[k>>2]=f[g>>2];f[s>>2]=k+4}k=f[j>>2]|0;B=f[g>>2]|0;b:do if(((B|0)!=-1?(E=(((B>>>0)%3|0|0)==0?2:-1)+B|0,(E|0)!=-1):0)?(F=f[(f[k+12>>2]|0)+(E<<2)>>2]|0,(F|0)!=-1):0){E=F+(((F>>>0)%3|0|0)==0?2:-1)|0;f[h>>2]=E;if((E|0)!=-1&(E|0)!=(B|0)){F=A;H=v;I=E;while(1){E=I+1|0;J=((E>>>0)%3|0|0)==0?I+-2|0:E;do if(f[(f[a>>2]|0)+(J>>>5<<2)>>2]&1<<(J&31)){E=F+1|0;K=f[(f[l>>2]|0)+(((I|0)/3|0)*12|0)+(((I|0)%3|0)<<2)>>2]|0;if(!(b[m>>0]|0))L=f[(f[n>>2]|0)+(K<<2)>>2]|0;else L=K;f[i>>2]=L;K=f[d>>2]|0;if(K>>>0<(f[o>>2]|0)>>>0){f[K>>2]=L;f[d>>2]=K+4}else Ri(c,i);K=f[s>>2]|0;if((K|0)==(f[t>>2]|0)){Ri(r,h);M=E;N=F;break}else{f[K>>2]=f[h>>2];f[s>>2]=K+4;M=E;N=F;break}}else{M=F;N=H}while(0);f[(f[q>>2]|0)+(f[h>>2]<<2)>>2]=N;O=f[j>>2]|0;J=f[h>>2]|0;if((J|0)==-1)break;E=(((J>>>0)%3|0|0)==0?2:-1)+J|0;if((E|0)==-1)break;J=f[(f[O+12>>2]|0)+(E<<2)>>2]|0;if((J|0)==-1)break;I=J+(((J>>>0)%3|0|0)==0?2:-1)|0;f[h>>2]=I;if(!((I|0)!=-1?(I|0)!=(f[g>>2]|0):0)){P=M;Q=O;break b}else{F=M;H=N}}f[h>>2]=-1;P=M;Q=O}else{P=A;Q=k}}else R=28;while(0);if((R|0)==28){R=0;f[h>>2]=-1;P=A;Q=k}y=P;z=Q}w=w+1|0;if(w>>>0>=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2>>>0)break;else{v=y;x=z}}u=e;return}function Rc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0.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,A=0,D=0,E=0,F=0;switch(c|0){case 0:{e=-149;g=24;i=4;break}case 1:{e=-1074;g=53;i=4;break}case 2:{e=-1074;g=53;i=4;break}default:j=0.0}a:do if((i|0)==4){c=a+4|0;k=a+100|0;do{l=f[c>>2]|0;if(l>>>0<(f[k>>2]|0)>>>0){f[c>>2]=l+1;m=h[l>>0]|0}else m=Si(a)|0}while((eq(m)|0)!=0);b:do switch(m|0){case 43:case 45:{l=1-(((m|0)==45&1)<<1)|0;n=f[c>>2]|0;if(n>>>0<(f[k>>2]|0)>>>0){f[c>>2]=n+1;o=h[n>>0]|0;p=l;break b}else{o=Si(a)|0;p=l;break b}break}default:{o=m;p=1}}while(0);l=0;n=o;while(1){if((n|32|0)!=(b[18546+l>>0]|0)){q=l;r=n;break}do if(l>>>0<7){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;t=h[s>>0]|0;break}else{t=Si(a)|0;break}}else t=n;while(0);s=l+1|0;if(s>>>0<8){l=s;n=t}else{q=s;r=t;break}}c:do switch(q|0){case 8:break;case 3:{i=23;break}default:{n=(d|0)!=0;if(n&q>>>0>3)if((q|0)==8)break c;else{i=23;break c}d:do if(!q){l=0;s=r;while(1){if((s|32|0)!=(b[18555+l>>0]|0)){u=l;v=s;break d}do if(l>>>0<2){w=f[c>>2]|0;if(w>>>0<(f[k>>2]|0)>>>0){f[c>>2]=w+1;x=h[w>>0]|0;break}else{x=Si(a)|0;break}}else x=s;while(0);w=l+1|0;if(w>>>0<3){l=w;s=x}else{u=w;v=x;break}}}else{u=q;v=r}while(0);switch(u|0){case 3:{s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;y=h[s>>0]|0}else y=Si(a)|0;if((y|0)==40)z=1;else{if(!(f[k>>2]|0)){j=B;break a}f[c>>2]=(f[c>>2]|0)+-1;j=B;break a}while(1){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;A=h[s>>0]|0}else A=Si(a)|0;if(!((A+-48|0)>>>0<10|(A+-65|0)>>>0<26)?!((A|0)==95|(A+-97|0)>>>0<26):0)break;z=z+1|0}if((A|0)==41){j=B;break a}s=(f[k>>2]|0)==0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if(!n){l=Vq()|0;f[l>>2]=22;Ym(a,0);j=0.0;break a}if(!z){j=B;break a}else D=z;while(1){D=D+-1|0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if(!D){j=B;break a}}break}case 0:{if((v|0)==48){s=f[c>>2]|0;if(s>>>0<(f[k>>2]|0)>>>0){f[c>>2]=s+1;E=h[s>>0]|0}else E=Si(a)|0;if((E|32|0)==120){j=+Fc(a,g,e,p,d);break a}if(!(f[k>>2]|0))F=48;else{f[c>>2]=(f[c>>2]|0)+-1;F=48}}else F=v;j=+nb(a,F,g,e,p,d);break a;break}default:{if(f[k>>2]|0)f[c>>2]=(f[c>>2]|0)+-1;s=Vq()|0;f[s>>2]=22;Ym(a,0);j=0.0;break a}}}}while(0);if((i|0)==23){s=(f[k>>2]|0)==0;if(!s)f[c>>2]=(f[c>>2]|0)+-1;if((d|0)!=0&q>>>0>3){n=q;do{if(!s)f[c>>2]=(f[c>>2]|0)+-1;n=n+-1|0}while(n>>>0>3)}}j=+$($(p|0)*$(C))}while(0);return +j}function Sc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,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;g=u;u=u+16|0;h=g;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;i=ln(16)|0;f[h>>2]=i;f[h+8>>2]=-2147483632;f[h+4>>2]=15;j=i;k=14479;l=j+15|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[i+15>>0]=0;i=Hk(c,h,-1)|0;if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);switch(i|0){case 0:{m=ln(52)|0;j=m;l=j+52|0;do{f[j>>2]=0;j=j+4|0}while((j|0)<(l|0));Zn(m);n=4044;o=m;break}case -1:{if((mi(c)|0)==10){m=ln(52)|0;j=m;l=j+52|0;do{f[j>>2]=0;j=j+4|0}while((j|0)<(l|0));Zn(m);n=4044;o=m}else p=6;break}default:p=6}a:do if((p|0)==6){m=d+8|0;q=d+12|0;r=f[q>>2]|0;s=f[m>>2]|0;b:do if((r-s|0)>0){t=h+8|0;v=h+4|0;w=c+16|0;x=h+11|0;y=0;z=s;A=r;c:while(1){B=f[(f[z+(y<<2)>>2]|0)+28>>2]|0;switch(B|0){case 9:{p=12;break}case 6:case 5:case 4:case 2:{C=z;D=A;break}default:{if((B|2|0)!=3)break c;if((B|0)==9)p=12;else{C=z;D=A}}}if((p|0)==12){p=0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;B=ln(32)|0;f[h>>2]=B;f[t>>2]=-2147483616;f[v>>2]=17;j=B;k=14495;l=j+17|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[B+17>>0]=0;E=f[w>>2]|0;if(E){F=w;G=E;d:while(1){E=G;while(1){if((f[E+16>>2]|0)>=0)break;H=f[E+4>>2]|0;if(!H){I=F;break d}else E=H}G=f[E>>2]|0;if(!G){I=E;break}else F=E}if(((I|0)!=(w|0)?(f[I+16>>2]|0)<=0:0)?(F=I+20|0,(Jh(F,h)|0)!=0):0)J=Hk(F,h,-1)|0;else p=21}else p=21;if((p|0)==21){p=0;J=Hk(c,h,-1)|0}if((b[x>>0]|0)<0)Oq(f[h>>2]|0);if((J|0)<1)break;C=f[m>>2]|0;D=f[q>>2]|0}y=y+1|0;if((y|0)>=(D-C>>2|0))break b;else{z=C;A=D}}if((i|0)!=1){A=ln(52)|0;j=A;l=j+52|0;do{f[j>>2]=0;j=j+4|0}while((j|0)<(l|0));Zn(A);n=4044;o=A;break a}f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;z=ln(32)|0;f[h>>2]=z;f[h+8>>2]=-2147483616;f[h+4>>2]=24;j=z;k=14513;l=j+24|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[z+24>>0]=0;f[a>>2]=-1;pj(a+4|0,h);if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);u=g;return}while(0);q=ln(52)|0;j=q;l=j+52|0;do{f[j>>2]=0;j=j+4|0}while((j|0)<(l|0));Zn(q);n=3988;o=q}while(0);f[o>>2]=n;ip(o,d);Md(a,o,c,e);Va[f[(f[o>>2]|0)+4>>2]&127](o);u=g;return}function Tc(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=u;u=u+32|0;j=i+4|0;k=i;l=i+16|0;m=(_(e|0)|0)^31;if((e|0)>0)if(m>>>0>17){n=0;u=i;return n|0}else o=m+1|0;else o=1;do if(g){m=ln(48)|0;f[j>>2]=m;f[j+8>>2]=-2147483600;f[j+4>>2]=33;e=m;p=15987;q=e+33|0;do{b[e>>0]=b[p>>0]|0;e=e+1|0;p=p+1|0}while((e|0)<(q|0));b[m+33>>0]=0;r=(Jh(g,j)|0)==0;if((b[j+11>>0]|0)<0)Oq(f[j>>2]|0);if(!r){r=ln(48)|0;f[j>>2]=r;f[j+8>>2]=-2147483600;f[j+4>>2]=33;e=r;p=15987;q=e+33|0;do{b[e>>0]=b[p>>0]|0;e=e+1|0;p=p+1|0}while((e|0)<(q|0));b[r+33>>0]=0;p=Mk(g,j)|0;if((b[j+11>>0]|0)<0)Oq(f[j>>2]|0);if((p|0)<4){s=o+-2|0;break}if((p|0)<6){s=o+-1|0;break}if((p|0)>9){s=o+2|0;break}else{s=o+((p|0)>7&1)|0;break}}else s=o}else s=o;while(0);o=(s|0)>1?s:1;s=(o|0)<18?o:18;b[l>>0]=s;o=h+16|0;g=f[o+4>>2]|0;if(!((g|0)>0|(g|0)==0&(f[o>>2]|0)>>>0>0)){f[k>>2]=f[h+4>>2];f[j>>2]=f[k>>2];Me(h,j,l,l+1|0)|0}do switch(s&31){case 1:case 0:{n=ue(a,c,d,h)|0;u=i;return n|0}case 2:{n=te(a,c,d,h)|0;u=i;return n|0}case 3:{n=se(a,c,d,h)|0;u=i;return n|0}case 4:{n=re(a,c,d,h)|0;u=i;return n|0}case 5:{n=qe(a,c,d,h)|0;u=i;return n|0}case 6:{n=pe(a,c,d,h)|0;u=i;return n|0}case 7:{n=oe(a,c,d,h)|0;u=i;return n|0}case 8:{n=ne(a,c,d,h)|0;u=i;return n|0}case 9:{n=me(a,c,d,h)|0;u=i;return n|0}case 10:{n=le(a,c,d,h)|0;u=i;return n|0}case 11:{n=ke(a,c,d,h)|0;u=i;return n|0}case 12:{n=ie(a,c,d,h)|0;u=i;return n|0}case 13:{n=he(a,c,d,h)|0;u=i;return n|0}case 14:{n=ge(a,c,d,h)|0;u=i;return n|0}case 15:{n=fe(a,c,d,h)|0;u=i;return n|0}case 16:{n=ee(a,c,d,h)|0;u=i;return n|0}case 17:{n=de(a,c,d,h)|0;u=i;return n|0}case 18:{n=ce(a,c,d,h)|0;u=i;return n|0}default:{n=0;u=i;return n|0}}while(0);return 0}function Uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;xb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function Vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;yb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function Wc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;zb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function Xc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Ab(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function Yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*1048576.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==1048576){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Fb(z,A,g);a:do if((x|0)<1048576){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=1048576-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>1048576;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-1048576|0;m=x;while(1){v=1048576.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==1048576){C=p;D=1048576;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=1048576){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*9.5367431640625e-07)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function Zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*524288.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==524288){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Bb(z,A,g);a:do if((x|0)<524288){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=524288-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>524288;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-524288|0;m=x;while(1){v=524288.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==524288){C=p;D=524288;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=524288){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*1.9073486328125e-06)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function _c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*262144.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==262144){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Cb(z,A,g);a:do if((x|0)<262144){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=262144-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>262144;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-262144|0;m=x;while(1){v=262144.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==262144){C=p;D=262144;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=262144){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*3.814697265625e-06)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*65536.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==65536){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Db(z,A,g);a:do if((x|0)<65536){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=65536-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>65536;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-65536|0;m=x;while(1){v=65536.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==65536){C=p;D=65536;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=65536){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.0000152587890625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function ad(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*32768.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==32768){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Eb(z,A,g);a:do if((x|0)<32768){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=32768-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>32768;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-32768|0;m=x;while(1){v=32768.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==32768){C=p;D=32768;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=32768){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000030517578125)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function bd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*8192.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==8192){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Gb(z,A,g);a:do if((x|0)<8192){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=8192-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>8192;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-8192|0;m=x;while(1){v=8192.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==8192){C=p;D=8192;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=8192){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.0001220703125)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function cd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Hb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function dd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Ib(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function ed(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Jb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Kb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function gd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Lb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function hd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Mb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Nb(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function jd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0;e=u;u=u+16|0;g=e;h=e+4|0;if((c|0)>0){i=0;j=0;k=0;l=0;while(1){m=b+(j<<3)|0;n=f[m>>2]|0;o=f[m+4>>2]|0;m=Vn(n|0,o|0,k|0,l|0)|0;p=I;q=(n|0)==0&(o|0)==0?i:j;j=j+1|0;if((j|0)==(c|0)){r=q;s=p;t=m;break}else{i=q;k=m;l=p}}}else{r=0;s=0;t=0}l=r+1|0;f[a+12>>2]=l;k=a+4|0;i=f[k>>2]|0;c=f[a>>2]|0;j=i-c>>3;p=c;c=i;if(l>>>0<=j>>>0){if(l>>>0>>0?(i=p+(l<<3)|0,(i|0)!=(c|0)):0)f[k>>2]=c+(~((c+-8-i|0)>>>3)<<3)}else wh(a,l-j|0);v=+(t>>>0)+4294967296.0*+(s>>>0);s=(r|0)<0;if(!s){t=f[a>>2]|0;j=0;i=0;do{c=b+(i<<3)|0;k=f[c>>2]|0;p=f[c+4>>2]|0;c=~~((+(k>>>0)+4294967296.0*+(p>>>0))/v*4096.0+.5)>>>0;m=((k|0)!=0|(p|0)!=0)&(c|0)==0?1:c;f[t+(i<<3)>>2]=m;j=m+j|0;i=i+1|0}while((i|0)!=(l|0));if((j|0)==4096){if(s){w=0;u=e;return w|0}}else{x=j;y=12}}else{x=0;y=12}if((y|0)==12){f[h>>2]=0;j=h+4|0;f[j>>2]=0;f[h+8>>2]=0;do if(l)if(l>>>0>1073741823)aq(h);else{i=l<<2;t=ln(i)|0;f[h>>2]=t;m=t+(l<<2)|0;f[h+8>>2]=m;sj(t|0,0,i|0)|0;f[j>>2]=m;z=t;A=m;break}else{z=0;A=0}while(0);if(!s?(f[z>>2]=0,r|0):0){m=1;do{f[z+(m<<2)>>2]=m;m=m+1|0}while((m|0)!=(l|0))}f[g>>2]=a;Ob(z,A,g);a:do if((x|0)<4096){g=(f[a>>2]|0)+(f[(f[j>>2]|0)+-4>>2]<<3)|0;f[g>>2]=4096-x+(f[g>>2]|0);B=0}else{g=f[h>>2]|0;if((r|0)<=0){A=(x|0)>4096;while(1)if(!A){B=0;break a}}A=f[a>>2]|0;z=x+-4096|0;m=x;while(1){v=4096.0/+(m|0);t=r;i=z;c=m;while(1){p=A+(f[g+(t<<2)>>2]<<3)|0;k=f[p>>2]|0;if(k>>>0<2){y=28;break}q=k-~~+J(+(v*+(k>>>0)))|0;o=(q|0)==0?1:q;q=(o|0)<(k|0)?o:k+-1|0;o=(q|0)>(i|0)?i:q;f[p>>2]=k-o;k=c-o|0;p=i-o|0;if((k|0)==4096){C=p;D=4096;break}if((t|0)>1){t=t+-1|0;i=p;c=k}else{C=p;D=k;break}}if((y|0)==28){y=0;if((t|0)==(r|0)){B=1;break a}else{C=i;D=c}}if((C|0)>0){z=C;m=D}else{B=0;break}}}while(0);D=f[h>>2]|0;if(D|0){h=f[j>>2]|0;if((h|0)!=(D|0))f[j>>2]=h+(~((h+-4-D|0)>>>2)<<2);Oq(D)}if((B|0)!=0|s){w=0;u=e;return w|0}}B=f[a>>2]|0;D=0;h=0;do{f[B+(D<<3)+4>>2]=h;h=(f[B+(D<<3)>>2]|0)+h|0;D=D+1|0}while((D|0)!=(l|0));if((h|0)!=4096){w=0;u=e;return w|0}if(s)E=0.0;else{s=f[a>>2]|0;h=0;v=0.0;while(1){D=f[s+(h<<3)>>2]|0;if(!D)F=v;else{B=b+(h<<3)|0;G=+((f[B>>2]|0)>>>0)+4294967296.0*+((f[B+4>>2]|0)>>>0);F=v+ +Zg(+(D>>>0)*.000244140625)*G}h=h+1|0;if((h|0)==(l|0)){E=F;break}else v=F}}F=+W(+-E);l=+K(F)>=1.0?(F>0.0?~~+Y(+J(F/4294967296.0),4294967295.0)>>>0:~~+W((F-+(~~F>>>0))/4294967296.0)>>>0):0;h=a+16|0;f[h>>2]=~~F>>>0;f[h+4>>2]=l;w=Le(a,d)|0;u=e;return w|0}function kd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;g=u;u=u+32|0;d=g+16|0;h=g+8|0;i=g;j=e>>>0>1073741823?-1:e<<2;k=Lq(j)|0;sj(k|0,0,j|0)|0;j=f[a+28>>2]|0;l=a+36|0;m=f[l>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;a:do if((p|0)>4){q=p>>2;r=f[a+32>>2]|0;s=a+8|0;t=h+4|0;v=i+4|0;w=d+4|0;x=j+12|0;y=(e|0)>0;z=k+4|0;A=h+4|0;B=i+4|0;C=d+4|0;D=q+-1|0;if(n-o>>2>>>0>D>>>0){E=q;F=D;G=o}else{H=m;aq(H)}while(1){D=f[G+(F<<2)>>2]|0;q=X(F,e)|0;if((D|0)!=-1?(I=f[(f[x>>2]|0)+(D<<2)>>2]|0,(I|0)!=-1):0){D=f[j>>2]|0;J=f[r>>2]|0;K=f[J+(f[D+(I<<2)>>2]<<2)>>2]|0;L=I+1|0;M=((L>>>0)%3|0|0)==0?I+-2|0:L;if((M|0)==-1)N=-1;else N=f[D+(M<<2)>>2]|0;M=f[J+(N<<2)>>2]|0;L=(((I>>>0)%3|0|0)==0?2:-1)+I|0;if((L|0)==-1)O=-1;else O=f[D+(L<<2)>>2]|0;L=f[J+(O<<2)>>2]|0;if((K|0)<(F|0)&(M|0)<(F|0)&(L|0)<(F|0)){J=X(K,e)|0;K=X(M,e)|0;M=X(L,e)|0;if(y){L=0;do{f[k+(L<<2)>>2]=(f[b+(L+M<<2)>>2]|0)+(f[b+(L+K<<2)>>2]|0)-(f[b+(L+J<<2)>>2]|0);L=L+1|0}while((L|0)!=(e|0))}L=b+(q<<2)|0;J=c+(q<<2)|0;K=f[L+4>>2]|0;M=f[k>>2]|0;D=f[z>>2]|0;f[h>>2]=f[L>>2];f[A>>2]=K;f[i>>2]=M;f[B>>2]=D;Od(d,s,h,i);f[J>>2]=f[d>>2];f[J+4>>2]=f[C>>2]}else P=15}else P=15;if((P|0)==15){P=0;J=b+(q<<2)|0;D=b+((X(E+-2|0,e)|0)<<2)|0;M=c+(q<<2)|0;K=f[J+4>>2]|0;L=f[D>>2]|0;I=f[D+4>>2]|0;f[h>>2]=f[J>>2];f[t>>2]=K;f[i>>2]=L;f[v>>2]=I;Od(d,s,h,i);f[M>>2]=f[d>>2];f[M+4>>2]=f[w>>2]}if((E|0)<=2)break a;M=f[l>>2]|0;G=f[M>>2]|0;I=F+-1|0;if((f[M+4>>2]|0)-G>>2>>>0<=I>>>0){H=M;break}else{M=F;F=I;E=M}}aq(H)}while(0);if((e|0)<=0){Q=a+8|0;R=b+4|0;S=f[b>>2]|0;T=f[R>>2]|0;U=k+4|0;V=f[k>>2]|0;W=f[U>>2]|0;f[h>>2]=S;Y=h+4|0;f[Y>>2]=T;f[i>>2]=V;Z=i+4|0;f[Z>>2]=W;Od(d,Q,h,i);_=f[d>>2]|0;f[c>>2]=_;$=d+4|0;aa=f[$>>2]|0;ba=c+4|0;f[ba>>2]=aa;Mq(k);u=g;return 1}sj(k|0,0,e<<2|0)|0;Q=a+8|0;R=b+4|0;S=f[b>>2]|0;T=f[R>>2]|0;U=k+4|0;V=f[k>>2]|0;W=f[U>>2]|0;f[h>>2]=S;Y=h+4|0;f[Y>>2]=T;f[i>>2]=V;Z=i+4|0;f[Z>>2]=W;Od(d,Q,h,i);_=f[d>>2]|0;f[c>>2]=_;$=d+4|0;aa=f[$>>2]|0;ba=c+4|0;f[ba>>2]=aa;Mq(k);u=g;return 1}function ld(a,c){a=a|0;c=c|0;var d=0,e=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,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,J=0,K=0,L=0,M=0;d=u;u=u+32|0;e=d;g=d+20|0;h=d+24|0;i=d+8|0;j=f[a>>2]|0;k=j+8|0;l=j;j=f[l>>2]|0;m=f[l+4>>2]|0;l=Vn(j|0,m|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=I;n=Vn(l|0,k|0,(l|0)==0&(k|0)==0&1|0,0)|0;k=~~((+(j>>>0)+4294967296.0*+(m>>>0))/(+(n>>>0)+4294967296.0*+(I>>>0))*256.0+.5)>>>0;n=k>>>0<255?k:255;k=n+((n|0)==0&1)&255;b[h>>0]=k;n=a+12|0;m=a+16|0;j=((f[m>>2]|0)-(f[n>>2]|0)<<1)+64|0;f[i>>2]=0;l=i+4|0;f[l>>2]=0;f[i+8>>2]=0;if(!j)o=0;else{if((j|0)<0)aq(i);p=ln(j)|0;f[l>>2]=p;f[i>>2]=p;f[i+8>>2]=p+j;q=j;j=p;do{b[j>>0]=0;j=(f[l>>2]|0)+1|0;f[l>>2]=j;q=q+-1|0}while((q|0)!=0);o=f[i>>2]|0}q=a+28|0;j=(f[q>>2]|0)+-1|0;a:do if((j|0)>-1){p=a+24|0;r=j;s=4096;t=0;v=k;while(1){w=(f[p>>2]&1<>>0>>0){y=t;z=s}else{b[o+t>>0]=s;y=t+1|0;z=s>>>8}un(f[4092+(x<<3)>>2]|0,0,z|0,0)|0;A=z+(w?0:0-v&255)+(X((z+I|0)>>>(f[4092+(x<<3)+4>>2]|0),256-x|0)|0)|0;x=r+-1|0;if((x|0)<=-1){B=A;C=y;break a}r=x;s=A;t=y;v=b[h>>0]|0}}else{B=4096;C=0}while(0);y=f[m>>2]|0;if((f[n>>2]|0)==(y|0)){D=B;E=C}else{z=B;B=C;C=y;while(1){C=C+-4|0;y=f[C>>2]|0;k=31;j=z;v=B;while(1){t=b[h>>0]|0;s=(1<>>0>>0){F=v;G=j}else{b[o+v>>0]=j;F=v+1|0;G=j>>>8}un(f[4092+(r<<3)>>2]|0,0,G|0,0)|0;j=G+(s?0:0-t&255)+(X((G+I|0)>>>(f[4092+(r<<3)+4>>2]|0),256-r|0)|0)|0;if((k|0)<=0)break;else{k=k+-1|0;v=F}}if((f[n>>2]|0)==(C|0)){D=j;E=F;break}else{z=j;B=F}}}F=D+-4096|0;do if(F>>>0>=64){if(F>>>0<16384){B=o+E|0;z=D+12288|0;b[B>>0]=z;H=2;J=z>>>8;K=B+1|0;L=25;break}if(F>>>0<4194304){B=o+E|0;z=D+8384512|0;b[B>>0]=z;b[B+1>>0]=z>>>8;H=3;J=z>>>16;K=B+2|0;L=25}else M=E}else{H=1;J=F;K=o+E|0;L=25}while(0);if((L|0)==25){b[K>>0]=J;M=H+E|0}E=c+16|0;H=E;J=f[H+4>>2]|0;if(!((J|0)>0|(J|0)==0&(f[H>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+1|0)|0}ci(M,c)|0;h=f[i>>2]|0;H=E;E=f[H+4>>2]|0;if(!((E|0)>0|(E|0)==0&(f[H>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+M|0)|0}M=e;f[M>>2]=0;f[M+4>>2]=0;qf(a,2,e);e=f[a+12>>2]|0;M=f[m>>2]|0;if((M|0)!=(e|0))f[m>>2]=M+(~((M+-4-e|0)>>>2)<<2);f[a+24>>2]=0;f[q>>2]=0;q=f[i>>2]|0;if(!q){u=d;return}if((f[l>>2]|0)!=(q|0))f[l>>2]=q;Oq(q);u=d;return}function md(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;c=u;u=u+16|0;b=c+8|0;d=c+4|0;e=c;g=a+64|0;h=f[g>>2]|0;if((f[h+28>>2]|0)==(f[h+24>>2]|0)){u=c;return}i=a+52|0;j=a+56|0;k=a+60|0;l=a+12|0;m=a+28|0;n=a+40|0;o=a+44|0;p=a+48|0;q=0;r=0;s=h;while(1){h=f[(f[s+24>>2]|0)+(r<<2)>>2]|0;if((h|0)==-1){t=q;v=s}else{w=q+1|0;f[b>>2]=q;x=f[j>>2]|0;if((x|0)==(f[k>>2]|0))Ri(i,b);else{f[x>>2]=q;f[j>>2]=x+4}f[d>>2]=h;f[e>>2]=0;a:do if(!(f[(f[l>>2]|0)+(r>>>5<<2)>>2]&1<<(r&31)))y=h;else{x=h+1|0;z=((x>>>0)%3|0|0)==0?h+-2|0:x;if(((z|0)!=-1?(f[(f[a>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)==0:0)?(x=f[(f[(f[g>>2]|0)+12>>2]|0)+(z<<2)>>2]|0,z=x+1|0,(x|0)!=-1):0){A=((z>>>0)%3|0|0)==0?x+-2|0:z;f[e>>2]=A;if((A|0)==-1){y=h;break}else B=A;while(1){f[d>>2]=B;A=B+1|0;z=((A>>>0)%3|0|0)==0?B+-2|0:A;if((z|0)==-1)break;if(f[(f[a>>2]|0)+(z>>>5<<2)>>2]&1<<(z&31)|0)break;A=f[(f[(f[g>>2]|0)+12>>2]|0)+(z<<2)>>2]|0;z=A+1|0;if((A|0)==-1)break;x=((z>>>0)%3|0|0)==0?A+-2|0:z;f[e>>2]=x;if((x|0)==-1){y=B;break a}else B=x}f[e>>2]=-1;y=B;break}f[e>>2]=-1;y=h}while(0);f[(f[m>>2]|0)+(y<<2)>>2]=f[b>>2];h=f[o>>2]|0;if((h|0)==(f[p>>2]|0))Ri(n,d);else{f[h>>2]=f[d>>2];f[o>>2]=h+4}h=f[g>>2]|0;x=f[d>>2]|0;b:do if(((x|0)!=-1?(z=(((x>>>0)%3|0|0)==0?2:-1)+x|0,(z|0)!=-1):0)?(A=f[(f[h+12>>2]|0)+(z<<2)>>2]|0,(A|0)!=-1):0){z=A+(((A>>>0)%3|0|0)==0?2:-1)|0;f[e>>2]=z;if((z|0)!=-1&(z|0)!=(x|0)){A=w;C=z;while(1){z=C+1|0;D=((z>>>0)%3|0|0)==0?C+-2|0:z;do if(f[(f[a>>2]|0)+(D>>>5<<2)>>2]&1<<(D&31)){z=A+1|0;f[b>>2]=A;E=f[j>>2]|0;if((E|0)==(f[k>>2]|0))Ri(i,b);else{f[E>>2]=A;f[j>>2]=E+4}E=f[o>>2]|0;if((E|0)==(f[p>>2]|0)){Ri(n,e);F=z;break}else{f[E>>2]=f[e>>2];f[o>>2]=E+4;F=z;break}}else F=A;while(0);f[(f[m>>2]|0)+(f[e>>2]<<2)>>2]=f[b>>2];G=f[g>>2]|0;D=f[e>>2]|0;if((D|0)==-1)break;z=(((D>>>0)%3|0|0)==0?2:-1)+D|0;if((z|0)==-1)break;D=f[(f[G+12>>2]|0)+(z<<2)>>2]|0;if((D|0)==-1)break;C=D+(((D>>>0)%3|0|0)==0?2:-1)|0;f[e>>2]=C;if(!((C|0)!=-1?(C|0)!=(f[d>>2]|0):0)){H=F;I=G;break b}else A=F}f[e>>2]=-1;H=F;I=G}else{H=w;I=h}}else J=26;while(0);if((J|0)==26){J=0;f[e>>2]=-1;H=w;I=h}t=H;v=I}r=r+1|0;if(r>>>0>=(f[v+28>>2]|0)-(f[v+24>>2]|0)>>2>>>0)break;else{q=t;s=v}}u=c;return}function nd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;h=a+124|0;f[h>>2]=(f[h>>2]|0)+1;h=a+88|0;i=a+120|0;j=f[i>>2]|0;k=j+1|0;do if((j|0)!=-1){l=((k>>>0)%3|0|0)==0?j+-2|0:k;if(!((j>>>0)%3|0)){m=j+2|0;n=l;break}else{m=j+-1|0;n=l;break}}else{m=-1;n=-1}while(0);k=a+104|0;l=a+92|0;o=f[l>>2]|0;p=o+(n<<2)|0;q=f[k>>2]|0;r=q+(f[p>>2]<<2)|0;s=f[r>>2]|0;switch(b|0){case 1:case 0:{f[r>>2]=s+-1;r=q+(f[o+(m<<2)>>2]<<2)|0;f[r>>2]=(f[r>>2]|0)+-1;if((b|0)==1){if((m|0)!=-1?(r=f[(f[(f[h>>2]|0)+12>>2]|0)+(m<<2)>>2]|0,(r|0)!=-1):0){t=a+64|0;v=1;w=r;while(1){r=f[t>>2]|0;x=f[(f[r>>2]|0)+36>>2]|0;f[e>>2]=(w>>>0)/3|0;f[d>>2]=f[e>>2];if(Ra[x&127](r,d)|0){y=v;break}r=w+1|0;x=((r>>>0)%3|0|0)==0?w+-2|0:r;if((x|0)==-1){z=12;break}w=f[(f[(f[h>>2]|0)+12>>2]|0)+(x<<2)>>2]|0;x=v+1|0;if((w|0)==-1){y=x;break}else v=x}if((z|0)==12)y=v+1|0;A=y;B=f[k>>2]|0;C=f[l>>2]|0}else{A=1;B=q;C=o}f[B+(f[C+(f[i>>2]<<2)>>2]<<2)>>2]=A;A=a+108|0;i=f[A>>2]|0;C=i-B>>2;B=i;if((n|0)!=-1?(i=f[(f[(f[h>>2]|0)+12>>2]|0)+(n<<2)>>2]|0,(i|0)!=-1):0){n=a+64|0;y=1;v=i;while(1){i=f[n>>2]|0;w=f[(f[i>>2]|0)+36>>2]|0;f[g>>2]=(v>>>0)/3|0;f[d>>2]=f[g>>2];if(Ra[w&127](i,d)|0){D=y;break}i=v+1|0;f[(f[l>>2]|0)+((((i>>>0)%3|0|0)==0?v+-2|0:i)<<2)>>2]=C;i=(((v>>>0)%3|0|0)==0?2:-1)+v|0;if((i|0)==-1){z=20;break}v=f[(f[(f[h>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;i=y+1|0;if((v|0)==-1){D=i;break}else y=i}if((z|0)==20)D=y+1|0;E=D;F=f[A>>2]|0}else{E=1;F=B}f[d>>2]=E;if(F>>>0<(f[a+112>>2]|0)>>>0){f[F>>2]=E;f[A>>2]=F+4}else Ri(k,d)}break}case 5:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;break}case 3:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-1;break}case 7:{k=q+(f[o+(j<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[p>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;k=q+(f[o+(m<<2)>>2]<<2)|0;f[k>>2]=(f[k>>2]|0)+-2;break}default:{}}k=a+116|0;m=f[k>>2]|0;if((m|0)==-1){f[k>>2]=b;u=c;return}o=f[a+128>>2]|0;if((s|0)<(o|0))G=o;else{q=f[a+132>>2]|0;G=(s|0)>(q|0)?q:s}s=G-o|0;o=f[a+136>>2]|0;a=f[3724+(m<<2)>>2]|0;f[d>>2]=a;m=o+(s*12|0)+4|0;G=f[m>>2]|0;if(G>>>0<(f[o+(s*12|0)+8>>2]|0)>>>0){f[G>>2]=a;f[m>>2]=G+4}else Ri(o+(s*12|0)|0,d);f[k>>2]=b;u=c;return}function od(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0;g=u;u=u+32|0;d=g+16|0;h=g+8|0;i=g;j=e>>>0>1073741823?-1:e<<2;k=Lq(j)|0;sj(k|0,0,j|0)|0;j=f[a+28>>2]|0;l=a+36|0;m=f[l>>2]|0;n=f[m+4>>2]|0;o=f[m>>2]|0;p=n-o|0;a:do if((p|0)>4){q=p>>2;r=f[a+32>>2]|0;s=a+8|0;t=h+4|0;v=i+4|0;w=d+4|0;x=j+64|0;y=j+28|0;z=(e|0)>0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=q+-1|0;if(n-o>>2>>>0>E>>>0){F=q;G=E;H=o}else{I=m;aq(I)}while(1){E=f[H+(G<<2)>>2]|0;q=X(G,e)|0;if((((E|0)!=-1?(f[(f[j>>2]|0)+(E>>>5<<2)>>2]&1<<(E&31)|0)==0:0)?(J=f[(f[(f[x>>2]|0)+12>>2]|0)+(E<<2)>>2]|0,(J|0)!=-1):0)?(E=f[y>>2]|0,K=f[r>>2]|0,L=f[K+(f[E+(J<<2)>>2]<<2)>>2]|0,M=J+1|0,N=f[K+(f[E+((((M>>>0)%3|0|0)==0?J+-2|0:M)<<2)>>2]<<2)>>2]|0,M=f[K+(f[E+((((J>>>0)%3|0|0)==0?2:-1)+J<<2)>>2]<<2)>>2]|0,(L|0)<(G|0)&(N|0)<(G|0)&(M|0)<(G|0)):0){J=X(L,e)|0;L=X(N,e)|0;N=X(M,e)|0;if(z){M=0;do{f[k+(M<<2)>>2]=(f[b+(M+N<<2)>>2]|0)+(f[b+(M+L<<2)>>2]|0)-(f[b+(M+J<<2)>>2]|0);M=M+1|0}while((M|0)!=(e|0))}M=b+(q<<2)|0;J=c+(q<<2)|0;L=f[M+4>>2]|0;N=f[k>>2]|0;E=f[A>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=L;f[i>>2]=N;f[C>>2]=E;Od(d,s,h,i);f[J>>2]=f[d>>2];f[J+4>>2]=f[D>>2]}else{J=b+(q<<2)|0;E=b+((X(F+-2|0,e)|0)<<2)|0;N=c+(q<<2)|0;L=f[J+4>>2]|0;M=f[E>>2]|0;K=f[E+4>>2]|0;f[h>>2]=f[J>>2];f[t>>2]=L;f[i>>2]=M;f[v>>2]=K;Od(d,s,h,i);f[N>>2]=f[d>>2];f[N+4>>2]=f[w>>2]}if((F|0)<=2)break a;N=f[l>>2]|0;H=f[N>>2]|0;K=G+-1|0;if((f[N+4>>2]|0)-H>>2>>>0<=K>>>0){I=N;break}else{N=G;G=K;F=N}}aq(I)}while(0);if((e|0)<=0){O=a+8|0;P=b+4|0;Q=f[b>>2]|0;R=f[P>>2]|0;S=k+4|0;T=f[k>>2]|0;U=f[S>>2]|0;f[h>>2]=Q;V=h+4|0;f[V>>2]=R;f[i>>2]=T;W=i+4|0;f[W>>2]=U;Od(d,O,h,i);Y=f[d>>2]|0;f[c>>2]=Y;Z=d+4|0;_=f[Z>>2]|0;$=c+4|0;f[$>>2]=_;Mq(k);u=g;return 1}sj(k|0,0,e<<2|0)|0;O=a+8|0;P=b+4|0;Q=f[b>>2]|0;R=f[P>>2]|0;S=k+4|0;T=f[k>>2]|0;U=f[S>>2]|0;f[h>>2]=Q;V=h+4|0;f[V>>2]=R;f[i>>2]=T;W=i+4|0;f[W>>2]=U;Od(d,O,h,i);Y=f[d>>2]|0;f[c>>2]=Y;Z=d+4|0;_=f[Z>>2]|0;$=c+4|0;f[$>>2]=_;Mq(k);u=g;return 1}function pd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0;switch(c|0){case 1:{c=ln(60)|0;f[c>>2]=1544;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2076;i=c;f[a>>2]=i;return}case 2:{c=ln(60)|0;f[c>>2]=1544;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2132;i=c;f[a>>2]=i;return}case 4:{c=ln(168)|0;Ti(c,d,e,g);i=c;f[a>>2]=i;return}case 3:{c=ln(88)|0;f[c>>2]=1544;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2188;h=c+60|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;f[h+16>>2]=0;f[h+20>>2]=0;f[h+24>>2]=0;i=c;f[a>>2]=i;return}case 5:{c=ln(104)|0;f[c>>2]=1544;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2244;f[c+60>>2]=0;f[c+64>>2]=0;f[c+76>>2]=0;f[c+80>>2]=0;f[c+84>>2]=0;h=c+88|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=ln(140)|0;f[c>>2]=1544;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);e=c+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=2300;f[c+64>>2]=0;f[c+68>>2]=0;e=c+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+60>>2]=2356;f[c+88>>2]=1;g=c+92|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;wn(c+108|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function qd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0;switch(c|0){case 1:{c=ln(60)|0;f[c>>2]=1544;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1656;i=c;f[a>>2]=i;return}case 2:{c=ln(60)|0;f[c>>2]=1544;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1712;i=c;f[a>>2]=i;return}case 4:{c=ln(168)|0;Ui(c,d,e,g);i=c;f[a>>2]=i;return}case 3:{c=ln(88)|0;f[c>>2]=1544;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1768;h=c+60|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;f[h+16>>2]=0;f[h+20>>2]=0;f[h+24>>2]=0;i=c;f[a>>2]=i;return}case 5:{c=ln(104)|0;f[c>>2]=1544;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);h=c+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=1824;f[c+60>>2]=0;f[c+64>>2]=0;f[c+76>>2]=0;f[c+80>>2]=0;f[c+84>>2]=0;h=c+88|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=ln(140)|0;f[c>>2]=1544;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];fk(c+32|0,e+24|0);e=c+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=1880;f[c+64>>2]=0;f[c+68>>2]=0;e=c+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+60>>2]=1936;f[c+88>>2]=1;g=c+92|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;wn(c+108|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function rd(a,b){a=a|0;b=b|0;var c=0,e=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+2|0;v=e+12|0;w=q+6|0;x=f[e>>2]|0;d:do if(!x)y=e;else{z=d[q>>1]|0;A=e;B=x;while(1){C=B+8|0;if(z<<16>>16!=(d[C>>1]|0)){y=A;break d}if((d[u>>1]|0)!=(d[C+2>>1]|0)){y=A;break d}if((d[v>>1]|0)!=(d[B+12>>1]|0)){y=A;break d}if((d[w>>1]|0)!=(d[C+6>>1]|0)){y=A;break d}C=f[B>>2]|0;if(!C){y=B;break}else{D=B;B=C;A=D}}}while(0);f[j>>2]=f[y>>2];f[y>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}else{e=c;while(1){w=f[e+4>>2]|0;if(w>>>0>>0)F=w;else F=(w>>>0)%(b>>>0)|0;if((F|0)==(k|0)){p=e;break c}w=(f[a>>2]|0)+(F<<2)|0;if(!(f[w>>2]|0)){r=e;s=F;t=w;break b}w=e+8|0;v=w+2|0;u=e+12|0;x=w+6|0;q=f[e>>2]|0;e:do if(!q)G=e;else{A=d[w>>1]|0;B=e;z=q;while(1){D=z+8|0;if(A<<16>>16!=(d[D>>1]|0)){G=B;break e}if((d[v>>1]|0)!=(d[D+2>>1]|0)){G=B;break e}if((d[u>>1]|0)!=(d[z+12>>1]|0)){G=B;break e}if((d[x>>1]|0)!=(d[D+6>>1]|0)){G=B;break e}D=f[z>>2]|0;if(!D){G=z;break}else{C=z;z=D;B=C}}}while(0);f[j>>2]=f[G>>2];f[G>>2]=f[f[(f[a>>2]|0)+(F<<2)>>2]>>2];f[f[(f[a>>2]|0)+(F<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}while(0);c=f[p>>2]|0;if(!c){E=43;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){E=43;break}else{k=s;l=r;n=r}}if((E|0)==43)return}function sd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+1|0;v=q+2|0;w=q+3|0;x=f[e>>2]|0;d:do if(!x)y=e;else{z=b[q>>0]|0;A=e;B=x;while(1){C=B+8|0;if(z<<24>>24!=(b[C>>0]|0)){y=A;break d}if((b[u>>0]|0)!=(b[C+1>>0]|0)){y=A;break d}if((b[v>>0]|0)!=(b[C+2>>0]|0)){y=A;break d}if((b[w>>0]|0)!=(b[C+3>>0]|0)){y=A;break d}C=f[B>>2]|0;if(!C){y=B;break}else{D=B;B=C;A=D}}}while(0);f[j>>2]=f[y>>2];f[y>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}else{e=d;while(1){w=f[e+4>>2]|0;if(w>>>0>>0)F=w;else F=(w>>>0)%(c>>>0)|0;if((F|0)==(k|0)){p=e;break c}w=(f[a>>2]|0)+(F<<2)|0;if(!(f[w>>2]|0)){r=e;s=F;t=w;break b}w=e+8|0;v=w+1|0;u=w+2|0;x=w+3|0;q=f[e>>2]|0;e:do if(!q)G=e;else{A=b[w>>0]|0;B=e;z=q;while(1){D=z+8|0;if(A<<24>>24!=(b[D>>0]|0)){G=B;break e}if((b[v>>0]|0)!=(b[D+1>>0]|0)){G=B;break e}if((b[u>>0]|0)!=(b[D+2>>0]|0)){G=B;break e}if((b[x>>0]|0)!=(b[D+3>>0]|0)){G=B;break e}D=f[z>>2]|0;if(!D){G=z;break}else{C=z;z=D;B=C}}}while(0);f[j>>2]=f[G>>2];f[G>>2]=f[f[(f[a>>2]|0)+(F<<2)>>2]>>2];f[f[(f[a>>2]|0)+(F<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){E=43;break a}}}while(0);d=f[p>>2]|0;if(!d){E=43;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){E=43;break}else{k=s;l=r;n=r}}if((E|0)==43)return}function td(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0;i=u;u=u+352|0;j=i+340|0;k=i+336|0;l=i+80|0;m=i+48|0;n=i;sj(l|0,0,256)|0;o=f[e+4>>2]|0;p=f[e>>2]|0;q=p;if((o|0)!=(p|0)){r=o-p>>2;p=0;do{o=l+(f[q+(p<<2)>>2]<<3)|0;s=o;t=Vn(f[s>>2]|0,f[s+4>>2]|0,1,0)|0;s=o;f[s>>2]=t;f[s+4>>2]=I;p=p+1|0}while(p>>>0>>0)}Gn(m);r=Tn(c|0,((c|0)<0)<<31>>31|0,5)|0;p=I;q=n+40|0;s=q;f[s>>2]=0;f[s+4>>2]=0;f[n>>2]=0;f[n+4>>2]=0;f[n+8>>2]=0;f[n+12>>2]=0;f[n+16>>2]=0;f[n+20>>2]=0;fd(n,l,32,g)|0;l=n+16|0;s=Tn(f[l>>2]|0,f[l+4>>2]|0,1)|0;l=g+4|0;t=(f[l>>2]|0)-(f[g>>2]|0)|0;o=q;f[o>>2]=t;f[o+4>>2]=0;o=Vn(s|0,I|0,39,0)|0;s=Yn(o|0,I|0,3)|0;o=Vn(s|0,I|0,8,0)|0;s=Vn(o|0,I|0,t|0,0)|0;Cl(g,s,I);s=n+24|0;f[s>>2]=(f[g>>2]|0)+(f[q>>2]|0);q=n+28|0;f[q>>2]=0;t=n+32|0;f[t>>2]=16384;zi(m,r,p,0)|0;p=c-d|0;if((p|0)>-1){c=(d|0)>0;r=m+16|0;o=m+12|0;v=p;do{w=f[e>>2]|0;x=f[w+(((v|0)/(d|0)|0)<<2)>>2]|0;y=f[n>>2]|0;z=f[y+(x<<3)>>2]|0;A=f[t>>2]|0;B=z<<10;if(A>>>0>>0){C=A;D=w}else{w=A;do{A=f[s>>2]|0;E=f[q>>2]|0;f[q>>2]=E+1;b[A+E>>0]=w;w=(f[t>>2]|0)>>>8;f[t>>2]=w}while(w>>>0>=B>>>0);C=w;D=f[e>>2]|0}f[t>>2]=(((C>>>0)/(z>>>0)|0)<<12)+((C>>>0)%(z>>>0)|0)+(f[y+(x<<3)+4>>2]|0);B=p-v|0;E=f[D+(((B|0)/(d|0)|0)<<2)>>2]|0;if(c&(E|0)>0){A=0;do{F=f[a+(A+B<<2)>>2]|0;G=r;H=f[G+4>>2]|0;if((H|0)>0|(H|0)==0&(f[G>>2]|0)>>>0>0){G=f[o>>2]|0;H=G+4|0;J=0;K=f[H>>2]|0;do{L=K>>>3;M=K&7;N=(f[G>>2]|0)+L|0;b[N>>0]=(1<>0]|0);N=(f[G>>2]|0)+L|0;b[N>>0]=(F>>>J&1)<>0]|0);K=(f[H>>2]|0)+1|0;f[H>>2]=K;J=J+1|0}while((J|0)!=(E|0))}A=A+1|0}while((A|0)!=(d|0))}v=v-d|0}while((v|0)>-1)}_f(n,g);eg(m);v=f[m>>2]|0;d=m+4|0;o=g+16|0;r=f[o+4>>2]|0;if(!((r|0)>0|(r|0)==0&(f[o>>2]|0)>>>0>0)){o=(f[d>>2]|0)-v|0;f[k>>2]=f[l>>2];f[j>>2]=f[k>>2];Me(g,j,v,v+o|0)|0}o=f[n>>2]|0;if(o|0){v=n+4|0;n=f[v>>2]|0;if((n|0)!=(o|0))f[v>>2]=n+(~((n+-8-o|0)>>>3)<<3);Oq(o)}o=m+12|0;n=f[o>>2]|0;f[o>>2]=0;if(n|0)Oq(n);n=f[m>>2]|0;if(!n){u=i;return 1}if((f[d>>2]|0)!=(n|0))f[d>>2]=n;Oq(n);u=i;return 1}function ud(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,A=0,B=0,C=0,D=0,E=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Oq(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}d=ln(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)Oq(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=d+16|0;u=d+20|0;v=f[d>>2]|0;d:do if(!v)w=d;else{x=f[d+8>>2]|0;y=d;z=v;while(1){if((x|0)!=(f[z+8>>2]|0)){w=y;break d}if((f[p>>2]|0)!=(f[z+12>>2]|0)){w=y;break d}if((f[t>>2]|0)!=(f[z+16>>2]|0)){w=y;break d}if((f[u>>2]|0)!=(f[z+20>>2]|0)){w=y;break d}A=f[z>>2]|0;if(!A){w=z;break}else{B=z;z=A;y=B}}}while(0);f[i>>2]=f[w>>2];f[w>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){C=43;break a}}}else{d=c;while(1){u=f[d+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(b>>>0)|0;if((D|0)==(j|0)){o=d;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){q=d;r=D;s=u;break b}u=d+12|0;t=d+16|0;p=d+20|0;v=f[d>>2]|0;e:do if(!v)E=d;else{y=f[d+8>>2]|0;z=d;x=v;while(1){if((y|0)!=(f[x+8>>2]|0)){E=z;break e}if((f[u>>2]|0)!=(f[x+12>>2]|0)){E=z;break e}if((f[t>>2]|0)!=(f[x+16>>2]|0)){E=z;break e}if((f[p>>2]|0)!=(f[x+20>>2]|0)){E=z;break e}B=f[x>>2]|0;if(!B){E=x;break}else{A=x;x=B;z=A}}}while(0);f[i>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){C=43;break a}}}while(0);c=f[o>>2]|0;if(!c){C=43;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){C=43;break}else{j=r;k=q;m=q}}if((C|0)==43)return}function vd(a,b){a=a|0;b=b|0;var c=0,e=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,A=0,B=0,C=0,D=0,E=0,F=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=e+12|0;v=f[e>>2]|0;d:do if(!v)w=e;else{x=d[q>>1]|0;y=q+2|0;z=e;A=v;while(1){B=A+8|0;if(x<<16>>16!=(d[B>>1]|0)){w=z;break d}if((d[y>>1]|0)!=(d[B+2>>1]|0)){w=z;break d}if((d[u>>1]|0)!=(d[A+12>>1]|0)){w=z;break d}B=f[A>>2]|0;if(!B){w=A;break}else{C=A;A=B;z=C}}}while(0);f[j>>2]=f[w>>2];f[w>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}else{e=c;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)E=u;else E=(u>>>0)%(b>>>0)|0;if((E|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(E<<2)|0;if(!(f[u>>2]|0)){r=e;s=E;t=u;break b}u=e+8|0;v=e+12|0;q=f[e>>2]|0;e:do if(!q)F=e;else{z=d[u>>1]|0;A=u+2|0;y=e;x=q;while(1){C=x+8|0;if(z<<16>>16!=(d[C>>1]|0)){F=y;break e}if((d[A>>1]|0)!=(d[C+2>>1]|0)){F=y;break e}if((d[v>>1]|0)!=(d[x+12>>1]|0)){F=y;break e}C=f[x>>2]|0;if(!C){F=x;break}else{B=x;x=C;y=B}}}while(0);f[j>>2]=f[F>>2];f[F>>2]=f[f[(f[a>>2]|0)+(E<<2)>>2]>>2];f[f[(f[a>>2]|0)+(E<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}while(0);c=f[p>>2]|0;if(!c){D=41;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){D=41;break}else{k=s;l=r;n=r}}if((D|0)==41)return}function wd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0,F=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=q+1|0;v=q+2|0;w=f[e>>2]|0;d:do if(!w)x=e;else{y=b[q>>0]|0;z=e;A=w;while(1){B=A+8|0;if(y<<24>>24!=(b[B>>0]|0)){x=z;break d}if((b[u>>0]|0)!=(b[B+1>>0]|0)){x=z;break d}if((b[v>>0]|0)!=(b[B+2>>0]|0)){x=z;break d}B=f[A>>2]|0;if(!B){x=A;break}else{C=A;A=B;z=C}}}while(0);f[j>>2]=f[x>>2];f[x>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}else{e=d;while(1){v=f[e+4>>2]|0;if(v>>>0>>0)E=v;else E=(v>>>0)%(c>>>0)|0;if((E|0)==(k|0)){p=e;break c}v=(f[a>>2]|0)+(E<<2)|0;if(!(f[v>>2]|0)){r=e;s=E;t=v;break b}v=e+8|0;u=v+1|0;w=v+2|0;q=f[e>>2]|0;e:do if(!q)F=e;else{z=b[v>>0]|0;A=e;y=q;while(1){C=y+8|0;if(z<<24>>24!=(b[C>>0]|0)){F=A;break e}if((b[u>>0]|0)!=(b[C+1>>0]|0)){F=A;break e}if((b[w>>0]|0)!=(b[C+2>>0]|0)){F=A;break e}C=f[y>>2]|0;if(!C){F=y;break}else{B=y;y=C;A=B}}}while(0);f[j>>2]=f[F>>2];f[F>>2]=f[f[(f[a>>2]|0)+(E<<2)>>2]>>2];f[f[(f[a>>2]|0)+(E<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){D=41;break a}}}while(0);d=f[p>>2]|0;if(!d){D=41;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){D=41;break}else{k=s;l=r;n=r}}if((D|0)==41)return}function xd(a,b){a=+a;b=+b;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0.0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;p[s>>3]=b;e=f[s>>2]|0;g=f[s+4>>2]|0;h=Yn(c|0,d|0,52)|0;i=h&2047;h=Yn(e|0,g|0,52)|0;j=h&2047;h=d&-2147483648;k=Tn(e|0,g|0,1)|0;l=I;a:do if(!((k|0)==0&(l|0)==0)?(m=yo(b)|0,n=I&2147483647,!((i|0)==2047|(n>>>0>2146435072|(n|0)==2146435072&m>>>0>0))):0){m=Tn(c|0,d|0,1)|0;n=I;if(!(n>>>0>l>>>0|(n|0)==(l|0)&m>>>0>k>>>0))return +((m|0)==(k|0)&(n|0)==(l|0)?a*0.0:a);if(!i){n=Tn(c|0,d|0,12)|0;m=I;if((m|0)>-1|(m|0)==-1&n>>>0>4294967295){o=0;q=n;n=m;while(1){m=o+-1|0;q=Tn(q|0,n|0,1)|0;n=I;if(!((n|0)>-1|(n|0)==-1&q>>>0>4294967295)){r=m;break}else o=m}}else r=0;o=Tn(c|0,d|0,1-r|0)|0;t=r;u=o;v=I}else{t=i;u=c;v=d&1048575|1048576}if(!j){o=Tn(e|0,g|0,12)|0;q=I;if((q|0)>-1|(q|0)==-1&o>>>0>4294967295){n=0;m=o;o=q;while(1){q=n+-1|0;m=Tn(m|0,o|0,1)|0;o=I;if(!((o|0)>-1|(o|0)==-1&m>>>0>4294967295)){w=q;break}else n=q}}else w=0;n=Tn(e|0,g|0,1-w|0)|0;x=w;y=n;z=I}else{x=j;y=e;z=g&1048575|1048576}n=Xn(u|0,v|0,y|0,z|0)|0;m=I;o=(m|0)>-1|(m|0)==-1&n>>>0>4294967295;b:do if((t|0)>(x|0)){q=t;A=m;B=o;C=u;D=v;E=n;while(1){if(B)if((E|0)==0&(A|0)==0)break;else{F=E;G=A}else{F=C;G=D}H=Tn(F|0,G|0,1)|0;J=I;K=q+-1|0;L=Xn(H|0,J|0,y|0,z|0)|0;M=I;N=(M|0)>-1|(M|0)==-1&L>>>0>4294967295;if((K|0)>(x|0)){q=K;A=M;B=N;C=H;D=J;E=L}else{O=K;P=N;Q=L;R=M;S=H;T=J;break b}}U=a*0.0;break a}else{O=t;P=o;Q=n;R=m;S=u;T=v}while(0);if(P)if((Q|0)==0&(R|0)==0){U=a*0.0;break}else{V=R;W=Q}else{V=T;W=S}if(V>>>0<1048576|(V|0)==1048576&W>>>0<0){m=O;n=W;o=V;while(1){E=Tn(n|0,o|0,1)|0;D=I;C=m+-1|0;if(D>>>0<1048576|(D|0)==1048576&E>>>0<0){m=C;n=E;o=D}else{X=C;Y=E;Z=D;break}}}else{X=O;Y=W;Z=V}if((X|0)>0){o=Vn(Y|0,Z|0,0,-1048576)|0;n=I;m=Tn(X|0,0,52)|0;_=n|I;$=o|m}else{m=Yn(Y|0,Z|0,1-X|0)|0;_=I;$=m}f[s>>2]=$;f[s+4>>2]=_|h;U=+p[s>>3]}else aa=3;while(0);if((aa|0)==3){ba=a*b;U=ba/ba}return +U}function yd(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0,w=0,x=0,y=0;d=u;u=u+32|0;e=d+8|0;g=d;h=c+4|0;i=f[(f[h>>2]|0)+48>>2]|0;j=c+12|0;c=f[j>>2]|0;k=ln(32)|0;f[e>>2]=k;f[e+8>>2]=-2147483616;f[e+4>>2]=17;l=k;m=14495;n=l+17|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[k+17>>0]=0;k=i+16|0;m=f[k>>2]|0;if(m){l=k;n=m;a:while(1){m=n;while(1){if((f[m+16>>2]|0)>=(c|0))break;o=f[m+4>>2]|0;if(!o){p=l;break a}else m=o}n=f[m>>2]|0;if(!n){p=m;break}else l=m}if(((p|0)!=(k|0)?(c|0)>=(f[p+16>>2]|0):0)?(c=p+20|0,(Jh(c,e)|0)!=0):0)q=Hk(c,e,-1)|0;else r=10}else r=10;if((r|0)==10)q=Hk(i,e,-1)|0;if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;i=(_((1<>>0<=28){f[e>>2]=i+1;q=2<>2]=q+-1;i=q+-2|0;f[e+8>>2]=i;f[e+12>>2]=(i|0)/2|0}switch(Xi(f[j>>2]|0,f[h>>2]|0)|0){case 6:{i=f[j>>2]|0;q=f[h>>2]|0;c=f[(f[(f[q+4>>2]|0)+8>>2]|0)+(i<<2)>>2]|0;do if((Qa[f[(f[q>>2]|0)+8>>2]&127](q)|0)==1){Hf(g,q,6,i,e,514);p=f[g>>2]|0;if(!p){f[g>>2]=0;s=g;r=21;break}else{t=g;v=p;break}}else{s=g;r=21}while(0);if((r|0)==21){i=ln(24)|0;f[i+4>>2]=c;c=i+8|0;f[c>>2]=f[e>>2];f[c+4>>2]=f[e+4>>2];f[c+8>>2]=f[e+8>>2];f[c+12>>2]=f[e+12>>2];f[i>>2]=2560;c=i;f[g>>2]=c;t=s;v=c}f[a>>2]=v;f[t>>2]=0;u=d;return}case 0:{t=f[j>>2]|0;j=f[h>>2]|0;h=f[(f[(f[j+4>>2]|0)+8>>2]|0)+(t<<2)>>2]|0;do if((Qa[f[(f[j>>2]|0)+8>>2]&127](j)|0)==1){Hf(g,j,0,t,e,514);v=f[g>>2]|0;if(!v){f[g>>2]=0;w=g;r=28;break}else{x=g;y=v;break}}else{w=g;r=28}while(0);if((r|0)==28){r=ln(24)|0;f[r+4>>2]=h;h=r+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[r>>2]=2560;e=r;f[g>>2]=e;x=w;y=e}f[a>>2]=y;f[x>>2]=0;u=d;return}default:{f[a>>2]=0;u=d;return}}}function zd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,A=0,B=0,C=0,D=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Oq(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}d=ln(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)Oq(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=d+16|0;u=f[d>>2]|0;d:do if(!u)v=d;else{w=f[d+8>>2]|0;x=d;y=u;while(1){if((w|0)!=(f[y+8>>2]|0)){v=x;break d}if((f[p>>2]|0)!=(f[y+12>>2]|0)){v=x;break d}if((f[t>>2]|0)!=(f[y+16>>2]|0)){v=x;break d}z=f[y>>2]|0;if(!z){v=y;break}else{A=y;y=z;x=A}}}while(0);f[i>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){B=41;break a}}}else{d=c;while(1){t=f[d+4>>2]|0;if(t>>>0>>0)C=t;else C=(t>>>0)%(b>>>0)|0;if((C|0)==(j|0)){o=d;break c}t=(f[a>>2]|0)+(C<<2)|0;if(!(f[t>>2]|0)){q=d;r=C;s=t;break b}t=d+12|0;p=d+16|0;u=f[d>>2]|0;e:do if(!u)D=d;else{x=f[d+8>>2]|0;y=d;w=u;while(1){if((x|0)!=(f[w+8>>2]|0)){D=y;break e}if((f[t>>2]|0)!=(f[w+12>>2]|0)){D=y;break e}if((f[p>>2]|0)!=(f[w+16>>2]|0)){D=y;break e}A=f[w>>2]|0;if(!A){D=w;break}else{z=w;w=A;y=z}}}while(0);f[i>>2]=f[D>>2];f[D>>2]=f[f[(f[a>>2]|0)+(C<<2)>>2]>>2];f[f[(f[a>>2]|0)+(C<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){B=41;break a}}}while(0);c=f[o>>2]|0;if(!c){B=41;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){B=41;break}else{j=r;k=q;m=q}}if((B|0)==41)return}function Ad(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0;switch(c|0){case 1:{c=ln(40)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2980;i=c;f[a>>2]=i;return}case 2:{c=ln(40)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=3036;i=c;f[a>>2]=i;return}case 4:{c=ln(152)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=3092;h=c+96|0;b=c+40|0;j=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));Zm(h);f[c+136>>2]=0;f[c+140>>2]=0;f[c+144>>2]=0;i=c;f[a>>2]=i;return}case 3:{c=ln(68)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=3148;h=c+40|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;f[h+16>>2]=0;f[h+20>>2]=0;f[h+24>>2]=0;i=c;f[a>>2]=i;return}case 5:{c=ln(84)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=3204;f[c+40>>2]=0;f[c+44>>2]=0;f[c+56>>2]=0;f[c+60>>2]=0;f[c+64>>2]=0;h=c+68|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=ln(120)|0;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];e=c+24|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=3260;f[c+44>>2]=0;f[c+48>>2]=0;e=c+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+40>>2]=3316;f[c+68>>2]=1;g=c+72|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;wn(c+88|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Bd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){o=d;while(1){e=f[o+4>>2]|0;if(!i)if(e>>>0>>0)p=e;else p=(e>>>0)%(c>>>0)|0;else p=e&h;if((p|0)==(k|0))break;q=(f[a>>2]|0)+(p<<2)|0;if(!(f[q>>2]|0))break b;e=f[o>>2]|0;c:do if(!e)r=o;else{s=o+8|0;t=b[s+11>>0]|0;u=t<<24>>24<0;v=t&255;t=u?f[o+12>>2]|0:v;w=(t|0)==0;if(u){u=o;x=e;while(1){y=x+8|0;z=b[y+11>>0]|0;A=z<<24>>24<0;if((t|0)!=((A?f[x+12>>2]|0:z&255)|0)){r=u;break c}if(!w?Vk(f[s>>2]|0,A?f[y>>2]|0:y,t)|0:0){r=u;break c}y=f[x>>2]|0;if(!y){r=x;break c}else{A=x;x=y;u=A}}}if(w){u=o;x=e;while(1){A=b[x+8+11>>0]|0;if((A<<24>>24<0?f[x+12>>2]|0:A&255)|0){r=u;break c}A=f[x>>2]|0;if(!A){r=x;break c}else{y=x;x=A;u=y}}}u=o;x=e;while(1){w=x+8|0;y=b[w+11>>0]|0;A=y<<24>>24<0;if((t|0)!=((A?f[x+12>>2]|0:y&255)|0)){r=u;break c}y=A?f[w>>2]|0:w;if((b[y>>0]|0)==(f[s>>2]&255)<<24>>24){B=s;C=v;D=y}else{r=u;break c}while(1){C=C+-1|0;B=B+1|0;if(!C)break;D=D+1|0;if((b[B>>0]|0)!=(b[D>>0]|0)){r=u;break c}}y=f[x>>2]|0;if(!y){r=x;break}else{w=x;x=y;u=w}}}while(0);f[j>>2]=f[r>>2];f[r>>2]=f[f[(f[a>>2]|0)+(p<<2)>>2]>>2];f[f[(f[a>>2]|0)+(p<<2)>>2]>>2]=o;e=f[g>>2]|0;if(!e){E=43;break a}else o=e}d=f[o>>2]|0;if(!d){E=43;break a}else{g=o;j=o}}f[q>>2]=j;m=f[o>>2]|0;if(!m){E=43;break}else{k=p;l=o;n=o}}if((E|0)==43)return}function Cd(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0;switch(c|0){case 1:{c=ln(40)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2616;i=c;f[a>>2]=i;return}case 2:{c=ln(40)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2672;i=c;f[a>>2]=i;return}case 4:{c=ln(152)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2728;h=c+96|0;b=c+40|0;j=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));Zm(h);f[c+136>>2]=0;f[c+140>>2]=0;f[c+144>>2]=0;i=c;f[a>>2]=i;return}case 3:{c=ln(68)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2784;h=c+40|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;f[h+16>>2]=0;f[h+20>>2]=0;f[h+24>>2]=0;i=c;f[a>>2]=i;return}case 5:{c=ln(84)|0;f[c+4>>2]=d;h=c+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];h=c+24|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[c>>2]=2840;f[c+40>>2]=0;f[c+44>>2]=0;f[c+56>>2]=0;f[c+60>>2]=0;f[c+64>>2]=0;h=c+68|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];i=c;f[a>>2]=i;return}case 6:{c=ln(120)|0;f[c+4>>2]=d;d=c+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];e=c+24|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c>>2]=2896;f[c+44>>2]=0;f[c+48>>2]=0;e=c+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[c+40>>2]=2952;f[c+68>>2]=1;g=c+72|0;f[g>>2]=-1;f[g+4>>2]=-1;f[g+8>>2]=-1;f[g+12>>2]=-1;wn(c+88|0);i=c;f[a>>2]=i;return}default:{i=0;f[a>>2]=i;return}}}function Dd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+48|0;d=c+8|0;e=c+4|0;g=c;h=a+44|0;ci(f[h>>2]|0,b)|0;if(f[h>>2]|0){wn(d);tk(d);i=(f[h>>2]|0)+-1|0;if((i|0)>-1){h=a+40|0;j=i;do{fj(d,(f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0);j=j+-1|0}while((j|0)>-1)}ld(d,b);Fj(d)}j=a+56|0;ci(f[j>>2]|0,b)|0;if(f[j>>2]|0){wn(d);tk(d);h=(f[j>>2]|0)+-2|0;if((h|0)>-1){j=a+52|0;i=h;do{fj(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);h=i+1|0;fj(d,(f[(f[j>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)!=0);i=i+-2|0}while((i|0)>-1)}ld(d,b);Fj(d)}i=a+68|0;ci(f[i>>2]|0,b)|0;if(f[i>>2]|0){wn(d);tk(d);j=(f[i>>2]|0)+-3|0;if((j|0)>-1){i=a+64|0;h=j;do{fj(d,(f[(f[i>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)!=0);j=h+1|0;fj(d,(f[(f[i>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0);j=h+2|0;fj(d,(f[(f[i>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0);h=h+-3|0}while((h|0)>-1)}ld(d,b);Fj(d)}h=a+80|0;ci(f[h>>2]|0,b)|0;if(f[h>>2]|0){wn(d);tk(d);i=(f[h>>2]|0)+-4|0;if((i|0)>-1){h=a+76|0;j=i;do{fj(d,(f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0);i=j+1|0;fj(d,(f[(f[h>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);i=j+2|0;fj(d,(f[(f[h>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);i=j+3|0;fj(d,(f[(f[h>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);j=j+-4|0}while((j|0)>-1)}ld(d,b);Fj(d)}f[g>>2]=f[a+12>>2];j=b+16|0;h=j;i=f[h>>2]|0;k=f[h+4>>2]|0;if((k|0)>0|(k|0)==0&i>>>0>0){l=k;m=i}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;i=j;l=f[i+4>>2]|0;m=f[i>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;u=c;return 1}function Ed(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+48|0;d=c+8|0;e=c+4|0;g=c;h=a+64|0;ci(f[h>>2]|0,b)|0;if(f[h>>2]|0){wn(d);tk(d);i=(f[h>>2]|0)+-1|0;if((i|0)>-1){h=a+60|0;j=i;do{fj(d,(f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0);j=j+-1|0}while((j|0)>-1)}ld(d,b);Fj(d)}j=a+76|0;ci(f[j>>2]|0,b)|0;if(f[j>>2]|0){wn(d);tk(d);h=(f[j>>2]|0)+-2|0;if((h|0)>-1){j=a+72|0;i=h;do{fj(d,(f[(f[j>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);h=i+1|0;fj(d,(f[(f[j>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)!=0);i=i+-2|0}while((i|0)>-1)}ld(d,b);Fj(d)}i=a+88|0;ci(f[i>>2]|0,b)|0;if(f[i>>2]|0){wn(d);tk(d);j=(f[i>>2]|0)+-3|0;if((j|0)>-1){i=a+84|0;h=j;do{fj(d,(f[(f[i>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0)!=0);j=h+1|0;fj(d,(f[(f[i>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0);j=h+2|0;fj(d,(f[(f[i>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0);h=h+-3|0}while((h|0)>-1)}ld(d,b);Fj(d)}h=a+100|0;ci(f[h>>2]|0,b)|0;if(f[h>>2]|0){wn(d);tk(d);i=(f[h>>2]|0)+-4|0;if((i|0)>-1){h=a+96|0;j=i;do{fj(d,(f[(f[h>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)|0)!=0);i=j+1|0;fj(d,(f[(f[h>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);i=j+2|0;fj(d,(f[(f[h>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);i=j+3|0;fj(d,(f[(f[h>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)!=0);j=j+-4|0}while((j|0)>-1)}ld(d,b);Fj(d)}f[g>>2]=f[a+12>>2];j=b+16|0;h=j;i=f[h>>2]|0;k=f[h+4>>2]|0;if((k|0)>0|(k|0)==0&i>>>0>0){l=k;m=i}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;i=j;l=f[i+4>>2]|0;m=f[i>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;u=c;return 1}function Fd(a,b){a=a|0;b=b|0;var c=0,e=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,A=0,B=0,C=0,D=0,E=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){g=l;c=m;j=n;b:while(1){c:do if(i){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=f[e>>2]|0;d:do if(!u)v=e;else{w=d[q>>1]|0;x=q+2|0;y=e;z=u;while(1){A=z+8|0;if(w<<16>>16!=(d[A>>1]|0)){v=y;break d}if((d[x>>1]|0)!=(d[A+2>>1]|0)){v=y;break d}A=f[z>>2]|0;if(!A){v=z;break}else{B=z;z=A;y=B}}}while(0);f[j>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}else{e=c;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(b>>>0)|0;if((D|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){r=e;s=D;t=u;break b}u=e+8|0;q=f[e>>2]|0;e:do if(!q)E=e;else{y=d[u>>1]|0;z=u+2|0;x=e;w=q;while(1){B=w+8|0;if(y<<16>>16!=(d[B>>1]|0)){E=x;break e}if((d[z>>1]|0)!=(d[B+2>>1]|0)){E=x;break e}B=f[w>>2]|0;if(!B){E=w;break}else{A=w;w=B;x=A}}}while(0);f[j>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}while(0);c=f[p>>2]|0;if(!c){C=39;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){C=39;break}else{k=s;l=r;n=r}}if((C|0)==39)return}function Gd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){g=l;d=m;j=n;b:while(1){c:do if(i){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0)){p=e;break c}q=(f[a>>2]|0)+(o<<2)|0;if(!(f[q>>2]|0)){r=e;s=o;t=q;break b}q=e+8|0;u=f[e>>2]|0;d:do if(!u)v=e;else{w=b[q>>0]|0;x=q+1|0;y=e;z=u;while(1){A=z+8|0;if(w<<24>>24!=(b[A>>0]|0)){v=y;break d}if((b[x>>0]|0)!=(b[A+1>>0]|0)){v=y;break d}A=f[z>>2]|0;if(!A){v=z;break}else{B=z;z=A;y=B}}}while(0);f[j>>2]=f[v>>2];f[v>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}else{e=d;while(1){u=f[e+4>>2]|0;if(u>>>0>>0)D=u;else D=(u>>>0)%(c>>>0)|0;if((D|0)==(k|0)){p=e;break c}u=(f[a>>2]|0)+(D<<2)|0;if(!(f[u>>2]|0)){r=e;s=D;t=u;break b}u=e+8|0;q=f[e>>2]|0;e:do if(!q)E=e;else{y=b[u>>0]|0;z=u+1|0;x=e;w=q;while(1){B=w+8|0;if(y<<24>>24!=(b[B>>0]|0)){E=x;break e}if((b[z>>0]|0)!=(b[B+1>>0]|0)){E=x;break e}B=f[w>>2]|0;if(!B){E=w;break}else{A=w;w=B;x=A}}}while(0);f[j>>2]=f[E>>2];f[E>>2]=f[f[(f[a>>2]|0)+(D<<2)>>2]>>2];f[f[(f[a>>2]|0)+(D<<2)>>2]>>2]=e;e=f[g>>2]|0;if(!e){C=39;break a}}}while(0);d=f[p>>2]|0;if(!d){C=39;break a}else{g=p;j=p}}f[t>>2]=j;m=f[r>>2]|0;if(!m){C=39;break}else{k=s;l=r;n=r}}if((C|0)==39)return}function Hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;c=u;u=u+48|0;d=c+32|0;e=c+28|0;g=c+16|0;h=c;i=a+16|0;j=f[i>>2]|0;if(j|0){k=f[b>>2]|0;l=i;m=j;a:while(1){j=m;while(1){if((f[j+16>>2]|0)>=(k|0))break;n=f[j+4>>2]|0;if(!n){o=l;break a}else j=n}m=f[j>>2]|0;if(!m){o=j;break}else l=j}if((o|0)!=(i|0)?(k|0)>=(f[o+16>>2]|0):0){p=o;q=p+20|0;u=c;return q|0}}lp(g);f[h>>2]=f[b>>2];b=h+4|0;f[h+8>>2]=0;o=h+12|0;f[o>>2]=0;k=h+8|0;f[b>>2]=k;l=f[g>>2]|0;m=g+4|0;if((l|0)!=(m|0)){n=k;r=l;while(1){l=r+16|0;f[e>>2]=n;f[d>>2]=f[e>>2];ph(b,d,l,l)|0;l=f[r+4>>2]|0;if(!l){s=r+8|0;t=f[s>>2]|0;if((f[t>>2]|0)==(r|0))v=t;else{t=s;do{s=f[t>>2]|0;t=s+8|0;w=f[t>>2]|0}while((f[w>>2]|0)!=(s|0));v=w}}else{t=l;while(1){j=f[t>>2]|0;if(!j)break;else t=j}v=t}if((v|0)==(m|0))break;else r=v}}v=a+12|0;r=f[i>>2]|0;do if(r){d=f[h>>2]|0;e=a+16|0;n=r;while(1){l=f[n+16>>2]|0;if((d|0)<(l|0)){j=f[n>>2]|0;if(!j){x=23;break}else{y=n;z=j}}else{if((l|0)>=(d|0)){x=27;break}A=n+4|0;l=f[A>>2]|0;if(!l){x=26;break}else{y=A;z=l}}e=y;n=z}if((x|0)==23){B=n;C=n;break}else if((x|0)==26){B=n;C=A;break}else if((x|0)==27){B=n;C=e;break}}else{B=i;C=i}while(0);i=f[C>>2]|0;if(!i){x=ln(32)|0;f[x+16>>2]=f[h>>2];A=x+20|0;f[A>>2]=f[b>>2];z=x+24|0;y=f[h+8>>2]|0;f[z>>2]=y;r=f[o>>2]|0;f[x+28>>2]=r;if(!r)f[A>>2]=z;else{f[y+8>>2]=z;f[b>>2]=k;f[k>>2]=0;f[o>>2]=0}f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=B;f[C>>2]=x;B=f[f[v>>2]>>2]|0;if(!B)D=x;else{f[v>>2]=B;D=f[C>>2]|0}Oe(f[a+16>>2]|0,D);D=a+20|0;f[D>>2]=(f[D>>2]|0)+1;E=x}else E=i;Ej(h+4|0,f[k>>2]|0);Ej(g,f[m>>2]|0);p=E;q=p+20|0;u=c;return q|0}function Id(a,c){a=a|0;c=c|0;var d=0,e=0,g=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;d=b[c+11>>0]|0;e=d<<24>>24<0;g=e?f[c>>2]|0:c;i=e?f[c+4>>2]|0:d&255;if(i>>>0>3){d=g;c=i;e=i;while(1){j=X(h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24,1540483477)|0;c=(X(j>>>24^j,1540483477)|0)^(X(c,1540483477)|0);e=e+-4|0;if(e>>>0<=3)break;else d=d+4|0}d=i+-4|0;e=d&-4;k=d-e|0;l=g+(e+4)|0;m=c}else{k=i;l=g;m=i}switch(k|0){case 3:{n=h[l+2>>0]<<16^m;o=6;break}case 2:{n=m;o=6;break}case 1:{p=m;o=7;break}default:q=m}if((o|0)==6){p=h[l+1>>0]<<8^n;o=7}if((o|0)==7)q=X(p^h[l>>0],1540483477)|0;l=X(q>>>13^q,1540483477)|0;q=l>>>15^l;l=f[a+4>>2]|0;if(!l){r=0;return r|0}p=l+-1|0;n=(p&l|0)==0;if(!n)if(q>>>0>>0)s=q;else s=(q>>>0)%(l>>>0)|0;else s=q&p;m=f[(f[a>>2]|0)+(s<<2)>>2]|0;if(!m){r=0;return r|0}a=f[m>>2]|0;if(!a){r=0;return r|0}m=(i|0)==0;if(n){n=a;a:while(1){k=f[n+4>>2]|0;c=(k|0)==(q|0);if(!(c|(k&p|0)==(s|0))){r=0;o=40;break}do if(c?(k=n+8|0,e=b[k+11>>0]|0,d=e<<24>>24<0,j=e&255,((d?f[n+12>>2]|0:j)|0)==(i|0)):0){e=f[k>>2]|0;t=d?e:k;if(d){if(m){r=n;o=40;break a}if(!(Vk(t,g,i)|0)){r=n;o=40;break a}else break}if(m){r=n;o=40;break a}if((b[g>>0]|0)==(e&255)<<24>>24){e=k;k=j;j=g;do{k=k+-1|0;e=e+1|0;if(!k){r=n;o=40;break a}j=j+1|0}while((b[e>>0]|0)==(b[j>>0]|0))}}while(0);n=f[n>>2]|0;if(!n){r=0;o=40;break}}if((o|0)==40)return r|0}else u=a;b:while(1){a=f[u+4>>2]|0;do if((a|0)==(q|0)){n=u+8|0;p=b[n+11>>0]|0;c=p<<24>>24<0;j=p&255;if(((c?f[u+12>>2]|0:j)|0)==(i|0)){p=f[n>>2]|0;e=c?p:n;if(c){if(m){r=u;o=40;break b}if(!(Vk(e,g,i)|0)){r=u;o=40;break b}else break}if(m){r=u;o=40;break b}if((b[g>>0]|0)==(p&255)<<24>>24){p=n;n=j;j=g;do{n=n+-1|0;p=p+1|0;if(!n){r=u;o=40;break b}j=j+1|0}while((b[p>>0]|0)==(b[j>>0]|0))}}}else{if(a>>>0>>0)v=a;else v=(a>>>0)%(l>>>0)|0;if((v|0)!=(s|0)){r=0;o=40;break b}}while(0);u=f[u>>2]|0;if(!u){r=0;o=40;break}}if((o|0)==40)return r|0;return 0}function Jd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,A=0,B=0,C=0;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Oq(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}d=ln(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)Oq(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){e=k;c=l;i=m;b:while(1){c:do if(h){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(n<<2)|0;if(!(f[p>>2]|0)){q=d;r=n;s=p;break b}p=d+12|0;t=f[d>>2]|0;d:do if(!t)u=d;else{v=f[d+8>>2]|0;w=d;x=t;while(1){if((v|0)!=(f[x+8>>2]|0)){u=w;break d}if((f[p>>2]|0)!=(f[x+12>>2]|0)){u=w;break d}y=f[x>>2]|0;if(!y){u=x;break}else{z=x;x=y;w=z}}}while(0);f[i>>2]=f[u>>2];f[u>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){A=39;break a}}}else{d=c;while(1){p=f[d+4>>2]|0;if(p>>>0>>0)B=p;else B=(p>>>0)%(b>>>0)|0;if((B|0)==(j|0)){o=d;break c}p=(f[a>>2]|0)+(B<<2)|0;if(!(f[p>>2]|0)){q=d;r=B;s=p;break b}p=d+12|0;t=f[d>>2]|0;e:do if(!t)C=d;else{w=f[d+8>>2]|0;x=d;v=t;while(1){if((w|0)!=(f[v+8>>2]|0)){C=x;break e}if((f[p>>2]|0)!=(f[v+12>>2]|0)){C=x;break e}z=f[v>>2]|0;if(!z){C=v;break}else{y=v;v=z;x=y}}}while(0);f[i>>2]=f[C>>2];f[C>>2]=f[f[(f[a>>2]|0)+(B<<2)>>2]>>2];f[f[(f[a>>2]|0)+(B<<2)>>2]>>2]=d;d=f[e>>2]|0;if(!d){A=39;break a}}}while(0);c=f[o>>2]|0;if(!c){A=39;break a}else{e=o;i=o}}f[s>>2]=i;l=f[q>>2]|0;if(!l){A=39;break}else{j=r;k=q;m=q}}if((A|0)==39)return}function Kd(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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;h=a+4|0;i=f[c>>2]|0;c=i;do if((i|0)!=(h|0)){j=i+16|0;k=b[j+11>>0]|0;l=k<<24>>24<0;m=l?f[i+20>>2]|0:k&255;k=b[g+11>>0]|0;n=k<<24>>24<0;o=n?f[g+4>>2]|0:k&255;k=m>>>0>>0;p=k?m:o;if((p|0)!=0?(q=Vk(n?f[g>>2]|0:g,l?f[j>>2]|0:j,p)|0,(q|0)!=0):0){if((q|0)<0)break}else r=4;if((r|0)==4?o>>>0>>0:0)break;q=o>>>0>>0?o:m;if((q|0)!=0?(m=Vk(l?f[j>>2]|0:j,n?f[g>>2]|0:g,q)|0,(m|0)!=0):0){if((m|0)>=0)r=37}else r=21;if((r|0)==21?!k:0)r=37;if((r|0)==37){f[d>>2]=c;f[e>>2]=c;s=e;return s|0}k=f[i+4>>2]|0;m=(k|0)==0;if(m){q=i+8|0;j=f[q>>2]|0;if((f[j>>2]|0)==(i|0))t=j;else{j=q;do{q=f[j>>2]|0;j=q+8|0;l=f[j>>2]|0}while((f[l>>2]|0)!=(q|0));t=l}}else{j=k;while(1){l=f[j>>2]|0;if(!l)break;else j=l}t=j}do if((t|0)!=(h|0)){k=t+16|0;l=b[k+11>>0]|0;q=l<<24>>24<0;p=q?f[t+20>>2]|0:l&255;l=p>>>0>>0?p:o;if((l|0)!=0?(u=Vk(n?f[g>>2]|0:g,q?f[k>>2]|0:k,l)|0,(u|0)!=0):0){if((u|0)<0)break}else r=31;if((r|0)==31?o>>>0

>>0:0)break;s=yg(a,d,g)|0;return s|0}while(0);if(m){f[d>>2]=c;s=i+4|0;return s|0}else{f[d>>2]=t;s=t;return s|0}}while(0);t=f[i>>2]|0;do if((f[a>>2]|0)==(i|0))v=c;else{if(!t){h=i;while(1){e=f[h+8>>2]|0;if((f[e>>2]|0)==(h|0))h=e;else{w=e;break}}}else{h=t;while(1){m=f[h+4>>2]|0;if(!m){w=h;break}else h=m}}h=w;m=w+16|0;e=b[g+11>>0]|0;o=e<<24>>24<0;n=o?f[g+4>>2]|0:e&255;e=b[m+11>>0]|0;j=e<<24>>24<0;p=j?f[w+20>>2]|0:e&255;e=n>>>0

>>0?n:p;if((e|0)!=0?(u=Vk(j?f[m>>2]|0:m,o?f[g>>2]|0:g,e)|0,(u|0)!=0):0){if((u|0)<0){v=h;break}}else r=13;if((r|0)==13?p>>>0>>0:0){v=h;break}s=yg(a,d,g)|0;return s|0}while(0);if(!t){f[d>>2]=i;s=i;return s|0}else{f[d>>2]=v;s=v+4|0;return s|0}return 0}function Ld(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;g=a;h=b;i=h;j=c;k=d;l=k;if(!i){m=(e|0)!=0;if(!l){if(m){f[e>>2]=(g>>>0)%(j>>>0);f[e+4>>2]=0}n=0;o=(g>>>0)/(j>>>0)>>>0;return (I=n,o)|0}else{if(!m){n=0;o=0;return (I=n,o)|0}f[e>>2]=a|0;f[e+4>>2]=b&0;n=0;o=0;return (I=n,o)|0}}m=(l|0)==0;do if(j){if(!m){p=(_(l|0)|0)-(_(i|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=g>>>(q>>>0)&s|i<>>(q>>>0)&s;w=0;x=g<>2]=a|0;f[e+4>>2]=h|b&0;n=0;o=0;return (I=n,o)|0}r=j-1|0;if(r&j|0){s=(_(j|0)|0)+33-(_(i|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&i>>>(z>>>0)|(i<>>(s>>>0))&A;v=A&i>>>(s>>>0);w=g<>>(z>>>0))&y|g<>31;break}if(e|0){f[e>>2]=r&g;f[e+4>>2]=0}if((j|0)==1){n=h|b&0;o=a|0|0;return (I=n,o)|0}else{r=vm(j|0)|0;n=i>>>(r>>>0)|0;o=i<<32-r|g>>>(r>>>0)|0;return (I=n,o)|0}}else{if(m){if(e|0){f[e>>2]=(i>>>0)%(j>>>0);f[e+4>>2]=0}n=0;o=(i>>>0)/(j>>>0)>>>0;return (I=n,o)|0}if(!g){if(e|0){f[e>>2]=0;f[e+4>>2]=(i>>>0)%(l>>>0)}n=0;o=(i>>>0)/(l>>>0)>>>0;return (I=n,o)|0}r=l-1|0;if(!(r&l)){if(e|0){f[e>>2]=a|0;f[e+4>>2]=r&i|b&0}n=0;o=i>>>((vm(l|0)|0)>>>0);return (I=n,o)|0}r=(_(l|0)|0)-(_(i|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=i<>>(s>>>0);v=i>>>(s>>>0);w=0;x=g<>2]=a|0;f[e+4>>2]=h|b&0;n=0;o=0;return (I=n,o)|0}while(0);if(!t){B=x;C=w;D=v;E=u;F=0;G=0}else{b=c|0|0;c=k|d&0;d=Vn(b|0,c|0,-1,-1)|0;k=I;h=x;x=w;w=v;v=u;u=t;t=0;do{a=h;h=x>>>31|h<<1;x=t|x<<1;g=v<<1|a>>>31|0;a=v>>>31|w<<1|0;Xn(d|0,k|0,g|0,a|0)|0;i=I;l=i>>31|((i|0)<0?-1:0)<<1;t=l&1;v=Xn(g|0,a|0,l&b|0,(((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1)&c|0)|0;w=I;u=u-1|0}while((u|0)!=0);B=h;C=x;D=w;E=v;F=0;G=t}t=C;C=0;if(e|0){f[e>>2]=E;f[e+4>>2]=D}n=(t|0)>>>31|(B|C)<<1|(C<<1|t>>>31)&0|F;o=(t<<1|0>>>31)&-2|G;return (I=n,o)|0}function Md(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=u;u=u+16|0;h=g;f[c+48>>2]=d;f[c+44>>2]=e;e=f[c+8>>2]|0;d=c+12|0;i=f[d>>2]|0;if((i|0)!=(e|0)){j=i;do{i=j+-4|0;f[d>>2]=i;k=f[i>>2]|0;f[i>>2]=0;if(k|0)Va[f[(f[k>>2]|0)+4>>2]&127](k);j=f[d>>2]|0}while((j|0)!=(e|0))}e=f[c+20>>2]|0;j=c+24|0;d=f[j>>2]|0;if((d|0)!=(e|0))f[j>>2]=d+(~((d+-4-e|0)>>>2)<<2);e=f[c+32>>2]|0;d=c+36|0;j=f[d>>2]|0;if((j|0)!=(e|0))f[d>>2]=j+(~((j+-4-e|0)>>>2)<<2);if(!(f[c+4>>2]|0)){e=ln(32)|0;f[h>>2]=e;f[h+8>>2]=-2147483616;f[h+4>>2]=23;l=e;m=15706;n=l+23|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[e+23>>0]=0;f[a>>2]=-1;pj(a+4|0,h);if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);u=g;return}Ud(a,c);if(f[a>>2]|0){u=g;return}e=a+4|0;j=e+11|0;if((b[j>>0]|0)<0)Oq(f[e>>2]|0);Wi(a,c);if(f[a>>2]|0){u=g;return}if((b[j>>0]|0)<0)Oq(f[e>>2]|0);if(!(Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0)){j=ln(32)|0;f[h>>2]=j;f[h+8>>2]=-2147483616;f[h+4>>2]=29;l=j;m=15730;n=l+29|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[j+29>>0]=0;f[a>>2]=-1;pj(e,h);if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);u=g;return}if(!(Qa[f[(f[c>>2]|0)+20>>2]&127](c)|0)){j=ln(32)|0;f[h>>2]=j;f[h+8>>2]=-2147483616;f[h+4>>2]=31;l=j;m=15760;n=l+31|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[j+31>>0]=0;f[a>>2]=-1;pj(e,h);if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);u=g;return}if(!(Qa[f[(f[c>>2]|0)+24>>2]&127](c)|0)){j=ln(32)|0;f[h>>2]=j;f[h+8>>2]=-2147483616;f[h+4>>2]=31;l=j;m=15792;n=l+31|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[j+31>>0]=0;f[a>>2]=-1;pj(e,h);if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);u=g;return}if(Qa[f[(f[c>>2]|0)+28>>2]&127](c)|0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=g;return}c=ln(48)|0;f[h>>2]=c;f[h+8>>2]=-2147483600;f[h+4>>2]=34;l=c;m=15824;n=l+34|0;do{b[l>>0]=b[m>>0]|0;l=l+1|0;m=m+1|0}while((l|0)<(n|0));b[c+34>>0]=0;f[a>>2]=-1;pj(e,h);if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);u=g;return}function Nd(a){a=a|0;var c=0,d=0,e=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;c=u;u=u+32|0;d=c+4|0;e=c;g=c+16|0;h=a+48|0;i=f[h>>2]|0;j=ln(32)|0;f[d>>2]=j;f[d+8>>2]=-2147483616;f[d+4>>2]=20;k=j;l=14538;m=k+20|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[j+20>>0]=0;j=Fk(i+24|0,d)|0;if((b[d+11>>0]|0)<0)Oq(f[d>>2]|0);i=f[h>>2]|0;n=ln(32)|0;f[d>>2]=n;f[d+8>>2]=-2147483616;f[d+4>>2]=22;k=n;l=14559;m=k+22|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[n+22>>0]=0;n=Fk(i+24|0,d)|0;if((b[d+11>>0]|0)<0)Oq(f[d>>2]|0);i=a+56|0;o=f[i>>2]|0;f[i>>2]=0;if(o|0)Va[f[(f[o>>2]|0)+4>>2]&127](o);o=f[a+52>>2]|0;p=(((f[o+100>>2]|0)-(f[o+96>>2]|0)|0)/12|0)>>>0<1e3;o=f[h>>2]|0;q=ln(32)|0;f[d>>2]=q;f[d+8>>2]=-2147483616;f[d+4>>2]=18;k=q;l=14582;m=k+18|0;do{b[k>>0]=b[l>>0]|0;k=k+1|0;l=l+1|0}while((k|0)<(m|0));b[q+18>>0]=0;q=Hk(o,d,-1)|0;if((b[d+11>>0]|0)<0)Oq(f[d>>2]|0);switch(q|0){case -1:{if(j?p|((mi(f[h>>2]|0)|0)>4|n^1):0)r=13;else r=17;break}case 0:{if(j)r=13;else r=21;break}case 2:{r=17;break}default:r=21}if((r|0)==13){j=f[a+44>>2]|0;b[g>>0]=0;n=j+16|0;h=f[n+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[n>>2]|0)>>>0>0)){f[e>>2]=f[j+4>>2];f[d>>2]=f[e>>2];Me(j,d,g,g+1|0)|0}j=ln(296)|0;_i(j);n=f[i>>2]|0;f[i>>2]=j;if(!n)s=j;else{Va[f[(f[n>>2]|0)+4>>2]&127](n);r=21}}else if((r|0)==17){n=f[a+44>>2]|0;b[g>>0]=2;j=n+16|0;h=f[j+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[j>>2]|0)>>>0>0)){f[e>>2]=f[n+4>>2];f[d>>2]=f[e>>2];Me(n,d,g,g+1|0)|0}g=ln(360)|0;xi(g);d=f[i>>2]|0;f[i>>2]=g;if(!d)s=g;else{Va[f[(f[d>>2]|0)+4>>2]&127](d);r=21}}if((r|0)==21){r=f[i>>2]|0;if(!r){t=0;u=c;return t|0}else s=r}t=Ra[f[(f[s>>2]|0)+8>>2]&127](s,a)|0;u=c;return t|0}function Od(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;e=b+12|0;g=f[e>>2]|0;h=c+4|0;i=(f[h>>2]|0)-g|0;j=c;f[j>>2]=(f[c>>2]|0)-g;f[j+4>>2]=i;i=(f[d>>2]|0)-g|0;j=d+4|0;k=(f[j>>2]|0)-g|0;g=d;f[g>>2]=i;f[g+4>>2]=k;g=f[e>>2]|0;if((((k|0)>-1?k:0-k|0)+((i|0)>-1?i:0-i|0)|0)>(g|0)){l=f[c>>2]|0;m=f[h>>2]|0;if((l|0)>-1)if((m|0)<=-1)if((l|0)<1){n=-1;o=-1}else p=6;else{n=1;o=1}else if((m|0)<1){n=-1;o=-1}else p=6;if((p|0)==6){n=(l|0)>0?1:-1;o=(m|0)>0?1:-1}q=X(g,n)|0;r=X(g,o)|0;g=(l<<1)-q|0;f[c>>2]=g;l=(m<<1)-r|0;f[h>>2]=l;if((X(n,o)|0)>-1){o=0-l|0;f[c>>2]=o;s=0-g|0;t=o}else{f[c>>2]=l;s=g;t=l}f[c>>2]=(t+q|0)/2|0;f[h>>2]=(s+r|0)/2|0;r=f[d>>2]|0;s=f[j>>2]|0;if((r|0)>-1)if((s|0)<=-1)if((r|0)<1){u=-1;v=-1}else p=14;else{u=1;v=1}else if((s|0)<1){u=-1;v=-1}else p=14;if((p|0)==14){u=(r|0)>0?1:-1;v=(s|0)>0?1:-1}q=f[e>>2]|0;e=X(q,u)|0;t=X(q,v)|0;q=(r<<1)-e|0;f[d>>2]=q;r=(s<<1)-t|0;f[j>>2]=r;if((X(u,v)|0)>-1){v=0-r|0;f[d>>2]=v;w=0-q|0;x=v}else{f[d>>2]=r;w=q;x=r}r=(x+e|0)/2|0;f[d>>2]=r;e=(w+t|0)/2|0;f[j>>2]=e;y=r;z=e}else{y=i;z=k}if(!y)if(!z){A=y;B=z}else p=22;else if((y|0)<0&(z|0)<1){A=y;B=z}else p=22;if((p|0)==22){if(!y)C=(z|0)==0?0:(z|0)>0?3:1;else C=(y|0)>0?(z>>31)+2|0:(z|0)<1?0:3;z=f[c>>2]|0;y=f[h>>2]|0;switch(C|0){case 1:{C=c;f[C>>2]=y;f[C+4>>2]=0-z;D=f[j>>2]|0;E=0-(f[d>>2]|0)|0;break}case 2:{C=c;f[C>>2]=0-z;f[C+4>>2]=0-y;D=0-(f[d>>2]|0)|0;E=0-(f[j>>2]|0)|0;break}case 3:{C=c;f[C>>2]=0-y;f[C+4>>2]=z;D=0-(f[j>>2]|0)|0;E=f[d>>2]|0;break}default:{C=c;f[C>>2]=z;f[C+4>>2]=y;D=f[d>>2]|0;E=f[j>>2]|0}}j=d;f[j>>2]=D;f[j+4>>2]=E;A=D;B=E}E=(f[c>>2]|0)-A|0;f[a>>2]=E;A=(f[h>>2]|0)-B|0;B=a+4|0;f[B>>2]=A;if((E|0)<0)F=(f[b+4>>2]|0)+E|0;else F=E;f[a>>2]=F;if((A|0)>=0){G=A;f[B>>2]=G;return}G=(f[b+4>>2]|0)+A|0;f[B>>2]=G;return}function Pd(a,b){a=a|0;b=b|0;var c=0,e=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,A=0;c=a+4|0;if(!b){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[c>>2]=0;return}if(b>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(b<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;g=f[c>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=b+-1|0;i=(h&b|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(b>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=c;c=f[g>>2]|0;if(!c)return;else{k=j;l=g;m=c;n=g}a:while(1){b:do if(i){g=l;c=m;j=n;while(1){e=c;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0))break;p=(f[a>>2]|0)+(o<<2)|0;if(!(f[p>>2]|0)){q=e;r=j;s=o;t=p;break b}p=e+8|0;u=e;while(1){v=f[u>>2]|0;if(!v)break;if((d[p>>1]|0)==(d[v+8>>1]|0))u=v;else break}f[j>>2]=v;f[u>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;p=f[g>>2]|0;if(!p){w=37;break a}else e=p}c=f[e>>2]|0;if(!c){w=37;break a}else{g=e;j=e}}}else{j=l;g=m;c=n;while(1){p=g;while(1){x=f[p+4>>2]|0;if(x>>>0>>0)y=x;else y=(x>>>0)%(b>>>0)|0;if((y|0)==(k|0))break;x=(f[a>>2]|0)+(y<<2)|0;if(!(f[x>>2]|0)){q=p;r=c;s=y;t=x;break b}x=p+8|0;z=p;while(1){A=f[z>>2]|0;if(!A)break;if((d[x>>1]|0)==(d[A+8>>1]|0))z=A;else break}f[c>>2]=A;f[z>>2]=f[f[(f[a>>2]|0)+(y<<2)>>2]>>2];f[f[(f[a>>2]|0)+(y<<2)>>2]>>2]=p;x=f[j>>2]|0;if(!x){w=37;break a}else p=x}g=f[p>>2]|0;if(!g){w=37;break a}else{j=p;c=p}}}while(0);f[t>>2]=r;m=f[q>>2]|0;if(!m){w=37;break}else{k=s;l=q;n=q}}if((w|0)==37)return}function Qd(a,c){a=a|0;c=c|0;var d=0,e=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,A=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;else{k=j;l=g;m=d;n=g}a:while(1){b:do if(i){g=l;d=m;j=n;while(1){e=d;while(1){o=f[e+4>>2]&h;if((o|0)==(k|0))break;p=(f[a>>2]|0)+(o<<2)|0;if(!(f[p>>2]|0)){q=e;r=j;s=o;t=p;break b}p=e+8|0;u=e;while(1){v=f[u>>2]|0;if(!v)break;if((b[p>>0]|0)==(b[v+8>>0]|0))u=v;else break}f[j>>2]=v;f[u>>2]=f[f[(f[a>>2]|0)+(o<<2)>>2]>>2];f[f[(f[a>>2]|0)+(o<<2)>>2]>>2]=e;p=f[g>>2]|0;if(!p){w=37;break a}else e=p}d=f[e>>2]|0;if(!d){w=37;break a}else{g=e;j=e}}}else{j=l;g=m;d=n;while(1){p=g;while(1){x=f[p+4>>2]|0;if(x>>>0>>0)y=x;else y=(x>>>0)%(c>>>0)|0;if((y|0)==(k|0))break;x=(f[a>>2]|0)+(y<<2)|0;if(!(f[x>>2]|0)){q=p;r=d;s=y;t=x;break b}x=p+8|0;z=p;while(1){A=f[z>>2]|0;if(!A)break;if((b[x>>0]|0)==(b[A+8>>0]|0))z=A;else break}f[d>>2]=A;f[z>>2]=f[f[(f[a>>2]|0)+(y<<2)>>2]>>2];f[f[(f[a>>2]|0)+(y<<2)>>2]>>2]=p;x=f[j>>2]|0;if(!x){w=37;break a}else p=x}g=f[p>>2]|0;if(!g){w=37;break a}else{j=p;d=p}}}while(0);f[t>>2]=r;m=f[q>>2]|0;if(!m){w=37;break}else{k=s;l=q;n=q}}if((w|0)==37)return}function Rd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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;g=f[c>>2]|0;c=f[b>>2]|0;h=g-c|0;i=a+8|0;j=f[i>>2]|0;if(h>>>0<64){if(j>>>0<=1){k=0;return k|0}l=f[e>>2]|0;m=0;n=1;while(1){o=(f[l+(m<<2)>>2]|0)>>>0>(f[l+(n<<2)>>2]|0)>>>0?n:m;n=n+1|0;if(n>>>0>=j>>>0){k=o;break}else m=o}return k|0}if(j){j=f[a+1128>>2]|0;m=f[e>>2]|0;e=f[a+1140>>2]|0;n=f[d>>2]|0;d=b+4|0;l=b+8|0;if((g|0)==(c|0)){b=0;do{o=j+(b<<2)|0;f[o>>2]=0;p=(f[a>>2]|0)-(f[m+(b<<2)>>2]|0)|0;f[e+(b<<2)>>2]=p;if(p|0){p=f[o>>2]|0;q=h-p|0;f[o>>2]=q>>>0

>>0?p:q}b=b+1|0;q=f[i>>2]|0}while(b>>>0>>0);r=q}else{b=0;do{q=j+(b<<2)|0;f[q>>2]=0;p=(f[a>>2]|0)-(f[m+(b<<2)>>2]|0)|0;f[e+(b<<2)>>2]=p;if(p|0){o=(f[n+(b<<2)>>2]|0)+(1<>2]|0;s=f[(f[d>>2]|0)+24>>2]|0;t=c;u=f[q>>2]|0;do{v=s+((X(t,p)|0)<<2)+(b<<2)|0;u=u+((f[v>>2]|0)>>>0>>0&1)|0;f[q>>2]=u;t=t+1|0}while((t|0)!=(g|0));t=h-u|0;f[q>>2]=t>>>0>>0?u:t}b=b+1|0;t=f[i>>2]|0}while(b>>>0>>0);r=t}if(r){b=f[a+1140>>2]|0;i=a+1128|0;h=0;g=0;c=0;while(1){if(!(f[b+(g<<2)>>2]|0)){w=h;x=c}else{d=f[(f[i>>2]|0)+(g<<2)>>2]|0;l=h>>>0>>0;w=l?d:h;x=l?g:c}g=g+1|0;if(g>>>0>=r>>>0){y=x;break}else{h=w;c=x}}}else y=0}else y=0;x=a+1088|0;c=a+1104|0;w=f[c>>2]|0;h=32-w|0;if((h|0)<4){r=y&15;g=4-h|0;f[c>>2]=g;h=a+1100|0;i=f[h>>2]|r>>>g;f[h>>2]=i;g=a+1092|0;b=f[g>>2]|0;if((b|0)==(f[a+1096>>2]|0))Ri(x,h);else{f[b>>2]=i;f[g>>2]=b+4}f[h>>2]=r<<32-(f[c>>2]|0);k=y;return k|0}r=a+1100|0;h=f[r>>2]|y<<28>>>w;f[r>>2]=h;b=w+4|0;f[c>>2]=b;if((b|0)!=32){k=y;return k|0}b=a+1092|0;w=f[b>>2]|0;if((w|0)==(f[a+1096>>2]|0))Ri(x,r);else{f[w>>2]=h;f[b>>2]=w+4}f[r>>2]=0;f[c>>2]=0;k=y;return k|0}function Sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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;c=a+4|0;if(!b){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Oq(d);f[c>>2]=0;return}if(b>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}d=ln(b<<2)|0;e=f[a>>2]|0;f[a>>2]=d;if(e|0)Oq(e);f[c>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));c=a+8|0;e=f[c>>2]|0;if(!e)return;d=f[e+4>>2]|0;g=b+-1|0;h=(g&b|0)==0;if(!h)if(d>>>0>>0)i=d;else i=(d>>>0)%(b>>>0)|0;else i=d&g;f[(f[a>>2]|0)+(i<<2)>>2]=c;c=f[e>>2]|0;if(!c)return;else{j=i;k=e;l=c;m=e}a:while(1){b:do if(h){e=k;c=l;i=m;while(1){d=c;while(1){n=f[d+4>>2]&g;if((n|0)==(j|0))break;o=(f[a>>2]|0)+(n<<2)|0;if(!(f[o>>2]|0)){p=d;q=i;r=n;s=o;break b}o=d+8|0;t=d;while(1){u=f[t>>2]|0;if(!u)break;if((f[o>>2]|0)==(f[u+8>>2]|0))t=u;else break}f[i>>2]=u;f[t>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;o=f[e>>2]|0;if(!o){v=37;break a}else d=o}c=f[d>>2]|0;if(!c){v=37;break a}else{e=d;i=d}}}else{i=k;e=l;c=m;while(1){o=e;while(1){w=f[o+4>>2]|0;if(w>>>0>>0)x=w;else x=(w>>>0)%(b>>>0)|0;if((x|0)==(j|0))break;w=(f[a>>2]|0)+(x<<2)|0;if(!(f[w>>2]|0)){p=o;q=c;r=x;s=w;break b}w=o+8|0;y=o;while(1){z=f[y>>2]|0;if(!z)break;if((f[w>>2]|0)==(f[z+8>>2]|0))y=z;else break}f[c>>2]=z;f[y>>2]=f[f[(f[a>>2]|0)+(x<<2)>>2]>>2];f[f[(f[a>>2]|0)+(x<<2)>>2]>>2]=o;w=f[i>>2]|0;if(!w){v=37;break a}else o=w}e=f[o>>2]|0;if(!e){v=37;break a}else{i=o;c=o}}}while(0);f[s>>2]=q;l=f[p>>2]|0;if(!l){v=37;break}else{j=r;k=p;m=p}}if((v|0)==37)return}function Td(a,c){a=a|0;c=c|0;var d=0,e=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,A=0,B=0,C=0,D=0,E=0;d=a+4|0;if(!c){e=f[a>>2]|0;f[a>>2]=0;if(e|0)Oq(e);f[d>>2]=0;return}if(c>>>0>1073741823){e=ra(8)|0;Oo(e,16035);f[e>>2]=7256;va(e|0,1112,110)}e=ln(c<<2)|0;g=f[a>>2]|0;f[a>>2]=e;if(g|0)Oq(g);f[d>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;e=f[g+4>>2]|0;h=c+-1|0;i=(h&c|0)==0;if(!i)if(e>>>0>>0)j=e;else j=(e>>>0)%(c>>>0)|0;else j=e&h;f[(f[a>>2]|0)+(j<<2)>>2]=d;d=f[g>>2]|0;if(!d)return;e=a+24|0;k=j;j=g;l=d;d=g;a:while(1){g=j;m=l;n=d;b:while(1){o=m;while(1){p=f[o+4>>2]|0;if(!i)if(p>>>0>>0)q=p;else q=(p>>>0)%(c>>>0)|0;else q=p&h;if((q|0)==(k|0))break;r=(f[a>>2]|0)+(q<<2)|0;if(!(f[r>>2]|0))break b;p=f[o>>2]|0;c:do if(!p)s=o;else{t=f[o+8>>2]|0;u=f[e>>2]|0;v=f[u+8>>2]|0;w=(f[u+12>>2]|0)-v|0;u=v;v=w>>>2;if((w|0)>0){x=o;y=p}else{w=p;while(1){z=f[w>>2]|0;if(!z){s=w;break c}else w=z}}while(1){w=f[y+8>>2]|0;z=0;do{A=f[u+(z<<2)>>2]|0;if(!(b[A+84>>0]|0)){B=f[A+68>>2]|0;C=f[B+(w<<2)>>2]|0;D=f[B+(t<<2)>>2]|0}else{C=w;D=t}z=z+1|0;if((D|0)!=(C|0)){s=x;break c}}while((z|0)<(v|0));z=f[y>>2]|0;if(!z){s=y;break}else{w=y;y=z;x=w}}}while(0);f[n>>2]=f[s>>2];f[s>>2]=f[f[(f[a>>2]|0)+(q<<2)>>2]>>2];f[f[(f[a>>2]|0)+(q<<2)>>2]>>2]=o;p=f[g>>2]|0;if(!p){E=38;break a}else o=p}m=f[o>>2]|0;if(!m){E=38;break a}else{g=o;n=o}}f[r>>2]=n;l=f[o>>2]|0;if(!l){E=38;break}else{k=q;j=o;d=o}}if((E|0)==38)return}function Ud(a,c){a=a|0;c=c|0;var e=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,v=0;e=u;u=u+16|0;g=e+4|0;h=e;i=e+12|0;j=e+11|0;k=e+10|0;l=e+8|0;m=c+44|0;n=f[m>>2]|0;o=n+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];Me(n,g,15886,15891)|0}n=Qa[f[(f[c>>2]|0)+8>>2]&127](c)|0;b[i>>0]=n;b[j>>0]=2;b[k>>0]=(n&255|0)==0?3:2;n=f[m>>2]|0;o=n+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[n+4>>2];f[g>>2]=f[h>>2];Me(n,g,j,j+1|0)|0;j=f[m>>2]|0;o=j+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[h>>2]=f[j+4>>2];f[g>>2]=f[h>>2];Me(j,g,k,k+1|0)|0;k=f[m>>2]|0;o=k+16|0;p=f[o+4>>2]|0;if((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0){q=h;r=k}else{f[h>>2]=f[k+4>>2];f[g>>2]=f[h>>2];Me(k,g,i,i+1|0)|0;q=h;r=f[m>>2]|0}}else{s=h;t=j;v=6}}else{s=h;t=n;v=6}if((v|0)==6){q=h;r=t}t=Qa[f[(f[c>>2]|0)+12>>2]&127](c)|0;b[l>>0]=t;t=r+16|0;q=f[t+4>>2]|0;if(!((q|0)>0|(q|0)==0&(f[t>>2]|0)>>>0>0)){f[h>>2]=f[r+4>>2];f[g>>2]=f[h>>2];Me(r,g,l,l+1|0)|0}d[l>>1]=(f[(f[c+4>>2]|0)+4>>2]|0)==0?0:-32768;c=f[m>>2]|0;m=c+16|0;r=f[m+4>>2]|0;if((r|0)>0|(r|0)==0&(f[m>>2]|0)>>>0>0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}f[h>>2]=f[c+4>>2];f[g>>2]=f[h>>2];Me(c,g,l,l+2|0)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=e;return}function Vd(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,v=0,w=0,x=0;e=u;u=u+176|0;g=e+136|0;h=e+104|0;i=e;j=e+72|0;k=ln(88)|0;l=f[c+8>>2]|0;f[k+4>>2]=0;f[k>>2]=3612;m=k+12|0;f[m>>2]=3636;n=k+64|0;f[n>>2]=0;f[k+68>>2]=0;f[k+72>>2]=0;o=k+16|0;p=o+44|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(p|0));f[k+76>>2]=l;f[k+80>>2]=d;q=k+84|0;f[q>>2]=0;r=k;f[h>>2]=3636;s=h+4|0;t=s+4|0;f[t>>2]=0;f[t+4>>2]=0;f[t+8>>2]=0;f[t+12>>2]=0;f[t+16>>2]=0;f[t+20>>2]=0;t=f[c+12>>2]|0;v=i+4|0;f[v>>2]=3636;w=i+56|0;f[w>>2]=0;x=i+60|0;f[x>>2]=0;f[i+64>>2]=0;o=i+8|0;p=o+44|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(p|0));o=t;f[s>>2]=o;s=((f[o+4>>2]|0)-(f[t>>2]|0)>>2>>>0)/3|0;b[g>>0]=0;qh(h+8|0,s,g);Va[f[(f[h>>2]|0)+8>>2]&127](h);Ff(j,h);Ff(g,j);f[i>>2]=f[g+4>>2];s=i+4|0;fg(s,g)|0;f[g>>2]=3636;o=f[g+20>>2]|0;if(o|0)Oq(o);o=f[g+8>>2]|0;if(o|0)Oq(o);f[i+36>>2]=t;f[i+40>>2]=d;f[i+44>>2]=l;f[i+48>>2]=k;f[j>>2]=3636;l=f[j+20>>2]|0;if(l|0)Oq(l);l=f[j+8>>2]|0;if(l|0)Oq(l);f[q>>2]=c+72;f[k+8>>2]=f[i>>2];fg(m,s)|0;s=k+44|0;k=i+36|0;f[s>>2]=f[k>>2];f[s+4>>2]=f[k+4>>2];f[s+8>>2]=f[k+8>>2];f[s+12>>2]=f[k+12>>2];b[s+16>>0]=b[k+16>>0]|0;ng(n,f[w>>2]|0,f[x>>2]|0);f[a>>2]=r;r=f[w>>2]|0;if(r|0){w=f[x>>2]|0;if((w|0)!=(r|0))f[x>>2]=w+(~((w+-4-r|0)>>>2)<<2);Oq(r)}f[v>>2]=3636;v=f[i+24>>2]|0;if(v|0)Oq(v);v=f[i+12>>2]|0;if(v|0)Oq(v);f[h>>2]=3636;v=f[h+20>>2]|0;if(v|0)Oq(v);v=f[h+8>>2]|0;if(!v){u=e;return}Oq(v);u=e;return}function Wd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=Oa,x=0,y=Oa,z=Oa,A=Oa;e=u;u=u+16|0;g=e;h=a+4|0;if((f[h>>2]|0)!=-1){i=0;u=e;return i|0}f[h>>2]=d;d=b[c+24>>0]|0;h=d<<24>>24;j=a+20|0;n[j>>2]=$(0.0);f[g>>2]=0;k=g+4|0;f[k>>2]=0;f[g+8>>2]=0;do if(d<<24>>24)if(d<<24>>24<0)aq(g);else{l=h<<2;m=ln(l)|0;f[g>>2]=m;o=m+(h<<2)|0;f[g+8>>2]=o;sj(m|0,0,l|0)|0;l=m+(h<<2)|0;f[k>>2]=l;p=m;q=l;r=o;break}else{p=0;q=0;r=0}while(0);k=a+8|0;g=f[k>>2]|0;o=a+12|0;if(!g)s=a+16|0;else{l=f[o>>2]|0;if((l|0)!=(g|0))f[o>>2]=l+(~((l+-4-g|0)>>>2)<<2);Oq(g);g=a+16|0;f[g>>2]=0;f[o>>2]=0;f[k>>2]=0;s=g}f[k>>2]=p;f[o>>2]=q;f[s>>2]=r;r=h>>>0>1073741823?-1:h<<2;s=Lq(r)|0;q=Lq(r)|0;r=c+48|0;o=f[r>>2]|0;g=c+40|0;a=f[g>>2]|0;l=f[c>>2]|0;kh(q|0,(f[l>>2]|0)+o|0,a|0)|0;kh(p|0,(f[l>>2]|0)+o|0,a|0)|0;a=r;r=f[a>>2]|0;o=f[a+4>>2]|0;a=g;g=f[a>>2]|0;l=f[a+4>>2]|0;a=f[c>>2]|0;kh(s|0,(f[a>>2]|0)+r|0,g|0)|0;p=f[c+80>>2]|0;a:do if(p>>>0>1){if(d<<24>>24<=0){c=1;while(1){m=un(g|0,l|0,c|0,0)|0;t=Vn(m|0,I|0,r|0,o|0)|0;kh(q|0,(f[a>>2]|0)+t|0,g|0)|0;c=c+1|0;if(c>>>0>=p>>>0)break a}}c=f[k>>2]|0;t=1;do{m=un(g|0,l|0,t|0,0)|0;v=Vn(m|0,I|0,r|0,o|0)|0;kh(q|0,(f[a>>2]|0)+v|0,g|0)|0;v=0;do{m=c+(v<<2)|0;w=$(n[m>>2]);x=q+(v<<2)|0;y=$(n[x>>2]);if(w>y){n[m>>2]=y;z=$(n[x>>2])}else z=y;x=s+(v<<2)|0;if($(n[x>>2])>2]=z;v=v+1|0}while((v|0)!=(h|0));t=t+1|0}while(t>>>0

>>0)}while(0);if(d<<24>>24>0){d=f[k>>2]|0;k=0;z=$(n[j>>2]);while(1){y=$(n[s+(k<<2)>>2]);w=$(y-$(n[d+(k<<2)>>2]));if(w>z){n[j>>2]=w;A=w}else A=z;k=k+1|0;if((k|0)==(h|0))break;else z=A}}Mq(q);Mq(s);i=1;u=e;return i|0}function Xd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,A=0,B=0,C=0,D=0,E=0,F=0,G=0;g=a+8|0;Mh(g,b,d,e);h=d-e|0;if((h|0)>0){d=0-e|0;i=a+16|0;j=a+32|0;k=a+12|0;l=a+28|0;m=a+20|0;n=a+24|0;o=h;h=f[g>>2]|0;while(1){p=b+(o<<2)|0;q=c+(o<<2)|0;if((h|0)>0){r=0;s=p+(d<<2)|0;t=h;while(1){if((t|0)>0){u=0;do{v=f[s+(u<<2)>>2]|0;w=f[i>>2]|0;if((v|0)>(w|0)){x=f[j>>2]|0;f[x+(u<<2)>>2]=w;y=x}else{x=f[k>>2]|0;w=f[j>>2]|0;f[w+(u<<2)>>2]=(v|0)<(x|0)?x:v;y=w}u=u+1|0}while((u|0)<(f[g>>2]|0));z=y}else z=f[j>>2]|0;u=(f[p+(r<<2)>>2]|0)-(f[z+(r<<2)>>2]|0)|0;w=q+(r<<2)|0;f[w>>2]=u;if((u|0)>=(f[l>>2]|0)){if((u|0)>(f[n>>2]|0)){A=u-(f[m>>2]|0)|0;B=31}}else{A=(f[m>>2]|0)+u|0;B=31}if((B|0)==31){B=0;f[w>>2]=A}r=r+1|0;w=f[g>>2]|0;if((r|0)>=(w|0)){C=w;break}else{s=z;t=w}}}else C=h;o=o-e|0;if((o|0)<=0){D=C;break}else h=C}}else D=f[g>>2]|0;C=e>>>0>1073741823?-1:e<<2;e=Lq(C)|0;sj(e|0,0,C|0)|0;if((D|0)<=0){Mq(e);return 1}C=a+16|0;h=a+32|0;o=a+12|0;z=a+28|0;A=a+20|0;m=a+24|0;a=0;n=e;l=D;while(1){if((l|0)>0){D=0;do{j=f[n+(D<<2)>>2]|0;y=f[C>>2]|0;if((j|0)>(y|0)){k=f[h>>2]|0;f[k+(D<<2)>>2]=y;E=k}else{k=f[o>>2]|0;y=f[h>>2]|0;f[y+(D<<2)>>2]=(j|0)<(k|0)?k:j;E=y}D=D+1|0}while((D|0)<(f[g>>2]|0));F=E}else F=f[h>>2]|0;D=(f[b+(a<<2)>>2]|0)-(f[F+(a<<2)>>2]|0)|0;y=c+(a<<2)|0;f[y>>2]=D;if((D|0)>=(f[z>>2]|0)){if((D|0)>(f[m>>2]|0)){G=D-(f[A>>2]|0)|0;B=16}}else{G=(f[A>>2]|0)+D|0;B=16}if((B|0)==16){B=0;f[y>>2]=G}a=a+1|0;l=f[g>>2]|0;if((a|0)>=(l|0))break;else n=F}Mq(e);return 1}function Yd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=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,A=0,B=0,C=0,D=0,E=0,F=0;e=f[a>>2]|0;g=e;h=(f[b>>2]|0)-g|0;b=e+(h>>2<<2)|0;i=f[c>>2]|0;c=f[d>>2]|0;d=c-i|0;j=d>>2;k=i;l=c;if((d|0)<=0){m=b;return m|0}d=a+8|0;n=f[d>>2]|0;o=a+4|0;p=f[o>>2]|0;q=p;if((j|0)<=(n-q>>2|0)){r=b;s=q-r|0;t=s>>2;if((j|0)>(t|0)){u=k+(t<<2)|0;t=u;if((u|0)==(l|0))v=p;else{w=l+-4-t|0;x=u;u=p;while(1){f[u>>2]=f[x>>2];x=x+4|0;if((x|0)==(l|0))break;else u=u+4|0}u=p+((w>>>2)+1<<2)|0;f[o>>2]=u;v=u}if((s|0)>0){y=t;z=v}else{m=b;return m|0}}else{y=c;z=p}c=z-(b+(j<<2))>>2;v=b+(c<<2)|0;if(v>>>0

>>0){t=(p+(0-c<<2)+~r|0)>>>2;r=v;s=z;while(1){f[s>>2]=f[r>>2];r=r+4|0;if(r>>>0>=p>>>0)break;else s=s+4|0}f[o>>2]=z+(t+1<<2)}if(c|0){c=v;v=z;do{c=c+-4|0;v=v+-4|0;f[v>>2]=f[c>>2]}while((c|0)!=(b|0))}c=y;if((k|0)==(c|0)){m=b;return m|0}else{A=b;B=k}while(1){f[A>>2]=f[B>>2];B=B+4|0;if((B|0)==(c|0)){m=b;break}else A=A+4|0}return m|0}A=(q-g>>2)+j|0;if(A>>>0>1073741823)aq(a);j=n-g|0;g=j>>1;n=j>>2>>>0<536870911?(g>>>0>>0?A:g):1073741823;g=b;A=h>>2;do if(n)if(n>>>0>1073741823){j=ra(8)|0;Oo(j,16035);f[j>>2]=7256;va(j|0,1112,110)}else{j=ln(n<<2)|0;C=j;D=j;break}else{C=0;D=0}while(0);j=D+(A<<2)|0;A=D+(n<<2)|0;if((l|0)==(k|0))E=j;else{n=((l+-4-i|0)>>>2)+1|0;i=k;k=j;while(1){f[k>>2]=f[i>>2];i=i+4|0;if((i|0)==(l|0))break;else k=k+4|0}E=j+(n<<2)|0}if((h|0)>0)kh(C|0,e|0,h|0)|0;h=q-g|0;if((h|0)>0){kh(E|0,b|0,h|0)|0;F=E+(h>>>2<<2)|0}else F=E;f[a>>2]=D;f[o>>2]=F;f[d>>2]=A;if(!e){m=j;return m|0}Oq(e);m=j;return m|0}function Zd(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0;c=u;u=u+48|0;d=c+40|0;e=c+36|0;g=c+32|0;h=c;i=a+60|0;ci(f[i>>2]|0,b)|0;wn(h);tk(h);j=f[a+56>>2]|0;k=f[i>>2]|0;i=k>>>5;l=j+(i<<2)|0;m=k&31;k=(i|0)!=0;a:do if(i|m|0){if(!m){n=1;o=j;p=k;while(1){if(p){q=n;r=0;while(1){s=(f[o>>2]&1<>2]&1<>2]&1<>2]&1<>2]=f[a+12>>2];m=b+16|0;w=m;v=f[w>>2]|0;j=f[w+4>>2]|0;if((j|0)>0|(j|0)==0&v>>>0>0){x=j;y=v}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;v=m;x=f[v+4>>2]|0;y=f[v>>2]|0}f[g>>2]=f[a+20>>2];if((x|0)>0|(x|0)==0&y>>>0>0){Fj(h);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;Fj(h);u=c;return 1}function _d(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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;switch(b-a>>2|0){case 2:{d=b+-4|0;e=f[d>>2]|0;g=f[a>>2]|0;h=f[c>>2]|0;i=f[h>>2]|0;j=(f[h+4>>2]|0)-i>>3;if(j>>>0<=e>>>0)aq(h);k=i;if(j>>>0<=g>>>0)aq(h);if((f[k+(e<<3)>>2]|0)>>>0>=(f[k+(g<<3)>>2]|0)>>>0){l=1;return l|0}f[a>>2]=e;f[d>>2]=g;l=1;return l|0}case 3:{Vg(a,a+4|0,b+-4|0,c)|0;l=1;return l|0}case 4:{jh(a,a+4|0,a+8|0,b+-4|0,c)|0;l=1;return l|0}case 5:{ig(a,a+4|0,a+8|0,a+12|0,b+-4|0,c)|0;l=1;return l|0}case 1:case 0:{l=1;return l|0}default:{g=a+8|0;Vg(a,a+4|0,g,c)|0;d=a+12|0;a:do if((d|0)!=(b|0)){e=f[c>>2]|0;k=f[e>>2]|0;h=(f[e+4>>2]|0)-k>>3;j=k;k=d;i=0;m=g;b:while(1){n=f[k>>2]|0;o=f[m>>2]|0;if(h>>>0<=n>>>0){p=14;break}if(h>>>0<=o>>>0){p=16;break}q=j+(n<<3)|0;if((f[q>>2]|0)>>>0<(f[j+(o<<3)>>2]|0)>>>0){r=m;s=k;t=o;while(1){f[s>>2]=t;if((r|0)==(a|0)){u=a;break}o=r+-4|0;t=f[o>>2]|0;if(h>>>0<=t>>>0){p=20;break b}if((f[q>>2]|0)>>>0>=(f[j+(t<<3)>>2]|0)>>>0){u=r;break}else{v=r;r=o;s=v}}f[u>>2]=n;s=i+1|0;if((s|0)==8){w=0;x=(k+4|0)==(b|0);break a}else y=s}else y=i;s=k+4|0;if((s|0)==(b|0)){w=1;x=0;break a}else{r=k;k=s;i=y;m=r}}if((p|0)==14)aq(e);else if((p|0)==16)aq(e);else if((p|0)==20)aq(e)}else{w=1;x=0}while(0);l=x|w;return l|0}}return 0}function $d(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,v=0,w=0,x=0,y=0;c=u;u=u+48|0;d=c+40|0;e=c+36|0;g=c+32|0;h=c;i=a+80|0;ci(f[i>>2]|0,b)|0;wn(h);tk(h);j=f[a+76>>2]|0;k=f[i>>2]|0;i=k>>>5;l=j+(i<<2)|0;m=k&31;k=(i|0)!=0;a:do if(i|m|0){if(!m){n=1;o=j;p=k;while(1){if(p){q=n;r=0;while(1){s=(f[o>>2]&1<>2]&1<>2]&1<>2]&1<>2]=f[a+12>>2];m=b+16|0;w=m;v=f[w>>2]|0;j=f[w+4>>2]|0;if((j|0)>0|(j|0)==0&v>>>0>0){x=j;y=v}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;v=m;x=f[v+4>>2]|0;y=f[v>>2]|0}f[g>>2]=f[a+16>>2];if((x|0)>0|(x|0)==0&y>>>0>0){Fj(h);u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;Fj(h);u=c;return 1}function ae(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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;h=u;u=u+16|0;i=h+4|0;j=h;f[a+72>>2]=e;f[a+64>>2]=g;g=Lq(e>>>0>1073741823?-1:e<<2)|0;k=a+68|0;l=f[k>>2]|0;f[k>>2]=g;if(l|0)Mq(l);l=a+8|0;Mh(l,b,d,e);d=a+56|0;g=f[d>>2]|0;m=f[g+4>>2]|0;n=f[g>>2]|0;o=m-n|0;if((o|0)<=0){u=h;return 1}p=(o>>>2)+-1|0;o=a+16|0;q=a+32|0;r=a+12|0;s=a+28|0;t=a+20|0;v=a+24|0;if(m-n>>2>>>0>p>>>0){w=p;x=n}else{y=g;aq(y)}while(1){f[j>>2]=f[x+(w<<2)>>2];f[i>>2]=f[j>>2];Dc(a,i,b,w);g=X(w,e)|0;n=b+(g<<2)|0;p=c+(g<<2)|0;g=f[l>>2]|0;if((g|0)>0){m=0;z=f[k>>2]|0;A=g;while(1){if((A|0)>0){g=0;do{B=f[z+(g<<2)>>2]|0;C=f[o>>2]|0;if((B|0)>(C|0)){D=f[q>>2]|0;f[D+(g<<2)>>2]=C;E=D}else{D=f[r>>2]|0;C=f[q>>2]|0;f[C+(g<<2)>>2]=(B|0)<(D|0)?D:B;E=C}g=g+1|0}while((g|0)<(f[l>>2]|0));F=E}else F=f[q>>2]|0;g=(f[n+(m<<2)>>2]|0)-(f[F+(m<<2)>>2]|0)|0;C=p+(m<<2)|0;f[C>>2]=g;if((g|0)>=(f[s>>2]|0)){if((g|0)>(f[v>>2]|0)){G=g-(f[t>>2]|0)|0;H=21}}else{G=(f[t>>2]|0)+g|0;H=21}if((H|0)==21){H=0;f[C>>2]=G}m=m+1|0;A=f[l>>2]|0;if((m|0)>=(A|0))break;else z=F}}w=w+-1|0;if((w|0)<=-1){H=5;break}z=f[d>>2]|0;x=f[z>>2]|0;if((f[z+4>>2]|0)-x>>2>>>0<=w>>>0){y=z;H=6;break}}if((H|0)==5){u=h;return 1}else if((H|0)==6)aq(y);return 0} -function $a(a){a=a|0;var b=0,c=0,d=0,e=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,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,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,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;b=u;u=u+16|0;c=b;do if(a>>>0<245){d=a>>>0<11?16:a+11&-8;e=d>>>3;g=f[4784]|0;h=g>>>e;if(h&3|0){i=(h&1^1)+e|0;j=19176+(i<<1<<2)|0;k=j+8|0;l=f[k>>2]|0;m=l+8|0;n=f[m>>2]|0;if((n|0)==(j|0))f[4784]=g&~(1<>2]=j;f[k>>2]=n}n=i<<3;f[l+4>>2]=n|3;i=l+n+4|0;f[i>>2]=f[i>>2]|1;o=m;u=b;return o|0}m=f[4786]|0;if(d>>>0>m>>>0){if(h|0){i=2<>>12&16;e=i>>>n;i=e>>>5&8;h=e>>>i;e=h>>>2&4;l=h>>>e;h=l>>>1&2;k=l>>>h;l=k>>>1&1;j=(i|n|e|h|l)+(k>>>l)|0;l=19176+(j<<1<<2)|0;k=l+8|0;h=f[k>>2]|0;e=h+8|0;n=f[e>>2]|0;if((n|0)==(l|0)){i=g&~(1<>2]=l;f[k>>2]=n;p=g}n=j<<3;j=n-d|0;f[h+4>>2]=d|3;k=h+d|0;f[k+4>>2]=j|1;f[h+n>>2]=j;if(m|0){n=f[4789]|0;h=m>>>3;l=19176+(h<<1<<2)|0;i=1<>2]|0;r=i}f[r>>2]=n;f[q+12>>2]=n;f[n+8>>2]=q;f[n+12>>2]=l}f[4786]=j;f[4789]=k;o=e;u=b;return o|0}e=f[4785]|0;if(e){k=(e&0-e)+-1|0;j=k>>>12&16;l=k>>>j;k=l>>>5&8;n=l>>>k;l=n>>>2&4;i=n>>>l;n=i>>>1&2;h=i>>>n;i=h>>>1&1;s=f[19440+((k|j|l|n|i)+(h>>>i)<<2)>>2]|0;i=(f[s+4>>2]&-8)-d|0;h=f[s+16+(((f[s+16>>2]|0)==0&1)<<2)>>2]|0;if(!h){t=s;v=i}else{n=s;s=i;i=h;while(1){h=(f[i+4>>2]&-8)-d|0;l=h>>>0>>0;j=l?h:s;h=l?i:n;i=f[i+16+(((f[i+16>>2]|0)==0&1)<<2)>>2]|0;if(!i){t=h;v=j;break}else{n=h;s=j}}}s=t+d|0;if(s>>>0>t>>>0){n=f[t+24>>2]|0;i=f[t+12>>2]|0;do if((i|0)==(t|0)){j=t+20|0;h=f[j>>2]|0;if(!h){l=t+16|0;k=f[l>>2]|0;if(!k){w=0;break}else{x=k;y=l}}else{x=h;y=j}while(1){j=x+20|0;h=f[j>>2]|0;if(h|0){x=h;y=j;continue}j=x+16|0;h=f[j>>2]|0;if(!h)break;else{x=h;y=j}}f[y>>2]=0;w=x}else{j=f[t+8>>2]|0;f[j+12>>2]=i;f[i+8>>2]=j;w=i}while(0);do if(n|0){i=f[t+28>>2]|0;j=19440+(i<<2)|0;if((t|0)==(f[j>>2]|0)){f[j>>2]=w;if(!w){f[4785]=e&~(1<>2]|0)!=(t|0)&1)<<2)>>2]=w;if(!w)break}f[w+24>>2]=n;i=f[t+16>>2]|0;if(i|0){f[w+16>>2]=i;f[i+24>>2]=w}i=f[t+20>>2]|0;if(i|0){f[w+20>>2]=i;f[i+24>>2]=w}}while(0);if(v>>>0<16){n=v+d|0;f[t+4>>2]=n|3;e=t+n+4|0;f[e>>2]=f[e>>2]|1}else{f[t+4>>2]=d|3;f[s+4>>2]=v|1;f[s+v>>2]=v;if(m|0){e=f[4789]|0;n=m>>>3;i=19176+(n<<1<<2)|0;j=1<>2]|0;A=j}f[A>>2]=e;f[z+12>>2]=e;f[e+8>>2]=z;f[e+12>>2]=i}f[4786]=v;f[4789]=s}o=t+8|0;u=b;return o|0}else B=d}else B=d}else B=d}else if(a>>>0<=4294967231){i=a+11|0;e=i&-8;j=f[4785]|0;if(j){n=0-e|0;h=i>>>8;if(h)if(e>>>0>16777215)C=31;else{i=(h+1048320|0)>>>16&8;l=h<>>16&4;k=l<>>16&2;D=14-(h|i|l)+(k<>>15)|0;C=e>>>(D+7|0)&1|D<<1}else C=0;D=f[19440+(C<<2)>>2]|0;a:do if(!D){E=0;F=0;G=n;H=57}else{l=0;k=n;i=D;h=e<<((C|0)==31?0:25-(C>>>1)|0);I=0;while(1){J=(f[i+4>>2]&-8)-e|0;if(J>>>0>>0)if(!J){K=0;L=i;M=i;H=61;break a}else{N=i;O=J}else{N=l;O=k}J=f[i+20>>2]|0;i=f[i+16+(h>>>31<<2)>>2]|0;P=(J|0)==0|(J|0)==(i|0)?I:J;J=(i|0)==0;if(J){E=P;F=N;G=O;H=57;break}else{l=N;k=O;h=h<<((J^1)&1);I=P}}}while(0);if((H|0)==57){if((E|0)==0&(F|0)==0){D=2<>>12&16;d=D>>>n;D=d>>>5&8;s=d>>>D;d=s>>>2&4;g=s>>>d;s=g>>>1&2;m=g>>>s;g=m>>>1&1;Q=0;R=f[19440+((D|n|d|s|g)+(m>>>g)<<2)>>2]|0}else{Q=F;R=E}if(!R){S=Q;T=G}else{K=G;L=R;M=Q;H=61}}if((H|0)==61)while(1){H=0;g=(f[L+4>>2]&-8)-e|0;m=g>>>0>>0;s=m?g:K;g=m?L:M;L=f[L+16+(((f[L+16>>2]|0)==0&1)<<2)>>2]|0;if(!L){S=g;T=s;break}else{K=s;M=g;H=61}}if((S|0)!=0?T>>>0<((f[4786]|0)-e|0)>>>0:0){g=S+e|0;if(g>>>0<=S>>>0){o=0;u=b;return o|0}s=f[S+24>>2]|0;m=f[S+12>>2]|0;do if((m|0)==(S|0)){d=S+20|0;n=f[d>>2]|0;if(!n){D=S+16|0;I=f[D>>2]|0;if(!I){U=0;break}else{V=I;W=D}}else{V=n;W=d}while(1){d=V+20|0;n=f[d>>2]|0;if(n|0){V=n;W=d;continue}d=V+16|0;n=f[d>>2]|0;if(!n)break;else{V=n;W=d}}f[W>>2]=0;U=V}else{d=f[S+8>>2]|0;f[d+12>>2]=m;f[m+8>>2]=d;U=m}while(0);do if(s){m=f[S+28>>2]|0;d=19440+(m<<2)|0;if((S|0)==(f[d>>2]|0)){f[d>>2]=U;if(!U){d=j&~(1<>2]|0)!=(S|0)&1)<<2)>>2]=U;if(!U){X=j;break}}f[U+24>>2]=s;d=f[S+16>>2]|0;if(d|0){f[U+16>>2]=d;f[d+24>>2]=U}d=f[S+20>>2]|0;if(d){f[U+20>>2]=d;f[d+24>>2]=U;X=j}else X=j}else X=j;while(0);do if(T>>>0>=16){f[S+4>>2]=e|3;f[g+4>>2]=T|1;f[g+T>>2]=T;j=T>>>3;if(T>>>0<256){s=19176+(j<<1<<2)|0;d=f[4784]|0;m=1<>2]|0;Z=m}f[Z>>2]=g;f[Y+12>>2]=g;f[g+8>>2]=Y;f[g+12>>2]=s;break}s=T>>>8;if(s)if(T>>>0>16777215)_=31;else{m=(s+1048320|0)>>>16&8;d=s<>>16&4;j=d<>>16&2;n=14-(s|m|d)+(j<>>15)|0;_=T>>>(n+7|0)&1|n<<1}else _=0;n=19440+(_<<2)|0;f[g+28>>2]=_;d=g+16|0;f[d+4>>2]=0;f[d>>2]=0;d=1<<_;if(!(X&d)){f[4785]=X|d;f[n>>2]=g;f[g+24>>2]=n;f[g+12>>2]=g;f[g+8>>2]=g;break}d=T<<((_|0)==31?0:25-(_>>>1)|0);j=f[n>>2]|0;while(1){if((f[j+4>>2]&-8|0)==(T|0)){H=97;break}$=j+16+(d>>>31<<2)|0;n=f[$>>2]|0;if(!n){H=96;break}else{d=d<<1;j=n}}if((H|0)==96){f[$>>2]=g;f[g+24>>2]=j;f[g+12>>2]=g;f[g+8>>2]=g;break}else if((H|0)==97){d=j+8|0;n=f[d>>2]|0;f[n+12>>2]=g;f[d>>2]=g;f[g+8>>2]=n;f[g+12>>2]=j;f[g+24>>2]=0;break}}else{n=T+e|0;f[S+4>>2]=n|3;d=S+n+4|0;f[d>>2]=f[d>>2]|1}while(0);o=S+8|0;u=b;return o|0}else B=e}else B=e}else B=-1;while(0);S=f[4786]|0;if(S>>>0>=B>>>0){T=S-B|0;$=f[4789]|0;if(T>>>0>15){_=$+B|0;f[4789]=_;f[4786]=T;f[_+4>>2]=T|1;f[$+S>>2]=T;f[$+4>>2]=B|3}else{f[4786]=0;f[4789]=0;f[$+4>>2]=S|3;T=$+S+4|0;f[T>>2]=f[T>>2]|1}o=$+8|0;u=b;return o|0}$=f[4787]|0;if($>>>0>B>>>0){T=$-B|0;f[4787]=T;S=f[4790]|0;_=S+B|0;f[4790]=_;f[_+4>>2]=T|1;f[S+4>>2]=B|3;o=S+8|0;u=b;return o|0}if(!(f[4902]|0)){f[4904]=4096;f[4903]=4096;f[4905]=-1;f[4906]=-1;f[4907]=0;f[4895]=0;f[4902]=c&-16^1431655768;aa=4096}else aa=f[4904]|0;c=B+48|0;S=B+47|0;T=aa+S|0;_=0-aa|0;aa=T&_;if(aa>>>0<=B>>>0){o=0;u=b;return o|0}X=f[4894]|0;if(X|0?(Y=f[4892]|0,Z=Y+aa|0,Z>>>0<=Y>>>0|Z>>>0>X>>>0):0){o=0;u=b;return o|0}b:do if(!(f[4895]&4)){X=f[4790]|0;c:do if(X){Z=19584;while(1){Y=f[Z>>2]|0;if(Y>>>0<=X>>>0?(ba=Z+4|0,(Y+(f[ba>>2]|0)|0)>>>0>X>>>0):0)break;Y=f[Z+8>>2]|0;if(!Y){H=118;break c}else Z=Y}j=T-$&_;if(j>>>0<2147483647){Y=Nl(j|0)|0;if((Y|0)==((f[Z>>2]|0)+(f[ba>>2]|0)|0))if((Y|0)==(-1|0))ca=j;else{da=j;ea=Y;H=135;break b}else{fa=Y;ga=j;H=126}}else ca=0}else H=118;while(0);do if((H|0)==118){X=Nl(0)|0;if((X|0)!=(-1|0)?(e=X,j=f[4903]|0,Y=j+-1|0,U=((Y&e|0)==0?0:(Y+e&0-j)-e|0)+aa|0,e=f[4892]|0,j=U+e|0,U>>>0>B>>>0&U>>>0<2147483647):0){Y=f[4894]|0;if(Y|0?j>>>0<=e>>>0|j>>>0>Y>>>0:0){ca=0;break}Y=Nl(U|0)|0;if((Y|0)==(X|0)){da=U;ea=X;H=135;break b}else{fa=Y;ga=U;H=126}}else ca=0}while(0);do if((H|0)==126){U=0-ga|0;if(!(c>>>0>ga>>>0&(ga>>>0<2147483647&(fa|0)!=(-1|0))))if((fa|0)==(-1|0)){ca=0;break}else{da=ga;ea=fa;H=135;break b}Y=f[4904]|0;X=S-ga+Y&0-Y;if(X>>>0>=2147483647){da=ga;ea=fa;H=135;break b}if((Nl(X|0)|0)==(-1|0)){Nl(U|0)|0;ca=0;break}else{da=X+ga|0;ea=fa;H=135;break b}}while(0);f[4895]=f[4895]|4;ha=ca;H=133}else{ha=0;H=133}while(0);if(((H|0)==133?aa>>>0<2147483647:0)?(ca=Nl(aa|0)|0,aa=Nl(0)|0,fa=aa-ca|0,ga=fa>>>0>(B+40|0)>>>0,!((ca|0)==(-1|0)|ga^1|ca>>>0>>0&((ca|0)!=(-1|0)&(aa|0)!=(-1|0))^1)):0){da=ga?fa:ha;ea=ca;H=135}if((H|0)==135){ca=(f[4892]|0)+da|0;f[4892]=ca;if(ca>>>0>(f[4893]|0)>>>0)f[4893]=ca;ca=f[4790]|0;do if(ca){ha=19584;while(1){ia=f[ha>>2]|0;ja=ha+4|0;ka=f[ja>>2]|0;if((ea|0)==(ia+ka|0)){H=143;break}fa=f[ha+8>>2]|0;if(!fa)break;else ha=fa}if(((H|0)==143?(f[ha+12>>2]&8|0)==0:0)?ea>>>0>ca>>>0&ia>>>0<=ca>>>0:0){f[ja>>2]=ka+da;fa=(f[4787]|0)+da|0;ga=ca+8|0;aa=(ga&7|0)==0?0:0-ga&7;ga=ca+aa|0;S=fa-aa|0;f[4790]=ga;f[4787]=S;f[ga+4>>2]=S|1;f[ca+fa+4>>2]=40;f[4791]=f[4906];break}if(ea>>>0<(f[4788]|0)>>>0)f[4788]=ea;fa=ea+da|0;S=19584;while(1){if((f[S>>2]|0)==(fa|0)){H=151;break}ga=f[S+8>>2]|0;if(!ga){la=19584;break}else S=ga}if((H|0)==151)if(!(f[S+12>>2]&8)){f[S>>2]=ea;ha=S+4|0;f[ha>>2]=(f[ha>>2]|0)+da;ha=ea+8|0;ga=ea+((ha&7|0)==0?0:0-ha&7)|0;ha=fa+8|0;aa=fa+((ha&7|0)==0?0:0-ha&7)|0;ha=ga+B|0;c=aa-ga-B|0;f[ga+4>>2]=B|3;do if((ca|0)!=(aa|0)){if((f[4789]|0)==(aa|0)){ba=(f[4786]|0)+c|0;f[4786]=ba;f[4789]=ha;f[ha+4>>2]=ba|1;f[ha+ba>>2]=ba;break}ba=f[aa+4>>2]|0;if((ba&3|0)==1){_=ba&-8;$=ba>>>3;d:do if(ba>>>0<256){T=f[aa+8>>2]|0;X=f[aa+12>>2]|0;if((X|0)==(T|0)){f[4784]=f[4784]&~(1<<$);break}else{f[T+12>>2]=X;f[X+8>>2]=T;break}}else{T=f[aa+24>>2]|0;X=f[aa+12>>2]|0;do if((X|0)==(aa|0)){U=aa+16|0;Y=U+4|0;j=f[Y>>2]|0;if(!j){e=f[U>>2]|0;if(!e){ma=0;break}else{na=e;oa=U}}else{na=j;oa=Y}while(1){Y=na+20|0;j=f[Y>>2]|0;if(j|0){na=j;oa=Y;continue}Y=na+16|0;j=f[Y>>2]|0;if(!j)break;else{na=j;oa=Y}}f[oa>>2]=0;ma=na}else{Y=f[aa+8>>2]|0;f[Y+12>>2]=X;f[X+8>>2]=Y;ma=X}while(0);if(!T)break;X=f[aa+28>>2]|0;Y=19440+(X<<2)|0;do if((f[Y>>2]|0)!=(aa|0)){f[T+16+(((f[T+16>>2]|0)!=(aa|0)&1)<<2)>>2]=ma;if(!ma)break d}else{f[Y>>2]=ma;if(ma|0)break;f[4785]=f[4785]&~(1<>2]=T;X=aa+16|0;Y=f[X>>2]|0;if(Y|0){f[ma+16>>2]=Y;f[Y+24>>2]=ma}Y=f[X+4>>2]|0;if(!Y)break;f[ma+20>>2]=Y;f[Y+24>>2]=ma}while(0);pa=aa+_|0;qa=_+c|0}else{pa=aa;qa=c}$=pa+4|0;f[$>>2]=f[$>>2]&-2;f[ha+4>>2]=qa|1;f[ha+qa>>2]=qa;$=qa>>>3;if(qa>>>0<256){ba=19176+($<<1<<2)|0;Z=f[4784]|0;Y=1<<$;if(!(Z&Y)){f[4784]=Z|Y;ra=ba;sa=ba+8|0}else{Y=ba+8|0;ra=f[Y>>2]|0;sa=Y}f[sa>>2]=ha;f[ra+12>>2]=ha;f[ha+8>>2]=ra;f[ha+12>>2]=ba;break}ba=qa>>>8;do if(!ba)ta=0;else{if(qa>>>0>16777215){ta=31;break}Y=(ba+1048320|0)>>>16&8;Z=ba<>>16&4;X=Z<<$;Z=(X+245760|0)>>>16&2;j=14-($|Y|Z)+(X<>>15)|0;ta=qa>>>(j+7|0)&1|j<<1}while(0);ba=19440+(ta<<2)|0;f[ha+28>>2]=ta;_=ha+16|0;f[_+4>>2]=0;f[_>>2]=0;_=f[4785]|0;j=1<>2]=ha;f[ha+24>>2]=ba;f[ha+12>>2]=ha;f[ha+8>>2]=ha;break}j=qa<<((ta|0)==31?0:25-(ta>>>1)|0);_=f[ba>>2]|0;while(1){if((f[_+4>>2]&-8|0)==(qa|0)){H=192;break}ua=_+16+(j>>>31<<2)|0;ba=f[ua>>2]|0;if(!ba){H=191;break}else{j=j<<1;_=ba}}if((H|0)==191){f[ua>>2]=ha;f[ha+24>>2]=_;f[ha+12>>2]=ha;f[ha+8>>2]=ha;break}else if((H|0)==192){j=_+8|0;ba=f[j>>2]|0;f[ba+12>>2]=ha;f[j>>2]=ha;f[ha+8>>2]=ba;f[ha+12>>2]=_;f[ha+24>>2]=0;break}}else{ba=(f[4787]|0)+c|0;f[4787]=ba;f[4790]=ha;f[ha+4>>2]=ba|1}while(0);o=ga+8|0;u=b;return o|0}else la=19584;while(1){ha=f[la>>2]|0;if(ha>>>0<=ca>>>0?(va=ha+(f[la+4>>2]|0)|0,va>>>0>ca>>>0):0)break;la=f[la+8>>2]|0}ga=va+-47|0;ha=ga+8|0;c=ga+((ha&7|0)==0?0:0-ha&7)|0;ha=ca+16|0;ga=c>>>0>>0?ca:c;c=ga+8|0;aa=da+-40|0;fa=ea+8|0;S=(fa&7|0)==0?0:0-fa&7;fa=ea+S|0;ba=aa-S|0;f[4790]=fa;f[4787]=ba;f[fa+4>>2]=ba|1;f[ea+aa+4>>2]=40;f[4791]=f[4906];aa=ga+4|0;f[aa>>2]=27;f[c>>2]=f[4896];f[c+4>>2]=f[4897];f[c+8>>2]=f[4898];f[c+12>>2]=f[4899];f[4896]=ea;f[4897]=da;f[4899]=0;f[4898]=c;c=ga+24|0;do{ba=c;c=c+4|0;f[c>>2]=7}while((ba+8|0)>>>0>>0);if((ga|0)!=(ca|0)){c=ga-ca|0;f[aa>>2]=f[aa>>2]&-2;f[ca+4>>2]=c|1;f[ga>>2]=c;ba=c>>>3;if(c>>>0<256){fa=19176+(ba<<1<<2)|0;S=f[4784]|0;j=1<>2]|0;xa=j}f[xa>>2]=ca;f[wa+12>>2]=ca;f[ca+8>>2]=wa;f[ca+12>>2]=fa;break}fa=c>>>8;if(fa)if(c>>>0>16777215)ya=31;else{j=(fa+1048320|0)>>>16&8;S=fa<>>16&4;ba=S<>>16&2;Z=14-(fa|j|S)+(ba<>>15)|0;ya=c>>>(Z+7|0)&1|Z<<1}else ya=0;Z=19440+(ya<<2)|0;f[ca+28>>2]=ya;f[ca+20>>2]=0;f[ha>>2]=0;S=f[4785]|0;ba=1<>2]=ca;f[ca+24>>2]=Z;f[ca+12>>2]=ca;f[ca+8>>2]=ca;break}ba=c<<((ya|0)==31?0:25-(ya>>>1)|0);S=f[Z>>2]|0;while(1){if((f[S+4>>2]&-8|0)==(c|0)){H=213;break}za=S+16+(ba>>>31<<2)|0;Z=f[za>>2]|0;if(!Z){H=212;break}else{ba=ba<<1;S=Z}}if((H|0)==212){f[za>>2]=ca;f[ca+24>>2]=S;f[ca+12>>2]=ca;f[ca+8>>2]=ca;break}else if((H|0)==213){ba=S+8|0;c=f[ba>>2]|0;f[c+12>>2]=ca;f[ba>>2]=ca;f[ca+8>>2]=c;f[ca+12>>2]=S;f[ca+24>>2]=0;break}}}else{c=f[4788]|0;if((c|0)==0|ea>>>0>>0)f[4788]=ea;f[4896]=ea;f[4897]=da;f[4899]=0;f[4793]=f[4902];f[4792]=-1;f[4797]=19176;f[4796]=19176;f[4799]=19184;f[4798]=19184;f[4801]=19192;f[4800]=19192;f[4803]=19200;f[4802]=19200;f[4805]=19208;f[4804]=19208;f[4807]=19216;f[4806]=19216;f[4809]=19224;f[4808]=19224;f[4811]=19232;f[4810]=19232;f[4813]=19240;f[4812]=19240;f[4815]=19248;f[4814]=19248;f[4817]=19256;f[4816]=19256;f[4819]=19264;f[4818]=19264;f[4821]=19272;f[4820]=19272;f[4823]=19280;f[4822]=19280;f[4825]=19288;f[4824]=19288;f[4827]=19296;f[4826]=19296;f[4829]=19304;f[4828]=19304;f[4831]=19312;f[4830]=19312;f[4833]=19320;f[4832]=19320;f[4835]=19328;f[4834]=19328;f[4837]=19336;f[4836]=19336;f[4839]=19344;f[4838]=19344;f[4841]=19352;f[4840]=19352;f[4843]=19360;f[4842]=19360;f[4845]=19368;f[4844]=19368;f[4847]=19376;f[4846]=19376;f[4849]=19384;f[4848]=19384;f[4851]=19392;f[4850]=19392;f[4853]=19400;f[4852]=19400;f[4855]=19408;f[4854]=19408;f[4857]=19416;f[4856]=19416;f[4859]=19424;f[4858]=19424;c=da+-40|0;ba=ea+8|0;ha=(ba&7|0)==0?0:0-ba&7;ba=ea+ha|0;ga=c-ha|0;f[4790]=ba;f[4787]=ga;f[ba+4>>2]=ga|1;f[ea+c+4>>2]=40;f[4791]=f[4906]}while(0);ea=f[4787]|0;if(ea>>>0>B>>>0){da=ea-B|0;f[4787]=da;ea=f[4790]|0;ca=ea+B|0;f[4790]=ca;f[ca+4>>2]=da|1;f[ea+4>>2]=B|3;o=ea+8|0;u=b;return o|0}}ea=Vq()|0;f[ea>>2]=12;o=0;u=b;return o|0}function ab(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0;i=u;u=u+240|0;j=i+104|0;k=i+224|0;l=i+176|0;m=i+160|0;n=i+228|0;o=i+72|0;p=i+40|0;q=i+132|0;r=i;s=i+172|0;t=i+156|0;v=i+152|0;w=i+148|0;x=i+144|0;y=i+128|0;z=a+8|0;Mh(z,c,e,g);e=f[a+48>>2]|0;A=f[a+52>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{Ci(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else Ci(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else Ci(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else Ci(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)aq(m);else{D=g<<2;B=ln(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;sj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+152|0;D=a+156|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else Ci(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=ln(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;sj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+56|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>2;R=e+64|0;S=e+28|0;T=(g|0)>0;U=r+4|0;V=r+8|0;Z=r+12|0;_=a+152|0;$=a+112|0;aa=r+16|0;ba=r+28|0;ca=a+16|0;da=a+32|0;ea=a+12|0;fa=a+28|0;ga=a+20|0;ha=a+24|0;ia=r+28|0;ja=r+16|0;ka=r+20|0;la=r+32|0;ma=n+1|0;na=g<<2;oa=(g|0)==1;pa=Q+-1|0;if(F-D>>2>>>0>pa>>>0){qa=Q;ra=pa;sa=D;ta=P;ua=O;va=M;wa=M;xa=N;ya=M;za=N}else{Aa=G;aq(Aa)}b:while(1){pa=f[sa+(ra<<2)>>2]|0;Q=(((pa>>>0)%3|0|0)==0?2:-1)+pa|0;Ba=Q>>>5;Ca=1<<(Q&31);Da=(pa|0)==-1|(Q|0)==-1;Ea=1;Fa=0;Ga=pa;c:while(1){Ha=Ea^1;Ia=Fa;Ja=Ga;while(1){if((Ja|0)==-1){Ka=Ia;break c}La=f[l+(Ia*12|0)>>2]|0;if(((f[(f[e>>2]|0)+(Ja>>>5<<2)>>2]&1<<(Ja&31)|0)==0?(Ma=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ja<<2)>>2]|0,(Ma|0)!=-1):0)?(Na=f[S>>2]|0,Oa=f[A>>2]|0,Pa=f[Oa+(f[Na+(Ma<<2)>>2]<<2)>>2]|0,Qa=Ma+1|0,Ra=f[Oa+(f[Na+((((Qa>>>0)%3|0|0)==0?Ma+-2|0:Qa)<<2)>>2]<<2)>>2]|0,Qa=f[Oa+(f[Na+((((Ma>>>0)%3|0|0)==0?2:-1)+Ma<<2)>>2]<<2)>>2]|0,(Pa|0)<(ra|0)&(Ra|0)<(ra|0)&(Qa|0)<(ra|0)):0){Ma=X(Pa,g)|0;Pa=X(Ra,g)|0;Ra=X(Qa,g)|0;if(T){Qa=0;do{f[La+(Qa<<2)>>2]=(f[c+(Qa+Ra<<2)>>2]|0)+(f[c+(Qa+Pa<<2)>>2]|0)-(f[c+(Qa+Ma<<2)>>2]|0);Qa=Qa+1|0}while((Qa|0)!=(g|0))}Qa=Ia+1|0;if((Qa|0)==4){Ka=4;break c}else Sa=Qa}else Sa=Ia;do if(Ea){Qa=Ja+1|0;Ma=((Qa>>>0)%3|0|0)==0?Ja+-2|0:Qa;if(((Ma|0)!=-1?(f[(f[e>>2]|0)+(Ma>>>5<<2)>>2]&1<<(Ma&31)|0)==0:0)?(Qa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ma<<2)>>2]|0,Ma=Qa+1|0,(Qa|0)!=-1):0)Ta=((Ma>>>0)%3|0|0)==0?Qa+-2|0:Ma;else Ta=-1}else{Ma=(((Ja>>>0)%3|0|0)==0?2:-1)+Ja|0;if(((Ma|0)!=-1?(f[(f[e>>2]|0)+(Ma>>>5<<2)>>2]&1<<(Ma&31)|0)==0:0)?(Qa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ma<<2)>>2]|0,(Qa|0)!=-1):0)if(!((Qa>>>0)%3|0)){Ta=Qa+2|0;break}else{Ta=Qa+-1|0;break}else Ta=-1}while(0);if((Ta|0)==(pa|0)){Ka=Sa;break c}if((Ta|0)!=-1|Ha){Ia=Sa;Ja=Ta}else break}if(Da){Ea=0;Fa=Sa;Ga=-1;continue}if(f[(f[e>>2]|0)+(Ba<<2)>>2]&Ca|0){Ea=0;Fa=Sa;Ga=-1;continue}Ja=f[(f[(f[R>>2]|0)+12>>2]|0)+(Q<<2)>>2]|0;if((Ja|0)==-1){Ea=0;Fa=Sa;Ga=-1;continue}if(!((Ja>>>0)%3|0)){Ea=0;Fa=Sa;Ga=Ja+2|0;continue}else{Ea=0;Fa=Sa;Ga=Ja+-1|0;continue}}Ga=X(ra,g)|0;f[r>>2]=0;f[U>>2]=0;b[V>>0]=0;f[Z>>2]=0;f[Z+4>>2]=0;f[Z+8>>2]=0;f[Z+12>>2]=0;f[Z+16>>2]=0;f[Z+20>>2]=0;f[Z+24>>2]=0;Fa=Ka+-1|0;Ea=p+(Fa<<3)|0;Q=Ea;Ca=Vn(f[Q>>2]|0,f[Q+4>>2]|0,Ka|0,((Ka|0)<0)<<31>>31|0)|0;Q=I;Ba=Ea;f[Ba>>2]=Ca;f[Ba+4>>2]=Q;Ba=c+((X(qa+-2|0,g)|0)<<2)|0;Ea=c+(Ga<<2)|0;Da=f[_>>2]|0;if(T){pa=0;Ja=0;while(1){Ia=(f[Ba+(pa<<2)>>2]|0)-(f[Ea+(pa<<2)>>2]|0)|0;Ha=((Ia|0)>-1?Ia:0-Ia|0)+Ja|0;f[va+(pa<<2)>>2]=Ia;f[Da+(pa<<2)>>2]=Ia<<1^Ia>>31;pa=pa+1|0;if((pa|0)==(g|0)){Ua=Ha;break}else Ja=Ha}}else Ua=0;mo(j,$,Da,g);Ja=Zk(j)|0;pa=I;Ha=Bm(j)|0;Ia=I;Qa=o+(Fa<<3)|0;Ma=Qa;Pa=f[Ma>>2]|0;Ra=f[Ma+4>>2]|0;Va=+wm(Ca,Pa);Ma=Vn(Ha|0,Ia|0,Ja|0,pa|0)|0;Wa=+(Ca>>>0)+4294967296.0*+(Q|0);Xa=+W(+(Va*Wa));pa=Vn(Ma|0,I|0,~~Xa>>>0|0,(+K(Xa)>=1.0?(Xa>0.0?~~+Y(+J(Xa/4294967296.0),4294967295.0)>>>0:~~+W((Xa-+(~~Xa>>>0))/4294967296.0)>>>0):0)|0)|0;Ma=r;f[Ma>>2]=pa;f[Ma+4>>2]=Ua;b[V>>0]=0;f[Z>>2]=0;$f(aa,Ba,Ba+(g<<2)|0);f[s>>2]=ta;f[t>>2]=ua;f[k>>2]=f[s>>2];f[j>>2]=f[t>>2];Jf(ba,k,j);if((Ka|0)<1){Ya=za;Za=ya;_a=xa;$a=wa;ab=ua;bb=ta;cb=ta}else{Ma=n+Ka|0;pa=f[q>>2]|0;Ja=pa;Ia=f[H>>2]|0;Ha=Ma+-1|0;La=(Ha|0)==(n|0);Na=Ma+-2|0;Oa=ma>>>0>>0;db=~Ka;eb=Ka+2+((db|0)>-2?db:-2)|0;db=Ia;fb=Ha>>>0>n>>>0;gb=0;hb=1;while(1){gb=gb+1|0;sj(n|0,1,eb|0)|0;sj(n|0,0,gb|0)|0;ib=Vn(Pa|0,Ra|0,hb|0,0)|0;d:while(1){if(T){sj(f[m>>2]|0,0,na|0)|0;jb=f[m>>2]|0;kb=0;lb=0;while(1){if(!(b[n+kb>>0]|0)){mb=f[l+(kb*12|0)>>2]|0;nb=0;do{ob=jb+(nb<<2)|0;f[ob>>2]=(f[ob>>2]|0)+(f[mb+(nb<<2)>>2]|0);nb=nb+1|0}while((nb|0)!=(g|0));pb=(1<>0]|0))rb=(1<>2]|0;do if(T){f[kb>>2]=(f[kb>>2]|0)/(hb|0)|0;if(!oa){lb=1;do{jb=kb+(lb<<2)|0;f[jb>>2]=(f[jb>>2]|0)/(hb|0)|0;lb=lb+1|0}while((lb|0)!=(g|0));lb=f[_>>2]|0;if(T)sb=lb;else{tb=0;ub=lb;break}}else sb=f[_>>2]|0;lb=0;jb=0;while(1){nb=(f[kb+(lb<<2)>>2]|0)-(f[Ea+(lb<<2)>>2]|0)|0;mb=((nb|0)>-1?nb:0-nb|0)+jb|0;f[pa+(lb<<2)>>2]=nb;f[sb+(lb<<2)>>2]=nb<<1^nb>>31;lb=lb+1|0;if((lb|0)==(g|0)){tb=mb;ub=sb;break}else jb=mb}}else{tb=0;ub=f[_>>2]|0}while(0);mo(j,$,ub,g);kb=Zk(j)|0;jb=I;lb=Bm(j)|0;mb=I;Xa=+wm(Ca,ib);nb=Vn(lb|0,mb|0,kb|0,jb|0)|0;Va=+W(+(Xa*Wa));jb=Vn(nb|0,I|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;nb=f[r>>2]|0;if(!((nb|0)<=(jb|0)?!((nb|0)>=(jb|0)?(tb|0)<(f[U>>2]|0):0):0)){nb=r;f[nb>>2]=jb;f[nb+4>>2]=tb;b[V>>0]=qb;f[Z>>2]=hb;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[k>>2]=f[v>>2];f[j>>2]=f[w>>2];Jf(aa,k,j);f[x>>2]=Ja;f[y>>2]=Ia;f[k>>2]=f[x>>2];f[j>>2]=f[y>>2];Jf(ba,k,j)}if(La)break;vb=b[Ha>>0]|0;nb=-1;jb=vb;while(1){kb=nb+-1|0;wb=Ma+kb|0;mb=jb;jb=b[wb>>0]|0;if((jb&255)<(mb&255))break;if((wb|0)==(n|0)){xb=84;break d}else nb=kb}kb=Ma+nb|0;if((jb&255)<(vb&255)){yb=Ha;zb=vb}else{mb=Ma;lb=Ha;while(1){ob=lb+-1|0;if((jb&255)<(h[mb+-2>>0]|0)){yb=ob;zb=1;break}else{Ab=lb;lb=ob;mb=Ab}}}b[wb>>0]=zb;b[yb>>0]=jb;if((nb|0)<-1){Bb=kb;Cb=Ha}else continue;while(1){mb=b[Bb>>0]|0;b[Bb>>0]=b[Cb>>0]|0;b[Cb>>0]=mb;mb=Bb+1|0;lb=Cb+-1|0;if(mb>>>0>>0){Bb=mb;Cb=lb}else continue d}}if(((xb|0)==84?(xb=0,fb):0)?(ib=b[n>>0]|0,b[n>>0]=vb,b[Ha>>0]=ib,Oa):0){ib=Na;kb=ma;do{nb=b[kb>>0]|0;b[kb>>0]=b[ib>>0]|0;b[ib>>0]=nb;kb=kb+1|0;ib=ib+-1|0}while(kb>>>0>>0)}if((hb|0)>=(Ka|0)){Ya=db;Za=pa;_a=db;$a=pa;ab=Ia;bb=Ja;cb=pa;break}else hb=hb+1|0}}hb=f[Z>>2]|0;pa=Vn(Pa|0,Ra|0,hb|0,((hb|0)<0)<<31>>31|0)|0;hb=Qa;f[hb>>2]=pa;f[hb+4>>2]=I;if(T){hb=f[ba>>2]|0;pa=f[C>>2]|0;Ja=0;do{Ia=f[hb+(Ja<<2)>>2]|0;f[pa+(Ja<<2)>>2]=Ia<<1^Ia>>31;Ja=Ja+1|0}while((Ja|0)!=(g|0));Db=pa}else Db=f[C>>2]|0;lo(j,$,Db,g);if((Ka|0)>0){Eb=a+60+(Fa*12|0)|0;pa=a+60+(Fa*12|0)+4|0;Ja=a+60+(Fa*12|0)+8|0;hb=0;do{Qa=f[pa>>2]|0;Ra=f[Ja>>2]|0;Pa=(Qa|0)==(Ra<<5|0);if(!(1<>0])){if(Pa){if((Qa+1|0)<0){xb=108;break b}Ia=Ra<<6;db=Qa+32&-32;vi(Eb,Qa>>>0<1073741823?(Ia>>>0>>0?db:Ia):2147483647);Fb=f[pa>>2]|0}else Fb=Qa;f[pa>>2]=Fb+1;Ia=(f[Eb>>2]|0)+(Fb>>>5<<2)|0;f[Ia>>2]=f[Ia>>2]|1<<(Fb&31)}else{if(Pa){if((Qa+1|0)<0){xb=113;break b}Pa=Ra<<6;Ra=Qa+32&-32;vi(Eb,Qa>>>0<1073741823?(Pa>>>0>>0?Ra:Pa):2147483647);Gb=f[pa>>2]|0}else Gb=Qa;f[pa>>2]=Gb+1;Qa=(f[Eb>>2]|0)+(Gb>>>5<<2)|0;f[Qa>>2]=f[Qa>>2]&~(1<<(Gb&31))}hb=hb+1|0}while((hb|0)<(Ka|0))}hb=d+(Ga<<2)|0;pa=f[z>>2]|0;if((pa|0)>0){Ja=0;Fa=f[aa>>2]|0;Qa=pa;while(1){if((Qa|0)>0){pa=0;do{Pa=f[Fa+(pa<<2)>>2]|0;Ra=f[ca>>2]|0;if((Pa|0)>(Ra|0)){Ia=f[da>>2]|0;f[Ia+(pa<<2)>>2]=Ra;Hb=Ia}else{Ia=f[ea>>2]|0;Ra=f[da>>2]|0;f[Ra+(pa<<2)>>2]=(Pa|0)<(Ia|0)?Ia:Pa;Hb=Ra}pa=pa+1|0}while((pa|0)<(f[z>>2]|0));Ib=Hb}else Ib=f[da>>2]|0;pa=(f[Ea+(Ja<<2)>>2]|0)-(f[Ib+(Ja<<2)>>2]|0)|0;Ra=hb+(Ja<<2)|0;f[Ra>>2]=pa;do if((pa|0)<(f[fa>>2]|0)){Jb=(f[ga>>2]|0)+pa|0;xb=103}else{if((pa|0)<=(f[ha>>2]|0))break;Jb=pa-(f[ga>>2]|0)|0;xb=103}while(0);if((xb|0)==103){xb=0;f[Ra>>2]=Jb}Ja=Ja+1|0;Qa=f[z>>2]|0;if((Ja|0)>=(Qa|0))break;else Fa=Ib}}Fa=f[ia>>2]|0;if(Fa|0){Qa=f[la>>2]|0;if((Qa|0)!=(Fa|0))f[la>>2]=Qa+(~((Qa+-4-Fa|0)>>>2)<<2);Oq(Fa)}Fa=f[ja>>2]|0;if(Fa|0){Qa=f[ka>>2]|0;if((Qa|0)!=(Fa|0))f[ka>>2]=Qa+(~((Qa+-4-Fa|0)>>>2)<<2);Oq(Fa)}if((qa|0)<=2){Kb=$a;Lb=_a;break a}Fa=f[B>>2]|0;sa=f[Fa>>2]|0;Qa=ra+-1|0;if((f[Fa+4>>2]|0)-sa>>2>>>0<=Qa>>>0){Aa=Fa;xb=18;break}else{Fa=ra;ra=Qa;ta=bb;ua=ab;va=cb;wa=$a;xa=_a;ya=Za;za=Ya;qa=Fa}}if((xb|0)==18)aq(Aa);else if((xb|0)==108)aq(Eb);else if((xb|0)==113)aq(Eb)}else{Kb=M;Lb=N}while(0);N=f[l>>2]|0;if((g|0)>0?(f[N>>2]=0,(g|0)!=1):0){M=1;do{f[N+(M<<2)>>2]=0;M=M+1|0}while((M|0)!=(g|0))}g=f[z>>2]|0;if((g|0)>0){M=a+16|0;Eb=a+32|0;Aa=a+12|0;qa=a+28|0;Ya=a+20|0;za=a+24|0;a=0;Za=N;N=g;while(1){if((N|0)>0){g=0;do{ya=f[Za+(g<<2)>>2]|0;_a=f[M>>2]|0;if((ya|0)>(_a|0)){xa=f[Eb>>2]|0;f[xa+(g<<2)>>2]=_a;Mb=xa}else{xa=f[Aa>>2]|0;_a=f[Eb>>2]|0;f[_a+(g<<2)>>2]=(ya|0)<(xa|0)?xa:ya;Mb=_a}g=g+1|0}while((g|0)<(f[z>>2]|0));Nb=Mb}else Nb=f[Eb>>2]|0;g=(f[c+(a<<2)>>2]|0)-(f[Nb+(a<<2)>>2]|0)|0;_a=d+(a<<2)|0;f[_a>>2]=g;if((g|0)>=(f[qa>>2]|0)){if((g|0)>(f[za>>2]|0)){Ob=g-(f[Ya>>2]|0)|0;xb=139}}else{Ob=(f[Ya>>2]|0)+g|0;xb=139}if((xb|0)==139){xb=0;f[_a>>2]=Ob}a=a+1|0;N=f[z>>2]|0;if((a|0)>=(N|0))break;else Za=Nb}}if(Kb|0){if((Lb|0)!=(Kb|0))f[H>>2]=Lb+(~((Lb+-4-Kb|0)>>>2)<<2);Oq(Kb)}Kb=f[m>>2]|0;if(Kb|0){m=f[E>>2]|0;if((m|0)!=(Kb|0))f[E>>2]=m+(~((m+-4-Kb|0)>>>2)<<2);Oq(Kb)}Kb=f[l+36>>2]|0;if(Kb|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Kb|0))f[m>>2]=E+(~((E+-4-Kb|0)>>>2)<<2);Oq(Kb)}Kb=f[l+24>>2]|0;if(Kb|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Kb|0))f[E>>2]=m+(~((m+-4-Kb|0)>>>2)<<2);Oq(Kb)}Kb=f[l+12>>2]|0;if(Kb|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Kb|0))f[m>>2]=E+(~((E+-4-Kb|0)>>>2)<<2);Oq(Kb)}Kb=f[l>>2]|0;if(!Kb){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Kb|0))f[E>>2]=l+(~((l+-4-Kb|0)>>>2)<<2);Oq(Kb);u=i;return 1}function bb(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0.0,Wa=0.0,Xa=0.0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0;i=u;u=u+240|0;j=i+104|0;k=i+224|0;l=i+176|0;m=i+160|0;n=i+228|0;o=i+72|0;p=i+40|0;q=i+132|0;r=i;s=i+172|0;t=i+156|0;v=i+152|0;w=i+148|0;x=i+144|0;y=i+128|0;z=a+8|0;Mh(z,c,e,g);e=f[a+48>>2]|0;A=f[a+52>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{Ci(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else Ci(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else Ci(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else Ci(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)aq(m);else{D=g<<2;B=ln(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;sj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+152|0;D=a+156|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else Ci(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=ln(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;sj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+56|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>2;R=e+12|0;S=(g|0)>0;T=r+4|0;U=r+8|0;V=r+12|0;Z=a+152|0;_=a+112|0;$=r+16|0;aa=r+28|0;ba=a+16|0;ca=a+32|0;da=a+12|0;ea=a+28|0;fa=a+20|0;ga=a+24|0;ha=r+28|0;ia=r+16|0;ja=r+20|0;ka=r+32|0;la=n+1|0;ma=g<<2;na=(g|0)==1;oa=Q+-1|0;if(F-D>>2>>>0>oa>>>0){pa=Q;qa=oa;ra=D;sa=P;ta=O;ua=M;va=M;wa=N;xa=M;ya=N}else{za=G;aq(za)}b:while(1){oa=f[ra+(qa<<2)>>2]|0;Q=(((oa>>>0)%3|0|0)==0?2:-1)+oa|0;Aa=(oa|0)==-1|(Q|0)==-1;Ba=1;Ca=0;Da=oa;c:while(1){Ea=Ba^1;Fa=Ca;Ga=Da;while(1){if((Ga|0)==-1){Ha=Fa;break c}Ia=f[l+(Fa*12|0)>>2]|0;Ja=f[R>>2]|0;Ka=f[Ja+(Ga<<2)>>2]|0;if((Ka|0)!=-1){La=f[e>>2]|0;Ma=f[A>>2]|0;Na=f[Ma+(f[La+(Ka<<2)>>2]<<2)>>2]|0;Oa=Ka+1|0;Pa=((Oa>>>0)%3|0|0)==0?Ka+-2|0:Oa;if((Pa|0)==-1)Qa=-1;else Qa=f[La+(Pa<<2)>>2]|0;Pa=f[Ma+(Qa<<2)>>2]|0;Oa=(((Ka>>>0)%3|0|0)==0?2:-1)+Ka|0;if((Oa|0)==-1)Ra=-1;else Ra=f[La+(Oa<<2)>>2]|0;Oa=f[Ma+(Ra<<2)>>2]|0;if((Na|0)<(qa|0)&(Pa|0)<(qa|0)&(Oa|0)<(qa|0)){Ma=X(Na,g)|0;Na=X(Pa,g)|0;Pa=X(Oa,g)|0;if(S){Oa=0;do{f[Ia+(Oa<<2)>>2]=(f[c+(Oa+Pa<<2)>>2]|0)+(f[c+(Oa+Na<<2)>>2]|0)-(f[c+(Oa+Ma<<2)>>2]|0);Oa=Oa+1|0}while((Oa|0)!=(g|0))}Oa=Fa+1|0;if((Oa|0)==4){Ha=4;break c}else Sa=Oa}else Sa=Fa}else Sa=Fa;do if(Ba){Oa=Ga+1|0;Ma=((Oa>>>0)%3|0|0)==0?Ga+-2|0:Oa;if((Ma|0)!=-1?(Oa=f[Ja+(Ma<<2)>>2]|0,Ma=Oa+1|0,(Oa|0)!=-1):0)Ta=((Ma>>>0)%3|0|0)==0?Oa+-2|0:Ma;else Ta=-1}else{Ma=(((Ga>>>0)%3|0|0)==0?2:-1)+Ga|0;if((Ma|0)!=-1?(Oa=f[Ja+(Ma<<2)>>2]|0,(Oa|0)!=-1):0)if(!((Oa>>>0)%3|0)){Ta=Oa+2|0;break}else{Ta=Oa+-1|0;break}else Ta=-1}while(0);if((Ta|0)==(oa|0)){Ha=Sa;break c}if((Ta|0)!=-1|Ea){Fa=Sa;Ga=Ta}else break}if(Aa){Ba=0;Ca=Sa;Da=-1;continue}Ga=f[Ja+(Q<<2)>>2]|0;if((Ga|0)==-1){Ba=0;Ca=Sa;Da=-1;continue}if(!((Ga>>>0)%3|0)){Ba=0;Ca=Sa;Da=Ga+2|0;continue}else{Ba=0;Ca=Sa;Da=Ga+-1|0;continue}}Da=X(qa,g)|0;f[r>>2]=0;f[T>>2]=0;b[U>>0]=0;f[V>>2]=0;f[V+4>>2]=0;f[V+8>>2]=0;f[V+12>>2]=0;f[V+16>>2]=0;f[V+20>>2]=0;f[V+24>>2]=0;Ca=Ha+-1|0;Ba=p+(Ca<<3)|0;Q=Ba;Aa=Vn(f[Q>>2]|0,f[Q+4>>2]|0,Ha|0,((Ha|0)<0)<<31>>31|0)|0;Q=I;oa=Ba;f[oa>>2]=Aa;f[oa+4>>2]=Q;oa=c+((X(pa+-2|0,g)|0)<<2)|0;Ba=c+(Da<<2)|0;Ga=f[Z>>2]|0;if(S){Fa=0;Ea=0;while(1){Oa=(f[oa+(Fa<<2)>>2]|0)-(f[Ba+(Fa<<2)>>2]|0)|0;Ma=((Oa|0)>-1?Oa:0-Oa|0)+Ea|0;f[ua+(Fa<<2)>>2]=Oa;f[Ga+(Fa<<2)>>2]=Oa<<1^Oa>>31;Fa=Fa+1|0;if((Fa|0)==(g|0)){Ua=Ma;break}else Ea=Ma}}else Ua=0;mo(j,_,Ga,g);Ea=Zk(j)|0;Fa=I;Ma=Bm(j)|0;Oa=I;Na=o+(Ca<<3)|0;Pa=Na;Ia=f[Pa>>2]|0;La=f[Pa+4>>2]|0;Va=+wm(Aa,Ia);Pa=Vn(Ma|0,Oa|0,Ea|0,Fa|0)|0;Wa=+(Aa>>>0)+4294967296.0*+(Q|0);Xa=+W(+(Va*Wa));Fa=Vn(Pa|0,I|0,~~Xa>>>0|0,(+K(Xa)>=1.0?(Xa>0.0?~~+Y(+J(Xa/4294967296.0),4294967295.0)>>>0:~~+W((Xa-+(~~Xa>>>0))/4294967296.0)>>>0):0)|0)|0;Pa=r;f[Pa>>2]=Fa;f[Pa+4>>2]=Ua;b[U>>0]=0;f[V>>2]=0;$f($,oa,oa+(g<<2)|0);f[s>>2]=sa;f[t>>2]=ta;f[k>>2]=f[s>>2];f[j>>2]=f[t>>2];Jf(aa,k,j);if((Ha|0)<1){Ya=ya;Za=xa;_a=wa;$a=va;ab=ta;bb=sa;cb=sa}else{Pa=n+Ha|0;Fa=f[q>>2]|0;Ea=Fa;Oa=f[H>>2]|0;Ma=Pa+-1|0;Ka=(Ma|0)==(n|0);db=Pa+-2|0;eb=la>>>0>>0;fb=~Ha;gb=Ha+2+((fb|0)>-2?fb:-2)|0;fb=Oa;hb=Ma>>>0>n>>>0;ib=0;jb=1;while(1){ib=ib+1|0;sj(n|0,1,gb|0)|0;sj(n|0,0,ib|0)|0;kb=Vn(Ia|0,La|0,jb|0,0)|0;d:while(1){if(S){sj(f[m>>2]|0,0,ma|0)|0;lb=f[m>>2]|0;mb=0;nb=0;while(1){if(!(b[n+mb>>0]|0)){ob=f[l+(mb*12|0)>>2]|0;pb=0;do{qb=lb+(pb<<2)|0;f[qb>>2]=(f[qb>>2]|0)+(f[ob+(pb<<2)>>2]|0);pb=pb+1|0}while((pb|0)!=(g|0));rb=(1<>0]|0))tb=(1<>2]|0;do if(S){f[mb>>2]=(f[mb>>2]|0)/(jb|0)|0;if(!na){nb=1;do{lb=mb+(nb<<2)|0;f[lb>>2]=(f[lb>>2]|0)/(jb|0)|0;nb=nb+1|0}while((nb|0)!=(g|0));nb=f[Z>>2]|0;if(S)ub=nb;else{vb=0;wb=nb;break}}else ub=f[Z>>2]|0;nb=0;lb=0;while(1){pb=(f[mb+(nb<<2)>>2]|0)-(f[Ba+(nb<<2)>>2]|0)|0;ob=((pb|0)>-1?pb:0-pb|0)+lb|0;f[Fa+(nb<<2)>>2]=pb;f[ub+(nb<<2)>>2]=pb<<1^pb>>31;nb=nb+1|0;if((nb|0)==(g|0)){vb=ob;wb=ub;break}else lb=ob}}else{vb=0;wb=f[Z>>2]|0}while(0);mo(j,_,wb,g);mb=Zk(j)|0;lb=I;nb=Bm(j)|0;ob=I;Xa=+wm(Aa,kb);pb=Vn(nb|0,ob|0,mb|0,lb|0)|0;Va=+W(+(Xa*Wa));lb=Vn(pb|0,I|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;pb=f[r>>2]|0;if(!((pb|0)<=(lb|0)?!((pb|0)>=(lb|0)?(vb|0)<(f[T>>2]|0):0):0)){pb=r;f[pb>>2]=lb;f[pb+4>>2]=vb;b[U>>0]=sb;f[V>>2]=jb;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[k>>2]=f[v>>2];f[j>>2]=f[w>>2];Jf($,k,j);f[x>>2]=Ea;f[y>>2]=Oa;f[k>>2]=f[x>>2];f[j>>2]=f[y>>2];Jf(aa,k,j)}if(Ka)break;xb=b[Ma>>0]|0;pb=-1;lb=xb;while(1){mb=pb+-1|0;yb=Pa+mb|0;ob=lb;lb=b[yb>>0]|0;if((lb&255)<(ob&255))break;if((yb|0)==(n|0)){zb=84;break d}else pb=mb}mb=Pa+pb|0;if((lb&255)<(xb&255)){Ab=Ma;Bb=xb}else{ob=Pa;nb=Ma;while(1){qb=nb+-1|0;if((lb&255)<(h[ob+-2>>0]|0)){Ab=qb;Bb=1;break}else{Cb=nb;nb=qb;ob=Cb}}}b[yb>>0]=Bb;b[Ab>>0]=lb;if((pb|0)<-1){Db=mb;Eb=Ma}else continue;while(1){ob=b[Db>>0]|0;b[Db>>0]=b[Eb>>0]|0;b[Eb>>0]=ob;ob=Db+1|0;nb=Eb+-1|0;if(ob>>>0>>0){Db=ob;Eb=nb}else continue d}}if(((zb|0)==84?(zb=0,hb):0)?(kb=b[n>>0]|0,b[n>>0]=xb,b[Ma>>0]=kb,eb):0){kb=db;mb=la;do{pb=b[mb>>0]|0;b[mb>>0]=b[kb>>0]|0;b[kb>>0]=pb;mb=mb+1|0;kb=kb+-1|0}while(mb>>>0>>0)}if((jb|0)>=(Ha|0)){Ya=fb;Za=Fa;_a=fb;$a=Fa;ab=Oa;bb=Ea;cb=Fa;break}else jb=jb+1|0}}jb=f[V>>2]|0;Fa=Vn(Ia|0,La|0,jb|0,((jb|0)<0)<<31>>31|0)|0;jb=Na;f[jb>>2]=Fa;f[jb+4>>2]=I;if(S){jb=f[aa>>2]|0;Fa=f[C>>2]|0;Ea=0;do{Oa=f[jb+(Ea<<2)>>2]|0;f[Fa+(Ea<<2)>>2]=Oa<<1^Oa>>31;Ea=Ea+1|0}while((Ea|0)!=(g|0));Fb=Fa}else Fb=f[C>>2]|0;lo(j,_,Fb,g);if((Ha|0)>0){Gb=a+60+(Ca*12|0)|0;Fa=a+60+(Ca*12|0)+4|0;Ea=a+60+(Ca*12|0)+8|0;jb=0;do{Na=f[Fa>>2]|0;La=f[Ea>>2]|0;Ia=(Na|0)==(La<<5|0);if(!(1<>0])){if(Ia){if((Na+1|0)<0){zb=108;break b}Oa=La<<6;fb=Na+32&-32;vi(Gb,Na>>>0<1073741823?(Oa>>>0>>0?fb:Oa):2147483647);Hb=f[Fa>>2]|0}else Hb=Na;f[Fa>>2]=Hb+1;Oa=(f[Gb>>2]|0)+(Hb>>>5<<2)|0;f[Oa>>2]=f[Oa>>2]|1<<(Hb&31)}else{if(Ia){if((Na+1|0)<0){zb=113;break b}Ia=La<<6;La=Na+32&-32;vi(Gb,Na>>>0<1073741823?(Ia>>>0>>0?La:Ia):2147483647);Ib=f[Fa>>2]|0}else Ib=Na;f[Fa>>2]=Ib+1;Na=(f[Gb>>2]|0)+(Ib>>>5<<2)|0;f[Na>>2]=f[Na>>2]&~(1<<(Ib&31))}jb=jb+1|0}while((jb|0)<(Ha|0))}jb=d+(Da<<2)|0;Fa=f[z>>2]|0;if((Fa|0)>0){Ea=0;Ca=f[$>>2]|0;Na=Fa;while(1){if((Na|0)>0){Fa=0;do{Ia=f[Ca+(Fa<<2)>>2]|0;La=f[ba>>2]|0;if((Ia|0)>(La|0)){Oa=f[ca>>2]|0;f[Oa+(Fa<<2)>>2]=La;Jb=Oa}else{Oa=f[da>>2]|0;La=f[ca>>2]|0;f[La+(Fa<<2)>>2]=(Ia|0)<(Oa|0)?Oa:Ia;Jb=La}Fa=Fa+1|0}while((Fa|0)<(f[z>>2]|0));Kb=Jb}else Kb=f[ca>>2]|0;Fa=(f[Ba+(Ea<<2)>>2]|0)-(f[Kb+(Ea<<2)>>2]|0)|0;La=jb+(Ea<<2)|0;f[La>>2]=Fa;do if((Fa|0)<(f[ea>>2]|0)){Lb=(f[fa>>2]|0)+Fa|0;zb=103}else{if((Fa|0)<=(f[ga>>2]|0))break;Lb=Fa-(f[fa>>2]|0)|0;zb=103}while(0);if((zb|0)==103){zb=0;f[La>>2]=Lb}Ea=Ea+1|0;Na=f[z>>2]|0;if((Ea|0)>=(Na|0))break;else Ca=Kb}}Ca=f[ha>>2]|0;if(Ca|0){Na=f[ka>>2]|0;if((Na|0)!=(Ca|0))f[ka>>2]=Na+(~((Na+-4-Ca|0)>>>2)<<2);Oq(Ca)}Ca=f[ia>>2]|0;if(Ca|0){Na=f[ja>>2]|0;if((Na|0)!=(Ca|0))f[ja>>2]=Na+(~((Na+-4-Ca|0)>>>2)<<2);Oq(Ca)}if((pa|0)<=2){Mb=$a;Nb=_a;break a}Ca=f[B>>2]|0;ra=f[Ca>>2]|0;Na=qa+-1|0;if((f[Ca+4>>2]|0)-ra>>2>>>0<=Na>>>0){za=Ca;zb=18;break}else{Ca=qa;qa=Na;sa=bb;ta=ab;ua=cb;va=$a;wa=_a;xa=Za;ya=Ya;pa=Ca}}if((zb|0)==18)aq(za);else if((zb|0)==108)aq(Gb);else if((zb|0)==113)aq(Gb)}else{Mb=M;Nb=N}while(0);N=f[l>>2]|0;if((g|0)>0?(f[N>>2]=0,(g|0)!=1):0){M=1;do{f[N+(M<<2)>>2]=0;M=M+1|0}while((M|0)!=(g|0))}g=f[z>>2]|0;if((g|0)>0){M=a+16|0;Gb=a+32|0;za=a+12|0;pa=a+28|0;Ya=a+20|0;ya=a+24|0;a=0;Za=N;N=g;while(1){if((N|0)>0){g=0;do{xa=f[Za+(g<<2)>>2]|0;_a=f[M>>2]|0;if((xa|0)>(_a|0)){wa=f[Gb>>2]|0;f[wa+(g<<2)>>2]=_a;Ob=wa}else{wa=f[za>>2]|0;_a=f[Gb>>2]|0;f[_a+(g<<2)>>2]=(xa|0)<(wa|0)?wa:xa;Ob=_a}g=g+1|0}while((g|0)<(f[z>>2]|0));Pb=Ob}else Pb=f[Gb>>2]|0;g=(f[c+(a<<2)>>2]|0)-(f[Pb+(a<<2)>>2]|0)|0;_a=d+(a<<2)|0;f[_a>>2]=g;if((g|0)>=(f[pa>>2]|0)){if((g|0)>(f[ya>>2]|0)){Qb=g-(f[Ya>>2]|0)|0;zb=139}}else{Qb=(f[Ya>>2]|0)+g|0;zb=139}if((zb|0)==139){zb=0;f[_a>>2]=Qb}a=a+1|0;N=f[z>>2]|0;if((a|0)>=(N|0))break;else Za=Pb}}if(Mb|0){if((Nb|0)!=(Mb|0))f[H>>2]=Nb+(~((Nb+-4-Mb|0)>>>2)<<2);Oq(Mb)}Mb=f[m>>2]|0;if(Mb|0){m=f[E>>2]|0;if((m|0)!=(Mb|0))f[E>>2]=m+(~((m+-4-Mb|0)>>>2)<<2);Oq(Mb)}Mb=f[l+36>>2]|0;if(Mb|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Mb|0))f[m>>2]=E+(~((E+-4-Mb|0)>>>2)<<2);Oq(Mb)}Mb=f[l+24>>2]|0;if(Mb|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Mb|0))f[E>>2]=m+(~((m+-4-Mb|0)>>>2)<<2);Oq(Mb)}Mb=f[l+12>>2]|0;if(Mb|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Mb|0))f[m>>2]=E+(~((E+-4-Mb|0)>>>2)<<2);Oq(Mb)}Mb=f[l>>2]|0;if(!Mb){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Mb|0))f[E>>2]=l+(~((l+-4-Mb|0)>>>2)<<2);Oq(Mb);u=i;return 1}function cb(a){a=a|0;var b=0,c=0,d=0,e=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,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;b=u;u=u+16|0;c=b;d=b+8|0;e=b+4|0;f[d>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;h=g*210|0;f[e>>2]=a-h;i=0;j=g;g=(Hl(6952,7144,e,c)|0)-6952>>2;k=h;a:while(1){l=(f[6952+(g<<2)>>2]|0)+k|0;h=5;while(1){if(h>>>0>=47){m=211;n=i;o=8;break}p=f[6760+(h<<2)>>2]|0;q=(l>>>0)/(p>>>0)|0;if(q>>>0

>>0){o=106;break a}if((l|0)==(X(q,p)|0)){r=i;break}else h=h+1|0}b:do if((o|0)==8){c:while(1){o=0;h=(l>>>0)/(m>>>0)|0;do if(h>>>0>=m>>>0)if((l|0)!=(X(h,m)|0)){p=m+10|0;q=(l>>>0)/(p>>>0)|0;if(q>>>0>=p>>>0)if((l|0)!=(X(q,p)|0)){q=m+12|0;s=(l>>>0)/(q>>>0)|0;if(s>>>0>=q>>>0)if((l|0)!=(X(s,q)|0)){s=m+16|0;t=(l>>>0)/(s>>>0)|0;if(t>>>0>=s>>>0)if((l|0)!=(X(t,s)|0)){t=m+18|0;v=(l>>>0)/(t>>>0)|0;if(v>>>0>=t>>>0)if((l|0)!=(X(v,t)|0)){v=m+22|0;w=(l>>>0)/(v>>>0)|0;if(w>>>0>=v>>>0)if((l|0)!=(X(w,v)|0)){w=m+28|0;x=(l>>>0)/(w>>>0)|0;if(x>>>0>=w>>>0)if((l|0)==(X(x,w)|0)){y=w;z=9;A=n}else{x=m+30|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+36|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+40|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+42|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+46|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+52|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+58|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+60|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+66|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+70|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+72|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+78|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+82|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+88|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+96|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+100|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+102|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+106|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+108|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+112|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+120|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+126|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+130|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+136|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+138|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+142|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+148|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+150|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+156|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+162|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+166|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+168|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+172|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+178|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+180|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+186|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+190|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+192|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+196|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+198|0;B=(l>>>0)/(x>>>0)|0;if(B>>>0>>0){y=x;z=1;A=l;break}if((l|0)==(X(B,x)|0)){y=x;z=9;A=n;break}x=m+208|0;B=(l>>>0)/(x>>>0)|0;C=B>>>0>>0;D=(l|0)==(X(B,x)|0);y=C|D?x:m+210|0;z=C?1:D?9:0;A=C?l:n}else{y=w;z=1;A=l}}else{y=v;z=9;A=n}else{y=v;z=1;A=l}}else{y=t;z=9;A=n}else{y=t;z=1;A=l}}else{y=s;z=9;A=n}else{y=s;z=1;A=l}}else{y=q;z=9;A=n}else{y=q;z=1;A=l}}else{y=p;z=9;A=n}else{y=p;z=1;A=l}}else{y=m;z=9;A=n}else{y=m;z=1;A=l}while(0);switch(z&15){case 9:{r=A;break b;break}case 0:{m=y;n=A;o=8;break}default:break c}}if(!z)r=A;else{o=107;break a}}while(0);h=g+1|0;p=(h|0)==48;q=j+(p&1)|0;i=r;j=q;g=p?0:h;k=q*210|0}if((o|0)==106){f[d>>2]=l;E=l;break}else if((o|0)==107){f[d>>2]=l;E=A;break}}else{k=Hl(6760,6952,d,c)|0;E=f[k>>2]|0}while(0);u=b;return E|0}function db(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0;i=u;u=u+256|0;e=i+104|0;j=i+240|0;k=i+224|0;l=i+160|0;m=i+140|0;n=i+248|0;o=i+72|0;p=i+40|0;q=i+128|0;r=i;s=i+232|0;t=i+220|0;v=i+216|0;w=i+212|0;x=i+208|0;y=i+152|0;z=f[a+28>>2]|0;A=f[a+32>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{Ci(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else Ci(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else Ci(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else Ci(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)aq(m);else{D=g<<2;B=ln(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;sj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+136|0;D=a+140|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else Ci(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=ln(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;sj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+36|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>2;R=z+64|0;S=z+28|0;T=(g|0)>0;U=r+4|0;V=r+8|0;Z=r+12|0;_=a+136|0;$=a+96|0;aa=r+16|0;ba=r+28|0;ca=a+8|0;da=j+4|0;ea=k+4|0;fa=e+4|0;ga=r+28|0;ha=r+16|0;ia=r+20|0;ja=r+32|0;ka=n+1|0;la=g<<2;ma=(g|0)==1;na=Q+-1|0;if(F-D>>2>>>0>na>>>0){oa=Q;pa=na;qa=D;ra=P;sa=O;ta=M;ua=M;va=N;wa=M;xa=N}else{ya=G;aq(ya)}b:while(1){na=f[qa+(pa<<2)>>2]|0;Q=(((na>>>0)%3|0|0)==0?2:-1)+na|0;za=Q>>>5;Aa=1<<(Q&31);Ba=(na|0)==-1|(Q|0)==-1;Ca=1;Da=0;Ea=na;c:while(1){Fa=Ca^1;Ga=Da;Ha=Ea;while(1){if((Ha|0)==-1){Ia=Ga;break c}Ja=f[l+(Ga*12|0)>>2]|0;if(((f[(f[z>>2]|0)+(Ha>>>5<<2)>>2]&1<<(Ha&31)|0)==0?(Ka=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ha<<2)>>2]|0,(Ka|0)!=-1):0)?(La=f[S>>2]|0,Ma=f[A>>2]|0,Na=f[Ma+(f[La+(Ka<<2)>>2]<<2)>>2]|0,Oa=Ka+1|0,Pa=f[Ma+(f[La+((((Oa>>>0)%3|0|0)==0?Ka+-2|0:Oa)<<2)>>2]<<2)>>2]|0,Oa=f[Ma+(f[La+((((Ka>>>0)%3|0|0)==0?2:-1)+Ka<<2)>>2]<<2)>>2]|0,(Na|0)<(pa|0)&(Pa|0)<(pa|0)&(Oa|0)<(pa|0)):0){Ka=X(Na,g)|0;Na=X(Pa,g)|0;Pa=X(Oa,g)|0;if(T){Oa=0;do{f[Ja+(Oa<<2)>>2]=(f[c+(Oa+Pa<<2)>>2]|0)+(f[c+(Oa+Na<<2)>>2]|0)-(f[c+(Oa+Ka<<2)>>2]|0);Oa=Oa+1|0}while((Oa|0)!=(g|0))}Oa=Ga+1|0;if((Oa|0)==4){Ia=4;break c}else Qa=Oa}else Qa=Ga;do if(Ca){Oa=Ha+1|0;Ka=((Oa>>>0)%3|0|0)==0?Ha+-2|0:Oa;if(((Ka|0)!=-1?(f[(f[z>>2]|0)+(Ka>>>5<<2)>>2]&1<<(Ka&31)|0)==0:0)?(Oa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ka<<2)>>2]|0,Ka=Oa+1|0,(Oa|0)!=-1):0)Ra=((Ka>>>0)%3|0|0)==0?Oa+-2|0:Ka;else Ra=-1}else{Ka=(((Ha>>>0)%3|0|0)==0?2:-1)+Ha|0;if(((Ka|0)!=-1?(f[(f[z>>2]|0)+(Ka>>>5<<2)>>2]&1<<(Ka&31)|0)==0:0)?(Oa=f[(f[(f[R>>2]|0)+12>>2]|0)+(Ka<<2)>>2]|0,(Oa|0)!=-1):0)if(!((Oa>>>0)%3|0)){Ra=Oa+2|0;break}else{Ra=Oa+-1|0;break}else Ra=-1}while(0);if((Ra|0)==(na|0)){Ia=Qa;break c}if((Ra|0)!=-1|Fa){Ga=Qa;Ha=Ra}else break}if(Ba){Ca=0;Da=Qa;Ea=-1;continue}if(f[(f[z>>2]|0)+(za<<2)>>2]&Aa|0){Ca=0;Da=Qa;Ea=-1;continue}Ha=f[(f[(f[R>>2]|0)+12>>2]|0)+(Q<<2)>>2]|0;if((Ha|0)==-1){Ca=0;Da=Qa;Ea=-1;continue}if(!((Ha>>>0)%3|0)){Ca=0;Da=Qa;Ea=Ha+2|0;continue}else{Ca=0;Da=Qa;Ea=Ha+-1|0;continue}}Ea=X(pa,g)|0;f[r>>2]=0;f[U>>2]=0;b[V>>0]=0;f[Z>>2]=0;f[Z+4>>2]=0;f[Z+8>>2]=0;f[Z+12>>2]=0;f[Z+16>>2]=0;f[Z+20>>2]=0;f[Z+24>>2]=0;Da=Ia+-1|0;Ca=p+(Da<<3)|0;Q=Ca;Aa=Vn(f[Q>>2]|0,f[Q+4>>2]|0,Ia|0,((Ia|0)<0)<<31>>31|0)|0;Q=I;za=Ca;f[za>>2]=Aa;f[za+4>>2]=Q;za=c+((X(oa+-2|0,g)|0)<<2)|0;Ca=c+(Ea<<2)|0;Ba=f[_>>2]|0;if(T){na=0;Ha=0;while(1){Ga=(f[za+(na<<2)>>2]|0)-(f[Ca+(na<<2)>>2]|0)|0;Fa=((Ga|0)>-1?Ga:0-Ga|0)+Ha|0;f[ta+(na<<2)>>2]=Ga;f[Ba+(na<<2)>>2]=Ga<<1^Ga>>31;na=na+1|0;if((na|0)==(g|0)){Sa=Fa;break}else Ha=Fa}}else Sa=0;mo(e,$,Ba,g);Ha=Zk(e)|0;na=I;Fa=Bm(e)|0;Ga=I;Oa=o+(Da<<3)|0;Ka=Oa;Na=f[Ka>>2]|0;Pa=f[Ka+4>>2]|0;Ta=+wm(Aa,Na);Ka=Vn(Fa|0,Ga|0,Ha|0,na|0)|0;Ua=+(Aa>>>0)+4294967296.0*+(Q|0);Va=+W(+(Ta*Ua));na=Vn(Ka|0,I|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;Ka=r;f[Ka>>2]=na;f[Ka+4>>2]=Sa;b[V>>0]=0;f[Z>>2]=0;$f(aa,za,za+(g<<2)|0);f[s>>2]=ra;f[t>>2]=sa;f[j>>2]=f[s>>2];f[e>>2]=f[t>>2];Jf(ba,j,e);if((Ia|0)<1){Wa=xa;Xa=wa;Ya=va;Za=ua;_a=sa;$a=ra;ab=ra}else{Ka=n+Ia|0;na=f[q>>2]|0;Ha=na;Ga=f[H>>2]|0;Fa=Ka+-1|0;Ja=(Fa|0)==(n|0);La=Ka+-2|0;Ma=ka>>>0>>0;bb=~Ia;cb=Ia+2+((bb|0)>-2?bb:-2)|0;bb=Ga;db=Fa>>>0>n>>>0;eb=0;fb=1;while(1){eb=eb+1|0;sj(n|0,1,cb|0)|0;sj(n|0,0,eb|0)|0;gb=Vn(Na|0,Pa|0,fb|0,0)|0;d:while(1){if(T){sj(f[m>>2]|0,0,la|0)|0;hb=f[m>>2]|0;ib=0;jb=0;while(1){if(!(b[n+ib>>0]|0)){kb=f[l+(ib*12|0)>>2]|0;lb=0;do{mb=hb+(lb<<2)|0;f[mb>>2]=(f[mb>>2]|0)+(f[kb+(lb<<2)>>2]|0);lb=lb+1|0}while((lb|0)!=(g|0));nb=(1<>0]|0))pb=(1<>2]|0;do if(T){f[ib>>2]=(f[ib>>2]|0)/(fb|0)|0;if(!ma){jb=1;do{hb=ib+(jb<<2)|0;f[hb>>2]=(f[hb>>2]|0)/(fb|0)|0;jb=jb+1|0}while((jb|0)!=(g|0));jb=f[_>>2]|0;if(T)qb=jb;else{rb=0;sb=jb;break}}else qb=f[_>>2]|0;jb=0;hb=0;while(1){lb=(f[ib+(jb<<2)>>2]|0)-(f[Ca+(jb<<2)>>2]|0)|0;kb=((lb|0)>-1?lb:0-lb|0)+hb|0;f[na+(jb<<2)>>2]=lb;f[qb+(jb<<2)>>2]=lb<<1^lb>>31;jb=jb+1|0;if((jb|0)==(g|0)){rb=kb;sb=qb;break}else hb=kb}}else{rb=0;sb=f[_>>2]|0}while(0);mo(e,$,sb,g);ib=Zk(e)|0;hb=I;jb=Bm(e)|0;kb=I;Va=+wm(Aa,gb);lb=Vn(jb|0,kb|0,ib|0,hb|0)|0;Ta=+W(+(Va*Ua));hb=Vn(lb|0,I|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;lb=f[r>>2]|0;if(!((lb|0)<=(hb|0)?!((lb|0)>=(hb|0)?(rb|0)<(f[U>>2]|0):0):0)){lb=r;f[lb>>2]=hb;f[lb+4>>2]=rb;b[V>>0]=ob;f[Z>>2]=fb;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[j>>2]=f[v>>2];f[e>>2]=f[w>>2];Jf(aa,j,e);f[x>>2]=Ha;f[y>>2]=Ga;f[j>>2]=f[x>>2];f[e>>2]=f[y>>2];Jf(ba,j,e)}if(Ja)break;tb=b[Fa>>0]|0;lb=-1;hb=tb;while(1){ib=lb+-1|0;ub=Ka+ib|0;kb=hb;hb=b[ub>>0]|0;if((hb&255)<(kb&255))break;if((ub|0)==(n|0)){vb=84;break d}else lb=ib}ib=Ka+lb|0;if((hb&255)<(tb&255)){wb=Fa;xb=tb}else{kb=Ka;jb=Fa;while(1){mb=jb+-1|0;if((hb&255)<(h[kb+-2>>0]|0)){wb=mb;xb=1;break}else{yb=jb;jb=mb;kb=yb}}}b[ub>>0]=xb;b[wb>>0]=hb;if((lb|0)<-1){zb=ib;Ab=Fa}else continue;while(1){kb=b[zb>>0]|0;b[zb>>0]=b[Ab>>0]|0;b[Ab>>0]=kb;kb=zb+1|0;jb=Ab+-1|0;if(kb>>>0>>0){zb=kb;Ab=jb}else continue d}}if(((vb|0)==84?(vb=0,db):0)?(gb=b[n>>0]|0,b[n>>0]=tb,b[Fa>>0]=gb,Ma):0){gb=La;ib=ka;do{lb=b[ib>>0]|0;b[ib>>0]=b[gb>>0]|0;b[gb>>0]=lb;ib=ib+1|0;gb=gb+-1|0}while(ib>>>0>>0)}if((fb|0)>=(Ia|0)){Wa=bb;Xa=na;Ya=bb;Za=na;_a=Ga;$a=Ha;ab=na;break}else fb=fb+1|0}}fb=f[Z>>2]|0;na=Vn(Na|0,Pa|0,fb|0,((fb|0)<0)<<31>>31|0)|0;fb=Oa;f[fb>>2]=na;f[fb+4>>2]=I;if(T){fb=f[ba>>2]|0;na=f[C>>2]|0;Ha=0;do{Ga=f[fb+(Ha<<2)>>2]|0;f[na+(Ha<<2)>>2]=Ga<<1^Ga>>31;Ha=Ha+1|0}while((Ha|0)!=(g|0));Bb=na}else Bb=f[C>>2]|0;lo(e,$,Bb,g);if((Ia|0)>0){Cb=a+40+(Da*12|0)|0;na=a+40+(Da*12|0)+4|0;Ha=a+40+(Da*12|0)+8|0;fb=0;do{Oa=f[na>>2]|0;Pa=f[Ha>>2]|0;Na=(Oa|0)==(Pa<<5|0);if(!(1<>0])){if(Na){if((Oa+1|0)<0){vb=95;break b}Ga=Pa<<6;bb=Oa+32&-32;vi(Cb,Oa>>>0<1073741823?(Ga>>>0>>0?bb:Ga):2147483647);Db=f[na>>2]|0}else Db=Oa;f[na>>2]=Db+1;Ga=(f[Cb>>2]|0)+(Db>>>5<<2)|0;f[Ga>>2]=f[Ga>>2]|1<<(Db&31)}else{if(Na){if((Oa+1|0)<0){vb=100;break b}Na=Pa<<6;Pa=Oa+32&-32;vi(Cb,Oa>>>0<1073741823?(Na>>>0>>0?Pa:Na):2147483647);Eb=f[na>>2]|0}else Eb=Oa;f[na>>2]=Eb+1;Oa=(f[Cb>>2]|0)+(Eb>>>5<<2)|0;f[Oa>>2]=f[Oa>>2]&~(1<<(Eb&31))}fb=fb+1|0}while((fb|0)<(Ia|0))}fb=f[aa>>2]|0;na=d+(Ea<<2)|0;Ha=f[Ca+4>>2]|0;Da=f[fb>>2]|0;Oa=f[fb+4>>2]|0;f[j>>2]=f[Ca>>2];f[da>>2]=Ha;f[k>>2]=Da;f[ea>>2]=Oa;Od(e,ca,j,k);f[na>>2]=f[e>>2];f[na+4>>2]=f[fa>>2];na=f[ga>>2]|0;if(na|0){Oa=f[ja>>2]|0;if((Oa|0)!=(na|0))f[ja>>2]=Oa+(~((Oa+-4-na|0)>>>2)<<2);Oq(na)}na=f[ha>>2]|0;if(na|0){Oa=f[ia>>2]|0;if((Oa|0)!=(na|0))f[ia>>2]=Oa+(~((Oa+-4-na|0)>>>2)<<2);Oq(na)}if((oa|0)<=2){Fb=Za;Gb=Ya;break a}na=f[B>>2]|0;qa=f[na>>2]|0;Oa=pa+-1|0;if((f[na+4>>2]|0)-qa>>2>>>0<=Oa>>>0){ya=na;vb=18;break}else{na=pa;pa=Oa;ra=$a;sa=_a;ta=ab;ua=Za;va=Ya;wa=Xa;xa=Wa;oa=na}}if((vb|0)==18)aq(ya);else if((vb|0)==95)aq(Cb);else if((vb|0)==100)aq(Cb)}else{Fb=M;Gb=N}while(0);if((g|0)>0)sj(f[l>>2]|0,0,g<<2|0)|0;g=f[l>>2]|0;N=f[c+4>>2]|0;M=f[g>>2]|0;Cb=f[g+4>>2]|0;f[j>>2]=f[c>>2];f[j+4>>2]=N;f[k>>2]=M;f[k+4>>2]=Cb;Od(e,a+8|0,j,k);f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];if(Fb|0){if((Gb|0)!=(Fb|0))f[H>>2]=Gb+(~((Gb+-4-Fb|0)>>>2)<<2);Oq(Fb)}Fb=f[m>>2]|0;if(Fb|0){m=f[E>>2]|0;if((m|0)!=(Fb|0))f[E>>2]=m+(~((m+-4-Fb|0)>>>2)<<2);Oq(Fb)}Fb=f[l+36>>2]|0;if(Fb|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Fb|0))f[m>>2]=E+(~((E+-4-Fb|0)>>>2)<<2);Oq(Fb)}Fb=f[l+24>>2]|0;if(Fb|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Fb|0))f[E>>2]=m+(~((m+-4-Fb|0)>>>2)<<2);Oq(Fb)}Fb=f[l+12>>2]|0;if(Fb|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Fb|0))f[m>>2]=E+(~((E+-4-Fb|0)>>>2)<<2);Oq(Fb)}Fb=f[l>>2]|0;if(!Fb){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Fb|0))f[E>>2]=l+(~((l+-4-Fb|0)>>>2)<<2);Oq(Fb);u=i;return 1}function eb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,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,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0;c=u;u=u+32|0;d=c+16|0;e=c+4|0;g=c;f[a+36>>2]=b;h=a+24|0;i=a+28|0;j=f[i>>2]|0;k=f[h>>2]|0;l=j-k>>2;m=k;k=j;if(l>>>0>=b>>>0){if(l>>>0>b>>>0?(j=m+(b<<2)|0,(j|0)!=(k|0)):0)f[i>>2]=k+(~((k+-4-j|0)>>>2)<<2)}else Ch(h,b-l|0,6140);f[d>>2]=0;l=d+4|0;f[l>>2]=0;j=d+8|0;f[j>>2]=0;if(b){if((b|0)<0)aq(d);k=((b+-1|0)>>>5)+1|0;m=ln(k<<2)|0;f[d>>2]=m;f[j>>2]=k;f[l>>2]=b;k=b>>>5;sj(m|0,0,k<<2|0)|0;n=b&31;o=m+(k<<2)|0;k=m;if(!n){p=b;q=k;r=m}else{f[o>>2]=f[o>>2]&~(-1>>>(32-n|0));p=b;q=k;r=m}}else{p=0;q=0;r=0}m=a+4|0;k=f[a>>2]|0;n=(f[m>>2]|0)-k|0;o=n>>2;f[e>>2]=0;s=e+4|0;f[s>>2]=0;t=e+8|0;f[t>>2]=0;do if(o){if((n|0)<0)aq(e);v=((o+-1|0)>>>5)+1|0;w=ln(v<<2)|0;f[e>>2]=w;f[t>>2]=v;f[s>>2]=o;v=o>>>5;sj(w|0,0,v<<2|0)|0;x=o&31;y=w+(v<<2)|0;if(x|0)f[y>>2]=f[y>>2]&~(-1>>>(32-x|0));if(o>>>0>2){x=a+12|0;y=a+32|0;v=a+52|0;w=a+56|0;z=a+48|0;A=b;B=k;C=0;D=q;E=r;a:while(1){F=B;G=C*3|0;if((G|0)!=-1){H=f[F+(G<<2)>>2]|0;I=G+1|0;J=((I>>>0)%3|0|0)==0?G+-2|0:I;if((J|0)==-1)K=-1;else K=f[F+(J<<2)>>2]|0;J=(((G>>>0)%3|0|0)==0?2:-1)+G|0;if((J|0)==-1)L=-1;else L=f[F+(J<<2)>>2]|0;if((H|0)!=(K|0)?!((H|0)==(L|0)|(K|0)==(L|0)):0){H=0;J=A;F=E;I=D;while(1){M=H+G|0;if(!(f[(f[e>>2]|0)+(M>>>5<<2)>>2]&1<<(M&31))){N=f[(f[a>>2]|0)+(M<<2)>>2]|0;f[g>>2]=N;if(!(f[F+(N>>>5<<2)>>2]&1<<(N&31))){O=0;P=J;Q=N}else{N=f[i>>2]|0;if((N|0)==(f[y>>2]|0))Ri(h,6140);else{f[N>>2]=-1;f[i>>2]=N+4}N=f[v>>2]|0;if((N|0)==(f[w>>2]|0))Ri(z,g);else{f[N>>2]=f[g>>2];f[v>>2]=N+4}N=f[l>>2]|0;R=f[j>>2]|0;if((N|0)==(R<<5|0)){if((N+1|0)<0){S=50;break a}T=R<<6;R=N+32&-32;vi(d,N>>>0<1073741823?(T>>>0>>0?R:T):2147483647);U=f[l>>2]|0}else U=N;f[l>>2]=U+1;N=(f[d>>2]|0)+(U>>>5<<2)|0;f[N>>2]=f[N>>2]&~(1<<(U&31));f[g>>2]=J;O=1;P=J+1|0;Q=J}N=f[d>>2]|0;T=N+(Q>>>5<<2)|0;f[T>>2]=f[T>>2]|1<<(Q&31);T=N;b:do if(O){R=M;while(1){if((R|0)==-1){S=64;break b}V=(f[e>>2]|0)+(R>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(R&31);V=f[g>>2]|0;f[(f[h>>2]|0)+(V<<2)>>2]=R;f[(f[a>>2]|0)+(R<<2)>>2]=V;V=R+1|0;W=((V>>>0)%3|0|0)==0?R+-2|0:V;do if((W|0)==-1)X=-1;else{V=f[(f[x>>2]|0)+(W<<2)>>2]|0;Y=V+1|0;if((V|0)==-1){X=-1;break}X=((Y>>>0)%3|0|0)==0?V+-2|0:Y}while(0);if((X|0)==(M|0))break;else R=X}}else{R=M;while(1){if((R|0)==-1){S=64;break b}W=(f[e>>2]|0)+(R>>>5<<2)|0;f[W>>2]=f[W>>2]|1<<(R&31);f[(f[h>>2]|0)+(f[g>>2]<<2)>>2]=R;W=R+1|0;Y=((W>>>0)%3|0|0)==0?R+-2|0:W;do if((Y|0)==-1)Z=-1;else{W=f[(f[x>>2]|0)+(Y<<2)>>2]|0;V=W+1|0;if((W|0)==-1){Z=-1;break}Z=((V>>>0)%3|0|0)==0?W+-2|0:V}while(0);if((Z|0)==(M|0))break;else R=Z}}while(0);c:do if((S|0)==64){S=0;if((M|0)==-1)break;R=(((M>>>0)%3|0|0)==0?2:-1)+M|0;if((R|0)==-1)break;Y=f[(f[x>>2]|0)+(R<<2)>>2]|0;if((Y|0)==-1)break;R=Y+(((Y>>>0)%3|0|0)==0?2:-1)|0;if((R|0)==-1)break;if(!O){Y=R;while(1){V=(f[e>>2]|0)+(Y>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(Y&31);V=(((Y>>>0)%3|0|0)==0?2:-1)+Y|0;if((V|0)==-1)break c;W=f[(f[x>>2]|0)+(V<<2)>>2]|0;if((W|0)==-1)break c;Y=W+(((W>>>0)%3|0|0)==0?2:-1)|0;if((Y|0)==-1)break c}}Y=f[a>>2]|0;W=R;do{V=(f[e>>2]|0)+(W>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(W&31);f[Y+(W<<2)>>2]=f[g>>2];V=(((W>>>0)%3|0|0)==0?2:-1)+W|0;if((V|0)==-1)break c;_=f[(f[x>>2]|0)+(V<<2)>>2]|0;if((_|0)==-1)break c;W=_+(((_>>>0)%3|0|0)==0?2:-1)|0}while((W|0)!=-1)}while(0);$=P;aa=T;ba=N}else{$=J;aa=I;ba=F}if((H|0)<2){H=H+1|0;J=$;F=ba;I=aa}else{ca=$;da=aa;ea=ba;break}}}else{ca=A;da=D;ea=E}}else{ca=A;da=D;ea=E}C=C+1|0;B=f[a>>2]|0;if(C>>>0>=(((f[m>>2]|0)-B>>2>>>0)/3|0)>>>0){S=18;break}else{A=ca;D=da;E=ea}}if((S|0)==18){fa=da;ga=f[l>>2]|0;break}else if((S|0)==50)aq(d)}else{fa=q;ga=p}}else{fa=q;ga=p}while(0);p=a+44|0;f[p>>2]=0;a=fa;fa=ga>>>5;q=a+(fa<<2)|0;S=ga&31;ga=(fa|0)!=0;d:do if(fa|S|0)if(!S){l=a;da=0;ea=ga;while(1){e:do if(ea){if(!(f[l>>2]&1)){ca=da+1|0;f[p>>2]=ca;ha=ca}else ha=da;if(!(f[l>>2]&2)){ca=ha+1|0;f[p>>2]=ca;ia=ca}else ia=ha;if(!(f[l>>2]&4)){ca=ia+1|0;f[p>>2]=ca;ja=ca}else ja=ia;if(!(f[l>>2]&8)){ca=ja+1|0;f[p>>2]=ca;ka=ca}else ka=ja;if(!(f[l>>2]&16)){ca=ka+1|0;f[p>>2]=ca;la=ca}else la=ka;if(!(f[l>>2]&32)){ca=la+1|0;f[p>>2]=ca;ma=ca}else ma=la;if(!(f[l>>2]&64)){ca=ma+1|0;f[p>>2]=ca;na=ca}else na=ma;if(!(f[l>>2]&128)){ca=na+1|0;f[p>>2]=ca;oa=ca}else oa=na;if(!(f[l>>2]&256)){ca=oa+1|0;f[p>>2]=ca;pa=ca}else pa=oa;if(!(f[l>>2]&512)){ca=pa+1|0;f[p>>2]=ca;qa=ca}else qa=pa;if(!(f[l>>2]&1024)){ca=qa+1|0;f[p>>2]=ca;ra=ca}else ra=qa;if(!(f[l>>2]&2048)){ca=ra+1|0;f[p>>2]=ca;sa=ca}else sa=ra;if(!(f[l>>2]&4096)){ca=sa+1|0;f[p>>2]=ca;ta=ca}else ta=sa;if(!(f[l>>2]&8192)){ca=ta+1|0;f[p>>2]=ca;ua=ca}else ua=ta;if(!(f[l>>2]&16384)){ca=ua+1|0;f[p>>2]=ca;va=ca}else va=ua;if(!(f[l>>2]&32768)){ca=va+1|0;f[p>>2]=ca;wa=ca}else wa=va;if(!(f[l>>2]&65536)){ca=wa+1|0;f[p>>2]=ca;xa=ca}else xa=wa;if(!(f[l>>2]&131072)){ca=xa+1|0;f[p>>2]=ca;ya=ca}else ya=xa;if(!(f[l>>2]&262144)){ca=ya+1|0;f[p>>2]=ca;za=ca}else za=ya;if(!(f[l>>2]&524288)){ca=za+1|0;f[p>>2]=ca;Aa=ca}else Aa=za;if(!(f[l>>2]&1048576)){ca=Aa+1|0;f[p>>2]=ca;Ba=ca}else Ba=Aa;if(!(f[l>>2]&2097152)){ca=Ba+1|0;f[p>>2]=ca;Ca=ca}else Ca=Ba;if(!(f[l>>2]&4194304)){ca=Ca+1|0;f[p>>2]=ca;Da=ca}else Da=Ca;if(!(f[l>>2]&8388608)){ca=Da+1|0;f[p>>2]=ca;Ea=ca}else Ea=Da;if(!(f[l>>2]&16777216)){ca=Ea+1|0;f[p>>2]=ca;Fa=ca}else Fa=Ea;if(!(f[l>>2]&33554432)){ca=Fa+1|0;f[p>>2]=ca;Ga=ca}else Ga=Fa;if(!(f[l>>2]&67108864)){ca=Ga+1|0;f[p>>2]=ca;Ha=ca}else Ha=Ga;if(!(f[l>>2]&134217728)){ca=Ha+1|0;f[p>>2]=ca;Ia=ca}else Ia=Ha;if(!(f[l>>2]&268435456)){ca=Ia+1|0;f[p>>2]=ca;Ja=ca}else Ja=Ia;if(!(f[l>>2]&536870912)){ca=Ja+1|0;f[p>>2]=ca;Ka=ca}else Ka=Ja;if(!(f[l>>2]&1073741824)){ca=Ka+1|0;f[p>>2]=ca;La=ca}else La=Ka;if((f[l>>2]|0)<=-1){Ma=La;break}ca=La+1|0;f[p>>2]=ca;Ma=ca}else{ca=0;m=da;while(1){if(!(f[l>>2]&1<>2]=ba;Na=ba}else Na=m;if((ca|0)==31){Ma=Na;break e}ca=ca+1|0;if(!ca)break d;else m=Na}}while(0);l=l+4|0;if((q|0)==(l|0))break;else{da=Ma;ea=1}}}else{if(ga){ea=0;da=a;l=0;while(1){if(!(f[da>>2]&1)){m=l+1|0;f[p>>2]=m;Oa=m;Pa=m}else{Oa=l;Pa=ea}if(!(f[da>>2]&2)){m=Oa+1|0;f[p>>2]=m;Qa=m;Ra=m}else{Qa=Oa;Ra=Pa}if(!(f[da>>2]&4)){m=Qa+1|0;f[p>>2]=m;Sa=m;Ta=m}else{Sa=Qa;Ta=Ra}if(!(f[da>>2]&8)){m=Sa+1|0;f[p>>2]=m;Ua=m;Va=m}else{Ua=Sa;Va=Ta}if(!(f[da>>2]&16)){m=Ua+1|0;f[p>>2]=m;Wa=m;Xa=m}else{Wa=Ua;Xa=Va}if(!(f[da>>2]&32)){m=Wa+1|0;f[p>>2]=m;Ya=m;Za=m}else{Ya=Wa;Za=Xa}if(!(f[da>>2]&64)){m=Ya+1|0;f[p>>2]=m;_a=m;$a=m}else{_a=Ya;$a=Za}if(!(f[da>>2]&128)){m=_a+1|0;f[p>>2]=m;ab=m;bb=m}else{ab=_a;bb=$a}if(!(f[da>>2]&256)){m=ab+1|0;f[p>>2]=m;cb=m;db=m}else{cb=ab;db=bb}if(!(f[da>>2]&512)){m=cb+1|0;f[p>>2]=m;eb=m;fb=m}else{eb=cb;fb=db}if(!(f[da>>2]&1024)){m=eb+1|0;f[p>>2]=m;gb=m;hb=m}else{gb=eb;hb=fb}if(!(f[da>>2]&2048)){m=gb+1|0;f[p>>2]=m;ib=m;jb=m}else{ib=gb;jb=hb}if(!(f[da>>2]&4096)){m=ib+1|0;f[p>>2]=m;kb=m;lb=m}else{kb=ib;lb=jb}if(!(f[da>>2]&8192)){m=kb+1|0;f[p>>2]=m;mb=m;nb=m}else{mb=kb;nb=lb}if(!(f[da>>2]&16384)){m=mb+1|0;f[p>>2]=m;ob=m;pb=m}else{ob=mb;pb=nb}if(!(f[da>>2]&32768)){m=ob+1|0;f[p>>2]=m;qb=m;rb=m}else{qb=ob;rb=pb}if(!(f[da>>2]&65536)){m=qb+1|0;f[p>>2]=m;sb=m;tb=m}else{sb=qb;tb=rb}if(!(f[da>>2]&131072)){m=sb+1|0;f[p>>2]=m;ub=m;vb=m}else{ub=sb;vb=tb}if(!(f[da>>2]&262144)){m=ub+1|0;f[p>>2]=m;wb=m;xb=m}else{wb=ub;xb=vb}if(!(f[da>>2]&524288)){m=wb+1|0;f[p>>2]=m;yb=m;zb=m}else{yb=wb;zb=xb}if(!(f[da>>2]&1048576)){m=yb+1|0;f[p>>2]=m;Ab=m;Bb=m}else{Ab=yb;Bb=zb}if(!(f[da>>2]&2097152)){m=Ab+1|0;f[p>>2]=m;Cb=m;Db=m}else{Cb=Ab;Db=Bb}if(!(f[da>>2]&4194304)){m=Cb+1|0;f[p>>2]=m;Eb=m;Fb=m}else{Eb=Cb;Fb=Db}if(!(f[da>>2]&8388608)){m=Eb+1|0;f[p>>2]=m;Gb=m;Hb=m}else{Gb=Eb;Hb=Fb}if(!(f[da>>2]&16777216)){m=Gb+1|0;f[p>>2]=m;Ib=m;Jb=m}else{Ib=Gb;Jb=Hb}if(!(f[da>>2]&33554432)){m=Ib+1|0;f[p>>2]=m;Kb=m;Lb=m}else{Kb=Ib;Lb=Jb}if(!(f[da>>2]&67108864)){m=Kb+1|0;f[p>>2]=m;Mb=m;Nb=m}else{Mb=Kb;Nb=Lb}if(!(f[da>>2]&134217728)){m=Mb+1|0;f[p>>2]=m;Ob=m;Pb=m}else{Ob=Mb;Pb=Nb}if(!(f[da>>2]&268435456)){m=Ob+1|0;f[p>>2]=m;Qb=m;Rb=m}else{Qb=Ob;Rb=Pb}if(!(f[da>>2]&536870912)){m=Qb+1|0;f[p>>2]=m;Sb=m;Tb=m}else{Sb=Qb;Tb=Rb}if(!(f[da>>2]&1073741824)){m=Sb+1|0;f[p>>2]=m;Ub=m;Vb=m}else{Ub=Sb;Vb=Tb}if((f[da>>2]|0)>-1){m=Ub+1|0;f[p>>2]=m;Wb=m;Xb=m}else{Wb=Ub;Xb=Vb}m=da+4|0;if((q|0)==(m|0)){Yb=m;Zb=Xb;break}else{ea=Xb;da=m;l=Wb}}}else{Yb=a;Zb=0}l=0;da=Zb;while(1){if(!(f[Yb>>2]&1<>2]=ea;_b=ea}else _b=da;l=l+1|0;if((l|0)==(S|0))break;else da=_b}}while(0);_b=f[e>>2]|0;if(_b|0)Oq(_b);_b=f[d>>2]|0;if(!_b){u=c;return 1}Oq(_b);u=c;return 1}function fb(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0.0,Ua=0.0,Va=0.0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0;i=u;u=u+256|0;e=i+104|0;j=i+240|0;k=i+224|0;l=i+160|0;m=i+140|0;n=i+248|0;o=i+72|0;p=i+40|0;q=i+128|0;r=i;s=i+232|0;t=i+220|0;v=i+216|0;w=i+212|0;x=i+208|0;y=i+152|0;z=f[a+28>>2]|0;A=f[a+32>>2]|0;B=l;C=B+48|0;do{f[B>>2]=0;B=B+4|0}while((B|0)<(C|0));if(!g){D=0;E=0}else{Ci(l,g);D=f[l+12>>2]|0;E=f[l+16>>2]|0}B=l+16|0;C=E-D>>2;F=D;D=E;if(C>>>0>=g>>>0){if(C>>>0>g>>>0?(E=F+(g<<2)|0,(E|0)!=(D|0)):0)f[B>>2]=D+(~((D+-4-E|0)>>>2)<<2)}else Ci(l+12|0,g-C|0);C=l+24|0;E=l+28|0;D=f[E>>2]|0;B=f[C>>2]|0;F=D-B>>2;G=B;B=D;if(F>>>0>=g>>>0){if(F>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[E>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else Ci(C,g-F|0);F=l+36|0;C=l+40|0;D=f[C>>2]|0;B=f[F>>2]|0;E=D-B>>2;G=B;B=D;if(E>>>0>=g>>>0){if(E>>>0>g>>>0?(D=G+(g<<2)|0,(D|0)!=(B|0)):0)f[C>>2]=B+(~((B+-4-D|0)>>>2)<<2)}else Ci(F,g-E|0);f[m>>2]=0;E=m+4|0;f[E>>2]=0;f[m+8>>2]=0;F=(g|0)==0;do if(!F)if(g>>>0>1073741823)aq(m);else{D=g<<2;B=ln(D)|0;f[m>>2]=B;C=B+(g<<2)|0;f[m+8>>2]=C;sj(B|0,0,D|0)|0;f[E>>2]=C;break}while(0);C=a+136|0;D=a+140|0;B=f[D>>2]|0;G=f[C>>2]|0;H=B-G>>2;L=G;G=B;if(H>>>0>=g>>>0){if(H>>>0>g>>>0?(B=L+(g<<2)|0,(B|0)!=(G|0)):0)f[D>>2]=G+(~((G+-4-B|0)>>>2)<<2)}else Ci(C,g-H|0);f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;f[o+24>>2]=0;f[o+28>>2]=0;f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;f[p+12>>2]=0;f[p+16>>2]=0;f[p+20>>2]=0;f[p+24>>2]=0;f[p+28>>2]=0;f[q>>2]=0;H=q+4|0;f[H>>2]=0;f[q+8>>2]=0;if(F){M=0;N=0;O=0;P=0}else{F=g<<2;B=ln(F)|0;f[q>>2]=B;G=B+(g<<2)|0;f[q+8>>2]=G;sj(B|0,0,F|0)|0;f[H>>2]=G;M=B;N=G;O=G;P=B}B=a+36|0;G=f[B>>2]|0;F=f[G+4>>2]|0;D=f[G>>2]|0;L=F-D|0;a:do if((L|0)>4){Q=L>>2;R=z+12|0;S=(g|0)>0;T=r+4|0;U=r+8|0;V=r+12|0;Z=a+136|0;_=a+96|0;$=r+16|0;aa=r+28|0;ba=a+8|0;ca=j+4|0;da=k+4|0;ea=e+4|0;fa=r+28|0;ga=r+16|0;ha=r+20|0;ia=r+32|0;ja=n+1|0;ka=g<<2;la=(g|0)==1;ma=Q+-1|0;if(F-D>>2>>>0>ma>>>0){na=Q;oa=ma;pa=P;qa=O;ra=M;sa=M;ta=N;ua=M;va=N;wa=D}else{xa=G;aq(xa)}b:while(1){ma=f[wa+(oa<<2)>>2]|0;Q=(((ma>>>0)%3|0|0)==0?2:-1)+ma|0;ya=(ma|0)==-1|(Q|0)==-1;za=1;Aa=0;Ba=ma;c:while(1){Ca=za^1;Da=Aa;Ea=Ba;while(1){if((Ea|0)==-1){Fa=Da;break c}Ga=f[l+(Da*12|0)>>2]|0;Ha=f[R>>2]|0;Ia=f[Ha+(Ea<<2)>>2]|0;if((Ia|0)!=-1){Ja=f[z>>2]|0;Ka=f[A>>2]|0;La=f[Ka+(f[Ja+(Ia<<2)>>2]<<2)>>2]|0;Ma=Ia+1|0;Na=((Ma>>>0)%3|0|0)==0?Ia+-2|0:Ma;if((Na|0)==-1)Oa=-1;else Oa=f[Ja+(Na<<2)>>2]|0;Na=f[Ka+(Oa<<2)>>2]|0;Ma=(((Ia>>>0)%3|0|0)==0?2:-1)+Ia|0;if((Ma|0)==-1)Pa=-1;else Pa=f[Ja+(Ma<<2)>>2]|0;Ma=f[Ka+(Pa<<2)>>2]|0;if((La|0)<(oa|0)&(Na|0)<(oa|0)&(Ma|0)<(oa|0)){Ka=X(La,g)|0;La=X(Na,g)|0;Na=X(Ma,g)|0;if(S){Ma=0;do{f[Ga+(Ma<<2)>>2]=(f[c+(Ma+Na<<2)>>2]|0)+(f[c+(Ma+La<<2)>>2]|0)-(f[c+(Ma+Ka<<2)>>2]|0);Ma=Ma+1|0}while((Ma|0)!=(g|0))}Ma=Da+1|0;if((Ma|0)==4){Fa=4;break c}else Qa=Ma}else Qa=Da}else Qa=Da;do if(za){Ma=Ea+1|0;Ka=((Ma>>>0)%3|0|0)==0?Ea+-2|0:Ma;if((Ka|0)!=-1?(Ma=f[Ha+(Ka<<2)>>2]|0,Ka=Ma+1|0,(Ma|0)!=-1):0)Ra=((Ka>>>0)%3|0|0)==0?Ma+-2|0:Ka;else Ra=-1}else{Ka=(((Ea>>>0)%3|0|0)==0?2:-1)+Ea|0;if((Ka|0)!=-1?(Ma=f[Ha+(Ka<<2)>>2]|0,(Ma|0)!=-1):0)if(!((Ma>>>0)%3|0)){Ra=Ma+2|0;break}else{Ra=Ma+-1|0;break}else Ra=-1}while(0);if((Ra|0)==(ma|0)){Fa=Qa;break c}if((Ra|0)!=-1|Ca){Da=Qa;Ea=Ra}else break}if(ya){za=0;Aa=Qa;Ba=-1;continue}Ea=f[Ha+(Q<<2)>>2]|0;if((Ea|0)==-1){za=0;Aa=Qa;Ba=-1;continue}if(!((Ea>>>0)%3|0)){za=0;Aa=Qa;Ba=Ea+2|0;continue}else{za=0;Aa=Qa;Ba=Ea+-1|0;continue}}Ba=X(oa,g)|0;f[r>>2]=0;f[T>>2]=0;b[U>>0]=0;f[V>>2]=0;f[V+4>>2]=0;f[V+8>>2]=0;f[V+12>>2]=0;f[V+16>>2]=0;f[V+20>>2]=0;f[V+24>>2]=0;Aa=Fa+-1|0;za=p+(Aa<<3)|0;Q=za;ya=Vn(f[Q>>2]|0,f[Q+4>>2]|0,Fa|0,((Fa|0)<0)<<31>>31|0)|0;Q=I;ma=za;f[ma>>2]=ya;f[ma+4>>2]=Q;ma=c+((X(na+-2|0,g)|0)<<2)|0;za=c+(Ba<<2)|0;Ea=f[Z>>2]|0;if(S){Da=0;Ca=0;while(1){Ma=(f[ma+(Da<<2)>>2]|0)-(f[za+(Da<<2)>>2]|0)|0;Ka=((Ma|0)>-1?Ma:0-Ma|0)+Ca|0;f[ra+(Da<<2)>>2]=Ma;f[Ea+(Da<<2)>>2]=Ma<<1^Ma>>31;Da=Da+1|0;if((Da|0)==(g|0)){Sa=Ka;break}else Ca=Ka}}else Sa=0;mo(e,_,Ea,g);Ca=Zk(e)|0;Da=I;Ka=Bm(e)|0;Ma=I;La=o+(Aa<<3)|0;Na=La;Ga=f[Na>>2]|0;Ja=f[Na+4>>2]|0;Ta=+wm(ya,Ga);Na=Vn(Ka|0,Ma|0,Ca|0,Da|0)|0;Ua=+(ya>>>0)+4294967296.0*+(Q|0);Va=+W(+(Ta*Ua));Da=Vn(Na|0,I|0,~~Va>>>0|0,(+K(Va)>=1.0?(Va>0.0?~~+Y(+J(Va/4294967296.0),4294967295.0)>>>0:~~+W((Va-+(~~Va>>>0))/4294967296.0)>>>0):0)|0)|0;Na=r;f[Na>>2]=Da;f[Na+4>>2]=Sa;b[U>>0]=0;f[V>>2]=0;$f($,ma,ma+(g<<2)|0);f[s>>2]=pa;f[t>>2]=qa;f[j>>2]=f[s>>2];f[e>>2]=f[t>>2];Jf(aa,j,e);if((Fa|0)<1){Wa=va;Xa=ua;Ya=ta;Za=sa;_a=qa;$a=pa;ab=pa}else{Na=n+Fa|0;Da=f[q>>2]|0;Ca=Da;Ma=f[H>>2]|0;Ka=Na+-1|0;Ia=(Ka|0)==(n|0);bb=Na+-2|0;cb=ja>>>0>>0;db=~Fa;eb=Fa+2+((db|0)>-2?db:-2)|0;db=Ma;fb=Ka>>>0>n>>>0;gb=0;hb=1;while(1){gb=gb+1|0;sj(n|0,1,eb|0)|0;sj(n|0,0,gb|0)|0;ib=Vn(Ga|0,Ja|0,hb|0,0)|0;d:while(1){if(S){sj(f[m>>2]|0,0,ka|0)|0;jb=f[m>>2]|0;kb=0;lb=0;while(1){if(!(b[n+kb>>0]|0)){mb=f[l+(kb*12|0)>>2]|0;nb=0;do{ob=jb+(nb<<2)|0;f[ob>>2]=(f[ob>>2]|0)+(f[mb+(nb<<2)>>2]|0);nb=nb+1|0}while((nb|0)!=(g|0));pb=(1<>0]|0))rb=(1<>2]|0;do if(S){f[kb>>2]=(f[kb>>2]|0)/(hb|0)|0;if(!la){lb=1;do{jb=kb+(lb<<2)|0;f[jb>>2]=(f[jb>>2]|0)/(hb|0)|0;lb=lb+1|0}while((lb|0)!=(g|0));lb=f[Z>>2]|0;if(S)sb=lb;else{tb=0;ub=lb;break}}else sb=f[Z>>2]|0;lb=0;jb=0;while(1){nb=(f[kb+(lb<<2)>>2]|0)-(f[za+(lb<<2)>>2]|0)|0;mb=((nb|0)>-1?nb:0-nb|0)+jb|0;f[Da+(lb<<2)>>2]=nb;f[sb+(lb<<2)>>2]=nb<<1^nb>>31;lb=lb+1|0;if((lb|0)==(g|0)){tb=mb;ub=sb;break}else jb=mb}}else{tb=0;ub=f[Z>>2]|0}while(0);mo(e,_,ub,g);kb=Zk(e)|0;jb=I;lb=Bm(e)|0;mb=I;Va=+wm(ya,ib);nb=Vn(lb|0,mb|0,kb|0,jb|0)|0;Ta=+W(+(Va*Ua));jb=Vn(nb|0,I|0,~~Ta>>>0|0,(+K(Ta)>=1.0?(Ta>0.0?~~+Y(+J(Ta/4294967296.0),4294967295.0)>>>0:~~+W((Ta-+(~~Ta>>>0))/4294967296.0)>>>0):0)|0)|0;nb=f[r>>2]|0;if(!((nb|0)<=(jb|0)?!((nb|0)>=(jb|0)?(tb|0)<(f[T>>2]|0):0):0)){nb=r;f[nb>>2]=jb;f[nb+4>>2]=tb;b[U>>0]=qb;f[V>>2]=hb;f[v>>2]=f[m>>2];f[w>>2]=f[E>>2];f[j>>2]=f[v>>2];f[e>>2]=f[w>>2];Jf($,j,e);f[x>>2]=Ca;f[y>>2]=Ma;f[j>>2]=f[x>>2];f[e>>2]=f[y>>2];Jf(aa,j,e)}if(Ia)break;vb=b[Ka>>0]|0;nb=-1;jb=vb;while(1){kb=nb+-1|0;wb=Na+kb|0;mb=jb;jb=b[wb>>0]|0;if((jb&255)<(mb&255))break;if((wb|0)==(n|0)){xb=84;break d}else nb=kb}kb=Na+nb|0;if((jb&255)<(vb&255)){yb=Ka;zb=vb}else{mb=Na;lb=Ka;while(1){ob=lb+-1|0;if((jb&255)<(h[mb+-2>>0]|0)){yb=ob;zb=1;break}else{Ab=lb;lb=ob;mb=Ab}}}b[wb>>0]=zb;b[yb>>0]=jb;if((nb|0)<-1){Bb=kb;Cb=Ka}else continue;while(1){mb=b[Bb>>0]|0;b[Bb>>0]=b[Cb>>0]|0;b[Cb>>0]=mb;mb=Bb+1|0;lb=Cb+-1|0;if(mb>>>0>>0){Bb=mb;Cb=lb}else continue d}}if(((xb|0)==84?(xb=0,fb):0)?(ib=b[n>>0]|0,b[n>>0]=vb,b[Ka>>0]=ib,cb):0){ib=bb;kb=ja;do{nb=b[kb>>0]|0;b[kb>>0]=b[ib>>0]|0;b[ib>>0]=nb;kb=kb+1|0;ib=ib+-1|0}while(kb>>>0>>0)}if((hb|0)>=(Fa|0)){Wa=db;Xa=Da;Ya=db;Za=Da;_a=Ma;$a=Ca;ab=Da;break}else hb=hb+1|0}}hb=f[V>>2]|0;Da=Vn(Ga|0,Ja|0,hb|0,((hb|0)<0)<<31>>31|0)|0;hb=La;f[hb>>2]=Da;f[hb+4>>2]=I;if(S){hb=f[aa>>2]|0;Da=f[C>>2]|0;Ca=0;do{Ma=f[hb+(Ca<<2)>>2]|0;f[Da+(Ca<<2)>>2]=Ma<<1^Ma>>31;Ca=Ca+1|0}while((Ca|0)!=(g|0));Db=Da}else Db=f[C>>2]|0;lo(e,_,Db,g);if((Fa|0)>0){Eb=a+40+(Aa*12|0)|0;Da=a+40+(Aa*12|0)+4|0;Ca=a+40+(Aa*12|0)+8|0;hb=0;do{La=f[Da>>2]|0;Ja=f[Ca>>2]|0;Ga=(La|0)==(Ja<<5|0);if(!(1<>0])){if(Ga){if((La+1|0)<0){xb=95;break b}Ma=Ja<<6;db=La+32&-32;vi(Eb,La>>>0<1073741823?(Ma>>>0>>0?db:Ma):2147483647);Fb=f[Da>>2]|0}else Fb=La;f[Da>>2]=Fb+1;Ma=(f[Eb>>2]|0)+(Fb>>>5<<2)|0;f[Ma>>2]=f[Ma>>2]|1<<(Fb&31)}else{if(Ga){if((La+1|0)<0){xb=100;break b}Ga=Ja<<6;Ja=La+32&-32;vi(Eb,La>>>0<1073741823?(Ga>>>0>>0?Ja:Ga):2147483647);Gb=f[Da>>2]|0}else Gb=La;f[Da>>2]=Gb+1;La=(f[Eb>>2]|0)+(Gb>>>5<<2)|0;f[La>>2]=f[La>>2]&~(1<<(Gb&31))}hb=hb+1|0}while((hb|0)<(Fa|0))}hb=f[$>>2]|0;Da=d+(Ba<<2)|0;Ca=f[za+4>>2]|0;Aa=f[hb>>2]|0;La=f[hb+4>>2]|0;f[j>>2]=f[za>>2];f[ca>>2]=Ca;f[k>>2]=Aa;f[da>>2]=La;Od(e,ba,j,k);f[Da>>2]=f[e>>2];f[Da+4>>2]=f[ea>>2];Da=f[fa>>2]|0;if(Da|0){La=f[ia>>2]|0;if((La|0)!=(Da|0))f[ia>>2]=La+(~((La+-4-Da|0)>>>2)<<2);Oq(Da)}Da=f[ga>>2]|0;if(Da|0){La=f[ha>>2]|0;if((La|0)!=(Da|0))f[ha>>2]=La+(~((La+-4-Da|0)>>>2)<<2);Oq(Da)}if((na|0)<=2){Hb=Za;Ib=Ya;break a}Da=f[B>>2]|0;wa=f[Da>>2]|0;La=oa+-1|0;if((f[Da+4>>2]|0)-wa>>2>>>0<=La>>>0){xa=Da;xb=18;break}else{Da=oa;oa=La;pa=$a;qa=_a;ra=ab;sa=Za;ta=Ya;ua=Xa;va=Wa;na=Da}}if((xb|0)==18)aq(xa);else if((xb|0)==95)aq(Eb);else if((xb|0)==100)aq(Eb)}else{Hb=M;Ib=N}while(0);if((g|0)>0)sj(f[l>>2]|0,0,g<<2|0)|0;g=f[l>>2]|0;N=f[c+4>>2]|0;M=f[g>>2]|0;Eb=f[g+4>>2]|0;f[j>>2]=f[c>>2];f[j+4>>2]=N;f[k>>2]=M;f[k+4>>2]=Eb;Od(e,a+8|0,j,k);f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];if(Hb|0){if((Ib|0)!=(Hb|0))f[H>>2]=Ib+(~((Ib+-4-Hb|0)>>>2)<<2);Oq(Hb)}Hb=f[m>>2]|0;if(Hb|0){m=f[E>>2]|0;if((m|0)!=(Hb|0))f[E>>2]=m+(~((m+-4-Hb|0)>>>2)<<2);Oq(Hb)}Hb=f[l+36>>2]|0;if(Hb|0){m=l+40|0;E=f[m>>2]|0;if((E|0)!=(Hb|0))f[m>>2]=E+(~((E+-4-Hb|0)>>>2)<<2);Oq(Hb)}Hb=f[l+24>>2]|0;if(Hb|0){E=l+28|0;m=f[E>>2]|0;if((m|0)!=(Hb|0))f[E>>2]=m+(~((m+-4-Hb|0)>>>2)<<2);Oq(Hb)}Hb=f[l+12>>2]|0;if(Hb|0){m=l+16|0;E=f[m>>2]|0;if((E|0)!=(Hb|0))f[m>>2]=E+(~((E+-4-Hb|0)>>>2)<<2);Oq(Hb)}Hb=f[l>>2]|0;if(!Hb){u=i;return 1}E=l+4|0;l=f[E>>2]|0;if((l|0)!=(Hb|0))f[E>>2]=l+(~((l+-4-Hb|0)>>>2)<<2);Oq(Hb);u=i;return 1}function gb(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=Oa,La=0,Ma=0,Na=0,Pa=0,Qa=Oa,Ra=0,Sa=0,Ta=0,Ua=0,Va=0;c=u;u=u+80|0;d=c+60|0;e=c+48|0;g=c+24|0;h=c+12|0;i=c;j=a+28|0;k=f[j>>2]|0;l=f[k+4>>2]|0;m=f[l+80>>2]|0;o=a+4|0;p=a+8|0;q=f[p>>2]|0;r=f[o>>2]|0;s=(q|0)==(r|0);t=r;if(s){f[a+72>>2]=0;v=1;u=c;return v|0}w=f[l+8>>2]|0;x=q-r>>2;r=0;q=0;do{r=r+(b[(f[w+(f[t+(q<<2)>>2]<<2)>>2]|0)+24>>0]|0)|0;q=q+1|0}while(q>>>0>>0);f[a+72>>2]=r;if(s){v=1;u=c;return v|0}s=g+4|0;r=g+8|0;x=d+8|0;q=d+4|0;w=d+11|0;y=g+12|0;z=d+8|0;A=d+4|0;B=d+11|0;C=h+4|0;D=h+8|0;E=i+8|0;F=i+4|0;G=d+11|0;H=d+4|0;I=i+11|0;J=d+8|0;K=d+4|0;L=d+11|0;M=d+11|0;N=d+4|0;O=h+8|0;P=a+40|0;Q=a+44|0;R=a+36|0;S=a+64|0;T=a+68|0;U=a+60|0;V=g+8|0;W=g+20|0;X=e+8|0;Y=e+4|0;Z=e+11|0;_=g+4|0;aa=g+8|0;ba=h+4|0;ca=h+8|0;da=h+8|0;ea=a+52|0;fa=a+56|0;ga=a+48|0;a=g+8|0;ha=0;ia=t;t=l;l=k;a:while(1){k=f[ia+(ha<<2)>>2]|0;ja=f[(f[t+8>>2]|0)+(k<<2)>>2]|0;switch(f[ja+28>>2]|0){case 9:{f[g>>2]=1196;f[s>>2]=-1;f[r>>2]=0;f[r+4>>2]=0;f[r+8>>2]=0;f[r+12>>2]=0;ka=f[l+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;la=ln(32)|0;f[d>>2]=la;f[x>>2]=-2147483616;f[q>>2]=17;ma=la;na=14495;oa=ma+17|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[la+17>>0]=0;pa=ka+16|0;qa=f[pa>>2]|0;if(qa){ra=pa;sa=qa;b:while(1){qa=sa;while(1){if((f[qa+16>>2]|0)>=(k|0))break;ta=f[qa+4>>2]|0;if(!ta){ua=ra;break b}else qa=ta}sa=f[qa>>2]|0;if(!sa){ua=qa;break}else ra=qa}if(((ua|0)!=(pa|0)?(k|0)>=(f[ua+16>>2]|0):0)?(ra=ua+20|0,(Jh(ra,d)|0)!=0):0)va=Hk(ra,d,-1)|0;else wa=17}else wa=17;if((wa|0)==17){wa=0;va=Hk(ka,d,-1)|0}if((b[w>>0]|0)<0)Oq(f[d>>2]|0);if((va|0)<1)xa=1;else{ra=f[(f[j>>2]|0)+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;sa=ln(32)|0;f[d>>2]=sa;f[z>>2]=-2147483616;f[A>>2]=19;ma=sa;na=14438;oa=ma+19|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[sa+19>>0]=0;ka=ra+16|0;pa=f[ka>>2]|0;if(pa){la=ka;ta=pa;c:while(1){pa=ta;while(1){if((f[pa+16>>2]|0)>=(k|0))break;ya=f[pa+4>>2]|0;if(!ya){za=la;break c}else pa=ya}ta=f[pa>>2]|0;if(!ta){za=pa;break}else la=pa}if((za|0)!=(ka|0)?(k|0)>=(f[za+16>>2]|0):0)Aa=za+20|0;else wa=29}else wa=29;if((wa|0)==29){wa=0;Aa=ra}if(!(Jh(Aa,d)|0))Ba=0;else{la=f[(f[j>>2]|0)+48>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;ta=ln(32)|0;f[e>>2]=ta;f[X>>2]=-2147483616;f[Y>>2]=18;ma=ta;na=14458;oa=ma+18|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ta+18>>0]=0;ra=la+16|0;ka=f[ra>>2]|0;if(ka){sa=ra;qa=ka;d:while(1){ka=qa;while(1){if((f[ka+16>>2]|0)>=(k|0))break;ya=f[ka+4>>2]|0;if(!ya){Ca=sa;break d}else ka=ya}qa=f[ka>>2]|0;if(!qa){Ca=ka;break}else sa=ka}if((Ca|0)!=(ra|0)?(k|0)>=(f[Ca+16>>2]|0):0)Da=Ca+20|0;else wa=39}else wa=39;if((wa|0)==39){wa=0;Da=la}sa=(Jh(Da,e)|0)!=0;if((b[Z>>0]|0)<0)Oq(f[e>>2]|0);Ba=sa}if((b[B>>0]|0)<0)Oq(f[d>>2]|0);if(Ba){sa=ja+24|0;qa=b[sa>>0]|0;ta=qa<<24>>24;f[h>>2]=0;f[C>>2]=0;f[D>>2]=0;if(!(qa<<24>>24))Ea=0;else{if(qa<<24>>24<0){wa=48;break a}qa=ta<<2;pa=ln(qa)|0;f[h>>2]=pa;ya=pa+(ta<<2)|0;f[O>>2]=ya;sj(pa|0,0,qa|0)|0;f[C>>2]=ya;Ea=pa}pa=f[(f[j>>2]|0)+48>>2]|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;ya=ln(32)|0;f[i>>2]=ya;f[E>>2]=-2147483616;f[F>>2]=19;ma=ya;na=14438;oa=ma+19|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ya+19>>0]=0;la=b[sa>>0]|0;ra=la<<24>>24;qa=pa+16|0;ta=f[qa>>2]|0;if(ta){Fa=qa;Ga=ta;e:while(1){ta=Ga;while(1){if((f[ta+16>>2]|0)>=(k|0))break;Ha=f[ta+4>>2]|0;if(!Ha){Ia=Fa;break e}else ta=Ha}Ga=f[ta>>2]|0;if(!Ga){Ia=ta;break}else Fa=ta}if(((Ia|0)!=(qa|0)?(k|0)>=(f[Ia+16>>2]|0):0)?(Fa=Ia+20|0,(Jh(Fa,i)|0)!=0):0){Ga=Rg(Fa,i)|0;if((Ga|0)!=(Ia+24|0)){pj(d,Ga+28|0);Ga=b[M>>0]|0;Fa=Ga<<24>>24<0;if(!((Fa?f[N>>2]|0:Ga&255)|0))Ja=Ga;else{if(la<<24>>24>0){ya=Fa?f[d>>2]|0:d;Fa=0;do{Ka=$(bq(ya,e));ka=ya;ya=f[e>>2]|0;if((ka|0)==(ya|0))break;n[Ea+(Fa<<2)>>2]=Ka;Fa=Fa+1|0}while((Fa|0)<(ra|0));La=b[M>>0]|0}else La=Ga;Ja=La}if(Ja<<24>>24<0)Oq(f[d>>2]|0)}}else wa=69}else wa=69;if((wa|0)==69?(wa=0,Fa=Rg(pa,i)|0,(Fa|0)!=(pa+4|0)):0){pj(d,Fa+28|0);Fa=b[G>>0]|0;ya=Fa<<24>>24<0;if(!((ya?f[H>>2]|0:Fa&255)|0))Ma=Fa;else{if(la<<24>>24>0){qa=ya?f[d>>2]|0:d;ya=0;do{Ka=$(bq(qa,e));ka=qa;qa=f[e>>2]|0;if((ka|0)==(qa|0))break;n[Ea+(ya<<2)>>2]=Ka;ya=ya+1|0}while((ya|0)<(ra|0));Na=b[G>>0]|0}else Na=Fa;Ma=Na}if(Ma<<24>>24<0)Oq(f[d>>2]|0)}if((b[I>>0]|0)<0)Oq(f[i>>2]|0);ra=f[(f[j>>2]|0)+48>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;ya=ln(32)|0;f[d>>2]=ya;f[J>>2]=-2147483616;f[K>>2]=18;ma=ya;na=14458;oa=ma+18|0;do{b[ma>>0]=b[na>>0]|0;ma=ma+1|0;na=na+1|0}while((ma|0)<(oa|0));b[ya+18>>0]=0;na=ra+16|0;ma=f[na>>2]|0;do if(ma){oa=na;Fa=ma;f:while(1){qa=Fa;while(1){if((f[qa+16>>2]|0)>=(k|0))break;la=f[qa+4>>2]|0;if(!la){Pa=oa;break f}else qa=la}Fa=f[qa>>2]|0;if(!Fa){Pa=qa;break}else oa=qa}if((Pa|0)!=(na|0)?(k|0)>=(f[Pa+16>>2]|0):0){oa=Pa+20|0;if(!(Jh(oa,d)|0)){wa=91;break}Qa=$(sk(oa,d,$(1.0)))}else wa=91}else wa=91;while(0);if((wa|0)==91){wa=0;Qa=$(sk(ra,d,$(1.0)))}if((b[L>>0]|0)<0)Oq(f[d>>2]|0);Dl(g,va,f[h>>2]|0,b[sa>>0]|0,Qa);k=f[h>>2]|0;if(k|0){na=f[C>>2]|0;if((na|0)!=(k|0))f[C>>2]=na+(~((na+-4-k|0)>>>2)<<2);Oq(k)}}else Wd(g,ja,va)|0;k=f[P>>2]|0;if((k|0)==(f[Q>>2]|0))Cf(R,g);else{f[k>>2]=1196;f[k+4>>2]=f[s>>2];Ra=k+8|0;f[Ra>>2]=0;na=k+12|0;f[na>>2]=0;f[k+16>>2]=0;ma=(f[y>>2]|0)-(f[V>>2]|0)|0;ya=ma>>2;if(ya|0){if(ya>>>0>1073741823){wa=103;break a}oa=ln(ma)|0;f[na>>2]=oa;f[Ra>>2]=oa;f[k+16>>2]=oa+(ya<<2);ya=f[V>>2]|0;ma=(f[y>>2]|0)-ya|0;if((ma|0)>0){kh(oa|0,ya|0,ma|0)|0;f[na>>2]=oa+(ma>>>2<<2)}}f[k+20>>2]=f[W>>2];f[P>>2]=(f[P>>2]|0)+24}Qe(d,g,ja,m);k=f[S>>2]|0;if(k>>>0<(f[T>>2]|0)>>>0){ma=f[d>>2]|0;f[d>>2]=0;f[k>>2]=ma;f[S>>2]=k+4}else Ze(U,d);k=f[d>>2]|0;f[d>>2]=0;if(k|0){ma=k+88|0;oa=f[ma>>2]|0;f[ma>>2]=0;if(oa|0){ma=f[oa+8>>2]|0;if(ma|0){na=oa+12|0;if((f[na>>2]|0)!=(ma|0))f[na>>2]=ma;Oq(ma)}Oq(oa)}oa=f[k+68>>2]|0;if(oa|0){ma=k+72|0;na=f[ma>>2]|0;if((na|0)!=(oa|0))f[ma>>2]=na+(~((na+-4-oa|0)>>>2)<<2);Oq(oa)}oa=k+64|0;na=f[oa>>2]|0;f[oa>>2]=0;if(na|0){oa=f[na>>2]|0;if(oa|0){ma=na+4|0;if((f[ma>>2]|0)!=(oa|0))f[ma>>2]=oa;Oq(oa)}Oq(na)}Oq(k)}xa=0}f[g>>2]=1196;k=f[r>>2]|0;if(k|0){na=f[y>>2]|0;if((na|0)!=(k|0))f[y>>2]=na+(~((na+-4-k|0)>>>2)<<2);Oq(k)}if(xa|0){v=0;wa=169;break a}break}case 1:case 3:case 5:{k=ja+24|0;na=b[k>>0]|0;oa=na<<24>>24;f[g>>2]=0;f[_>>2]=0;f[aa>>2]=0;if(!(na<<24>>24))Sa=0;else{if(na<<24>>24<0){wa=137;break a}na=ln(oa<<2)|0;f[_>>2]=na;f[g>>2]=na;ma=na+(oa<<2)|0;f[a>>2]=ma;ya=oa;oa=na;while(1){f[oa>>2]=2147483647;ya=ya+-1|0;if(!ya)break;else oa=oa+4|0}f[_>>2]=ma;Sa=b[k>>0]|0}oa=Sa<<24>>24;f[h>>2]=0;f[ba>>2]=0;f[ca>>2]=0;if(!(Sa<<24>>24))Ta=0;else{if(Sa<<24>>24<0){wa=144;break a}ya=oa<<2;sa=ln(ya)|0;f[h>>2]=sa;ra=sa+(oa<<2)|0;f[da>>2]=ra;sj(sa|0,0,ya|0)|0;f[ba>>2]=ra;Ta=sa}sa=ja+80|0;ra=b[k>>0]|0;g:do if(!(f[sa>>2]|0))Ua=ra;else{ya=0;oa=ra;na=Ta;while(1){f[e>>2]=ya;f[d>>2]=f[e>>2];Qb(ja,d,oa,na)|0;Fa=b[k>>0]|0;if(Fa<<24>>24>0){ta=f[g>>2]|0;la=f[h>>2]|0;pa=Fa<<24>>24;Ga=0;do{ka=ta+(Ga<<2)|0;Ha=f[la+(Ga<<2)>>2]|0;if((f[ka>>2]|0)>(Ha|0))f[ka>>2]=Ha;Ga=Ga+1|0}while((Ga|0)<(pa|0))}pa=ya+1|0;if(pa>>>0>=(f[sa>>2]|0)>>>0){Ua=Fa;break g}ya=pa;oa=Fa;na=f[h>>2]|0}}while(0);if(Ua<<24>>24>0){sa=0;ja=Ua;while(1){ra=(f[g>>2]|0)+(sa<<2)|0;ma=f[ea>>2]|0;if((ma|0)==(f[fa>>2]|0)){Ri(ga,ra);Va=b[k>>0]|0}else{f[ma>>2]=f[ra>>2];f[ea>>2]=ma+4;Va=ja}sa=sa+1|0;if((sa|0)>=(Va<<24>>24|0))break;else ja=Va}}ja=f[h>>2]|0;if(ja|0){sa=f[ba>>2]|0;if((sa|0)!=(ja|0))f[ba>>2]=sa+(~((sa+-4-ja|0)>>>2)<<2);Oq(ja)}ja=f[g>>2]|0;if(ja|0){sa=f[_>>2]|0;if((sa|0)!=(ja|0))f[_>>2]=sa+(~((sa+-4-ja|0)>>>2)<<2);Oq(ja)}break}default:{}}ja=ha+1|0;sa=f[o>>2]|0;if(ja>>>0>=(f[p>>2]|0)-sa>>2>>>0){v=1;wa=169;break}k=f[j>>2]|0;ha=ja;ia=sa;t=f[k+4>>2]|0;l=k}if((wa|0)==48)aq(h);else if((wa|0)==103)aq(Ra);else if((wa|0)==137)aq(g);else if((wa|0)==144)aq(h);else if((wa|0)==169){u=c;return v|0}return 0}function hb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)aq(e);else{j=h<<2;k=ln(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;sj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+128|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);Oq(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)aq(e);else{r=s<<2;o=ln(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;sj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+140|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);Oq(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Pc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+116|0;y=a+48|0;h=a+44|0;j=a+36|0;m=a+40|0;n=a+32|0;A=b+8|0;B=c+8|0;C=a+28|0;D=a+24|0;E=a+16|0;F=a+20|0;G=a+12|0;H=a+88|0;I=a+84|0;J=a+76|0;K=a+80|0;L=a+72|0;M=i+4|0;N=i+24|0;O=i+24|0;P=p+24|0;Q=z;while(1){z=f[v>>2]|0;R=Q+-1|0;S=R+z|0;T=f[t>>2]|0;U=f[T+(((S>>>0)/113|0)<<2)>>2]|0;V=(S>>>0)%113|0;S=f[U+(V*36|0)>>2]|0;W=f[U+(V*36|0)+12>>2]|0;Y=f[U+(V*36|0)+24>>2]|0;Z=f[U+(V*36|0)+32>>2]|0;f[l>>2]=R;R=f[o>>2]|0;V=R-T>>2;if((1-Q-z+((V|0)==0?0:(V*113|0)+-1|0)|0)>>>0>225){Oq(f[R+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=S;f[c>>2]=W;R=f[k>>2]|0;V=((f[g>>2]|0)+-1|0)==(Y|0)?0:Y+1|0;Y=(f[s>>2]|0)+(Z*12|0)|0;z=W-S|0;T=(f[a>>2]|0)-(f[(f[Y>>2]|0)+(V<<2)>>2]|0)|0;a:do if(T){if(z>>>0<3){U=f[w>>2]|0;f[U>>2]=V;$=f[g>>2]|0;if($>>>0>1){aa=1;ba=$;ca=V;while(1){ca=(ca|0)==(ba+-1|0)?0:ca+1|0;f[U+(aa<<2)>>2]=ca;aa=aa+1|0;da=f[g>>2]|0;if(aa>>>0>=da>>>0){ea=da;break}else ba=da}}else ea=$;if(!z){fa=99;break}else{ga=0;ha=ea}while(1){ba=(f[N>>2]|0)+((X(f[M>>2]|0,S+ga|0)|0)<<2)|0;if(!ha)ia=0;else{aa=0;do{ca=f[(f[w>>2]|0)+(aa<<2)>>2]|0;U=(f[a>>2]|0)-(f[(f[Y>>2]|0)+(ca<<2)>>2]|0)|0;do if(U|0){da=f[y>>2]|0;ja=32-da|0;ka=32-U|0;la=f[ba+(ca<<2)>>2]<(ja|0)){ma=la>>>ka;ka=U-ja|0;f[y>>2]=ka;ja=f[h>>2]|ma>>>ka;f[h>>2]=ja;ka=f[j>>2]|0;if((ka|0)==(f[m>>2]|0))Ri(n,h);else{f[ka>>2]=ja;f[j>>2]=ka+4}f[h>>2]=ma<<32-(f[y>>2]|0);break}ma=f[h>>2]|la>>>da;f[h>>2]=ma;la=da+U|0;f[y>>2]=la;if((la|0)!=32)break;la=f[j>>2]|0;if((la|0)==(f[m>>2]|0))Ri(n,h);else{f[la>>2]=ma;f[j>>2]=la+4}f[h>>2]=0;f[y>>2]=0}while(0);aa=aa+1|0;U=f[g>>2]|0}while(aa>>>0>>0);ia=U}ga=ga+1|0;if(ga>>>0>=z>>>0){fa=99;break a}else ha=ia}}$=Z+1|0;Ig(R+($*12|0)|0,f[R+(Z*12|0)>>2]|0,f[R+(Z*12|0)+4>>2]|0);aa=(f[(f[k>>2]|0)+($*12|0)>>2]|0)+(V<<2)|0;ba=(f[aa>>2]|0)+(1<>2]=ba;aa=f[A>>2]|0;U=f[B>>2]|0;b:do if((W|0)==(S|0))na=S;else{ca=f[O>>2]|0;if(!aa){if((f[ca+(V<<2)>>2]|0)>>>0>>0){na=W;break}else{oa=W;pa=S}while(1){la=oa;do{la=la+-1|0;if((pa|0)==(la|0)){na=pa;break b}ma=(f[P>>2]|0)+((X(la,U)|0)<<2)+(V<<2)|0}while((f[ma>>2]|0)>>>0>=ba>>>0);pa=pa+1|0;if((pa|0)==(la|0)){na=la;break b}else oa=la}}else{qa=W;ra=S}while(1){ma=ra;while(1){sa=ca+((X(ma,aa)|0)<<2)|0;if((f[sa+(V<<2)>>2]|0)>>>0>=ba>>>0){ta=qa;break}da=ma+1|0;if((da|0)==(qa|0)){na=qa;break b}else ma=da}while(1){ta=ta+-1|0;if((ma|0)==(ta|0)){na=ma;break b}ua=(f[P>>2]|0)+((X(ta,U)|0)<<2)|0;if((f[ua+(V<<2)>>2]|0)>>>0>>0){va=0;break}}do{la=sa+(va<<2)|0;da=ua+(va<<2)|0;ka=f[la>>2]|0;f[la>>2]=f[da>>2];f[da>>2]=ka;va=va+1|0}while((va|0)!=(aa|0));ra=ma+1|0;if((ra|0)==(ta|0)){na=ta;break}else qa=ta}}while(0);ba=(_(z|0)|0)^31;U=na-S|0;ca=W-na|0;ka=U>>>0>>0;if((U|0)!=(ca|0)){da=f[H>>2]|0;if(ka)f[I>>2]=f[I>>2]|1<<31-da;la=da+1|0;f[H>>2]=la;if((la|0)==32){la=f[J>>2]|0;if((la|0)==(f[K>>2]|0))Ri(L,I);else{f[la>>2]=f[I>>2];f[J>>2]=la+4}f[H>>2]=0;f[I>>2]=0}}la=z>>>1;do if(ka){da=f[C>>2]|0;ja=32-da|0;wa=32-ba|0;xa=la-U<(ja|0)){ya=xa>>>wa;wa=ba-ja|0;f[C>>2]=wa;ja=f[D>>2]|ya>>>wa;f[D>>2]=ja;wa=f[E>>2]|0;if((wa|0)==(f[F>>2]|0))Ri(G,D);else{f[wa>>2]=ja;f[E>>2]=wa+4}f[D>>2]=ya<<32-(f[C>>2]|0);break}ya=f[D>>2]|xa>>>da;f[D>>2]=ya;xa=da+ba|0;f[C>>2]=xa;if((xa|0)==32){xa=f[E>>2]|0;if((xa|0)==(f[F>>2]|0))Ri(G,D);else{f[xa>>2]=ya;f[E>>2]=xa+4}f[D>>2]=0;f[C>>2]=0}}else{xa=f[C>>2]|0;ya=32-xa|0;da=32-ba|0;wa=la-ca<(ya|0)){ja=wa>>>da;da=ba-ya|0;f[C>>2]=da;ya=f[D>>2]|ja>>>da;f[D>>2]=ya;da=f[E>>2]|0;if((da|0)==(f[F>>2]|0))Ri(G,D);else{f[da>>2]=ya;f[E>>2]=da+4}f[D>>2]=ja<<32-(f[C>>2]|0);break}ja=f[D>>2]|wa>>>xa;f[D>>2]=ja;wa=xa+ba|0;f[C>>2]=wa;if((wa|0)==32){wa=f[E>>2]|0;if((wa|0)==(f[F>>2]|0))Ri(G,D);else{f[wa>>2]=ja;f[E>>2]=wa+4}f[D>>2]=0;f[C>>2]=0}}while(0);ba=f[s>>2]|0;la=f[ba+(Z*12|0)>>2]|0;ka=la+(V<<2)|0;f[ka>>2]=(f[ka>>2]|0)+1;Ig(ba+($*12|0)|0,la,f[ba+(Z*12|0)+4>>2]|0);if((na|0)!=(S|0)){ba=f[o>>2]|0;la=f[t>>2]|0;ka=ba-la>>2;wa=f[v>>2]|0;ja=f[l>>2]|0;if((((ka|0)==0?0:(ka*113|0)+-1|0)|0)==(ja+wa|0)){Pc(e);za=f[v>>2]|0;Aa=f[l>>2]|0;Ba=f[o>>2]|0;Ca=f[t>>2]|0}else{za=wa;Aa=ja;Ba=ba;Ca=la}la=Aa+za|0;if((Ba|0)==(Ca|0))Da=0;else Da=(f[Ca+(((la>>>0)/113|0)<<2)>>2]|0)+(((la>>>0)%113|0)*36|0)|0;f[Da>>2]=S;la=Da+4|0;f[la>>2]=r;f[la+4>>2]=x;f[Da+12>>2]=na;f[Da+16>>2]=i;f[Da+20>>2]=aa;f[Da+24>>2]=V;f[Da+28>>2]=U;f[Da+32>>2]=Z;f[l>>2]=(f[l>>2]|0)+1}if((W|0)!=(na|0)){la=f[o>>2]|0;ba=f[t>>2]|0;ja=la-ba>>2;wa=f[v>>2]|0;ka=f[l>>2]|0;if((((ja|0)==0?0:(ja*113|0)+-1|0)|0)==(ka+wa|0)){Pc(e);Ea=f[v>>2]|0;Fa=f[l>>2]|0;Ga=f[o>>2]|0;Ha=f[t>>2]|0}else{Ea=wa;Fa=ka;Ga=la;Ha=ba}ba=Fa+Ea|0;if((Ga|0)==(Ha|0))Ia=0;else Ia=(f[Ha+(((ba>>>0)/113|0)<<2)>>2]|0)+(((ba>>>0)%113|0)*36|0)|0;f[Ia>>2]=na;f[Ia+4>>2]=i;f[Ia+8>>2]=aa;f[Ia+12>>2]=W;ba=Ia+16|0;f[ba>>2]=p;f[ba+4>>2]=q;f[Ia+24>>2]=V;f[Ia+28>>2]=ca;f[Ia+32>>2]=$;ba=(f[l>>2]|0)+1|0;f[l>>2]=ba;Ja=ba}else fa=99}else fa=99;while(0);if((fa|0)==99){fa=0;Ja=f[l>>2]|0}if(!Ja)break;else Q=Ja}}Ja=f[t>>2]|0;Q=f[v>>2]|0;Ia=Ja+(((Q>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ja;if((q|0)==(Ja|0)){Ka=0;La=0}else{na=(f[Ia>>2]|0)+(((Q>>>0)%113|0)*36|0)|0;Ka=na;La=na}na=Ia;Ia=La;c:while(1){La=Ia;do{Q=La;if((Ka|0)==(Q|0))break c;La=Q+36|0}while((La-(f[na>>2]|0)|0)!=4068);La=na+4|0;na=La;Ia=f[La>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ja;do{Oq(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Ma=f[o>>2]|0;Na=Ma-i>>2}while(Na>>>0>2);Oa=Na;Pa=i;Qa=Ma}else{Oa=l;Pa=Ja;Qa=q}switch(Oa|0){case 1:{Ra=56;fa=113;break}case 2:{Ra=113;fa=113;break}default:{}}if((fa|0)==113)f[v>>2]=Ra;if((Pa|0)!=(Qa|0)){Ra=Pa;do{Oq(f[Ra>>2]|0);Ra=Ra+4|0}while((Ra|0)!=(Qa|0));Qa=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Qa|0))f[o>>2]=t+(~((t+-4-Qa|0)>>>2)<<2)}Qa=f[e>>2]|0;if(!Qa){u=d;return}Oq(Qa);u=d;return}function ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0;d=u;u=u+48|0;e=d+36|0;g=d+24|0;h=d;i=a+8|0;j=f[i>>2]|0;f[e>>2]=0;k=e+4|0;f[k>>2]=0;f[e+8>>2]=0;do if(j)if(j>>>0>1073741823)aq(e);else{l=j<<2;m=ln(l)|0;f[e>>2]=m;n=m+(j<<2)|0;f[e+8>>2]=n;sj(m|0,0,l|0)|0;f[k>>2]=n;o=n;p=m;break}else{o=0;p=0}while(0);m=a+1164|0;n=f[m>>2]|0;l=f[n>>2]|0;q=n+4|0;if(!l){r=n+8|0;s=p;t=o;v=j}else{j=f[q>>2]|0;if((j|0)!=(l|0))f[q>>2]=j+(~((j+-4-l|0)>>>2)<<2);Oq(l);l=n+8|0;f[l>>2]=0;f[q>>2]=0;f[n>>2]=0;r=l;s=f[e>>2]|0;t=f[k>>2]|0;v=f[i>>2]|0}f[n>>2]=s;f[q>>2]=t;f[r>>2]=f[e+8>>2];f[e>>2]=0;r=e+4|0;f[r>>2]=0;f[e+8>>2]=0;do if(v)if(v>>>0>1073741823)aq(e);else{t=v<<2;q=ln(t)|0;f[e>>2]=q;s=q+(v<<2)|0;f[e+8>>2]=s;sj(q|0,0,t|0)|0;f[r>>2]=s;w=s;x=q;break}else{w=0;x=0}while(0);v=a+1176|0;q=f[v>>2]|0;s=f[q>>2]|0;t=q+4|0;if(!s){y=q+8|0;z=x;A=w}else{w=f[t>>2]|0;if((w|0)!=(s|0))f[t>>2]=w+(~((w+-4-s|0)>>>2)<<2);Oq(s);s=q+8|0;f[s>>2]=0;f[t>>2]=0;f[q>>2]=0;y=s;z=f[e>>2]|0;A=f[r>>2]|0}f[q>>2]=z;f[t>>2]=A;f[y>>2]=f[e+8>>2];y=f[b>>2]|0;A=b+4|0;t=f[A>>2]|0;z=f[A+4>>2]|0;A=f[c>>2]|0;q=c+4|0;r=f[q>>2]|0;s=f[q+4>>2]|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;f[h+16>>2]=0;f[h+20>>2]=0;q=h+8|0;w=h+4|0;x=h+16|0;n=h+20|0;k=t;Pc(h);l=f[w>>2]|0;j=(f[n>>2]|0)+(f[x>>2]|0)|0;if((f[q>>2]|0)==(l|0))B=0;else B=(f[l+(((j>>>0)/113|0)<<2)>>2]|0)+(((j>>>0)%113|0)*36|0)|0;f[B>>2]=y;j=B+4|0;f[j>>2]=t;f[j+4>>2]=z;f[B+12>>2]=A;j=B+16|0;f[j>>2]=r;f[j+4>>2]=s;f[B+24>>2]=0;f[B+28>>2]=A-y;f[B+32>>2]=0;B=(f[n>>2]|0)+1|0;f[n>>2]=B;if(B|0){y=a+1152|0;A=a+1084|0;j=a+1080|0;l=a+1072|0;o=a+1076|0;p=a+1068|0;C=b+8|0;D=c+8|0;E=a+1124|0;F=a+1120|0;G=a+1112|0;H=a+1116|0;I=a+1108|0;J=k+4|0;K=k+24|0;L=k+24|0;M=r+24|0;N=B;while(1){B=f[x>>2]|0;O=N+-1|0;P=O+B|0;Q=f[w>>2]|0;R=f[Q+(((P>>>0)/113|0)<<2)>>2]|0;S=(P>>>0)%113|0;P=f[R+(S*36|0)>>2]|0;T=f[R+(S*36|0)+12>>2]|0;U=f[R+(S*36|0)+24>>2]|0;V=f[R+(S*36|0)+32>>2]|0;f[n>>2]=O;O=f[q>>2]|0;S=O-Q>>2;if((1-N-B+((S|0)==0?0:(S*113|0)+-1|0)|0)>>>0>225){Oq(f[O+-4>>2]|0);f[q>>2]=(f[q>>2]|0)+-4}f[b>>2]=P;f[c>>2]=T;O=f[m>>2]|0;S=O+(V*12|0)|0;B=(f[v>>2]|0)+(V*12|0)|0;f[g>>2]=f[b>>2];f[g+4>>2]=f[b+4>>2];f[g+8>>2]=f[b+8>>2];f[e>>2]=f[c>>2];f[e+4>>2]=f[c+4>>2];f[e+8>>2]=f[c+8>>2];Q=Rd(a,g,e,S,B,U)|0;U=T-P|0;R=(f[a>>2]|0)-(f[(f[B>>2]|0)+(Q<<2)>>2]|0)|0;a:do if(R){if(U>>>0<3){W=f[y>>2]|0;f[W>>2]=Q;Y=f[i>>2]|0;if(Y>>>0>1){Z=1;$=Y;aa=Q;while(1){aa=(aa|0)==($+-1|0)?0:aa+1|0;f[W+(Z<<2)>>2]=aa;Z=Z+1|0;ba=f[i>>2]|0;if(Z>>>0>=ba>>>0){ca=ba;break}else $=ba}}else ca=Y;if(!U){da=87;break}else{ea=0;fa=ca}while(1){$=(f[K>>2]|0)+((X(f[J>>2]|0,P+ea|0)|0)<<2)|0;if(!fa)ga=0;else{Z=0;do{aa=f[(f[y>>2]|0)+(Z<<2)>>2]|0;W=(f[a>>2]|0)-(f[(f[B>>2]|0)+(aa<<2)>>2]|0)|0;do if(W|0){ba=f[A>>2]|0;ha=32-ba|0;ia=32-W|0;ja=f[$+(aa<<2)>>2]<(ha|0)){ka=ja>>>ia;ia=W-ha|0;f[A>>2]=ia;ha=f[j>>2]|ka>>>ia;f[j>>2]=ha;ia=f[l>>2]|0;if((ia|0)==(f[o>>2]|0))Ri(p,j);else{f[ia>>2]=ha;f[l>>2]=ia+4}f[j>>2]=ka<<32-(f[A>>2]|0);break}ka=f[j>>2]|ja>>>ba;f[j>>2]=ka;ja=ba+W|0;f[A>>2]=ja;if((ja|0)!=32)break;ja=f[l>>2]|0;if((ja|0)==(f[o>>2]|0))Ri(p,j);else{f[ja>>2]=ka;f[l>>2]=ja+4}f[j>>2]=0;f[A>>2]=0}while(0);Z=Z+1|0;W=f[i>>2]|0}while(Z>>>0>>0);ga=W}ea=ea+1|0;if(ea>>>0>=U>>>0){da=87;break a}else fa=ga}}Y=V+1|0;Z=f[m>>2]|0;$=Z+(Y*12|0)|0;if(($|0)==(S|0))la=Z;else{Ig($,f[S>>2]|0,f[O+(V*12|0)+4>>2]|0);la=f[m>>2]|0}$=(f[la+(Y*12|0)>>2]|0)+(Q<<2)|0;Z=(f[$>>2]|0)+(1<>2]=Z;$=f[C>>2]|0;W=f[D>>2]|0;b:do if((T|0)==(P|0))ma=P;else{aa=f[L>>2]|0;if(!$){if((f[aa+(Q<<2)>>2]|0)>>>0>>0){ma=T;break}else{na=T;oa=P}while(1){ja=na;do{ja=ja+-1|0;if((oa|0)==(ja|0)){ma=oa;break b}ka=(f[M>>2]|0)+((X(ja,W)|0)<<2)+(Q<<2)|0}while((f[ka>>2]|0)>>>0>=Z>>>0);oa=oa+1|0;if((oa|0)==(ja|0)){ma=ja;break b}else na=ja}}else{pa=T;qa=P}while(1){ka=qa;while(1){ra=aa+((X(ka,$)|0)<<2)|0;if((f[ra+(Q<<2)>>2]|0)>>>0>=Z>>>0){sa=pa;break}ba=ka+1|0;if((ba|0)==(pa|0)){ma=pa;break b}else ka=ba}while(1){sa=sa+-1|0;if((ka|0)==(sa|0)){ma=ka;break b}ta=(f[M>>2]|0)+((X(sa,W)|0)<<2)|0;if((f[ta+(Q<<2)>>2]|0)>>>0>>0){ua=0;break}}do{ja=ra+(ua<<2)|0;ba=ta+(ua<<2)|0;ia=f[ja>>2]|0;f[ja>>2]=f[ba>>2];f[ba>>2]=ia;ua=ua+1|0}while((ua|0)!=($|0));qa=ka+1|0;if((qa|0)==(sa|0)){ma=sa;break}else pa=sa}}while(0);Z=(_(U|0)|0)^31;W=ma-P|0;aa=T-ma|0;ia=W>>>0>>0;if((W|0)!=(aa|0)){ba=f[E>>2]|0;if(ia)f[F>>2]=f[F>>2]|1<<31-ba;ja=ba+1|0;f[E>>2]=ja;if((ja|0)==32){ja=f[G>>2]|0;if((ja|0)==(f[H>>2]|0))Ri(I,F);else{f[ja>>2]=f[F>>2];f[G>>2]=ja+4}f[E>>2]=0;f[F>>2]=0}}ja=U>>>1;if(ia){ia=ja-W|0;if(Z|0){ba=0;ha=1<>>1}}}else{ha=ja-aa|0;if(Z|0){ba=0;ia=1<>>1}}}ia=f[v>>2]|0;Z=f[ia+(V*12|0)>>2]|0;ba=Z+(Q<<2)|0;f[ba>>2]=(f[ba>>2]|0)+1;Ig(ia+(Y*12|0)|0,Z,f[ia+(V*12|0)+4>>2]|0);if((ma|0)!=(P|0)){ia=f[q>>2]|0;Z=f[w>>2]|0;ba=ia-Z>>2;ha=f[x>>2]|0;ja=f[n>>2]|0;if((((ba|0)==0?0:(ba*113|0)+-1|0)|0)==(ja+ha|0)){Pc(h);va=f[x>>2]|0;wa=f[n>>2]|0;xa=f[q>>2]|0;ya=f[w>>2]|0}else{va=ha;wa=ja;xa=ia;ya=Z}Z=wa+va|0;if((xa|0)==(ya|0))za=0;else za=(f[ya+(((Z>>>0)/113|0)<<2)>>2]|0)+(((Z>>>0)%113|0)*36|0)|0;f[za>>2]=P;Z=za+4|0;f[Z>>2]=t;f[Z+4>>2]=z;f[za+12>>2]=ma;f[za+16>>2]=k;f[za+20>>2]=$;f[za+24>>2]=Q;f[za+28>>2]=W;f[za+32>>2]=V;f[n>>2]=(f[n>>2]|0)+1}if((T|0)!=(ma|0)){Z=f[q>>2]|0;ia=f[w>>2]|0;ja=Z-ia>>2;ha=f[x>>2]|0;ba=f[n>>2]|0;if((((ja|0)==0?0:(ja*113|0)+-1|0)|0)==(ba+ha|0)){Pc(h);Aa=f[x>>2]|0;Ba=f[n>>2]|0;Ca=f[q>>2]|0;Da=f[w>>2]|0}else{Aa=ha;Ba=ba;Ca=Z;Da=ia}ia=Ba+Aa|0;if((Ca|0)==(Da|0))Ea=0;else Ea=(f[Da+(((ia>>>0)/113|0)<<2)>>2]|0)+(((ia>>>0)%113|0)*36|0)|0;f[Ea>>2]=ma;f[Ea+4>>2]=k;f[Ea+8>>2]=$;f[Ea+12>>2]=T;ia=Ea+16|0;f[ia>>2]=r;f[ia+4>>2]=s;f[Ea+24>>2]=Q;f[Ea+28>>2]=aa;f[Ea+32>>2]=Y;ia=(f[n>>2]|0)+1|0;f[n>>2]=ia;Fa=ia}else da=87}else da=87;while(0);if((da|0)==87){da=0;Fa=f[n>>2]|0}if(!Fa)break;else N=Fa}}Fa=f[w>>2]|0;N=f[x>>2]|0;Ea=Fa+(((N>>>0)/113|0)<<2)|0;s=f[q>>2]|0;r=s;k=Fa;if((s|0)==(Fa|0)){Ga=0;Ha=0}else{ma=(f[Ea>>2]|0)+(((N>>>0)%113|0)*36|0)|0;Ga=ma;Ha=ma}ma=Ea;Ea=Ha;c:while(1){Ha=Ea;do{N=Ha;if((Ga|0)==(N|0))break c;Ha=N+36|0}while((Ha-(f[ma>>2]|0)|0)!=4068);Ha=ma+4|0;ma=Ha;Ea=f[Ha>>2]|0}f[n>>2]=0;n=r-k>>2;if(n>>>0>2){k=Fa;do{Oq(f[k>>2]|0);k=(f[w>>2]|0)+4|0;f[w>>2]=k;Ia=f[q>>2]|0;Ja=Ia-k>>2}while(Ja>>>0>2);Ka=Ja;La=k;Ma=Ia}else{Ka=n;La=Fa;Ma=s}switch(Ka|0){case 1:{Na=56;da=101;break}case 2:{Na=113;da=101;break}default:{}}if((da|0)==101)f[x>>2]=Na;if((La|0)!=(Ma|0)){Na=La;do{Oq(f[Na>>2]|0);Na=Na+4|0}while((Na|0)!=(Ma|0));Ma=f[w>>2]|0;w=f[q>>2]|0;if((w|0)!=(Ma|0))f[q>>2]=w+(~((w+-4-Ma|0)>>>2)<<2)}Ma=f[h>>2]|0;if(!Ma){u=d;return}Oq(Ma);u=d;return}function jb(a,c){a=a|0;c=c|0;var d=0,e=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,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,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,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0;d=u;u=u+1424|0;e=d+1408|0;g=d+1396|0;h=d+1420|0;i=d+1200|0;j=d+12|0;k=d;l=d+1384|0;m=d+1372|0;n=d+1360|0;o=d+1348|0;p=d+1336|0;q=d+1324|0;r=d+1312|0;s=d+1300|0;t=d+1288|0;v=d+1276|0;w=d+1264|0;x=d+1252|0;y=d+1240|0;z=d+1228|0;A=a+28|0;B=10-(mi(f[(f[A>>2]|0)+48>>2]|0)|0)|0;C=(B|0)<6?B:6;b[h>>0]=C;if((C&255|0)==6?(f[a+72>>2]|0)>15:0)b[h>>0]=5;C=c+16|0;B=f[C+4>>2]|0;if(!((B|0)>0|(B|0)==0&(f[C>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+1|0)|0}C=f[A>>2]|0;B=f[(f[C+4>>2]|0)+80>>2]|0;D=a+72|0;E=f[D>>2]|0;f[i>>2]=B;F=i+4|0;f[F>>2]=E;f[i+8>>2]=E<<2;G=i+12|0;H=X(E,B)|0;f[G>>2]=0;J=i+16|0;f[J>>2]=0;f[i+20>>2]=0;do if(H)if(H>>>0>1073741823)aq(G);else{K=H<<2;L=ln(K)|0;f[G>>2]=L;M=L+(H<<2)|0;f[i+20>>2]=M;sj(L|0,0,K|0)|0;f[J>>2]=M;N=L;break}else N=0;while(0);H=i+24|0;f[H>>2]=N;G=a+4|0;L=a+8|0;M=f[G>>2]|0;a:do if((f[L>>2]|0)!=(M|0)){K=j+4|0;O=j+8|0;P=j+8|0;Q=(B|0)==0;R=j+4|0;S=j+8|0;T=k+4|0;U=k+8|0;V=k+8|0;W=a+48|0;Y=j+8|0;Z=a+60|0;$=0;aa=0;ba=0;ca=0;da=M;ea=C;b:while(1){fa=f[(f[(f[ea+4>>2]|0)+8>>2]|0)+(f[da+(ca<<2)>>2]<<2)>>2]|0;switch(f[fa+28>>2]|0){case 1:case 3:case 5:case 2:case 4:case 6:{ga=fa;ha=aa;break}case 9:{ga=f[(f[Z>>2]|0)+(aa<<2)>>2]|0;ha=aa+1|0;break}default:{ia=0;break a}}if(!ga){ia=0;break a}c:do switch(f[ga+28>>2]|0){case 6:{if(Q){ja=ba;ka=ga+24|0;break c}fa=ga+84|0;la=ga+68|0;ma=ga+48|0;na=ga+40|0;oa=ga+24|0;pa=0;do{if(!(b[fa>>0]|0))qa=f[(f[la>>2]|0)+(pa<<2)>>2]|0;else qa=pa;ra=ma;sa=f[ra>>2]|0;ta=f[ra+4>>2]|0;ra=na;ua=un(f[ra>>2]|0,f[ra+4>>2]|0,qa|0,0)|0;ra=Vn(ua|0,I|0,sa|0,ta|0)|0;kh((f[H>>2]|0)+((X(f[F>>2]|0,pa)|0)<<2)+($<<2)|0,(f[f[ga>>2]>>2]|0)+ra|0,b[oa>>0]<<2|0)|0;pa=pa+1|0}while((pa|0)!=(B|0));ja=ba;ka=oa;break}case 1:case 3:case 5:{oa=ga+24|0;pa=b[oa>>0]|0;na=pa<<24>>24;f[j>>2]=0;f[R>>2]=0;f[S>>2]=0;if(!(pa<<24>>24))va=0;else{if(pa<<24>>24<0){wa=24;break b}pa=na<<2;ma=ln(pa)|0;f[j>>2]=ma;la=ma+(na<<2)|0;f[Y>>2]=la;sj(ma|0,0,pa|0)|0;f[R>>2]=la;va=b[oa>>0]|0}la=va<<24>>24;f[k>>2]=0;f[T>>2]=0;f[U>>2]=0;if(!(va<<24>>24)){xa=0;ya=0}else{if(va<<24>>24<0){wa=30;break b}pa=la<<2;ma=ln(pa)|0;f[k>>2]=ma;na=ma+(la<<2)|0;f[V>>2]=na;sj(ma|0,0,pa|0)|0;f[T>>2]=na;xa=ma;ya=ma}if(Q){za=ya;Aa=xa}else{ma=ga+84|0;na=ga+68|0;pa=0;do{if(!(b[ma>>0]|0))Ba=f[(f[na>>2]|0)+(pa<<2)>>2]|0;else Ba=pa;la=f[j>>2]|0;f[g>>2]=Ba;fa=b[oa>>0]|0;f[e>>2]=f[g>>2];Qb(ga,e,fa,la)|0;la=b[oa>>0]|0;fa=la<<24>>24;if(la<<24>>24>0){la=f[j>>2]|0;ra=f[W>>2]|0;ta=f[k>>2]|0;sa=0;do{f[ta+(sa<<2)>>2]=(f[la+(sa<<2)>>2]|0)-(f[ra+(sa+ba<<2)>>2]|0);sa=sa+1|0}while((sa|0)<(fa|0));Ca=ta}else Ca=f[k>>2]|0;kh((f[H>>2]|0)+((X(f[F>>2]|0,pa)|0)<<2)+($<<2)|0,Ca|0,fa<<2|0)|0;pa=pa+1|0}while(pa>>>0>>0);pa=f[k>>2]|0;za=pa;Aa=pa}pa=ba+(b[oa>>0]|0)|0;if(za|0){na=f[T>>2]|0;if((na|0)!=(za|0))f[T>>2]=na+(~((na+-4-za|0)>>>2)<<2);Oq(Aa)}na=f[j>>2]|0;if(na|0){ma=f[R>>2]|0;if((ma|0)!=(na|0))f[R>>2]=ma+(~((ma+-4-na|0)>>>2)<<2);Oq(na)}ja=pa;ka=oa;break}default:{pa=ga+24|0;na=b[pa>>0]|0;ma=na<<24>>24;f[j>>2]=0;f[K>>2]=0;f[O>>2]=0;if(!(na<<24>>24)){Da=0;Ea=0}else{if(na<<24>>24<0){wa=53;break b}na=ma<<2;ta=ln(na)|0;f[j>>2]=ta;sa=ta+(ma<<2)|0;f[P>>2]=sa;sj(ta|0,0,na|0)|0;f[K>>2]=sa;Da=ta;Ea=ta}if(Q){Fa=Ea;Ga=Da}else{ta=ga+84|0;sa=ga+68|0;na=0;do{if(!(b[ta>>0]|0))Ha=f[(f[sa>>2]|0)+(na<<2)>>2]|0;else Ha=na;ma=f[j>>2]|0;f[g>>2]=Ha;ra=b[pa>>0]|0;f[e>>2]=f[g>>2];Pb(ga,e,ra,ma)|0;kh((f[H>>2]|0)+((X(f[F>>2]|0,na)|0)<<2)+($<<2)|0,f[j>>2]|0,b[pa>>0]<<2|0)|0;na=na+1|0}while(na>>>0>>0);na=f[j>>2]|0;Fa=na;Ga=na}if(Fa|0){na=f[K>>2]|0;if((na|0)!=(Fa|0))f[K>>2]=na+(~((na+-4-Fa|0)>>>2)<<2);Oq(Ga)}ja=ba;ka=pa}}while(0);na=ca+1|0;sa=f[G>>2]|0;if(na>>>0>=(f[L>>2]|0)-sa>>2>>>0){wa=66;break}$=$+(b[ka>>0]|0)|0;aa=ha;ba=ja;ca=na;da=sa;ea=f[A>>2]|0}if((wa|0)==24)aq(j);else if((wa|0)==30)aq(k);else if((wa|0)==53)aq(j);else if((wa|0)==66){Ia=f[D>>2]|0;Ja=f[H>>2]|0;wa=67;break}}else{Ia=E;Ja=N;wa=67}while(0);d:do if((wa|0)==67){N=X(Ia,B)|0;if((N|0)>0){E=0;H=0;while(1){D=f[Ja+(E<<2)>>2]|0;if(!D)Ka=H;else{A=(_(D|0)|0)^31;Ka=(A|0)<(H|0)?H:A+1|0}E=E+1|0;if((E|0)>=(N|0)){La=Ka;break}else H=Ka}}else La=0;switch(b[h>>0]|0){case 6:{Ue(j,Ia);f[l>>2]=0;f[l+4>>2]=i;H=f[F>>2]|0;f[l+8>>2]=H;f[m>>2]=f[i>>2];f[m+4>>2]=i;f[m+8>>2]=H;f[k>>2]=La;f[g>>2]=f[l>>2];f[g+4>>2]=f[l+4>>2];f[g+8>>2]=f[l+8>>2];f[e>>2]=f[m>>2];f[e+4>>2]=f[m+4>>2];f[e+8>>2]=f[m+8>>2];H=sf(j,g,e,k,c)|0;Se(j);if(!H){ia=0;break d}break}case 5:{Ue(j,Ia);f[n>>2]=0;f[n+4>>2]=i;H=f[F>>2]|0;f[n+8>>2]=H;f[o>>2]=f[i>>2];f[o+4>>2]=i;f[o+8>>2]=H;f[k>>2]=La;f[g>>2]=f[n>>2];f[g+4>>2]=f[n+4>>2];f[g+8>>2]=f[n+8>>2];f[e>>2]=f[o>>2];f[e+4>>2]=f[o+4>>2];f[e+8>>2]=f[o+8>>2];H=tf(j,g,e,k,c)|0;Se(j);if(!H){ia=0;break d}break}case 4:{Ue(j,Ia);f[p>>2]=0;f[p+4>>2]=i;H=f[F>>2]|0;f[p+8>>2]=H;f[q>>2]=f[i>>2];f[q+4>>2]=i;f[q+8>>2]=H;f[k>>2]=La;f[g>>2]=f[p>>2];f[g+4>>2]=f[p+4>>2];f[g+8>>2]=f[p+8>>2];f[e>>2]=f[q>>2];f[e+4>>2]=f[q+4>>2];f[e+8>>2]=f[q+8>>2];H=tf(j,g,e,k,c)|0;Se(j);if(!H){ia=0;break d}break}case 3:{$e(j,Ia);f[r>>2]=0;f[r+4>>2]=i;H=f[F>>2]|0;f[r+8>>2]=H;f[s>>2]=f[i>>2];f[s+4>>2]=i;f[s+8>>2]=H;f[k>>2]=La;f[g>>2]=f[r>>2];f[g+4>>2]=f[r+4>>2];f[g+8>>2]=f[r+8>>2];f[e>>2]=f[s>>2];f[e+4>>2]=f[s+4>>2];f[e+8>>2]=f[s+8>>2];H=Af(j,g,e,k,c)|0;ef(j);if(!H){ia=0;break d}break}case 2:{$e(j,Ia);f[t>>2]=0;f[t+4>>2]=i;H=f[F>>2]|0;f[t+8>>2]=H;f[v>>2]=f[i>>2];f[v+4>>2]=i;f[v+8>>2]=H;f[k>>2]=La;f[g>>2]=f[t>>2];f[g+4>>2]=f[t+4>>2];f[g+8>>2]=f[t+8>>2];f[e>>2]=f[v>>2];f[e+4>>2]=f[v+4>>2];f[e+8>>2]=f[v+8>>2];H=Af(j,g,e,k,c)|0;ef(j);if(!H){ia=0;break d}break}case 1:{af(j,Ia);f[w>>2]=0;f[w+4>>2]=i;H=f[F>>2]|0;f[w+8>>2]=H;f[x>>2]=f[i>>2];f[x+4>>2]=i;f[x+8>>2]=H;f[k>>2]=La;f[g>>2]=f[w>>2];f[g+4>>2]=f[w+4>>2];f[g+8>>2]=f[w+8>>2];f[e>>2]=f[x>>2];f[e+4>>2]=f[x+4>>2];f[e+8>>2]=f[x+8>>2];H=zf(j,g,e,k,c)|0;df(j);if(!H){ia=0;break d}break}case 0:{af(j,Ia);f[y>>2]=0;f[y+4>>2]=i;H=f[F>>2]|0;f[y+8>>2]=H;f[z>>2]=f[i>>2];f[z+4>>2]=i;f[z+8>>2]=H;f[k>>2]=La;f[g>>2]=f[y>>2];f[g+4>>2]=f[y+4>>2];f[g+8>>2]=f[y+8>>2];f[e>>2]=f[z>>2];f[e+4>>2]=f[z+4>>2];f[e+8>>2]=f[z+8>>2];H=zf(j,g,e,k,c)|0;df(j);if(!H){ia=0;break d}break}default:{ia=0;break d}}ia=1}while(0);j=f[i+12>>2]|0;if(!j){u=d;return ia|0}i=f[J>>2]|0;if((i|0)!=(j|0))f[J>>2]=i+(~((i+-4-j|0)>>>2)<<2);Oq(j);u=d;return ia|0}function kb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)aq(e);else{j=h<<2;k=ln(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;sj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+1164|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);Oq(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)aq(e);else{r=s<<2;o=ln(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;sj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+1176|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);Oq(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Pc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+1152|0;y=a+1084|0;h=a+1080|0;j=a+1072|0;m=a+1076|0;n=a+1068|0;A=b+8|0;B=c+8|0;C=a+1124|0;D=a+1120|0;E=a+1112|0;F=a+1116|0;G=a+1108|0;H=i+4|0;I=i+24|0;J=i+24|0;K=p+24|0;L=z;while(1){z=f[v>>2]|0;M=L+-1|0;N=M+z|0;O=f[t>>2]|0;P=f[O+(((N>>>0)/113|0)<<2)>>2]|0;Q=(N>>>0)%113|0;N=f[P+(Q*36|0)>>2]|0;R=f[P+(Q*36|0)+12>>2]|0;S=f[P+(Q*36|0)+24>>2]|0;T=f[P+(Q*36|0)+32>>2]|0;f[l>>2]=M;M=f[o>>2]|0;Q=M-O>>2;if((1-L-z+((Q|0)==0?0:(Q*113|0)+-1|0)|0)>>>0>225){Oq(f[M+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=N;f[c>>2]=R;M=f[k>>2]|0;Q=((f[g>>2]|0)+-1|0)==(S|0)?0:S+1|0;S=(f[s>>2]|0)+(T*12|0)|0;z=R-N|0;O=(f[a>>2]|0)-(f[(f[S>>2]|0)+(Q<<2)>>2]|0)|0;a:do if(O){if(z>>>0<3){P=f[w>>2]|0;f[P>>2]=Q;U=f[g>>2]|0;if(U>>>0>1){V=1;W=U;Y=Q;while(1){Y=(Y|0)==(W+-1|0)?0:Y+1|0;f[P+(V<<2)>>2]=Y;V=V+1|0;Z=f[g>>2]|0;if(V>>>0>=Z>>>0){$=Z;break}else W=Z}}else $=U;if(!z){aa=85;break}else{ba=0;ca=$}while(1){W=(f[I>>2]|0)+((X(f[H>>2]|0,N+ba|0)|0)<<2)|0;if(!ca)da=0;else{V=0;do{Y=f[(f[w>>2]|0)+(V<<2)>>2]|0;P=(f[a>>2]|0)-(f[(f[S>>2]|0)+(Y<<2)>>2]|0)|0;do if(P|0){Z=f[y>>2]|0;ea=32-Z|0;fa=32-P|0;ga=f[W+(Y<<2)>>2]<(ea|0)){ha=ga>>>fa;fa=P-ea|0;f[y>>2]=fa;ea=f[h>>2]|ha>>>fa;f[h>>2]=ea;fa=f[j>>2]|0;if((fa|0)==(f[m>>2]|0))Ri(n,h);else{f[fa>>2]=ea;f[j>>2]=fa+4}f[h>>2]=ha<<32-(f[y>>2]|0);break}ha=f[h>>2]|ga>>>Z;f[h>>2]=ha;ga=Z+P|0;f[y>>2]=ga;if((ga|0)!=32)break;ga=f[j>>2]|0;if((ga|0)==(f[m>>2]|0))Ri(n,h);else{f[ga>>2]=ha;f[j>>2]=ga+4}f[h>>2]=0;f[y>>2]=0}while(0);V=V+1|0;P=f[g>>2]|0}while(V>>>0

>>0);da=P}ba=ba+1|0;if(ba>>>0>=z>>>0){aa=85;break a}else ca=da}}U=T+1|0;Ig(M+(U*12|0)|0,f[M+(T*12|0)>>2]|0,f[M+(T*12|0)+4>>2]|0);V=(f[(f[k>>2]|0)+(U*12|0)>>2]|0)+(Q<<2)|0;W=(f[V>>2]|0)+(1<>2]=W;V=f[A>>2]|0;P=f[B>>2]|0;b:do if((R|0)==(N|0))ia=N;else{Y=f[J>>2]|0;if(!V){if((f[Y+(Q<<2)>>2]|0)>>>0>>0){ia=R;break}else{ja=R;ka=N}while(1){ga=ja;do{ga=ga+-1|0;if((ka|0)==(ga|0)){ia=ka;break b}ha=(f[K>>2]|0)+((X(ga,P)|0)<<2)+(Q<<2)|0}while((f[ha>>2]|0)>>>0>=W>>>0);ka=ka+1|0;if((ka|0)==(ga|0)){ia=ga;break b}else ja=ga}}else{la=R;ma=N}while(1){ha=ma;while(1){na=Y+((X(ha,V)|0)<<2)|0;if((f[na+(Q<<2)>>2]|0)>>>0>=W>>>0){oa=la;break}Z=ha+1|0;if((Z|0)==(la|0)){ia=la;break b}else ha=Z}while(1){oa=oa+-1|0;if((ha|0)==(oa|0)){ia=ha;break b}pa=(f[K>>2]|0)+((X(oa,P)|0)<<2)|0;if((f[pa+(Q<<2)>>2]|0)>>>0>>0){qa=0;break}}do{ga=na+(qa<<2)|0;Z=pa+(qa<<2)|0;fa=f[ga>>2]|0;f[ga>>2]=f[Z>>2];f[Z>>2]=fa;qa=qa+1|0}while((qa|0)!=(V|0));ma=ha+1|0;if((ma|0)==(oa|0)){ia=oa;break}else la=oa}}while(0);W=(_(z|0)|0)^31;P=ia-N|0;Y=R-ia|0;fa=P>>>0>>0;if((P|0)!=(Y|0)){Z=f[C>>2]|0;if(fa)f[D>>2]=f[D>>2]|1<<31-Z;ga=Z+1|0;f[C>>2]=ga;if((ga|0)==32){ga=f[E>>2]|0;if((ga|0)==(f[F>>2]|0))Ri(G,D);else{f[ga>>2]=f[D>>2];f[E>>2]=ga+4}f[C>>2]=0;f[D>>2]=0}}ga=z>>>1;if(fa){fa=ga-P|0;if(W|0){Z=0;ea=1<>>1}}}else{ea=ga-Y|0;if(W|0){Z=0;fa=1<>>1}}}fa=f[s>>2]|0;W=f[fa+(T*12|0)>>2]|0;Z=W+(Q<<2)|0;f[Z>>2]=(f[Z>>2]|0)+1;Ig(fa+(U*12|0)|0,W,f[fa+(T*12|0)+4>>2]|0);if((ia|0)!=(N|0)){fa=f[o>>2]|0;W=f[t>>2]|0;Z=fa-W>>2;ea=f[v>>2]|0;ga=f[l>>2]|0;if((((Z|0)==0?0:(Z*113|0)+-1|0)|0)==(ga+ea|0)){Pc(e);ra=f[v>>2]|0;sa=f[l>>2]|0;ta=f[o>>2]|0;ua=f[t>>2]|0}else{ra=ea;sa=ga;ta=fa;ua=W}W=sa+ra|0;if((ta|0)==(ua|0))va=0;else va=(f[ua+(((W>>>0)/113|0)<<2)>>2]|0)+(((W>>>0)%113|0)*36|0)|0;f[va>>2]=N;W=va+4|0;f[W>>2]=r;f[W+4>>2]=x;f[va+12>>2]=ia;f[va+16>>2]=i;f[va+20>>2]=V;f[va+24>>2]=Q;f[va+28>>2]=P;f[va+32>>2]=T;f[l>>2]=(f[l>>2]|0)+1}if((R|0)!=(ia|0)){W=f[o>>2]|0;fa=f[t>>2]|0;ga=W-fa>>2;ea=f[v>>2]|0;Z=f[l>>2]|0;if((((ga|0)==0?0:(ga*113|0)+-1|0)|0)==(Z+ea|0)){Pc(e);wa=f[v>>2]|0;xa=f[l>>2]|0;ya=f[o>>2]|0;za=f[t>>2]|0}else{wa=ea;xa=Z;ya=W;za=fa}fa=xa+wa|0;if((ya|0)==(za|0))Aa=0;else Aa=(f[za+(((fa>>>0)/113|0)<<2)>>2]|0)+(((fa>>>0)%113|0)*36|0)|0;f[Aa>>2]=ia;f[Aa+4>>2]=i;f[Aa+8>>2]=V;f[Aa+12>>2]=R;fa=Aa+16|0;f[fa>>2]=p;f[fa+4>>2]=q;f[Aa+24>>2]=Q;f[Aa+28>>2]=Y;f[Aa+32>>2]=U;fa=(f[l>>2]|0)+1|0;f[l>>2]=fa;Ba=fa}else aa=85}else aa=85;while(0);if((aa|0)==85){aa=0;Ba=f[l>>2]|0}if(!Ba)break;else L=Ba}}Ba=f[t>>2]|0;L=f[v>>2]|0;Aa=Ba+(((L>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ba;if((q|0)==(Ba|0)){Ca=0;Da=0}else{ia=(f[Aa>>2]|0)+(((L>>>0)%113|0)*36|0)|0;Ca=ia;Da=ia}ia=Aa;Aa=Da;c:while(1){Da=Aa;do{L=Da;if((Ca|0)==(L|0))break c;Da=L+36|0}while((Da-(f[ia>>2]|0)|0)!=4068);Da=ia+4|0;ia=Da;Aa=f[Da>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ba;do{Oq(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Ea=f[o>>2]|0;Fa=Ea-i>>2}while(Fa>>>0>2);Ga=Fa;Ha=i;Ia=Ea}else{Ga=l;Ha=Ba;Ia=q}switch(Ga|0){case 1:{Ja=56;aa=99;break}case 2:{Ja=113;aa=99;break}default:{}}if((aa|0)==99)f[v>>2]=Ja;if((Ha|0)!=(Ia|0)){Ja=Ha;do{Oq(f[Ja>>2]|0);Ja=Ja+4|0}while((Ja|0)!=(Ia|0));Ia=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Ia|0))f[o>>2]=t+(~((t+-4-Ia|0)>>>2)<<2)}Ia=f[e>>2]|0;if(!Ia){u=d;return}Oq(Ia);u=d;return}function lb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0;d=u;u=u+32|0;e=d;g=a+8|0;h=f[g>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;do if(h)if(h>>>0>1073741823)aq(e);else{j=h<<2;k=ln(j)|0;f[e>>2]=k;l=k+(h<<2)|0;f[e+8>>2]=l;sj(k|0,0,j|0)|0;f[i>>2]=l;m=l;n=k;break}else{m=0;n=0}while(0);k=a+140|0;l=f[k>>2]|0;j=f[l>>2]|0;o=l+4|0;if(!j){p=l+8|0;q=n;r=m;s=h}else{h=f[o>>2]|0;if((h|0)!=(j|0))f[o>>2]=h+(~((h+-4-j|0)>>>2)<<2);Oq(j);j=l+8|0;f[j>>2]=0;f[o>>2]=0;f[l>>2]=0;p=j;q=f[e>>2]|0;r=f[i>>2]|0;s=f[g>>2]|0}f[l>>2]=q;f[o>>2]=r;f[p>>2]=f[e+8>>2];f[e>>2]=0;p=e+4|0;f[p>>2]=0;f[e+8>>2]=0;do if(s)if(s>>>0>1073741823)aq(e);else{r=s<<2;o=ln(r)|0;f[e>>2]=o;q=o+(s<<2)|0;f[e+8>>2]=q;sj(o|0,0,r|0)|0;f[p>>2]=q;t=q;v=o;break}else{t=0;v=0}while(0);s=a+152|0;o=f[s>>2]|0;q=f[o>>2]|0;r=o+4|0;if(!q){w=o+8|0;x=v;y=t}else{t=f[r>>2]|0;if((t|0)!=(q|0))f[r>>2]=t+(~((t+-4-q|0)>>>2)<<2);Oq(q);q=o+8|0;f[q>>2]=0;f[r>>2]=0;f[o>>2]=0;w=q;x=f[e>>2]|0;y=f[p>>2]|0}f[o>>2]=x;f[r>>2]=y;f[w>>2]=f[e+8>>2];w=f[b>>2]|0;y=b+4|0;r=f[y>>2]|0;x=f[y+4>>2]|0;y=f[c>>2]|0;o=c+4|0;p=f[o>>2]|0;q=f[o+4>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;o=e+8|0;t=e+4|0;v=e+16|0;l=e+20|0;i=r;Pc(e);j=f[t>>2]|0;h=(f[l>>2]|0)+(f[v>>2]|0)|0;if((f[o>>2]|0)==(j|0))z=0;else z=(f[j+(((h>>>0)/113|0)<<2)>>2]|0)+(((h>>>0)%113|0)*36|0)|0;f[z>>2]=w;h=z+4|0;f[h>>2]=r;f[h+4>>2]=x;f[z+12>>2]=y;h=z+16|0;f[h>>2]=p;f[h+4>>2]=q;f[z+24>>2]=0;f[z+28>>2]=y-w;f[z+32>>2]=0;z=(f[l>>2]|0)+1|0;f[l>>2]=z;if(z|0){w=a+128|0;y=a+60|0;h=a+56|0;j=a+48|0;m=a+52|0;n=a+44|0;A=b+8|0;B=c+8|0;C=a+12|0;D=a+100|0;E=a+96|0;F=a+88|0;G=a+92|0;H=a+84|0;I=i+4|0;J=i+24|0;K=i+24|0;L=p+24|0;M=z;while(1){z=f[v>>2]|0;N=M+-1|0;O=N+z|0;P=f[t>>2]|0;Q=f[P+(((O>>>0)/113|0)<<2)>>2]|0;R=(O>>>0)%113|0;O=f[Q+(R*36|0)>>2]|0;S=f[Q+(R*36|0)+12>>2]|0;T=f[Q+(R*36|0)+24>>2]|0;U=f[Q+(R*36|0)+32>>2]|0;f[l>>2]=N;N=f[o>>2]|0;R=N-P>>2;if((1-M-z+((R|0)==0?0:(R*113|0)+-1|0)|0)>>>0>225){Oq(f[N+-4>>2]|0);f[o>>2]=(f[o>>2]|0)+-4}f[b>>2]=O;f[c>>2]=S;N=f[k>>2]|0;R=((f[g>>2]|0)+-1|0)==(T|0)?0:T+1|0;T=(f[s>>2]|0)+(U*12|0)|0;z=S-O|0;P=(f[a>>2]|0)-(f[(f[T>>2]|0)+(R<<2)>>2]|0)|0;a:do if(P){if(z>>>0<3){Q=f[w>>2]|0;f[Q>>2]=R;V=f[g>>2]|0;if(V>>>0>1){W=1;Y=V;Z=R;while(1){Z=(Z|0)==(Y+-1|0)?0:Z+1|0;f[Q+(W<<2)>>2]=Z;W=W+1|0;$=f[g>>2]|0;if(W>>>0>=$>>>0){aa=$;break}else Y=$}}else aa=V;if(!z){ba=81;break}else{ca=0;da=aa}while(1){Y=(f[J>>2]|0)+((X(f[I>>2]|0,O+ca|0)|0)<<2)|0;if(!da)ea=0;else{W=0;do{Z=f[(f[w>>2]|0)+(W<<2)>>2]|0;Q=(f[a>>2]|0)-(f[(f[T>>2]|0)+(Z<<2)>>2]|0)|0;do if(Q|0){$=f[y>>2]|0;fa=32-$|0;ga=32-Q|0;ha=f[Y+(Z<<2)>>2]<(fa|0)){ia=ha>>>ga;ga=Q-fa|0;f[y>>2]=ga;fa=f[h>>2]|ia>>>ga;f[h>>2]=fa;ga=f[j>>2]|0;if((ga|0)==(f[m>>2]|0))Ri(n,h);else{f[ga>>2]=fa;f[j>>2]=ga+4}f[h>>2]=ia<<32-(f[y>>2]|0);break}ia=f[h>>2]|ha>>>$;f[h>>2]=ia;ha=$+Q|0;f[y>>2]=ha;if((ha|0)!=32)break;ha=f[j>>2]|0;if((ha|0)==(f[m>>2]|0))Ri(n,h);else{f[ha>>2]=ia;f[j>>2]=ha+4}f[h>>2]=0;f[y>>2]=0}while(0);W=W+1|0;Q=f[g>>2]|0}while(W>>>0>>0);ea=Q}ca=ca+1|0;if(ca>>>0>=z>>>0){ba=81;break a}else da=ea}}V=U+1|0;Ig(N+(V*12|0)|0,f[N+(U*12|0)>>2]|0,f[N+(U*12|0)+4>>2]|0);W=(f[(f[k>>2]|0)+(V*12|0)>>2]|0)+(R<<2)|0;Y=(f[W>>2]|0)+(1<>2]=Y;W=f[A>>2]|0;Q=f[B>>2]|0;b:do if((S|0)==(O|0))ja=O;else{Z=f[K>>2]|0;if(!W){if((f[Z+(R<<2)>>2]|0)>>>0>>0){ja=S;break}else{ka=S;la=O}while(1){ha=ka;do{ha=ha+-1|0;if((la|0)==(ha|0)){ja=la;break b}ia=(f[L>>2]|0)+((X(ha,Q)|0)<<2)+(R<<2)|0}while((f[ia>>2]|0)>>>0>=Y>>>0);la=la+1|0;if((la|0)==(ha|0)){ja=ha;break b}else ka=ha}}else{ma=S;na=O}while(1){ia=na;while(1){oa=Z+((X(ia,W)|0)<<2)|0;if((f[oa+(R<<2)>>2]|0)>>>0>=Y>>>0){pa=ma;break}$=ia+1|0;if(($|0)==(ma|0)){ja=ma;break b}else ia=$}while(1){pa=pa+-1|0;if((ia|0)==(pa|0)){ja=ia;break b}qa=(f[L>>2]|0)+((X(pa,Q)|0)<<2)|0;if((f[qa+(R<<2)>>2]|0)>>>0>>0){ra=0;break}}do{ha=oa+(ra<<2)|0;$=qa+(ra<<2)|0;ga=f[ha>>2]|0;f[ha>>2]=f[$>>2];f[$>>2]=ga;ra=ra+1|0}while((ra|0)!=(W|0));na=ia+1|0;if((na|0)==(pa|0)){ja=pa;break}else ma=pa}}while(0);Y=(_(z|0)|0)^31;Q=ja-O|0;Z=S-ja|0;ga=Q>>>0>>0;if((Q|0)!=(Z|0)){$=f[D>>2]|0;if(ga)f[E>>2]=f[E>>2]|1<<31-$;ha=$+1|0;f[D>>2]=ha;if((ha|0)==32){ha=f[F>>2]|0;if((ha|0)==(f[G>>2]|0))Ri(H,E);else{f[ha>>2]=f[E>>2];f[F>>2]=ha+4}f[D>>2]=0;f[E>>2]=0}}ha=z>>>1;if(ga)sg(C,Y,ha-Q|0);else sg(C,Y,ha-Z|0);ha=f[s>>2]|0;Y=f[ha+(U*12|0)>>2]|0;ga=Y+(R<<2)|0;f[ga>>2]=(f[ga>>2]|0)+1;Ig(ha+(V*12|0)|0,Y,f[ha+(U*12|0)+4>>2]|0);if((ja|0)!=(O|0)){ha=f[o>>2]|0;Y=f[t>>2]|0;ga=ha-Y>>2;$=f[v>>2]|0;fa=f[l>>2]|0;if((((ga|0)==0?0:(ga*113|0)+-1|0)|0)==(fa+$|0)){Pc(e);sa=f[v>>2]|0;ta=f[l>>2]|0;ua=f[o>>2]|0;va=f[t>>2]|0}else{sa=$;ta=fa;ua=ha;va=Y}Y=ta+sa|0;if((ua|0)==(va|0))wa=0;else wa=(f[va+(((Y>>>0)/113|0)<<2)>>2]|0)+(((Y>>>0)%113|0)*36|0)|0;f[wa>>2]=O;Y=wa+4|0;f[Y>>2]=r;f[Y+4>>2]=x;f[wa+12>>2]=ja;f[wa+16>>2]=i;f[wa+20>>2]=W;f[wa+24>>2]=R;f[wa+28>>2]=Q;f[wa+32>>2]=U;f[l>>2]=(f[l>>2]|0)+1}if((S|0)!=(ja|0)){Q=f[o>>2]|0;Y=f[t>>2]|0;ha=Q-Y>>2;fa=f[v>>2]|0;$=f[l>>2]|0;if((((ha|0)==0?0:(ha*113|0)+-1|0)|0)==($+fa|0)){Pc(e);xa=f[v>>2]|0;ya=f[l>>2]|0;za=f[o>>2]|0;Aa=f[t>>2]|0}else{xa=fa;ya=$;za=Q;Aa=Y}Y=ya+xa|0;if((za|0)==(Aa|0))Ba=0;else Ba=(f[Aa+(((Y>>>0)/113|0)<<2)>>2]|0)+(((Y>>>0)%113|0)*36|0)|0;f[Ba>>2]=ja;f[Ba+4>>2]=i;f[Ba+8>>2]=W;f[Ba+12>>2]=S;Y=Ba+16|0;f[Y>>2]=p;f[Y+4>>2]=q;f[Ba+24>>2]=R;f[Ba+28>>2]=Z;f[Ba+32>>2]=V;Z=(f[l>>2]|0)+1|0;f[l>>2]=Z;Ca=Z}else ba=81}else ba=81;while(0);if((ba|0)==81){ba=0;Ca=f[l>>2]|0}if(!Ca)break;else M=Ca}}Ca=f[t>>2]|0;M=f[v>>2]|0;Ba=Ca+(((M>>>0)/113|0)<<2)|0;q=f[o>>2]|0;p=q;i=Ca;if((q|0)==(Ca|0)){Da=0;Ea=0}else{ja=(f[Ba>>2]|0)+(((M>>>0)%113|0)*36|0)|0;Da=ja;Ea=ja}ja=Ba;Ba=Ea;c:while(1){Ea=Ba;do{M=Ea;if((Da|0)==(M|0))break c;Ea=M+36|0}while((Ea-(f[ja>>2]|0)|0)!=4068);Ea=ja+4|0;ja=Ea;Ba=f[Ea>>2]|0}f[l>>2]=0;l=p-i>>2;if(l>>>0>2){i=Ca;do{Oq(f[i>>2]|0);i=(f[t>>2]|0)+4|0;f[t>>2]=i;Fa=f[o>>2]|0;Ga=Fa-i>>2}while(Ga>>>0>2);Ha=Ga;Ia=i;Ja=Fa}else{Ha=l;Ia=Ca;Ja=q}switch(Ha|0){case 1:{Ka=56;ba=95;break}case 2:{Ka=113;ba=95;break}default:{}}if((ba|0)==95)f[v>>2]=Ka;if((Ia|0)!=(Ja|0)){Ka=Ia;do{Oq(f[Ka>>2]|0);Ka=Ka+4|0}while((Ka|0)!=(Ja|0));Ja=f[t>>2]|0;t=f[o>>2]|0;if((t|0)!=(Ja|0))f[o>>2]=t+(~((t+-4-Ja|0)>>>2)<<2)}Ja=f[e>>2]|0;if(!Ja){u=d;return}Oq(Ja);u=d;return}function mb(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=0,q=0,r=0,s=Oa,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Vn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;if(!(b[a+32>>0]|0)){r=o;m=0;while(1){s=$(b[r>>0]|0);n[g+(m<<2)>>2]=s;m=m+1|0;q=b[k>>0]|0;if((m|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){t=q;break}else r=r+1|0}}else{r=o;m=0;while(1){s=$($(b[r>>0]|0)/$(127.0));n[g+(m<<2)>>2]=s;m=m+1|0;q=b[k>>0]|0;if((m|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){t=q;break}else r=r+1|0}}}else t=l;r=t<<24>>24;if(t<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}case 2:{r=a+24|0;m=b[r>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){k=f[f[a>>2]>>2]|0;o=a+40|0;q=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;u=Vn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=k+u|0;if(!(b[a+32>>0]|0)){u=o;k=0;while(1){s=$(h[u>>0]|0);n[g+(k<<2)>>2]=s;k=k+1|0;q=b[r>>0]|0;if((k|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){v=q;break}else u=u+1|0}}else{u=o;k=0;while(1){s=$($(h[u>>0]|0)/$(255.0));n[g+(k<<2)>>2]=s;k=k+1|0;l=b[r>>0]|0;if((k|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){v=l;break}else u=u+1|0}}}else v=m;u=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(u<<2)|0,0,(e<<24>>24)-u<<2|0)|0;i=1;return i|0}case 3:{u=a+48|0;k=f[u>>2]|0;r=f[u+4>>2]|0;u=a+40|0;o=(Vn(un(f[u>>2]|0,f[u+4>>2]|0,f[c>>2]|0,0)|0,I|0,k|0,r|0)|0)+(f[f[a>>2]>>2]|0)|0;r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0)if(!(b[a+32>>0]|0)){u=o;l=0;while(1){s=$(d[u>>1]|0);n[g+(l<<2)>>2]=s;l=l+1|0;q=b[r>>0]|0;if((l|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){w=q;break}else u=u+2|0}}else{u=o;l=0;while(1){s=$($(d[u>>1]|0)/$(32767.0));n[g+(l<<2)>>2]=s;l=l+1|0;m=b[r>>0]|0;if((l|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else u=u+2|0}}else w=k;u=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(u<<2)|0,0,(e<<24>>24)-u<<2|0)|0;i=1;return i|0}case 4:{u=a+48|0;l=f[u>>2]|0;r=f[u+4>>2]|0;u=a+40|0;o=(Vn(un(f[u>>2]|0,f[u+4>>2]|0,f[c>>2]|0,0)|0,I|0,l|0,r|0)|0)+(f[f[a>>2]>>2]|0)|0;r=a+24|0;l=b[r>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0)if(!(b[a+32>>0]|0)){u=o;m=0;while(1){s=$(j[u>>1]|0);n[g+(m<<2)>>2]=s;m=m+1|0;q=b[r>>0]|0;if((m|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){x=q;break}else u=u+2|0}}else{u=o;m=0;while(1){s=$($(j[u>>1]|0)/$(65535.0));n[g+(m<<2)>>2]=s;m=m+1|0;k=b[r>>0]|0;if((m|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){x=k;break}else u=u+2|0}}else x=l;u=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(u<<2)|0,0,(e<<24>>24)-u<<2|0)|0;i=1;return i|0}case 5:{u=a+48|0;m=f[u>>2]|0;r=f[u+4>>2]|0;u=a+40|0;o=(Vn(un(f[u>>2]|0,f[u+4>>2]|0,f[c>>2]|0,0)|0,I|0,m|0,r|0)|0)+(f[f[a>>2]>>2]|0)|0;r=a+24|0;m=b[r>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0)if(!(b[a+32>>0]|0)){u=o;k=0;while(1){s=$(f[u>>2]|0);n[g+(k<<2)>>2]=s;k=k+1|0;q=b[r>>0]|0;if((k|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){y=q;break}else u=u+4|0}}else{u=o;k=0;while(1){s=$($(f[u>>2]|0)*$(4.65661287e-10));n[g+(k<<2)>>2]=s;k=k+1|0;l=b[r>>0]|0;if((k|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){y=l;break}else u=u+4|0}}else y=m;u=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(u<<2)|0,0,(e<<24>>24)-u<<2|0)|0;i=1;return i|0}case 6:{u=a+48|0;k=f[u>>2]|0;r=f[u+4>>2]|0;u=a+40|0;o=(Vn(un(f[u>>2]|0,f[u+4>>2]|0,f[c>>2]|0,0)|0,I|0,k|0,r|0)|0)+(f[f[a>>2]>>2]|0)|0;r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0)if(!(b[a+32>>0]|0)){u=o;l=0;while(1){s=$((f[u>>2]|0)>>>0);n[g+(l<<2)>>2]=s;l=l+1|0;q=b[r>>0]|0;if((l|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){z=q;break}else u=u+4|0}}else{u=o;l=0;while(1){s=$($((f[u>>2]|0)>>>0)*$(2.32830644e-10));n[g+(l<<2)>>2]=s;l=l+1|0;m=b[r>>0]|0;if((l|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){z=m;break}else u=u+4|0}}else z=k;u=z<<24>>24;if(z<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(u<<2)|0,0,(e<<24>>24)-u<<2|0)|0;i=1;return i|0}case 7:{u=a+48|0;l=f[u>>2]|0;r=f[u+4>>2]|0;u=a+40|0;o=(Vn(un(f[u>>2]|0,f[u+4>>2]|0,f[c>>2]|0,0)|0,I|0,l|0,r|0)|0)+(f[f[a>>2]>>2]|0)|0;r=a+24|0;l=b[r>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0)if(!(b[a+32>>0]|0)){u=o;m=0;while(1){q=u;s=$(+((f[q>>2]|0)>>>0)+4294967296.0*+(f[q+4>>2]|0));n[g+(m<<2)>>2]=s;m=m+1|0;q=b[r>>0]|0;if((m|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){A=q;break}else u=u+8|0}}else{u=o;m=0;while(1){k=u;s=$($(+((f[k>>2]|0)>>>0)+4294967296.0*+(f[k+4>>2]|0))*$(1.08420217e-19));n[g+(m<<2)>>2]=s;m=m+1|0;k=b[r>>0]|0;if((m|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){A=k;break}else u=u+8|0}}else A=l;u=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(u<<2)|0,0,(e<<24>>24)-u<<2|0)|0;i=1;return i|0}case 8:{u=a+48|0;m=f[u>>2]|0;r=f[u+4>>2]|0;u=a+40|0;o=(Vn(un(f[u>>2]|0,f[u+4>>2]|0,f[c>>2]|0,0)|0,I|0,m|0,r|0)|0)+(f[f[a>>2]>>2]|0)|0;r=a+24|0;m=b[r>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0)if(!(b[a+32>>0]|0)){u=o;k=0;while(1){q=u;s=$(+((f[q>>2]|0)>>>0)+4294967296.0*+((f[q+4>>2]|0)>>>0));n[g+(k<<2)>>2]=s;k=k+1|0;q=b[r>>0]|0;if((k|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){B=q;break}else u=u+8|0}}else{u=o;k=0;while(1){l=u;s=$($(+((f[l>>2]|0)>>>0)+4294967296.0*+((f[l+4>>2]|0)>>>0))*$(5.42101086e-20));n[g+(k<<2)>>2]=s;k=k+1|0;l=b[r>>0]|0;if((k|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){B=l;break}else u=u+8|0}}else B=m;u=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(u<<2)|0,0,(e<<24>>24)-u<<2|0)|0;i=1;return i|0}case 9:{u=a+24|0;k=b[u>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){r=f[f[a>>2]>>2]|0;o=a+40|0;l=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;q=Vn(l|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=r+q|0;q=0;while(1){f[g+(q<<2)>>2]=f[o>>2];q=q+1|0;r=b[u>>0]|0;if((q|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){C=r;break}else o=o+4|0}}else C=k;o=C<<24>>24;if(C<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 10:{o=a+24|0;q=b[o>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){u=f[f[a>>2]>>2]|0;m=a+40|0;r=un(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;l=Vn(r|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=u+l|0;l=0;while(1){s=$(+p[m>>3]);n[g+(l<<2)>>2]=s;l=l+1|0;u=b[o>>0]|0;if((l|0)>=((u<<24>>24>e<<24>>24?e:u)<<24>>24|0)){D=u;break}else m=m+8|0}}else D=q;m=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 11:{m=a+24|0;l=b[m>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){o=f[f[a>>2]>>2]|0;k=a+40|0;u=un(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;r=Vn(u|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=o+r|0;r=0;while(1){s=$((b[k>>0]|0)!=0&1);n[g+(r<<2)>>2]=s;r=r+1|0;o=b[m>>0]|0;if((r|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){E=o;break}else k=k+1|0}}else E=l;k=E<<24>>24;if(E<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(k<<2)|0,0,(e<<24>>24)-k<<2|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function nb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=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,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,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0.0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0.0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0.0,kb=0.0,lb=0.0,mb=0.0,nb=0.0,ob=0.0,pb=0.0,qb=0.0,rb=0.0,sb=0.0,tb=0;i=u;u=u+512|0;j=i;k=d+c|0;l=0-k|0;m=a+4|0;n=a+100|0;o=b;b=0;a:while(1){switch(o|0){case 46:{p=6;break a;break}case 48:break;default:{q=0;r=o;s=b;t=0;v=0;break a}}w=f[m>>2]|0;if(w>>>0<(f[n>>2]|0)>>>0){f[m>>2]=w+1;o=h[w>>0]|0;b=1;continue}else{o=Si(a)|0;b=1;continue}}if((p|0)==6){o=f[m>>2]|0;if(o>>>0<(f[n>>2]|0)>>>0){f[m>>2]=o+1;x=h[o>>0]|0}else x=Si(a)|0;if((x|0)==48){o=0;w=0;while(1){y=Vn(o|0,w|0,-1,-1)|0;z=I;A=f[m>>2]|0;if(A>>>0<(f[n>>2]|0)>>>0){f[m>>2]=A+1;B=h[A>>0]|0}else B=Si(a)|0;if((B|0)==48){o=y;w=z}else{q=1;r=B;s=1;t=y;v=z;break}}}else{q=1;r=x;s=b;t=0;v=0}}f[j>>2]=0;b=r+-48|0;x=(r|0)==46;b:do if(x|b>>>0<10){B=j+496|0;w=0;o=0;z=0;y=q;A=s;C=r;D=x;E=b;F=t;G=v;H=0;J=0;c:while(1){do if(D)if(!y){L=w;M=o;N=1;O=z;P=A;Q=H;R=J;S=H;T=J}else break c;else{U=Vn(H|0,J|0,1,0)|0;V=I;W=(C|0)!=48;if((o|0)>=125){if(!W){L=w;M=o;N=y;O=z;P=A;Q=F;R=G;S=U;T=V;break}f[B>>2]=f[B>>2]|1;L=w;M=o;N=y;O=z;P=A;Q=F;R=G;S=U;T=V;break}Y=j+(o<<2)|0;if(!w)Z=E;else Z=C+-48+((f[Y>>2]|0)*10|0)|0;f[Y>>2]=Z;Y=w+1|0;_=(Y|0)==9;L=_?0:Y;M=o+(_&1)|0;N=y;O=W?U:z;P=1;Q=F;R=G;S=U;T=V}while(0);V=f[m>>2]|0;if(V>>>0<(f[n>>2]|0)>>>0){f[m>>2]=V+1;$=h[V>>0]|0}else $=Si(a)|0;E=$+-48|0;D=($|0)==46;if(!(D|E>>>0<10)){aa=L;ba=M;ca=O;da=N;ea=$;fa=P;ga=S;ha=Q;ia=T;ja=R;p=29;break b}else{w=L;o=M;z=O;y=N;A=P;C=$;F=Q;G=R;H=S;J=T}}ka=w;la=o;ma=z;na=H;oa=J;pa=F;qa=G;ra=(A|0)!=0;p=37}else{aa=0;ba=0;ca=0;da=q;ea=r;fa=s;ga=0;ha=t;ia=0;ja=v;p=29}while(0);do if((p|0)==29){v=(da|0)==0;t=v?ga:ha;s=v?ia:ja;v=(fa|0)!=0;if(!(v&(ea|32|0)==101))if((ea|0)>-1){ka=aa;la=ba;ma=ca;na=ga;oa=ia;pa=t;qa=s;ra=v;p=37;break}else{sa=aa;ta=ba;ua=ca;va=ga;wa=ia;xa=v;ya=t;za=s;p=39;break}v=Re(a,g)|0;r=I;if((v|0)==0&(r|0)==-2147483648){if(!g){Ym(a,0);Aa=0.0;break}if(!(f[n>>2]|0)){Ba=0;Ca=0}else{f[m>>2]=(f[m>>2]|0)+-1;Ba=0;Ca=0}}else{Ba=v;Ca=r}r=Vn(Ba|0,Ca|0,t|0,s|0)|0;Da=aa;Ea=ba;Fa=ca;Ga=r;Ha=ga;Ia=I;Ja=ia;p=41}while(0);if((p|0)==37)if(f[n>>2]|0){f[m>>2]=(f[m>>2]|0)+-1;if(ra){Da=ka;Ea=la;Fa=ma;Ga=pa;Ha=na;Ia=qa;Ja=oa;p=41}else p=40}else{sa=ka;ta=la;ua=ma;va=na;wa=oa;xa=ra;ya=pa;za=qa;p=39}if((p|0)==39)if(xa){Da=sa;Ea=ta;Fa=ua;Ga=ya;Ha=va;Ia=za;Ja=wa;p=41}else p=40;do if((p|0)==40){wa=Vq()|0;f[wa>>2]=22;Ym(a,0);Aa=0.0}else if((p|0)==41){wa=f[j>>2]|0;if(!wa){Aa=+(e|0)*0.0;break}if(((Ja|0)<0|(Ja|0)==0&Ha>>>0<10)&((Ga|0)==(Ha|0)&(Ia|0)==(Ja|0))?(c|0)>30|(wa>>>c|0)==0:0){Aa=+(e|0)*+(wa>>>0);break}wa=(d|0)/-2|0;za=((wa|0)<0)<<31>>31;if((Ia|0)>(za|0)|(Ia|0)==(za|0)&Ga>>>0>wa>>>0){wa=Vq()|0;f[wa>>2]=34;Aa=+(e|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}wa=d+-106|0;za=((wa|0)<0)<<31>>31;if((Ia|0)<(za|0)|(Ia|0)==(za|0)&Ga>>>0>>0){wa=Vq()|0;f[wa>>2]=34;Aa=+(e|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(!Da)Ka=Ea;else{if((Da|0)<9){wa=j+(Ea<<2)|0;za=Da;va=f[wa>>2]|0;while(1){va=va*10|0;if((za|0)>=8)break;else za=za+1|0}f[wa>>2]=va}Ka=Ea+1|0}if((Fa|0)<9?(Fa|0)<=(Ga|0)&(Ga|0)<18:0){if((Ga|0)==9){Aa=+(e|0)*+((f[j>>2]|0)>>>0);break}if((Ga|0)<9){Aa=+(e|0)*+((f[j>>2]|0)>>>0)/+(f[6720+(8-Ga<<2)>>2]|0);break}za=c+27+(X(Ga,-3)|0)|0;A=f[j>>2]|0;if((za|0)>30|(A>>>za|0)==0){Aa=+(e|0)*+(A>>>0)*+(f[6720+(Ga+-10<<2)>>2]|0);break}}A=(Ga|0)%9|0;if(!A){La=0;Ma=Ka;Na=0;Oa=Ga}else{za=(Ga|0)>-1?A:A+9|0;A=f[6720+(8-za<<2)>>2]|0;if(Ka){G=1e9/(A|0)|0;F=0;J=0;H=Ga;z=0;do{o=j+(z<<2)|0;w=f[o>>2]|0;ya=((w>>>0)/(A>>>0)|0)+F|0;f[o>>2]=ya;F=X(G,(w>>>0)%(A>>>0)|0)|0;w=(z|0)==(J|0)&(ya|0)==0;H=w?H+-9|0:H;J=w?J+1&127:J;z=z+1|0}while((z|0)!=(Ka|0));if(!F){Pa=J;Qa=Ka;Ra=H}else{f[j+(Ka<<2)>>2]=F;Pa=J;Qa=Ka+1|0;Ra=H}}else{Pa=0;Qa=0;Ra=Ga}La=0;Ma=Qa;Na=Pa;Oa=9-za+Ra|0}d:while(1){z=(Oa|0)<18;A=(Oa|0)==18;G=j+(Na<<2)|0;va=La;wa=Ma;while(1){if(!z){if(!A){Sa=va;Ta=Na;Ua=Oa;Va=wa;break d}if((f[G>>2]|0)>>>0>=9007199){Sa=va;Ta=Na;Ua=18;Va=wa;break d}}w=0;Wa=wa;ya=wa+127|0;while(1){o=ya&127;ua=j+(o<<2)|0;ta=Tn(f[ua>>2]|0,0,29)|0;sa=Vn(ta|0,I|0,w|0,0)|0;ta=I;if(ta>>>0>0|(ta|0)==0&sa>>>0>1e9){xa=jp(sa|0,ta|0,1e9,0)|0;qa=hn(sa|0,ta|0,1e9,0)|0;Xa=xa;Ya=qa}else{Xa=0;Ya=sa}f[ua>>2]=Ya;ua=(o|0)==(Na|0);Wa=(Ya|0)==0&(((o|0)!=(Wa+127&127|0)|ua)^1)?o:Wa;if(ua)break;else{w=Xa;ya=o+-1|0}}va=va+-29|0;if(Xa|0)break;else wa=Wa}wa=Na+127&127;G=Wa+127&127;A=j+((Wa+126&127)<<2)|0;if((wa|0)==(Wa|0)){f[A>>2]=f[A>>2]|f[j+(G<<2)>>2];Za=G}else Za=Wa;f[j+(wa<<2)>>2]=Xa;La=va;Ma=Za;Na=wa;Oa=Oa+9|0}e:while(1){za=Va+1&127;H=j+((Va+127&127)<<2)|0;J=Sa;F=Ta;wa=Ua;while(1){G=(wa|0)==18;A=(wa|0)>27?9:1;_a=J;$a=F;while(1){z=0;while(1){ya=z+$a&127;if((ya|0)==(Va|0)){ab=2;p=88;break}w=f[j+(ya<<2)>>2]|0;ya=f[6752+(z<<2)>>2]|0;if(w>>>0>>0){ab=2;p=88;break}if(w>>>0>ya>>>0)break;ya=z+1|0;if((z|0)<1)z=ya;else{ab=ya;p=88;break}}if((p|0)==88?(p=0,G&(ab|0)==2):0){bb=0.0;cb=0;db=Va;break e}eb=A+_a|0;if(($a|0)==(Va|0)){_a=eb;$a=Va}else break}G=(1<>>A;fb=0;gb=$a;hb=wa;ya=$a;do{w=j+(ya<<2)|0;o=f[w>>2]|0;ua=(o>>>A)+fb|0;f[w>>2]=ua;fb=X(o&G,z)|0;o=(ya|0)==(gb|0)&(ua|0)==0;hb=o?hb+-9|0:hb;gb=o?gb+1&127:gb;ya=ya+1&127}while((ya|0)!=(Va|0));if(!fb){J=eb;F=gb;wa=hb;continue}if((za|0)!=(gb|0))break;f[H>>2]=f[H>>2]|1;J=eb;F=gb;wa=hb}f[j+(Va<<2)>>2]=fb;Sa=eb;Ta=gb;Ua=hb;Va=za}while(1){wa=cb+$a&127;F=db+1&127;if((wa|0)==(db|0)){f[j+(F+-1<<2)>>2]=0;ib=F}else ib=db;bb=bb*1.0e9+ +((f[j+(wa<<2)>>2]|0)>>>0);cb=cb+1|0;if((cb|0)==2)break;else db=ib}jb=+(e|0);kb=bb*jb;wa=_a+53|0;F=wa-d|0;J=(F|0)<(c|0);H=J?((F|0)>0?F:0):c;if((H|0)<53){lb=+rq(+bk(1.0,105-H|0),kb);mb=+Dq(kb,+bk(1.0,53-H|0));nb=lb;ob=mb;pb=lb+(kb-mb)}else{nb=0.0;ob=0.0;pb=kb}va=$a+2&127;if((va|0)!=(ib|0)){ya=f[j+(va<<2)>>2]|0;do if(ya>>>0>=5e8){if((ya|0)!=5e8){qb=jb*.75+ob;break}if(($a+3&127|0)==(ib|0)){qb=jb*.5+ob;break}else{qb=jb*.75+ob;break}}else{if((ya|0)==0?($a+3&127|0)==(ib|0):0){qb=ob;break}qb=jb*.25+ob}while(0);if((53-H|0)>1?!(+Dq(qb,1.0)!=0.0):0)rb=qb+1.0;else rb=qb}else rb=ob;jb=pb+rb-nb;do if((wa&2147483647|0)>(-2-k|0)){ya=!(+K(+jb)>=9007199254740992.0);va=_a+((ya^1)&1)|0;kb=ya?jb:jb*.5;if((va+50|0)<=(l|0)?!(rb!=0.0&(J&((H|0)!=(F|0)|ya))):0){sb=kb;tb=va;break}ya=Vq()|0;f[ya>>2]=34;sb=kb;tb=va}else{sb=jb;tb=_a}while(0);Aa=+sq(sb,tb)}while(0);u=i;return +Aa}function ob(a,c,d,e,g,i){a=a|0;c=+c;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0,D=0.0,E=0,F=0,G=0,H=0.0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0.0,ga=0.0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0;j=u;u=u+560|0;k=j+8|0;l=j;m=j+524|0;n=m;o=j+512|0;f[l>>2]=0;p=o+12|0;yo(c)|0;if((I|0)<0){q=-c;r=1;s=16605}else{q=c;r=(g&2049|0)!=0&1;s=(g&2048|0)==0?((g&1|0)==0?16606:16611):16608}yo(q)|0;do if(0==0&(I&2146435072|0)==2146435072){t=(i&32|0)!=0;v=r+3|0;Qk(a,32,d,v,g&-65537);Xo(a,s,r);Xo(a,q!=q|0.0!=0.0?(t?18555:16632):t?16624:16628,3);Qk(a,32,d,v,g^8192);w=v}else{c=+tq(q,l)*2.0;v=c!=0.0;if(v)f[l>>2]=(f[l>>2]|0)+-1;t=i|32;if((t|0)==97){x=i&32;y=(x|0)==0?s:s+9|0;z=r|2;A=12-e|0;do if(!(e>>>0>11|(A|0)==0)){B=8.0;C=A;do{C=C+-1|0;B=B*16.0}while((C|0)!=0);if((b[y>>0]|0)==45){D=-(B+(-c-B));break}else{D=c+B-B;break}}else D=c;while(0);A=f[l>>2]|0;C=(A|0)<0?0-A|0:A;E=Rj(C,((C|0)<0)<<31>>31,p)|0;if((E|0)==(p|0)){C=o+11|0;b[C>>0]=48;F=C}else F=E;b[F+-1>>0]=(A>>31&2)+43;A=F+-2|0;b[A>>0]=i+15;E=(e|0)<1;C=(g&8|0)==0;G=m;H=D;while(1){J=~~H;K=G+1|0;b[G>>0]=x|h[16636+J>>0];H=(H-+(J|0))*16.0;if((K-n|0)==1?!(C&(E&H==0.0)):0){b[K>>0]=46;L=G+2|0}else L=K;if(!(H!=0.0))break;else G=L}G=L;if((e|0)!=0?(-2-n+G|0)<(e|0):0){M=G-n|0;N=e+2|0}else{E=G-n|0;M=E;N=E}E=p-A|0;G=E+z+N|0;Qk(a,32,d,G,g);Xo(a,y,z);Qk(a,48,d,G,g^65536);Xo(a,m,M);Qk(a,48,N-M|0,0,0);Xo(a,A,E);Qk(a,32,d,G,g^8192);w=G;break}G=(e|0)<0?6:e;if(v){E=(f[l>>2]|0)+-28|0;f[l>>2]=E;O=c*268435456.0;P=E}else{O=c;P=f[l>>2]|0}E=(P|0)<0?k:k+288|0;C=E;H=O;do{x=~~H>>>0;f[C>>2]=x;C=C+4|0;H=(H-+(x>>>0))*1.0e9}while(H!=0.0);if((P|0)>0){v=E;A=C;z=P;while(1){y=(z|0)<29?z:29;x=A+-4|0;if(x>>>0>=v>>>0){K=x;x=0;do{J=Tn(f[K>>2]|0,0,y|0)|0;Q=Vn(J|0,I|0,x|0,0)|0;J=I;R=hn(Q|0,J|0,1e9,0)|0;f[K>>2]=R;x=jp(Q|0,J|0,1e9,0)|0;K=K+-4|0}while(K>>>0>=v>>>0);if(x){K=v+-4|0;f[K>>2]=x;S=K}else S=v}else S=v;K=A;while(1){if(K>>>0<=S>>>0)break;J=K+-4|0;if(!(f[J>>2]|0))K=J;else break}x=(f[l>>2]|0)-y|0;f[l>>2]=x;if((x|0)>0){v=S;A=K;z=x}else{T=S;U=K;V=x;break}}}else{T=E;U=C;V=P}if((V|0)<0){z=((G+25|0)/9|0)+1|0;A=(t|0)==102;v=T;x=U;J=V;while(1){Q=0-J|0;R=(Q|0)<9?Q:9;if(v>>>0>>0){Q=(1<>>R;Y=0;Z=v;do{_=f[Z>>2]|0;f[Z>>2]=(_>>>R)+Y;Y=X(_&Q,W)|0;Z=Z+4|0}while(Z>>>0>>0);Z=(f[v>>2]|0)==0?v+4|0:v;if(!Y){$=Z;aa=x}else{f[x>>2]=Y;$=Z;aa=x+4|0}}else{$=(f[v>>2]|0)==0?v+4|0:v;aa=x}Z=A?E:$;W=(aa-Z>>2|0)>(z|0)?Z+(z<<2)|0:aa;J=(f[l>>2]|0)+R|0;f[l>>2]=J;if((J|0)>=0){ba=$;ca=W;break}else{v=$;x=W}}}else{ba=T;ca=U}x=E;if(ba>>>0>>0){v=(x-ba>>2)*9|0;J=f[ba>>2]|0;if(J>>>0<10)da=v;else{z=v;v=10;while(1){v=v*10|0;A=z+1|0;if(J>>>0>>0){da=A;break}else z=A}}}else da=0;z=(t|0)==103;v=(G|0)!=0;J=G-((t|0)!=102?da:0)+((v&z)<<31>>31)|0;if((J|0)<(((ca-x>>2)*9|0)+-9|0)){A=J+9216|0;J=E+4+(((A|0)/9|0)+-1024<<2)|0;C=(A|0)%9|0;if((C|0)<8){A=C;C=10;while(1){W=C*10|0;if((A|0)<7){A=A+1|0;C=W}else{ea=W;break}}}else ea=10;C=f[J>>2]|0;A=(C>>>0)%(ea>>>0)|0;t=(J+4|0)==(ca|0);if(!(t&(A|0)==0)){B=(((C>>>0)/(ea>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;W=(ea|0)/2|0;H=A>>>0>>0?.5:t&(A|0)==(W|0)?1.0:1.5;if(!r){fa=H;ga=B}else{W=(b[s>>0]|0)==45;fa=W?-H:H;ga=W?-B:B}W=C-A|0;f[J>>2]=W;if(ga+fa!=ga){A=W+ea|0;f[J>>2]=A;if(A>>>0>999999999){A=ba;W=J;while(1){C=W+-4|0;f[W>>2]=0;if(C>>>0>>0){t=A+-4|0;f[t>>2]=0;ha=t}else ha=A;t=(f[C>>2]|0)+1|0;f[C>>2]=t;if(t>>>0>999999999){A=ha;W=C}else{ia=ha;ja=C;break}}}else{ia=ba;ja=J}W=(x-ia>>2)*9|0;A=f[ia>>2]|0;if(A>>>0<10){ka=ja;la=W;ma=ia}else{C=W;W=10;while(1){W=W*10|0;t=C+1|0;if(A>>>0>>0){ka=ja;la=t;ma=ia;break}else C=t}}}else{ka=J;la=da;ma=ba}}else{ka=J;la=da;ma=ba}C=ka+4|0;na=la;oa=ca>>>0>C>>>0?C:ca;pa=ma}else{na=da;oa=ca;pa=ba}C=oa;while(1){if(C>>>0<=pa>>>0){qa=0;break}W=C+-4|0;if(!(f[W>>2]|0))C=W;else{qa=1;break}}J=0-na|0;do if(z){W=G+((v^1)&1)|0;if((W|0)>(na|0)&(na|0)>-5){ra=i+-1|0;sa=W+-1-na|0}else{ra=i+-2|0;sa=W+-1|0}W=g&8;if(!W){if(qa?(A=f[C+-4>>2]|0,(A|0)!=0):0)if(!((A>>>0)%10|0)){t=0;Z=10;while(1){Z=Z*10|0;Q=t+1|0;if((A>>>0)%(Z>>>0)|0|0){ta=Q;break}else t=Q}}else ta=0;else ta=9;t=((C-x>>2)*9|0)+-9|0;if((ra|32|0)==102){Z=t-ta|0;A=(Z|0)>0?Z:0;ua=ra;va=(sa|0)<(A|0)?sa:A;wa=0;break}else{A=t+na-ta|0;t=(A|0)>0?A:0;ua=ra;va=(sa|0)<(t|0)?sa:t;wa=0;break}}else{ua=ra;va=sa;wa=W}}else{ua=i;va=G;wa=g&8}while(0);G=va|wa;x=(G|0)!=0&1;v=(ua|32|0)==102;if(v){xa=0;ya=(na|0)>0?na:0}else{z=(na|0)<0?J:na;t=Rj(z,((z|0)<0)<<31>>31,p)|0;z=p;if((z-t|0)<2){A=t;while(1){Z=A+-1|0;b[Z>>0]=48;if((z-Z|0)<2)A=Z;else{za=Z;break}}}else za=t;b[za+-1>>0]=(na>>31&2)+43;A=za+-2|0;b[A>>0]=ua;xa=A;ya=z-A|0}A=r+1+va+x+ya|0;Qk(a,32,d,A,g);Xo(a,s,r);Qk(a,48,d,A,g^65536);if(v){J=pa>>>0>E>>>0?E:pa;Z=m+9|0;R=Z;Y=m+8|0;Q=J;do{K=Rj(f[Q>>2]|0,0,Z)|0;if((Q|0)==(J|0))if((K|0)==(Z|0)){b[Y>>0]=48;Aa=Y}else Aa=K;else if(K>>>0>m>>>0){sj(m|0,48,K-n|0)|0;y=K;while(1){_=y+-1|0;if(_>>>0>m>>>0)y=_;else{Aa=_;break}}}else Aa=K;Xo(a,Aa,R-Aa|0);Q=Q+4|0}while(Q>>>0<=E>>>0);if(G|0)Xo(a,16652,1);if(Q>>>0>>0&(va|0)>0){E=va;R=Q;while(1){Y=Rj(f[R>>2]|0,0,Z)|0;if(Y>>>0>m>>>0){sj(m|0,48,Y-n|0)|0;J=Y;while(1){v=J+-1|0;if(v>>>0>m>>>0)J=v;else{Ba=v;break}}}else Ba=Y;Xo(a,Ba,(E|0)<9?E:9);R=R+4|0;J=E+-9|0;if(!(R>>>0>>0&(E|0)>9)){Ca=J;break}else E=J}}else Ca=va;Qk(a,48,Ca+9|0,9,0)}else{E=qa?C:pa+4|0;if((va|0)>-1){R=m+9|0;Z=(wa|0)==0;Q=R;G=0-n|0;J=m+8|0;K=va;v=pa;while(1){x=Rj(f[v>>2]|0,0,R)|0;if((x|0)==(R|0)){b[J>>0]=48;Da=J}else Da=x;do if((v|0)==(pa|0)){x=Da+1|0;Xo(a,Da,1);if(Z&(K|0)<1){Ea=x;break}Xo(a,16652,1);Ea=x}else{if(Da>>>0<=m>>>0){Ea=Da;break}sj(m|0,48,Da+G|0)|0;x=Da;while(1){z=x+-1|0;if(z>>>0>m>>>0)x=z;else{Ea=z;break}}}while(0);Y=Q-Ea|0;Xo(a,Ea,(K|0)>(Y|0)?Y:K);x=K-Y|0;v=v+4|0;if(!(v>>>0>>0&(x|0)>-1)){Fa=x;break}else K=x}}else Fa=va;Qk(a,48,Fa+18|0,18,0);Xo(a,xa,p-xa|0)}Qk(a,32,d,A,g^8192);w=A}while(0);u=j;return ((w|0)<(d|0)?d:w)|0}function pb(a){a=a|0;var c=0,d=0,e=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,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,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;c=u;u=u+64|0;d=c+56|0;e=c+52|0;g=c+48|0;h=c+60|0;i=c;j=c+44|0;k=c+40|0;l=c+36|0;m=c+32|0;n=c+28|0;o=c+24|0;p=c+20|0;q=c+16|0;r=c+12|0;if(!(b[a+288>>0]|0)){_e(d,f[a+8>>2]|0);s=a+12|0;t=f[d>>2]|0;f[d>>2]=0;v=f[s>>2]|0;f[s>>2]=t;if(v){Ii(v);Oq(v);v=f[d>>2]|0;f[d>>2]=0;if(v|0){Ii(v);Oq(v)}}else f[d>>2]=0}else{fh(d,f[a+8>>2]|0);v=a+12|0;t=f[d>>2]|0;f[d>>2]=0;s=f[v>>2]|0;f[v>>2]=t;if(s){Ii(s);Oq(s);s=f[d>>2]|0;f[d>>2]=0;if(s|0){Ii(s);Oq(s)}}else f[d>>2]=0}s=a+12|0;t=f[s>>2]|0;if(!t){w=0;u=c;return w|0}if((((f[t+4>>2]|0)-(f[t>>2]|0)>>2>>>0)/3|0|0)==(f[t+40>>2]|0)){w=0;u=c;return w|0}v=a+200|0;f[a+264>>2]=a;x=a+4|0;ci(((f[t+28>>2]|0)-(f[t+24>>2]|0)>>2)-(f[t+44>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;t=f[s>>2]|0;ci((((f[t+4>>2]|0)-(f[t>>2]|0)>>2>>>0)/3|0)-(f[t+40>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;t=a+28|0;y=a+8|0;z=f[y>>2]|0;A=((f[z+100>>2]|0)-(f[z+96>>2]|0)|0)/12|0;b[d>>0]=0;qh(t,A,d);A=f[s>>2]|0;z=(f[A+28>>2]|0)-(f[A+24>>2]|0)>>2;f[d>>2]=-1;hg(a+52|0,z,d);z=a+40|0;A=f[z>>2]|0;B=a+44|0;C=f[B>>2]|0;if((C|0)!=(A|0))f[B>>2]=C+(~((C+-4-A|0)>>>2)<<2);A=f[s>>2]|0;C=(f[A+4>>2]|0)-(f[A>>2]|0)>>2;gk(z,C-((C>>>0)%3|0)|0);C=a+84|0;z=f[s>>2]|0;A=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2;b[d>>0]=0;qh(C,A,d);A=a+96|0;z=f[A>>2]|0;B=a+100|0;D=f[B>>2]|0;if((D|0)!=(z|0))f[B>>2]=D+(~((D+-4-z|0)>>>2)<<2);f[a+164>>2]=-1;z=a+168|0;f[z>>2]=0;D=f[a+108>>2]|0;E=a+112|0;F=f[E>>2]|0;if((F|0)!=(D|0))f[E>>2]=F+(~(((F+-12-D|0)>>>0)/12|0)*12|0);D=a+132|0;if(f[D>>2]|0){F=a+128|0;E=f[F>>2]|0;if(E|0){G=E;do{E=G;G=f[G>>2]|0;Oq(E)}while((G|0)!=0)}f[F>>2]=0;F=f[a+124>>2]|0;if(F|0){G=a+120|0;E=0;do{f[(f[G>>2]|0)+(E<<2)>>2]=0;E=E+1|0}while((E|0)!=(F|0))}f[D>>2]=0}f[a+144>>2]=0;D=f[s>>2]|0;F=(f[D+28>>2]|0)-(f[D+24>>2]|0)>>2;f[d>>2]=-1;hg(a+152|0,F,d);F=a+72|0;D=f[F>>2]|0;E=a+76|0;G=f[E>>2]|0;if((G|0)!=(D|0))f[E>>2]=G+(~((G+-4-D|0)>>>2)<<2);D=f[s>>2]|0;gk(F,((f[D+4>>2]|0)-(f[D>>2]|0)>>2>>>0)/3|0);f[a+64>>2]=0;if(!(Be(a)|0)){w=0;u=c;return w|0}if(!(Hg(a)|0)){w=0;u=c;return w|0}D=a+172|0;G=a+176|0;H=(((f[G>>2]|0)-(f[D>>2]|0)|0)/136|0)&255;b[h>>0]=H;I=f[(f[x>>2]|0)+44>>2]|0;J=I+16|0;K=f[J+4>>2]|0;if((K|0)>0|(K|0)==0&(f[J>>2]|0)>>>0>0)L=H;else{f[e>>2]=f[I+4>>2];f[d>>2]=f[e>>2];Me(I,d,h,h+1|0)|0;L=b[h>>0]|0}h=a+284|0;f[h>>2]=L&255;L=f[s>>2]|0;I=(f[L+4>>2]|0)-(f[L>>2]|0)|0;L=I>>2;dj(v);f[i>>2]=0;H=i+4|0;f[H>>2]=0;f[i+8>>2]=0;a:do if((I|0)>0){J=a+104|0;K=i+8|0;M=0;b:while(1){N=(M>>>0)/3|0;O=N>>>5;P=1<<(N&31);if((f[(f[t>>2]|0)+(O<<2)>>2]&P|0)==0?(Q=f[s>>2]|0,f[j>>2]=N,f[d>>2]=f[j>>2],!(_j(Q,d)|0)):0){f[e>>2]=0;f[k>>2]=N;f[d>>2]=f[k>>2];N=xg(a,d,e)|0;fj(v,N);Q=f[e>>2]|0;R=(Q|0)==-1;do if(N){do if(R){S=-1;T=-1;U=-1}else{V=f[f[s>>2]>>2]|0;W=f[V+(Q<<2)>>2]|0;X=Q+1|0;Y=((X>>>0)%3|0|0)==0?Q+-2|0:X;if((Y|0)==-1)Z=-1;else Z=f[V+(Y<<2)>>2]|0;Y=(((Q>>>0)%3|0|0)==0?2:-1)+Q|0;if((Y|0)==-1){S=W;T=-1;U=Z;break}S=W;T=f[V+(Y<<2)>>2]|0;U=Z}while(0);Y=f[C>>2]|0;V=Y+(S>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(S&31);V=Y+(U>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(U&31);V=Y+(T>>>5<<2)|0;f[V>>2]=f[V>>2]|1<<(T&31);f[d>>2]=1;V=f[B>>2]|0;if(V>>>0<(f[J>>2]|0)>>>0){f[V>>2]=1;f[B>>2]=V+4}else Ri(A,d);V=(f[t>>2]|0)+(O<<2)|0;f[V>>2]=f[V>>2]|P;V=Q+1|0;if(R)_=-1;else _=((V>>>0)%3|0|0)==0?Q+-2|0:V;f[d>>2]=_;Y=f[H>>2]|0;if(Y>>>0<(f[K>>2]|0)>>>0){f[Y>>2]=_;f[H>>2]=Y+4}else Ri(i,d);if(R)break;Y=((V>>>0)%3|0|0)==0?Q+-2|0:V;if((Y|0)==-1)break;V=f[(f[(f[s>>2]|0)+12>>2]|0)+(Y<<2)>>2]|0;Y=(V|0)==-1;W=Y?-1:(V>>>0)/3|0;if(Y)break;if(f[(f[t>>2]|0)+(W>>>5<<2)>>2]&1<<(W&31)|0)break;f[l>>2]=V;f[d>>2]=f[l>>2];if(!(kc(a,d)|0))break b}else{V=Q+1|0;if(R)$=-1;else $=((V>>>0)%3|0|0)==0?Q+-2|0:V;f[m>>2]=$;f[d>>2]=f[m>>2];Pe(a,d,1)|0;f[n>>2]=f[e>>2];f[d>>2]=f[n>>2];if(!(kc(a,d)|0))break b}while(0)}M=M+1|0;if((M|0)>=(L|0)){aa=62;break a}}ba=0}else aa=62;while(0);if((aa|0)==62){aa=f[F>>2]|0;L=f[E>>2]|0;n=L;if((aa|0)!=(L|0)?(m=L+-4|0,aa>>>0>>0):0){L=aa;aa=m;do{m=f[L>>2]|0;f[L>>2]=f[aa>>2];f[aa>>2]=m;L=L+4|0;aa=aa+-4|0}while(L>>>0>>0)}f[o>>2]=n;f[p>>2]=f[i>>2];f[q>>2]=f[H>>2];f[g>>2]=f[o>>2];f[e>>2]=f[p>>2];f[d>>2]=f[q>>2];Yd(F,g,e,d)|0;if((f[G>>2]|0)!=(f[D>>2]|0)?(D=f[y>>2]|0,y=((f[D+100>>2]|0)-(f[D+96>>2]|0)|0)/12|0,b[d>>0]=0,qh(t,y,d),y=f[F>>2]|0,F=f[E>>2]|0,(y|0)!=(F|0)):0){E=y;do{f[r>>2]=f[E>>2];f[d>>2]=f[r>>2];He(a,d)|0;E=E+4|0}while((E|0)!=(F|0))}th(v);F=a+232|0;ld(v,F);v=a+280|0;E=f[v>>2]|0;if((E|0?(f[h>>2]|0)>0:0)?(ld(E,F),(f[h>>2]|0)>1):0){E=1;do{ld((f[v>>2]|0)+(E<<5)|0,F);E=E+1|0}while((E|0)<(f[h>>2]|0))}ci((f[a+272>>2]|0)-(f[a+268>>2]|0)>>2,f[(f[x>>2]|0)+44>>2]|0)|0;ci(f[z>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;if(bh(a)|0){z=f[(f[x>>2]|0)+44>>2]|0;x=f[F>>2]|0;F=z+16|0;h=f[F+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[F>>2]|0)>>>0>0)){F=(f[a+236>>2]|0)-x|0;f[e>>2]=f[z+4>>2];f[d>>2]=f[e>>2];Me(z,d,x,x+F|0)|0}ba=1}else ba=0}F=f[i>>2]|0;if(F|0){i=f[H>>2]|0;if((i|0)!=(F|0))f[H>>2]=i+(~((i+-4-F|0)>>>2)<<2);Oq(F)}w=ba;u=c;return w|0}function qb(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0;i=u;u=u+64|0;j=i+16|0;k=i;l=i+24|0;m=i+8|0;n=i+20|0;f[j>>2]=c;c=(a|0)!=0;o=l+40|0;q=o;r=l+39|0;l=m+4|0;s=0;t=0;v=0;a:while(1){do if((t|0)>-1)if((s|0)>(2147483647-t|0)){w=Vq()|0;f[w>>2]=75;x=-1;break}else{x=s+t|0;break}else x=t;while(0);w=f[j>>2]|0;y=b[w>>0]|0;if(!(y<<24>>24)){z=88;break}else{A=y;B=w}b:while(1){switch(A<<24>>24){case 37:{C=B;D=B;z=9;break b;break}case 0:{E=B;break b;break}default:{}}y=B+1|0;f[j>>2]=y;A=b[y>>0]|0;B=y}c:do if((z|0)==9)while(1){z=0;if((b[D+1>>0]|0)!=37){E=C;break c}y=C+1|0;D=D+2|0;f[j>>2]=D;if((b[D>>0]|0)!=37){E=y;break}else{C=y;z=9}}while(0);y=E-w|0;if(c)Xo(a,w,y);if(y|0){s=y;t=x;continue}y=(Aq(b[(f[j>>2]|0)+1>>0]|0)|0)==0;F=f[j>>2]|0;if(!y?(b[F+2>>0]|0)==36:0){G=(b[F+1>>0]|0)+-48|0;H=1;J=3}else{G=-1;H=v;J=1}y=F+J|0;f[j>>2]=y;F=b[y>>0]|0;K=(F<<24>>24)+-32|0;if(K>>>0>31|(1<>24)+-32|K;P=F+1|0;f[j>>2]=P;Q=b[P>>0]|0;R=(Q<<24>>24)+-32|0;if(R>>>0>31|(1<>24==42){if((Aq(b[N+1>>0]|0)|0)!=0?(F=f[j>>2]|0,(b[F+2>>0]|0)==36):0){O=F+1|0;f[h+((b[O>>0]|0)+-48<<2)>>2]=10;S=f[g+((b[O>>0]|0)+-48<<3)>>2]|0;T=1;U=F+3|0}else{if(H|0){V=-1;break}if(c){F=(f[e>>2]|0)+(4-1)&~(4-1);O=f[F>>2]|0;f[e>>2]=F+4;W=O}else W=0;S=W;T=0;U=(f[j>>2]|0)+1|0}f[j>>2]=U;O=(S|0)<0;X=O?0-S|0:S;Y=O?L|8192:L;Z=T;_=U}else{O=Ll(j)|0;if((O|0)<0){V=-1;break}X=O;Y=L;Z=H;_=f[j>>2]|0}do if((b[_>>0]|0)==46){if((b[_+1>>0]|0)!=42){f[j>>2]=_+1;O=Ll(j)|0;$=O;aa=f[j>>2]|0;break}if(Aq(b[_+2>>0]|0)|0?(O=f[j>>2]|0,(b[O+3>>0]|0)==36):0){F=O+2|0;f[h+((b[F>>0]|0)+-48<<2)>>2]=10;K=f[g+((b[F>>0]|0)+-48<<3)>>2]|0;F=O+4|0;f[j>>2]=F;$=K;aa=F;break}if(Z|0){V=-1;break a}if(c){F=(f[e>>2]|0)+(4-1)&~(4-1);K=f[F>>2]|0;f[e>>2]=F+4;ba=K}else ba=0;K=(f[j>>2]|0)+2|0;f[j>>2]=K;$=ba;aa=K}else{$=-1;aa=_}while(0);K=0;F=aa;while(1){if(((b[F>>0]|0)+-65|0)>>>0>57){V=-1;break a}O=F;F=F+1|0;f[j>>2]=F;ca=b[(b[O>>0]|0)+-65+(16124+(K*58|0))>>0]|0;da=ca&255;if((da+-1|0)>>>0>=8)break;else K=da}if(!(ca<<24>>24)){V=-1;break}O=(G|0)>-1;do if(ca<<24>>24==19)if(O){V=-1;break a}else z=50;else{if(O){f[h+(G<<2)>>2]=da;P=g+(G<<3)|0;Q=f[P+4>>2]|0;y=k;f[y>>2]=f[P>>2];f[y+4>>2]=Q;z=50;break}if(!c){V=0;break a}We(k,da,e);ea=f[j>>2]|0}while(0);if((z|0)==50){z=0;if(c)ea=F;else{s=0;t=x;v=Z;continue}}O=b[ea+-1>>0]|0;Q=(K|0)!=0&(O&15|0)==3?O&-33:O;O=Y&-65537;y=(Y&8192|0)==0?Y:O;d:do switch(Q|0){case 110:{switch((K&255)<<24>>24){case 0:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 1:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 2:{P=f[k>>2]|0;f[P>>2]=x;f[P+4>>2]=((x|0)<0)<<31>>31;s=0;t=x;v=Z;continue a;break}case 3:{d[f[k>>2]>>1]=x;s=0;t=x;v=Z;continue a;break}case 4:{b[f[k>>2]>>0]=x;s=0;t=x;v=Z;continue a;break}case 6:{f[f[k>>2]>>2]=x;s=0;t=x;v=Z;continue a;break}case 7:{P=f[k>>2]|0;f[P>>2]=x;f[P+4>>2]=((x|0)<0)<<31>>31;s=0;t=x;v=Z;continue a;break}default:{s=0;t=x;v=Z;continue a}}break}case 112:{fa=120;ga=$>>>0>8?$:8;ha=y|8;z=62;break}case 88:case 120:{fa=Q;ga=$;ha=y;z=62;break}case 111:{P=k;R=f[P>>2]|0;ia=f[P+4>>2]|0;P=Ol(R,ia,o)|0;ja=q-P|0;ka=P;la=0;ma=16588;na=(y&8|0)==0|($|0)>(ja|0)?$:ja+1|0;oa=y;pa=R;qa=ia;z=68;break}case 105:case 100:{ia=k;R=f[ia>>2]|0;ja=f[ia+4>>2]|0;if((ja|0)<0){ia=Xn(0,0,R|0,ja|0)|0;P=I;ra=k;f[ra>>2]=ia;f[ra+4>>2]=P;sa=1;ta=16588;ua=ia;va=P;z=67;break d}else{sa=(y&2049|0)!=0&1;ta=(y&2048|0)==0?((y&1|0)==0?16588:16590):16589;ua=R;va=ja;z=67;break d}break}case 117:{ja=k;sa=0;ta=16588;ua=f[ja>>2]|0;va=f[ja+4>>2]|0;z=67;break}case 99:{b[r>>0]=f[k>>2];wa=r;xa=0;ya=16588;za=o;Aa=1;Ba=O;break}case 109:{ja=Vq()|0;Ca=$o(f[ja>>2]|0)|0;z=72;break}case 115:{ja=f[k>>2]|0;Ca=ja|0?ja:16598;z=72;break}case 67:{f[m>>2]=f[k>>2];f[l>>2]=0;f[k>>2]=m;Da=-1;Ea=m;z=76;break}case 83:{ja=f[k>>2]|0;if(!$){Qk(a,32,X,0,y);Fa=0;z=85}else{Da=$;Ea=ja;z=76}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{s=ob(a,+p[k>>3],X,$,y,Q)|0;t=x;v=Z;continue a;break}default:{wa=w;xa=0;ya=16588;za=o;Aa=$;Ba=y}}while(0);e:do if((z|0)==62){z=0;w=k;Q=f[w>>2]|0;K=f[w+4>>2]|0;w=ul(Q,K,o,fa&32)|0;F=(ha&8|0)==0|(Q|0)==0&(K|0)==0;ka=w;la=F?0:2;ma=F?16588:16588+(fa>>4)|0;na=ga;oa=ha;pa=Q;qa=K;z=68}else if((z|0)==67){z=0;ka=Rj(ua,va,o)|0;la=sa;ma=ta;na=$;oa=y;pa=ua;qa=va;z=68}else if((z|0)==72){z=0;K=tg(Ca,0,$)|0;Q=(K|0)==0;wa=Ca;xa=0;ya=16588;za=Q?Ca+$|0:K;Aa=Q?$:K-Ca|0;Ba=O}else if((z|0)==76){z=0;K=Ea;Q=0;F=0;while(1){w=f[K>>2]|0;if(!w){Ga=Q;Ha=F;break}ja=Po(n,w)|0;if((ja|0)<0|ja>>>0>(Da-Q|0)>>>0){Ga=Q;Ha=ja;break}w=ja+Q|0;if(Da>>>0>w>>>0){K=K+4|0;Q=w;F=ja}else{Ga=w;Ha=ja;break}}if((Ha|0)<0){V=-1;break a}Qk(a,32,X,Ga,y);if(!Ga){Fa=0;z=85}else{F=Ea;Q=0;while(1){K=f[F>>2]|0;if(!K){Fa=Ga;z=85;break e}ja=Po(n,K)|0;Q=ja+Q|0;if((Q|0)>(Ga|0)){Fa=Ga;z=85;break e}Xo(a,n,ja);if(Q>>>0>=Ga>>>0){Fa=Ga;z=85;break}else F=F+4|0}}}while(0);if((z|0)==68){z=0;O=(pa|0)!=0|(qa|0)!=0;F=(na|0)!=0|O;Q=q-ka+((O^1)&1)|0;wa=F?ka:o;xa=la;ya=ma;za=o;Aa=F?((na|0)>(Q|0)?na:Q):na;Ba=(na|0)>-1?oa&-65537:oa}else if((z|0)==85){z=0;Qk(a,32,X,Fa,y^8192);s=(X|0)>(Fa|0)?X:Fa;t=x;v=Z;continue}Q=za-wa|0;F=(Aa|0)<(Q|0)?Q:Aa;O=F+xa|0;ja=(X|0)<(O|0)?O:X;Qk(a,32,ja,O,Ba);Xo(a,ya,xa);Qk(a,48,ja,O,Ba^65536);Qk(a,48,F,Q,0);Xo(a,wa,Q);Qk(a,32,ja,O,Ba^8192);s=ja;t=x;v=Z}f:do if((z|0)==88)if(!a)if(v){Z=1;while(1){t=f[h+(Z<<2)>>2]|0;if(!t){Ia=Z;break}We(g+(Z<<3)|0,t,e);t=Z+1|0;if((Z|0)<9)Z=t;else{Ia=t;break}}if((Ia|0)<10){Z=Ia;while(1){if(f[h+(Z<<2)>>2]|0){V=-1;break f}if((Z|0)<9)Z=Z+1|0;else{V=1;break}}}else V=1}else V=0;else V=x;while(0);u=i;return V|0}function rb(a){a=a|0;var c=0,d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;c=u;u=u+64|0;d=c+56|0;e=c+52|0;g=c+48|0;h=c+60|0;i=c;j=c+44|0;k=c+40|0;l=c+36|0;m=c+32|0;n=c+28|0;o=c+24|0;p=c+20|0;q=c+16|0;r=c+12|0;if(!(b[a+352>>0]|0)){_e(d,f[a+8>>2]|0);s=a+12|0;t=f[d>>2]|0;f[d>>2]=0;v=f[s>>2]|0;f[s>>2]=t;if(v){Ii(v);Oq(v);v=f[d>>2]|0;f[d>>2]=0;if(v|0){Ii(v);Oq(v)}}else f[d>>2]=0}else{fh(d,f[a+8>>2]|0);v=a+12|0;t=f[d>>2]|0;f[d>>2]=0;s=f[v>>2]|0;f[v>>2]=t;if(s){Ii(s);Oq(s);s=f[d>>2]|0;f[d>>2]=0;if(s|0){Ii(s);Oq(s)}}else f[d>>2]=0}s=a+12|0;t=f[s>>2]|0;if(!t){w=0;u=c;return w|0}if((((f[t+4>>2]|0)-(f[t>>2]|0)>>2>>>0)/3|0|0)==(f[t+40>>2]|0)){w=0;u=c;return w|0}t=a+200|0;ve(t,a)|0;v=f[s>>2]|0;x=a+4|0;ci(((f[v+28>>2]|0)-(f[v+24>>2]|0)>>2)-(f[v+44>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;v=f[s>>2]|0;ci((((f[v+4>>2]|0)-(f[v>>2]|0)>>2>>>0)/3|0)-(f[v+40>>2]|0)|0,f[(f[x>>2]|0)+44>>2]|0)|0;v=a+28|0;y=a+8|0;z=f[y>>2]|0;A=((f[z+100>>2]|0)-(f[z+96>>2]|0)|0)/12|0;b[d>>0]=0;qh(v,A,d);A=f[s>>2]|0;z=(f[A+28>>2]|0)-(f[A+24>>2]|0)>>2;f[d>>2]=-1;hg(a+52|0,z,d);z=a+40|0;A=f[z>>2]|0;B=a+44|0;C=f[B>>2]|0;if((C|0)!=(A|0))f[B>>2]=C+(~((C+-4-A|0)>>>2)<<2);A=f[s>>2]|0;C=(f[A+4>>2]|0)-(f[A>>2]|0)>>2;gk(z,C-((C>>>0)%3|0)|0);C=a+84|0;z=f[s>>2]|0;A=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2;b[d>>0]=0;qh(C,A,d);A=a+96|0;z=f[A>>2]|0;B=a+100|0;D=f[B>>2]|0;if((D|0)!=(z|0))f[B>>2]=D+(~((D+-4-z|0)>>>2)<<2);f[a+164>>2]=-1;z=a+168|0;f[z>>2]=0;D=f[a+108>>2]|0;E=a+112|0;F=f[E>>2]|0;if((F|0)!=(D|0))f[E>>2]=F+(~(((F+-12-D|0)>>>0)/12|0)*12|0);D=a+132|0;if(f[D>>2]|0){F=a+128|0;E=f[F>>2]|0;if(E|0){G=E;do{E=G;G=f[G>>2]|0;Oq(E)}while((G|0)!=0)}f[F>>2]=0;F=f[a+124>>2]|0;if(F|0){G=a+120|0;E=0;do{f[(f[G>>2]|0)+(E<<2)>>2]=0;E=E+1|0}while((E|0)!=(F|0))}f[D>>2]=0}f[a+144>>2]=0;D=f[s>>2]|0;F=(f[D+28>>2]|0)-(f[D+24>>2]|0)>>2;f[d>>2]=-1;hg(a+152|0,F,d);F=a+72|0;D=f[F>>2]|0;E=a+76|0;G=f[E>>2]|0;if((G|0)!=(D|0))f[E>>2]=G+(~((G+-4-D|0)>>>2)<<2);D=f[s>>2]|0;gk(F,((f[D+4>>2]|0)-(f[D>>2]|0)>>2>>>0)/3|0);f[a+64>>2]=0;if(!(Be(a)|0)){w=0;u=c;return w|0}if(!(Dg(a)|0)){w=0;u=c;return w|0}D=a+172|0;G=a+176|0;H=(((f[G>>2]|0)-(f[D>>2]|0)|0)/136|0)&255;b[h>>0]=H;I=f[(f[x>>2]|0)+44>>2]|0;J=I+16|0;K=f[J+4>>2]|0;if((K|0)>0|(K|0)==0&(f[J>>2]|0)>>>0>0)L=H;else{f[e>>2]=f[I+4>>2];f[d>>2]=f[e>>2];Me(I,d,h,h+1|0)|0;L=b[h>>0]|0}f[a+284>>2]=L&255;L=f[s>>2]|0;h=(f[L+4>>2]|0)-(f[L>>2]|0)|0;L=h>>2;dj(t);f[i>>2]=0;I=i+4|0;f[I>>2]=0;f[i+8>>2]=0;a:do if((h|0)>0){H=a+104|0;J=i+8|0;K=0;b:while(1){M=(K>>>0)/3|0;N=M>>>5;O=1<<(M&31);if((f[(f[v>>2]|0)+(N<<2)>>2]&O|0)==0?(P=f[s>>2]|0,f[j>>2]=M,f[d>>2]=f[j>>2],!(_j(P,d)|0)):0){f[e>>2]=0;f[k>>2]=M;f[d>>2]=f[k>>2];M=xg(a,d,e)|0;fj(t,M);P=f[e>>2]|0;Q=(P|0)==-1;do if(M){do if(Q){R=-1;S=-1;T=-1}else{U=f[f[s>>2]>>2]|0;V=f[U+(P<<2)>>2]|0;W=P+1|0;X=((W>>>0)%3|0|0)==0?P+-2|0:W;if((X|0)==-1)Y=-1;else Y=f[U+(X<<2)>>2]|0;X=(((P>>>0)%3|0|0)==0?2:-1)+P|0;if((X|0)==-1){R=-1;S=Y;T=V;break}R=f[U+(X<<2)>>2]|0;S=Y;T=V}while(0);V=f[C>>2]|0;X=V+(T>>>5<<2)|0;f[X>>2]=f[X>>2]|1<<(T&31);X=V+(S>>>5<<2)|0;f[X>>2]=f[X>>2]|1<<(S&31);X=V+(R>>>5<<2)|0;f[X>>2]=f[X>>2]|1<<(R&31);f[d>>2]=1;X=f[B>>2]|0;if(X>>>0<(f[H>>2]|0)>>>0){f[X>>2]=1;f[B>>2]=X+4}else Ri(A,d);X=(f[v>>2]|0)+(N<<2)|0;f[X>>2]=f[X>>2]|O;X=P+1|0;if(Q)Z=-1;else Z=((X>>>0)%3|0|0)==0?P+-2|0:X;f[d>>2]=Z;V=f[I>>2]|0;if(V>>>0<(f[J>>2]|0)>>>0){f[V>>2]=Z;f[I>>2]=V+4}else Ri(i,d);if(Q)break;V=((X>>>0)%3|0|0)==0?P+-2|0:X;if((V|0)==-1)break;X=f[(f[(f[s>>2]|0)+12>>2]|0)+(V<<2)>>2]|0;V=(X|0)==-1;U=V?-1:(X>>>0)/3|0;if(V)break;if(f[(f[v>>2]|0)+(U>>>5<<2)>>2]&1<<(U&31)|0)break;f[l>>2]=X;f[d>>2]=f[l>>2];if(!(Yb(a,d)|0))break b}else{X=P+1|0;if(Q)_=-1;else _=((X>>>0)%3|0|0)==0?P+-2|0:X;f[m>>2]=_;f[d>>2]=f[m>>2];Pe(a,d,1)|0;f[n>>2]=f[e>>2];f[d>>2]=f[n>>2];if(!(Yb(a,d)|0))break b}while(0)}K=K+1|0;if((K|0)>=(L|0)){$=62;break a}}aa=0}else $=62;while(0);if(($|0)==62){$=f[F>>2]|0;L=f[E>>2]|0;n=L;if(($|0)!=(L|0)?(m=L+-4|0,$>>>0>>0):0){L=$;$=m;do{m=f[L>>2]|0;f[L>>2]=f[$>>2];f[$>>2]=m;L=L+4|0;$=$+-4|0}while(L>>>0<$>>>0)}f[o>>2]=n;f[p>>2]=f[i>>2];f[q>>2]=f[I>>2];f[g>>2]=f[o>>2];f[e>>2]=f[p>>2];f[d>>2]=f[q>>2];Yd(F,g,e,d)|0;if((f[G>>2]|0)!=(f[D>>2]|0)?(D=f[y>>2]|0,y=((f[D+100>>2]|0)-(f[D+96>>2]|0)|0)/12|0,b[d>>0]=0,qh(v,y,d),y=f[F>>2]|0,F=f[E>>2]|0,(y|0)!=(F|0)):0){E=y;do{f[r>>2]=f[E>>2];f[d>>2]=f[r>>2];He(a,d)|0;E=E+4|0}while((E|0)!=(F|0))}pi(t);ci(f[a+324>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;ci(f[z>>2]|0,f[(f[x>>2]|0)+44>>2]|0)|0;if(bh(a)|0){z=f[(f[x>>2]|0)+44>>2]|0;x=f[a+232>>2]|0;t=z+16|0;F=f[t+4>>2]|0;if(!((F|0)>0|(F|0)==0&(f[t>>2]|0)>>>0>0)){t=(f[a+236>>2]|0)-x|0;f[e>>2]=f[z+4>>2];f[d>>2]=f[e>>2];Me(z,d,x,x+t|0)|0}aa=1}else aa=0}t=f[i>>2]|0;if(t|0){i=f[I>>2]|0;if((i|0)!=(t|0))f[I>>2]=i+(~((i+-4-t|0)>>>2)<<2);Oq(t)}w=aa;u=c;return w|0}function sb(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,Q=0,R=0,S=0,T=0,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=Oa,ma=Oa,na=Oa,oa=0,pa=0,qa=0,ra=0,sa=0;c=u;u=u+64|0;d=c+28|0;e=c+16|0;g=c+4|0;h=c;i=a;j=a+80|0;k=f[j>>2]|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=i;l=d+20|0;n[l>>2]=$(1.0);f[d+24>>2]=i;Ih(d,k);k=f[j>>2]|0;f[e>>2]=0;i=e+4|0;f[i>>2]=0;f[e+8>>2]=0;m=(k|0)==0;do if(!m)if(k>>>0>1073741823)aq(e);else{o=k<<2;p=ln(o)|0;f[e>>2]=p;q=p+(k<<2)|0;f[e+8>>2]=q;sj(p|0,0,o|0)|0;f[i>>2]=q;break}while(0);f[g>>2]=0;k=g+4|0;f[k>>2]=0;f[g+8>>2]=0;f[h>>2]=0;if(!m){m=d+16|0;q=d+4|0;o=d+12|0;p=d+8|0;r=g+8|0;s=d+24|0;t=0;v=0;while(1){w=f[m>>2]|0;x=f[w+8>>2]|0;y=(f[w+12>>2]|0)-x|0;w=(y|0)>0;z=x;if(w){x=y>>>2;A=0;B=0;while(1){C=f[z+(A<<2)>>2]|0;if(!(b[C+84>>0]|0))D=f[(f[C+68>>2]|0)+(v<<2)>>2]|0;else D=v;C=D+239^B;A=A+1|0;if((A|0)>=(x|0)){E=C;break}else B=C}}else E=0;B=f[q>>2]|0;x=(B|0)==0;a:do if(!x){A=B+-1|0;C=(A&B|0)==0;if(!C)if(E>>>0>>0)F=E;else F=(E>>>0)%(B>>>0)|0;else F=A&E;G=f[(f[d>>2]|0)+(F<<2)>>2]|0;if((G|0)!=0?(H=f[G>>2]|0,(H|0)!=0):0){G=f[s>>2]|0;I=G+8|0;J=G+12|0;b:do if(C){G=H;while(1){K=f[G+4>>2]|0;L=(K|0)==(E|0);if(!(L|(K&A|0)==(F|0))){M=44;break a}c:do if(L){K=f[G+8>>2]|0;N=f[I>>2]|0;O=(f[J>>2]|0)-N|0;P=N;if((O|0)<=0){Q=G;break b}N=O>>>2;O=0;while(1){R=f[P+(O<<2)>>2]|0;if(!(b[R+84>>0]|0)){S=f[R+68>>2]|0;T=f[S+(v<<2)>>2]|0;U=f[S+(K<<2)>>2]|0}else{T=v;U=K}O=O+1|0;if((U|0)!=(T|0))break c;if((O|0)>=(N|0)){V=G;M=42;break b}}}while(0);G=f[G>>2]|0;if(!G){M=44;break a}}}else{G=H;while(1){L=f[G+4>>2]|0;d:do if((L|0)!=(E|0)){if(L>>>0>>0)X=L;else X=(L>>>0)%(B>>>0)|0;if((X|0)!=(F|0)){M=44;break a}}else{N=f[G+8>>2]|0;O=f[I>>2]|0;K=(f[J>>2]|0)-O|0;P=O;if((K|0)<=0){Q=G;break b}O=K>>>2;K=0;while(1){S=f[P+(K<<2)>>2]|0;if(!(b[S+84>>0]|0)){R=f[S+68>>2]|0;Y=f[R+(v<<2)>>2]|0;Z=f[R+(N<<2)>>2]|0}else{Y=v;Z=N}K=K+1|0;if((Z|0)!=(Y|0))break d;if((K|0)>=(O|0)){V=G;M=42;break b}}}while(0);G=f[G>>2]|0;if(!G){M=44;break a}}}while(0);if((M|0)==42){M=0;if(!V){M=44;break}else Q=V}f[(f[e>>2]|0)+(v<<2)>>2]=f[Q+12>>2];_=t}else M=44}else M=44;while(0);do if((M|0)==44){M=0;if(w){J=y>>>2;I=0;H=0;while(1){A=f[z+(I<<2)>>2]|0;if(!(b[A+84>>0]|0))aa=f[(f[A+68>>2]|0)+(v<<2)>>2]|0;else aa=v;A=aa+239^H;I=I+1|0;if((I|0)>=(J|0)){ba=A;break}else H=A}}else ba=0;e:do if(!x){H=B+-1|0;J=(H&B|0)==0;if(!J)if(ba>>>0>>0)ca=ba;else ca=(ba>>>0)%(B>>>0)|0;else ca=H&ba;I=f[(f[d>>2]|0)+(ca<<2)>>2]|0;if((I|0)!=0?(A=f[I>>2]|0,(A|0)!=0):0){I=f[s>>2]|0;C=I+8|0;G=I+12|0;if(J){J=A;while(1){I=f[J+4>>2]|0;if(!((I|0)==(ba|0)|(I&H|0)==(ca|0))){da=ca;M=76;break e}I=f[J+8>>2]|0;L=f[C>>2]|0;O=(f[G>>2]|0)-L|0;K=L;if((O|0)<=0){ea=v;break e}L=O>>>2;O=0;while(1){N=f[K+(O<<2)>>2]|0;if(!(b[N+84>>0]|0)){P=f[N+68>>2]|0;fa=f[P+(v<<2)>>2]|0;ga=f[P+(I<<2)>>2]|0}else{fa=v;ga=I}O=O+1|0;if((ga|0)!=(fa|0))break;if((O|0)>=(L|0)){ea=v;break e}}J=f[J>>2]|0;if(!J){da=ca;M=76;break e}}}else ha=A;while(1){J=f[ha+4>>2]|0;if((J|0)!=(ba|0)){if(J>>>0>>0)ia=J;else ia=(J>>>0)%(B>>>0)|0;if((ia|0)!=(ca|0)){da=ca;M=76;break e}}J=f[ha+8>>2]|0;H=f[C>>2]|0;L=(f[G>>2]|0)-H|0;O=H;if((L|0)<=0){ea=v;break e}H=L>>>2;L=0;while(1){I=f[O+(L<<2)>>2]|0;if(!(b[I+84>>0]|0)){K=f[I+68>>2]|0;ja=f[K+(v<<2)>>2]|0;ka=f[K+(J<<2)>>2]|0}else{ja=v;ka=J}L=L+1|0;if((ka|0)!=(ja|0))break;if((L|0)>=(H|0)){ea=v;break e}}ha=f[ha>>2]|0;if(!ha){da=ca;M=76;break}}}else{da=ca;M=76}}else{da=0;M=76}while(0);if((M|0)==76){M=0;G=ln(16)|0;f[G+8>>2]=v;f[G+12>>2]=t;f[G+4>>2]=ba;f[G>>2]=0;la=$(((f[o>>2]|0)+1|0)>>>0);ma=$(B>>>0);na=$(n[l>>2]);do if(x|$(na*ma)>>0<3|(B+-1&B|0)!=0)&1;A=~~$(W($(la/na)))>>>0;Ih(d,C>>>0>>0?A:C);C=f[q>>2]|0;A=C+-1|0;if(!(A&C)){oa=C;pa=A&ba;break}if(ba>>>0>>0){oa=C;pa=ba}else{oa=C;pa=(ba>>>0)%(C>>>0)|0}}else{oa=B;pa=da}while(0);C=(f[d>>2]|0)+(pa<<2)|0;A=f[C>>2]|0;if(!A){f[G>>2]=f[p>>2];f[p>>2]=G;f[C>>2]=p;C=f[G>>2]|0;if(C|0){H=f[C+4>>2]|0;C=oa+-1|0;if(C&oa)if(H>>>0>>0)qa=H;else qa=(H>>>0)%(oa>>>0)|0;else qa=H&C;ra=(f[d>>2]|0)+(qa<<2)|0;M=89}}else{f[G>>2]=f[A>>2];ra=A;M=89}if((M|0)==89){M=0;f[ra>>2]=G}f[o>>2]=(f[o>>2]|0)+1;ea=f[h>>2]|0}A=t+1|0;f[(f[e>>2]|0)+(ea<<2)>>2]=t;C=f[k>>2]|0;if((C|0)==(f[r>>2]|0)){Ri(g,h);_=A;break}else{f[C>>2]=f[h>>2];f[k>>2]=C+4;_=A;break}}while(0);v=(f[h>>2]|0)+1|0;f[h>>2]=v;sa=f[j>>2]|0;if(v>>>0>=sa>>>0)break;else t=_}if((_|0)!=(sa|0)){Xa[f[(f[a>>2]|0)+24>>2]&15](a,e,g);f[j>>2]=_}}_=f[g>>2]|0;if(_|0){g=f[k>>2]|0;if((g|0)!=(_|0))f[k>>2]=g+(~((g+-4-_|0)>>>2)<<2);Oq(_)}_=f[e>>2]|0;if(_|0){e=f[i>>2]|0;if((e|0)!=(_|0))f[i>>2]=e+(~((e+-4-_|0)>>>2)<<2);Oq(_)}_=f[d+8>>2]|0;if(_|0){e=_;do{_=e;e=f[e>>2]|0;Oq(_)}while((e|0)!=0)}e=f[d>>2]|0;f[d>>2]=0;if(!e){u=c;return}Oq(e);u=c;return}function tb(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;g=u;u=u+80|0;h=g+76|0;i=g+72|0;j=g+48|0;k=g+24|0;l=g;m=a+32|0;n=f[c>>2]|0;c=n+1|0;if((n|0)!=-1){o=((c>>>0)%3|0|0)==0?n+-2|0:c;c=(((n>>>0)%3|0|0)==0?2:-1)+n|0;if((o|0)==-1)p=-1;else p=f[(f[f[m>>2]>>2]|0)+(o<<2)>>2]|0;if((c|0)==-1){q=p;r=-1}else{q=p;r=f[(f[f[m>>2]>>2]|0)+(c<<2)>>2]|0}}else{q=-1;r=-1}c=f[a+36>>2]|0;m=f[c>>2]|0;p=(f[c+4>>2]|0)-m>>2;if(p>>>0<=q>>>0)aq(c);o=m;m=f[o+(q<<2)>>2]|0;if(p>>>0<=r>>>0)aq(c);c=f[o+(r<<2)>>2]|0;r=(m|0)<(e|0);do if(r&(c|0)<(e|0)){o=m<<1;p=f[d+(o<<2)>>2]|0;q=((p|0)<0)<<31>>31;n=f[d+((o|1)<<2)>>2]|0;o=((n|0)<0)<<31>>31;s=c<<1;t=f[d+(s<<2)>>2]|0;v=f[d+((s|1)<<2)>>2]|0;if(!((t|0)!=(p|0)|(v|0)!=(n|0))){f[a+8>>2]=p;f[a+12>>2]=n;u=g;return}s=a+4|0;w=f[(f[s>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))y=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else y=w;f[i>>2]=y;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];vb(x,h,w,j)|0;w=f[(f[s>>2]|0)+(m<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))z=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else z=w;f[i>>2]=z;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];vb(x,h,w,k)|0;w=f[(f[s>>2]|0)+(c<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;s=f[a>>2]|0;if(!(b[s+84>>0]|0))A=f[(f[s+68>>2]|0)+(w<<2)>>2]|0;else A=w;f[i>>2]=A;w=b[s+24>>0]|0;f[h>>2]=f[i>>2];vb(s,h,w,l)|0;w=l;s=k;x=f[s>>2]|0;B=f[s+4>>2]|0;s=Xn(f[w>>2]|0,f[w+4>>2]|0,x|0,B|0)|0;w=I;C=l+8|0;D=k+8|0;E=f[D>>2]|0;F=f[D+4>>2]|0;D=Xn(f[C>>2]|0,f[C+4>>2]|0,E|0,F|0)|0;C=I;G=l+16|0;H=k+16|0;J=f[H>>2]|0;K=f[H+4>>2]|0;H=Xn(f[G>>2]|0,f[G+4>>2]|0,J|0,K|0)|0;G=I;L=un(s|0,w|0,s|0,w|0)|0;M=I;N=un(D|0,C|0,D|0,C|0)|0;O=Vn(N|0,I|0,L|0,M|0)|0;M=I;L=un(H|0,G|0,H|0,G|0)|0;N=Vn(O|0,M|0,L|0,I|0)|0;L=I;if((N|0)==0&(L|0)==0)break;M=j;O=Xn(f[M>>2]|0,f[M+4>>2]|0,x|0,B|0)|0;B=I;x=j+8|0;M=Xn(f[x>>2]|0,f[x+4>>2]|0,E|0,F|0)|0;F=I;E=j+16|0;x=Xn(f[E>>2]|0,f[E+4>>2]|0,J|0,K|0)|0;K=I;J=un(O|0,B|0,s|0,w|0)|0;E=I;P=un(M|0,F|0,D|0,C|0)|0;Q=Vn(P|0,I|0,J|0,E|0)|0;E=I;J=un(x|0,K|0,H|0,G|0)|0;P=Vn(Q|0,E|0,J|0,I|0)|0;J=I;E=Xn(t|0,((t|0)<0)<<31>>31|0,p|0,q|0)|0;t=I;Q=Xn(v|0,((v|0)<0)<<31>>31|0,n|0,o|0)|0;v=I;R=un(N|0,L|0,p|0,q|0)|0;q=I;p=un(N|0,L|0,n|0,o|0)|0;o=I;n=un(P|0,J|0,E|0,t|0)|0;S=I;T=un(P|0,J|0,Q|0,v|0)|0;U=I;V=Vn(n|0,S|0,R|0,q|0)|0;q=I;R=Vn(T|0,U|0,p|0,o|0)|0;o=I;p=un(P|0,J|0,s|0,w|0)|0;w=I;s=un(P|0,J|0,D|0,C|0)|0;C=I;D=un(P|0,J|0,H|0,G|0)|0;G=I;H=Ik(p|0,w|0,N|0,L|0)|0;w=I;p=Ik(s|0,C|0,N|0,L|0)|0;C=I;s=Ik(D|0,G|0,N|0,L|0)|0;G=I;D=Xn(O|0,B|0,H|0,w|0)|0;w=I;H=Xn(M|0,F|0,p|0,C|0)|0;C=I;p=Xn(x|0,K|0,s|0,G|0)|0;G=I;s=un(D|0,w|0,D|0,w|0)|0;w=I;D=un(H|0,C|0,H|0,C|0)|0;C=Vn(D|0,I|0,s|0,w|0)|0;w=I;s=un(p|0,G|0,p|0,G|0)|0;G=Vn(C|0,w|0,s|0,I|0)|0;s=I;w=Xn(0,0,E|0,t|0)|0;t=I;E=un(G|0,s|0,N|0,L|0)|0;s=I;switch(E|0){case 0:{if(!s){W=0;X=0}else{Y=1;Z=0;_=E;$=s;aa=23}break}case 1:{if(!s){ba=1;ca=0;aa=24}else{Y=1;Z=0;_=E;$=s;aa=23}break}default:{Y=1;Z=0;_=E;$=s;aa=23}}if((aa|0)==23)while(1){aa=0;G=Tn(Y|0,Z|0,1)|0;C=I;p=_;_=Yn(_|0,$|0,2)|0;if(!($>>>0>0|($|0)==0&p>>>0>7)){ba=G;ca=C;aa=24;break}else{Y=G;Z=C;$=I;aa=23}}if((aa|0)==24)while(1){aa=0;C=jp(E|0,s|0,ba|0,ca|0)|0;G=Vn(C|0,I|0,ba|0,ca|0)|0;C=Yn(G|0,I|0,1)|0;G=I;p=un(C|0,G|0,C|0,G|0)|0;D=I;if(D>>>0>s>>>0|(D|0)==(s|0)&p>>>0>E>>>0){ba=C;ca=G;aa=24}else{W=C;X=G;break}}E=un(W|0,X|0,Q|0,v|0)|0;s=I;G=un(W|0,X|0,w|0,t|0)|0;C=I;p=Vn(E|0,s|0,V|0,q|0)|0;D=I;H=Vn(G|0,C|0,R|0,o|0)|0;K=I;x=Ik(p|0,D|0,N|0,L|0)|0;D=I;p=Ik(H|0,K|0,N|0,L|0)|0;K=I;H=Xn(V|0,q|0,E|0,s|0)|0;s=I;E=Xn(R|0,o|0,G|0,C|0)|0;C=I;G=Ik(H|0,s|0,N|0,L|0)|0;s=I;H=Ik(E|0,C|0,N|0,L|0)|0;C=I;E=e<<1;F=f[d+(E<<2)>>2]|0;M=((F|0)<0)<<31>>31;B=f[d+((E|1)<<2)>>2]|0;E=((B|0)<0)<<31>>31;O=Xn(F|0,M|0,x|0,D|0)|0;J=I;P=Xn(B|0,E|0,p|0,K|0)|0;U=I;T=un(O|0,J|0,O|0,J|0)|0;J=I;O=un(P|0,U|0,P|0,U|0)|0;U=Vn(O|0,I|0,T|0,J|0)|0;J=I;T=Xn(F|0,M|0,G|0,s|0)|0;M=I;F=Xn(B|0,E|0,H|0,C|0)|0;E=I;B=un(T|0,M|0,T|0,M|0)|0;M=I;T=un(F|0,E|0,F|0,E|0)|0;E=Vn(T|0,I|0,B|0,M|0)|0;M=I;B=a+16|0;T=a+20|0;F=f[T>>2]|0;O=f[a+24>>2]|0;P=(F|0)==(O<<5|0);if(J>>>0>>0|(J|0)==(M|0)&U>>>0>>0){do if(P)if((F+1|0)<0)aq(B);else{E=O<<6;U=F+32&-32;vi(B,F>>>0<1073741823?(E>>>0>>0?U:E):2147483647);da=f[T>>2]|0;break}else da=F;while(0);f[T>>2]=da+1;L=(f[B>>2]|0)+(da>>>5<<2)|0;f[L>>2]=f[L>>2]|1<<(da&31);ea=x;fa=p;ga=K;ha=D}else{do if(P)if((F+1|0)<0)aq(B);else{L=O<<6;N=F+32&-32;vi(B,F>>>0<1073741823?(L>>>0>>0?N:L):2147483647);ia=f[T>>2]|0;break}else ia=F;while(0);f[T>>2]=ia+1;F=(f[B>>2]|0)+(ia>>>5<<2)|0;f[F>>2]=f[F>>2]&~(1<<(ia&31));ea=G;fa=H;ga=C;ha=s}f[a+8>>2]=ea;f[a+12>>2]=fa;u=g;return}while(0);do if(r)ja=m<<1;else{if((e|0)>0){ja=(e<<1)+-2|0;break}fa=a+8|0;f[fa>>2]=0;f[fa+4>>2]=0;u=g;return}while(0);f[a+8>>2]=f[d+(ja<<2)>>2];f[a+12>>2]=f[d+(ja+1<<2)>>2];u=g;return}function ub(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;g=u;u=u+80|0;h=g+76|0;i=g+72|0;j=g+48|0;k=g+24|0;l=g;m=a+32|0;n=f[c>>2]|0;c=n+1|0;do if((n|0)!=-1){o=((c>>>0)%3|0|0)==0?n+-2|0:c;if(!((n>>>0)%3|0)){p=n+2|0;q=o;break}else{p=n+-1|0;q=o;break}}else{p=-1;q=-1}while(0);n=f[(f[m>>2]|0)+28>>2]|0;m=f[n+(q<<2)>>2]|0;q=f[n+(p<<2)>>2]|0;p=f[a+36>>2]|0;n=f[p>>2]|0;c=(f[p+4>>2]|0)-n>>2;if(c>>>0<=m>>>0)aq(p);o=n;n=f[o+(m<<2)>>2]|0;if(c>>>0<=q>>>0)aq(p);p=f[o+(q<<2)>>2]|0;q=(n|0)<(e|0);do if(q&(p|0)<(e|0)){o=n<<1;c=f[d+(o<<2)>>2]|0;m=((c|0)<0)<<31>>31;r=f[d+((o|1)<<2)>>2]|0;o=((r|0)<0)<<31>>31;s=p<<1;t=f[d+(s<<2)>>2]|0;v=f[d+((s|1)<<2)>>2]|0;if(!((t|0)!=(c|0)|(v|0)!=(r|0))){f[a+8>>2]=c;f[a+12>>2]=r;u=g;return}s=a+4|0;w=f[(f[s>>2]|0)+(e<<2)>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))y=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else y=w;f[i>>2]=y;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];vb(x,h,w,j)|0;w=f[(f[s>>2]|0)+(n<<2)>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;x=f[a>>2]|0;if(!(b[x+84>>0]|0))z=f[(f[x+68>>2]|0)+(w<<2)>>2]|0;else z=w;f[i>>2]=z;w=b[x+24>>0]|0;f[h>>2]=f[i>>2];vb(x,h,w,k)|0;w=f[(f[s>>2]|0)+(p<<2)>>2]|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;s=f[a>>2]|0;if(!(b[s+84>>0]|0))A=f[(f[s+68>>2]|0)+(w<<2)>>2]|0;else A=w;f[i>>2]=A;w=b[s+24>>0]|0;f[h>>2]=f[i>>2];vb(s,h,w,l)|0;w=l;s=k;x=f[s>>2]|0;B=f[s+4>>2]|0;s=Xn(f[w>>2]|0,f[w+4>>2]|0,x|0,B|0)|0;w=I;C=l+8|0;D=k+8|0;E=f[D>>2]|0;F=f[D+4>>2]|0;D=Xn(f[C>>2]|0,f[C+4>>2]|0,E|0,F|0)|0;C=I;G=l+16|0;H=k+16|0;J=f[H>>2]|0;K=f[H+4>>2]|0;H=Xn(f[G>>2]|0,f[G+4>>2]|0,J|0,K|0)|0;G=I;L=un(s|0,w|0,s|0,w|0)|0;M=I;N=un(D|0,C|0,D|0,C|0)|0;O=Vn(N|0,I|0,L|0,M|0)|0;M=I;L=un(H|0,G|0,H|0,G|0)|0;N=Vn(O|0,M|0,L|0,I|0)|0;L=I;if((N|0)==0&(L|0)==0)break;M=j;O=Xn(f[M>>2]|0,f[M+4>>2]|0,x|0,B|0)|0;B=I;x=j+8|0;M=Xn(f[x>>2]|0,f[x+4>>2]|0,E|0,F|0)|0;F=I;E=j+16|0;x=Xn(f[E>>2]|0,f[E+4>>2]|0,J|0,K|0)|0;K=I;J=un(O|0,B|0,s|0,w|0)|0;E=I;P=un(M|0,F|0,D|0,C|0)|0;Q=Vn(P|0,I|0,J|0,E|0)|0;E=I;J=un(x|0,K|0,H|0,G|0)|0;P=Vn(Q|0,E|0,J|0,I|0)|0;J=I;E=Xn(t|0,((t|0)<0)<<31>>31|0,c|0,m|0)|0;t=I;Q=Xn(v|0,((v|0)<0)<<31>>31|0,r|0,o|0)|0;v=I;R=un(N|0,L|0,c|0,m|0)|0;m=I;c=un(N|0,L|0,r|0,o|0)|0;o=I;r=un(P|0,J|0,E|0,t|0)|0;S=I;T=un(P|0,J|0,Q|0,v|0)|0;U=I;V=Vn(r|0,S|0,R|0,m|0)|0;m=I;R=Vn(T|0,U|0,c|0,o|0)|0;o=I;c=un(P|0,J|0,s|0,w|0)|0;w=I;s=un(P|0,J|0,D|0,C|0)|0;C=I;D=un(P|0,J|0,H|0,G|0)|0;G=I;H=Ik(c|0,w|0,N|0,L|0)|0;w=I;c=Ik(s|0,C|0,N|0,L|0)|0;C=I;s=Ik(D|0,G|0,N|0,L|0)|0;G=I;D=Xn(O|0,B|0,H|0,w|0)|0;w=I;H=Xn(M|0,F|0,c|0,C|0)|0;C=I;c=Xn(x|0,K|0,s|0,G|0)|0;G=I;s=un(D|0,w|0,D|0,w|0)|0;w=I;D=un(H|0,C|0,H|0,C|0)|0;C=Vn(D|0,I|0,s|0,w|0)|0;w=I;s=un(c|0,G|0,c|0,G|0)|0;G=Vn(C|0,w|0,s|0,I|0)|0;s=I;w=Xn(0,0,E|0,t|0)|0;t=I;E=un(G|0,s|0,N|0,L|0)|0;s=I;switch(E|0){case 0:{if(!s){W=0;X=0}else{Y=1;Z=0;_=E;$=s;aa=22}break}case 1:{if(!s){ba=1;ca=0;aa=23}else{Y=1;Z=0;_=E;$=s;aa=22}break}default:{Y=1;Z=0;_=E;$=s;aa=22}}if((aa|0)==22)while(1){aa=0;G=Tn(Y|0,Z|0,1)|0;C=I;c=_;_=Yn(_|0,$|0,2)|0;if(!($>>>0>0|($|0)==0&c>>>0>7)){ba=G;ca=C;aa=23;break}else{Y=G;Z=C;$=I;aa=22}}if((aa|0)==23)while(1){aa=0;C=jp(E|0,s|0,ba|0,ca|0)|0;G=Vn(C|0,I|0,ba|0,ca|0)|0;C=Yn(G|0,I|0,1)|0;G=I;c=un(C|0,G|0,C|0,G|0)|0;D=I;if(D>>>0>s>>>0|(D|0)==(s|0)&c>>>0>E>>>0){ba=C;ca=G;aa=23}else{W=C;X=G;break}}E=un(W|0,X|0,Q|0,v|0)|0;s=I;G=un(W|0,X|0,w|0,t|0)|0;C=I;c=Vn(E|0,s|0,V|0,m|0)|0;D=I;H=Vn(G|0,C|0,R|0,o|0)|0;K=I;x=Ik(c|0,D|0,N|0,L|0)|0;D=I;c=Ik(H|0,K|0,N|0,L|0)|0;K=I;H=Xn(V|0,m|0,E|0,s|0)|0;s=I;E=Xn(R|0,o|0,G|0,C|0)|0;C=I;G=Ik(H|0,s|0,N|0,L|0)|0;s=I;H=Ik(E|0,C|0,N|0,L|0)|0;C=I;E=e<<1;F=f[d+(E<<2)>>2]|0;M=((F|0)<0)<<31>>31;B=f[d+((E|1)<<2)>>2]|0;E=((B|0)<0)<<31>>31;O=Xn(F|0,M|0,x|0,D|0)|0;J=I;P=Xn(B|0,E|0,c|0,K|0)|0;U=I;T=un(O|0,J|0,O|0,J|0)|0;J=I;O=un(P|0,U|0,P|0,U|0)|0;U=Vn(O|0,I|0,T|0,J|0)|0;J=I;T=Xn(F|0,M|0,G|0,s|0)|0;M=I;F=Xn(B|0,E|0,H|0,C|0)|0;E=I;B=un(T|0,M|0,T|0,M|0)|0;M=I;T=un(F|0,E|0,F|0,E|0)|0;E=Vn(T|0,I|0,B|0,M|0)|0;M=I;B=a+16|0;T=a+20|0;F=f[T>>2]|0;O=f[a+24>>2]|0;P=(F|0)==(O<<5|0);if(J>>>0>>0|(J|0)==(M|0)&U>>>0>>0){do if(P)if((F+1|0)<0)aq(B);else{E=O<<6;U=F+32&-32;vi(B,F>>>0<1073741823?(E>>>0>>0?U:E):2147483647);da=f[T>>2]|0;break}else da=F;while(0);f[T>>2]=da+1;L=(f[B>>2]|0)+(da>>>5<<2)|0;f[L>>2]=f[L>>2]|1<<(da&31);ea=x;fa=c;ga=K;ha=D}else{do if(P)if((F+1|0)<0)aq(B);else{L=O<<6;N=F+32&-32;vi(B,F>>>0<1073741823?(L>>>0>>0?N:L):2147483647);ia=f[T>>2]|0;break}else ia=F;while(0);f[T>>2]=ia+1;F=(f[B>>2]|0)+(ia>>>5<<2)|0;f[F>>2]=f[F>>2]&~(1<<(ia&31));ea=G;fa=H;ga=C;ha=s}f[a+8>>2]=ea;f[a+12>>2]=fa;u=g;return}while(0);do if(q)ja=n<<1;else{if((e|0)>0){ja=(e<<1)+-2|0;break}fa=a+8|0;f[fa>>2]=0;f[fa+4>>2]=0;u=g;return}while(0);f[a+8>>2]=f[d+(ja<<2)>>2];f[a+12>>2]=f[d+(ja+1<<2)>>2];u=g;return}function vb(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=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=Oa,D=0,E=0.0,F=0,G=0;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Vn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){m=b[o>>0]|0;q=g+(r<<3)|0;f[q>>2]=m;f[q+4>>2]=((m|0)<0)<<31>>31;r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(o<<3)|0,0,(e<<24>>24)-o<<3|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=un(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Vn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=g+(t<<3)|0;f[k>>2]=h[m>>0];f[k+4>>2]=0;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(m<<3)|0,0,(e<<24>>24)-m<<3|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=un(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Vn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){o=d[l>>1]|0;k=g+(q<<3)|0;f[k>>2]=o;f[k+4>>2]=((o|0)<0)<<31>>31;q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(l<<3)|0,0,(e<<24>>24)-l<<3|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=un(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Vn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){m=g+(k<<3)|0;f[m>>2]=j[r>>1];f[m+4>>2]=0;k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(r<<3)|0,0,(e<<24>>24)-r<<3|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=un(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Vn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){l=f[t>>2]|0;m=g+(o<<3)|0;f[m>>2]=l;f[m+4>>2]=((l|0)<0)<<31>>31;o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(t<<3)|0,0,(e<<24>>24)-t<<3|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=un(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Vn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){r=g+(m<<3)|0;f[r>>2]=f[q>>2];f[r+4>>2]=0;m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(q<<3)|0,0,(e<<24>>24)-q<<3|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=un(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Vn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){t=k;r=f[t+4>>2]|0;z=g+(l<<3)|0;f[z>>2]=f[t>>2];f[z+4>>2]=r;l=l+1|0;r=b[q>>0]|0;if((l|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){A=r;break}else k=k+8|0}}else A=m;k=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(k<<3)|0,0,(e<<24>>24)-k<<3|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;r=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;z=Vn(r|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+z|0;z=0;while(1){q=o;r=f[q+4>>2]|0;t=g+(z<<3)|0;f[t>>2]=f[q>>2];f[t+4>>2]=r;z=z+1|0;r=b[k>>0]|0;if((z|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){B=r;break}else o=o+8|0}}else B=l;o=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(o<<3)|0,0,(e<<24>>24)-o<<3|0)|0;i=1;return i|0}case 9:{o=a+24|0;z=b[o>>0]|0;if((z<<24>>24>e<<24>>24?e:z)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;r=un(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Vn(r|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){C=$(n[m>>2]);k=+K(+C)>=1.0?(+C>0.0?~~+Y(+J(+C/4294967296.0),4294967295.0)>>>0:~~+W((+C-+(~~+C>>>0))/4294967296.0)>>>0):0;r=g+(t<<3)|0;f[r>>2]=~~+C>>>0;f[r+4>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){D=k;break}else m=m+4|0}}else D=z;m=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(m<<3)|0,0,(e<<24>>24)-m<<3|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=un(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;r=Vn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+r|0;r=0;while(1){E=+p[l>>3];o=+K(E)>=1.0?(E>0.0?~~+Y(+J(E/4294967296.0),4294967295.0)>>>0:~~+W((E-+(~~E>>>0))/4294967296.0)>>>0):0;k=g+(r<<3)|0;f[k>>2]=~~E>>>0;f[k+4>>2]=o;r=r+1|0;o=b[m>>0]|0;if((r|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){F=o;break}else l=l+8|0}}else F=t;l=F<<24>>24;if(F<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(l<<3)|0,0,(e<<24>>24)-l<<3|0)|0;i=1;return i|0}case 11:{l=a+24|0;r=b[l>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){m=f[f[a>>2]>>2]|0;z=a+40|0;o=un(f[z>>2]|0,f[z+4>>2]|0,f[c>>2]|0,0)|0;z=a+48|0;k=Vn(o|0,I|0,f[z>>2]|0,f[z+4>>2]|0)|0;z=m+k|0;k=0;while(1){m=g+(k<<3)|0;f[m>>2]=h[z>>0];f[m+4>>2]=0;k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){G=m;break}else z=z+1|0}}else G=r;z=G<<24>>24;if(G<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(z<<3)|0,0,(e<<24>>24)-z<<3|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function wb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,Q=0;c=u;u=u+16|0;d=c+8|0;e=c;if((f[a+96>>2]|0)==(f[a+92>>2]|0)){u=c;return}g=a+56|0;h=f[g>>2]|0;if((h|0)==(f[a+60>>2]|0)){Ri(a+52|0,b);i=b}else{f[h>>2]=f[b>>2];f[g>>2]=h+4;i=b}b=a+88|0;f[b>>2]=0;h=f[a>>2]|0;g=f[i>>2]|0;j=g+1|0;if((g|0)!=-1){k=((j>>>0)%3|0|0)==0?g+-2|0:j;if((k|0)==-1)l=-1;else l=f[(f[h>>2]|0)+(k<<2)>>2]|0;k=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((k|0)==-1){m=l;n=-1}else{m=l;n=f[(f[h>>2]|0)+(k<<2)>>2]|0}}else{m=-1;n=-1}k=a+24|0;h=f[k>>2]|0;l=h+(m>>>5<<2)|0;g=1<<(m&31);j=f[l>>2]|0;if(!(j&g)){f[l>>2]=j|g;g=f[i>>2]|0;j=g+1|0;if((g|0)==-1)o=-1;else o=((j>>>0)%3|0|0)==0?g+-2|0:j;f[e>>2]=o;j=f[(f[(f[a+44>>2]|0)+96>>2]|0)+(((o>>>0)/3|0)*12|0)+(((o>>>0)%3|0)<<2)>>2]|0;o=f[a+48>>2]|0;f[d>>2]=j;g=f[o+4>>2]|0;o=g+4|0;l=f[o>>2]|0;if((l|0)==(f[g+8>>2]|0))Ri(g,d);else{f[l>>2]=j;f[o>>2]=l+4}l=a+40|0;o=f[l>>2]|0;j=o+4|0;g=f[j>>2]|0;if((g|0)==(f[o+8>>2]|0)){Ri(o,e);p=f[l>>2]|0}else{f[g>>2]=f[e>>2];f[j>>2]=g+4;p=o}o=p+24|0;f[(f[p+12>>2]|0)+(m<<2)>>2]=f[o>>2];f[o>>2]=(f[o>>2]|0)+1;q=f[k>>2]|0}else q=h;h=q+(n>>>5<<2)|0;q=1<<(n&31);o=f[h>>2]|0;if(!(o&q)){f[h>>2]=o|q;q=f[i>>2]|0;do if((q|0)!=-1)if(!((q>>>0)%3|0)){r=q+2|0;break}else{r=q+-1|0;break}else r=-1;while(0);f[e>>2]=r;q=f[(f[(f[a+44>>2]|0)+96>>2]|0)+(((r>>>0)/3|0)*12|0)+(((r>>>0)%3|0)<<2)>>2]|0;r=f[a+48>>2]|0;f[d>>2]=q;o=f[r+4>>2]|0;r=o+4|0;h=f[r>>2]|0;if((h|0)==(f[o+8>>2]|0))Ri(o,d);else{f[h>>2]=q;f[r>>2]=h+4}h=a+40|0;r=f[h>>2]|0;q=r+4|0;o=f[q>>2]|0;if((o|0)==(f[r+8>>2]|0)){Ri(r,e);s=f[h>>2]|0}else{f[o>>2]=f[e>>2];f[q>>2]=o+4;s=r}r=s+24|0;f[(f[s+12>>2]|0)+(n<<2)>>2]=f[r>>2];f[r>>2]=(f[r>>2]|0)+1}r=f[i>>2]|0;if((r|0)==-1)t=-1;else t=f[(f[f[a>>2]>>2]|0)+(r<<2)>>2]|0;r=(f[k>>2]|0)+(t>>>5<<2)|0;n=1<<(t&31);s=f[r>>2]|0;if(!(n&s)){f[r>>2]=s|n;n=f[i>>2]|0;f[e>>2]=n;s=f[(f[(f[a+44>>2]|0)+96>>2]|0)+(((n>>>0)/3|0)*12|0)+(((n>>>0)%3|0)<<2)>>2]|0;n=f[a+48>>2]|0;f[d>>2]=s;r=f[n+4>>2]|0;n=r+4|0;o=f[n>>2]|0;if((o|0)==(f[r+8>>2]|0))Ri(r,d);else{f[o>>2]=s;f[n>>2]=o+4}o=a+40|0;n=f[o>>2]|0;s=n+4|0;r=f[s>>2]|0;if((r|0)==(f[n+8>>2]|0)){Ri(n,e);v=f[o>>2]|0}else{f[r>>2]=f[e>>2];f[s>>2]=r+4;v=n}n=v+24|0;f[(f[v+12>>2]|0)+(t<<2)>>2]=f[n>>2];f[n>>2]=(f[n>>2]|0)+1}n=f[b>>2]|0;a:do if((n|0)<3){t=a+12|0;v=a+44|0;r=a+48|0;s=a+40|0;o=a+92|0;q=n;while(1){h=q;while(1){w=a+52+(h*12|0)+4|0;x=f[w>>2]|0;if((f[a+52+(h*12|0)>>2]|0)!=(x|0))break;if((h|0)<2)h=h+1|0;else break a}m=x+-4|0;p=f[m>>2]|0;f[w>>2]=m;f[b>>2]=h;f[i>>2]=p;if((p|0)==-1)break;m=(p>>>0)/3|0;g=f[t>>2]|0;do if(!(f[g+(m>>>5<<2)>>2]&1<<(m&31))){j=p;l=g;b:while(1){y=(j>>>0)/3|0;z=l+(y>>>5<<2)|0;f[z>>2]=1<<(y&31)|f[z>>2];z=f[i>>2]|0;if((z|0)==-1)A=-1;else A=f[(f[f[a>>2]>>2]|0)+(z<<2)>>2]|0;y=(f[k>>2]|0)+(A>>>5<<2)|0;B=1<<(A&31);C=f[y>>2]|0;if(!(B&C)){f[y>>2]=C|B;B=f[i>>2]|0;f[e>>2]=B;C=f[(f[(f[v>>2]|0)+96>>2]|0)+(((B>>>0)/3|0)*12|0)+(((B>>>0)%3|0)<<2)>>2]|0;B=f[r>>2]|0;f[d>>2]=C;y=f[B+4>>2]|0;B=y+4|0;D=f[B>>2]|0;if((D|0)==(f[y+8>>2]|0))Ri(y,d);else{f[D>>2]=C;f[B>>2]=D+4}D=f[s>>2]|0;B=D+4|0;C=f[B>>2]|0;if((C|0)==(f[D+8>>2]|0)){Ri(D,e);E=f[s>>2]|0}else{f[C>>2]=f[e>>2];f[B>>2]=C+4;E=D}D=E+24|0;f[(f[E+12>>2]|0)+(A<<2)>>2]=f[D>>2];f[D>>2]=(f[D>>2]|0)+1;F=f[i>>2]|0}else F=z;z=f[a>>2]|0;if((F|0)==-1){G=93;break}D=F+1|0;C=((D>>>0)%3|0|0)==0?F+-2|0:D;if((C|0)==-1)H=-1;else H=f[(f[z+12>>2]|0)+(C<<2)>>2]|0;C=(((F>>>0)%3|0|0)==0?2:-1)+F|0;if((C|0)==-1)I=-1;else I=f[(f[z+12>>2]|0)+(C<<2)>>2]|0;C=(H|0)==-1;D=C?-1:(H>>>0)/3|0;B=(I|0)==-1;y=B?-1:(I>>>0)/3|0;if(C)J=1;else J=(f[(f[t>>2]|0)+(D>>>5<<2)>>2]&1<<(D&31)|0)!=0;do if(B)if(J){G=93;break b}else G=82;else{if(f[(f[t>>2]|0)+(y>>>5<<2)>>2]&1<<(y&31)|0)if(J){G=93;break b}else{G=82;break}D=f[(f[z>>2]|0)+(I<<2)>>2]|0;if(!(1<<(D&31)&f[(f[k>>2]|0)+(D>>>5<<2)>>2])){K=(f[o>>2]|0)+(D<<2)|0;D=f[K>>2]|0;f[K>>2]=D+1;L=(D|0)>0?1:2}else L=0;if(J?(L|0)<=(f[b>>2]|0):0){M=I;break}f[d>>2]=I;D=a+52+(L*12|0)+4|0;K=f[D>>2]|0;if((K|0)==(f[a+52+(L*12|0)+8>>2]|0))Ri(a+52+(L*12|0)|0,d);else{f[K>>2]=I;f[D>>2]=K+4}if((f[b>>2]|0)>(L|0))f[b>>2]=L;if(J){G=93;break b}else G=82}while(0);if((G|0)==82){G=0;if(C)N=-1;else N=f[(f[f[a>>2]>>2]|0)+(H<<2)>>2]|0;if(!(1<<(N&31)&f[(f[k>>2]|0)+(N>>>5<<2)>>2])){z=(f[o>>2]|0)+(N<<2)|0;y=f[z>>2]|0;f[z>>2]=y+1;O=(y|0)>0?1:2}else O=0;if((O|0)>(f[b>>2]|0))break;else M=H}f[i>>2]=M;j=M;l=f[t>>2]|0}if((G|0)==93){G=0;P=f[b>>2]|0;break}f[d>>2]=H;l=a+52+(O*12|0)+4|0;j=f[l>>2]|0;if((j|0)==(f[a+52+(O*12|0)+8>>2]|0))Ri(a+52+(O*12|0)|0,d);else{f[j>>2]=H;f[l>>2]=j+4}j=f[b>>2]|0;if((j|0)>(O|0)){f[b>>2]=O;Q=O}else Q=j;P=Q}else P=h;while(0);if((P|0)<3)q=P;else break a}u=c;return}while(0);f[i>>2]=-1;u=c;return}function xb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}xb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;xb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}yb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;yb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function zb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}zb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;zb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Ab(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Ab(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Ab(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}} -function Bb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Bb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Bb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Cb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Cb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Cb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Db(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Db(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Db(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Eb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Eb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Eb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Fb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Fb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Fb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Gb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Gb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Gb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Hb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Hb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Hb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Ib(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Ib(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Jb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Jb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Jb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Kb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Kb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Kb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Lb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Lb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Lb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Mb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Mb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Nb(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Nb(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=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,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;d=a;a=b;a:while(1){b=a;e=a+-4|0;g=d;while(1){h=g;b:while(1){i=h;j=b-i|0;k=j>>2;switch(k|0){case 2:{l=5;break a;break}case 3:{l=11;break a;break}case 4:{l=12;break a;break}case 5:{l=13;break a;break}case 1:case 0:{l=84;break a;break}default:{}}if((j|0)<124){l=15;break a}m=h+(((k|0)/2|0)<<2)|0;if((j|0)>3996){j=(k|0)/4|0;n=ig(h,h+(j<<2)|0,m,m+(j<<2)|0,e,c)|0}else n=Vg(h,m,e,c)|0;o=f[h>>2]|0;j=f[m>>2]|0;p=f[c>>2]|0;k=f[p>>2]|0;q=(f[p+4>>2]|0)-k>>3;if(q>>>0<=o>>>0){l=20;break a}r=k;if(q>>>0<=j>>>0){l=22;break a}k=f[r+(o<<3)>>2]|0;s=f[r+(j<<3)>>2]|0;if(k>>>0>>0){t=e;u=n;break}else v=e;while(1){v=v+-4|0;if((h|0)==(v|0))break;w=f[v>>2]|0;if(q>>>0<=w>>>0){l=51;break a}if((f[r+(w<<3)>>2]|0)>>>0>>0){l=53;break b}}s=h+4|0;j=f[e>>2]|0;if(q>>>0<=j>>>0){l=26;break a}if(k>>>0<(f[r+(j<<3)>>2]|0)>>>0)x=s;else{if((s|0)==(e|0)){l=84;break a}else y=s;while(1){z=f[y>>2]|0;if(q>>>0<=z>>>0){l=32;break a}if(k>>>0<(f[r+(z<<3)>>2]|0)>>>0)break;s=y+4|0;if((s|0)==(e|0)){l=84;break a}else y=s}f[y>>2]=j;f[e>>2]=z;x=y+4|0}if((x|0)==(e|0)){l=84;break a}r=f[h>>2]|0;A=f[c>>2]|0;k=f[A>>2]|0;q=(f[A+4>>2]|0)-k>>3;if(q>>>0<=r>>>0){l=38;break a}s=k;k=e;B=x;C=r;while(1){r=s+(C<<3)|0;D=q>>>0>C>>>0;E=B;while(1){F=f[E>>2]|0;if(q>>>0<=F>>>0){l=40;break a}G=f[r>>2]|0;if(G>>>0<(f[s+(F<<3)>>2]|0)>>>0)break;if(D)E=E+4|0;else{l=38;break a}}if(q>>>0>C>>>0)H=k;else{l=46;break a}do{H=H+-4|0;I=f[H>>2]|0;if(q>>>0<=I>>>0){l=47;break a}}while(G>>>0<(f[s+(I<<3)>>2]|0)>>>0);if(E>>>0>=H>>>0){h=E;continue b}D=f[E>>2]|0;f[E>>2]=I;f[H>>2]=D;C=f[h>>2]|0;if(q>>>0<=C>>>0){l=38;break a}else{k=H;B=E+4|0}}}if((l|0)==53){l=0;f[h>>2]=w;f[v>>2]=o;t=v;u=n+1|0}B=h+4|0;c:do if(B>>>0>>0){k=f[B>>2]|0;C=f[c>>2]|0;q=f[C>>2]|0;s=(f[C+4>>2]|0)-q>>3;if(s>>>0>k>>>0){J=t;K=B;L=u;M=m;N=s;O=q;P=C;Q=k}else{R=C;l=57;break a}while(1){C=f[c>>2]|0;k=C+4|0;q=f[M>>2]|0;s=K;j=O;D=N;S=P;r=Q;while(1){F=j;if(D>>>0<=q>>>0){l=59;break a}if((f[F+(r<<3)>>2]|0)>>>0>=(f[F+(q<<3)>>2]|0)>>>0)break;F=s+4|0;T=f[F>>2]|0;j=f[C>>2]|0;D=(f[k>>2]|0)-j>>3;if(D>>>0<=T>>>0){R=C;l=57;break a}else{s=F;S=C;r=T}}C=f[M>>2]|0;O=f[S>>2]|0;N=(f[S+4>>2]|0)-O>>3;D=O;j=D+(C<<3)|0;if(N>>>0>C>>>0)U=J;else{l=65;break a}do{U=U+-4|0;V=f[U>>2]|0;if(N>>>0<=V>>>0){l=66;break a}}while((f[D+(V<<3)>>2]|0)>>>0>=(f[j>>2]|0)>>>0);if(s>>>0>U>>>0){W=M;X=L;Y=s;break c}f[s>>2]=V;f[U>>2]=r;K=s+4|0;Q=f[K>>2]|0;if(N>>>0<=Q>>>0){R=S;l=57;break a}else{J=U;L=L+1|0;M=(M|0)==(s|0)?U:M;P=S}}}else{W=m;X=u;Y=B}while(0);if((Y|0)!=(W|0)){B=f[W>>2]|0;j=f[Y>>2]|0;Z=f[c>>2]|0;D=f[Z>>2]|0;C=(f[Z+4>>2]|0)-D>>3;if(C>>>0<=B>>>0){l=72;break a}k=D;if(C>>>0<=j>>>0){l=74;break a}if((f[k+(B<<3)>>2]|0)>>>0<(f[k+(j<<3)>>2]|0)>>>0){f[Y>>2]=B;f[W>>2]=j;_=X+1|0}else _=X}else _=X;if(!_){$=_d(h,Y,c)|0;j=Y+4|0;if(_d(j,a,c)|0){l=83;break}if($){g=j;continue}}j=Y;if((j-i|0)>=(b-j|0)){l=82;break}Ob(h,Y,c);g=Y+4|0}if((l|0)==82){l=0;Ob(Y+4|0,a,c);d=h;a=Y;continue}else if((l|0)==83){l=0;if($){l=84;break}else{d=h;a=Y;continue}}}switch(l|0){case 5:{l=f[e>>2]|0;Y=f[h>>2]|0;d=f[c>>2]|0;$=f[d>>2]|0;i=(f[d+4>>2]|0)-$>>3;if(i>>>0<=l>>>0)aq(d);_=$;if(i>>>0<=Y>>>0)aq(d);if((f[_+(l<<3)>>2]|0)>>>0>=(f[_+(Y<<3)>>2]|0)>>>0)return;f[h>>2]=l;f[e>>2]=Y;return}case 11:{Vg(h,h+4|0,e,c)|0;return}case 12:{jh(h,h+4|0,h+8|0,e,c)|0;return}case 13:{ig(h,h+4|0,h+8|0,h+12|0,e,c)|0;return}case 15:{ih(h,a,c);return}case 20:{aq(p);break}case 22:{aq(p);break}case 26:{aq(p);break}case 32:{aq(p);break}case 38:{aq(A);break}case 40:{aq(A);break}case 46:{aq(A);break}case 47:{aq(A);break}case 51:{aq(p);break}case 57:{aq(R);break}case 59:{aq(S);break}case 65:{if(N>>>0>(f[J+-4>>2]|0)>>>0)aq(S);else aq(S);break}case 66:{aq(S);break}case 72:{aq(Z);break}case 74:{aq(Z);break}case 84:return}}function Pb(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=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;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Vn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){f[g+(r<<2)>>2]=b[o>>0];r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=un(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Vn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){f[g+(t<<2)>>2]=h[m>>0];t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=un(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Vn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=d[l>>1];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=un(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Vn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=j[r>>1];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=un(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Vn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){f[g+(o<<2)>>2]=f[t>>2];o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(t<<2)|0,0,(e<<24>>24)-t<<2|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=un(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Vn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){f[g+(m<<2)>>2]=f[q>>2];m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(q<<2)|0,0,(e<<24>>24)-q<<2|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=un(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Vn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){f[g+(l<<2)>>2]=f[k>>2];l=l+1|0;t=b[q>>0]|0;if((l|0)>=((t<<24>>24>e<<24>>24?e:t)<<24>>24|0)){z=t;break}else k=k+8|0}}else z=m;k=z<<24>>24;if(z<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(k<<2)|0,0,(e<<24>>24)-k<<2|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;t=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Vn(t|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+r|0;r=0;while(1){f[g+(r<<2)>>2]=f[o>>2];r=r+1|0;q=b[k>>0]|0;if((r|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){A=q;break}else o=o+8|0}}else A=l;o=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 9:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=un(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Vn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=~~$(n[m>>2])>>>0;f[g+(t<<2)>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){B=k;break}else m=m+4|0}}else B=r;m=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=un(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Vn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=~~+p[l>>3]>>>0;q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){C=o;break}else l=l+8|0}}else C=t;l=C<<24>>24;if(C<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 11:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=un(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Vn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=h[r>>0];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){D=m;break}else r=r+1|0}}else D=q;r=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function Qb(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var i=0,k=0,l=0,m=0,o=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;if(!g){i=0;return i|0}do switch(f[a+28>>2]|0){case 1:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){m=f[f[a>>2]>>2]|0;o=a+40|0;q=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Vn(q|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=m+r|0;r=0;while(1){f[g+(r<<2)>>2]=b[o>>0];r=r+1|0;m=b[k>>0]|0;if((r|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){s=m;break}else o=o+1|0}}else s=l;o=s<<24>>24;if(s<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 2:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=un(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Vn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){f[g+(t<<2)>>2]=h[m>>0];t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){u=k;break}else m=m+1|0}}else u=r;m=u<<24>>24;if(u<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 3:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=un(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Vn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=d[l>>1];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){v=o;break}else l=l+2|0}}else v=t;l=v<<24>>24;if(v<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 4:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=un(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Vn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=j[r>>1];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){w=m;break}else r=r+2|0}}else w=q;r=w<<24>>24;if(w<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}case 5:{r=a+24|0;k=b[r>>0]|0;if((k<<24>>24>e<<24>>24?e:k)<<24>>24>0){l=f[f[a>>2]>>2]|0;t=a+40|0;m=un(f[t>>2]|0,f[t+4>>2]|0,f[c>>2]|0,0)|0;t=a+48|0;o=Vn(m|0,I|0,f[t>>2]|0,f[t+4>>2]|0)|0;t=l+o|0;o=0;while(1){f[g+(o<<2)>>2]=f[t>>2];o=o+1|0;l=b[r>>0]|0;if((o|0)>=((l<<24>>24>e<<24>>24?e:l)<<24>>24|0)){x=l;break}else t=t+4|0}}else x=k;t=x<<24>>24;if(x<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(t<<2)|0,0,(e<<24>>24)-t<<2|0)|0;i=1;return i|0}case 6:{t=a+24|0;o=b[t>>0]|0;if((o<<24>>24>e<<24>>24?e:o)<<24>>24>0){r=f[f[a>>2]>>2]|0;q=a+40|0;l=un(f[q>>2]|0,f[q+4>>2]|0,f[c>>2]|0,0)|0;q=a+48|0;m=Vn(l|0,I|0,f[q>>2]|0,f[q+4>>2]|0)|0;q=r+m|0;m=0;while(1){f[g+(m<<2)>>2]=f[q>>2];m=m+1|0;r=b[t>>0]|0;if((m|0)>=((r<<24>>24>e<<24>>24?e:r)<<24>>24|0)){y=r;break}else q=q+4|0}}else y=o;q=y<<24>>24;if(y<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(q<<2)|0,0,(e<<24>>24)-q<<2|0)|0;i=1;return i|0}case 7:{q=a+24|0;m=b[q>>0]|0;if((m<<24>>24>e<<24>>24?e:m)<<24>>24>0){t=f[f[a>>2]>>2]|0;k=a+40|0;r=un(f[k>>2]|0,f[k+4>>2]|0,f[c>>2]|0,0)|0;k=a+48|0;l=Vn(r|0,I|0,f[k>>2]|0,f[k+4>>2]|0)|0;k=t+l|0;l=0;while(1){f[g+(l<<2)>>2]=f[k>>2];l=l+1|0;t=b[q>>0]|0;if((l|0)>=((t<<24>>24>e<<24>>24?e:t)<<24>>24|0)){z=t;break}else k=k+8|0}}else z=m;k=z<<24>>24;if(z<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(k<<2)|0,0,(e<<24>>24)-k<<2|0)|0;i=1;return i|0}case 8:{k=a+24|0;l=b[k>>0]|0;if((l<<24>>24>e<<24>>24?e:l)<<24>>24>0){q=f[f[a>>2]>>2]|0;o=a+40|0;t=un(f[o>>2]|0,f[o+4>>2]|0,f[c>>2]|0,0)|0;o=a+48|0;r=Vn(t|0,I|0,f[o>>2]|0,f[o+4>>2]|0)|0;o=q+r|0;r=0;while(1){f[g+(r<<2)>>2]=f[o>>2];r=r+1|0;q=b[k>>0]|0;if((r|0)>=((q<<24>>24>e<<24>>24?e:q)<<24>>24|0)){A=q;break}else o=o+8|0}}else A=l;o=A<<24>>24;if(A<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(o<<2)|0,0,(e<<24>>24)-o<<2|0)|0;i=1;return i|0}case 9:{o=a+24|0;r=b[o>>0]|0;if((r<<24>>24>e<<24>>24?e:r)<<24>>24>0){k=f[f[a>>2]>>2]|0;m=a+40|0;q=un(f[m>>2]|0,f[m+4>>2]|0,f[c>>2]|0,0)|0;m=a+48|0;t=Vn(q|0,I|0,f[m>>2]|0,f[m+4>>2]|0)|0;m=k+t|0;t=0;while(1){k=~~$(n[m>>2]);f[g+(t<<2)>>2]=k;t=t+1|0;k=b[o>>0]|0;if((t|0)>=((k<<24>>24>e<<24>>24?e:k)<<24>>24|0)){B=k;break}else m=m+4|0}}else B=r;m=B<<24>>24;if(B<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(m<<2)|0,0,(e<<24>>24)-m<<2|0)|0;i=1;return i|0}case 10:{m=a+24|0;t=b[m>>0]|0;if((t<<24>>24>e<<24>>24?e:t)<<24>>24>0){o=f[f[a>>2]>>2]|0;l=a+40|0;k=un(f[l>>2]|0,f[l+4>>2]|0,f[c>>2]|0,0)|0;l=a+48|0;q=Vn(k|0,I|0,f[l>>2]|0,f[l+4>>2]|0)|0;l=o+q|0;q=0;while(1){f[g+(q<<2)>>2]=~~+p[l>>3];q=q+1|0;o=b[m>>0]|0;if((q|0)>=((o<<24>>24>e<<24>>24?e:o)<<24>>24|0)){C=o;break}else l=l+8|0}}else C=t;l=C<<24>>24;if(C<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(l<<2)|0,0,(e<<24>>24)-l<<2|0)|0;i=1;return i|0}case 11:{l=a+24|0;q=b[l>>0]|0;if((q<<24>>24>e<<24>>24?e:q)<<24>>24>0){m=f[f[a>>2]>>2]|0;r=a+40|0;o=un(f[r>>2]|0,f[r+4>>2]|0,f[c>>2]|0,0)|0;r=a+48|0;k=Vn(o|0,I|0,f[r>>2]|0,f[r+4>>2]|0)|0;r=m+k|0;k=0;while(1){f[g+(k<<2)>>2]=h[r>>0];k=k+1|0;m=b[l>>0]|0;if((k|0)>=((m<<24>>24>e<<24>>24?e:m)<<24>>24|0)){D=m;break}else r=r+1|0}}else D=q;r=D<<24>>24;if(D<<24>>24>=e<<24>>24){i=1;return i|0}sj(g+(r<<2)|0,0,(e<<24>>24)-r<<2|0)|0;i=1;return i|0}default:{i=0;return i|0}}while(0);return 0}function Rb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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=Oa,J=0,K=0,L=0,M=0,N=Oa;e=u;u=u+48|0;g=e+36|0;h=e+24|0;i=e+12|0;j=e;if(!(xh(a,c,d)|0)){k=0;u=e;return k|0}l=f[(f[(f[c+4>>2]|0)+8>>2]|0)+(d<<2)>>2]|0;if((f[l+28>>2]|0)!=9){k=0;u=e;return k|0}m=c+48|0;c=f[m>>2]|0;o=ln(32)|0;f[g>>2]=o;f[g+8>>2]=-2147483616;f[g+4>>2]=17;p=o;q=14495;r=p+17|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[o+17>>0]=0;o=c+16|0;s=f[o>>2]|0;if(s){t=o;v=s;a:while(1){s=v;while(1){if((f[s+16>>2]|0)>=(d|0))break;w=f[s+4>>2]|0;if(!w){x=t;break a}else s=w}v=f[s>>2]|0;if(!v){x=s;break}else t=s}if(((x|0)!=(o|0)?(f[x+16>>2]|0)<=(d|0):0)?(o=x+20|0,(Jh(o,g)|0)!=0):0)y=Hk(o,g,-1)|0;else z=12}else z=12;if((z|0)==12)y=Hk(c,g,-1)|0;if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);if((y|0)<1){k=0;u=e;return k|0}c=f[m>>2]|0;o=ln(32)|0;f[g>>2]=o;f[g+8>>2]=-2147483616;f[g+4>>2]=19;p=o;q=14438;r=p+19|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[o+19>>0]=0;o=c+16|0;x=f[o>>2]|0;if(x){t=o;v=x;b:while(1){x=v;while(1){if((f[x+16>>2]|0)>=(d|0))break;w=f[x+4>>2]|0;if(!w){A=t;break b}else x=w}v=f[x>>2]|0;if(!v){A=x;break}else t=x}if((A|0)!=(o|0)?(f[A+16>>2]|0)<=(d|0):0)B=A+20|0;else z=24}else z=24;if((z|0)==24)B=c;if(!(Jh(B,g)|0))C=0;else{B=f[m>>2]|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;c=ln(32)|0;f[h>>2]=c;f[h+8>>2]=-2147483616;f[h+4>>2]=18;p=c;q=14458;r=p+18|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[c+18>>0]=0;c=B+16|0;A=f[c>>2]|0;if(A){o=c;t=A;c:while(1){A=t;while(1){if((f[A+16>>2]|0)>=(d|0))break;v=f[A+4>>2]|0;if(!v){D=o;break c}else A=v}t=f[A>>2]|0;if(!t){D=A;break}else o=A}if((D|0)!=(c|0)?(f[D+16>>2]|0)<=(d|0):0)E=D+20|0;else z=34}else z=34;if((z|0)==34)E=B;B=(Jh(E,h)|0)!=0;if((b[h+11>>0]|0)<0)Oq(f[h>>2]|0);C=B}if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);if(!C){Wd(a+40|0,l,y)|0;k=1;u=e;return k|0}C=l+24|0;l=b[C>>0]|0;B=l<<24>>24;f[i>>2]=0;E=i+4|0;f[E>>2]=0;f[i+8>>2]=0;do if(l<<24>>24)if(l<<24>>24<0)aq(i);else{D=B<<2;c=ln(D)|0;f[i>>2]=c;o=c+(B<<2)|0;f[i+8>>2]=o;sj(c|0,0,D|0)|0;f[E>>2]=o;F=c;break}else F=0;while(0);B=f[m>>2]|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;l=ln(32)|0;f[j>>2]=l;f[j+8>>2]=-2147483616;f[j+4>>2]=19;p=l;q=14438;r=p+19|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[l+19>>0]=0;l=b[C>>0]|0;c=l<<24>>24;o=B+16|0;D=f[o>>2]|0;if(D){t=o;x=D;d:while(1){D=x;while(1){if((f[D+16>>2]|0)>=(d|0))break;v=f[D+4>>2]|0;if(!v){G=t;break d}else D=v}x=f[D>>2]|0;if(!x){G=D;break}else t=D}if(((G|0)!=(o|0)?(f[G+16>>2]|0)<=(d|0):0)?(o=G+20|0,(Jh(o,j)|0)!=0):0){t=Rg(o,j)|0;if((t|0)!=(G+24|0)){pj(g,t+28|0);t=g+11|0;G=b[t>>0]|0;o=G<<24>>24<0;if(!((o?f[g+4>>2]|0:G&255)|0))H=G;else{if(l<<24>>24>0){x=o?f[g>>2]|0:g;o=0;do{I=$(bq(x,h));A=x;x=f[h>>2]|0;if((A|0)==(x|0))break;n[F+(o<<2)>>2]=I;o=o+1|0}while((o|0)<(c|0));J=b[t>>0]|0}else J=G;H=J}if(H<<24>>24<0)Oq(f[g>>2]|0)}}else z=64}else z=64;if((z|0)==64?(H=Rg(B,j)|0,(H|0)!=(B+4|0)):0){pj(g,H+28|0);H=g+11|0;B=b[H>>0]|0;J=B<<24>>24<0;if(!((J?f[g+4>>2]|0:B&255)|0))K=B;else{if(l<<24>>24>0){l=J?f[g>>2]|0:g;J=0;do{I=$(bq(l,h));G=l;l=f[h>>2]|0;if((G|0)==(l|0))break;n[F+(J<<2)>>2]=I;J=J+1|0}while((J|0)<(c|0));L=b[H>>0]|0}else L=B;K=L}if(K<<24>>24<0)Oq(f[g>>2]|0)}if((b[j+11>>0]|0)<0)Oq(f[j>>2]|0);j=f[m>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;m=ln(32)|0;f[g>>2]=m;f[g+8>>2]=-2147483616;f[g+4>>2]=18;p=m;q=14458;r=p+18|0;do{b[p>>0]=b[q>>0]|0;p=p+1|0;q=q+1|0}while((p|0)<(r|0));b[m+18>>0]=0;m=j+16|0;q=f[m>>2]|0;if(q){p=m;r=q;e:while(1){q=r;while(1){if((f[q+16>>2]|0)>=(d|0))break;K=f[q+4>>2]|0;if(!K){M=p;break e}else q=K}r=f[q>>2]|0;if(!r){M=q;break}else p=q}if(((M|0)!=(m|0)?(f[M+16>>2]|0)<=(d|0):0)?(d=M+20|0,(Jh(d,g)|0)!=0):0)N=$(sk(d,g,$(1.0)));else z=86}else z=86;if((z|0)==86)N=$(sk(j,g,$(1.0)));if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);Dl(a+40|0,y,f[i>>2]|0,b[C>>0]|0,N);C=f[i>>2]|0;if(C|0){i=f[E>>2]|0;if((i|0)!=(C|0))f[E>>2]=i+(~((i+-4-C|0)>>>2)<<2);Oq(C)}k=1;u=e;return k|0}function Sb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;e=u;u=u+64|0;d=e+48|0;h=e+36|0;i=e+24|0;j=e+16|0;k=e+8|0;l=e;m=e+32|0;n=a+60|0;f[a+68>>2]=g;g=a+108|0;tk(g);o=a+56|0;p=f[o>>2]|0;q=(f[p+4>>2]|0)-(f[p>>2]|0)|0;r=q>>2;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;s=i;f[s>>2]=0;f[s+4>>2]=0;s=j;f[s>>2]=0;f[s+4>>2]=0;s=k;f[s>>2]=0;f[s+4>>2]=0;s=l;f[s>>2]=0;f[s+4>>2]=0;if((q|0)<=0){u=e;return 1}q=h+4|0;s=h+8|0;t=a+104|0;v=i+4|0;w=a+100|0;x=j+4|0;y=a+8|0;z=a+16|0;A=a+32|0;B=a+12|0;C=a+28|0;D=a+20|0;E=a+24|0;F=a+96|0;a=k+4|0;G=l+4|0;H=f[p>>2]|0;if((f[p+4>>2]|0)==(H|0)){J=p;aq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];ic(n,d,h);H=f[h>>2]|0;p=(H|0)>-1?H:0-H|0;M=f[q>>2]|0;N=(M|0)>-1?M:0-M|0;O=Vn(N|0,((N|0)<0)<<31>>31|0,p|0,((p|0)<0)<<31>>31|0)|0;p=f[s>>2]|0;N=(p|0)>-1;P=N?p:0-p|0;p=Vn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((p|0)==0&(P|0)==0){O=f[t>>2]|0;Q=O;R=h;S=M;T=O}else{O=f[t>>2]|0;U=((O|0)<0)<<31>>31;V=un(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=Ik(V|0,I|0,p|0,P|0)|0;f[h>>2]=H;V=un(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=Ik(V|0,I|0,p|0,P|0)|0;f[q>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=s;S=M;T=O}f[R>>2]=Q;O=f[h>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[s>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[s>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[s>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){p=(N|0)==(Z|0);if(!(P&p)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(p&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);f[i>>2]=$;f[v>>2]=aa;P=0-S|0;M=0-_|0;f[h>>2]=0-O;f[q>>2]=P;f[s>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(p=(N|0)==(ca|0),!(M&p)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(p&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);f[j>>2]=da;f[x>>2]=ea;N=K<<1;M=b+(N<<2)|0;H=f[y>>2]|0;if((H|0)>0){O=0;P=i;p=H;while(1){if((p|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;U=f[z>>2]|0;if((V|0)>(U|0)){fa=f[A>>2]|0;f[fa+(H<<2)>>2]=U;ga=fa}else{fa=f[B>>2]|0;U=f[A>>2]|0;f[U+(H<<2)>>2]=(V|0)<(fa|0)?fa:V;ga=U}H=H+1|0;U=f[y>>2]|0}while((H|0)<(U|0));ha=ga;ia=U}else{ha=f[A>>2]|0;ia=p}H=(f[M+(O<<2)>>2]|0)-(f[ha+(O<<2)>>2]|0)|0;U=k+(O<<2)|0;f[U>>2]=H;ja=f[C>>2]|0;if((H|0)>=(ja|0)){if((H|0)>(f[E>>2]|0)){ka=H-(f[D>>2]|0)|0;la=52}}else{ka=(f[D>>2]|0)+H|0;la=52}if((la|0)==52){la=0;f[U>>2]=ka}O=O+1|0;if((O|0)>=(ia|0))break;else{P=ha;p=ia}}if((ia|0)>0){p=0;P=j;O=ia;U=ja;while(1){if((O|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;fa=f[z>>2]|0;if((V|0)>(fa|0))f[ha+(H<<2)>>2]=fa;else{fa=f[B>>2]|0;f[ha+(H<<2)>>2]=(V|0)<(fa|0)?fa:V}H=H+1|0;ma=f[y>>2]|0}while((H|0)<(ma|0));na=f[C>>2]|0;oa=ma}else{na=U;oa=O}H=(f[M+(p<<2)>>2]|0)-(f[ha+(p<<2)>>2]|0)|0;V=l+(p<<2)|0;f[V>>2]=H;if((H|0)>=(na|0)){if((H|0)>(f[E>>2]|0)){pa=H-(f[D>>2]|0)|0;la=65}}else{pa=(f[D>>2]|0)+H|0;la=65}if((la|0)==65){la=0;f[V>>2]=pa}p=p+1|0;if((p|0)>=(oa|0))break;else{P=ha;O=oa;U=na}}}}U=f[k>>2]|0;O=f[t>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))qa=(f[F>>2]|0)+U|0;else qa=U;else qa=U-(f[F>>2]|0)|0;f[k>>2]=qa;U=f[a>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ra=(f[F>>2]|0)+U|0;else ra=U;else ra=U-(f[F>>2]|0)|0;f[a>>2]=ra;U=f[l>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))sa=(f[F>>2]|0)+U|0;else sa=U;else sa=U-(f[F>>2]|0)|0;f[l>>2]=sa;U=f[G>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ta=(f[F>>2]|0)+U|0;else ta=U;else ta=U-(f[F>>2]|0)|0;f[G>>2]=ta;if((((ra|0)>-1?ra:0-ra|0)+((qa|0)>-1?qa:0-qa|0)|0)<(((sa|0)>-1?sa:0-sa|0)+((ta|0)>-1?ta:0-ta|0)|0)){fj(g,0);ua=k}else{fj(g,1);ua=l}U=f[ua>>2]|0;if((U|0)<0)va=(f[F>>2]|0)+U|0;else va=U;U=c+(N<<2)|0;f[U>>2]=va;O=f[ua+4>>2]|0;if((O|0)<0)wa=(f[F>>2]|0)+O|0;else wa=O;f[U+4>>2]=wa;K=K+1|0;if((K|0)>=(r|0)){la=3;break}U=f[o>>2]|0;L=f[U>>2]|0;if((f[U+4>>2]|0)-L>>2>>>0<=K>>>0){J=U;la=4;break}}if((la|0)==3){u=e;return 1}else if((la|0)==4)aq(J);return 0}function Tb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;e=u;u=u+64|0;d=e+48|0;h=e+36|0;i=e+24|0;j=e+16|0;k=e+8|0;l=e;m=e+32|0;n=a+60|0;f[a+68>>2]=g;g=a+108|0;tk(g);o=a+56|0;p=f[o>>2]|0;q=(f[p+4>>2]|0)-(f[p>>2]|0)|0;r=q>>2;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;s=i;f[s>>2]=0;f[s+4>>2]=0;s=j;f[s>>2]=0;f[s+4>>2]=0;s=k;f[s>>2]=0;f[s+4>>2]=0;s=l;f[s>>2]=0;f[s+4>>2]=0;if((q|0)<=0){u=e;return 1}q=h+4|0;s=h+8|0;t=a+104|0;v=i+4|0;w=a+100|0;x=j+4|0;y=a+8|0;z=a+16|0;A=a+32|0;B=a+12|0;C=a+28|0;D=a+20|0;E=a+24|0;F=a+96|0;a=k+4|0;G=l+4|0;H=f[p>>2]|0;if((f[p+4>>2]|0)==(H|0)){J=p;aq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];$b(n,d,h);H=f[h>>2]|0;p=(H|0)>-1?H:0-H|0;M=f[q>>2]|0;N=(M|0)>-1?M:0-M|0;O=Vn(N|0,((N|0)<0)<<31>>31|0,p|0,((p|0)<0)<<31>>31|0)|0;p=f[s>>2]|0;N=(p|0)>-1;P=N?p:0-p|0;p=Vn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((p|0)==0&(P|0)==0){O=f[t>>2]|0;Q=O;R=h;S=M;T=O}else{O=f[t>>2]|0;U=((O|0)<0)<<31>>31;V=un(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=Ik(V|0,I|0,p|0,P|0)|0;f[h>>2]=H;V=un(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=Ik(V|0,I|0,p|0,P|0)|0;f[q>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=s;S=M;T=O}f[R>>2]=Q;O=f[h>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[s>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[s>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[s>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){p=(N|0)==(Z|0);if(!(P&p)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(p&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);f[i>>2]=$;f[v>>2]=aa;P=0-S|0;M=0-_|0;f[h>>2]=0-O;f[q>>2]=P;f[s>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(p=(N|0)==(ca|0),!(M&p)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(p&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);f[j>>2]=da;f[x>>2]=ea;N=K<<1;M=b+(N<<2)|0;H=f[y>>2]|0;if((H|0)>0){O=0;P=i;p=H;while(1){if((p|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;U=f[z>>2]|0;if((V|0)>(U|0)){fa=f[A>>2]|0;f[fa+(H<<2)>>2]=U;ga=fa}else{fa=f[B>>2]|0;U=f[A>>2]|0;f[U+(H<<2)>>2]=(V|0)<(fa|0)?fa:V;ga=U}H=H+1|0;U=f[y>>2]|0}while((H|0)<(U|0));ha=ga;ia=U}else{ha=f[A>>2]|0;ia=p}H=(f[M+(O<<2)>>2]|0)-(f[ha+(O<<2)>>2]|0)|0;U=k+(O<<2)|0;f[U>>2]=H;ja=f[C>>2]|0;if((H|0)>=(ja|0)){if((H|0)>(f[E>>2]|0)){ka=H-(f[D>>2]|0)|0;la=52}}else{ka=(f[D>>2]|0)+H|0;la=52}if((la|0)==52){la=0;f[U>>2]=ka}O=O+1|0;if((O|0)>=(ia|0))break;else{P=ha;p=ia}}if((ia|0)>0){p=0;P=j;O=ia;U=ja;while(1){if((O|0)>0){H=0;do{V=f[P+(H<<2)>>2]|0;fa=f[z>>2]|0;if((V|0)>(fa|0))f[ha+(H<<2)>>2]=fa;else{fa=f[B>>2]|0;f[ha+(H<<2)>>2]=(V|0)<(fa|0)?fa:V}H=H+1|0;ma=f[y>>2]|0}while((H|0)<(ma|0));na=f[C>>2]|0;oa=ma}else{na=U;oa=O}H=(f[M+(p<<2)>>2]|0)-(f[ha+(p<<2)>>2]|0)|0;V=l+(p<<2)|0;f[V>>2]=H;if((H|0)>=(na|0)){if((H|0)>(f[E>>2]|0)){pa=H-(f[D>>2]|0)|0;la=65}}else{pa=(f[D>>2]|0)+H|0;la=65}if((la|0)==65){la=0;f[V>>2]=pa}p=p+1|0;if((p|0)>=(oa|0))break;else{P=ha;O=oa;U=na}}}}U=f[k>>2]|0;O=f[t>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))qa=(f[F>>2]|0)+U|0;else qa=U;else qa=U-(f[F>>2]|0)|0;f[k>>2]=qa;U=f[a>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ra=(f[F>>2]|0)+U|0;else ra=U;else ra=U-(f[F>>2]|0)|0;f[a>>2]=ra;U=f[l>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))sa=(f[F>>2]|0)+U|0;else sa=U;else sa=U-(f[F>>2]|0)|0;f[l>>2]=sa;U=f[G>>2]|0;if((O|0)>=(U|0))if((U|0)<(0-O|0))ta=(f[F>>2]|0)+U|0;else ta=U;else ta=U-(f[F>>2]|0)|0;f[G>>2]=ta;if((((ra|0)>-1?ra:0-ra|0)+((qa|0)>-1?qa:0-qa|0)|0)<(((sa|0)>-1?sa:0-sa|0)+((ta|0)>-1?ta:0-ta|0)|0)){fj(g,0);ua=k}else{fj(g,1);ua=l}U=f[ua>>2]|0;if((U|0)<0)va=(f[F>>2]|0)+U|0;else va=U;U=c+(N<<2)|0;f[U>>2]=va;O=f[ua+4>>2]|0;if((O|0)<0)wa=(f[F>>2]|0)+O|0;else wa=O;f[U+4>>2]=wa;K=K+1|0;if((K|0)>=(r|0)){la=3;break}U=f[o>>2]|0;L=f[U>>2]|0;if((f[U+4>>2]|0)-L>>2>>>0<=K>>>0){J=U;la=4;break}}if((la|0)==3){u=e;return 1}else if((la|0)==4)aq(J);return 0}function Ub(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,Y=Oa,Z=0,_=0,aa=0,ba=0;d=u;u=u+16|0;e=d;g=a+16|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[g>>2]=$(1.0);i=a+20|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[a+36>>2]=$(1.0);j=f[c+8>>2]|0;a:do if(j|0){k=a+4|0;l=a+12|0;m=a+8|0;o=j;p=j;while(1){q=o+8|0;r=b[q+11>>0]|0;s=r<<24>>24<0;t=s?f[q>>2]|0:q;v=s?f[o+12>>2]|0:r&255;if(v>>>0>3){r=t;s=v;w=v;while(1){x=X(h[r>>0]|h[r+1>>0]<<8|h[r+2>>0]<<16|h[r+3>>0]<<24,1540483477)|0;s=(X(x>>>24^x,1540483477)|0)^(X(s,1540483477)|0);w=w+-4|0;if(w>>>0<=3)break;else r=r+4|0}r=v+-4|0;w=r&-4;y=r-w|0;z=t+(w+4)|0;A=s}else{y=v;z=t;A=v}switch(y|0){case 3:{B=h[z+2>>0]<<16^A;C=8;break}case 2:{B=A;C=8;break}case 1:{D=A;C=9;break}default:E=A}if((C|0)==8){C=0;D=h[z+1>>0]<<8^B;C=9}if((C|0)==9){C=0;E=X(D^h[z>>0],1540483477)|0}w=X(E>>>13^E,1540483477)|0;r=w>>>15^w;w=f[k>>2]|0;x=(w|0)==0;b:do if(!x){F=w+-1|0;G=(F&w|0)==0;if(!G)if(r>>>0>>0)H=r;else H=(r>>>0)%(w>>>0)|0;else H=r&F;I=f[(f[a>>2]|0)+(H<<2)>>2]|0;if((I|0)!=0?(J=f[I>>2]|0,(J|0)!=0):0){I=(v|0)==0;if(G){if(I){G=J;while(1){K=f[G+4>>2]|0;if(!((K|0)==(r|0)|(K&F|0)==(H|0))){L=H;C=50;break b}K=b[G+8+11>>0]|0;if(!((K<<24>>24<0?f[G+12>>2]|0:K&255)|0))break b;G=f[G>>2]|0;if(!G){L=H;C=50;break b}}}else M=J;while(1){G=f[M+4>>2]|0;if(!((G|0)==(r|0)|(G&F|0)==(H|0))){L=H;C=50;break b}G=M+8|0;K=b[G+11>>0]|0;N=K<<24>>24<0;O=K&255;do if(((N?f[M+12>>2]|0:O)|0)==(v|0)){K=f[G>>2]|0;if(N)if(!(Vk(K,t,v)|0))break b;else break;if((b[t>>0]|0)==(K&255)<<24>>24){K=G;P=O;Q=t;do{P=P+-1|0;K=K+1|0;if(!P)break b;Q=Q+1|0}while((b[K>>0]|0)==(b[Q>>0]|0))}}while(0);M=f[M>>2]|0;if(!M){L=H;C=50;break b}}}if(I){F=J;while(1){O=f[F+4>>2]|0;if((O|0)!=(r|0)){if(O>>>0>>0)R=O;else R=(O>>>0)%(w>>>0)|0;if((R|0)!=(H|0)){L=H;C=50;break b}}O=b[F+8+11>>0]|0;if(!((O<<24>>24<0?f[F+12>>2]|0:O&255)|0))break b;F=f[F>>2]|0;if(!F){L=H;C=50;break b}}}else S=J;while(1){F=f[S+4>>2]|0;if((F|0)!=(r|0)){if(F>>>0>>0)T=F;else T=(F>>>0)%(w>>>0)|0;if((T|0)!=(H|0)){L=H;C=50;break b}}F=S+8|0;I=b[F+11>>0]|0;O=I<<24>>24<0;G=I&255;do if(((O?f[S+12>>2]|0:G)|0)==(v|0)){I=f[F>>2]|0;if(O)if(!(Vk(I,t,v)|0))break b;else break;if((b[t>>0]|0)==(I&255)<<24>>24){I=F;N=G;Q=t;do{N=N+-1|0;I=I+1|0;if(!N)break b;Q=Q+1|0}while((b[I>>0]|0)==(b[Q>>0]|0))}}while(0);S=f[S>>2]|0;if(!S){L=H;C=50;break}}}else{L=H;C=50}}else{L=0;C=50}while(0);if((C|0)==50){C=0;Di(e,a,r,q);U=$(((f[l>>2]|0)+1|0)>>>0);V=$(w>>>0);Y=$(n[g>>2]);do if(x|$(Y*V)>>0<3|(w+-1&w|0)!=0)&1;v=~~$(W($(U/Y)))>>>0;ei(a,t>>>0>>0?v:t);t=f[k>>2]|0;v=t+-1|0;if(!(v&t)){Z=t;_=v&r;break}if(r>>>0>>0){Z=t;_=r}else{Z=t;_=(r>>>0)%(t>>>0)|0}}else{Z=w;_=L}while(0);w=f[(f[a>>2]|0)+(_<<2)>>2]|0;if(!w){f[f[e>>2]>>2]=f[m>>2];f[m>>2]=f[e>>2];f[(f[a>>2]|0)+(_<<2)>>2]=m;r=f[e>>2]|0;x=f[r>>2]|0;if(x|0){q=f[x+4>>2]|0;x=Z+-1|0;if(x&Z)if(q>>>0>>0)aa=q;else aa=(q>>>0)%(Z>>>0)|0;else aa=q&x;f[(f[a>>2]|0)+(aa<<2)>>2]=r}}else{f[f[e>>2]>>2]=f[w>>2];f[w>>2]=f[e>>2]}f[l>>2]=(f[l>>2]|0)+1}w=f[p>>2]|0;if(!w)break a;else{o=w;p=w}}}while(0);e=f[c+28>>2]|0;if(!e){u=d;return}else ba=e;do{e=ba;c=ln(40)|0;Ub(c,f[e+20>>2]|0);aa=Ec(i,e+8|0)|0;e=f[aa>>2]|0;f[aa>>2]=c;if(e|0){c=f[e+28>>2]|0;if(c|0){aa=c;do{c=aa;aa=f[aa>>2]|0;ri(c+8|0);Oq(c)}while((aa|0)!=0)}aa=e+20|0;c=f[aa>>2]|0;f[aa>>2]=0;if(c|0)Oq(c);c=f[e+8>>2]|0;if(c|0){aa=c;do{c=aa;aa=f[aa>>2]|0;a=c+8|0;Z=f[c+20>>2]|0;if(Z|0){_=c+24|0;if((f[_>>2]|0)!=(Z|0))f[_>>2]=Z;Oq(Z)}if((b[a+11>>0]|0)<0)Oq(f[a>>2]|0);Oq(c)}while((aa|0)!=0)}aa=f[e>>2]|0;f[e>>2]=0;if(aa|0)Oq(aa);Oq(e)}ba=f[ba>>2]|0}while((ba|0)!=0);u=d;return}function Vb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+16|0;j=g+12|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)aq(k);q=o<<2;r=ln(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;sj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=r;z=0;A=0;B=r;C=r;D=0;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=un(f[r>>2]|0,f[r+4>>2]|0,y+z|0,0)|0;r=Vn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8|h[G+2>>0]<<16|h[G+3>>0]<<24;f[j>>2]=r;G=r&65535;F=r>>>16;H=F&65535;J=(r&65535^318)+239^F;F=(D|0)==0;a:do if(!F){K=D+-1|0;L=(K&D|0)==0;if(!L)if(J>>>0>>0)M=J;else M=(J>>>0)%(D>>>0)|0;else M=J&K;N=f[(f[i>>2]|0)+(M<<2)>>2]|0;do if(N|0?(O=f[N>>2]|0,O|0):0){b:do if(L){P=O;while(1){Q=f[P+4>>2]|0;R=(Q|0)==(J|0);if(!(R|(Q&K|0)==(M|0))){S=27;break b}if((R?(R=P+8|0,(d[R>>1]|0)==G<<16>>16):0)?(d[R+2>>1]|0)==H<<16>>16:0){T=P;S=26;break b}P=f[P>>2]|0;if(!P){S=27;break}}}else{P=O;while(1){R=f[P+4>>2]|0;if((R|0)==(J|0)){Q=P+8|0;if((d[Q>>1]|0)==G<<16>>16?(d[Q+2>>1]|0)==H<<16>>16:0){T=P;S=26;break b}}else{if(R>>>0>>0)U=R;else U=(R>>>0)%(D>>>0)|0;if((U|0)!=(M|0)){S=27;break b}}P=f[P>>2]|0;if(!P){S=27;break}}}while(0);if((S|0)==26){S=0;f[E+(z<<2)>>2]=f[T+12>>2];V=e;X=A;Y=C;Z=B;_=E;break a}else if((S|0)==27){S=0;if(F){aa=0;S=46;break a}else break}}while(0);K=D+-1|0;L=(K&D|0)==0;if(!L)if(J>>>0>>0)ba=J;else ba=(J>>>0)%(D>>>0)|0;else ba=K&J;N=f[(f[i>>2]|0)+(ba<<2)>>2]|0;if((N|0)!=0?(O=f[N>>2]|0,(O|0)!=0):0){if(L){L=O;while(1){N=f[L+4>>2]|0;if(!((N|0)==(J|0)|(N&K|0)==(ba|0))){aa=ba;S=46;break a}N=L+8|0;if((d[N>>1]|0)==G<<16>>16?(d[N+2>>1]|0)==H<<16>>16:0){S=61;break a}L=f[L>>2]|0;if(!L){aa=ba;S=46;break a}}}else ca=O;while(1){L=f[ca+4>>2]|0;if((L|0)!=(J|0)){if(L>>>0>>0)da=L;else da=(L>>>0)%(D>>>0)|0;if((da|0)!=(ba|0)){aa=ba;S=46;break a}}L=ca+8|0;if((d[L>>1]|0)==G<<16>>16?(d[L+2>>1]|0)==H<<16>>16:0){S=61;break a}ca=f[ca>>2]|0;if(!ca){aa=ba;S=46;break}}}else{aa=ba;S=46}}else{aa=0;S=46}while(0);if((S|0)==46){S=0;H=ln(16)|0;G=H+8|0;d[G>>1]=r;d[G+2>>1]=r>>>16;f[H+12>>2]=A;f[H+4>>2]=J;f[H>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(D>>>0);ga=$(n[l>>2]);do if(F|$(ga*fa)>>0<3|(D+-1&D|0)!=0)&1;O=~~$(W($(ea/ga)))>>>0;Uh(i,G>>>0>>0?O:G);G=f[o>>2]|0;O=G+-1|0;if(!(O&G)){ha=G;ia=O&J;break}if(J>>>0>>0){ha=G;ia=J}else{ha=G;ia=(J>>>0)%(G>>>0)|0}}else{ha=D;ia=aa}while(0);J=(f[i>>2]|0)+(ia<<2)|0;F=f[J>>2]|0;if(!F){f[H>>2]=f[v>>2];f[v>>2]=H;f[J>>2]=v;J=f[H>>2]|0;if(J|0){r=f[J+4>>2]|0;J=ha+-1|0;if(J&ha)if(r>>>0>>0)ja=r;else ja=(r>>>0)%(ha>>>0)|0;else ja=r&J;ka=(f[i>>2]|0)+(ja<<2)|0;S=59}}else{f[H>>2]=f[F>>2];ka=F;S=59}if((S|0)==59){S=0;f[ka>>2]=H}f[t>>2]=(f[t>>2]|0)+1;S=61}if((S|0)==61){S=0;F=w;J=f[F>>2]|0;r=un(J|0,f[F+4>>2]|0,A|0,0)|0;kh((f[f[x>>2]>>2]|0)+r|0,j|0,J|0)|0;J=f[k>>2]|0;f[J+(z<<2)>>2]=A;V=J;X=A+1|0;Y=J;Z=J;_=J}J=z+1|0;la=f[m>>2]|0;if(J>>>0>=la>>>0)break;e=V;z=J;A=X;B=Z;C=Y;D=f[o>>2]|0;E=_}if((X|0)==(la|0))ma=Z;else{Z=a+84|0;if(!(b[Z>>0]|0)){_=f[a+72>>2]|0;E=f[a+68>>2]|0;o=E;if((_|0)==(E|0))na=V;else{D=_-E>>2;E=0;do{_=o+(E<<2)|0;f[_>>2]=f[Y+(f[_>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=V}}else{b[Z>>0]=0;Z=a+68|0;V=a+72|0;D=f[V>>2]|0;E=f[Z>>2]|0;Y=D-E>>2;o=E;E=D;if(la>>>0<=Y>>>0)if(la>>>0>>0?(D=o+(la<<2)|0,(D|0)!=(E|0)):0){f[V>>2]=E+(~((E+-4-D|0)>>>2)<<2);oa=la}else oa=la;else{Ch(Z,la-Y|0,1220);oa=f[m>>2]|0}Y=f[k>>2]|0;if(!oa)na=Y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[Y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=Y}}f[m>>2]=X;ma=na}if(!ma)pa=X;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);Oq(ma);pa=X}}else pa=0;X=f[i+8>>2]|0;if(X|0){ma=X;do{X=ma;ma=f[ma>>2]|0;Oq(X)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}Oq(ma);u=g;return pa|0}function Wb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=Oa,da=Oa,ea=Oa,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;e=u;u=u+48|0;g=e+20|0;i=e;j=e+8|0;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)aq(j);p=m<<2;q=ln(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;sj(q|0,0,p|0)|0;f[o>>2]=r;r=c+48|0;p=c+40|0;m=g+4|0;s=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=f[d>>2]|0;d=q;y=0;z=0;A=q;B=q;C=q;q=0;while(1){D=r;E=f[D>>2]|0;F=f[D+4>>2]|0;D=p;G=un(f[D>>2]|0,f[D+4>>2]|0,x+y|0,0)|0;D=Vn(G|0,I|0,E|0,F|0)|0;F=(f[f[c>>2]>>2]|0)+D|0;D=F;E=h[D>>0]|h[D+1>>0]<<8|h[D+2>>0]<<16|h[D+3>>0]<<24;D=F+4|0;F=h[D>>0]|h[D+1>>0]<<8|h[D+2>>0]<<16|h[D+3>>0]<<24;D=i;f[D>>2]=E;f[D+4>>2]=F;D=(E^318)+239^F;G=(q|0)==0;a:do if(!G){H=q+-1|0;J=(H&q|0)==0;if(!J)if(D>>>0>>0)K=D;else K=(D>>>0)%(q>>>0)|0;else K=D&H;L=f[(f[g>>2]|0)+(K<<2)>>2]|0;do if(L|0?(M=f[L>>2]|0,M|0):0){b:do if(J){N=M;while(1){O=f[N+4>>2]|0;P=(O|0)==(D|0);if(!(P|(O&H|0)==(K|0))){Q=27;break b}if((P?(f[N+8>>2]|0)==(E|0):0)?(f[N+12>>2]|0)==(F|0):0){R=N;Q=26;break b}N=f[N>>2]|0;if(!N){Q=27;break}}}else{N=M;while(1){P=f[N+4>>2]|0;if((P|0)==(D|0)){if((f[N+8>>2]|0)==(E|0)?(f[N+12>>2]|0)==(F|0):0){R=N;Q=26;break b}}else{if(P>>>0>>0)S=P;else S=(P>>>0)%(q>>>0)|0;if((S|0)!=(K|0)){Q=27;break b}}N=f[N>>2]|0;if(!N){Q=27;break}}}while(0);if((Q|0)==26){Q=0;f[A+(y<<2)>>2]=f[R+16>>2];T=d;U=z;V=C;X=B;Y=A;break a}else if((Q|0)==27){Q=0;if(G){Z=0;Q=46;break a}else break}}while(0);H=q+-1|0;J=(H&q|0)==0;if(!J)if(D>>>0>>0)_=D;else _=(D>>>0)%(q>>>0)|0;else _=H&D;L=f[(f[g>>2]|0)+(_<<2)>>2]|0;if((L|0)!=0?(M=f[L>>2]|0,(M|0)!=0):0){if(J){J=M;while(1){L=f[J+4>>2]|0;if(!((L|0)==(D|0)|(L&H|0)==(_|0))){Z=_;Q=46;break a}if((f[J+8>>2]|0)==(E|0)?(f[J+12>>2]|0)==(F|0):0){Q=61;break a}J=f[J>>2]|0;if(!J){Z=_;Q=46;break a}}}else aa=M;while(1){J=f[aa+4>>2]|0;if((J|0)!=(D|0)){if(J>>>0>>0)ba=J;else ba=(J>>>0)%(q>>>0)|0;if((ba|0)!=(_|0)){Z=_;Q=46;break a}}if((f[aa+8>>2]|0)==(E|0)?(f[aa+12>>2]|0)==(F|0):0){Q=61;break a}aa=f[aa>>2]|0;if(!aa){Z=_;Q=46;break}}}else{Z=_;Q=46}}else{Z=0;Q=46}while(0);if((Q|0)==46){Q=0;M=ln(20)|0;J=M+8|0;f[J>>2]=E;f[J+4>>2]=F;f[M+16>>2]=z;f[M+4>>2]=D;f[M>>2]=0;ca=$(((f[s>>2]|0)+1|0)>>>0);da=$(q>>>0);ea=$(n[k>>2]);do if(G|$(ea*da)>>0<3|(q+-1&q|0)!=0)&1;H=~~$(W($(ca/ea)))>>>0;Yh(g,J>>>0>>0?H:J);J=f[m>>2]|0;H=J+-1|0;if(!(H&J)){fa=J;ga=H&D;break}if(D>>>0>>0){fa=J;ga=D}else{fa=J;ga=(D>>>0)%(J>>>0)|0}}else{fa=q;ga=Z}while(0);D=(f[g>>2]|0)+(ga<<2)|0;G=f[D>>2]|0;if(!G){f[M>>2]=f[t>>2];f[t>>2]=M;f[D>>2]=t;D=f[M>>2]|0;if(D|0){F=f[D+4>>2]|0;D=fa+-1|0;if(D&fa)if(F>>>0>>0)ha=F;else ha=(F>>>0)%(fa>>>0)|0;else ha=F&D;ia=(f[g>>2]|0)+(ha<<2)|0;Q=59}}else{f[M>>2]=f[G>>2];ia=G;Q=59}if((Q|0)==59){Q=0;f[ia>>2]=M}f[s>>2]=(f[s>>2]|0)+1;Q=61}if((Q|0)==61){Q=0;G=v;D=f[G>>2]|0;F=un(D|0,f[G+4>>2]|0,z|0,0)|0;kh((f[f[w>>2]>>2]|0)+F|0,i|0,D|0)|0;D=f[j>>2]|0;f[D+(y<<2)>>2]=z;T=D;U=z+1|0;V=D;X=D;Y=D}D=y+1|0;ja=f[l>>2]|0;if(D>>>0>=ja>>>0)break;d=T;y=D;z=U;A=Y;B=X;C=V;q=f[m>>2]|0}if((U|0)==(ja|0))ka=X;else{X=a+84|0;if(!(b[X>>0]|0)){m=f[a+72>>2]|0;q=f[a+68>>2]|0;C=q;if((m|0)==(q|0))la=T;else{B=m-q>>2;q=0;do{m=C+(q<<2)|0;f[m>>2]=f[V+(f[m>>2]<<2)>>2];q=q+1|0}while(q>>>0>>0);la=T}}else{b[X>>0]=0;X=a+68|0;T=a+72|0;B=f[T>>2]|0;q=f[X>>2]|0;V=B-q>>2;C=q;q=B;if(ja>>>0<=V>>>0)if(ja>>>0>>0?(B=C+(ja<<2)|0,(B|0)!=(q|0)):0){f[T>>2]=q+(~((q+-4-B|0)>>>2)<<2);ma=ja}else ma=ja;else{Ch(X,ja-V|0,1220);ma=f[l>>2]|0}V=f[j>>2]|0;if(!ma)la=V;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[V+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);la=V}}f[l>>2]=U;ka=la}if(!ka)na=U;else{la=f[o>>2]|0;if((la|0)!=(ka|0))f[o>>2]=la+(~((la+-4-ka|0)>>>2)<<2);Oq(ka);na=U}}else na=0;U=f[g+8>>2]|0;if(U|0){ka=U;do{U=ka;ka=f[ka>>2]|0;Oq(U)}while((ka|0)!=0)}ka=f[g>>2]|0;f[g>>2]=0;if(!ka){u=e;return na|0}Oq(ka);u=e;return na|0}function Xb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+12|0;j=g+32|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)aq(k);q=o<<2;r=ln(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;sj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=r;z=0;A=0;B=r;C=r;D=0;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=un(f[r>>2]|0,f[r+4>>2]|0,y+z|0,0)|0;r=Vn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8;d[j>>1]=r;G=r&255;F=(r&65535)>>>8;H=F&255;J=((r&255^318)+239<<16>>16^F)&65535;F=(D|0)==0;a:do if(!F){K=D+-1|0;L=(K&D|0)==0;if(!L)if(D>>>0>J>>>0)M=J;else M=(J>>>0)%(D>>>0)|0;else M=K&J;N=f[(f[i>>2]|0)+(M<<2)>>2]|0;do if(N|0?(O=f[N>>2]|0,O|0):0){b:do if(L){P=O;while(1){Q=f[P+4>>2]|0;R=(Q|0)==(J|0);if(!(R|(Q&K|0)==(M|0))){S=27;break b}if((R?(R=P+8|0,(b[R>>0]|0)==G<<24>>24):0)?(b[R+1>>0]|0)==H<<24>>24:0){T=P;S=26;break b}P=f[P>>2]|0;if(!P){S=27;break}}}else{P=O;while(1){R=f[P+4>>2]|0;if((R|0)==(J|0)){Q=P+8|0;if((b[Q>>0]|0)==G<<24>>24?(b[Q+1>>0]|0)==H<<24>>24:0){T=P;S=26;break b}}else{if(R>>>0>>0)U=R;else U=(R>>>0)%(D>>>0)|0;if((U|0)!=(M|0)){S=27;break b}}P=f[P>>2]|0;if(!P){S=27;break}}}while(0);if((S|0)==26){S=0;f[E+(z<<2)>>2]=f[T+12>>2];V=e;X=A;Y=C;Z=B;_=E;break a}else if((S|0)==27){S=0;if(F){aa=0;S=46;break a}else break}}while(0);K=D+-1|0;L=(K&D|0)==0;if(!L)if(D>>>0>J>>>0)ba=J;else ba=(J>>>0)%(D>>>0)|0;else ba=K&J;N=f[(f[i>>2]|0)+(ba<<2)>>2]|0;if((N|0)!=0?(O=f[N>>2]|0,(O|0)!=0):0){if(L){L=O;while(1){N=f[L+4>>2]|0;if(!((N|0)==(J|0)|(N&K|0)==(ba|0))){aa=ba;S=46;break a}N=L+8|0;if((b[N>>0]|0)==G<<24>>24?(b[N+1>>0]|0)==H<<24>>24:0){S=61;break a}L=f[L>>2]|0;if(!L){aa=ba;S=46;break a}}}else ca=O;while(1){L=f[ca+4>>2]|0;if((L|0)!=(J|0)){if(L>>>0>>0)da=L;else da=(L>>>0)%(D>>>0)|0;if((da|0)!=(ba|0)){aa=ba;S=46;break a}}L=ca+8|0;if((b[L>>0]|0)==G<<24>>24?(b[L+1>>0]|0)==H<<24>>24:0){S=61;break a}ca=f[ca>>2]|0;if(!ca){aa=ba;S=46;break}}}else{aa=ba;S=46}}else{aa=0;S=46}while(0);if((S|0)==46){S=0;H=ln(16)|0;G=H+8|0;b[G>>0]=r;b[G+1>>0]=r>>8;f[H+12>>2]=A;f[H+4>>2]=J;f[H>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(D>>>0);ga=$(n[l>>2]);do if(F|$(ga*fa)>>0<3|(D+-1&D|0)!=0)&1;O=~~$(W($(ea/ga)))>>>0;$h(i,G>>>0>>0?O:G);G=f[o>>2]|0;O=G+-1|0;if(!(O&G)){ha=G;ia=O&J;break}if(G>>>0>J>>>0){ha=G;ia=J}else{ha=G;ia=(J>>>0)%(G>>>0)|0}}else{ha=D;ia=aa}while(0);J=(f[i>>2]|0)+(ia<<2)|0;F=f[J>>2]|0;if(!F){f[H>>2]=f[v>>2];f[v>>2]=H;f[J>>2]=v;J=f[H>>2]|0;if(J|0){r=f[J+4>>2]|0;J=ha+-1|0;if(J&ha)if(r>>>0>>0)ja=r;else ja=(r>>>0)%(ha>>>0)|0;else ja=r&J;ka=(f[i>>2]|0)+(ja<<2)|0;S=59}}else{f[H>>2]=f[F>>2];ka=F;S=59}if((S|0)==59){S=0;f[ka>>2]=H}f[t>>2]=(f[t>>2]|0)+1;S=61}if((S|0)==61){S=0;F=w;J=f[F>>2]|0;r=un(J|0,f[F+4>>2]|0,A|0,0)|0;kh((f[f[x>>2]>>2]|0)+r|0,j|0,J|0)|0;J=f[k>>2]|0;f[J+(z<<2)>>2]=A;V=J;X=A+1|0;Y=J;Z=J;_=J}J=z+1|0;la=f[m>>2]|0;if(J>>>0>=la>>>0)break;e=V;z=J;A=X;B=Z;C=Y;D=f[o>>2]|0;E=_}if((X|0)==(la|0))ma=Z;else{Z=a+84|0;if(!(b[Z>>0]|0)){_=f[a+72>>2]|0;E=f[a+68>>2]|0;o=E;if((_|0)==(E|0))na=V;else{D=_-E>>2;E=0;do{_=o+(E<<2)|0;f[_>>2]=f[Y+(f[_>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=V}}else{b[Z>>0]=0;Z=a+68|0;V=a+72|0;D=f[V>>2]|0;E=f[Z>>2]|0;Y=D-E>>2;o=E;E=D;if(la>>>0<=Y>>>0)if(la>>>0>>0?(D=o+(la<<2)|0,(D|0)!=(E|0)):0){f[V>>2]=E+(~((E+-4-D|0)>>>2)<<2);oa=la}else oa=la;else{Ch(Z,la-Y|0,1220);oa=f[m>>2]|0}Y=f[k>>2]|0;if(!oa)na=Y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[Y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=Y}}f[m>>2]=X;ma=na}if(!ma)pa=X;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);Oq(ma);pa=X}}else pa=0;X=f[i+8>>2]|0;if(X|0){ma=X;do{X=ma;ma=f[ma>>2]|0;Oq(X)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}Oq(ma);u=g;return pa|0}function Yb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,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,ha=0;c=u;u=u+16|0;d=c+8|0;e=c;g=c+4|0;h=a+16|0;i=f[h>>2]|0;j=a+20|0;k=f[j>>2]|0;if((k|0)==(i|0))l=i;else{m=k+(~((k+-4-i|0)>>>2)<<2)|0;f[j>>2]=m;l=m}m=a+24|0;if((l|0)==(f[m>>2]|0)){Ri(h,b);n=f[h>>2]|0;o=f[j>>2]|0}else{f[l>>2]=f[b>>2];k=l+4|0;f[j>>2]=k;n=i;o=k}k=f[a+8>>2]|0;i=(f[k+100>>2]|0)-(f[k+96>>2]|0)|0;k=(i|0)/12|0;if((n|0)==(o|0)){u=c;return 1}n=a+28|0;l=(i|0)>0;i=a+164|0;p=a+12|0;q=a+76|0;r=a+80|0;s=a+72|0;t=a+200|0;v=a+320|0;w=a+152|0;x=a+84|0;y=a+324|0;z=a+292|0;A=a+304|0;B=a+316|0;C=a+328|0;D=a+336|0;E=a+332|0;F=a+168|0;G=a+140|0;H=a+120|0;I=o;do{o=f[I+-4>>2]|0;f[b>>2]=o;a:do if((o|0)!=-1?(J=(o>>>0)/3|0,K=f[n>>2]|0,(f[K+(J>>>5<<2)>>2]&1<<(J&31)|0)==0):0){if(l){J=0;L=K;b:while(1){K=J+1|0;f[i>>2]=(f[i>>2]|0)+1;M=f[b>>2]|0;N=(M|0)==-1?-1:(M>>>0)/3|0;M=L+(N>>>5<<2)|0;f[M>>2]=1<<(N&31)|f[M>>2];M=f[q>>2]|0;if((M|0)==(f[r>>2]|0))Ri(s,b);else{f[M>>2]=f[b>>2];f[q>>2]=M+4}f[v>>2]=f[b>>2];M=f[b>>2]|0;if((M|0)==-1)O=-1;else O=f[(f[f[p>>2]>>2]|0)+(M<<2)>>2]|0;P=(f[(f[w>>2]|0)+(O<<2)>>2]|0)!=-1;Q=(f[x>>2]|0)+(O>>>5<<2)|0;R=1<<(O&31);S=f[Q>>2]|0;do if(!(S&R)){f[Q>>2]=S|R;if(P){T=f[b>>2]|0;U=38;break}f[y>>2]=(f[y>>2]|0)+1;V=f[v>>2]|0;W=V+1|0;do if((V|0)!=-1){X=((W>>>0)%3|0|0)==0?V+-2|0:W;if(!((V>>>0)%3|0)){Y=V+2|0;Z=X;break}else{Y=V+-1|0;Z=X;break}}else{Y=-1;Z=-1}while(0);V=f[z>>2]|0;W=f[A>>2]|0;X=W+(f[V+(Z<<2)>>2]<<2)|0;_=f[X>>2]|0;f[X>>2]=_+-1;X=W+(f[V+(Y<<2)>>2]<<2)|0;f[X>>2]=(f[X>>2]|0)+-1;X=f[B>>2]|0;if((X|0)!=-1){V=f[C>>2]|0;if((_|0)<(V|0))$=V;else{W=f[E>>2]|0;$=(_|0)>(W|0)?W:_}_=$-V|0;V=f[D>>2]|0;W=f[3724+(X<<2)>>2]|0;f[d>>2]=W;X=V+(_*12|0)+4|0;aa=f[X>>2]|0;if(aa>>>0<(f[V+(_*12|0)+8>>2]|0)>>>0){f[aa>>2]=W;f[X>>2]=aa+4}else Ri(V+(_*12|0)|0,d)}f[B>>2]=0;_=f[b>>2]|0;V=_+1|0;if((_|0)!=-1?(aa=((V>>>0)%3|0|0)==0?_+-2|0:V,(aa|0)!=-1):0)ba=f[(f[(f[p>>2]|0)+12>>2]|0)+(aa<<2)>>2]|0;else ba=-1;f[b>>2]=ba}else{T=M;U=38}while(0);if((U|0)==38){U=0;M=T+1|0;if((T|0)==-1){U=43;break}R=((M>>>0)%3|0|0)==0?T+-2|0:M;if((R|0)==-1)ca=-1;else ca=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;f[e>>2]=ca;R=(((T>>>0)%3|0|0)==0?2:-1)+T|0;if((R|0)==-1)da=-1;else da=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;R=(ca|0)==-1;S=R?-1:(ca>>>0)/3|0;ea=(da|0)==-1;fa=ea?-1:(da>>>0)/3|0;Q=((M>>>0)%3|0|0)==0?T+-2|0:M;if(((Q|0)!=-1?(M=f[(f[p>>2]|0)+12>>2]|0,aa=f[M+(Q<<2)>>2]|0,(aa|0)!=-1):0)?(Q=(aa>>>0)/3|0,aa=f[n>>2]|0,(f[aa+(Q>>>5<<2)>>2]&1<<(Q&31)|0)==0):0){Q=(((T>>>0)%3|0|0)==0?2:-1)+T|0;do if((Q|0)!=-1){V=f[M+(Q<<2)>>2]|0;if((V|0)==-1)break;_=(V>>>0)/3|0;if(!(f[aa+(_>>>5<<2)>>2]&1<<(_&31))){U=62;break b}}while(0);if(!ea)xf(a,f[i>>2]|0,N,0,fa);nd(t,3);ga=f[e>>2]|0}else{if(!R){xf(a,f[i>>2]|0,N,1,S);aa=f[b>>2]|0;if((aa|0)==-1){U=52;break}else ha=aa}else ha=T;aa=(((ha>>>0)%3|0|0)==0?2:-1)+ha|0;if((aa|0)==-1){U=52;break}Q=f[(f[(f[p>>2]|0)+12>>2]|0)+(aa<<2)>>2]|0;if((Q|0)==-1){U=52;break}aa=(Q>>>0)/3|0;if(f[(f[n>>2]|0)+(aa>>>5<<2)>>2]&1<<(aa&31)|0){U=52;break}nd(t,5);ga=da}f[b>>2]=ga}if((K|0)>=(k|0))break a;J=K;L=f[n>>2]|0}do if((U|0)==43){U=0;f[e>>2]=-1;U=54}else if((U|0)==52){U=0;if(ea)U=54;else{xf(a,f[i>>2]|0,N,0,fa);U=54}}else if((U|0)==62){U=0;nd(t,1);f[F>>2]=(f[F>>2]|0)+1;if(P?(L=f[(f[w>>2]|0)+(O<<2)>>2]|0,(1<<(L&31)&f[(f[G>>2]|0)+(L>>>5<<2)>>2]|0)==0):0){f[g>>2]=f[b>>2];f[d>>2]=f[g>>2];Pe(a,d,0)|0}L=f[i>>2]|0;f[d>>2]=N;J=je(H,d)|0;f[J>>2]=L;L=f[j>>2]|0;f[L+-4>>2]=da;if((L|0)==(f[m>>2]|0)){Ri(h,e);break}else{f[L>>2]=f[e>>2];f[j>>2]=L+4;break}}while(0);if((U|0)==54){U=0;nd(t,7);f[j>>2]=(f[j>>2]|0)+-4}}}else U=11;while(0);if((U|0)==11){U=0;f[j>>2]=I+-4}I=f[j>>2]|0}while((f[h>>2]|0)!=(I|0));u=c;return 1}function Zb(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,Q=0,R=0;c=u;u=u+16|0;d=c+8|0;e=c;g=f[b>>2]|0;if((g|0)==-1){u=c;return}h=(g>>>0)/3|0;i=a+12|0;if(f[(f[i>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0){u=c;return}h=a+56|0;j=f[h>>2]|0;k=a+60|0;l=f[k>>2]|0;if((l|0)==(j|0))m=j;else{n=l+(~((l+-4-j|0)>>>2)<<2)|0;f[k>>2]=n;m=n}n=a+64|0;if((m|0)==(f[n>>2]|0))Ri(h,b);else{f[m>>2]=g;f[k>>2]=m+4}m=f[a>>2]|0;g=f[b>>2]|0;j=g+1|0;do if((g|0)!=-1){l=f[m+28>>2]|0;o=f[l+((((j>>>0)%3|0|0)==0?g+-2|0:j)<<2)>>2]|0;if(!((g>>>0)%3|0)){p=o;q=g+2|0;r=l;break}else{p=o;q=g+-1|0;r=l;break}}else{l=f[m+28>>2]|0;p=f[l+-4>>2]|0;q=-1;r=l}while(0);m=f[r+(q<<2)>>2]|0;q=a+24|0;r=f[q>>2]|0;g=r+(p>>>5<<2)|0;j=1<<(p&31);l=f[g>>2]|0;if(!(l&j)){f[g>>2]=l|j;j=f[b>>2]|0;l=j+1|0;if((j|0)==-1)s=-1;else s=((l>>>0)%3|0|0)==0?j+-2|0:l;f[e>>2]=s;l=f[(f[(f[a+44>>2]|0)+96>>2]|0)+(((s>>>0)/3|0)*12|0)+(((s>>>0)%3|0)<<2)>>2]|0;s=f[a+48>>2]|0;f[d>>2]=l;j=f[s+4>>2]|0;s=j+4|0;g=f[s>>2]|0;if((g|0)==(f[j+8>>2]|0))Ri(j,d);else{f[g>>2]=l;f[s>>2]=g+4}g=a+40|0;s=f[g>>2]|0;l=s+4|0;j=f[l>>2]|0;if((j|0)==(f[s+8>>2]|0)){Ri(s,e);t=f[g>>2]|0}else{f[j>>2]=f[e>>2];f[l>>2]=j+4;t=s}s=t+24|0;f[(f[t+12>>2]|0)+(p<<2)>>2]=f[s>>2];f[s>>2]=(f[s>>2]|0)+1;v=f[q>>2]|0}else v=r;r=v+(m>>>5<<2)|0;v=1<<(m&31);s=f[r>>2]|0;if(!(s&v)){f[r>>2]=s|v;v=f[b>>2]|0;do if((v|0)!=-1)if(!((v>>>0)%3|0)){w=v+2|0;break}else{w=v+-1|0;break}else w=-1;while(0);f[e>>2]=w;v=f[(f[(f[a+44>>2]|0)+96>>2]|0)+(((w>>>0)/3|0)*12|0)+(((w>>>0)%3|0)<<2)>>2]|0;w=f[a+48>>2]|0;f[d>>2]=v;s=f[w+4>>2]|0;w=s+4|0;r=f[w>>2]|0;if((r|0)==(f[s+8>>2]|0))Ri(s,d);else{f[r>>2]=v;f[w>>2]=r+4}r=a+40|0;w=f[r>>2]|0;v=w+4|0;s=f[v>>2]|0;if((s|0)==(f[w+8>>2]|0)){Ri(w,e);x=f[r>>2]|0}else{f[s>>2]=f[e>>2];f[v>>2]=s+4;x=w}w=x+24|0;f[(f[x+12>>2]|0)+(m<<2)>>2]=f[w>>2];f[w>>2]=(f[w>>2]|0)+1}w=f[h>>2]|0;m=f[k>>2]|0;if((w|0)==(m|0)){u=c;return}x=a+44|0;s=a+48|0;v=a+40|0;r=m;m=w;while(1){w=f[r+-4>>2]|0;f[b>>2]=w;p=(w>>>0)/3|0;if((w|0)!=-1?(w=f[i>>2]|0,(f[w+(p>>>5<<2)>>2]&1<<(p&31)|0)==0):0){t=p;p=w;w=f[a>>2]|0;a:while(1){j=p+(t>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(t&31);j=f[b>>2]|0;l=f[(f[w+28>>2]|0)+(j<<2)>>2]|0;g=(f[q>>2]|0)+(l>>>5<<2)|0;o=1<<(l&31);y=f[g>>2]|0;if(!(o&y)){z=f[(f[w+40>>2]|0)+(l<<2)>>2]|0;if((z|0)==-1)A=1;else{B=f[(f[f[w+64>>2]>>2]|0)+(z<<2)>>2]|0;A=(1<<(B&31)&f[(f[w+12>>2]|0)+(B>>>5<<2)>>2]|0)!=0}f[g>>2]=y|o;o=f[b>>2]|0;f[e>>2]=o;y=f[(f[(f[x>>2]|0)+96>>2]|0)+(((o>>>0)/3|0)*12|0)+(((o>>>0)%3|0)<<2)>>2]|0;o=f[s>>2]|0;f[d>>2]=y;g=f[o+4>>2]|0;o=g+4|0;B=f[o>>2]|0;if((B|0)==(f[g+8>>2]|0))Ri(g,d);else{f[B>>2]=y;f[o>>2]=B+4}B=f[v>>2]|0;o=B+4|0;y=f[o>>2]|0;if((y|0)==(f[B+8>>2]|0)){Ri(B,e);C=f[v>>2]|0}else{f[y>>2]=f[e>>2];f[o>>2]=y+4;C=B}B=C+24|0;f[(f[C+12>>2]|0)+(l<<2)>>2]=f[B>>2];f[B>>2]=(f[B>>2]|0)+1;B=f[a>>2]|0;l=f[b>>2]|0;if(A){D=l;E=B;F=57}else{y=l+1|0;do if((l|0)==-1)G=-1;else{o=((y>>>0)%3|0|0)==0?l+-2|0:y;if((o|0)==-1){G=-1;break}if(f[(f[B>>2]|0)+(o>>>5<<2)>>2]&1<<(o&31)|0){G=-1;break}G=f[(f[(f[B+64>>2]|0)+12>>2]|0)+(o<<2)>>2]|0}while(0);f[b>>2]=G;H=(G>>>0)/3|0;I=B}}else{D=j;E=w;F=57}if((F|0)==57){F=0;y=D+1|0;if((D|0)==-1){F=58;break}l=((y>>>0)%3|0|0)==0?D+-2|0:y;if((l|0)!=-1?(f[(f[E>>2]|0)+(l>>>5<<2)>>2]&1<<(l&31)|0)==0:0)J=f[(f[(f[E+64>>2]|0)+12>>2]|0)+(l<<2)>>2]|0;else J=-1;f[d>>2]=J;l=(((D>>>0)%3|0|0)==0?2:-1)+D|0;if((l|0)!=-1?(f[(f[E>>2]|0)+(l>>>5<<2)>>2]&1<<(l&31)|0)==0:0)K=f[(f[(f[E+64>>2]|0)+12>>2]|0)+(l<<2)>>2]|0;else K=-1;l=(J|0)==-1;y=(J>>>0)/3|0;o=l?-1:y;g=(K|0)==-1;z=(K>>>0)/3|0;L=g?-1:z;do if(!l){M=f[i>>2]|0;if(f[M+(o>>>5<<2)>>2]&1<<(o&31)|0){F=67;break}if(g){N=J;O=y;break}if(!(f[M+(L>>>5<<2)>>2]&1<<(L&31))){F=72;break a}else{N=J;O=y}}else F=67;while(0);if((F|0)==67){F=0;if(g){F=69;break}if(!(f[(f[i>>2]|0)+(L>>>5<<2)>>2]&1<<(L&31))){N=K;O=z}else{F=69;break}}f[b>>2]=N;H=O;I=E}t=H;p=f[i>>2]|0;w=I}do if((F|0)==58){F=0;f[d>>2]=-1;F=69}else if((F|0)==72){F=0;w=f[k>>2]|0;f[w+-4>>2]=K;if((w|0)==(f[n>>2]|0)){Ri(h,d);P=f[k>>2]|0;break}else{f[w>>2]=f[d>>2];p=w+4|0;f[k>>2]=p;P=p;break}}while(0);if((F|0)==69){F=0;p=(f[k>>2]|0)+-4|0;f[k>>2]=p;P=p}Q=f[h>>2]|0;R=P}else{p=r+-4|0;f[k>>2]=p;Q=m;R=p}if((Q|0)==(R|0))break;else{r=R;m=Q}}u=c;return}function _b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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=Oa,K=Oa,L=Oa,M=0,N=0,O=0,P=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=Id(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];lf(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;Fi(j,8);l=d;d=l;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;d=l+4|0;l=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;d=f[j>>2]|0;o=d;b[o>>0]=m;b[o+1>>0]=m>>8;b[o+2>>0]=m>>16;b[o+3>>0]=m>>24;m=d+4|0;b[m>>0]=l;b[m+1>>0]=l>>8;b[m+2>>0]=l>>16;b[m+3>>0]=l>>24;pj(i,c);c=i+12|0;f[c>>2]=0;l=i+16|0;f[l>>2]=0;f[i+20>>2]=0;m=f[k>>2]|0;d=f[j>>2]|0;o=m-d|0;if(!o){p=d;q=m;r=0}else{Fi(c,o);p=f[j>>2]|0;q=f[k>>2]|0;r=f[c>>2]|0}kh(r|0,p|0,q-p|0)|0;p=i+11|0;q=b[p>>0]|0;r=q<<24>>24<0;c=r?f[i>>2]|0:i;o=r?f[i+4>>2]|0:q&255;if(o>>>0>3){q=c;r=o;m=o;while(1){d=X(h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24,1540483477)|0;r=(X(d>>>24^d,1540483477)|0)^(X(r,1540483477)|0);m=m+-4|0;if(m>>>0<=3)break;else q=q+4|0}q=o+-4|0;m=q&-4;s=q-m|0;t=c+(m+4)|0;v=r}else{s=o;t=c;v=o}switch(s|0){case 3:{w=h[t+2>>0]<<16^v;x=10;break}case 2:{w=v;x=10;break}case 1:{y=v;x=11;break}default:z=v}if((x|0)==10){y=h[t+1>>0]<<8^w;x=11}if((x|0)==11)z=X(y^h[t>>0],1540483477)|0;t=X(z>>>13^z,1540483477)|0;z=t>>>15^t;t=a+4|0;y=f[t>>2]|0;w=(y|0)==0;a:do if(!w){v=y+-1|0;s=(v&y|0)==0;if(!s)if(z>>>0>>0)A=z;else A=(z>>>0)%(y>>>0)|0;else A=z&v;r=f[(f[a>>2]|0)+(A<<2)>>2]|0;if((r|0)!=0?(m=f[r>>2]|0,(m|0)!=0):0){r=(o|0)==0;if(s){if(r){s=m;while(1){q=f[s+4>>2]|0;if(!((q|0)==(z|0)|(q&v|0)==(A|0))){B=A;x=52;break a}q=b[s+8+11>>0]|0;if(!((q<<24>>24<0?f[s+12>>2]|0:q&255)|0))break a;s=f[s>>2]|0;if(!s){B=A;x=52;break a}}}else C=m;while(1){s=f[C+4>>2]|0;if(!((s|0)==(z|0)|(s&v|0)==(A|0))){B=A;x=52;break a}s=C+8|0;q=b[s+11>>0]|0;d=q<<24>>24<0;D=q&255;do if(((d?f[C+12>>2]|0:D)|0)==(o|0)){q=f[s>>2]|0;if(d)if(!(Vk(q,c,o)|0))break a;else break;if((b[c>>0]|0)==(q&255)<<24>>24){q=s;E=D;F=c;do{E=E+-1|0;q=q+1|0;if(!E)break a;F=F+1|0}while((b[q>>0]|0)==(b[F>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){B=A;x=52;break a}}}if(r){v=m;while(1){D=f[v+4>>2]|0;if((D|0)!=(z|0)){if(D>>>0>>0)G=D;else G=(D>>>0)%(y>>>0)|0;if((G|0)!=(A|0)){B=A;x=52;break a}}D=b[v+8+11>>0]|0;if(!((D<<24>>24<0?f[v+12>>2]|0:D&255)|0))break a;v=f[v>>2]|0;if(!v){B=A;x=52;break a}}}else H=m;while(1){v=f[H+4>>2]|0;if((v|0)!=(z|0)){if(v>>>0>>0)I=v;else I=(v>>>0)%(y>>>0)|0;if((I|0)!=(A|0)){B=A;x=52;break a}}v=H+8|0;r=b[v+11>>0]|0;D=r<<24>>24<0;s=r&255;do if(((D?f[H+12>>2]|0:s)|0)==(o|0)){r=f[v>>2]|0;if(D)if(!(Vk(r,c,o)|0))break a;else break;if((b[c>>0]|0)==(r&255)<<24>>24){r=v;d=s;F=c;do{d=d+-1|0;r=r+1|0;if(!d)break a;F=F+1|0}while((b[r>>0]|0)==(b[F>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){B=A;x=52;break}}}else{B=A;x=52}}else{B=0;x=52}while(0);if((x|0)==52){oi(g,a,z,i);x=a+12|0;J=$(((f[x>>2]|0)+1|0)>>>0);K=$(y>>>0);L=$(n[a+16>>2]);do if(w|$(L*K)>>0<3|(y+-1&y|0)!=0)&1;H=~~$(W($(J/L)))>>>0;ei(a,A>>>0>>0?H:A);A=f[t>>2]|0;H=A+-1|0;if(!(H&A)){M=A;N=H&z;break}if(z>>>0>>0){M=A;N=z}else{M=A;N=(z>>>0)%(A>>>0)|0}}else{M=y;N=B}while(0);B=f[(f[a>>2]|0)+(N<<2)>>2]|0;if(!B){y=a+8|0;f[f[g>>2]>>2]=f[y>>2];f[y>>2]=f[g>>2];f[(f[a>>2]|0)+(N<<2)>>2]=y;y=f[g>>2]|0;N=f[y>>2]|0;if(!N)O=g;else{z=f[N+4>>2]|0;N=M+-1|0;if(N&M)if(z>>>0>>0)P=z;else P=(z>>>0)%(M>>>0)|0;else P=z&N;f[(f[a>>2]|0)+(P<<2)>>2]=y;O=g}}else{f[f[g>>2]>>2]=f[B>>2];f[B>>2]=f[g>>2];O=g}f[x>>2]=(f[x>>2]|0)+1;f[O>>2]=0}O=f[i+12>>2]|0;if(O|0){if((f[l>>2]|0)!=(O|0))f[l>>2]=O;Oq(O)}if((b[p>>0]|0)<0)Oq(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;Oq(i);u=e;return}function $b(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;e=u;u=u+96|0;g=e+92|0;h=e+88|0;i=e+72|0;j=e+48|0;k=e+24|0;l=e;m=a+16|0;n=f[m>>2]|0;o=f[c>>2]|0;f[i>>2]=n;f[i+4>>2]=o;c=i+8|0;f[c>>2]=o;b[i+12>>0]=1;p=(o|0)==-1;if(p)q=-1;else q=f[(f[n>>2]|0)+(o<<2)>>2]|0;n=a+20|0;r=f[n>>2]|0;s=f[r>>2]|0;if((f[r+4>>2]|0)-s>>2>>>0<=q>>>0)aq(r);r=a+8|0;t=f[(f[r>>2]|0)+(f[s+(q<<2)>>2]<<2)>>2]|0;q=a+4|0;s=f[q>>2]|0;if(!(b[s+84>>0]|0))v=f[(f[s+68>>2]|0)+(t<<2)>>2]|0;else v=t;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;f[h>>2]=v;v=b[s+24>>0]|0;f[g>>2]=f[h>>2];vb(s,g,v,j)|0;v=a+28|0;a=(f[v>>2]|0)==0;a:do if(!p){s=k+8|0;t=j+8|0;w=k+16|0;x=j+16|0;y=l+8|0;z=l+16|0;A=o;B=o;C=0;D=0;E=0;F=0;G=0;H=0;J=a;K=o;while(1){do if(J){L=K+1|0;if((K|0)==-1){M=A;N=-1;O=-1;P=-1;break}Q=((L>>>0)%3|0|0)==0?K+-2|0:L;if((A|0)!=-1)if(!((A>>>0)%3|0)){R=A;S=A+2|0;T=Q;U=A;V=19;break}else{R=A;S=A+-1|0;T=Q;U=A;V=19;break}else{R=-1;S=-1;T=Q;U=-1;V=19}}else{Q=B+1|0;L=((Q>>>0)%3|0|0)==0?B+-2|0:Q;if(!((B>>>0)%3|0)){R=A;S=B+2|0;T=L;U=K;V=19;break}else{R=A;S=B+-1|0;T=L;U=K;V=19;break}}while(0);if((V|0)==19){V=0;if((T|0)==-1){M=R;N=-1;O=S;P=U}else{M=R;N=f[(f[f[m>>2]>>2]|0)+(T<<2)>>2]|0;O=S;P=U}}W=f[n>>2]|0;L=f[W>>2]|0;if((f[W+4>>2]|0)-L>>2>>>0<=N>>>0){V=22;break}Q=f[(f[r>>2]|0)+(f[L+(N<<2)>>2]<<2)>>2]|0;L=f[q>>2]|0;if(!(b[L+84>>0]|0))X=f[(f[L+68>>2]|0)+(Q<<2)>>2]|0;else X=Q;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[h>>2]=X;Q=b[L+24>>0]|0;f[g>>2]=f[h>>2];vb(L,g,Q,k)|0;if((O|0)==-1)Y=-1;else Y=f[(f[f[m>>2]>>2]|0)+(O<<2)>>2]|0;Z=f[n>>2]|0;Q=f[Z>>2]|0;if((f[Z+4>>2]|0)-Q>>2>>>0<=Y>>>0){V=28;break}L=f[(f[r>>2]|0)+(f[Q+(Y<<2)>>2]<<2)>>2]|0;Q=f[q>>2]|0;if(!(b[Q+84>>0]|0))_=f[(f[Q+68>>2]|0)+(L<<2)>>2]|0;else _=L;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;f[h>>2]=_;L=b[Q+24>>0]|0;f[g>>2]=f[h>>2];vb(Q,g,L,l)|0;L=k;Q=j;$=f[Q>>2]|0;aa=f[Q+4>>2]|0;Q=Xn(f[L>>2]|0,f[L+4>>2]|0,$|0,aa|0)|0;L=I;ba=s;ca=t;da=f[ca>>2]|0;ea=f[ca+4>>2]|0;ca=Xn(f[ba>>2]|0,f[ba+4>>2]|0,da|0,ea|0)|0;ba=I;fa=w;ga=x;ha=f[ga>>2]|0;ia=f[ga+4>>2]|0;ga=Xn(f[fa>>2]|0,f[fa+4>>2]|0,ha|0,ia|0)|0;fa=I;ja=l;ka=Xn(f[ja>>2]|0,f[ja+4>>2]|0,$|0,aa|0)|0;aa=I;$=y;ja=Xn(f[$>>2]|0,f[$+4>>2]|0,da|0,ea|0)|0;ea=I;da=z;$=Xn(f[da>>2]|0,f[da+4>>2]|0,ha|0,ia|0)|0;ia=I;ha=un($|0,ia|0,ca|0,ba|0)|0;da=I;la=un(ja|0,ea|0,ga|0,fa|0)|0;ma=I;na=un(ka|0,aa|0,ga|0,fa|0)|0;fa=I;ga=un($|0,ia|0,Q|0,L|0)|0;ia=I;$=un(ja|0,ea|0,Q|0,L|0)|0;L=I;Q=un(ka|0,aa|0,ca|0,ba|0)|0;ba=I;ca=Xn(C|0,D|0,la|0,ma|0)|0;ma=Vn(ca|0,I|0,ha|0,da|0)|0;da=I;ha=Vn(na|0,fa|0,E|0,F|0)|0;fa=Xn(ha|0,I|0,ga|0,ia|0)|0;ia=I;ga=Xn(G|0,H|0,Q|0,ba|0)|0;ba=Vn(ga|0,I|0,$|0,L|0)|0;L=I;Hh(i);B=f[c>>2]|0;$=(f[v>>2]|0)==0;if((B|0)==-1){oa=$;pa=da;qa=ma;ra=ia;sa=fa;ta=L;ua=ba;break a}else{A=M;C=ma;D=da;E=fa;F=ia;G=ba;H=L;J=$;K=P}}if((V|0)==22)aq(W);else if((V|0)==28)aq(Z)}else{oa=a;pa=0;qa=0;ra=0;sa=0;ta=0;ua=0}while(0);a=(pa|0)>-1|(pa|0)==-1&qa>>>0>4294967295;Z=Xn(0,0,qa|0,pa|0)|0;V=a?pa:I;W=(ra|0)>-1|(ra|0)==-1&sa>>>0>4294967295;P=Xn(0,0,sa|0,ra|0)|0;M=W?ra:I;v=(ta|0)>-1|(ta|0)==-1&ua>>>0>4294967295;c=Xn(0,0,ua|0,ta|0)|0;i=Vn((W?sa:P)|0,M|0,(v?ua:c)|0,(v?ta:I)|0)|0;v=Vn(i|0,I|0,(a?qa:Z)|0,V|0)|0;V=I;if(oa){if((v|0)<=536870912){va=qa;wa=sa;xa=ua;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}oa=Yn(v|0,V|0,29)|0;Z=oa&7;oa=Ik(qa|0,pa|0,Z|0,0)|0;a=Ik(sa|0,ra|0,Z|0,0)|0;i=Ik(ua|0,ta|0,Z|0,0)|0;va=oa;wa=a;xa=i;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}else{if(!((V|0)>0|(V|0)==0&v>>>0>536870912)){va=qa;wa=sa;xa=ua;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}i=Yn(v|0,V|0,29)|0;V=I;v=Ik(qa|0,pa|0,i|0,V|0)|0;pa=Ik(sa|0,ra|0,i|0,V|0)|0;ra=Ik(ua|0,ta|0,i|0,V|0)|0;va=v;wa=pa;xa=ra;f[d>>2]=va;ya=d+4|0;f[ya>>2]=wa;za=d+8|0;f[za>>2]=xa;u=e;return}}function ac(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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=Oa,M=Oa,N=Oa,O=0,P=0,Q=0,R=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=Id(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];lf(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;l=d+11|0;m=b[l>>0]|0;o=d+4|0;p=f[o>>2]|0;q=m<<24>>24<0?p:m&255;if(!q){r=m;s=p;t=0}else{Fi(j,q);r=b[l>>0]|0;s=f[o>>2]|0;t=f[j>>2]|0}o=r<<24>>24<0;kh(t|0,(o?f[d>>2]|0:d)|0,(o?s:r&255)|0)|0;pj(i,c);c=i+12|0;f[c>>2]=0;r=i+16|0;f[r>>2]=0;f[i+20>>2]=0;s=f[k>>2]|0;o=f[j>>2]|0;d=s-o|0;if(!d){v=o;w=s;x=0}else{Fi(c,d);v=f[j>>2]|0;w=f[k>>2]|0;x=f[c>>2]|0}kh(x|0,v|0,w-v|0)|0;v=i+11|0;w=b[v>>0]|0;x=w<<24>>24<0;c=x?f[i>>2]|0:i;d=x?f[i+4>>2]|0:w&255;if(d>>>0>3){w=c;x=d;s=d;while(1){o=X(h[w>>0]|h[w+1>>0]<<8|h[w+2>>0]<<16|h[w+3>>0]<<24,1540483477)|0;x=(X(o>>>24^o,1540483477)|0)^(X(x,1540483477)|0);s=s+-4|0;if(s>>>0<=3)break;else w=w+4|0}w=d+-4|0;s=w&-4;y=w-s|0;z=c+(s+4)|0;A=x}else{y=d;z=c;A=d}switch(y|0){case 3:{B=h[z+2>>0]<<16^A;C=12;break}case 2:{B=A;C=12;break}case 1:{D=A;C=13;break}default:E=A}if((C|0)==12){D=h[z+1>>0]<<8^B;C=13}if((C|0)==13)E=X(D^h[z>>0],1540483477)|0;z=X(E>>>13^E,1540483477)|0;E=z>>>15^z;z=a+4|0;D=f[z>>2]|0;B=(D|0)==0;a:do if(!B){A=D+-1|0;y=(A&D|0)==0;if(!y)if(E>>>0>>0)F=E;else F=(E>>>0)%(D>>>0)|0;else F=E&A;x=f[(f[a>>2]|0)+(F<<2)>>2]|0;if((x|0)!=0?(s=f[x>>2]|0,(s|0)!=0):0){x=(d|0)==0;if(y){if(x){y=s;while(1){w=f[y+4>>2]|0;if(!((w|0)==(E|0)|(w&A|0)==(F|0))){G=F;C=54;break a}w=b[y+8+11>>0]|0;if(!((w<<24>>24<0?f[y+12>>2]|0:w&255)|0))break a;y=f[y>>2]|0;if(!y){G=F;C=54;break a}}}else H=s;while(1){y=f[H+4>>2]|0;if(!((y|0)==(E|0)|(y&A|0)==(F|0))){G=F;C=54;break a}y=H+8|0;w=b[y+11>>0]|0;o=w<<24>>24<0;t=w&255;do if(((o?f[H+12>>2]|0:t)|0)==(d|0)){w=f[y>>2]|0;if(o)if(!(Vk(w,c,d)|0))break a;else break;if((b[c>>0]|0)==(w&255)<<24>>24){w=y;l=t;q=c;do{l=l+-1|0;w=w+1|0;if(!l)break a;q=q+1|0}while((b[w>>0]|0)==(b[q>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){G=F;C=54;break a}}}if(x){A=s;while(1){t=f[A+4>>2]|0;if((t|0)!=(E|0)){if(t>>>0>>0)I=t;else I=(t>>>0)%(D>>>0)|0;if((I|0)!=(F|0)){G=F;C=54;break a}}t=b[A+8+11>>0]|0;if(!((t<<24>>24<0?f[A+12>>2]|0:t&255)|0))break a;A=f[A>>2]|0;if(!A){G=F;C=54;break a}}}else J=s;while(1){A=f[J+4>>2]|0;if((A|0)!=(E|0)){if(A>>>0>>0)K=A;else K=(A>>>0)%(D>>>0)|0;if((K|0)!=(F|0)){G=F;C=54;break a}}A=J+8|0;x=b[A+11>>0]|0;t=x<<24>>24<0;y=x&255;do if(((t?f[J+12>>2]|0:y)|0)==(d|0)){x=f[A>>2]|0;if(t)if(!(Vk(x,c,d)|0))break a;else break;if((b[c>>0]|0)==(x&255)<<24>>24){x=A;o=y;q=c;do{o=o+-1|0;x=x+1|0;if(!o)break a;q=q+1|0}while((b[x>>0]|0)==(b[q>>0]|0))}}while(0);J=f[J>>2]|0;if(!J){G=F;C=54;break}}}else{G=F;C=54}}else{G=0;C=54}while(0);if((C|0)==54){oi(g,a,E,i);C=a+12|0;L=$(((f[C>>2]|0)+1|0)>>>0);M=$(D>>>0);N=$(n[a+16>>2]);do if(B|$(N*M)>>0<3|(D+-1&D|0)!=0)&1;J=~~$(W($(L/N)))>>>0;ei(a,F>>>0>>0?J:F);F=f[z>>2]|0;J=F+-1|0;if(!(J&F)){O=F;P=J&E;break}if(E>>>0>>0){O=F;P=E}else{O=F;P=(E>>>0)%(F>>>0)|0}}else{O=D;P=G}while(0);G=f[(f[a>>2]|0)+(P<<2)>>2]|0;if(!G){D=a+8|0;f[f[g>>2]>>2]=f[D>>2];f[D>>2]=f[g>>2];f[(f[a>>2]|0)+(P<<2)>>2]=D;D=f[g>>2]|0;P=f[D>>2]|0;if(!P)Q=g;else{E=f[P+4>>2]|0;P=O+-1|0;if(P&O)if(E>>>0>>0)R=E;else R=(E>>>0)%(O>>>0)|0;else R=E&P;f[(f[a>>2]|0)+(R<<2)>>2]=D;Q=g}}else{f[f[g>>2]>>2]=f[G>>2];f[G>>2]=f[g>>2];Q=g}f[C>>2]=(f[C>>2]|0)+1;f[Q>>2]=0}Q=f[i+12>>2]|0;if(Q|0){if((f[r>>2]|0)!=(Q|0))f[r>>2]=Q;Oq(Q)}if((b[v>>0]|0)<0)Oq(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;Oq(i);u=e;return}function bc(a,c){a=a|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0;d=u;u=u+192|0;e=d+152|0;g=d+144|0;h=d+72|0;i=d;j=d+112|0;k=d+108|0;l=d+104|0;m=a+352|0;if(b[m>>0]|0?(n=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0,((f[n+12>>2]|0)-(f[n+8>>2]|0)|0)>0):0){n=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+8|0;o=f[f[n>>2]>>2]|0;f[e>>2]=c;n=o+4|0;p=o+8|0;q=f[p>>2]|0;if((q|0)==(f[o+12>>2]|0))Ri(n,e);else{f[q>>2]=c;f[p>>2]=q+4}q=f[e>>2]|0;r=o+16|0;s=o+20|0;o=f[s>>2]|0;t=f[r>>2]|0;v=o-t>>2;w=t;if((q|0)<(v|0)){x=w;y=q}else{t=q+1|0;f[g>>2]=-1;z=o;if(t>>>0<=v>>>0)if(t>>>0>>0?(o=w+(t<<2)|0,(o|0)!=(z|0)):0){f[s>>2]=z+(~((z+-4-o|0)>>>2)<<2);A=q;B=w}else{A=q;B=w}else{Ch(r,t-v|0,g);A=f[e>>2]|0;B=f[r>>2]|0}x=B;y=A}f[x+(y<<2)>>2]=((f[p>>2]|0)-(f[n>>2]|0)>>2)+-1;C=1;u=d;return C|0}n=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+52|0;p=f[(f[(f[n>>2]|0)+84>>2]|0)+(c<<2)>>2]|0;n=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+4|0;y=f[(f[(f[n>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;f[g>>2]=-1;n=a+172|0;x=f[a+176>>2]|0;A=f[n>>2]|0;B=A;a:do if((x|0)==(A|0))D=-1;else{r=(x-A|0)/136|0;v=0;while(1){if((f[B+(v*136|0)>>2]|0)==(c|0))break;t=v+1|0;if(t>>>0>>0)v=t;else{D=-1;break a}}f[g>>2]=v;D=v}while(0);b:do if(!(b[m>>0]|0)){A=(f[y+56>>2]|0)==0;do if(!((p|0)==0|A)){if((p|0)==1?b[B+(D*136|0)+28>>0]|0:0)break;x=ln(88)|0;r=f[a+8>>2]|0;t=B+(D*136|0)+104|0;f[x+4>>2]=0;f[x>>2]=3564;w=x+12|0;f[w>>2]=3588;q=x+64|0;f[q>>2]=0;f[x+68>>2]=0;f[x+72>>2]=0;o=x+16|0;z=o+44|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(z|0));f[x+76>>2]=r;f[x+80>>2]=t;s=x+84|0;f[s>>2]=0;f[h>>2]=3588;E=h+4|0;F=E+4|0;f[F>>2]=0;f[F+4>>2]=0;f[F+8>>2]=0;f[F+12>>2]=0;f[F+16>>2]=0;f[F+20>>2]=0;F=B+(D*136|0)+4|0;G=i+4|0;f[G>>2]=3588;H=i+56|0;f[H>>2]=0;I=i+60|0;f[I>>2]=0;f[i+64>>2]=0;o=i+8|0;z=o+44|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(z|0));f[E>>2]=F;o=f[B+(D*136|0)+68>>2]|0;z=((f[o+4>>2]|0)-(f[o>>2]|0)>>2>>>0)/3|0;b[e>>0]=0;qh(h+8|0,z,e);Va[f[(f[h>>2]|0)+8>>2]&127](h);Df(j,h);Df(e,j);f[i>>2]=f[e+4>>2];z=i+4|0;fg(z,e)|0;f[e>>2]=3588;o=f[e+20>>2]|0;if(o|0)Oq(o);o=f[e+8>>2]|0;if(o|0)Oq(o);f[i+36>>2]=F;f[i+40>>2]=t;f[i+44>>2]=r;f[i+48>>2]=x;f[j>>2]=3588;o=f[j+20>>2]|0;if(o|0)Oq(o);o=f[j+8>>2]|0;if(o|0)Oq(o);f[s>>2]=a+72;f[x+8>>2]=f[i>>2];fg(w,z)|0;z=x+44|0;o=i+36|0;f[z>>2]=f[o>>2];f[z+4>>2]=f[o+4>>2];f[z+8>>2]=f[o+8>>2];f[z+12>>2]=f[o+12>>2];b[z+16>>0]=b[o+16>>0]|0;ng(q,f[H>>2]|0,f[I>>2]|0);o=x;z=f[H>>2]|0;if(z|0){J=f[I>>2]|0;if((J|0)!=(z|0))f[I>>2]=J+(~((J+-4-z|0)>>>2)<<2);Oq(z)}f[G>>2]=3588;z=f[i+24>>2]|0;if(z|0)Oq(z);z=f[i+12>>2]|0;if(z|0)Oq(z);f[h>>2]=3588;z=f[h+20>>2]|0;if(z|0)Oq(z);z=f[h+8>>2]|0;if(z|0)Oq(z);K=0;L=o;M=54;break b}while(0);if(!A){b[B+(D*136|0)+100>>0]=0;N=B+(D*136|0)+104|0;M=26}else M=24}else M=24;while(0);if((M|0)==24){N=a+40|0;M=26}if((M|0)==26){D=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+48|0;do if((mi(f[D>>2]|0)|0)==0?(f[y+56>>2]|0)==0:0){if(b[m>>0]|0?(B=f[a+8>>2]|0,((f[B+12>>2]|0)-(f[B+8>>2]|0)|0)>4):0){M=31;break}gf(e,a,N);O=1;P=f[e>>2]|0}else M=31;while(0);if((M|0)==31){Vd(e,a,N);O=0;P=f[e>>2]|0}if(!P)Q=0;else{K=O;L=P;M=54}}if((M|0)==54){M=f[g>>2]|0;if((M|0)==-1)R=a+68|0;else R=(f[n>>2]|0)+(M*136|0)+132|0;f[R>>2]=K;K=ln(76)|0;f[k>>2]=L;rl(K,k,c);c=K;K=f[k>>2]|0;f[k>>2]=0;if(K|0)Va[f[(f[K>>2]|0)+4>>2]&127](K);K=a+188|0;k=f[K>>2]|0;if((k|0)==(f[a+192>>2]|0))Ri(a+184|0,g);else{f[k>>2]=f[g>>2];f[K>>2]=k+4}k=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0;f[l>>2]=c;a=k+12|0;K=f[a>>2]|0;if(K>>>0<(f[k+16>>2]|0)>>>0){f[l>>2]=0;f[K>>2]=c;f[a>>2]=K+4;S=l}else{Qg(k+8|0,l);S=l}l=f[S>>2]|0;f[S>>2]=0;if(!l)Q=1;else{Va[f[(f[l>>2]|0)+4>>2]&127](l);Q=1}}C=Q;u=d;return C|0}function cc(a,c){a=a|0;c=c|0;var d=0,e=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,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,Q=0,R=0,S=0;d=u;u=u+192|0;e=d+152|0;g=d+144|0;h=d+72|0;i=d;j=d+112|0;k=d+108|0;l=d+104|0;m=a+288|0;if(b[m>>0]|0?(n=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0,((f[n+12>>2]|0)-(f[n+8>>2]|0)|0)>0):0){n=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+8|0;o=f[f[n>>2]>>2]|0;f[e>>2]=c;n=o+4|0;p=o+8|0;q=f[p>>2]|0;if((q|0)==(f[o+12>>2]|0))Ri(n,e);else{f[q>>2]=c;f[p>>2]=q+4}q=f[e>>2]|0;r=o+16|0;s=o+20|0;o=f[s>>2]|0;t=f[r>>2]|0;v=o-t>>2;w=t;if((q|0)<(v|0)){x=w;y=q}else{t=q+1|0;f[g>>2]=-1;z=o;if(t>>>0<=v>>>0)if(t>>>0>>0?(o=w+(t<<2)|0,(o|0)!=(z|0)):0){f[s>>2]=z+(~((z+-4-o|0)>>>2)<<2);A=q;B=w}else{A=q;B=w}else{Ch(r,t-v|0,g);A=f[e>>2]|0;B=f[r>>2]|0}x=B;y=A}f[x+(y<<2)>>2]=((f[p>>2]|0)-(f[n>>2]|0)>>2)+-1;C=1;u=d;return C|0}n=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+52|0;p=f[(f[(f[n>>2]|0)+84>>2]|0)+(c<<2)>>2]|0;n=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+4|0;y=f[(f[(f[n>>2]|0)+8>>2]|0)+(c<<2)>>2]|0;f[g>>2]=-1;n=a+172|0;x=f[a+176>>2]|0;A=f[n>>2]|0;B=A;a:do if((x|0)==(A|0))D=-1;else{r=(x-A|0)/136|0;v=0;while(1){if((f[B+(v*136|0)>>2]|0)==(c|0))break;t=v+1|0;if(t>>>0>>0)v=t;else{D=-1;break a}}f[g>>2]=v;D=v}while(0);b:do if(!(b[m>>0]|0)){A=(f[y+56>>2]|0)==0;do if(!((p|0)==0|A)){if((p|0)==1?b[B+(D*136|0)+28>>0]|0:0)break;x=ln(88)|0;r=f[a+8>>2]|0;t=B+(D*136|0)+104|0;f[x+4>>2]=0;f[x>>2]=3564;w=x+12|0;f[w>>2]=3588;q=x+64|0;f[q>>2]=0;f[x+68>>2]=0;f[x+72>>2]=0;o=x+16|0;z=o+44|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(z|0));f[x+76>>2]=r;f[x+80>>2]=t;s=x+84|0;f[s>>2]=0;f[h>>2]=3588;E=h+4|0;F=E+4|0;f[F>>2]=0;f[F+4>>2]=0;f[F+8>>2]=0;f[F+12>>2]=0;f[F+16>>2]=0;f[F+20>>2]=0;F=B+(D*136|0)+4|0;G=i+4|0;f[G>>2]=3588;H=i+56|0;f[H>>2]=0;I=i+60|0;f[I>>2]=0;f[i+64>>2]=0;o=i+8|0;z=o+44|0;do{f[o>>2]=0;o=o+4|0}while((o|0)<(z|0));f[E>>2]=F;o=f[B+(D*136|0)+68>>2]|0;z=((f[o+4>>2]|0)-(f[o>>2]|0)>>2>>>0)/3|0;b[e>>0]=0;qh(h+8|0,z,e);Va[f[(f[h>>2]|0)+8>>2]&127](h);Df(j,h);Df(e,j);f[i>>2]=f[e+4>>2];z=i+4|0;fg(z,e)|0;f[e>>2]=3588;o=f[e+20>>2]|0;if(o|0)Oq(o);o=f[e+8>>2]|0;if(o|0)Oq(o);f[i+36>>2]=F;f[i+40>>2]=t;f[i+44>>2]=r;f[i+48>>2]=x;f[j>>2]=3588;o=f[j+20>>2]|0;if(o|0)Oq(o);o=f[j+8>>2]|0;if(o|0)Oq(o);f[s>>2]=a+72;f[x+8>>2]=f[i>>2];fg(w,z)|0;z=x+44|0;o=i+36|0;f[z>>2]=f[o>>2];f[z+4>>2]=f[o+4>>2];f[z+8>>2]=f[o+8>>2];f[z+12>>2]=f[o+12>>2];b[z+16>>0]=b[o+16>>0]|0;ng(q,f[H>>2]|0,f[I>>2]|0);o=x;z=f[H>>2]|0;if(z|0){J=f[I>>2]|0;if((J|0)!=(z|0))f[I>>2]=J+(~((J+-4-z|0)>>>2)<<2);Oq(z)}f[G>>2]=3588;z=f[i+24>>2]|0;if(z|0)Oq(z);z=f[i+12>>2]|0;if(z|0)Oq(z);f[h>>2]=3588;z=f[h+20>>2]|0;if(z|0)Oq(z);z=f[h+8>>2]|0;if(z|0)Oq(z);K=0;L=o;M=54;break b}while(0);if(!A){b[B+(D*136|0)+100>>0]=0;N=B+(D*136|0)+104|0;M=26}else M=24}else M=24;while(0);if((M|0)==24){N=a+40|0;M=26}if((M|0)==26){D=(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)+48|0;do if((mi(f[D>>2]|0)|0)==0?(f[y+56>>2]|0)==0:0){if(b[m>>0]|0?(B=f[a+8>>2]|0,((f[B+12>>2]|0)-(f[B+8>>2]|0)|0)>4):0){M=31;break}gf(e,a,N);O=1;P=f[e>>2]|0}else M=31;while(0);if((M|0)==31){Vd(e,a,N);O=0;P=f[e>>2]|0}if(!P)Q=0;else{K=O;L=P;M=54}}if((M|0)==54){M=f[g>>2]|0;if((M|0)==-1)R=a+68|0;else R=(f[n>>2]|0)+(M*136|0)+132|0;f[R>>2]=K;K=ln(76)|0;f[k>>2]=L;rl(K,k,c);c=K;K=f[k>>2]|0;f[k>>2]=0;if(K|0)Va[f[(f[K>>2]|0)+4>>2]&127](K);K=a+188|0;k=f[K>>2]|0;if((k|0)==(f[a+192>>2]|0))Ri(a+184|0,g);else{f[k>>2]=f[g>>2];f[K>>2]=k+4}k=Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0;f[l>>2]=c;a=k+12|0;K=f[a>>2]|0;if(K>>>0<(f[k+16>>2]|0)>>>0){f[l>>2]=0;f[K>>2]=c;f[a>>2]=K+4;S=l}else{Qg(k+8|0,l);S=l}l=f[S>>2]|0;f[S>>2]=0;if(!l)Q=1;else{Va[f[(f[l>>2]|0)+4>>2]&127](l);Q=1}}C=Q;u=d;return C|0}function dc(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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;c=u;u=u+16|0;d=c+8|0;e=c;g=f[b>>2]|0;if((g|0)==-1){u=c;return}h=(g>>>0)/3|0;i=a+12|0;if(f[(f[i>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)|0){u=c;return}h=a+56|0;j=f[h>>2]|0;k=a+60|0;l=f[k>>2]|0;if((l|0)==(j|0))m=j;else{n=l+(~((l+-4-j|0)>>>2)<<2)|0;f[k>>2]=n;m=n}n=a+64|0;if((m|0)==(f[n>>2]|0))Ri(h,b);else{f[m>>2]=g;f[k>>2]=m+4}m=f[a>>2]|0;g=f[b>>2]|0;j=g+1|0;if((g|0)!=-1){l=((j>>>0)%3|0|0)==0?g+-2|0:j;if((l|0)==-1)o=-1;else o=f[(f[m>>2]|0)+(l<<2)>>2]|0;l=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((l|0)==-1){p=o;q=-1}else{p=o;q=f[(f[m>>2]|0)+(l<<2)>>2]|0}}else{p=-1;q=-1}l=a+24|0;m=f[l>>2]|0;o=m+(p>>>5<<2)|0;g=1<<(p&31);j=f[o>>2]|0;if(!(j&g)){f[o>>2]=j|g;g=f[b>>2]|0;j=g+1|0;if((g|0)==-1)r=-1;else r=((j>>>0)%3|0|0)==0?g+-2|0:j;f[e>>2]=r;j=f[(f[(f[a+44>>2]|0)+96>>2]|0)+(((r>>>0)/3|0)*12|0)+(((r>>>0)%3|0)<<2)>>2]|0;r=f[a+48>>2]|0;f[d>>2]=j;g=f[r+4>>2]|0;r=g+4|0;o=f[r>>2]|0;if((o|0)==(f[g+8>>2]|0))Ri(g,d);else{f[o>>2]=j;f[r>>2]=o+4}o=a+40|0;r=f[o>>2]|0;j=r+4|0;g=f[j>>2]|0;if((g|0)==(f[r+8>>2]|0)){Ri(r,e);s=f[o>>2]|0}else{f[g>>2]=f[e>>2];f[j>>2]=g+4;s=r}r=s+24|0;f[(f[s+12>>2]|0)+(p<<2)>>2]=f[r>>2];f[r>>2]=(f[r>>2]|0)+1;t=f[l>>2]|0}else t=m;m=t+(q>>>5<<2)|0;t=1<<(q&31);r=f[m>>2]|0;if(!(r&t)){f[m>>2]=r|t;t=f[b>>2]|0;do if((t|0)!=-1)if(!((t>>>0)%3|0)){v=t+2|0;break}else{v=t+-1|0;break}else v=-1;while(0);f[e>>2]=v;t=f[(f[(f[a+44>>2]|0)+96>>2]|0)+(((v>>>0)/3|0)*12|0)+(((v>>>0)%3|0)<<2)>>2]|0;v=f[a+48>>2]|0;f[d>>2]=t;r=f[v+4>>2]|0;v=r+4|0;m=f[v>>2]|0;if((m|0)==(f[r+8>>2]|0))Ri(r,d);else{f[m>>2]=t;f[v>>2]=m+4}m=a+40|0;v=f[m>>2]|0;t=v+4|0;r=f[t>>2]|0;if((r|0)==(f[v+8>>2]|0)){Ri(v,e);w=f[m>>2]|0}else{f[r>>2]=f[e>>2];f[t>>2]=r+4;w=v}v=w+24|0;f[(f[w+12>>2]|0)+(q<<2)>>2]=f[v>>2];f[v>>2]=(f[v>>2]|0)+1}v=f[h>>2]|0;q=f[k>>2]|0;if((v|0)==(q|0)){u=c;return}w=a+44|0;r=a+48|0;t=a+40|0;m=q;q=v;while(1){v=f[m+-4>>2]|0;f[b>>2]=v;p=(v>>>0)/3|0;if((v|0)!=-1?(v=f[i>>2]|0,(f[v+(p>>>5<<2)>>2]&1<<(p&31)|0)==0):0){s=p;p=v;a:while(1){v=p+(s>>>5<<2)|0;f[v>>2]=f[v>>2]|1<<(s&31);v=f[b>>2]|0;if((v|0)==-1)x=-1;else x=f[(f[f[a>>2]>>2]|0)+(v<<2)>>2]|0;g=(f[l>>2]|0)+(x>>>5<<2)|0;j=1<<(x&31);o=f[g>>2]|0;do if(!(j&o)){y=f[a>>2]|0;z=f[(f[y+24>>2]|0)+(x<<2)>>2]|0;A=z+1|0;if(((z|0)!=-1?(B=((A>>>0)%3|0|0)==0?z+-2|0:A,(B|0)!=-1):0)?(A=f[(f[y+12>>2]|0)+(B<<2)>>2]|0,B=A+1|0,(A|0)!=-1):0)C=((((B>>>0)%3|0|0)==0?A+-2|0:B)|0)==-1;else C=1;f[g>>2]=o|j;B=f[b>>2]|0;f[e>>2]=B;A=f[(f[(f[w>>2]|0)+96>>2]|0)+(((B>>>0)/3|0)*12|0)+(((B>>>0)%3|0)<<2)>>2]|0;B=f[r>>2]|0;f[d>>2]=A;y=f[B+4>>2]|0;B=y+4|0;z=f[B>>2]|0;if((z|0)==(f[y+8>>2]|0))Ri(y,d);else{f[z>>2]=A;f[B>>2]=z+4}z=f[t>>2]|0;B=z+4|0;A=f[B>>2]|0;if((A|0)==(f[z+8>>2]|0)){Ri(z,e);D=f[t>>2]|0}else{f[A>>2]=f[e>>2];f[B>>2]=A+4;D=z}z=D+24|0;f[(f[D+12>>2]|0)+(x<<2)>>2]=f[z>>2];f[z>>2]=(f[z>>2]|0)+1;if(C){E=f[b>>2]|0;F=60;break}z=f[a>>2]|0;A=f[b>>2]|0;do if((A|0)==-1)G=-1;else{B=A+1|0;y=((B>>>0)%3|0|0)==0?A+-2|0:B;if((y|0)==-1){G=-1;break}G=f[(f[z+12>>2]|0)+(y<<2)>>2]|0}while(0);f[b>>2]=G;H=(G>>>0)/3|0}else{E=v;F=60}while(0);if((F|0)==60){F=0;v=f[a>>2]|0;if((E|0)==-1){F=61;break}j=E+1|0;o=((j>>>0)%3|0|0)==0?E+-2|0:j;if((o|0)==-1)I=-1;else I=f[(f[v+12>>2]|0)+(o<<2)>>2]|0;f[d>>2]=I;o=(((E>>>0)%3|0|0)==0?2:-1)+E|0;if((o|0)==-1)J=-1;else J=f[(f[v+12>>2]|0)+(o<<2)>>2]|0;o=(I|0)==-1;v=(I>>>0)/3|0;j=o?-1:v;g=(J|0)==-1;z=(J>>>0)/3|0;A=g?-1:z;do if(!o){y=f[i>>2]|0;if(f[y+(j>>>5<<2)>>2]&1<<(j&31)|0){F=68;break}if(g){K=I;L=v;break}if(!(f[y+(A>>>5<<2)>>2]&1<<(A&31))){F=73;break a}else{K=I;L=v}}else F=68;while(0);if((F|0)==68){F=0;if(g){F=70;break}if(!(f[(f[i>>2]|0)+(A>>>5<<2)>>2]&1<<(A&31))){K=J;L=z}else{F=70;break}}f[b>>2]=K;H=L}s=H;p=f[i>>2]|0}do if((F|0)==61){F=0;f[d>>2]=-1;F=70}else if((F|0)==73){F=0;p=f[k>>2]|0;f[p+-4>>2]=J;if((p|0)==(f[n>>2]|0)){Ri(h,d);M=f[k>>2]|0;break}else{f[p>>2]=f[d>>2];s=p+4|0;f[k>>2]=s;M=s;break}}while(0);if((F|0)==70){F=0;s=(f[k>>2]|0)+-4|0;f[k>>2]=s;M=s}N=f[h>>2]|0;O=M}else{s=m+-4|0;f[k>>2]=s;N=q;O=s}if((N|0)==(O|0))break;else{m=O;q=N}}u=c;return}function ec(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=Oa,fa=Oa,ga=Oa,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;g=u;u=u+48|0;i=g+12|0;j=g+32|0;k=g;l=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)aq(k);q=o<<2;r=ln(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;sj(r|0,0,q|0)|0;f[p>>2]=s;s=c+48|0;q=c+40|0;o=i+4|0;t=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=f[e>>2]|0;e=0;z=r;A=0;B=0;C=r;D=r;E=r;while(1){r=s;F=f[r>>2]|0;G=f[r+4>>2]|0;r=q;H=un(f[r>>2]|0,f[r+4>>2]|0,y+A|0,0)|0;r=Vn(H|0,I|0,F|0,G|0)|0;G=(f[f[c>>2]>>2]|0)+r|0;r=h[G>>0]|h[G+1>>0]<<8;d[j>>1]=r;G=(r^318)&65535;a:do if(e){F=e+-1|0;H=(F&e|0)==0;if(!H)if(e>>>0>G>>>0)J=G;else J=(G>>>0)%(e>>>0)|0;else J=F&G;K=f[i>>2]|0;L=f[K+(J<<2)>>2]|0;b:do if(L|0?(M=f[L>>2]|0,M|0):0){c:do if(H){N=M;while(1){O=f[N+4>>2]|0;P=(O|0)==(G|0);if(!(P|(O&F|0)==(J|0)))break b;if(P?(d[N+8>>1]|0)==r<<16>>16:0){Q=N;break c}N=f[N>>2]|0;if(!N)break b}}else{N=M;while(1){P=f[N+4>>2]|0;if((P|0)==(G|0)){if((d[N+8>>1]|0)==r<<16>>16){Q=N;break c}}else{if(P>>>0>>0)R=P;else R=(P>>>0)%(e>>>0)|0;if((R|0)!=(J|0))break b}N=f[N>>2]|0;if(!N)break b}}while(0);f[E+(A<<2)>>2]=f[Q+12>>2];S=z;T=B;U=D;V=C;X=E;break a}while(0);if(!H)if(e>>>0>G>>>0)Y=G;else Y=(G>>>0)%(e>>>0)|0;else Y=F&G;L=f[K+(Y<<2)>>2]|0;if(!L){Z=Y;_=e;aa=0;ba=40}else{if(H){M=L;while(1){M=f[M>>2]|0;if(!M){Z=Y;_=e;aa=0;ba=40;break a}N=f[M+4>>2]|0;if(!((N|0)==(G|0)|(N&F|0)==(Y|0))){Z=Y;_=e;aa=0;ba=40;break a}if((d[M+8>>1]|0)==r<<16>>16){ba=55;break a}}}else ca=L;while(1){ca=f[ca>>2]|0;if(!ca){Z=Y;_=e;aa=0;ba=40;break a}M=f[ca+4>>2]|0;if((M|0)!=(G|0)){if(M>>>0>>0)da=M;else da=(M>>>0)%(e>>>0)|0;if((da|0)!=(Y|0)){Z=Y;_=e;aa=0;ba=40;break a}}if((d[ca+8>>1]|0)==r<<16>>16){ba=55;break}}}}else{Z=0;_=0;aa=1;ba=40}while(0);if((ba|0)==40){ba=0;L=ln(16)|0;d[L+8>>1]=r;f[L+12>>2]=B;f[L+4>>2]=G;f[L>>2]=0;ea=$(((f[t>>2]|0)+1|0)>>>0);fa=$(_>>>0);ga=$(n[l>>2]);do if(aa|$(ga*fa)>>0<3|(_+-1&_|0)!=0)&1;F=~~$(W($(ea/ga)))>>>0;Vh(i,M>>>0>>0?F:M);M=f[o>>2]|0;F=M+-1|0;if(!(F&M)){ha=M;ia=F&G;break}if(M>>>0>G>>>0){ha=M;ia=G}else{ha=M;ia=(G>>>0)%(M>>>0)|0}}else{ha=_;ia=Z}while(0);G=(f[i>>2]|0)+(ia<<2)|0;r=f[G>>2]|0;if(!r){f[L>>2]=f[v>>2];f[v>>2]=L;f[G>>2]=v;G=f[L>>2]|0;if(G|0){M=f[G+4>>2]|0;G=ha+-1|0;if(G&ha)if(M>>>0>>0)ja=M;else ja=(M>>>0)%(ha>>>0)|0;else ja=M&G;ka=(f[i>>2]|0)+(ja<<2)|0;ba=53}}else{f[L>>2]=f[r>>2];ka=r;ba=53}if((ba|0)==53){ba=0;f[ka>>2]=L}f[t>>2]=(f[t>>2]|0)+1;ba=55}if((ba|0)==55){ba=0;r=w;G=f[r>>2]|0;M=un(G|0,f[r+4>>2]|0,B|0,0)|0;kh((f[f[x>>2]>>2]|0)+M|0,j|0,G|0)|0;G=f[k>>2]|0;f[G+(A<<2)>>2]=B;S=G;T=B+1|0;U=G;V=G;X=G}G=A+1|0;la=f[m>>2]|0;if(G>>>0>=la>>>0)break;e=f[o>>2]|0;z=S;A=G;B=T;C=V;D=U;E=X}if((T|0)==(la|0))ma=V;else{V=a+84|0;if(!(b[V>>0]|0)){X=f[a+72>>2]|0;E=f[a+68>>2]|0;D=E;if((X|0)==(E|0))na=S;else{C=X-E>>2;E=0;do{X=D+(E<<2)|0;f[X>>2]=f[U+(f[X>>2]<<2)>>2];E=E+1|0}while(E>>>0>>0);na=S}}else{b[V>>0]=0;V=a+68|0;S=a+72|0;C=f[S>>2]|0;E=f[V>>2]|0;U=C-E>>2;D=E;E=C;if(la>>>0<=U>>>0)if(la>>>0>>0?(C=D+(la<<2)|0,(C|0)!=(E|0)):0){f[S>>2]=E+(~((E+-4-C|0)>>>2)<<2);oa=la}else oa=la;else{Ch(V,la-U|0,1220);oa=f[m>>2]|0}U=f[k>>2]|0;if(!oa)na=U;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[U+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);na=U}}f[m>>2]=T;ma=na}if(!ma)pa=T;else{na=f[p>>2]|0;if((na|0)!=(ma|0))f[p>>2]=na+(~((na+-4-ma|0)>>>2)<<2);Oq(ma);pa=T}}else pa=0;T=f[i+8>>2]|0;if(T|0){ma=T;do{T=ma;ma=f[ma>>2]|0;Oq(T)}while((ma|0)!=0)}ma=f[i>>2]|0;f[i>>2]=0;if(!ma){u=g;return pa|0}Oq(ma);u=g;return pa|0}function fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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=Oa,K=Oa,L=Oa,M=0,N=0,O=0,P=0;e=u;u=u+64|0;g=e+40|0;i=e+16|0;j=e;k=Id(a,c)|0;if(k|0){f[i>>2]=k;f[g>>2]=f[i>>2];lf(a,g)|0}f[j>>2]=0;k=j+4|0;f[k>>2]=0;f[j+8>>2]=0;Fi(j,4);l=f[j>>2]|0;m=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[l>>0]=m;b[l+1>>0]=m>>8;b[l+2>>0]=m>>16;b[l+3>>0]=m>>24;pj(i,c);c=i+12|0;f[c>>2]=0;m=i+16|0;f[m>>2]=0;f[i+20>>2]=0;l=f[k>>2]|0;d=f[j>>2]|0;o=l-d|0;if(!o){p=d;q=l;r=0}else{Fi(c,o);p=f[j>>2]|0;q=f[k>>2]|0;r=f[c>>2]|0}kh(r|0,p|0,q-p|0)|0;p=i+11|0;q=b[p>>0]|0;r=q<<24>>24<0;c=r?f[i>>2]|0:i;o=r?f[i+4>>2]|0:q&255;if(o>>>0>3){q=c;r=o;l=o;while(1){d=X(h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24,1540483477)|0;r=(X(d>>>24^d,1540483477)|0)^(X(r,1540483477)|0);l=l+-4|0;if(l>>>0<=3)break;else q=q+4|0}q=o+-4|0;l=q&-4;s=q-l|0;t=c+(l+4)|0;v=r}else{s=o;t=c;v=o}switch(s|0){case 3:{w=h[t+2>>0]<<16^v;x=10;break}case 2:{w=v;x=10;break}case 1:{y=v;x=11;break}default:z=v}if((x|0)==10){y=h[t+1>>0]<<8^w;x=11}if((x|0)==11)z=X(y^h[t>>0],1540483477)|0;t=X(z>>>13^z,1540483477)|0;z=t>>>15^t;t=a+4|0;y=f[t>>2]|0;w=(y|0)==0;a:do if(!w){v=y+-1|0;s=(v&y|0)==0;if(!s)if(z>>>0>>0)A=z;else A=(z>>>0)%(y>>>0)|0;else A=z&v;r=f[(f[a>>2]|0)+(A<<2)>>2]|0;if((r|0)!=0?(l=f[r>>2]|0,(l|0)!=0):0){r=(o|0)==0;if(s){if(r){s=l;while(1){q=f[s+4>>2]|0;if(!((q|0)==(z|0)|(q&v|0)==(A|0))){B=A;x=52;break a}q=b[s+8+11>>0]|0;if(!((q<<24>>24<0?f[s+12>>2]|0:q&255)|0))break a;s=f[s>>2]|0;if(!s){B=A;x=52;break a}}}else C=l;while(1){s=f[C+4>>2]|0;if(!((s|0)==(z|0)|(s&v|0)==(A|0))){B=A;x=52;break a}s=C+8|0;q=b[s+11>>0]|0;d=q<<24>>24<0;D=q&255;do if(((d?f[C+12>>2]|0:D)|0)==(o|0)){q=f[s>>2]|0;if(d)if(!(Vk(q,c,o)|0))break a;else break;if((b[c>>0]|0)==(q&255)<<24>>24){q=s;E=D;F=c;do{E=E+-1|0;q=q+1|0;if(!E)break a;F=F+1|0}while((b[q>>0]|0)==(b[F>>0]|0))}}while(0);C=f[C>>2]|0;if(!C){B=A;x=52;break a}}}if(r){v=l;while(1){D=f[v+4>>2]|0;if((D|0)!=(z|0)){if(D>>>0>>0)G=D;else G=(D>>>0)%(y>>>0)|0;if((G|0)!=(A|0)){B=A;x=52;break a}}D=b[v+8+11>>0]|0;if(!((D<<24>>24<0?f[v+12>>2]|0:D&255)|0))break a;v=f[v>>2]|0;if(!v){B=A;x=52;break a}}}else H=l;while(1){v=f[H+4>>2]|0;if((v|0)!=(z|0)){if(v>>>0>>0)I=v;else I=(v>>>0)%(y>>>0)|0;if((I|0)!=(A|0)){B=A;x=52;break a}}v=H+8|0;r=b[v+11>>0]|0;D=r<<24>>24<0;s=r&255;do if(((D?f[H+12>>2]|0:s)|0)==(o|0)){r=f[v>>2]|0;if(D)if(!(Vk(r,c,o)|0))break a;else break;if((b[c>>0]|0)==(r&255)<<24>>24){r=v;d=s;F=c;do{d=d+-1|0;r=r+1|0;if(!d)break a;F=F+1|0}while((b[r>>0]|0)==(b[F>>0]|0))}}while(0);H=f[H>>2]|0;if(!H){B=A;x=52;break}}}else{B=A;x=52}}else{B=0;x=52}while(0);if((x|0)==52){oi(g,a,z,i);x=a+12|0;J=$(((f[x>>2]|0)+1|0)>>>0);K=$(y>>>0);L=$(n[a+16>>2]);do if(w|$(L*K)>>0<3|(y+-1&y|0)!=0)&1;H=~~$(W($(J/L)))>>>0;ei(a,A>>>0>>0?H:A);A=f[t>>2]|0;H=A+-1|0;if(!(H&A)){M=A;N=H&z;break}if(z>>>0>>0){M=A;N=z}else{M=A;N=(z>>>0)%(A>>>0)|0}}else{M=y;N=B}while(0);B=f[(f[a>>2]|0)+(N<<2)>>2]|0;if(!B){y=a+8|0;f[f[g>>2]>>2]=f[y>>2];f[y>>2]=f[g>>2];f[(f[a>>2]|0)+(N<<2)>>2]=y;y=f[g>>2]|0;N=f[y>>2]|0;if(!N)O=g;else{z=f[N+4>>2]|0;N=M+-1|0;if(N&M)if(z>>>0>>0)P=z;else P=(z>>>0)%(M>>>0)|0;else P=z&N;f[(f[a>>2]|0)+(P<<2)>>2]=y;O=g}}else{f[f[g>>2]>>2]=f[B>>2];f[B>>2]=f[g>>2];O=g}f[x>>2]=(f[x>>2]|0)+1;f[O>>2]=0}O=f[i+12>>2]|0;if(O|0){if((f[m>>2]|0)!=(O|0))f[m>>2]=O;Oq(O)}if((b[p>>0]|0)<0)Oq(f[i>>2]|0);i=f[j>>2]|0;if(!i){u=e;return}if((f[k>>2]|0)!=(i|0))f[k>>2]=i;Oq(i);u=e;return}function gc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=Oa,da=Oa,ea=Oa,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;e=u;u=u+48|0;g=e+12|0;h=e+32|0;i=e;j=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[j>>2]=$(1.0);k=a+80|0;l=f[k>>2]|0;f[i>>2]=0;m=i+4|0;f[m>>2]=0;f[i+8>>2]=0;if(l){if(l>>>0>1073741823)aq(i);o=l<<2;p=ln(o)|0;f[i>>2]=p;q=p+(l<<2)|0;f[i+8>>2]=q;sj(p|0,0,o|0)|0;f[m>>2]=q;q=c+48|0;o=c+40|0;l=g+4|0;r=g+12|0;s=g+8|0;t=a+40|0;v=a+64|0;w=f[d>>2]|0;d=0;x=p;y=0;z=0;A=p;B=p;C=p;while(1){p=q;D=f[p>>2]|0;E=f[p+4>>2]|0;p=o;F=un(f[p>>2]|0,f[p+4>>2]|0,w+y|0,0)|0;p=Vn(F|0,I|0,D|0,E|0)|0;E=b[(f[f[c>>2]>>2]|0)+p>>0]|0;b[h>>0]=E;p=E&255^318;a:do if(d){D=d+-1|0;F=(D&d|0)==0;if(!F)if(p>>>0>>0)G=p;else G=(p>>>0)%(d>>>0)|0;else G=D&p;H=f[g>>2]|0;J=f[H+(G<<2)>>2]|0;b:do if(J|0?(K=f[J>>2]|0,K|0):0){c:do if(F){L=K;while(1){M=f[L+4>>2]|0;N=(M|0)==(p|0);if(!(N|(M&D|0)==(G|0)))break b;if(N?(b[L+8>>0]|0)==E<<24>>24:0){O=L;break c}L=f[L>>2]|0;if(!L)break b}}else{L=K;while(1){N=f[L+4>>2]|0;if((N|0)==(p|0)){if((b[L+8>>0]|0)==E<<24>>24){O=L;break c}}else{if(N>>>0>>0)P=N;else P=(N>>>0)%(d>>>0)|0;if((P|0)!=(G|0))break b}L=f[L>>2]|0;if(!L)break b}}while(0);f[C+(y<<2)>>2]=f[O+12>>2];Q=x;R=z;S=B;T=A;U=C;break a}while(0);if(!F)if(p>>>0>>0)V=p;else V=(p>>>0)%(d>>>0)|0;else V=D&p;J=f[H+(V<<2)>>2]|0;if(!J){X=V;Y=d;Z=0;_=40}else{if(F){K=J;while(1){K=f[K>>2]|0;if(!K){X=V;Y=d;Z=0;_=40;break a}L=f[K+4>>2]|0;if(!((L|0)==(p|0)|(L&D|0)==(V|0))){X=V;Y=d;Z=0;_=40;break a}if((b[K+8>>0]|0)==E<<24>>24){_=55;break a}}}else aa=J;while(1){aa=f[aa>>2]|0;if(!aa){X=V;Y=d;Z=0;_=40;break a}K=f[aa+4>>2]|0;if((K|0)!=(p|0)){if(K>>>0>>0)ba=K;else ba=(K>>>0)%(d>>>0)|0;if((ba|0)!=(V|0)){X=V;Y=d;Z=0;_=40;break a}}if((b[aa+8>>0]|0)==E<<24>>24){_=55;break}}}}else{X=0;Y=0;Z=1;_=40}while(0);if((_|0)==40){_=0;J=ln(16)|0;b[J+8>>0]=E;f[J+12>>2]=z;f[J+4>>2]=p;f[J>>2]=0;ca=$(((f[r>>2]|0)+1|0)>>>0);da=$(Y>>>0);ea=$(n[j>>2]);do if(Z|$(ea*da)>>0<3|(Y+-1&Y|0)!=0)&1;D=~~$(W($(ca/ea)))>>>0;ai(g,K>>>0>>0?D:K);K=f[l>>2]|0;D=K+-1|0;if(!(D&K)){fa=K;ga=D&p;break}if(p>>>0>>0){fa=K;ga=p}else{fa=K;ga=(p>>>0)%(K>>>0)|0}}else{fa=Y;ga=X}while(0);p=(f[g>>2]|0)+(ga<<2)|0;E=f[p>>2]|0;if(!E){f[J>>2]=f[s>>2];f[s>>2]=J;f[p>>2]=s;p=f[J>>2]|0;if(p|0){K=f[p+4>>2]|0;p=fa+-1|0;if(p&fa)if(K>>>0>>0)ha=K;else ha=(K>>>0)%(fa>>>0)|0;else ha=K&p;ia=(f[g>>2]|0)+(ha<<2)|0;_=53}}else{f[J>>2]=f[E>>2];ia=E;_=53}if((_|0)==53){_=0;f[ia>>2]=J}f[r>>2]=(f[r>>2]|0)+1;_=55}if((_|0)==55){_=0;E=t;p=f[E>>2]|0;K=un(p|0,f[E+4>>2]|0,z|0,0)|0;kh((f[f[v>>2]>>2]|0)+K|0,h|0,p|0)|0;p=f[i>>2]|0;f[p+(y<<2)>>2]=z;Q=p;R=z+1|0;S=p;T=p;U=p}p=y+1|0;ja=f[k>>2]|0;if(p>>>0>=ja>>>0)break;d=f[l>>2]|0;x=Q;y=p;z=R;A=T;B=S;C=U}if((R|0)==(ja|0))ka=T;else{T=a+84|0;if(!(b[T>>0]|0)){U=f[a+72>>2]|0;C=f[a+68>>2]|0;B=C;if((U|0)==(C|0))la=Q;else{A=U-C>>2;C=0;do{U=B+(C<<2)|0;f[U>>2]=f[S+(f[U>>2]<<2)>>2];C=C+1|0}while(C>>>0>>0);la=Q}}else{b[T>>0]=0;T=a+68|0;Q=a+72|0;A=f[Q>>2]|0;C=f[T>>2]|0;S=A-C>>2;B=C;C=A;if(ja>>>0<=S>>>0)if(ja>>>0>>0?(A=B+(ja<<2)|0,(A|0)!=(C|0)):0){f[Q>>2]=C+(~((C+-4-A|0)>>>2)<<2);ma=ja}else ma=ja;else{Ch(T,ja-S|0,1220);ma=f[k>>2]|0}S=f[i>>2]|0;if(!ma)la=S;else{i=f[a+68>>2]|0;a=0;do{f[i+(a<<2)>>2]=f[S+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);la=S}}f[k>>2]=R;ka=la}if(!ka)na=R;else{la=f[m>>2]|0;if((la|0)!=(ka|0))f[m>>2]=la+(~((la+-4-ka|0)>>>2)<<2);Oq(ka);na=R}}else na=0;R=f[g+8>>2]|0;if(R|0){ka=R;do{R=ka;ka=f[ka>>2]|0;Oq(R)}while((ka|0)!=0)}ka=f[g>>2]|0;f[g>>2]=0;if(!ka){u=e;return na|0}Oq(ka);u=e;return na|0}function hc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,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,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=Oa,ea=Oa,fa=Oa,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;e=u;u=u+48|0;g=e+16|0;i=e+12|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)aq(j);p=m<<2;q=ln(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;sj(q|0,0,p|0)|0;f[o>>2]=r;r=c+48|0;p=c+40|0;m=g+4|0;s=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=f[d>>2]|0;d=0;y=q;z=0;A=0;B=q;C=q;D=q;while(1){q=r;E=f[q>>2]|0;F=f[q+4>>2]|0;q=p;G=un(f[q>>2]|0,f[q+4>>2]|0,x+z|0,0)|0;q=Vn(G|0,I|0,E|0,F|0)|0;F=(f[f[c>>2]>>2]|0)+q|0;q=h[F>>0]|h[F+1>>0]<<8|h[F+2>>0]<<16|h[F+3>>0]<<24;f[i>>2]=q;F=q^318;a:do if(d){E=d+-1|0;G=(E&d|0)==0;if(!G)if(F>>>0>>0)H=F;else H=(F>>>0)%(d>>>0)|0;else H=E&F;J=f[g>>2]|0;K=f[J+(H<<2)>>2]|0;b:do if(K|0?(L=f[K>>2]|0,L|0):0){c:do if(G){M=L;while(1){N=f[M+4>>2]|0;O=(N|0)==(F|0);if(!(O|(N&E|0)==(H|0)))break b;if(O?(f[M+8>>2]|0)==(q|0):0){P=M;break c}M=f[M>>2]|0;if(!M)break b}}else{M=L;while(1){O=f[M+4>>2]|0;if((O|0)==(F|0)){if((f[M+8>>2]|0)==(q|0)){P=M;break c}}else{if(O>>>0>>0)Q=O;else Q=(O>>>0)%(d>>>0)|0;if((Q|0)!=(H|0))break b}M=f[M>>2]|0;if(!M)break b}}while(0);f[D+(z<<2)>>2]=f[P+12>>2];R=y;S=A;T=C;U=B;V=D;break a}while(0);if(!G)if(F>>>0>>0)X=F;else X=(F>>>0)%(d>>>0)|0;else X=E&F;K=f[J+(X<<2)>>2]|0;if(!K){Y=X;Z=d;_=0;aa=40}else{if(G){L=K;while(1){L=f[L>>2]|0;if(!L){Y=X;Z=d;_=0;aa=40;break a}M=f[L+4>>2]|0;if(!((M|0)==(F|0)|(M&E|0)==(X|0))){Y=X;Z=d;_=0;aa=40;break a}if((f[L+8>>2]|0)==(q|0)){aa=55;break a}}}else ba=K;while(1){ba=f[ba>>2]|0;if(!ba){Y=X;Z=d;_=0;aa=40;break a}L=f[ba+4>>2]|0;if((L|0)!=(F|0)){if(L>>>0>>0)ca=L;else ca=(L>>>0)%(d>>>0)|0;if((ca|0)!=(X|0)){Y=X;Z=d;_=0;aa=40;break a}}if((f[ba+8>>2]|0)==(q|0)){aa=55;break}}}}else{Y=0;Z=0;_=1;aa=40}while(0);if((aa|0)==40){aa=0;K=ln(16)|0;f[K+8>>2]=q;f[K+12>>2]=A;f[K+4>>2]=F;f[K>>2]=0;da=$(((f[s>>2]|0)+1|0)>>>0);ea=$(Z>>>0);fa=$(n[k>>2]);do if(_|$(fa*ea)>>0<3|(Z+-1&Z|0)!=0)&1;E=~~$(W($(da/fa)))>>>0;Hi(g,L>>>0>>0?E:L);L=f[m>>2]|0;E=L+-1|0;if(!(E&L)){ga=L;ha=E&F;break}if(F>>>0>>0){ga=L;ha=F}else{ga=L;ha=(F>>>0)%(L>>>0)|0}}else{ga=Z;ha=Y}while(0);F=(f[g>>2]|0)+(ha<<2)|0;q=f[F>>2]|0;if(!q){f[K>>2]=f[t>>2];f[t>>2]=K;f[F>>2]=t;F=f[K>>2]|0;if(F|0){L=f[F+4>>2]|0;F=ga+-1|0;if(F&ga)if(L>>>0>>0)ia=L;else ia=(L>>>0)%(ga>>>0)|0;else ia=L&F;ja=(f[g>>2]|0)+(ia<<2)|0;aa=53}}else{f[K>>2]=f[q>>2];ja=q;aa=53}if((aa|0)==53){aa=0;f[ja>>2]=K}f[s>>2]=(f[s>>2]|0)+1;aa=55}if((aa|0)==55){aa=0;q=v;F=f[q>>2]|0;L=un(F|0,f[q+4>>2]|0,A|0,0)|0;kh((f[f[w>>2]>>2]|0)+L|0,i|0,F|0)|0;F=f[j>>2]|0;f[F+(z<<2)>>2]=A;R=F;S=A+1|0;T=F;U=F;V=F}F=z+1|0;ka=f[l>>2]|0;if(F>>>0>=ka>>>0)break;d=f[m>>2]|0;y=R;z=F;A=S;B=U;C=T;D=V}if((S|0)==(ka|0))la=U;else{U=a+84|0;if(!(b[U>>0]|0)){V=f[a+72>>2]|0;D=f[a+68>>2]|0;C=D;if((V|0)==(D|0))ma=R;else{B=V-D>>2;D=0;do{V=C+(D<<2)|0;f[V>>2]=f[T+(f[V>>2]<<2)>>2];D=D+1|0}while(D>>>0>>0);ma=R}}else{b[U>>0]=0;U=a+68|0;R=a+72|0;B=f[R>>2]|0;D=f[U>>2]|0;T=B-D>>2;C=D;D=B;if(ka>>>0<=T>>>0)if(ka>>>0>>0?(B=C+(ka<<2)|0,(B|0)!=(D|0)):0){f[R>>2]=D+(~((D+-4-B|0)>>>2)<<2);na=ka}else na=ka;else{Ch(U,ka-T|0,1220);na=f[l>>2]|0}T=f[j>>2]|0;if(!na)ma=T;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[T+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);ma=T}}f[l>>2]=S;la=ma}if(!la)oa=S;else{ma=f[o>>2]|0;if((ma|0)!=(la|0))f[o>>2]=ma+(~((ma+-4-la|0)>>>2)<<2);Oq(la);oa=S}}else oa=0;S=f[g+8>>2]|0;if(S|0){la=S;do{S=la;la=f[la>>2]|0;Oq(S)}while((la|0)!=0)}la=f[g>>2]|0;f[g>>2]=0;if(!la){u=e;return oa|0}Oq(la);u=e;return oa|0}function ic(a,c,d){a=a|0;c=c|0;d=d|0;var e=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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0;e=u;u=u+96|0;g=e+92|0;h=e+88|0;i=e+72|0;j=e+48|0;k=e+24|0;l=e;m=a+16|0;n=f[m>>2]|0;o=f[c>>2]|0;f[i>>2]=n;f[i+4>>2]=o;c=i+8|0;f[c>>2]=o;b[i+12>>0]=1;p=f[(f[n+28>>2]|0)+(o<<2)>>2]|0;n=a+20|0;q=f[n>>2]|0;r=f[q>>2]|0;if((f[q+4>>2]|0)-r>>2>>>0<=p>>>0)aq(q);q=a+8|0;s=f[(f[q>>2]|0)+(f[r+(p<<2)>>2]<<2)>>2]|0;p=a+4|0;r=f[p>>2]|0;if(!(b[r+84>>0]|0))t=f[(f[r+68>>2]|0)+(s<<2)>>2]|0;else t=s;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;f[h>>2]=t;t=b[r+24>>0]|0;f[g>>2]=f[h>>2];vb(r,g,t,j)|0;t=a+28|0;a=(f[t>>2]|0)==0;a:do if((o|0)!=-1){r=k+8|0;s=j+8|0;v=k+16|0;w=j+16|0;x=l+8|0;y=l+16|0;z=o;A=o;B=0;C=0;D=0;E=0;F=0;G=0;H=a;J=o;while(1){do if(H){K=J+1|0;if((J|0)!=-1){L=((K>>>0)%3|0|0)==0?J+-2|0:K;if((z|0)!=-1)if(!((z>>>0)%3|0)){M=z;N=z+2|0;O=L;P=z;break}else{M=z;N=z+-1|0;O=L;P=z;break}else{M=-1;N=-1;O=L;P=-1}}else{M=z;N=-1;O=-1;P=-1}}else{L=A+1|0;K=((L>>>0)%3|0|0)==0?A+-2|0:L;if(!((A>>>0)%3|0)){M=z;N=A+2|0;O=K;P=J;break}else{M=z;N=A+-1|0;O=K;P=J;break}}while(0);K=f[(f[(f[m>>2]|0)+28>>2]|0)+(O<<2)>>2]|0;Q=f[n>>2]|0;L=f[Q>>2]|0;if((f[Q+4>>2]|0)-L>>2>>>0<=K>>>0){R=17;break}S=f[(f[q>>2]|0)+(f[L+(K<<2)>>2]<<2)>>2]|0;K=f[p>>2]|0;if(!(b[K+84>>0]|0))T=f[(f[K+68>>2]|0)+(S<<2)>>2]|0;else T=S;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[h>>2]=T;S=b[K+24>>0]|0;f[g>>2]=f[h>>2];vb(K,g,S,k)|0;S=f[(f[(f[m>>2]|0)+28>>2]|0)+(N<<2)>>2]|0;U=f[n>>2]|0;K=f[U>>2]|0;if((f[U+4>>2]|0)-K>>2>>>0<=S>>>0){R=21;break}L=f[(f[q>>2]|0)+(f[K+(S<<2)>>2]<<2)>>2]|0;S=f[p>>2]|0;if(!(b[S+84>>0]|0))V=f[(f[S+68>>2]|0)+(L<<2)>>2]|0;else V=L;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;f[h>>2]=V;L=b[S+24>>0]|0;f[g>>2]=f[h>>2];vb(S,g,L,l)|0;L=k;S=j;K=f[S>>2]|0;W=f[S+4>>2]|0;S=Xn(f[L>>2]|0,f[L+4>>2]|0,K|0,W|0)|0;L=I;X=r;Y=s;Z=f[Y>>2]|0;_=f[Y+4>>2]|0;Y=Xn(f[X>>2]|0,f[X+4>>2]|0,Z|0,_|0)|0;X=I;$=v;aa=w;ba=f[aa>>2]|0;ca=f[aa+4>>2]|0;aa=Xn(f[$>>2]|0,f[$+4>>2]|0,ba|0,ca|0)|0;$=I;da=l;ea=Xn(f[da>>2]|0,f[da+4>>2]|0,K|0,W|0)|0;W=I;K=x;da=Xn(f[K>>2]|0,f[K+4>>2]|0,Z|0,_|0)|0;_=I;Z=y;K=Xn(f[Z>>2]|0,f[Z+4>>2]|0,ba|0,ca|0)|0;ca=I;ba=un(K|0,ca|0,Y|0,X|0)|0;Z=I;fa=un(da|0,_|0,aa|0,$|0)|0;ga=I;ha=un(ea|0,W|0,aa|0,$|0)|0;$=I;aa=un(K|0,ca|0,S|0,L|0)|0;ca=I;K=un(da|0,_|0,S|0,L|0)|0;L=I;S=un(ea|0,W|0,Y|0,X|0)|0;X=I;Y=Xn(B|0,C|0,fa|0,ga|0)|0;ga=Vn(Y|0,I|0,ba|0,Z|0)|0;Z=I;ba=Vn(ha|0,$|0,D|0,E|0)|0;$=Xn(ba|0,I|0,aa|0,ca|0)|0;ca=I;aa=Xn(F|0,G|0,S|0,X|0)|0;X=Vn(aa|0,I|0,K|0,L|0)|0;L=I;Pg(i);A=f[c>>2]|0;K=(f[t>>2]|0)==0;if((A|0)==-1){ia=K;ja=Z;ka=ga;la=ca;ma=$;na=L;oa=X;break a}else{z=M;B=ga;C=Z;D=$;E=ca;F=X;G=L;H=K;J=P}}if((R|0)==17)aq(Q);else if((R|0)==21)aq(U)}else{ia=a;ja=0;ka=0;la=0;ma=0;na=0;oa=0}while(0);a=(ja|0)>-1|(ja|0)==-1&ka>>>0>4294967295;U=Xn(0,0,ka|0,ja|0)|0;R=a?ja:I;Q=(la|0)>-1|(la|0)==-1&ma>>>0>4294967295;P=Xn(0,0,ma|0,la|0)|0;M=Q?la:I;t=(na|0)>-1|(na|0)==-1&oa>>>0>4294967295;c=Xn(0,0,oa|0,na|0)|0;i=Vn((Q?ma:P)|0,M|0,(t?oa:c)|0,(t?na:I)|0)|0;t=Vn(i|0,I|0,(a?ka:U)|0,R|0)|0;R=I;if(ia){if((t|0)<=536870912){pa=ka;qa=ma;ra=oa;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}ia=Yn(t|0,R|0,29)|0;U=ia&7;ia=Ik(ka|0,ja|0,U|0,0)|0;a=Ik(ma|0,la|0,U|0,0)|0;i=Ik(oa|0,na|0,U|0,0)|0;pa=ia;qa=a;ra=i;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}else{if(!((R|0)>0|(R|0)==0&t>>>0>536870912)){pa=ka;qa=ma;ra=oa;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}i=Yn(t|0,R|0,29)|0;R=I;t=Ik(ka|0,ja|0,i|0,R|0)|0;ja=Ik(ma|0,la|0,i|0,R|0)|0;la=Ik(oa|0,na|0,i|0,R|0)|0;pa=t;qa=ja;ra=la;f[d>>2]=pa;sa=d+4|0;f[sa>>2]=qa;ta=d+8|0;f[ta>>2]=ra;u=e;return}}function jc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;g=u;u=u+48|0;i=g+28|0;j=g+8|0;k=g;l=g+16|0;m=i+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[m>>2]=$(1.0);o=a+80|0;p=f[o>>2]|0;f[l>>2]=0;q=l+4|0;f[q>>2]=0;f[l+8>>2]=0;if(p){if(p>>>0>1073741823)aq(l);r=p<<2;s=ln(r)|0;f[l>>2]=s;t=s+(p<<2)|0;f[l+8>>2]=t;sj(s|0,0,r|0)|0;f[q>>2]=t;t=f[e>>2]|0;e=c+48|0;r=c+40|0;s=i+4|0;p=i+12|0;v=i+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=e;B=f[A>>2]|0;C=f[A+4>>2]|0;A=r;D=un(f[A>>2]|0,f[A+4>>2]|0,t+y|0,0)|0;A=Vn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;A=C;B=h[A>>0]|h[A+1>>0]<<8|h[A+2>>0]<<16|h[A+3>>0]<<24;A=C+4|0;C=h[A>>0]|h[A+1>>0]<<8|h[A+2>>0]<<16|h[A+3>>0]<<24;A=j;f[A>>2]=B;f[A+4>>2]=C;A=k;f[A>>2]=B;f[A+4>>2]=C;C=yf(i,k)|0;if(!C){A=k;B=f[A>>2]|0;D=f[A+4>>2]|0;A=B&65535;E=Yn(B|0,D|0,16)|0;F=E&65535;G=D&65535;H=Yn(B|0,D|0,48)|0;J=H&65535;K=((((A^318)&65535)+239^E&65535)+239^D&65535)+239^H&65535;H=f[s>>2]|0;E=(H|0)==0;a:do if(!E){L=H+-1|0;M=(L&H|0)==0;if(!M)if(K>>>0>>0)N=K;else N=(K>>>0)%(H>>>0)|0;else N=K&L;O=f[(f[i>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(K|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}O=M+8|0;if((((d[O>>1]|0)==A<<16>>16?(d[O+2>>1]|0)==F<<16>>16:0)?(d[M+12>>1]|0)==G<<16>>16:0)?(d[O+6>>1]|0)==J<<16>>16:0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(K|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(H>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}M=S+8|0;if((((d[M>>1]|0)==A<<16>>16?(d[M+2>>1]|0)==F<<16>>16:0)?(d[S+12>>1]|0)==G<<16>>16:0)?(d[M+6>>1]|0)==J<<16>>16:0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;J=ln(20)|0;G=J+8|0;F=G;d[F>>1]=B;d[F+2>>1]=B>>>16;F=G+4|0;d[F>>1]=D;d[F+2>>1]=D>>>16;f[J+16>>2]=z;f[J+4>>2]=K;f[J>>2]=0;U=$(((f[p>>2]|0)+1|0)>>>0);V=$(H>>>0);X=$(n[m>>2]);do if(E|$(X*V)>>0<3|(H+-1&H|0)!=0)&1;G=~~$(W($(U/X)))>>>0;Sh(i,F>>>0>>0?G:F);F=f[s>>2]|0;G=F+-1|0;if(!(G&F)){Y=F;Z=G&K;break}if(K>>>0>>0){Y=F;Z=K}else{Y=F;Z=(K>>>0)%(F>>>0)|0}}else{Y=H;Z=Q}while(0);H=(f[i>>2]|0)+(Z<<2)|0;K=f[H>>2]|0;if(!K){f[J>>2]=f[v>>2];f[v>>2]=J;f[H>>2]=v;H=f[J>>2]|0;if(H|0){E=f[H+4>>2]|0;H=Y+-1|0;if(H&Y)if(E>>>0>>0)_=E;else _=(E>>>0)%(Y>>>0)|0;else _=E&H;aa=(f[i>>2]|0)+(_<<2)|0;R=44}}else{f[J>>2]=f[K>>2];aa=K;R=44}if((R|0)==44){R=0;f[aa>>2]=J}f[p>>2]=(f[p>>2]|0)+1}K=w;H=f[K>>2]|0;E=un(H|0,f[K+4>>2]|0,z|0,0)|0;kh((f[f[x>>2]>>2]|0)+E|0,j|0,H|0)|0;H=f[l>>2]|0;f[H+(y<<2)>>2]=z;ba=z+1|0;ca=H}else{H=f[l>>2]|0;f[H+(y<<2)>>2]=f[C+16>>2];ba=z;ca=H}y=y+1|0;da=f[o>>2]|0;if(y>>>0>=da>>>0)break;else z=ba}if((ba|0)==(da|0))ea=ca;else{z=a+84|0;if(!(b[z>>0]|0)){y=f[a+72>>2]|0;j=f[a+68>>2]|0;x=j;if((y|0)==(j|0))fa=ca;else{w=y-j>>2;j=0;do{y=x+(j<<2)|0;f[y>>2]=f[ca+(f[y>>2]<<2)>>2];j=j+1|0}while(j>>>0>>0);fa=ca}}else{b[z>>0]=0;z=a+68|0;ca=a+72|0;w=f[ca>>2]|0;j=f[z>>2]|0;x=w-j>>2;y=j;j=w;if(da>>>0<=x>>>0)if(da>>>0>>0?(w=y+(da<<2)|0,(w|0)!=(j|0)):0){f[ca>>2]=j+(~((j+-4-w|0)>>>2)<<2);ga=da}else ga=da;else{Ch(z,da-x|0,1220);ga=f[o>>2]|0}x=f[l>>2]|0;if(!ga)fa=x;else{l=f[a+68>>2]|0;a=0;do{f[l+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=x}}f[o>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[q>>2]|0;if((fa|0)!=(ea|0))f[q>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);Oq(ea);ha=ba}}else ha=0;ba=f[i+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;Oq(ba)}while((ea|0)!=0)}ea=f[i>>2]|0;f[i>>2]=0;if(!ea){u=g;return ha|0}Oq(ea);u=g;return ha|0}function kc(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;c=u;u=u+16|0;d=c+8|0;e=c;g=c+4|0;h=a+16|0;i=f[h>>2]|0;j=a+20|0;k=f[j>>2]|0;if((k|0)==(i|0))l=i;else{m=k+(~((k+-4-i|0)>>>2)<<2)|0;f[j>>2]=m;l=m}m=a+24|0;if((l|0)==(f[m>>2]|0)){Ri(h,b);n=f[h>>2]|0;o=f[j>>2]|0}else{f[l>>2]=f[b>>2];k=l+4|0;f[j>>2]=k;n=i;o=k}k=f[a+8>>2]|0;i=(f[k+100>>2]|0)-(f[k+96>>2]|0)|0;k=(i|0)/12|0;if((n|0)==(o|0)){u=c;return 1}n=a+28|0;l=(i|0)>0;i=a+164|0;p=a+12|0;q=a+76|0;r=a+80|0;s=a+72|0;t=a+152|0;v=a+84|0;w=a+272|0;x=a+276|0;y=a+268|0;z=a+168|0;A=a+140|0;B=a+120|0;C=o;do{o=f[C+-4>>2]|0;f[b>>2]=o;a:do if((o|0)!=-1?(D=(o>>>0)/3|0,E=f[n>>2]|0,(f[E+(D>>>5<<2)>>2]&1<<(D&31)|0)==0):0){if(l){D=0;F=E;b:while(1){E=D+1|0;f[i>>2]=(f[i>>2]|0)+1;G=f[b>>2]|0;H=(G|0)==-1?-1:(G>>>0)/3|0;G=F+(H>>>5<<2)|0;f[G>>2]=1<<(H&31)|f[G>>2];G=f[q>>2]|0;if((G|0)==(f[r>>2]|0))Ri(s,b);else{f[G>>2]=f[b>>2];f[q>>2]=G+4}G=f[b>>2]|0;if((G|0)==-1)I=-1;else I=f[(f[f[p>>2]>>2]|0)+(G<<2)>>2]|0;J=(f[(f[t>>2]|0)+(I<<2)>>2]|0)!=-1;K=(f[v>>2]|0)+(I>>>5<<2)|0;L=1<<(I&31);M=f[K>>2]|0;do if(!(M&L)){f[K>>2]=M|L;if(J){N=f[b>>2]|0;O=30;break}f[d>>2]=0;P=f[w>>2]|0;if((P|0)==(f[x>>2]|0))Ri(y,d);else{f[P>>2]=0;f[w>>2]=P+4}P=f[b>>2]|0;Q=P+1|0;if((P|0)!=-1?(R=((Q>>>0)%3|0|0)==0?P+-2|0:Q,(R|0)!=-1):0)S=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;else S=-1;f[b>>2]=S}else{N=G;O=30}while(0);if((O|0)==30){O=0;G=N+1|0;if((N|0)==-1){O=35;break}L=((G>>>0)%3|0|0)==0?N+-2|0:G;if((L|0)==-1)T=-1;else T=f[(f[(f[p>>2]|0)+12>>2]|0)+(L<<2)>>2]|0;f[e>>2]=T;L=(((N>>>0)%3|0|0)==0?2:-1)+N|0;if((L|0)==-1)U=-1;else U=f[(f[(f[p>>2]|0)+12>>2]|0)+(L<<2)>>2]|0;L=(T|0)==-1;M=L?-1:(T>>>0)/3|0;V=(U|0)==-1;W=V?-1:(U>>>0)/3|0;K=((G>>>0)%3|0|0)==0?N+-2|0:G;if(((K|0)!=-1?(G=f[(f[p>>2]|0)+12>>2]|0,R=f[G+(K<<2)>>2]|0,(R|0)!=-1):0)?(K=(R>>>0)/3|0,R=f[n>>2]|0,(f[R+(K>>>5<<2)>>2]&1<<(K&31)|0)==0):0){K=(((N>>>0)%3|0|0)==0?2:-1)+N|0;do if((K|0)!=-1){Q=f[G+(K<<2)>>2]|0;if((Q|0)==-1)break;P=(Q>>>0)/3|0;if(!(f[R+(P>>>5<<2)>>2]&1<<(P&31))){O=63;break b}}while(0);if(!V)xf(a,f[i>>2]|0,H,0,W);f[d>>2]=3;R=f[w>>2]|0;if((R|0)==(f[x>>2]|0))Ri(y,d);else{f[R>>2]=3;f[w>>2]=R+4}X=f[e>>2]|0}else{if(!L){xf(a,f[i>>2]|0,H,1,M);R=f[b>>2]|0;if((R|0)==-1){O=44;break}else Y=R}else Y=N;R=(((Y>>>0)%3|0|0)==0?2:-1)+Y|0;if((R|0)==-1){O=44;break}K=f[(f[(f[p>>2]|0)+12>>2]|0)+(R<<2)>>2]|0;if((K|0)==-1){O=44;break}R=(K>>>0)/3|0;if(f[(f[n>>2]|0)+(R>>>5<<2)>>2]&1<<(R&31)|0){O=44;break}f[d>>2]=5;R=f[w>>2]|0;if((R|0)==(f[x>>2]|0))Ri(y,d);else{f[R>>2]=5;f[w>>2]=R+4}X=U}f[b>>2]=X}if((E|0)>=(k|0))break a;D=E;F=f[n>>2]|0}do if((O|0)==35){O=0;f[e>>2]=-1;O=46}else if((O|0)==44){O=0;if(V)O=46;else{xf(a,f[i>>2]|0,H,0,W);O=46}}else if((O|0)==63){O=0;f[d>>2]=1;F=f[w>>2]|0;if((F|0)==(f[x>>2]|0))Ri(y,d);else{f[F>>2]=1;f[w>>2]=F+4}f[z>>2]=(f[z>>2]|0)+1;if(J?(F=f[(f[t>>2]|0)+(I<<2)>>2]|0,(1<<(F&31)&f[(f[A>>2]|0)+(F>>>5<<2)>>2]|0)==0):0){f[g>>2]=f[b>>2];f[d>>2]=f[g>>2];Pe(a,d,0)|0}F=f[i>>2]|0;f[d>>2]=H;D=je(B,d)|0;f[D>>2]=F;F=f[j>>2]|0;f[F+-4>>2]=U;if((F|0)==(f[m>>2]|0)){Ri(h,e);break}else{f[F>>2]=f[e>>2];f[j>>2]=F+4;break}}while(0);if((O|0)==46){O=0;f[d>>2]=7;F=f[w>>2]|0;if((F|0)==(f[x>>2]|0))Ri(y,d);else{f[F>>2]=7;f[w>>2]=F+4}f[j>>2]=(f[j>>2]|0)+-4}}}else O=11;while(0);if((O|0)==11){O=0;f[j>>2]=C+-4}C=f[j>>2]|0}while((f[h>>2]|0)!=(C|0));u=c;return 1}function lc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;e=u;u=u+48|0;g=e+20|0;i=e+16|0;j=e+12|0;k=e;l=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)aq(k);q=o<<2;r=ln(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;sj(r|0,0,q|0)|0;f[p>>2]=s;s=f[d>>2]|0;d=c+48|0;q=c+40|0;r=g+4|0;o=g+12|0;t=g+8|0;v=a+40|0;w=a+64|0;x=0;y=0;while(1){z=d;A=f[z>>2]|0;B=f[z+4>>2]|0;z=q;C=un(f[z>>2]|0,f[z+4>>2]|0,s+x|0,0)|0;z=Vn(C|0,I|0,A|0,B|0)|0;B=(f[f[c>>2]>>2]|0)+z|0;z=h[B>>0]|h[B+1>>0]<<8|h[B+2>>0]<<16|h[B+3>>0]<<24;f[i>>2]=z;f[j>>2]=z;z=Ef(g,j)|0;if(!z){B=f[j>>2]|0;A=B&255;C=B>>>8;D=C&255;E=B>>>16;F=E&255;G=B>>>24;H=G&255;J=C&255;C=E&255;E=(((B&255^318)+239^J)+239^C)+239^G;G=f[r>>2]|0;K=(G|0)==0;a:do if(!K){L=G+-1|0;M=(L&G|0)==0;if(!M)if(E>>>0>>0)N=E;else N=(E>>>0)%(G>>>0)|0;else N=E&L;O=f[(f[g>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(E|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}O=M+8|0;if((((b[O>>0]|0)==A<<24>>24?(b[O+1>>0]|0)==D<<24>>24:0)?(b[O+2>>0]|0)==F<<24>>24:0)?(b[O+3>>0]|0)==H<<24>>24:0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(E|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(G>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}M=S+8|0;if((((b[M>>0]|0)==A<<24>>24?(b[M+1>>0]|0)==D<<24>>24:0)?(b[M+2>>0]|0)==F<<24>>24:0)?(b[M+3>>0]|0)==H<<24>>24:0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;H=ln(16)|0;F=H+8|0;D=B&-16776961|C<<16|J<<8;b[F>>0]=D;b[F+1>>0]=D>>8;b[F+2>>0]=D>>16;b[F+3>>0]=D>>24;f[H+12>>2]=y;f[H+4>>2]=E;f[H>>2]=0;U=$(((f[o>>2]|0)+1|0)>>>0);V=$(G>>>0);X=$(n[l>>2]);do if(K|$(X*V)>>0<3|(G+-1&G|0)!=0)&1;F=~~$(W($(U/X)))>>>0;Zh(g,D>>>0>>0?F:D);D=f[r>>2]|0;F=D+-1|0;if(!(F&D)){Y=D;Z=F&E;break}if(E>>>0>>0){Y=D;Z=E}else{Y=D;Z=(E>>>0)%(D>>>0)|0}}else{Y=G;Z=Q}while(0);G=(f[g>>2]|0)+(Z<<2)|0;E=f[G>>2]|0;if(!E){f[H>>2]=f[t>>2];f[t>>2]=H;f[G>>2]=t;G=f[H>>2]|0;if(G|0){K=f[G+4>>2]|0;G=Y+-1|0;if(G&Y)if(K>>>0>>0)_=K;else _=(K>>>0)%(Y>>>0)|0;else _=K&G;aa=(f[g>>2]|0)+(_<<2)|0;R=44}}else{f[H>>2]=f[E>>2];aa=E;R=44}if((R|0)==44){R=0;f[aa>>2]=H}f[o>>2]=(f[o>>2]|0)+1}E=v;G=f[E>>2]|0;K=un(G|0,f[E+4>>2]|0,y|0,0)|0;kh((f[f[w>>2]>>2]|0)+K|0,i|0,G|0)|0;G=f[k>>2]|0;f[G+(x<<2)>>2]=y;ba=y+1|0;ca=G}else{G=f[k>>2]|0;f[G+(x<<2)>>2]=f[z+12>>2];ba=y;ca=G}x=x+1|0;da=f[m>>2]|0;if(x>>>0>=da>>>0)break;else y=ba}if((ba|0)==(da|0))ea=ca;else{y=a+84|0;if(!(b[y>>0]|0)){x=f[a+72>>2]|0;i=f[a+68>>2]|0;w=i;if((x|0)==(i|0))fa=ca;else{v=x-i>>2;i=0;do{x=w+(i<<2)|0;f[x>>2]=f[ca+(f[x>>2]<<2)>>2];i=i+1|0}while(i>>>0>>0);fa=ca}}else{b[y>>0]=0;y=a+68|0;ca=a+72|0;v=f[ca>>2]|0;i=f[y>>2]|0;w=v-i>>2;x=i;i=v;if(da>>>0<=w>>>0)if(da>>>0>>0?(v=x+(da<<2)|0,(v|0)!=(i|0)):0){f[ca>>2]=i+(~((i+-4-v|0)>>>2)<<2);ga=da}else ga=da;else{Ch(y,da-w|0,1220);ga=f[m>>2]|0}w=f[k>>2]|0;if(!ga)fa=w;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[w+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=w}}f[m>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[p>>2]|0;if((fa|0)!=(ea|0))f[p>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);Oq(ea);ha=ba}}else ha=0;ba=f[g+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;Oq(ba)}while((ea|0)!=0)}ea=f[g>>2]|0;f[g>>2]=0;if(!ea){u=e;return ha|0}Oq(ea);u=e;return ha|0}function mc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Oa,V=Oa,X=Oa,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;e=u;u=u+80|0;g=e+48|0;h=e+32|0;i=e+16|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)aq(j);p=m<<2;q=ln(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;sj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+4|0;m=i+8|0;s=i+12|0;t=g+4|0;v=g+12|0;w=g+8|0;x=a+40|0;y=a+64|0;z=0;A=0;while(1){B=d;C=f[B>>2]|0;D=f[B+4>>2]|0;B=p;E=un(f[B>>2]|0,f[B+4>>2]|0,r+A|0,0)|0;B=Vn(E|0,I|0,C|0,D|0)|0;D=(f[f[c>>2]>>2]|0)+B|0;B=h;C=D;E=B+16|0;do{b[B>>0]=b[C>>0]|0;B=B+1|0;C=C+1|0}while((B|0)<(E|0));im(i|0,D|0,16)|0;C=Vf(g,i)|0;if(!C){B=f[i>>2]|0;E=f[q>>2]|0;F=f[m>>2]|0;G=f[s>>2]|0;H=(((B^318)+239^E)+239^F)+239^G;J=f[t>>2]|0;K=(J|0)==0;a:do if(!K){L=J+-1|0;M=(L&J|0)==0;if(!M)if(H>>>0>>0)N=H;else N=(H>>>0)%(J>>>0)|0;else N=H&L;O=f[(f[g>>2]|0)+(N<<2)>>2]|0;if((O|0)!=0?(P=f[O>>2]|0,(P|0)!=0):0){if(M){M=P;while(1){O=f[M+4>>2]|0;if(!((O|0)==(H|0)|(O&L|0)==(N|0))){Q=N;R=31;break a}if((((f[M+8>>2]|0)==(B|0)?(f[M+12>>2]|0)==(E|0):0)?(f[M+16>>2]|0)==(F|0):0)?(f[M+20>>2]|0)==(G|0):0)break a;M=f[M>>2]|0;if(!M){Q=N;R=31;break a}}}else S=P;while(1){M=f[S+4>>2]|0;if((M|0)!=(H|0)){if(M>>>0>>0)T=M;else T=(M>>>0)%(J>>>0)|0;if((T|0)!=(N|0)){Q=N;R=31;break a}}if((((f[S+8>>2]|0)==(B|0)?(f[S+12>>2]|0)==(E|0):0)?(f[S+16>>2]|0)==(F|0):0)?(f[S+20>>2]|0)==(G|0):0)break a;S=f[S>>2]|0;if(!S){Q=N;R=31;break}}}else{Q=N;R=31}}else{Q=0;R=31}while(0);if((R|0)==31){R=0;D=ln(28)|0;f[D+8>>2]=B;f[D+12>>2]=E;f[D+16>>2]=F;f[D+20>>2]=G;f[D+24>>2]=z;f[D+4>>2]=H;f[D>>2]=0;U=$(((f[v>>2]|0)+1|0)>>>0);V=$(J>>>0);X=$(n[k>>2]);do if(K|$(X*V)>>0<3|(J+-1&J|0)!=0)&1;M=~~$(W($(U/X)))>>>0;Wh(g,P>>>0>>0?M:P);P=f[t>>2]|0;M=P+-1|0;if(!(M&P)){Y=P;Z=M&H;break}if(H>>>0

>>0){Y=P;Z=H}else{Y=P;Z=(H>>>0)%(P>>>0)|0}}else{Y=J;Z=Q}while(0);J=(f[g>>2]|0)+(Z<<2)|0;H=f[J>>2]|0;if(!H){f[D>>2]=f[w>>2];f[w>>2]=D;f[J>>2]=w;J=f[D>>2]|0;if(J|0){K=f[J+4>>2]|0;J=Y+-1|0;if(J&Y)if(K>>>0>>0)_=K;else _=(K>>>0)%(Y>>>0)|0;else _=K&J;aa=(f[g>>2]|0)+(_<<2)|0;R=44}}else{f[D>>2]=f[H>>2];aa=H;R=44}if((R|0)==44){R=0;f[aa>>2]=D}f[v>>2]=(f[v>>2]|0)+1}H=x;J=f[H>>2]|0;K=un(J|0,f[H+4>>2]|0,z|0,0)|0;kh((f[f[y>>2]>>2]|0)+K|0,h|0,J|0)|0;J=f[j>>2]|0;f[J+(A<<2)>>2]=z;ba=z+1|0;ca=J}else{J=f[j>>2]|0;f[J+(A<<2)>>2]=f[C+24>>2];ba=z;ca=J}A=A+1|0;da=f[l>>2]|0;if(A>>>0>=da>>>0)break;else z=ba}if((ba|0)==(da|0))ea=ca;else{z=a+84|0;if(!(b[z>>0]|0)){A=f[a+72>>2]|0;h=f[a+68>>2]|0;y=h;if((A|0)==(h|0))fa=ca;else{x=A-h>>2;h=0;do{A=y+(h<<2)|0;f[A>>2]=f[ca+(f[A>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);fa=ca}}else{b[z>>0]=0;z=a+68|0;ca=a+72|0;x=f[ca>>2]|0;h=f[z>>2]|0;y=x-h>>2;A=h;h=x;if(da>>>0<=y>>>0)if(da>>>0>>0?(x=A+(da<<2)|0,(x|0)!=(h|0)):0){f[ca>>2]=h+(~((h+-4-x|0)>>>2)<<2);ga=da}else ga=da;else{Ch(z,da-y|0,1220);ga=f[l>>2]|0}y=f[j>>2]|0;if(!ga)fa=y;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);fa=y}}f[l>>2]=ba;ea=fa}if(!ea)ha=ba;else{fa=f[o>>2]|0;if((fa|0)!=(ea|0))f[o>>2]=fa+(~((fa+-4-ea|0)>>>2)<<2);Oq(ea);ha=ba}}else ha=0;ba=f[g+8>>2]|0;if(ba|0){ea=ba;do{ba=ea;ea=f[ea>>2]|0;Oq(ba)}while((ea|0)!=0)}ea=f[g>>2]|0;f[g>>2]=0;if(!ea){u=e;return ha|0}Oq(ea);u=e;return ha|0}function nc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=Oa,T=Oa,U=Oa,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;g=u;u=u+48|0;h=g+12|0;i=g+38|0;j=g+32|0;k=g;l=h+16|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;n[l>>2]=$(1.0);m=a+80|0;o=f[m>>2]|0;f[k>>2]=0;p=k+4|0;f[p>>2]=0;f[k+8>>2]=0;if(o){if(o>>>0>1073741823)aq(k);q=o<<2;r=ln(q)|0;f[k>>2]=r;s=r+(o<<2)|0;f[k+8>>2]=s;sj(r|0,0,q|0)|0;f[p>>2]=s;s=f[e>>2]|0;e=c+48|0;q=c+40|0;r=j+2|0;o=j+4|0;t=h+4|0;v=h+12|0;w=h+8|0;x=a+40|0;y=a+64|0;z=0;A=0;while(1){B=e;C=f[B>>2]|0;D=f[B+4>>2]|0;B=q;E=un(f[B>>2]|0,f[B+4>>2]|0,s+A|0,0)|0;B=Vn(E|0,I|0,C|0,D|0)|0;D=(f[f[c>>2]>>2]|0)+B|0;b[i>>0]=b[D>>0]|0;b[i+1>>0]=b[D+1>>0]|0;b[i+2>>0]=b[D+2>>0]|0;b[i+3>>0]=b[D+3>>0]|0;b[i+4>>0]=b[D+4>>0]|0;b[i+5>>0]=b[D+5>>0]|0;im(j|0,D|0,6)|0;D=dg(h,j)|0;if(!D){B=d[j>>1]|0;C=d[r>>1]|0;E=d[o>>1]|0;F=(((B^318)&65535)+239^C&65535)+239^E&65535;G=f[t>>2]|0;H=(G|0)==0;a:do if(!H){J=G+-1|0;K=(J&G|0)==0;if(!K)if(F>>>0>>0)L=F;else L=(F>>>0)%(G>>>0)|0;else L=F&J;M=f[(f[h>>2]|0)+(L<<2)>>2]|0;if((M|0)!=0?(N=f[M>>2]|0,(N|0)!=0):0){if(K){K=N;while(1){M=f[K+4>>2]|0;if(!((M|0)==(F|0)|(M&J|0)==(L|0))){O=L;P=29;break a}M=K+8|0;if(((d[M>>1]|0)==B<<16>>16?(d[M+2>>1]|0)==C<<16>>16:0)?(d[K+12>>1]|0)==E<<16>>16:0)break a;K=f[K>>2]|0;if(!K){O=L;P=29;break a}}}else Q=N;while(1){K=f[Q+4>>2]|0;if((K|0)!=(F|0)){if(K>>>0>>0)R=K;else R=(K>>>0)%(G>>>0)|0;if((R|0)!=(L|0)){O=L;P=29;break a}}K=Q+8|0;if(((d[K>>1]|0)==B<<16>>16?(d[K+2>>1]|0)==C<<16>>16:0)?(d[Q+12>>1]|0)==E<<16>>16:0)break a;Q=f[Q>>2]|0;if(!Q){O=L;P=29;break}}}else{O=L;P=29}}else{O=0;P=29}while(0);if((P|0)==29){P=0;N=ln(20)|0;d[N+8>>1]=B;d[N+10>>1]=C;d[N+12>>1]=E;f[N+16>>2]=z;f[N+4>>2]=F;f[N>>2]=0;S=$(((f[v>>2]|0)+1|0)>>>0);T=$(G>>>0);U=$(n[l>>2]);do if(H|$(U*T)>>0<3|(G+-1&G|0)!=0)&1;J=~~$(W($(S/U)))>>>0;Th(h,K>>>0>>0?J:K);K=f[t>>2]|0;J=K+-1|0;if(!(J&K)){V=K;X=J&F;break}if(F>>>0>>0){V=K;X=F}else{V=K;X=(F>>>0)%(K>>>0)|0}}else{V=G;X=O}while(0);G=(f[h>>2]|0)+(X<<2)|0;F=f[G>>2]|0;if(!F){f[N>>2]=f[w>>2];f[w>>2]=N;f[G>>2]=w;G=f[N>>2]|0;if(G|0){H=f[G+4>>2]|0;G=V+-1|0;if(G&V)if(H>>>0>>0)Y=H;else Y=(H>>>0)%(V>>>0)|0;else Y=H&G;Z=(f[h>>2]|0)+(Y<<2)|0;P=42}}else{f[N>>2]=f[F>>2];Z=F;P=42}if((P|0)==42){P=0;f[Z>>2]=N}f[v>>2]=(f[v>>2]|0)+1}F=x;G=f[F>>2]|0;H=un(G|0,f[F+4>>2]|0,z|0,0)|0;kh((f[f[y>>2]>>2]|0)+H|0,i|0,G|0)|0;G=f[k>>2]|0;f[G+(A<<2)>>2]=z;_=z+1|0;aa=G}else{G=f[k>>2]|0;f[G+(A<<2)>>2]=f[D+16>>2];_=z;aa=G}A=A+1|0;ba=f[m>>2]|0;if(A>>>0>=ba>>>0)break;else z=_}if((_|0)==(ba|0))ca=aa;else{z=a+84|0;if(!(b[z>>0]|0)){A=f[a+72>>2]|0;i=f[a+68>>2]|0;y=i;if((A|0)==(i|0))da=aa;else{x=A-i>>2;i=0;do{A=y+(i<<2)|0;f[A>>2]=f[aa+(f[A>>2]<<2)>>2];i=i+1|0}while(i>>>0>>0);da=aa}}else{b[z>>0]=0;z=a+68|0;aa=a+72|0;x=f[aa>>2]|0;i=f[z>>2]|0;y=x-i>>2;A=i;i=x;if(ba>>>0<=y>>>0)if(ba>>>0>>0?(x=A+(ba<<2)|0,(x|0)!=(i|0)):0){f[aa>>2]=i+(~((i+-4-x|0)>>>2)<<2);ea=ba}else ea=ba;else{Ch(z,ba-y|0,1220);ea=f[m>>2]|0}y=f[k>>2]|0;if(!ea)da=y;else{k=f[a+68>>2]|0;a=0;do{f[k+(a<<2)>>2]=f[y+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);da=y}}f[m>>2]=_;ca=da}if(!ca)fa=_;else{da=f[p>>2]|0;if((da|0)!=(ca|0))f[p>>2]=da+(~((da+-4-ca|0)>>>2)<<2);Oq(ca);fa=_}}else fa=0;_=f[h+8>>2]|0;if(_|0){ca=_;do{_=ca;ca=f[ca>>2]|0;Oq(_)}while((ca|0)!=0)}ca=f[h>>2]|0;f[h>>2]=0;if(!ca){u=g;return fa|0}Oq(ca);u=g;return fa|0}function oc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,Y=0,Z=0,_=0;g=a+8|0;Mh(g,b,d,e);d=f[a+48>>2]|0;h=f[a+52>>2]|0;i=e>>>0>1073741823?-1:e<<2;j=Lq(i)|0;sj(j|0,0,i|0)|0;k=Lq(i)|0;sj(k|0,0,i|0)|0;i=f[a+56>>2]|0;l=i+4|0;m=f[l>>2]|0;n=f[i>>2]|0;o=m-n|0;a:do if((o|0)>4){p=o>>2;q=(e|0)>0;r=a+16|0;s=a+32|0;t=a+12|0;u=a+28|0;v=a+20|0;w=a+24|0;x=d+12|0;y=e<<2;z=p+-1|0;if(m-n>>2>>>0>z>>>0){A=p;B=z;C=n}else aq(i);while(1){z=f[C+(B<<2)>>2]|0;if(q)sj(j|0,0,y|0)|0;if((z|0)!=-1){p=f[x>>2]|0;D=0;E=z;while(1){F=f[p+(E<<2)>>2]|0;if((F|0)!=-1){G=f[d>>2]|0;H=f[h>>2]|0;I=f[H+(f[G+(F<<2)>>2]<<2)>>2]|0;J=F+1|0;K=((J>>>0)%3|0|0)==0?F+-2|0:J;if((K|0)==-1)L=-1;else L=f[G+(K<<2)>>2]|0;K=f[H+(L<<2)>>2]|0;J=(((F>>>0)%3|0|0)==0?2:-1)+F|0;if((J|0)==-1)M=-1;else M=f[G+(J<<2)>>2]|0;J=f[H+(M<<2)>>2]|0;if((I|0)<(B|0)&(K|0)<(B|0)&(J|0)<(B|0)){H=X(I,e)|0;I=X(K,e)|0;K=X(J,e)|0;if(q){J=0;do{f[k+(J<<2)>>2]=(f[b+(J+K<<2)>>2]|0)+(f[b+(J+I<<2)>>2]|0)-(f[b+(J+H<<2)>>2]|0);J=J+1|0}while((J|0)!=(e|0));if(q){J=0;do{H=j+(J<<2)|0;f[H>>2]=(f[H>>2]|0)+(f[k+(J<<2)>>2]|0);J=J+1|0}while((J|0)!=(e|0))}}N=D+1|0}else N=D}else N=D;J=(((E>>>0)%3|0|0)==0?2:-1)+E|0;do if((J|0)!=-1?(H=f[p+(J<<2)>>2]|0,(H|0)!=-1):0)if(!((H>>>0)%3|0)){O=H+2|0;break}else{O=H+-1|0;break}else O=-1;while(0);E=(O|0)==(z|0)?-1:O;if((E|0)==-1)break;else D=N}D=X(B,e)|0;if(N){if(q){E=0;do{z=j+(E<<2)|0;f[z>>2]=(f[z>>2]|0)/(N|0)|0;E=E+1|0}while((E|0)!=(e|0))}E=b+(D<<2)|0;z=c+(D<<2)|0;p=f[g>>2]|0;if((p|0)>0){J=0;H=j;I=p;while(1){if((I|0)>0){p=0;do{K=f[H+(p<<2)>>2]|0;G=f[r>>2]|0;if((K|0)>(G|0)){F=f[s>>2]|0;f[F+(p<<2)>>2]=G;P=F}else{F=f[t>>2]|0;G=f[s>>2]|0;f[G+(p<<2)>>2]=(K|0)<(F|0)?F:K;P=G}p=p+1|0}while((p|0)<(f[g>>2]|0));Q=P}else Q=f[s>>2]|0;p=(f[E+(J<<2)>>2]|0)-(f[Q+(J<<2)>>2]|0)|0;G=z+(J<<2)|0;f[G>>2]=p;if((p|0)>=(f[u>>2]|0)){if((p|0)>(f[w>>2]|0)){R=p-(f[v>>2]|0)|0;S=57}}else{R=(f[v>>2]|0)+p|0;S=57}if((S|0)==57){S=0;f[G>>2]=R}J=J+1|0;I=f[g>>2]|0;if((J|0)>=(I|0))break;else H=Q}}}else{T=D;S=30}}else{T=X(B,e)|0;S=30}if((S|0)==30?(S=0,H=b+(T<<2)|0,I=c+(T<<2)|0,J=f[g>>2]|0,(J|0)>0):0){z=0;E=b+((X(A+-2|0,e)|0)<<2)|0;G=J;while(1){if((G|0)>0){J=0;do{p=f[E+(J<<2)>>2]|0;K=f[r>>2]|0;if((p|0)>(K|0)){F=f[s>>2]|0;f[F+(J<<2)>>2]=K;U=F}else{F=f[t>>2]|0;K=f[s>>2]|0;f[K+(J<<2)>>2]=(p|0)<(F|0)?F:p;U=K}J=J+1|0}while((J|0)<(f[g>>2]|0));V=U}else V=f[s>>2]|0;J=(f[H+(z<<2)>>2]|0)-(f[V+(z<<2)>>2]|0)|0;K=I+(z<<2)|0;f[K>>2]=J;if((J|0)>=(f[u>>2]|0)){if((J|0)>(f[w>>2]|0)){W=J-(f[v>>2]|0)|0;S=42}}else{W=(f[v>>2]|0)+J|0;S=42}if((S|0)==42){S=0;f[K>>2]=W}z=z+1|0;G=f[g>>2]|0;if((z|0)>=(G|0))break;else E=V}}if((A|0)<=2)break a;C=f[i>>2]|0;E=B+-1|0;if((f[l>>2]|0)-C>>2>>>0<=E>>>0)break;else{G=B;B=E;A=G}}aq(i)}while(0);if((e|0)>0)sj(j|0,0,e<<2|0)|0;e=f[g>>2]|0;if((e|0)<=0){Mq(k);Mq(j);return 1}i=a+16|0;A=a+32|0;B=a+12|0;C=a+28|0;l=a+20|0;V=a+24|0;a=0;W=j;U=e;while(1){if((U|0)>0){e=0;do{T=f[W+(e<<2)>>2]|0;Q=f[i>>2]|0;if((T|0)>(Q|0)){R=f[A>>2]|0;f[R+(e<<2)>>2]=Q;Y=R}else{R=f[B>>2]|0;Q=f[A>>2]|0;f[Q+(e<<2)>>2]=(T|0)<(R|0)?R:T;Y=Q}e=e+1|0}while((e|0)<(f[g>>2]|0));Z=Y}else Z=f[A>>2]|0;e=(f[b+(a<<2)>>2]|0)-(f[Z+(a<<2)>>2]|0)|0;Q=c+(a<<2)|0;f[Q>>2]=e;if((e|0)>=(f[C>>2]|0)){if((e|0)>(f[V>>2]|0)){_=e-(f[l>>2]|0)|0;S=72}}else{_=(f[l>>2]|0)+e|0;S=72}if((S|0)==72){S=0;f[Q>>2]=_}a=a+1|0;U=f[g>>2]|0;if((a|0)>=(U|0))break;else W=Z}Mq(k);Mq(j);return 1}function pc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,Y=0,Z=0;g=a+8|0;Mh(g,b,d,e);d=f[a+48>>2]|0;h=f[a+52>>2]|0;i=e>>>0>1073741823?-1:e<<2;j=Lq(i)|0;sj(j|0,0,i|0)|0;k=Lq(i)|0;sj(k|0,0,i|0)|0;i=f[a+56>>2]|0;l=i+4|0;m=f[l>>2]|0;n=f[i>>2]|0;o=m-n|0;a:do if((o|0)>4){p=o>>2;q=(e|0)>0;r=a+16|0;s=a+32|0;t=a+12|0;u=a+28|0;v=a+20|0;w=a+24|0;x=d+64|0;y=d+28|0;z=e<<2;A=p+-1|0;if(m-n>>2>>>0>A>>>0){B=p;C=A;D=n}else aq(i);while(1){A=f[D+(C<<2)>>2]|0;if(q)sj(j|0,0,z|0)|0;if((A|0)!=-1){p=f[d>>2]|0;E=0;F=A;while(1){if(((f[p+(F>>>5<<2)>>2]&1<<(F&31)|0)==0?(G=f[(f[(f[x>>2]|0)+12>>2]|0)+(F<<2)>>2]|0,(G|0)!=-1):0)?(H=f[y>>2]|0,I=f[h>>2]|0,J=f[I+(f[H+(G<<2)>>2]<<2)>>2]|0,K=G+1|0,L=f[I+(f[H+((((K>>>0)%3|0|0)==0?G+-2|0:K)<<2)>>2]<<2)>>2]|0,K=f[I+(f[H+((((G>>>0)%3|0|0)==0?2:-1)+G<<2)>>2]<<2)>>2]|0,(J|0)<(C|0)&(L|0)<(C|0)&(K|0)<(C|0)):0){G=X(J,e)|0;J=X(L,e)|0;L=X(K,e)|0;if(q){K=0;do{f[k+(K<<2)>>2]=(f[b+(K+L<<2)>>2]|0)+(f[b+(K+J<<2)>>2]|0)-(f[b+(K+G<<2)>>2]|0);K=K+1|0}while((K|0)!=(e|0));if(q){K=0;do{G=j+(K<<2)|0;f[G>>2]=(f[G>>2]|0)+(f[k+(K<<2)>>2]|0);K=K+1|0}while((K|0)!=(e|0))}}M=E+1|0}else M=E;K=(((F>>>0)%3|0|0)==0?2:-1)+F|0;do if(((K|0)!=-1?(f[p+(K>>>5<<2)>>2]&1<<(K&31)|0)==0:0)?(G=f[(f[(f[x>>2]|0)+12>>2]|0)+(K<<2)>>2]|0,(G|0)!=-1):0)if(!((G>>>0)%3|0)){N=G+2|0;break}else{N=G+-1|0;break}else N=-1;while(0);F=(N|0)==(A|0)?-1:N;if((F|0)==-1)break;else E=M}E=X(C,e)|0;if(M){if(q){F=0;do{A=j+(F<<2)|0;f[A>>2]=(f[A>>2]|0)/(M|0)|0;F=F+1|0}while((F|0)!=(e|0))}F=b+(E<<2)|0;A=c+(E<<2)|0;p=f[g>>2]|0;if((p|0)>0){K=0;G=j;J=p;while(1){if((J|0)>0){p=0;do{L=f[G+(p<<2)>>2]|0;H=f[r>>2]|0;if((L|0)>(H|0)){I=f[s>>2]|0;f[I+(p<<2)>>2]=H;O=I}else{I=f[t>>2]|0;H=f[s>>2]|0;f[H+(p<<2)>>2]=(L|0)<(I|0)?I:L;O=H}p=p+1|0}while((p|0)<(f[g>>2]|0));P=O}else P=f[s>>2]|0;p=(f[F+(K<<2)>>2]|0)-(f[P+(K<<2)>>2]|0)|0;H=A+(K<<2)|0;f[H>>2]=p;if((p|0)>=(f[u>>2]|0)){if((p|0)>(f[w>>2]|0)){Q=p-(f[v>>2]|0)|0;R=55}}else{Q=(f[v>>2]|0)+p|0;R=55}if((R|0)==55){R=0;f[H>>2]=Q}K=K+1|0;J=f[g>>2]|0;if((K|0)>=(J|0))break;else G=P}}}else{S=E;R=28}}else{S=X(C,e)|0;R=28}if((R|0)==28?(R=0,G=b+(S<<2)|0,J=c+(S<<2)|0,K=f[g>>2]|0,(K|0)>0):0){A=0;F=b+((X(B+-2|0,e)|0)<<2)|0;H=K;while(1){if((H|0)>0){K=0;do{p=f[F+(K<<2)>>2]|0;L=f[r>>2]|0;if((p|0)>(L|0)){I=f[s>>2]|0;f[I+(K<<2)>>2]=L;T=I}else{I=f[t>>2]|0;L=f[s>>2]|0;f[L+(K<<2)>>2]=(p|0)<(I|0)?I:p;T=L}K=K+1|0}while((K|0)<(f[g>>2]|0));U=T}else U=f[s>>2]|0;K=(f[G+(A<<2)>>2]|0)-(f[U+(A<<2)>>2]|0)|0;L=J+(A<<2)|0;f[L>>2]=K;if((K|0)>=(f[u>>2]|0)){if((K|0)>(f[w>>2]|0)){V=K-(f[v>>2]|0)|0;R=40}}else{V=(f[v>>2]|0)+K|0;R=40}if((R|0)==40){R=0;f[L>>2]=V}A=A+1|0;H=f[g>>2]|0;if((A|0)>=(H|0))break;else F=U}}if((B|0)<=2)break a;D=f[i>>2]|0;F=C+-1|0;if((f[l>>2]|0)-D>>2>>>0<=F>>>0)break;else{H=C;C=F;B=H}}aq(i)}while(0);if((e|0)>0)sj(j|0,0,e<<2|0)|0;e=f[g>>2]|0;if((e|0)<=0){Mq(k);Mq(j);return 1}i=a+16|0;B=a+32|0;C=a+12|0;D=a+28|0;l=a+20|0;U=a+24|0;a=0;V=j;T=e;while(1){if((T|0)>0){e=0;do{S=f[V+(e<<2)>>2]|0;P=f[i>>2]|0;if((S|0)>(P|0)){Q=f[B>>2]|0;f[Q+(e<<2)>>2]=P;W=Q}else{Q=f[C>>2]|0;P=f[B>>2]|0;f[P+(e<<2)>>2]=(S|0)<(Q|0)?Q:S;W=P}e=e+1|0}while((e|0)<(f[g>>2]|0));Y=W}else Y=f[B>>2]|0;e=(f[b+(a<<2)>>2]|0)-(f[Y+(a<<2)>>2]|0)|0;P=c+(a<<2)|0;f[P>>2]=e;if((e|0)>=(f[D>>2]|0)){if((e|0)>(f[U>>2]|0)){Z=e-(f[l>>2]|0)|0;R=70}}else{Z=(f[l>>2]|0)+e|0;R=70}if((R|0)==70){R=0;f[P>>2]=Z}a=a+1|0;T=f[g>>2]|0;if((a|0)>=(T|0))break;else V=Y}Mq(k);Mq(j);return 1}function qc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=u;u=u+64|0;d=e+48|0;h=e+40|0;i=e+32|0;j=e+16|0;k=e+8|0;l=e;m=e+28|0;n=a+8|0;o=f[n>>2]|0;if((o+-2|0)>>>0<=28){f[a+72>>2]=o;p=1<>2]=p+-1;o=p+-2|0;f[a+80>>2]=o;f[a+84>>2]=(o|0)/2|0}o=a+40|0;f[a+48>>2]=g;g=a+88|0;tk(g);p=a+36|0;q=f[p>>2]|0;r=(f[q+4>>2]|0)-(f[q>>2]|0)|0;s=r>>2;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;t=k;f[t>>2]=0;f[t+4>>2]=0;t=l;f[t>>2]=0;f[t+4>>2]=0;if((r|0)<=0){u=e;return 1}r=j+4|0;t=j+8|0;v=a+84|0;w=a+80|0;x=h+4|0;y=i+4|0;z=d+4|0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=l+4|0;F=a+76|0;a=k+4|0;G=l+4|0;H=f[q>>2]|0;if((f[q+4>>2]|0)==(H|0)){J=q;aq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];ic(o,d,j);H=f[j>>2]|0;q=(H|0)>-1?H:0-H|0;M=f[r>>2]|0;N=(M|0)>-1?M:0-M|0;O=Vn(N|0,((N|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;q=f[t>>2]|0;N=(q|0)>-1;P=N?q:0-q|0;q=Vn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((q|0)==0&(P|0)==0){O=f[v>>2]|0;Q=O;R=j;S=M;T=O}else{O=f[v>>2]|0;U=((O|0)<0)<<31>>31;V=un(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=Ik(V|0,I|0,q|0,P|0)|0;f[j>>2]=H;V=un(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=Ik(V|0,I|0,q|0,P|0)|0;f[r>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=t;S=M;T=O}f[R>>2]=Q;O=f[j>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[t>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[t>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[t>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){q=(N|0)==(Z|0);if(!(P&q)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(q&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);P=0-S|0;M=0-_|0;f[j>>2]=0-O;f[r>>2]=P;f[t>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(q=(N|0)==(ca|0),!(M&q)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(q&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);N=K<<1;M=b+(N<<2)|0;H=M+4|0;O=f[H>>2]|0;f[h>>2]=f[M>>2];f[x>>2]=O;f[i>>2]=$;f[y>>2]=aa;Od(d,n,h,i);O=f[d>>2]|0;f[k>>2]=O;P=f[z>>2]|0;f[A>>2]=P;q=f[H>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=q;f[i>>2]=da;f[C>>2]=ea;Od(d,n,h,i);q=f[d>>2]|0;f[l>>2]=q;M=f[D>>2]|0;f[E>>2]=M;H=f[v>>2]|0;if((H|0)>=(O|0))if((O|0)<(0-H|0))fa=(f[F>>2]|0)+O|0;else fa=O;else fa=O-(f[F>>2]|0)|0;f[k>>2]=fa;if((H|0)>=(P|0))if((P|0)<(0-H|0))ga=(f[F>>2]|0)+P|0;else ga=P;else ga=P-(f[F>>2]|0)|0;f[a>>2]=ga;if((H|0)>=(q|0))if((q|0)<(0-H|0))ha=(f[F>>2]|0)+q|0;else ha=q;else ha=q-(f[F>>2]|0)|0;f[l>>2]=ha;if((H|0)>=(M|0))if((M|0)<(0-H|0))ia=(f[F>>2]|0)+M|0;else ia=M;else ia=M-(f[F>>2]|0)|0;f[G>>2]=ia;if((((ga|0)>-1?ga:0-ga|0)+((fa|0)>-1?fa:0-fa|0)|0)<(((ha|0)>-1?ha:0-ha|0)+((ia|0)>-1?ia:0-ia|0)|0)){fj(g,0);ja=k}else{fj(g,1);ja=l}M=f[ja>>2]|0;if((M|0)<0)ka=(f[F>>2]|0)+M|0;else ka=M;M=c+(N<<2)|0;f[M>>2]=ka;N=f[ja+4>>2]|0;if((N|0)<0)la=(f[F>>2]|0)+N|0;else la=N;f[M+4>>2]=la;K=K+1|0;if((K|0)>=(s|0)){ma=5;break}M=f[p>>2]|0;L=f[M>>2]|0;if((f[M+4>>2]|0)-L>>2>>>0<=K>>>0){J=M;ma=6;break}}if((ma|0)==5){u=e;return 1}else if((ma|0)==6)aq(J);return 0}function rc(a,b){a=a|0;b=b|0;var c=0,d=0,e=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,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,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;c=u;u=u+48|0;d=c+24|0;e=c+12|0;g=c;if(!b){h=0;u=c;return h|0}i=a+12|0;j=a+4|0;k=f[j>>2]|0;l=f[a>>2]|0;m=k-l>>2;n=a+16|0;o=f[n>>2]|0;p=f[i>>2]|0;q=o-p>>2;r=p;p=o;if(m>>>0<=q>>>0)if(m>>>0>>0?(o=r+(m<<2)|0,(o|0)!=(p|0)):0){f[n>>2]=p+(~((p+-4-o|0)>>>2)<<2);s=l;t=k}else{s=l;t=k}else{Ch(i,m-q|0,6140);s=f[a>>2]|0;t=f[j>>2]|0}f[d>>2]=0;q=d+4|0;f[q>>2]=0;f[d+8>>2]=0;gk(d,t-s>>2);s=f[j>>2]|0;t=f[a>>2]|0;if((s|0)==(t|0)){v=s;w=s}else{m=f[d>>2]|0;k=m;l=k;o=0;p=s;s=k;k=t;t=m;while(1){m=f[k+(o<<2)>>2]|0;n=f[q>>2]|0;if(m>>>0>2>>>0){x=l;y=s;z=k;A=p}else{r=m+1|0;f[e>>2]=0;B=n-t>>2;C=t;D=n;if(r>>>0<=B>>>0)if(r>>>0>>0?(n=C+(r<<2)|0,(n|0)!=(D|0)):0){f[q>>2]=D+(~((D+-4-n|0)>>>2)<<2);E=l;F=p;G=k}else{E=l;F=p;G=k}else{Ch(d,r-B|0,e);E=f[d>>2]|0;F=f[j>>2]|0;G=f[a>>2]|0}x=E;y=E;z=G;A=F}B=y+(m<<2)|0;f[B>>2]=(f[B>>2]|0)+1;o=o+1|0;if(o>>>0>=A-z>>2>>>0){v=z;w=A;break}else{l=x;p=A;s=y;k=z;t=y}}}y=w-v|0;v=y>>2;f[e>>2]=0;w=e+4|0;f[w>>2]=0;f[e+8>>2]=0;if(!v){H=0;I=0}else{if(v>>>0>536870911)aq(e);t=ln(y<<1)|0;f[w>>2]=t;f[e>>2]=t;y=t+(v<<3)|0;f[e+8>>2]=y;z=v;v=t;k=t;while(1){s=v;f[s>>2]=-1;f[s+4>>2]=-1;s=k+8|0;A=z+-1|0;if(!A)break;else{z=A;v=s;k=s}}f[w>>2]=y;H=t;I=t}t=f[q>>2]|0;y=f[d>>2]|0;k=t-y|0;v=k>>2;f[g>>2]=0;z=g+4|0;f[z>>2]=0;f[g+8>>2]=0;s=y;do if(v)if(v>>>0>1073741823)aq(g);else{A=ln(k)|0;f[g>>2]=A;p=A+(v<<2)|0;f[g+8>>2]=p;sj(A|0,0,k|0)|0;f[z>>2]=p;J=A;K=p;L=A;break}else{J=0;K=0;L=0}while(0);if((t|0)!=(y|0)){y=0;t=0;while(1){f[J+(t<<2)>>2]=y;k=t+1|0;if(k>>>0>>0){y=(f[s+(t<<2)>>2]|0)+y|0;t=k}else break}}t=f[j>>2]|0;j=f[a>>2]|0;y=j;if((t|0)!=(j|0)){k=a+40|0;a=t-j>>2;j=H;t=H;g=H;A=H;p=H;x=H;l=0;o=J;while(1){F=f[y+(l<<2)>>2]|0;G=l+1|0;E=((G>>>0)%3|0|0)==0?l+-2|0:G;if((E|0)==-1)M=-1;else M=f[y+(E<<2)>>2]|0;E=((l>>>0)%3|0|0)==0;G=(E?2:-1)+l|0;if((G|0)==-1)N=-1;else N=f[y+(G<<2)>>2]|0;if(E?(M|0)==(N|0)|((F|0)==(M|0)|(F|0)==(N|0)):0){f[k>>2]=(f[k>>2]|0)+1;O=j;P=t;Q=g;R=A;S=p;T=x;U=l+2|0;V=o}else W=51;a:do if((W|0)==51){W=0;E=f[s+(N<<2)>>2]|0;b:do if((E|0)>0){G=0;B=f[o+(N<<2)>>2]|0;while(1){m=f[p+(B<<3)>>2]|0;if((m|0)==-1){X=j;Y=t;Z=A;_=p;break b}if((m|0)==(M|0)){m=f[p+(B<<3)+4>>2]|0;if((m|0)==-1)$=-1;else $=f[y+(m<<2)>>2]|0;if((F|0)!=($|0))break}m=G+1|0;if((m|0)<(E|0)){G=m;B=B+1|0}else{X=j;Y=t;Z=A;_=p;break b}}m=f[A+(B<<3)+4>>2]|0;r=G;n=B;D=t;while(1){r=r+1|0;if((r|0)>=(E|0))break;C=n+1|0;f[D+(n<<3)>>2]=f[D+(C<<3)>>2];f[D+(n<<3)+4>>2]=f[D+(C<<3)+4>>2];if((f[j+(n<<3)>>2]|0)==-1)break;else{n=C;D=j}}f[g+(n<<3)>>2]=-1;if((m|0)==-1){X=g;Y=g;Z=g;_=g}else{D=f[i>>2]|0;f[D+(l<<2)>>2]=m;f[D+(m<<2)>>2]=l;O=g;P=g;Q=g;R=g;S=g;T=x;U=l;V=o;break a}}else{X=j;Y=t;Z=A;_=p}while(0);E=f[s+(M<<2)>>2]|0;if((E|0)>0){D=0;r=f[J+(M<<2)>>2]|0;while(1){aa=x+(r<<3)|0;if((f[aa>>2]|0)==-1)break;D=D+1|0;if((D|0)>=(E|0)){O=x;P=x;Q=x;R=x;S=x;T=x;U=l;V=J;break a}else r=r+1|0}f[aa>>2]=N;f[H+(r<<3)+4>>2]=l;O=H;P=H;Q=H;R=H;S=H;T=H;U=l;V=J}else{O=X;P=Y;Q=g;R=Z;S=_;T=x;U=l;V=o}}while(0);l=U+1|0;if(l>>>0>=a>>>0)break;else{j=O;t=P;g=Q;A=R;p=S;x=T;o=V}}}f[b>>2]=v;if(!J){ba=H;ca=I}else{if((K|0)!=(J|0))f[z>>2]=K+(~((K+-4-J|0)>>>2)<<2);Oq(L);L=f[e>>2]|0;ba=L;ca=L}if(ba|0){L=f[w>>2]|0;if((L|0)!=(ba|0))f[w>>2]=L+(~((L+-8-ba|0)>>>3)<<3);Oq(ca)}ca=f[d>>2]|0;if(ca|0){d=f[q>>2]|0;if((d|0)!=(ca|0))f[q>>2]=d+(~((d+-4-ca|0)>>>2)<<2);Oq(ca)}h=1;u=c;return h|0}function sc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=Oa,S=Oa,T=Oa,U=0,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0;e=u;u=u+48|0;g=e+12|0;h=e+35|0;i=e+32|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)aq(j);p=m<<2;q=ln(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;sj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+1|0;m=i+2|0;s=g+4|0;t=g+12|0;v=g+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=d;B=f[A>>2]|0;C=f[A+4>>2]|0;A=p;D=un(f[A>>2]|0,f[A+4>>2]|0,r+y|0,0)|0;A=Vn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;b[h>>0]=b[C>>0]|0;b[h+1>>0]=b[C+1>>0]|0;b[h+2>>0]=b[C+2>>0]|0;im(i|0,C|0,3)|0;C=jg(g,i)|0;if(!C){A=b[i>>0]|0;B=b[q>>0]|0;D=b[m>>0]|0;E=((A&255^318)+239^B&255)+239^D&255;F=f[s>>2]|0;G=(F|0)==0;a:do if(!G){H=F+-1|0;J=(H&F|0)==0;if(!J)if(E>>>0>>0)K=E;else K=(E>>>0)%(F>>>0)|0;else K=E&H;L=f[(f[g>>2]|0)+(K<<2)>>2]|0;if((L|0)!=0?(M=f[L>>2]|0,(M|0)!=0):0){if(J){J=M;while(1){L=f[J+4>>2]|0;if(!((L|0)==(E|0)|(L&H|0)==(K|0))){N=K;O=29;break a}L=J+8|0;if(((b[L>>0]|0)==A<<24>>24?(b[L+1>>0]|0)==B<<24>>24:0)?(b[L+2>>0]|0)==D<<24>>24:0)break a;J=f[J>>2]|0;if(!J){N=K;O=29;break a}}}else P=M;while(1){J=f[P+4>>2]|0;if((J|0)!=(E|0)){if(J>>>0>>0)Q=J;else Q=(J>>>0)%(F>>>0)|0;if((Q|0)!=(K|0)){N=K;O=29;break a}}J=P+8|0;if(((b[J>>0]|0)==A<<24>>24?(b[J+1>>0]|0)==B<<24>>24:0)?(b[J+2>>0]|0)==D<<24>>24:0)break a;P=f[P>>2]|0;if(!P){N=K;O=29;break}}}else{N=K;O=29}}else{N=0;O=29}while(0);if((O|0)==29){O=0;M=ln(16)|0;b[M+8>>0]=A;b[M+9>>0]=B;b[M+10>>0]=D;f[M+12>>2]=z;f[M+4>>2]=E;f[M>>2]=0;R=$(((f[t>>2]|0)+1|0)>>>0);S=$(F>>>0);T=$(n[k>>2]);do if(G|$(T*S)>>0<3|(F+-1&F|0)!=0)&1;H=~~$(W($(R/T)))>>>0;_h(g,J>>>0>>0?H:J);J=f[s>>2]|0;H=J+-1|0;if(!(H&J)){U=J;V=H&E;break}if(E>>>0>>0){U=J;V=E}else{U=J;V=(E>>>0)%(J>>>0)|0}}else{U=F;V=N}while(0);F=(f[g>>2]|0)+(V<<2)|0;E=f[F>>2]|0;if(!E){f[M>>2]=f[v>>2];f[v>>2]=M;f[F>>2]=v;F=f[M>>2]|0;if(F|0){G=f[F+4>>2]|0;F=U+-1|0;if(F&U)if(G>>>0>>0)X=G;else X=(G>>>0)%(U>>>0)|0;else X=G&F;Y=(f[g>>2]|0)+(X<<2)|0;O=42}}else{f[M>>2]=f[E>>2];Y=E;O=42}if((O|0)==42){O=0;f[Y>>2]=M}f[t>>2]=(f[t>>2]|0)+1}E=w;F=f[E>>2]|0;G=un(F|0,f[E+4>>2]|0,z|0,0)|0;kh((f[f[x>>2]>>2]|0)+G|0,h|0,F|0)|0;F=f[j>>2]|0;f[F+(y<<2)>>2]=z;Z=z+1|0;_=F}else{F=f[j>>2]|0;f[F+(y<<2)>>2]=f[C+12>>2];Z=z;_=F}y=y+1|0;aa=f[l>>2]|0;if(y>>>0>=aa>>>0)break;else z=Z}if((Z|0)==(aa|0))ba=_;else{z=a+84|0;if(!(b[z>>0]|0)){y=f[a+72>>2]|0;h=f[a+68>>2]|0;x=h;if((y|0)==(h|0))ca=_;else{w=y-h>>2;h=0;do{y=x+(h<<2)|0;f[y>>2]=f[_+(f[y>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);ca=_}}else{b[z>>0]=0;z=a+68|0;_=a+72|0;w=f[_>>2]|0;h=f[z>>2]|0;x=w-h>>2;y=h;h=w;if(aa>>>0<=x>>>0)if(aa>>>0>>0?(w=y+(aa<<2)|0,(w|0)!=(h|0)):0){f[_>>2]=h+(~((h+-4-w|0)>>>2)<<2);da=aa}else da=aa;else{Ch(z,aa-x|0,1220);da=f[l>>2]|0}x=f[j>>2]|0;if(!da)ca=x;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);ca=x}}f[l>>2]=Z;ba=ca}if(!ba)ea=Z;else{ca=f[o>>2]|0;if((ca|0)!=(ba|0))f[o>>2]=ca+(~((ca+-4-ba|0)>>>2)<<2);Oq(ba);ea=Z}}else ea=0;Z=f[g+8>>2]|0;if(Z|0){ba=Z;do{Z=ba;ba=f[ba>>2]|0;Oq(Z)}while((ba|0)!=0)}ba=f[g>>2]|0;f[g>>2]=0;if(!ba){u=e;return ea|0}Oq(ba);u=e;return ea|0}function tc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var 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,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,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,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;e=u;u=u+64|0;d=e+48|0;h=e+40|0;i=e+32|0;j=e+16|0;k=e+8|0;l=e;m=e+28|0;n=a+8|0;o=f[n>>2]|0;if((o+-2|0)>>>0<=28){f[a+72>>2]=o;p=1<>2]=p+-1;o=p+-2|0;f[a+80>>2]=o;f[a+84>>2]=(o|0)/2|0}o=a+40|0;f[a+48>>2]=g;g=a+88|0;tk(g);p=a+36|0;q=f[p>>2]|0;r=(f[q+4>>2]|0)-(f[q>>2]|0)|0;s=r>>2;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;t=k;f[t>>2]=0;f[t+4>>2]=0;t=l;f[t>>2]=0;f[t+4>>2]=0;if((r|0)<=0){u=e;return 1}r=j+4|0;t=j+8|0;v=a+84|0;w=a+80|0;x=h+4|0;y=i+4|0;z=d+4|0;A=k+4|0;B=h+4|0;C=i+4|0;D=d+4|0;E=l+4|0;F=a+76|0;a=k+4|0;G=l+4|0;H=f[q>>2]|0;if((f[q+4>>2]|0)==(H|0)){J=q;aq(J)}else{K=0;L=H}while(1){f[m>>2]=f[L+(K<<2)>>2];f[d>>2]=f[m>>2];$b(o,d,j);H=f[j>>2]|0;q=(H|0)>-1?H:0-H|0;M=f[r>>2]|0;N=(M|0)>-1?M:0-M|0;O=Vn(N|0,((N|0)<0)<<31>>31|0,q|0,((q|0)<0)<<31>>31|0)|0;q=f[t>>2]|0;N=(q|0)>-1;P=N?q:0-q|0;q=Vn(O|0,I|0,P|0,((P|0)<0)<<31>>31|0)|0;P=I;if((q|0)==0&(P|0)==0){O=f[v>>2]|0;Q=O;R=j;S=M;T=O}else{O=f[v>>2]|0;U=((O|0)<0)<<31>>31;V=un(O|0,U|0,H|0,((H|0)<0)<<31>>31|0)|0;H=Ik(V|0,I|0,q|0,P|0)|0;f[j>>2]=H;V=un(O|0,U|0,M|0,((M|0)<0)<<31>>31|0)|0;M=Ik(V|0,I|0,q|0,P|0)|0;f[r>>2]=M;P=O-((H|0)>-1?H:0-H|0)-((M|0)>-1?M:0-M|0)|0;Q=N?P:0-P|0;R=t;S=M;T=O}f[R>>2]=Q;O=f[j>>2]|0;do if((O|0)<=-1){if((S|0)<0){M=f[t>>2]|0;W=(M|0)>-1?M:0-M|0;X=M}else{M=f[t>>2]|0;W=(f[w>>2]|0)-((M|0)>-1?M:0-M|0)|0;X=M}if((X|0)<0){Y=(S|0)>-1?S:0-S|0;Z=W;_=X;break}else{Y=(f[w>>2]|0)-((S|0)>-1?S:0-S|0)|0;Z=W;_=X;break}}else{M=f[t>>2]|0;Y=M+T|0;Z=T+S|0;_=M}while(0);M=(Z|0)==0;P=(Y|0)==0;N=f[w>>2]|0;do if(Y|Z){H=(N|0)==(Y|0);if(!(M&H)){q=(N|0)==(Z|0);if(!(P&q)){if(M&(T|0)<(Y|0)){$=0;aa=(T<<1)-Y|0;break}if(q&(T|0)>(Y|0)){$=Z;aa=(T<<1)-Y|0;break}if(H&(T|0)>(Z|0)){$=(T<<1)-Z|0;aa=Y;break}if(P){$=(T|0)<(Z|0)?(T<<1)-Z|0:Z;aa=0}else{$=Z;aa=Y}}else{$=Z;aa=Z}}else{$=Y;aa=Y}}else{$=N;aa=N}while(0);P=0-S|0;M=0-_|0;f[j>>2]=0-O;f[r>>2]=P;f[t>>2]=M;if((O|0)<1){ba=T-_|0;ca=T-S|0}else{H=(_|0)<1?M:_;M=(S|0)<1?P:S;ba=(_|0)>0?M:N-M|0;ca=(S|0)>0?H:N-H|0}H=(ca|0)==0;M=(ba|0)==0;do if(((ba|ca|0)!=0?(P=(N|0)==(ba|0),!(H&P)):0)?(q=(N|0)==(ca|0),!(M&q)):0){if(H&(T|0)<(ba|0)){da=0;ea=(T<<1)-ba|0;break}if(q&(T|0)>(ba|0)){da=N;ea=(T<<1)-ba|0;break}if(P&(T|0)>(ca|0)){da=(T<<1)-ca|0;ea=N;break}if(M){da=(T|0)<(ca|0)?(T<<1)-ca|0:ca;ea=0}else{da=ca;ea=ba}}else{da=N;ea=N}while(0);N=K<<1;M=b+(N<<2)|0;H=M+4|0;O=f[H>>2]|0;f[h>>2]=f[M>>2];f[x>>2]=O;f[i>>2]=$;f[y>>2]=aa;Od(d,n,h,i);O=f[d>>2]|0;f[k>>2]=O;P=f[z>>2]|0;f[A>>2]=P;q=f[H>>2]|0;f[h>>2]=f[M>>2];f[B>>2]=q;f[i>>2]=da;f[C>>2]=ea;Od(d,n,h,i);q=f[d>>2]|0;f[l>>2]=q;M=f[D>>2]|0;f[E>>2]=M;H=f[v>>2]|0;if((H|0)>=(O|0))if((O|0)<(0-H|0))fa=(f[F>>2]|0)+O|0;else fa=O;else fa=O-(f[F>>2]|0)|0;f[k>>2]=fa;if((H|0)>=(P|0))if((P|0)<(0-H|0))ga=(f[F>>2]|0)+P|0;else ga=P;else ga=P-(f[F>>2]|0)|0;f[a>>2]=ga;if((H|0)>=(q|0))if((q|0)<(0-H|0))ha=(f[F>>2]|0)+q|0;else ha=q;else ha=q-(f[F>>2]|0)|0;f[l>>2]=ha;if((H|0)>=(M|0))if((M|0)<(0-H|0))ia=(f[F>>2]|0)+M|0;else ia=M;else ia=M-(f[F>>2]|0)|0;f[G>>2]=ia;if((((ga|0)>-1?ga:0-ga|0)+((fa|0)>-1?fa:0-fa|0)|0)<(((ha|0)>-1?ha:0-ha|0)+((ia|0)>-1?ia:0-ia|0)|0)){fj(g,0);ja=k}else{fj(g,1);ja=l}M=f[ja>>2]|0;if((M|0)<0)ka=(f[F>>2]|0)+M|0;else ka=M;M=c+(N<<2)|0;f[M>>2]=ka;N=f[ja+4>>2]|0;if((N|0)<0)la=(f[F>>2]|0)+N|0;else la=N;f[M+4>>2]=la;K=K+1|0;if((K|0)>=(s|0)){ma=5;break}M=f[p>>2]|0;L=f[M>>2]|0;if((f[M+4>>2]|0)-L>>2>>>0<=K>>>0){J=M;ma=6;break}}if((ma|0)==5){u=e;return 1}else if((ma|0)==6)aq(J);return 0}function uc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=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,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=Oa,T=Oa,U=Oa,V=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;e=u;u=u+64|0;g=e+36|0;h=e+24|0;i=e+12|0;j=e;k=g+16|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[k>>2]=$(1.0);l=a+80|0;m=f[l>>2]|0;f[j>>2]=0;o=j+4|0;f[o>>2]=0;f[j+8>>2]=0;if(m){if(m>>>0>1073741823)aq(j);p=m<<2;q=ln(p)|0;f[j>>2]=q;r=q+(m<<2)|0;f[j+8>>2]=r;sj(q|0,0,p|0)|0;f[o>>2]=r;r=f[d>>2]|0;d=c+48|0;p=c+40|0;q=i+4|0;m=i+8|0;s=g+4|0;t=g+12|0;v=g+8|0;w=a+40|0;x=a+64|0;y=0;z=0;while(1){A=d;B=f[A>>2]|0;C=f[A+4>>2]|0;A=p;D=un(f[A>>2]|0,f[A+4>>2]|0,r+z|0,0)|0;A=Vn(D|0,I|0,B|0,C|0)|0;C=(f[f[c>>2]>>2]|0)+A|0;A=h;B=C;D=A+12|0;do{b[A>>0]=b[B>>0]|0;A=A+1|0;B=B+1|0}while((A|0)<(D|0));im(i|0,C|0,12)|0;B=qg(g,i)|0;if(!B){A=f[i>>2]|0;D=f[q>>2]|0;E=f[m>>2]|0;F=((A^318)+239^D)+239^E;G=f[s>>2]|0;H=(G|0)==0;a:do if(!H){J=G+-1|0;K=(J&G|0)==0;if(!K)if(F>>>0>>0)L=F;else L=(F>>>0)%(G>>>0)|0;else L=F&J;M=f[(f[g>>2]|0)+(L<<2)>>2]|0;if((M|0)!=0?(N=f[M>>2]|0,(N|0)!=0):0){if(K){K=N;while(1){M=f[K+4>>2]|0;if(!((M|0)==(F|0)|(M&J|0)==(L|0))){O=L;P=29;break a}if(((f[K+8>>2]|0)==(A|0)?(f[K+12>>2]|0)==(D|0):0)?(f[K+16>>2]|0)==(E|0):0)break a;K=f[K>>2]|0;if(!K){O=L;P=29;break a}}}else Q=N;while(1){K=f[Q+4>>2]|0;if((K|0)!=(F|0)){if(K>>>0>>0)R=K;else R=(K>>>0)%(G>>>0)|0;if((R|0)!=(L|0)){O=L;P=29;break a}}if(((f[Q+8>>2]|0)==(A|0)?(f[Q+12>>2]|0)==(D|0):0)?(f[Q+16>>2]|0)==(E|0):0)break a;Q=f[Q>>2]|0;if(!Q){O=L;P=29;break}}}else{O=L;P=29}}else{O=0;P=29}while(0);if((P|0)==29){P=0;C=ln(24)|0;f[C+8>>2]=A;f[C+12>>2]=D;f[C+16>>2]=E;f[C+20>>2]=y;f[C+4>>2]=F;f[C>>2]=0;S=$(((f[t>>2]|0)+1|0)>>>0);T=$(G>>>0);U=$(n[k>>2]);do if(H|$(U*T)>>0<3|(G+-1&G|0)!=0)&1;K=~~$(W($(S/U)))>>>0;Xh(g,N>>>0>>0?K:N);N=f[s>>2]|0;K=N+-1|0;if(!(K&N)){V=N;X=K&F;break}if(F>>>0>>0){V=N;X=F}else{V=N;X=(F>>>0)%(N>>>0)|0}}else{V=G;X=O}while(0);G=(f[g>>2]|0)+(X<<2)|0;F=f[G>>2]|0;if(!F){f[C>>2]=f[v>>2];f[v>>2]=C;f[G>>2]=v;G=f[C>>2]|0;if(G|0){H=f[G+4>>2]|0;G=V+-1|0;if(G&V)if(H>>>0>>0)Y=H;else Y=(H>>>0)%(V>>>0)|0;else Y=H&G;Z=(f[g>>2]|0)+(Y<<2)|0;P=42}}else{f[C>>2]=f[F>>2];Z=F;P=42}if((P|0)==42){P=0;f[Z>>2]=C}f[t>>2]=(f[t>>2]|0)+1}F=w;G=f[F>>2]|0;H=un(G|0,f[F+4>>2]|0,y|0,0)|0;kh((f[f[x>>2]>>2]|0)+H|0,h|0,G|0)|0;G=f[j>>2]|0;f[G+(z<<2)>>2]=y;_=y+1|0;aa=G}else{G=f[j>>2]|0;f[G+(z<<2)>>2]=f[B+20>>2];_=y;aa=G}z=z+1|0;ba=f[l>>2]|0;if(z>>>0>=ba>>>0)break;else y=_}if((_|0)==(ba|0))ca=aa;else{y=a+84|0;if(!(b[y>>0]|0)){z=f[a+72>>2]|0;h=f[a+68>>2]|0;x=h;if((z|0)==(h|0))da=aa;else{w=z-h>>2;h=0;do{z=x+(h<<2)|0;f[z>>2]=f[aa+(f[z>>2]<<2)>>2];h=h+1|0}while(h>>>0>>0);da=aa}}else{b[y>>0]=0;y=a+68|0;aa=a+72|0;w=f[aa>>2]|0;h=f[y>>2]|0;x=w-h>>2;z=h;h=w;if(ba>>>0<=x>>>0)if(ba>>>0>>0?(w=z+(ba<<2)|0,(w|0)!=(h|0)):0){f[aa>>2]=h+(~((h+-4-w|0)>>>2)<<2);ea=ba}else ea=ba;else{Ch(y,ba-x|0,1220);ea=f[l>>2]|0}x=f[j>>2]|0;if(!ea)da=x;else{j=f[a+68>>2]|0;a=0;do{f[j+(a<<2)>>2]=f[x+(a<<2)>>2];a=a+1|0}while(a>>>0>>0);da=x}}f[l>>2]=_;ca=da}if(!ca)fa=_;else{da=f[o>>2]|0;if((da|0)!=(ca|0))f[o>>2]=da+(~((da+-4-ca|0)>>>2)<<2);Oq(ca);fa=_}}else fa=0;_=f[g+8>>2]|0;if(_|0){ca=_;do{_=ca;ca=f[ca>>2]|0;Oq(_)}while((ca|0)!=0)}ca=f[g>>2]|0;f[g>>2]=0;if(!ca){u=e;return fa|0}Oq(ca);u=e;return fa|0} -function di(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;Je(e,a+40|0,f[a+8>>2]|0,b,c);gj(a,e);a=f[e>>2]|0;f[e>>2]=0;if(!a){u=d;return 1}e=a+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){b=c+12|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;Oq(e)}Oq(c)}c=f[a+68>>2]|0;if(c|0){e=a+72|0;b=f[e>>2]|0;if((b|0)!=(c|0))f[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);Oq(c)}c=a+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){e=b+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;Oq(c)}Oq(b)}Oq(a);u=d;return 1}function ei(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Bd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Bd(a,e);return}function fi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;e=u;u=u+48|0;g=e;h=e+32|0;if(!c){i=0;u=e;return i|0}Gn(g);if((dm(c,0)|0)!=-1?Qa[f[(f[c>>2]|0)+16>>2]&127](c)|0:0){Va[f[(f[c>>2]|0)+20>>2]&127](c);ch(h,a,c,g);c=(f[h>>2]|0)==0;a=h+4|0;if((b[a+11>>0]|0)<0)Oq(f[a>>2]|0);if(c){c=f[g>>2]|0;a=g+4|0;rg(d,c,c+((f[a>>2]|0)-c)|0);j=(f[a>>2]|0)-(f[g>>2]|0)|0}else j=0}else j=0;a=g+12|0;c=f[a>>2]|0;f[a>>2]=0;if(c|0)Oq(c);c=f[g>>2]|0;if(c|0){a=g+4|0;if((f[a>>2]|0)!=(c|0))f[a>>2]=c;Oq(c)}i=j;u=e;return i|0}function gi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;Fe(e,a+40|0,f[a+8>>2]|0,b,c);gj(a,e);a=f[e>>2]|0;f[e>>2]=0;if(!a){u=d;return 1}e=a+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){e=f[c+8>>2]|0;if(e|0){b=c+12|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;Oq(e)}Oq(c)}c=f[a+68>>2]|0;if(c|0){e=a+72|0;b=f[e>>2]|0;if((b|0)!=(c|0))f[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);Oq(c)}c=a+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){e=b+4|0;if((f[e>>2]|0)!=(c|0))f[e>>2]=c;Oq(c)}Oq(b)}Oq(a);u=d;return 1}function hi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d;do{d=g+-4|0;f[c>>2]=d;h=f[d>>2]|0;f[d>>2]=0;if(h|0){d=h+88|0;i=f[d>>2]|0;f[d>>2]=0;if(i|0){d=f[i+8>>2]|0;if(d|0){j=i+12|0;if((f[j>>2]|0)!=(d|0))f[j>>2]=d;Oq(d)}Oq(i)}i=f[h+68>>2]|0;if(i|0){d=h+72|0;j=f[d>>2]|0;if((j|0)!=(i|0))f[d>>2]=j+(~((j+-4-i|0)>>>2)<<2);Oq(i)}i=h+64|0;j=f[i>>2]|0;f[i>>2]=0;if(j|0){i=f[j>>2]|0;if(i|0){d=j+4|0;if((f[d>>2]|0)!=(i|0))f[d>>2]=i;Oq(i)}Oq(j)}Oq(h)}g=f[c>>2]|0}while((g|0)!=(b|0));e=f[a>>2]|0}Oq(e);return}function ii(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;if(!(Ie(a,c)|0)){i=0;u=d;return i|0}j=a+36|0;k=a+40|0;a=f[j>>2]|0;if((f[k>>2]|0)==(a|0)){i=1;u=d;return i|0}l=c+16|0;m=c+4|0;n=h+1|0;o=0;p=a;do{a=f[p+(o<<2)>>2]|0;q=Qa[f[(f[a>>2]|0)+32>>2]&127](a)|0;b[h>>0]=q;q=l;a=f[q+4>>2]|0;if(!((a|0)>0|(a|0)==0&(f[q>>2]|0)>>>0>0)){f[g>>2]=f[m>>2];f[e>>2]=f[g>>2];Me(c,e,h,n)|0}o=o+1|0;p=f[j>>2]|0}while(o>>>0<(f[k>>2]|0)-p>>2>>>0);i=1;u=d;return i|0}function ji(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=u;u=u+16|0;d=c;lp(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;e=a+24|0;lp(e);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;a=ln(32)|0;f[d>>2]=a;f[d+8>>2]=-2147483616;f[d+4>>2]=20;g=a;h=14538;i=g+20|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[a+20>>0]=0;Vj(e,d,1);if((b[d+11>>0]|0)<0)Oq(f[d>>2]|0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;a=ln(32)|0;f[d>>2]=a;f[d+8>>2]=-2147483616;f[d+4>>2]=22;g=a;h=14559;i=g+22|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[a+22>>0]=0;Vj(e,d,1);if((b[d+11>>0]|0)>=0){u=c;return}Oq(f[d>>2]|0);u=c;return}function ki(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=f[a+4>>2]|0;c=a+8|0;d=f[c>>2]|0;if((d|0)!=(b|0)){e=d;do{d=e+-4|0;f[c>>2]=d;g=f[d>>2]|0;f[d>>2]=0;if(g|0){d=g+88|0;h=f[d>>2]|0;f[d>>2]=0;if(h|0){d=f[h+8>>2]|0;if(d|0){i=h+12|0;if((f[i>>2]|0)!=(d|0))f[i>>2]=d;Oq(d)}Oq(h)}h=f[g+68>>2]|0;if(h|0){d=g+72|0;i=f[d>>2]|0;if((i|0)!=(h|0))f[d>>2]=i+(~((i+-4-h|0)>>>2)<<2);Oq(h)}h=g+64|0;i=f[h>>2]|0;f[h>>2]=0;if(i|0){h=f[i>>2]|0;if(h|0){d=i+4|0;if((f[d>>2]|0)!=(h|0))f[d>>2]=h;Oq(h)}Oq(i)}Oq(g)}e=f[c>>2]|0}while((e|0)!=(b|0))}b=f[a>>2]|0;if(!b)return;Oq(b);return}function li(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+20>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;u=c;return 1}function mi(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=u;u=u+16|0;d=c;e=ln(16)|0;f[d>>2]=e;f[d+8>>2]=-2147483632;f[d+4>>2]=14;g=e;h=14408;i=g+14|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[e+14>>0]=0;e=Hk(a,d,-1)|0;if((b[d+11>>0]|0)<0)Oq(f[d>>2]|0);j=ln(16)|0;f[d>>2]=j;f[d+8>>2]=-2147483632;f[d+4>>2]=14;g=j;h=14423;i=g+14|0;do{b[g>>0]=b[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(i|0));b[j+14>>0]=0;j=Hk(a,d,-1)|0;if((b[d+11>>0]|0)>=0){k=(e|0)<(j|0);l=k?j:e;m=(l|0)==-1;n=m?5:l;u=c;return n|0}Oq(f[d>>2]|0);k=(e|0)<(j|0);l=k?j:e;m=(l|0)==-1;n=m?5:l;u=c;return n|0}function ni(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c+8|0;e=c+4|0;g=c;f[g>>2]=f[a+12>>2];h=b+16|0;i=h;j=f[i>>2]|0;k=f[i+4>>2]|0;if((k|0)>0|(k|0)==0&j>>>0>0){l=k;m=j}else{f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;j=h;l=f[j+4>>2]|0;m=f[j>>2]|0}f[g>>2]=f[a+16>>2];if((l|0)>0|(l|0)==0&m>>>0>0){u=c;return 1}f[e>>2]=f[b+4>>2];f[d>>2]=f[e>>2];Me(b,d,g,g+4|0)|0;u=c;return 1}function oi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=ln(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;c=a+8|0;b[c>>0]=0;h=g+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;h=g+20|0;i=e+12|0;f[h>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;g=e+16|0;e=f[g>>2]|0;j=f[i>>2]|0;k=e-j|0;if(!k){l=j;m=e;n=0}else{Fi(h,k);l=f[i>>2]|0;m=f[g>>2]|0;n=f[h>>2]|0}kh(n|0,l|0,m-l|0)|0;b[c>>0]=1;c=f[a>>2]|0;f[c+4>>2]=d;f[c>>2]=0;return}function pi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;b=a+32|0;ld(a,b);c=a+80|0;d=f[c>>2]|0;if((d|0?(e=a+84|0,(f[e>>2]|0)>0):0)?(ld(d,b),(f[e>>2]|0)>1):0){d=1;do{ld((f[c>>2]|0)+(d<<5)|0,b);d=d+1|0}while((d|0)<(f[e>>2]|0))}e=a+136|0;d=a+140|0;a=f[e>>2]|0;if((f[d>>2]|0)==(a|0))return;c=0;g=a;while(1){a=g;ci((f[a+(c*12|0)+4>>2]|0)-(f[a+(c*12|0)>>2]|0)>>2,b)|0;a=f[e>>2]|0;h=f[a+(c*12|0)>>2]|0;i=(f[a+(c*12|0)+4>>2]|0)-h>>2;if(!i)j=a;else{Mc(h,i,1,0,b)|0;j=f[e>>2]|0}c=c+1|0;if(c>>>0>=(((f[d>>2]|0)-j|0)/12|0)>>>0)break;else g=j}return}function qi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=d+16|0;g=f[e>>2]|0;if(!g)if(!(vl(d)|0)){h=f[e>>2]|0;i=5}else j=0;else{h=g;i=5}a:do if((i|0)==5){g=d+20|0;e=f[g>>2]|0;k=e;if((h-e|0)>>>0>>0){j=Sa[f[d+36>>2]&31](d,a,c)|0;break}b:do if((b[d+75>>0]|0)>-1){e=c;while(1){if(!e){l=0;m=a;n=c;o=k;break b}p=e+-1|0;if((b[a+p>>0]|0)==10)break;else e=p}p=Sa[f[d+36>>2]&31](d,a,e)|0;if(p>>>0>>0){j=p;break a}l=e;m=a+e|0;n=c-e|0;o=f[g>>2]|0}else{l=0;m=a;n=c;o=k}while(0);kh(o|0,m|0,n|0)|0;f[g>>2]=(f[g>>2]|0)+n;j=l+n|0}while(0);return j|0}function ri(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+12|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d+28>>2]|0;if(c|0){e=c;do{c=e;e=f[e>>2]|0;ri(c+8|0);Oq(c)}while((e|0)!=0)}e=d+20|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0)Oq(c);c=f[d+8>>2]|0;if(c|0){e=c;do{c=e;e=f[e>>2]|0;g=c+8|0;h=f[c+20>>2]|0;if(h|0){i=c+24|0;if((f[i>>2]|0)!=(h|0))f[i>>2]=h;Oq(h)}if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);Oq(c)}while((e|0)!=0)}e=f[d>>2]|0;f[d>>2]=0;if(e|0)Oq(e);Oq(d)}if((b[a+11>>0]|0)>=0)return;Oq(f[a>>2]|0);return}function si(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0;g=u;u=u+32|0;h=g+12|0;i=g;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;if((e|0)>0){j=i+11|0;k=i+4|0;l=0;do{if((l|0)>0)An(h,14477)|0;il(i,$(n[d+(l<<2)>>2]));m=b[j>>0]|0;o=m<<24>>24<0;lj(h,o?f[i>>2]|0:i,o?f[k>>2]|0:m&255)|0;if((b[j>>0]|0)<0)Oq(f[i>>2]|0);l=l+1|0}while((l|0)<(e|0))}am(Ai(a,c)|0,h)|0;if((b[h+11>>0]|0)>=0){u=g;return}Oq(f[h>>2]|0);u=g;return}function ti(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=u;u=u+16|0;d=c;if((Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)<=0){e=1;u=c;return e|0}g=a+4|0;h=a+20|0;i=a+24|0;j=a+16|0;a=0;while(1){k=f[(f[g>>2]|0)+4>>2]|0;l=dm(k,Ra[f[(f[b>>2]|0)+24>>2]&127](b,a)|0)|0;f[d>>2]=l;if((l|0)==-1)break;k=f[h>>2]|0;if((k|0)==(f[i>>2]|0))Ri(j,d);else{f[k>>2]=l;f[h>>2]=k+4}gl(f[g>>2]|0,f[d>>2]|0)|0;a=a+1|0;if((a|0)>=(Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)){e=1;m=9;break}}if((m|0)==9){u=c;return e|0}e=0;u=c;return e|0}function ui(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;f[a>>2]=1292;hi(a+60|0);b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=a+36|0;d=f[b>>2]|0;if(d|0){c=a+40|0;e=f[c>>2]|0;if((e|0)==(d|0))g=d;else{h=e;do{e=h+-24|0;f[c>>2]=e;Va[f[f[e>>2]>>2]&127](e);h=f[c>>2]|0}while((h|0)!=(d|0));g=f[b>>2]|0}Oq(g)}f[a>>2]=1232;g=f[a+16>>2]|0;if(g|0){b=a+20|0;d=f[b>>2]|0;if((d|0)!=(g|0))f[b>>2]=d+(~((d+-4-g|0)>>>2)<<2);Oq(g)}g=f[a+4>>2]|0;if(!g)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(g|0))f[d>>2]=a+(~((a+-4-g|0)>>>2)<<2);Oq(g);return}function vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=u;u=u+32|0;d=c+16|0;e=c+8|0;g=c;h=a+8|0;if(f[h>>2]<<5>>>0>=b>>>0){u=c;return}f[d>>2]=0;i=d+4|0;f[i>>2]=0;j=d+8|0;f[j>>2]=0;if((b|0)<0)aq(d);k=((b+-1|0)>>>5)+1|0;b=ln(k<<2)|0;f[d>>2]=b;f[i>>2]=0;f[j>>2]=k;k=f[a>>2]|0;f[e>>2]=k;f[e+4>>2]=0;b=a+4|0;l=f[b>>2]|0;f[g>>2]=k+(l>>>5<<2);f[g+4>>2]=l&31;zg(d,e,g);g=f[a>>2]|0;f[a>>2]=f[d>>2];f[d>>2]=g;d=f[b>>2]|0;f[b>>2]=f[i>>2];f[i>>2]=d;d=f[h>>2]|0;f[h>>2]=f[j>>2];f[j>>2]=d;if(g|0)Oq(g);u=c;return}function wi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;b=a+136|0;c=f[b>>2]|0;if(c|0){d=a+140|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e;while(1){e=h+-12|0;f[d>>2]=e;i=f[e>>2]|0;if(!i)j=e;else{e=h+-8|0;k=f[e>>2]|0;if((k|0)!=(i|0))f[e>>2]=k+(~((k+-4-i|0)>>>2)<<2);Oq(i);j=f[d>>2]|0}if((j|0)==(c|0))break;else h=j}g=f[b>>2]|0}Oq(g)}g=f[a+104>>2]|0;if(g|0){b=a+108|0;j=f[b>>2]|0;if((j|0)!=(g|0))f[b>>2]=j+(~((j+-4-g|0)>>>2)<<2);Oq(g)}g=f[a+92>>2]|0;if(!g){uj(a);return}j=a+96|0;b=f[j>>2]|0;if((b|0)!=(g|0))f[j>>2]=b+(~((b+-4-g|0)>>>2)<<2);Oq(g);uj(a);return}function xi(a){a=a|0;var c=0,d=0,e=0,g=0;f[a>>2]=3680;c=a+72|0;d=a+136|0;e=a+4|0;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));e=c;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));n[d>>2]=$(1.0);d=a+140|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[a+164>>2]=-1;d=a+168|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[d+24>>2]=0;wn(a+200|0);Gn(a+232|0);d=a+316|0;e=a+264|0;g=e+52|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[d>>2]=-1;f[a+320>>2]=-1;f[a+324>>2]=0;f[a+328>>2]=2;f[a+332>>2]=7;f[a+336>>2]=0;f[a+340>>2]=0;f[a+344>>2]=0;b[a+352>>0]=0;return}function yi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d|0;g=(e|0)/12|0;h=g+1|0;if(h>>>0>357913941)aq(a);i=a+8|0;j=((f[i>>2]|0)-d|0)/12|0;k=j<<1;l=j>>>0<178956970?(k>>>0>>0?h:k):357913941;do if(l)if(l>>>0>357913941){k=ra(8)|0;Oo(k,16035);f[k>>2]=7256;va(k|0,1112,110)}else{m=ln(l*12|0)|0;break}else m=0;while(0);k=m+(g*12|0)|0;f[k>>2]=f[b>>2];f[k+4>>2]=f[b+4>>2];f[k+8>>2]=f[b+8>>2];b=k+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)kh(b|0,d|0,e|0)|0;f[a>>2]=b;f[c>>2]=k+12;f[i>>2]=m+(l*12|0);if(!d)return;Oq(d);return}function zi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=a+16|0;h=g;i=f[h+4>>2]|0;if((d|0)<0|(d|0)==0&c>>>0<1|((i|0)>0|(i|0)==0&(f[h>>2]|0)>>>0>0)){j=0;return j|0}b[a+24>>0]=e&1;h=Vn(c|0,d|0,7,0)|0;d=Ik(h|0,I|0,8,0)|0;h=I;c=g;f[c>>2]=d;f[c+4>>2]=h;c=a+4|0;g=f[c>>2]|0;i=f[a>>2]|0;k=g-i|0;l=Vn(k|0,0,8,0)|0;m=e?l:k;l=Vn(m|0,(e?I:0)|0,d|0,h|0)|0;h=i;i=g;if(k>>>0>=l>>>0)if(k>>>0>l>>>0?(g=h+l|0,(g|0)!=(i|0)):0){f[c>>2]=g;n=h}else n=h;else{Fi(a,l-k|0);n=f[a>>2]|0}k=ln(8)|0;f[k>>2]=n+m;f[k+4>>2]=0;m=a+12|0;a=f[m>>2]|0;f[m>>2]=k;if(!a){j=1;return j|0}Oq(a);j=1;return j|0}function Ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=u;u=u+16|0;d=c;e=yg(a,d,b)|0;g=f[e>>2]|0;if(g|0){h=g;i=h+28|0;u=c;return i|0}g=ln(40)|0;pj(g+16|0,b);b=g+28|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;b=f[d>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=b;f[e>>2]=g;b=f[f[a>>2]>>2]|0;if(!b)j=g;else{f[a>>2]=b;j=f[e>>2]|0}Oe(f[a+4>>2]|0,j);j=a+8|0;f[j>>2]=(f[j>>2]|0)+1;h=g;i=h+28|0;u=c;return i|0}function Bi(a,c,d,e,g,h,i,j){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=u;u=u+16|0;l=k;if((-18-c|0)>>>0>>0)aq(a);if((b[a+11>>0]|0)<0)m=f[a>>2]|0;else m=a;if(c>>>0<2147483623){n=d+c|0;d=c<<1;o=n>>>0>>0?d:n;p=o>>>0<11?11:o+16&-16}else p=-17;o=ln(p)|0;if(g|0)Fo(o,m,g)|0;if(i|0)Fo(o+g|0,j,i)|0;j=e-h|0;e=j-g|0;if(e|0)Fo(o+g+i|0,m+g+h|0,e)|0;if((c|0)!=10)Oq(m);f[a>>2]=o;f[a+8>>2]=p|-2147483648;p=j+i|0;f[a+4>>2]=p;b[l>>0]=0;up(o+p|0,l);u=k;return}function Ci(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+8|0;d=f[c>>2]|0;e=a+4|0;g=f[e>>2]|0;if(d-g>>2>>>0>=b>>>0){sj(g|0,0,b<<2|0)|0;f[e>>2]=g+(b<<2);return}h=f[a>>2]|0;i=g-h|0;g=i>>2;j=g+b|0;if(j>>>0>1073741823)aq(a);k=d-h|0;d=k>>1;l=k>>2>>>0<536870911?(d>>>0>>0?j:d):1073741823;do if(l)if(l>>>0>1073741823){d=ra(8)|0;Oo(d,16035);f[d>>2]=7256;va(d|0,1112,110)}else{d=ln(l<<2)|0;m=d;n=d;break}else{m=0;n=0}while(0);d=m+(g<<2)|0;sj(d|0,0,b<<2|0)|0;if((i|0)>0)kh(n|0,h|0,i|0)|0;f[a>>2]=m;f[e>>2]=d+(b<<2);f[c>>2]=m+(l<<2);if(!h)return;Oq(h);return}function Di(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=ln(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;c=a+8|0;b[c>>0]=0;pj(g+8|0,e);h=g+20|0;i=e+12|0;f[h>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;g=e+16|0;e=f[g>>2]|0;j=f[i>>2]|0;k=e-j|0;if(!k){l=j;m=e;n=0}else{Fi(h,k);l=f[i>>2]|0;m=f[g>>2]|0;n=f[h>>2]|0}kh(n|0,l|0,m-l|0)|0;b[c>>0]=1;c=f[a>>2]|0;f[c+4>>2]=d;f[c>>2]=0;return}function Ei(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=0,h=0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0;e=u;u=u+16|0;g=e;h=c+11|0;i=b[h>>0]|0;if(i<<24>>24<0)j=f[c+4>>2]|0;else j=i&255;k=+d;l=j;j=i;while(1){if(j<<24>>24<0)m=f[c>>2]|0;else m=c;p[g>>3]=k;n=Bn(m,l+1|0,18562,g)|0;if((n|0)>-1)if(n>>>0>l>>>0)o=n;else break;else o=l<<1|1;Hj(c,o,0);l=o;j=b[h>>0]|0}Hj(c,n,0);f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];a=0;while(1){if((a|0)==3)break;f[c+(a<<2)>>2]=0;a=a+1|0}u=e;return}function Fi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a+8|0;e=f[d>>2]|0;g=a+4|0;h=f[g>>2]|0;if((e-h|0)>>>0>=c>>>0){i=c;j=h;do{b[j>>0]=0;j=(f[g>>2]|0)+1|0;f[g>>2]=j;i=i+-1|0}while((i|0)!=0);return}i=f[a>>2]|0;j=h-i|0;h=j+c|0;if((h|0)<0)aq(a);k=e-i|0;i=k<<1;e=k>>>0<1073741823?(i>>>0>>0?h:i):2147483647;if(!e)l=0;else l=ln(e)|0;i=l+j|0;j=l+e|0;e=c;c=i;l=i;do{b[l>>0]=0;l=c+1|0;c=l;e=e+-1|0}while((e|0)!=0);e=f[a>>2]|0;l=(f[g>>2]|0)-e|0;h=i+(0-l)|0;if((l|0)>0)kh(h|0,e|0,l|0)|0;f[a>>2]=h;f[g>>2]=c;f[d>>2]=j;if(!e)return;Oq(e);return}function Gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=(d-e|0)/136|0;h=d;if(g>>>0>>0){Ge(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+(b*136|0)|0;if((g|0)==(h|0))return;else i=h;do{f[c>>2]=i+-136;h=f[i+-20>>2]|0;if(h|0){b=i+-16|0;e=f[b>>2]|0;if((e|0)!=(h|0))f[b>>2]=e+(~((e+-4-h|0)>>>2)<<2);Oq(h)}h=f[i+-32>>2]|0;if(h|0){e=i+-28|0;b=f[e>>2]|0;if((b|0)!=(h|0))f[e>>2]=b+(~((b+-4-h|0)>>>2)<<2);Oq(h)}Mi(i+-132|0);i=f[c>>2]|0}while((i|0)!=(g|0));return}function Hi(a,b){a=a|0;b=b|0;var c=0,d=Oa,e=0,g=0;if((b|0)!=1)if(!(b+-1&b))c=b;else c=cb(b)|0;else c=2;b=f[a+4>>2]|0;if(c>>>0>b>>>0){Sd(a,c);return}if(c>>>0>=b>>>0)return;d=$((f[a+12>>2]|0)>>>0);e=~~$(W($(d/$(n[a+16>>2]))))>>>0;if(b>>>0>2&(b+-1&b|0)==0)g=1<<32-(_(e+-1|0)|0);else g=cb(e)|0;e=c>>>0>>0?g:c;if(e>>>0>=b>>>0)return;Sd(a,e);return}function Ii(a){a=a|0;var b=0,c=0,d=0;b=f[a+76>>2]|0;if(b|0){c=a+80|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+64>>2]|0;if(b|0){d=a+68|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;Oq(b)}b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+24>>2]|0;if(b|0){c=a+28|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function Ji(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=u;u=u+16|0;g=e;h=c+11|0;i=b[h>>0]|0;if(i<<24>>24<0)j=f[c+4>>2]|0;else j=i&255;k=j;j=i;while(1){if(j<<24>>24<0)l=f[c>>2]|0;else l=c;f[g>>2]=d;m=Bn(l,k+1|0,18559,g)|0;if((m|0)>-1)if(m>>>0>k>>>0)n=m;else break;else n=k<<1|1;Hj(c,n,0);k=n;j=b[h>>0]|0}Hj(c,m,0);f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];a=0;while(1){if((a|0)==3)break;f[c+(a<<2)>>2]=0;a=a+1|0}u=e;return}function Ki(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;b=a+8|0;c=f[b>>2]|0;if((c|0)<0){d=0;return d|0}e=a+4|0;a=f[e>>2]|0;g=a+4|0;h=f[g>>2]|0;i=f[a>>2]|0;j=h-i>>2;k=i;i=h;if(c>>>0<=j>>>0)if(c>>>0>>0?(h=k+(c<<2)|0,(h|0)!=(i|0)):0){f[g>>2]=i+(~((i+-4-h|0)>>>2)<<2);l=c}else l=c;else{Ci(a,c-j|0);l=f[b>>2]|0}if((l|0)<=0){d=1;return d|0}b=f[e>>2]|0;e=f[b>>2]|0;j=(f[b+4>>2]|0)-e>>2;c=e;e=0;while(1){if(j>>>0<=e>>>0){m=10;break}f[c+(e<<2)>>2]=e;e=e+1|0;if((e|0)>=(l|0)){d=1;m=12;break}}if((m|0)==10)aq(b);else if((m|0)==12)return d|0;return 0}function Li(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=ln(16)|0;f[g>>2]=h;f[g+8>>2]=-2147483632;f[g+4>>2]=14;i=h;j=14408;k=i+14|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[h+14>>0]=0;Xj(a,g,c);if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);c=ln(16)|0;f[g>>2]=c;f[g+8>>2]=-2147483632;f[g+4>>2]=14;i=c;j=14423;k=i+14|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[c+14>>0]=0;Xj(a,g,d);if((b[g+11>>0]|0)>=0){u=e;return}Oq(f[g>>2]|0);u=e;return}function Mi(a){a=a|0;var b=0,c=0,d=0;b=f[a+84>>2]|0;if(b|0){c=a+88|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+72>>2]|0;if(b|0){d=a+76|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;Oq(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+40>>2]|0;if(b|0){c=a+44|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+28>>2]|0;if(b|0){d=a+32|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+12>>2]|0;if(b|0)Oq(b);b=f[a>>2]|0;if(!b)return;Oq(b);return}function Ni(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=1352;b=a+32|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=c+88|0;d=f[b>>2]|0;f[b>>2]=0;if(d|0){b=f[d+8>>2]|0;if(b|0){e=d+12|0;if((f[e>>2]|0)!=(b|0))f[e>>2]=b;Oq(b)}Oq(d)}d=f[c+68>>2]|0;if(d|0){b=c+72|0;e=f[b>>2]|0;if((e|0)!=(d|0))f[b>>2]=e+(~((e+-4-d|0)>>>2)<<2);Oq(d)}d=c+64|0;e=f[d>>2]|0;f[d>>2]=0;if(e|0){d=f[e>>2]|0;if(d|0){b=e+4|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;Oq(d)}Oq(e)}Oq(c)}c=f[a+16>>2]|0;if(!c)return;e=a+20|0;a=f[e>>2]|0;if((a|0)!=(c|0))f[e>>2]=a+(~((a+-4-c|0)>>>2)<<2);Oq(c);return}function Oi(){var a=0,b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;a=u;u=u+48|0;b=a+32|0;c=a+24|0;d=a+16|0;e=a;g=a+36|0;a=sn()|0;if(a|0?(h=f[a>>2]|0,h|0):0){a=h+48|0;i=f[a>>2]|0;j=f[a+4>>2]|0;if(!((i&-256|0)==1126902528&(j|0)==1129074247)){f[c>>2]=18701;Hn(18651,c)}if((i|0)==1126902529&(j|0)==1129074247)k=f[h+44>>2]|0;else k=h+80|0;f[g>>2]=k;k=f[h>>2]|0;h=f[k+4>>2]|0;if(Sa[f[(f[258]|0)+16>>2]&31](1032,k,g)|0){k=f[g>>2]|0;g=Qa[f[(f[k>>2]|0)+8>>2]&127](k)|0;f[e>>2]=18701;f[e+4>>2]=h;f[e+8>>2]=g;Hn(18565,e)}else{f[d>>2]=18701;f[d+4>>2]=h;Hn(18610,d)}}Hn(18689,b)}function Pi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;do if(a){if(c>>>0<128){b[a>>0]=c;e=1;break}d=(Jq()|0)+188|0;if(!(f[f[d>>2]>>2]|0))if((c&-128|0)==57216){b[a>>0]=c;e=1;break}else{d=Vq()|0;f[d>>2]=84;e=-1;break}if(c>>>0<2048){b[a>>0]=c>>>6|192;b[a+1>>0]=c&63|128;e=2;break}if(c>>>0<55296|(c&-8192|0)==57344){b[a>>0]=c>>>12|224;b[a+1>>0]=c>>>6&63|128;b[a+2>>0]=c&63|128;e=3;break}if((c+-65536|0)>>>0<1048576){b[a>>0]=c>>>18|240;b[a+1>>0]=c>>>12&63|128;b[a+2>>0]=c>>>6&63|128;b[a+3>>0]=c&63|128;e=4;break}else{d=Vq()|0;f[d>>2]=84;e=-1;break}}else e=1;while(0);return e|0}function Qi(a){a=a|0;var b=0,c=0,d=0;b=f[a+92>>2]|0;if(b|0){c=a+96|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+64>>2]|0;if(b|0){c=a+68|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}f[a+4>>2]=3636;b=f[a+24>>2]|0;if(b|0)Oq(b);b=f[a+12>>2]|0;if(!b)return;Oq(b);return}function Ri(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=a+4|0;d=f[a>>2]|0;e=(f[c>>2]|0)-d|0;g=e>>2;h=g+1|0;if(h>>>0>1073741823)aq(a);i=a+8|0;j=(f[i>>2]|0)-d|0;k=j>>1;l=j>>2>>>0<536870911?(k>>>0>>0?h:k):1073741823;do if(l)if(l>>>0>1073741823){k=ra(8)|0;Oo(k,16035);f[k>>2]=7256;va(k|0,1112,110)}else{k=ln(l<<2)|0;m=k;n=k;break}else{m=0;n=0}while(0);k=m+(g<<2)|0;f[k>>2]=f[b>>2];if((e|0)>0)kh(n|0,d|0,e|0)|0;f[a>>2]=m;f[c>>2]=k+4;f[i>>2]=m+(l<<2);if(!d)return;Oq(d);return}function Si(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=a+104|0;d=f[c>>2]|0;if((d|0)!=0?(f[a+108>>2]|0)>=(d|0):0)e=4;else{d=Wm(a)|0;if((d|0)>=0){g=f[c>>2]|0;c=a+8|0;if(g){i=f[c>>2]|0;j=f[a+4>>2]|0;k=g-(f[a+108>>2]|0)|0;g=i;if((i-j|0)<(k|0)){l=g;m=g}else{l=j+(k+-1)|0;m=g}}else{g=f[c>>2]|0;l=g;m=g}f[a+100>>2]=l;l=a+4|0;if(!m)n=f[l>>2]|0;else{g=f[l>>2]|0;l=a+108|0;f[l>>2]=m+1-g+(f[l>>2]|0);n=g}g=n+-1|0;if((d|0)==(h[g>>0]|0|0))o=d;else{b[g>>0]=d;o=d}}else e=4}if((e|0)==4){f[a+100>>2]=0;o=-1}return o|0}function Ti(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;f[a>>2]=1544;f[a+4>>2]=b;b=a+8|0;f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];f[b+12>>2]=f[c+12>>2];f[b+16>>2]=f[c+16>>2];f[b+20>>2]=f[c+20>>2];fk(a+32|0,c+24|0);f[a>>2]=2384;c=a+44|0;f[c>>2]=f[d>>2];f[c+4>>2]=f[d+4>>2];f[c+8>>2]=f[d+8>>2];f[c+12>>2]=f[d+12>>2];f[a>>2]=2440;d=a+112|0;c=a+60|0;b=c+52|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(b|0));Zm(d);f[a+152>>2]=0;f[a+156>>2]=0;f[a+160>>2]=0;return}function Ui(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;f[a>>2]=1544;f[a+4>>2]=b;b=a+8|0;f[b>>2]=f[c>>2];f[b+4>>2]=f[c+4>>2];f[b+8>>2]=f[c+8>>2];f[b+12>>2]=f[c+12>>2];f[b+16>>2]=f[c+16>>2];f[b+20>>2]=f[c+20>>2];fk(a+32|0,c+24|0);f[a>>2]=1964;c=a+44|0;f[c>>2]=f[d>>2];f[c+4>>2]=f[d+4>>2];f[c+8>>2]=f[d+8>>2];f[c+12>>2]=f[d+12>>2];f[a>>2]=2020;d=a+112|0;c=a+60|0;b=c+52|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(b|0));Zm(d);f[a+152>>2]=0;f[a+156>>2]=0;f[a+160>>2]=0;return}function Vi(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2440;b=f[a+152>>2]|0;if(b|0){c=a+156|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+112>>2]|0;if(b|0){d=a+116|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+96>>2]|0;if(b|0)Oq(b);b=f[a+84>>2]|0;if(b|0)Oq(b);b=f[a+72>>2]|0;if(b|0)Oq(b);b=f[a+60>>2]|0;if(b|0)Oq(b);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function Wi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;d=u;u=u+16|0;e=d;g=f[(f[c+4>>2]|0)+4>>2]|0;if(!g){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=d;return}if(!(Dj(d+12|0,f[c+44>>2]|0,g)|0)){g=ln(32)|0;f[e>>2]=g;f[e+8>>2]=-2147483616;f[e+4>>2]=26;c=g;h=15859;i=c+26|0;do{b[c>>0]=b[h>>0]|0;c=c+1|0;h=h+1|0}while((c|0)<(i|0));b[g+26>>0]=0;f[a>>2]=-1;pj(a+4|0,e);if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0)}else{f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}u=d;return}function Xi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=b+48|0;if((mi(f[c>>2]|0)|0)>9){d=0;return d|0}if((Qa[f[(f[b>>2]|0)+8>>2]&127](b)|0)!=1){d=0;return d|0}e=b+4|0;b=(f[(f[(f[e>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)+56|0;a=f[b>>2]|0;do if((a|0)==3)if((mi(f[c>>2]|0)|0)<4){d=5;return d|0}else{g=f[b>>2]|0;break}else g=a;while(0);a=mi(f[c>>2]|0)|0;if((g|0)==1){d=(a|0)<4?6:0;return d|0}if((a|0)>7){d=0;return d|0}if((mi(f[c>>2]|0)|0)>1){d=1;return d|0}else return ((f[(f[e>>2]|0)+80>>2]|0)>>>0<40?1:4)|0;return 0}function Yi(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2020;b=f[a+152>>2]|0;if(b|0){c=a+156|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+112>>2]|0;if(b|0){d=a+116|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+96>>2]|0;if(b|0)Oq(b);b=f[a+84>>2]|0;if(b|0)Oq(b);b=f[a+72>>2]|0;if(b|0)Oq(b);b=f[a+60>>2]|0;if(b|0)Oq(b);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function Zi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=u;u=u+128|0;h=g+124|0;i=g;j=i;k=6596;l=j+124|0;do{f[j>>2]=f[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(l|0));if((c+-1|0)>>>0>2147483646)if(!c){m=h;n=1;o=4}else{h=Vq()|0;f[h>>2]=75;p=-1}else{m=a;n=c;o=4}if((o|0)==4){o=-2-m|0;c=n>>>0>o>>>0?o:n;f[i+48>>2]=c;n=i+20|0;f[n>>2]=m;f[i+44>>2]=m;o=m+c|0;m=i+16|0;f[m>>2]=o;f[i+28>>2]=o;o=Ah(i,d,e)|0;if(!c)p=o;else{c=f[n>>2]|0;b[c+(((c|0)==(f[m>>2]|0))<<31>>31)>>0]=0;p=o}}u=g;return p|0}function _i(a){a=a|0;var c=0,d=0,e=0,g=0;f[a>>2]=3480;c=a+72|0;d=a+136|0;e=a+4|0;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));e=c;g=e+64|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));n[d>>2]=$(1.0);d=a+140|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[a+164>>2]=-1;d=a+168|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[d+24>>2]=0;wn(a+200|0);Gn(a+232|0);d=a+264|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;b[d+24>>0]=0;return}function $i(a,c,d,e){a=a|0;c=c|0;d=d|0;e=+e;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=u;u=u+16|0;g=a;if(!c){h=0;u=a;return h|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;i=Gj(d)|0;if(i>>>0>4294967279)aq(g);if(i>>>0<11){b[g+11>>0]=i;if(!i)j=g;else{k=g;l=7}}else{m=i+16&-16;n=ln(m)|0;f[g>>2]=n;f[g+8>>2]=m|-2147483648;f[g+4>>2]=i;k=n;l=7}if((l|0)==7){kh(k|0,d|0,i|0)|0;j=k}b[j+i>>0]=0;Zl(c,g,e);if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);h=1;u=a;return h|0}function aj(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=u;u=u+16|0;g=a;if(!c){h=0;u=a;return h|0}f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;i=Gj(d)|0;if(i>>>0>4294967279)aq(g);if(i>>>0<11){b[g+11>>0]=i;if(!i)j=g;else{k=g;l=7}}else{m=i+16&-16;n=ln(m)|0;f[g>>2]=n;f[g+8>>2]=m|-2147483648;f[g+4>>2]=i;k=n;l=7}if((l|0)==7){kh(k|0,d|0,i|0)|0;j=k}b[j+i>>0]=0;$l(c,g,e);if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);h=1;u=a;return h|0}function bj(a){a=a|0;var c=0,d=0,e=0,g=0,h=0;c=f[a+28>>2]|0;if(c|0){d=c;do{c=d;d=f[d>>2]|0;e=c+8|0;g=c+20|0;h=f[g>>2]|0;f[g>>2]=0;if(h|0){bj(h);Oq(h)}if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);Oq(c)}while((d|0)!=0)}d=a+20|0;c=f[d>>2]|0;f[d>>2]=0;if(c|0)Oq(c);c=f[a+8>>2]|0;if(c|0){d=c;do{c=d;d=f[d>>2]|0;e=c+8|0;h=f[c+20>>2]|0;if(h|0){g=c+24|0;if((f[g>>2]|0)!=(h|0))f[g>>2]=h;Oq(h)}if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);Oq(c)}while((d|0)!=0)}d=f[a>>2]|0;f[a>>2]=0;if(!d)return;Oq(d);return}function cj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;e=u;u=u+16|0;g=e;h=f[c+36>>2]|0;if(!h){i=ln(32)|0;f[g>>2]=i;f[g+8>>2]=-2147483616;f[g+4>>2]=23;j=i;k=15706;l=j+23|0;do{b[j>>0]=b[k>>0]|0;j=j+1|0;k=k+1|0}while((j|0)<(l|0));b[i+23>>0]=0;f[a>>2]=-1;pj(a+4|0,g);if((b[g+11>>0]|0)<0)Oq(f[g>>2]|0);u=e;return}g=f[c+40>>2]|0;if(!g){Sc(a,c,h,d);u=e;return}else{bi(a,c,g,d);u=e;return}}function dj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;tk(a);b=a+84|0;c=f[b>>2]|0;if((c|0)<=0)return;d=c<<5;e=Lq(c>>>0>134217727|d>>>0>4294967291?-1:d+4|0)|0;f[e>>2]=c;d=e+4|0;e=d+(c<<5)|0;c=d;do{wn(c);c=c+32|0}while((c|0)!=(e|0));e=a+80|0;a=f[e>>2]|0;f[e>>2]=d;if(a|0){d=a+-4|0;c=f[d>>2]|0;if(c|0){g=a+(c<<5)|0;do{g=g+-32|0;Fj(g)}while((g|0)!=(a|0))}Mq(d)}if((f[b>>2]|0)>0)h=0;else return;do{tk((f[e>>2]|0)+(h<<5)|0);h=h+1|0}while((h|0)<(f[b>>2]|0));return}function ej(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(!b){d=0;return d|0}if(f[b+4>>2]|0){d=0;return d|0}a=ln(52)|0;Ub(a,c);f[a+40>>2]=0;f[a+44>>2]=0;f[a+48>>2]=0;c=b+4|0;b=f[c>>2]|0;f[c>>2]=a;if(!b){d=1;return d|0}a=b+40|0;c=f[a>>2]|0;if(c|0){e=b+44|0;g=f[e>>2]|0;if((g|0)==(c|0))h=c;else{i=g;do{g=i+-4|0;f[e>>2]=g;j=f[g>>2]|0;f[g>>2]=0;if(j|0){bj(j);Oq(j)}i=f[e>>2]|0}while((i|0)!=(c|0));h=f[a>>2]|0}Oq(h)}bj(b);Oq(b);d=1;return d|0}function fj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=f[a>>2]|0;if(b){b=c+8|0;d=b;e=Vn(f[d>>2]|0,f[d+4>>2]|0,1,0)|0;d=b;f[d>>2]=e;f[d+4>>2]=I;d=a+28|0;e=f[d>>2]|0;b=a+24|0;f[b>>2]=f[b>>2]|1<>2]|0,f[e+4>>2]|0,1,0)|0;e=c;f[e>>2]=d;f[e+4>>2]=I;e=a+28|0;g=e;h=f[e>>2]|0}e=h+1|0;f[g>>2]=e;if((e|0)!=32)return;e=a+24|0;h=a+16|0;d=f[h>>2]|0;if((d|0)==(f[a+20>>2]|0))Ri(a+12|0,e);else{f[d>>2]=f[e>>2];f[h>>2]=d+4}f[g>>2]=0;f[e>>2]=0;return}function gj(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+32|0;a=f[b>>2]|0;f[b>>2]=0;b=f[c>>2]|0;f[c>>2]=a;if(!b)return;a=b+88|0;c=f[a>>2]|0;f[a>>2]=0;if(c|0){a=f[c+8>>2]|0;if(a|0){d=c+12|0;if((f[d>>2]|0)!=(a|0))f[d>>2]=a;Oq(a)}Oq(c)}c=f[b+68>>2]|0;if(c|0){a=b+72|0;d=f[a>>2]|0;if((d|0)!=(c|0))f[a>>2]=d+(~((d+-4-c|0)>>>2)<<2);Oq(c)}c=b+64|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d>>2]|0;if(c|0){a=d+4|0;if((f[a>>2]|0)!=(c|0))f[a>>2]=c;Oq(c)}Oq(d)}Oq(b);return}function hj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;if(c|0){h=a+11|0;i=b[h>>0]|0;if(i<<24>>24<0){j=f[a+4>>2]|0;k=(f[a+8>>2]&2147483647)+-1|0}else{j=i&255;k=10}if((k-j|0)>>>0>>0){xj(a,k,c-k+j|0,j,j,0,0);l=b[h>>0]|0}else l=i;if(l<<24>>24<0)m=f[a>>2]|0;else m=a;Qn(m+j|0,c,d)|0;d=j+c|0;if((b[h>>0]|0)<0)f[a+4>>2]=d;else b[h>>0]=d;b[g>>0]=0;up(m+d|0,g)}u=e;return a|0}function ij(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+48|0;e=d+4|0;g=d;h=f[b+12>>2]|0;i=f[b+4>>2]|0;b=e;j=b+36|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(j|0));zh(g,c,h,i,e);i=f[e+24>>2]|0;if(!i){k=f[g>>2]|0;f[a>>2]=k;u=d;return}h=e+28|0;e=f[h>>2]|0;if((e|0)!=(i|0))f[h>>2]=e+(~((e+-4-i|0)>>>2)<<2);Oq(i);k=f[g>>2]|0;f[a>>2]=k;u=d;return}function jj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j)k=(f[a+8>>2]&2147483647)+-1|0;else k=10;do if(k>>>0>=d>>>0){if(j)l=f[a>>2]|0;else l=a;Eo(l,c,d)|0;b[g>>0]=0;up(l+d|0,g);if((b[h>>0]|0)<0){f[a+4>>2]=d;break}else{b[h>>0]=d;break}}else{if(j)m=f[a+4>>2]|0;else m=i&255;Bi(a,k,d-k|0,m,0,m,d,c)}while(0);u=e;return a|0}function kj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d;do{f[c>>2]=g+-136;d=f[g+-20>>2]|0;if(d|0){h=g+-16|0;i=f[h>>2]|0;if((i|0)!=(d|0))f[h>>2]=i+(~((i+-4-d|0)>>>2)<<2);Oq(d)}d=f[g+-32>>2]|0;if(d|0){i=g+-28|0;h=f[i>>2]|0;if((h|0)!=(d|0))f[i>>2]=h+(~((h+-4-d|0)>>>2)<<2);Oq(d)}Mi(g+-132|0);g=f[c>>2]|0}while((g|0)!=(b|0));e=f[a>>2]|0}Oq(e);return}function lj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j){k=f[a+4>>2]|0;l=(f[a+8>>2]&2147483647)+-1|0}else{k=i&255;l=10}if((l-k|0)>>>0>=d>>>0){if(d|0){if(j)m=f[a>>2]|0;else m=a;Fo(m+k|0,c,d)|0;j=k+d|0;if((b[h>>0]|0)<0)f[a+4>>2]=j;else b[h>>0]=j;b[g>>0]=0;up(m+j|0,g)}}else Bi(a,l,d-l+k|0,k,k,0,d,c);u=e;return a|0}function mj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;f[a>>2]=3932;b=f[a+32>>2]|0;if(b|0){c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=a+8|0;c=f[b>>2]|0;if(!c)return;d=a+12|0;a=f[d>>2]|0;if((a|0)==(c|0))e=c;else{g=a;do{a=g+-4|0;f[d>>2]=a;h=f[a>>2]|0;f[a>>2]=0;if(h|0)Va[f[(f[h>>2]|0)+4>>2]&127](h);g=f[d>>2]|0}while((g|0)!=(c|0));e=f[b>>2]|0}Oq(e);return}function nj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+4|0;if((Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)<=0){d=1;return d|0}a=0;while(1){e=f[(f[c>>2]|0)+4>>2]|0;g=dm(e,Ra[f[(f[b>>2]|0)+24>>2]&127](b,a)|0)|0;if((g|0)==-1){d=0;h=6;break}e=f[(f[b>>2]|0)+28>>2]|0;i=fl(f[c>>2]|0,g)|0;a=a+1|0;if(!(Ra[e&127](b,i)|0)){d=0;h=6;break}if((a|0)>=(Qa[f[(f[b>>2]|0)+20>>2]&127](b)|0)){d=1;h=6;break}}if((h|0)==6)return d|0;return 0}function oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(!(ho(a,b,c)|0)){d=0;return d|0}if(!(Qa[f[(f[a>>2]|0)+52>>2]&127](a)|0)){d=0;return d|0}c=a+4|0;e=a+8|0;g=f[c>>2]|0;if((f[e>>2]|0)==(g|0)){d=1;return d|0}h=a+36|0;a=0;i=g;while(1){g=f[(f[h>>2]|0)+(a<<2)>>2]|0;if(!(Sa[f[(f[g>>2]|0)+8>>2]&31](g,b,f[i+(a<<2)>>2]|0)|0)){d=0;j=7;break}a=a+1|0;i=f[c>>2]|0;if(a>>>0>=(f[e>>2]|0)-i>>2>>>0){d=1;j=7;break}}if((j|0)==7)return d|0;return 0}function pj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;if((b[c+11>>0]|0)<0){g=f[c>>2]|0;h=f[c+4>>2]|0;if(h>>>0>4294967279)aq(a);if(h>>>0<11){b[a+11>>0]=h;i=a}else{j=h+16&-16;k=ln(j)|0;f[a>>2]=k;f[a+8>>2]=j|-2147483648;f[a+4>>2]=h;i=k}Fo(i,g,h)|0;b[e>>0]=0;up(i+h|0,e)}else{f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2]}u=d;return}function qj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0;b[c+53>>0]=1;do if((f[c+4>>2]|0)==(e|0)){b[c+52>>0]=1;a=c+16|0;h=f[a>>2]|0;if(!h){f[a>>2]=d;f[c+24>>2]=g;f[c+36>>2]=1;if(!((g|0)==1?(f[c+48>>2]|0)==1:0))break;b[c+54>>0]=1;break}if((h|0)!=(d|0)){h=c+36|0;f[h>>2]=(f[h>>2]|0)+1;b[c+54>>0]=1;break}h=c+24|0;a=f[h>>2]|0;if((a|0)==2){f[h>>2]=g;i=g}else i=a;if((i|0)==1?(f[c+48>>2]|0)==1:0)b[c+54>>0]=1}while(0);return}function rj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=a+36|0;d=a+40|0;e=f[c>>2]|0;if((f[d>>2]|0)!=(e|0)){g=0;h=e;do{vg(h+(g*24|0)|0,b)|0;g=g+1|0;h=f[c>>2]|0}while(g>>>0<(((f[d>>2]|0)-h|0)/24|0)>>>0)}h=a+48|0;d=a+52|0;a=f[h>>2]|0;if((f[d>>2]|0)==(a|0))return 1;else{i=0;j=a}do{a=f[j+(i<<2)>>2]|0;ci(a<<1^a>>31,b)|0;i=i+1|0;j=f[h>>2]|0}while(i>>>0<(f[d>>2]|0)-j>>2>>>0);return 1}function sj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;e=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}g=e&-4|0;h=g-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(h|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(g|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(e|0)){b[a>>0]=c;a=a+1|0}return e-d|0}function tj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;do if(!(fp(a,f[c+8>>2]|0,g)|0)){if(fp(a,f[c>>2]|0,g)|0){if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[c+32>>2]=e;f[h>>2]=d;h=c+40|0;f[h>>2]=(f[h>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[c+32>>2]=1}}else Vm(0,c,d,e);while(0);return}function uj(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+80|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=c+-4|0;d=f[b>>2]|0;if(d|0){e=c+(d<<5)|0;do{e=e+-32|0;Fj(e)}while((e|0)!=(c|0))}Mq(b)}b=f[a+68>>2]|0;if(b|0){c=a+72|0;e=f[c>>2]|0;if((e|0)!=(b|0))f[c>>2]=e+(~((e+-4-b|0)>>>2)<<2);Oq(b)}b=a+44|0;e=f[b>>2]|0;f[b>>2]=0;if(e|0)Oq(e);e=f[a+32>>2]|0;if(!e){Fj(a);return}b=a+36|0;if((f[b>>2]|0)!=(e|0))f[b>>2]=e;Oq(e);Fj(a);return}function vj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3092;b=f[a+136>>2]|0;if(b|0){c=a+140|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+76>>2]|0;if(b|0)Oq(b);b=f[a+64>>2]|0;if(b|0)Oq(b);b=f[a+52>>2]|0;if(b|0)Oq(b);b=f[a+40>>2]|0;if(!b)return;Oq(b);return}function wj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;if((d|0)<0){e=0;return e|0}do if(!b){d=a+4|0;g=f[d>>2]|0;h=f[a>>2]|0;i=g-h|0;if(i>>>0>>0){Fi(a,c-i|0);break}if(i>>>0>c>>>0?(i=h+c|0,(i|0)!=(g|0)):0)f[d>>2]=i}else Cg(a,b,b+c|0);while(0);c=a+24|0;a=c;b=Vn(f[a>>2]|0,f[a+4>>2]|0,1,0)|0;a=c;f[a>>2]=b;f[a+4>>2]=I;e=1;return e|0}function xj(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0;if((-17-c|0)>>>0>>0)aq(a);if((b[a+11>>0]|0)<0)j=f[a>>2]|0;else j=a;if(c>>>0<2147483623){k=d+c|0;d=c<<1;l=k>>>0>>0?d:k;m=l>>>0<11?11:l+16&-16}else m=-17;l=ln(m)|0;if(g|0)Fo(l,j,g)|0;k=e-h-g|0;if(k|0)Fo(l+g+i|0,j+g+h|0,k)|0;if((c|0)!=10)Oq(j);f[a>>2]=l;f[a+8>>2]=m|-2147483648;return}function yj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2728;b=f[a+136>>2]|0;if(b|0){c=a+140|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+76>>2]|0;if(b|0)Oq(b);b=f[a+64>>2]|0;if(b|0)Oq(b);b=f[a+52>>2]|0;if(b|0)Oq(b);b=f[a+40>>2]|0;if(!b)return;Oq(b);return}function zj(a,b){a=a|0;b=b|0;if(!b)return;else{zj(a,f[b>>2]|0);zj(a,f[b+4>>2]|0);Ej(b+20|0,f[b+24>>2]|0);Oq(b);return}}function Aj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;Yf(a,b,c);c=f[a+100>>2]|0;d=f[a+96>>2]|0;a=d;if((c|0)==(d|0))return;e=f[b>>2]|0;b=(c-d|0)/12|0;d=0;do{c=a+(d*12|0)|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];c=a+(d*12|0)+4|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];c=a+(d*12|0)+8|0;f[c>>2]=f[e+(f[c>>2]<<2)>>2];d=d+1|0}while(d>>>0>>0);return}function Bj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=a+64|0;if((f[d>>2]|0)==0?(e=ln(32)|0,yn(e),g=f[d>>2]|0,f[d>>2]=e,g|0):0){e=f[g>>2]|0;if(e|0){h=g+4|0;if((f[h>>2]|0)!=(e|0))f[h>>2]=e;Oq(e)}Oq(g)}g=Vl(f[a+28>>2]|0)|0;e=X(g,b[a+24>>0]|0)|0;g=((e|0)<0)<<31>>31;h=f[d>>2]|0;i=un(e|0,g|0,c|0,0)|0;if(!(wj(h,0,i,I)|0)){j=0;return j|0}Kk(a,f[d>>2]|0,e,g,0,0);f[a+80>>2]=c;j=1;return j|0}function Cj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+64|0;e=d;if(!(fp(a,b,0)|0))if((b|0)!=0?(g=Eh(b,1056,1040,0)|0,(g|0)!=0):0){b=e+4|0;h=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(h|0));f[e>>2]=g;f[e+8>>2]=a;f[e+12>>2]=-1;f[e+48>>2]=1;Ya[f[(f[g>>2]|0)+28>>2]&3](g,e,f[c>>2]|0,1);if((f[e+24>>2]|0)==1){f[c>>2]=f[e+16>>2];i=1}else i=0;j=i}else j=0;else j=1;u=d;return j|0}function Dj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;if(!c){d=0;return d|0}e=c+40|0;g=c+44|0;ci((f[g>>2]|0)-(f[e>>2]|0)>>2,b)|0;h=f[e>>2]|0;e=f[g>>2]|0;if((h|0)!=(e|0)){g=h;do{h=f[g>>2]|0;if(h|0){ci(f[h+40>>2]|0,b)|0;lg(a,b,h)|0}g=g+4|0}while((g|0)!=(e|0))}lg(a,b,c)|0;d=1;return d|0}function Ej(a,c){a=a|0;c=c|0;var d=0;if(!c)return;Ej(a,f[c>>2]|0);Ej(a,f[c+4>>2]|0);a=c+16|0;d=c+28|0;if((b[d+11>>0]|0)<0)Oq(f[d>>2]|0);if((b[a+11>>0]|0)<0)Oq(f[a>>2]|0);Oq(c);return}function Fj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=u;u=u+16|0;c=b;d=c;f[d>>2]=0;f[d+4>>2]=0;qf(a,2,c);c=f[a+12>>2]|0;d=a+16|0;e=f[d>>2]|0;if((e|0)==(c|0))g=c;else{h=e+(~((e+-4-c|0)>>>2)<<2)|0;f[d>>2]=h;g=h}f[a+24>>2]=0;f[a+28>>2]=0;if(c|0){if((g|0)!=(c|0))f[d>>2]=g+(~((g+-4-c|0)>>>2)<<2);Oq(c)}c=f[a>>2]|0;if(!c){u=b;return}g=a+4|0;a=f[g>>2]|0;if((a|0)!=(c|0))f[g>>2]=a+(~((a+-8-c|0)>>>3)<<3);Oq(c);u=b;return}function Gj(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;c=a;a:do if(!(c&3)){d=a;e=4}else{g=a;h=c;while(1){if(!(b[g>>0]|0)){i=h;break a}j=g+1|0;h=j;if(!(h&3)){d=j;e=4;break}else g=j}}while(0);if((e|0)==4){e=d;while(1){k=f[e>>2]|0;if(!((k&-2139062144^-2139062144)&k+-16843009))e=e+4|0;else break}if(!((k&255)<<24>>24))l=e;else{k=e;while(1){e=k+1|0;if(!(b[e>>0]|0)){l=e;break}else k=e}}i=l}return i-c|0}function Hj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=a+11|0;i=b[h>>0]|0;j=i<<24>>24<0;if(j)k=f[a+4>>2]|0;else k=i&255;do if(k>>>0>=c>>>0)if(j){i=(f[a>>2]|0)+c|0;b[g>>0]=0;up(i,g);f[a+4>>2]=c;break}else{b[g>>0]=0;up(a+c|0,g);b[h>>0]=c;break}else hj(a,c-k|0,d)|0;while(0);u=e;return}function Ij(a){a=a|0;var b=0,c=0,d=0;if(!a)return;b=a+88|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){b=f[c+8>>2]|0;if(b|0){d=c+12|0;if((f[d>>2]|0)!=(b|0))f[d>>2]=b;Oq(b)}Oq(c)}c=f[a+68>>2]|0;if(c|0){b=a+72|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);Oq(c)}c=a+64|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){c=f[d>>2]|0;if(c|0){b=d+4|0;if((f[b>>2]|0)!=(c|0))f[b>>2]=c;Oq(c)}Oq(d)}Oq(a);return}function Jj(a,c,d,e,g,h,i,j,k,l){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;f[a>>2]=d;if(d|0){m=d+16|0;n=f[m+4>>2]|0;o=a+8|0;f[o>>2]=f[m>>2];f[o+4>>2]=n;n=d+24|0;d=f[n+4>>2]|0;o=a+16|0;f[o>>2]=f[n>>2];f[o+4>>2]=d}b[a+24>>0]=e;f[a+28>>2]=g;b[a+32>>0]=h&1;h=a+40|0;f[h>>2]=i;f[h+4>>2]=j;j=a+48|0;f[j>>2]=k;f[j+4>>2]=l;f[a+56>>2]=c;return}function Kj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=ln(88)|0;d=c+60|0;e=c;g=e+60|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[d>>2]=c;d=c+64|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;d=cg(c,b)|0;f[a>>2]=d?c:0;a=d?0:c;if(d)return;Ii(a);Oq(a);return}function Lj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;if((f[c+76>>2]|0)>=0?(Tq(c)|0)!=0:0){d=a&255;e=a&255;if((e|0)!=(b[c+75>>0]|0)?(g=c+20|0,h=f[g>>2]|0,h>>>0<(f[c+16>>2]|0)>>>0):0){f[g>>2]=h+1;b[h>>0]=d;i=e}else i=Nj(c,a)|0;Sq(c);j=i}else k=3;do if((k|0)==3){i=a&255;e=a&255;if((e|0)!=(b[c+75>>0]|0)?(d=c+20|0,h=f[d>>2]|0,h>>>0<(f[c+16>>2]|0)>>>0):0){f[d>>2]=h+1;b[h>>0]=i;j=e;break}j=Nj(c,a)|0}while(0);return j|0}function Mj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d+4|0;g=d;h=d+8|0;i=f[a+4>>2]|0;if((i|0)==-1){j=0;u=d;return j|0}b[h>>0]=i;i=c+16|0;a=f[i+4>>2]|0;if(!((a|0)>0|(a|0)==0&(f[i>>2]|0)>>>0>0)){f[g>>2]=f[c+4>>2];f[e>>2]=f[g>>2];Me(c,e,h,h+1|0)|0}j=1;u=d;return j|0}function Nj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=u;u=u+16|0;e=d;g=c&255;b[e>>0]=g;i=a+16|0;j=f[i>>2]|0;if(!j)if(!(vl(a)|0)){k=f[i>>2]|0;l=4}else m=-1;else{k=j;l=4}do if((l|0)==4){j=a+20|0;i=f[j>>2]|0;if(i>>>0>>0?(n=c&255,(n|0)!=(b[a+75>>0]|0)):0){f[j>>2]=i+1;b[i>>0]=g;m=n;break}if((Sa[f[a+36>>2]&31](a,e,1)|0)==1)m=h[e>>0]|0;else m=-1}while(0);u=d;return m|0}function Oj(a,b){a=a|0;b=b|0;if(!b)return;else{Oj(a,f[b>>2]|0);Oj(a,f[b+4>>2]|0);Ej(b+20|0,f[b+24>>2]|0);Oq(b);return}}function Pj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=u;u=u+16|0;g=e;h=e+4|0;f[g>>2]=c;c=ln(32)|0;f[h>>2]=c;f[h+8>>2]=-2147483616;f[h+4>>2]=17;i=c;j=14495;k=i+17|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[c+17>>0]=0;Xj(Hd(a,g)|0,h,d);if((b[h+11>>0]|0)>=0){u=e;return}Oq(f[h>>2]|0);u=e;return}function Qj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=a+48|0;if((f[a+52>>2]|0)>>>0<=e>>>0)Ce(b,e+1|0,0);c=(f[b>>2]|0)+(e>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(e&31);c=f[a+36>>2]|0;if((f[a+40>>2]|0)-c>>2>>>0<=e>>>0){d=1;return d|0}Bp(f[c+(e<<2)>>2]|0);d=1;return d|0}function Rj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if(c>>>0>0|(c|0)==0&a>>>0>4294967295){e=d;f=a;g=c;while(1){c=hn(f|0,g|0,10,0)|0;e=e+-1|0;b[e>>0]=c&255|48;c=f;f=jp(f|0,g|0,10,0)|0;if(!(g>>>0>9|(g|0)==9&c>>>0>4294967295))break;else g=I}h=f;i=e}else{h=a;i=d}if(!h)j=i;else{d=h;h=i;while(1){i=h+-1|0;b[i>>0]=(d>>>0)%10|0|48;if(d>>>0<10){j=i;break}else{d=(d>>>0)/10|0;h=i}}}return j|0}function Sj(a){a=a|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=a;while(1){d=c+1|0;if(!(eq(b[c>>0]|0)|0))break;else c=d}a=b[c>>0]|0;switch(a<<24>>24|0){case 45:{e=1;f=5;break}case 43:{e=0;f=5;break}default:{g=0;h=c;i=a}}if((f|0)==5){g=e;h=d;i=b[d>>0]|0}if(!(Aq(i<<24>>24)|0))j=0;else{i=0;d=h;while(1){h=(i*10|0)+48-(b[d>>0]|0)|0;d=d+1|0;if(!(Aq(b[d>>0]|0)|0)){j=h;break}else i=h}}return (g|0?j:0-j|0)|0}function Tj(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=0,h=0;e=u;u=u+16|0;g=e;il(g,d);h=Ai(a,c)|0;c=h+11|0;if((b[c>>0]|0)<0){b[f[h>>2]>>0]=0;f[h+4>>2]=0}else{b[h>>0]=0;b[c>>0]=0}gh(h,0);f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];u=e;return}function Uj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=u;u=u+16|0;c=b+8|0;d=b+4|0;e=b;f[e>>2]=f[(f[a+4>>2]|0)+80>>2];g=f[a+44>>2]|0;a=g+16|0;h=f[a+4>>2]|0;if((h|0)>0|(h|0)==0&(f[a>>2]|0)>>>0>0){u=b;return 1}f[d>>2]=f[g+4>>2];f[c>>2]=f[d>>2];Me(g,c,e,e+4|0)|0;u=b;return 1}function Vj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;ll(g,d&1);d=Ai(a,c)|0;c=d+11|0;if((b[c>>0]|0)<0){b[f[d>>2]>>0]=0;f[d+4>>2]=0}else{b[d>>0]=0;b[c>>0]=0}gh(d,0);f[d>>2]=f[g>>2];f[d+4>>2]=f[g+4>>2];f[d+8>>2]=f[g+8>>2];u=e;return}function Wj(a){a=a|0;if(!a)return;Ej(a+24|0,f[a+28>>2]|0);zj(a+12|0,f[a+16>>2]|0);Ej(a,f[a+4>>2]|0);Oq(a);return}function Xj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;ll(g,d);d=Ai(a,c)|0;c=d+11|0;if((b[c>>0]|0)<0){b[f[d>>2]>>0]=0;f[d+4>>2]=0}else{b[d>>0]=0;b[c>>0]=0}gh(d,0);f[d>>2]=f[g>>2];f[d+4>>2]=f[g+4>>2];f[d+8>>2]=f[g+8>>2];u=e;return}function Yj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;e=Rg(a,c)|0;if((e|0)==(a+4|0)){g=-1;h=(g|0)==-1;i=(g|0)!=0;j=h?d:i;return j|0}a=e+28|0;if((b[a+11>>0]|0)<0)k=f[a>>2]|0;else k=a;g=Sj(k)|0;h=(g|0)==-1;i=(g|0)!=0;j=h?d:i;return j|0}function Zj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;d=u;u=u+16|0;e=d;if(c>>>0>10){g=0;u=d;return g|0}h=ln(48)|0;f[e>>2]=h;f[e+8>>2]=-2147483600;f[e+4>>2]=33;i=h;j=15987;k=i+33|0;do{b[i>>0]=b[j>>0]|0;i=i+1|0;j=j+1|0}while((i|0)<(k|0));b[h+33>>0]=0;Xj(a,e,c);if((b[e+11>>0]|0)<0)Oq(f[e>>2]|0);g=1;u=d;return g|0}function _j(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=f[b>>2]|0;if((c|0)==-1)return 1;b=c*3|0;if((b|0)==-1)return 1;c=f[a>>2]|0;a=f[c+(b<<2)>>2]|0;d=b+1|0;e=((d>>>0)%3|0|0)==0?b+-2|0:d;if((e|0)==-1)g=-1;else g=f[c+(e<<2)>>2]|0;e=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((e|0)==-1)h=-1;else h=f[c+(e<<2)>>2]|0;if((a|0)==(g|0))return 1;else return (a|0)==(h|0)|(g|0)==(h|0)|0;return 0}function $j(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0;d=0;while(1){if((h[16654+d>>0]|0)==(a|0)){e=2;break}g=d+1|0;if((g|0)==87){i=16742;j=87;e=5;break}else d=g}if((e|0)==2)if(!d)k=16742;else{i=16742;j=d;e=5}if((e|0)==5)while(1){e=0;d=i;do{a=d;d=d+1|0}while((b[a>>0]|0)!=0);j=j+-1|0;if(!j){k=d;break}else{i=d;e=5}}return jq(k,f[c+20>>2]|0)|0}function ak(a,b){a=+a;b=b|0;var c=0,d=0,e=0,g=0.0,h=0.0,i=0,j=0.0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;e=Yn(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){g=+ak(a*18446744073709551616.0,b);h=g;i=(f[b>>2]|0)+-64|0}else{h=a;i=0}f[b>>2]=i;j=h;break}case 2047:{j=a;break}default:{f[b>>2]=(e&2047)+-1022;f[s>>2]=c;f[s+4>>2]=d&-2146435073|1071644672;j=+p[s>>3]}}return +j}function bk(a,b){a=+a;b=b|0;var c=0.0,d=0,e=0,g=0.0,h=0;if((b|0)<=1023)if((b|0)<-1022){c=a*2.2250738585072014e-308;d=(b|0)<-2044;e=b+2044|0;g=d?c*2.2250738585072014e-308:c;h=d?((e|0)>-1022?e:-1022):b+1022|0}else{g=a;h=b}else{c=a*8988465674311579538646525.0e283;e=(b|0)>2046;d=b+-2046|0;g=e?c*8988465674311579538646525.0e283:c;h=e?((d|0)<1023?d:1023):b+-1023|0}b=Tn(h+1023|0,0,52)|0;h=I;f[s>>2]=b;f[s+4>>2]=h;return +(g*+p[s>>3])}function ck(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;if(!(f[a+80>>2]|0)){b=0;return b|0}c=a+8|0;d=a+12|0;a=f[c>>2]|0;if(((f[d>>2]|0)-a|0)>0){e=0;g=a}else{b=1;return b|0}while(1){a=f[g+(e<<2)>>2]|0;e=e+1|0;if(!(Gl(a,a)|0)){b=0;h=5;break}g=f[c>>2]|0;if((e|0)>=((f[d>>2]|0)-g>>2|0)){b=1;h=5;break}}if((h|0)==5)return b|0;return 0}function dk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=a+36|0;d=a+40|0;e=f[c>>2]|0;if((f[d>>2]|0)==(e|0)){g=1;return g|0}h=a+60|0;a=0;i=e;while(1){e=f[i+(a<<2)>>2]|0;a=a+1|0;if(!(Sa[f[(f[e>>2]|0)+20>>2]&31](e,h,b)|0)){g=0;j=5;break}i=f[c>>2]|0;if(a>>>0>=(f[d>>2]|0)-i>>2>>>0){g=1;j=5;break}}if((j|0)==5)return g|0;return 0}function ek(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;c=a+36|0;d=a+40|0;a=f[c>>2]|0;if((f[d>>2]|0)==(a|0)){e=1;return e|0}else{g=0;h=a}while(1){a=f[h+(g<<2)>>2]|0;g=g+1|0;if(!(Ra[f[(f[a>>2]|0)+24>>2]&127](a,b)|0)){e=0;i=4;break}h=f[c>>2]|0;if(g>>>0>=(f[d>>2]|0)-h>>2>>>0){e=1;i=4;break}}if((i|0)==4)return e|0;return 0}function fk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;f[a>>2]=0;c=a+4|0;f[c>>2]=0;f[a+8>>2]=0;d=b+4|0;e=(f[d>>2]|0)-(f[b>>2]|0)|0;g=e>>2;if(!g)return;if(g>>>0>1073741823)aq(a);h=ln(e)|0;f[c>>2]=h;f[a>>2]=h;f[a+8>>2]=h+(g<<2);g=f[b>>2]|0;b=(f[d>>2]|0)-g|0;if((b|0)<=0)return;kh(h|0,g|0,b|0)|0;f[c>>2]=h+(b>>>2<<2);return}function gk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;c=a+8|0;d=f[a>>2]|0;if((f[c>>2]|0)-d>>2>>>0>=b>>>0)return;e=a+4|0;if(b>>>0>1073741823){g=ra(8)|0;Oo(g,16035);f[g>>2]=7256;va(g|0,1112,110)}g=(f[e>>2]|0)-d|0;h=ln(b<<2)|0;if((g|0)>0)kh(h|0,d|0,g|0)|0;f[a>>2]=h;f[e>>2]=h+(g>>2<<2);f[c>>2]=h+(b<<2);if(!d)return;Oq(d);return}function hk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;b=a+36|0;c=a+40|0;d=f[b>>2]|0;if((f[c>>2]|0)==(d|0)){e=1;return e|0}g=a+60|0;a=0;h=d;while(1){d=f[h+(a<<2)>>2]|0;a=a+1|0;if(!(Ra[f[(f[d>>2]|0)+16>>2]&127](d,g)|0)){e=0;i=5;break}h=f[b>>2]|0;if(a>>>0>=(f[c>>2]|0)-h>>2>>>0){e=1;i=5;break}}if((i|0)==5)return e|0;return 0}function ik(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0;d=f[a+176>>2]|0;e=f[a+172>>2]|0;a=e;if((d|0)==(e|0))return 0;g=(d-e|0)/136|0;e=0;while(1){if((f[a+(e*136|0)>>2]|0)==(c|0)){h=4;break}d=e+1|0;if(d>>>0>>0)e=d;else{h=6;break}}if((h|0)==4)return ((b[a+(e*136|0)+100>>0]|0)==0?0:a+(e*136|0)+4|0)|0;else if((h|0)==6)return 0;return 0}function jk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;d=u;u=u+16|0;e=d;g=ln(16)|0;f[e>>2]=g;f[e+8>>2]=-2147483632;f[e+4>>2]=15;h=g;i=14479;j=h+15|0;do{b[h>>0]=b[i>>0]|0;h=h+1|0;i=i+1|0}while((h|0)<(j|0));b[g+15>>0]=0;Xj(a,e,c);if((b[e+11>>0]|0)>=0){u=d;return}Oq(f[e>>2]|0);u=d;return}function kk(a,b){a=a|0;b=b|0;var c=0,d=0;c=f[a+72>>2]|0;if(!c){d=0;return d|0}f[c+4>>2]=a+60;if(!(Qa[f[(f[c>>2]|0)+12>>2]&127](c)|0)){d=0;return d|0}if(!(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)){d=0;return d|0}if(!(Ra[f[(f[a>>2]|0)+44>>2]&127](a,b)|0)){d=0;return d|0}d=Ra[f[(f[a>>2]|0)+48>>2]&127](a,b)|0;return d|0}function lk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>357913941)aq(a);e=ln(b*12|0)|0;f[d>>2]=e;f[a>>2]=e;f[a+8>>2]=e+(b*12|0);a=b;b=e;do{fk(b,c);b=(f[d>>2]|0)+12|0;f[d>>2]=b;a=a+-1|0}while((a|0)!=0);return}function mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;c=f[b>>2]|0;if(!c){d=0;return d|0}e=a+44|0;g=f[e>>2]|0;if(g>>>0<(f[a+48>>2]|0)>>>0){f[b>>2]=0;f[g>>2]=c;f[e>>2]=(f[e>>2]|0)+4;d=1;return d|0}else{Ug(a+40|0,b);d=1;return d|0}return 0}function nk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3564;b=f[a+64>>2]|0;if(b|0){c=a+68|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}f[a+12>>2]=3588;b=f[a+32>>2]|0;if(b|0)Oq(b);b=f[a+20>>2]|0;if(!b){Oq(a);return}Oq(b);Oq(a);return}function ok(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3344;f[a+40>>2]=1196;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}f[a>>2]=1476;b=a+36|0;d=f[b>>2]|0;f[b>>2]=0;if(!d){Ni(a);Oq(a);return}Va[f[(f[d>>2]|0)+4>>2]&127](d);Ni(a);Oq(a);return}function pk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0;f[c>>2]=2;d=a+4|0;a=c+8|0;e=f[a>>2]|0;g=(f[c+12>>2]|0)-e|0;if(g>>>0<4294967292){Lk(a,g+4|0,0);i=f[a>>2]|0}else i=e;e=i+g|0;g=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;return}function qk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3612;b=f[a+64>>2]|0;if(b|0){c=a+68|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}f[a+12>>2]=3636;b=f[a+32>>2]|0;if(b|0)Oq(b);b=f[a+20>>2]|0;if(!b){Oq(a);return}Oq(b);Oq(a);return}function rk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2188;b=f[a+76>>2]|0;if(b|0)Oq(b);b=a+68|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Mq(c);f[a>>2]=1544;c=f[a+32>>2]|0;if(!c){Oq(a);return}b=a+36|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);Oq(c);Oq(a);return}function sk(a,c,d){a=a|0;c=c|0;d=$(d);var e=0,g=Oa,h=0;e=Rg(a,c)|0;if((e|0)==(a+4|0)){g=d;return $(g)}a=e+28|0;if((b[a+11>>0]|0)<0)h=f[a>>2]|0;else h=a;g=$(+Iq(h));return $(g)}function tk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=u;u=u+16|0;c=b;d=c;f[d>>2]=0;f[d+4>>2]=0;qf(a,2,c);c=f[a+12>>2]|0;d=a+16|0;e=f[d>>2]|0;if((e|0)==(c|0)){g=a+24|0;f[g>>2]=0;h=a+28|0;f[h>>2]=0;u=b;return}f[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);g=a+24|0;f[g>>2]=0;h=a+28|0;f[h>>2]=0;u=b;return}function uk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=f[a+176>>2]|0;d=f[a+172>>2]|0;e=d;a:do if((c|0)!=(d|0)){g=(c-d|0)/136|0;h=0;while(1){if((f[e+(h*136|0)>>2]|0)==(b|0))break;i=h+1|0;if(i>>>0>>0)h=i;else break a}j=e+(h*136|0)+104|0;return j|0}while(0);j=a+40|0;return j|0}function vk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3564;b=f[a+64>>2]|0;if(b|0){c=a+68|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}f[a+12>>2]=3588;b=f[a+32>>2]|0;if(b|0)Oq(b);b=f[a+20>>2]|0;if(!b)return;Oq(b);return}function wk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1768;b=f[a+76>>2]|0;if(b|0)Oq(b);b=a+68|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Mq(c);f[a>>2]=1544;c=f[a+32>>2]|0;if(!c){Oq(a);return}b=a+36|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);Oq(c);Oq(a);return}function xk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3344;f[a+40>>2]=1196;b=f[a+48>>2]|0;if(b|0){c=a+52|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}f[a>>2]=1476;b=a+36|0;d=f[b>>2]|0;f[b>>2]=0;if(!d){Ni(a);return}Va[f[(f[d>>2]|0)+4>>2]&127](d);Ni(a);return}function yk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;Nc(a,b);if((b|0)<=-1)return;c=a+88|0;d=f[c>>2]|0;e=f[a+84>>2]|0;if((d-e>>2|0)<=(b|0))return;a=e+(b<<2)|0;b=a+4|0;e=d-b|0;g=e>>2;if(!g)h=d;else{im(a|0,b|0,e|0)|0;h=f[c>>2]|0}e=a+(g<<2)|0;if((h|0)==(e|0))return;f[c>>2]=h+(~((h+-4-e|0)>>>2)<<2);return}function zk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a+32>>2]|0;c=f[a+36>>2]|0;if((b|0)==(c|0)){d=1;return d|0}e=a+8|0;g=a+44|0;a=b;while(1){b=f[(f[e>>2]|0)+(f[a>>2]<<2)>>2]|0;a=a+4|0;if(!(Ra[f[(f[b>>2]|0)+20>>2]&127](b,f[g>>2]|0)|0)){d=0;h=5;break}if((a|0)==(c|0)){d=1;h=5;break}}if((h|0)==5)return d|0;return 0}function Ak(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3612;b=f[a+64>>2]|0;if(b|0){c=a+68|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}f[a+12>>2]=3636;b=f[a+32>>2]|0;if(b|0)Oq(b);b=f[a+20>>2]|0;if(!b)return;Oq(b);return}function Bk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0.0;d=u;u=u+128|0;e=d;g=e;h=g+124|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(h|0));g=e+4|0;f[g>>2]=a;h=e+8|0;f[h>>2]=-1;f[e+44>>2]=a;f[e+76>>2]=-1;Ym(e,0);i=+Rc(e,c,1);c=(f[g>>2]|0)-(f[h>>2]|0)+(f[e+108>>2]|0)|0;if(b|0)f[b>>2]=c|0?a+c|0:a;u=d;return +i}function Ck(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0;a=c+16|0;g=f[a>>2]|0;do if(g){if((g|0)!=(d|0)){h=c+36|0;f[h>>2]=(f[h>>2]|0)+1;f[c+24>>2]=2;b[c+54>>0]=1;break}h=c+24|0;if((f[h>>2]|0)==2)f[h>>2]=e}else{f[a>>2]=d;f[c+24>>2]=e;f[c+36>>2]=1}while(0);return}function Dk(a){a=a|0;var b=0,c=0;f[a>>2]=2188;b=f[a+76>>2]|0;if(b|0)Oq(b);b=a+68|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Mq(c);f[a>>2]=1544;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Oq(c);return}function Ek(a){a=a|0;var c=0,d=0,e=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;d=a+20|0;c=a+28|0;if((f[d>>2]|0)>>>0>(f[c>>2]|0)>>>0)Sa[f[a+36>>2]&31](a,0,0)|0;f[a+16>>2]=0;f[c>>2]=0;f[d>>2]=0;d=f[a>>2]|0;if(!(d&4)){c=(f[a+44>>2]|0)+(f[a+48>>2]|0)|0;f[a+8>>2]=c;f[a+4>>2]=c;e=d<<27>>31}else{f[a>>2]=d|32;e=-1}return e|0}function Fk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=Rg(a,c)|0;if((d|0)==(a+4|0)){e=0;return e|0}a=d+28|0;if((b[a+11>>0]|0)<0)g=f[a>>2]|0;else g=a;e=((Sj(g)|0)+1|0)>>>0>1;return e|0}function Gk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=6152;b=f[a+96>>2]|0;if(b|0){c=a+100|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);Oq(b)}b=f[a+84>>2]|0;if(!b){Og(a);Oq(a);return}d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b);Og(a);Oq(a);return}function Hk(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=Rg(a,c)|0;if((e|0)==(a+4|0)){g=d;return g|0}d=e+28|0;if((b[d+11>>0]|0)<0)h=f[d>>2]|0;else h=d;g=Sj(h)|0;return g|0}function Ik(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;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=Xn(e^a|0,f^b|0,e|0,f|0)|0;b=I;a=g^e;e=h^f;return Xn((Ld(i,b,Xn(g^c|0,h^d|0,g|0,h|0)|0,I,0)|0)^a|0,I^e|0,a|0,e|0)|0}function Jk(a){a=a|0;var b=0,c=0;f[a>>2]=1768;b=f[a+76>>2]|0;if(b|0)Oq(b);b=a+68|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Mq(c);f[a>>2]=1544;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Oq(c);return}function Kk(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0;f[a>>2]=b;h=b+16|0;i=f[h+4>>2]|0;j=a+8|0;f[j>>2]=f[h>>2];f[j+4>>2]=i;i=b+24|0;b=f[i+4>>2]|0;j=a+16|0;f[j>>2]=f[i>>2];f[j+4>>2]=b;b=a+40|0;f[b>>2]=c;f[b+4>>2]=d;d=a+48|0;f[d>>2]=e;f[d+4>>2]=g;return}function Lk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e|0;h=e;e=d;if(g>>>0>=b>>>0){if(g>>>0>b>>>0?(d=h+b|0,(d|0)!=(e|0)):0)f[c>>2]=d}else Fi(a,b-g|0);g=a+24|0;a=g;b=Vn(f[a>>2]|0,f[a+4>>2]|0,1,0)|0;a=g;f[a>>2]=b;f[a+4>>2]=I;return}function Mk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=Rg(a,c)|0;if((d|0)==(a+4|0)){e=-1;return e|0}a=d+28|0;if((b[a+11>>0]|0)<0)g=f[a>>2]|0;else g=a;e=Sj(g)|0;return e|0}function Nk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=6152;b=f[a+96>>2]|0;if(b|0){c=a+100|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);Oq(b)}b=f[a+84>>2]|0;if(!b){Og(a);return}d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Oq(b);Og(a);return}function Ok(a){a=a|0;var c=0,d=0,e=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=1;c=a+68|0;d=a+28|0;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));f[c>>2]=a;c=a+72|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;f[c+20>>2]=0;return}function Pk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2244;b=f[a+76>>2]|0;if(b|0)Oq(b);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b){Oq(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b);Oq(a);return}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;f=u;u=u+256|0;g=f;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;sj(g|0,b<<24>>24|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;d=e;do{Xo(a,g,256);d=d+-256|0}while(d>>>0>255);h=b&255}else h=e;Xo(a,g,h)}u=f;return}function Rk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1824;b=f[a+76>>2]|0;if(b|0)Oq(b);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b){Oq(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b);Oq(a);return}function Sk(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;if(fp(a,f[b+8>>2]|0,g)|0)qj(0,b,c,d,e);else{h=f[a+8>>2]|0;_a[f[(f[h>>2]|0)+20>>2]&3](h,b,c,d,e,g)}return}function Tk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2300;Fj(a+108|0);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b){Oq(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b);Oq(a);return}function Uk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1880;Fj(a+108|0);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b){Oq(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b);Oq(a);return}function Vk(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;a:do if(!d)e=0;else{f=a;g=d;h=c;while(1){i=b[f>>0]|0;j=b[h>>0]|0;if(i<<24>>24!=j<<24>>24)break;g=g+-1|0;if(!g){e=0;break a}else{f=f+1|0;h=h+1|0}}e=(i&255)-(j&255)|0}while(0);return e|0}function Wk(a){a=a|0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+24>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;else return (f[a+36>>2]|0)!=0|0;return 0}function Xk(a){a=a|0;var b=0,c=0;f[a>>2]=2244;b=f[a+76>>2]|0;if(b|0)Oq(b);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function Yk(a){a=a|0;var c=0,d=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=0;while(1){if((c|0)==3)break;f[a+(c<<2)>>2]=0;c=c+1|0}if((b[a+11>>0]|0)<0)d=(f[a+8>>2]&2147483647)+-1|0;else d=10;Hj(a,d,0);return}function Zk(a){a=a|0;var b=0,c=0,d=0,e=0.0,g=0.0;b=f[a+8>>2]|0;if((b|0)<2){c=0;d=0;I=c;return d|0}e=+(b|0);g=+Zg(e)*e;e=+W(+(g-+p[a>>3]));c=+K(e)>=1.0?(e>0.0?~~+Y(+J(e/4294967296.0),4294967295.0)>>>0:~~+W((e-+(~~e>>>0))/4294967296.0)>>>0):0;d=~~e>>>0;I=c;return d|0}function _k(a){a=a|0;var b=0,c=0;f[a>>2]=1824;b=f[a+76>>2]|0;if(b|0)Oq(b);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function $k(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=f[(f[a+36>>2]|0)+(e<<2)>>2]|0;e=f[b+32>>2]|0;if(e|0){d=e;return d|0}d=f[b+8>>2]|0;return d|0}function al(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1232;b=f[a+16>>2]|0;if(b|0){c=a+20|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b)}b=f[a+4>>2]|0;if(!b)return;d=a+8|0;a=f[d>>2]|0;if((a|0)!=(b|0))f[d>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function bl(a){a=a|0;var b=0,c=0;f[a>>2]=2300;Fj(a+108|0);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function cl(a){a=a|0;if(!(f[a+64>>2]|0))return 0;if(!(f[a+68>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function dl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(fp(a,f[b+8>>2]|0,0)|0)Ck(0,b,c,d);else{e=f[a+8>>2]|0;Ya[f[(f[e>>2]|0)+28>>2]&3](e,b,c,d)}return}function el(a){a=a|0;var b=0,c=0;f[a>>2]=1880;Fj(a+108|0);f[a>>2]=1544;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function fl(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<0){c=0;return c|0}d=f[a+4>>2]|0;if(((f[d+12>>2]|0)-(f[d+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}d=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Ra[f[(f[d>>2]|0)+36>>2]&127](d,b)|0;return c|0}function gl(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<0){c=0;return c|0}d=f[a+4>>2]|0;if(((f[d+12>>2]|0)-(f[d+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}d=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Ra[f[(f[d>>2]|0)+32>>2]&127](d,b)|0;return c|0}function hl(a,c){a=a|0;c=c|0;var d=0,e=0,f=0,g=0;d=b[a>>0]|0;e=b[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24){f=e;g=d}else{d=c;c=a;do{c=c+1|0;d=d+1|0;a=b[c>>0]|0;e=b[d>>0]|0}while(!(a<<24>>24==0?1:a<<24>>24!=e<<24>>24));f=e;g=a}return (g&255)-(f&255)|0}function il(a,b){a=a|0;b=$(b);var c=0,d=0;c=u;u=u+16|0;d=c;Yk(d);Ei(a,d,b);Bo(d);u=c;return}function jl(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;b=f[a>>2]|0;c=a+4|0;d=f[c>>2]|0;if((d|0)==(b|0))e=b;else{g=d+(~((d+-4-b|0)>>>2)<<2)|0;f[c>>2]=g;e=g}f[a+12>>2]=0;f[a+16>>2]=0;if(!b)return;if((e|0)!=(b|0))f[c>>2]=e+(~((e+-4-b|0)>>>2)<<2);Oq(b);return}function kl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=f[a+16>>2]|0;if(((f[a+20>>2]|0)-d>>2|0)<=(b|0)){e=-1;return e|0}g=f[d+(b<<2)>>2]|0;if((g|0)<0){e=-1;return e|0}e=f[(f[(f[(f[a+36>>2]|0)+(g<<2)>>2]|0)+16>>2]|0)+(c<<2)>>2]|0;return e|0}function ll(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;Yk(d);Ji(a,d,b);Bo(d);u=c;return}function ml(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;d=u;u=u+32|0;e=d;g=d+20|0;f[e>>2]=f[a+60>>2];f[e+4>>2]=0;f[e+8>>2]=b;f[e+12>>2]=g;f[e+16>>2]=c;if((to(za(140,e|0)|0)|0)<0){f[g>>2]=-1;h=-1}else h=f[g>>2]|0;u=d;return h|0}function nl(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)==-1|(b|0)>4){c=0;return c|0}d=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-d|0)<=0){c=0;return c|0}b=f[d>>2]|0;if((b|0)==-1){c=0;return c|0}c=f[(f[a+8>>2]|0)+(b<<2)>>2]|0;return c|0}function ol(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){d=0;return d|0}e=f[c+(b<<2)>>2]|0;if((e|0)<0){d=0;return d|0}b=f[(f[a+36>>2]|0)+(e<<2)>>2]|0;d=(f[b+20>>2]|0)-(f[b+16>>2]|0)>>2;return d|0}function pl(a){a=a|0;if(!(f[a+40>>2]|0))return 0;if(!(f[a+24>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;else return (f[a+36>>2]|0)!=0|0;return 0}function ql(a){a=a|0;var b=0;if(!(f[a+24>>2]|0)){b=0;return b|0}if(!(f[a+28>>2]|0)){b=0;return b|0}if(!(f[a+32>>2]|0)){b=0;return b|0}b=(f[a+36>>2]|0)!=0;return b|0}function rl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;lh(a,c);f[a>>2]=1408;c=a+72|0;d=a+36|0;a=d+36|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(a|0));d=f[b>>2]|0;f[b>>2]=0;f[c>>2]=d;return}function sl(a){a=a|0;var b=0,c=0;f[a>>2]=3148;b=f[a+56>>2]|0;if(b|0)Oq(b);b=a+48|0;c=f[b>>2]|0;f[b>>2]=0;if(!c){Oq(a);return}Mq(c);Oq(a);return}function tl(a,c){a=a|0;c=c|0;var d=0,e=0;d=a;e=c;c=d+64|0;do{f[d>>2]=f[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(c|0));e=a+64|0;f[a+88>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;b[e+20>>0]=0;return}function ul(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if((a|0)==0&(c|0)==0)f=d;else{g=d;d=c;c=a;while(1){a=g+-1|0;b[a>>0]=h[16636+(c&15)>>0]|0|e;c=Yn(c|0,d|0,4)|0;d=I;if((c|0)==0&(d|0)==0){f=a;break}else g=a}}return f|0}function vl(a){a=a|0;var c=0,d=0,e=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;d=f[a>>2]|0;if(!(d&8)){f[a+8>>2]=0;f[a+4>>2]=0;c=f[a+44>>2]|0;f[a+28>>2]=c;f[a+20>>2]=c;f[a+16>>2]=c+(f[a+48>>2]|0);e=0}else{f[a>>2]=d|32;e=-1}return e|0}function wl(a){a=a|0;if(!(f[a+60>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function xl(a,b){a=a|0;b=b|0;var c=0,d=0;c=f[b+88>>2]|0;if(!c){d=0;return d|0}if((f[c>>2]|0)!=2){d=0;return d|0}b=f[c+8>>2]|0;f[a+4>>2]=h[b>>0]|h[b+1>>0]<<8|h[b+2>>0]<<16|h[b+3>>0]<<24;d=1;return d|0}function yl(a){a=a|0;var b=0;if(!(f[a+44>>2]|0)){b=0;return b|0}if(!(f[a+48>>2]|0)){b=0;return b|0}if(!(f[a+52>>2]|0)){b=0;return b|0}b=(f[a+56>>2]|0)!=0;return b|0}function zl(a){a=a|0;vj(a);Oq(a);return}function Al(a){a=a|0;var b=0,c=0;f[a>>2]=2784;b=f[a+56>>2]|0;if(b|0)Oq(b);b=a+48|0;c=f[b>>2]|0;f[b>>2]=0;if(!c){Oq(a);return}Mq(c);Oq(a);return}function Bl(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+44>>2]=c;d=1;return d|0}function Cl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;c=a+4|0;d=f[c>>2]|0;e=f[a>>2]|0;g=d-e|0;if(g>>>0>>0){Fi(a,b-g|0);return}if(g>>>0<=b>>>0)return;g=e+b|0;if((g|0)==(d|0))return;f[c>>2]=g;return}function Dl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=$(e);f[a+4>>2]=b;Zf(a+8|0,c,c+(d<<2)|0);n[a+20>>2]=e;return}function El(a,b){a=a|0;b=b|0;var c=0;if(!(Qa[f[(f[a>>2]|0)+40>>2]&127](a)|0)){c=0;return c|0}if(!(Ra[f[(f[a>>2]|0)+44>>2]&127](a,b)|0)){c=0;return c|0}c=Ra[f[(f[a>>2]|0)+48>>2]&127](a,b)|0;return c|0}function Fl(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+40>>2]=c;d=1;return d|0}function Gl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c+4|0;e=c;f[e>>2]=0;f[d>>2]=f[e>>2];e=vc(a,b,d)|0;u=c;return e|0}function Hl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;d=f[c>>2]|0;c=a;e=b-a>>2;while(1){if(!e)break;a=(e|0)/2|0;b=c+(a<<2)|0;g=(f[b>>2]|0)>>>0>>0;c=g?b+4|0:c;e=g?e+-1-a|0:a}return c|0}function Il(a){a=a|0;var c=0;f[a>>2]=0;c=a+8|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;b[a+24>>0]=1;f[a+28>>2]=9;c=a+40|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[a+56>>2]=-1;f[a+60>>2]=0;return}function Jl(a){a=a|0;yj(a);Oq(a);return}function Kl(a){a=a|0;var b=0;f[a>>2]=3148;b=f[a+56>>2]|0;if(b|0)Oq(b);b=a+48|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;Mq(a);return}function Ll(a){a=a|0;var c=0,d=0,e=0,g=0,h=0;if(!(Aq(b[f[a>>2]>>0]|0)|0))c=0;else{d=0;while(1){e=f[a>>2]|0;g=(d*10|0)+-48+(b[e>>0]|0)|0;h=e+1|0;f[a>>2]=h;if(!(Aq(b[h>>0]|0)|0)){c=g;break}else d=g}}return c|0}function Ml(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+64>>2]=c;d=1;return d|0}function Nl(a){a=a|0;var b=0,c=0;b=f[r>>2]|0;c=b+a|0;if((a|0)>0&(c|0)<(b|0)|(c|0)<0){ea()|0;ya(12);return -1}f[r>>2]=c;if((c|0)>(da()|0)?(ca()|0)==0:0){f[r>>2]=b;ya(12);return -1}return b|0}function Ol(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;if((a|0)==0&(c|0)==0)e=d;else{f=d;d=c;c=a;while(1){a=f+-1|0;b[a>>0]=c&7|48;c=Yn(c|0,d|0,3)|0;d=I;if((c|0)==0&(d|0)==0){e=a;break}else f=a}}return e|0}function Pl(a,c){a=a|0;c=c|0;var d=0;if(f[c+56>>2]|0){d=0;return d|0}if((b[c+24>>0]|0)!=3){d=0;return d|0}f[a+60>>2]=c;d=1;return d|0}function Ql(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1544;b=f[a+32>>2]|0;if(!b){Oq(a);return}c=a+36|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b);Oq(a);return}function Rl(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(fp(a,f[b+8>>2]|0,g)|0)qj(0,b,c,d,e);return}function Sl(a){a=a|0;var b=0;f[a>>2]=2784;b=f[a+56>>2]|0;if(b|0)Oq(b);b=a+48|0;a=f[b>>2]|0;f[b>>2]=0;if(!a)return;Mq(a);return}function Tl(a){a=a|0;var c=0,d=0,e=0,g=0;c=u;u=u+16|0;d=c;e=f[a+4>>2]|0;g=(f[e+56>>2]|0)-(f[e+52>>2]|0)>>2;b[d>>0]=0;qh(a+20|0,g,d);u=c;return}function Ul(a){a=a|0;Vi(a);Oq(a);return}function Vl(a){a=a|0;var b=0;switch(a|0){case 11:case 2:case 1:{b=1;break}case 4:case 3:{b=2;break}case 6:case 5:{b=4;break}case 8:case 7:{b=8;break}case 9:{b=4;break}case 10:{b=8;break}default:b=-1}return b|0}function Wl(a){a=a|0;var c=0,d=0,e=0,g=0;c=u;u=u+16|0;d=c;e=f[a+4>>2]|0;g=(f[e+28>>2]|0)-(f[e+24>>2]|0)>>2;b[d>>0]=0;qh(a+20|0,g,d);u=c;return}function Xl(){var a=0,b=0;a=ln(40)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[a+16>>2]=$(1.0);b=a+20|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;n[a+36>>2]=$(1.0);return a|0}function Yl(a,b){a=+a;b=+b;var c=0,d=0,e=0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;p[s>>3]=b;e=f[s+4>>2]&-2147483648|d&2147483647;f[s>>2]=c;f[s+4>>2]=e;return +(+p[s>>3])}function Zl(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0;d=u;u=u+16|0;e=d;p[e>>3]=c;_b(a,b,e);u=d;return}function _l(a){a=a|0;f[a>>2]=3656;Qi(a+8|0);Oq(a);return}function $l(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;fc(a,b,e);u=d;return}function am(a,c){a=a|0;c=c|0;var d=0,e=0;if((a|0)!=(c|0)){d=b[c+11>>0]|0;e=d<<24>>24<0;jj(a,e?f[c>>2]|0:c,e?f[c+4>>2]|0:d&255)|0}return a|0}function bm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=X(d,c)|0;f=a>>>16;a=(e>>>16)+(X(d,f)|0)|0;d=b>>>16;b=X(d,c)|0;return (I=(a>>>16)+(X(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function cm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Gj(b)|0;d=ln(c+13|0)|0;f[d>>2]=c;f[d+4>>2]=c;f[d+8>>2]=0;e=Fp(d)|0;kh(e|0,b|0,c+1|0)|0;f[a>>2]=e;return}function dm(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)==-1|(b|0)>4){c=-1;return c|0}d=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-d|0)<=0){c=-1;return c|0}c=f[d>>2]|0;return c|0}function em(a){a=a|0;Yi(a);Oq(a);return}function fm(a){a=a|0;f[a>>2]=3656;Qi(a+8|0);return}function gm(a){a=a|0;var b=0,c=0;f[a>>2]=1544;b=f[a+32>>2]|0;if(!b)return;c=a+36|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function hm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(fp(a,f[b+8>>2]|0,0)|0)Ck(0,b,c,d);return}function im(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if((c|0)<(a|0)&(a|0)<(c+d|0)){e=a;c=c+d|0;a=a+d|0;while((d|0)>0){a=a-1|0;c=c-1|0;d=d-1|0;b[a>>0]=b[c>>0]|0}a=e}else kh(a,c,d)|0;return a|0}function jm(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1196;b=f[a+8>>2]|0;if(!b){Oq(a);return}c=a+12|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Oq(b);Oq(a);return}function km(a){a=a|0;var b=0;f[a>>2]=3204;b=f[a+56>>2]|0;if(!b){Oq(a);return}Oq(b);Oq(a);return}function lm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=u;u=u+16|0;e=d;f[e>>2]=f[c>>2];g=Sa[f[(f[a>>2]|0)+16>>2]&31](a,b,e)|0;if(g)f[c>>2]=f[e>>2];u=d;return g&1|0}function mm(a,b){a=a|0;b=b|0;var c=0;if(b>>>0>=2){c=0;return c|0}f[a+28>>2]=b;c=1;return c|0}function nm(a){a=a|0;var b=0,c=0;f[a>>2]=3408;b=a+56|0;c=f[b>>2]|0;f[b>>2]=0;if(!c){mj(a);return}Va[f[(f[c>>2]|0)+4>>2]&127](c);mj(a);return}function om(){var a=0,b=0;a=sn()|0;if((a|0?(b=f[a>>2]|0,b|0):0)?(a=b+48|0,(f[a>>2]&-256|0)==1126902528?(f[a+4>>2]|0)==1129074247:0):0)Ho(f[b+12>>2]|0);Ho(Qp()|0)}function pm(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 Qf(a,b,c,d,e,f,6)|0}function qm(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 Pf(a,b,c,d,e,f,4)|0}function rm(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 Wf(a,b,c,d,e,f,2)|0}function sm(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 Pf(a,b,c,d,e,f,3)|0}function tm(a){a=a|0;var b=0;f[a>>2]=2840;b=f[a+56>>2]|0;if(!b){Oq(a);return}Oq(b);Oq(a);return}function um(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 Wf(a,b,c,d,e,f,1)|0}function vm(a){a=a|0;var c=0;c=b[w+(a&255)>>0]|0;if((c|0)<8)return c|0;c=b[w+(a>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=b[w+(a>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (b[w+(a>>>24)>>0]|0)+24|0}function wm(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;if(!a){c=0.0;return +c}if((b|0)==0|(a|0)==(b|0)){c=0.0;return +c}d=+(b>>>0)/+(a>>>0);e=1.0-d;f=d*+Zg(d);c=-(f+e*+Zg(e));return +c}function xm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=f[a+(d<<2)>>2]|0;f[c+(d<<2)>>2]=e<<1^e>>31;d=d+1|0}while((d|0)!=(b|0));return}function ym(a){a=a|0;var b=0;zo(a);f[a>>2]=3344;f[a+40>>2]=1196;f[a+44>>2]=-1;b=a+48|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;return}function zm(a,c){a=a|0;c=c|0;var d=0;b[c+84>>0]=1;a=f[c+68>>2]|0;d=c+72|0;c=f[d>>2]|0;if((c|0)==(a|0))return 1;f[d>>2]=c+(~((c+-4-a|0)>>>2)<<2);return 1}function Am(a){a=a|0;var b=0,c=0;if(pq(a)|0?(b=Mp(f[a>>2]|0)|0,a=b+8|0,c=f[a>>2]|0,f[a>>2]=c+-1,(c+-1|0)<0):0)Oq(b);return}function Bm(a){a=a|0;var b=0,c=0;b=f[a+16>>2]|0;c=(((f[a+12>>2]|0)+1-b|0)/64|0)+b<<3;a=b<<3;b=Vn(c|0,((c|0)<0)<<31>>31|0,a|0,((a|0)<0)<<31>>31|0)|0;return b|0}function Cm(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 Qf(a,b,c,d,e,f,5)|0}function Dm(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 Qf(a,b,c,d,e,f,9)|0}function Em(a){a=a|0;var b=0;f[a>>2]=3204;b=f[a+56>>2]|0;if(!b)return;Oq(b);return}function Fm(a){a=a|0;var b=0,c=0;f[a>>2]=1476;b=a+36|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);Ni(a);Oq(a);return}function Gm(a){a=a|0;var b=0,c=0;f[a>>2]=1196;b=f[a+8>>2]|0;if(!b)return;c=a+12|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function Hm(a){a=a|0;var c=0;f[a>>2]=1352;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=-1;c=a+16|0;f[a+32>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;b[c+12>>0]=0;return}function Im(a){a=a|0;var b=0;f[a>>2]=2840;b=f[a+56>>2]|0;if(!b)return;Oq(b);return}function Jm(a){a=a|0;var b=0,c=0;f[a>>2]=1476;b=a+36|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);Ni(a);return}function Km(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=$(f);Fg(a,b,c,d,e,f);return}function Lm(a){a=a|0;var b=0,c=0;f[a>>2]=3408;b=a+56|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0)Va[f[(f[c>>2]|0)+4>>2]&127](c);mj(a);Oq(a);return}function Mm(a){a=a|0;var b=0,c=0,d=0;b=f[a>>2]|0;c=a+4|0;d=f[c>>2]|0;if((d|0)!=(b|0))f[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);f[a+12>>2]=0;f[a+16>>2]=0;return}function Nm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=a+20|0;e=f[d>>2]|0;g=(f[a+16>>2]|0)-e|0;a=g>>>0>c>>>0?c:g;kh(e|0,b|0,a|0)|0;f[d>>2]=(f[d>>2]|0)+a;return c|0}function Om(a){a=a|0;var b=0;f[a>>2]=3588;b=f[a+20>>2]|0;if(b|0)Oq(b);b=f[a+8>>2]|0;if(!b){Oq(a);return}Oq(b);Oq(a);return}function Pm(a){a=a|0;var b=0,c=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-8-b|0)>>>3)<<3);Oq(b);return}function Qm(a){a=a|0;var b=0,c=0;b=f[a>>2]|0;if(!b)return;c=a+4|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Oq(b);return}function Rm(a,b){a=a|0;b=b|0;var c=0;c=f[b>>2]|0;return (1<<(c&31)&f[(f[a+28>>2]|0)+(c>>>5<<2)>>2]|0)!=0|0}function Sm(a,b,c){a=a|0;b=b|0;c=c|0;return Sa[f[(f[a>>2]|0)+44>>2]&31](a,b,c)|0}function Tm(a){a=a|0;var c=0;Il(a);c=a+64|0;f[a+88>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;b[c+20>>0]=0;return}function Um(a){a=a|0;f[a>>2]=3260;Fj(a+88|0);Oq(a);return}function Vm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((f[b+4>>2]|0)==(c|0)?(c=b+28|0,(f[c>>2]|0)!=1):0)f[c>>2]=d;return}function Wm(a){a=a|0;var b=0,c=0,d=0;b=u;u=u+16|0;c=b;if((Ek(a)|0)==0?(Sa[f[a+32>>2]&31](a,c,1)|0)==1:0)d=h[c>>0]|0;else d=-1;u=b;return d|0}function Xm(a){a=a|0;var b=0;f[a>>2]=3636;b=f[a+20>>2]|0;if(b|0)Oq(b);b=f[a+8>>2]|0;if(!b){Oq(a);return}Oq(b);Oq(a);return}function Ym(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;f[a+104>>2]=b;c=f[a+8>>2]|0;d=f[a+4>>2]|0;e=c-d|0;f[a+108>>2]=e;f[a+100>>2]=(b|0)!=0&(e|0)>(b|0)?d+b|0:c;return}function Zm(a){a=a|0;var b=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;b=a+16|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;return}function _m(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=$(f);Km(a,b,c,d,e,f);return}function $m(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 pm(a,b,c,d,e,f)|0}function an(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 qm(a,b,c,d,e,f)|0}function bn(a,b,c){a=a|0;b=b|0;c=c|0;f[a+4>>2]=b;f[a+8>>2]=f[(f[(f[b+4>>2]|0)+8>>2]|0)+(c<<2)>>2];f[a+12>>2]=c;return 1}function cn(a){a=a|0;var b=0,c=0;if(!a)return;b=f[a>>2]|0;if(b|0){c=a+4|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;Oq(b)}Oq(a);return}function dn(a){a=a|0;f[a>>2]=2896;Fj(a+88|0);Oq(a);return}function en(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 rm(a,b,c,d,e,f)|0}function fn(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 sm(a,b,c,d,e,f)|0}function gn(a){a=a|0;f[a>>2]=3260;Fj(a+88|0);return}function hn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e|0;Ld(a,b,c,d,g)|0;u=e;return (I=f[g+4>>2]|0,f[g>>2]|0)|0}function jn(a){a=a|0;var b=0;eo(a);f[a>>2]=6152;b=a+84|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;f[b+20>>2]=0;return}function kn(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 um(a,b,c,d,e,f)|0}function ln(a){a=a|0;var b=0,c=0;b=(a|0)==0?1:a;while(1){a=$a(b)|0;if(a|0){c=a;break}a=Op()|0;if(!a){c=0;break}Ua[a&3]()}return c|0}function mn(a,b,c){a=a|0;b=b|0;c=c|0;ac(a,b,c);return}function nn(a){a=a|0;var b=0;f[a>>2]=3588;b=f[a+20>>2]|0;if(b|0)Oq(b);b=f[a+8>>2]|0;if(!b)return;Oq(b);return}function on(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 Cm(a,b,c,d,e,f)|0}function pn(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 Dm(a,b,c,d,e,f)|0}function qn(a){a=a|0;f[a>>2]=2896;Fj(a+88|0);return}function rn(a){a=a|0;var b=0,c=0,d=0;b=u;u=u+16|0;c=b;d=Qq(f[a+60>>2]|0)|0;f[c>>2]=d;d=to(Ba(6,c|0)|0)|0;u=b;return d|0}function sn(){var a=0,b=0;a=u;u=u+16|0;if(!(Ka(19700,3)|0)){b=Ia(f[4926]|0)|0;u=a;return b|0}else Hn(18840,a);return 0}function tn(a){a=a|0;var b=0;f[a>>2]=3636;b=f[a+20>>2]|0;if(b|0)Oq(b);b=f[a+8>>2]|0;if(!b)return;Oq(b);return}function un(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=bm(e,a)|0;f=I;return (I=(X(b,a)|0)+(X(d,e)|0)+f|f&0,c|0|0)|0}function vn(a,b){a=a|0;b=b|0;lh(a,b);f[a>>2]=1292;b=a+36|0;a=b+40|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function wn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;f[a+28>>2]=0;return}function xn(a){a=a|0;var b=0;b=u;u=u+16|0;yc(a);if(!(La(f[4926]|0,0)|0)){u=b;return}else Hn(18939,b)}function yn(a){a=a|0;var b=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;b=a+16|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;return}function zn(a,b){a=a|0;b=b|0;return vg(a+40|0,b)|0}function An(a,b){a=a|0;b=b|0;return lj(a,b,lq(b)|0)|0}function Bn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=u;u=u+16|0;g=e;f[g>>2]=d;d=Zi(a,b,c,g)|0;u=e;return d|0}function Cn(a,b){a=a|0;b=b|0;return Mj(a+40|0,b)|0}function Dn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Qh(a,b,c,d)|0}function En(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return uh(a,b,c,d)|0}function Fn(a,b){a=a|0;b=b|0;var c=0;c=f[a+56>>2]|0;return Ra[f[(f[c>>2]|0)+24>>2]&127](c,b)|0}function Gn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=0;return}function Hn(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;f[d>>2]=b;b=f[1556]|0;Ah(b,a,d)|0;Lj(10,b)|0;Ca()}function In(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 Ta[a&31](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Jn(a,b){a=a|0;b=b|0;var c=0;c=f[a+56>>2]|0;return Ra[f[(f[c>>2]|0)+16>>2]&127](c,b)|0}function Kn(a,b){a=a|0;b=b|0;var c=0;c=f[a+56>>2]|0;return Ra[f[(f[c>>2]|0)+20>>2]&127](c,b)|0}function Ln(a,b){a=a|0;b=b|0;var c=0;c=f[a+56>>2]|0;return Ra[f[(f[c>>2]|0)+12>>2]&127](c,b)|0}function Mn(){var a=0;a=u;u=u+16|0;if(!(Ja(19704,113)|0)){u=a;return}else Hn(18889,a)}function Nn(a,b,c){a=a|0;b=b|0;c=c|0;Pj(a,b,c);return}function On(a){a=a|0;cf(a);Oq(a);return}function Pn(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;_a[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Qn(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)sj(a|0,(kq(c)|0)&255|0,b|0)|0;return a|0}function Rn(a){a=a|0;return 4}function Sn(a,b,c){a=a|0;b=b|0;c=c|0;return ej(0,b,c)|0}function Tn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b<>>32-c;return a<>>0;return (I=b+d+(e>>>0>>0|0)>>>0,e|0)|0}function Wn(a,b){a=a|0;b=b|0;var c=0;if(!b)c=0;else c=Dh(f[b>>2]|0,f[b+4>>2]|0,a)|0;return (c|0?c:a)|0}function Xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return (I=e,a-c>>>0|0)|0}function Yn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Zn(a){a=a|0;var b=0;f[a>>2]=3932;b=a+4|0;a=b+44|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function _n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return De(a,b,c,d)|0}function $n(a){a=a|0;ff(a);Oq(a);return}function ao(a,b){a=a|0;b=b|0;ji(a);f[a+36>>2]=b;f[a+40>>2]=0;return}function bo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return $i(a,b,c,d)|0}function co(a){a=a|0;return 5}function eo(a){a=a|0;var b=0;f[a>>2]=6192;b=a+4|0;a=b+80|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(a|0));return}function fo(a){a=a|0;return 6}function go(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return aj(a,b,c,d)|0}function ho(a,b,c){a=a|0;b=b|0;c=c|0;f[a+28>>2]=b;f[a+32>>2]=c;return 1}function io(a,b){a=a|0;b=b|0;ji(a);f[a+36>>2]=b;f[a+40>>2]=b;return}function jo(a,b,c){a=a|0;b=b|0;c=c|0;Nn(a,b,c);return}function ko(a){a=a|0;var b=0;b=f[a+56>>2]|0;return Qa[f[(f[b>>2]|0)+28>>2]&127](b)|0}function lo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ve(a,b,c,d,1);return}function mo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ve(a,b,c,d,0);return}function no(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Xg(a,b,c,d)|0}function oo(a,b,c){a=a|0;b=b|0;c=c|0;return fi(a,b,c)|0}function po(a){a=a|0;var b=0;b=f[a+56>>2]|0;return Qa[f[(f[b>>2]|0)+32>>2]&127](b)|0}function qo(a,b,c){a=a|0;b=b|0;c=c|0;return ej(a,b,c)|0}function ro(a,b,c){a=a|0;b=b|0;c=c|0;return Sn(a,b,c)|0}function so(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Za[a&3](b|0,c|0,d|0,e|0,f|0)}function to(a){a=a|0;var b=0,c=0;if(a>>>0>4294963200){b=Vq()|0;f[b>>2]=0-a;c=-1}else c=a;return c|0}function uo(a,b,c){a=a|0;b=b|0;c=c|0;Li(a,b,c);return}function vo(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;return}function wo(a,b){a=a|0;b=b|0;f[a+8>>2]=b;f[a+12>>2]=-1;return 1}function xo(a,b){a=a|0;b=b|0;f[a+52>>2]=b;ip(a,b);return}function yo(a){a=+a;var b=0;p[s>>3]=a;b=f[s>>2]|0;I=f[s+4>>2]|0;return b|0}function zo(a){a=a|0;Hm(a);f[a>>2]=1476;f[a+36>>2]=0;return}function Ao(a){a=a|0;var b=0;if(!a)b=0;else b=(Eh(a,1056,1144,0)|0)!=0&1;return b|0}function Bo(a){a=a|0;if((b[a+11>>0]|0)<0)Oq(f[a>>2]|0);return}function Co(a){a=a|0;if(!a)return;Va[f[(f[a>>2]|0)+4>>2]&127](a);return}function Do(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Ya[a&3](b|0,c|0,d|0,e|0)}function Eo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)im(a|0,b|0,c|0)|0;return a|0}function Fo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)kh(a|0,b|0,c|0)|0;return a|0}function Go(a,b){a=a|0;b=b|0;return -1}function Ho(a){a=a|0;var b=0;b=u;u=u+16|0;Ua[a&3]();Hn(18992,b)}function Io(a){a=a|0;Lh(a);Oq(a);return}function Jo(a,b,c){a=a|0;b=b|0;c=c|0;Ro(a,b,c);return}function Ko(a,b,c){a=a|0;b=$(b);c=c|0;f[a+4>>2]=c;n[a>>2]=b;return}function Lo(a){a=a|0;To(a);f[a>>2]=3408;f[a+56>>2]=0;return}function Mo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Sa[a&31](b|0,c|0,d|0)|0}function No(a,b){a=a|0;b=b|0;return (wp(a,b)|0)<<24>>24|0}function Oo(a,b){a=a|0;b=b|0;f[a>>2]=7236;cm(a+4|0,b);return}function Po(a,b){a=a|0;b=b|0;var c=0;if(!a)c=0;else c=Pi(a,b,0)|0;return c|0}function Qo(a){a=a|0;return f[a+12>>2]|0}function Ro(a,b,c){a=a|0;b=b|0;c=c|0;uo(a,b,c);return}function So(){var a=0;a=ln(64)|0;Il(a);return a|0}function To(a){a=a|0;Zn(a);f[a>>2]=3764;f[a+52>>2]=0;return}function Uo(a){a=a|0;if(!a)return;bj(a);Oq(a);return}function Vo(a){a=a|0;return Qa[f[(f[a>>2]|0)+60>>2]&127](a)|0}function Wo(a){a=a|0;return f[a+4>>2]|0}function Xo(a,b,c){a=a|0;b=b|0;c=c|0;if(!(f[a>>2]&32))qi(b,c,a)|0;return}function Yo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Xa[a&15](b|0,c|0,d|0)}function Zo(){var a=0;a=ln(96)|0;Tm(a);return a|0}function _o(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function $o(a){a=a|0;var b=0;b=(Jq()|0)+188|0;return $j(a,f[b>>2]|0)|0}function ap(a){a=a|0;return ((f[a+100>>2]|0)-(f[a+96>>2]|0)|0)/12|0|0}function bp(a,b){a=a|0;b=b|0;kp(a,b);return}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;aa(3);return 0}function dp(){var a=0;a=ln(12)|0;op(a);return a|0}function ep(a){a=a|0;Ni(a);Oq(a);return}function fp(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function gp(a,b){a=a|0;b=b|0;var c=0;c=sp(a|0)|0;return ((b|0)==0?a:c)|0}function hp(a){a=a|0;return (f[a+12>>2]|0)-(f[a+8>>2]|0)>>2|0}function ip(a,b){a=a|0;b=b|0;f[a+4>>2]=b;return}function jp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ld(a,b,c,d,0)|0}function kp(a,b){a=a|0;b=b|0;jk(a,b);return}function lp(a){a=a|0;f[a+4>>2]=0;f[a+8>>2]=0;f[a>>2]=a+4;return}function mp(){var a=0;a=ln(84)|0;eo(a);return a|0}function np(a){a=a|0;ui(a);Oq(a);return}function op(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;return}function pp(a){a=a|0;f[a>>2]=7236;Am(a+4|0);return}function qp(a,b,c){a=a|0;b=b|0;c=c|0;return Ra[a&127](b|0,c|0)|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;aa(10)}function sp(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function tp(a){a=a|0;To(a);f[a>>2]=3836;return}function up(a,c){a=a|0;c=c|0;b[a>>0]=b[c>>0]|0;return}function vp(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function wp(a,c){a=a|0;c=c|0;return b[(f[a>>2]|0)+c>>0]|0}function xp(a){a=a|0;return (f[a+4>>2]|0)-(f[a>>2]|0)|0}function yp(a){a=a|0;mj(a);Oq(a);return}function zp(a){a=a|0;if(!a)return;Oq(a);return}function Ap(a){a=a|0;n[a>>2]=$(1.0);f[a+4>>2]=1;return}function Bp(a){a=a|0;b[a+28>>0]=1;return}function Cp(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function Dp(a){a=a|0;ji(a);return}function Ep(a,b){a=a|0;b=b|0;return 1}function Fp(a){a=a|0;return a+12|0}function Gp(a,b){a=a|0;b=b|0;f[a+80>>2]=b;return}function Hp(a,b,c){a=a|0;b=b|0;c=c|0;Wa[a&7](b|0,c|0)}function Ip(){var a=0;a=ln(36)|0;qq(a);return a|0}function Jp(a){a=a|0;return gq(a+4|0)|0}function Kp(){var a=0;a=ln(108)|0;jn(a);return a|0}function Lp(a){a=a|0;return (b[a+32>>0]|0)!=0|0}function Mp(a){a=a|0;return a+-12|0}function Np(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(9)}function Op(){var a=0;a=f[4927]|0;f[4927]=a+0;return a|0}function Pp(a){a=a|0;return f[a+56>>2]|0}function Qp(){var a=0;a=f[1786]|0;f[1786]=a+0;return a|0}function Rp(a){a=a|0;Og(a);Oq(a);return}function Sp(a){a=a|0;Sq(a);Oq(a);return}function Tp(a){a=a|0;return b[a+24>>0]|0}function Up(a,b){a=a|0;b=b|0;return 0}function Vp(a){a=a|0;return f[a+40>>2]|0}function Wp(a){a=a|0;return f[a+48>>2]|0}function Xp(a,b){a=a|0;b=b|0;return Qa[a&127](b|0)|0}function Yp(a){a=a|0;return f[a+60>>2]|0}function Zp(a){a=a|0;return f[a+28>>2]|0}function _p(a){a=a|0;sa(a|0)|0;om()}function $p(a){a=a|0;pp(a);Oq(a);return}function aq(a){a=a|0;Ca()}function bq(a,b){a=a|0;b=b|0;return $(+Bk(a,b,0))}function cq(a){a=a|0;return 3}function dq(a,b){a=a|0;b=b|0;u=a;v=b}function eq(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function fq(a){a=a|0;return f[a+80>>2]|0}function gq(a){a=a|0;return f[a>>2]|0}function hq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(8)}function iq(a,b){a=a|0;b=b|0;Va[a&127](b|0)}function jq(a,b){a=a|0;b=b|0;return Wn(a,b)|0}function kq(a){a=a|0;return a&255|0}function lq(a){a=a|0;return Gj(a)|0}function mq(a,b){a=a|0;b=b|0;return +(+Bk(a,b,1))}function nq(a,b,c){a=a|0;b=b|0;c=c|0;aa(2);return 0}function oq(a){a=a|0;return 2}function pq(a){a=a|0;return 1}function qq(a){a=a|0;Dp(a);return}function rq(a,b){a=+a;b=+b;return +(+Yl(a,b))}function sq(a,b){a=+a;b=b|0;return +(+bk(a,b))}function tq(a,b){a=+a;b=b|0;return +(+ak(a,b))}function uq(){return 3}function vq(a,b,c){a=a|0;b=b|0;c=c|0;aa(7)}function wq(){return 0}function xq(){return -1}function yq(){return ln(1)|0}function zq(){return 4}function Aq(a){a=a|0;return (a+-48|0)>>>0<10|0}function Bq(){return 1}function Cq(){return 2}function Dq(a,b){a=+a;b=+b;return +(+xd(a,b))}function Eq(a,b){a=a|0;b=b|0;aa(1);return 0}function Fq(a){a=a|0;Ha()}function Gq(a){a=a|0;Ua[a&3]()}function Hq(){ua()}function Iq(a){a=a|0;return +(+mq(a,0))}function Jq(){return Yq()|0}function Kq(a,b){a=a|0;b=b|0;aa(6)}function Lq(a){a=a|0;return ln(a)|0}function Mq(a){a=a|0;Oq(a);return}function Nq(a){a=a|0;u=a}function Oq(a){a=a|0;yc(a);return}function Pq(a){a=a|0;I=a}function Qq(a){a=a|0;return a|0}function Rq(a){a=a|0;aa(0);return 0}function Sq(a){a=a|0;return}function Tq(a){a=a|0;return 0}function Uq(){return I|0}function Vq(){return 19632}function Wq(){return u|0}function Xq(a){a=a|0;aa(5)}function Yq(){return 6352}function Zq(){aa(4)} - -// EMSCRIPTEN_END_FUNCS -var Qa=[Rq,oq,pq,pq,oq,gb,Tq,Tq,Tq,hk,kg,pq,Wo,Tq,Tq,pq,Tq,pq,pq,yl,oq,yl,cq,wl,pq,co,wl,pq,fo,cl,pq,Zp,Rn,yl,pq,yl,oq,yl,cq,wl,pq,co,wl,pq,fo,cl,pq,Zp,Rn,yl,pq,cq,Tq,Wo,pq,Tq,pq,cq,pq,ql,oq,ql,Rn,ql,cq,pl,pq,co,pl,pq,fo,Wk,pq,Zp,pq,ql,oq,ql,Rn,ql,cq,pl,pq,co,pl,pq,fo,Wk,pq,Zp,pq,oq,pq,pq,Nd,pq,Vo,Xe,mh,zk,po,ko,pb,Qo,Wo,Mg,Wg,Lf,rb,Qo,Wo,pq,Tq,Tq,zc,Ki,Tq,pq,pq,Uj,Tq,Uj,ck,rn,Jp,Rq,Rq,Rq];var Ra=[Eq,xl,nh,Ie,El,Up,Up,Up,Ep,jb,rj,wo,Ep,Ep,ti,nj,ii,kk,ol,Qj,$k,dk,ek,Te,Go,Up,ni,Up,Pl,$d,Up,Pl,nf,Up,Ml,sh,mm,Ed,Up,Pl,$d,Up,Pl,nf,Up,Ml,sh,mm,Ed,Cn,Go,Up,li,Dd,Up,Fl,Zd,Up,Fl,hf,Up,Bl,rh,mm,Dd,Up,Fl,Zd,Up,Fl,hf,Up,Bl,rh,mm,zn,Kn,Fn,Ln,Jn,dh,ik,uk,cc,ye,Rm,og,vf,wf,ah,ik,uk,bc,ye,Rm,Ep,Up,Up,of,zm,mg,of,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq,Eq];var Sa=[nq,ho,vp,bn,Sm,wg,oj,kl,xh,wc,Kh,pg,gi,Rb,di,Ng,ml,Nm,Cj,nq,nq,nq,nq,nq,nq,nq,nq,nq,nq,nq,nq,nq];var Ta=[cp,Xd,Jc,oc,be,Ae,Tb,bb,Lc,pc,ae,ze,Sb,ab,eh,kd,Ic,fb,pf,If,tc,od,Kc,db,kf,Gf,qc,cp,cp,cp,cp,cp];var Ua=[Zq,Hq,Oi,Mn];var Va=[Xq,Sq,Mq,Gm,jm,al,Fq,ui,np,Ni,ep,Lh,Io,Jm,Fm,gm,Fq,Ql,Ql,Ql,Jk,wk,_k,Rk,el,Uk,Sq,Mq,Fq,Yi,em,Ql,Ql,Dk,rk,Xk,Pk,bl,Tk,Sq,Mq,Fq,Vi,Ul,Jm,Fm,Sq,Mq,Mq,Mq,yj,Jl,Sl,Al,Im,tm,qn,dn,Sq,Mq,Mq,Mq,vj,zl,Kl,sl,Em,km,gn,Um,Sq,Mq,xk,ok,nm,Lm,ff,$n,vk,nk,nn,Om,Tl,Ak,qk,tn,Xm,Wl,fm,_l,cf,On,mj,Fq,yp,Sq,Mq,Fq,yp,yp,Nk,Gk,sb,Og,Rp,Sq,Sp,Sq,Sq,Sp,pp,$p,$p,xn,Xq,Xq,Xq,Xq,Xq,Xq,Xq,Xq,Xq,Xq,Xq,Xq,Xq,Xq];var Wa=[Kq,pk,gg,yk,Nc,Kq,Kq,Kq];var Xa=[vq,Ne,ij,$b,ic,yd,$b,ic,$g,Aj,Lg,Yf,vq,vq,vq,vq];var Ya=[hq,hm,dl,hq];var Za=[Np,tj,oh,Np];var _a=[rp,Rl,Sk,rp];return{___cxa_can_catch:lm,___cxa_is_pointer_type:Ao,___divdi3:Ik,___muldi3:un,___udivdi3:jp,___uremdi3:hn,_bitshift64Lshr:Yn,_bitshift64Shl:Tn,_emscripten_bind_DracoInt8Array_DracoInt8Array_0:dp,_emscripten_bind_DracoInt8Array_GetValue_1:No,_emscripten_bind_DracoInt8Array___destroy___0:cn,_emscripten_bind_DracoInt8Array_size_0:xp,_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2:oo,_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3:En,_emscripten_bind_Encoder_Encoder_0:Ip,_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5:_m,_emscripten_bind_Encoder_SetAttributeQuantization_2:jo,_emscripten_bind_Encoder_SetEncodingMethod_1:bp,_emscripten_bind_Encoder_SetSpeedOptions_2:Jo,_emscripten_bind_Encoder___destroy___0:Wj,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:So,_emscripten_bind_GeometryAttribute___destroy___0:zp,_emscripten_bind_MeshBuilder_AddFacesToMesh_3:no,_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5:pn,_emscripten_bind_MeshBuilder_AddFloatAttribute_5:pn,_emscripten_bind_MeshBuilder_AddInt16Attribute_5:fn,_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5:on,_emscripten_bind_MeshBuilder_AddInt32Attribute_5:on,_emscripten_bind_MeshBuilder_AddInt8Attribute_5:kn,_emscripten_bind_MeshBuilder_AddMetadataToMesh_2:ro,_emscripten_bind_MeshBuilder_AddMetadata_2:qo,_emscripten_bind_MeshBuilder_AddUInt16Attribute_5:an,_emscripten_bind_MeshBuilder_AddUInt32Attribute_5:$m,_emscripten_bind_MeshBuilder_AddUInt8Attribute_5:en,_emscripten_bind_MeshBuilder_MeshBuilder_0:yq,_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3:Dn,_emscripten_bind_MeshBuilder___destroy___0:zp,_emscripten_bind_Mesh_Mesh_0:Kp,_emscripten_bind_Mesh___destroy___0:Co,_emscripten_bind_Mesh_num_attributes_0:hp,_emscripten_bind_Mesh_num_faces_0:ap,_emscripten_bind_Mesh_num_points_0:fq,_emscripten_bind_Mesh_set_num_points_1:Gp,_emscripten_bind_MetadataBuilder_AddDoubleEntry_3:bo,_emscripten_bind_MetadataBuilder_AddIntEntry_3:go,_emscripten_bind_MetadataBuilder_AddStringEntry_3:_n,_emscripten_bind_MetadataBuilder_MetadataBuilder_0:yq,_emscripten_bind_MetadataBuilder___destroy___0:zp,_emscripten_bind_Metadata_Metadata_0:Xl,_emscripten_bind_Metadata___destroy___0:Uo,_emscripten_bind_PointAttribute_PointAttribute_0:Zo,_emscripten_bind_PointAttribute___destroy___0:Ij,_emscripten_bind_PointAttribute_attribute_type_0:Pp,_emscripten_bind_PointAttribute_byte_offset_0:Wp,_emscripten_bind_PointAttribute_byte_stride_0:Vp,_emscripten_bind_PointAttribute_data_type_0:Zp,_emscripten_bind_PointAttribute_normalized_0:Lp,_emscripten_bind_PointAttribute_num_components_0:Tp,_emscripten_bind_PointAttribute_size_0:fq,_emscripten_bind_PointAttribute_unique_id_0:Yp,_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5:pn,_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5:fn,_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5:on,_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5:kn,_emscripten_bind_PointCloudBuilder_AddMetadata_2:qo,_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5:an,_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5:$m,_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5:en,_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0:yq,_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3:Dn,_emscripten_bind_PointCloudBuilder___destroy___0:zp,_emscripten_bind_PointCloud_PointCloud_0:mp,_emscripten_bind_PointCloud___destroy___0:Co,_emscripten_bind_PointCloud_num_attributes_0:hp,_emscripten_bind_PointCloud_num_points_0:fq,_emscripten_bind_VoidPtr___destroy___0:zp,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:xq,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:wq,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:Bq,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:Cq,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:zq,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:xq,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:Bq,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:wq,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:uq,_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING:Bq,_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING:wq,_emscripten_replace_memory:Pa,_free:yc,_i64Add:Vn,_i64Subtract:Xn,_llvm_bswap_i32:sp,_malloc:$a,_memcpy:kh,_memmove:im,_memset:sj,_sbrk:Nl,dynCall_ii:Xp,dynCall_iii:qp,dynCall_iiii:Mo,dynCall_iiiiiii:In,dynCall_v:Gq,dynCall_vi:iq,dynCall_vii:Hp,dynCall_viii:Yo,dynCall_viiii:Do,dynCall_viiiii:so,dynCall_viiiiii:Pn,establishStackSpace:dq,getTempRet0:Uq,runPostSets:Un,setTempRet0:Pq,setThrew:Cp,stackAlloc:_o,stackRestore:Nq,stackSave:Wq}}) - - -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var ___divdi3=Module["___divdi3"]=asm["___divdi3"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_bind_DracoInt8Array_DracoInt8Array_0=Module["_emscripten_bind_DracoInt8Array_DracoInt8Array_0"]=asm["_emscripten_bind_DracoInt8Array_DracoInt8Array_0"];var _emscripten_bind_DracoInt8Array_GetValue_1=Module["_emscripten_bind_DracoInt8Array_GetValue_1"]=asm["_emscripten_bind_DracoInt8Array_GetValue_1"];var _emscripten_bind_DracoInt8Array___destroy___0=Module["_emscripten_bind_DracoInt8Array___destroy___0"]=asm["_emscripten_bind_DracoInt8Array___destroy___0"];var _emscripten_bind_DracoInt8Array_size_0=Module["_emscripten_bind_DracoInt8Array_size_0"]=asm["_emscripten_bind_DracoInt8Array_size_0"];var _emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2=Module["_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2"]=asm["_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2"];var _emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3=Module["_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3"]=asm["_emscripten_bind_Encoder_EncodePointCloudToDracoBuffer_3"];var _emscripten_bind_Encoder_Encoder_0=Module["_emscripten_bind_Encoder_Encoder_0"]=asm["_emscripten_bind_Encoder_Encoder_0"];var _emscripten_bind_Encoder_SetAttributeExplicitQuantization_5=Module["_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5"]=asm["_emscripten_bind_Encoder_SetAttributeExplicitQuantization_5"];var _emscripten_bind_Encoder_SetAttributeQuantization_2=Module["_emscripten_bind_Encoder_SetAttributeQuantization_2"]=asm["_emscripten_bind_Encoder_SetAttributeQuantization_2"];var _emscripten_bind_Encoder_SetEncodingMethod_1=Module["_emscripten_bind_Encoder_SetEncodingMethod_1"]=asm["_emscripten_bind_Encoder_SetEncodingMethod_1"];var _emscripten_bind_Encoder_SetSpeedOptions_2=Module["_emscripten_bind_Encoder_SetSpeedOptions_2"]=asm["_emscripten_bind_Encoder_SetSpeedOptions_2"];var _emscripten_bind_Encoder___destroy___0=Module["_emscripten_bind_Encoder___destroy___0"]=asm["_emscripten_bind_Encoder___destroy___0"];var _emscripten_bind_GeometryAttribute_GeometryAttribute_0=Module["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"]=asm["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"];var _emscripten_bind_GeometryAttribute___destroy___0=Module["_emscripten_bind_GeometryAttribute___destroy___0"]=asm["_emscripten_bind_GeometryAttribute___destroy___0"];var _emscripten_bind_MeshBuilder_AddFacesToMesh_3=Module["_emscripten_bind_MeshBuilder_AddFacesToMesh_3"]=asm["_emscripten_bind_MeshBuilder_AddFacesToMesh_3"];var _emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5=Module["_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5"]=asm["_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5"];var _emscripten_bind_MeshBuilder_AddFloatAttribute_5=Module["_emscripten_bind_MeshBuilder_AddFloatAttribute_5"]=asm["_emscripten_bind_MeshBuilder_AddFloatAttribute_5"];var _emscripten_bind_MeshBuilder_AddInt16Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt16Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt16Attribute_5"];var _emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5=Module["_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5"]=asm["_emscripten_bind_MeshBuilder_AddInt32AttributeToMesh_5"];var _emscripten_bind_MeshBuilder_AddInt32Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt32Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt32Attribute_5"];var _emscripten_bind_MeshBuilder_AddInt8Attribute_5=Module["_emscripten_bind_MeshBuilder_AddInt8Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddInt8Attribute_5"];var _emscripten_bind_MeshBuilder_AddMetadataToMesh_2=Module["_emscripten_bind_MeshBuilder_AddMetadataToMesh_2"]=asm["_emscripten_bind_MeshBuilder_AddMetadataToMesh_2"];var _emscripten_bind_MeshBuilder_AddMetadata_2=Module["_emscripten_bind_MeshBuilder_AddMetadata_2"]=asm["_emscripten_bind_MeshBuilder_AddMetadata_2"];var _emscripten_bind_MeshBuilder_AddUInt16Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt16Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt16Attribute_5"];var _emscripten_bind_MeshBuilder_AddUInt32Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt32Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt32Attribute_5"];var _emscripten_bind_MeshBuilder_AddUInt8Attribute_5=Module["_emscripten_bind_MeshBuilder_AddUInt8Attribute_5"]=asm["_emscripten_bind_MeshBuilder_AddUInt8Attribute_5"];var _emscripten_bind_MeshBuilder_MeshBuilder_0=Module["_emscripten_bind_MeshBuilder_MeshBuilder_0"]=asm["_emscripten_bind_MeshBuilder_MeshBuilder_0"];var _emscripten_bind_MeshBuilder_SetMetadataForAttribute_3=Module["_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3"]=asm["_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3"];var _emscripten_bind_MeshBuilder___destroy___0=Module["_emscripten_bind_MeshBuilder___destroy___0"]=asm["_emscripten_bind_MeshBuilder___destroy___0"];var _emscripten_bind_Mesh_Mesh_0=Module["_emscripten_bind_Mesh_Mesh_0"]=asm["_emscripten_bind_Mesh_Mesh_0"];var _emscripten_bind_Mesh___destroy___0=Module["_emscripten_bind_Mesh___destroy___0"]=asm["_emscripten_bind_Mesh___destroy___0"];var _emscripten_bind_Mesh_num_attributes_0=Module["_emscripten_bind_Mesh_num_attributes_0"]=asm["_emscripten_bind_Mesh_num_attributes_0"];var _emscripten_bind_Mesh_num_faces_0=Module["_emscripten_bind_Mesh_num_faces_0"]=asm["_emscripten_bind_Mesh_num_faces_0"];var _emscripten_bind_Mesh_num_points_0=Module["_emscripten_bind_Mesh_num_points_0"]=asm["_emscripten_bind_Mesh_num_points_0"];var _emscripten_bind_Mesh_set_num_points_1=Module["_emscripten_bind_Mesh_set_num_points_1"]=asm["_emscripten_bind_Mesh_set_num_points_1"];var _emscripten_bind_MetadataBuilder_AddDoubleEntry_3=Module["_emscripten_bind_MetadataBuilder_AddDoubleEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddDoubleEntry_3"];var _emscripten_bind_MetadataBuilder_AddIntEntry_3=Module["_emscripten_bind_MetadataBuilder_AddIntEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddIntEntry_3"];var _emscripten_bind_MetadataBuilder_AddStringEntry_3=Module["_emscripten_bind_MetadataBuilder_AddStringEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddStringEntry_3"];var _emscripten_bind_MetadataBuilder_MetadataBuilder_0=Module["_emscripten_bind_MetadataBuilder_MetadataBuilder_0"]=asm["_emscripten_bind_MetadataBuilder_MetadataBuilder_0"];var _emscripten_bind_MetadataBuilder___destroy___0=Module["_emscripten_bind_MetadataBuilder___destroy___0"]=asm["_emscripten_bind_MetadataBuilder___destroy___0"];var _emscripten_bind_Metadata_Metadata_0=Module["_emscripten_bind_Metadata_Metadata_0"]=asm["_emscripten_bind_Metadata_Metadata_0"];var _emscripten_bind_Metadata___destroy___0=Module["_emscripten_bind_Metadata___destroy___0"]=asm["_emscripten_bind_Metadata___destroy___0"];var _emscripten_bind_PointAttribute_PointAttribute_0=Module["_emscripten_bind_PointAttribute_PointAttribute_0"]=asm["_emscripten_bind_PointAttribute_PointAttribute_0"];var _emscripten_bind_PointAttribute___destroy___0=Module["_emscripten_bind_PointAttribute___destroy___0"]=asm["_emscripten_bind_PointAttribute___destroy___0"];var _emscripten_bind_PointAttribute_attribute_type_0=Module["_emscripten_bind_PointAttribute_attribute_type_0"]=asm["_emscripten_bind_PointAttribute_attribute_type_0"];var _emscripten_bind_PointAttribute_byte_offset_0=Module["_emscripten_bind_PointAttribute_byte_offset_0"]=asm["_emscripten_bind_PointAttribute_byte_offset_0"];var _emscripten_bind_PointAttribute_byte_stride_0=Module["_emscripten_bind_PointAttribute_byte_stride_0"]=asm["_emscripten_bind_PointAttribute_byte_stride_0"];var _emscripten_bind_PointAttribute_data_type_0=Module["_emscripten_bind_PointAttribute_data_type_0"]=asm["_emscripten_bind_PointAttribute_data_type_0"];var _emscripten_bind_PointAttribute_normalized_0=Module["_emscripten_bind_PointAttribute_normalized_0"]=asm["_emscripten_bind_PointAttribute_normalized_0"];var _emscripten_bind_PointAttribute_num_components_0=Module["_emscripten_bind_PointAttribute_num_components_0"]=asm["_emscripten_bind_PointAttribute_num_components_0"];var _emscripten_bind_PointAttribute_size_0=Module["_emscripten_bind_PointAttribute_size_0"]=asm["_emscripten_bind_PointAttribute_size_0"];var _emscripten_bind_PointAttribute_unique_id_0=Module["_emscripten_bind_PointAttribute_unique_id_0"]=asm["_emscripten_bind_PointAttribute_unique_id_0"];var _emscripten_bind_PointCloudBuilder_AddFloatAttribute_5=Module["_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddFloatAttribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt16Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt16Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt32Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt32Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddInt8Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddInt8Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddMetadata_2=Module["_emscripten_bind_PointCloudBuilder_AddMetadata_2"]=asm["_emscripten_bind_PointCloudBuilder_AddMetadata_2"];var _emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt16Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt32Attribute_5"];var _emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5=Module["_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5"]=asm["_emscripten_bind_PointCloudBuilder_AddUInt8Attribute_5"];var _emscripten_bind_PointCloudBuilder_PointCloudBuilder_0=Module["_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0"]=asm["_emscripten_bind_PointCloudBuilder_PointCloudBuilder_0"];var _emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3=Module["_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3"]=asm["_emscripten_bind_PointCloudBuilder_SetMetadataForAttribute_3"];var _emscripten_bind_PointCloudBuilder___destroy___0=Module["_emscripten_bind_PointCloudBuilder___destroy___0"]=asm["_emscripten_bind_PointCloudBuilder___destroy___0"];var _emscripten_bind_PointCloud_PointCloud_0=Module["_emscripten_bind_PointCloud_PointCloud_0"]=asm["_emscripten_bind_PointCloud_PointCloud_0"];var _emscripten_bind_PointCloud___destroy___0=Module["_emscripten_bind_PointCloud___destroy___0"]=asm["_emscripten_bind_PointCloud___destroy___0"];var _emscripten_bind_PointCloud_num_attributes_0=Module["_emscripten_bind_PointCloud_num_attributes_0"]=asm["_emscripten_bind_PointCloud_num_attributes_0"];var _emscripten_bind_PointCloud_num_points_0=Module["_emscripten_bind_PointCloud_num_points_0"]=asm["_emscripten_bind_PointCloud_num_points_0"];var _emscripten_bind_VoidPtr___destroy___0=Module["_emscripten_bind_VoidPtr___destroy___0"]=asm["_emscripten_bind_VoidPtr___destroy___0"];var _emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=Module["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"]=asm["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"];var _emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=Module["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"]=asm["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"];var _emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=Module["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"]=asm["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"];var _emscripten_enum_draco_GeometryAttribute_Type_COLOR=Module["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"];var _emscripten_enum_draco_GeometryAttribute_Type_GENERIC=Module["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"];var _emscripten_enum_draco_GeometryAttribute_Type_INVALID=Module["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"];var _emscripten_enum_draco_GeometryAttribute_Type_NORMAL=Module["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"];var _emscripten_enum_draco_GeometryAttribute_Type_POSITION=Module["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"];var _emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=Module["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"];var _emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING=Module["_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING"]=asm["_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING"];var _emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING=Module["_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING"]=asm["_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _free=Module["_free"]=asm["_free"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _malloc=Module["_malloc"]=asm["_malloc"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _memmove=Module["_memmove"]=asm["_memmove"];var _memset=Module["_memset"]=asm["_memset"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var stackSave=Module["stackSave"]=asm["stackSave"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];Module["asm"]=asm;if(memoryInitializer){if(!isDataURI(memoryInitializer)){if(typeof Module["locateFile"]==="function"){memoryInitializer=Module["locateFile"](memoryInitializer)}else if(Module["memoryInitializerPrefixURL"]){memoryInitializer=Module["memoryInitializerPrefixURL"]+memoryInitializer}}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=Module["readBinary"](memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=(function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")});function doBrowserLoad(){Module["readAsync"](memoryInitializer,applyMemoryInitializer,(function(){throw"could not load memory initializer "+memoryInitializer}))}var memoryInitializerBytes=tryParseAsDataURI(memoryInitializer);if(memoryInitializerBytes){applyMemoryInitializer(memoryInitializerBytes.buffer)}else if(Module["memoryInitializerRequest"]){function useRequest(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){var data=tryParseAsDataURI(Module["memoryInitializerRequestURL"]);if(data){response=data.buffer}else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}}applyMemoryInitializer(response)}if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});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;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){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"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=exit;function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;i>>0,$jscomp.propertyToPolyfillSymbol[l]=$jscomp.IS_SYMBOL_NATIVE? -$jscomp.global.Symbol(l):$jscomp.POLYFILL_PREFIX+k+"$"+l),$jscomp.defineProperty(p,$jscomp.propertyToPolyfillSymbol[l],{configurable:!0,writable:!0,value:n})))}; -$jscomp.polyfill("Promise",function(h){function n(){this.batch_=null}function k(f){return f instanceof l?f:new l(function(q,u){q(f)})}if(h&&(!($jscomp.FORCE_POLYFILL_PROMISE||$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&"undefined"===typeof $jscomp.global.PromiseRejectionEvent)||!$jscomp.global.Promise||-1===$jscomp.global.Promise.toString().indexOf("[native code]")))return h;n.prototype.asyncExecute=function(f){if(null==this.batch_){this.batch_=[];var q=this;this.asyncExecuteFunction(function(){q.executeBatch_()})}this.batch_.push(f)}; -var p=$jscomp.global.setTimeout;n.prototype.asyncExecuteFunction=function(f){p(f,0)};n.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var f=this.batch_;this.batch_=[];for(var q=0;q=y}},"es6","es3"); -$jscomp.polyfill("Array.prototype.copyWithin",function(h){function n(k){k=Number(k);return Infinity===k||-Infinity===k?k:k|0}return h?h:function(k,p,l){var y=this.length;k=n(k);p=n(p);l=void 0===l?y:n(l);k=0>k?Math.max(y+k,0):Math.min(k,y);p=0>p?Math.max(y+p,0):Math.min(p,y);l=0>l?Math.max(y+l,0):Math.min(l,y);if(kp;)--l in this?this[--k]=this[l]:delete this[--k];return this}},"es6","es3"); -$jscomp.typedArrayCopyWithin=function(h){return h?h:Array.prototype.copyWithin};$jscomp.polyfill("Int8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8ClampedArray.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5"); -$jscomp.polyfill("Uint16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float64Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5"); -var DracoDecoderModule=function(){var h="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;"undefined"!==typeof __filename&&(h=h||__filename);return function(n){function k(e){return a.locateFile?a.locateFile(e,U):U+e}function p(e,b){if(e){var c=ia;var d=e+b;for(b=e;c[b]&&!(b>=d);)++b;if(16g?d+=String.fromCharCode(g):(g-=65536,d+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else d+=String.fromCharCode(g)}c=d}}else c="";return c}function l(){var e=ja.buffer;a.HEAP8=W=new Int8Array(e);a.HEAP16=new Int16Array(e);a.HEAP32=ca=new Int32Array(e);a.HEAPU8=ia=new Uint8Array(e);a.HEAPU16=new Uint16Array(e);a.HEAPU32=Y=new Uint32Array(e);a.HEAPF32=new Float32Array(e);a.HEAPF64=new Float64Array(e)}function y(e){if(a.onAbort)a.onAbort(e); -e="Aborted("+e+")";da(e);sa=!0;e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info.");ka(e);throw e;}function f(e){try{if(e==P&&ea)return new Uint8Array(ea);if(ma)return ma(e);throw"both async and sync fetching of the wasm failed";}catch(b){y(b)}}function q(){if(!ea&&(ta||fa)){if("function"==typeof fetch&&!P.startsWith("file://"))return fetch(P,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+P+"'";return e.arrayBuffer()}).catch(function(){return f(P)}); -if(na)return new Promise(function(e,b){na(P,function(c){e(new Uint8Array(c))},b)})}return Promise.resolve().then(function(){return f(P)})}function u(e){for(;0>2]=b};this.get_type=function(){return Y[this.ptr+4>>2]};this.set_destructor=function(b){Y[this.ptr+8>>2]=b};this.get_destructor=function(){return Y[this.ptr+8>>2]};this.set_refcount=function(b){ca[this.ptr>>2]=b};this.set_caught=function(b){W[this.ptr+ -12>>0]=b?1:0};this.get_caught=function(){return 0!=W[this.ptr+12>>0]};this.set_rethrown=function(b){W[this.ptr+13>>0]=b?1:0};this.get_rethrown=function(){return 0!=W[this.ptr+13>>0]};this.init=function(b,c){this.set_adjusted_ptr(0);this.set_type(b);this.set_destructor(c);this.set_refcount(0);this.set_caught(!1);this.set_rethrown(!1)};this.add_ref=function(){ca[this.ptr>>2]+=1};this.release_ref=function(){var b=ca[this.ptr>>2];ca[this.ptr>>2]=b-1;return 1===b};this.set_adjusted_ptr=function(b){Y[this.ptr+ -16>>2]=b};this.get_adjusted_ptr=function(){return Y[this.ptr+16>>2]};this.get_exception_ptr=function(){if(ua(this.get_type()))return Y[this.excPtr>>2];var b=this.get_adjusted_ptr();return 0!==b?b:this.excPtr}}function F(){function e(){if(!la&&(la=!0,a.calledRun=!0,!sa)){va=!0;u(oa);wa(a);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)xa.unshift(a.postRun.shift());u(xa)}}if(!(0=d?b++:2047>=d?b+=2:55296<=d&&57343>= -d?(b+=4,++c):b+=3}b=Array(b+1);c=0;d=b.length;if(0=t){var aa=e.charCodeAt(++g);t=65536+((t&1023)<<10)|aa&1023}if(127>=t){if(c>=d)break;b[c++]=t}else{if(2047>=t){if(c+1>=d)break;b[c++]=192|t>>6}else{if(65535>=t){if(c+2>=d)break;b[c++]=224|t>>12}else{if(c+3>=d)break;b[c++]=240|t>>18;b[c++]=128|t>>12&63}b[c++]=128|t>>6&63}b[c++]=128|t&63}}b[c]=0}e=r.alloc(b,W);r.copy(b,W,e);return e}return e}function Z(e){if("object"=== -typeof e){var b=r.alloc(e,W);r.copy(e,W,b);return b}return e}function X(){throw"cannot construct a VoidPtr, no constructor in IDL";}function S(){this.ptr=za();w(S)[this.ptr]=this}function Q(){this.ptr=Aa();w(Q)[this.ptr]=this}function V(){this.ptr=Ba();w(V)[this.ptr]=this}function x(){this.ptr=Ca();w(x)[this.ptr]=this}function D(){this.ptr=Da();w(D)[this.ptr]=this}function G(){this.ptr=Ea();w(G)[this.ptr]=this}function H(){this.ptr=Fa();w(H)[this.ptr]=this}function E(){this.ptr=Ga();w(E)[this.ptr]= -this}function T(){this.ptr=Ha();w(T)[this.ptr]=this}function C(){throw"cannot construct a Status, no constructor in IDL";}function I(){this.ptr=Ia();w(I)[this.ptr]=this}function J(){this.ptr=Ja();w(J)[this.ptr]=this}function K(){this.ptr=Ka();w(K)[this.ptr]=this}function L(){this.ptr=La();w(L)[this.ptr]=this}function M(){this.ptr=Ma();w(M)[this.ptr]=this}function N(){this.ptr=Na();w(N)[this.ptr]=this}function O(){this.ptr=Oa();w(O)[this.ptr]=this}function z(){this.ptr=Pa();w(z)[this.ptr]=this}function m(){this.ptr= -Qa();w(m)[this.ptr]=this}n=void 0===n?{}:n;var a="undefined"!=typeof n?n:{},wa,ka;a.ready=new Promise(function(e,b){wa=e;ka=b});var Ra=!1,Sa=!1;a.onRuntimeInitialized=function(){Ra=!0;if(Sa&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Sa=!0;if(Ra&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(e){if("string"!==typeof e)return!1;e=e.split(".");return 2>e.length||3=e[1]?!0:0!=e[0]||10< -e[1]?!1:!0};var Ta=Object.assign({},a),ta="object"==typeof window,fa="function"==typeof importScripts,Ua="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,U="";if(Ua){var Va=require("fs"),pa=require("path");U=fa?pa.dirname(U)+"/":__dirname+"/";var Wa=function(e,b){e=e.startsWith("file://")?new URL(e):pa.normalize(e);return Va.readFileSync(e,b?void 0:"utf8")};var ma=function(e){e=Wa(e,!0);e.buffer||(e=new Uint8Array(e));return e};var na=function(e, -b,c){e=e.startsWith("file://")?new URL(e):pa.normalize(e);Va.readFile(e,function(d,g){d?c(d):b(g.buffer)})};1>>=0;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,e+100663296);var g=Math;d=Math.max(e,d);g=g.min.call(g,2147483648,d+(65536-d%65536)%65536);a:{d=ja.buffer;try{ja.grow(g-d.byteLength+65535>>>16);l();var t=1;break a}catch(aa){}t=void 0}if(t)return!0}return!1}};(function(){function e(g,t){a.asm=g.exports;ja=a.asm.e;l();oa.unshift(a.asm.f);ba--;a.monitorRunDependencies&&a.monitorRunDependencies(ba);0==ba&&(null!==qa&&(clearInterval(qa),qa=null),ha&&(g=ha,ha=null,g()))}function b(g){e(g.instance)} -function c(g){return q().then(function(t){return WebAssembly.instantiate(t,d)}).then(function(t){return t}).then(g,function(t){da("failed to asynchronously prepare wasm: "+t);y(t)})}var d={a:qd};ba++;a.monitorRunDependencies&&a.monitorRunDependencies(ba);if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(g){da("Module.instantiateWasm callback failed with error: "+g),ka(g)}(function(){return ea||"function"!=typeof WebAssembly.instantiateStreaming||P.startsWith("data:application/octet-stream;base64,")|| -P.startsWith("file://")||Ua||"function"!=typeof fetch?c(b):fetch(P,{credentials:"same-origin"}).then(function(g){return WebAssembly.instantiateStreaming(g,d).then(b,function(t){da("wasm streaming compile failed: "+t);da("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ka);return{}})();var Xa=a._emscripten_bind_VoidPtr___destroy___0=function(){return(Xa=a._emscripten_bind_VoidPtr___destroy___0=a.asm.h).apply(null,arguments)},za=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0= -function(){return(za=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=a.asm.i).apply(null,arguments)},Ya=a._emscripten_bind_DecoderBuffer_Init_2=function(){return(Ya=a._emscripten_bind_DecoderBuffer_Init_2=a.asm.j).apply(null,arguments)},Za=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return(Za=a._emscripten_bind_DecoderBuffer___destroy___0=a.asm.k).apply(null,arguments)},Aa=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return(Aa=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0= -a.asm.l).apply(null,arguments)},$a=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return($a=a._emscripten_bind_AttributeTransformData_transform_type_0=a.asm.m).apply(null,arguments)},ab=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return(ab=a._emscripten_bind_AttributeTransformData___destroy___0=a.asm.n).apply(null,arguments)},Ba=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return(Ba=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0= -a.asm.o).apply(null,arguments)},bb=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return(bb=a._emscripten_bind_GeometryAttribute___destroy___0=a.asm.p).apply(null,arguments)},Ca=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return(Ca=a._emscripten_bind_PointAttribute_PointAttribute_0=a.asm.q).apply(null,arguments)},cb=a._emscripten_bind_PointAttribute_size_0=function(){return(cb=a._emscripten_bind_PointAttribute_size_0=a.asm.r).apply(null,arguments)},db=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0= -function(){return(db=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=a.asm.s).apply(null,arguments)},eb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return(eb=a._emscripten_bind_PointAttribute_attribute_type_0=a.asm.t).apply(null,arguments)},fb=a._emscripten_bind_PointAttribute_data_type_0=function(){return(fb=a._emscripten_bind_PointAttribute_data_type_0=a.asm.u).apply(null,arguments)},gb=a._emscripten_bind_PointAttribute_num_components_0=function(){return(gb=a._emscripten_bind_PointAttribute_num_components_0= -a.asm.v).apply(null,arguments)},hb=a._emscripten_bind_PointAttribute_normalized_0=function(){return(hb=a._emscripten_bind_PointAttribute_normalized_0=a.asm.w).apply(null,arguments)},ib=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return(ib=a._emscripten_bind_PointAttribute_byte_stride_0=a.asm.x).apply(null,arguments)},jb=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return(jb=a._emscripten_bind_PointAttribute_byte_offset_0=a.asm.y).apply(null,arguments)},kb=a._emscripten_bind_PointAttribute_unique_id_0= -function(){return(kb=a._emscripten_bind_PointAttribute_unique_id_0=a.asm.z).apply(null,arguments)},lb=a._emscripten_bind_PointAttribute___destroy___0=function(){return(lb=a._emscripten_bind_PointAttribute___destroy___0=a.asm.A).apply(null,arguments)},Da=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return(Da=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=a.asm.B).apply(null,arguments)},mb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1= -function(){return(mb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=a.asm.C).apply(null,arguments)},nb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return(nb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=a.asm.D).apply(null,arguments)},ob=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return(ob=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=a.asm.E).apply(null,arguments)},pb= -a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return(pb=a._emscripten_bind_AttributeQuantizationTransform_range_0=a.asm.F).apply(null,arguments)},qb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return(qb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=a.asm.G).apply(null,arguments)},Ea=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return(Ea=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0= -a.asm.H).apply(null,arguments)},rb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return(rb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=a.asm.I).apply(null,arguments)},sb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return(sb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=a.asm.J).apply(null,arguments)},tb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return(tb= -a._emscripten_bind_AttributeOctahedronTransform___destroy___0=a.asm.K).apply(null,arguments)},Fa=a._emscripten_bind_PointCloud_PointCloud_0=function(){return(Fa=a._emscripten_bind_PointCloud_PointCloud_0=a.asm.L).apply(null,arguments)},ub=a._emscripten_bind_PointCloud_num_attributes_0=function(){return(ub=a._emscripten_bind_PointCloud_num_attributes_0=a.asm.M).apply(null,arguments)},vb=a._emscripten_bind_PointCloud_num_points_0=function(){return(vb=a._emscripten_bind_PointCloud_num_points_0=a.asm.N).apply(null, -arguments)},wb=a._emscripten_bind_PointCloud___destroy___0=function(){return(wb=a._emscripten_bind_PointCloud___destroy___0=a.asm.O).apply(null,arguments)},Ga=a._emscripten_bind_Mesh_Mesh_0=function(){return(Ga=a._emscripten_bind_Mesh_Mesh_0=a.asm.P).apply(null,arguments)},xb=a._emscripten_bind_Mesh_num_faces_0=function(){return(xb=a._emscripten_bind_Mesh_num_faces_0=a.asm.Q).apply(null,arguments)},yb=a._emscripten_bind_Mesh_num_attributes_0=function(){return(yb=a._emscripten_bind_Mesh_num_attributes_0= -a.asm.R).apply(null,arguments)},zb=a._emscripten_bind_Mesh_num_points_0=function(){return(zb=a._emscripten_bind_Mesh_num_points_0=a.asm.S).apply(null,arguments)},Ab=a._emscripten_bind_Mesh___destroy___0=function(){return(Ab=a._emscripten_bind_Mesh___destroy___0=a.asm.T).apply(null,arguments)},Ha=a._emscripten_bind_Metadata_Metadata_0=function(){return(Ha=a._emscripten_bind_Metadata_Metadata_0=a.asm.U).apply(null,arguments)},Bb=a._emscripten_bind_Metadata___destroy___0=function(){return(Bb=a._emscripten_bind_Metadata___destroy___0= -a.asm.V).apply(null,arguments)},Cb=a._emscripten_bind_Status_code_0=function(){return(Cb=a._emscripten_bind_Status_code_0=a.asm.W).apply(null,arguments)},Db=a._emscripten_bind_Status_ok_0=function(){return(Db=a._emscripten_bind_Status_ok_0=a.asm.X).apply(null,arguments)},Eb=a._emscripten_bind_Status_error_msg_0=function(){return(Eb=a._emscripten_bind_Status_error_msg_0=a.asm.Y).apply(null,arguments)},Fb=a._emscripten_bind_Status___destroy___0=function(){return(Fb=a._emscripten_bind_Status___destroy___0= -a.asm.Z).apply(null,arguments)},Ia=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return(Ia=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=a.asm._).apply(null,arguments)},Gb=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return(Gb=a._emscripten_bind_DracoFloat32Array_GetValue_1=a.asm.$).apply(null,arguments)},Hb=a._emscripten_bind_DracoFloat32Array_size_0=function(){return(Hb=a._emscripten_bind_DracoFloat32Array_size_0=a.asm.aa).apply(null,arguments)},Ib= -a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return(Ib=a._emscripten_bind_DracoFloat32Array___destroy___0=a.asm.ba).apply(null,arguments)},Ja=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return(Ja=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=a.asm.ca).apply(null,arguments)},Jb=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return(Jb=a._emscripten_bind_DracoInt8Array_GetValue_1=a.asm.da).apply(null,arguments)},Kb=a._emscripten_bind_DracoInt8Array_size_0= -function(){return(Kb=a._emscripten_bind_DracoInt8Array_size_0=a.asm.ea).apply(null,arguments)},Lb=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return(Lb=a._emscripten_bind_DracoInt8Array___destroy___0=a.asm.fa).apply(null,arguments)},Ka=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return(Ka=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=a.asm.ga).apply(null,arguments)},Mb=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return(Mb=a._emscripten_bind_DracoUInt8Array_GetValue_1= -a.asm.ha).apply(null,arguments)},Nb=a._emscripten_bind_DracoUInt8Array_size_0=function(){return(Nb=a._emscripten_bind_DracoUInt8Array_size_0=a.asm.ia).apply(null,arguments)},Ob=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return(Ob=a._emscripten_bind_DracoUInt8Array___destroy___0=a.asm.ja).apply(null,arguments)},La=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return(La=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=a.asm.ka).apply(null,arguments)},Pb=a._emscripten_bind_DracoInt16Array_GetValue_1= -function(){return(Pb=a._emscripten_bind_DracoInt16Array_GetValue_1=a.asm.la).apply(null,arguments)},Qb=a._emscripten_bind_DracoInt16Array_size_0=function(){return(Qb=a._emscripten_bind_DracoInt16Array_size_0=a.asm.ma).apply(null,arguments)},Rb=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return(Rb=a._emscripten_bind_DracoInt16Array___destroy___0=a.asm.na).apply(null,arguments)},Ma=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return(Ma=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0= -a.asm.oa).apply(null,arguments)},Sb=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return(Sb=a._emscripten_bind_DracoUInt16Array_GetValue_1=a.asm.pa).apply(null,arguments)},Tb=a._emscripten_bind_DracoUInt16Array_size_0=function(){return(Tb=a._emscripten_bind_DracoUInt16Array_size_0=a.asm.qa).apply(null,arguments)},Ub=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return(Ub=a._emscripten_bind_DracoUInt16Array___destroy___0=a.asm.ra).apply(null,arguments)},Na=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0= -function(){return(Na=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=a.asm.sa).apply(null,arguments)},Vb=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return(Vb=a._emscripten_bind_DracoInt32Array_GetValue_1=a.asm.ta).apply(null,arguments)},Wb=a._emscripten_bind_DracoInt32Array_size_0=function(){return(Wb=a._emscripten_bind_DracoInt32Array_size_0=a.asm.ua).apply(null,arguments)},Xb=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return(Xb=a._emscripten_bind_DracoInt32Array___destroy___0= -a.asm.va).apply(null,arguments)},Oa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return(Oa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=a.asm.wa).apply(null,arguments)},Yb=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return(Yb=a._emscripten_bind_DracoUInt32Array_GetValue_1=a.asm.xa).apply(null,arguments)},Zb=a._emscripten_bind_DracoUInt32Array_size_0=function(){return(Zb=a._emscripten_bind_DracoUInt32Array_size_0=a.asm.ya).apply(null,arguments)},$b=a._emscripten_bind_DracoUInt32Array___destroy___0= -function(){return($b=a._emscripten_bind_DracoUInt32Array___destroy___0=a.asm.za).apply(null,arguments)},Pa=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return(Pa=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=a.asm.Aa).apply(null,arguments)},ac=a._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return(ac=a._emscripten_bind_MetadataQuerier_HasEntry_2=a.asm.Ba).apply(null,arguments)},bc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return(bc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2= -a.asm.Ca).apply(null,arguments)},cc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=function(){return(cc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=a.asm.Da).apply(null,arguments)},dc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return(dc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=a.asm.Ea).apply(null,arguments)},ec=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return(ec=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=a.asm.Fa).apply(null, -arguments)},fc=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return(fc=a._emscripten_bind_MetadataQuerier_NumEntries_1=a.asm.Ga).apply(null,arguments)},gc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return(gc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=a.asm.Ha).apply(null,arguments)},hc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return(hc=a._emscripten_bind_MetadataQuerier___destroy___0=a.asm.Ia).apply(null,arguments)},Qa=a._emscripten_bind_Decoder_Decoder_0= -function(){return(Qa=a._emscripten_bind_Decoder_Decoder_0=a.asm.Ja).apply(null,arguments)},ic=a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=function(){return(ic=a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=a.asm.Ka).apply(null,arguments)},jc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=function(){return(jc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=a.asm.La).apply(null,arguments)},kc=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return(kc=a._emscripten_bind_Decoder_GetAttributeId_2= -a.asm.Ma).apply(null,arguments)},lc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return(lc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=a.asm.Na).apply(null,arguments)},mc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return(mc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=a.asm.Oa).apply(null,arguments)},nc=a._emscripten_bind_Decoder_GetAttribute_2=function(){return(nc=a._emscripten_bind_Decoder_GetAttribute_2=a.asm.Pa).apply(null,arguments)}, -oc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return(oc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=a.asm.Qa).apply(null,arguments)},pc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return(pc=a._emscripten_bind_Decoder_GetMetadata_1=a.asm.Ra).apply(null,arguments)},qc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return(qc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=a.asm.Sa).apply(null,arguments)},rc=a._emscripten_bind_Decoder_GetFaceFromMesh_3= -function(){return(rc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=a.asm.Ta).apply(null,arguments)},sc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return(sc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=a.asm.Ua).apply(null,arguments)},tc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return(tc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=a.asm.Va).apply(null,arguments)},uc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=function(){return(uc= -a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=a.asm.Wa).apply(null,arguments)},vc=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return(vc=a._emscripten_bind_Decoder_GetAttributeFloat_3=a.asm.Xa).apply(null,arguments)},wc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return(wc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=a.asm.Ya).apply(null,arguments)},xc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return(xc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3= -a.asm.Za).apply(null,arguments)},yc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return(yc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=a.asm._a).apply(null,arguments)},zc=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return(zc=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=a.asm.$a).apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return(Ac=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3= -a.asm.ab).apply(null,arguments)},Bc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return(Bc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=a.asm.bb).apply(null,arguments)},Cc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return(Cc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=a.asm.cb).apply(null,arguments)},Dc=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return(Dc=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3= -a.asm.db).apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=function(){return(Ec=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=a.asm.eb).apply(null,arguments)},Fc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return(Fc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=a.asm.fb).apply(null,arguments)},Gc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=function(){return(Gc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1= -a.asm.gb).apply(null,arguments)},Hc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return(Hc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=a.asm.hb).apply(null,arguments)},Ic=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return(Ic=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=a.asm.ib).apply(null,arguments)},Jc=a._emscripten_bind_Decoder___destroy___0=function(){return(Jc=a._emscripten_bind_Decoder___destroy___0=a.asm.jb).apply(null,arguments)},Kc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM= -function(){return(Kc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=a.asm.kb).apply(null,arguments)},Lc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return(Lc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=a.asm.lb).apply(null,arguments)},Mc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return(Mc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM= -a.asm.mb).apply(null,arguments)},Nc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return(Nc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=a.asm.nb).apply(null,arguments)},Oc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return(Oc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=a.asm.ob).apply(null,arguments)},Pc=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return(Pc=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION= -a.asm.pb).apply(null,arguments)},Qc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return(Qc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=a.asm.qb).apply(null,arguments)},Rc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return(Rc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=a.asm.rb).apply(null,arguments)},Sc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return(Sc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD= -a.asm.sb).apply(null,arguments)},Tc=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return(Tc=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=a.asm.tb).apply(null,arguments)},Uc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return(Uc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=a.asm.ub).apply(null,arguments)},Vc=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return(Vc=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD= -a.asm.vb).apply(null,arguments)},Wc=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return(Wc=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=a.asm.wb).apply(null,arguments)},Xc=a._emscripten_enum_draco_DataType_DT_INVALID=function(){return(Xc=a._emscripten_enum_draco_DataType_DT_INVALID=a.asm.xb).apply(null,arguments)},Yc=a._emscripten_enum_draco_DataType_DT_INT8=function(){return(Yc=a._emscripten_enum_draco_DataType_DT_INT8=a.asm.yb).apply(null,arguments)},Zc= -a._emscripten_enum_draco_DataType_DT_UINT8=function(){return(Zc=a._emscripten_enum_draco_DataType_DT_UINT8=a.asm.zb).apply(null,arguments)},$c=a._emscripten_enum_draco_DataType_DT_INT16=function(){return($c=a._emscripten_enum_draco_DataType_DT_INT16=a.asm.Ab).apply(null,arguments)},ad=a._emscripten_enum_draco_DataType_DT_UINT16=function(){return(ad=a._emscripten_enum_draco_DataType_DT_UINT16=a.asm.Bb).apply(null,arguments)},bd=a._emscripten_enum_draco_DataType_DT_INT32=function(){return(bd=a._emscripten_enum_draco_DataType_DT_INT32= -a.asm.Cb).apply(null,arguments)},cd=a._emscripten_enum_draco_DataType_DT_UINT32=function(){return(cd=a._emscripten_enum_draco_DataType_DT_UINT32=a.asm.Db).apply(null,arguments)},dd=a._emscripten_enum_draco_DataType_DT_INT64=function(){return(dd=a._emscripten_enum_draco_DataType_DT_INT64=a.asm.Eb).apply(null,arguments)},ed=a._emscripten_enum_draco_DataType_DT_UINT64=function(){return(ed=a._emscripten_enum_draco_DataType_DT_UINT64=a.asm.Fb).apply(null,arguments)},fd=a._emscripten_enum_draco_DataType_DT_FLOAT32= -function(){return(fd=a._emscripten_enum_draco_DataType_DT_FLOAT32=a.asm.Gb).apply(null,arguments)},gd=a._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return(gd=a._emscripten_enum_draco_DataType_DT_FLOAT64=a.asm.Hb).apply(null,arguments)},hd=a._emscripten_enum_draco_DataType_DT_BOOL=function(){return(hd=a._emscripten_enum_draco_DataType_DT_BOOL=a.asm.Ib).apply(null,arguments)},id=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return(id=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT= -a.asm.Jb).apply(null,arguments)},jd=a._emscripten_enum_draco_StatusCode_OK=function(){return(jd=a._emscripten_enum_draco_StatusCode_OK=a.asm.Kb).apply(null,arguments)},kd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return(kd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=a.asm.Lb).apply(null,arguments)},ld=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return(ld=a._emscripten_enum_draco_StatusCode_IO_ERROR=a.asm.Mb).apply(null,arguments)},md=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER= -function(){return(md=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=a.asm.Nb).apply(null,arguments)},nd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return(nd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=a.asm.Ob).apply(null,arguments)},od=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return(od=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=a.asm.Pb).apply(null,arguments)};a._malloc=function(){return(a._malloc=a.asm.Qb).apply(null,arguments)}; -a._free=function(){return(a._free=a.asm.Rb).apply(null,arguments)};var ua=function(){return(ua=a.asm.Sb).apply(null,arguments)};a.___start_em_js=11660;a.___stop_em_js=11758;var la;ha=function b(){la||F();la||(ha=b)};if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0=r.size?(0>>=0;switch(c.BYTES_PER_ELEMENT){case 2:d>>>=1;break;case 4:d>>>=2;break;case 8:d>>>=3}for(var g=0;gb.byteLength)return a.INVALID_GEOMETRY_TYPE;switch(b[7]){case 0:return a.POINT_CLOUD;case 1:return a.TRIANGULAR_MESH;default:return a.INVALID_GEOMETRY_TYPE}};return n.ready}}();"object"===typeof exports&&"object"===typeof module?module.exports=DracoDecoderModule:"function"===typeof define&&define.amd?define([],function(){return DracoDecoderModule}):"object"===typeof exports&&(exports.DracoDecoderModule=DracoDecoderModule); diff --git a/three/addons/libs/ecsy.module.js b/three/addons/libs/ecsy.module.js deleted file mode 100644 index 6f67599..0000000 --- a/three/addons/libs/ecsy.module.js +++ /dev/null @@ -1,1792 +0,0 @@ -/** - * Return the name of a component - * @param {Component} Component - * @private - */ - -/** - * Get a key from a list of components - * @param {Array(Component)} Components Array of components to generate the key - * @private - */ -function queryKey(Components) { - var ids = []; - for (var n = 0; n < Components.length; n++) { - var T = Components[n]; - - if (!componentRegistered(T)) { - throw new Error(`Tried to create a query with an unregistered component`); - } - - if (typeof T === "object") { - var operator = T.operator === "not" ? "!" : T.operator; - ids.push(operator + T.Component._typeId); - } else { - ids.push(T._typeId); - } - } - - return ids.sort().join("-"); -} - -// Detector for browser's "window" -const hasWindow = typeof window !== "undefined"; - -// performance.now() "polyfill" -const now = - hasWindow && typeof window.performance !== "undefined" - ? performance.now.bind(performance) - : Date.now.bind(Date); - -function componentRegistered(T) { - return ( - (typeof T === "object" && T.Component._typeId !== undefined) || - (T.isComponent && T._typeId !== undefined) - ); -} - -class SystemManager { - constructor(world) { - this._systems = []; - this._executeSystems = []; // Systems that have `execute` method - this.world = world; - this.lastExecutedSystem = null; - } - - registerSystem(SystemClass, attributes) { - if (!SystemClass.isSystem) { - throw new Error( - `System '${SystemClass.name}' does not extend 'System' class` - ); - } - - if (this.getSystem(SystemClass) !== undefined) { - console.warn(`System '${SystemClass.getName()}' already registered.`); - return this; - } - - var system = new SystemClass(this.world, attributes); - if (system.init) system.init(attributes); - system.order = this._systems.length; - this._systems.push(system); - if (system.execute) { - this._executeSystems.push(system); - this.sortSystems(); - } - return this; - } - - unregisterSystem(SystemClass) { - let system = this.getSystem(SystemClass); - if (system === undefined) { - console.warn( - `Can unregister system '${SystemClass.getName()}'. It doesn't exist.` - ); - return this; - } - - this._systems.splice(this._systems.indexOf(system), 1); - - if (system.execute) { - this._executeSystems.splice(this._executeSystems.indexOf(system), 1); - } - - // @todo Add system.unregister() call to free resources - return this; - } - - sortSystems() { - this._executeSystems.sort((a, b) => { - return a.priority - b.priority || a.order - b.order; - }); - } - - getSystem(SystemClass) { - return this._systems.find((s) => s instanceof SystemClass); - } - - getSystems() { - return this._systems; - } - - removeSystem(SystemClass) { - var index = this._systems.indexOf(SystemClass); - if (!~index) return; - - this._systems.splice(index, 1); - } - - executeSystem(system, delta, time) { - if (system.initialized) { - if (system.canExecute()) { - let startTime = now(); - system.execute(delta, time); - system.executeTime = now() - startTime; - this.lastExecutedSystem = system; - system.clearEvents(); - } - } - } - - stop() { - this._executeSystems.forEach((system) => system.stop()); - } - - execute(delta, time, forcePlay) { - this._executeSystems.forEach( - (system) => - (forcePlay || system.enabled) && this.executeSystem(system, delta, time) - ); - } - - stats() { - var stats = { - numSystems: this._systems.length, - systems: {}, - }; - - for (var i = 0; i < this._systems.length; i++) { - var system = this._systems[i]; - var systemStats = (stats.systems[system.getName()] = { - queries: {}, - executeTime: system.executeTime, - }); - for (var name in system.ctx) { - systemStats.queries[name] = system.ctx[name].stats(); - } - } - - return stats; - } -} - -class ObjectPool { - // @todo Add initial size - constructor(T, initialSize) { - this.freeList = []; - this.count = 0; - this.T = T; - this.isObjectPool = true; - - if (typeof initialSize !== "undefined") { - this.expand(initialSize); - } - } - - acquire() { - // Grow the list by 20%ish if we're out - if (this.freeList.length <= 0) { - this.expand(Math.round(this.count * 0.2) + 1); - } - - var item = this.freeList.pop(); - - return item; - } - - release(item) { - item.reset(); - this.freeList.push(item); - } - - expand(count) { - for (var n = 0; n < count; n++) { - var clone = new this.T(); - clone._pool = this; - this.freeList.push(clone); - } - this.count += count; - } - - totalSize() { - return this.count; - } - - totalFree() { - return this.freeList.length; - } - - totalUsed() { - return this.count - this.freeList.length; - } -} - -/** - * @private - * @class EventDispatcher - */ -class EventDispatcher { - constructor() { - this._listeners = {}; - this.stats = { - fired: 0, - handled: 0, - }; - } - - /** - * Add an event listener - * @param {String} eventName Name of the event to listen - * @param {Function} listener Callback to trigger when the event is fired - */ - addEventListener(eventName, listener) { - let listeners = this._listeners; - if (listeners[eventName] === undefined) { - listeners[eventName] = []; - } - - if (listeners[eventName].indexOf(listener) === -1) { - listeners[eventName].push(listener); - } - } - - /** - * Check if an event listener is already added to the list of listeners - * @param {String} eventName Name of the event to check - * @param {Function} listener Callback for the specified event - */ - hasEventListener(eventName, listener) { - return ( - this._listeners[eventName] !== undefined && - this._listeners[eventName].indexOf(listener) !== -1 - ); - } - - /** - * Remove an event listener - * @param {String} eventName Name of the event to remove - * @param {Function} listener Callback for the specified event - */ - removeEventListener(eventName, listener) { - var listenerArray = this._listeners[eventName]; - if (listenerArray !== undefined) { - var index = listenerArray.indexOf(listener); - if (index !== -1) { - listenerArray.splice(index, 1); - } - } - } - - /** - * Dispatch an event - * @param {String} eventName Name of the event to dispatch - * @param {Entity} entity (Optional) Entity to emit - * @param {Component} component - */ - dispatchEvent(eventName, entity, component) { - this.stats.fired++; - - var listenerArray = this._listeners[eventName]; - if (listenerArray !== undefined) { - var array = listenerArray.slice(0); - - for (var i = 0; i < array.length; i++) { - array[i].call(this, entity, component); - } - } - } - - /** - * Reset stats counters - */ - resetCounters() { - this.stats.fired = this.stats.handled = 0; - } -} - -class Query { - /** - * @param {Array(Component)} Components List of types of components to query - */ - constructor(Components, manager) { - this.Components = []; - this.NotComponents = []; - - Components.forEach((component) => { - if (typeof component === "object") { - this.NotComponents.push(component.Component); - } else { - this.Components.push(component); - } - }); - - if (this.Components.length === 0) { - throw new Error("Can't create a query without components"); - } - - this.entities = []; - - this.eventDispatcher = new EventDispatcher(); - - // This query is being used by a reactive system - this.reactive = false; - - this.key = queryKey(Components); - - // Fill the query with the existing entities - for (var i = 0; i < manager._entities.length; i++) { - var entity = manager._entities[i]; - if (this.match(entity)) { - // @todo ??? this.addEntity(entity); => preventing the event to be generated - entity.queries.push(this); - this.entities.push(entity); - } - } - } - - /** - * Add entity to this query - * @param {Entity} entity - */ - addEntity(entity) { - entity.queries.push(this); - this.entities.push(entity); - - this.eventDispatcher.dispatchEvent(Query.prototype.ENTITY_ADDED, entity); - } - - /** - * Remove entity from this query - * @param {Entity} entity - */ - removeEntity(entity) { - let index = this.entities.indexOf(entity); - if (~index) { - this.entities.splice(index, 1); - - index = entity.queries.indexOf(this); - entity.queries.splice(index, 1); - - this.eventDispatcher.dispatchEvent( - Query.prototype.ENTITY_REMOVED, - entity - ); - } - } - - match(entity) { - return ( - entity.hasAllComponents(this.Components) && - !entity.hasAnyComponents(this.NotComponents) - ); - } - - toJSON() { - return { - key: this.key, - reactive: this.reactive, - components: { - included: this.Components.map((C) => C.name), - not: this.NotComponents.map((C) => C.name), - }, - numEntities: this.entities.length, - }; - } - - /** - * Return stats for this query - */ - stats() { - return { - numComponents: this.Components.length, - numEntities: this.entities.length, - }; - } -} - -Query.prototype.ENTITY_ADDED = "Query#ENTITY_ADDED"; -Query.prototype.ENTITY_REMOVED = "Query#ENTITY_REMOVED"; -Query.prototype.COMPONENT_CHANGED = "Query#COMPONENT_CHANGED"; - -/** - * @private - * @class QueryManager - */ -class QueryManager { - constructor(world) { - this._world = world; - - // Queries indexed by a unique identifier for the components it has - this._queries = {}; - } - - onEntityRemoved(entity) { - for (var queryName in this._queries) { - var query = this._queries[queryName]; - if (entity.queries.indexOf(query) !== -1) { - query.removeEntity(entity); - } - } - } - - /** - * Callback when a component is added to an entity - * @param {Entity} entity Entity that just got the new component - * @param {Component} Component Component added to the entity - */ - onEntityComponentAdded(entity, Component) { - // @todo Use bitmask for checking components? - - // Check each indexed query to see if we need to add this entity to the list - for (var queryName in this._queries) { - var query = this._queries[queryName]; - - if ( - !!~query.NotComponents.indexOf(Component) && - ~query.entities.indexOf(entity) - ) { - query.removeEntity(entity); - continue; - } - - // Add the entity only if: - // Component is in the query - // and Entity has ALL the components of the query - // and Entity is not already in the query - if ( - !~query.Components.indexOf(Component) || - !query.match(entity) || - ~query.entities.indexOf(entity) - ) - continue; - - query.addEntity(entity); - } - } - - /** - * Callback when a component is removed from an entity - * @param {Entity} entity Entity to remove the component from - * @param {Component} Component Component to remove from the entity - */ - onEntityComponentRemoved(entity, Component) { - for (var queryName in this._queries) { - var query = this._queries[queryName]; - - if ( - !!~query.NotComponents.indexOf(Component) && - !~query.entities.indexOf(entity) && - query.match(entity) - ) { - query.addEntity(entity); - continue; - } - - if ( - !!~query.Components.indexOf(Component) && - !!~query.entities.indexOf(entity) && - !query.match(entity) - ) { - query.removeEntity(entity); - continue; - } - } - } - - /** - * Get a query for the specified components - * @param {Component} Components Components that the query should have - */ - getQuery(Components) { - var key = queryKey(Components); - var query = this._queries[key]; - if (!query) { - this._queries[key] = query = new Query(Components, this._world); - } - return query; - } - - /** - * Return some stats from this class - */ - stats() { - var stats = {}; - for (var queryName in this._queries) { - stats[queryName] = this._queries[queryName].stats(); - } - return stats; - } -} - -class Component { - constructor(props) { - if (props !== false) { - const schema = this.constructor.schema; - - for (const key in schema) { - if (props && props.hasOwnProperty(key)) { - this[key] = props[key]; - } else { - const schemaProp = schema[key]; - if (schemaProp.hasOwnProperty("default")) { - this[key] = schemaProp.type.clone(schemaProp.default); - } else { - const type = schemaProp.type; - this[key] = type.clone(type.default); - } - } - } - - if ( props !== undefined) { - this.checkUndefinedAttributes(props); - } - } - - this._pool = null; - } - - copy(source) { - const schema = this.constructor.schema; - - for (const key in schema) { - const prop = schema[key]; - - if (source.hasOwnProperty(key)) { - this[key] = prop.type.copy(source[key], this[key]); - } - } - - // @DEBUG - { - this.checkUndefinedAttributes(source); - } - - return this; - } - - clone() { - return new this.constructor().copy(this); - } - - reset() { - const schema = this.constructor.schema; - - for (const key in schema) { - const schemaProp = schema[key]; - - if (schemaProp.hasOwnProperty("default")) { - this[key] = schemaProp.type.copy(schemaProp.default, this[key]); - } else { - const type = schemaProp.type; - this[key] = type.copy(type.default, this[key]); - } - } - } - - dispose() { - if (this._pool) { - this._pool.release(this); - } - } - - getName() { - return this.constructor.getName(); - } - - checkUndefinedAttributes(src) { - const schema = this.constructor.schema; - - // Check that the attributes defined in source are also defined in the schema - Object.keys(src).forEach((srcKey) => { - if (!schema.hasOwnProperty(srcKey)) { - console.warn( - `Trying to set attribute '${srcKey}' not defined in the '${this.constructor.name}' schema. Please fix the schema, the attribute value won't be set` - ); - } - }); - } -} - -Component.schema = {}; -Component.isComponent = true; -Component.getName = function () { - return this.displayName || this.name; -}; - -class SystemStateComponent extends Component {} - -SystemStateComponent.isSystemStateComponent = true; - -class EntityPool extends ObjectPool { - constructor(entityManager, entityClass, initialSize) { - super(entityClass, undefined); - this.entityManager = entityManager; - - if (typeof initialSize !== "undefined") { - this.expand(initialSize); - } - } - - expand(count) { - for (var n = 0; n < count; n++) { - var clone = new this.T(this.entityManager); - clone._pool = this; - this.freeList.push(clone); - } - this.count += count; - } -} - -/** - * @private - * @class EntityManager - */ -class EntityManager { - constructor(world) { - this.world = world; - this.componentsManager = world.componentsManager; - - // All the entities in this instance - this._entities = []; - this._nextEntityId = 0; - - this._entitiesByNames = {}; - - this._queryManager = new QueryManager(this); - this.eventDispatcher = new EventDispatcher(); - this._entityPool = new EntityPool( - this, - this.world.options.entityClass, - this.world.options.entityPoolSize - ); - - // Deferred deletion - this.entitiesWithComponentsToRemove = []; - this.entitiesToRemove = []; - this.deferredRemovalEnabled = true; - } - - getEntityByName(name) { - return this._entitiesByNames[name]; - } - - /** - * Create a new entity - */ - createEntity(name) { - var entity = this._entityPool.acquire(); - entity.alive = true; - entity.name = name || ""; - if (name) { - if (this._entitiesByNames[name]) { - console.warn(`Entity name '${name}' already exist`); - } else { - this._entitiesByNames[name] = entity; - } - } - - this._entities.push(entity); - this.eventDispatcher.dispatchEvent(ENTITY_CREATED, entity); - return entity; - } - - // COMPONENTS - - /** - * Add a component to an entity - * @param {Entity} entity Entity where the component will be added - * @param {Component} Component Component to be added to the entity - * @param {Object} values Optional values to replace the default attributes - */ - entityAddComponent(entity, Component, values) { - // @todo Probably define Component._typeId with a default value and avoid using typeof - if ( - typeof Component._typeId === "undefined" && - !this.world.componentsManager._ComponentsMap[Component._typeId] - ) { - throw new Error( - `Attempted to add unregistered component "${Component.getName()}"` - ); - } - - if (~entity._ComponentTypes.indexOf(Component)) { - { - console.warn( - "Component type already exists on entity.", - entity, - Component.getName() - ); - } - return; - } - - entity._ComponentTypes.push(Component); - - if (Component.__proto__ === SystemStateComponent) { - entity.numStateComponents++; - } - - var componentPool = this.world.componentsManager.getComponentsPool( - Component - ); - - var component = componentPool - ? componentPool.acquire() - : new Component(values); - - if (componentPool && values) { - component.copy(values); - } - - entity._components[Component._typeId] = component; - - this._queryManager.onEntityComponentAdded(entity, Component); - this.world.componentsManager.componentAddedToEntity(Component); - - this.eventDispatcher.dispatchEvent(COMPONENT_ADDED, entity, Component); - } - - /** - * Remove a component from an entity - * @param {Entity} entity Entity which will get removed the component - * @param {*} Component Component to remove from the entity - * @param {Bool} immediately If you want to remove the component immediately instead of deferred (Default is false) - */ - entityRemoveComponent(entity, Component, immediately) { - var index = entity._ComponentTypes.indexOf(Component); - if (!~index) return; - - this.eventDispatcher.dispatchEvent(COMPONENT_REMOVE, entity, Component); - - if (immediately) { - this._entityRemoveComponentSync(entity, Component, index); - } else { - if (entity._ComponentTypesToRemove.length === 0) - this.entitiesWithComponentsToRemove.push(entity); - - entity._ComponentTypes.splice(index, 1); - entity._ComponentTypesToRemove.push(Component); - - entity._componentsToRemove[Component._typeId] = - entity._components[Component._typeId]; - delete entity._components[Component._typeId]; - } - - // Check each indexed query to see if we need to remove it - this._queryManager.onEntityComponentRemoved(entity, Component); - - if (Component.__proto__ === SystemStateComponent) { - entity.numStateComponents--; - - // Check if the entity was a ghost waiting for the last system state component to be removed - if (entity.numStateComponents === 0 && !entity.alive) { - entity.remove(); - } - } - } - - _entityRemoveComponentSync(entity, Component, index) { - // Remove T listing on entity and property ref, then free the component. - entity._ComponentTypes.splice(index, 1); - var component = entity._components[Component._typeId]; - delete entity._components[Component._typeId]; - component.dispose(); - this.world.componentsManager.componentRemovedFromEntity(Component); - } - - /** - * Remove all the components from an entity - * @param {Entity} entity Entity from which the components will be removed - */ - entityRemoveAllComponents(entity, immediately) { - let Components = entity._ComponentTypes; - - for (let j = Components.length - 1; j >= 0; j--) { - if (Components[j].__proto__ !== SystemStateComponent) - this.entityRemoveComponent(entity, Components[j], immediately); - } - } - - /** - * Remove the entity from this manager. It will clear also its components - * @param {Entity} entity Entity to remove from the manager - * @param {Bool} immediately If you want to remove the component immediately instead of deferred (Default is false) - */ - removeEntity(entity, immediately) { - var index = this._entities.indexOf(entity); - - if (!~index) throw new Error("Tried to remove entity not in list"); - - entity.alive = false; - this.entityRemoveAllComponents(entity, immediately); - - if (entity.numStateComponents === 0) { - // Remove from entity list - this.eventDispatcher.dispatchEvent(ENTITY_REMOVED, entity); - this._queryManager.onEntityRemoved(entity); - if (immediately === true) { - this._releaseEntity(entity, index); - } else { - this.entitiesToRemove.push(entity); - } - } - } - - _releaseEntity(entity, index) { - this._entities.splice(index, 1); - - if (this._entitiesByNames[entity.name]) { - delete this._entitiesByNames[entity.name]; - } - entity._pool.release(entity); - } - - /** - * Remove all entities from this manager - */ - removeAllEntities() { - for (var i = this._entities.length - 1; i >= 0; i--) { - this.removeEntity(this._entities[i]); - } - } - - processDeferredRemoval() { - if (!this.deferredRemovalEnabled) { - return; - } - - for (let i = 0; i < this.entitiesToRemove.length; i++) { - let entity = this.entitiesToRemove[i]; - let index = this._entities.indexOf(entity); - this._releaseEntity(entity, index); - } - this.entitiesToRemove.length = 0; - - for (let i = 0; i < this.entitiesWithComponentsToRemove.length; i++) { - let entity = this.entitiesWithComponentsToRemove[i]; - while (entity._ComponentTypesToRemove.length > 0) { - let Component = entity._ComponentTypesToRemove.pop(); - - var component = entity._componentsToRemove[Component._typeId]; - delete entity._componentsToRemove[Component._typeId]; - component.dispose(); - this.world.componentsManager.componentRemovedFromEntity(Component); - - //this._entityRemoveComponentSync(entity, Component, index); - } - } - - this.entitiesWithComponentsToRemove.length = 0; - } - - /** - * Get a query based on a list of components - * @param {Array(Component)} Components List of components that will form the query - */ - queryComponents(Components) { - return this._queryManager.getQuery(Components); - } - - // EXTRAS - - /** - * Return number of entities - */ - count() { - return this._entities.length; - } - - /** - * Return some stats - */ - stats() { - var stats = { - numEntities: this._entities.length, - numQueries: Object.keys(this._queryManager._queries).length, - queries: this._queryManager.stats(), - numComponentPool: Object.keys(this.componentsManager._componentPool) - .length, - componentPool: {}, - eventDispatcher: this.eventDispatcher.stats, - }; - - for (var ecsyComponentId in this.componentsManager._componentPool) { - var pool = this.componentsManager._componentPool[ecsyComponentId]; - stats.componentPool[pool.T.getName()] = { - used: pool.totalUsed(), - size: pool.count, - }; - } - - return stats; - } -} - -const ENTITY_CREATED = "EntityManager#ENTITY_CREATE"; -const ENTITY_REMOVED = "EntityManager#ENTITY_REMOVED"; -const COMPONENT_ADDED = "EntityManager#COMPONENT_ADDED"; -const COMPONENT_REMOVE = "EntityManager#COMPONENT_REMOVE"; - -class ComponentManager { - constructor() { - this.Components = []; - this._ComponentsMap = {}; - - this._componentPool = {}; - this.numComponents = {}; - this.nextComponentId = 0; - } - - hasComponent(Component) { - return this.Components.indexOf(Component) !== -1; - } - - registerComponent(Component, objectPool) { - if (this.Components.indexOf(Component) !== -1) { - console.warn( - `Component type: '${Component.getName()}' already registered.` - ); - return; - } - - const schema = Component.schema; - - if (!schema) { - throw new Error( - `Component "${Component.getName()}" has no schema property.` - ); - } - - for (const propName in schema) { - const prop = schema[propName]; - - if (!prop.type) { - throw new Error( - `Invalid schema for component "${Component.getName()}". Missing type for "${propName}" property.` - ); - } - } - - Component._typeId = this.nextComponentId++; - this.Components.push(Component); - this._ComponentsMap[Component._typeId] = Component; - this.numComponents[Component._typeId] = 0; - - if (objectPool === undefined) { - objectPool = new ObjectPool(Component); - } else if (objectPool === false) { - objectPool = undefined; - } - - this._componentPool[Component._typeId] = objectPool; - } - - componentAddedToEntity(Component) { - this.numComponents[Component._typeId]++; - } - - componentRemovedFromEntity(Component) { - this.numComponents[Component._typeId]--; - } - - getComponentsPool(Component) { - return this._componentPool[Component._typeId]; - } -} - -const Version = "0.3.1"; - -const proxyMap = new WeakMap(); - -const proxyHandler = { - set(target, prop) { - throw new Error( - `Tried to write to "${target.constructor.getName()}#${String( - prop - )}" on immutable component. Use .getMutableComponent() to modify a component.` - ); - }, -}; - -function wrapImmutableComponent(T, component) { - if (component === undefined) { - return undefined; - } - - let wrappedComponent = proxyMap.get(component); - - if (!wrappedComponent) { - wrappedComponent = new Proxy(component, proxyHandler); - proxyMap.set(component, wrappedComponent); - } - - return wrappedComponent; -} - -class Entity { - constructor(entityManager) { - this._entityManager = entityManager || null; - - // Unique ID for this entity - this.id = entityManager._nextEntityId++; - - // List of components types the entity has - this._ComponentTypes = []; - - // Instance of the components - this._components = {}; - - this._componentsToRemove = {}; - - // Queries where the entity is added - this.queries = []; - - // Used for deferred removal - this._ComponentTypesToRemove = []; - - this.alive = false; - - //if there are state components on a entity, it can't be removed completely - this.numStateComponents = 0; - } - - // COMPONENTS - - getComponent(Component, includeRemoved) { - var component = this._components[Component._typeId]; - - if (!component && includeRemoved === true) { - component = this._componentsToRemove[Component._typeId]; - } - - return wrapImmutableComponent(Component, component) - ; - } - - getRemovedComponent(Component) { - const component = this._componentsToRemove[Component._typeId]; - - return wrapImmutableComponent(Component, component) - ; - } - - getComponents() { - return this._components; - } - - getComponentsToRemove() { - return this._componentsToRemove; - } - - getComponentTypes() { - return this._ComponentTypes; - } - - getMutableComponent(Component) { - var component = this._components[Component._typeId]; - - if (!component) { - return; - } - - for (var i = 0; i < this.queries.length; i++) { - var query = this.queries[i]; - // @todo accelerate this check. Maybe having query._Components as an object - // @todo add Not components - if (query.reactive && query.Components.indexOf(Component) !== -1) { - query.eventDispatcher.dispatchEvent( - Query.prototype.COMPONENT_CHANGED, - this, - component - ); - } - } - return component; - } - - addComponent(Component, values) { - this._entityManager.entityAddComponent(this, Component, values); - return this; - } - - removeComponent(Component, forceImmediate) { - this._entityManager.entityRemoveComponent(this, Component, forceImmediate); - return this; - } - - hasComponent(Component, includeRemoved) { - return ( - !!~this._ComponentTypes.indexOf(Component) || - (includeRemoved === true && this.hasRemovedComponent(Component)) - ); - } - - hasRemovedComponent(Component) { - return !!~this._ComponentTypesToRemove.indexOf(Component); - } - - hasAllComponents(Components) { - for (var i = 0; i < Components.length; i++) { - if (!this.hasComponent(Components[i])) return false; - } - return true; - } - - hasAnyComponents(Components) { - for (var i = 0; i < Components.length; i++) { - if (this.hasComponent(Components[i])) return true; - } - return false; - } - - removeAllComponents(forceImmediate) { - return this._entityManager.entityRemoveAllComponents(this, forceImmediate); - } - - copy(src) { - // TODO: This can definitely be optimized - for (var ecsyComponentId in src._components) { - var srcComponent = src._components[ecsyComponentId]; - this.addComponent(srcComponent.constructor); - var component = this.getComponent(srcComponent.constructor); - component.copy(srcComponent); - } - - return this; - } - - clone() { - return new Entity(this._entityManager).copy(this); - } - - reset() { - this.id = this._entityManager._nextEntityId++; - this._ComponentTypes.length = 0; - this.queries.length = 0; - - for (var ecsyComponentId in this._components) { - delete this._components[ecsyComponentId]; - } - } - - remove(forceImmediate) { - return this._entityManager.removeEntity(this, forceImmediate); - } -} - -const DEFAULT_OPTIONS = { - entityPoolSize: 0, - entityClass: Entity, -}; - -class World { - constructor(options = {}) { - this.options = Object.assign({}, DEFAULT_OPTIONS, options); - - this.componentsManager = new ComponentManager(this); - this.entityManager = new EntityManager(this); - this.systemManager = new SystemManager(this); - - this.enabled = true; - - this.eventQueues = {}; - - if (hasWindow && typeof CustomEvent !== "undefined") { - var event = new CustomEvent("ecsy-world-created", { - detail: { world: this, version: Version }, - }); - window.dispatchEvent(event); - } - - this.lastTime = now() / 1000; - } - - registerComponent(Component, objectPool) { - this.componentsManager.registerComponent(Component, objectPool); - return this; - } - - registerSystem(System, attributes) { - this.systemManager.registerSystem(System, attributes); - return this; - } - - hasRegisteredComponent(Component) { - return this.componentsManager.hasComponent(Component); - } - - unregisterSystem(System) { - this.systemManager.unregisterSystem(System); - return this; - } - - getSystem(SystemClass) { - return this.systemManager.getSystem(SystemClass); - } - - getSystems() { - return this.systemManager.getSystems(); - } - - execute(delta, time) { - if (!delta) { - time = now() / 1000; - delta = time - this.lastTime; - this.lastTime = time; - } - - if (this.enabled) { - this.systemManager.execute(delta, time); - this.entityManager.processDeferredRemoval(); - } - } - - stop() { - this.enabled = false; - } - - play() { - this.enabled = true; - } - - createEntity(name) { - return this.entityManager.createEntity(name); - } - - stats() { - var stats = { - entities: this.entityManager.stats(), - system: this.systemManager.stats(), - }; - - return stats; - } -} - -class System { - canExecute() { - if (this._mandatoryQueries.length === 0) return true; - - for (let i = 0; i < this._mandatoryQueries.length; i++) { - var query = this._mandatoryQueries[i]; - if (query.entities.length === 0) { - return false; - } - } - - return true; - } - - getName() { - return this.constructor.getName(); - } - - constructor(world, attributes) { - this.world = world; - this.enabled = true; - - // @todo Better naming :) - this._queries = {}; - this.queries = {}; - - this.priority = 0; - - // Used for stats - this.executeTime = 0; - - if (attributes && attributes.priority) { - this.priority = attributes.priority; - } - - this._mandatoryQueries = []; - - this.initialized = true; - - if (this.constructor.queries) { - for (var queryName in this.constructor.queries) { - var queryConfig = this.constructor.queries[queryName]; - var Components = queryConfig.components; - if (!Components || Components.length === 0) { - throw new Error("'components' attribute can't be empty in a query"); - } - - // Detect if the components have already been registered - let unregisteredComponents = Components.filter( - (Component) => !componentRegistered(Component) - ); - - if (unregisteredComponents.length > 0) { - throw new Error( - `Tried to create a query '${ - this.constructor.name - }.${queryName}' with unregistered components: [${unregisteredComponents - .map((c) => c.getName()) - .join(", ")}]` - ); - } - - var query = this.world.entityManager.queryComponents(Components); - - this._queries[queryName] = query; - if (queryConfig.mandatory === true) { - this._mandatoryQueries.push(query); - } - this.queries[queryName] = { - results: query.entities, - }; - - // Reactive configuration added/removed/changed - var validEvents = ["added", "removed", "changed"]; - - const eventMapping = { - added: Query.prototype.ENTITY_ADDED, - removed: Query.prototype.ENTITY_REMOVED, - changed: Query.prototype.COMPONENT_CHANGED, // Query.prototype.ENTITY_CHANGED - }; - - if (queryConfig.listen) { - validEvents.forEach((eventName) => { - if (!this.execute) { - console.warn( - `System '${this.getName()}' has defined listen events (${validEvents.join( - ", " - )}) for query '${queryName}' but it does not implement the 'execute' method.` - ); - } - - // Is the event enabled on this system's query? - if (queryConfig.listen[eventName]) { - let event = queryConfig.listen[eventName]; - - if (eventName === "changed") { - query.reactive = true; - if (event === true) { - // Any change on the entity from the components in the query - let eventList = (this.queries[queryName][eventName] = []); - query.eventDispatcher.addEventListener( - Query.prototype.COMPONENT_CHANGED, - (entity) => { - // Avoid duplicates - if (eventList.indexOf(entity) === -1) { - eventList.push(entity); - } - } - ); - } else if (Array.isArray(event)) { - let eventList = (this.queries[queryName][eventName] = []); - query.eventDispatcher.addEventListener( - Query.prototype.COMPONENT_CHANGED, - (entity, changedComponent) => { - // Avoid duplicates - if ( - event.indexOf(changedComponent.constructor) !== -1 && - eventList.indexOf(entity) === -1 - ) { - eventList.push(entity); - } - } - ); - } - } else { - let eventList = (this.queries[queryName][eventName] = []); - - query.eventDispatcher.addEventListener( - eventMapping[eventName], - (entity) => { - // @fixme overhead? - if (eventList.indexOf(entity) === -1) - eventList.push(entity); - } - ); - } - } - }); - } - } - } - } - - stop() { - this.executeTime = 0; - this.enabled = false; - } - - play() { - this.enabled = true; - } - - // @question rename to clear queues? - clearEvents() { - for (let queryName in this.queries) { - var query = this.queries[queryName]; - if (query.added) { - query.added.length = 0; - } - if (query.removed) { - query.removed.length = 0; - } - if (query.changed) { - if (Array.isArray(query.changed)) { - query.changed.length = 0; - } else { - for (let name in query.changed) { - query.changed[name].length = 0; - } - } - } - } - } - - toJSON() { - var json = { - name: this.getName(), - enabled: this.enabled, - executeTime: this.executeTime, - priority: this.priority, - queries: {}, - }; - - if (this.constructor.queries) { - var queries = this.constructor.queries; - for (let queryName in queries) { - let query = this.queries[queryName]; - let queryDefinition = queries[queryName]; - let jsonQuery = (json.queries[queryName] = { - key: this._queries[queryName].key, - }); - - jsonQuery.mandatory = queryDefinition.mandatory === true; - jsonQuery.reactive = - queryDefinition.listen && - (queryDefinition.listen.added === true || - queryDefinition.listen.removed === true || - queryDefinition.listen.changed === true || - Array.isArray(queryDefinition.listen.changed)); - - if (jsonQuery.reactive) { - jsonQuery.listen = {}; - - const methods = ["added", "removed", "changed"]; - methods.forEach((method) => { - if (query[method]) { - jsonQuery.listen[method] = { - entities: query[method].length, - }; - } - }); - } - } - } - - return json; - } -} - -System.isSystem = true; -System.getName = function () { - return this.displayName || this.name; -}; - -function Not(Component) { - return { - operator: "not", - Component: Component, - }; -} - -class TagComponent extends Component { - constructor() { - super(false); - } -} - -TagComponent.isTagComponent = true; - -const copyValue = (src) => src; - -const cloneValue = (src) => src; - -const copyArray = (src, dest) => { - if (!src) { - return src; - } - - if (!dest) { - return src.slice(); - } - - dest.length = 0; - - for (let i = 0; i < src.length; i++) { - dest.push(src[i]); - } - - return dest; -}; - -const cloneArray = (src) => src && src.slice(); - -const copyJSON = (src) => JSON.parse(JSON.stringify(src)); - -const cloneJSON = (src) => JSON.parse(JSON.stringify(src)); - -const copyCopyable = (src, dest) => { - if (!src) { - return src; - } - - if (!dest) { - return src.clone(); - } - - return dest.copy(src); -}; - -const cloneClonable = (src) => src && src.clone(); - -function createType(typeDefinition) { - var mandatoryProperties = ["name", "default", "copy", "clone"]; - - var undefinedProperties = mandatoryProperties.filter((p) => { - return !typeDefinition.hasOwnProperty(p); - }); - - if (undefinedProperties.length > 0) { - throw new Error( - `createType expects a type definition with the following properties: ${undefinedProperties.join( - ", " - )}` - ); - } - - typeDefinition.isType = true; - - return typeDefinition; -} - -/** - * Standard types - */ -const Types = { - Number: createType({ - name: "Number", - default: 0, - copy: copyValue, - clone: cloneValue, - }), - - Boolean: createType({ - name: "Boolean", - default: false, - copy: copyValue, - clone: cloneValue, - }), - - String: createType({ - name: "String", - default: "", - copy: copyValue, - clone: cloneValue, - }), - - Array: createType({ - name: "Array", - default: [], - copy: copyArray, - clone: cloneArray, - }), - - Ref: createType({ - name: "Ref", - default: undefined, - copy: copyValue, - clone: cloneValue, - }), - - JSON: createType({ - name: "JSON", - default: null, - copy: copyJSON, - clone: cloneJSON, - }), -}; - -function generateId(length) { - var result = ""; - var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - var charactersLength = characters.length; - for (var i = 0; i < length; i++) { - result += characters.charAt(Math.floor(Math.random() * charactersLength)); - } - return result; -} - -function injectScript(src, onLoad) { - var script = document.createElement("script"); - // @todo Use link to the ecsy-devtools repo? - script.src = src; - script.onload = onLoad; - (document.head || document.documentElement).appendChild(script); -} - -/* global Peer */ - -function hookConsoleAndErrors(connection) { - var wrapFunctions = ["error", "warning", "log"]; - wrapFunctions.forEach((key) => { - if (typeof console[key] === "function") { - var fn = console[key].bind(console); - console[key] = (...args) => { - connection.send({ - method: "console", - type: key, - args: JSON.stringify(args), - }); - return fn.apply(null, args); - }; - } - }); - - window.addEventListener("error", (error) => { - connection.send({ - method: "error", - error: JSON.stringify({ - message: error.error.message, - stack: error.error.stack, - }), - }); - }); -} - -function includeRemoteIdHTML(remoteId) { - let infoDiv = document.createElement("div"); - infoDiv.style.cssText = ` - align-items: center; - background-color: #333; - color: #aaa; - display:flex; - font-family: Arial; - font-size: 1.1em; - height: 40px; - justify-content: center; - left: 0; - opacity: 0.9; - position: absolute; - right: 0; - text-align: center; - top: 0; - `; - - infoDiv.innerHTML = `Open ECSY devtools to connect to this page using the code: ${remoteId} `; - document.body.appendChild(infoDiv); - - return infoDiv; -} - -function enableRemoteDevtools(remoteId) { - if (!hasWindow) { - console.warn("Remote devtools not available outside the browser"); - return; - } - - window.generateNewCode = () => { - window.localStorage.clear(); - remoteId = generateId(6); - window.localStorage.setItem("ecsyRemoteId", remoteId); - window.location.reload(false); - }; - - remoteId = remoteId || window.localStorage.getItem("ecsyRemoteId"); - if (!remoteId) { - remoteId = generateId(6); - window.localStorage.setItem("ecsyRemoteId", remoteId); - } - - let infoDiv = includeRemoteIdHTML(remoteId); - - window.__ECSY_REMOTE_DEVTOOLS_INJECTED = true; - window.__ECSY_REMOTE_DEVTOOLS = {}; - - let Version = ""; - - // This is used to collect the worlds created before the communication is being established - let worldsBeforeLoading = []; - let onWorldCreated = (e) => { - var world = e.detail.world; - Version = e.detail.version; - worldsBeforeLoading.push(world); - }; - window.addEventListener("ecsy-world-created", onWorldCreated); - - let onLoaded = () => { - // var peer = new Peer(remoteId); - var peer = new Peer(remoteId, { - host: "peerjs.ecsy.io", - secure: true, - port: 443, - config: { - iceServers: [ - { url: "stun:stun.l.google.com:19302" }, - { url: "stun:stun1.l.google.com:19302" }, - { url: "stun:stun2.l.google.com:19302" }, - { url: "stun:stun3.l.google.com:19302" }, - { url: "stun:stun4.l.google.com:19302" }, - ], - }, - debug: 3, - }); - - peer.on("open", (/* id */) => { - peer.on("connection", (connection) => { - window.__ECSY_REMOTE_DEVTOOLS.connection = connection; - connection.on("open", function () { - // infoDiv.style.visibility = "hidden"; - infoDiv.innerHTML = "Connected"; - - // Receive messages - connection.on("data", function (data) { - if (data.type === "init") { - var script = document.createElement("script"); - script.setAttribute("type", "text/javascript"); - script.onload = () => { - script.parentNode.removeChild(script); - - // Once the script is injected we don't need to listen - window.removeEventListener( - "ecsy-world-created", - onWorldCreated - ); - worldsBeforeLoading.forEach((world) => { - var event = new CustomEvent("ecsy-world-created", { - detail: { world: world, version: Version }, - }); - window.dispatchEvent(event); - }); - }; - script.innerHTML = data.script; - (document.head || document.documentElement).appendChild(script); - script.onload(); - - hookConsoleAndErrors(connection); - } else if (data.type === "executeScript") { - let value = eval(data.script); - if (data.returnEval) { - connection.send({ - method: "evalReturn", - value: value, - }); - } - } - }); - }); - }); - }); - }; - - // Inject PeerJS script - injectScript( - "https://cdn.jsdelivr.net/npm/peerjs@0.3.20/dist/peer.min.js", - onLoaded - ); -} - -if (hasWindow) { - const urlParams = new URLSearchParams(window.location.search); - - // @todo Provide a way to disable it if needed - if (urlParams.has("enable-remote-devtools")) { - enableRemoteDevtools(); - } -} - -export { Component, Not, ObjectPool, System, SystemStateComponent, TagComponent, Types, Version, World, Entity as _Entity, cloneArray, cloneClonable, cloneJSON, cloneValue, copyArray, copyCopyable, copyJSON, copyValue, createType, enableRemoteDevtools }; diff --git a/three/addons/libs/fflate.module.js b/three/addons/libs/fflate.module.js deleted file mode 100644 index 808000a..0000000 --- a/three/addons/libs/fflate.module.js +++ /dev/null @@ -1,2474 +0,0 @@ -/*! -fflate - fast JavaScript compression/decompression - -Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE -version 0.6.9 -*/ - -// DEFLATE is a complex format; to read this code, you should probably check the RFC first: -// https://tools.ietf.org/html/rfc1951 -// You may also wish to take a look at the guide I made about this program: -// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad -// Some of the following code is similar to that of UZIP.js: -// https://github.com/photopea/UZIP.js -// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size. -// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint -// is better for memory in most engines (I *think*). -var ch2 = {}; -var durl = function (c) { return URL.createObjectURL(new Blob([c], { type: 'text/javascript' })); }; -var cwk = function (u) { return new Worker(u); }; -try { - URL.revokeObjectURL(durl('')); -} -catch (e) { - // We're in Deno or a very old browser - durl = function (c) { return 'data:application/javascript;charset=UTF-8,' + encodeURI(c); }; - // If Deno, this is necessary; if not, this changes nothing - cwk = function (u) { return new Worker(u, { type: 'module' }); }; -} -var wk = (function (c, id, msg, transfer, cb) { - var w = cwk(ch2[id] || (ch2[id] = durl(c))); - w.onerror = function (e) { return cb(e.error, null); }; - w.onmessage = function (e) { return cb(null, e.data); }; - w.postMessage(msg, transfer); - return w; -}); - -// aliases for shorter compressed code (most minifers don't do this) -var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array; -// fixed length extra bits -var fleb = new u8([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, /* unused */ 0, 0, /* impossible */ 0]); -// fixed distance extra bits -// see fleb note -var fdeb = new u8([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, /* unused */ 0, 0]); -// code length index map -var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); -// get base, reverse index map from extra bits -var freb = function (eb, start) { - var b = new u16(31); - for (var i = 0; i < 31; ++i) { - b[i] = start += 1 << eb[i - 1]; - } - // numbers here are at max 18 bits - var r = new u32(b[30]); - for (var i = 1; i < 30; ++i) { - for (var j = b[i]; j < b[i + 1]; ++j) { - r[j] = ((j - b[i]) << 5) | i; - } - } - return [b, r]; -}; -var _a = freb(fleb, 2), fl = _a[0], revfl = _a[1]; -// we can ignore the fact that the other numbers are wrong; they never happen anyway -fl[28] = 258, revfl[258] = 28; -var _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1]; -// map of value to reverse (assuming 16 bits) -var rev = new u16(32768); -for (var i = 0; i < 32768; ++i) { - // reverse table algorithm from SO - var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1); - x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2); - x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4); - rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1; -} -// create huffman tree from u8 "map": index -> code length for code index -// mb (max bits) must be at most 15 -// TODO: optimize/split up? -var hMap = (function (cd, mb, r) { - var s = cd.length; - // index - var i = 0; - // u16 "map": index -> # of codes with bit length = index - var l = new u16(mb); - // length of cd must be 288 (total # of codes) - for (; i < s; ++i) - ++l[cd[i] - 1]; - // u16 "map": index -> minimum code for bit length = index - var le = new u16(mb); - for (i = 0; i < mb; ++i) { - le[i] = (le[i - 1] + l[i - 1]) << 1; - } - var co; - if (r) { - // u16 "map": index -> number of actual bits, symbol for code - co = new u16(1 << mb); - // bits to remove for reverser - var rvb = 15 - mb; - for (i = 0; i < s; ++i) { - // ignore 0 lengths - if (cd[i]) { - // num encoding both symbol and bits read - var sv = (i << 4) | cd[i]; - // free bits - var r_1 = mb - cd[i]; - // start value - var v = le[cd[i] - 1]++ << r_1; - // m is end value - for (var m = v | ((1 << r_1) - 1); v <= m; ++v) { - // every 16 bit value starting with the code yields the same result - co[rev[v] >>> rvb] = sv; - } - } - } - } - else { - co = new u16(s); - for (i = 0; i < s; ++i) { - if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]); - } - } - } - return co; -}); -// fixed length tree -var flt = new u8(288); -for (var i = 0; i < 144; ++i) - flt[i] = 8; -for (var i = 144; i < 256; ++i) - flt[i] = 9; -for (var i = 256; i < 280; ++i) - flt[i] = 7; -for (var i = 280; i < 288; ++i) - flt[i] = 8; -// fixed distance tree -var fdt = new u8(32); -for (var i = 0; i < 32; ++i) - fdt[i] = 5; -// fixed length map -var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1); -// fixed distance map -var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1); -// find max of array -var max = function (a) { - var m = a[0]; - for (var i = 1; i < a.length; ++i) { - if (a[i] > m) - m = a[i]; - } - return m; -}; -// read d, starting at bit p and mask with m -var bits = function (d, p, m) { - var o = (p / 8) | 0; - return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m; -}; -// read d, starting at bit p continuing for at least 16 bits -var bits16 = function (d, p) { - var o = (p / 8) | 0; - return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7)); -}; -// get end of byte -var shft = function (p) { return ((p / 8) | 0) + (p & 7 && 1); }; -// typed array slice - allows garbage collector to free original reference, -// while being more compatible than .slice -var slc = function (v, s, e) { - if (s == null || s < 0) - s = 0; - if (e == null || e > v.length) - e = v.length; - // can't use .constructor in case user-supplied - var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s); - n.set(v.subarray(s, e)); - return n; -}; -// expands raw DEFLATE data -var inflt = function (dat, buf, st) { - // source length - var sl = dat.length; - if (!sl || (st && !st.l && sl < 5)) - return buf || new u8(0); - // have to estimate size - var noBuf = !buf || st; - // no state - var noSt = !st || st.i; - if (!st) - st = {}; - // Assumes roughly 33% compression ratio average - if (!buf) - buf = new u8(sl * 3); - // ensure buffer can fit at least l elements - var cbuf = function (l) { - var bl = buf.length; - // need to increase size to fit - if (l > bl) { - // Double or set to necessary, whichever is greater - var nbuf = new u8(Math.max(bl * 2, l)); - nbuf.set(buf); - buf = nbuf; - } - }; - // last chunk bitpos bytes - var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; - // total bits - var tbts = sl * 8; - do { - if (!lm) { - // BFINAL - this is only 1 when last chunk is next - st.f = final = bits(dat, pos, 1); - // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman - var type = bits(dat, pos + 1, 3); - pos += 3; - if (!type) { - // go to end of byte boundary - var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l; - if (t > sl) { - if (noSt) - throw 'unexpected EOF'; - break; - } - // ensure size - if (noBuf) - cbuf(bt + l); - // Copy over uncompressed data - buf.set(dat.subarray(s, t), bt); - // Get new bitpos, update byte count - st.b = bt += l, st.p = pos = t * 8; - continue; - } - else if (type == 1) - lm = flrm, dm = fdrm, lbt = 9, dbt = 5; - else if (type == 2) { - // literal lengths - var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; - var tl = hLit + bits(dat, pos + 5, 31) + 1; - pos += 14; - // length+distance tree - var ldt = new u8(tl); - // code length tree - var clt = new u8(19); - for (var i = 0; i < hcLen; ++i) { - // use index map to get real code - clt[clim[i]] = bits(dat, pos + i * 3, 7); - } - pos += hcLen * 3; - // code lengths bits - var clb = max(clt), clbmsk = (1 << clb) - 1; - // code lengths map - var clm = hMap(clt, clb, 1); - for (var i = 0; i < tl;) { - var r = clm[bits(dat, pos, clbmsk)]; - // bits read - pos += r & 15; - // symbol - var s = r >>> 4; - // code length to copy - if (s < 16) { - ldt[i++] = s; - } - else { - // copy count - var c = 0, n = 0; - if (s == 16) - n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; - else if (s == 17) - n = 3 + bits(dat, pos, 7), pos += 3; - else if (s == 18) - n = 11 + bits(dat, pos, 127), pos += 7; - while (n--) - ldt[i++] = c; - } - } - // length tree distance tree - var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); - // max length bits - lbt = max(lt); - // max dist bits - dbt = max(dt); - lm = hMap(lt, lbt, 1); - dm = hMap(dt, dbt, 1); - } - else - throw 'invalid block type'; - if (pos > tbts) { - if (noSt) - throw 'unexpected EOF'; - break; - } - } - // Make sure the buffer can hold this + the largest possible addition - // Maximum chunk size (practically, theoretically infinite) is 2^17; - if (noBuf) - cbuf(bt + 131072); - var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; - var lpos = pos; - for (;; lpos = pos) { - // bits read, code - var c = lm[bits16(dat, pos) & lms], sym = c >>> 4; - pos += c & 15; - if (pos > tbts) { - if (noSt) - throw 'unexpected EOF'; - break; - } - if (!c) - throw 'invalid length/literal'; - if (sym < 256) - buf[bt++] = sym; - else if (sym == 256) { - lpos = pos, lm = null; - break; - } - else { - var add = sym - 254; - // no extra bits needed if less - if (sym > 264) { - // index - var i = sym - 257, b = fleb[i]; - add = bits(dat, pos, (1 << b) - 1) + fl[i]; - pos += b; - } - // dist - var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4; - if (!d) - throw 'invalid distance'; - pos += d & 15; - var dt = fd[dsym]; - if (dsym > 3) { - var b = fdeb[dsym]; - dt += bits16(dat, pos) & ((1 << b) - 1), pos += b; - } - if (pos > tbts) { - if (noSt) - throw 'unexpected EOF'; - break; - } - if (noBuf) - cbuf(bt + 131072); - var end = bt + add; - for (; bt < end; bt += 4) { - buf[bt] = buf[bt - dt]; - buf[bt + 1] = buf[bt + 1 - dt]; - buf[bt + 2] = buf[bt + 2 - dt]; - buf[bt + 3] = buf[bt + 3 - dt]; - } - bt = end; - } - } - st.l = lm, st.p = lpos, st.b = bt; - if (lm) - final = 1, st.m = lbt, st.d = dm, st.n = dbt; - } while (!final); - return bt == buf.length ? buf : slc(buf, 0, bt); -}; -// starting at p, write the minimum number of bits that can hold v to d -var wbits = function (d, p, v) { - v <<= p & 7; - var o = (p / 8) | 0; - d[o] |= v; - d[o + 1] |= v >>> 8; -}; -// starting at p, write the minimum number of bits (>8) that can hold v to d -var wbits16 = function (d, p, v) { - v <<= p & 7; - var o = (p / 8) | 0; - d[o] |= v; - d[o + 1] |= v >>> 8; - d[o + 2] |= v >>> 16; -}; -// creates code lengths from a frequency table -var hTree = function (d, mb) { - // Need extra info to make a tree - var t = []; - for (var i = 0; i < d.length; ++i) { - if (d[i]) - t.push({ s: i, f: d[i] }); - } - var s = t.length; - var t2 = t.slice(); - if (!s) - return [et, 0]; - if (s == 1) { - var v = new u8(t[0].s + 1); - v[t[0].s] = 1; - return [v, 1]; - } - t.sort(function (a, b) { return a.f - b.f; }); - // after i2 reaches last ind, will be stopped - // freq must be greater than largest possible number of symbols - t.push({ s: -1, f: 25001 }); - var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2; - t[0] = { s: -1, f: l.f + r.f, l: l, r: r }; - // efficient algorithm from UZIP.js - // i0 is lookbehind, i2 is lookahead - after processing two low-freq - // symbols that combined have high freq, will start processing i2 (high-freq, - // non-composite) symbols instead - // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/ - while (i1 != s - 1) { - l = t[t[i0].f < t[i2].f ? i0++ : i2++]; - r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++]; - t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r }; - } - var maxSym = t2[0].s; - for (var i = 1; i < s; ++i) { - if (t2[i].s > maxSym) - maxSym = t2[i].s; - } - // code lengths - var tr = new u16(maxSym + 1); - // max bits in tree - var mbt = ln(t[i1 - 1], tr, 0); - if (mbt > mb) { - // more algorithms from UZIP.js - // TODO: find out how this code works (debt) - // ind debt - var i = 0, dt = 0; - // left cost - var lft = mbt - mb, cst = 1 << lft; - t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; }); - for (; i < s; ++i) { - var i2_1 = t2[i].s; - if (tr[i2_1] > mb) { - dt += cst - (1 << (mbt - tr[i2_1])); - tr[i2_1] = mb; - } - else - break; - } - dt >>>= lft; - while (dt > 0) { - var i2_2 = t2[i].s; - if (tr[i2_2] < mb) - dt -= 1 << (mb - tr[i2_2]++ - 1); - else - ++i; - } - for (; i >= 0 && dt; --i) { - var i2_3 = t2[i].s; - if (tr[i2_3] == mb) { - --tr[i2_3]; - ++dt; - } - } - mbt = mb; - } - return [new u8(tr), mbt]; -}; -// get the max length and assign length codes -var ln = function (n, l, d) { - return n.s == -1 - ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) - : (l[n.s] = d); -}; -// length codes generation -var lc = function (c) { - var s = c.length; - // Note that the semicolon was intentional - while (s && !c[--s]) - ; - var cl = new u16(++s); - // ind num streak - var cli = 0, cln = c[0], cls = 1; - var w = function (v) { cl[cli++] = v; }; - for (var i = 1; i <= s; ++i) { - if (c[i] == cln && i != s) - ++cls; - else { - if (!cln && cls > 2) { - for (; cls > 138; cls -= 138) - w(32754); - if (cls > 2) { - w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305); - cls = 0; - } - } - else if (cls > 3) { - w(cln), --cls; - for (; cls > 6; cls -= 6) - w(8304); - if (cls > 2) - w(((cls - 3) << 5) | 8208), cls = 0; - } - while (cls--) - w(cln); - cls = 1; - cln = c[i]; - } - } - return [cl.subarray(0, cli), s]; -}; -// calculate the length of output from tree, code lengths -var clen = function (cf, cl) { - var l = 0; - for (var i = 0; i < cl.length; ++i) - l += cf[i] * cl[i]; - return l; -}; -// writes a fixed block -// returns the new bit pos -var wfblk = function (out, pos, dat) { - // no need to write 00 as type: TypedArray defaults to 0 - var s = dat.length; - var o = shft(pos + 2); - out[o] = s & 255; - out[o + 1] = s >>> 8; - out[o + 2] = out[o] ^ 255; - out[o + 3] = out[o + 1] ^ 255; - for (var i = 0; i < s; ++i) - out[o + i + 4] = dat[i]; - return (o + 4 + s) * 8; -}; -// writes a block -var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) { - wbits(out, p++, final); - ++lf[256]; - var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1]; - var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1]; - var _c = lc(dlt), lclt = _c[0], nlc = _c[1]; - var _d = lc(ddt), lcdt = _d[0], ndc = _d[1]; - var lcfreq = new u16(19); - for (var i = 0; i < lclt.length; ++i) - lcfreq[lclt[i] & 31]++; - for (var i = 0; i < lcdt.length; ++i) - lcfreq[lcdt[i] & 31]++; - var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1]; - var nlcc = 19; - for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) - ; - var flen = (bl + 5) << 3; - var ftlen = clen(lf, flt) + clen(df, fdt) + eb; - var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]); - if (flen <= ftlen && flen <= dtlen) - return wfblk(out, p, dat.subarray(bs, bs + bl)); - var lm, ll, dm, dl; - wbits(out, p, 1 + (dtlen < ftlen)), p += 2; - if (dtlen < ftlen) { - lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt; - var llm = hMap(lct, mlcb, 0); - wbits(out, p, nlc - 257); - wbits(out, p + 5, ndc - 1); - wbits(out, p + 10, nlcc - 4); - p += 14; - for (var i = 0; i < nlcc; ++i) - wbits(out, p + 3 * i, lct[clim[i]]); - p += 3 * nlcc; - var lcts = [lclt, lcdt]; - for (var it = 0; it < 2; ++it) { - var clct = lcts[it]; - for (var i = 0; i < clct.length; ++i) { - var len = clct[i] & 31; - wbits(out, p, llm[len]), p += lct[len]; - if (len > 15) - wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12; - } - } - } - else { - lm = flm, ll = flt, dm = fdm, dl = fdt; - } - for (var i = 0; i < li; ++i) { - if (syms[i] > 255) { - var len = (syms[i] >>> 18) & 31; - wbits16(out, p, lm[len + 257]), p += ll[len + 257]; - if (len > 7) - wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len]; - var dst = syms[i] & 31; - wbits16(out, p, dm[dst]), p += dl[dst]; - if (dst > 3) - wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst]; - } - else { - wbits16(out, p, lm[syms[i]]), p += ll[syms[i]]; - } - } - wbits16(out, p, lm[256]); - return p + ll[256]; -}; -// deflate options (nice << 13) | chain -var deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); -// empty -var et = /*#__PURE__*/ new u8(0); -// compresses data into a raw DEFLATE buffer -var dflt = function (dat, lvl, plvl, pre, post, lst) { - var s = dat.length; - var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post); - // writing to this writes to the output buffer - var w = o.subarray(pre, o.length - post); - var pos = 0; - if (!lvl || s < 8) { - for (var i = 0; i <= s; i += 65535) { - // end - var e = i + 65535; - if (e < s) { - // write full block - pos = wfblk(w, pos, dat.subarray(i, e)); - } - else { - // write final block - w[i] = lst; - pos = wfblk(w, pos, dat.subarray(i, s)); - } - } - } - else { - var opt = deo[lvl - 1]; - var n = opt >>> 13, c = opt & 8191; - var msk_1 = (1 << plvl) - 1; - // prev 2-byte val map curr 2-byte val map - var prev = new u16(32768), head = new u16(msk_1 + 1); - var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1; - var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; }; - // 24576 is an arbitrary number of maximum symbols per block - // 424 buffer for last block - var syms = new u32(25000); - // length/literal freq distance freq - var lf = new u16(288), df = new u16(32); - // l/lcnt exbits index l/lind waitdx bitpos - var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0; - for (; i < s; ++i) { - // hash value - // deopt when i > s - 3 - at end, deopt acceptable - var hv = hsh(i); - // index mod 32768 previous index mod - var imod = i & 32767, pimod = head[hv]; - prev[imod] = pimod; - head[hv] = imod; - // We always should modify head and prev, but only add symbols if - // this data is not yet processed ("wait" for wait index) - if (wi <= i) { - // bytes remaining - var rem = s - i; - if ((lc_1 > 7000 || li > 24576) && rem > 423) { - pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos); - li = lc_1 = eb = 0, bs = i; - for (var j = 0; j < 286; ++j) - lf[j] = 0; - for (var j = 0; j < 30; ++j) - df[j] = 0; - } - // len dist chain - var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767; - if (rem > 2 && hv == hsh(i - dif)) { - var maxn = Math.min(n, rem) - 1; - var maxd = Math.min(32767, i); - // max possible length - // not capped at dif because decompressors implement "rolling" index population - var ml = Math.min(258, rem); - while (dif <= maxd && --ch_1 && imod != pimod) { - if (dat[i + l] == dat[i + l - dif]) { - var nl = 0; - for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl) - ; - if (nl > l) { - l = nl, d = dif; - // break out early when we reach "nice" (we are satisfied enough) - if (nl > maxn) - break; - // now, find the rarest 2-byte sequence within this - // length of literals and search for that instead. - // Much faster than just using the start - var mmd = Math.min(dif, nl - 2); - var md = 0; - for (var j = 0; j < mmd; ++j) { - var ti = (i - dif + j + 32768) & 32767; - var pti = prev[ti]; - var cd = (ti - pti + 32768) & 32767; - if (cd > md) - md = cd, pimod = ti; - } - } - } - // check the previous match - imod = pimod, pimod = prev[imod]; - dif += (imod - pimod + 32768) & 32767; - } - } - // d will be nonzero only when a match was found - if (d) { - // store both dist and len data in one Uint32 - // Make sure this is recognized as a len/dist with 28th bit (2^28) - syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d]; - var lin = revfl[l] & 31, din = revfd[d] & 31; - eb += fleb[lin] + fdeb[din]; - ++lf[257 + lin]; - ++df[din]; - wi = i + l; - ++lc_1; - } - else { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - } - } - pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); - // this is the easiest way to avoid needing to maintain state - if (!lst && pos & 7) - pos = wfblk(w, pos + 1, et); - } - return slc(o, 0, pre + shft(pos) + post); -}; -// CRC32 table -var crct = /*#__PURE__*/ (function () { - var t = new u32(256); - for (var i = 0; i < 256; ++i) { - var c = i, k = 9; - while (--k) - c = ((c & 1) && 0xEDB88320) ^ (c >>> 1); - t[i] = c; - } - return t; -})(); -// CRC32 -var crc = function () { - var c = -1; - return { - p: function (d) { - // closures have awful performance - var cr = c; - for (var i = 0; i < d.length; ++i) - cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8); - c = cr; - }, - d: function () { return ~c; } - }; -}; -// Alder32 -var adler = function () { - var a = 1, b = 0; - return { - p: function (d) { - // closures have awful performance - var n = a, m = b; - var l = d.length; - for (var i = 0; i != l;) { - var e = Math.min(i + 2655, l); - for (; i < e; ++i) - m += n += d[i]; - n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16); - } - a = n, b = m; - }, - d: function () { - a %= 65521, b %= 65521; - return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8); - } - }; -}; -; -// deflate with opts -var dopt = function (dat, opt, pre, post, st) { - return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st); -}; -// Walmart object spread -var mrg = function (a, b) { - var o = {}; - for (var k in a) - o[k] = a[k]; - for (var k in b) - o[k] = b[k]; - return o; -}; -// worker clone -// This is possibly the craziest part of the entire codebase, despite how simple it may seem. -// The only parameter to this function is a closure that returns an array of variables outside of the function scope. -// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization. -// We will return an object mapping of true variable name to value (basically, the current scope as a JS object). -// The reason we can't just use the original variable names is minifiers mangling the toplevel scope. -// This took me three weeks to figure out how to do. -var wcln = function (fn, fnStr, td) { - var dt = fn(); - var st = fn.toString(); - var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(','); - for (var i = 0; i < dt.length; ++i) { - var v = dt[i], k = ks[i]; - if (typeof v == 'function') { - fnStr += ';' + k + '='; - var st_1 = v.toString(); - if (v.prototype) { - // for global objects - if (st_1.indexOf('[native code]') != -1) { - var spInd = st_1.indexOf(' ', 8) + 1; - fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd)); - } - else { - fnStr += st_1; - for (var t in v.prototype) - fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString(); - } - } - else - fnStr += st_1; - } - else - td[k] = v; - } - return [fnStr, td]; -}; -var ch = []; -// clone bufs -var cbfs = function (v) { - var tl = []; - for (var k in v) { - if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32) - tl.push((v[k] = new v[k].constructor(v[k])).buffer); - } - return tl; -}; -// use a worker to execute code -var wrkr = function (fns, init, id, cb) { - var _a; - if (!ch[id]) { - var fnStr = '', td_1 = {}, m = fns.length - 1; - for (var i = 0; i < m; ++i) - _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1]; - ch[id] = wcln(fns[m], fnStr, td_1); - } - var td = mrg({}, ch[id][1]); - return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb); -}; -// base async inflate fn -var bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8]; }; -var bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; }; -// gzip extra -var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; }; -// gunzip extra -var guze = function () { return [gzs, gzl]; }; -// zlib extra -var zle = function () { return [zlh, wbytes, adler]; }; -// unzlib extra -var zule = function () { return [zlv]; }; -// post buf -var pbf = function (msg) { return postMessage(msg, [msg.buffer]); }; -// get u8 -var gu8 = function (o) { return o && o.size && new u8(o.size); }; -// async helper -var cbify = function (dat, opts, fns, init, id, cb) { - var w = wrkr(fns, init, id, function (err, dat) { - w.terminate(); - cb(err, dat); - }); - w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []); - return function () { w.terminate(); }; -}; -// auto stream -var astrm = function (strm) { - strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); }; - return function (ev) { return strm.push(ev.data[0], ev.data[1]); }; -}; -// async stream attach -var astrmify = function (fns, strm, opts, init, id) { - var t; - var w = wrkr(fns, init, id, function (err, dat) { - if (err) - w.terminate(), strm.ondata.call(strm, err); - else { - if (dat[1]) - w.terminate(); - strm.ondata.call(strm, err, dat[0], dat[1]); - } - }); - w.postMessage(opts); - strm.push = function (d, f) { - if (t) - throw 'stream finished'; - if (!strm.ondata) - throw 'no stream handler'; - w.postMessage([d, t = f], [d.buffer]); - }; - strm.terminate = function () { w.terminate(); }; -}; -// read 2 bytes -var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); }; -// read 4 bytes -var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; }; -var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); }; -// write bytes -var wbytes = function (d, b, v) { - for (; v; ++b) - d[b] = v, v >>>= 8; -}; -// gzip header -var gzh = function (c, o) { - var fn = o.filename; - c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix - if (o.mtime != 0) - wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000)); - if (fn) { - c[3] = 8; - for (var i = 0; i <= fn.length; ++i) - c[i + 10] = fn.charCodeAt(i); - } -}; -// gzip footer: -8 to -4 = CRC, -4 to -0 is length -// gzip start -var gzs = function (d) { - if (d[0] != 31 || d[1] != 139 || d[2] != 8) - throw 'invalid gzip data'; - var flg = d[3]; - var st = 10; - if (flg & 4) - st += d[10] | (d[11] << 8) + 2; - for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++]) - ; - return st + (flg & 2); -}; -// gzip length -var gzl = function (d) { - var l = d.length; - return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0; -}; -// gzip header length -var gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); }; -// zlib header -var zlh = function (c, o) { - var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2; - c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1); -}; -// zlib valid -var zlv = function (d) { - if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31)) - throw 'invalid zlib data'; - if (d[1] & 32) - throw 'invalid zlib data: preset dictionaries not supported'; -}; -function AsyncCmpStrm(opts, cb) { - if (!cb && typeof opts == 'function') - cb = opts, opts = {}; - this.ondata = cb; - return opts; -} -// zlib footer: -4 to -0 is Adler32 -/** - * Streaming DEFLATE compression - */ -var Deflate = /*#__PURE__*/ (function () { - function Deflate(opts, cb) { - if (!cb && typeof opts == 'function') - cb = opts, opts = {}; - this.ondata = cb; - this.o = opts || {}; - } - Deflate.prototype.p = function (c, f) { - this.ondata(dopt(c, this.o, 0, 0, !f), f); - }; - /** - * Pushes a chunk to be deflated - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - Deflate.prototype.push = function (chunk, final) { - if (this.d) - throw 'stream finished'; - if (!this.ondata) - throw 'no stream handler'; - this.d = final; - this.p(chunk, final || false); - }; - return Deflate; -}()); -export { Deflate }; -/** - * Asynchronous streaming DEFLATE compression - */ -var AsyncDeflate = /*#__PURE__*/ (function () { - function AsyncDeflate(opts, cb) { - astrmify([ - bDflt, - function () { return [astrm, Deflate]; } - ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) { - var strm = new Deflate(ev.data); - onmessage = astrm(strm); - }, 6); - } - return AsyncDeflate; -}()); -export { AsyncDeflate }; -export function deflate(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != 'function') - throw 'no callback'; - return cbify(data, opts, [ - bDflt, - ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb); -} -/** - * Compresses data with DEFLATE without any wrapper - * @param data The data to compress - * @param opts The compression options - * @returns The deflated version of the data - */ -export function deflateSync(data, opts) { - return dopt(data, opts || {}, 0, 0); -} -/** - * Streaming DEFLATE decompression - */ -var Inflate = /*#__PURE__*/ (function () { - /** - * Creates an inflation stream - * @param cb The callback to call whenever data is inflated - */ - function Inflate(cb) { - this.s = {}; - this.p = new u8(0); - this.ondata = cb; - } - Inflate.prototype.e = function (c) { - if (this.d) - throw 'stream finished'; - if (!this.ondata) - throw 'no stream handler'; - var l = this.p.length; - var n = new u8(l + c.length); - n.set(this.p), n.set(c, l), this.p = n; - }; - Inflate.prototype.c = function (final) { - this.d = this.s.i = final || false; - var bts = this.s.b; - var dt = inflt(this.p, this.o, this.s); - this.ondata(slc(dt, bts, this.s.b), this.d); - this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length; - this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7; - }; - /** - * Pushes a chunk to be inflated - * @param chunk The chunk to push - * @param final Whether this is the final chunk - */ - Inflate.prototype.push = function (chunk, final) { - this.e(chunk), this.c(final); - }; - return Inflate; -}()); -export { Inflate }; -/** - * Asynchronous streaming DEFLATE decompression - */ -var AsyncInflate = /*#__PURE__*/ (function () { - /** - * Creates an asynchronous inflation stream - * @param cb The callback to call whenever data is deflated - */ - function AsyncInflate(cb) { - this.ondata = cb; - astrmify([ - bInflt, - function () { return [astrm, Inflate]; } - ], this, 0, function () { - var strm = new Inflate(); - onmessage = astrm(strm); - }, 7); - } - return AsyncInflate; -}()); -export { AsyncInflate }; -export function inflate(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != 'function') - throw 'no callback'; - return cbify(data, opts, [ - bInflt - ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb); -} -/** - * Expands DEFLATE data with no wrapper - * @param data The data to decompress - * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length. - * @returns The decompressed version of the data - */ -export function inflateSync(data, out) { - return inflt(data, out); -} -// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize. -/** - * Streaming GZIP compression - */ -var Gzip = /*#__PURE__*/ (function () { - function Gzip(opts, cb) { - this.c = crc(); - this.l = 0; - this.v = 1; - Deflate.call(this, opts, cb); - } - /** - * Pushes a chunk to be GZIPped - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - Gzip.prototype.push = function (chunk, final) { - Deflate.prototype.push.call(this, chunk, final); - }; - Gzip.prototype.p = function (c, f) { - this.c.p(c); - this.l += c.length; - var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f); - if (this.v) - gzh(raw, this.o), this.v = 0; - if (f) - wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l); - this.ondata(raw, f); - }; - return Gzip; -}()); -export { Gzip }; -/** - * Asynchronous streaming GZIP compression - */ -var AsyncGzip = /*#__PURE__*/ (function () { - function AsyncGzip(opts, cb) { - astrmify([ - bDflt, - gze, - function () { return [astrm, Deflate, Gzip]; } - ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) { - var strm = new Gzip(ev.data); - onmessage = astrm(strm); - }, 8); - } - return AsyncGzip; -}()); -export { AsyncGzip }; -export function gzip(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != 'function') - throw 'no callback'; - return cbify(data, opts, [ - bDflt, - gze, - function () { return [gzipSync]; } - ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb); -} -/** - * Compresses data with GZIP - * @param data The data to compress - * @param opts The compression options - * @returns The gzipped version of the data - */ -export function gzipSync(data, opts) { - if (!opts) - opts = {}; - var c = crc(), l = data.length; - c.p(data); - var d = dopt(data, opts, gzhl(opts), 8), s = d.length; - return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d; -} -/** - * Streaming GZIP decompression - */ -var Gunzip = /*#__PURE__*/ (function () { - /** - * Creates a GUNZIP stream - * @param cb The callback to call whenever data is inflated - */ - function Gunzip(cb) { - this.v = 1; - Inflate.call(this, cb); - } - /** - * Pushes a chunk to be GUNZIPped - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - Gunzip.prototype.push = function (chunk, final) { - Inflate.prototype.e.call(this, chunk); - if (this.v) { - var s = this.p.length > 3 ? gzs(this.p) : 4; - if (s >= this.p.length && !final) - return; - this.p = this.p.subarray(s), this.v = 0; - } - if (final) { - if (this.p.length < 8) - throw 'invalid gzip stream'; - this.p = this.p.subarray(0, -8); - } - // necessary to prevent TS from using the closure value - // This allows for workerization to function correctly - Inflate.prototype.c.call(this, final); - }; - return Gunzip; -}()); -export { Gunzip }; -/** - * Asynchronous streaming GZIP decompression - */ -var AsyncGunzip = /*#__PURE__*/ (function () { - /** - * Creates an asynchronous GUNZIP stream - * @param cb The callback to call whenever data is deflated - */ - function AsyncGunzip(cb) { - this.ondata = cb; - astrmify([ - bInflt, - guze, - function () { return [astrm, Inflate, Gunzip]; } - ], this, 0, function () { - var strm = new Gunzip(); - onmessage = astrm(strm); - }, 9); - } - return AsyncGunzip; -}()); -export { AsyncGunzip }; -export function gunzip(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != 'function') - throw 'no callback'; - return cbify(data, opts, [ - bInflt, - guze, - function () { return [gunzipSync]; } - ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb); -} -/** - * Expands GZIP data - * @param data The data to decompress - * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory. - * @returns The decompressed version of the data - */ -export function gunzipSync(data, out) { - return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data))); -} -/** - * Streaming Zlib compression - */ -var Zlib = /*#__PURE__*/ (function () { - function Zlib(opts, cb) { - this.c = adler(); - this.v = 1; - Deflate.call(this, opts, cb); - } - /** - * Pushes a chunk to be zlibbed - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - Zlib.prototype.push = function (chunk, final) { - Deflate.prototype.push.call(this, chunk, final); - }; - Zlib.prototype.p = function (c, f) { - this.c.p(c); - var raw = dopt(c, this.o, this.v && 2, f && 4, !f); - if (this.v) - zlh(raw, this.o), this.v = 0; - if (f) - wbytes(raw, raw.length - 4, this.c.d()); - this.ondata(raw, f); - }; - return Zlib; -}()); -export { Zlib }; -/** - * Asynchronous streaming Zlib compression - */ -var AsyncZlib = /*#__PURE__*/ (function () { - function AsyncZlib(opts, cb) { - astrmify([ - bDflt, - zle, - function () { return [astrm, Deflate, Zlib]; } - ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) { - var strm = new Zlib(ev.data); - onmessage = astrm(strm); - }, 10); - } - return AsyncZlib; -}()); -export { AsyncZlib }; -export function zlib(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != 'function') - throw 'no callback'; - return cbify(data, opts, [ - bDflt, - zle, - function () { return [zlibSync]; } - ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb); -} -/** - * Compress data with Zlib - * @param data The data to compress - * @param opts The compression options - * @returns The zlib-compressed version of the data - */ -export function zlibSync(data, opts) { - if (!opts) - opts = {}; - var a = adler(); - a.p(data); - var d = dopt(data, opts, 2, 4); - return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d; -} -/** - * Streaming Zlib decompression - */ -var Unzlib = /*#__PURE__*/ (function () { - /** - * Creates a Zlib decompression stream - * @param cb The callback to call whenever data is inflated - */ - function Unzlib(cb) { - this.v = 1; - Inflate.call(this, cb); - } - /** - * Pushes a chunk to be unzlibbed - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - Unzlib.prototype.push = function (chunk, final) { - Inflate.prototype.e.call(this, chunk); - if (this.v) { - if (this.p.length < 2 && !final) - return; - this.p = this.p.subarray(2), this.v = 0; - } - if (final) { - if (this.p.length < 4) - throw 'invalid zlib stream'; - this.p = this.p.subarray(0, -4); - } - // necessary to prevent TS from using the closure value - // This allows for workerization to function correctly - Inflate.prototype.c.call(this, final); - }; - return Unzlib; -}()); -export { Unzlib }; -/** - * Asynchronous streaming Zlib decompression - */ -var AsyncUnzlib = /*#__PURE__*/ (function () { - /** - * Creates an asynchronous Zlib decompression stream - * @param cb The callback to call whenever data is deflated - */ - function AsyncUnzlib(cb) { - this.ondata = cb; - astrmify([ - bInflt, - zule, - function () { return [astrm, Inflate, Unzlib]; } - ], this, 0, function () { - var strm = new Unzlib(); - onmessage = astrm(strm); - }, 11); - } - return AsyncUnzlib; -}()); -export { AsyncUnzlib }; -export function unzlib(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != 'function') - throw 'no callback'; - return cbify(data, opts, [ - bInflt, - zule, - function () { return [unzlibSync]; } - ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb); -} -/** - * Expands Zlib data - * @param data The data to decompress - * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length. - * @returns The decompressed version of the data - */ -export function unzlibSync(data, out) { - return inflt((zlv(data), data.subarray(2, -4)), out); -} -// Default algorithm for compression (used because having a known output size allows faster decompression) -export { gzip as compress, AsyncGzip as AsyncCompress }; -// Default algorithm for compression (used because having a known output size allows faster decompression) -export { gzipSync as compressSync, Gzip as Compress }; -/** - * Streaming GZIP, Zlib, or raw DEFLATE decompression - */ -var Decompress = /*#__PURE__*/ (function () { - /** - * Creates a decompression stream - * @param cb The callback to call whenever data is decompressed - */ - function Decompress(cb) { - this.G = Gunzip; - this.I = Inflate; - this.Z = Unzlib; - this.ondata = cb; - } - /** - * Pushes a chunk to be decompressed - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - Decompress.prototype.push = function (chunk, final) { - if (!this.ondata) - throw 'no stream handler'; - if (!this.s) { - if (this.p && this.p.length) { - var n = new u8(this.p.length + chunk.length); - n.set(this.p), n.set(chunk, this.p.length); - } - else - this.p = chunk; - if (this.p.length > 2) { - var _this_1 = this; - var cb = function () { _this_1.ondata.apply(_this_1, arguments); }; - this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8) - ? new this.G(cb) - : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31)) - ? new this.I(cb) - : new this.Z(cb); - this.s.push(this.p, final); - this.p = null; - } - } - else - this.s.push(chunk, final); - }; - return Decompress; -}()); -export { Decompress }; -/** - * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression - */ -var AsyncDecompress = /*#__PURE__*/ (function () { - /** - * Creates an asynchronous decompression stream - * @param cb The callback to call whenever data is decompressed - */ - function AsyncDecompress(cb) { - this.G = AsyncGunzip; - this.I = AsyncInflate; - this.Z = AsyncUnzlib; - this.ondata = cb; - } - /** - * Pushes a chunk to be decompressed - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - AsyncDecompress.prototype.push = function (chunk, final) { - Decompress.prototype.push.call(this, chunk, final); - }; - return AsyncDecompress; -}()); -export { AsyncDecompress }; -export function decompress(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != 'function') - throw 'no callback'; - return (data[0] == 31 && data[1] == 139 && data[2] == 8) - ? gunzip(data, opts, cb) - : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31)) - ? inflate(data, opts, cb) - : unzlib(data, opts, cb); -} -/** - * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format - * @param data The data to decompress - * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length. - * @returns The decompressed version of the data - */ -export function decompressSync(data, out) { - return (data[0] == 31 && data[1] == 139 && data[2] == 8) - ? gunzipSync(data, out) - : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31)) - ? inflateSync(data, out) - : unzlibSync(data, out); -} -// flatten a directory structure -var fltn = function (d, p, t, o) { - for (var k in d) { - var val = d[k], n = p + k; - if (val instanceof u8) - t[n] = [val, o]; - else if (Array.isArray(val)) - t[n] = [val[0], mrg(o, val[1])]; - else - fltn(val, n + '/', t, o); - } -}; -// text encoder -var te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder(); -// text decoder -var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder(); -// text decoder stream -var tds = 0; -try { - td.decode(et, { stream: true }); - tds = 1; -} -catch (e) { } -// decode UTF8 -var dutf8 = function (d) { - for (var r = '', i = 0;;) { - var c = d[i++]; - var eb = (c > 127) + (c > 223) + (c > 239); - if (i + eb > d.length) - return [r, slc(d, i - 1)]; - if (!eb) - r += String.fromCharCode(c); - else if (eb == 3) { - c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536, - r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023)); - } - else if (eb & 1) - r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63)); - else - r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)); - } -}; -/** - * Streaming UTF-8 decoding - */ -var DecodeUTF8 = /*#__PURE__*/ (function () { - /** - * Creates a UTF-8 decoding stream - * @param cb The callback to call whenever data is decoded - */ - function DecodeUTF8(cb) { - this.ondata = cb; - if (tds) - this.t = new TextDecoder(); - else - this.p = et; - } - /** - * Pushes a chunk to be decoded from UTF-8 binary - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - DecodeUTF8.prototype.push = function (chunk, final) { - if (!this.ondata) - throw 'no callback'; - final = !!final; - if (this.t) { - this.ondata(this.t.decode(chunk, { stream: true }), final); - if (final) { - if (this.t.decode().length) - throw 'invalid utf-8 data'; - this.t = null; - } - return; - } - if (!this.p) - throw 'stream finished'; - var dat = new u8(this.p.length + chunk.length); - dat.set(this.p); - dat.set(chunk, this.p.length); - var _a = dutf8(dat), ch = _a[0], np = _a[1]; - if (final) { - if (np.length) - throw 'invalid utf-8 data'; - this.p = null; - } - else - this.p = np; - this.ondata(ch, final); - }; - return DecodeUTF8; -}()); -export { DecodeUTF8 }; -/** - * Streaming UTF-8 encoding - */ -var EncodeUTF8 = /*#__PURE__*/ (function () { - /** - * Creates a UTF-8 decoding stream - * @param cb The callback to call whenever data is encoded - */ - function EncodeUTF8(cb) { - this.ondata = cb; - } - /** - * Pushes a chunk to be encoded to UTF-8 - * @param chunk The string data to push - * @param final Whether this is the last chunk - */ - EncodeUTF8.prototype.push = function (chunk, final) { - if (!this.ondata) - throw 'no callback'; - if (this.d) - throw 'stream finished'; - this.ondata(strToU8(chunk), this.d = final || false); - }; - return EncodeUTF8; -}()); -export { EncodeUTF8 }; -/** - * Converts a string into a Uint8Array for use with compression/decompression methods - * @param str The string to encode - * @param latin1 Whether or not to interpret the data as Latin-1. This should - * not need to be true unless decoding a binary string. - * @returns The string encoded in UTF-8/Latin-1 binary - */ -export function strToU8(str, latin1) { - if (latin1) { - var ar_1 = new u8(str.length); - for (var i = 0; i < str.length; ++i) - ar_1[i] = str.charCodeAt(i); - return ar_1; - } - if (te) - return te.encode(str); - var l = str.length; - var ar = new u8(str.length + (str.length >> 1)); - var ai = 0; - var w = function (v) { ar[ai++] = v; }; - for (var i = 0; i < l; ++i) { - if (ai + 5 > ar.length) { - var n = new u8(ai + 8 + ((l - i) << 1)); - n.set(ar); - ar = n; - } - var c = str.charCodeAt(i); - if (c < 128 || latin1) - w(c); - else if (c < 2048) - w(192 | (c >> 6)), w(128 | (c & 63)); - else if (c > 55295 && c < 57344) - c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023), - w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63)); - else - w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63)); - } - return slc(ar, 0, ai); -} -/** - * Converts a Uint8Array to a string - * @param dat The data to decode to string - * @param latin1 Whether or not to interpret the data as Latin-1. This should - * not need to be true unless encoding to binary string. - * @returns The original UTF-8/Latin-1 string - */ -export function strFromU8(dat, latin1) { - if (latin1) { - var r = ''; - for (var i = 0; i < dat.length; i += 16384) - r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384)); - return r; - } - else if (td) - return td.decode(dat); - else { - var _a = dutf8(dat), out = _a[0], ext = _a[1]; - if (ext.length) - throw 'invalid utf-8 data'; - return out; - } -} -; -// deflate bit flag -var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; }; -// skip local zip header -var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); }; -// read zip header -var zh = function (d, b, z) { - var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20); - var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2]; - return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off]; -}; -// read zip64 extra field -var z64e = function (d, b) { - for (; b2(d, b) != 1; b += 4 + b2(d, b + 2)) - ; - return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)]; -}; -// extra field length -var exfl = function (ex) { - var le = 0; - if (ex) { - for (var k in ex) { - var l = ex[k].length; - if (l > 65535) - throw 'extra field too long'; - le += l + 4; - } - } - return le; -}; -// write zip header -var wzh = function (d, b, f, fn, u, c, ce, co) { - var fl = fn.length, ex = f.extra, col = co && co.length; - var exl = exfl(ex); - wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4; - if (ce != null) - d[b++] = 20, d[b++] = f.os; - d[b] = 20, b += 2; // spec compliance? what's that? - d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8; - d[b++] = f.compression & 255, d[b++] = f.compression >> 8; - var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980; - if (y < 0 || y > 119) - throw 'date not in range 1980-2099'; - wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1)), b += 4; - if (c != null) { - wbytes(d, b, f.crc); - wbytes(d, b + 4, c); - wbytes(d, b + 8, f.size); - } - wbytes(d, b + 12, fl); - wbytes(d, b + 14, exl), b += 16; - if (ce != null) { - wbytes(d, b, col); - wbytes(d, b + 6, f.attrs); - wbytes(d, b + 10, ce), b += 14; - } - d.set(fn, b); - b += fl; - if (exl) { - for (var k in ex) { - var exf = ex[k], l = exf.length; - wbytes(d, b, +k); - wbytes(d, b + 2, l); - d.set(exf, b + 4), b += 4 + l; - } - } - if (col) - d.set(co, b), b += col; - return b; -}; -// write zip footer (end of central directory) -var wzf = function (o, b, c, d, e) { - wbytes(o, b, 0x6054B50); // skip disk - wbytes(o, b + 8, c); - wbytes(o, b + 10, c); - wbytes(o, b + 12, d); - wbytes(o, b + 16, e); -}; -/** - * A pass-through stream to keep data uncompressed in a ZIP archive. - */ -var ZipPassThrough = /*#__PURE__*/ (function () { - /** - * Creates a pass-through stream that can be added to ZIP archives - * @param filename The filename to associate with this data stream - */ - function ZipPassThrough(filename) { - this.filename = filename; - this.c = crc(); - this.size = 0; - this.compression = 0; - } - /** - * Processes a chunk and pushes to the output stream. You can override this - * method in a subclass for custom behavior, but by default this passes - * the data through. You must call this.ondata(err, chunk, final) at some - * point in this method. - * @param chunk The chunk to process - * @param final Whether this is the last chunk - */ - ZipPassThrough.prototype.process = function (chunk, final) { - this.ondata(null, chunk, final); - }; - /** - * Pushes a chunk to be added. If you are subclassing this with a custom - * compression algorithm, note that you must push data from the source - * file only, pre-compression. - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - ZipPassThrough.prototype.push = function (chunk, final) { - if (!this.ondata) - throw 'no callback - add to ZIP archive before pushing'; - this.c.p(chunk); - this.size += chunk.length; - if (final) - this.crc = this.c.d(); - this.process(chunk, final || false); - }; - return ZipPassThrough; -}()); -export { ZipPassThrough }; -// I don't extend because TypeScript extension adds 1kB of runtime bloat -/** - * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate - * for better performance - */ -var ZipDeflate = /*#__PURE__*/ (function () { - /** - * Creates a DEFLATE stream that can be added to ZIP archives - * @param filename The filename to associate with this data stream - * @param opts The compression options - */ - function ZipDeflate(filename, opts) { - var _this_1 = this; - if (!opts) - opts = {}; - ZipPassThrough.call(this, filename); - this.d = new Deflate(opts, function (dat, final) { - _this_1.ondata(null, dat, final); - }); - this.compression = 8; - this.flag = dbf(opts.level); - } - ZipDeflate.prototype.process = function (chunk, final) { - try { - this.d.push(chunk, final); - } - catch (e) { - this.ondata(e, null, final); - } - }; - /** - * Pushes a chunk to be deflated - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - ZipDeflate.prototype.push = function (chunk, final) { - ZipPassThrough.prototype.push.call(this, chunk, final); - }; - return ZipDeflate; -}()); -export { ZipDeflate }; -/** - * Asynchronous streaming DEFLATE compression for ZIP archives - */ -var AsyncZipDeflate = /*#__PURE__*/ (function () { - /** - * Creates a DEFLATE stream that can be added to ZIP archives - * @param filename The filename to associate with this data stream - * @param opts The compression options - */ - function AsyncZipDeflate(filename, opts) { - var _this_1 = this; - if (!opts) - opts = {}; - ZipPassThrough.call(this, filename); - this.d = new AsyncDeflate(opts, function (err, dat, final) { - _this_1.ondata(err, dat, final); - }); - this.compression = 8; - this.flag = dbf(opts.level); - this.terminate = this.d.terminate; - } - AsyncZipDeflate.prototype.process = function (chunk, final) { - this.d.push(chunk, final); - }; - /** - * Pushes a chunk to be deflated - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - AsyncZipDeflate.prototype.push = function (chunk, final) { - ZipPassThrough.prototype.push.call(this, chunk, final); - }; - return AsyncZipDeflate; -}()); -export { AsyncZipDeflate }; -// TODO: Better tree shaking -/** - * A zippable archive to which files can incrementally be added - */ -var Zip = /*#__PURE__*/ (function () { - /** - * Creates an empty ZIP archive to which files can be added - * @param cb The callback to call whenever data for the generated ZIP archive - * is available - */ - function Zip(cb) { - this.ondata = cb; - this.u = []; - this.d = 1; - } - /** - * Adds a file to the ZIP archive - * @param file The file stream to add - */ - Zip.prototype.add = function (file) { - var _this_1 = this; - if (this.d & 2) - throw 'stream finished'; - var f = strToU8(file.filename), fl = f.length; - var com = file.comment, o = com && strToU8(com); - var u = fl != file.filename.length || (o && (com.length != o.length)); - var hl = fl + exfl(file.extra) + 30; - if (fl > 65535) - throw 'filename too long'; - var header = new u8(hl); - wzh(header, 0, file, f, u); - var chks = [header]; - var pAll = function () { - for (var _i = 0, chks_1 = chks; _i < chks_1.length; _i++) { - var chk = chks_1[_i]; - _this_1.ondata(null, chk, false); - } - chks = []; - }; - var tr = this.d; - this.d = 0; - var ind = this.u.length; - var uf = mrg(file, { - f: f, - u: u, - o: o, - t: function () { - if (file.terminate) - file.terminate(); - }, - r: function () { - pAll(); - if (tr) { - var nxt = _this_1.u[ind + 1]; - if (nxt) - nxt.r(); - else - _this_1.d = 1; - } - tr = 1; - } - }); - var cl = 0; - file.ondata = function (err, dat, final) { - if (err) { - _this_1.ondata(err, dat, final); - _this_1.terminate(); - } - else { - cl += dat.length; - chks.push(dat); - if (final) { - var dd = new u8(16); - wbytes(dd, 0, 0x8074B50); - wbytes(dd, 4, file.crc); - wbytes(dd, 8, cl); - wbytes(dd, 12, file.size); - chks.push(dd); - uf.c = cl, uf.b = hl + cl + 16, uf.crc = file.crc, uf.size = file.size; - if (tr) - uf.r(); - tr = 1; - } - else if (tr) - pAll(); - } - }; - this.u.push(uf); - }; - /** - * Ends the process of adding files and prepares to emit the final chunks. - * This *must* be called after adding all desired files for the resulting - * ZIP file to work properly. - */ - Zip.prototype.end = function () { - var _this_1 = this; - if (this.d & 2) { - if (this.d & 1) - throw 'stream finishing'; - throw 'stream finished'; - } - if (this.d) - this.e(); - else - this.u.push({ - r: function () { - if (!(_this_1.d & 1)) - return; - _this_1.u.splice(-1, 1); - _this_1.e(); - }, - t: function () { } - }); - this.d = 3; - }; - Zip.prototype.e = function () { - var bt = 0, l = 0, tl = 0; - for (var _i = 0, _a = this.u; _i < _a.length; _i++) { - var f = _a[_i]; - tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0); - } - var out = new u8(tl + 22); - for (var _b = 0, _c = this.u; _b < _c.length; _b++) { - var f = _c[_b]; - wzh(out, bt, f, f.f, f.u, f.c, l, f.o); - bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b; - } - wzf(out, bt, this.u.length, tl, l); - this.ondata(null, out, true); - this.d = 2; - }; - /** - * A method to terminate any internal workers used by the stream. Subsequent - * calls to add() will fail. - */ - Zip.prototype.terminate = function () { - for (var _i = 0, _a = this.u; _i < _a.length; _i++) { - var f = _a[_i]; - f.t(); - } - this.d = 2; - }; - return Zip; -}()); -export { Zip }; -export function zip(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != 'function') - throw 'no callback'; - var r = {}; - fltn(data, '', r, opts); - var k = Object.keys(r); - var lft = k.length, o = 0, tot = 0; - var slft = lft, files = new Array(lft); - var term = []; - var tAll = function () { - for (var i = 0; i < term.length; ++i) - term[i](); - }; - var cbf = function () { - var out = new u8(tot + 22), oe = o, cdl = tot - o; - tot = 0; - for (var i = 0; i < slft; ++i) { - var f = files[i]; - try { - var l = f.c.length; - wzh(out, tot, f, f.f, f.u, l); - var badd = 30 + f.f.length + exfl(f.extra); - var loc = tot + badd; - out.set(f.c, loc); - wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l; - } - catch (e) { - return cb(e, null); - } - } - wzf(out, o, files.length, cdl, oe); - cb(null, out); - }; - if (!lft) - cbf(); - var _loop_1 = function (i) { - var fn = k[i]; - var _a = r[fn], file = _a[0], p = _a[1]; - var c = crc(), size = file.length; - c.p(file); - var f = strToU8(fn), s = f.length; - var com = p.comment, m = com && strToU8(com), ms = m && m.length; - var exl = exfl(p.extra); - var compression = p.level == 0 ? 0 : 8; - var cbl = function (e, d) { - if (e) { - tAll(); - cb(e, null); - } - else { - var l = d.length; - files[i] = mrg(p, { - size: size, - crc: c.d(), - c: d, - f: f, - m: m, - u: s != fn.length || (m && (com.length != ms)), - compression: compression - }); - o += 30 + s + exl + l; - tot += 76 + 2 * (s + exl) + (ms || 0) + l; - if (!--lft) - cbf(); - } - }; - if (s > 65535) - cbl('filename too long', null); - if (!compression) - cbl(null, file); - else if (size < 160000) { - try { - cbl(null, deflateSync(file, p)); - } - catch (e) { - cbl(e, null); - } - } - else - term.push(deflate(file, p, cbl)); - }; - // Cannot use lft because it can decrease - for (var i = 0; i < slft; ++i) { - _loop_1(i); - } - return tAll; -} -/** - * Synchronously creates a ZIP file. Prefer using `zip` for better performance - * with more than one file. - * @param data The directory structure for the ZIP archive - * @param opts The main options, merged with per-file options - * @returns The generated ZIP archive - */ -export function zipSync(data, opts) { - if (!opts) - opts = {}; - var r = {}; - var files = []; - fltn(data, '', r, opts); - var o = 0; - var tot = 0; - for (var fn in r) { - var _a = r[fn], file = _a[0], p = _a[1]; - var compression = p.level == 0 ? 0 : 8; - var f = strToU8(fn), s = f.length; - var com = p.comment, m = com && strToU8(com), ms = m && m.length; - var exl = exfl(p.extra); - if (s > 65535) - throw 'filename too long'; - var d = compression ? deflateSync(file, p) : file, l = d.length; - var c = crc(); - c.p(file); - files.push(mrg(p, { - size: file.length, - crc: c.d(), - c: d, - f: f, - m: m, - u: s != fn.length || (m && (com.length != ms)), - o: o, - compression: compression - })); - o += 30 + s + exl + l; - tot += 76 + 2 * (s + exl) + (ms || 0) + l; - } - var out = new u8(tot + 22), oe = o, cdl = tot - o; - for (var i = 0; i < files.length; ++i) { - var f = files[i]; - wzh(out, f.o, f, f.f, f.u, f.c.length); - var badd = 30 + f.f.length + exfl(f.extra); - out.set(f.c, f.o + badd); - wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0); - } - wzf(out, o, files.length, cdl, oe); - return out; -} -/** - * Streaming pass-through decompression for ZIP archives - */ -var UnzipPassThrough = /*#__PURE__*/ (function () { - function UnzipPassThrough() { - } - UnzipPassThrough.prototype.push = function (data, final) { - this.ondata(null, data, final); - }; - UnzipPassThrough.compression = 0; - return UnzipPassThrough; -}()); -export { UnzipPassThrough }; -/** - * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for - * better performance. - */ -var UnzipInflate = /*#__PURE__*/ (function () { - /** - * Creates a DEFLATE decompression that can be used in ZIP archives - */ - function UnzipInflate() { - var _this_1 = this; - this.i = new Inflate(function (dat, final) { - _this_1.ondata(null, dat, final); - }); - } - UnzipInflate.prototype.push = function (data, final) { - try { - this.i.push(data, final); - } - catch (e) { - this.ondata(e, data, final); - } - }; - UnzipInflate.compression = 8; - return UnzipInflate; -}()); -export { UnzipInflate }; -/** - * Asynchronous streaming DEFLATE decompression for ZIP archives - */ -var AsyncUnzipInflate = /*#__PURE__*/ (function () { - /** - * Creates a DEFLATE decompression that can be used in ZIP archives - */ - function AsyncUnzipInflate(_, sz) { - var _this_1 = this; - if (sz < 320000) { - this.i = new Inflate(function (dat, final) { - _this_1.ondata(null, dat, final); - }); - } - else { - this.i = new AsyncInflate(function (err, dat, final) { - _this_1.ondata(err, dat, final); - }); - this.terminate = this.i.terminate; - } - } - AsyncUnzipInflate.prototype.push = function (data, final) { - if (this.i.terminate) - data = slc(data, 0); - this.i.push(data, final); - }; - AsyncUnzipInflate.compression = 8; - return AsyncUnzipInflate; -}()); -export { AsyncUnzipInflate }; -/** - * A ZIP archive decompression stream that emits files as they are discovered - */ -var Unzip = /*#__PURE__*/ (function () { - /** - * Creates a ZIP decompression stream - * @param cb The callback to call whenever a file in the ZIP archive is found - */ - function Unzip(cb) { - this.onfile = cb; - this.k = []; - this.o = { - 0: UnzipPassThrough - }; - this.p = et; - } - /** - * Pushes a chunk to be unzipped - * @param chunk The chunk to push - * @param final Whether this is the last chunk - */ - Unzip.prototype.push = function (chunk, final) { - var _this_1 = this; - if (!this.onfile) - throw 'no callback'; - if (!this.p) - throw 'stream finished'; - if (this.c > 0) { - var len = Math.min(this.c, chunk.length); - var toAdd = chunk.subarray(0, len); - this.c -= len; - if (this.d) - this.d.push(toAdd, !this.c); - else - this.k[0].push(toAdd); - chunk = chunk.subarray(len); - if (chunk.length) - return this.push(chunk, final); - } - else { - var f = 0, i = 0, is = void 0, buf = void 0; - if (!this.p.length) - buf = chunk; - else if (!chunk.length) - buf = this.p; - else { - buf = new u8(this.p.length + chunk.length); - buf.set(this.p), buf.set(chunk, this.p.length); - } - var l = buf.length, oc = this.c, add = oc && this.d; - var _loop_2 = function () { - var _a; - var sig = b4(buf, i); - if (sig == 0x4034B50) { - f = 1, is = i; - this_1.d = null; - this_1.c = 0; - var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28); - if (l > i + 30 + fnl + es) { - var chks_2 = []; - this_1.k.unshift(chks_2); - f = 2; - var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22); - var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u); - if (sc_1 == 4294967295) { - _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1]; - } - else if (dd) - sc_1 = -1; - i += es; - this_1.c = sc_1; - var d_1; - var file_1 = { - name: fn_1, - compression: cmp_1, - start: function () { - if (!file_1.ondata) - throw 'no callback'; - if (!sc_1) - file_1.ondata(null, et, true); - else { - var ctr = _this_1.o[cmp_1]; - if (!ctr) - throw 'unknown compression type ' + cmp_1; - d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1); - d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); }; - for (var _i = 0, chks_3 = chks_2; _i < chks_3.length; _i++) { - var dat = chks_3[_i]; - d_1.push(dat, false); - } - if (_this_1.k[0] == chks_2 && _this_1.c) - _this_1.d = d_1; - else - d_1.push(et, true); - } - }, - terminate: function () { - if (d_1 && d_1.terminate) - d_1.terminate(); - } - }; - if (sc_1 >= 0) - file_1.size = sc_1, file_1.originalSize = su_1; - this_1.onfile(file_1); - } - return "break"; - } - else if (oc) { - if (sig == 0x8074B50) { - is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0; - return "break"; - } - else if (sig == 0x2014B50) { - is = i -= 4, f = 3, this_1.c = 0; - return "break"; - } - } - }; - var this_1 = this; - for (; i < l - 4; ++i) { - var state_1 = _loop_2(); - if (state_1 === "break") - break; - } - this.p = et; - if (oc < 0) { - var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i); - if (add) - add.push(dat, !!f); - else - this.k[+(f == 2)].push(dat); - } - if (f & 2) - return this.push(buf.subarray(i), final); - this.p = buf.subarray(i); - } - if (final) { - if (this.c) - throw 'invalid zip file'; - this.p = null; - } - }; - /** - * Registers a decoder with the stream, allowing for files compressed with - * the compression type provided to be expanded correctly - * @param decoder The decoder constructor - */ - Unzip.prototype.register = function (decoder) { - this.o[decoder.compression] = decoder; - }; - return Unzip; -}()); -export { Unzip }; -/** - * Asynchronously decompresses a ZIP archive - * @param data The raw compressed ZIP file - * @param cb The callback to call with the decompressed files - * @returns A function that can be used to immediately terminate the unzipping - */ -export function unzip(data, cb) { - if (typeof cb != 'function') - throw 'no callback'; - var term = []; - var tAll = function () { - for (var i = 0; i < term.length; ++i) - term[i](); - }; - var files = {}; - var e = data.length - 22; - for (; b4(data, e) != 0x6054B50; --e) { - if (!e || data.length - e > 65558) { - cb('invalid zip file', null); - return; - } - } - ; - var lft = b2(data, e + 8); - if (!lft) - cb(null, {}); - var c = lft; - var o = b4(data, e + 16); - var z = o == 4294967295; - if (z) { - e = b4(data, e - 12); - if (b4(data, e) != 0x6064B50) { - cb('invalid zip file', null); - return; - } - c = lft = b4(data, e + 32); - o = b4(data, e + 48); - } - var _loop_3 = function (i) { - var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off); - o = no; - var cbl = function (e, d) { - if (e) { - tAll(); - cb(e, null); - } - else { - files[fn] = d; - if (!--lft) - cb(null, files); - } - }; - if (!c_1) - cbl(null, slc(data, b, b + sc)); - else if (c_1 == 8) { - var infl = data.subarray(b, b + sc); - if (sc < 320000) { - try { - cbl(null, inflateSync(infl, new u8(su))); - } - catch (e) { - cbl(e, null); - } - } - else - term.push(inflate(infl, { size: su }, cbl)); - } - else - cbl('unknown compression type ' + c_1, null); - }; - for (var i = 0; i < c; ++i) { - _loop_3(i); - } - return tAll; -} -/** - * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better - * performance with more than one file. - * @param data The raw compressed ZIP file - * @returns The decompressed files - */ -export function unzipSync(data) { - var files = {}; - var e = data.length - 22; - for (; b4(data, e) != 0x6054B50; --e) { - if (!e || data.length - e > 65558) - throw 'invalid zip file'; - } - ; - var c = b2(data, e + 8); - if (!c) - return {}; - var o = b4(data, e + 16); - var z = o == 4294967295; - if (z) { - e = b4(data, e - 12); - if (b4(data, e) != 0x6064B50) - throw 'invalid zip file'; - c = b4(data, e + 32); - o = b4(data, e + 48); - } - for (var i = 0; i < c; ++i) { - var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off); - o = no; - if (!c_2) - files[fn] = slc(data, b, b + sc); - else if (c_2 == 8) - files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su)); - else - throw 'unknown compression type ' + c_2; - } - return files; -} diff --git a/three/addons/libs/ktx-parse.module.js b/three/addons/libs/ktx-parse.module.js deleted file mode 100644 index c1d66bc..0000000 --- a/three/addons/libs/ktx-parse.module.js +++ /dev/null @@ -1 +0,0 @@ -const t=0,e=1,n=2,i=3,s=0,a=0,r=2,o=0,l=1,f=160,U=161,c=162,h=163,_=0,p=1,g=0,y=1,x=2,u=3,b=4,d=5,m=6,w=7,D=8,B=9,L=10,A=11,k=12,v=13,S=14,I=15,O=16,T=17,V=18,E=0,F=1,P=2,C=3,z=4,M=5,W=6,N=7,H=8,K=9,X=10,j=11,R=0,Y=1,q=2,G=13,J=14,Q=15,Z=128,$=64,tt=32,et=16,nt=0,it=1,st=2,at=3,rt=4,ot=5,lt=6,ft=7,Ut=8,ct=9,ht=10,_t=13,pt=14,gt=15,yt=16,xt=17,ut=20,bt=21,dt=22,mt=23,wt=24,Dt=27,Bt=28,Lt=29,At=30,kt=31,vt=34,St=35,It=36,Ot=37,Tt=38,Vt=41,Et=42,Ft=43,Pt=44,Ct=45,zt=48,Mt=49,Wt=50,Nt=58,Ht=59,Kt=62,Xt=63,jt=64,Rt=65,Yt=68,qt=69,Gt=70,Jt=71,Qt=74,Zt=75,$t=76,te=77,ee=78,ne=81,ie=82,se=83,ae=84,re=85,oe=88,le=89,fe=90,Ue=91,ce=92,he=95,_e=96,pe=97,ge=98,ye=99,xe=100,ue=101,be=102,de=103,me=104,we=105,De=106,Be=107,Le=108,Ae=109,ke=110,ve=111,Se=112,Ie=113,Oe=114,Te=115,Ve=116,Ee=117,Fe=118,Pe=119,Ce=120,ze=121,Me=122,We=123,Ne=124,He=125,Ke=126,Xe=127,je=128,Re=129,Ye=130,qe=131,Ge=132,Je=133,Qe=134,Ze=135,$e=136,tn=137,en=138,nn=139,sn=140,an=141,rn=142,on=143,ln=144,fn=145,Un=146,cn=147,hn=148,_n=149,pn=150,gn=151,yn=152,xn=153,un=154,bn=155,dn=156,mn=157,wn=158,Dn=159,Bn=160,Ln=161,An=162,kn=163,vn=164,Sn=165,In=166,On=167,Tn=168,Vn=169,En=170,Fn=171,Pn=172,Cn=173,zn=174,Mn=175,Wn=176,Nn=177,Hn=178,Kn=179,Xn=180,jn=181,Rn=182,Yn=183,qn=184,Gn=1000156007,Jn=1000156008,Qn=1000156009,Zn=1000156010,$n=1000156011,ti=1000156017,ei=1000156018,ni=1000156019,ii=1000156020,si=1000156021,ai=1000054e3,ri=1000054001,oi=1000054002,li=1000054003,fi=1000054004,Ui=1000054005,ci=1000054006,hi=1000054007,_i=1000066e3,pi=1000066001,gi=1000066002,yi=1000066003,xi=1000066004,ui=1000066005,bi=1000066006,di=1000066007,mi=1000066008,wi=1000066009,Di=1000066010,Bi=1000066011,Li=1000066012,Ai=1000066013,ki=100034e4,vi=1000340001;class Si{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Ii{constructor(t,e,n,i){this._dataView=new DataView(t.buffer,t.byteOffset+e,n),this._littleEndian=i,this._offset=0}_nextUint8(){const t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){const t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){const t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){const t=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_nextInt32(){const t=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,t}_skip(t){return this._offset+=t,this}_scan(t,e=0){const n=this._offset;let i=0;for(;this._dataView.getUint8(this._offset)!==e&&i0?c+a.byteLength:0;h%8&&(h+=8-h%8);const _=[],p=new DataView(new ArrayBuffer(3*t.levels.length*8));let g=(h||c+a.byteLength)+n.byteLength;for(let e=0;e0?h:0),!0),x.setBigUint64(60,BigInt(n.byteLength),!0),new Uint8Array(Fi([new Uint8Array(Ti).buffer,y,p.buffer,o,a,h>0?new ArrayBuffer(h-(c+a.byteLength)):new ArrayBuffer(0),n,..._]))}export{Q as KHR_DF_CHANNEL_RGBSDA_ALPHA,q as KHR_DF_CHANNEL_RGBSDA_BLUE,J as KHR_DF_CHANNEL_RGBSDA_DEPTH,Y as KHR_DF_CHANNEL_RGBSDA_GREEN,R as KHR_DF_CHANNEL_RGBSDA_RED,G as KHR_DF_CHANNEL_RGBSDA_STENCIL,p as KHR_DF_FLAG_ALPHA_PREMULTIPLIED,_ as KHR_DF_FLAG_ALPHA_STRAIGHT,s as KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT,c as KHR_DF_MODEL_ASTC,f as KHR_DF_MODEL_ETC1,h as KHR_DF_MODEL_ETC1S,U as KHR_DF_MODEL_ETC2,l as KHR_DF_MODEL_RGBSDA,o as KHR_DF_MODEL_UNSPECIFIED,W as KHR_DF_PRIMARIES_ACES,N as KHR_DF_PRIMARIES_ACESCC,j as KHR_DF_PRIMARIES_ADOBERGB,z as KHR_DF_PRIMARIES_BT2020,P as KHR_DF_PRIMARIES_BT601_EBU,C as KHR_DF_PRIMARIES_BT601_SMPTE,F as KHR_DF_PRIMARIES_BT709,M as KHR_DF_PRIMARIES_CIEXYZ,X as KHR_DF_PRIMARIES_DISPLAYP3,H as KHR_DF_PRIMARIES_NTSC1953,K as KHR_DF_PRIMARIES_PAL525,E as KHR_DF_PRIMARIES_UNSPECIFIED,tt as KHR_DF_SAMPLE_DATATYPE_EXPONENT,Z as KHR_DF_SAMPLE_DATATYPE_FLOAT,et as KHR_DF_SAMPLE_DATATYPE_LINEAR,$ as KHR_DF_SAMPLE_DATATYPE_SIGNED,O as KHR_DF_TRANSFER_ACESCC,T as KHR_DF_TRANSFER_ACESCCT,V as KHR_DF_TRANSFER_ADOBERGB,w as KHR_DF_TRANSFER_BT1886,k as KHR_DF_TRANSFER_DCIP3,B as KHR_DF_TRANSFER_HLG_EOTF,D as KHR_DF_TRANSFER_HLG_OETF,u as KHR_DF_TRANSFER_ITU,y as KHR_DF_TRANSFER_LINEAR,b as KHR_DF_TRANSFER_NTSC,S as KHR_DF_TRANSFER_PAL625_EOTF,v as KHR_DF_TRANSFER_PAL_OETF,L as KHR_DF_TRANSFER_PQ_EOTF,A as KHR_DF_TRANSFER_PQ_OETF,d as KHR_DF_TRANSFER_SLOG,m as KHR_DF_TRANSFER_SLOG2,x as KHR_DF_TRANSFER_SRGB,I as KHR_DF_TRANSFER_ST240,g as KHR_DF_TRANSFER_UNSPECIFIED,a as KHR_DF_VENDORID_KHRONOS,r as KHR_DF_VERSION,e as KHR_SUPERCOMPRESSION_BASISLZ,t as KHR_SUPERCOMPRESSION_NONE,i as KHR_SUPERCOMPRESSION_ZLIB,n as KHR_SUPERCOMPRESSION_ZSTD,Si as KTX2Container,Ut as VK_FORMAT_A1R5G5B5_UNORM_PACK16,qt as VK_FORMAT_A2B10G10R10_SINT_PACK32,Rt as VK_FORMAT_A2B10G10R10_SNORM_PACK32,Yt as VK_FORMAT_A2B10G10R10_UINT_PACK32,jt as VK_FORMAT_A2B10G10R10_UNORM_PACK32,Xt as VK_FORMAT_A2R10G10B10_SINT_PACK32,Ht as VK_FORMAT_A2R10G10B10_SNORM_PACK32,Kt as VK_FORMAT_A2R10G10B10_UINT_PACK32,Nt as VK_FORMAT_A2R10G10B10_UNORM_PACK32,vi as VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT,ki as VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT,Bi as VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT,Xn as VK_FORMAT_ASTC_10x10_SRGB_BLOCK,Kn as VK_FORMAT_ASTC_10x10_UNORM_BLOCK,mi as VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT,zn as VK_FORMAT_ASTC_10x5_SRGB_BLOCK,Cn as VK_FORMAT_ASTC_10x5_UNORM_BLOCK,wi as VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT,Wn as VK_FORMAT_ASTC_10x6_SRGB_BLOCK,Mn as VK_FORMAT_ASTC_10x6_UNORM_BLOCK,Di as VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT,Hn as VK_FORMAT_ASTC_10x8_SRGB_BLOCK,Nn as VK_FORMAT_ASTC_10x8_UNORM_BLOCK,Li as VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT,Rn as VK_FORMAT_ASTC_12x10_SRGB_BLOCK,jn as VK_FORMAT_ASTC_12x10_UNORM_BLOCK,Ai as VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT,qn as VK_FORMAT_ASTC_12x12_SRGB_BLOCK,Yn as VK_FORMAT_ASTC_12x12_UNORM_BLOCK,_i as VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,wn as VK_FORMAT_ASTC_4x4_SRGB_BLOCK,mn as VK_FORMAT_ASTC_4x4_UNORM_BLOCK,pi as VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT,Bn as VK_FORMAT_ASTC_5x4_SRGB_BLOCK,Dn as VK_FORMAT_ASTC_5x4_UNORM_BLOCK,gi as VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT,An as VK_FORMAT_ASTC_5x5_SRGB_BLOCK,Ln as VK_FORMAT_ASTC_5x5_UNORM_BLOCK,yi as VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT,vn as VK_FORMAT_ASTC_6x5_SRGB_BLOCK,kn as VK_FORMAT_ASTC_6x5_UNORM_BLOCK,xi as VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT,In as VK_FORMAT_ASTC_6x6_SRGB_BLOCK,Sn as VK_FORMAT_ASTC_6x6_UNORM_BLOCK,ui as VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT,Tn as VK_FORMAT_ASTC_8x5_SRGB_BLOCK,On as VK_FORMAT_ASTC_8x5_UNORM_BLOCK,bi as VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT,En as VK_FORMAT_ASTC_8x6_SRGB_BLOCK,Vn as VK_FORMAT_ASTC_8x6_UNORM_BLOCK,di as VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT,Pn as VK_FORMAT_ASTC_8x8_SRGB_BLOCK,Fn as VK_FORMAT_ASTC_8x8_UNORM_BLOCK,Me as VK_FORMAT_B10G11R11_UFLOAT_PACK32,$n as VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,si as VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,at as VK_FORMAT_B4G4R4A4_UNORM_PACK16,ft as VK_FORMAT_B5G5R5A1_UNORM_PACK16,ot as VK_FORMAT_B5G6R5_UNORM_PACK16,Mt as VK_FORMAT_B8G8R8A8_SINT,Ct as VK_FORMAT_B8G8R8A8_SNORM,Wt as VK_FORMAT_B8G8R8A8_SRGB,zt as VK_FORMAT_B8G8R8A8_UINT,Pt as VK_FORMAT_B8G8R8A8_UNORM,St as VK_FORMAT_B8G8R8_SINT,kt as VK_FORMAT_B8G8R8_SNORM,It as VK_FORMAT_B8G8R8_SRGB,vt as VK_FORMAT_B8G8R8_UINT,At as VK_FORMAT_B8G8R8_UNORM,Qe as VK_FORMAT_BC1_RGBA_SRGB_BLOCK,Je as VK_FORMAT_BC1_RGBA_UNORM_BLOCK,Ge as VK_FORMAT_BC1_RGB_SRGB_BLOCK,qe as VK_FORMAT_BC1_RGB_UNORM_BLOCK,$e as VK_FORMAT_BC2_SRGB_BLOCK,Ze as VK_FORMAT_BC2_UNORM_BLOCK,en as VK_FORMAT_BC3_SRGB_BLOCK,tn as VK_FORMAT_BC3_UNORM_BLOCK,sn as VK_FORMAT_BC4_SNORM_BLOCK,nn as VK_FORMAT_BC4_UNORM_BLOCK,rn as VK_FORMAT_BC5_SNORM_BLOCK,an as VK_FORMAT_BC5_UNORM_BLOCK,ln as VK_FORMAT_BC6H_SFLOAT_BLOCK,on as VK_FORMAT_BC6H_UFLOAT_BLOCK,Un as VK_FORMAT_BC7_SRGB_BLOCK,fn as VK_FORMAT_BC7_UNORM_BLOCK,Ne as VK_FORMAT_D16_UNORM,je as VK_FORMAT_D16_UNORM_S8_UINT,Re as VK_FORMAT_D24_UNORM_S8_UINT,Ke as VK_FORMAT_D32_SFLOAT,Ye as VK_FORMAT_D32_SFLOAT_S8_UINT,We as VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,dn as VK_FORMAT_EAC_R11G11_SNORM_BLOCK,bn as VK_FORMAT_EAC_R11G11_UNORM_BLOCK,un as VK_FORMAT_EAC_R11_SNORM_BLOCK,xn as VK_FORMAT_EAC_R11_UNORM_BLOCK,pn as VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,_n as VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,yn as VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,gn as VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,hn as VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,cn as VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,Zn as VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,ii as VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,fi as VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,ai as VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,Ui as VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,ri as VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,ci as VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,oi as VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,hi as VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,li as VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,Qn as VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,Jn as VK_FORMAT_R10X6G10X6_UNORM_2PACK16,Gn as VK_FORMAT_R10X6_UNORM_PACK16,ni as VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,ei as VK_FORMAT_R12X4G12X4_UNORM_2PACK16,ti as VK_FORMAT_R12X4_UNORM_PACK16,pe as VK_FORMAT_R16G16B16A16_SFLOAT,_e as VK_FORMAT_R16G16B16A16_SINT,ce as VK_FORMAT_R16G16B16A16_SNORM,he as VK_FORMAT_R16G16B16A16_UINT,Ue as VK_FORMAT_R16G16B16A16_UNORM,fe as VK_FORMAT_R16G16B16_SFLOAT,le as VK_FORMAT_R16G16B16_SINT,re as VK_FORMAT_R16G16B16_SNORM,oe as VK_FORMAT_R16G16B16_UINT,ae as VK_FORMAT_R16G16B16_UNORM,se as VK_FORMAT_R16G16_SFLOAT,ie as VK_FORMAT_R16G16_SINT,ee as VK_FORMAT_R16G16_SNORM,ne as VK_FORMAT_R16G16_UINT,te as VK_FORMAT_R16G16_UNORM,$t as VK_FORMAT_R16_SFLOAT,Zt as VK_FORMAT_R16_SINT,Jt as VK_FORMAT_R16_SNORM,Qt as VK_FORMAT_R16_UINT,Gt as VK_FORMAT_R16_UNORM,Ae as VK_FORMAT_R32G32B32A32_SFLOAT,Le as VK_FORMAT_R32G32B32A32_SINT,Be as VK_FORMAT_R32G32B32A32_UINT,De as VK_FORMAT_R32G32B32_SFLOAT,we as VK_FORMAT_R32G32B32_SINT,me as VK_FORMAT_R32G32B32_UINT,de as VK_FORMAT_R32G32_SFLOAT,be as VK_FORMAT_R32G32_SINT,ue as VK_FORMAT_R32G32_UINT,xe as VK_FORMAT_R32_SFLOAT,ye as VK_FORMAT_R32_SINT,ge as VK_FORMAT_R32_UINT,st as VK_FORMAT_R4G4B4A4_UNORM_PACK16,it as VK_FORMAT_R4G4_UNORM_PACK8,lt as VK_FORMAT_R5G5B5A1_UNORM_PACK16,rt as VK_FORMAT_R5G6B5_UNORM_PACK16,ze as VK_FORMAT_R64G64B64A64_SFLOAT,Ce as VK_FORMAT_R64G64B64A64_SINT,Pe as VK_FORMAT_R64G64B64A64_UINT,Fe as VK_FORMAT_R64G64B64_SFLOAT,Ee as VK_FORMAT_R64G64B64_SINT,Ve as VK_FORMAT_R64G64B64_UINT,Te as VK_FORMAT_R64G64_SFLOAT,Oe as VK_FORMAT_R64G64_SINT,Ie as VK_FORMAT_R64G64_UINT,Se as VK_FORMAT_R64_SFLOAT,ve as VK_FORMAT_R64_SINT,ke as VK_FORMAT_R64_UINT,Et as VK_FORMAT_R8G8B8A8_SINT,Tt as VK_FORMAT_R8G8B8A8_SNORM,Ft as VK_FORMAT_R8G8B8A8_SRGB,Vt as VK_FORMAT_R8G8B8A8_UINT,Ot as VK_FORMAT_R8G8B8A8_UNORM,Bt as VK_FORMAT_R8G8B8_SINT,wt as VK_FORMAT_R8G8B8_SNORM,Lt as VK_FORMAT_R8G8B8_SRGB,Dt as VK_FORMAT_R8G8B8_UINT,mt as VK_FORMAT_R8G8B8_UNORM,bt as VK_FORMAT_R8G8_SINT,xt as VK_FORMAT_R8G8_SNORM,dt as VK_FORMAT_R8G8_SRGB,ut as VK_FORMAT_R8G8_UINT,yt as VK_FORMAT_R8G8_UNORM,pt as VK_FORMAT_R8_SINT,ht as VK_FORMAT_R8_SNORM,gt as VK_FORMAT_R8_SRGB,_t as VK_FORMAT_R8_UINT,ct as VK_FORMAT_R8_UNORM,Xe as VK_FORMAT_S8_UINT,nt as VK_FORMAT_UNDEFINED,He as VK_FORMAT_X8_D24_UNORM_PACK32,Pi as read,Mi as write}; diff --git a/three/addons/libs/lil-gui.module.min.js b/three/addons/libs/lil-gui.module.min.js deleted file mode 100644 index c76a5ef..0000000 --- a/three/addons/libs/lil-gui.module.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * lil-gui - * https://lil-gui.georgealways.com - * @version 0.17.0 - * @author George Michael Brower - * @license MIT - */ -class t{constructor(i,e,s,n,l="div"){this.parent=i,this.object=e,this.property=s,this._disabled=!1,this._hidden=!1,this.initialValue=this.getValue(),this.domElement=document.createElement("div"),this.domElement.classList.add("controller"),this.domElement.classList.add(n),this.$name=document.createElement("div"),this.$name.classList.add("name"),t.nextNameID=t.nextNameID||0,this.$name.id="lil-gui-name-"+ ++t.nextNameID,this.$widget=document.createElement(l),this.$widget.classList.add("widget"),this.$disable=this.$widget,this.domElement.appendChild(this.$name),this.domElement.appendChild(this.$widget),this.parent.children.push(this),this.parent.controllers.push(this),this.parent.$children.appendChild(this.domElement),this._listenCallback=this._listenCallback.bind(this),this.name(s)}name(t){return this._name=t,this.$name.innerHTML=t,this}onChange(t){return this._onChange=t,this}_callOnChange(){this.parent._callOnChange(this),void 0!==this._onChange&&this._onChange.call(this,this.getValue()),this._changed=!0}onFinishChange(t){return this._onFinishChange=t,this}_callOnFinishChange(){this._changed&&(this.parent._callOnFinishChange(this),void 0!==this._onFinishChange&&this._onFinishChange.call(this,this.getValue())),this._changed=!1}reset(){return this.setValue(this.initialValue),this._callOnFinishChange(),this}enable(t=!0){return this.disable(!t)}disable(t=!0){return t===this._disabled||(this._disabled=t,this.domElement.classList.toggle("disabled",t),this.$disable.toggleAttribute("disabled",t)),this}show(t=!0){return this._hidden=!t,this.domElement.style.display=this._hidden?"none":"",this}hide(){return this.show(!1)}options(t){const i=this.parent.add(this.object,this.property,t);return i.name(this._name),this.destroy(),i}min(t){return this}max(t){return this}step(t){return this}decimals(t){return this}listen(t=!0){return this._listening=t,void 0!==this._listenCallbackID&&(cancelAnimationFrame(this._listenCallbackID),this._listenCallbackID=void 0),this._listening&&this._listenCallback(),this}_listenCallback(){this._listenCallbackID=requestAnimationFrame(this._listenCallback);const t=this.save();t!==this._listenPrevValue&&this.updateDisplay(),this._listenPrevValue=t}getValue(){return this.object[this.property]}setValue(t){return this.object[this.property]=t,this._callOnChange(),this.updateDisplay(),this}updateDisplay(){return this}load(t){return this.setValue(t),this._callOnFinishChange(),this}save(){return this.getValue()}destroy(){this.listen(!1),this.parent.children.splice(this.parent.children.indexOf(this),1),this.parent.controllers.splice(this.parent.controllers.indexOf(this),1),this.parent.$children.removeChild(this.domElement)}}class i extends t{constructor(t,i,e){super(t,i,e,"boolean","label"),this.$input=document.createElement("input"),this.$input.setAttribute("type","checkbox"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$widget.appendChild(this.$input),this.$input.addEventListener("change",()=>{this.setValue(this.$input.checked),this._callOnFinishChange()}),this.$disable=this.$input,this.updateDisplay()}updateDisplay(){return this.$input.checked=this.getValue(),this}}function e(t){let i,e;return(i=t.match(/(#|0x)?([a-f0-9]{6})/i))?e=i[2]:(i=t.match(/rgb\(\s*(\d*)\s*,\s*(\d*)\s*,\s*(\d*)\s*\)/))?e=parseInt(i[1]).toString(16).padStart(2,0)+parseInt(i[2]).toString(16).padStart(2,0)+parseInt(i[3]).toString(16).padStart(2,0):(i=t.match(/^#?([a-f0-9])([a-f0-9])([a-f0-9])$/i))&&(e=i[1]+i[1]+i[2]+i[2]+i[3]+i[3]),!!e&&"#"+e}const s={isPrimitive:!0,match:t=>"string"==typeof t,fromHexString:e,toHexString:e},n={isPrimitive:!0,match:t=>"number"==typeof t,fromHexString:t=>parseInt(t.substring(1),16),toHexString:t=>"#"+t.toString(16).padStart(6,0)},l={isPrimitive:!1,match:Array.isArray,fromHexString(t,i,e=1){const s=n.fromHexString(t);i[0]=(s>>16&255)/255*e,i[1]=(s>>8&255)/255*e,i[2]=(255&s)/255*e},toHexString:([t,i,e],s=1)=>n.toHexString(t*(s=255/s)<<16^i*s<<8^e*s<<0)},r={isPrimitive:!1,match:t=>Object(t)===t,fromHexString(t,i,e=1){const s=n.fromHexString(t);i.r=(s>>16&255)/255*e,i.g=(s>>8&255)/255*e,i.b=(255&s)/255*e},toHexString:({r:t,g:i,b:e},s=1)=>n.toHexString(t*(s=255/s)<<16^i*s<<8^e*s<<0)},o=[s,n,l,r];class a extends t{constructor(t,i,s,n){var l;super(t,i,s,"color"),this.$input=document.createElement("input"),this.$input.setAttribute("type","color"),this.$input.setAttribute("tabindex",-1),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$text=document.createElement("input"),this.$text.setAttribute("type","text"),this.$text.setAttribute("spellcheck","false"),this.$text.setAttribute("aria-labelledby",this.$name.id),this.$display=document.createElement("div"),this.$display.classList.add("display"),this.$display.appendChild(this.$input),this.$widget.appendChild(this.$display),this.$widget.appendChild(this.$text),this._format=(l=this.initialValue,o.find(t=>t.match(l))),this._rgbScale=n,this._initialValueHexString=this.save(),this._textFocused=!1,this.$input.addEventListener("input",()=>{this._setValueFromHexString(this.$input.value)}),this.$input.addEventListener("blur",()=>{this._callOnFinishChange()}),this.$text.addEventListener("input",()=>{const t=e(this.$text.value);t&&this._setValueFromHexString(t)}),this.$text.addEventListener("focus",()=>{this._textFocused=!0,this.$text.select()}),this.$text.addEventListener("blur",()=>{this._textFocused=!1,this.updateDisplay(),this._callOnFinishChange()}),this.$disable=this.$text,this.updateDisplay()}reset(){return this._setValueFromHexString(this._initialValueHexString),this}_setValueFromHexString(t){if(this._format.isPrimitive){const i=this._format.fromHexString(t);this.setValue(i)}else this._format.fromHexString(t,this.getValue(),this._rgbScale),this._callOnChange(),this.updateDisplay()}save(){return this._format.toHexString(this.getValue(),this._rgbScale)}load(t){return this._setValueFromHexString(t),this._callOnFinishChange(),this}updateDisplay(){return this.$input.value=this._format.toHexString(this.getValue(),this._rgbScale),this._textFocused||(this.$text.value=this.$input.value.substring(1)),this.$display.style.backgroundColor=this.$input.value,this}}class h extends t{constructor(t,i,e){super(t,i,e,"function"),this.$button=document.createElement("button"),this.$button.appendChild(this.$name),this.$widget.appendChild(this.$button),this.$button.addEventListener("click",t=>{t.preventDefault(),this.getValue().call(this.object)}),this.$button.addEventListener("touchstart",()=>{},{passive:!0}),this.$disable=this.$button}}class d extends t{constructor(t,i,e,s,n,l){super(t,i,e,"number"),this._initInput(),this.min(s),this.max(n);const r=void 0!==l;this.step(r?l:this._getImplicitStep(),r),this.updateDisplay()}decimals(t){return this._decimals=t,this.updateDisplay(),this}min(t){return this._min=t,this._onUpdateMinMax(),this}max(t){return this._max=t,this._onUpdateMinMax(),this}step(t,i=!0){return this._step=t,this._stepExplicit=i,this}updateDisplay(){const t=this.getValue();if(this._hasSlider){let i=(t-this._min)/(this._max-this._min);i=Math.max(0,Math.min(i,1)),this.$fill.style.width=100*i+"%"}return this._inputFocused||(this.$input.value=void 0===this._decimals?t:t.toFixed(this._decimals)),this}_initInput(){this.$input=document.createElement("input"),this.$input.setAttribute("type","number"),this.$input.setAttribute("step","any"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$widget.appendChild(this.$input),this.$disable=this.$input;const t=t=>{const i=parseFloat(this.$input.value);isNaN(i)||(this._snapClampSetValue(i+t),this.$input.value=this.getValue())};let i,e,s,n,l,r=!1;const o=t=>{if(r){const s=t.clientX-i,n=t.clientY-e;Math.abs(n)>5?(t.preventDefault(),this.$input.blur(),r=!1,this._setDraggingStyle(!0,"vertical")):Math.abs(s)>5&&a()}if(!r){const i=t.clientY-s;l-=i*this._step*this._arrowKeyMultiplier(t),n+l>this._max?l=this._max-n:n+l{this._setDraggingStyle(!1,"vertical"),this._callOnFinishChange(),window.removeEventListener("mousemove",o),window.removeEventListener("mouseup",a)};this.$input.addEventListener("input",()=>{let t=parseFloat(this.$input.value);isNaN(t)||(this._stepExplicit&&(t=this._snap(t)),this.setValue(this._clamp(t)))}),this.$input.addEventListener("keydown",i=>{"Enter"===i.code&&this.$input.blur(),"ArrowUp"===i.code&&(i.preventDefault(),t(this._step*this._arrowKeyMultiplier(i))),"ArrowDown"===i.code&&(i.preventDefault(),t(this._step*this._arrowKeyMultiplier(i)*-1))}),this.$input.addEventListener("wheel",i=>{this._inputFocused&&(i.preventDefault(),t(this._step*this._normalizeMouseWheel(i)))},{passive:!1}),this.$input.addEventListener("mousedown",t=>{i=t.clientX,e=s=t.clientY,r=!0,n=this.getValue(),l=0,window.addEventListener("mousemove",o),window.addEventListener("mouseup",a)}),this.$input.addEventListener("focus",()=>{this._inputFocused=!0}),this.$input.addEventListener("blur",()=>{this._inputFocused=!1,this.updateDisplay(),this._callOnFinishChange()})}_initSlider(){this._hasSlider=!0,this.$slider=document.createElement("div"),this.$slider.classList.add("slider"),this.$fill=document.createElement("div"),this.$fill.classList.add("fill"),this.$slider.appendChild(this.$fill),this.$widget.insertBefore(this.$slider,this.$input),this.domElement.classList.add("hasSlider");const t=t=>{const i=this.$slider.getBoundingClientRect();let e=(s=t,n=i.left,l=i.right,r=this._min,o=this._max,(s-n)/(l-n)*(o-r)+r);var s,n,l,r,o;this._snapClampSetValue(e)},i=i=>{t(i.clientX)},e=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",e)};let s,n,l=!1;const r=i=>{i.preventDefault(),this._setDraggingStyle(!0),t(i.touches[0].clientX),l=!1},o=i=>{if(l){const t=i.touches[0].clientX-s,e=i.touches[0].clientY-n;Math.abs(t)>Math.abs(e)?r(i):(window.removeEventListener("touchmove",o),window.removeEventListener("touchend",a))}else i.preventDefault(),t(i.touches[0].clientX)},a=()=>{this._callOnFinishChange(),this._setDraggingStyle(!1),window.removeEventListener("touchmove",o),window.removeEventListener("touchend",a)},h=this._callOnFinishChange.bind(this);let d;this.$slider.addEventListener("mousedown",s=>{this._setDraggingStyle(!0),t(s.clientX),window.addEventListener("mousemove",i),window.addEventListener("mouseup",e)}),this.$slider.addEventListener("touchstart",t=>{t.touches.length>1||(this._hasScrollBar?(s=t.touches[0].clientX,n=t.touches[0].clientY,l=!0):r(t),window.addEventListener("touchmove",o,{passive:!1}),window.addEventListener("touchend",a))},{passive:!1}),this.$slider.addEventListener("wheel",t=>{if(Math.abs(t.deltaX)this._max&&(t=this._max),t}_snapClampSetValue(t){this.setValue(this._clamp(this._snap(t)))}get _hasScrollBar(){const t=this.parent.root.$children;return t.scrollHeight>t.clientHeight}get _hasMin(){return void 0!==this._min}get _hasMax(){return void 0!==this._max}}class c extends t{constructor(t,i,e,s){super(t,i,e,"option"),this.$select=document.createElement("select"),this.$select.setAttribute("aria-labelledby",this.$name.id),this.$display=document.createElement("div"),this.$display.classList.add("display"),this._values=Array.isArray(s)?s:Object.values(s),this._names=Array.isArray(s)?s:Object.keys(s),this._names.forEach(t=>{const i=document.createElement("option");i.innerHTML=t,this.$select.appendChild(i)}),this.$select.addEventListener("change",()=>{this.setValue(this._values[this.$select.selectedIndex]),this._callOnFinishChange()}),this.$select.addEventListener("focus",()=>{this.$display.classList.add("focus")}),this.$select.addEventListener("blur",()=>{this.$display.classList.remove("focus")}),this.$widget.appendChild(this.$select),this.$widget.appendChild(this.$display),this.$disable=this.$select,this.updateDisplay()}updateDisplay(){const t=this.getValue(),i=this._values.indexOf(t);return this.$select.selectedIndex=i,this.$display.innerHTML=-1===i?t:this._names[i],this}}class u extends t{constructor(t,i,e){super(t,i,e,"string"),this.$input=document.createElement("input"),this.$input.setAttribute("type","text"),this.$input.setAttribute("aria-labelledby",this.$name.id),this.$input.addEventListener("input",()=>{this.setValue(this.$input.value)}),this.$input.addEventListener("keydown",t=>{"Enter"===t.code&&this.$input.blur()}),this.$input.addEventListener("blur",()=>{this._callOnFinishChange()}),this.$widget.appendChild(this.$input),this.$disable=this.$input,this.updateDisplay()}updateDisplay(){return this.$input.value=this.getValue(),this}}let p=!1;class g{constructor({parent:t,autoPlace:i=void 0===t,container:e,width:s,title:n="Controls",injectStyles:l=!0,touchStyles:r=!0}={}){if(this.parent=t,this.root=t?t.root:this,this.children=[],this.controllers=[],this.folders=[],this._closed=!1,this._hidden=!1,this.domElement=document.createElement("div"),this.domElement.classList.add("lil-gui"),this.$title=document.createElement("div"),this.$title.classList.add("title"),this.$title.setAttribute("role","button"),this.$title.setAttribute("aria-expanded",!0),this.$title.setAttribute("tabindex",0),this.$title.addEventListener("click",()=>this.openAnimated(this._closed)),this.$title.addEventListener("keydown",t=>{"Enter"!==t.code&&"Space"!==t.code||(t.preventDefault(),this.$title.click())}),this.$title.addEventListener("touchstart",()=>{},{passive:!0}),this.$children=document.createElement("div"),this.$children.classList.add("children"),this.domElement.appendChild(this.$title),this.domElement.appendChild(this.$children),this.title(n),r&&this.domElement.classList.add("allow-touch-styles"),this.parent)return this.parent.children.push(this),this.parent.folders.push(this),void this.parent.$children.appendChild(this.domElement);this.domElement.classList.add("root"),!p&&l&&(!function(t){const i=document.createElement("style");i.innerHTML=t;const e=document.querySelector("head link[rel=stylesheet], head style");e?document.head.insertBefore(i,e):document.head.appendChild(i)}('.lil-gui{--background-color:#1f1f1f;--text-color:#ebebeb;--title-background-color:#111;--title-text-color:#ebebeb;--widget-color:#424242;--hover-color:#4f4f4f;--focus-color:#595959;--number-color:#2cc9ff;--string-color:#a2db3c;--font-size:11px;--input-font-size:11px;--font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;--font-family-mono:Menlo,Monaco,Consolas,"Droid Sans Mono",monospace;--padding:4px;--spacing:4px;--widget-height:20px;--name-width:45%;--slider-knob-width:2px;--slider-input-width:27%;--color-input-width:27%;--slider-input-min-width:45px;--color-input-min-width:45px;--folder-indent:7px;--widget-padding:0 0 0 3px;--widget-border-radius:2px;--checkbox-size:calc(var(--widget-height)*0.75);--scrollbar-width:5px;background-color:var(--background-color);color:var(--text-color);font-family:var(--font-family);font-size:var(--font-size);font-style:normal;font-weight:400;line-height:1;text-align:left;touch-action:manipulation;user-select:none;-webkit-user-select:none}.lil-gui,.lil-gui *{box-sizing:border-box;margin:0;padding:0}.lil-gui.root{display:flex;flex-direction:column;width:var(--width,245px)}.lil-gui.root>.title{background:var(--title-background-color);color:var(--title-text-color)}.lil-gui.root>.children{overflow-x:hidden;overflow-y:auto}.lil-gui.root>.children::-webkit-scrollbar{background:var(--background-color);height:var(--scrollbar-width);width:var(--scrollbar-width)}.lil-gui.root>.children::-webkit-scrollbar-thumb{background:var(--focus-color);border-radius:var(--scrollbar-width)}.lil-gui.force-touch-styles{--widget-height:28px;--padding:6px;--spacing:6px;--font-size:13px;--input-font-size:16px;--folder-indent:10px;--scrollbar-width:7px;--slider-input-min-width:50px;--color-input-min-width:65px}.lil-gui.autoPlace{max-height:100%;position:fixed;right:15px;top:0;z-index:1001}.lil-gui .controller{align-items:center;display:flex;margin:var(--spacing) 0;padding:0 var(--padding)}.lil-gui .controller.disabled{opacity:.5}.lil-gui .controller.disabled,.lil-gui .controller.disabled *{pointer-events:none!important}.lil-gui .controller>.name{flex-shrink:0;line-height:var(--widget-height);min-width:var(--name-width);padding-right:var(--spacing);white-space:pre}.lil-gui .controller .widget{align-items:center;display:flex;min-height:var(--widget-height);position:relative;width:100%}.lil-gui .controller.string input{color:var(--string-color)}.lil-gui .controller.boolean .widget{cursor:pointer}.lil-gui .controller.color .display{border-radius:var(--widget-border-radius);height:var(--widget-height);position:relative;width:100%}.lil-gui .controller.color input[type=color]{cursor:pointer;height:100%;opacity:0;width:100%}.lil-gui .controller.color input[type=text]{flex-shrink:0;font-family:var(--font-family-mono);margin-left:var(--spacing);min-width:var(--color-input-min-width);width:var(--color-input-width)}.lil-gui .controller.option select{max-width:100%;opacity:0;position:absolute;width:100%}.lil-gui .controller.option .display{background:var(--widget-color);border-radius:var(--widget-border-radius);height:var(--widget-height);line-height:var(--widget-height);max-width:100%;overflow:hidden;padding-left:.55em;padding-right:1.75em;pointer-events:none;position:relative;word-break:break-all}.lil-gui .controller.option .display.active{background:var(--focus-color)}.lil-gui .controller.option .display:after{bottom:0;content:"↕";font-family:lil-gui;padding-right:.375em;position:absolute;right:0;top:0}.lil-gui .controller.option .widget,.lil-gui .controller.option select{cursor:pointer}.lil-gui .controller.number input{color:var(--number-color)}.lil-gui .controller.number.hasSlider input{flex-shrink:0;margin-left:var(--spacing);min-width:var(--slider-input-min-width);width:var(--slider-input-width)}.lil-gui .controller.number .slider{background-color:var(--widget-color);border-radius:var(--widget-border-radius);cursor:ew-resize;height:var(--widget-height);overflow:hidden;padding-right:var(--slider-knob-width);touch-action:pan-y;width:100%}.lil-gui .controller.number .slider.active{background-color:var(--focus-color)}.lil-gui .controller.number .slider.active .fill{opacity:.95}.lil-gui .controller.number .fill{border-right:var(--slider-knob-width) solid var(--number-color);box-sizing:content-box;height:100%}.lil-gui-dragging .lil-gui{--hover-color:var(--widget-color)}.lil-gui-dragging *{cursor:ew-resize!important}.lil-gui-dragging.lil-gui-vertical *{cursor:ns-resize!important}.lil-gui .title{--title-height:calc(var(--widget-height) + var(--spacing)*1.25);-webkit-tap-highlight-color:transparent;text-decoration-skip:objects;cursor:pointer;font-weight:600;height:var(--title-height);line-height:calc(var(--title-height) - 4px);outline:none;padding:0 var(--padding)}.lil-gui .title:before{content:"▾";display:inline-block;font-family:lil-gui;padding-right:2px}.lil-gui .title:active{background:var(--title-background-color);opacity:.75}.lil-gui.root>.title:focus{text-decoration:none!important}.lil-gui.closed>.title:before{content:"▸"}.lil-gui.closed>.children{opacity:0;transform:translateY(-7px)}.lil-gui.closed:not(.transition)>.children{display:none}.lil-gui.transition>.children{overflow:hidden;pointer-events:none;transition-duration:.3s;transition-property:height,opacity,transform;transition-timing-function:cubic-bezier(.2,.6,.35,1)}.lil-gui .children:empty:before{content:"Empty";display:block;font-style:italic;height:var(--widget-height);line-height:var(--widget-height);margin:var(--spacing) 0;opacity:.5;padding:0 var(--padding)}.lil-gui.root>.children>.lil-gui>.title{border-width:0;border-bottom:1px solid var(--widget-color);border-left:0 solid var(--widget-color);border-right:0 solid var(--widget-color);border-top:1px solid var(--widget-color);transition:border-color .3s}.lil-gui.root>.children>.lil-gui.closed>.title{border-bottom-color:transparent}.lil-gui+.controller{border-top:1px solid var(--widget-color);margin-top:0;padding-top:var(--spacing)}.lil-gui .lil-gui .lil-gui>.title{border:none}.lil-gui .lil-gui .lil-gui>.children{border:none;border-left:2px solid var(--widget-color);margin-left:var(--folder-indent)}.lil-gui .lil-gui .controller{border:none}.lil-gui input{-webkit-tap-highlight-color:transparent;background:var(--widget-color);border:0;border-radius:var(--widget-border-radius);color:var(--text-color);font-family:var(--font-family);font-size:var(--input-font-size);height:var(--widget-height);outline:none;width:100%}.lil-gui input:disabled{opacity:1}.lil-gui input[type=number],.lil-gui input[type=text]{padding:var(--widget-padding)}.lil-gui input[type=number]:focus,.lil-gui input[type=text]:focus{background:var(--focus-color)}.lil-gui input::-webkit-inner-spin-button,.lil-gui input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.lil-gui input[type=number]{-moz-appearance:textfield}.lil-gui input[type=checkbox]{appearance:none;-webkit-appearance:none;border-radius:var(--widget-border-radius);cursor:pointer;height:var(--checkbox-size);text-align:center;width:var(--checkbox-size)}.lil-gui input[type=checkbox]:checked:before{content:"✓";font-family:lil-gui;font-size:var(--checkbox-size);line-height:var(--checkbox-size)}.lil-gui button{-webkit-tap-highlight-color:transparent;background:var(--widget-color);border:1px solid var(--widget-color);border-radius:var(--widget-border-radius);color:var(--text-color);cursor:pointer;font-family:var(--font-family);font-size:var(--font-size);height:var(--widget-height);line-height:calc(var(--widget-height) - 4px);outline:none;text-align:center;text-transform:none;width:100%}.lil-gui button:active{background:var(--focus-color)}@font-face{font-family:lil-gui;src:url("data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAUsAAsAAAAACJwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAH4AAADAImwmYE9TLzIAAAGIAAAAPwAAAGBKqH5SY21hcAAAAcgAAAD0AAACrukyyJBnbHlmAAACvAAAAF8AAACEIZpWH2hlYWQAAAMcAAAAJwAAADZfcj2zaGhlYQAAA0QAAAAYAAAAJAC5AHhobXR4AAADXAAAABAAAABMAZAAAGxvY2EAAANsAAAAFAAAACgCEgIybWF4cAAAA4AAAAAeAAAAIAEfABJuYW1lAAADoAAAASIAAAIK9SUU/XBvc3QAAATEAAAAZgAAAJCTcMc2eJxVjbEOgjAURU+hFRBK1dGRL+ALnAiToyMLEzFpnPz/eAshwSa97517c/MwwJmeB9kwPl+0cf5+uGPZXsqPu4nvZabcSZldZ6kfyWnomFY/eScKqZNWupKJO6kXN3K9uCVoL7iInPr1X5baXs3tjuMqCtzEuagm/AAlzQgPAAB4nGNgYRBlnMDAysDAYM/gBiT5oLQBAwuDJAMDEwMrMwNWEJDmmsJwgCFeXZghBcjlZMgFCzOiKOIFAB71Bb8AeJy1kjFuwkAQRZ+DwRAwBtNQRUGKQ8OdKCAWUhAgKLhIuAsVSpWz5Bbkj3dEgYiUIszqWdpZe+Z7/wB1oCYmIoboiwiLT2WjKl/jscrHfGg/pKdMkyklC5Zs2LEfHYpjcRoPzme9MWWmk3dWbK9ObkWkikOetJ554fWyoEsmdSlt+uR0pCJR34b6t/TVg1SY3sYvdf8vuiKrpyaDXDISiegp17p7579Gp3p++y7HPAiY9pmTibljrr85qSidtlg4+l25GLCaS8e6rRxNBmsnERunKbaOObRz7N72ju5vdAjYpBXHgJylOAVsMseDAPEP8LYoUHicY2BiAAEfhiAGJgZWBgZ7RnFRdnVJELCQlBSRlATJMoLV2DK4glSYs6ubq5vbKrJLSbGrgEmovDuDJVhe3VzcXFwNLCOILB/C4IuQ1xTn5FPilBTj5FPmBAB4WwoqAHicY2BkYGAA4sk1sR/j+W2+MnAzpDBgAyEMQUCSg4EJxAEAwUgFHgB4nGNgZGBgSGFggJMhDIwMqEAYAByHATJ4nGNgAIIUNEwmAABl3AGReJxjYAACIQYlBiMGJ3wQAEcQBEV4nGNgZGBgEGZgY2BiAAEQyQWEDAz/wXwGAAsPATIAAHicXdBNSsNAHAXwl35iA0UQXYnMShfS9GPZA7T7LgIu03SSpkwzYTIt1BN4Ak/gKTyAeCxfw39jZkjymzcvAwmAW/wgwHUEGDb36+jQQ3GXGot79L24jxCP4gHzF/EIr4jEIe7wxhOC3g2TMYy4Q7+Lu/SHuEd/ivt4wJd4wPxbPEKMX3GI5+DJFGaSn4qNzk8mcbKSR6xdXdhSzaOZJGtdapd4vVPbi6rP+cL7TGXOHtXKll4bY1Xl7EGnPtp7Xy2n00zyKLVHfkHBa4IcJ2oD3cgggWvt/V/FbDrUlEUJhTn/0azVWbNTNr0Ens8de1tceK9xZmfB1CPjOmPH4kitmvOubcNpmVTN3oFJyjzCvnmrwhJTzqzVj9jiSX911FjeAAB4nG3HMRKCMBBA0f0giiKi4DU8k0V2GWbIZDOh4PoWWvq6J5V8If9NVNQcaDhyouXMhY4rPTcG7jwYmXhKq8Wz+p762aNaeYXom2n3m2dLTVgsrCgFJ7OTmIkYbwIbC6vIB7WmFfAAAA==") format("woff")}@media (pointer:coarse){.lil-gui.allow-touch-styles{--widget-height:28px;--padding:6px;--spacing:6px;--font-size:13px;--input-font-size:16px;--folder-indent:10px;--scrollbar-width:7px;--slider-input-min-width:50px;--color-input-min-width:65px}}@media (hover:hover){.lil-gui .controller.color .display:hover:before{border:1px solid #fff9;border-radius:var(--widget-border-radius);bottom:0;content:" ";display:block;left:0;position:absolute;right:0;top:0}.lil-gui .controller.option .display.focus{background:var(--focus-color)}.lil-gui .controller.option .widget:hover .display{background:var(--hover-color)}.lil-gui .controller.number .slider:hover{background-color:var(--hover-color)}body:not(.lil-gui-dragging) .lil-gui .title:hover{background:var(--title-background-color);opacity:.85}.lil-gui .title:focus{text-decoration:underline var(--focus-color)}.lil-gui input:hover{background:var(--hover-color)}.lil-gui input:active{background:var(--focus-color)}.lil-gui input[type=checkbox]:focus{box-shadow:inset 0 0 0 1px var(--focus-color)}.lil-gui button:hover{background:var(--hover-color);border-color:var(--hover-color)}.lil-gui button:focus{border-color:var(--focus-color)}}'),p=!0),e?e.appendChild(this.domElement):i&&(this.domElement.classList.add("autoPlace"),document.body.appendChild(this.domElement)),s&&this.domElement.style.setProperty("--width",s+"px"),this.domElement.addEventListener("keydown",t=>t.stopPropagation()),this.domElement.addEventListener("keyup",t=>t.stopPropagation())}add(t,e,s,n,l){if(Object(s)===s)return new c(this,t,e,s);const r=t[e];switch(typeof r){case"number":return new d(this,t,e,s,n,l);case"boolean":return new i(this,t,e);case"string":return new u(this,t,e);case"function":return new h(this,t,e)}console.error("gui.add failed\n\tproperty:",e,"\n\tobject:",t,"\n\tvalue:",r)}addColor(t,i,e=1){return new a(this,t,i,e)}addFolder(t){return new g({parent:this,title:t})}load(t,i=!0){return t.controllers&&this.controllers.forEach(i=>{i instanceof h||i._name in t.controllers&&i.load(t.controllers[i._name])}),i&&t.folders&&this.folders.forEach(i=>{i._title in t.folders&&i.load(t.folders[i._title])}),this}save(t=!0){const i={controllers:{},folders:{}};return this.controllers.forEach(t=>{if(!(t instanceof h)){if(t._name in i.controllers)throw new Error(`Cannot save GUI with duplicate property "${t._name}"`);i.controllers[t._name]=t.save()}}),t&&this.folders.forEach(t=>{if(t._title in i.folders)throw new Error(`Cannot save GUI with duplicate folder "${t._title}"`);i.folders[t._title]=t.save()}),i}open(t=!0){return this._closed=!t,this.$title.setAttribute("aria-expanded",!this._closed),this.domElement.classList.toggle("closed",this._closed),this}close(){return this.open(!1)}show(t=!0){return this._hidden=!t,this.domElement.style.display=this._hidden?"none":"",this}hide(){return this.show(!1)}openAnimated(t=!0){return this._closed=!t,this.$title.setAttribute("aria-expanded",!this._closed),requestAnimationFrame(()=>{const i=this.$children.clientHeight;this.$children.style.height=i+"px",this.domElement.classList.add("transition");const e=t=>{t.target===this.$children&&(this.$children.style.height="",this.domElement.classList.remove("transition"),this.$children.removeEventListener("transitionend",e))};this.$children.addEventListener("transitionend",e);const s=t?this.$children.scrollHeight:0;this.domElement.classList.toggle("closed",!t),requestAnimationFrame(()=>{this.$children.style.height=s+"px"})}),this}title(t){return this._title=t,this.$title.innerHTML=t,this}reset(t=!0){return(t?this.controllersRecursive():this.controllers).forEach(t=>t.reset()),this}onChange(t){return this._onChange=t,this}_callOnChange(t){this.parent&&this.parent._callOnChange(t),void 0!==this._onChange&&this._onChange.call(this,{object:t.object,property:t.property,value:t.getValue(),controller:t})}onFinishChange(t){return this._onFinishChange=t,this}_callOnFinishChange(t){this.parent&&this.parent._callOnFinishChange(t),void 0!==this._onFinishChange&&this._onFinishChange.call(this,{object:t.object,property:t.property,value:t.getValue(),controller:t})}destroy(){this.parent&&(this.parent.children.splice(this.parent.children.indexOf(this),1),this.parent.folders.splice(this.parent.folders.indexOf(this),1)),this.domElement.parentElement&&this.domElement.parentElement.removeChild(this.domElement),Array.from(this.children).forEach(t=>t.destroy())}controllersRecursive(){let t=Array.from(this.controllers);return this.folders.forEach(i=>{t=t.concat(i.controllersRecursive())}),t}foldersRecursive(){let t=Array.from(this.folders);return this.folders.forEach(i=>{t=t.concat(i.foldersRecursive())}),t}}export default g;export{i as BooleanController,a as ColorController,t as Controller,h as FunctionController,g as GUI,d as NumberController,c as OptionController,u as StringController}; diff --git a/three/addons/libs/lottie_canvas.module.js b/three/addons/libs/lottie_canvas.module.js deleted file mode 100644 index 512a84c..0000000 --- a/three/addons/libs/lottie_canvas.module.js +++ /dev/null @@ -1,14849 +0,0 @@ -const lottie = {}; - -if (typeof document !== 'undefined') { - -const svgNS = 'http://www.w3.org/2000/svg'; - -let locationHref = ''; -let _useWebWorker = false; - -const initialDefaultFrame = -999999; - -const setWebWorker = (flag) => { _useWebWorker = !!flag; }; -const getWebWorker = () => _useWebWorker; - -const setLocationHref = (value) => { locationHref = value; }; -const getLocationHref = () => locationHref; - -function createTag(type) { - // return {appendChild:function(){},setAttribute:function(){},style:{}} - return document.createElement(type); -} - -function extendPrototype(sources, destination) { - var i; - var len = sources.length; - var sourcePrototype; - for (i = 0; i < len; i += 1) { - sourcePrototype = sources[i].prototype; - for (var attr in sourcePrototype) { - if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr]; - } - } -} - -function getDescriptor(object, prop) { - return Object.getOwnPropertyDescriptor(object, prop); -} - -function createProxyFunction(prototype) { - function ProxyFunction() {} - ProxyFunction.prototype = prototype; - return ProxyFunction; -} - -// import Howl from '../../3rd_party/howler'; - -const audioControllerFactory = (function () { - function AudioController(audioFactory) { - this.audios = []; - this.audioFactory = audioFactory; - this._volume = 1; - this._isMuted = false; - } - - AudioController.prototype = { - addAudio: function (audio) { - this.audios.push(audio); - }, - pause: function () { - var i; - var len = this.audios.length; - for (i = 0; i < len; i += 1) { - this.audios[i].pause(); - } - }, - resume: function () { - var i; - var len = this.audios.length; - for (i = 0; i < len; i += 1) { - this.audios[i].resume(); - } - }, - setRate: function (rateValue) { - var i; - var len = this.audios.length; - for (i = 0; i < len; i += 1) { - this.audios[i].setRate(rateValue); - } - }, - createAudio: function (assetPath) { - if (this.audioFactory) { - return this.audioFactory(assetPath); - } if (window.Howl) { - return new window.Howl({ - src: [assetPath], - }); - } - return { - isPlaying: false, - play: function () { this.isPlaying = true; }, - seek: function () { this.isPlaying = false; }, - playing: function () {}, - rate: function () {}, - setVolume: function () {}, - }; - }, - setAudioFactory: function (audioFactory) { - this.audioFactory = audioFactory; - }, - setVolume: function (value) { - this._volume = value; - this._updateVolume(); - }, - mute: function () { - this._isMuted = true; - this._updateVolume(); - }, - unmute: function () { - this._isMuted = false; - this._updateVolume(); - }, - getVolume: function () { - return this._volume; - }, - _updateVolume: function () { - var i; - var len = this.audios.length; - for (i = 0; i < len; i += 1) { - this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1)); - } - }, - }; - - return function () { - return new AudioController(); - }; -}()); - -const createTypedArray = (function () { - function createRegularArray(type, len) { - var i = 0; - var arr = []; - var value; - switch (type) { - case 'int16': - case 'uint8c': - value = 1; - break; - default: - value = 1.1; - break; - } - for (i = 0; i < len; i += 1) { - arr.push(value); - } - return arr; - } - function createTypedArrayFactory(type, len) { - if (type === 'float32') { - return new Float32Array(len); - } if (type === 'int16') { - return new Int16Array(len); - } if (type === 'uint8c') { - return new Uint8ClampedArray(len); - } - return createRegularArray(type, len); - } - if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') { - return createTypedArrayFactory; - } - return createRegularArray; -}()); - -function createSizedArray(len) { - return Array.apply(null, { length: len }); -} - -let subframeEnabled = true; -let expressionsPlugin = null; -let idPrefix$1 = ''; -const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); -let _shouldRoundValues = false; -const bmPow = Math.pow; -const bmSqrt = Math.sqrt; -const bmFloor = Math.floor; -const bmMax = Math.max; -const bmMin = Math.min; - -const BMMath = {}; -(function () { - var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2']; - var i; - var len = propertyNames.length; - for (i = 0; i < len; i += 1) { - BMMath[propertyNames[i]] = Math[propertyNames[i]]; - } -}()); - -function ProjectInterface$1() { return {}; } -BMMath.random = Math.random; -BMMath.abs = function (val) { - var tOfVal = typeof val; - if (tOfVal === 'object' && val.length) { - var absArr = createSizedArray(val.length); - var i; - var len = val.length; - for (i = 0; i < len; i += 1) { - absArr[i] = Math.abs(val[i]); - } - return absArr; - } - return Math.abs(val); -}; -let defaultCurveSegments = 150; -const degToRads = Math.PI / 180; -const roundCorner = 0.5519; - -function roundValues(flag) { - _shouldRoundValues = !!flag; -} - -function bmRnd(value) { - if (_shouldRoundValues) { - return Math.round(value); - } - return value; -} - -function styleDiv(element) { - element.style.position = 'absolute'; - element.style.top = 0; - element.style.left = 0; - element.style.display = 'block'; - element.style.transformOrigin = '0 0'; - element.style.webkitTransformOrigin = '0 0'; - element.style.backfaceVisibility = 'visible'; - element.style.webkitBackfaceVisibility = 'visible'; - element.style.transformStyle = 'preserve-3d'; - element.style.webkitTransformStyle = 'preserve-3d'; - element.style.mozTransformStyle = 'preserve-3d'; -} - -function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) { - this.type = type; - this.currentTime = currentTime; - this.totalTime = totalTime; - this.direction = frameMultiplier < 0 ? -1 : 1; -} - -function BMCompleteEvent(type, frameMultiplier) { - this.type = type; - this.direction = frameMultiplier < 0 ? -1 : 1; -} - -function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) { - this.type = type; - this.currentLoop = currentLoop; - this.totalLoops = totalLoops; - this.direction = frameMultiplier < 0 ? -1 : 1; -} - -function BMSegmentStartEvent(type, firstFrame, totalFrames) { - this.type = type; - this.firstFrame = firstFrame; - this.totalFrames = totalFrames; -} - -function BMDestroyEvent(type, target) { - this.type = type; - this.target = target; -} - -function BMRenderFrameErrorEvent(nativeError, currentTime) { - this.type = 'renderFrameError'; - this.nativeError = nativeError; - this.currentTime = currentTime; -} - -function BMConfigErrorEvent(nativeError) { - this.type = 'configError'; - this.nativeError = nativeError; -} - -function BMAnimationConfigErrorEvent(type, nativeError) { - this.type = type; - this.nativeError = nativeError; -} - -const createElementID = (function () { - var _count = 0; - return function createID() { - _count += 1; - return idPrefix$1 + '__lottie_element_' + _count; - }; -}()); - -function HSVtoRGB(h, s, v) { - var r; - var g; - var b; - var i; - var f; - var p; - var q; - var t; - i = Math.floor(h * 6); - f = h * 6 - i; - p = v * (1 - s); - q = v * (1 - f * s); - t = v * (1 - (1 - f) * s); - switch (i % 6) { - case 0: r = v; g = t; b = p; break; - case 1: r = q; g = v; b = p; break; - case 2: r = p; g = v; b = t; break; - case 3: r = p; g = q; b = v; break; - case 4: r = t; g = p; b = v; break; - case 5: r = v; g = p; b = q; break; - default: break; - } - return [r, - g, - b]; -} - -function RGBtoHSV(r, g, b) { - var max = Math.max(r, g, b); - var min = Math.min(r, g, b); - var d = max - min; - var h; - var s = (max === 0 ? 0 : d / max); - var v = max / 255; - - switch (max) { - case min: h = 0; break; - case r: h = (g - b) + d * (g < b ? 6 : 0); h /= 6 * d; break; - case g: h = (b - r) + d * 2; h /= 6 * d; break; - case b: h = (r - g) + d * 4; h /= 6 * d; break; - default: break; - } - - return [ - h, - s, - v, - ]; -} - -function addSaturationToRGB(color, offset) { - var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); - hsv[1] += offset; - if (hsv[1] > 1) { - hsv[1] = 1; - } else if (hsv[1] <= 0) { - hsv[1] = 0; - } - return HSVtoRGB(hsv[0], hsv[1], hsv[2]); -} - -function addBrightnessToRGB(color, offset) { - var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); - hsv[2] += offset; - if (hsv[2] > 1) { - hsv[2] = 1; - } else if (hsv[2] < 0) { - hsv[2] = 0; - } - return HSVtoRGB(hsv[0], hsv[1], hsv[2]); -} - -function addHueToRGB(color, offset) { - var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255); - hsv[0] += offset / 360; - if (hsv[0] > 1) { - hsv[0] -= 1; - } else if (hsv[0] < 0) { - hsv[0] += 1; - } - return HSVtoRGB(hsv[0], hsv[1], hsv[2]); -} - -const rgbToHex = (function () { - var colorMap = []; - var i; - var hex; - for (i = 0; i < 256; i += 1) { - hex = i.toString(16); - colorMap[i] = hex.length === 1 ? '0' + hex : hex; - } - - return function (r, g, b) { - if (r < 0) { - r = 0; - } - if (g < 0) { - g = 0; - } - if (b < 0) { - b = 0; - } - return '#' + colorMap[r] + colorMap[g] + colorMap[b]; - }; -}()); - -const setSubframeEnabled = (flag) => { subframeEnabled = !!flag; }; -const getSubframeEnabled = () => subframeEnabled; -const setExpressionsPlugin = (value) => { expressionsPlugin = value; }; -const getExpressionsPlugin = () => expressionsPlugin; -const setDefaultCurveSegments = (value) => { defaultCurveSegments = value; }; -const getDefaultCurveSegments = () => defaultCurveSegments; -const setIdPrefix = (value) => { idPrefix$1 = value; }; -const getIdPrefix = () => idPrefix$1; - -function createNS(type) { - // return {appendChild:function(){},setAttribute:function(){},style:{}} - return document.createElementNS(svgNS, type); -} - -const dataManager = (function () { - var _counterId = 1; - var processes = []; - var workerFn; - var workerInstance; - var workerProxy = { - onmessage: function () { - - }, - postMessage: function (path) { - workerFn({ - data: path, - }); - }, - }; - var _workerSelf = { - postMessage: function (data) { - workerProxy.onmessage({ - data: data, - }); - }, - }; - function createWorker(fn) { - if (window.Worker && window.Blob && getWebWorker()) { - var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], { type: 'text/javascript' }); - // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' }); - var url = URL.createObjectURL(blob); - return new Worker(url); - } - workerFn = fn; - return workerProxy; - } - - function setupWorker() { - if (!workerInstance) { - workerInstance = createWorker(function workerStart(e) { - function dataFunctionManager() { - function completeLayers(layers, comps) { - var layerData; - var i; - var len = layers.length; - var j; - var jLen; - var k; - var kLen; - for (i = 0; i < len; i += 1) { - layerData = layers[i]; - if (('ks' in layerData) && !layerData.completed) { - layerData.completed = true; - if (layerData.tt) { - layers[i - 1].td = layerData.tt; - } - if (layerData.hasMask) { - var maskProps = layerData.masksProperties; - jLen = maskProps.length; - for (j = 0; j < jLen; j += 1) { - if (maskProps[j].pt.k.i) { - convertPathsToAbsoluteValues(maskProps[j].pt.k); - } else { - kLen = maskProps[j].pt.k.length; - for (k = 0; k < kLen; k += 1) { - if (maskProps[j].pt.k[k].s) { - convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]); - } - if (maskProps[j].pt.k[k].e) { - convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]); - } - } - } - } - } - if (layerData.ty === 0) { - layerData.layers = findCompLayers(layerData.refId, comps); - completeLayers(layerData.layers, comps); - } else if (layerData.ty === 4) { - completeShapes(layerData.shapes); - } else if (layerData.ty === 5) { - completeText(layerData); - } - } - } - } - - function completeChars(chars, assets) { - if (chars) { - var i = 0; - var len = chars.length; - for (i = 0; i < len; i += 1) { - if (chars[i].t === 1) { - // var compData = findComp(chars[i].data.refId, assets); - chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); - // chars[i].data.ip = 0; - // chars[i].data.op = 99999; - // chars[i].data.st = 0; - // chars[i].data.sr = 1; - // chars[i].w = compData.w; - // chars[i].data.ks = { - // a: { k: [0, 0, 0], a: 0 }, - // p: { k: [0, -compData.h, 0], a: 0 }, - // r: { k: 0, a: 0 }, - // s: { k: [100, 100], a: 0 }, - // o: { k: 100, a: 0 }, - // }; - completeLayers(chars[i].data.layers, assets); - } - } - } - } - - function findComp(id, comps) { - var i = 0; - var len = comps.length; - while (i < len) { - if (comps[i].id === id) { - return comps[i]; - } - i += 1; - } - return null; - } - - function findCompLayers(id, comps) { - var comp = findComp(id, comps); - if (comp) { - if (!comp.layers.__used) { - comp.layers.__used = true; - return comp.layers; - } - return JSON.parse(JSON.stringify(comp.layers)); - } - return null; - } - - function completeShapes(arr) { - var i; - var len = arr.length; - var j; - var jLen; - for (i = len - 1; i >= 0; i -= 1) { - if (arr[i].ty === 'sh') { - if (arr[i].ks.k.i) { - convertPathsToAbsoluteValues(arr[i].ks.k); - } else { - jLen = arr[i].ks.k.length; - for (j = 0; j < jLen; j += 1) { - if (arr[i].ks.k[j].s) { - convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]); - } - if (arr[i].ks.k[j].e) { - convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]); - } - } - } - } else if (arr[i].ty === 'gr') { - completeShapes(arr[i].it); - } - } - } - - function convertPathsToAbsoluteValues(path) { - var i; - var len = path.i.length; - for (i = 0; i < len; i += 1) { - path.i[i][0] += path.v[i][0]; - path.i[i][1] += path.v[i][1]; - path.o[i][0] += path.v[i][0]; - path.o[i][1] += path.v[i][1]; - } - } - - function checkVersion(minimum, animVersionString) { - var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100]; - if (minimum[0] > animVersion[0]) { - return true; - } if (animVersion[0] > minimum[0]) { - return false; - } - if (minimum[1] > animVersion[1]) { - return true; - } if (animVersion[1] > minimum[1]) { - return false; - } - if (minimum[2] > animVersion[2]) { - return true; - } if (animVersion[2] > minimum[2]) { - return false; - } - return null; - } - - var checkText = (function () { - var minimumVersion = [4, 4, 14]; - - function updateTextLayer(textLayer) { - var documentData = textLayer.t.d; - textLayer.t.d = { - k: [ - { - s: documentData, - t: 0, - }, - ], - }; - } - - function iterateLayers(layers) { - var i; - var len = layers.length; - for (i = 0; i < len; i += 1) { - if (layers[i].ty === 5) { - updateTextLayer(layers[i]); - } - } - } - - return function (animationData) { - if (checkVersion(minimumVersion, animationData.v)) { - iterateLayers(animationData.layers); - if (animationData.assets) { - var i; - var len = animationData.assets.length; - for (i = 0; i < len; i += 1) { - if (animationData.assets[i].layers) { - iterateLayers(animationData.assets[i].layers); - } - } - } - } - }; - }()); - - var checkChars = (function () { - var minimumVersion = [4, 7, 99]; - return function (animationData) { - if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) { - var i; - var len = animationData.chars.length; - for (i = 0; i < len; i += 1) { - var charData = animationData.chars[i]; - if (charData.data && charData.data.shapes) { - completeShapes(charData.data.shapes); - charData.data.ip = 0; - charData.data.op = 99999; - charData.data.st = 0; - charData.data.sr = 1; - charData.data.ks = { - p: { k: [0, 0], a: 0 }, - s: { k: [100, 100], a: 0 }, - a: { k: [0, 0], a: 0 }, - r: { k: 0, a: 0 }, - o: { k: 100, a: 0 }, - }; - if (!animationData.chars[i].t) { - charData.data.shapes.push( - { - ty: 'no', - } - ); - charData.data.shapes[0].it.push( - { - p: { k: [0, 0], a: 0 }, - s: { k: [100, 100], a: 0 }, - a: { k: [0, 0], a: 0 }, - r: { k: 0, a: 0 }, - o: { k: 100, a: 0 }, - sk: { k: 0, a: 0 }, - sa: { k: 0, a: 0 }, - ty: 'tr', - } - ); - } - } - } - } - }; - }()); - - var checkPathProperties = (function () { - var minimumVersion = [5, 7, 15]; - - function updateTextLayer(textLayer) { - var pathData = textLayer.t.p; - if (typeof pathData.a === 'number') { - pathData.a = { - a: 0, - k: pathData.a, - }; - } - if (typeof pathData.p === 'number') { - pathData.p = { - a: 0, - k: pathData.p, - }; - } - if (typeof pathData.r === 'number') { - pathData.r = { - a: 0, - k: pathData.r, - }; - } - } - - function iterateLayers(layers) { - var i; - var len = layers.length; - for (i = 0; i < len; i += 1) { - if (layers[i].ty === 5) { - updateTextLayer(layers[i]); - } - } - } - - return function (animationData) { - if (checkVersion(minimumVersion, animationData.v)) { - iterateLayers(animationData.layers); - if (animationData.assets) { - var i; - var len = animationData.assets.length; - for (i = 0; i < len; i += 1) { - if (animationData.assets[i].layers) { - iterateLayers(animationData.assets[i].layers); - } - } - } - } - }; - }()); - - var checkColors = (function () { - var minimumVersion = [4, 1, 9]; - - function iterateShapes(shapes) { - var i; - var len = shapes.length; - var j; - var jLen; - for (i = 0; i < len; i += 1) { - if (shapes[i].ty === 'gr') { - iterateShapes(shapes[i].it); - } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') { - if (shapes[i].c.k && shapes[i].c.k[0].i) { - jLen = shapes[i].c.k.length; - for (j = 0; j < jLen; j += 1) { - if (shapes[i].c.k[j].s) { - shapes[i].c.k[j].s[0] /= 255; - shapes[i].c.k[j].s[1] /= 255; - shapes[i].c.k[j].s[2] /= 255; - shapes[i].c.k[j].s[3] /= 255; - } - if (shapes[i].c.k[j].e) { - shapes[i].c.k[j].e[0] /= 255; - shapes[i].c.k[j].e[1] /= 255; - shapes[i].c.k[j].e[2] /= 255; - shapes[i].c.k[j].e[3] /= 255; - } - } - } else { - shapes[i].c.k[0] /= 255; - shapes[i].c.k[1] /= 255; - shapes[i].c.k[2] /= 255; - shapes[i].c.k[3] /= 255; - } - } - } - } - - function iterateLayers(layers) { - var i; - var len = layers.length; - for (i = 0; i < len; i += 1) { - if (layers[i].ty === 4) { - iterateShapes(layers[i].shapes); - } - } - } - - return function (animationData) { - if (checkVersion(minimumVersion, animationData.v)) { - iterateLayers(animationData.layers); - if (animationData.assets) { - var i; - var len = animationData.assets.length; - for (i = 0; i < len; i += 1) { - if (animationData.assets[i].layers) { - iterateLayers(animationData.assets[i].layers); - } - } - } - } - }; - }()); - - var checkShapes = (function () { - var minimumVersion = [4, 4, 18]; - - function completeClosingShapes(arr) { - var i; - var len = arr.length; - var j; - var jLen; - for (i = len - 1; i >= 0; i -= 1) { - if (arr[i].ty === 'sh') { - if (arr[i].ks.k.i) { - arr[i].ks.k.c = arr[i].closed; - } else { - jLen = arr[i].ks.k.length; - for (j = 0; j < jLen; j += 1) { - if (arr[i].ks.k[j].s) { - arr[i].ks.k[j].s[0].c = arr[i].closed; - } - if (arr[i].ks.k[j].e) { - arr[i].ks.k[j].e[0].c = arr[i].closed; - } - } - } - } else if (arr[i].ty === 'gr') { - completeClosingShapes(arr[i].it); - } - } - } - - function iterateLayers(layers) { - var layerData; - var i; - var len = layers.length; - var j; - var jLen; - var k; - var kLen; - for (i = 0; i < len; i += 1) { - layerData = layers[i]; - if (layerData.hasMask) { - var maskProps = layerData.masksProperties; - jLen = maskProps.length; - for (j = 0; j < jLen; j += 1) { - if (maskProps[j].pt.k.i) { - maskProps[j].pt.k.c = maskProps[j].cl; - } else { - kLen = maskProps[j].pt.k.length; - for (k = 0; k < kLen; k += 1) { - if (maskProps[j].pt.k[k].s) { - maskProps[j].pt.k[k].s[0].c = maskProps[j].cl; - } - if (maskProps[j].pt.k[k].e) { - maskProps[j].pt.k[k].e[0].c = maskProps[j].cl; - } - } - } - } - } - if (layerData.ty === 4) { - completeClosingShapes(layerData.shapes); - } - } - } - - return function (animationData) { - if (checkVersion(minimumVersion, animationData.v)) { - iterateLayers(animationData.layers); - if (animationData.assets) { - var i; - var len = animationData.assets.length; - for (i = 0; i < len; i += 1) { - if (animationData.assets[i].layers) { - iterateLayers(animationData.assets[i].layers); - } - } - } - } - }; - }()); - - function completeData(animationData) { - if (animationData.__complete) { - return; - } - checkColors(animationData); - checkText(animationData); - checkChars(animationData); - checkPathProperties(animationData); - checkShapes(animationData); - completeLayers(animationData.layers, animationData.assets); - completeChars(animationData.chars, animationData.assets); - animationData.__complete = true; - } - - function completeText(data) { - if (data.t.a.length === 0 && !('m' in data.t.p)) { - // data.singleShape = true; - } - } - - var moduleOb = {}; - moduleOb.completeData = completeData; - moduleOb.checkColors = checkColors; - moduleOb.checkChars = checkChars; - moduleOb.checkPathProperties = checkPathProperties; - moduleOb.checkShapes = checkShapes; - moduleOb.completeLayers = completeLayers; - - return moduleOb; - } - if (!_workerSelf.dataManager) { - _workerSelf.dataManager = dataFunctionManager(); - } - - if (!_workerSelf.assetLoader) { - _workerSelf.assetLoader = (function () { - function formatResponse(xhr) { - // using typeof doubles the time of execution of this method, - // so if available, it's better to use the header to validate the type - var contentTypeHeader = xhr.getResponseHeader('content-type'); - if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) { - return xhr.response; - } - if (xhr.response && typeof xhr.response === 'object') { - return xhr.response; - } if (xhr.response && typeof xhr.response === 'string') { - return JSON.parse(xhr.response); - } if (xhr.responseText) { - return JSON.parse(xhr.responseText); - } - return null; - } - - function loadAsset(path, fullPath, callback, errorCallback) { - var response; - var xhr = new XMLHttpRequest(); - // set responseType after calling open or IE will break. - try { - // This crashes on Android WebView prior to KitKat - xhr.responseType = 'json'; - } catch (err) {} // eslint-disable-line no-empty - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - if (xhr.status === 200) { - response = formatResponse(xhr); - callback(response); - } else { - try { - response = formatResponse(xhr); - callback(response); - } catch (err) { - if (errorCallback) { - errorCallback(err); - } - } - } - } - }; - try { - xhr.open('GET', path, true); - } catch (error) { - xhr.open('GET', fullPath + '/' + path, true); - } - xhr.send(); - } - return { - load: loadAsset, - }; - }()); - } - - if (e.data.type === 'loadAnimation') { - _workerSelf.assetLoader.load( - e.data.path, - e.data.fullPath, - function (data) { - _workerSelf.dataManager.completeData(data); - _workerSelf.postMessage({ - id: e.data.id, - payload: data, - status: 'success', - }); - }, - function () { - _workerSelf.postMessage({ - id: e.data.id, - status: 'error', - }); - } - ); - } else if (e.data.type === 'complete') { - var animation = e.data.animation; - _workerSelf.dataManager.completeData(animation); - _workerSelf.postMessage({ - id: e.data.id, - payload: animation, - status: 'success', - }); - } else if (e.data.type === 'loadData') { - _workerSelf.assetLoader.load( - e.data.path, - e.data.fullPath, - function (data) { - _workerSelf.postMessage({ - id: e.data.id, - payload: data, - status: 'success', - }); - }, - function () { - _workerSelf.postMessage({ - id: e.data.id, - status: 'error', - }); - } - ); - } - }); - - workerInstance.onmessage = function (event) { - var data = event.data; - var id = data.id; - var process = processes[id]; - processes[id] = null; - if (data.status === 'success') { - process.onComplete(data.payload); - } else if (process.onError) { - process.onError(); - } - }; - } - } - - function createProcess(onComplete, onError) { - _counterId += 1; - var id = 'processId_' + _counterId; - processes[id] = { - onComplete: onComplete, - onError: onError, - }; - return id; - } - - function loadAnimation(path, onComplete, onError) { - setupWorker(); - var processId = createProcess(onComplete, onError); - workerInstance.postMessage({ - type: 'loadAnimation', - path: path, - fullPath: window.location.origin + window.location.pathname, - id: processId, - }); - } - - function loadData(path, onComplete, onError) { - setupWorker(); - var processId = createProcess(onComplete, onError); - workerInstance.postMessage({ - type: 'loadData', - path: path, - fullPath: window.location.origin + window.location.pathname, - id: processId, - }); - } - - function completeAnimation(anim, onComplete, onError) { - setupWorker(); - var processId = createProcess(onComplete, onError); - workerInstance.postMessage({ - type: 'complete', - animation: anim, - id: processId, - }); - } - - return { - loadAnimation: loadAnimation, - loadData: loadData, - completeAnimation: completeAnimation, - }; -}()); - -const ImagePreloader = (function () { - var proxyImage = (function () { - var canvas = createTag('canvas'); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext('2d'); - ctx.fillStyle = 'rgba(0,0,0,0)'; - ctx.fillRect(0, 0, 1, 1); - return canvas; - }()); - - function imageLoaded() { - this.loadedAssets += 1; - if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { - if (this.imagesLoadedCb) { - this.imagesLoadedCb(null); - } - } - } - function footageLoaded() { - this.loadedFootagesCount += 1; - if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { - if (this.imagesLoadedCb) { - this.imagesLoadedCb(null); - } - } - } - - function getAssetsPath(assetData, assetsPath, originalPath) { - var path = ''; - if (assetData.e) { - path = assetData.p; - } else if (assetsPath) { - var imagePath = assetData.p; - if (imagePath.indexOf('images/') !== -1) { - imagePath = imagePath.split('/')[1]; - } - path = assetsPath + imagePath; - } else { - path = originalPath; - path += assetData.u ? assetData.u : ''; - path += assetData.p; - } - return path; - } - - function testImageLoaded(img) { - var _count = 0; - var intervalId = setInterval(function () { - var box = img.getBBox(); - if (box.width || _count > 500) { - this._imageLoaded(); - clearInterval(intervalId); - } - _count += 1; - }.bind(this), 50); - } - - function createImageData(assetData) { - var path = getAssetsPath(assetData, this.assetsPath, this.path); - var img = createNS('image'); - if (isSafari) { - this.testImageLoaded(img); - } else { - img.addEventListener('load', this._imageLoaded, false); - } - img.addEventListener('error', function () { - ob.img = proxyImage; - this._imageLoaded(); - }.bind(this), false); - img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path); - if (this._elementHelper.append) { - this._elementHelper.append(img); - } else { - this._elementHelper.appendChild(img); - } - var ob = { - img: img, - assetData: assetData, - }; - return ob; - } - - function createImgData(assetData) { - var path = getAssetsPath(assetData, this.assetsPath, this.path); - var img = createTag('img'); - img.crossOrigin = 'anonymous'; - img.addEventListener('load', this._imageLoaded, false); - img.addEventListener('error', function () { - ob.img = proxyImage; - this._imageLoaded(); - }.bind(this), false); - img.src = path; - var ob = { - img: img, - assetData: assetData, - }; - return ob; - } - - function createFootageData(data) { - var ob = { - assetData: data, - }; - var path = getAssetsPath(data, this.assetsPath, this.path); - dataManager.loadData(path, function (footageData) { - ob.img = footageData; - this._footageLoaded(); - }.bind(this), function () { - ob.img = {}; - this._footageLoaded(); - }.bind(this)); - return ob; - } - - function loadAssets(assets, cb) { - this.imagesLoadedCb = cb; - var i; - var len = assets.length; - for (i = 0; i < len; i += 1) { - if (!assets[i].layers) { - if (!assets[i].t || assets[i].t === 'seq') { - this.totalImages += 1; - this.images.push(this._createImageData(assets[i])); - } else if (assets[i].t === 3) { - this.totalFootages += 1; - this.images.push(this.createFootageData(assets[i])); - } - } - } - } - - function setPath(path) { - this.path = path || ''; - } - - function setAssetsPath(path) { - this.assetsPath = path || ''; - } - - function getAsset(assetData) { - var i = 0; - var len = this.images.length; - while (i < len) { - if (this.images[i].assetData === assetData) { - return this.images[i].img; - } - i += 1; - } - return null; - } - - function destroy() { - this.imagesLoadedCb = null; - this.images.length = 0; - } - - function loadedImages() { - return this.totalImages === this.loadedAssets; - } - - function loadedFootages() { - return this.totalFootages === this.loadedFootagesCount; - } - - function setCacheType(type, elementHelper) { - if (type === 'svg') { - this._elementHelper = elementHelper; - this._createImageData = this.createImageData.bind(this); - } else { - this._createImageData = this.createImgData.bind(this); - } - } - - function ImagePreloaderFactory() { - this._imageLoaded = imageLoaded.bind(this); - this._footageLoaded = footageLoaded.bind(this); - this.testImageLoaded = testImageLoaded.bind(this); - this.createFootageData = createFootageData.bind(this); - this.assetsPath = ''; - this.path = ''; - this.totalImages = 0; - this.totalFootages = 0; - this.loadedAssets = 0; - this.loadedFootagesCount = 0; - this.imagesLoadedCb = null; - this.images = []; - } - - ImagePreloaderFactory.prototype = { - loadAssets: loadAssets, - setAssetsPath: setAssetsPath, - setPath: setPath, - loadedImages: loadedImages, - loadedFootages: loadedFootages, - destroy: destroy, - getAsset: getAsset, - createImgData: createImgData, - createImageData: createImageData, - imageLoaded: imageLoaded, - footageLoaded: footageLoaded, - setCacheType: setCacheType, - }; - - return ImagePreloaderFactory; -}()); - -function BaseEvent() {} -BaseEvent.prototype = { - triggerEvent: function (eventName, args) { - if (this._cbs[eventName]) { - var callbacks = this._cbs[eventName]; - for (var i = 0; i < callbacks.length; i += 1) { - callbacks[i](args); - } - } - }, - addEventListener: function (eventName, callback) { - if (!this._cbs[eventName]) { - this._cbs[eventName] = []; - } - this._cbs[eventName].push(callback); - - return function () { - this.removeEventListener(eventName, callback); - }.bind(this); - }, - removeEventListener: function (eventName, callback) { - if (!callback) { - this._cbs[eventName] = null; - } else if (this._cbs[eventName]) { - var i = 0; - var len = this._cbs[eventName].length; - while (i < len) { - if (this._cbs[eventName][i] === callback) { - this._cbs[eventName].splice(i, 1); - i -= 1; - len -= 1; - } - i += 1; - } - if (!this._cbs[eventName].length) { - this._cbs[eventName] = null; - } - } - }, -}; - -const markerParser = ( - - function () { - function parsePayloadLines(payload) { - var lines = payload.split('\r\n'); - var keys = {}; - var line; - var keysCount = 0; - for (var i = 0; i < lines.length; i += 1) { - line = lines[i].split(':'); - if (line.length === 2) { - keys[line[0]] = line[1].trim(); - keysCount += 1; - } - } - if (keysCount === 0) { - throw new Error(); - } - return keys; - } - - return function (_markers) { - var markers = []; - for (var i = 0; i < _markers.length; i += 1) { - var _marker = _markers[i]; - var markerData = { - time: _marker.tm, - duration: _marker.dr, - }; - try { - markerData.payload = JSON.parse(_markers[i].cm); - } catch (_) { - try { - markerData.payload = parsePayloadLines(_markers[i].cm); - } catch (__) { - markerData.payload = { - name: _markers[i].cm, - }; - } - } - markers.push(markerData); - } - return markers; - }; - }()); - -const ProjectInterface = (function () { - function registerComposition(comp) { - this.compositions.push(comp); - } - - return function () { - function _thisProjectFunction(name) { - var i = 0; - var len = this.compositions.length; - while (i < len) { - if (this.compositions[i].data && this.compositions[i].data.nm === name) { - if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) { - this.compositions[i].prepareFrame(this.currentFrame); - } - return this.compositions[i].compInterface; - } - i += 1; - } - return null; - } - - _thisProjectFunction.compositions = []; - _thisProjectFunction.currentFrame = 0; - - _thisProjectFunction.registerComposition = registerComposition; - - return _thisProjectFunction; - }; -}()); - -const renderers = {}; - -const registerRenderer = (key, value) => { - renderers[key] = value; -}; - -function getRenderer(key) { - return renderers[key]; -} - -const AnimationItem = function () { - this._cbs = []; - this.name = ''; - this.path = ''; - this.isLoaded = false; - this.currentFrame = 0; - this.currentRawFrame = 0; - this.firstFrame = 0; - this.totalFrames = 0; - this.frameRate = 0; - this.frameMult = 0; - this.playSpeed = 1; - this.playDirection = 1; - this.playCount = 0; - this.animationData = {}; - this.assets = []; - this.isPaused = true; - this.autoplay = false; - this.loop = true; - this.renderer = null; - this.animationID = createElementID(); - this.assetsPath = ''; - this.timeCompleted = 0; - this.segmentPos = 0; - this.isSubframeEnabled = getSubframeEnabled(); - this.segments = []; - this._idle = true; - this._completedLoop = false; - this.projectInterface = ProjectInterface(); - this.imagePreloader = new ImagePreloader(); - this.audioController = audioControllerFactory(); - this.markers = []; - this.configAnimation = this.configAnimation.bind(this); - this.onSetupError = this.onSetupError.bind(this); - this.onSegmentComplete = this.onSegmentComplete.bind(this); - this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0); -}; - -extendPrototype([BaseEvent], AnimationItem); - -AnimationItem.prototype.setParams = function (params) { - if (params.wrapper || params.container) { - this.wrapper = params.wrapper || params.container; - } - var animType = 'svg'; - if (params.animType) { - animType = params.animType; - } else if (params.renderer) { - animType = params.renderer; - } - const RendererClass = getRenderer(animType); - this.renderer = new RendererClass(this, params.rendererSettings); - this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs); - this.renderer.setProjectInterface(this.projectInterface); - this.animType = animType; - if (params.loop === '' - || params.loop === null - || params.loop === undefined - || params.loop === true) { - this.loop = true; - } else if (params.loop === false) { - this.loop = false; - } else { - this.loop = parseInt(params.loop, 10); - } - this.autoplay = 'autoplay' in params ? params.autoplay : true; - this.name = params.name ? params.name : ''; - this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true; - this.assetsPath = params.assetsPath; - this.initialSegment = params.initialSegment; - if (params.audioFactory) { - this.audioController.setAudioFactory(params.audioFactory); - } - if (params.animationData) { - this.setupAnimation(params.animationData); - } else if (params.path) { - if (params.path.lastIndexOf('\\') !== -1) { - this.path = params.path.substr(0, params.path.lastIndexOf('\\') + 1); - } else { - this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1); - } - this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1); - this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json')); - dataManager.loadAnimation( - params.path, - this.configAnimation, - this.onSetupError - ); - } -}; - -AnimationItem.prototype.onSetupError = function () { - this.trigger('data_failed'); -}; - -AnimationItem.prototype.setupAnimation = function (data) { - dataManager.completeAnimation( - data, - this.configAnimation - ); -}; - -AnimationItem.prototype.setData = function (wrapper, animationData) { - if (animationData) { - if (typeof animationData !== 'object') { - animationData = JSON.parse(animationData); - } - } - var params = { - wrapper: wrapper, - animationData: animationData, - }; - var wrapperAttributes = wrapper.attributes; - - params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-animation-path').value - : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-bm-path').value - : wrapperAttributes.getNamedItem('bm-path') - ? wrapperAttributes.getNamedItem('bm-path').value - : ''; - params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-anim-type').value - : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-bm-type').value - : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('bm-type').value - : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-bm-renderer').value - : wrapperAttributes.getNamedItem('bm-renderer') - ? wrapperAttributes.getNamedItem('bm-renderer').value - : 'canvas'; - - var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-anim-loop').value - : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-bm-loop').value - : wrapperAttributes.getNamedItem('bm-loop') - ? wrapperAttributes.getNamedItem('bm-loop').value - : ''; - if (loop === 'false') { - params.loop = false; - } else if (loop === 'true') { - params.loop = true; - } else if (loop !== '') { - params.loop = parseInt(loop, 10); - } - var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-anim-autoplay').value - : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-bm-autoplay').value - : wrapperAttributes.getNamedItem('bm-autoplay') - ? wrapperAttributes.getNamedItem('bm-autoplay').value - : true; - params.autoplay = autoplay !== 'false'; - - params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-name').value - : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-bm-name').value - : wrapperAttributes.getNamedItem('bm-name') - ? wrapperAttributes.getNamedItem('bm-name').value - : ''; - var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-anim-prerender').value - : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary - ? wrapperAttributes.getNamedItem('data-bm-prerender').value - : wrapperAttributes.getNamedItem('bm-prerender') - ? wrapperAttributes.getNamedItem('bm-prerender').value - : ''; - - if (prerender === 'false') { - params.prerender = false; - } - this.setParams(params); -}; - -AnimationItem.prototype.includeLayers = function (data) { - if (data.op > this.animationData.op) { - this.animationData.op = data.op; - this.totalFrames = Math.floor(data.op - this.animationData.ip); - } - var layers = this.animationData.layers; - var i; - var len = layers.length; - var newLayers = data.layers; - var j; - var jLen = newLayers.length; - for (j = 0; j < jLen; j += 1) { - i = 0; - while (i < len) { - if (layers[i].id === newLayers[j].id) { - layers[i] = newLayers[j]; - break; - } - i += 1; - } - } - if (data.chars || data.fonts) { - this.renderer.globalData.fontManager.addChars(data.chars); - this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs); - } - if (data.assets) { - len = data.assets.length; - for (i = 0; i < len; i += 1) { - this.animationData.assets.push(data.assets[i]); - } - } - this.animationData.__complete = false; - dataManager.completeAnimation( - this.animationData, - this.onSegmentComplete - ); -}; - -AnimationItem.prototype.onSegmentComplete = function (data) { - this.animationData = data; - var expressionsPlugin = getExpressionsPlugin(); - if (expressionsPlugin) { - expressionsPlugin.initExpressions(this); - } - this.loadNextSegment(); -}; - -AnimationItem.prototype.loadNextSegment = function () { - var segments = this.animationData.segments; - if (!segments || segments.length === 0 || !this.autoloadSegments) { - this.trigger('data_ready'); - this.timeCompleted = this.totalFrames; - return; - } - var segment = segments.shift(); - this.timeCompleted = segment.time * this.frameRate; - var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json'; - this.segmentPos += 1; - dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () { - this.trigger('data_failed'); - }.bind(this)); -}; - -AnimationItem.prototype.loadSegments = function () { - var segments = this.animationData.segments; - if (!segments) { - this.timeCompleted = this.totalFrames; - } - this.loadNextSegment(); -}; - -AnimationItem.prototype.imagesLoaded = function () { - this.trigger('loaded_images'); - this.checkLoaded(); -}; - -AnimationItem.prototype.preloadImages = function () { - this.imagePreloader.setAssetsPath(this.assetsPath); - this.imagePreloader.setPath(this.path); - this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this)); -}; - -AnimationItem.prototype.configAnimation = function (animData) { - if (!this.renderer) { - return; - } - try { - this.animationData = animData; - if (this.initialSegment) { - this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]); - this.firstFrame = Math.round(this.initialSegment[0]); - } else { - this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip); - this.firstFrame = Math.round(this.animationData.ip); - } - this.renderer.configAnimation(animData); - if (!animData.assets) { - animData.assets = []; - } - - this.assets = this.animationData.assets; - this.frameRate = this.animationData.fr; - this.frameMult = this.animationData.fr / 1000; - this.renderer.searchExtraCompositions(animData.assets); - this.markers = markerParser(animData.markers || []); - this.trigger('config_ready'); - this.preloadImages(); - this.loadSegments(); - this.updaFrameModifier(); - this.waitForFontsLoaded(); - if (this.isPaused) { - this.audioController.pause(); - } - } catch (error) { - this.triggerConfigError(error); - } -}; - -AnimationItem.prototype.waitForFontsLoaded = function () { - if (!this.renderer) { - return; - } - if (this.renderer.globalData.fontManager.isLoaded) { - this.checkLoaded(); - } else { - setTimeout(this.waitForFontsLoaded.bind(this), 20); - } -}; - -AnimationItem.prototype.checkLoaded = function () { - if (!this.isLoaded - && this.renderer.globalData.fontManager.isLoaded - && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') - && (this.imagePreloader.loadedFootages()) - ) { - this.isLoaded = true; - var expressionsPlugin = getExpressionsPlugin(); - if (expressionsPlugin) { - expressionsPlugin.initExpressions(this); - } - this.renderer.initItems(); - setTimeout(function () { - this.trigger('DOMLoaded'); - }.bind(this), 0); - this.gotoFrame(); - if (this.autoplay) { - this.play(); - } - } -}; - -AnimationItem.prototype.resize = function () { - this.renderer.updateContainerSize(); -}; - -AnimationItem.prototype.setSubframe = function (flag) { - this.isSubframeEnabled = !!flag; -}; - -AnimationItem.prototype.gotoFrame = function () { - this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise - - if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) { - this.currentFrame = this.timeCompleted; - } - this.trigger('enterFrame'); - this.renderFrame(); - this.trigger('drawnFrame'); -}; - -AnimationItem.prototype.renderFrame = function () { - if (this.isLoaded === false || !this.renderer) { - return; - } - try { - this.renderer.renderFrame(this.currentFrame + this.firstFrame); - } catch (error) { - this.triggerRenderFrameError(error); - } -}; - -AnimationItem.prototype.play = function (name) { - if (name && this.name !== name) { - return; - } - if (this.isPaused === true) { - this.isPaused = false; - this.trigger('_pause'); - this.audioController.resume(); - if (this._idle) { - this._idle = false; - this.trigger('_active'); - } - } -}; - -AnimationItem.prototype.pause = function (name) { - if (name && this.name !== name) { - return; - } - if (this.isPaused === false) { - this.isPaused = true; - this.trigger('_play'); - this._idle = true; - this.trigger('_idle'); - this.audioController.pause(); - } -}; - -AnimationItem.prototype.togglePause = function (name) { - if (name && this.name !== name) { - return; - } - if (this.isPaused === true) { - this.play(); - } else { - this.pause(); - } -}; - -AnimationItem.prototype.stop = function (name) { - if (name && this.name !== name) { - return; - } - this.pause(); - this.playCount = 0; - this._completedLoop = false; - this.setCurrentRawFrameValue(0); -}; - -AnimationItem.prototype.getMarkerData = function (markerName) { - var marker; - for (var i = 0; i < this.markers.length; i += 1) { - marker = this.markers[i]; - if (marker.payload && marker.payload.name === markerName) { - return marker; - } - } - return null; -}; - -AnimationItem.prototype.goToAndStop = function (value, isFrame, name) { - if (name && this.name !== name) { - return; - } - var numValue = Number(value); - if (isNaN(numValue)) { - var marker = this.getMarkerData(value); - if (marker) { - this.goToAndStop(marker.time, true); - } - } else if (isFrame) { - this.setCurrentRawFrameValue(value); - } else { - this.setCurrentRawFrameValue(value * this.frameModifier); - } - this.pause(); -}; - -AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) { - if (name && this.name !== name) { - return; - } - var numValue = Number(value); - if (isNaN(numValue)) { - var marker = this.getMarkerData(value); - if (marker) { - if (!marker.duration) { - this.goToAndStop(marker.time, true); - } else { - this.playSegments([marker.time, marker.time + marker.duration], true); - } - } - } else { - this.goToAndStop(numValue, isFrame, name); - } - this.play(); -}; - -AnimationItem.prototype.advanceTime = function (value) { - if (this.isPaused === true || this.isLoaded === false) { - return; - } - var nextValue = this.currentRawFrame + value * this.frameModifier; - var _isComplete = false; - // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations. - // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop. - if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) { - if (!this.loop || this.playCount === this.loop) { - if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) { - _isComplete = true; - nextValue = this.totalFrames - 1; - } - } else if (nextValue >= this.totalFrames) { - this.playCount += 1; - if (!this.checkSegments(nextValue % this.totalFrames)) { - this.setCurrentRawFrameValue(nextValue % this.totalFrames); - this._completedLoop = true; - this.trigger('loopComplete'); - } - } else { - this.setCurrentRawFrameValue(nextValue); - } - } else if (nextValue < 0) { - if (!this.checkSegments(nextValue % this.totalFrames)) { - if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { // eslint-disable-line no-plusplus - this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames)); - if (!this._completedLoop) { - this._completedLoop = true; - } else { - this.trigger('loopComplete'); - } - } else { - _isComplete = true; - nextValue = 0; - } - } - } else { - this.setCurrentRawFrameValue(nextValue); - } - if (_isComplete) { - this.setCurrentRawFrameValue(nextValue); - this.pause(); - this.trigger('complete'); - } -}; - -AnimationItem.prototype.adjustSegment = function (arr, offset) { - this.playCount = 0; - if (arr[1] < arr[0]) { - if (this.frameModifier > 0) { - if (this.playSpeed < 0) { - this.setSpeed(-this.playSpeed); - } else { - this.setDirection(-1); - } - } - this.totalFrames = arr[0] - arr[1]; - this.timeCompleted = this.totalFrames; - this.firstFrame = arr[1]; - this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset); - } else if (arr[1] > arr[0]) { - if (this.frameModifier < 0) { - if (this.playSpeed < 0) { - this.setSpeed(-this.playSpeed); - } else { - this.setDirection(1); - } - } - this.totalFrames = arr[1] - arr[0]; - this.timeCompleted = this.totalFrames; - this.firstFrame = arr[0]; - this.setCurrentRawFrameValue(0.001 + offset); - } - this.trigger('segmentStart'); -}; -AnimationItem.prototype.setSegment = function (init, end) { - var pendingFrame = -1; - if (this.isPaused) { - if (this.currentRawFrame + this.firstFrame < init) { - pendingFrame = init; - } else if (this.currentRawFrame + this.firstFrame > end) { - pendingFrame = end - init; - } - } - - this.firstFrame = init; - this.totalFrames = end - init; - this.timeCompleted = this.totalFrames; - if (pendingFrame !== -1) { - this.goToAndStop(pendingFrame, true); - } -}; - -AnimationItem.prototype.playSegments = function (arr, forceFlag) { - if (forceFlag) { - this.segments.length = 0; - } - if (typeof arr[0] === 'object') { - var i; - var len = arr.length; - for (i = 0; i < len; i += 1) { - this.segments.push(arr[i]); - } - } else { - this.segments.push(arr); - } - if (this.segments.length && forceFlag) { - this.adjustSegment(this.segments.shift(), 0); - } - if (this.isPaused) { - this.play(); - } -}; - -AnimationItem.prototype.resetSegments = function (forceFlag) { - this.segments.length = 0; - this.segments.push([this.animationData.ip, this.animationData.op]); - if (forceFlag) { - this.checkSegments(0); - } -}; -AnimationItem.prototype.checkSegments = function (offset) { - if (this.segments.length) { - this.adjustSegment(this.segments.shift(), offset); - return true; - } - return false; -}; - -AnimationItem.prototype.destroy = function (name) { - if ((name && this.name !== name) || !this.renderer) { - return; - } - this.renderer.destroy(); - this.imagePreloader.destroy(); - this.trigger('destroy'); - this._cbs = null; - this.onEnterFrame = null; - this.onLoopComplete = null; - this.onComplete = null; - this.onSegmentStart = null; - this.onDestroy = null; - this.renderer = null; - this.renderer = null; - this.imagePreloader = null; - this.projectInterface = null; -}; - -AnimationItem.prototype.setCurrentRawFrameValue = function (value) { - this.currentRawFrame = value; - this.gotoFrame(); -}; - -AnimationItem.prototype.setSpeed = function (val) { - this.playSpeed = val; - this.updaFrameModifier(); -}; - -AnimationItem.prototype.setDirection = function (val) { - this.playDirection = val < 0 ? -1 : 1; - this.updaFrameModifier(); -}; - -AnimationItem.prototype.setVolume = function (val, name) { - if (name && this.name !== name) { - return; - } - this.audioController.setVolume(val); -}; - -AnimationItem.prototype.getVolume = function () { - return this.audioController.getVolume(); -}; - -AnimationItem.prototype.mute = function (name) { - if (name && this.name !== name) { - return; - } - this.audioController.mute(); -}; - -AnimationItem.prototype.unmute = function (name) { - if (name && this.name !== name) { - return; - } - this.audioController.unmute(); -}; - -AnimationItem.prototype.updaFrameModifier = function () { - this.frameModifier = this.frameMult * this.playSpeed * this.playDirection; - this.audioController.setRate(this.playSpeed * this.playDirection); -}; - -AnimationItem.prototype.getPath = function () { - return this.path; -}; - -AnimationItem.prototype.getAssetsPath = function (assetData) { - var path = ''; - if (assetData.e) { - path = assetData.p; - } else if (this.assetsPath) { - var imagePath = assetData.p; - if (imagePath.indexOf('images/') !== -1) { - imagePath = imagePath.split('/')[1]; - } - path = this.assetsPath + imagePath; - } else { - path = this.path; - path += assetData.u ? assetData.u : ''; - path += assetData.p; - } - return path; -}; - -AnimationItem.prototype.getAssetData = function (id) { - var i = 0; - var len = this.assets.length; - while (i < len) { - if (id === this.assets[i].id) { - return this.assets[i]; - } - i += 1; - } - return null; -}; - -AnimationItem.prototype.hide = function () { - this.renderer.hide(); -}; - -AnimationItem.prototype.show = function () { - this.renderer.show(); -}; - -AnimationItem.prototype.getDuration = function (isFrame) { - return isFrame ? this.totalFrames : this.totalFrames / this.frameRate; -}; - -AnimationItem.prototype.updateDocumentData = function (path, documentData, index) { - try { - var element = this.renderer.getElementByPath(path); - element.updateDocumentData(documentData, index); - } catch (error) { - // TODO: decide how to handle catch case - } -}; - -AnimationItem.prototype.trigger = function (name) { - if (this._cbs && this._cbs[name]) { - switch (name) { - case 'enterFrame': - this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier)); - break; - case 'drawnFrame': - this.drawnFrameEvent.currentTime = this.currentFrame; - this.drawnFrameEvent.totalTime = this.totalFrames; - this.drawnFrameEvent.direction = this.frameModifier; - this.triggerEvent(name, this.drawnFrameEvent); - break; - case 'loopComplete': - this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult)); - break; - case 'complete': - this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult)); - break; - case 'segmentStart': - this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames)); - break; - case 'destroy': - this.triggerEvent(name, new BMDestroyEvent(name, this)); - break; - default: - this.triggerEvent(name); - } - } - if (name === 'enterFrame' && this.onEnterFrame) { - this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult)); - } - if (name === 'loopComplete' && this.onLoopComplete) { - this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult)); - } - if (name === 'complete' && this.onComplete) { - this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult)); - } - if (name === 'segmentStart' && this.onSegmentStart) { - this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames)); - } - if (name === 'destroy' && this.onDestroy) { - this.onDestroy.call(this, new BMDestroyEvent(name, this)); - } -}; - -AnimationItem.prototype.triggerRenderFrameError = function (nativeError) { - var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame); - this.triggerEvent('error', error); - - if (this.onError) { - this.onError.call(this, error); - } -}; - -AnimationItem.prototype.triggerConfigError = function (nativeError) { - var error = new BMConfigErrorEvent(nativeError, this.currentFrame); - this.triggerEvent('error', error); - - if (this.onError) { - this.onError.call(this, error); - } -}; - -const animationManager = (function () { - var moduleOb = {}; - var registeredAnimations = []; - var initTime = 0; - var len = 0; - var playingAnimationsNum = 0; - var _stopped = true; - var _isFrozen = false; - - function removeElement(ev) { - var i = 0; - var animItem = ev.target; - while (i < len) { - if (registeredAnimations[i].animation === animItem) { - registeredAnimations.splice(i, 1); - i -= 1; - len -= 1; - if (!animItem.isPaused) { - subtractPlayingCount(); - } - } - i += 1; - } - } - - function registerAnimation(element, animationData) { - if (!element) { - return null; - } - var i = 0; - while (i < len) { - if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) { - return registeredAnimations[i].animation; - } - i += 1; - } - var animItem = new AnimationItem(); - setupAnimation(animItem, element); - animItem.setData(element, animationData); - return animItem; - } - - function getRegisteredAnimations() { - var i; - var lenAnims = registeredAnimations.length; - var animations = []; - for (i = 0; i < lenAnims; i += 1) { - animations.push(registeredAnimations[i].animation); - } - return animations; - } - - function addPlayingCount() { - playingAnimationsNum += 1; - activate(); - } - - function subtractPlayingCount() { - playingAnimationsNum -= 1; - } - - function setupAnimation(animItem, element) { - animItem.addEventListener('destroy', removeElement); - animItem.addEventListener('_active', addPlayingCount); - animItem.addEventListener('_idle', subtractPlayingCount); - registeredAnimations.push({ elem: element, animation: animItem }); - len += 1; - } - - function loadAnimation(params) { - var animItem = new AnimationItem(); - setupAnimation(animItem, null); - animItem.setParams(params); - return animItem; - } - - function setSpeed(val, animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.setSpeed(val, animation); - } - } - - function setDirection(val, animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.setDirection(val, animation); - } - } - - function play(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.play(animation); - } - } - function resume(nowTime) { - var elapsedTime = nowTime - initTime; - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.advanceTime(elapsedTime); - } - initTime = nowTime; - if (playingAnimationsNum && !_isFrozen) { - window.requestAnimationFrame(resume); - } else { - _stopped = true; - } - } - - function first(nowTime) { - initTime = nowTime; - window.requestAnimationFrame(resume); - } - - function pause(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.pause(animation); - } - } - - function goToAndStop(value, isFrame, animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.goToAndStop(value, isFrame, animation); - } - } - - function stop(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.stop(animation); - } - } - - function togglePause(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.togglePause(animation); - } - } - - function destroy(animation) { - var i; - for (i = (len - 1); i >= 0; i -= 1) { - registeredAnimations[i].animation.destroy(animation); - } - } - - function searchAnimations(animationData, standalone, renderer) { - var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), - [].slice.call(document.getElementsByClassName('bodymovin'))); - var i; - var lenAnims = animElements.length; - for (i = 0; i < lenAnims; i += 1) { - if (renderer) { - animElements[i].setAttribute('data-bm-type', renderer); - } - registerAnimation(animElements[i], animationData); - } - if (standalone && lenAnims === 0) { - if (!renderer) { - renderer = 'svg'; - } - var body = document.getElementsByTagName('body')[0]; - body.innerText = ''; - var div = createTag('div'); - div.style.width = '100%'; - div.style.height = '100%'; - div.setAttribute('data-bm-type', renderer); - body.appendChild(div); - registerAnimation(div, animationData); - } - } - - function resize() { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.resize(); - } - } - - function activate() { - if (!_isFrozen && playingAnimationsNum) { - if (_stopped) { - window.requestAnimationFrame(first); - _stopped = false; - } - } - } - - function freeze() { - _isFrozen = true; - } - - function unfreeze() { - _isFrozen = false; - activate(); - } - - function setVolume(val, animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.setVolume(val, animation); - } - } - - function mute(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.mute(animation); - } - } - - function unmute(animation) { - var i; - for (i = 0; i < len; i += 1) { - registeredAnimations[i].animation.unmute(animation); - } - } - - moduleOb.registerAnimation = registerAnimation; - moduleOb.loadAnimation = loadAnimation; - moduleOb.setSpeed = setSpeed; - moduleOb.setDirection = setDirection; - moduleOb.play = play; - moduleOb.pause = pause; - moduleOb.stop = stop; - moduleOb.togglePause = togglePause; - moduleOb.searchAnimations = searchAnimations; - moduleOb.resize = resize; - // moduleOb.start = start; - moduleOb.goToAndStop = goToAndStop; - moduleOb.destroy = destroy; - moduleOb.freeze = freeze; - moduleOb.unfreeze = unfreeze; - moduleOb.setVolume = setVolume; - moduleOb.mute = mute; - moduleOb.unmute = unmute; - moduleOb.getRegisteredAnimations = getRegisteredAnimations; - return moduleOb; -}()); - -/* eslint-disable */ -const BezierFactory = (function () { - /** - * BezierEasing - use bezier curve for transition easing function - * by Gaëtan Renaudeau 2014 - 2015 – MIT License - * - * Credits: is based on Firefox's nsSMILKeySpline.cpp - * Usage: - * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ]) - * spline.get(x) => returns the easing value | x must be in [0, 1] range - * - */ - - var ob = {}; - ob.getBezierEasing = getBezierEasing; - var beziers = {}; - - function getBezierEasing(a, b, c, d, nm) { - var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\./g, 'p'); - if (beziers[str]) { - return beziers[str]; - } - var bezEasing = new BezierEasing([a, b, c, d]); - beziers[str] = bezEasing; - return bezEasing; - } - - // These values are established by empiricism with tests (tradeoff: performance VS precision) - var NEWTON_ITERATIONS = 4; - var NEWTON_MIN_SLOPE = 0.001; - var SUBDIVISION_PRECISION = 0.0000001; - var SUBDIVISION_MAX_ITERATIONS = 10; - - var kSplineTableSize = 11; - var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); - - var float32ArraySupported = typeof Float32Array === 'function'; - - function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } - function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } - function C(aA1) { return 3.0 * aA1; } - - // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. - function calcBezier(aT, aA1, aA2) { - return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; - } - - // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2. - function getSlope(aT, aA1, aA2) { - return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); - } - - function binarySubdivide(aX, aA, aB, mX1, mX2) { - var currentX, - currentT, - i = 0; - do { - currentT = aA + (aB - aA) / 2.0; - currentX = calcBezier(currentT, mX1, mX2) - aX; - if (currentX > 0.0) { - aB = currentT; - } else { - aA = currentT; - } - } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); - return currentT; - } - - function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { - for (var i = 0; i < NEWTON_ITERATIONS; ++i) { - var currentSlope = getSlope(aGuessT, mX1, mX2); - if (currentSlope === 0.0) return aGuessT; - var currentX = calcBezier(aGuessT, mX1, mX2) - aX; - aGuessT -= currentX / currentSlope; - } - return aGuessT; - } - - /** - * points is an array of [ mX1, mY1, mX2, mY2 ] - */ - function BezierEasing(points) { - this._p = points; - this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); - this._precomputed = false; - - this.get = this.get.bind(this); - } - - BezierEasing.prototype = { - - get: function (x) { - var mX1 = this._p[0], - mY1 = this._p[1], - mX2 = this._p[2], - mY2 = this._p[3]; - if (!this._precomputed) this._precompute(); - if (mX1 === mY1 && mX2 === mY2) return x; // linear - // Because JavaScript number are imprecise, we should guarantee the extremes are right. - if (x === 0) return 0; - if (x === 1) return 1; - return calcBezier(this._getTForX(x), mY1, mY2); - }, - - // Private part - - _precompute: function () { - var mX1 = this._p[0], - mY1 = this._p[1], - mX2 = this._p[2], - mY2 = this._p[3]; - this._precomputed = true; - if (mX1 !== mY1 || mX2 !== mY2) { this._calcSampleValues(); } - }, - - _calcSampleValues: function () { - var mX1 = this._p[0], - mX2 = this._p[2]; - for (var i = 0; i < kSplineTableSize; ++i) { - this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); - } - }, - - /** - * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection. - */ - _getTForX: function (aX) { - var mX1 = this._p[0], - mX2 = this._p[2], - mSampleValues = this._mSampleValues; - - var intervalStart = 0.0; - var currentSample = 1; - var lastSample = kSplineTableSize - 1; - - for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { - intervalStart += kSampleStepSize; - } - --currentSample; - - // Interpolate to provide an initial guess for t - var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]); - var guessForT = intervalStart + dist * kSampleStepSize; - - var initialSlope = getSlope(guessForT, mX1, mX2); - if (initialSlope >= NEWTON_MIN_SLOPE) { - return newtonRaphsonIterate(aX, guessForT, mX1, mX2); - } if (initialSlope === 0.0) { - return guessForT; - } - return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); - }, - }; - - return ob; -}()); - -const pooling = (function () { - function double(arr) { - return arr.concat(createSizedArray(arr.length)); - } - - return { - double: double, - }; -}()); - -const poolFactory = (function () { - return function (initialLength, _create, _release) { - var _length = 0; - var _maxLength = initialLength; - var pool = createSizedArray(_maxLength); - - var ob = { - newElement: newElement, - release: release, - }; - - function newElement() { - var element; - if (_length) { - _length -= 1; - element = pool[_length]; - } else { - element = _create(); - } - return element; - } - - function release(element) { - if (_length === _maxLength) { - pool = pooling.double(pool); - _maxLength *= 2; - } - if (_release) { - _release(element); - } - pool[_length] = element; - _length += 1; - } - - return ob; - }; -}()); - -const bezierLengthPool = (function () { - function create() { - return { - addedLength: 0, - percents: createTypedArray('float32', getDefaultCurveSegments()), - lengths: createTypedArray('float32', getDefaultCurveSegments()), - }; - } - return poolFactory(8, create); -}()); - -const segmentsLengthPool = (function () { - function create() { - return { - lengths: [], - totalLength: 0, - }; - } - - function release(element) { - var i; - var len = element.lengths.length; - for (i = 0; i < len; i += 1) { - bezierLengthPool.release(element.lengths[i]); - } - element.lengths.length = 0; - } - - return poolFactory(8, create, release); -}()); - -function bezFunction() { - var math = Math; - - function pointOnLine2D(x1, y1, x2, y2, x3, y3) { - var det1 = (x1 * y2) + (y1 * x3) + (x2 * y3) - (x3 * y2) - (y3 * x1) - (x2 * y1); - return det1 > -0.001 && det1 < 0.001; - } - - function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) { - if (z1 === 0 && z2 === 0 && z3 === 0) { - return pointOnLine2D(x1, y1, x2, y2, x3, y3); - } - var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2)); - var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2)); - var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2)); - var diffDist; - if (dist1 > dist2) { - if (dist1 > dist3) { - diffDist = dist1 - dist2 - dist3; - } else { - diffDist = dist3 - dist2 - dist1; - } - } else if (dist3 > dist2) { - diffDist = dist3 - dist2 - dist1; - } else { - diffDist = dist2 - dist1 - dist3; - } - return diffDist > -0.0001 && diffDist < 0.0001; - } - - var getBezierLength = (function () { - return function (pt1, pt2, pt3, pt4) { - var curveSegments = getDefaultCurveSegments(); - var k; - var i; - var len; - var ptCoord; - var perc; - var addedLength = 0; - var ptDistance; - var point = []; - var lastPoint = []; - var lengthData = bezierLengthPool.newElement(); - len = pt3.length; - for (k = 0; k < curveSegments; k += 1) { - perc = k / (curveSegments - 1); - ptDistance = 0; - for (i = 0; i < len; i += 1) { - ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i]; - point[i] = ptCoord; - if (lastPoint[i] !== null) { - ptDistance += bmPow(point[i] - lastPoint[i], 2); - } - lastPoint[i] = point[i]; - } - if (ptDistance) { - ptDistance = bmSqrt(ptDistance); - addedLength += ptDistance; - } - lengthData.percents[k] = perc; - lengthData.lengths[k] = addedLength; - } - lengthData.addedLength = addedLength; - return lengthData; - }; - }()); - - function getSegmentsLength(shapeData) { - var segmentsLength = segmentsLengthPool.newElement(); - var closed = shapeData.c; - var pathV = shapeData.v; - var pathO = shapeData.o; - var pathI = shapeData.i; - var i; - var len = shapeData._length; - var lengths = segmentsLength.lengths; - var totalLength = 0; - for (i = 0; i < len - 1; i += 1) { - lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]); - totalLength += lengths[i].addedLength; - } - if (closed && len) { - lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]); - totalLength += lengths[i].addedLength; - } - segmentsLength.totalLength = totalLength; - return segmentsLength; - } - - function BezierData(length) { - this.segmentLength = 0; - this.points = new Array(length); - } - - function PointData(partial, point) { - this.partialLength = partial; - this.point = point; - } - - var buildBezierData = (function () { - var storedData = {}; - - return function (pt1, pt2, pt3, pt4) { - var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\./g, 'p'); - if (!storedData[bezierName]) { - var curveSegments = getDefaultCurveSegments(); - var k; - var i; - var len; - var ptCoord; - var perc; - var addedLength = 0; - var ptDistance; - var point; - var lastPoint = null; - if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) { - curveSegments = 2; - } - var bezierData = new BezierData(curveSegments); - len = pt3.length; - for (k = 0; k < curveSegments; k += 1) { - point = createSizedArray(len); - perc = k / (curveSegments - 1); - ptDistance = 0; - for (i = 0; i < len; i += 1) { - ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i]; - point[i] = ptCoord; - if (lastPoint !== null) { - ptDistance += bmPow(point[i] - lastPoint[i], 2); - } - } - ptDistance = bmSqrt(ptDistance); - addedLength += ptDistance; - bezierData.points[k] = new PointData(ptDistance, point); - lastPoint = point; - } - bezierData.segmentLength = addedLength; - storedData[bezierName] = bezierData; - } - return storedData[bezierName]; - }; - }()); - - function getDistancePerc(perc, bezierData) { - var percents = bezierData.percents; - var lengths = bezierData.lengths; - var len = percents.length; - var initPos = bmFloor((len - 1) * perc); - var lengthPos = perc * bezierData.addedLength; - var lPerc = 0; - if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) { - return percents[initPos]; - } - var dir = lengths[initPos] > lengthPos ? -1 : 1; - var flag = true; - while (flag) { - if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) { - lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]); - flag = false; - } else { - initPos += dir; - } - if (initPos < 0 || initPos >= len - 1) { - // FIX for TypedArrays that don't store floating point values with enough accuracy - if (initPos === len - 1) { - return percents[initPos]; - } - flag = false; - } - } - return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc; - } - - function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) { - var t1 = getDistancePerc(percent, bezierData); - var u1 = 1 - t1; - var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000; - var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000; - return [ptX, ptY]; - } - - var bezierSegmentPoints = createTypedArray('float32', 8); - - function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) { - if (startPerc < 0) { - startPerc = 0; - } else if (startPerc > 1) { - startPerc = 1; - } - var t0 = getDistancePerc(startPerc, bezierData); - endPerc = endPerc > 1 ? 1 : endPerc; - var t1 = getDistancePerc(endPerc, bezierData); - var i; - var len = pt1.length; - var u0 = 1 - t0; - var u1 = 1 - t1; - var u0u0u0 = u0 * u0 * u0; - var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase - var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase - var t0t0t0 = t0 * t0 * t0; - // - var u0u0u1 = u0 * u0 * u1; - var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase - var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase - var t0t0t1 = t0 * t0 * t1; - // - var u0u1u1 = u0 * u1 * u1; - var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase - var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase - var t0t1t1 = t0 * t1 * t1; - // - var u1u1u1 = u1 * u1 * u1; - var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase - var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase - var t1t1t1 = t1 * t1 * t1; - for (i = 0; i < len; i += 1) { - bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase - bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase - bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase - bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase - } - - return bezierSegmentPoints; - } - - return { - getSegmentsLength: getSegmentsLength, - getNewSegment: getNewSegment, - getPointInSegment: getPointInSegment, - buildBezierData: buildBezierData, - pointOnLine2D: pointOnLine2D, - pointOnLine3D: pointOnLine3D, - }; -} - -const bez = bezFunction(); - -const PropertyFactory = (function () { - var initFrame = initialDefaultFrame; - var mathAbs = Math.abs; - - function interpolateValue(frameNum, caching) { - var offsetTime = this.offsetTime; - var newValue; - if (this.propType === 'multidimensional') { - newValue = createTypedArray('float32', this.pv.length); - } - var iterationIndex = caching.lastIndex; - var i = iterationIndex; - var len = this.keyframes.length - 1; - var flag = true; - var keyData; - var nextKeyData; - var keyframeMetadata; - - while (flag) { - keyData = this.keyframes[i]; - nextKeyData = this.keyframes[i + 1]; - if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) { - if (keyData.h) { - keyData = nextKeyData; - } - iterationIndex = 0; - break; - } - if ((nextKeyData.t - offsetTime) > frameNum) { - iterationIndex = i; - break; - } - if (i < len - 1) { - i += 1; - } else { - iterationIndex = 0; - flag = false; - } - } - keyframeMetadata = this.keyframesMetadata[i] || {}; - - var k; - var kLen; - var perc; - var jLen; - var j; - var fnc; - var nextKeyTime = nextKeyData.t - offsetTime; - var keyTime = keyData.t - offsetTime; - var endValue; - if (keyData.to) { - if (!keyframeMetadata.bezierData) { - keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti); - } - var bezierData = keyframeMetadata.bezierData; - if (frameNum >= nextKeyTime || frameNum < keyTime) { - var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0; - kLen = bezierData.points[ind].point.length; - for (k = 0; k < kLen; k += 1) { - newValue[k] = bezierData.points[ind].point[k]; - } - // caching._lastKeyframeIndex = -1; - } else { - if (keyframeMetadata.__fnct) { - fnc = keyframeMetadata.__fnct; - } else { - fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get; - keyframeMetadata.__fnct = fnc; - } - perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime)); - var distanceInLine = bezierData.segmentLength * perc; - - var segmentPerc; - var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0; - j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0; - flag = true; - jLen = bezierData.points.length; - while (flag) { - addedLength += bezierData.points[j].partialLength; - if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) { - kLen = bezierData.points[j].point.length; - for (k = 0; k < kLen; k += 1) { - newValue[k] = bezierData.points[j].point[k]; - } - break; - } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) { - segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength; - kLen = bezierData.points[j].point.length; - for (k = 0; k < kLen; k += 1) { - newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc; - } - break; - } - if (j < jLen - 1) { - j += 1; - } else { - flag = false; - } - } - caching._lastPoint = j; - caching._lastAddedLength = addedLength - bezierData.points[j].partialLength; - caching._lastKeyframeIndex = i; - } - } else { - var outX; - var outY; - var inX; - var inY; - var keyValue; - len = keyData.s.length; - endValue = nextKeyData.s || keyData.e; - if (this.sh && keyData.h !== 1) { - if (frameNum >= nextKeyTime) { - newValue[0] = endValue[0]; - newValue[1] = endValue[1]; - newValue[2] = endValue[2]; - } else if (frameNum <= keyTime) { - newValue[0] = keyData.s[0]; - newValue[1] = keyData.s[1]; - newValue[2] = keyData.s[2]; - } else { - var quatStart = createQuaternion(keyData.s); - var quatEnd = createQuaternion(endValue); - var time = (frameNum - keyTime) / (nextKeyTime - keyTime); - quaternionToEuler(newValue, slerp(quatStart, quatEnd, time)); - } - } else { - for (i = 0; i < len; i += 1) { - if (keyData.h !== 1) { - if (frameNum >= nextKeyTime) { - perc = 1; - } else if (frameNum < keyTime) { - perc = 0; - } else { - if (keyData.o.x.constructor === Array) { - if (!keyframeMetadata.__fnct) { - keyframeMetadata.__fnct = []; - } - if (!keyframeMetadata.__fnct[i]) { - outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i]; - outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i]; - inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i]; - inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i]; - fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get; - keyframeMetadata.__fnct[i] = fnc; - } else { - fnc = keyframeMetadata.__fnct[i]; - } - } else if (!keyframeMetadata.__fnct) { - outX = keyData.o.x; - outY = keyData.o.y; - inX = keyData.i.x; - inY = keyData.i.y; - fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get; - keyData.keyframeMetadata = fnc; - } else { - fnc = keyframeMetadata.__fnct; - } - perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime)); - } - } - - endValue = nextKeyData.s || keyData.e; - keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc; - - if (this.propType === 'multidimensional') { - newValue[i] = keyValue; - } else { - newValue = keyValue; - } - } - } - } - caching.lastIndex = iterationIndex; - return newValue; - } - - // based on @Toji's https://github.com/toji/gl-matrix/ - function slerp(a, b, t) { - var out = []; - var ax = a[0]; - var ay = a[1]; - var az = a[2]; - var aw = a[3]; - var bx = b[0]; - var by = b[1]; - var bz = b[2]; - var bw = b[3]; - - var omega; - var cosom; - var sinom; - var scale0; - var scale1; - - cosom = ax * bx + ay * by + az * bz + aw * bw; - if (cosom < 0.0) { - cosom = -cosom; - bx = -bx; - by = -by; - bz = -bz; - bw = -bw; - } - if ((1.0 - cosom) > 0.000001) { - omega = Math.acos(cosom); - sinom = Math.sin(omega); - scale0 = Math.sin((1.0 - t) * omega) / sinom; - scale1 = Math.sin(t * omega) / sinom; - } else { - scale0 = 1.0 - t; - scale1 = t; - } - out[0] = scale0 * ax + scale1 * bx; - out[1] = scale0 * ay + scale1 * by; - out[2] = scale0 * az + scale1 * bz; - out[3] = scale0 * aw + scale1 * bw; - - return out; - } - - function quaternionToEuler(out, quat) { - var qx = quat[0]; - var qy = quat[1]; - var qz = quat[2]; - var qw = quat[3]; - var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz); - var attitude = Math.asin(2 * qx * qy + 2 * qz * qw); - var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz); - out[0] = heading / degToRads; - out[1] = attitude / degToRads; - out[2] = bank / degToRads; - } - - function createQuaternion(values) { - var heading = values[0] * degToRads; - var attitude = values[1] * degToRads; - var bank = values[2] * degToRads; - var c1 = Math.cos(heading / 2); - var c2 = Math.cos(attitude / 2); - var c3 = Math.cos(bank / 2); - var s1 = Math.sin(heading / 2); - var s2 = Math.sin(attitude / 2); - var s3 = Math.sin(bank / 2); - var w = c1 * c2 * c3 - s1 * s2 * s3; - var x = s1 * s2 * c3 + c1 * c2 * s3; - var y = s1 * c2 * c3 + c1 * s2 * s3; - var z = c1 * s2 * c3 - s1 * c2 * s3; - - return [x, y, z, w]; - } - - function getValueAtCurrentTime() { - var frameNum = this.comp.renderedFrame - this.offsetTime; - var initTime = this.keyframes[0].t - this.offsetTime; - var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime; - if (!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))) { - if (this._caching.lastFrame >= frameNum) { - this._caching._lastKeyframeIndex = -1; - this._caching.lastIndex = 0; - } - - var renderResult = this.interpolateValue(frameNum, this._caching); - this.pv = renderResult; - } - this._caching.lastFrame = frameNum; - return this.pv; - } - - function setVValue(val) { - var multipliedValue; - if (this.propType === 'unidimensional') { - multipliedValue = val * this.mult; - if (mathAbs(this.v - multipliedValue) > 0.00001) { - this.v = multipliedValue; - this._mdf = true; - } - } else { - var i = 0; - var len = this.v.length; - while (i < len) { - multipliedValue = val[i] * this.mult; - if (mathAbs(this.v[i] - multipliedValue) > 0.00001) { - this.v[i] = multipliedValue; - this._mdf = true; - } - i += 1; - } - } - } - - function processEffectsSequence() { - if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) { - return; - } - if (this.lock) { - this.setVValue(this.pv); - return; - } - this.lock = true; - this._mdf = this._isFirstFrame; - var i; - var len = this.effectsSequence.length; - var finalValue = this.kf ? this.pv : this.data.k; - for (i = 0; i < len; i += 1) { - finalValue = this.effectsSequence[i](finalValue); - } - this.setVValue(finalValue); - this._isFirstFrame = false; - this.lock = false; - this.frameId = this.elem.globalData.frameId; - } - - function addEffect(effectFunction) { - this.effectsSequence.push(effectFunction); - this.container.addDynamicProperty(this); - } - - function ValueProperty(elem, data, mult, container) { - this.propType = 'unidimensional'; - this.mult = mult || 1; - this.data = data; - this.v = mult ? data.k * mult : data.k; - this.pv = data.k; - this._mdf = false; - this.elem = elem; - this.container = container; - this.comp = elem.comp; - this.k = false; - this.kf = false; - this.vel = 0; - this.effectsSequence = []; - this._isFirstFrame = true; - this.getValue = processEffectsSequence; - this.setVValue = setVValue; - this.addEffect = addEffect; - } - - function MultiDimensionalProperty(elem, data, mult, container) { - this.propType = 'multidimensional'; - this.mult = mult || 1; - this.data = data; - this._mdf = false; - this.elem = elem; - this.container = container; - this.comp = elem.comp; - this.k = false; - this.kf = false; - this.frameId = -1; - var i; - var len = data.k.length; - this.v = createTypedArray('float32', len); - this.pv = createTypedArray('float32', len); - this.vel = createTypedArray('float32', len); - for (i = 0; i < len; i += 1) { - this.v[i] = data.k[i] * this.mult; - this.pv[i] = data.k[i]; - } - this._isFirstFrame = true; - this.effectsSequence = []; - this.getValue = processEffectsSequence; - this.setVValue = setVValue; - this.addEffect = addEffect; - } - - function KeyframedValueProperty(elem, data, mult, container) { - this.propType = 'unidimensional'; - this.keyframes = data.k; - this.keyframesMetadata = []; - this.offsetTime = elem.data.st; - this.frameId = -1; - this._caching = { - lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1, - }; - this.k = true; - this.kf = true; - this.data = data; - this.mult = mult || 1; - this.elem = elem; - this.container = container; - this.comp = elem.comp; - this.v = initFrame; - this.pv = initFrame; - this._isFirstFrame = true; - this.getValue = processEffectsSequence; - this.setVValue = setVValue; - this.interpolateValue = interpolateValue; - this.effectsSequence = [getValueAtCurrentTime.bind(this)]; - this.addEffect = addEffect; - } - - function KeyframedMultidimensionalProperty(elem, data, mult, container) { - this.propType = 'multidimensional'; - var i; - var len = data.k.length; - var s; - var e; - var to; - var ti; - for (i = 0; i < len - 1; i += 1) { - if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) { - s = data.k[i].s; - e = data.k[i + 1].s; - to = data.k[i].to; - ti = data.k[i].ti; - if ((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2]))) { - data.k[i].to = null; - data.k[i].ti = null; - } - if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) { - if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) { - data.k[i].to = null; - data.k[i].ti = null; - } - } - } - } - this.effectsSequence = [getValueAtCurrentTime.bind(this)]; - this.data = data; - this.keyframes = data.k; - this.keyframesMetadata = []; - this.offsetTime = elem.data.st; - this.k = true; - this.kf = true; - this._isFirstFrame = true; - this.mult = mult || 1; - this.elem = elem; - this.container = container; - this.comp = elem.comp; - this.getValue = processEffectsSequence; - this.setVValue = setVValue; - this.interpolateValue = interpolateValue; - this.frameId = -1; - var arrLen = data.k[0].s.length; - this.v = createTypedArray('float32', arrLen); - this.pv = createTypedArray('float32', arrLen); - for (i = 0; i < arrLen; i += 1) { - this.v[i] = initFrame; - this.pv[i] = initFrame; - } - this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) }; - this.addEffect = addEffect; - } - - function getProp(elem, data, type, mult, container) { - var p; - if (!data.k.length) { - p = new ValueProperty(elem, data, mult, container); - } else if (typeof (data.k[0]) === 'number') { - p = new MultiDimensionalProperty(elem, data, mult, container); - } else { - switch (type) { - case 0: - p = new KeyframedValueProperty(elem, data, mult, container); - break; - case 1: - p = new KeyframedMultidimensionalProperty(elem, data, mult, container); - break; - default: - break; - } - } - if (p.effectsSequence.length) { - container.addDynamicProperty(p); - } - return p; - } - - var ob = { - getProp: getProp, - }; - return ob; -}()); - -function DynamicPropertyContainer() {} -DynamicPropertyContainer.prototype = { - addDynamicProperty: function (prop) { - if (this.dynamicProperties.indexOf(prop) === -1) { - this.dynamicProperties.push(prop); - this.container.addDynamicProperty(this); - this._isAnimated = true; - } - }, - iterateDynamicProperties: function () { - this._mdf = false; - var i; - var len = this.dynamicProperties.length; - for (i = 0; i < len; i += 1) { - this.dynamicProperties[i].getValue(); - if (this.dynamicProperties[i]._mdf) { - this._mdf = true; - } - } - }, - initDynamicPropertyContainer: function (container) { - this.container = container; - this.dynamicProperties = []; - this._mdf = false; - this._isAnimated = false; - }, -}; - -const pointPool = (function () { - function create() { - return createTypedArray('float32', 2); - } - return poolFactory(8, create); -}()); - -function ShapePath() { - this.c = false; - this._length = 0; - this._maxLength = 8; - this.v = createSizedArray(this._maxLength); - this.o = createSizedArray(this._maxLength); - this.i = createSizedArray(this._maxLength); -} - -ShapePath.prototype.setPathData = function (closed, len) { - this.c = closed; - this.setLength(len); - var i = 0; - while (i < len) { - this.v[i] = pointPool.newElement(); - this.o[i] = pointPool.newElement(); - this.i[i] = pointPool.newElement(); - i += 1; - } -}; - -ShapePath.prototype.setLength = function (len) { - while (this._maxLength < len) { - this.doubleArrayLength(); - } - this._length = len; -}; - -ShapePath.prototype.doubleArrayLength = function () { - this.v = this.v.concat(createSizedArray(this._maxLength)); - this.i = this.i.concat(createSizedArray(this._maxLength)); - this.o = this.o.concat(createSizedArray(this._maxLength)); - this._maxLength *= 2; -}; - -ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) { - var arr; - this._length = Math.max(this._length, pos + 1); - if (this._length >= this._maxLength) { - this.doubleArrayLength(); - } - switch (type) { - case 'v': - arr = this.v; - break; - case 'i': - arr = this.i; - break; - case 'o': - arr = this.o; - break; - default: - arr = []; - break; - } - if (!arr[pos] || (arr[pos] && !replace)) { - arr[pos] = pointPool.newElement(); - } - arr[pos][0] = x; - arr[pos][1] = y; -}; - -ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) { - this.setXYAt(vX, vY, 'v', pos, replace); - this.setXYAt(oX, oY, 'o', pos, replace); - this.setXYAt(iX, iY, 'i', pos, replace); -}; - -ShapePath.prototype.reverse = function () { - var newPath = new ShapePath(); - newPath.setPathData(this.c, this._length); - var vertices = this.v; - var outPoints = this.o; - var inPoints = this.i; - var init = 0; - if (this.c) { - newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false); - init = 1; - } - var cnt = this._length - 1; - var len = this._length; - - var i; - for (i = init; i < len; i += 1) { - newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false); - cnt -= 1; - } - return newPath; -}; - -const shapePool = (function () { - function create() { - return new ShapePath(); - } - - function release(shapePath) { - var len = shapePath._length; - var i; - for (i = 0; i < len; i += 1) { - pointPool.release(shapePath.v[i]); - pointPool.release(shapePath.i[i]); - pointPool.release(shapePath.o[i]); - shapePath.v[i] = null; - shapePath.i[i] = null; - shapePath.o[i] = null; - } - shapePath._length = 0; - shapePath.c = false; - } - - function clone(shape) { - var cloned = factory.newElement(); - var i; - var len = shape._length === undefined ? shape.v.length : shape._length; - cloned.setLength(len); - cloned.c = shape.c; - - for (i = 0; i < len; i += 1) { - cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i); - } - return cloned; - } - - var factory = poolFactory(4, create, release); - factory.clone = clone; - - return factory; -}()); - -function ShapeCollection() { - this._length = 0; - this._maxLength = 4; - this.shapes = createSizedArray(this._maxLength); -} - -ShapeCollection.prototype.addShape = function (shapeData) { - if (this._length === this._maxLength) { - this.shapes = this.shapes.concat(createSizedArray(this._maxLength)); - this._maxLength *= 2; - } - this.shapes[this._length] = shapeData; - this._length += 1; -}; - -ShapeCollection.prototype.releaseShapes = function () { - var i; - for (i = 0; i < this._length; i += 1) { - shapePool.release(this.shapes[i]); - } - this._length = 0; -}; - -const shapeCollectionPool = (function () { - var ob = { - newShapeCollection: newShapeCollection, - release: release, - }; - - var _length = 0; - var _maxLength = 4; - var pool = createSizedArray(_maxLength); - - function newShapeCollection() { - var shapeCollection; - if (_length) { - _length -= 1; - shapeCollection = pool[_length]; - } else { - shapeCollection = new ShapeCollection(); - } - return shapeCollection; - } - - function release(shapeCollection) { - var i; - var len = shapeCollection._length; - for (i = 0; i < len; i += 1) { - shapePool.release(shapeCollection.shapes[i]); - } - shapeCollection._length = 0; - - if (_length === _maxLength) { - pool = pooling.double(pool); - _maxLength *= 2; - } - pool[_length] = shapeCollection; - _length += 1; - } - - return ob; -}()); - -const ShapePropertyFactory = (function () { - var initFrame = -999999; - - function interpolateShape(frameNum, previousValue, caching) { - var iterationIndex = caching.lastIndex; - var keyPropS; - var keyPropE; - var isHold; - var j; - var k; - var jLen; - var kLen; - var perc; - var vertexValue; - var kf = this.keyframes; - if (frameNum < kf[0].t - this.offsetTime) { - keyPropS = kf[0].s[0]; - isHold = true; - iterationIndex = 0; - } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) { - keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0]; - /* if(kf[kf.length - 1].s){ - keyPropS = kf[kf.length - 1].s[0]; - }else{ - keyPropS = kf[kf.length - 2].e[0]; - } */ - isHold = true; - } else { - var i = iterationIndex; - var len = kf.length - 1; - var flag = true; - var keyData; - var nextKeyData; - var keyframeMetadata; - while (flag) { - keyData = kf[i]; - nextKeyData = kf[i + 1]; - if ((nextKeyData.t - this.offsetTime) > frameNum) { - break; - } - if (i < len - 1) { - i += 1; - } else { - flag = false; - } - } - keyframeMetadata = this.keyframesMetadata[i] || {}; - isHold = keyData.h === 1; - iterationIndex = i; - if (!isHold) { - if (frameNum >= nextKeyData.t - this.offsetTime) { - perc = 1; - } else if (frameNum < keyData.t - this.offsetTime) { - perc = 0; - } else { - var fnc; - if (keyframeMetadata.__fnct) { - fnc = keyframeMetadata.__fnct; - } else { - fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get; - keyframeMetadata.__fnct = fnc; - } - perc = fnc((frameNum - (keyData.t - this.offsetTime)) / ((nextKeyData.t - this.offsetTime) - (keyData.t - this.offsetTime))); - } - keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0]; - } - keyPropS = keyData.s[0]; - } - jLen = previousValue._length; - kLen = keyPropS.i[0].length; - caching.lastIndex = iterationIndex; - - for (j = 0; j < jLen; j += 1) { - for (k = 0; k < kLen; k += 1) { - vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc; - previousValue.i[j][k] = vertexValue; - vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc; - previousValue.o[j][k] = vertexValue; - vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc; - previousValue.v[j][k] = vertexValue; - } - } - } - - function interpolateShapeCurrentTime() { - var frameNum = this.comp.renderedFrame - this.offsetTime; - var initTime = this.keyframes[0].t - this.offsetTime; - var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime; - var lastFrame = this._caching.lastFrame; - if (!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))) { - /// / - this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0; - this.interpolateShape(frameNum, this.pv, this._caching); - /// / - } - this._caching.lastFrame = frameNum; - return this.pv; - } - - function resetShape() { - this.paths = this.localShapeCollection; - } - - function shapesEqual(shape1, shape2) { - if (shape1._length !== shape2._length || shape1.c !== shape2.c) { - return false; - } - var i; - var len = shape1._length; - for (i = 0; i < len; i += 1) { - if (shape1.v[i][0] !== shape2.v[i][0] - || shape1.v[i][1] !== shape2.v[i][1] - || shape1.o[i][0] !== shape2.o[i][0] - || shape1.o[i][1] !== shape2.o[i][1] - || shape1.i[i][0] !== shape2.i[i][0] - || shape1.i[i][1] !== shape2.i[i][1]) { - return false; - } - } - return true; - } - - function setVValue(newPath) { - if (!shapesEqual(this.v, newPath)) { - this.v = shapePool.clone(newPath); - this.localShapeCollection.releaseShapes(); - this.localShapeCollection.addShape(this.v); - this._mdf = true; - this.paths = this.localShapeCollection; - } - } - - function processEffectsSequence() { - if (this.elem.globalData.frameId === this.frameId) { - return; - } if (!this.effectsSequence.length) { - this._mdf = false; - return; - } - if (this.lock) { - this.setVValue(this.pv); - return; - } - this.lock = true; - this._mdf = false; - var finalValue; - if (this.kf) { - finalValue = this.pv; - } else if (this.data.ks) { - finalValue = this.data.ks.k; - } else { - finalValue = this.data.pt.k; - } - var i; - var len = this.effectsSequence.length; - for (i = 0; i < len; i += 1) { - finalValue = this.effectsSequence[i](finalValue); - } - this.setVValue(finalValue); - this.lock = false; - this.frameId = this.elem.globalData.frameId; - } - - function ShapeProperty(elem, data, type) { - this.propType = 'shape'; - this.comp = elem.comp; - this.container = elem; - this.elem = elem; - this.data = data; - this.k = false; - this.kf = false; - this._mdf = false; - var pathData = type === 3 ? data.pt.k : data.ks.k; - this.v = shapePool.clone(pathData); - this.pv = shapePool.clone(this.v); - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.paths = this.localShapeCollection; - this.paths.addShape(this.v); - this.reset = resetShape; - this.effectsSequence = []; - } - - function addEffect(effectFunction) { - this.effectsSequence.push(effectFunction); - this.container.addDynamicProperty(this); - } - - ShapeProperty.prototype.interpolateShape = interpolateShape; - ShapeProperty.prototype.getValue = processEffectsSequence; - ShapeProperty.prototype.setVValue = setVValue; - ShapeProperty.prototype.addEffect = addEffect; - - function KeyframedShapeProperty(elem, data, type) { - this.propType = 'shape'; - this.comp = elem.comp; - this.elem = elem; - this.container = elem; - this.offsetTime = elem.data.st; - this.keyframes = type === 3 ? data.pt.k : data.ks.k; - this.keyframesMetadata = []; - this.k = true; - this.kf = true; - var len = this.keyframes[0].s[0].i.length; - this.v = shapePool.newElement(); - this.v.setPathData(this.keyframes[0].s[0].c, len); - this.pv = shapePool.clone(this.v); - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.paths = this.localShapeCollection; - this.paths.addShape(this.v); - this.lastFrame = initFrame; - this.reset = resetShape; - this._caching = { lastFrame: initFrame, lastIndex: 0 }; - this.effectsSequence = [interpolateShapeCurrentTime.bind(this)]; - } - KeyframedShapeProperty.prototype.getValue = processEffectsSequence; - KeyframedShapeProperty.prototype.interpolateShape = interpolateShape; - KeyframedShapeProperty.prototype.setVValue = setVValue; - KeyframedShapeProperty.prototype.addEffect = addEffect; - - var EllShapeProperty = (function () { - var cPoint = roundCorner; - - function EllShapePropertyFactory(elem, data) { - this.v = shapePool.newElement(); - this.v.setPathData(true, 4); - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.paths = this.localShapeCollection; - this.localShapeCollection.addShape(this.v); - this.d = data.d; - this.elem = elem; - this.comp = elem.comp; - this.frameId = -1; - this.initDynamicPropertyContainer(elem); - this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); - this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this); - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.k = false; - this.convertEllToPath(); - } - } - - EllShapePropertyFactory.prototype = { - reset: resetShape, - getValue: function () { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - - if (this._mdf) { - this.convertEllToPath(); - } - }, - convertEllToPath: function () { - var p0 = this.p.v[0]; - var p1 = this.p.v[1]; - var s0 = this.s.v[0] / 2; - var s1 = this.s.v[1] / 2; - var _cw = this.d !== 3; - var _v = this.v; - _v.v[0][0] = p0; - _v.v[0][1] = p1 - s1; - _v.v[1][0] = _cw ? p0 + s0 : p0 - s0; - _v.v[1][1] = p1; - _v.v[2][0] = p0; - _v.v[2][1] = p1 + s1; - _v.v[3][0] = _cw ? p0 - s0 : p0 + s0; - _v.v[3][1] = p1; - _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint; - _v.i[0][1] = p1 - s1; - _v.i[1][0] = _cw ? p0 + s0 : p0 - s0; - _v.i[1][1] = p1 - s1 * cPoint; - _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint; - _v.i[2][1] = p1 + s1; - _v.i[3][0] = _cw ? p0 - s0 : p0 + s0; - _v.i[3][1] = p1 + s1 * cPoint; - _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint; - _v.o[0][1] = p1 - s1; - _v.o[1][0] = _cw ? p0 + s0 : p0 - s0; - _v.o[1][1] = p1 + s1 * cPoint; - _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint; - _v.o[2][1] = p1 + s1; - _v.o[3][0] = _cw ? p0 - s0 : p0 + s0; - _v.o[3][1] = p1 - s1 * cPoint; - }, - }; - - extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory); - - return EllShapePropertyFactory; - }()); - - var StarShapeProperty = (function () { - function StarShapePropertyFactory(elem, data) { - this.v = shapePool.newElement(); - this.v.setPathData(true, 0); - this.elem = elem; - this.comp = elem.comp; - this.data = data; - this.frameId = -1; - this.d = data.d; - this.initDynamicPropertyContainer(elem); - if (data.sy === 1) { - this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this); - this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this); - this.convertToPath = this.convertStarToPath; - } else { - this.convertToPath = this.convertPolygonToPath; - } - this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this); - this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); - this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this); - this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this); - this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this); - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.localShapeCollection.addShape(this.v); - this.paths = this.localShapeCollection; - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.k = false; - this.convertToPath(); - } - } - - StarShapePropertyFactory.prototype = { - reset: resetShape, - getValue: function () { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - if (this._mdf) { - this.convertToPath(); - } - }, - convertStarToPath: function () { - var numPts = Math.floor(this.pt.v) * 2; - var angle = (Math.PI * 2) / numPts; - /* this.v.v.length = numPts; - this.v.i.length = numPts; - this.v.o.length = numPts; */ - var longFlag = true; - var longRad = this.or.v; - var shortRad = this.ir.v; - var longRound = this.os.v; - var shortRound = this.is.v; - var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2); - var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2); - var i; - var rad; - var roundness; - var perimSegment; - var currentAng = -Math.PI / 2; - currentAng += this.r.v; - var dir = this.data.d === 3 ? -1 : 1; - this.v._length = 0; - for (i = 0; i < numPts; i += 1) { - rad = longFlag ? longRad : shortRad; - roundness = longFlag ? longRound : shortRound; - perimSegment = longFlag ? longPerimSegment : shortPerimSegment; - var x = rad * Math.cos(currentAng); - var y = rad * Math.sin(currentAng); - var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y); - var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y); - x += +this.p.v[0]; - y += +this.p.v[1]; - this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true); - - /* this.v.v[i] = [x,y]; - this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir]; - this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir]; - this.v._length = numPts; */ - longFlag = !longFlag; - currentAng += angle * dir; - } - }, - convertPolygonToPath: function () { - var numPts = Math.floor(this.pt.v); - var angle = (Math.PI * 2) / numPts; - var rad = this.or.v; - var roundness = this.os.v; - var perimSegment = (2 * Math.PI * rad) / (numPts * 4); - var i; - var currentAng = -Math.PI * 0.5; - var dir = this.data.d === 3 ? -1 : 1; - currentAng += this.r.v; - this.v._length = 0; - for (i = 0; i < numPts; i += 1) { - var x = rad * Math.cos(currentAng); - var y = rad * Math.sin(currentAng); - var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y); - var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y); - x += +this.p.v[0]; - y += +this.p.v[1]; - this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true); - currentAng += angle * dir; - } - this.paths.length = 0; - this.paths[0] = this.v; - }, - - }; - extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory); - - return StarShapePropertyFactory; - }()); - - var RectShapeProperty = (function () { - function RectShapePropertyFactory(elem, data) { - this.v = shapePool.newElement(); - this.v.c = true; - this.localShapeCollection = shapeCollectionPool.newShapeCollection(); - this.localShapeCollection.addShape(this.v); - this.paths = this.localShapeCollection; - this.elem = elem; - this.comp = elem.comp; - this.frameId = -1; - this.d = data.d; - this.initDynamicPropertyContainer(elem); - this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this); - this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this); - this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this); - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.k = false; - this.convertRectToPath(); - } - } - - RectShapePropertyFactory.prototype = { - convertRectToPath: function () { - var p0 = this.p.v[0]; - var p1 = this.p.v[1]; - var v0 = this.s.v[0] / 2; - var v1 = this.s.v[1] / 2; - var round = bmMin(v0, v1, this.r.v); - var cPoint = round * (1 - roundCorner); - this.v._length = 0; - - if (this.d === 2 || this.d === 1) { - this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true); - this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true); - if (round !== 0) { - this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true); - this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true); - this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true); - this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true); - this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true); - this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true); - } else { - this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2); - this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3); - } - } else { - this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true); - if (round !== 0) { - this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true); - this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true); - this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true); - this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true); - this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true); - this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true); - this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true); - } else { - this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true); - this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true); - this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true); - } - } - }, - getValue: function () { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - if (this._mdf) { - this.convertRectToPath(); - } - }, - reset: resetShape, - }; - extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory); - - return RectShapePropertyFactory; - }()); - - function getShapeProp(elem, data, type) { - var prop; - if (type === 3 || type === 4) { - var dataProp = type === 3 ? data.pt : data.ks; - var keys = dataProp.k; - if (keys.length) { - prop = new KeyframedShapeProperty(elem, data, type); - } else { - prop = new ShapeProperty(elem, data, type); - } - } else if (type === 5) { - prop = new RectShapeProperty(elem, data); - } else if (type === 6) { - prop = new EllShapeProperty(elem, data); - } else if (type === 7) { - prop = new StarShapeProperty(elem, data); - } - if (prop.k) { - elem.addDynamicProperty(prop); - } - return prop; - } - - function getConstructorFunction() { - return ShapeProperty; - } - - function getKeyframedConstructorFunction() { - return KeyframedShapeProperty; - } - - var ob = {}; - ob.getShapeProp = getShapeProp; - ob.getConstructorFunction = getConstructorFunction; - ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction; - return ob; -}()); - -/*! - Transformation Matrix v2.0 - (c) Epistemex 2014-2015 - www.epistemex.com - By Ken Fyrstenberg - Contributions by leeoniya. - License: MIT, header required. - */ - -/** - * 2D transformation matrix object initialized with identity matrix. - * - * The matrix can synchronize a canvas context by supplying the context - * as an argument, or later apply current absolute transform to an - * existing context. - * - * All values are handled as floating point values. - * - * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix - * @prop {number} a - scale x - * @prop {number} b - shear y - * @prop {number} c - shear x - * @prop {number} d - scale y - * @prop {number} e - translate x - * @prop {number} f - translate y - * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context - * @constructor - */ - -const Matrix = (function () { - var _cos = Math.cos; - var _sin = Math.sin; - var _tan = Math.tan; - var _rnd = Math.round; - - function reset() { - this.props[0] = 1; - this.props[1] = 0; - this.props[2] = 0; - this.props[3] = 0; - this.props[4] = 0; - this.props[5] = 1; - this.props[6] = 0; - this.props[7] = 0; - this.props[8] = 0; - this.props[9] = 0; - this.props[10] = 1; - this.props[11] = 0; - this.props[12] = 0; - this.props[13] = 0; - this.props[14] = 0; - this.props[15] = 1; - return this; - } - - function rotate(angle) { - if (angle === 0) { - return this; - } - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - } - - function rotateX(angle) { - if (angle === 0) { - return this; - } - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1); - } - - function rotateY(angle) { - if (angle === 0) { - return this; - } - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1); - } - - function rotateZ(angle) { - if (angle === 0) { - return this; - } - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - } - - function shear(sx, sy) { - return this._t(1, sy, sx, 1, 0, 0); - } - - function skew(ax, ay) { - return this.shear(_tan(ax), _tan(ay)); - } - - function skewFromAxis(ax, angle) { - var mCos = _cos(angle); - var mSin = _sin(angle); - return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) - ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) - ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); - // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0); - } - - function scale(sx, sy, sz) { - if (!sz && sz !== 0) { - sz = 1; - } - if (sx === 1 && sy === 1 && sz === 1) { - return this; - } - return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1); - } - - function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) { - this.props[0] = a; - this.props[1] = b; - this.props[2] = c; - this.props[3] = d; - this.props[4] = e; - this.props[5] = f; - this.props[6] = g; - this.props[7] = h; - this.props[8] = i; - this.props[9] = j; - this.props[10] = k; - this.props[11] = l; - this.props[12] = m; - this.props[13] = n; - this.props[14] = o; - this.props[15] = p; - return this; - } - - function translate(tx, ty, tz) { - tz = tz || 0; - if (tx !== 0 || ty !== 0 || tz !== 0) { - return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1); - } - return this; - } - - function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) { - var _p = this.props; - - if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) { - // NOTE: commenting this condition because TurboFan deoptimizes code when present - // if(m2 !== 0 || n2 !== 0 || o2 !== 0){ - _p[12] = _p[12] * a2 + _p[15] * m2; - _p[13] = _p[13] * f2 + _p[15] * n2; - _p[14] = _p[14] * k2 + _p[15] * o2; - _p[15] *= p2; - // } - this._identityCalculated = false; - return this; - } - - var a1 = _p[0]; - var b1 = _p[1]; - var c1 = _p[2]; - var d1 = _p[3]; - var e1 = _p[4]; - var f1 = _p[5]; - var g1 = _p[6]; - var h1 = _p[7]; - var i1 = _p[8]; - var j1 = _p[9]; - var k1 = _p[10]; - var l1 = _p[11]; - var m1 = _p[12]; - var n1 = _p[13]; - var o1 = _p[14]; - var p1 = _p[15]; - - /* matrix order (canvas compatible): - * ace - * bdf - * 001 - */ - _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2; - _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2; - _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2; - _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2; - - _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2; - _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2; - _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2; - _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2; - - _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2; - _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2; - _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2; - _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2; - - _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2; - _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2; - _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2; - _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2; - - this._identityCalculated = false; - return this; - } - - function isIdentity() { - if (!this._identityCalculated) { - this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1); - this._identityCalculated = true; - } - return this._identity; - } - - function equals(matr) { - var i = 0; - while (i < 16) { - if (matr.props[i] !== this.props[i]) { - return false; - } - i += 1; - } - return true; - } - - function clone(matr) { - var i; - for (i = 0; i < 16; i += 1) { - matr.props[i] = this.props[i]; - } - return matr; - } - - function cloneFromProps(props) { - var i; - for (i = 0; i < 16; i += 1) { - this.props[i] = props[i]; - } - } - - function applyToPoint(x, y, z) { - return { - x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], - y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], - z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14], - }; - /* return { - x: x * me.a + y * me.c + me.e, - y: x * me.b + y * me.d + me.f - }; */ - } - function applyToX(x, y, z) { - return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12]; - } - function applyToY(x, y, z) { - return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13]; - } - function applyToZ(x, y, z) { - return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]; - } - - function getInverseMatrix() { - var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4]; - var a = this.props[5] / determinant; - var b = -this.props[1] / determinant; - var c = -this.props[4] / determinant; - var d = this.props[0] / determinant; - var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant; - var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant; - var inverseMatrix = new Matrix(); - inverseMatrix.props[0] = a; - inverseMatrix.props[1] = b; - inverseMatrix.props[4] = c; - inverseMatrix.props[5] = d; - inverseMatrix.props[12] = e; - inverseMatrix.props[13] = f; - return inverseMatrix; - } - - function inversePoint(pt) { - var inverseMatrix = this.getInverseMatrix(); - return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0); - } - - function inversePoints(pts) { - var i; - var len = pts.length; - var retPts = []; - for (i = 0; i < len; i += 1) { - retPts[i] = inversePoint(pts[i]); - } - return retPts; - } - - function applyToTriplePoints(pt1, pt2, pt3) { - var arr = createTypedArray('float32', 6); - if (this.isIdentity()) { - arr[0] = pt1[0]; - arr[1] = pt1[1]; - arr[2] = pt2[0]; - arr[3] = pt2[1]; - arr[4] = pt3[0]; - arr[5] = pt3[1]; - } else { - var p0 = this.props[0]; - var p1 = this.props[1]; - var p4 = this.props[4]; - var p5 = this.props[5]; - var p12 = this.props[12]; - var p13 = this.props[13]; - arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12; - arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13; - arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12; - arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13; - arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12; - arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13; - } - return arr; - } - - function applyToPointArray(x, y, z) { - var arr; - if (this.isIdentity()) { - arr = [x, y, z]; - } else { - arr = [ - x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], - x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], - x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14], - ]; - } - return arr; - } - - function applyToPointStringified(x, y) { - if (this.isIdentity()) { - return x + ',' + y; - } - var _p = this.props; - return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100; - } - - function toCSS() { - // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed. - /* if(this.isIdentity()) { - return ''; - } */ - var i = 0; - var props = this.props; - var cssValue = 'matrix3d('; - var v = 10000; - while (i < 16) { - cssValue += _rnd(props[i] * v) / v; - cssValue += i === 15 ? ')' : ','; - i += 1; - } - return cssValue; - } - - function roundMatrixProperty(val) { - var v = 10000; - if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) { - return _rnd(val * v) / v; - } - return val; - } - - function to2dCSS() { - // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed. - /* if(this.isIdentity()) { - return ''; - } */ - var props = this.props; - var _a = roundMatrixProperty(props[0]); - var _b = roundMatrixProperty(props[1]); - var _c = roundMatrixProperty(props[4]); - var _d = roundMatrixProperty(props[5]); - var _e = roundMatrixProperty(props[12]); - var _f = roundMatrixProperty(props[13]); - return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')'; - } - - return function () { - this.reset = reset; - this.rotate = rotate; - this.rotateX = rotateX; - this.rotateY = rotateY; - this.rotateZ = rotateZ; - this.skew = skew; - this.skewFromAxis = skewFromAxis; - this.shear = shear; - this.scale = scale; - this.setTransform = setTransform; - this.translate = translate; - this.transform = transform; - this.applyToPoint = applyToPoint; - this.applyToX = applyToX; - this.applyToY = applyToY; - this.applyToZ = applyToZ; - this.applyToPointArray = applyToPointArray; - this.applyToTriplePoints = applyToTriplePoints; - this.applyToPointStringified = applyToPointStringified; - this.toCSS = toCSS; - this.to2dCSS = to2dCSS; - this.clone = clone; - this.cloneFromProps = cloneFromProps; - this.equals = equals; - this.inversePoints = inversePoints; - this.inversePoint = inversePoint; - this.getInverseMatrix = getInverseMatrix; - this._t = this.transform; - this.isIdentity = isIdentity; - this._identity = true; - this._identityCalculated = false; - - this.props = createTypedArray('float32', 16); - this.reset(); - }; -}()); - -var standalone = '__[STANDALONE]__'; -var animationData = '__[ANIMATIONDATA]__'; -var renderer = ''; - -function setLocation(href) { - setLocationHref(href); -} - -function searchAnimations() { - if (standalone === true) { - animationManager.searchAnimations(animationData, standalone, renderer); - } else { - animationManager.searchAnimations(); - } -} - -function setSubframeRendering(flag) { - setSubframeEnabled(flag); -} - -function setPrefix(prefix) { - setIdPrefix(prefix); -} - -function loadAnimation(params) { - if (standalone === true) { - params.animationData = JSON.parse(animationData); - } - return animationManager.loadAnimation(params); -} - -function setQuality(value) { - if (typeof value === 'string') { - switch (value) { - case 'high': - setDefaultCurveSegments(200); - break; - default: - case 'medium': - setDefaultCurveSegments(50); - break; - case 'low': - setDefaultCurveSegments(10); - break; - } - } else if (!isNaN(value) && value > 1) { - setDefaultCurveSegments(value); - } - if (getDefaultCurveSegments() >= 50) { - roundValues(false); - } else { - roundValues(true); - } -} - -function inBrowser() { - return typeof navigator !== 'undefined'; -} - -function installPlugin(type, plugin) { - if (type === 'expressions') { - setExpressionsPlugin(plugin); - } -} - -function getFactory(name) { - switch (name) { - case 'propertyFactory': - return PropertyFactory; - case 'shapePropertyFactory': - return ShapePropertyFactory; - case 'matrix': - return Matrix; - default: - return null; - } -} - -lottie.play = animationManager.play; -lottie.pause = animationManager.pause; -lottie.setLocationHref = setLocation; -lottie.togglePause = animationManager.togglePause; -lottie.setSpeed = animationManager.setSpeed; -lottie.setDirection = animationManager.setDirection; -lottie.stop = animationManager.stop; -lottie.searchAnimations = searchAnimations; -lottie.registerAnimation = animationManager.registerAnimation; -lottie.loadAnimation = loadAnimation; -lottie.setSubframeRendering = setSubframeRendering; -lottie.resize = animationManager.resize; -// lottie.start = start; -lottie.goToAndStop = animationManager.goToAndStop; -lottie.destroy = animationManager.destroy; -lottie.setQuality = setQuality; -lottie.inBrowser = inBrowser; -lottie.installPlugin = installPlugin; -lottie.freeze = animationManager.freeze; -lottie.unfreeze = animationManager.unfreeze; -lottie.setVolume = animationManager.setVolume; -lottie.mute = animationManager.mute; -lottie.unmute = animationManager.unmute; -lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations; -lottie.useWebWorker = setWebWorker; -lottie.setIDPrefix = setPrefix; -lottie.__getFactory = getFactory; -lottie.version = '[[BM_VERSION]]'; - -function checkReady() { - if (document.readyState === 'complete') { - clearInterval(readyStateCheckInterval); - searchAnimations(); - } -} - -function getQueryVariable(variable) { - var vars = queryString.split('&'); - for (var i = 0; i < vars.length; i += 1) { - var pair = vars[i].split('='); - if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq - return decodeURIComponent(pair[1]); - } - } - return null; -} -var queryString = ''; -if (standalone) { - var scripts = document.getElementsByTagName('script'); - var index = scripts.length - 1; - var myScript = scripts[index] || { - src: '', - }; - queryString = myScript.src ? myScript.src.replace(/^[^\?]+\??/, '') : ''; // eslint-disable-line no-useless-escape - renderer = getQueryVariable('renderer'); -} -var readyStateCheckInterval = setInterval(checkReady, 100); - -// this adds bodymovin to the window object for backwards compatibility -try { - if (!(typeof exports === 'object' && typeof module !== 'undefined') - && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef - ) { - window.bodymovin = lottie; - } -} catch (err) { - // -} - -const ShapeModifiers = (function () { - var ob = {}; - var modifiers = {}; - ob.registerModifier = registerModifier; - ob.getModifier = getModifier; - - function registerModifier(nm, factory) { - if (!modifiers[nm]) { - modifiers[nm] = factory; - } - } - - function getModifier(nm, elem, data) { - return new modifiers[nm](elem, data); - } - - return ob; -}()); - -function ShapeModifier() {} -ShapeModifier.prototype.initModifierProperties = function () {}; -ShapeModifier.prototype.addShapeToModifier = function () {}; -ShapeModifier.prototype.addShape = function (data) { - if (!this.closed) { - // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick. - data.sh.container.addDynamicProperty(data.sh); - var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() }; - this.shapes.push(shapeData); - this.addShapeToModifier(shapeData); - if (this._isAnimated) { - data.setAsAnimated(); - } - } -}; -ShapeModifier.prototype.init = function (elem, data) { - this.shapes = []; - this.elem = elem; - this.initDynamicPropertyContainer(elem); - this.initModifierProperties(elem, data); - this.frameId = initialDefaultFrame; - this.closed = false; - this.k = false; - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.getValue(true); - } -}; -ShapeModifier.prototype.processKeys = function () { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); -}; - -extendPrototype([DynamicPropertyContainer], ShapeModifier); - -function TrimModifier() { -} -extendPrototype([ShapeModifier], TrimModifier); -TrimModifier.prototype.initModifierProperties = function (elem, data) { - this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this); - this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this); - this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this); - this.sValue = 0; - this.eValue = 0; - this.getValue = this.processKeys; - this.m = data.m; - this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length; -}; - -TrimModifier.prototype.addShapeToModifier = function (shapeData) { - shapeData.pathsData = []; -}; - -TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) { - var segments = []; - if (e <= 1) { - segments.push({ - s: s, - e: e, - }); - } else if (s >= 1) { - segments.push({ - s: s - 1, - e: e - 1, - }); - } else { - segments.push({ - s: s, - e: 1, - }); - segments.push({ - s: 0, - e: e - 1, - }); - } - var shapeSegments = []; - var i; - var len = segments.length; - var segmentOb; - for (i = 0; i < len; i += 1) { - segmentOb = segments[i]; - if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) { - var shapeS; - var shapeE; - if (segmentOb.s * totalModifierLength <= addedLength) { - shapeS = 0; - } else { - shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength; - } - if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) { - shapeE = 1; - } else { - shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength); - } - shapeSegments.push([shapeS, shapeE]); - } - } - if (!shapeSegments.length) { - shapeSegments.push([0, 0]); - } - return shapeSegments; -}; - -TrimModifier.prototype.releasePathsData = function (pathsData) { - var i; - var len = pathsData.length; - for (i = 0; i < len; i += 1) { - segmentsLengthPool.release(pathsData[i]); - } - pathsData.length = 0; - return pathsData; -}; - -TrimModifier.prototype.processShapes = function (_isFirstFrame) { - var s; - var e; - if (this._mdf || _isFirstFrame) { - var o = (this.o.v % 360) / 360; - if (o < 0) { - o += 1; - } - if (this.s.v > 1) { - s = 1 + o; - } else if (this.s.v < 0) { - s = 0 + o; - } else { - s = this.s.v + o; - } - if (this.e.v > 1) { - e = 1 + o; - } else if (this.e.v < 0) { - e = 0 + o; - } else { - e = this.e.v + o; - } - - if (s > e) { - var _s = s; - s = e; - e = _s; - } - s = Math.round(s * 10000) * 0.0001; - e = Math.round(e * 10000) * 0.0001; - this.sValue = s; - this.eValue = e; - } else { - s = this.sValue; - e = this.eValue; - } - var shapePaths; - var i; - var len = this.shapes.length; - var j; - var jLen; - var pathsData; - var pathData; - var totalShapeLength; - var totalModifierLength = 0; - - if (e === s) { - for (i = 0; i < len; i += 1) { - this.shapes[i].localShapeCollection.releaseShapes(); - this.shapes[i].shape._mdf = true; - this.shapes[i].shape.paths = this.shapes[i].localShapeCollection; - if (this._mdf) { - this.shapes[i].pathsData.length = 0; - } - } - } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) { - var segments = []; - var shapeData; - var localShapeCollection; - for (i = 0; i < len; i += 1) { - shapeData = this.shapes[i]; - // if shape hasn't changed and trim properties haven't changed, cached previous path can be used - if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) { - shapeData.shape.paths = shapeData.localShapeCollection; - } else { - shapePaths = shapeData.shape.paths; - jLen = shapePaths._length; - totalShapeLength = 0; - if (!shapeData.shape._mdf && shapeData.pathsData.length) { - totalShapeLength = shapeData.totalShapeLength; - } else { - pathsData = this.releasePathsData(shapeData.pathsData); - for (j = 0; j < jLen; j += 1) { - pathData = bez.getSegmentsLength(shapePaths.shapes[j]); - pathsData.push(pathData); - totalShapeLength += pathData.totalLength; - } - shapeData.totalShapeLength = totalShapeLength; - shapeData.pathsData = pathsData; - } - - totalModifierLength += totalShapeLength; - shapeData.shape._mdf = true; - } - } - var shapeS = s; - var shapeE = e; - var addedLength = 0; - var edges; - for (i = len - 1; i >= 0; i -= 1) { - shapeData = this.shapes[i]; - if (shapeData.shape._mdf) { - localShapeCollection = shapeData.localShapeCollection; - localShapeCollection.releaseShapes(); - // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group - if (this.m === 2 && len > 1) { - edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength); - addedLength += shapeData.totalShapeLength; - } else { - edges = [[shapeS, shapeE]]; - } - jLen = edges.length; - for (j = 0; j < jLen; j += 1) { - shapeS = edges[j][0]; - shapeE = edges[j][1]; - segments.length = 0; - if (shapeE <= 1) { - segments.push({ - s: shapeData.totalShapeLength * shapeS, - e: shapeData.totalShapeLength * shapeE, - }); - } else if (shapeS >= 1) { - segments.push({ - s: shapeData.totalShapeLength * (shapeS - 1), - e: shapeData.totalShapeLength * (shapeE - 1), - }); - } else { - segments.push({ - s: shapeData.totalShapeLength * shapeS, - e: shapeData.totalShapeLength, - }); - segments.push({ - s: 0, - e: shapeData.totalShapeLength * (shapeE - 1), - }); - } - var newShapesData = this.addShapes(shapeData, segments[0]); - if (segments[0].s !== segments[0].e) { - if (segments.length > 1) { - var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1]; - if (lastShapeInCollection.c) { - var lastShape = newShapesData.pop(); - this.addPaths(newShapesData, localShapeCollection); - newShapesData = this.addShapes(shapeData, segments[1], lastShape); - } else { - this.addPaths(newShapesData, localShapeCollection); - newShapesData = this.addShapes(shapeData, segments[1]); - } - } - this.addPaths(newShapesData, localShapeCollection); - } - } - shapeData.shape.paths = localShapeCollection; - } - } - } else if (this._mdf) { - for (i = 0; i < len; i += 1) { - // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween. - // Don't remove this even if it's losing cached info. - this.shapes[i].pathsData.length = 0; - this.shapes[i].shape._mdf = true; - } - } -}; - -TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) { - var i; - var len = newPaths.length; - for (i = 0; i < len; i += 1) { - localShapeCollection.addShape(newPaths[i]); - } -}; - -TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) { - shapePath.setXYAt(pt2[0], pt2[1], 'o', pos); - shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1); - if (newShape) { - shapePath.setXYAt(pt1[0], pt1[1], 'v', pos); - } - shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1); -}; - -TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) { - shapePath.setXYAt(points[1], points[5], 'o', pos); - shapePath.setXYAt(points[2], points[6], 'i', pos + 1); - if (newShape) { - shapePath.setXYAt(points[0], points[4], 'v', pos); - } - shapePath.setXYAt(points[3], points[7], 'v', pos + 1); -}; - -TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) { - var pathsData = shapeData.pathsData; - var shapePaths = shapeData.shape.paths.shapes; - var i; - var len = shapeData.shape.paths._length; - var j; - var jLen; - var addedLength = 0; - var currentLengthData; - var segmentCount; - var lengths; - var segment; - var shapes = []; - var initPos; - var newShape = true; - if (!shapePath) { - shapePath = shapePool.newElement(); - segmentCount = 0; - initPos = 0; - } else { - segmentCount = shapePath._length; - initPos = shapePath._length; - } - shapes.push(shapePath); - for (i = 0; i < len; i += 1) { - lengths = pathsData[i].lengths; - shapePath.c = shapePaths[i].c; - jLen = shapePaths[i].c ? lengths.length : lengths.length + 1; - for (j = 1; j < jLen; j += 1) { - currentLengthData = lengths[j - 1]; - if (addedLength + currentLengthData.addedLength < shapeSegment.s) { - addedLength += currentLengthData.addedLength; - shapePath.c = false; - } else if (addedLength > shapeSegment.e) { - shapePath.c = false; - break; - } else { - if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) { - this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape); - newShape = false; - } else { - segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]); - this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); - // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape); - newShape = false; - shapePath.c = false; - } - addedLength += currentLengthData.addedLength; - segmentCount += 1; - } - } - if (shapePaths[i].c && lengths.length) { - currentLengthData = lengths[j - 1]; - if (addedLength <= shapeSegment.e) { - var segmentLength = lengths[j - 1].addedLength; - if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) { - this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape); - newShape = false; - } else { - segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]); - this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); - // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape); - newShape = false; - shapePath.c = false; - } - } else { - shapePath.c = false; - } - addedLength += currentLengthData.addedLength; - segmentCount += 1; - } - if (shapePath._length) { - shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos); - shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1); - } - if (addedLength > shapeSegment.e) { - break; - } - if (i < len - 1) { - shapePath = shapePool.newElement(); - newShape = true; - shapes.push(shapePath); - segmentCount = 0; - } - } - return shapes; -}; - -function PuckerAndBloatModifier() {} -extendPrototype([ShapeModifier], PuckerAndBloatModifier); -PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) { - this.getValue = this.processKeys; - this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this); - this._isAnimated = !!this.amount.effectsSequence.length; -}; - -PuckerAndBloatModifier.prototype.processPath = function (path, amount) { - var percent = amount / 100; - var centerPoint = [0, 0]; - var pathLength = path._length; - var i = 0; - for (i = 0; i < pathLength; i += 1) { - centerPoint[0] += path.v[i][0]; - centerPoint[1] += path.v[i][1]; - } - centerPoint[0] /= pathLength; - centerPoint[1] /= pathLength; - var clonedPath = shapePool.newElement(); - clonedPath.c = path.c; - var vX; - var vY; - var oX; - var oY; - var iX; - var iY; - for (i = 0; i < pathLength; i += 1) { - vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent; - vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent; - oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent; - oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent; - iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent; - iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent; - clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i); - } - return clonedPath; -}; - -PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) { - var shapePaths; - var i; - var len = this.shapes.length; - var j; - var jLen; - var amount = this.amount.v; - - if (amount !== 0) { - var shapeData; - var localShapeCollection; - for (i = 0; i < len; i += 1) { - shapeData = this.shapes[i]; - localShapeCollection = shapeData.localShapeCollection; - if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { - localShapeCollection.releaseShapes(); - shapeData.shape._mdf = true; - shapePaths = shapeData.shape.paths.shapes; - jLen = shapeData.shape.paths._length; - for (j = 0; j < jLen; j += 1) { - localShapeCollection.addShape(this.processPath(shapePaths[j], amount)); - } - } - shapeData.shape.paths = shapeData.localShapeCollection; - } - } - if (!this.dynamicProperties.length) { - this._mdf = false; - } -}; - -const TransformPropertyFactory = (function () { - var defaultVector = [0, 0]; - - function applyToMatrix(mat) { - var _mdf = this._mdf; - this.iterateDynamicProperties(); - this._mdf = this._mdf || _mdf; - if (this.a) { - mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); - } - if (this.s) { - mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]); - } - if (this.sk) { - mat.skewFromAxis(-this.sk.v, this.sa.v); - } - if (this.r) { - mat.rotate(-this.r.v); - } else { - mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]) - .rotateY(this.or.v[1]) - .rotateX(this.or.v[0]); - } - if (this.data.p.s) { - if (this.data.p.z) { - mat.translate(this.px.v, this.py.v, -this.pz.v); - } else { - mat.translate(this.px.v, this.py.v, 0); - } - } else { - mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]); - } - } - function processKeys(forceRender) { - if (this.elem.globalData.frameId === this.frameId) { - return; - } - if (this._isDirty) { - this.precalculateMatrix(); - this._isDirty = false; - } - - this.iterateDynamicProperties(); - - if (this._mdf || forceRender) { - var frameRate; - this.v.cloneFromProps(this.pre.props); - if (this.appliedTransformations < 1) { - this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); - } - if (this.appliedTransformations < 2) { - this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]); - } - if (this.sk && this.appliedTransformations < 3) { - this.v.skewFromAxis(-this.sk.v, this.sa.v); - } - if (this.r && this.appliedTransformations < 4) { - this.v.rotate(-this.r.v); - } else if (!this.r && this.appliedTransformations < 4) { - this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]) - .rotateY(this.or.v[1]) - .rotateX(this.or.v[0]); - } - if (this.autoOriented) { - var v1; - var v2; - frameRate = this.elem.globalData.frameRate; - if (this.p && this.p.keyframes && this.p.getValueAtTime) { - if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) { - v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0); - v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0); - } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) { - v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0); - v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0); - } else { - v1 = this.p.pv; - v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime); - } - } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) { - v1 = []; - v2 = []; - var px = this.px; - var py = this.py; - if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) { - v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0); - v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0); - v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate, 0); - v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate, 0); - } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) { - v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate), 0); - v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate), 0); - v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0); - v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0); - } else { - v1 = [px.pv, py.pv]; - v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime); - v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime); - } - } else { - v2 = defaultVector; - v1 = v2; - } - this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0])); - } - if (this.data.p && this.data.p.s) { - if (this.data.p.z) { - this.v.translate(this.px.v, this.py.v, -this.pz.v); - } else { - this.v.translate(this.px.v, this.py.v, 0); - } - } else { - this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]); - } - } - this.frameId = this.elem.globalData.frameId; - } - - function precalculateMatrix() { - if (!this.a.k) { - this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]); - this.appliedTransformations = 1; - } else { - return; - } - if (!this.s.effectsSequence.length) { - this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]); - this.appliedTransformations = 2; - } else { - return; - } - if (this.sk) { - if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) { - this.pre.skewFromAxis(-this.sk.v, this.sa.v); - this.appliedTransformations = 3; - } else { - return; - } - } - if (this.r) { - if (!this.r.effectsSequence.length) { - this.pre.rotate(-this.r.v); - this.appliedTransformations = 4; - } - } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) { - this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]) - .rotateY(this.or.v[1]) - .rotateX(this.or.v[0]); - this.appliedTransformations = 4; - } - } - - function autoOrient() { - // - // var prevP = this.getValueAtTime(); - } - - function addDynamicProperty(prop) { - this._addDynamicProperty(prop); - this.elem.addDynamicProperty(prop); - this._isDirty = true; - } - - function TransformProperty(elem, data, container) { - this.elem = elem; - this.frameId = -1; - this.propType = 'transform'; - this.data = data; - this.v = new Matrix(); - // Precalculated matrix with non animated properties - this.pre = new Matrix(); - this.appliedTransformations = 0; - this.initDynamicPropertyContainer(container || elem); - if (data.p && data.p.s) { - this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this); - this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this); - if (data.p.z) { - this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this); - } - } else { - this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this); - } - if (data.rx) { - this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this); - this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this); - this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this); - if (data.or.k[0].ti) { - var i; - var len = data.or.k.length; - for (i = 0; i < len; i += 1) { - data.or.k[i].to = null; - data.or.k[i].ti = null; - } - } - this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); - // sh Indicates it needs to be capped between -180 and 180 - this.or.sh = true; - } else { - this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this); - } - if (data.sk) { - this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this); - this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this); - } - this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this); - this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this); - // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes. - if (data.o) { - this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem); - } else { - this.o = { _mdf: false, v: 1 }; - } - this._isDirty = true; - if (!this.dynamicProperties.length) { - this.getValue(true); - } - } - - TransformProperty.prototype = { - applyToMatrix: applyToMatrix, - getValue: processKeys, - precalculateMatrix: precalculateMatrix, - autoOrient: autoOrient, - }; - - extendPrototype([DynamicPropertyContainer], TransformProperty); - TransformProperty.prototype.addDynamicProperty = addDynamicProperty; - TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty; - - function getTransformProperty(elem, data, container) { - return new TransformProperty(elem, data, container); - } - - return { - getTransformProperty: getTransformProperty, - }; -}()); - -function RepeaterModifier() {} -extendPrototype([ShapeModifier], RepeaterModifier); - -RepeaterModifier.prototype.initModifierProperties = function (elem, data) { - this.getValue = this.processKeys; - this.c = PropertyFactory.getProp(elem, data.c, 0, null, this); - this.o = PropertyFactory.getProp(elem, data.o, 0, null, this); - this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this); - this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this); - this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this); - this.data = data; - if (!this.dynamicProperties.length) { - this.getValue(true); - } - this._isAnimated = !!this.dynamicProperties.length; - this.pMatrix = new Matrix(); - this.rMatrix = new Matrix(); - this.sMatrix = new Matrix(); - this.tMatrix = new Matrix(); - this.matrix = new Matrix(); -}; - -RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) { - var dir = inv ? -1 : 1; - var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc); - var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc); - pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]); - rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]); - rMatrix.rotate(-transform.r.v * dir * perc); - rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]); - sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]); - sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY); - sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]); -}; - -RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) { - this.elem = elem; - this.arr = arr; - this.pos = pos; - this.elemsData = elemsData; - this._currentCopies = 0; - this._elements = []; - this._groups = []; - this.frameId = -1; - this.initDynamicPropertyContainer(elem); - this.initModifierProperties(elem, arr[pos]); - while (pos > 0) { - pos -= 1; - // this._elements.unshift(arr.splice(pos,1)[0]); - this._elements.unshift(arr[pos]); - } - if (this.dynamicProperties.length) { - this.k = true; - } else { - this.getValue(true); - } -}; - -RepeaterModifier.prototype.resetElements = function (elements) { - var i; - var len = elements.length; - for (i = 0; i < len; i += 1) { - elements[i]._processed = false; - if (elements[i].ty === 'gr') { - this.resetElements(elements[i].it); - } - } -}; - -RepeaterModifier.prototype.cloneElements = function (elements) { - var newElements = JSON.parse(JSON.stringify(elements)); - this.resetElements(newElements); - return newElements; -}; - -RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) { - var i; - var len = elements.length; - for (i = 0; i < len; i += 1) { - elements[i]._render = renderFlag; - if (elements[i].ty === 'gr') { - this.changeGroupRender(elements[i].it, renderFlag); - } - } -}; - -RepeaterModifier.prototype.processShapes = function (_isFirstFrame) { - var items; - var itemsTransform; - var i; - var dir; - var cont; - var hasReloaded = false; - if (this._mdf || _isFirstFrame) { - var copies = Math.ceil(this.c.v); - if (this._groups.length < copies) { - while (this._groups.length < copies) { - var group = { - it: this.cloneElements(this._elements), - ty: 'gr', - }; - group.it.push({ - a: { a: 0, ix: 1, k: [0, 0] }, nm: 'Transform', o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: 'tr', - }); - - this.arr.splice(0, 0, group); - this._groups.splice(0, 0, group); - this._currentCopies += 1; - } - this.elem.reloadShapes(); - hasReloaded = true; - } - cont = 0; - var renderFlag; - for (i = 0; i <= this._groups.length - 1; i += 1) { - renderFlag = cont < copies; - this._groups[i]._render = renderFlag; - this.changeGroupRender(this._groups[i].it, renderFlag); - if (!renderFlag) { - var elems = this.elemsData[i].it; - var transformData = elems[elems.length - 1]; - if (transformData.transform.op.v !== 0) { - transformData.transform.op._mdf = true; - transformData.transform.op.v = 0; - } else { - transformData.transform.op._mdf = false; - } - } - cont += 1; - } - - this._currentCopies = copies; - /// / - - var offset = this.o.v; - var offsetModulo = offset % 1; - var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset); - var pProps = this.pMatrix.props; - var rProps = this.rMatrix.props; - var sProps = this.sMatrix.props; - this.pMatrix.reset(); - this.rMatrix.reset(); - this.sMatrix.reset(); - this.tMatrix.reset(); - this.matrix.reset(); - var iteration = 0; - - if (offset > 0) { - while (iteration < roundOffset) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false); - iteration += 1; - } - if (offsetModulo) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false); - iteration += offsetModulo; - } - } else if (offset < 0) { - while (iteration > roundOffset) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true); - iteration -= 1; - } - if (offsetModulo) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true); - iteration -= offsetModulo; - } - } - i = this.data.m === 1 ? 0 : this._currentCopies - 1; - dir = this.data.m === 1 ? 1 : -1; - cont = this._currentCopies; - var j; - var jLen; - while (cont) { - items = this.elemsData[i].it; - itemsTransform = items[items.length - 1].transform.mProps.v.props; - jLen = itemsTransform.length; - items[items.length - 1].transform.mProps._mdf = true; - items[items.length - 1].transform.op._mdf = true; - items[items.length - 1].transform.op.v = this._currentCopies === 1 - ? this.so.v - : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1)); - - if (iteration !== 0) { - if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) { - this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false); - } - this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]); - this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]); - this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]); - - for (j = 0; j < jLen; j += 1) { - itemsTransform[j] = this.matrix.props[j]; - } - this.matrix.reset(); - } else { - this.matrix.reset(); - for (j = 0; j < jLen; j += 1) { - itemsTransform[j] = this.matrix.props[j]; - } - } - iteration += 1; - cont -= 1; - i += dir; - } - } else { - cont = this._currentCopies; - i = 0; - dir = 1; - while (cont) { - items = this.elemsData[i].it; - itemsTransform = items[items.length - 1].transform.mProps.v.props; - items[items.length - 1].transform.mProps._mdf = false; - items[items.length - 1].transform.op._mdf = false; - cont -= 1; - i += dir; - } - } - return hasReloaded; -}; - -RepeaterModifier.prototype.addShape = function () {}; - -function RoundCornersModifier() {} -extendPrototype([ShapeModifier], RoundCornersModifier); -RoundCornersModifier.prototype.initModifierProperties = function (elem, data) { - this.getValue = this.processKeys; - this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this); - this._isAnimated = !!this.rd.effectsSequence.length; -}; - -RoundCornersModifier.prototype.processPath = function (path, round) { - var clonedPath = shapePool.newElement(); - clonedPath.c = path.c; - var i; - var len = path._length; - var currentV; - var currentI; - var currentO; - var closerV; - var distance; - var newPosPerc; - var index = 0; - var vX; - var vY; - var oX; - var oY; - var iX; - var iY; - for (i = 0; i < len; i += 1) { - currentV = path.v[i]; - currentO = path.o[i]; - currentI = path.i[i]; - if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) { - if ((i === 0 || i === len - 1) && !path.c) { - clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index); - /* clonedPath.v[index] = currentV; - clonedPath.o[index] = currentO; - clonedPath.i[index] = currentI; */ - index += 1; - } else { - if (i === 0) { - closerV = path.v[len - 1]; - } else { - closerV = path.v[i - 1]; - } - distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2)); - newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0; - iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc; - vX = iX; - iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc; - vY = iY; - oX = vX - (vX - currentV[0]) * roundCorner; - oY = vY - (vY - currentV[1]) * roundCorner; - clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index); - index += 1; - - if (i === len - 1) { - closerV = path.v[0]; - } else { - closerV = path.v[i + 1]; - } - distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2)); - newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0; - oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc; - vX = oX; - oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc; - vY = oY; - iX = vX - (vX - currentV[0]) * roundCorner; - iY = vY - (vY - currentV[1]) * roundCorner; - clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index); - index += 1; - } - } else { - clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index); - index += 1; - } - } - return clonedPath; -}; - -RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) { - var shapePaths; - var i; - var len = this.shapes.length; - var j; - var jLen; - var rd = this.rd.v; - - if (rd !== 0) { - var shapeData; - var localShapeCollection; - for (i = 0; i < len; i += 1) { - shapeData = this.shapes[i]; - localShapeCollection = shapeData.localShapeCollection; - if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) { - localShapeCollection.releaseShapes(); - shapeData.shape._mdf = true; - shapePaths = shapeData.shape.paths.shapes; - jLen = shapeData.shape.paths._length; - for (j = 0; j < jLen; j += 1) { - localShapeCollection.addShape(this.processPath(shapePaths[j], rd)); - } - } - shapeData.shape.paths = shapeData.localShapeCollection; - } - } - if (!this.dynamicProperties.length) { - this._mdf = false; - } -}; - -function getFontProperties(fontData) { - var styles = fontData.fStyle ? fontData.fStyle.split(' ') : []; - - var fWeight = 'normal'; var - fStyle = 'normal'; - var len = styles.length; - var styleName; - for (var i = 0; i < len; i += 1) { - styleName = styles[i].toLowerCase(); - switch (styleName) { - case 'italic': - fStyle = 'italic'; - break; - case 'bold': - fWeight = '700'; - break; - case 'black': - fWeight = '900'; - break; - case 'medium': - fWeight = '500'; - break; - case 'regular': - case 'normal': - fWeight = '400'; - break; - case 'light': - case 'thin': - fWeight = '200'; - break; - default: - break; - } - } - - return { - style: fStyle, - weight: fontData.fWeight || fWeight, - }; -} - -const FontManager = (function () { - var maxWaitingTime = 5000; - var emptyChar = { - w: 0, - size: 0, - shapes: [], - data: { - shapes: [], - }, - }; - var combinedCharacters = []; - // Hindi characters - combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, - 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, - 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]); - - var surrogateModifiers = [ - 'd83cdffb', - 'd83cdffc', - 'd83cdffd', - 'd83cdffe', - 'd83cdfff', - ]; - - var zeroWidthJoiner = [65039, 8205]; - - function trimFontOptions(font) { - var familyArray = font.split(','); - var i; - var len = familyArray.length; - var enabledFamilies = []; - for (i = 0; i < len; i += 1) { - if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') { - enabledFamilies.push(familyArray[i]); - } - } - return enabledFamilies.join(','); - } - - function setUpNode(font, family) { - var parentNode = createTag('span'); - // Node is invisible to screen readers. - parentNode.setAttribute('aria-hidden', true); - parentNode.style.fontFamily = family; - var node = createTag('span'); - // Characters that vary significantly among different fonts - node.innerText = 'giItT1WQy@!-/#'; - // Visible - so we can measure it - but not on the screen - parentNode.style.position = 'absolute'; - parentNode.style.left = '-10000px'; - parentNode.style.top = '-10000px'; - // Large font size makes even subtle changes obvious - parentNode.style.fontSize = '300px'; - // Reset any font properties - parentNode.style.fontVariant = 'normal'; - parentNode.style.fontStyle = 'normal'; - parentNode.style.fontWeight = 'normal'; - parentNode.style.letterSpacing = '0'; - parentNode.appendChild(node); - document.body.appendChild(parentNode); - - // Remember width with no applied web font - var width = node.offsetWidth; - node.style.fontFamily = trimFontOptions(font) + ', ' + family; - return { node: node, w: width, parent: parentNode }; - } - - function checkLoadedFonts() { - var i; - var len = this.fonts.length; - var node; - var w; - var loadedCount = len; - for (i = 0; i < len; i += 1) { - if (this.fonts[i].loaded) { - loadedCount -= 1; - } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) { - this.fonts[i].loaded = true; - } else { - node = this.fonts[i].monoCase.node; - w = this.fonts[i].monoCase.w; - if (node.offsetWidth !== w) { - loadedCount -= 1; - this.fonts[i].loaded = true; - } else { - node = this.fonts[i].sansCase.node; - w = this.fonts[i].sansCase.w; - if (node.offsetWidth !== w) { - loadedCount -= 1; - this.fonts[i].loaded = true; - } - } - if (this.fonts[i].loaded) { - this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent); - this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent); - } - } - } - - if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) { - setTimeout(this.checkLoadedFontsBinded, 20); - } else { - setTimeout(this.setIsLoadedBinded, 10); - } - } - - function createHelper(fontData, def) { - var engine = (document.body && def) ? 'svg' : 'canvas'; - var helper; - var fontProps = getFontProperties(fontData); - if (engine === 'svg') { - var tHelper = createNS('text'); - tHelper.style.fontSize = '100px'; - // tHelper.style.fontFamily = fontData.fFamily; - tHelper.setAttribute('font-family', fontData.fFamily); - tHelper.setAttribute('font-style', fontProps.style); - tHelper.setAttribute('font-weight', fontProps.weight); - tHelper.textContent = '1'; - if (fontData.fClass) { - tHelper.style.fontFamily = 'inherit'; - tHelper.setAttribute('class', fontData.fClass); - } else { - tHelper.style.fontFamily = fontData.fFamily; - } - def.appendChild(tHelper); - helper = tHelper; - } else { - var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d'); - tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily; - helper = tCanvasHelper; - } - function measure(text) { - if (engine === 'svg') { - helper.textContent = text; - return helper.getComputedTextLength(); - } - return helper.measureText(text).width; - } - return { - measureText: measure, - }; - } - - function addFonts(fontData, defs) { - if (!fontData) { - this.isLoaded = true; - return; - } - if (this.chars) { - this.isLoaded = true; - this.fonts = fontData.list; - return; - } - if (!document.body) { - this.isLoaded = true; - fontData.list.forEach((data) => { - data.helper = createHelper(data); - data.cache = {}; - }); - this.fonts = fontData.list; - return; - } - - var fontArr = fontData.list; - var i; - var len = fontArr.length; - var _pendingFonts = len; - for (i = 0; i < len; i += 1) { - var shouldLoadFont = true; - var loadedSelector; - var j; - fontArr[i].loaded = false; - fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace'); - fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif'); - if (!fontArr[i].fPath) { - fontArr[i].loaded = true; - _pendingFonts -= 1; - } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) { - loadedSelector = document.querySelectorAll('style[f-forigin="p"][f-family="' + fontArr[i].fFamily + '"], style[f-origin="3"][f-family="' + fontArr[i].fFamily + '"]'); - - if (loadedSelector.length > 0) { - shouldLoadFont = false; - } - - if (shouldLoadFont) { - var s = createTag('style'); - s.setAttribute('f-forigin', fontArr[i].fOrigin); - s.setAttribute('f-origin', fontArr[i].origin); - s.setAttribute('f-family', fontArr[i].fFamily); - s.type = 'text/css'; - s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + "; font-style: normal; src: url('" + fontArr[i].fPath + "');}"; - defs.appendChild(s); - } - } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) { - loadedSelector = document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'); - - for (j = 0; j < loadedSelector.length; j += 1) { - if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) { - // Font is already loaded - shouldLoadFont = false; - } - } - - if (shouldLoadFont) { - var l = createTag('link'); - l.setAttribute('f-forigin', fontArr[i].fOrigin); - l.setAttribute('f-origin', fontArr[i].origin); - l.type = 'text/css'; - l.rel = 'stylesheet'; - l.href = fontArr[i].fPath; - document.body.appendChild(l); - } - } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) { - loadedSelector = document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'); - - for (j = 0; j < loadedSelector.length; j += 1) { - if (fontArr[i].fPath === loadedSelector[j].src) { - // Font is already loaded - shouldLoadFont = false; - } - } - - if (shouldLoadFont) { - var sc = createTag('link'); - sc.setAttribute('f-forigin', fontArr[i].fOrigin); - sc.setAttribute('f-origin', fontArr[i].origin); - sc.setAttribute('rel', 'stylesheet'); - sc.setAttribute('href', fontArr[i].fPath); - defs.appendChild(sc); - } - } - fontArr[i].helper = createHelper(fontArr[i], defs); - fontArr[i].cache = {}; - this.fonts.push(fontArr[i]); - } - if (_pendingFonts === 0) { - this.isLoaded = true; - } else { - // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas. - // Adding this timeout seems to fix it - setTimeout(this.checkLoadedFonts.bind(this), 100); - } - } - - function addChars(chars) { - if (!chars) { - return; - } - if (!this.chars) { - this.chars = []; - } - var i; - var len = chars.length; - var j; - var jLen = this.chars.length; - var found; - for (i = 0; i < len; i += 1) { - j = 0; - found = false; - while (j < jLen) { - if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) { - found = true; - } - j += 1; - } - if (!found) { - this.chars.push(chars[i]); - jLen += 1; - } - } - } - - function getCharData(char, style, font) { - var i = 0; - var len = this.chars.length; - while (i < len) { - if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) { - return this.chars[i]; - } - i += 1; - } - if (((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char) - && console - && console.warn // eslint-disable-line no-console - && !this._warned - ) { - this._warned = true; - console.warn('Missing character from exported characters list: ', char, style, font); // eslint-disable-line no-console - } - return emptyChar; - } - - function measureText(char, fontName, size) { - var fontData = this.getFontByName(fontName); - var index = char.charCodeAt(0); - if (!fontData.cache[index + 1]) { - var tHelper = fontData.helper; - if (char === ' ') { - var doubleSize = tHelper.measureText('|' + char + '|'); - var singleSize = tHelper.measureText('||'); - fontData.cache[index + 1] = (doubleSize - singleSize) / 100; - } else { - fontData.cache[index + 1] = tHelper.measureText(char) / 100; - } - } - return fontData.cache[index + 1] * size; - } - - function getFontByName(name) { - var i = 0; - var len = this.fonts.length; - while (i < len) { - if (this.fonts[i].fName === name) { - return this.fonts[i]; - } - i += 1; - } - return this.fonts[0]; - } - - function isModifier(firstCharCode, secondCharCode) { - var sum = firstCharCode.toString(16) + secondCharCode.toString(16); - return surrogateModifiers.indexOf(sum) !== -1; - } - - function isZeroWidthJoiner(firstCharCode, secondCharCode) { - if (!secondCharCode) { - return firstCharCode === zeroWidthJoiner[1]; - } - return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1]; - } - - function isCombinedCharacter(char) { - return combinedCharacters.indexOf(char) !== -1; - } - - function setIsLoaded() { - this.isLoaded = true; - } - - var Font = function () { - this.fonts = []; - this.chars = null; - this.typekitLoaded = 0; - this.isLoaded = false; - this._warned = false; - this.initTime = Date.now(); - this.setIsLoadedBinded = this.setIsLoaded.bind(this); - this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this); - }; - Font.isModifier = isModifier; - Font.isZeroWidthJoiner = isZeroWidthJoiner; - Font.isCombinedCharacter = isCombinedCharacter; - - var fontPrototype = { - addChars: addChars, - addFonts: addFonts, - getCharData: getCharData, - getFontByName: getFontByName, - measureText: measureText, - checkLoadedFonts: checkLoadedFonts, - setIsLoaded: setIsLoaded, - }; - - Font.prototype = fontPrototype; - - return Font; -}()); - -function RenderableElement() { - -} - -RenderableElement.prototype = { - initRenderable: function () { - // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange - this.isInRange = false; - // layer's display state - this.hidden = false; - // If layer's transparency equals 0, it can be hidden - this.isTransparent = false; - // list of animated components - this.renderableComponents = []; - }, - addRenderableComponent: function (component) { - if (this.renderableComponents.indexOf(component) === -1) { - this.renderableComponents.push(component); - } - }, - removeRenderableComponent: function (component) { - if (this.renderableComponents.indexOf(component) !== -1) { - this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1); - } - }, - prepareRenderableFrame: function (num) { - this.checkLayerLimits(num); - }, - checkTransparency: function () { - if (this.finalTransform.mProp.o.v <= 0) { - if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) { - this.isTransparent = true; - this.hide(); - } - } else if (this.isTransparent) { - this.isTransparent = false; - this.show(); - } - }, - /** - * @function - * Initializes frame related properties. - * - * @param {number} num - * current frame number in Layer's time - * - */ - checkLayerLimits: function (num) { - if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) { - if (this.isInRange !== true) { - this.globalData._mdf = true; - this._mdf = true; - this.isInRange = true; - this.show(); - } - } else if (this.isInRange !== false) { - this.globalData._mdf = true; - this.isInRange = false; - this.hide(); - } - }, - renderRenderable: function () { - var i; - var len = this.renderableComponents.length; - for (i = 0; i < len; i += 1) { - this.renderableComponents[i].renderFrame(this._isFirstFrame); - } - /* this.maskManager.renderFrame(this.finalTransform.mat); - this.renderableEffectsManager.renderFrame(this._isFirstFrame); */ - }, - sourceRectAtTime: function () { - return { - top: 0, - left: 0, - width: 100, - height: 100, - }; - }, - getLayerSize: function () { - if (this.data.ty === 5) { - return { w: this.data.textData.width, h: this.data.textData.height }; - } - return { w: this.data.width, h: this.data.height }; - }, -}; - -const MaskManagerInterface = (function () { - function MaskInterface(mask, data) { - this._mask = mask; - this._data = data; - } - Object.defineProperty(MaskInterface.prototype, 'maskPath', { - get: function () { - if (this._mask.prop.k) { - this._mask.prop.getValue(); - } - return this._mask.prop; - }, - }); - Object.defineProperty(MaskInterface.prototype, 'maskOpacity', { - get: function () { - if (this._mask.op.k) { - this._mask.op.getValue(); - } - return this._mask.op.v * 100; - }, - }); - - var MaskManager = function (maskManager) { - var _masksInterfaces = createSizedArray(maskManager.viewData.length); - var i; - var len = maskManager.viewData.length; - for (i = 0; i < len; i += 1) { - _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]); - } - - var maskFunction = function (name) { - i = 0; - while (i < len) { - if (maskManager.masksProperties[i].nm === name) { - return _masksInterfaces[i]; - } - i += 1; - } - return null; - }; - return maskFunction; - }; - return MaskManager; -}()); - -const ExpressionPropertyInterface = (function () { - var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 }; - var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 }; - - function completeProperty(expressionValue, property, type) { - Object.defineProperty(expressionValue, 'velocity', { - get: function () { - return property.getVelocityAtTime(property.comp.currentFrame); - }, - }); - expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0; - expressionValue.key = function (pos) { - if (!expressionValue.numKeys) { - return 0; - } - var value = ''; - if ('s' in property.keyframes[pos - 1]) { - value = property.keyframes[pos - 1].s; - } else if ('e' in property.keyframes[pos - 2]) { - value = property.keyframes[pos - 2].e; - } else { - value = property.keyframes[pos - 2].s; - } - var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers - valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate; - valueProp.value = type === 'unidimensional' ? value[0] : value; - return valueProp; - }; - expressionValue.valueAtTime = property.getValueAtTime; - expressionValue.speedAtTime = property.getSpeedAtTime; - expressionValue.velocityAtTime = property.getVelocityAtTime; - expressionValue.propertyGroup = property.propertyGroup; - } - - function UnidimensionalPropertyInterface(property) { - if (!property || !('pv' in property)) { - property = defaultUnidimensionalValue; - } - var mult = 1 / property.mult; - var val = property.pv * mult; - var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers - expressionValue.value = val; - completeProperty(expressionValue, property, 'unidimensional'); - - return function () { - if (property.k) { - property.getValue(); - } - val = property.v * mult; - if (expressionValue.value !== val) { - expressionValue = new Number(val); // eslint-disable-line no-new-wrappers - expressionValue.value = val; - completeProperty(expressionValue, property, 'unidimensional'); - } - return expressionValue; - }; - } - - function MultidimensionalPropertyInterface(property) { - if (!property || !('pv' in property)) { - property = defaultMultidimensionalValue; - } - var mult = 1 / property.mult; - var len = (property.data && property.data.l) || property.pv.length; - var expressionValue = createTypedArray('float32', len); - var arrValue = createTypedArray('float32', len); - expressionValue.value = arrValue; - completeProperty(expressionValue, property, 'multidimensional'); - - return function () { - if (property.k) { - property.getValue(); - } - for (var i = 0; i < len; i += 1) { - arrValue[i] = property.v[i] * mult; - expressionValue[i] = arrValue[i]; - } - return expressionValue; - }; - } - - // TODO: try to avoid using this getter - function defaultGetter() { - return defaultUnidimensionalValue; - } - - return function (property) { - if (!property) { - return defaultGetter; - } if (property.propType === 'unidimensional') { - return UnidimensionalPropertyInterface(property); - } - return MultidimensionalPropertyInterface(property); - }; -}()); - -const TransformExpressionInterface = (function () { - return function (transform) { - function _thisFunction(name) { - switch (name) { - case 'scale': - case 'Scale': - case 'ADBE Scale': - case 6: - return _thisFunction.scale; - case 'rotation': - case 'Rotation': - case 'ADBE Rotation': - case 'ADBE Rotate Z': - case 10: - return _thisFunction.rotation; - case 'ADBE Rotate X': - return _thisFunction.xRotation; - case 'ADBE Rotate Y': - return _thisFunction.yRotation; - case 'position': - case 'Position': - case 'ADBE Position': - case 2: - return _thisFunction.position; - case 'ADBE Position_0': - return _thisFunction.xPosition; - case 'ADBE Position_1': - return _thisFunction.yPosition; - case 'ADBE Position_2': - return _thisFunction.zPosition; - case 'anchorPoint': - case 'AnchorPoint': - case 'Anchor Point': - case 'ADBE AnchorPoint': - case 1: - return _thisFunction.anchorPoint; - case 'opacity': - case 'Opacity': - case 11: - return _thisFunction.opacity; - default: - return null; - } - } - Object.defineProperty(_thisFunction, 'rotation', { - get: ExpressionPropertyInterface(transform.r || transform.rz), - }); - - Object.defineProperty(_thisFunction, 'zRotation', { - get: ExpressionPropertyInterface(transform.rz || transform.r), - }); - - Object.defineProperty(_thisFunction, 'xRotation', { - get: ExpressionPropertyInterface(transform.rx), - }); - - Object.defineProperty(_thisFunction, 'yRotation', { - get: ExpressionPropertyInterface(transform.ry), - }); - Object.defineProperty(_thisFunction, 'scale', { - get: ExpressionPropertyInterface(transform.s), - }); - var _px; - var _py; - var _pz; - var _transformFactory; - if (transform.p) { - _transformFactory = ExpressionPropertyInterface(transform.p); - } else { - _px = ExpressionPropertyInterface(transform.px); - _py = ExpressionPropertyInterface(transform.py); - if (transform.pz) { - _pz = ExpressionPropertyInterface(transform.pz); - } - } - Object.defineProperty(_thisFunction, 'position', { - get: function () { - if (transform.p) { - return _transformFactory(); - } - return [ - _px(), - _py(), - _pz ? _pz() : 0]; - }, - }); - - Object.defineProperty(_thisFunction, 'xPosition', { - get: ExpressionPropertyInterface(transform.px), - }); - - Object.defineProperty(_thisFunction, 'yPosition', { - get: ExpressionPropertyInterface(transform.py), - }); - - Object.defineProperty(_thisFunction, 'zPosition', { - get: ExpressionPropertyInterface(transform.pz), - }); - - Object.defineProperty(_thisFunction, 'anchorPoint', { - get: ExpressionPropertyInterface(transform.a), - }); - - Object.defineProperty(_thisFunction, 'opacity', { - get: ExpressionPropertyInterface(transform.o), - }); - - Object.defineProperty(_thisFunction, 'skew', { - get: ExpressionPropertyInterface(transform.sk), - }); - - Object.defineProperty(_thisFunction, 'skewAxis', { - get: ExpressionPropertyInterface(transform.sa), - }); - - Object.defineProperty(_thisFunction, 'orientation', { - get: ExpressionPropertyInterface(transform.or), - }); - - return _thisFunction; - }; -}()); - -const LayerExpressionInterface = (function () { - function getMatrix(time) { - var toWorldMat = new Matrix(); - if (time !== undefined) { - var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time); - propMatrix.clone(toWorldMat); - } else { - var transformMat = this._elem.finalTransform.mProp; - transformMat.applyToMatrix(toWorldMat); - } - return toWorldMat; - } - - function toWorldVec(arr, time) { - var toWorldMat = this.getMatrix(time); - toWorldMat.props[12] = 0; - toWorldMat.props[13] = 0; - toWorldMat.props[14] = 0; - return this.applyPoint(toWorldMat, arr); - } - - function toWorld(arr, time) { - var toWorldMat = this.getMatrix(time); - return this.applyPoint(toWorldMat, arr); - } - - function fromWorldVec(arr, time) { - var toWorldMat = this.getMatrix(time); - toWorldMat.props[12] = 0; - toWorldMat.props[13] = 0; - toWorldMat.props[14] = 0; - return this.invertPoint(toWorldMat, arr); - } - - function fromWorld(arr, time) { - var toWorldMat = this.getMatrix(time); - return this.invertPoint(toWorldMat, arr); - } - - function applyPoint(matrix, arr) { - if (this._elem.hierarchy && this._elem.hierarchy.length) { - var i; - var len = this._elem.hierarchy.length; - for (i = 0; i < len; i += 1) { - this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix); - } - } - return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0); - } - - function invertPoint(matrix, arr) { - if (this._elem.hierarchy && this._elem.hierarchy.length) { - var i; - var len = this._elem.hierarchy.length; - for (i = 0; i < len; i += 1) { - this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix); - } - } - return matrix.inversePoint(arr); - } - - function fromComp(arr) { - var toWorldMat = new Matrix(); - toWorldMat.reset(); - this._elem.finalTransform.mProp.applyToMatrix(toWorldMat); - if (this._elem.hierarchy && this._elem.hierarchy.length) { - var i; - var len = this._elem.hierarchy.length; - for (i = 0; i < len; i += 1) { - this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat); - } - return toWorldMat.inversePoint(arr); - } - return toWorldMat.inversePoint(arr); - } - - function sampleImage() { - return [1, 1, 1, 1]; - } - - return function (elem) { - var transformInterface; - - function _registerMaskInterface(maskManager) { - _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem); - } - function _registerEffectsInterface(effects) { - _thisLayerFunction.effect = effects; - } - - function _thisLayerFunction(name) { - switch (name) { - case 'ADBE Root Vectors Group': - case 'Contents': - case 2: - return _thisLayerFunction.shapeInterface; - case 1: - case 6: - case 'Transform': - case 'transform': - case 'ADBE Transform Group': - return transformInterface; - case 4: - case 'ADBE Effect Parade': - case 'effects': - case 'Effects': - return _thisLayerFunction.effect; - case 'ADBE Text Properties': - return _thisLayerFunction.textInterface; - default: - return null; - } - } - _thisLayerFunction.getMatrix = getMatrix; - _thisLayerFunction.invertPoint = invertPoint; - _thisLayerFunction.applyPoint = applyPoint; - _thisLayerFunction.toWorld = toWorld; - _thisLayerFunction.toWorldVec = toWorldVec; - _thisLayerFunction.fromWorld = fromWorld; - _thisLayerFunction.fromWorldVec = fromWorldVec; - _thisLayerFunction.toComp = toWorld; - _thisLayerFunction.fromComp = fromComp; - _thisLayerFunction.sampleImage = sampleImage; - _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem); - _thisLayerFunction._elem = elem; - transformInterface = TransformExpressionInterface(elem.finalTransform.mProp); - var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint'); - Object.defineProperties(_thisLayerFunction, { - hasParent: { - get: function () { - return elem.hierarchy.length; - }, - }, - parent: { - get: function () { - return elem.hierarchy[0].layerInterface; - }, - }, - rotation: getDescriptor(transformInterface, 'rotation'), - scale: getDescriptor(transformInterface, 'scale'), - position: getDescriptor(transformInterface, 'position'), - opacity: getDescriptor(transformInterface, 'opacity'), - anchorPoint: anchorPointDescriptor, - anchor_point: anchorPointDescriptor, - transform: { - get: function () { - return transformInterface; - }, - }, - active: { - get: function () { - return elem.isInRange; - }, - }, - }); - - _thisLayerFunction.startTime = elem.data.st; - _thisLayerFunction.index = elem.data.ind; - _thisLayerFunction.source = elem.data.refId; - _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100; - _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100; - _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate; - _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate; - _thisLayerFunction._name = elem.data.nm; - - _thisLayerFunction.registerMaskInterface = _registerMaskInterface; - _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface; - return _thisLayerFunction; - }; -}()); - -const propertyGroupFactory = (function () { - return function (interfaceFunction, parentPropertyGroup) { - return function (val) { - val = val === undefined ? 1 : val; - if (val <= 0) { - return interfaceFunction; - } - return parentPropertyGroup(val - 1); - }; - }; -}()); - -const PropertyInterface = (function () { - return function (propertyName, propertyGroup) { - var interfaceFunction = { - _name: propertyName, - }; - - function _propertyGroup(val) { - val = val === undefined ? 1 : val; - if (val <= 0) { - return interfaceFunction; - } - return propertyGroup(val - 1); - } - - return _propertyGroup; - }; -}()); - -const EffectsExpressionInterface = (function () { - var ob = { - createEffectsInterface: createEffectsInterface, - }; - - function createEffectsInterface(elem, propertyGroup) { - if (elem.effectsManager) { - var effectElements = []; - var effectsData = elem.data.ef; - var i; - var len = elem.effectsManager.effectElements.length; - for (i = 0; i < len; i += 1) { - effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem)); - } - - var effects = elem.data.ef || []; - var groupInterface = function (name) { - i = 0; - len = effects.length; - while (i < len) { - if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) { - return effectElements[i]; - } - i += 1; - } - return null; - }; - Object.defineProperty(groupInterface, 'numProperties', { - get: function () { - return effects.length; - }, - }); - return groupInterface; - } - return null; - } - - function createGroupInterface(data, elements, propertyGroup, elem) { - function groupInterface(name) { - var effects = data.ef; - var i = 0; - var len = effects.length; - while (i < len) { - if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) { - if (effects[i].ty === 5) { - return effectElements[i]; - } - return effectElements[i](); - } - i += 1; - } - throw new Error(); - } - var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup); - - var effectElements = []; - var i; - var len = data.ef.length; - for (i = 0; i < len; i += 1) { - if (data.ef[i].ty === 5) { - effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem)); - } else { - effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup)); - } - } - - if (data.mn === 'ADBE Color Control') { - Object.defineProperty(groupInterface, 'color', { - get: function () { - return effectElements[0](); - }, - }); - } - Object.defineProperties(groupInterface, { - numProperties: { - get: function () { - return data.np; - }, - }, - _name: { value: data.nm }, - propertyGroup: { value: _propertyGroup }, - }); - groupInterface.enabled = data.en !== 0; - groupInterface.active = groupInterface.enabled; - return groupInterface; - } - - function createValueInterface(element, type, elem, propertyGroup) { - var expressionProperty = ExpressionPropertyInterface(element.p); - function interfaceFunction() { - if (type === 10) { - return elem.comp.compInterface(element.p.v); - } - return expressionProperty(); - } - - if (element.p.setGroupProperty) { - element.p.setGroupProperty(PropertyInterface('', propertyGroup)); - } - - return interfaceFunction; - } - - return ob; -}()); - -const CompExpressionInterface = (function () { - return function (comp) { - function _thisLayerFunction(name) { - var i = 0; - var len = comp.layers.length; - while (i < len) { - if (comp.layers[i].nm === name || comp.layers[i].ind === name) { - return comp.elements[i].layerInterface; - } - i += 1; - } - return null; - // return {active:false}; - } - Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm }); - _thisLayerFunction.layer = _thisLayerFunction; - _thisLayerFunction.pixelAspect = 1; - _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h; - _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w; - _thisLayerFunction.pixelAspect = 1; - _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate; - _thisLayerFunction.displayStartTime = 0; - _thisLayerFunction.numLayers = comp.layers.length; - return _thisLayerFunction; - }; -}()); - -const ShapePathInterface = ( - - function () { - return function pathInterfaceFactory(shape, view, propertyGroup) { - var prop = view.sh; - - function interfaceFunction(val) { - if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) { - return interfaceFunction.path; - } - return null; - } - - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - prop.setGroupProperty(PropertyInterface('Path', _propertyGroup)); - Object.defineProperties(interfaceFunction, { - path: { - get: function () { - if (prop.k) { - prop.getValue(); - } - return prop; - }, - }, - shape: { - get: function () { - if (prop.k) { - prop.getValue(); - } - return prop; - }, - }, - _name: { value: shape.nm }, - ix: { value: shape.ix }, - propertyIndex: { value: shape.ix }, - mn: { value: shape.mn }, - propertyGroup: { value: propertyGroup }, - }); - return interfaceFunction; - }; - }() -); - -const ShapeExpressionInterface = (function () { - function iterateElements(shapes, view, propertyGroup) { - var arr = []; - var i; - var len = shapes ? shapes.length : 0; - for (i = 0; i < len; i += 1) { - if (shapes[i].ty === 'gr') { - arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'fl') { - arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'st') { - arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'tm') { - arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'tr') { - // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup)); - } else if (shapes[i].ty === 'el') { - arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'sr') { - arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'sh') { - arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'rc') { - arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'rd') { - arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'rp') { - arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else if (shapes[i].ty === 'gf') { - arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup)); - } else { - arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup)); - } - } - return arr; - } - - function contentsInterfaceFactory(shape, view, propertyGroup) { - var interfaces; - var interfaceFunction = function _interfaceFunction(value) { - var i = 0; - var len = interfaces.length; - while (i < len) { - if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) { - return interfaces[i]; - } - i += 1; - } - if (typeof value === 'number') { - return interfaces[value - 1]; - } - return null; - }; - - interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup); - interfaceFunction.numProperties = interfaces.length; - var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup); - interfaceFunction.transform = transformInterface; - interfaceFunction.propertyIndex = shape.cix; - interfaceFunction._name = shape.nm; - - return interfaceFunction; - } - - function groupInterfaceFactory(shape, view, propertyGroup) { - var interfaceFunction = function _interfaceFunction(value) { - switch (value) { - case 'ADBE Vectors Group': - case 'Contents': - case 2: - return interfaceFunction.content; - // Not necessary for now. Keeping them here in case a new case appears - // case 'ADBE Vector Transform Group': - // case 3: - default: - return interfaceFunction.transform; - } - }; - interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup); - var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup); - interfaceFunction.content = content; - interfaceFunction.transform = transformInterface; - Object.defineProperty(interfaceFunction, '_name', { - get: function () { - return shape.nm; - }, - }); - // interfaceFunction.content = interfaceFunction; - interfaceFunction.numProperties = shape.np; - interfaceFunction.propertyIndex = shape.ix; - interfaceFunction.nm = shape.nm; - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - - function fillInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(val) { - if (val === 'Color' || val === 'color') { - return interfaceFunction.color; - } if (val === 'Opacity' || val === 'opacity') { - return interfaceFunction.opacity; - } - return null; - } - Object.defineProperties(interfaceFunction, { - color: { - get: ExpressionPropertyInterface(view.c), - }, - opacity: { - get: ExpressionPropertyInterface(view.o), - }, - _name: { value: shape.nm }, - mn: { value: shape.mn }, - }); - - view.c.setGroupProperty(PropertyInterface('Color', propertyGroup)); - view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup)); - return interfaceFunction; - } - - function gradientFillInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(val) { - if (val === 'Start Point' || val === 'start point') { - return interfaceFunction.startPoint; - } - if (val === 'End Point' || val === 'end point') { - return interfaceFunction.endPoint; - } - if (val === 'Opacity' || val === 'opacity') { - return interfaceFunction.opacity; - } - return null; - } - Object.defineProperties(interfaceFunction, { - startPoint: { - get: ExpressionPropertyInterface(view.s), - }, - endPoint: { - get: ExpressionPropertyInterface(view.e), - }, - opacity: { - get: ExpressionPropertyInterface(view.o), - }, - type: { - get: function () { - return 'a'; - }, - }, - _name: { value: shape.nm }, - mn: { value: shape.mn }, - }); - - view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup)); - view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup)); - view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup)); - return interfaceFunction; - } - function defaultInterfaceFactory() { - function interfaceFunction() { - return null; - } - return interfaceFunction; - } - - function strokeInterfaceFactory(shape, view, propertyGroup) { - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup); - function addPropertyToDashOb(i) { - Object.defineProperty(dashOb, shape.d[i].nm, { - get: ExpressionPropertyInterface(view.d.dataProps[i].p), - }); - } - var i; - var len = shape.d ? shape.d.length : 0; - var dashOb = {}; - for (i = 0; i < len; i += 1) { - addPropertyToDashOb(i); - view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup); - } - - function interfaceFunction(val) { - if (val === 'Color' || val === 'color') { - return interfaceFunction.color; - } if (val === 'Opacity' || val === 'opacity') { - return interfaceFunction.opacity; - } if (val === 'Stroke Width' || val === 'stroke width') { - return interfaceFunction.strokeWidth; - } - return null; - } - Object.defineProperties(interfaceFunction, { - color: { - get: ExpressionPropertyInterface(view.c), - }, - opacity: { - get: ExpressionPropertyInterface(view.o), - }, - strokeWidth: { - get: ExpressionPropertyInterface(view.w), - }, - dash: { - get: function () { - return dashOb; - }, - }, - _name: { value: shape.nm }, - mn: { value: shape.mn }, - }); - - view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup)); - view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup)); - view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup)); - return interfaceFunction; - } - - function trimInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(val) { - if (val === shape.e.ix || val === 'End' || val === 'end') { - return interfaceFunction.end; - } - if (val === shape.s.ix) { - return interfaceFunction.start; - } - if (val === shape.o.ix) { - return interfaceFunction.offset; - } - return null; - } - - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - interfaceFunction.propertyIndex = shape.ix; - - view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup)); - view.e.setGroupProperty(PropertyInterface('End', _propertyGroup)); - view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup)); - interfaceFunction.propertyIndex = shape.ix; - interfaceFunction.propertyGroup = propertyGroup; - - Object.defineProperties(interfaceFunction, { - start: { - get: ExpressionPropertyInterface(view.s), - }, - end: { - get: ExpressionPropertyInterface(view.e), - }, - offset: { - get: ExpressionPropertyInterface(view.o), - }, - _name: { value: shape.nm }, - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - - function transformInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value) { - if (shape.a.ix === value || value === 'Anchor Point') { - return interfaceFunction.anchorPoint; - } - if (shape.o.ix === value || value === 'Opacity') { - return interfaceFunction.opacity; - } - if (shape.p.ix === value || value === 'Position') { - return interfaceFunction.position; - } - if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') { - return interfaceFunction.rotation; - } - if (shape.s.ix === value || value === 'Scale') { - return interfaceFunction.scale; - } - if ((shape.sk && shape.sk.ix === value) || value === 'Skew') { - return interfaceFunction.skew; - } - if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') { - return interfaceFunction.skewAxis; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup)); - view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup)); - view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup)); - view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup)); - view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup)); - if (view.transform.mProps.sk) { - view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup)); - view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup)); - } - view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup)); - Object.defineProperties(interfaceFunction, { - opacity: { - get: ExpressionPropertyInterface(view.transform.mProps.o), - }, - position: { - get: ExpressionPropertyInterface(view.transform.mProps.p), - }, - anchorPoint: { - get: ExpressionPropertyInterface(view.transform.mProps.a), - }, - scale: { - get: ExpressionPropertyInterface(view.transform.mProps.s), - }, - rotation: { - get: ExpressionPropertyInterface(view.transform.mProps.r), - }, - skew: { - get: ExpressionPropertyInterface(view.transform.mProps.sk), - }, - skewAxis: { - get: ExpressionPropertyInterface(view.transform.mProps.sa), - }, - _name: { value: shape.nm }, - }); - interfaceFunction.ty = 'tr'; - interfaceFunction.mn = shape.mn; - interfaceFunction.propertyGroup = propertyGroup; - return interfaceFunction; - } - - function ellipseInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value) { - if (shape.p.ix === value) { - return interfaceFunction.position; - } - if (shape.s.ix === value) { - return interfaceFunction.size; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - interfaceFunction.propertyIndex = shape.ix; - var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh; - prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup)); - prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup)); - - Object.defineProperties(interfaceFunction, { - size: { - get: ExpressionPropertyInterface(prop.s), - }, - position: { - get: ExpressionPropertyInterface(prop.p), - }, - _name: { value: shape.nm }, - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - - function starInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value) { - if (shape.p.ix === value) { - return interfaceFunction.position; - } - if (shape.r.ix === value) { - return interfaceFunction.rotation; - } - if (shape.pt.ix === value) { - return interfaceFunction.points; - } - if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') { - return interfaceFunction.outerRadius; - } - if (shape.os.ix === value) { - return interfaceFunction.outerRoundness; - } - if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) { - return interfaceFunction.innerRadius; - } - if (shape.is && shape.is.ix === value) { - return interfaceFunction.innerRoundness; - } - return null; - } - - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh; - interfaceFunction.propertyIndex = shape.ix; - prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup)); - prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup)); - prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup)); - prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup)); - prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup)); - if (shape.ir) { - prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup)); - prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup)); - } - - Object.defineProperties(interfaceFunction, { - position: { - get: ExpressionPropertyInterface(prop.p), - }, - rotation: { - get: ExpressionPropertyInterface(prop.r), - }, - points: { - get: ExpressionPropertyInterface(prop.pt), - }, - outerRadius: { - get: ExpressionPropertyInterface(prop.or), - }, - outerRoundness: { - get: ExpressionPropertyInterface(prop.os), - }, - innerRadius: { - get: ExpressionPropertyInterface(prop.ir), - }, - innerRoundness: { - get: ExpressionPropertyInterface(prop.is), - }, - _name: { value: shape.nm }, - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - - function rectInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value) { - if (shape.p.ix === value) { - return interfaceFunction.position; - } - if (shape.r.ix === value) { - return interfaceFunction.roundness; - } - if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') { - return interfaceFunction.size; - } - return null; - } - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - - var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh; - interfaceFunction.propertyIndex = shape.ix; - prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup)); - prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup)); - prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup)); - - Object.defineProperties(interfaceFunction, { - position: { - get: ExpressionPropertyInterface(prop.p), - }, - roundness: { - get: ExpressionPropertyInterface(prop.r), - }, - size: { - get: ExpressionPropertyInterface(prop.s), - }, - _name: { value: shape.nm }, - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - - function roundedInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value) { - if (shape.r.ix === value || value === 'Round Corners 1') { - return interfaceFunction.radius; - } - return null; - } - - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var prop = view; - interfaceFunction.propertyIndex = shape.ix; - prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup)); - - Object.defineProperties(interfaceFunction, { - radius: { - get: ExpressionPropertyInterface(prop.rd), - }, - _name: { value: shape.nm }, - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - - function repeaterInterfaceFactory(shape, view, propertyGroup) { - function interfaceFunction(value) { - if (shape.c.ix === value || value === 'Copies') { - return interfaceFunction.copies; - } if (shape.o.ix === value || value === 'Offset') { - return interfaceFunction.offset; - } - return null; - } - - var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup); - var prop = view; - interfaceFunction.propertyIndex = shape.ix; - prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup)); - prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup)); - Object.defineProperties(interfaceFunction, { - copies: { - get: ExpressionPropertyInterface(prop.c), - }, - offset: { - get: ExpressionPropertyInterface(prop.o), - }, - _name: { value: shape.nm }, - }); - interfaceFunction.mn = shape.mn; - return interfaceFunction; - } - - return function (shapes, view, propertyGroup) { - var interfaces; - function _interfaceFunction(value) { - if (typeof value === 'number') { - value = value === undefined ? 1 : value; - if (value === 0) { - return propertyGroup; - } - return interfaces[value - 1]; - } - var i = 0; - var len = interfaces.length; - while (i < len) { - if (interfaces[i]._name === value) { - return interfaces[i]; - } - i += 1; - } - return null; - } - function parentGroupWrapper() { - return propertyGroup; - } - _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper); - interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup); - _interfaceFunction.numProperties = interfaces.length; - _interfaceFunction._name = 'Contents'; - return _interfaceFunction; - }; -}()); - -const TextExpressionInterface = (function () { - return function (elem) { - var _prevValue; - var _sourceText; - function _thisLayerFunction(name) { - switch (name) { - case 'ADBE Text Document': - return _thisLayerFunction.sourceText; - default: - return null; - } - } - Object.defineProperty(_thisLayerFunction, 'sourceText', { - get: function () { - elem.textProperty.getValue(); - var stringValue = elem.textProperty.currentData.t; - if (stringValue !== _prevValue) { - elem.textProperty.currentData.t = _prevValue; - _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers - // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive - _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers - } - return _sourceText; - }, - }); - return _thisLayerFunction; - }; -}()); - -const getBlendMode = (function () { - var blendModeEnums = { - 0: 'source-over', - 1: 'multiply', - 2: 'screen', - 3: 'overlay', - 4: 'darken', - 5: 'lighten', - 6: 'color-dodge', - 7: 'color-burn', - 8: 'hard-light', - 9: 'soft-light', - 10: 'difference', - 11: 'exclusion', - 12: 'hue', - 13: 'saturation', - 14: 'color', - 15: 'luminosity', - }; - - return function (mode) { - return blendModeEnums[mode] || ''; - }; -}()); - -function SliderEffect(data, elem, container) { - this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); -} -function AngleEffect(data, elem, container) { - this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); -} -function ColorEffect(data, elem, container) { - this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container); -} -function PointEffect(data, elem, container) { - this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container); -} -function LayerIndexEffect(data, elem, container) { - this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); -} -function MaskIndexEffect(data, elem, container) { - this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); -} -function CheckboxEffect(data, elem, container) { - this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container); -} -function NoValueEffect() { - this.p = {}; -} - -function EffectsManager(data, element) { - var effects = data.ef || []; - this.effectElements = []; - var i; - var len = effects.length; - var effectItem; - for (i = 0; i < len; i += 1) { - effectItem = new GroupEffect(effects[i], element); - this.effectElements.push(effectItem); - } -} - -function GroupEffect(data, element) { - this.init(data, element); -} - -extendPrototype([DynamicPropertyContainer], GroupEffect); - -GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties; - -GroupEffect.prototype.init = function (data, element) { - this.data = data; - this.effectElements = []; - this.initDynamicPropertyContainer(element); - var i; - var len = this.data.ef.length; - var eff; - var effects = this.data.ef; - for (i = 0; i < len; i += 1) { - eff = null; - switch (effects[i].ty) { - case 0: - eff = new SliderEffect(effects[i], element, this); - break; - case 1: - eff = new AngleEffect(effects[i], element, this); - break; - case 2: - eff = new ColorEffect(effects[i], element, this); - break; - case 3: - eff = new PointEffect(effects[i], element, this); - break; - case 4: - case 7: - eff = new CheckboxEffect(effects[i], element, this); - break; - case 10: - eff = new LayerIndexEffect(effects[i], element, this); - break; - case 11: - eff = new MaskIndexEffect(effects[i], element, this); - break; - case 5: - eff = new EffectsManager(effects[i], element, this); - break; - // case 6: - default: - eff = new NoValueEffect(effects[i], element, this); - break; - } - if (eff) { - this.effectElements.push(eff); - } - } -}; - -function BaseElement() { -} - -BaseElement.prototype = { - checkMasks: function () { - if (!this.data.hasMask) { - return false; - } - var i = 0; - var len = this.data.masksProperties.length; - while (i < len) { - if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) { - return true; - } - i += 1; - } - return false; - }, - initExpressions: function () { - this.layerInterface = LayerExpressionInterface(this); - if (this.data.hasMask && this.maskManager) { - this.layerInterface.registerMaskInterface(this.maskManager); - } - var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface); - this.layerInterface.registerEffectsInterface(effectsInterface); - - if (this.data.ty === 0 || this.data.xt) { - this.compInterface = CompExpressionInterface(this); - } else if (this.data.ty === 4) { - this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface); - this.layerInterface.content = this.layerInterface.shapeInterface; - } else if (this.data.ty === 5) { - this.layerInterface.textInterface = TextExpressionInterface(this); - this.layerInterface.text = this.layerInterface.textInterface; - } - }, - setBlendMode: function () { - var blendModeValue = getBlendMode(this.data.bm); - var elem = this.baseElement || this.layerElement; - - elem.style['mix-blend-mode'] = blendModeValue; - }, - initBaseData: function (data, globalData, comp) { - this.globalData = globalData; - this.comp = comp; - this.data = data; - this.layerId = createElementID(); - - // Stretch factor for old animations missing this property. - if (!this.data.sr) { - this.data.sr = 1; - } - // effects manager - this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties); - }, - getType: function () { - return this.type; - }, - sourceRectAtTime: function () {}, -}; - -/** - * @file - * Handles element's layer frame update. - * Checks layer in point and out point - * - */ - -function FrameElement() {} - -FrameElement.prototype = { - /** - * @function - * Initializes frame related properties. - * - */ - initFrame: function () { - // set to true when inpoint is rendered - this._isFirstFrame = false; - // list of animated properties - this.dynamicProperties = []; - // If layer has been modified in current tick this will be true - this._mdf = false; - }, - /** - * @function - * Calculates all dynamic values - * - * @param {number} num - * current frame number in Layer's time - * @param {boolean} isVisible - * if layers is currently in range - * - */ - prepareProperties: function (num, isVisible) { - var i; - var len = this.dynamicProperties.length; - for (i = 0; i < len; i += 1) { - if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) { - this.dynamicProperties[i].getValue(); - if (this.dynamicProperties[i]._mdf) { - this.globalData._mdf = true; - this._mdf = true; - } - } - } - }, - addDynamicProperty: function (prop) { - if (this.dynamicProperties.indexOf(prop) === -1) { - this.dynamicProperties.push(prop); - } - }, -}; - -const FootageInterface = (function () { - var outlineInterfaceFactory = (function (elem) { - var currentPropertyName = ''; - var currentProperty = elem.getFootageData(); - function init() { - currentPropertyName = ''; - currentProperty = elem.getFootageData(); - return searchProperty; - } - function searchProperty(value) { - if (currentProperty[value]) { - currentPropertyName = value; - currentProperty = currentProperty[value]; - if (typeof currentProperty === 'object') { - return searchProperty; - } - return currentProperty; - } - var propertyNameIndex = value.indexOf(currentPropertyName); - if (propertyNameIndex !== -1) { - var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10); - currentProperty = currentProperty[index]; - if (typeof currentProperty === 'object') { - return searchProperty; - } - return currentProperty; - } - return ''; - } - return init; - }); - - var dataInterfaceFactory = function (elem) { - function interfaceFunction(value) { - if (value === 'Outline') { - return interfaceFunction.outlineInterface(); - } - return null; - } - - interfaceFunction._name = 'Outline'; - interfaceFunction.outlineInterface = outlineInterfaceFactory(elem); - return interfaceFunction; - }; - - return function (elem) { - function _interfaceFunction(value) { - if (value === 'Data') { - return _interfaceFunction.dataInterface; - } - return null; - } - - _interfaceFunction._name = 'Data'; - _interfaceFunction.dataInterface = dataInterfaceFactory(elem); - return _interfaceFunction; - }; -}()); - -function FootageElement(data, globalData, comp) { - this.initFrame(); - this.initRenderable(); - this.assetData = globalData.getAssetData(data.refId); - this.footageData = globalData.imageLoader.getAsset(this.assetData); - this.initBaseData(data, globalData, comp); -} - -FootageElement.prototype.prepareFrame = function () { -}; - -extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement); - -FootageElement.prototype.getBaseElement = function () { - return null; -}; - -FootageElement.prototype.renderFrame = function () { -}; - -FootageElement.prototype.destroy = function () { -}; - -FootageElement.prototype.initExpressions = function () { - this.layerInterface = FootageInterface(this); -}; - -FootageElement.prototype.getFootageData = function () { - return this.footageData; -}; - -function AudioElement(data, globalData, comp) { - this.initFrame(); - this.initRenderable(); - this.assetData = globalData.getAssetData(data.refId); - this.initBaseData(data, globalData, comp); - this._isPlaying = false; - this._canPlay = false; - var assetPath = this.globalData.getAssetsPath(this.assetData); - this.audio = this.globalData.audioController.createAudio(assetPath); - this._currentTime = 0; - this.globalData.audioController.addAudio(this); - this._volumeMultiplier = 1; - this._volume = 1; - this._previousVolume = null; - this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; - this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : { k: [100] }, 1, 0.01, this); -} - -AudioElement.prototype.prepareFrame = function (num) { - this.prepareRenderableFrame(num, true); - this.prepareProperties(num, true); - if (!this.tm._placeholder) { - var timeRemapped = this.tm.v; - this._currentTime = timeRemapped; - } else { - this._currentTime = num / this.data.sr; - } - this._volume = this.lv.v[0]; - var totalVolume = this._volume * this._volumeMultiplier; - if (this._previousVolume !== totalVolume) { - this._previousVolume = totalVolume; - this.audio.volume(totalVolume); - } -}; - -extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement); - -AudioElement.prototype.renderFrame = function () { - if (this.isInRange && this._canPlay) { - if (!this._isPlaying) { - this.audio.play(); - this.audio.seek(this._currentTime / this.globalData.frameRate); - this._isPlaying = true; - } else if (!this.audio.playing() - || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1 - ) { - this.audio.seek(this._currentTime / this.globalData.frameRate); - } - } -}; - -AudioElement.prototype.show = function () { - // this.audio.play() -}; - -AudioElement.prototype.hide = function () { - this.audio.pause(); - this._isPlaying = false; -}; - -AudioElement.prototype.pause = function () { - this.audio.pause(); - this._isPlaying = false; - this._canPlay = false; -}; - -AudioElement.prototype.resume = function () { - this._canPlay = true; -}; - -AudioElement.prototype.setRate = function (rateValue) { - this.audio.rate(rateValue); -}; - -AudioElement.prototype.volume = function (volumeValue) { - this._volumeMultiplier = volumeValue; - this._previousVolume = volumeValue * this._volume; - this.audio.volume(this._previousVolume); -}; - -AudioElement.prototype.getBaseElement = function () { - return null; -}; - -AudioElement.prototype.destroy = function () { -}; - -AudioElement.prototype.sourceRectAtTime = function () { -}; - -AudioElement.prototype.initExpressions = function () { -}; - -function BaseRenderer() {} -BaseRenderer.prototype.checkLayers = function (num) { - var i; - var len = this.layers.length; - var data; - this.completeLayers = true; - for (i = len - 1; i >= 0; i -= 1) { - if (!this.elements[i]) { - data = this.layers[i]; - if (data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st)) { - this.buildItem(i); - } - } - this.completeLayers = this.elements[i] ? this.completeLayers : false; - } - this.checkPendingElements(); -}; - -BaseRenderer.prototype.createItem = function (layer) { - switch (layer.ty) { - case 2: - return this.createImage(layer); - case 0: - return this.createComp(layer); - case 1: - return this.createSolid(layer); - case 3: - return this.createNull(layer); - case 4: - return this.createShape(layer); - case 5: - return this.createText(layer); - case 6: - return this.createAudio(layer); - case 13: - return this.createCamera(layer); - case 15: - return this.createFootage(layer); - default: - return this.createNull(layer); - } -}; - -BaseRenderer.prototype.createCamera = function () { - throw new Error('You\'re using a 3d camera. Try the html renderer.'); -}; - -BaseRenderer.prototype.createAudio = function (data) { - return new AudioElement(data, this.globalData, this); -}; - -BaseRenderer.prototype.createFootage = function (data) { - return new FootageElement(data, this.globalData, this); -}; - -BaseRenderer.prototype.buildAllItems = function () { - var i; - var len = this.layers.length; - for (i = 0; i < len; i += 1) { - this.buildItem(i); - } - this.checkPendingElements(); -}; - -BaseRenderer.prototype.includeLayers = function (newLayers) { - this.completeLayers = false; - var i; - var len = newLayers.length; - var j; - var jLen = this.layers.length; - for (i = 0; i < len; i += 1) { - j = 0; - while (j < jLen) { - if (this.layers[j].id === newLayers[i].id) { - this.layers[j] = newLayers[i]; - break; - } - j += 1; - } - } -}; - -BaseRenderer.prototype.setProjectInterface = function (pInterface) { - this.globalData.projectInterface = pInterface; -}; - -BaseRenderer.prototype.initItems = function () { - if (!this.globalData.progressiveLoad) { - this.buildAllItems(); - } -}; -BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) { - var elements = this.elements; - var layers = this.layers; - var i = 0; - var len = layers.length; - while (i < len) { - if (layers[i].ind == parentName) { // eslint-disable-line eqeqeq - if (!elements[i] || elements[i] === true) { - this.buildItem(i); - this.addPendingElement(element); - } else { - hierarchy.push(elements[i]); - elements[i].setAsParent(); - if (layers[i].parent !== undefined) { - this.buildElementParenting(element, layers[i].parent, hierarchy); - } else { - element.setHierarchy(hierarchy); - } - } - } - i += 1; - } -}; - -BaseRenderer.prototype.addPendingElement = function (element) { - this.pendingElements.push(element); -}; - -BaseRenderer.prototype.searchExtraCompositions = function (assets) { - var i; - var len = assets.length; - for (i = 0; i < len; i += 1) { - if (assets[i].xt) { - var comp = this.createComp(assets[i]); - comp.initExpressions(); - this.globalData.projectInterface.registerComposition(comp); - } - } -}; - -BaseRenderer.prototype.getElementByPath = function (path) { - var pathValue = path.shift(); - var element; - if (typeof pathValue === 'number') { - element = this.elements[pathValue]; - } else { - var i; - var len = this.elements.length; - for (i = 0; i < len; i += 1) { - if (this.elements[i].data.nm === pathValue) { - element = this.elements[i]; - break; - } - } - } - if (path.length === 0) { - return element; - } - return element.getElementByPath(path); -}; - -BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) { - this.globalData.fontManager = new FontManager(); - this.globalData.fontManager.addChars(animData.chars); - this.globalData.fontManager.addFonts(animData.fonts, fontsContainer); - this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem); - this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem); - this.globalData.imageLoader = this.animationItem.imagePreloader; - this.globalData.audioController = this.animationItem.audioController; - this.globalData.frameId = 0; - this.globalData.frameRate = animData.fr; - this.globalData.nm = animData.nm; - this.globalData.compSize = { - w: animData.w, - h: animData.h, - }; -}; - -function TransformElement() {} - -TransformElement.prototype = { - initTransform: function () { - this.finalTransform = { - mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 }, - _matMdf: false, - _opMdf: false, - mat: new Matrix(), - }; - if (this.data.ao) { - this.finalTransform.mProp.autoOriented = true; - } - - // TODO: check TYPE 11: Guided elements - if (this.data.ty !== 11) { - // this.createElements(); - } - }, - renderTransform: function () { - this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame; - this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame; - - if (this.hierarchy) { - var mat; - var finalMat = this.finalTransform.mat; - var i = 0; - var len = this.hierarchy.length; - // Checking if any of the transformation matrices in the hierarchy chain has changed. - if (!this.finalTransform._matMdf) { - while (i < len) { - if (this.hierarchy[i].finalTransform.mProp._mdf) { - this.finalTransform._matMdf = true; - break; - } - i += 1; - } - } - - if (this.finalTransform._matMdf) { - mat = this.finalTransform.mProp.v.props; - finalMat.cloneFromProps(mat); - for (i = 0; i < len; i += 1) { - mat = this.hierarchy[i].finalTransform.mProp.v.props; - finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]); - } - } - } - }, - globalToLocal: function (pt) { - var transforms = []; - transforms.push(this.finalTransform); - var flag = true; - var comp = this.comp; - while (flag) { - if (comp.finalTransform) { - if (comp.data.hasMask) { - transforms.splice(0, 0, comp.finalTransform); - } - comp = comp.comp; - } else { - flag = false; - } - } - var i; - var len = transforms.length; - var ptNew; - for (i = 0; i < len; i += 1) { - ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); - // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]); - pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0]; - } - return pt; - }, - mHelper: new Matrix(), -}; - -function MaskElement(data, element, globalData) { - this.data = data; - this.element = element; - this.globalData = globalData; - this.storedData = []; - this.masksProperties = this.data.masksProperties || []; - this.maskElement = null; - var defs = this.globalData.defs; - var i; - var len = this.masksProperties ? this.masksProperties.length : 0; - this.viewData = createSizedArray(len); - this.solidPath = ''; - - var path; - var properties = this.masksProperties; - var count = 0; - var currentMasks = []; - var j; - var jLen; - var layerId = createElementID(); - var rect; - var expansor; - var feMorph; - var x; - var maskType = 'clipPath'; - var maskRef = 'clip-path'; - for (i = 0; i < len; i += 1) { - if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) { - maskType = 'mask'; - maskRef = 'mask'; - } - - if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) { - rect = createNS('rect'); - rect.setAttribute('fill', '#ffffff'); - rect.setAttribute('width', this.element.comp.data.w || 0); - rect.setAttribute('height', this.element.comp.data.h || 0); - currentMasks.push(rect); - } else { - rect = null; - } - - path = createNS('path'); - if (properties[i].mode === 'n') { - // TODO move this to a factory or to a constructor - this.viewData[i] = { - op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element), - prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3), - elem: path, - lastPath: '', - }; - defs.appendChild(path); - } else { - count += 1; - - path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff'); - path.setAttribute('clip-rule', 'nonzero'); - var filterID; - - if (properties[i].x.k !== 0) { - maskType = 'mask'; - maskRef = 'mask'; - x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element); - filterID = createElementID(); - expansor = createNS('filter'); - expansor.setAttribute('id', filterID); - feMorph = createNS('feMorphology'); - feMorph.setAttribute('operator', 'erode'); - feMorph.setAttribute('in', 'SourceGraphic'); - feMorph.setAttribute('radius', '0'); - expansor.appendChild(feMorph); - defs.appendChild(expansor); - path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff'); - } else { - feMorph = null; - x = null; - } - - // TODO move this to a factory or to a constructor - this.storedData[i] = { - elem: path, - x: x, - expan: feMorph, - lastPath: '', - lastOperator: '', - filterId: filterID, - lastRadius: 0, - }; - if (properties[i].mode === 'i') { - jLen = currentMasks.length; - var g = createNS('g'); - for (j = 0; j < jLen; j += 1) { - g.appendChild(currentMasks[j]); - } - var mask = createNS('mask'); - mask.setAttribute('mask-type', 'alpha'); - mask.setAttribute('id', layerId + '_' + count); - mask.appendChild(path); - defs.appendChild(mask); - g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')'); - - currentMasks.length = 0; - currentMasks.push(g); - } else { - currentMasks.push(path); - } - if (properties[i].inv && !this.solidPath) { - this.solidPath = this.createLayerSolidPath(); - } - // TODO move this to a factory or to a constructor - this.viewData[i] = { - elem: path, - lastPath: '', - op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element), - prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3), - invRect: rect, - }; - if (!this.viewData[i].prop.k) { - this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]); - } - } - } - - this.maskElement = createNS(maskType); - - len = currentMasks.length; - for (i = 0; i < len; i += 1) { - this.maskElement.appendChild(currentMasks[i]); - } - - if (count > 0) { - this.maskElement.setAttribute('id', layerId); - this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')'); - defs.appendChild(this.maskElement); - } - if (this.viewData.length) { - this.element.addRenderableComponent(this); - } -} - -MaskElement.prototype.getMaskProperty = function (pos) { - return this.viewData[pos].prop; -}; - -MaskElement.prototype.renderFrame = function (isFirstFrame) { - var finalMat = this.element.finalTransform.mat; - var i; - var len = this.masksProperties.length; - for (i = 0; i < len; i += 1) { - if (this.viewData[i].prop._mdf || isFirstFrame) { - this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]); - } - if (this.viewData[i].op._mdf || isFirstFrame) { - this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v); - } - if (this.masksProperties[i].mode !== 'n') { - if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) { - this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS()); - } - if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) { - var feMorph = this.storedData[i].expan; - if (this.storedData[i].x.v < 0) { - if (this.storedData[i].lastOperator !== 'erode') { - this.storedData[i].lastOperator = 'erode'; - this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')'); - } - feMorph.setAttribute('radius', -this.storedData[i].x.v); - } else { - if (this.storedData[i].lastOperator !== 'dilate') { - this.storedData[i].lastOperator = 'dilate'; - this.storedData[i].elem.setAttribute('filter', null); - } - this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2); - } - } - } - } -}; - -MaskElement.prototype.getMaskelement = function () { - return this.maskElement; -}; - -MaskElement.prototype.createLayerSolidPath = function () { - var path = 'M0,0 '; - path += ' h' + this.globalData.compSize.w; - path += ' v' + this.globalData.compSize.h; - path += ' h-' + this.globalData.compSize.w; - path += ' v-' + this.globalData.compSize.h + ' '; - return path; -}; - -MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) { - var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1]; - var i; - var len; - len = pathNodes._length; - for (i = 1; i < len; i += 1) { - // pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[i][0]+','+pathNodes.i[i][1] + " "+pathNodes.v[i][0]+','+pathNodes.v[i][1]; - pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1]; - } - // pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[0][0]+','+pathNodes.i[0][1] + " "+pathNodes.v[0][0]+','+pathNodes.v[0][1]; - if (pathNodes.c && len > 1) { - pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1]; - } - // pathNodes.__renderedString = pathString; - - if (viewData.lastPath !== pathString) { - var pathShapeValue = ''; - if (viewData.elem) { - if (pathNodes.c) { - pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString; - } - viewData.elem.setAttribute('d', pathShapeValue); - } - viewData.lastPath = pathString; - } -}; - -MaskElement.prototype.destroy = function () { - this.element = null; - this.globalData = null; - this.maskElement = null; - this.data = null; - this.masksProperties = null; -}; - -const filtersFactory = (function () { - var ob = {}; - ob.createFilter = createFilter; - ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter; - - function createFilter(filId, skipCoordinates) { - var fil = createNS('filter'); - fil.setAttribute('id', filId); - if (skipCoordinates !== true) { - fil.setAttribute('filterUnits', 'objectBoundingBox'); - fil.setAttribute('x', '0%'); - fil.setAttribute('y', '0%'); - fil.setAttribute('width', '100%'); - fil.setAttribute('height', '100%'); - } - return fil; - } - - function createAlphaToLuminanceFilter() { - var feColorMatrix = createNS('feColorMatrix'); - feColorMatrix.setAttribute('type', 'matrix'); - feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB'); - feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1'); - return feColorMatrix; - } - - return ob; -}()); - -const featureSupport = (function () { - var ob = { - maskType: true, - }; - if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) { - ob.maskType = false; - } - return ob; -}()); - -var registeredEffects = {}; -var idPrefix = 'filter_result_'; - -function SVGEffects(elem) { - var i; - var source = 'SourceGraphic'; - var len = elem.data.ef ? elem.data.ef.length : 0; - var filId = createElementID(); - var fil = filtersFactory.createFilter(filId, true); - var count = 0; - this.filters = []; - var filterManager; - for (i = 0; i < len; i += 1) { - filterManager = null; - var type = elem.data.ef[i].ty; - if (registeredEffects[type]) { - var Effect = registeredEffects[type].effect; - filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source); - source = idPrefix + count; - if (registeredEffects[type].countsAsEffect) { - count += 1; - } - } - if (filterManager) { - this.filters.push(filterManager); - } - } - if (count) { - elem.globalData.defs.appendChild(fil); - elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')'); - } - if (this.filters.length) { - elem.addRenderableComponent(this); - } -} - -SVGEffects.prototype.renderFrame = function (_isFirstFrame) { - var i; - var len = this.filters.length; - for (i = 0; i < len; i += 1) { - this.filters[i].renderFrame(_isFirstFrame); - } -}; - -function registerEffect(id, effect, countsAsEffect) { - registeredEffects[id] = { - effect, - countsAsEffect, - }; -} - -function SVGBaseElement() { -} - -SVGBaseElement.prototype = { - initRendererElement: function () { - this.layerElement = createNS('g'); - }, - createContainerElements: function () { - this.matteElement = createNS('g'); - this.transformedElement = this.layerElement; - this.maskedElement = this.layerElement; - this._sizeChanged = false; - var layerElementParent = null; - // If this layer acts as a mask for the following layer - var filId; - var fil; - var gg; - if (this.data.td) { - if (this.data.td == 3 || this.data.td == 1) { // eslint-disable-line eqeqeq - var masker = createNS('mask'); - masker.setAttribute('id', this.layerId); - masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq - masker.appendChild(this.layerElement); - layerElementParent = masker; - this.globalData.defs.appendChild(masker); - // This is only for IE and Edge when mask if of type alpha - if (!featureSupport.maskType && this.data.td == 1) { // eslint-disable-line eqeqeq - masker.setAttribute('mask-type', 'luminance'); - filId = createElementID(); - fil = filtersFactory.createFilter(filId); - this.globalData.defs.appendChild(fil); - fil.appendChild(filtersFactory.createAlphaToLuminanceFilter()); - gg = createNS('g'); - gg.appendChild(this.layerElement); - layerElementParent = gg; - masker.appendChild(gg); - gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')'); - } - } else if (this.data.td == 2) { // eslint-disable-line eqeqeq - var maskGroup = createNS('mask'); - maskGroup.setAttribute('id', this.layerId); - maskGroup.setAttribute('mask-type', 'alpha'); - var maskGrouper = createNS('g'); - maskGroup.appendChild(maskGrouper); - filId = createElementID(); - fil = filtersFactory.createFilter(filId); - /// / - - // This solution doesn't work on Android when meta tag with viewport attribute is set - /* var feColorMatrix = createNS('feColorMatrix'); - feColorMatrix.setAttribute('type', 'matrix'); - feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB'); - feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1'); - fil.appendChild(feColorMatrix); */ - /// / - var feCTr = createNS('feComponentTransfer'); - feCTr.setAttribute('in', 'SourceGraphic'); - fil.appendChild(feCTr); - var feFunc = createNS('feFuncA'); - feFunc.setAttribute('type', 'table'); - feFunc.setAttribute('tableValues', '1.0 0.0'); - feCTr.appendChild(feFunc); - /// / - this.globalData.defs.appendChild(fil); - var alphaRect = createNS('rect'); - alphaRect.setAttribute('width', this.comp.data.w); - alphaRect.setAttribute('height', this.comp.data.h); - alphaRect.setAttribute('x', '0'); - alphaRect.setAttribute('y', '0'); - alphaRect.setAttribute('fill', '#ffffff'); - alphaRect.setAttribute('opacity', '0'); - maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')'); - maskGrouper.appendChild(alphaRect); - maskGrouper.appendChild(this.layerElement); - layerElementParent = maskGrouper; - if (!featureSupport.maskType) { - maskGroup.setAttribute('mask-type', 'luminance'); - fil.appendChild(filtersFactory.createAlphaToLuminanceFilter()); - gg = createNS('g'); - maskGrouper.appendChild(alphaRect); - gg.appendChild(this.layerElement); - layerElementParent = gg; - maskGrouper.appendChild(gg); - } - this.globalData.defs.appendChild(maskGroup); - } - } else if (this.data.tt) { - this.matteElement.appendChild(this.layerElement); - layerElementParent = this.matteElement; - this.baseElement = this.matteElement; - } else { - this.baseElement = this.layerElement; - } - if (this.data.ln) { - this.layerElement.setAttribute('id', this.data.ln); - } - if (this.data.cl) { - this.layerElement.setAttribute('class', this.data.cl); - } - // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped - if (this.data.ty === 0 && !this.data.hd) { - var cp = createNS('clipPath'); - var pt = createNS('path'); - pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z'); - var clipId = createElementID(); - cp.setAttribute('id', clipId); - cp.appendChild(pt); - this.globalData.defs.appendChild(cp); - - if (this.checkMasks()) { - var cpGroup = createNS('g'); - cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')'); - cpGroup.appendChild(this.layerElement); - this.transformedElement = cpGroup; - if (layerElementParent) { - layerElementParent.appendChild(this.transformedElement); - } else { - this.baseElement = this.transformedElement; - } - } else { - this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')'); - } - } - if (this.data.bm !== 0) { - this.setBlendMode(); - } - }, - renderElement: function () { - if (this.finalTransform._matMdf) { - this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS()); - } - if (this.finalTransform._opMdf) { - this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v); - } - }, - destroyBaseElement: function () { - this.layerElement = null; - this.matteElement = null; - this.maskManager.destroy(); - }, - getBaseElement: function () { - if (this.data.hd) { - return null; - } - return this.baseElement; - }, - createRenderableComponents: function () { - this.maskManager = new MaskElement(this.data, this, this.globalData); - this.renderableEffectsManager = new SVGEffects(this); - }, - setMatte: function (id) { - if (!this.matteElement) { - return; - } - this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')'); - }, -}; - -/** - * @file - * Handles AE's layer parenting property. - * - */ - -function HierarchyElement() {} - -HierarchyElement.prototype = { - /** - * @function - * Initializes hierarchy properties - * - */ - initHierarchy: function () { - // element's parent list - this.hierarchy = []; - // if element is parent of another layer _isParent will be true - this._isParent = false; - this.checkParenting(); - }, - /** - * @function - * Sets layer's hierarchy. - * @param {array} hierarch - * layer's parent list - * - */ - setHierarchy: function (hierarchy) { - this.hierarchy = hierarchy; - }, - /** - * @function - * Sets layer as parent. - * - */ - setAsParent: function () { - this._isParent = true; - }, - /** - * @function - * Searches layer's parenting chain - * - */ - checkParenting: function () { - if (this.data.parent !== undefined) { - this.comp.buildElementParenting(this, this.data.parent, []); - } - }, -}; - -function RenderableDOMElement() {} - -(function () { - var _prototype = { - initElement: function (data, globalData, comp) { - this.initFrame(); - this.initBaseData(data, globalData, comp); - this.initTransform(data, globalData, comp); - this.initHierarchy(); - this.initRenderable(); - this.initRendererElement(); - this.createContainerElements(); - this.createRenderableComponents(); - this.createContent(); - this.hide(); - }, - hide: function () { - // console.log('HIDE', this); - if (!this.hidden && (!this.isInRange || this.isTransparent)) { - var elem = this.baseElement || this.layerElement; - elem.style.display = 'none'; - this.hidden = true; - } - }, - show: function () { - // console.log('SHOW', this); - if (this.isInRange && !this.isTransparent) { - if (!this.data.hd) { - var elem = this.baseElement || this.layerElement; - elem.style.display = 'block'; - } - this.hidden = false; - this._isFirstFrame = true; - } - }, - renderFrame: function () { - // If it is exported as hidden (data.hd === true) no need to render - // If it is not visible no need to render - if (this.data.hd || this.hidden) { - return; - } - this.renderTransform(); - this.renderRenderable(); - this.renderElement(); - this.renderInnerContent(); - if (this._isFirstFrame) { - this._isFirstFrame = false; - } - }, - renderInnerContent: function () {}, - prepareFrame: function (num) { - this._mdf = false; - this.prepareRenderableFrame(num); - this.prepareProperties(num, this.isInRange); - this.checkTransparency(); - }, - destroy: function () { - this.innerElem = null; - this.destroyBaseElement(); - }, - }; - extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement); -}()); - -function IImageElement(data, globalData, comp) { - this.assetData = globalData.getAssetData(data.refId); - this.initElement(data, globalData, comp); - this.sourceRect = { - top: 0, left: 0, width: this.assetData.w, height: this.assetData.h, - }; -} - -extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement); - -IImageElement.prototype.createContent = function () { - var assetPath = this.globalData.getAssetsPath(this.assetData); - - this.innerElem = createNS('image'); - this.innerElem.setAttribute('width', this.assetData.w + 'px'); - this.innerElem.setAttribute('height', this.assetData.h + 'px'); - this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio); - this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath); - - this.layerElement.appendChild(this.innerElem); -}; - -IImageElement.prototype.sourceRectAtTime = function () { - return this.sourceRect; -}; - -function ProcessedElement(element, position) { - this.elem = element; - this.pos = position; -} - -function IShapeElement() { -} - -IShapeElement.prototype = { - addShapeToModifiers: function (data) { - var i; - var len = this.shapeModifiers.length; - for (i = 0; i < len; i += 1) { - this.shapeModifiers[i].addShape(data); - } - }, - isShapeInAnimatedModifiers: function (data) { - var i = 0; - var len = this.shapeModifiers.length; - while (i < len) { - if (this.shapeModifiers[i].isAnimatedWithShape(data)) { - return true; - } - } - return false; - }, - renderModifiers: function () { - if (!this.shapeModifiers.length) { - return; - } - var i; - var len = this.shapes.length; - for (i = 0; i < len; i += 1) { - this.shapes[i].sh.reset(); - } - - len = this.shapeModifiers.length; - var shouldBreakProcess; - for (i = len - 1; i >= 0; i -= 1) { - shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); - // workaround to fix cases where a repeater resets the shape so the following processes get called twice - // TODO: find a better solution for this - if (shouldBreakProcess) { - break; - } - } - }, - - searchProcessedElement: function (elem) { - var elements = this.processedElements; - var i = 0; - var len = elements.length; - while (i < len) { - if (elements[i].elem === elem) { - return elements[i].pos; - } - i += 1; - } - return 0; - }, - addProcessedElement: function (elem, pos) { - var elements = this.processedElements; - var i = elements.length; - while (i) { - i -= 1; - if (elements[i].elem === elem) { - elements[i].pos = pos; - return; - } - } - elements.push(new ProcessedElement(elem, pos)); - }, - prepareFrame: function (num) { - this.prepareRenderableFrame(num); - this.prepareProperties(num, this.isInRange); - }, -}; - -const lineCapEnum = { - 1: 'butt', - 2: 'round', - 3: 'square', -}; - -const lineJoinEnum = { - 1: 'miter', - 2: 'round', - 3: 'bevel', -}; - -function SVGShapeData(transformers, level, shape) { - this.caches = []; - this.styles = []; - this.transformers = transformers; - this.lStr = ''; - this.sh = shape; - this.lvl = level; - // TODO find if there are some cases where _isAnimated can be false. - // For now, since shapes add up with other shapes. They have to be calculated every time. - // One way of finding out is checking if all styles associated to this shape depend only of this shape - this._isAnimated = !!shape.k; - // TODO: commenting this for now since all shapes are animated - var i = 0; - var len = transformers.length; - while (i < len) { - if (transformers[i].mProps.dynamicProperties.length) { - this._isAnimated = true; - break; - } - i += 1; - } -} - -SVGShapeData.prototype.setAsAnimated = function () { - this._isAnimated = true; -}; - -function SVGStyleData(data, level) { - this.data = data; - this.type = data.ty; - this.d = ''; - this.lvl = level; - this._mdf = false; - this.closed = data.hd === true; - this.pElem = createNS('path'); - this.msElem = null; -} - -SVGStyleData.prototype.reset = function () { - this.d = ''; - this._mdf = false; -}; - -function DashProperty(elem, data, renderer, container) { - this.elem = elem; - this.frameId = -1; - this.dataProps = createSizedArray(data.length); - this.renderer = renderer; - this.k = false; - this.dashStr = ''; - this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0); - this.dashoffset = createTypedArray('float32', 1); - this.initDynamicPropertyContainer(container); - var i; - var len = data.length || 0; - var prop; - for (i = 0; i < len; i += 1) { - prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this); - this.k = prop.k || this.k; - this.dataProps[i] = { n: data[i].n, p: prop }; - } - if (!this.k) { - this.getValue(true); - } - this._isAnimated = this.k; -} - -DashProperty.prototype.getValue = function (forceRender) { - if (this.elem.globalData.frameId === this.frameId && !forceRender) { - return; - } - this.frameId = this.elem.globalData.frameId; - this.iterateDynamicProperties(); - this._mdf = this._mdf || forceRender; - if (this._mdf) { - var i = 0; - var len = this.dataProps.length; - if (this.renderer === 'svg') { - this.dashStr = ''; - } - for (i = 0; i < len; i += 1) { - if (this.dataProps[i].n !== 'o') { - if (this.renderer === 'svg') { - this.dashStr += ' ' + this.dataProps[i].p.v; - } else { - this.dashArray[i] = this.dataProps[i].p.v; - } - } else { - this.dashoffset[0] = this.dataProps[i].p.v; - } - } - } -}; -extendPrototype([DynamicPropertyContainer], DashProperty); - -function SVGStrokeStyleData(elem, data, styleOb) { - this.initDynamicPropertyContainer(elem); - this.getValue = this.iterateDynamicProperties; - this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this); - this.w = PropertyFactory.getProp(elem, data.w, 0, null, this); - this.d = new DashProperty(elem, data.d || {}, 'svg', this); - this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this); - this.style = styleOb; - this._isAnimated = !!this._isAnimated; -} - -extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData); - -function SVGFillStyleData(elem, data, styleOb) { - this.initDynamicPropertyContainer(elem); - this.getValue = this.iterateDynamicProperties; - this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this); - this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this); - this.style = styleOb; -} - -extendPrototype([DynamicPropertyContainer], SVGFillStyleData); - -function SVGNoStyleData(elem, data, styleOb) { - this.initDynamicPropertyContainer(elem); - this.getValue = this.iterateDynamicProperties; - this.style = styleOb; -} - -extendPrototype([DynamicPropertyContainer], SVGNoStyleData); - -function GradientProperty(elem, data, container) { - this.data = data; - this.c = createTypedArray('uint8c', data.p * 4); - var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4; - this.o = createTypedArray('float32', cLength); - this._cmdf = false; - this._omdf = false; - this._collapsable = this.checkCollapsable(); - this._hasOpacity = cLength; - this.initDynamicPropertyContainer(container); - this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this); - this.k = this.prop.k; - this.getValue(true); -} - -GradientProperty.prototype.comparePoints = function (values, points) { - var i = 0; - var len = this.o.length / 2; - var diff; - while (i < len) { - diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]); - if (diff > 0.01) { - return false; - } - i += 1; - } - return true; -}; - -GradientProperty.prototype.checkCollapsable = function () { - if (this.o.length / 2 !== this.c.length / 4) { - return false; - } - if (this.data.k.k[0].s) { - var i = 0; - var len = this.data.k.k.length; - while (i < len) { - if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) { - return false; - } - i += 1; - } - } else if (!this.comparePoints(this.data.k.k, this.data.p)) { - return false; - } - return true; -}; - -GradientProperty.prototype.getValue = function (forceRender) { - this.prop.getValue(); - this._mdf = false; - this._cmdf = false; - this._omdf = false; - if (this.prop._mdf || forceRender) { - var i; - var len = this.data.p * 4; - var mult; - var val; - for (i = 0; i < len; i += 1) { - mult = i % 4 === 0 ? 100 : 255; - val = Math.round(this.prop.v[i] * mult); - if (this.c[i] !== val) { - this.c[i] = val; - this._cmdf = !forceRender; - } - } - if (this.o.length) { - len = this.prop.v.length; - for (i = this.data.p * 4; i < len; i += 1) { - mult = i % 2 === 0 ? 100 : 1; - val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i]; - if (this.o[i - this.data.p * 4] !== val) { - this.o[i - this.data.p * 4] = val; - this._omdf = !forceRender; - } - } - } - this._mdf = !forceRender; - } -}; - -extendPrototype([DynamicPropertyContainer], GradientProperty); - -function SVGGradientFillStyleData(elem, data, styleOb) { - this.initDynamicPropertyContainer(elem); - this.getValue = this.iterateDynamicProperties; - this.initGradientData(elem, data, styleOb); -} - -SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) { - this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this); - this.s = PropertyFactory.getProp(elem, data.s, 1, null, this); - this.e = PropertyFactory.getProp(elem, data.e, 1, null, this); - this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this); - this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this); - this.g = new GradientProperty(elem, data.g, this); - this.style = styleOb; - this.stops = []; - this.setGradientData(styleOb.pElem, data); - this.setGradientOpacity(data, styleOb); - this._isAnimated = !!this._isAnimated; -}; - -SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) { - var gradientId = createElementID(); - var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient'); - gfill.setAttribute('id', gradientId); - gfill.setAttribute('spreadMethod', 'pad'); - gfill.setAttribute('gradientUnits', 'userSpaceOnUse'); - var stops = []; - var stop; - var j; - var jLen; - jLen = data.g.p * 4; - for (j = 0; j < jLen; j += 4) { - stop = createNS('stop'); - gfill.appendChild(stop); - stops.push(stop); - } - pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')'); - this.gf = gfill; - this.cst = stops; -}; - -SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) { - if (this.g._hasOpacity && !this.g._collapsable) { - var stop; - var j; - var jLen; - var mask = createNS('mask'); - var maskElement = createNS('path'); - mask.appendChild(maskElement); - var opacityId = createElementID(); - var maskId = createElementID(); - mask.setAttribute('id', maskId); - var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient'); - opFill.setAttribute('id', opacityId); - opFill.setAttribute('spreadMethod', 'pad'); - opFill.setAttribute('gradientUnits', 'userSpaceOnUse'); - jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length; - var stops = this.stops; - for (j = data.g.p * 4; j < jLen; j += 2) { - stop = createNS('stop'); - stop.setAttribute('stop-color', 'rgb(255,255,255)'); - opFill.appendChild(stop); - stops.push(stop); - } - maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')'); - if (data.ty === 'gs') { - maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]); - maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]); - if (data.lj === 1) { - maskElement.setAttribute('stroke-miterlimit', data.ml); - } - } - this.of = opFill; - this.ms = mask; - this.ost = stops; - this.maskId = maskId; - styleOb.msElem = maskElement; - } -}; - -extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData); - -function SVGGradientStrokeStyleData(elem, data, styleOb) { - this.initDynamicPropertyContainer(elem); - this.getValue = this.iterateDynamicProperties; - this.w = PropertyFactory.getProp(elem, data.w, 0, null, this); - this.d = new DashProperty(elem, data.d || {}, 'svg', this); - this.initGradientData(elem, data, styleOb); - this._isAnimated = !!this._isAnimated; -} - -extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData); - -function ShapeGroupData() { - this.it = []; - this.prevViewData = []; - this.gr = createNS('g'); -} - -function SVGTransformData(mProps, op, container) { - this.transform = { - mProps: mProps, - op: op, - container: container, - }; - this.elements = []; - this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length; -} - -const buildShapeString = function (pathNodes, length, closed, mat) { - if (length === 0) { - return ''; - } - var _o = pathNodes.o; - var _i = pathNodes.i; - var _v = pathNodes.v; - var i; - var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]); - for (i = 1; i < length; i += 1) { - shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]); - } - if (closed && length) { - shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]); - shapeString += 'z'; - } - return shapeString; -}; - -const SVGElementsRenderer = (function () { - var _identityMatrix = new Matrix(); - var _matrixHelper = new Matrix(); - - var ob = { - createRenderFunction: createRenderFunction, - }; - - function createRenderFunction(data) { - switch (data.ty) { - case 'fl': - return renderFill; - case 'gf': - return renderGradient; - case 'gs': - return renderGradientStroke; - case 'st': - return renderStroke; - case 'sh': - case 'el': - case 'rc': - case 'sr': - return renderPath; - case 'tr': - return renderContentTransform; - case 'no': - return renderNoop; - default: - return null; - } - } - - function renderContentTransform(styleData, itemData, isFirstFrame) { - if (isFirstFrame || itemData.transform.op._mdf) { - itemData.transform.container.setAttribute('opacity', itemData.transform.op.v); - } - if (isFirstFrame || itemData.transform.mProps._mdf) { - itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS()); - } - } - - function renderNoop() { - - } - - function renderPath(styleData, itemData, isFirstFrame) { - var j; - var jLen; - var pathStringTransformed; - var redraw; - var pathNodes; - var l; - var lLen = itemData.styles.length; - var lvl = itemData.lvl; - var paths; - var mat; - var props; - var iterations; - var k; - for (l = 0; l < lLen; l += 1) { - redraw = itemData.sh._mdf || isFirstFrame; - if (itemData.styles[l].lvl < lvl) { - mat = _matrixHelper.reset(); - iterations = lvl - itemData.styles[l].lvl; - k = itemData.transformers.length - 1; - while (!redraw && iterations > 0) { - redraw = itemData.transformers[k].mProps._mdf || redraw; - iterations -= 1; - k -= 1; - } - if (redraw) { - iterations = lvl - itemData.styles[l].lvl; - k = itemData.transformers.length - 1; - while (iterations > 0) { - props = itemData.transformers[k].mProps.v.props; - mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]); - iterations -= 1; - k -= 1; - } - } - } else { - mat = _identityMatrix; - } - paths = itemData.sh.paths; - jLen = paths._length; - if (redraw) { - pathStringTransformed = ''; - for (j = 0; j < jLen; j += 1) { - pathNodes = paths.shapes[j]; - if (pathNodes && pathNodes._length) { - pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat); - } - } - itemData.caches[l] = pathStringTransformed; - } else { - pathStringTransformed = itemData.caches[l]; - } - itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed; - itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf; - } - } - - function renderFill(styleData, itemData, isFirstFrame) { - var styleElem = itemData.style; - - if (itemData.c._mdf || isFirstFrame) { - styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'); - } - if (itemData.o._mdf || isFirstFrame) { - styleElem.pElem.setAttribute('fill-opacity', itemData.o.v); - } - } - - function renderGradientStroke(styleData, itemData, isFirstFrame) { - renderGradient(styleData, itemData, isFirstFrame); - renderStroke(styleData, itemData, isFirstFrame); - } - - function renderGradient(styleData, itemData, isFirstFrame) { - var gfill = itemData.gf; - var hasOpacity = itemData.g._hasOpacity; - var pt1 = itemData.s.v; - var pt2 = itemData.e.v; - - if (itemData.o._mdf || isFirstFrame) { - var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity'; - itemData.style.pElem.setAttribute(attr, itemData.o.v); - } - if (itemData.s._mdf || isFirstFrame) { - var attr1 = styleData.t === 1 ? 'x1' : 'cx'; - var attr2 = attr1 === 'x1' ? 'y1' : 'cy'; - gfill.setAttribute(attr1, pt1[0]); - gfill.setAttribute(attr2, pt1[1]); - if (hasOpacity && !itemData.g._collapsable) { - itemData.of.setAttribute(attr1, pt1[0]); - itemData.of.setAttribute(attr2, pt1[1]); - } - } - var stops; - var i; - var len; - var stop; - if (itemData.g._cmdf || isFirstFrame) { - stops = itemData.cst; - var cValues = itemData.g.c; - len = stops.length; - for (i = 0; i < len; i += 1) { - stop = stops[i]; - stop.setAttribute('offset', cValues[i * 4] + '%'); - stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')'); - } - } - if (hasOpacity && (itemData.g._omdf || isFirstFrame)) { - var oValues = itemData.g.o; - if (itemData.g._collapsable) { - stops = itemData.cst; - } else { - stops = itemData.ost; - } - len = stops.length; - for (i = 0; i < len; i += 1) { - stop = stops[i]; - if (!itemData.g._collapsable) { - stop.setAttribute('offset', oValues[i * 2] + '%'); - } - stop.setAttribute('stop-opacity', oValues[i * 2 + 1]); - } - } - if (styleData.t === 1) { - if (itemData.e._mdf || isFirstFrame) { - gfill.setAttribute('x2', pt2[0]); - gfill.setAttribute('y2', pt2[1]); - if (hasOpacity && !itemData.g._collapsable) { - itemData.of.setAttribute('x2', pt2[0]); - itemData.of.setAttribute('y2', pt2[1]); - } - } - } else { - var rad; - if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) { - rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); - gfill.setAttribute('r', rad); - if (hasOpacity && !itemData.g._collapsable) { - itemData.of.setAttribute('r', rad); - } - } - if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) { - if (!rad) { - rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); - } - var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]); - - var percent = itemData.h.v; - if (percent >= 1) { - percent = 0.99; - } else if (percent <= -1) { - percent = -0.99; - } - var dist = rad * percent; - var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]; - var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]; - gfill.setAttribute('fx', x); - gfill.setAttribute('fy', y); - if (hasOpacity && !itemData.g._collapsable) { - itemData.of.setAttribute('fx', x); - itemData.of.setAttribute('fy', y); - } - } - // gfill.setAttribute('fy','200'); - } - } - - function renderStroke(styleData, itemData, isFirstFrame) { - var styleElem = itemData.style; - var d = itemData.d; - if (d && (d._mdf || isFirstFrame) && d.dashStr) { - styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr); - styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]); - } - if (itemData.c && (itemData.c._mdf || isFirstFrame)) { - styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'); - } - if (itemData.o._mdf || isFirstFrame) { - styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v); - } - if (itemData.w._mdf || isFirstFrame) { - styleElem.pElem.setAttribute('stroke-width', itemData.w.v); - if (styleElem.msElem) { - styleElem.msElem.setAttribute('stroke-width', itemData.w.v); - } - } - } - - return ob; -}()); - -function SVGShapeElement(data, globalData, comp) { - // List of drawable elements - this.shapes = []; - // Full shape data - this.shapesData = data.shapes; - // List of styles that will be applied to shapes - this.stylesList = []; - // List of modifiers that will be applied to shapes - this.shapeModifiers = []; - // List of items in shape tree - this.itemsData = []; - // List of items in previous shape tree - this.processedElements = []; - // List of animated components - this.animatedContents = []; - this.initElement(data, globalData, comp); - // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties. - // List of elements that have been created - this.prevViewData = []; - // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties. -} - -extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement); - -SVGShapeElement.prototype.initSecondaryElement = function () { -}; - -SVGShapeElement.prototype.identityMatrix = new Matrix(); - -SVGShapeElement.prototype.buildExpressionInterface = function () {}; - -SVGShapeElement.prototype.createContent = function () { - this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true); - this.filterUniqueShapes(); -}; - -/* -This method searches for multiple shapes that affect a single element and one of them is animated -*/ -SVGShapeElement.prototype.filterUniqueShapes = function () { - var i; - var len = this.shapes.length; - var shape; - var j; - var jLen = this.stylesList.length; - var style; - var tempShapes = []; - var areAnimated = false; - for (j = 0; j < jLen; j += 1) { - style = this.stylesList[j]; - areAnimated = false; - tempShapes.length = 0; - for (i = 0; i < len; i += 1) { - shape = this.shapes[i]; - if (shape.styles.indexOf(style) !== -1) { - tempShapes.push(shape); - areAnimated = shape._isAnimated || areAnimated; - } - } - if (tempShapes.length > 1 && areAnimated) { - this.setShapesAsAnimated(tempShapes); - } - } -}; - -SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) { - var i; - var len = shapes.length; - for (i = 0; i < len; i += 1) { - shapes[i].setAsAnimated(); - } -}; - -SVGShapeElement.prototype.createStyleElement = function (data, level) { - // TODO: prevent drawing of hidden styles - var elementData; - var styleOb = new SVGStyleData(data, level); - - var pathElement = styleOb.pElem; - if (data.ty === 'st') { - elementData = new SVGStrokeStyleData(this, data, styleOb); - } else if (data.ty === 'fl') { - elementData = new SVGFillStyleData(this, data, styleOb); - } else if (data.ty === 'gf' || data.ty === 'gs') { - var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData; - elementData = new GradientConstructor(this, data, styleOb); - this.globalData.defs.appendChild(elementData.gf); - if (elementData.maskId) { - this.globalData.defs.appendChild(elementData.ms); - this.globalData.defs.appendChild(elementData.of); - pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')'); - } - } else if (data.ty === 'no') { - elementData = new SVGNoStyleData(this, data, styleOb); - } - - if (data.ty === 'st' || data.ty === 'gs') { - pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]); - pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]); - pathElement.setAttribute('fill-opacity', '0'); - if (data.lj === 1) { - pathElement.setAttribute('stroke-miterlimit', data.ml); - } - } - - if (data.r === 2) { - pathElement.setAttribute('fill-rule', 'evenodd'); - } - - if (data.ln) { - pathElement.setAttribute('id', data.ln); - } - if (data.cl) { - pathElement.setAttribute('class', data.cl); - } - if (data.bm) { - pathElement.style['mix-blend-mode'] = getBlendMode(data.bm); - } - this.stylesList.push(styleOb); - this.addToAnimatedContents(data, elementData); - return elementData; -}; - -SVGShapeElement.prototype.createGroupElement = function (data) { - var elementData = new ShapeGroupData(); - if (data.ln) { - elementData.gr.setAttribute('id', data.ln); - } - if (data.cl) { - elementData.gr.setAttribute('class', data.cl); - } - if (data.bm) { - elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm); - } - return elementData; -}; - -SVGShapeElement.prototype.createTransformElement = function (data, container) { - var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this); - var elementData = new SVGTransformData(transformProperty, transformProperty.o, container); - this.addToAnimatedContents(data, elementData); - return elementData; -}; - -SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) { - var ty = 4; - if (data.ty === 'rc') { - ty = 5; - } else if (data.ty === 'el') { - ty = 6; - } else if (data.ty === 'sr') { - ty = 7; - } - var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this); - var elementData = new SVGShapeData(ownTransformers, level, shapeProperty); - this.shapes.push(elementData); - this.addShapeToModifiers(elementData); - this.addToAnimatedContents(data, elementData); - return elementData; -}; - -SVGShapeElement.prototype.addToAnimatedContents = function (data, element) { - var i = 0; - var len = this.animatedContents.length; - while (i < len) { - if (this.animatedContents[i].element === element) { - return; - } - i += 1; - } - this.animatedContents.push({ - fn: SVGElementsRenderer.createRenderFunction(data), - element: element, - data: data, - }); -}; - -SVGShapeElement.prototype.setElementStyles = function (elementData) { - var arr = elementData.styles; - var j; - var jLen = this.stylesList.length; - for (j = 0; j < jLen; j += 1) { - if (!this.stylesList[j].closed) { - arr.push(this.stylesList[j]); - } - } -}; - -SVGShapeElement.prototype.reloadShapes = function () { - this._isFirstFrame = true; - var i; - var len = this.itemsData.length; - for (i = 0; i < len; i += 1) { - this.prevViewData[i] = this.itemsData[i]; - } - this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true); - this.filterUniqueShapes(); - len = this.dynamicProperties.length; - for (i = 0; i < len; i += 1) { - this.dynamicProperties[i].getValue(); - } - this.renderModifiers(); -}; - -SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) { - var ownTransformers = [].concat(transformers); - var i; - var len = arr.length - 1; - var j; - var jLen; - var ownStyles = []; - var ownModifiers = []; - var currentTransform; - var modifier; - var processedPos; - for (i = len; i >= 0; i -= 1) { - processedPos = this.searchProcessedElement(arr[i]); - if (!processedPos) { - arr[i]._render = render; - } else { - itemsData[i] = prevViewData[processedPos - 1]; - } - if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') { - if (!processedPos) { - itemsData[i] = this.createStyleElement(arr[i], level); - } else { - itemsData[i].style.closed = false; - } - if (arr[i]._render) { - if (itemsData[i].style.pElem.parentNode !== container) { - container.appendChild(itemsData[i].style.pElem); - } - } - ownStyles.push(itemsData[i].style); - } else if (arr[i].ty === 'gr') { - if (!processedPos) { - itemsData[i] = this.createGroupElement(arr[i]); - } else { - jLen = itemsData[i].it.length; - for (j = 0; j < jLen; j += 1) { - itemsData[i].prevViewData[j] = itemsData[i].it[j]; - } - } - this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render); - if (arr[i]._render) { - if (itemsData[i].gr.parentNode !== container) { - container.appendChild(itemsData[i].gr); - } - } - } else if (arr[i].ty === 'tr') { - if (!processedPos) { - itemsData[i] = this.createTransformElement(arr[i], container); - } - currentTransform = itemsData[i].transform; - ownTransformers.push(currentTransform); - } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') { - if (!processedPos) { - itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level); - } - this.setElementStyles(itemsData[i]); - } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') { - if (!processedPos) { - modifier = ShapeModifiers.getModifier(arr[i].ty); - modifier.init(this, arr[i]); - itemsData[i] = modifier; - this.shapeModifiers.push(modifier); - } else { - modifier = itemsData[i]; - modifier.closed = false; - } - ownModifiers.push(modifier); - } else if (arr[i].ty === 'rp') { - if (!processedPos) { - modifier = ShapeModifiers.getModifier(arr[i].ty); - itemsData[i] = modifier; - modifier.init(this, arr, i, itemsData); - this.shapeModifiers.push(modifier); - render = false; - } else { - modifier = itemsData[i]; - modifier.closed = true; - } - ownModifiers.push(modifier); - } - this.addProcessedElement(arr[i], i + 1); - } - len = ownStyles.length; - for (i = 0; i < len; i += 1) { - ownStyles[i].closed = true; - } - len = ownModifiers.length; - for (i = 0; i < len; i += 1) { - ownModifiers[i].closed = true; - } -}; - -SVGShapeElement.prototype.renderInnerContent = function () { - this.renderModifiers(); - var i; - var len = this.stylesList.length; - for (i = 0; i < len; i += 1) { - this.stylesList[i].reset(); - } - this.renderShape(); - for (i = 0; i < len; i += 1) { - if (this.stylesList[i]._mdf || this._isFirstFrame) { - if (this.stylesList[i].msElem) { - this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); - // Adding M0 0 fixes same mask bug on all browsers - this.stylesList[i].d = 'M0 0' + this.stylesList[i].d; - } - this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0'); - } - } -}; - -SVGShapeElement.prototype.renderShape = function () { - var i; - var len = this.animatedContents.length; - var animatedContent; - for (i = 0; i < len; i += 1) { - animatedContent = this.animatedContents[i]; - if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) { - animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame); - } - } -}; - -SVGShapeElement.prototype.destroy = function () { - this.destroyBaseElement(); - this.shapesData = null; - this.itemsData = null; -}; - -function LetterProps(o, sw, sc, fc, m, p) { - this.o = o; - this.sw = sw; - this.sc = sc; - this.fc = fc; - this.m = m; - this.p = p; - this._mdf = { - o: true, - sw: !!sw, - sc: !!sc, - fc: !!fc, - m: true, - p: true, - }; -} - -LetterProps.prototype.update = function (o, sw, sc, fc, m, p) { - this._mdf.o = false; - this._mdf.sw = false; - this._mdf.sc = false; - this._mdf.fc = false; - this._mdf.m = false; - this._mdf.p = false; - var updated = false; - - if (this.o !== o) { - this.o = o; - this._mdf.o = true; - updated = true; - } - if (this.sw !== sw) { - this.sw = sw; - this._mdf.sw = true; - updated = true; - } - if (this.sc !== sc) { - this.sc = sc; - this._mdf.sc = true; - updated = true; - } - if (this.fc !== fc) { - this.fc = fc; - this._mdf.fc = true; - updated = true; - } - if (this.m !== m) { - this.m = m; - this._mdf.m = true; - updated = true; - } - if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) { - this.p = p; - this._mdf.p = true; - updated = true; - } - return updated; -}; - -function TextProperty(elem, data) { - this._frameId = initialDefaultFrame; - this.pv = ''; - this.v = ''; - this.kf = false; - this._isFirstFrame = true; - this._mdf = false; - this.data = data; - this.elem = elem; - this.comp = this.elem.comp; - this.keysIndex = 0; - this.canResize = false; - this.minimumFontSize = 1; - this.effectsSequence = []; - this.currentData = { - ascent: 0, - boxWidth: this.defaultBoxWidth, - f: '', - fStyle: '', - fWeight: '', - fc: '', - j: '', - justifyOffset: '', - l: [], - lh: 0, - lineWidths: [], - ls: '', - of: '', - s: '', - sc: '', - sw: 0, - t: 0, - tr: 0, - sz: 0, - ps: null, - fillColorAnim: false, - strokeColorAnim: false, - strokeWidthAnim: false, - yOffset: 0, - finalSize: 0, - finalText: [], - finalLineHeight: 0, - __complete: false, - - }; - this.copyData(this.currentData, this.data.d.k[0].s); - - if (!this.searchProperty()) { - this.completeTextData(this.currentData); - } -} - -TextProperty.prototype.defaultBoxWidth = [0, 0]; - -TextProperty.prototype.copyData = function (obj, data) { - for (var s in data) { - if (Object.prototype.hasOwnProperty.call(data, s)) { - obj[s] = data[s]; - } - } - return obj; -}; - -TextProperty.prototype.setCurrentData = function (data) { - if (!data.__complete) { - this.completeTextData(data); - } - this.currentData = data; - this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth; - this._mdf = true; -}; - -TextProperty.prototype.searchProperty = function () { - return this.searchKeyframes(); -}; - -TextProperty.prototype.searchKeyframes = function () { - this.kf = this.data.d.k.length > 1; - if (this.kf) { - this.addEffect(this.getKeyframeValue.bind(this)); - } - return this.kf; -}; - -TextProperty.prototype.addEffect = function (effectFunction) { - this.effectsSequence.push(effectFunction); - this.elem.addDynamicProperty(this); -}; - -TextProperty.prototype.getValue = function (_finalValue) { - if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) { - return; - } - this.currentData.t = this.data.d.k[this.keysIndex].s.t; - var currentValue = this.currentData; - var currentIndex = this.keysIndex; - if (this.lock) { - this.setCurrentData(this.currentData); - return; - } - this.lock = true; - this._mdf = false; - var i; var - len = this.effectsSequence.length; - var finalValue = _finalValue || this.data.d.k[this.keysIndex].s; - for (i = 0; i < len; i += 1) { - // Checking if index changed to prevent creating a new object every time the expression updates. - if (currentIndex !== this.keysIndex) { - finalValue = this.effectsSequence[i](finalValue, finalValue.t); - } else { - finalValue = this.effectsSequence[i](this.currentData, finalValue.t); - } - } - if (currentValue !== finalValue) { - this.setCurrentData(finalValue); - } - this.v = this.currentData; - this.pv = this.v; - this.lock = false; - this.frameId = this.elem.globalData.frameId; -}; - -TextProperty.prototype.getKeyframeValue = function () { - var textKeys = this.data.d.k; - var frameNum = this.elem.comp.renderedFrame; - var i = 0; var - len = textKeys.length; - while (i <= len - 1) { - if (i === len - 1 || textKeys[i + 1].t > frameNum) { - break; - } - i += 1; - } - if (this.keysIndex !== i) { - this.keysIndex = i; - } - return this.data.d.k[this.keysIndex].s; -}; - -TextProperty.prototype.buildFinalText = function (text) { - var charactersArray = []; - var i = 0; - var len = text.length; - var charCode; - var secondCharCode; - var shouldCombine = false; - while (i < len) { - charCode = text.charCodeAt(i); - if (FontManager.isCombinedCharacter(charCode)) { - charactersArray[charactersArray.length - 1] += text.charAt(i); - } else if (charCode >= 0xD800 && charCode <= 0xDBFF) { - secondCharCode = text.charCodeAt(i + 1); - if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) { - if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) { - charactersArray[charactersArray.length - 1] += text.substr(i, 2); - shouldCombine = false; - } else { - charactersArray.push(text.substr(i, 2)); - } - i += 1; - } else { - charactersArray.push(text.charAt(i)); - } - } else if (charCode > 0xDBFF) { - secondCharCode = text.charCodeAt(i + 1); - if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) { - shouldCombine = true; - charactersArray[charactersArray.length - 1] += text.substr(i, 2); - i += 1; - } else { - charactersArray.push(text.charAt(i)); - } - } else if (FontManager.isZeroWidthJoiner(charCode)) { - charactersArray[charactersArray.length - 1] += text.charAt(i); - shouldCombine = true; - } else { - charactersArray.push(text.charAt(i)); - } - i += 1; - } - return charactersArray; -}; - -TextProperty.prototype.completeTextData = function (documentData) { - documentData.__complete = true; - var fontManager = this.elem.globalData.fontManager; - var data = this.data; - var letters = []; - var i; var - len; - var newLineFlag; var index = 0; var - val; - var anchorGrouping = data.m.g; - var currentSize = 0; var currentPos = 0; var currentLine = 0; var - lineWidths = []; - var lineWidth = 0; - var maxLineWidth = 0; - var j; var - jLen; - var fontData = fontManager.getFontByName(documentData.f); - var charData; var - cLength = 0; - - var fontProps = getFontProperties(fontData); - documentData.fWeight = fontProps.weight; - documentData.fStyle = fontProps.style; - documentData.finalSize = documentData.s; - documentData.finalText = this.buildFinalText(documentData.t); - len = documentData.finalText.length; - documentData.finalLineHeight = documentData.lh; - var trackingOffset = (documentData.tr / 1000) * documentData.finalSize; - var charCode; - if (documentData.sz) { - var flag = true; - var boxWidth = documentData.sz[0]; - var boxHeight = documentData.sz[1]; - var currentHeight; var - finalText; - while (flag) { - finalText = this.buildFinalText(documentData.t); - currentHeight = 0; - lineWidth = 0; - len = finalText.length; - trackingOffset = (documentData.tr / 1000) * documentData.finalSize; - var lastSpaceIndex = -1; - for (i = 0; i < len; i += 1) { - charCode = finalText[i].charCodeAt(0); - newLineFlag = false; - if (finalText[i] === ' ') { - lastSpaceIndex = i; - } else if (charCode === 13 || charCode === 3) { - lineWidth = 0; - newLineFlag = true; - currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2; - } - if (fontManager.chars) { - charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily); - cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100; - } else { - // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily; - cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize); - } - if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') { - if (lastSpaceIndex === -1) { - len += 1; - } else { - i = lastSpaceIndex; - } - currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2; - finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\r'); - // finalText = finalText.substr(0,i) + "\r" + finalText.substr(i === lastSpaceIndex ? i + 1 : i); - lastSpaceIndex = -1; - lineWidth = 0; - } else { - lineWidth += cLength; - lineWidth += trackingOffset; - } - } - currentHeight += (fontData.ascent * documentData.finalSize) / 100; - if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) { - documentData.finalSize -= 1; - documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s; - } else { - documentData.finalText = finalText; - len = documentData.finalText.length; - flag = false; - } - } - } - lineWidth = -trackingOffset; - cLength = 0; - var uncollapsedSpaces = 0; - var currentChar; - for (i = 0; i < len; i += 1) { - newLineFlag = false; - currentChar = documentData.finalText[i]; - charCode = currentChar.charCodeAt(0); - if (charCode === 13 || charCode === 3) { - uncollapsedSpaces = 0; - lineWidths.push(lineWidth); - maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth; - lineWidth = -2 * trackingOffset; - val = ''; - newLineFlag = true; - currentLine += 1; - } else { - val = currentChar; - } - if (fontManager.chars) { - charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily); - cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100; - } else { - // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize); - // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily; - cLength = fontManager.measureText(val, documentData.f, documentData.finalSize); - } - - // - if (currentChar === ' ') { - uncollapsedSpaces += cLength + trackingOffset; - } else { - lineWidth += cLength + trackingOffset + uncollapsedSpaces; - uncollapsedSpaces = 0; - } - letters.push({ - l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val: val, line: currentLine, animatorJustifyOffset: 0, - }); - if (anchorGrouping == 2) { // eslint-disable-line eqeqeq - currentSize += cLength; - if (val === '' || val === ' ' || i === len - 1) { - if (val === '' || val === ' ') { - currentSize -= cLength; - } - while (currentPos <= i) { - letters[currentPos].an = currentSize; - letters[currentPos].ind = index; - letters[currentPos].extra = cLength; - currentPos += 1; - } - index += 1; - currentSize = 0; - } - } else if (anchorGrouping == 3) { // eslint-disable-line eqeqeq - currentSize += cLength; - if (val === '' || i === len - 1) { - if (val === '') { - currentSize -= cLength; - } - while (currentPos <= i) { - letters[currentPos].an = currentSize; - letters[currentPos].ind = index; - letters[currentPos].extra = cLength; - currentPos += 1; - } - currentSize = 0; - index += 1; - } - } else { - letters[index].ind = index; - letters[index].extra = 0; - index += 1; - } - } - documentData.l = letters; - maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth; - lineWidths.push(lineWidth); - if (documentData.sz) { - documentData.boxWidth = documentData.sz[0]; - documentData.justifyOffset = 0; - } else { - documentData.boxWidth = maxLineWidth; - switch (documentData.j) { - case 1: - documentData.justifyOffset = -documentData.boxWidth; - break; - case 2: - documentData.justifyOffset = -documentData.boxWidth / 2; - break; - default: - documentData.justifyOffset = 0; - } - } - documentData.lineWidths = lineWidths; - - var animators = data.a; var animatorData; var - letterData; - jLen = animators.length; - var based; var ind; var - indexes = []; - for (j = 0; j < jLen; j += 1) { - animatorData = animators[j]; - if (animatorData.a.sc) { - documentData.strokeColorAnim = true; - } - if (animatorData.a.sw) { - documentData.strokeWidthAnim = true; - } - if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) { - documentData.fillColorAnim = true; - } - ind = 0; - based = animatorData.s.b; - for (i = 0; i < len; i += 1) { - letterData = letters[i]; - letterData.anIndexes[j] = ind; - if ((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))) { // eslint-disable-line eqeqeq - if (animatorData.s.rn === 1) { - indexes.push(ind); - } - ind += 1; - } - } - data.a[j].s.totalChars = ind; - var currentInd = -1; var - newInd; - if (animatorData.s.rn === 1) { - for (i = 0; i < len; i += 1) { - letterData = letters[i]; - if (currentInd != letterData.anIndexes[j]) { // eslint-disable-line eqeqeq - currentInd = letterData.anIndexes[j]; - newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0]; - } - letterData.anIndexes[j] = newInd; - } - } - } - documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2; - documentData.ls = documentData.ls || 0; - documentData.ascent = (fontData.ascent * documentData.finalSize) / 100; -}; - -TextProperty.prototype.updateDocumentData = function (newData, index) { - index = index === undefined ? this.keysIndex : index; - var dData = this.copyData({}, this.data.d.k[index].s); - dData = this.copyData(dData, newData); - this.data.d.k[index].s = dData; - this.recalculate(index); - this.elem.addDynamicProperty(this); -}; - -TextProperty.prototype.recalculate = function (index) { - var dData = this.data.d.k[index].s; - dData.__complete = false; - this.keysIndex = 0; - this._isFirstFrame = true; - this.getValue(dData); -}; - -TextProperty.prototype.canResizeFont = function (_canResize) { - this.canResize = _canResize; - this.recalculate(this.keysIndex); - this.elem.addDynamicProperty(this); -}; - -TextProperty.prototype.setMinimumFontSize = function (_fontValue) { - this.minimumFontSize = Math.floor(_fontValue) || 1; - this.recalculate(this.keysIndex); - this.elem.addDynamicProperty(this); -}; - -const TextSelectorProp = (function () { - var max = Math.max; - var min = Math.min; - var floor = Math.floor; - - function TextSelectorPropFactory(elem, data) { - this._currentTextLength = -1; - this.k = false; - this.data = data; - this.elem = elem; - this.comp = elem.comp; - this.finalS = 0; - this.finalE = 0; - this.initDynamicPropertyContainer(elem); - this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this); - if ('e' in data) { - this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this); - } else { - this.e = { v: 100 }; - } - this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this); - this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this); - this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this); - this.sm = PropertyFactory.getProp(elem, data.sm || { k: 100 }, 0, 0, this); - this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this); - if (!this.dynamicProperties.length) { - this.getValue(); - } - } - - TextSelectorPropFactory.prototype = { - getMult: function (ind) { - if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) { - this.getValue(); - } - var x1 = 0; - var y1 = 0; - var x2 = 1; - var y2 = 1; - if (this.ne.v > 0) { - x1 = this.ne.v / 100.0; - } else { - y1 = -this.ne.v / 100.0; - } - if (this.xe.v > 0) { - x2 = 1.0 - this.xe.v / 100.0; - } else { - y2 = 1.0 + this.xe.v / 100.0; - } - var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get; - - var mult = 0; - var s = this.finalS; - var e = this.finalE; - var type = this.data.sh; - if (type === 2) { - if (e === s) { - mult = ind >= e ? 1 : 0; - } else { - mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); - } - mult = easer(mult); - } else if (type === 3) { - if (e === s) { - mult = ind >= e ? 0 : 1; - } else { - mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); - } - - mult = easer(mult); - } else if (type === 4) { - if (e === s) { - mult = 0; - } else { - mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1)); - if (mult < 0.5) { - mult *= 2; - } else { - mult = 1 - 2 * (mult - 0.5); - } - } - mult = easer(mult); - } else if (type === 5) { - if (e === s) { - mult = 0; - } else { - var tot = e - s; - /* ind += 0.5; - mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */ - ind = min(max(0, ind + 0.5 - s), e - s); - var x = -tot / 2 + ind; - var a = tot / 2; - mult = Math.sqrt(1 - (x * x) / (a * a)); - } - mult = easer(mult); - } else if (type === 6) { - if (e === s) { - mult = 0; - } else { - ind = min(max(0, ind + 0.5 - s), e - s); - mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; // eslint-disable-line - } - mult = easer(mult); - } else { - if (ind >= floor(s)) { - if (ind - s < 0) { - mult = max(0, min(min(e, 1) - (s - ind), 1)); - } else { - mult = max(0, min(e - ind, 1)); - } - } - mult = easer(mult); - } - // Smoothness implementation. - // The smoothness represents a reduced range of the original [0; 1] range. - // if smoothness is 25%, the new range will be [0.375; 0.625] - // Steps are: - // - find the lower value of the new range (threshold) - // - if multiplier is smaller than that value, floor it to 0 - // - if it is larger, - // - subtract the threshold - // - divide it by the smoothness (this will return the range to [0; 1]) - // Note: If it doesn't work on some scenarios, consider applying it before the easer. - if (this.sm.v !== 100) { - var smoothness = this.sm.v * 0.01; - if (smoothness === 0) { - smoothness = 0.00000001; - } - var threshold = 0.5 - smoothness * 0.5; - if (mult < threshold) { - mult = 0; - } else { - mult = (mult - threshold) / smoothness; - if (mult > 1) { - mult = 1; - } - } - } - return mult * this.a.v; - }, - getValue: function (newCharsFlag) { - this.iterateDynamicProperties(); - this._mdf = newCharsFlag || this._mdf; - this._currentTextLength = this.elem.textProperty.currentData.l.length || 0; - if (newCharsFlag && this.data.r === 2) { - this.e.v = this._currentTextLength; - } - var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars; - var o = this.o.v / divisor; - var s = this.s.v / divisor + o; - var e = (this.e.v / divisor) + o; - if (s > e) { - var _s = s; - s = e; - e = _s; - } - this.finalS = s; - this.finalE = e; - }, - }; - extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory); - - function getTextSelectorProp(elem, data, arr) { - return new TextSelectorPropFactory(elem, data, arr); - } - - return { - getTextSelectorProp: getTextSelectorProp, - }; -}()); - -function TextAnimatorDataProperty(elem, animatorProps, container) { - var defaultData = { propType: false }; - var getProp = PropertyFactory.getProp; - var textAnimatorAnimatables = animatorProps.a; - this.a = { - r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData, - rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData, - ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData, - sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData, - sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData, - s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData, - a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData, - o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData, - p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData, - sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData, - sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData, - fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData, - fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData, - fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData, - fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData, - t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData, - }; - - this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container); - this.s.t = animatorProps.s.t; -} - -function TextAnimatorProperty(textData, renderType, elem) { - this._isFirstFrame = true; - this._hasMaskedPath = false; - this._frameId = -1; - this._textData = textData; - this._renderType = renderType; - this._elem = elem; - this._animatorsData = createSizedArray(this._textData.a.length); - this._pathData = {}; - this._moreOptions = { - alignment: {}, - }; - this.renderedLetters = []; - this.lettersChangedFlag = false; - this.initDynamicPropertyContainer(elem); -} - -TextAnimatorProperty.prototype.searchProperties = function () { - var i; - var len = this._textData.a.length; - var animatorProps; - var getProp = PropertyFactory.getProp; - for (i = 0; i < len; i += 1) { - animatorProps = this._textData.a[i]; - this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this); - } - if (this._textData.p && 'm' in this._textData.p) { - this._pathData = { - a: getProp(this._elem, this._textData.p.a, 0, 0, this), - f: getProp(this._elem, this._textData.p.f, 0, 0, this), - l: getProp(this._elem, this._textData.p.l, 0, 0, this), - r: getProp(this._elem, this._textData.p.r, 0, 0, this), - p: getProp(this._elem, this._textData.p.p, 0, 0, this), - m: this._elem.maskManager.getMaskProperty(this._textData.p.m), - }; - this._hasMaskedPath = true; - } else { - this._hasMaskedPath = false; - } - this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this); -}; - -TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) { - this.lettersChangedFlag = lettersChangedFlag; - if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) { - return; - } - this._isFirstFrame = false; - var alignment = this._moreOptions.alignment.v; - var animators = this._animatorsData; - var textData = this._textData; - var matrixHelper = this.mHelper; - var renderType = this._renderType; - var renderedLettersCount = this.renderedLetters.length; - var xPos; - var yPos; - var i; - var len; - var letters = documentData.l; - var pathInfo; - var currentLength; - var currentPoint; - var segmentLength; - var flag; - var pointInd; - var segmentInd; - var prevPoint; - var points; - var segments; - var partialLength; - var totalLength; - var perc; - var tanAngle; - var mask; - if (this._hasMaskedPath) { - mask = this._pathData.m; - if (!this._pathData.n || this._pathData._mdf) { - var paths = mask.v; - if (this._pathData.r.v) { - paths = paths.reverse(); - } - // TODO: release bezier data cached from previous pathInfo: this._pathData.pi - pathInfo = { - tLength: 0, - segments: [], - }; - len = paths._length - 1; - var bezierData; - totalLength = 0; - for (i = 0; i < len; i += 1) { - bezierData = bez.buildBezierData(paths.v[i], - paths.v[i + 1], - [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], - [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]); - pathInfo.tLength += bezierData.segmentLength; - pathInfo.segments.push(bezierData); - totalLength += bezierData.segmentLength; - } - i = len; - if (mask.v.c) { - bezierData = bez.buildBezierData(paths.v[i], - paths.v[0], - [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], - [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]); - pathInfo.tLength += bezierData.segmentLength; - pathInfo.segments.push(bezierData); - totalLength += bezierData.segmentLength; - } - this._pathData.pi = pathInfo; - } - pathInfo = this._pathData.pi; - - currentLength = this._pathData.f.v; - segmentInd = 0; - pointInd = 1; - segmentLength = 0; - flag = true; - segments = pathInfo.segments; - if (currentLength < 0 && mask.v.c) { - if (pathInfo.tLength < Math.abs(currentLength)) { - currentLength = -Math.abs(currentLength) % pathInfo.tLength; - } - segmentInd = segments.length - 1; - points = segments[segmentInd].points; - pointInd = points.length - 1; - while (currentLength < 0) { - currentLength += points[pointInd].partialLength; - pointInd -= 1; - if (pointInd < 0) { - segmentInd -= 1; - points = segments[segmentInd].points; - pointInd = points.length - 1; - } - } - } - points = segments[segmentInd].points; - prevPoint = points[pointInd - 1]; - currentPoint = points[pointInd]; - partialLength = currentPoint.partialLength; - } - - len = letters.length; - xPos = 0; - yPos = 0; - var yOff = documentData.finalSize * 1.2 * 0.714; - var firstLine = true; - var animatorProps; - var animatorSelector; - var j; - var jLen; - var letterValue; - - jLen = animators.length; - - var mult; - var ind = -1; - var offf; - var xPathPos; - var yPathPos; - var initPathPos = currentLength; - var initSegmentInd = segmentInd; - var initPointInd = pointInd; - var currentLine = -1; - var elemOpacity; - var sc; - var sw; - var fc; - var k; - var letterSw; - var letterSc; - var letterFc; - var letterM = ''; - var letterP = this.defaultPropsArray; - var letterO; - - // - if (documentData.j === 2 || documentData.j === 1) { - var animatorJustifyOffset = 0; - var animatorFirstCharOffset = 0; - var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1; - var lastIndex = 0; - var isNewLine = true; - - for (i = 0; i < len; i += 1) { - if (letters[i].n) { - if (animatorJustifyOffset) { - animatorJustifyOffset += animatorFirstCharOffset; - } - while (lastIndex < i) { - letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset; - lastIndex += 1; - } - animatorJustifyOffset = 0; - isNewLine = true; - } else { - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.t.propType) { - if (isNewLine && documentData.j === 2) { - animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult; - } - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult; - } else { - animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult; - } - } - } - isNewLine = false; - } - } - if (animatorJustifyOffset) { - animatorJustifyOffset += animatorFirstCharOffset; - } - while (lastIndex < i) { - letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset; - lastIndex += 1; - } - } - // - - for (i = 0; i < len; i += 1) { - matrixHelper.reset(); - elemOpacity = 1; - if (letters[i].n) { - xPos = 0; - yPos += documentData.yOffset; - yPos += firstLine ? 1 : 0; - currentLength = initPathPos; - firstLine = false; - if (this._hasMaskedPath) { - segmentInd = initSegmentInd; - pointInd = initPointInd; - points = segments[segmentInd].points; - prevPoint = points[pointInd - 1]; - currentPoint = points[pointInd]; - partialLength = currentPoint.partialLength; - segmentLength = 0; - } - letterM = ''; - letterFc = ''; - letterSw = ''; - letterO = ''; - letterP = this.defaultPropsArray; - } else { - if (this._hasMaskedPath) { - if (currentLine !== letters[i].line) { - switch (documentData.j) { - case 1: - currentLength += totalLength - documentData.lineWidths[letters[i].line]; - break; - case 2: - currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2; - break; - default: - break; - } - currentLine = letters[i].line; - } - if (ind !== letters[i].ind) { - if (letters[ind]) { - currentLength += letters[ind].extra; - } - currentLength += letters[i].an / 2; - ind = letters[i].ind; - } - currentLength += (alignment[0] * letters[i].an) * 0.005; - var animatorOffset = 0; - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.p.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - animatorOffset += animatorProps.p.v[0] * mult[0]; - } else { - animatorOffset += animatorProps.p.v[0] * mult; - } - } - if (animatorProps.a.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - animatorOffset += animatorProps.a.v[0] * mult[0]; - } else { - animatorOffset += animatorProps.a.v[0] * mult; - } - } - } - flag = true; - // Force alignment only works with a single line for now - if (this._pathData.a.v) { - currentLength = letters[0].an * 0.5 + ((totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind) / (len - 1); - currentLength += this._pathData.f.v; - } - while (flag) { - if (segmentLength + partialLength >= currentLength + animatorOffset || !points) { - perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength; - xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc; - yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc; - matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, -(alignment[1] * yOff) * 0.01); - flag = false; - } else if (points) { - segmentLength += currentPoint.partialLength; - pointInd += 1; - if (pointInd >= points.length) { - pointInd = 0; - segmentInd += 1; - if (!segments[segmentInd]) { - if (mask.v.c) { - pointInd = 0; - segmentInd = 0; - points = segments[segmentInd].points; - } else { - segmentLength -= currentPoint.partialLength; - points = null; - } - } else { - points = segments[segmentInd].points; - } - } - if (points) { - prevPoint = currentPoint; - currentPoint = points[pointInd]; - partialLength = currentPoint.partialLength; - } - } - } - offf = letters[i].an / 2 - letters[i].add; - matrixHelper.translate(-offf, 0, 0); - } else { - offf = letters[i].an / 2 - letters[i].add; - matrixHelper.translate(-offf, 0, 0); - - // Grouping alignment - matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, (-alignment[1] * yOff) * 0.01, 0); - } - - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.t.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean "isNewLine" - if (xPos !== 0 || documentData.j !== 0) { - if (this._hasMaskedPath) { - if (mult.length) { - currentLength += animatorProps.t.v * mult[0]; - } else { - currentLength += animatorProps.t.v * mult; - } - } else if (mult.length) { - xPos += animatorProps.t.v * mult[0]; - } else { - xPos += animatorProps.t.v * mult; - } - } - } - } - if (documentData.strokeWidthAnim) { - sw = documentData.sw || 0; - } - if (documentData.strokeColorAnim) { - if (documentData.sc) { - sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]]; - } else { - sc = [0, 0, 0]; - } - } - if (documentData.fillColorAnim && documentData.fc) { - fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]]; - } - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.a.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - - if (mult.length) { - matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]); - } else { - matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult); - } - } - } - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - if (animatorProps.s.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (mult.length) { - matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult[0]), 1 + ((animatorProps.s.v[1] - 1) * mult[1]), 1); - } else { - matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult), 1 + ((animatorProps.s.v[1] - 1) * mult), 1); - } - } - } - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (animatorProps.sk.propType) { - if (mult.length) { - matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]); - } else { - matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult); - } - } - if (animatorProps.r.propType) { - if (mult.length) { - matrixHelper.rotateZ(-animatorProps.r.v * mult[2]); - } else { - matrixHelper.rotateZ(-animatorProps.r.v * mult); - } - } - if (animatorProps.ry.propType) { - if (mult.length) { - matrixHelper.rotateY(animatorProps.ry.v * mult[1]); - } else { - matrixHelper.rotateY(animatorProps.ry.v * mult); - } - } - if (animatorProps.rx.propType) { - if (mult.length) { - matrixHelper.rotateX(animatorProps.rx.v * mult[0]); - } else { - matrixHelper.rotateX(animatorProps.rx.v * mult); - } - } - if (animatorProps.o.propType) { - if (mult.length) { - elemOpacity += ((animatorProps.o.v) * mult[0] - elemOpacity) * mult[0]; - } else { - elemOpacity += ((animatorProps.o.v) * mult - elemOpacity) * mult; - } - } - if (documentData.strokeWidthAnim && animatorProps.sw.propType) { - if (mult.length) { - sw += animatorProps.sw.v * mult[0]; - } else { - sw += animatorProps.sw.v * mult; - } - } - if (documentData.strokeColorAnim && animatorProps.sc.propType) { - for (k = 0; k < 3; k += 1) { - if (mult.length) { - sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0]; - } else { - sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult; - } - } - } - if (documentData.fillColorAnim && documentData.fc) { - if (animatorProps.fc.propType) { - for (k = 0; k < 3; k += 1) { - if (mult.length) { - fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0]; - } else { - fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult; - } - } - } - if (animatorProps.fh.propType) { - if (mult.length) { - fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]); - } else { - fc = addHueToRGB(fc, animatorProps.fh.v * mult); - } - } - if (animatorProps.fs.propType) { - if (mult.length) { - fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]); - } else { - fc = addSaturationToRGB(fc, animatorProps.fs.v * mult); - } - } - if (animatorProps.fb.propType) { - if (mult.length) { - fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]); - } else { - fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult); - } - } - } - } - - for (j = 0; j < jLen; j += 1) { - animatorProps = animators[j].a; - - if (animatorProps.p.propType) { - animatorSelector = animators[j].s; - mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); - if (this._hasMaskedPath) { - if (mult.length) { - matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]); - } else { - matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult); - } - } else if (mult.length) { - matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]); - } else { - matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult); - } - } - } - if (documentData.strokeWidthAnim) { - letterSw = sw < 0 ? 0 : sw; - } - if (documentData.strokeColorAnim) { - letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')'; - } - if (documentData.fillColorAnim && documentData.fc) { - letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')'; - } - - if (this._hasMaskedPath) { - matrixHelper.translate(0, -documentData.ls); - - matrixHelper.translate(0, (alignment[1] * yOff) * 0.01 + yPos, 0); - if (this._pathData.p.v) { - tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]); - var rot = (Math.atan(tanAngle) * 180) / Math.PI; - if (currentPoint.point[0] < prevPoint.point[0]) { - rot += 180; - } - matrixHelper.rotate((-rot * Math.PI) / 180); - } - matrixHelper.translate(xPathPos, yPathPos, 0); - currentLength -= (alignment[0] * letters[i].an) * 0.005; - if (letters[i + 1] && ind !== letters[i + 1].ind) { - currentLength += letters[i].an / 2; - currentLength += (documentData.tr * 0.001) * documentData.finalSize; - } - } else { - matrixHelper.translate(xPos, yPos, 0); - - if (documentData.ps) { - // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0); - matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0); - } - switch (documentData.j) { - case 1: - matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0); - break; - case 2: - matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0); - break; - default: - break; - } - matrixHelper.translate(0, -documentData.ls); - matrixHelper.translate(offf, 0, 0); - matrixHelper.translate((alignment[0] * letters[i].an) * 0.005, (alignment[1] * yOff) * 0.01, 0); - xPos += letters[i].l + (documentData.tr * 0.001) * documentData.finalSize; - } - if (renderType === 'html') { - letterM = matrixHelper.toCSS(); - } else if (renderType === 'svg') { - letterM = matrixHelper.to2dCSS(); - } else { - letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]]; - } - letterO = elemOpacity; - } - - if (renderedLettersCount <= i) { - letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP); - this.renderedLetters.push(letterValue); - renderedLettersCount += 1; - this.lettersChangedFlag = true; - } else { - letterValue = this.renderedLetters[i]; - this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag; - } - } -}; - -TextAnimatorProperty.prototype.getValue = function () { - if (this._elem.globalData.frameId === this._frameId) { - return; - } - this._frameId = this._elem.globalData.frameId; - this.iterateDynamicProperties(); -}; - -TextAnimatorProperty.prototype.mHelper = new Matrix(); -TextAnimatorProperty.prototype.defaultPropsArray = []; -extendPrototype([DynamicPropertyContainer], TextAnimatorProperty); - -function ITextElement() { -} - -ITextElement.prototype.initElement = function (data, globalData, comp) { - this.lettersChangedFlag = true; - this.initFrame(); - this.initBaseData(data, globalData, comp); - this.textProperty = new TextProperty(this, data.t, this.dynamicProperties); - this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this); - this.initTransform(data, globalData, comp); - this.initHierarchy(); - this.initRenderable(); - this.initRendererElement(); - this.createContainerElements(); - this.createRenderableComponents(); - this.createContent(); - this.hide(); - this.textAnimator.searchProperties(this.dynamicProperties); -}; - -ITextElement.prototype.prepareFrame = function (num) { - this._mdf = false; - this.prepareRenderableFrame(num); - this.prepareProperties(num, this.isInRange); - if (this.textProperty._mdf || this.textProperty._isFirstFrame) { - this.buildNewText(); - this.textProperty._isFirstFrame = false; - this.textProperty._mdf = false; - } -}; - -ITextElement.prototype.createPathShape = function (matrixHelper, shapes) { - var j; - var jLen = shapes.length; - var pathNodes; - var shapeStr = ''; - for (j = 0; j < jLen; j += 1) { - if (shapes[j].ty === 'sh') { - pathNodes = shapes[j].ks.k; - shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper); - } - } - return shapeStr; -}; - -ITextElement.prototype.updateDocumentData = function (newData, index) { - this.textProperty.updateDocumentData(newData, index); -}; - -ITextElement.prototype.canResizeFont = function (_canResize) { - this.textProperty.canResizeFont(_canResize); -}; - -ITextElement.prototype.setMinimumFontSize = function (_fontSize) { - this.textProperty.setMinimumFontSize(_fontSize); -}; - -ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) { - if (documentData.ps) { - matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0); - } - matrixHelper.translate(0, -documentData.ls, 0); - switch (documentData.j) { - case 1: - matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0); - break; - case 2: - matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0); - break; - default: - break; - } - matrixHelper.translate(xPos, yPos, 0); -}; - -ITextElement.prototype.buildColor = function (colorData) { - return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')'; -}; - -ITextElement.prototype.emptyProp = new LetterProps(); - -ITextElement.prototype.destroy = function () { - -}; - -var emptyShapeData = { - shapes: [], -}; - -function SVGTextLottieElement(data, globalData, comp) { - this.textSpans = []; - this.renderType = 'svg'; - this.initElement(data, globalData, comp); -} - -extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement); - -SVGTextLottieElement.prototype.createContent = function () { - if (this.data.singleShape && !this.globalData.fontManager.chars) { - this.textContainer = createNS('text'); - } -}; - -SVGTextLottieElement.prototype.buildTextContents = function (textArray) { - var i = 0; - var len = textArray.length; - var textContents = []; - var currentTextContent = ''; - while (i < len) { - if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) { - textContents.push(currentTextContent); - currentTextContent = ''; - } else { - currentTextContent += textArray[i]; - } - i += 1; - } - textContents.push(currentTextContent); - return textContents; -}; - -SVGTextLottieElement.prototype.buildShapeData = function (data, scale) { - // data should probably be cloned to apply scale separately to each instance of a text on different layers - // but since text internal content gets only rendered once and then it's never rerendered, - // it's probably safe not to clone data and reuse always the same instance even if the object is mutated. - // Avoiding cloning is preferred since cloning each character shape data is expensive - if (data.shapes && data.shapes.length) { - var shape = data.shapes[0]; - if (shape.it) { - var shapeItem = shape.it[shape.it.length - 1]; - if (shapeItem.s) { - shapeItem.s.k[0] = scale; - shapeItem.s.k[1] = scale; - } - } - } - return data; -}; - -SVGTextLottieElement.prototype.buildNewText = function () { - this.addDynamicProperty(this); - var i; - var len; - - var documentData = this.textProperty.currentData; - this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0); - if (documentData.fc) { - this.layerElement.setAttribute('fill', this.buildColor(documentData.fc)); - } else { - this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)'); - } - if (documentData.sc) { - this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc)); - this.layerElement.setAttribute('stroke-width', documentData.sw); - } - this.layerElement.setAttribute('font-size', documentData.finalSize); - var fontData = this.globalData.fontManager.getFontByName(documentData.f); - if (fontData.fClass) { - this.layerElement.setAttribute('class', fontData.fClass); - } else { - this.layerElement.setAttribute('font-family', fontData.fFamily); - var fWeight = documentData.fWeight; - var fStyle = documentData.fStyle; - this.layerElement.setAttribute('font-style', fStyle); - this.layerElement.setAttribute('font-weight', fWeight); - } - this.layerElement.setAttribute('aria-label', documentData.t); - - var letters = documentData.l || []; - var usesGlyphs = !!this.globalData.fontManager.chars; - len = letters.length; - - var tSpan; - var matrixHelper = this.mHelper; - var shapeStr = ''; - var singleShape = this.data.singleShape; - var xPos = 0; - var yPos = 0; - var firstLine = true; - var trackingOffset = documentData.tr * 0.001 * documentData.finalSize; - if (singleShape && !usesGlyphs && !documentData.sz) { - var tElement = this.textContainer; - var justify = 'start'; - switch (documentData.j) { - case 1: - justify = 'end'; - break; - case 2: - justify = 'middle'; - break; - default: - justify = 'start'; - break; - } - tElement.setAttribute('text-anchor', justify); - tElement.setAttribute('letter-spacing', trackingOffset); - var textContent = this.buildTextContents(documentData.finalText); - len = textContent.length; - yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0; - for (i = 0; i < len; i += 1) { - tSpan = this.textSpans[i].span || createNS('tspan'); - tSpan.textContent = textContent[i]; - tSpan.setAttribute('x', 0); - tSpan.setAttribute('y', yPos); - tSpan.style.display = 'inherit'; - tElement.appendChild(tSpan); - if (!this.textSpans[i]) { - this.textSpans[i] = { - span: null, - glyph: null, - }; - } - this.textSpans[i].span = tSpan; - yPos += documentData.finalLineHeight; - } - - this.layerElement.appendChild(tElement); - } else { - var cachedSpansLength = this.textSpans.length; - var charData; - for (i = 0; i < len; i += 1) { - if (!this.textSpans[i]) { - this.textSpans[i] = { - span: null, - childSpan: null, - glyph: null, - }; - } - if (!usesGlyphs || !singleShape || i === 0) { - tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text'); - if (cachedSpansLength <= i) { - tSpan.setAttribute('stroke-linecap', 'butt'); - tSpan.setAttribute('stroke-linejoin', 'round'); - tSpan.setAttribute('stroke-miterlimit', '4'); - this.textSpans[i].span = tSpan; - if (usesGlyphs) { - var childSpan = createNS('g'); - tSpan.appendChild(childSpan); - this.textSpans[i].childSpan = childSpan; - } - this.textSpans[i].span = tSpan; - this.layerElement.appendChild(tSpan); - } - tSpan.style.display = 'inherit'; - } - - matrixHelper.reset(); - if (singleShape) { - if (letters[i].n) { - xPos = -trackingOffset; - yPos += documentData.yOffset; - yPos += firstLine ? 1 : 0; - firstLine = false; - } - this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos); - xPos += letters[i].l || 0; - // xPos += letters[i].val === ' ' ? 0 : trackingOffset; - xPos += trackingOffset; - } - if (usesGlyphs) { - charData = this.globalData.fontManager.getCharData( - documentData.finalText[i], - fontData.fStyle, - this.globalData.fontManager.getFontByName(documentData.f).fFamily - ); - var glyphElement; - // t === 1 means the character has been replaced with an animated shaped - if (charData.t === 1) { - glyphElement = new SVGCompElement(charData.data, this.globalData, this); - } else { - var data = emptyShapeData; - if (charData.data && charData.data.shapes) { - data = this.buildShapeData(charData.data, documentData.finalSize); - } - glyphElement = new SVGShapeElement(data, this.globalData, this); - } - if (this.textSpans[i].glyph) { - var glyph = this.textSpans[i].glyph; - this.textSpans[i].childSpan.removeChild(glyph.layerElement); - glyph.destroy(); - } - this.textSpans[i].glyph = glyphElement; - glyphElement._debug = true; - glyphElement.prepareFrame(0); - glyphElement.renderFrame(); - this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); - // when using animated shapes, the layer will be scaled instead of replacing the internal scale - // this might have issues with strokes and might need a different solution - if (charData.t === 1) { - this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')'); - } - } else { - if (singleShape) { - tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')'); - } - tSpan.textContent = letters[i].val; - tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve'); - } - // - } - if (singleShape && tSpan) { - tSpan.setAttribute('d', shapeStr); - } - } - while (i < this.textSpans.length) { - this.textSpans[i].span.style.display = 'none'; - i += 1; - } - - this._sizeChanged = true; -}; - -SVGTextLottieElement.prototype.sourceRectAtTime = function () { - this.prepareFrame(this.comp.renderedFrame - this.data.st); - this.renderInnerContent(); - if (this._sizeChanged) { - this._sizeChanged = false; - var textBox = this.layerElement.getBBox(); - this.bbox = { - top: textBox.y, - left: textBox.x, - width: textBox.width, - height: textBox.height, - }; - } - return this.bbox; -}; - -SVGTextLottieElement.prototype.getValue = function () { - var i; - var len = this.textSpans.length; - var glyphElement; - this.renderedFrame = this.comp.renderedFrame; - for (i = 0; i < len; i += 1) { - glyphElement = this.textSpans[i].glyph; - if (glyphElement) { - glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st); - if (glyphElement._mdf) { - this._mdf = true; - } - } - } -}; - -SVGTextLottieElement.prototype.renderInnerContent = function () { - if (!this.data.singleShape || this._mdf) { - this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); - if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) { - this._sizeChanged = true; - var i; - var len; - var renderedLetters = this.textAnimator.renderedLetters; - - var letters = this.textProperty.currentData.l; - - len = letters.length; - var renderedLetter; - var textSpan; - var glyphElement; - for (i = 0; i < len; i += 1) { - if (!letters[i].n) { - renderedLetter = renderedLetters[i]; - textSpan = this.textSpans[i].span; - glyphElement = this.textSpans[i].glyph; - if (glyphElement) { - glyphElement.renderFrame(); - } - if (renderedLetter._mdf.m) { - textSpan.setAttribute('transform', renderedLetter.m); - } - if (renderedLetter._mdf.o) { - textSpan.setAttribute('opacity', renderedLetter.o); - } - if (renderedLetter._mdf.sw) { - textSpan.setAttribute('stroke-width', renderedLetter.sw); - } - if (renderedLetter._mdf.sc) { - textSpan.setAttribute('stroke', renderedLetter.sc); - } - if (renderedLetter._mdf.fc) { - textSpan.setAttribute('fill', renderedLetter.fc); - } - } - } - } - } -}; - -function ISolidElement(data, globalData, comp) { - this.initElement(data, globalData, comp); -} -extendPrototype([IImageElement], ISolidElement); - -ISolidElement.prototype.createContent = function () { - var rect = createNS('rect'); - /// /rect.style.width = this.data.sw; - /// /rect.style.height = this.data.sh; - /// /rect.style.fill = this.data.sc; - rect.setAttribute('width', this.data.sw); - rect.setAttribute('height', this.data.sh); - rect.setAttribute('fill', this.data.sc); - this.layerElement.appendChild(rect); -}; - -function NullElement(data, globalData, comp) { - this.initFrame(); - this.initBaseData(data, globalData, comp); - this.initFrame(); - this.initTransform(data, globalData, comp); - this.initHierarchy(); -} - -NullElement.prototype.prepareFrame = function (num) { - this.prepareProperties(num, true); -}; - -NullElement.prototype.renderFrame = function () { -}; - -NullElement.prototype.getBaseElement = function () { - return null; -}; - -NullElement.prototype.destroy = function () { -}; - -NullElement.prototype.sourceRectAtTime = function () { -}; - -NullElement.prototype.hide = function () { -}; - -extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement); - -function SVGRendererBase() { -} - -extendPrototype([BaseRenderer], SVGRendererBase); - -SVGRendererBase.prototype.createNull = function (data) { - return new NullElement(data, this.globalData, this); -}; - -SVGRendererBase.prototype.createShape = function (data) { - return new SVGShapeElement(data, this.globalData, this); -}; - -SVGRendererBase.prototype.createText = function (data) { - return new SVGTextLottieElement(data, this.globalData, this); -}; - -SVGRendererBase.prototype.createImage = function (data) { - return new IImageElement(data, this.globalData, this); -}; - -SVGRendererBase.prototype.createSolid = function (data) { - return new ISolidElement(data, this.globalData, this); -}; - -SVGRendererBase.prototype.configAnimation = function (animData) { - this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg'); - if (this.renderConfig.viewBoxSize) { - this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize); - } else { - this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h); - } - - if (!this.renderConfig.viewBoxOnly) { - this.svgElement.setAttribute('width', animData.w); - this.svgElement.setAttribute('height', animData.h); - this.svgElement.style.width = '100%'; - this.svgElement.style.height = '100%'; - this.svgElement.style.transform = 'translate3d(0,0,0)'; - this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility; - } - if (this.renderConfig.width) { - this.svgElement.setAttribute('width', this.renderConfig.width); - } - if (this.renderConfig.height) { - this.svgElement.setAttribute('height', this.renderConfig.height); - } - if (this.renderConfig.className) { - this.svgElement.setAttribute('class', this.renderConfig.className); - } - if (this.renderConfig.id) { - this.svgElement.setAttribute('id', this.renderConfig.id); - } - if (this.renderConfig.focusable !== undefined) { - this.svgElement.setAttribute('focusable', this.renderConfig.focusable); - } - this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); - // this.layerElement.style.transform = 'translate3d(0,0,0)'; - // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = "0px 0px 0px"; - this.animationItem.wrapper.appendChild(this.svgElement); - // Mask animation - var defs = this.globalData.defs; - - this.setupGlobalData(animData, defs); - this.globalData.progressiveLoad = this.renderConfig.progressiveLoad; - this.data = animData; - - var maskElement = createNS('clipPath'); - var rect = createNS('rect'); - rect.setAttribute('width', animData.w); - rect.setAttribute('height', animData.h); - rect.setAttribute('x', 0); - rect.setAttribute('y', 0); - var maskId = createElementID(); - maskElement.setAttribute('id', maskId); - maskElement.appendChild(rect); - this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')'); - - defs.appendChild(maskElement); - this.layers = animData.layers; - this.elements = createSizedArray(animData.layers.length); -}; - -SVGRendererBase.prototype.destroy = function () { - if (this.animationItem.wrapper) { - this.animationItem.wrapper.innerText = ''; - } - this.layerElement = null; - this.globalData.defs = null; - var i; - var len = this.layers ? this.layers.length : 0; - for (i = 0; i < len; i += 1) { - if (this.elements[i]) { - this.elements[i].destroy(); - } - } - this.elements.length = 0; - this.destroyed = true; - this.animationItem = null; -}; - -SVGRendererBase.prototype.updateContainerSize = function () { -}; - -SVGRendererBase.prototype.buildItem = function (pos) { - var elements = this.elements; - if (elements[pos] || this.layers[pos].ty === 99) { - return; - } - elements[pos] = true; - var element = this.createItem(this.layers[pos]); - - elements[pos] = element; - if (getExpressionsPlugin()) { - if (this.layers[pos].ty === 0) { - this.globalData.projectInterface.registerComposition(element); - } - element.initExpressions(); - } - this.appendElementInPos(element, pos); - if (this.layers[pos].tt) { - if (!this.elements[pos - 1] || this.elements[pos - 1] === true) { - this.buildItem(pos - 1); - this.addPendingElement(element); - } else { - element.setMatte(elements[pos - 1].layerId); - } - } -}; - -SVGRendererBase.prototype.checkPendingElements = function () { - while (this.pendingElements.length) { - var element = this.pendingElements.pop(); - element.checkParenting(); - if (element.data.tt) { - var i = 0; - var len = this.elements.length; - while (i < len) { - if (this.elements[i] === element) { - element.setMatte(this.elements[i - 1].layerId); - break; - } - i += 1; - } - } - } -}; - -SVGRendererBase.prototype.renderFrame = function (num) { - if (this.renderedFrame === num || this.destroyed) { - return; - } - if (num === null) { - num = this.renderedFrame; - } else { - this.renderedFrame = num; - } - // console.log('-------'); - // console.log('FRAME ',num); - this.globalData.frameNum = num; - this.globalData.frameId += 1; - this.globalData.projectInterface.currentFrame = num; - this.globalData._mdf = false; - var i; - var len = this.layers.length; - if (!this.completeLayers) { - this.checkLayers(num); - } - for (i = len - 1; i >= 0; i -= 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].prepareFrame(num - this.layers[i].st); - } - } - if (this.globalData._mdf) { - for (i = 0; i < len; i += 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].renderFrame(); - } - } - } -}; - -SVGRendererBase.prototype.appendElementInPos = function (element, pos) { - var newElement = element.getBaseElement(); - if (!newElement) { - return; - } - var i = 0; - var nextElement; - while (i < pos) { - if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) { - nextElement = this.elements[i].getBaseElement(); - } - i += 1; - } - if (nextElement) { - this.layerElement.insertBefore(newElement, nextElement); - } else { - this.layerElement.appendChild(newElement); - } -}; - -SVGRendererBase.prototype.hide = function () { - this.layerElement.style.display = 'none'; -}; - -SVGRendererBase.prototype.show = function () { - this.layerElement.style.display = 'block'; -}; - -function ICompElement() {} - -extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement); - -ICompElement.prototype.initElement = function (data, globalData, comp) { - this.initFrame(); - this.initBaseData(data, globalData, comp); - this.initTransform(data, globalData, comp); - this.initRenderable(); - this.initHierarchy(); - this.initRendererElement(); - this.createContainerElements(); - this.createRenderableComponents(); - if (this.data.xt || !globalData.progressiveLoad) { - this.buildAllItems(); - } - this.hide(); -}; - -/* ICompElement.prototype.hide = function(){ - if(!this.hidden){ - this.hideElement(); - var i,len = this.elements.length; - for( i = 0; i < len; i+=1 ){ - if(this.elements[i]){ - this.elements[i].hide(); - } - } - } -}; */ - -ICompElement.prototype.prepareFrame = function (num) { - this._mdf = false; - this.prepareRenderableFrame(num); - this.prepareProperties(num, this.isInRange); - if (!this.isInRange && !this.data.xt) { - return; - } - - if (!this.tm._placeholder) { - var timeRemapped = this.tm.v; - if (timeRemapped === this.data.op) { - timeRemapped = this.data.op - 1; - } - this.renderedFrame = timeRemapped; - } else { - this.renderedFrame = num / this.data.sr; - } - var i; - var len = this.elements.length; - if (!this.completeLayers) { - this.checkLayers(this.renderedFrame); - } - // This iteration needs to be backwards because of how expressions connect between each other - for (i = len - 1; i >= 0; i -= 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st); - if (this.elements[i]._mdf) { - this._mdf = true; - } - } - } -}; - -ICompElement.prototype.renderInnerContent = function () { - var i; - var len = this.layers.length; - for (i = 0; i < len; i += 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].renderFrame(); - } - } -}; - -ICompElement.prototype.setElements = function (elems) { - this.elements = elems; -}; - -ICompElement.prototype.getElements = function () { - return this.elements; -}; - -ICompElement.prototype.destroyElements = function () { - var i; - var len = this.layers.length; - for (i = 0; i < len; i += 1) { - if (this.elements[i]) { - this.elements[i].destroy(); - } - } -}; - -ICompElement.prototype.destroy = function () { - this.destroyElements(); - this.destroyBaseElement(); -}; - -function SVGCompElement(data, globalData, comp) { - this.layers = data.layers; - this.supports3d = true; - this.completeLayers = false; - this.pendingElements = []; - this.elements = this.layers ? createSizedArray(this.layers.length) : []; - this.initElement(data, globalData, comp); - this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; -} - -extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement); - -SVGCompElement.prototype.createComp = function (data) { - return new SVGCompElement(data, this.globalData, this); -}; - -function SVGRenderer(animationItem, config) { - this.animationItem = animationItem; - this.layers = null; - this.renderedFrame = -1; - this.svgElement = createNS('svg'); - var ariaLabel = ''; - if (config && config.title) { - var titleElement = createNS('title'); - var titleId = createElementID(); - titleElement.setAttribute('id', titleId); - titleElement.textContent = config.title; - this.svgElement.appendChild(titleElement); - ariaLabel += titleId; - } - if (config && config.description) { - var descElement = createNS('desc'); - var descId = createElementID(); - descElement.setAttribute('id', descId); - descElement.textContent = config.description; - this.svgElement.appendChild(descElement); - ariaLabel += ' ' + descId; - } - if (ariaLabel) { - this.svgElement.setAttribute('aria-labelledby', ariaLabel); - } - var defs = createNS('defs'); - this.svgElement.appendChild(defs); - var maskElement = createNS('g'); - this.svgElement.appendChild(maskElement); - this.layerElement = maskElement; - this.renderConfig = { - preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet', - imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice', - contentVisibility: (config && config.contentVisibility) || 'visible', - progressiveLoad: (config && config.progressiveLoad) || false, - hideOnTransparent: !((config && config.hideOnTransparent === false)), - viewBoxOnly: (config && config.viewBoxOnly) || false, - viewBoxSize: (config && config.viewBoxSize) || false, - className: (config && config.className) || '', - id: (config && config.id) || '', - focusable: config && config.focusable, - filterSize: { - width: (config && config.filterSize && config.filterSize.width) || '100%', - height: (config && config.filterSize && config.filterSize.height) || '100%', - x: (config && config.filterSize && config.filterSize.x) || '0%', - y: (config && config.filterSize && config.filterSize.y) || '0%', - }, - width: (config && config.width), - height: (config && config.height), - }; - - this.globalData = { - _mdf: false, - frameNum: -1, - defs: defs, - renderConfig: this.renderConfig, - }; - this.elements = []; - this.pendingElements = []; - this.destroyed = false; - this.rendererType = 'svg'; -} - -extendPrototype([SVGRendererBase], SVGRenderer); - -SVGRenderer.prototype.createComp = function (data) { - return new SVGCompElement(data, this.globalData, this); -}; - -function CVContextData() { - this.saved = []; - this.cArrPos = 0; - this.cTr = new Matrix(); - this.cO = 1; - var i; - var len = 15; - this.savedOp = createTypedArray('float32', len); - for (i = 0; i < len; i += 1) { - this.saved[i] = createTypedArray('float32', 16); - } - this._length = len; -} - -CVContextData.prototype.duplicate = function () { - var newLength = this._length * 2; - var currentSavedOp = this.savedOp; - this.savedOp = createTypedArray('float32', newLength); - this.savedOp.set(currentSavedOp); - var i = 0; - for (i = this._length; i < newLength; i += 1) { - this.saved[i] = createTypedArray('float32', 16); - } - this._length = newLength; -}; - -CVContextData.prototype.reset = function () { - this.cArrPos = 0; - this.cTr.reset(); - this.cO = 1; -}; - -function ShapeTransformManager() { - this.sequences = {}; - this.sequenceList = []; - this.transform_key_count = 0; -} - -ShapeTransformManager.prototype = { - addTransformSequence: function (transforms) { - var i; - var len = transforms.length; - var key = '_'; - for (i = 0; i < len; i += 1) { - key += transforms[i].transform.key + '_'; - } - var sequence = this.sequences[key]; - if (!sequence) { - sequence = { - transforms: [].concat(transforms), - finalTransform: new Matrix(), - _mdf: false, - }; - this.sequences[key] = sequence; - this.sequenceList.push(sequence); - } - return sequence; - }, - processSequence: function (sequence, isFirstFrame) { - var i = 0; - var len = sequence.transforms.length; - var _mdf = isFirstFrame; - while (i < len && !isFirstFrame) { - if (sequence.transforms[i].transform.mProps._mdf) { - _mdf = true; - break; - } - i += 1; - } - if (_mdf) { - var props; - sequence.finalTransform.reset(); - for (i = len - 1; i >= 0; i -= 1) { - props = sequence.transforms[i].transform.mProps.v.props; - sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]); - } - } - sequence._mdf = _mdf; - }, - processSequences: function (isFirstFrame) { - var i; - var len = this.sequenceList.length; - for (i = 0; i < len; i += 1) { - this.processSequence(this.sequenceList[i], isFirstFrame); - } - }, - getNewKey: function () { - this.transform_key_count += 1; - return '_' + this.transform_key_count; - }, -}; - -function CVEffects() { - -} -CVEffects.prototype.renderFrame = function () {}; - -function CVMaskElement(data, element) { - this.data = data; - this.element = element; - this.masksProperties = this.data.masksProperties || []; - this.viewData = createSizedArray(this.masksProperties.length); - var i; - var len = this.masksProperties.length; - var hasMasks = false; - for (i = 0; i < len; i += 1) { - if (this.masksProperties[i].mode !== 'n') { - hasMasks = true; - } - this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3); - } - this.hasMasks = hasMasks; - if (hasMasks) { - this.element.addRenderableComponent(this); - } -} - -CVMaskElement.prototype.renderFrame = function () { - if (!this.hasMasks) { - return; - } - var transform = this.element.finalTransform.mat; - var ctx = this.element.canvasContext; - var i; - var len = this.masksProperties.length; - var pt; - var pts; - var data; - ctx.beginPath(); - for (i = 0; i < len; i += 1) { - if (this.masksProperties[i].mode !== 'n') { - if (this.masksProperties[i].inv) { - ctx.moveTo(0, 0); - ctx.lineTo(this.element.globalData.compSize.w, 0); - ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h); - ctx.lineTo(0, this.element.globalData.compSize.h); - ctx.lineTo(0, 0); - } - data = this.viewData[i].v; - pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0); - ctx.moveTo(pt[0], pt[1]); - var j; - var jLen = data._length; - for (j = 1; j < jLen; j += 1) { - pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]); - ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]); - } - pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]); - ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]); - } - } - this.element.globalData.renderer.save(true); - ctx.clip(); -}; - -CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty; - -CVMaskElement.prototype.destroy = function () { - this.element = null; -}; - -function CVBaseElement() { -} - -CVBaseElement.prototype = { - createElements: function () {}, - initRendererElement: function () {}, - createContainerElements: function () { - this.canvasContext = this.globalData.canvasContext; - this.renderableEffectsManager = new CVEffects(this); - }, - createContent: function () {}, - setBlendMode: function () { - var globalData = this.globalData; - if (globalData.blendMode !== this.data.bm) { - globalData.blendMode = this.data.bm; - var blendModeValue = getBlendMode(this.data.bm); - globalData.canvasContext.globalCompositeOperation = blendModeValue; - } - }, - createRenderableComponents: function () { - this.maskManager = new CVMaskElement(this.data, this); - }, - hideElement: function () { - if (!this.hidden && (!this.isInRange || this.isTransparent)) { - this.hidden = true; - } - }, - showElement: function () { - if (this.isInRange && !this.isTransparent) { - this.hidden = false; - this._isFirstFrame = true; - this.maskManager._isFirstFrame = true; - } - }, - renderFrame: function () { - if (this.hidden || this.data.hd) { - return; - } - this.renderTransform(); - this.renderRenderable(); - this.setBlendMode(); - var forceRealStack = this.data.ty === 0; - this.globalData.renderer.save(forceRealStack); - this.globalData.renderer.ctxTransform(this.finalTransform.mat.props); - this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v); - this.renderInnerContent(); - this.globalData.renderer.restore(forceRealStack); - if (this.maskManager.hasMasks) { - this.globalData.renderer.restore(true); - } - if (this._isFirstFrame) { - this._isFirstFrame = false; - } - }, - destroy: function () { - this.canvasContext = null; - this.data = null; - this.globalData = null; - this.maskManager.destroy(); - }, - mHelper: new Matrix(), -}; -CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement; -CVBaseElement.prototype.show = CVBaseElement.prototype.showElement; - -function CVShapeData(element, data, styles, transformsManager) { - this.styledShapes = []; - this.tr = [0, 0, 0, 0, 0, 0]; - var ty = 4; - if (data.ty === 'rc') { - ty = 5; - } else if (data.ty === 'el') { - ty = 6; - } else if (data.ty === 'sr') { - ty = 7; - } - this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element); - var i; - var len = styles.length; - var styledShape; - for (i = 0; i < len; i += 1) { - if (!styles[i].closed) { - styledShape = { - transforms: transformsManager.addTransformSequence(styles[i].transforms), - trNodes: [], - }; - this.styledShapes.push(styledShape); - styles[i].elements.push(styledShape); - } - } -} - -CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated; - -function CVShapeElement(data, globalData, comp) { - this.shapes = []; - this.shapesData = data.shapes; - this.stylesList = []; - this.itemsData = []; - this.prevViewData = []; - this.shapeModifiers = []; - this.processedElements = []; - this.transformsManager = new ShapeTransformManager(); - this.initElement(data, globalData, comp); -} - -extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement); - -CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement; - -CVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false }; - -CVShapeElement.prototype.dashResetter = []; - -CVShapeElement.prototype.createContent = function () { - this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []); -}; - -CVShapeElement.prototype.createStyleElement = function (data, transforms) { - var styleElem = { - data: data, - type: data.ty, - preTransforms: this.transformsManager.addTransformSequence(transforms), - transforms: [], - elements: [], - closed: data.hd === true, - }; - var elementData = {}; - if (data.ty === 'fl' || data.ty === 'st') { - elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this); - if (!elementData.c.k) { - styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')'; - } - } else if (data.ty === 'gf' || data.ty === 'gs') { - elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this); - elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this); - elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this); - elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this); - elementData.g = new GradientProperty(this, data.g, this); - } - elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this); - if (data.ty === 'st' || data.ty === 'gs') { - styleElem.lc = lineCapEnum[data.lc || 2]; - styleElem.lj = lineJoinEnum[data.lj || 2]; - if (data.lj == 1) { // eslint-disable-line eqeqeq - styleElem.ml = data.ml; - } - elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this); - if (!elementData.w.k) { - styleElem.wi = elementData.w.v; - } - if (data.d) { - var d = new DashProperty(this, data.d, 'canvas', this); - elementData.d = d; - if (!elementData.d.k) { - styleElem.da = elementData.d.dashArray; - styleElem.do = elementData.d.dashoffset[0]; - } - } - } else { - styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero'; - } - this.stylesList.push(styleElem); - elementData.style = styleElem; - return elementData; -}; - -CVShapeElement.prototype.createGroupElement = function () { - var elementData = { - it: [], - prevViewData: [], - }; - return elementData; -}; - -CVShapeElement.prototype.createTransformElement = function (data) { - var elementData = { - transform: { - opacity: 1, - _opMdf: false, - key: this.transformsManager.getNewKey(), - op: PropertyFactory.getProp(this, data.o, 0, 0.01, this), - mProps: TransformPropertyFactory.getTransformProperty(this, data, this), - }, - }; - return elementData; -}; - -CVShapeElement.prototype.createShapeElement = function (data) { - var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager); - - this.shapes.push(elementData); - this.addShapeToModifiers(elementData); - return elementData; -}; - -CVShapeElement.prototype.reloadShapes = function () { - this._isFirstFrame = true; - var i; - var len = this.itemsData.length; - for (i = 0; i < len; i += 1) { - this.prevViewData[i] = this.itemsData[i]; - } - this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []); - len = this.dynamicProperties.length; - for (i = 0; i < len; i += 1) { - this.dynamicProperties[i].getValue(); - } - this.renderModifiers(); - this.transformsManager.processSequences(this._isFirstFrame); -}; - -CVShapeElement.prototype.addTransformToStyleList = function (transform) { - var i; - var len = this.stylesList.length; - for (i = 0; i < len; i += 1) { - if (!this.stylesList[i].closed) { - this.stylesList[i].transforms.push(transform); - } - } -}; - -CVShapeElement.prototype.removeTransformFromStyleList = function () { - var i; - var len = this.stylesList.length; - for (i = 0; i < len; i += 1) { - if (!this.stylesList[i].closed) { - this.stylesList[i].transforms.pop(); - } - } -}; - -CVShapeElement.prototype.closeStyles = function (styles) { - var i; - var len = styles.length; - for (i = 0; i < len; i += 1) { - styles[i].closed = true; - } -}; - -CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) { - var i; - var len = arr.length - 1; - var j; - var jLen; - var ownStyles = []; - var ownModifiers = []; - var processedPos; - var modifier; - var currentTransform; - var ownTransforms = [].concat(transforms); - for (i = len; i >= 0; i -= 1) { - processedPos = this.searchProcessedElement(arr[i]); - if (!processedPos) { - arr[i]._shouldRender = shouldRender; - } else { - itemsData[i] = prevViewData[processedPos - 1]; - } - if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') { - if (!processedPos) { - itemsData[i] = this.createStyleElement(arr[i], ownTransforms); - } else { - itemsData[i].style.closed = false; - } - - ownStyles.push(itemsData[i].style); - } else if (arr[i].ty === 'gr') { - if (!processedPos) { - itemsData[i] = this.createGroupElement(arr[i]); - } else { - jLen = itemsData[i].it.length; - for (j = 0; j < jLen; j += 1) { - itemsData[i].prevViewData[j] = itemsData[i].it[j]; - } - } - this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms); - } else if (arr[i].ty === 'tr') { - if (!processedPos) { - currentTransform = this.createTransformElement(arr[i]); - itemsData[i] = currentTransform; - } - ownTransforms.push(itemsData[i]); - this.addTransformToStyleList(itemsData[i]); - } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') { - if (!processedPos) { - itemsData[i] = this.createShapeElement(arr[i]); - } - } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') { - if (!processedPos) { - modifier = ShapeModifiers.getModifier(arr[i].ty); - modifier.init(this, arr[i]); - itemsData[i] = modifier; - this.shapeModifiers.push(modifier); - } else { - modifier = itemsData[i]; - modifier.closed = false; - } - ownModifiers.push(modifier); - } else if (arr[i].ty === 'rp') { - if (!processedPos) { - modifier = ShapeModifiers.getModifier(arr[i].ty); - itemsData[i] = modifier; - modifier.init(this, arr, i, itemsData); - this.shapeModifiers.push(modifier); - shouldRender = false; - } else { - modifier = itemsData[i]; - modifier.closed = true; - } - ownModifiers.push(modifier); - } - this.addProcessedElement(arr[i], i + 1); - } - this.removeTransformFromStyleList(); - this.closeStyles(ownStyles); - len = ownModifiers.length; - for (i = 0; i < len; i += 1) { - ownModifiers[i].closed = true; - } -}; - -CVShapeElement.prototype.renderInnerContent = function () { - this.transformHelper.opacity = 1; - this.transformHelper._opMdf = false; - this.renderModifiers(); - this.transformsManager.processSequences(this._isFirstFrame); - this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true); -}; - -CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) { - if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) { - groupTransform.opacity = parentTransform.opacity; - groupTransform.opacity *= groupTransform.op.v; - groupTransform._opMdf = true; - } -}; - -CVShapeElement.prototype.drawLayer = function () { - var i; - var len = this.stylesList.length; - var j; - var jLen; - var k; - var kLen; - var elems; - var nodes; - var renderer = this.globalData.renderer; - var ctx = this.globalData.canvasContext; - var type; - var currentStyle; - for (i = 0; i < len; i += 1) { - currentStyle = this.stylesList[i]; - type = currentStyle.type; - - // Skipping style when - // Stroke width equals 0 - // style should not be rendered (extra unused repeaters) - // current opacity equals 0 - // global opacity equals 0 - if (!(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) { - renderer.save(); - elems = currentStyle.elements; - if (type === 'st' || type === 'gs') { - ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd; - ctx.lineWidth = currentStyle.wi; - ctx.lineCap = currentStyle.lc; - ctx.lineJoin = currentStyle.lj; - ctx.miterLimit = currentStyle.ml || 0; - } else { - ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd; - } - renderer.ctxOpacity(currentStyle.coOp); - if (type !== 'st' && type !== 'gs') { - ctx.beginPath(); - } - renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props); - jLen = elems.length; - for (j = 0; j < jLen; j += 1) { - if (type === 'st' || type === 'gs') { - ctx.beginPath(); - if (currentStyle.da) { - ctx.setLineDash(currentStyle.da); - ctx.lineDashOffset = currentStyle.do; - } - } - nodes = elems[j].trNodes; - kLen = nodes.length; - - for (k = 0; k < kLen; k += 1) { - if (nodes[k].t === 'm') { - ctx.moveTo(nodes[k].p[0], nodes[k].p[1]); - } else if (nodes[k].t === 'c') { - ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]); - } else { - ctx.closePath(); - } - } - if (type === 'st' || type === 'gs') { - ctx.stroke(); - if (currentStyle.da) { - ctx.setLineDash(this.dashResetter); - } - } - } - if (type !== 'st' && type !== 'gs') { - ctx.fill(currentStyle.r); - } - renderer.restore(); - } - } -}; - -CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) { - var i; - var len = items.length - 1; - var groupTransform; - groupTransform = parentTransform; - for (i = len; i >= 0; i -= 1) { - if (items[i].ty === 'tr') { - groupTransform = data[i].transform; - this.renderShapeTransform(parentTransform, groupTransform); - } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') { - this.renderPath(items[i], data[i]); - } else if (items[i].ty === 'fl') { - this.renderFill(items[i], data[i], groupTransform); - } else if (items[i].ty === 'st') { - this.renderStroke(items[i], data[i], groupTransform); - } else if (items[i].ty === 'gf' || items[i].ty === 'gs') { - this.renderGradientFill(items[i], data[i], groupTransform); - } else if (items[i].ty === 'gr') { - this.renderShape(groupTransform, items[i].it, data[i].it); - } else if (items[i].ty === 'tm') { - // - } - } - if (isMain) { - this.drawLayer(); - } -}; - -CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) { - if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) { - var shapeNodes = styledShape.trNodes; - var paths = shape.paths; - var i; - var len; - var j; - var jLen = paths._length; - shapeNodes.length = 0; - var groupTransformMat = styledShape.transforms.finalTransform; - for (j = 0; j < jLen; j += 1) { - var pathNodes = paths.shapes[j]; - if (pathNodes && pathNodes.v) { - len = pathNodes._length; - for (i = 1; i < len; i += 1) { - if (i === 1) { - shapeNodes.push({ - t: 'm', - p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0), - }); - } - shapeNodes.push({ - t: 'c', - pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]), - }); - } - if (len === 1) { - shapeNodes.push({ - t: 'm', - p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0), - }); - } - if (pathNodes.c && len) { - shapeNodes.push({ - t: 'c', - pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]), - }); - shapeNodes.push({ - t: 'z', - }); - } - } - } - styledShape.trNodes = shapeNodes; - } -}; - -CVShapeElement.prototype.renderPath = function (pathData, itemData) { - if (pathData.hd !== true && pathData._shouldRender) { - var i; - var len = itemData.styledShapes.length; - for (i = 0; i < len; i += 1) { - this.renderStyledShape(itemData.styledShapes[i], itemData.sh); - } - } -}; - -CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) { - var styleElem = itemData.style; - - if (itemData.c._mdf || this._isFirstFrame) { - styleElem.co = 'rgb(' - + bmFloor(itemData.c.v[0]) + ',' - + bmFloor(itemData.c.v[1]) + ',' - + bmFloor(itemData.c.v[2]) + ')'; - } - if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) { - styleElem.coOp = itemData.o.v * groupTransform.opacity; - } -}; - -CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) { - var styleElem = itemData.style; - var grd; - if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) { - var ctx = this.globalData.canvasContext; - var pt1 = itemData.s.v; - var pt2 = itemData.e.v; - if (styleData.t === 1) { - grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]); - } else { - var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2)); - var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]); - - var percent = itemData.h.v; - if (percent >= 1) { - percent = 0.99; - } else if (percent <= -1) { - percent = -0.99; - } - var dist = rad * percent; - var x = Math.cos(ang + itemData.a.v) * dist + pt1[0]; - var y = Math.sin(ang + itemData.a.v) * dist + pt1[1]; - grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad); - } - - var i; - var len = styleData.g.p; - var cValues = itemData.g.c; - var opacity = 1; - - for (i = 0; i < len; i += 1) { - if (itemData.g._hasOpacity && itemData.g._collapsable) { - opacity = itemData.g.o[i * 2 + 1]; - } - grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')'); - } - styleElem.grd = grd; - } - styleElem.coOp = itemData.o.v * groupTransform.opacity; -}; - -CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) { - var styleElem = itemData.style; - var d = itemData.d; - if (d && (d._mdf || this._isFirstFrame)) { - styleElem.da = d.dashArray; - styleElem.do = d.dashoffset[0]; - } - if (itemData.c._mdf || this._isFirstFrame) { - styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')'; - } - if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) { - styleElem.coOp = itemData.o.v * groupTransform.opacity; - } - if (itemData.w._mdf || this._isFirstFrame) { - styleElem.wi = itemData.w.v; - } -}; - -CVShapeElement.prototype.destroy = function () { - this.shapesData = null; - this.globalData = null; - this.canvasContext = null; - this.stylesList.length = 0; - this.itemsData.length = 0; -}; - -function CVTextElement(data, globalData, comp) { - this.textSpans = []; - this.yOffset = 0; - this.fillColorAnim = false; - this.strokeColorAnim = false; - this.strokeWidthAnim = false; - this.stroke = false; - this.fill = false; - this.justifyOffset = 0; - this.currentRender = null; - this.renderType = 'canvas'; - this.values = { - fill: 'rgba(0,0,0,0)', - stroke: 'rgba(0,0,0,0)', - sWidth: 0, - fValue: '', - }; - this.initElement(data, globalData, comp); -} -extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement); - -CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d'); - -CVTextElement.prototype.buildNewText = function () { - var documentData = this.textProperty.currentData; - this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0); - - var hasFill = false; - if (documentData.fc) { - hasFill = true; - this.values.fill = this.buildColor(documentData.fc); - } else { - this.values.fill = 'rgba(0,0,0,0)'; - } - this.fill = hasFill; - var hasStroke = false; - if (documentData.sc) { - hasStroke = true; - this.values.stroke = this.buildColor(documentData.sc); - this.values.sWidth = documentData.sw; - } - var fontData = this.globalData.fontManager.getFontByName(documentData.f); - var i; - var len; - var letters = documentData.l; - var matrixHelper = this.mHelper; - this.stroke = hasStroke; - this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily; - len = documentData.finalText.length; - // this.tHelper.font = this.values.fValue; - var charData; - var shapeData; - var k; - var kLen; - var shapes; - var j; - var jLen; - var pathNodes; - var commands; - var pathArr; - var singleShape = this.data.singleShape; - var trackingOffset = documentData.tr * 0.001 * documentData.finalSize; - var xPos = 0; - var yPos = 0; - var firstLine = true; - var cnt = 0; - for (i = 0; i < len; i += 1) { - charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily); - shapeData = (charData && charData.data) || {}; - matrixHelper.reset(); - if (singleShape && letters[i].n) { - xPos = -trackingOffset; - yPos += documentData.yOffset; - yPos += firstLine ? 1 : 0; - firstLine = false; - } - shapes = shapeData.shapes ? shapeData.shapes[0].it : []; - jLen = shapes.length; - matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100); - if (singleShape) { - this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos); - } - commands = createSizedArray(jLen - 1); - var commandsCounter = 0; - for (j = 0; j < jLen; j += 1) { - if (shapes[j].ty === 'sh') { - kLen = shapes[j].ks.k.i.length; - pathNodes = shapes[j].ks.k; - pathArr = []; - for (k = 1; k < kLen; k += 1) { - if (k === 1) { - pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0)); - } - pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0)); - } - pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0)); - commands[commandsCounter] = pathArr; - commandsCounter += 1; - } - } - if (singleShape) { - xPos += letters[i].l; - xPos += trackingOffset; - } - if (this.textSpans[cnt]) { - this.textSpans[cnt].elem = commands; - } else { - this.textSpans[cnt] = { elem: commands }; - } - cnt += 1; - } -}; - -CVTextElement.prototype.renderInnerContent = function () { - var ctx = this.canvasContext; - ctx.font = this.values.fValue; - ctx.lineCap = 'butt'; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 4; - - if (!this.data.singleShape) { - this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag); - } - - var i; - var len; - var j; - var jLen; - var k; - var kLen; - var renderedLetters = this.textAnimator.renderedLetters; - - var letters = this.textProperty.currentData.l; - - len = letters.length; - var renderedLetter; - var lastFill = null; - var lastStroke = null; - var lastStrokeW = null; - var commands; - var pathArr; - for (i = 0; i < len; i += 1) { - if (!letters[i].n) { - renderedLetter = renderedLetters[i]; - if (renderedLetter) { - this.globalData.renderer.save(); - this.globalData.renderer.ctxTransform(renderedLetter.p); - this.globalData.renderer.ctxOpacity(renderedLetter.o); - } - if (this.fill) { - if (renderedLetter && renderedLetter.fc) { - if (lastFill !== renderedLetter.fc) { - lastFill = renderedLetter.fc; - ctx.fillStyle = renderedLetter.fc; - } - } else if (lastFill !== this.values.fill) { - lastFill = this.values.fill; - ctx.fillStyle = this.values.fill; - } - commands = this.textSpans[i].elem; - jLen = commands.length; - this.globalData.canvasContext.beginPath(); - for (j = 0; j < jLen; j += 1) { - pathArr = commands[j]; - kLen = pathArr.length; - this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]); - for (k = 2; k < kLen; k += 6) { - this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]); - } - } - this.globalData.canvasContext.closePath(); - this.globalData.canvasContext.fill(); - /// ctx.fillText(this.textSpans[i].val,0,0); - } - if (this.stroke) { - if (renderedLetter && renderedLetter.sw) { - if (lastStrokeW !== renderedLetter.sw) { - lastStrokeW = renderedLetter.sw; - ctx.lineWidth = renderedLetter.sw; - } - } else if (lastStrokeW !== this.values.sWidth) { - lastStrokeW = this.values.sWidth; - ctx.lineWidth = this.values.sWidth; - } - if (renderedLetter && renderedLetter.sc) { - if (lastStroke !== renderedLetter.sc) { - lastStroke = renderedLetter.sc; - ctx.strokeStyle = renderedLetter.sc; - } - } else if (lastStroke !== this.values.stroke) { - lastStroke = this.values.stroke; - ctx.strokeStyle = this.values.stroke; - } - commands = this.textSpans[i].elem; - jLen = commands.length; - this.globalData.canvasContext.beginPath(); - for (j = 0; j < jLen; j += 1) { - pathArr = commands[j]; - kLen = pathArr.length; - this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]); - for (k = 2; k < kLen; k += 6) { - this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]); - } - } - this.globalData.canvasContext.closePath(); - this.globalData.canvasContext.stroke(); - /// ctx.strokeText(letters[i].val,0,0); - } - if (renderedLetter) { - this.globalData.renderer.restore(); - } - } - } -}; - -function CVImageElement(data, globalData, comp) { - this.assetData = globalData.getAssetData(data.refId); - this.img = globalData.imageLoader.getAsset(this.assetData); - this.initElement(data, globalData, comp); -} -extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement); - -CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement; -CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame; - -CVImageElement.prototype.createContent = function () { - if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) { - var canvas = createTag('canvas'); - canvas.width = this.assetData.w; - canvas.height = this.assetData.h; - var ctx = canvas.getContext('2d'); - - var imgW = this.img.width; - var imgH = this.img.height; - var imgRel = imgW / imgH; - var canvasRel = this.assetData.w / this.assetData.h; - var widthCrop; - var heightCrop; - var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio; - if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) { - heightCrop = imgH; - widthCrop = heightCrop * canvasRel; - } else { - widthCrop = imgW; - heightCrop = widthCrop / canvasRel; - } - ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h); - this.img = canvas; - } -}; - -CVImageElement.prototype.renderInnerContent = function () { - this.canvasContext.drawImage(this.img, 0, 0); -}; - -CVImageElement.prototype.destroy = function () { - this.img = null; -}; - -function CVSolidElement(data, globalData, comp) { - this.initElement(data, globalData, comp); -} -extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement); - -CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement; -CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame; - -CVSolidElement.prototype.renderInnerContent = function () { - var ctx = this.canvasContext; - ctx.fillStyle = this.data.sc; - ctx.fillRect(0, 0, this.data.sw, this.data.sh); - // -}; - -function CanvasRendererBase(animationItem, config) { - this.animationItem = animationItem; - this.renderConfig = { - clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true, - context: (config && config.context) || null, - progressiveLoad: (config && config.progressiveLoad) || false, - preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet', - imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice', - contentVisibility: (config && config.contentVisibility) || 'visible', - className: (config && config.className) || '', - id: (config && config.id) || '', - }; - this.renderConfig.dpr = (config && config.dpr) || 1; - if (this.animationItem.wrapper) { - this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1; - } - this.renderedFrame = -1; - this.globalData = { - frameNum: -1, - _mdf: false, - renderConfig: this.renderConfig, - currentGlobalAlpha: -1, - }; - this.contextData = new CVContextData(); - this.elements = []; - this.pendingElements = []; - this.transformMat = new Matrix(); - this.completeLayers = false; - this.rendererType = 'canvas'; -} -extendPrototype([BaseRenderer], CanvasRendererBase); - -CanvasRendererBase.prototype.createShape = function (data) { - return new CVShapeElement(data, this.globalData, this); -}; - -CanvasRendererBase.prototype.createText = function (data) { - return new CVTextElement(data, this.globalData, this); -}; - -CanvasRendererBase.prototype.createImage = function (data) { - return new CVImageElement(data, this.globalData, this); -}; - -CanvasRendererBase.prototype.createSolid = function (data) { - return new CVSolidElement(data, this.globalData, this); -}; - -CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull; - -CanvasRendererBase.prototype.ctxTransform = function (props) { - if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) { - return; - } - if (!this.renderConfig.clearCanvas) { - this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]); - return; - } - this.transformMat.cloneFromProps(props); - var cProps = this.contextData.cTr.props; - this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]); - // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]); - this.contextData.cTr.cloneFromProps(this.transformMat.props); - var trProps = this.contextData.cTr.props; - this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]); -}; - -CanvasRendererBase.prototype.ctxOpacity = function (op) { - /* if(op === 1){ - return; - } */ - if (!this.renderConfig.clearCanvas) { - this.canvasContext.globalAlpha *= op < 0 ? 0 : op; - this.globalData.currentGlobalAlpha = this.contextData.cO; - return; - } - this.contextData.cO *= op < 0 ? 0 : op; - if (this.globalData.currentGlobalAlpha !== this.contextData.cO) { - this.canvasContext.globalAlpha = this.contextData.cO; - this.globalData.currentGlobalAlpha = this.contextData.cO; - } -}; - -CanvasRendererBase.prototype.reset = function () { - if (!this.renderConfig.clearCanvas) { - this.canvasContext.restore(); - return; - } - this.contextData.reset(); -}; - -CanvasRendererBase.prototype.save = function (actionFlag) { - if (!this.renderConfig.clearCanvas) { - this.canvasContext.save(); - return; - } - if (actionFlag) { - this.canvasContext.save(); - } - var props = this.contextData.cTr.props; - if (this.contextData._length <= this.contextData.cArrPos) { - this.contextData.duplicate(); - } - var i; - var arr = this.contextData.saved[this.contextData.cArrPos]; - for (i = 0; i < 16; i += 1) { - arr[i] = props[i]; - } - this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO; - this.contextData.cArrPos += 1; -}; - -CanvasRendererBase.prototype.restore = function (actionFlag) { - if (!this.renderConfig.clearCanvas) { - this.canvasContext.restore(); - return; - } - if (actionFlag) { - this.canvasContext.restore(); - this.globalData.blendMode = 'source-over'; - } - this.contextData.cArrPos -= 1; - var popped = this.contextData.saved[this.contextData.cArrPos]; - var i; - var arr = this.contextData.cTr.props; - for (i = 0; i < 16; i += 1) { - arr[i] = popped[i]; - } - this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]); - popped = this.contextData.savedOp[this.contextData.cArrPos]; - this.contextData.cO = popped; - if (this.globalData.currentGlobalAlpha !== popped) { - this.canvasContext.globalAlpha = popped; - this.globalData.currentGlobalAlpha = popped; - } -}; - -CanvasRendererBase.prototype.configAnimation = function (animData) { - if (this.animationItem.wrapper) { - this.animationItem.container = createTag('canvas'); - var containerStyle = this.animationItem.container.style; - containerStyle.width = '100%'; - containerStyle.height = '100%'; - var origin = '0px 0px 0px'; - containerStyle.transformOrigin = origin; - containerStyle.mozTransformOrigin = origin; - containerStyle.webkitTransformOrigin = origin; - containerStyle['-webkit-transform'] = origin; - containerStyle.contentVisibility = this.renderConfig.contentVisibility; - this.animationItem.wrapper.appendChild(this.animationItem.container); - this.canvasContext = this.animationItem.container.getContext('2d'); - if (this.renderConfig.className) { - this.animationItem.container.setAttribute('class', this.renderConfig.className); - } - if (this.renderConfig.id) { - this.animationItem.container.setAttribute('id', this.renderConfig.id); - } - } else { - this.canvasContext = this.renderConfig.context; - } - this.data = animData; - this.layers = animData.layers; - this.transformCanvas = { - w: animData.w, - h: animData.h, - sx: 0, - sy: 0, - tx: 0, - ty: 0, - }; - this.setupGlobalData(animData, document.body); - this.globalData.canvasContext = this.canvasContext; - this.globalData.renderer = this; - this.globalData.isDashed = false; - this.globalData.progressiveLoad = this.renderConfig.progressiveLoad; - this.globalData.transformCanvas = this.transformCanvas; - this.elements = createSizedArray(animData.layers.length); - - this.updateContainerSize(); -}; - -CanvasRendererBase.prototype.updateContainerSize = function () { - this.reset(); - var elementWidth; - var elementHeight; - if (this.animationItem.wrapper && this.animationItem.container) { - elementWidth = this.animationItem.wrapper.offsetWidth; - elementHeight = this.animationItem.wrapper.offsetHeight; - this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr); - this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr); - } else { - elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr; - elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr; - } - var elementRel; - var animationRel; - if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) { - var par = this.renderConfig.preserveAspectRatio.split(' '); - var fillType = par[1] || 'meet'; - var pos = par[0] || 'xMidYMid'; - var xPos = pos.substr(0, 4); - var yPos = pos.substr(4); - elementRel = elementWidth / elementHeight; - animationRel = this.transformCanvas.w / this.transformCanvas.h; - if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) { - this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); - this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); - } else { - this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); - this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); - } - - if (xPos === 'xMid' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) { - this.transformCanvas.tx = ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) * this.renderConfig.dpr; - } else if (xPos === 'xMax' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) { - this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr; - } else { - this.transformCanvas.tx = 0; - } - if (yPos === 'YMid' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) { - this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) * this.renderConfig.dpr; - } else if (yPos === 'YMax' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) { - this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w))) * this.renderConfig.dpr; - } else { - this.transformCanvas.ty = 0; - } - } else if (this.renderConfig.preserveAspectRatio === 'none') { - this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr); - this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr); - this.transformCanvas.tx = 0; - this.transformCanvas.ty = 0; - } else { - this.transformCanvas.sx = this.renderConfig.dpr; - this.transformCanvas.sy = this.renderConfig.dpr; - this.transformCanvas.tx = 0; - this.transformCanvas.ty = 0; - } - this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1]; - /* var i, len = this.elements.length; - for(i=0;i= 0; i -= 1) { - if (this.elements[i]) { - this.elements[i].destroy(); - } - } - this.elements.length = 0; - this.globalData.canvasContext = null; - this.animationItem.container = null; - this.destroyed = true; -}; - -CanvasRendererBase.prototype.renderFrame = function (num, forceRender) { - if ((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1) { - return; - } - this.renderedFrame = num; - this.globalData.frameNum = num - this.animationItem._isFirstFrame; - this.globalData.frameId += 1; - this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender; - this.globalData.projectInterface.currentFrame = num; - - // console.log('--------'); - // console.log('NEW: ',num); - var i; - var len = this.layers.length; - if (!this.completeLayers) { - this.checkLayers(num); - } - - for (i = 0; i < len; i += 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].prepareFrame(num - this.layers[i].st); - } - } - if (this.globalData._mdf) { - if (this.renderConfig.clearCanvas === true) { - this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h); - } else { - this.save(); - } - for (i = len - 1; i >= 0; i -= 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].renderFrame(); - } - } - if (this.renderConfig.clearCanvas !== true) { - this.restore(); - } - } -}; - -CanvasRendererBase.prototype.buildItem = function (pos) { - var elements = this.elements; - if (elements[pos] || this.layers[pos].ty === 99) { - return; - } - var element = this.createItem(this.layers[pos], this, this.globalData); - elements[pos] = element; - element.initExpressions(); - /* if(this.layers[pos].ty === 0){ - element.resize(this.globalData.transformCanvas); - } */ -}; - -CanvasRendererBase.prototype.checkPendingElements = function () { - while (this.pendingElements.length) { - var element = this.pendingElements.pop(); - element.checkParenting(); - } -}; - -CanvasRendererBase.prototype.hide = function () { - this.animationItem.container.style.display = 'none'; -}; - -CanvasRendererBase.prototype.show = function () { - this.animationItem.container.style.display = 'block'; -}; - -function CVCompElement(data, globalData, comp) { - this.completeLayers = false; - this.layers = data.layers; - this.pendingElements = []; - this.elements = createSizedArray(this.layers.length); - this.initElement(data, globalData, comp); - this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true }; -} - -extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement); - -CVCompElement.prototype.renderInnerContent = function () { - var ctx = this.canvasContext; - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.lineTo(this.data.w, 0); - ctx.lineTo(this.data.w, this.data.h); - ctx.lineTo(0, this.data.h); - ctx.lineTo(0, 0); - ctx.clip(); - var i; - var len = this.layers.length; - for (i = len - 1; i >= 0; i -= 1) { - if (this.completeLayers || this.elements[i]) { - this.elements[i].renderFrame(); - } - } -}; - -CVCompElement.prototype.destroy = function () { - var i; - var len = this.layers.length; - for (i = len - 1; i >= 0; i -= 1) { - if (this.elements[i]) { - this.elements[i].destroy(); - } - } - this.layers = null; - this.elements = null; -}; - -CVCompElement.prototype.createComp = function (data) { - return new CVCompElement(data, this.globalData, this); -}; - -function CanvasRenderer(animationItem, config) { - this.animationItem = animationItem; - this.renderConfig = { - clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true, - context: (config && config.context) || null, - progressiveLoad: (config && config.progressiveLoad) || false, - preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet', - imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice', - contentVisibility: (config && config.contentVisibility) || 'visible', - className: (config && config.className) || '', - id: (config && config.id) || '', - }; - this.renderConfig.dpr = (config && config.dpr) || 1; - if (this.animationItem.wrapper) { - this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1; - } - this.renderedFrame = -1; - this.globalData = { - frameNum: -1, - _mdf: false, - renderConfig: this.renderConfig, - currentGlobalAlpha: -1, - }; - this.contextData = new CVContextData(); - this.elements = []; - this.pendingElements = []; - this.transformMat = new Matrix(); - this.completeLayers = false; - this.rendererType = 'canvas'; -} -extendPrototype([CanvasRendererBase], CanvasRenderer); - -CanvasRenderer.prototype.createComp = function (data) { - return new CVCompElement(data, this.globalData, this); -}; - -// Registering renderers -registerRenderer('canvas', CanvasRenderer); - -// Registering shape modifiers -ShapeModifiers.registerModifier('tm', TrimModifier); -ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier); -ShapeModifiers.registerModifier('rp', RepeaterModifier); -ShapeModifiers.registerModifier('rd', RoundCornersModifier); - -const Expressions = (function () { - var ob = {}; - ob.initExpressions = initExpressions; - - function initExpressions(animation) { - var stackCount = 0; - var registers = []; - - function pushExpression() { - stackCount += 1; - } - - function popExpression() { - stackCount -= 1; - if (stackCount === 0) { - releaseInstances(); - } - } - - function registerExpressionProperty(expression) { - if (registers.indexOf(expression) === -1) { - registers.push(expression); - } - } - - function releaseInstances() { - var i; - var len = registers.length; - for (i = 0; i < len; i += 1) { - registers[i].release(); - } - registers.length = 0; - } - - animation.renderer.compInterface = CompExpressionInterface(animation.renderer); - animation.renderer.globalData.projectInterface.registerComposition(animation.renderer); - animation.renderer.globalData.pushExpression = pushExpression; - animation.renderer.globalData.popExpression = popExpression; - animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty; - } - return ob; -}()); - -/* eslint-disable */ -/* - Copyright 2014 David Bau. - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - */ - -function seedRandom(pool, math) { -// -// The following constants are related to IEEE 754 limits. -// - var global = this, - width = 256, // each RC4 output is 0 <= x < 256 - chunks = 6, // at least six RC4 outputs for each double - digits = 52, // there are 52 significant digits in a double - rngname = 'random', // rngname: name for Math.random and Math.seedrandom - startdenom = math.pow(width, chunks), - significance = math.pow(2, digits), - overflow = significance * 2, - mask = width - 1, - nodecrypto; // node.js crypto module, initialized at the bottom. - -// -// seedrandom() -// This is the seedrandom function described above. -// - function seedrandom(seed, options, callback) { - var key = []; - options = (options === true) ? { entropy: true } : (options || {}); - - // Flatten the seed string or build one from local entropy if needed. - var shortseed = mixkey(flatten( - options.entropy ? [seed, tostring(pool)] : - (seed === null) ? autoseed() : seed, 3), key); - - // Use the seed to initialize an ARC4 generator. - var arc4 = new ARC4(key); - - // This function returns a random double in [0, 1) that contains - // randomness in every bit of the mantissa of the IEEE 754 value. - var prng = function() { - var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48 - d = startdenom, // and denominator d = 2 ^ 48. - x = 0; // and no 'extra last byte'. - while (n < significance) { // Fill up all significant digits by - n = (n + x) * width; // shifting numerator and - d *= width; // denominator and generating a - x = arc4.g(1); // new least-significant-byte. - } - while (n >= overflow) { // To avoid rounding up, before adding - n /= 2; // last byte, shift everything - d /= 2; // right using integer math until - x >>>= 1; // we have exactly the desired bits. - } - return (n + x) / d; // Form the number within [0, 1). - }; - - prng.int32 = function() { return arc4.g(4) | 0; }; - prng.quick = function() { return arc4.g(4) / 0x100000000; }; - prng.double = prng; - - // Mix the randomness into accumulated entropy. - mixkey(tostring(arc4.S), pool); - - // Calling convention: what to return as a function of prng, seed, is_math. - return (options.pass || callback || - function(prng, seed, is_math_call, state) { - if (state) { - // Load the arc4 state from the given state if it has an S array. - if (state.S) { copy(state, arc4); } - // Only provide the .state method if requested via options.state. - prng.state = function() { return copy(arc4, {}); }; - } - - // If called as a method of Math (Math.seedrandom()), mutate - // Math.random because that is how seedrandom.js has worked since v1.0. - if (is_math_call) { math[rngname] = prng; return seed; } - - // Otherwise, it is a newer calling convention, so return the - // prng directly. - else return prng; - })( - prng, - shortseed, - 'global' in options ? options.global : (this == math), - options.state); - } - math['seed' + rngname] = seedrandom; - -// -// ARC4 -// -// An ARC4 implementation. The constructor takes a key in the form of -// an array of at most (width) integers that should be 0 <= x < (width). -// -// The g(count) method returns a pseudorandom integer that concatenates -// the next (count) outputs from ARC4. Its return value is a number x -// that is in the range 0 <= x < (width ^ count). -// - function ARC4(key) { - var t, keylen = key.length, - me = this, i = 0, j = me.i = me.j = 0, s = me.S = []; - - // The empty key [] is treated as [0]. - if (!keylen) { key = [keylen++]; } - - // Set up S using the standard key scheduling algorithm. - while (i < width) { - s[i] = i++; - } - for (i = 0; i < width; i++) { - s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))]; - s[j] = t; - } - - // The "g" method returns the next (count) outputs as one number. - me.g = function(count) { - // Using instance members instead of closure state nearly doubles speed. - var t, r = 0, - i = me.i, j = me.j, s = me.S; - while (count--) { - t = s[i = mask & (i + 1)]; - r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))]; - } - me.i = i; me.j = j; - return r; - // For robust unpredictability, the function call below automatically - // discards an initial batch of values. This is called RC4-drop[256]. - // See http://google.com/search?q=rsa+fluhrer+response&btnI - }; - } - -// -// copy() -// Copies internal state of ARC4 to or from a plain object. -// - function copy(f, t) { - t.i = f.i; - t.j = f.j; - t.S = f.S.slice(); - return t; - } - -// -// flatten() -// Converts an object tree to nested arrays of strings. -// - function flatten(obj, depth) { - var result = [], typ = (typeof obj), prop; - if (depth && typ == 'object') { - for (prop in obj) { - try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {} - } - } - return (result.length ? result : typ == 'string' ? obj : obj + '\0'); - } - -// -// mixkey() -// Mixes a string seed into a key that is an array of integers, and -// returns a shortened string seed that is equivalent to the result key. -// - function mixkey(seed, key) { - var stringseed = seed + '', smear, j = 0; - while (j < stringseed.length) { - key[mask & j] = - mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++)); - } - return tostring(key); - } - -// -// autoseed() -// Returns an object for autoseeding, using window.crypto and Node crypto -// module if available. -// - function autoseed() { - try { - if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); } - var out = new Uint8Array(width); - (global.crypto || global.msCrypto).getRandomValues(out); - return tostring(out); - } catch (e) { - var browser = global.navigator, - plugins = browser && browser.plugins; - return [+new Date(), global, plugins, global.screen, tostring(pool)]; - } - } - -// -// tostring() -// Converts an array of charcodes to a string -// - function tostring(a) { - return String.fromCharCode.apply(0, a); - } - -// -// When seedrandom.js is loaded, we immediately mix a few bits -// from the built-in RNG into the entropy pool. Because we do -// not want to interfere with deterministic PRNG state later, -// seedrandom will not call math.random on its own again after -// initialization. -// - mixkey(math.random(), pool); - -// -// Nodejs and AMD support: export the implementation as a module using -// either convention. -// - -// End anonymous scope, and pass initial values. -}; - -function initialize$2(BMMath) { - seedRandom([], BMMath); -} - -var propTypes = { - SHAPE: 'shape', -}; - -/* eslint-disable camelcase */ - -const ExpressionManager = (function () { - 'use strict'; - - var ob = {}; - var Math = BMMath; - var window = null; - var document = null; - var XMLHttpRequest = null; - var fetch = null; - var frames = null; - initialize$2(BMMath); - - function $bm_isInstanceOfArray(arr) { - return arr.constructor === Array || arr.constructor === Float32Array; - } - - function isNumerable(tOfV, v) { - return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number; - } - - function $bm_neg(a) { - var tOfA = typeof a; - if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) { - return -a; - } - if ($bm_isInstanceOfArray(a)) { - var i; - var lenA = a.length; - var retArr = []; - for (i = 0; i < lenA; i += 1) { - retArr[i] = -a[i]; - } - return retArr; - } - if (a.propType) { - return a.v; - } - return -a; - } - - var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get; - var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get; - var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get; - - function sum(a, b) { - var tOfA = typeof a; - var tOfB = typeof b; - if (tOfA === 'string' || tOfB === 'string') { - return a + b; - } - if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { - return a + b; - } - if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { - a = a.slice(0); - a[0] += b; - return a; - } - if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { - b = b.slice(0); - b[0] = a + b[0]; - return b; - } - if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) { - var i = 0; - var lenA = a.length; - var lenB = b.length; - var retArr = []; - while (i < lenA || i < lenB) { - if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) { - retArr[i] = a[i] + b[i]; - } else { - retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i]; - } - i += 1; - } - return retArr; - } - return 0; - } - var add = sum; - - function sub(a, b) { - var tOfA = typeof a; - var tOfB = typeof b; - if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { - if (tOfA === 'string') { - a = parseInt(a, 10); - } - if (tOfB === 'string') { - b = parseInt(b, 10); - } - return a - b; - } - if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { - a = a.slice(0); - a[0] -= b; - return a; - } - if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { - b = b.slice(0); - b[0] = a - b[0]; - return b; - } - if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) { - var i = 0; - var lenA = a.length; - var lenB = b.length; - var retArr = []; - while (i < lenA || i < lenB) { - if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) { - retArr[i] = a[i] - b[i]; - } else { - retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i]; - } - i += 1; - } - return retArr; - } - return 0; - } - - function mul(a, b) { - var tOfA = typeof a; - var tOfB = typeof b; - var arr; - if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { - return a * b; - } - - var i; - var len; - if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { - len = a.length; - arr = createTypedArray('float32', len); - for (i = 0; i < len; i += 1) { - arr[i] = a[i] * b; - } - return arr; - } - if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { - len = b.length; - arr = createTypedArray('float32', len); - for (i = 0; i < len; i += 1) { - arr[i] = a * b[i]; - } - return arr; - } - return 0; - } - - function div(a, b) { - var tOfA = typeof a; - var tOfB = typeof b; - var arr; - if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) { - return a / b; - } - var i; - var len; - if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) { - len = a.length; - arr = createTypedArray('float32', len); - for (i = 0; i < len; i += 1) { - arr[i] = a[i] / b; - } - return arr; - } - if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) { - len = b.length; - arr = createTypedArray('float32', len); - for (i = 0; i < len; i += 1) { - arr[i] = a / b[i]; - } - return arr; - } - return 0; - } - function mod(a, b) { - if (typeof a === 'string') { - a = parseInt(a, 10); - } - if (typeof b === 'string') { - b = parseInt(b, 10); - } - return a % b; - } - var $bm_sum = sum; - var $bm_sub = sub; - var $bm_mul = mul; - var $bm_div = div; - var $bm_mod = mod; - - function clamp(num, min, max) { - if (min > max) { - var mm = max; - max = min; - min = mm; - } - return Math.min(Math.max(num, min), max); - } - - function radiansToDegrees(val) { - return val / degToRads; - } - var radians_to_degrees = radiansToDegrees; - - function degreesToRadians(val) { - return val * degToRads; - } - var degrees_to_radians = radiansToDegrees; - - var helperLengthArray = [0, 0, 0, 0, 0, 0]; - - function length(arr1, arr2) { - if (typeof arr1 === 'number' || arr1 instanceof Number) { - arr2 = arr2 || 0; - return Math.abs(arr1 - arr2); - } - if (!arr2) { - arr2 = helperLengthArray; - } - var i; - var len = Math.min(arr1.length, arr2.length); - var addedLength = 0; - for (i = 0; i < len; i += 1) { - addedLength += Math.pow(arr2[i] - arr1[i], 2); - } - return Math.sqrt(addedLength); - } - - function normalize(vec) { - return div(vec, length(vec)); - } - - function rgbToHsl(val) { - var r = val[0]; var g = val[1]; var b = val[2]; - var max = Math.max(r, g, b); - var min = Math.min(r, g, b); - var h; - var s; - var l = (max + min) / 2; - - if (max === min) { - h = 0; // achromatic - s = 0; // achromatic - } else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch (max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - default: break; - } - h /= 6; - } - - return [h, s, l, val[3]]; - } - - function hue2rgb(p, q, t) { - if (t < 0) t += 1; - if (t > 1) t -= 1; - if (t < 1 / 6) return p + (q - p) * 6 * t; - if (t < 1 / 2) return q; - if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; - return p; - } - - function hslToRgb(val) { - var h = val[0]; - var s = val[1]; - var l = val[2]; - - var r; - var g; - var b; - - if (s === 0) { - r = l; // achromatic - b = l; // achromatic - g = l; // achromatic - } else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hue2rgb(p, q, h + 1 / 3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1 / 3); - } - - return [r, g, b, val[3]]; - } - - function linear(t, tMin, tMax, value1, value2) { - if (value1 === undefined || value2 === undefined) { - value1 = tMin; - value2 = tMax; - tMin = 0; - tMax = 1; - } - if (tMax < tMin) { - var _tMin = tMax; - tMax = tMin; - tMin = _tMin; - } - if (t <= tMin) { - return value1; - } if (t >= tMax) { - return value2; - } - var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin); - if (!value1.length) { - return value1 + (value2 - value1) * perc; - } - var i; - var len = value1.length; - var arr = createTypedArray('float32', len); - for (i = 0; i < len; i += 1) { - arr[i] = value1[i] + (value2[i] - value1[i]) * perc; - } - return arr; - } - function random(min, max) { - if (max === undefined) { - if (min === undefined) { - min = 0; - max = 1; - } else { - max = min; - min = undefined; - } - } - if (max.length) { - var i; - var len = max.length; - if (!min) { - min = createTypedArray('float32', len); - } - var arr = createTypedArray('float32', len); - var rnd = BMMath.random(); - for (i = 0; i < len; i += 1) { - arr[i] = min[i] + rnd * (max[i] - min[i]); - } - return arr; - } - if (min === undefined) { - min = 0; - } - var rndm = BMMath.random(); - return min + rndm * (max - min); - } - - function createPath(points, inTangents, outTangents, closed) { - var i; - var len = points.length; - var path = shapePool.newElement(); - path.setPathData(!!closed, len); - var arrPlaceholder = [0, 0]; - var inVertexPoint; - var outVertexPoint; - for (i = 0; i < len; i += 1) { - inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder; - outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder; - path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true); - } - return path; - } - - function initiateExpression(elem, data, property) { - var val = data.x; - var needsVelocity = /velocity(?![\w\d])/.test(val); - var _needsRandom = val.indexOf('random') !== -1; - var elemType = elem.data.ty; - var transform; - var $bm_transform; - var content; - var effect; - var thisProperty = property; - thisProperty.valueAtTime = thisProperty.getValueAtTime; - Object.defineProperty(thisProperty, 'value', { - get: function () { - return thisProperty.v; - }, - }); - elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate; - elem.comp.displayStartTime = 0; - var inPoint = elem.data.ip / elem.comp.globalData.frameRate; - var outPoint = elem.data.op / elem.comp.globalData.frameRate; - var width = elem.data.sw ? elem.data.sw : 0; - var height = elem.data.sh ? elem.data.sh : 0; - var name = elem.data.nm; - var loopIn; - var loop_in; - var loopOut; - var loop_out; - var smooth; - var toWorld; - var fromWorld; - var fromComp; - var toComp; - var fromCompToSurface; - var position; - var rotation; - var anchorPoint; - var scale; - var thisLayer; - var thisComp; - var mask; - var valueAtTime; - var velocityAtTime; - - var scoped_bm_rt; - // val = val.replace(/(\\?"|')((http)(s)?(:\/))?\/.*?(\\?"|')/g, "\"\""); // deter potential network calls - var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval - var numKeys = property.kf ? data.k.length : 0; - - var active = !this.data || this.data.hd !== true; - - var wiggle = function wiggle(freq, amp) { - var iWiggle; - var j; - var lenWiggle = this.pv.length ? this.pv.length : 1; - var addedAmps = createTypedArray('float32', lenWiggle); - freq = 5; - var iterations = Math.floor(time * freq); - iWiggle = 0; - j = 0; - while (iWiggle < iterations) { - // var rnd = BMMath.random(); - for (j = 0; j < lenWiggle; j += 1) { - addedAmps[j] += -amp + amp * 2 * BMMath.random(); - // addedAmps[j] += -amp + amp*2*rnd; - } - iWiggle += 1; - } - // var rnd2 = BMMath.random(); - var periods = time * freq; - var perc = periods - Math.floor(periods); - var arr = createTypedArray('float32', lenWiggle); - if (lenWiggle > 1) { - for (j = 0; j < lenWiggle; j += 1) { - arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; - // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc; - // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc); - } - return arr; - } - return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc; - }.bind(this); - - if (thisProperty.loopIn) { - loopIn = thisProperty.loopIn.bind(thisProperty); - loop_in = loopIn; - } - - if (thisProperty.loopOut) { - loopOut = thisProperty.loopOut.bind(thisProperty); - loop_out = loopOut; - } - - if (thisProperty.smooth) { - smooth = thisProperty.smooth.bind(thisProperty); - } - - function loopInDuration(type, duration) { - return loopIn(type, duration, true); - } - - function loopOutDuration(type, duration) { - return loopOut(type, duration, true); - } - - if (this.getValueAtTime) { - valueAtTime = this.getValueAtTime.bind(this); - } - - if (this.getVelocityAtTime) { - velocityAtTime = this.getVelocityAtTime.bind(this); - } - - var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface); - - function lookAt(elem1, elem2) { - var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]]; - var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads; - var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads; - return [yaw, pitch, 0]; - } - - function easeOut(t, tMin, tMax, val1, val2) { - return applyEase(easeOutBez, t, tMin, tMax, val1, val2); - } - - function easeIn(t, tMin, tMax, val1, val2) { - return applyEase(easeInBez, t, tMin, tMax, val1, val2); - } - - function ease(t, tMin, tMax, val1, val2) { - return applyEase(easeInOutBez, t, tMin, tMax, val1, val2); - } - - function applyEase(fn, t, tMin, tMax, val1, val2) { - if (val1 === undefined) { - val1 = tMin; - val2 = tMax; - } else { - t = (t - tMin) / (tMax - tMin); - } - if (t > 1) { - t = 1; - } else if (t < 0) { - t = 0; - } - var mult = fn(t); - if ($bm_isInstanceOfArray(val1)) { - var iKey; - var lenKey = val1.length; - var arr = createTypedArray('float32', lenKey); - for (iKey = 0; iKey < lenKey; iKey += 1) { - arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey]; - } - return arr; - } - return (val2 - val1) * mult + val1; - } - - function nearestKey(time) { - var iKey; - var lenKey = data.k.length; - var index; - var keyTime; - if (!data.k.length || typeof (data.k[0]) === 'number') { - index = 0; - keyTime = 0; - } else { - index = -1; - time *= elem.comp.globalData.frameRate; - if (time < data.k[0].t) { - index = 1; - keyTime = data.k[0].t; - } else { - for (iKey = 0; iKey < lenKey - 1; iKey += 1) { - if (time === data.k[iKey].t) { - index = iKey + 1; - keyTime = data.k[iKey].t; - break; - } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) { - if (time - data.k[iKey].t > data.k[iKey + 1].t - time) { - index = iKey + 2; - keyTime = data.k[iKey + 1].t; - } else { - index = iKey + 1; - keyTime = data.k[iKey].t; - } - break; - } - } - if (index === -1) { - index = iKey + 1; - keyTime = data.k[iKey].t; - } - } - } - var obKey = {}; - obKey.index = index; - obKey.time = keyTime / elem.comp.globalData.frameRate; - return obKey; - } - - function key(ind) { - var obKey; - var iKey; - var lenKey; - if (!data.k.length || typeof (data.k[0]) === 'number') { - throw new Error('The property has no keyframe at index ' + ind); - } - ind -= 1; - obKey = { - time: data.k[ind].t / elem.comp.globalData.frameRate, - value: [], - }; - var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e; - - lenKey = arr.length; - for (iKey = 0; iKey < lenKey; iKey += 1) { - obKey[iKey] = arr[iKey]; - obKey.value[iKey] = arr[iKey]; - } - return obKey; - } - - function framesToTime(fr, fps) { - if (!fps) { - fps = elem.comp.globalData.frameRate; - } - return fr / fps; - } - - function timeToFrames(t, fps) { - if (!t && t !== 0) { - t = time; - } - if (!fps) { - fps = elem.comp.globalData.frameRate; - } - return t * fps; - } - - function seedRandom(seed) { - BMMath.seedrandom(randSeed + seed); - } - - function sourceRectAtTime() { - return elem.sourceRectAtTime(); - } - - function substring(init, end) { - if (typeof value === 'string') { - if (end === undefined) { - return value.substring(init); - } - return value.substring(init, end); - } - return ''; - } - - function substr(init, end) { - if (typeof value === 'string') { - if (end === undefined) { - return value.substr(init); - } - return value.substr(init, end); - } - return ''; - } - - function posterizeTime(framesPerSecond) { - time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond; - value = valueAtTime(time); - } - - var time; - var velocity; - var value; - var text; - var textIndex; - var textTotal; - var selectorValue; - var index = elem.data.ind; - var hasParent = !!(elem.hierarchy && elem.hierarchy.length); - var parent; - var randSeed = Math.floor(Math.random() * 1000000); - var globalData = elem.globalData; - function executeExpression(_value) { - // globalData.pushExpression(); - value = _value; - if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') { - return value; - } - if (this.propType === 'textSelector') { - textIndex = this.textIndex; - textTotal = this.textTotal; - selectorValue = this.selectorValue; - } - if (!thisLayer) { - text = elem.layerInterface.text; - thisLayer = elem.layerInterface; - thisComp = elem.comp.compInterface; - toWorld = thisLayer.toWorld.bind(thisLayer); - fromWorld = thisLayer.fromWorld.bind(thisLayer); - fromComp = thisLayer.fromComp.bind(thisLayer); - toComp = thisLayer.toComp.bind(thisLayer); - mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null; - fromCompToSurface = fromComp; - } - if (!transform) { - transform = elem.layerInterface('ADBE Transform Group'); - $bm_transform = transform; - if (transform) { - anchorPoint = transform.anchorPoint; - /* position = transform.position; - rotation = transform.rotation; - scale = transform.scale; */ - } - } - - if (elemType === 4 && !content) { - content = thisLayer('ADBE Root Vectors Group'); - } - if (!effect) { - effect = thisLayer(4); - } - hasParent = !!(elem.hierarchy && elem.hierarchy.length); - if (hasParent && !parent) { - parent = elem.hierarchy[0].layerInterface; - } - time = this.comp.renderedFrame / this.comp.globalData.frameRate; - if (_needsRandom) { - seedRandom(randSeed + time); - } - if (needsVelocity) { - velocity = velocityAtTime(time); - } - expression_function(); - this.frameExpressionId = elem.globalData.frameId; - - // TODO: Check if it's possible to return on ShapeInterface the .v value - // Changed this to a ternary operation because Rollup failed compiling it correctly - scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE - ? scoped_bm_rt.v - : scoped_bm_rt; - return scoped_bm_rt; - } - // Bundlers will see these as dead code and unless we reference them - executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData]; - return executeExpression; - } - - ob.initiateExpression = initiateExpression; - ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath]; - return ob; -}()); - -const expressionHelpers = (function () { - function searchExpressions(elem, data, prop) { - if (data.x) { - prop.k = true; - prop.x = true; - prop.initiateExpression = ExpressionManager.initiateExpression; - prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop)); - } - } - - function getValueAtTime(frameNum) { - frameNum *= this.elem.globalData.frameRate; - frameNum -= this.offsetTime; - if (frameNum !== this._cachingAtTime.lastFrame) { - this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0; - this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime); - this._cachingAtTime.lastFrame = frameNum; - } - return this._cachingAtTime.value; - } - - function getSpeedAtTime(frameNum) { - var delta = -0.01; - var v1 = this.getValueAtTime(frameNum); - var v2 = this.getValueAtTime(frameNum + delta); - var speed = 0; - if (v1.length) { - var i; - for (i = 0; i < v1.length; i += 1) { - speed += Math.pow(v2[i] - v1[i], 2); - } - speed = Math.sqrt(speed) * 100; - } else { - speed = 0; - } - return speed; - } - - function getVelocityAtTime(frameNum) { - if (this.vel !== undefined) { - return this.vel; - } - var delta = -0.001; - // frameNum += this.elem.data.st; - var v1 = this.getValueAtTime(frameNum); - var v2 = this.getValueAtTime(frameNum + delta); - var velocity; - if (v1.length) { - velocity = createTypedArray('float32', v1.length); - var i; - for (i = 0; i < v1.length; i += 1) { - // removing frameRate - // if needed, don't add it here - // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta); - velocity[i] = (v2[i] - v1[i]) / delta; - } - } else { - velocity = (v2 - v1) / delta; - } - return velocity; - } - - function getStaticValueAtTime() { - return this.pv; - } - - function setGroupProperty(propertyGroup) { - this.propertyGroup = propertyGroup; - } - - return { - searchExpressions: searchExpressions, - getSpeedAtTime: getSpeedAtTime, - getVelocityAtTime: getVelocityAtTime, - getValueAtTime: getValueAtTime, - getStaticValueAtTime: getStaticValueAtTime, - setGroupProperty: setGroupProperty, - }; -}()); - -function addPropertyDecorator() { - function loopOut(type, duration, durationFlag) { - if (!this.k || !this.keyframes) { - return this.pv; - } - type = type ? type.toLowerCase() : ''; - var currentFrame = this.comp.renderedFrame; - var keyframes = this.keyframes; - var lastKeyFrame = keyframes[keyframes.length - 1].t; - if (currentFrame <= lastKeyFrame) { - return this.pv; - } - var cycleDuration; - var firstKeyFrame; - if (!durationFlag) { - if (!duration || duration > keyframes.length - 1) { - duration = keyframes.length - 1; - } - firstKeyFrame = keyframes[keyframes.length - 1 - duration].t; - cycleDuration = lastKeyFrame - firstKeyFrame; - } else { - if (!duration) { - cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip); - } else { - cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration); - } - firstKeyFrame = lastKeyFrame - cycleDuration; - } - var i; - var len; - var ret; - if (type === 'pingpong') { - var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration); - if (iterations % 2 !== 0) { - return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line - } - } else if (type === 'offset') { - var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); - var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); - var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line - var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration); - if (this.pv.length) { - ret = new Array(initV.length); - len = ret.length; - for (i = 0; i < len; i += 1) { - ret[i] = (endV[i] - initV[i]) * repeats + current[i]; - } - return ret; - } - return (endV - initV) * repeats + current; - } else if (type === 'continue') { - var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); - var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0); - if (this.pv.length) { - ret = new Array(lastValue.length); - len = ret.length; - for (i = 0; i < len; i += 1) { - ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line - } - return ret; - } - return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001); - } - return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line - - } - - function loopIn(type, duration, durationFlag) { - if (!this.k) { - return this.pv; - } - type = type ? type.toLowerCase() : ''; - var currentFrame = this.comp.renderedFrame; - var keyframes = this.keyframes; - var firstKeyFrame = keyframes[0].t; - if (currentFrame >= firstKeyFrame) { - return this.pv; - } - var cycleDuration; - var lastKeyFrame; - if (!durationFlag) { - if (!duration || duration > keyframes.length - 1) { - duration = keyframes.length - 1; - } - lastKeyFrame = keyframes[duration].t; - cycleDuration = lastKeyFrame - firstKeyFrame; - } else { - if (!duration) { - cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame); - } else { - cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration); - } - lastKeyFrame = firstKeyFrame + cycleDuration; - } - var i; - var len; - var ret; - if (type === 'pingpong') { - var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration); - if (iterations % 2 === 0) { - return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line - } - } else if (type === 'offset') { - var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); - var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0); - var current = this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate, 0); - var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1; - if (this.pv.length) { - ret = new Array(initV.length); - len = ret.length; - for (i = 0; i < len; i += 1) { - ret[i] = current[i] - (endV[i] - initV[i]) * repeats; - } - return ret; - } - return current - (endV - initV) * repeats; - } else if (type === 'continue') { - var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0); - var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0); - if (this.pv.length) { - ret = new Array(firstValue.length); - len = ret.length; - for (i = 0; i < len; i += 1) { - ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001; - } - return ret; - } - return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001; - } - return this.getValueAtTime(((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame))) / this.comp.globalData.frameRate, 0); // eslint-disable-line - - } - - function smooth(width, samples) { - if (!this.k) { - return this.pv; - } - width = (width || 0.4) * 0.5; - samples = Math.floor(samples || 5); - if (samples <= 1) { - return this.pv; - } - var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate; - var initFrame = currentTime - width; - var endFrame = currentTime + width; - var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1; - var i = 0; - var j = 0; - var value; - if (this.pv.length) { - value = createTypedArray('float32', this.pv.length); - } else { - value = 0; - } - var sampleValue; - while (i < samples) { - sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency); - if (this.pv.length) { - for (j = 0; j < this.pv.length; j += 1) { - value[j] += sampleValue[j]; - } - } else { - value += sampleValue; - } - i += 1; - } - if (this.pv.length) { - for (j = 0; j < this.pv.length; j += 1) { - value[j] /= samples; - } - } else { - value /= samples; - } - return value; - } - - function getTransformValueAtTime(time) { - if (!this._transformCachingAtTime) { - this._transformCachingAtTime = { - v: new Matrix(), - }; - } - /// / - var matrix = this._transformCachingAtTime.v; - matrix.cloneFromProps(this.pre.props); - if (this.appliedTransformations < 1) { - var anchor = this.a.getValueAtTime(time); - matrix.translate( - -anchor[0] * this.a.mult, - -anchor[1] * this.a.mult, - anchor[2] * this.a.mult - ); - } - if (this.appliedTransformations < 2) { - var scale = this.s.getValueAtTime(time); - matrix.scale( - scale[0] * this.s.mult, - scale[1] * this.s.mult, - scale[2] * this.s.mult - ); - } - if (this.sk && this.appliedTransformations < 3) { - var skew = this.sk.getValueAtTime(time); - var skewAxis = this.sa.getValueAtTime(time); - matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult); - } - if (this.r && this.appliedTransformations < 4) { - var rotation = this.r.getValueAtTime(time); - matrix.rotate(-rotation * this.r.mult); - } else if (!this.r && this.appliedTransformations < 4) { - var rotationZ = this.rz.getValueAtTime(time); - var rotationY = this.ry.getValueAtTime(time); - var rotationX = this.rx.getValueAtTime(time); - var orientation = this.or.getValueAtTime(time); - matrix.rotateZ(-rotationZ * this.rz.mult) - .rotateY(rotationY * this.ry.mult) - .rotateX(rotationX * this.rx.mult) - .rotateZ(-orientation[2] * this.or.mult) - .rotateY(orientation[1] * this.or.mult) - .rotateX(orientation[0] * this.or.mult); - } - if (this.data.p && this.data.p.s) { - var positionX = this.px.getValueAtTime(time); - var positionY = this.py.getValueAtTime(time); - if (this.data.p.z) { - var positionZ = this.pz.getValueAtTime(time); - matrix.translate( - positionX * this.px.mult, - positionY * this.py.mult, - -positionZ * this.pz.mult - ); - } else { - matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0); - } - } else { - var position = this.p.getValueAtTime(time); - matrix.translate( - position[0] * this.p.mult, - position[1] * this.p.mult, - -position[2] * this.p.mult - ); - } - return matrix; - /// / - } - - function getTransformStaticValueAtTime() { - return this.v.clone(new Matrix()); - } - - var getTransformProperty = TransformPropertyFactory.getTransformProperty; - TransformPropertyFactory.getTransformProperty = function (elem, data, container) { - var prop = getTransformProperty(elem, data, container); - if (prop.dynamicProperties.length) { - prop.getValueAtTime = getTransformValueAtTime.bind(prop); - } else { - prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop); - } - prop.setGroupProperty = expressionHelpers.setGroupProperty; - return prop; - }; - - var propertyGetProp = PropertyFactory.getProp; - PropertyFactory.getProp = function (elem, data, type, mult, container) { - var prop = propertyGetProp(elem, data, type, mult, container); - // prop.getVelocityAtTime = getVelocityAtTime; - // prop.loopOut = loopOut; - // prop.loopIn = loopIn; - if (prop.kf) { - prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop); - } else { - prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop); - } - prop.setGroupProperty = expressionHelpers.setGroupProperty; - prop.loopOut = loopOut; - prop.loopIn = loopIn; - prop.smooth = smooth; - prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop); - prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop); - prop.numKeys = data.a === 1 ? data.k.length : 0; - prop.propertyIndex = data.ix; - var value = 0; - if (type !== 0) { - value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length); - } - prop._cachingAtTime = { - lastFrame: initialDefaultFrame, - lastIndex: 0, - value: value, - }; - expressionHelpers.searchExpressions(elem, data, prop); - if (prop.k) { - container.addDynamicProperty(prop); - } - - return prop; - }; - - function getShapeValueAtTime(frameNum) { - // For now this caching object is created only when needed instead of creating it when the shape is initialized. - if (!this._cachingAtTime) { - this._cachingAtTime = { - shapeValue: shapePool.clone(this.pv), - lastIndex: 0, - lastTime: initialDefaultFrame, - }; - } - - frameNum *= this.elem.globalData.frameRate; - frameNum -= this.offsetTime; - if (frameNum !== this._cachingAtTime.lastTime) { - this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0; - this._cachingAtTime.lastTime = frameNum; - this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime); - } - return this._cachingAtTime.shapeValue; - } - - var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction(); - var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction(); - - function ShapeExpressions() {} - ShapeExpressions.prototype = { - vertices: function (prop, time) { - if (this.k) { - this.getValue(); - } - var shapePath = this.v; - if (time !== undefined) { - shapePath = this.getValueAtTime(time, 0); - } - var i; - var len = shapePath._length; - var vertices = shapePath[prop]; - var points = shapePath.v; - var arr = createSizedArray(len); - for (i = 0; i < len; i += 1) { - if (prop === 'i' || prop === 'o') { - arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]]; - } else { - arr[i] = [vertices[i][0], vertices[i][1]]; - } - } - return arr; - }, - points: function (time) { - return this.vertices('v', time); - }, - inTangents: function (time) { - return this.vertices('i', time); - }, - outTangents: function (time) { - return this.vertices('o', time); - }, - isClosed: function () { - return this.v.c; - }, - pointOnPath: function (perc, time) { - var shapePath = this.v; - if (time !== undefined) { - shapePath = this.getValueAtTime(time, 0); - } - if (!this._segmentsLength) { - this._segmentsLength = bez.getSegmentsLength(shapePath); - } - - var segmentsLength = this._segmentsLength; - var lengths = segmentsLength.lengths; - var lengthPos = segmentsLength.totalLength * perc; - var i = 0; - var len = lengths.length; - var accumulatedLength = 0; - var pt; - while (i < len) { - if (accumulatedLength + lengths[i].addedLength > lengthPos) { - var initIndex = i; - var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1; - var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength; - pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]); - break; - } else { - accumulatedLength += lengths[i].addedLength; - } - i += 1; - } - if (!pt) { - pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]]; - } - return pt; - }, - vectorOnPath: function (perc, time, vectorType) { - // perc doesn't use triple equality because it can be a Number object as well as a primitive. - if (perc == 1) { // eslint-disable-line eqeqeq - perc = this.v.c; - } else if (perc == 0) { // eslint-disable-line eqeqeq - perc = 0.999; - } - var pt1 = this.pointOnPath(perc, time); - var pt2 = this.pointOnPath(perc + 0.001, time); - var xLength = pt2[0] - pt1[0]; - var yLength = pt2[1] - pt1[1]; - var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2)); - if (magnitude === 0) { - return [0, 0]; - } - var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude]; - return unitVector; - }, - tangentOnPath: function (perc, time) { - return this.vectorOnPath(perc, time, 'tangent'); - }, - normalOnPath: function (perc, time) { - return this.vectorOnPath(perc, time, 'normal'); - }, - setGroupProperty: expressionHelpers.setGroupProperty, - getValueAtTime: expressionHelpers.getStaticValueAtTime, - }; - extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction); - extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction); - KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime; - KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression; - - var propertyGetShapeProp = ShapePropertyFactory.getShapeProp; - ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) { - var prop = propertyGetShapeProp(elem, data, type, arr, trims); - prop.propertyIndex = data.ix; - prop.lock = false; - if (type === 3) { - expressionHelpers.searchExpressions(elem, data.pt, prop); - } else if (type === 4) { - expressionHelpers.searchExpressions(elem, data.ks, prop); - } - if (prop.k) { - elem.addDynamicProperty(prop); - } - return prop; - }; -} - -function initialize$1() { - addPropertyDecorator(); -} - -function addDecorator() { - function searchExpressions() { - if (this.data.d.x) { - this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this); - this.addEffect(this.getExpressionValue.bind(this)); - return true; - } - return null; - } - - TextProperty.prototype.getExpressionValue = function (currentValue, text) { - var newValue = this.calculateExpression(text); - if (currentValue.t !== newValue) { - var newData = {}; - this.copyData(newData, currentValue); - newData.t = newValue.toString(); - newData.__complete = false; - return newData; - } - return currentValue; - }; - - TextProperty.prototype.searchProperty = function () { - var isKeyframed = this.searchKeyframes(); - var hasExpressions = this.searchExpressions(); - this.kf = isKeyframed || hasExpressions; - return this.kf; - }; - - TextProperty.prototype.searchExpressions = searchExpressions; -} - -function initialize() { - addDecorator(); -} - -// Registering expression plugin -setExpressionsPlugin(Expressions); -initialize$1(); -initialize(); - -} - -export { lottie as default }; diff --git a/three/addons/libs/meshopt_decoder.module.js b/three/addons/libs/meshopt_decoder.module.js deleted file mode 100644 index d0933a9..0000000 --- a/three/addons/libs/meshopt_decoder.module.js +++ /dev/null @@ -1,178 +0,0 @@ -// This file is part of meshoptimizer library and is distributed under the terms of MIT License. -// Copyright (C) 2016-2022, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) -var MeshoptDecoder = (function() { - "use strict"; - - // Built with clang version 14.0.4 - // Built from meshoptimizer 0.18 - var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb"; - var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb"; - - var detector = new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]); - var wasmpack = new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]); - - if (typeof WebAssembly !== 'object') { - return { - supported: false, - }; - } - - var wasm = WebAssembly.validate(detector) ? wasm_simd : wasm_base; - - var instance; - - var ready = - WebAssembly.instantiate(unpack(wasm), {}) - .then(function(result) { - instance = result.instance; - instance.exports.__wasm_call_ctors(); - }); - - function unpack(data) { - var result = new Uint8Array(data.length); - for (var i = 0; i < data.length; ++i) { - var ch = data.charCodeAt(i); - result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4; - } - var write = 0; - for (var i = 0; i < data.length; ++i) { - result[write++] = (result[i] < 60) ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i]; - } - return result.buffer.slice(0, write); - } - - function decode(fun, target, count, size, source, filter) { - var sbrk = instance.exports.sbrk; - var count4 = (count + 3) & ~3; - var tp = sbrk(count4 * size); - var sp = sbrk(source.length); - var heap = new Uint8Array(instance.exports.memory.buffer); - heap.set(source, sp); - var res = fun(tp, count, size, sp, source.length); - if (res == 0 && filter) { - filter(tp, count4, size); - } - target.set(heap.subarray(tp, tp + count * size)); - sbrk(tp - sbrk(0)); - if (res != 0) { - throw new Error("Malformed buffer data: " + res); - } - } - - var filters = { - NONE: "", - OCTAHEDRAL: "meshopt_decodeFilterOct", - QUATERNION: "meshopt_decodeFilterQuat", - EXPONENTIAL: "meshopt_decodeFilterExp", - }; - - var decoders = { - ATTRIBUTES: "meshopt_decodeVertexBuffer", - TRIANGLES: "meshopt_decodeIndexBuffer", - INDICES: "meshopt_decodeIndexSequence", - }; - - var workers = []; - var requestId = 0; - - function createWorker(url) { - var worker = { - object: new Worker(url), - pending: 0, - requests: {} - }; - - worker.object.onmessage = function(event) { - var data = event.data; - - worker.pending -= data.count; - worker.requests[data.id][data.action](data.value); - - delete worker.requests[data.id]; - }; - - return worker; - } - - function initWorkers(count) { - var source = - "var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" + - ".then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });" + - "self.onmessage = workerProcess;" + - decode.toString() + workerProcess.toString(); - - var blob = new Blob([source], {type: 'text/javascript'}); - var url = URL.createObjectURL(blob); - - for (var i = 0; i < count; ++i) { - workers[i] = createWorker(url); - } - - URL.revokeObjectURL(url); - } - - function decodeWorker(count, size, source, mode, filter) { - var worker = workers[0]; - - for (var i = 1; i < workers.length; ++i) { - if (workers[i].pending < worker.pending) { - worker = workers[i]; - } - } - - return new Promise(function (resolve, reject) { - var data = new Uint8Array(source); - var id = requestId++; - - worker.pending += count; - worker.requests[id] = { resolve: resolve, reject: reject }; - worker.object.postMessage({ id: id, count: count, size: size, source: data, mode: mode, filter: filter }, [ data.buffer ]); - }); - } - - function workerProcess(event) { - ready.then(function() { - var data = event.data; - try { - var target = new Uint8Array(data.count * data.size); - decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]); - self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [ target.buffer ]); - } catch (error) { - self.postMessage({ id: data.id, count: data.count, action: "reject", value: error }); - } - }); - } - - return { - ready: ready, - supported: true, - useWorkers: function(count) { - initWorkers(count); - }, - decodeVertexBuffer: function(target, count, size, source, filter) { - decode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]); - }, - decodeIndexBuffer: function(target, count, size, source) { - decode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source); - }, - decodeIndexSequence: function(target, count, size, source) { - decode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source); - }, - decodeGltfBuffer: function(target, count, size, source, mode, filter) { - decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]); - }, - decodeGltfBufferAsync: function(count, size, source, mode, filter) { - if (workers.length > 0) { - return decodeWorker(count, size, source, decoders[mode], filters[filter]); - } - - return ready.then(function() { - var target = new Uint8Array(count * size); - decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]); - return target; - }); - } - }; -})(); - -export { MeshoptDecoder }; diff --git a/three/addons/libs/mikktspace.module.js b/three/addons/libs/mikktspace.module.js deleted file mode 100644 index 0a1baaa..0000000 --- a/three/addons/libs/mikktspace.module.js +++ /dev/null @@ -1,128 +0,0 @@ -const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder; - -let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); - -let cachegetUint8Memory0 = null; -function getUint8Memory0() { - if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { - cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachegetUint8Memory0; -} - -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} - -const heap = new Array(32).fill(undefined); - -heap.push(undefined, null, true, false); - -let heap_next = heap.length; - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - heap[idx] = obj; - return idx; -} - -function getObject(idx) { return heap[idx]; } - -function dropObject(idx) { - if (idx < 36) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} - -let cachegetFloat32Memory0 = null; -function getFloat32Memory0() { - if (cachegetFloat32Memory0 === null || cachegetFloat32Memory0.buffer !== wasm.memory.buffer) { - cachegetFloat32Memory0 = new Float32Array(wasm.memory.buffer); - } - return cachegetFloat32Memory0; -} - -let WASM_VECTOR_LEN = 0; - -function passArrayF32ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 4); - getFloat32Memory0().set(arg, ptr / 4); - WASM_VECTOR_LEN = arg.length; - return ptr; -} - -let cachegetInt32Memory0 = null; -function getInt32Memory0() { - if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { - cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachegetInt32Memory0; -} - -function getArrayF32FromWasm0(ptr, len) { - return getFloat32Memory0().subarray(ptr / 4, ptr / 4 + len); -} -/** -* Generates vertex tangents for the given position/normal/texcoord attributes. -* @param {Float32Array} position -* @param {Float32Array} normal -* @param {Float32Array} texcoord -* @returns {Float32Array} -*/ -export function generateTangents(position, normal, texcoord) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - var ptr0 = passArrayF32ToWasm0(position, wasm.__wbindgen_malloc); - var len0 = WASM_VECTOR_LEN; - var ptr1 = passArrayF32ToWasm0(normal, wasm.__wbindgen_malloc); - var len1 = WASM_VECTOR_LEN; - var ptr2 = passArrayF32ToWasm0(texcoord, wasm.__wbindgen_malloc); - var len2 = WASM_VECTOR_LEN; - wasm.generateTangents(retptr, ptr0, len0, ptr1, len1, ptr2, len2); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var v3 = getArrayF32FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 4); - return v3; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } -} - -export const __wbindgen_string_new = function(arg0, arg1) { - var ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); -}; - -export const __wbindgen_rethrow = function(arg0) { - throw takeObject(arg0); -}; - -// - -const wasmDataURI = 'data:application/octet-stream;base64,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TQ0WIARBAnRqIgQgBCgCAEEBajYCACACQQRqIQIgA0F/aiIDDQALCyABQdgFaigCACABKALgBUUNFUEAIQJBADYCAEEBIQQDQCABQfgCaiABQdgFahBjIAEoAvwCIgMgBEF/aiIHTQ0UIAEoAvgCIAJqKAIAIQMgAUHwAmogAUHoBWoQYyABKAL0AiINIAdNDRMgASgC8AIgAmooAgAhByABQdgFaigCACENIAEoAuAFIhEgBE0NEiACIA1qQQRqIAMgB2o2AgAgAkEEaiECIARBAWoiBEGAEEcNAAsgCEEJTwRAQQAhBCABQZgGakEAQQRBCCAGGyALG2ohCCAFIQMDQCABQegCaiADKAIAEGEgAUGYBmogACABKALoAiABKALsAhAxIDAgLiAIKgIAEDwhAiABQeACaiABQdgFahBjIAEoAuQCIgYgAk0NEiABQcgFaigCACABKALQBSINIAJBAnQiBiABKALgAmooAgAiC00NESABQdgCaiABQfgFahBjIAEoAtwCIg0gAk0NECALQQJ0aiABKALYAiAGaigCAEECdGogBDYCACABQfgFaigCACELIAEoAoAGIgcgAk0NDyAGIAtqIgIgAigCAEEBajYCACADQQRqIQMgCiAEQQFqIgRHDQALCyABQdACaiABQegFahBjIAEoAtQCRQ0MIAEoAtACKAIAIQNBBCECQQEhBANAIAFByAJqIAFB6AVqEGMgASgCzAIiCiAETQ0MIAMgASgCyAIgAmooAgBJBEAgAUHAAmogAUHoBWoQYyABKALEAiIDIARNDQwgASgCwAIgAmooAgAhAwsgAkEEaiECIARBAWoiBEGAEEcNAAsgAUHgA2oiAkIANwIAIAJBCGpCADcCACABQaAGaiABQegDaikDADcDACABIAEpA+ADNwOYBiABQYgGaiABQZgGaiADEEEgASgCiAYhCiABKAKQBiELQQAhBgNAIAFBuAJqIAFB2AVqEGMgASgCvAIiAyAGTQ0KIAFByAVqKAIAIQIgASgC0AUiBCAGQQJ0IgggASgCuAJqKAIAIgNNDQkgAUGwAmogAUHoBWoQYyABKAK0AiIEIAZNDQggASgCsAIgCGooAgAiCEECTwRAIAIgA0ECdGohBEEAIQMgCiECA0AgAUGoAmogBSAEKAIAIgdBAnRqKAIAEGEgAUGYBmogACABKAKoAiABKAKsAhAxIAMgC0YNCSACIAEoApgGNgIAIAJBBGogASgCnAY2AgAgASgCoAYhDSACQQxqIAc2AgAgAkEIaiANNgIAIARBBGohBCACQRBqIQIgCCADQQFqIgNHDQALIAUgCiAAQQAgCEF/ahAECyAGQQFqIgZBgBBHDQALIBNBASATQQFLGyEFIA5BPGohAyABQYgGahBSIAFB+AVqKAIAGiABQfgFahBWIAFB6AVqKAIAGiABQegFahBWIAFB2AVqKAIAGiABQdgFahBWIAFByAVqKAIAGiABQcgFahBWQQAhAkEAIQRBACEGQQAhBwNAIAFBoAJqIAFBwANqEGMgASgCpAIiCiAETQ0GIAEoAqACIAJqKAIAIQogAUGYAmogAUHAA2oQYyABKAKcAiILIARBAWpNDQUgASgCmAIgAmpBBGooAgAhCyABQZACaiABQcADahBjIAEoApQCIgggBEECak0NBCABKAKQAiACakEIaigCACEIIAFBiAJqIAoQYSABQYgGaiAAIAEoAogCIAEoAowCEDEgAUGAAmogCxBhIAFB4ANqIAAgASgCgAIgASgChAIQMSABQfgBaiAIEGEgAUGYBmogACABKAL4ASABKAL8ARAxAkACQCABQYgGaiABQeADahALDQAgAUGIBmogAUGYBmoQCw0AIAFB4ANqIAFBmAZqEAtFDQELIAwgBk0NBCADIAMoAgBBAXI2AgAgB0EBaiEHCyACQQxqIQIgBEEDaiEEIANByABqIQMgBSAGQQFqIgZHDQALIA4gAUHAA2ooAgAgEyAHayIKIBMQECABQcADaigCACELAkACQCAKRQRAQX8hBgwBC0EAIQYDQCAOIAZByABsaiIDQn83AgAgA0EIakF/NgIAIANBDGpCADcCACADQRRqQQA2AgAgA0E8aiADQRhqIQIgAygCPCEEQQMhAwNAIAJCADcCACACQRhqQgA3AgAgAkEQakIANwIAIAJBCGpCADcCACAEQQRyIQQgA0F/aiIDDQALIAQ2AgAgBkEBaiIGIApHDQALIAFBpAZqIQYgAUHsA2ohDEEAIQUDQCABQfABaiALIAVBDGxqIgMoAgAQYSABQagFaiAAIAEoAvABIAEoAvQBEDEgAUHoAWogA0EEaiICKAIAEGEgAUG4BWogACABKALoASABKALsARAxIAFB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AkAgASgCRBAxIAEpA4gGISsgASgCkAYhFyABQThqIAIQYSABQYgGaiAAIAEoAjggASgCPBAxIAEoAogGIQIgASgCjAYhECABKAKQBiESIAFBMGogHRBhIAFBiAZqIAAgASgCMCABKAI0EDEgASkDiAYhLCABKAKQBiEdIAEgFzYCgAYgASArNwP4BSABIBI2ApAGIAEgEDYCjAYgASACNgKIBiABQcgFaiABQfgFaiABQYgGahAVIAEgHTYCgAYgASAsNwP4BSABIBI2ApAGIAEgEDYCjAYgASACNgKIBiABQdgFaiABQfgFaiABQYgGahAVIBYgAUHQBWoiECgCADYCACABIAEpA8gFNwP4BSABQbgFaiABQcgFahARITUgBCAYKAIANgIAIAEgASkDuAU3A4gGIAFBKGogAUGIBmogGRBoIAEoAigiAiABKAIsIhJHBEADQCACIDUgAioCAJQ4AgAgEiACQQRqIgJHDQALCyABQcgFaiABQfgFaiABQYgGahAVIAQgECgCADYCACABIAEpA8gFNwOIBiABQYgGahBRBEAgBCAQKAIANgIAIAEgASkDyAU3A4gGIAFByAVqIAFBiAZqECMLIBYgAUHgBWoiECgCADYCACABIAEpA9gFNwP4BSABQbgFaiABQdgFahARITUgBCAYKAIANgIAIAEgASkDuAU3A4gGIAFBIGogAUGIBmogGRBoIAEoAiAiAiABKAIkIhJHBEADQCACIDUgAioCAJQ4AgAgEiACQQRqIgJHDQALCyABQdgFaiABQfgFaiABQYgGahAVIAQgECgCADYCACABIAEpA9gFNwOIBiABQYgGahBRBEAgBCAQKAIANgIAIAEgASkD2AU3A4gGIAFB2AVqIAFBiAZqECMLQwAAgD8gAUHIBWogAUHYBWoQESI1QwAAgL+XIDVDAACAP14buxAOIA8qAjQhNSAPKgIwITcgFiADKAIANgIAIAEgASkDmAY3A/gFIAEgMjgCkAYgASAvOAKMBiABIDM4AogGIAFBGGogAUGIBmogGRBotiEvIAEoAhgiAiABKAIcIg9HBEADQCACIAIqAgAgL5Q4AgAgDyACQQRqIgJHDQALCyABQZgGaiABQfgFaiABQYgGahAWIBYgFUEIaiIPKAIANgIAIAEgFSkCADcD+AUgASAxOAKQBiABIDA4AowGIAEgNDgCiAYgAUEQaiABQYgGaiAZEGggASgCECICIAEoAhQiEEcEQANAIAIgAioCACAvlDgCACAQIAJBBGoiAkcNAAsLIAFB6AVqIAFB+AVqIAFBiAZqEBYgDyABQfAFaigCADYCACAVIAEpA+gFNwIAIAEgNyAvlCABKgKkBpI4AqQGIAEgNSAvlCABKgK0BpI4ArQGIC4gL5IhLgsgCSAHQQFqIgdHDQALDAQLIAkgD0HcgsAAED8ACyAFIAJB7ILAABA/AAsgDCACQfyCwAAQPwALIAwgB0GMg8AAED8ACyAEIAMoAgA2AgAgASABKQOYBjcDiAYgAUGIBmoQUQRAIAQgAygCADYCACABIAEpA5gGNwOIBiABQZgGaiABQYgGahAjCyAEIBVBCGoiAigCADYCACABIBUpAgA3A4gGIAFBiAZqEFEEQCAEIAIoAgA2AgAgASAVKQIANwOIBiABQfgFaiABQYgGahAjIAIgAUGABmooAgA2AgAgFSABKQP4BTcCAAsgLkMAAAAAXkEBc0UEQCABIAEqAqQGIC6VOAKkBiABIAEqArQGIC6VOAK0BgsgASgC4AQiAiAMTQ0DIAEoAtgEIAxBKGxqIAFBmAZqQSgQTiAMQQFqIQwLICAEQCAIKAJAIAggKGpBxABqLQAAaiICICJPDQICfyAUIAJBKGxqIgIoAiBBAUcEQCABKALgBCIEIAVNDQYgAiABKALYBCAFQShsakEoEDsaQQEMAQsgASgC4AQiBCAFTQ0GIAFBmAZqIAIgASgC2AQgBUEobGoQBSACIAFBmAZqQSgQTkECCyEFIAJBIGogBTYCACACICYtAAA6ACQgESgCABogERBWIB9BAWoiHyANKAIASA0BDAYLC0F/QQRBrIPAABA/AAsgAiAiQbyDwAAQPwALIAwgAkGcg8AAED8ACyAFIARBzIPAABA/AAsgBSAEQdyDwAAQPwALICNBAWoiIyAGRw0ACyABQfgEaigCABogAUH4BGoQViABQegEahBJIAFB6ARqEFIgAUHYBGoQVCABKALIBCEUIAEoAtADIQsLIAFBwANqKAIAIQUgCiATSARAIBtBAUghCSAKIQMDQCALIANByABsaiIELQA8QQJxRQRAIANBA2whDCAEQUBrIQhBACEGA0ACQCAJDQAgBSAGIAxqQQJ0aigCACEOQQAhAgNAAkAgAiAOIAUgAkECdGooAgAiB0ciDWohAiAHIA5GDQAgAiAbSA0BCwsgDQ0AIBQgCCgCACAEIAZqQcQAai0AAGpBKGxqIBQgCyACQQNuIg5ByABsaiIHKAJAIAcgAiAOQQNsa2pBxABqLQAAakEobGpBKBA7GgsgBkEBaiIGQQNHDQALCyADICVGIANBAWohA0UNAAsLIApBAU4EQCALQcQAaiEEQQAhBQNAAkAgCyAFQcgAbGoiAy0APEECcUUNACABQQA2AugDIAFCADcD4AMgAUEIaiADKAI4IgYCf0EBQQEgA0HFAGotAABBH3F0QQEgAy0AREEfcXRyQQEgA0HGAGotAABBH3F0ciICQQJxRQ0AGkECIAJBBHFFDQAaQQBBAyACQQhxGwsiDhBmEGEgAUGYBmogACABKAIIIAEoAgwQMSABQegDaiABQaAGaigCADYCACABIAEpA5gGNwPgAyADQUBrIQNBACECA0AgASAGIAIgBGotAAAiCRBmEGEgAUGYBmogACABKAIAIAEoAgQQMSABQZgGaiABQeADahALBEAgFCADKAIAIgMgDmpBKGxqIBQgAyAJakEobGpBKBA7GgwCCyACQQFqIgJBA0cNAAsLIARByABqIQQgBUEBaiIFIApHDQALCyABKALQBCEFQQAhBkEAIQkDQEEAIAUgCWsiAyADIAVLGyEKIBQgCUEobGohDkEAIQNBACEEA0AgBCAKRg0DIAMgDmoiAikCACErIAEgAkEIaigCADYC6AMgASArNwLgAyAAIAFB4ANqIAJBDGoqAgAgAkEcaioCACACQSRqLQAAEB8gBEEBaiEEIANBKGoiA0H4AEcNAAsgBCAJaiEJIAZBAWoiBiATRw0ACyABQcgEahBUIAFBuARqKAIAGiABQbgEahBWIAFBqARqEFIgAUHQA2oQUyABQcADaigCABogAUHAA2oQVkEBIQILIAFB4AZqJAAgAg8LIAQgCWogBUHMgsAAED8ACyAGIAxBvILAABA/AAsgBEECaiAIQayCwAAQPwALIARBAWogC0GcgsAAED8ACyAEIApBjILAABA/AAsgCyALQdyFwAAQPwALIAYgBEHMhcAAED8ACyADIARBvIXAABA/AAsgBiADQayFwAAQPwALIAQgA0GchcAAED8ACyAEIApBjIXAABA/AAtBAEEA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AiALIANBEGogAiABIANBIGoQLSADQRhqKAIAIQEgAygCFCECIAMoAhBBAUYNASAAIAI2AgAgACABQShuNgIECyADQTBqJAAPCyADQQhqIAIgARBoIAMoAgghASADKAIMDAELIAMgAkEAEGggAygCACEBIAMoAgQLIgAEQCABIAAQcAALEGsAC6cCAgN/AX4jAEEwayIDJAACfwJAAkAgACgCBCIEIAFrIAJJBEAgASACaiICIAFJDQJBBCEBAkAgBEEBdCIFIAIgBSACSxsiAkEEIAJBBEsbrUIMfiIGQiCIp0UEQCAGpyECDAELIAAoAgQhBEEAIQELAkAgBARAIAAoAgAhBSADQShqQQQ2AgAgAyAEQQxsNgIkIAMgBTYCIAwBCyADQQA2AiALIANBEGogAiABIANBIGoQLSADQRhqKAIAIQEgAygCFCECIAMoAhBBAUYNASAAIAI2AgAgACABQQxuNgIECyADQTBqJAAPCyADQQhqIAIgARBoIAMoAgghASADKAIMDAELIAMgAkEAEGggAygCACEBIAMoAgQLIgAEQCABIAAQcAALEGsAC6gCAQN/IwBBMGsiAyQAAn8CQAJAIAAoAgQiBCABayACSQRAIAEgAmoiAiABSQ0CQQQhAQJAIARBAXQiBSACIAUgAksbIgJBBCACQQRLGyICQf////8DcSACRgRAIAJBAnQhAgwBCyAAKAIEIQRBACEBCwJAIAQEQCAAKAIAIQUgA0EoakEENgIAIAMgBEECdDYCJCADIAU2AiAMAQsgA0EANgIgCyADQRBqIAIgASADQSBqEC0gA0EYaigCACEBIAMoAhQhAiADKAIQQQFGDQEgACACNgIAIAAgAUECdjYCBAsgA0EwaiQADwsgA0EIaiACIAEQaCADKAIIIQEgAygCDAwBCyADIAJBABBoIAMoAgAhASADKAIECyIABEAgASAAEHAACxBrAAuoAgEDfyMAQTBrIgMkAAJ/AkACQCAAKAIEIgQgAWsgAkkEQCABIAJqIgIgAUkNAkEEIQECQCAEQQF0IgUgAiAFIAJLGyICQQQgAkEESxsiAkH/////AHEgAkYEQCACQQR0IQIMAQsgACgCBCEEQQAhAQsCQCAEBEAgACgCACEFIANBKGpBBDYCACADIARBBHQ2AiQgAyAFNgIgDAELIANBADYCIAsgA0EQ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aiEDIAUoAggiBiAFKAIMIgdJBEAgByAGayEIA0AgAikCACEJIANBCGogAkEIaikCADcCACADIAk3AgAgA0EQaiEDIAhBf2oiCA0ACyAEIAdqIAZrIQQLIAAgAQR/IAIpAgAhCSADQQhqIAJBCGopAgA3AgAgAyAJNwIAIARBAWoFIAQLNgIIIAVBEGokAAuqAQMBfwN+An0jAEEgayICJAAgAkEYaiABKAIAEGEgACACKAIYIAIoAhwQPSEDIAJBEGogASgCBBBhIAAgAigCECACKAIUED0hBCACQQhqIAEoAggQYSAAIAIoAgggAigCDBA9IQUgAkEgaiQAIASnviADp74iBpMgBUIgiKe+IANCIIinviIHk5QgBEIgiKe+IAeTIAWnviAGk5STIgaMIAYgBkMAAAAAXRsLsQEBBX8jAEEQayIDJAACQCAAKAIEIgIgAU8EQAJAIAIEQCACQQJ0IQIgACgCACEEAkAgAUECdCIFRQRAQQQhBiACRQ0BIAQgAkEEEGoMAQsgBCACQQQgBRBiIgZFDQILIAAgBjYCACAAIAFB/////wNxNgIECyADQRBqJAAPCyADQQhqIAVBBBBoIAMoAgwiAEUNASADKAIIIAAQcAALQcWIwABBJEHsiMAAEEgACxBrAAu2AQEBfyMAQRBrIgMkAAJAIABFDQAgAyAANgIEIAFFDQACQCACQQRLDQAgAUEDakECdkF/aiIAQf8BSw0AIANBoJXAADYCCCADIABBAnRBpJXAAGoiACgCADYCDCADQQRqIANBDGogA0EIakGUicAAEBMgACADKAIMNgIADAELIANBoJXAACgCADYCDCADQQRqIANBDGpB/IjAAEH8iMAAEBNBoJXAACADKAIMNgIACyADQRBqJAALmQEBBn8jAEEQayIFJAAgACAAKAIIIAEQGCAAKAIAIAAoAgghAyAFQQhqQQEgARBoIANByABsaiEEIAUoAggiBiAFKAIMIgdJBEAgByAGayEIA0AgBCACQcgAEDtByABqIQQgCEF/aiIIDQALIAMgB2ogBmshAwsgACABBH8gBCACQcgAEDsaIANBAWoFIAMLNgIIIAVBEGokAAuVAQEGfyMAQRBrIgUkACAAIAAoAgggARAZIAAoAgAgACgCCCEDIAVBCGpBASABEGggA0EobGohBCAFKAIIIgYgBSgCDCIHSQRAIAcgBmshCANAIAQgAkEoEDtBKGohBCAIQX9qIggNAAsgAyAHaiAGayEDCyAAIAEEfyAEIAJBKBA7GiADQQFqBSADCzYCCCAFQRBqJAALqgEBAn8CQAJAAkAgAgRAQQEhBCABQQBODQEMAgsgACABNgIEQQEhBAwBCwJAAkACQAJAAkAgAygCACIFRQRAIAFFDQEMAwsgAygCBCIDDQEgAQ0CCyACIQMMAwsgBSADIAIgARBiIgNFDQEMAgsgASACEGciAw0BCyAAIAE2AgQgAiEBDAILIAAgAzYCBEEAIQQMAQtBACEBCyAAIAQ2AgAgAEEIaiABNgIAC7IBAQJ/IwBBEGsiAiQAAkAgAEUNACAAQQNqQQJ2IQACQCABQQRLDQAgAEF/aiIDQf8BSw0AIAJBoJXAADYCBCACIANBAnRBpJXAAGoiAygCADYCDCAAIAEgAkEMaiACQQRqQZSJwAAQPiEBIAMgAigCDDYCAAwBCyACQaCVwAAoAgA2AgggACABIAJBCGpB/IjAAEH8iMAAED4hAUGglcAAIAIoAgg2AgALIAJBEGokACABC5cBAQJ/AkACQCABQRRqKAIAIgQgA0EDbCACQQlsaiICSwRAIAQgAkEBaiIDTQ0BIAQgAkECaiIFTQ0CIAAgASgCDCIBIAJBAnRqKAIANgIAIAAgASAFQQJ0aigCADYCCCAAIAEgA0ECdGooAgA2AgQPCyACIARBvIDAABA/AAsgAyAEQcyAwAAQPwALIAUgBEHcgMAAED8AC5MBAQZ/AkACQAJAIAAoAgAiBCABKAIARw0AIARFBEBBAQ8LIABBDGooAgAhBQNAIAUgAk0NAiABKAIMIgMgAk0NAyACIAJBAnQiAyAAKAIEaigCACIGIAEoAgQgA2ooAgAiB0YiA2oiAiAETw0BIAYgB0YNAAsLIAMPCyACIAVBhI3AABA/AAsgAiADQZSNwAAQPwALlAEBAn8CQAJAIAEoAggiBCADQQNsIAJBCWxqIgJLBEAgBCACQQFqIgNNDQEgBCACQQJqIgVNDQIgACABKAIAIgEgAkECdGooAgA2AgAgACABIAVBAnRqKAIANgIIIAAgASADQQJ0aigCADYCBA8LIAIgBEGMgMAAED8ACyADIARBnIDAABA/AAsgBSAEQayAwAAQPwALiwEBAX8jAEEQayIDJAAgAyABKAIAIgEoAgA2AgwgAkECaiICIAJsIgJBgBAgAkGAEEsbIgRBBCADQQxqQayJwABBrInAABA+IQIgASADKAIMNgIAIAIEfyACQgA3AgQgAiACIARBAnRqQQJyNgIAQQAFQQELIQEgACACNgIEIAAgATYCACADQRBqJAALogEBA38jAEEQayIBJAAgACgCACICQRRqKAIAIQMCQAJ/AkACQCACKAIEDgIAAQMLIAMNAkEAIQJB8I3AAAwBCyADDQEgAigCACIDKAIEIQIgAygCAAshAyABIAI2AgQgASADNgIAIAFB/I7AACAAKAIEKAIIIAAoAggQJQALIAFBADYCBCABIAI2AgAgAUHojsAAIAAoAgQoAgggACgCCBAlAAtTAgF/AX4CQCABrUIMfiIDQiCIpw0AIAOnIgFBf0wNAAJAIAEEQCABQQQQZyICDQEgAUEEEHAAC0EEIQILIAAgAjYCACAAIAFBDG42AgQPCxBrAAtTAgF/AX4CQCABrUIofiIDQiCIpw0AIAOnIgFBf0wNAAJAIAEEQCABQQQQZyICDQEgAUEEEHAAC0EEIQILIAAgAjYCACAAIAFBKG42AgQPCxBrAAtVAgF/AX4CQCABrULIAH4iA0IgiKcNACADpyIBQX9MDQACQCABBEAgAUEEEGciAg0BIAFBBBBwAAtBBCECCyAAIAI2AgAgACABQcgAbjYCBA8LEGsAC1MBAX8CQCABIAFB/////wBxRw0AIAFBBHQiAUF/TA0AAkAgAQRAIAFBBBBnIgINASABQQQQcAALQQQhAgsgACACNgIAIAAgAUEEdjYCBA8LEGsAC4MBAQF/AkAgASABQf////8DcUcNACABQQJ0IgFBf0wNAAJAAkACQAJAIAIEQCABDQEMAwsgAUUNAiABQQQQZyICDQMMAQsgASICQQQQLiIDBEAgAyACEFoaCyADIgINAgsgAUEEEHAAC0EEIQILIAAgAjYCACAAIAFBAnY2AgQPCxBrAAt0AgJ/AX4jAEEQayICJAAgAkEIaiABEGMgAigCCCEDIAIgAigCDCIBQQAQOCACKQMAIQQgAEEANgIIIAAgBDcCACAAQQAgARAbIAAoAgAgACgCCEECdGogAyABQQJ0EE4gACABIAAoAghqNgIIIAJBEGokAAtxAAJ/IAJBAnQiASADQQN0QYCAAWoiAiABIAJLG0GHgARqIgFBEHZAACICQX9GBEBBACEDQQEMAQsgAkEQdCIDQgA3AwAgA0EANgIIIAMgAyABQYCAfHFqQQJyNgIAQQALIQIgACADNgIEIAAgAjYCAAtvAQF/AkAgASAATwRAIAJFDQEgACEDA0AgAyABLQAAOgAAIAFBAWohASADQQFqIQMgAkF/aiICDQALDAELIAJFDQAgAUF/aiEBIABBf2ohAwNAIAIgA2ogASACai0AADoAACACQX9qIgINAAsLIAALbwECfwJ/IAIgAJMgASAAk5VDAAAARZQiAEMAAADPYCIDQQFzIABD////Tl9FckUEQCAAqAwBC0H/////B0GAgICAeCADGyIEIARBACAAQ////05fGyADGwsiA0EAIANBAEobIgNB/w8gA0H/D0gbC2YBAX8CQCAAQSBqKAIAIgMgAUEGbCACQQF0aiIBSwRAIAMgAUEBciICTQ0BIAAoAhgiACACQQJ0ajUCAEIghiAAIAFBAnRqNQIAhA8LIAEgA0HsgMAAED8ACyACIANB/IDAABA/AAtrAQJ/IwBBEGsiBiQAAkAgACABIAIgAyAEEAoiBQ0AIAZBCGogAyAAIAEgBCgCDBEFAEEAIQUgBigCCA0AIAYoAgwiBSACKAIANgIIIAIgBTYCACAAIAEgAiADIAQQCiEFCyAGQRBqJAAgBQtsAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBHTYCACADQgI3AgwgA0G0kMAANgIIIANBHTYCJCADIANBIGo2AhggAyADNgIoIAMgA0EEajYCICADQQhqIAIQWQALVAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEYaiABQRBqKQIANwMAIAJBEGogAUEIaikCADcDACACIAEpAgA3AwggAkEEaiACQQhqEAggAkEgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNyADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGopAgA3AwAgAyABKQIANwMQIAAgAiADQRBqECcgA0EgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNCADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGooAgA2AgAgAyABKQIANwMQIAAgAiADQRBqECYgA0EgaiQAC1kCAX8BfiMAQSBrIgMkACADQQhqIAIQNyADKQMIIQQgAEEANgIIIAAgBDcCACADQRhqIAFBCGopAgA3AwAgAyABKQIANwMQIAAgAiADQRBqECAgA0EgaiQAC1QBAn8gASgCACECIAFBADYCAAJAIAIEQCABKAIEIQNBCEEEEGciAUUNASABIAM2AgQgASACNgIAIABByI3AADYCBCAAIAE2AgAPCwALQQhBBBBwAAtKAgF/AX4jAEHQAGsiAyQAIAMgAhA2IAMpAwAhBCAAQQA2AgggACAENwIAIANBCGogAUHIABBOIAAgAiADQQhqECsgA0HQAGokAAtHAgF/AX4jAEEwayIDJAAgAyACEDUgAykDACEEIABBADYCCCAAIAQ3AgAgA0EIaiABQSgQTiAAIAIgA0EIahAsIANBMGokAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQIADQEaCyACRQRAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQQACwtHAQF/IwBBIGsiAyQAIANBFGpBADYCACADQfCPwAA2AhAgA0IBNwIEIAMgATYCHCADIAA2AhggAyADQRhqNgIAIAMgAhBZAAs8AQF/IAAoAggiAQRAIAFBBHQhASAAKAIAQQRqIQADQCAAKAIAGiAAEFYgAEEQaiEAIAFBcGoiAQ0ACwsLOAAgAEIANwIAIABBCGpBADYCACAAQSRqQQA6AAAgAEEcakIANwIAIABBFGpCADcCACAAQgA3AgwLRAECfyABKAIEIQIgASgCACEDQQhBBBBnIgFFBEBBCEEEEHAACyABIAI2AgQgASADNgIAIABBoI/AADYCBCAAIAE2AgALPQAgAEIANwIgIAAgASkCADcCACAAIAIpAgA3AhAgAEEIaiABQQhqKQIANwIAIABBGGogAkEIaikCADcCAAtbAQN/IwBBEGsiASQAIAAoAgwiAkUEQEGAjsAAQStByI7AABBIAAsgACgCCCIDRQRAQYCOwABBK0HYjsAAEEgACyABIAI2AgggASAANgIEIAEgAzYCACABEFgACysAIAIEQANAIAAgAS0AADoAACABQQFqIQEgAEEBaiEAIAJBf2oiAg0ACwsLKQEBfyADIAIQLiIEBEAgBCAAIAMgASABIANLGxBOIAAgASACECoLIAQLLAACQCAAQXxNBEAgAEUEQEEEIQAMAgsgACAAQX1JQQJ0EGciAA0BCwALIAALNwEBf0EBIQECQCAAKgIAi0MAAIAAXg0AIAAqAgSLQwAAgABeDQAgACoCCItDAACAAF4hAQsgAQsmAQF/AkAgACgCBCIBRQ0AIAAoAgAgAUEEdCIBRQ0AIAFBBBBqCwsnAQF/AkAgACgCBCIBRQ0AIAAoAgAgAUHIAGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBKGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBDGwiAUUNACABQQQQagsLJgEBfwJAIAAoAgQiAUUNACAAKAIAIAFBAnQiAUUNACABQQQQagsLLAEBfyMAQRBrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEQWwALLAEBfyMAQRBrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEQMwALNAEBfyMAQRBrIgIkACACIAE2AgwgAiAANgIIIAJB8I/AADYCBCACQfCPwAA2AgAgAhBNAAspAQF/IAEEQCAAIQIDQCACQQA6AAAgAkEBaiECIAFBf2oiAQ0ACwsgAAsrAQF/IwBBEGsiASQAIAEgACkCADcDCCABQQhqQbSNwABBACAAKAIIECUACycBAX8jAEEQayICJAAgAiABNgIIIAJBHTYCBCACIAA2AgAgAhBXAAsmAQF/AkAgACgCACIBRQ0AIABBBGooAgAiAEUNACABIABBARBqCwsmAQF/AkAgACgCBCIBRQ0AIABBCGooAgAiAEUNACABIABBARBqCwshACAAQQM2AgwgACABNgIEIAAgATYCACAAIAFBDGo2AggLHQAgASgCAEUEQAALIABByI3AADYCBCAAIAE2AgALFgAgACABQQNxNgIEIAAgAUECdjYCAAsMACAAIAEgAiADEE8LFgAgACABKAIINgIEIAAgASgCADYCAAsPACABBEAgACABQQQQagsLEgAgACgCACABIAEgAmoQIkEACw0AIAFBA3EgAEECdHILCAAgACABEC4LEAAgACACNgIEIAAgATYCAAsTACAAQaCPwAA2AgQgACABNgIACwoAIAAgASACECoLEQBBzI/AAEERQeCPwAAQSAALDgAgACgCABoDQAwACwALCwAgADUCACABEBQLCwAgACMAaiQAIwALCwAgAItDAACAAF4LGQAgACABQcSdwAAoAgAiAEEPIAAbEQEAAAsFAEGABAsEAEEBCwQAIAELBABBAAsNAEL0+Z7m7qOq+f4ACw0AQve47vqqzNXu5QALDABC6dCi28yi6rtGCwMAAQsDAAELC6QVAgBBgIDAAAvBCnNyYy9saWIucnMAAAAAEAAKAAAANgAAAA0AAAAAABAACgAAADcAAAANAAAAAAAQAAoAAAA4AAAADQAAAAAAEAAKAAAAPgAAAA0AAAAAABAACgAAAD8AAAANAAAAAAAQAAoAAABAAAAADQAAAAAAEAAKAAAARgAAAA0AAAAAABAACgAAAEcAAAANAAAARmFpbGVkIHRvIGdlbmVyYXRlIHRhbmdlbnRzLi9Vc2Vycy9kb25tY2N1cmR5Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL21pa2t0c3BhY2UtMC4yLjAvc3JjL2dlbmVyYXRlZC5ycwCoABAAYwAAANcAAAASAAAAqAAQAGMAAADYAAAAEgAAAKgAEABjAAAA2QAAABIAAACoABAAYwAAAN4AAAANAAAAqAAQAGMAAAAjAQAAOAAAAKgAEABjAAAA/QEAABUAAACoABAAYwAAAA8CAABAAAAAqAAQAGMAAAAVAgAAEQAAAKgAEABjAAAAFgIAABEAAACoABAAYwAAABgCAAARAAAAqAAQAGMAAAAjAgAAGQAAAKgAEABjAAAAJAIAADIAAACoABAAYwAAACoCAAAcAAAAqAAQAGMAAAAmAgAANAAAAKgAEABjAAAAvQUAAAkAAACoABAAYwAAAMAFAAAFAAAAqAAQAGMAAADDBQAAHAAAAKgAEABjAAAAwwUAADMAAACoABAAYwAAAMMFAAAJAAAAqAAQAGMAAADTBQAAIwAAAKgAEABjAAAA0wUAABcAAACoABAAYwAAANQFAAAYAAAAqAAQAGMAAADVBQAACQAAAKgAEABjAAAA3AUAABEAAACoABAAYwAAAN8FAAAYAAAAqAAQAGMAAADgBQAAGQAAAKgAEABjAAAA6AUAAC0AAACoABAAYwAAAOgFAAAhAAAAqAAQAGMAAADpBQAAGAAAAKgAEABjAAAA8gUAABEAAACoABAAYwAAAKcGAAANAAAAqAAQAGMAAACuBgAAEQAAAKgAEABjAAAArwYAABEAAACoABAAYwAAALAGAAARAAAAqAAQAGMAAAD9BgAACQAAAE1hdHJpeCBzbGljaW5nIG91dCBvZiBib3VuZHMuL1VzZXJzL2Rvbm1jY3VyZHkvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvbmFsZ2VicmEtMC4xOS4wL3NyYy9iYXNlL21hdHJpeF9zbGljZS5ycwBZAxAAagAAAOMAAAAJAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHkAAADUAxAAcQAAAMUBAAAJAAAAAQAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAQAAAAEAAAABgAAAAcAAAAIAAAACQAAAAAAAAABAAAAAgAAAAMAAAAEAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtYXBwbGUtZGFyd2luL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvbnVtL21vZC5yc8QEEABwAAAAnQIAAAUAQdCKwAAL0AphdHRlbXB0IHRvIGNhbGN1bGF0ZSB0aGUgcmVtYWluZGVyIHdpdGggYSBkaXZpc29yIG9mIHplcm9NYXRyaXggc2xpY2luZyBvdXQgb2YgYm91bmRzLi9Vc2Vycy9kb25tY2N1cmR5Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL25hbGdlYnJhLTAuMTkuMC9zcmMvYmFzZS9tYXRyaXhfc2xpY2UucnOmBRAAagAAAOMAAAAJAAAAL1VzZXJzL2Rvbm1jY3VyZHkvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvbWlra3RzcGFjZS0wLjIuMC9zcmMvZ2VuZXJhdGVkLnJzACAGEABjAAAA2wIAABkAAAAgBhAAYwAAANsCAAAyAAAAIAYQAGMAAAB+AwAACAAAAAoAAAAIAAAABAAAAAsAAAAMAAAADQAAAAgAAAAEAAAADgAAABAAAAAEAAAABAAAABEAAAASAAAAEwAAABAAAAAAAAAAAQAAABQAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5ycwArBxAAHAAAAO0BAAAfAAAAKwcQABwAAADuAQAAHgAAABUAAAAQAAAABAAAABYAAAAXAAAAEAAAAAgAAAAEAAAAGAAAABkAAAAaAAAADAAAAAQAAAAbAAAAEAAAAAgAAAAEAAAAHAAAAGxpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNjYXBhY2l0eSBvdmVyZmxvdwAAALAHEAAcAAAAHgIAAAUAAAAfAAAAAAAAAAEAAAAgAAAAaW5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAAAAAIEAAgAAAAIAgQABIAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OWxpYnJhcnkvY29yZS9zcmMvZm10L21vZC5ycwAMCRAAGwAAAFUEAAARAAAADAkQABsAAABfBAAAJAAAAAMAAAAEAAAABAAAAAYAAACD+aIARE5uAPwpFQDRVycA3TT1AGLbwAA8mZUAQZBDAGNR/gC73qsAt2HFADpuJADSTUIASQbgAAnqLgAcktEA6x3+ACmxHADoPqcA9TWCAES7LgCc6YQAtCZwAEF+XwDWkTkAU4M5AJz0OQCLX4QAKPm9APgfOwDe/5cAD5gFABEv7wAKWosAbR9tAM9+NgAJyycARk+3AJ5mPwAt6l8Auid1AOXrxwA9e/EA9zkHAJJSigD7a+oAH7FfAAhdjQAwA1YAe/xGAPCrawAgvM8ANvSaAOOpHQBeYZEACBvmAIWZZQCgFF8AjUBoAIDY/wAnc00ABgYxAMpWFQDJqHMAe+JgAGuMwAAAAABA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1AHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIwLjIuNzMgKDNjZWZlMmM4Mik='; - -export let wasm; - -export let isReady = false; - -export const ready = fetch(wasmDataURI) - .then((res) => res.arrayBuffer()) - .then((buffer) => WebAssembly.instantiate(buffer, { - './mikktspace_module_bg.js': {__wbindgen_string_new, __wbindgen_rethrow} - })) - .then((result) => { - wasm = result.instance.exports; - isReady = true; - }); diff --git a/three/addons/libs/mmdparser.module.js b/three/addons/libs/mmdparser.module.js deleted file mode 100644 index 5a587f1..0000000 --- a/three/addons/libs/mmdparser.module.js +++ /dev/null @@ -1,11530 +0,0 @@ -/** - * @author Takahiro / https://github.com/takahirox - * - * Simple CharsetEncoder. - */ - -function CharsetEncoder() { -} - -/* - * Converts from Shift_JIS Uint8Array data to Unicode strings. - */ -CharsetEncoder.prototype.s2u = function(uint8Array) { - var t = this.s2uTable; - var str = ''; - var p = 0; - - while(p < uint8Array.length) { - var key = uint8Array[p++]; - - if(! ((key >= 0x00 && key <= 0x7e) || - (key >= 0xa1 && key <= 0xdf)) && - p < uint8Array.length) { - key = (key << 8) | uint8Array[p++]; - } - - if(t[key] === undefined) { - console.error('unknown char code ' + key + '.'); - return str; - } - - str += String.fromCharCode(t[key]); - } - - return str; -}; - -CharsetEncoder.prototype.s2uTable = { -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, -14:14, -15:15, -16:16, -17:17, -18:18, -19:19, -20:20, -21:21, -22:22, -23:23, -24:24, -25:25, -26:26, -27:27, -28:28, -29:29, -30:30, -31:31, -32:32, -33:33, -34:34, -35:35, -36:36, -37:37, -38:38, -39:39, -40:40, -41:41, -42:42, -43:43, -44:44, -45:45, -46:46, -47:47, -48:48, -49:49, -50:50, -51:51, -52:52, -53:53, -54:54, -55:55, -56:56, -57:57, -58:58, -59:59, -60:60, -61:61, -62:62, -63:63, -64:64, -65:65, -66:66, -67:67, -68:68, -69:69, -70:70, -71:71, -72:72, -73:73, -74:74, -75:75, -76:76, -77:77, -78:78, -79:79, -80:80, -81:81, -82:82, -83:83, -84:84, -85:85, -86:86, -87:87, -88:88, -89:89, -90:90, -91:91, -92:92, -93:93, -94:94, -95:95, -96:96, -97:97, -98:98, -99:99, -100:100, -101:101, -102:102, -103:103, -104:104, -105:105, -106:106, -107:107, -108:108, -109:109, -110:110, -111:111, -112:112, -113:113, -114:114, -115:115, -116:116, -117:117, -118:118, -119:119, -120:120, -121:121, -122:122, -123:123, -124:124, -125:125, -126:126, -161:65377, -162:65378, -163:65379, -164:65380, -165:65381, -166:65382, -167:65383, -168:65384, -169:65385, -170:65386, -171:65387, -172:65388, -173:65389, -174:65390, -175:65391, -176:65392, -177:65393, -178:65394, -179:65395, -180:65396, -181:65397, -182:65398, -183:65399, -184:65400, -185:65401, -186:65402, -187:65403, -188:65404, -189:65405, -190:65406, -191:65407, -192:65408, -193:65409, -194:65410, -195:65411, -196:65412, -197:65413, -198:65414, -199:65415, -200:65416, -201:65417, -202:65418, -203:65419, -204:65420, -205:65421, -206:65422, -207:65423, -208:65424, -209:65425, -210:65426, -211:65427, -212:65428, -213:65429, -214:65430, -215:65431, -216:65432, -217:65433, -218:65434, -219:65435, -220:65436, -221:65437, -222:65438, -223:65439, -33088:12288, -33089:12289, -33090:12290, -33091:65292, -33092:65294, -33093:12539, -33094:65306, -33095:65307, -33096:65311, -33097:65281, -33098:12443, -33099:12444, -33100:180, -33101:65344, -33102:168, -33103:65342, -33104:65507, -33105:65343, -33106:12541, -33107:12542, -33108:12445, -33109:12446, -33110:12291, -33111:20189, -33112:12293, -33113:12294, -33114:12295, -33115:12540, -33116:8213, -33117:8208, -33118:65295, -33119:65340, -33120:65374, -33121:8741, -33122:65372, -33123:8230, -33124:8229, -33125:8216, -33126:8217, -33127:8220, -33128:8221, -33129:65288, -33130:65289, -33131:12308, -33132:12309, -33133:65339, -33134:65341, -33135:65371, -33136:65373, -33137:12296, -33138:12297, -33139:12298, -33140:12299, -33141:12300, -33142:12301, -33143:12302, -33144:12303, -33145:12304, -33146:12305, -33147:65291, -33148:65293, -33149:177, -33150:215, -33152:247, -33153:65309, -33154:8800, -33155:65308, -33156:65310, -33157:8806, -33158:8807, -33159:8734, -33160:8756, -33161:9794, -33162:9792, -33163:176, -33164:8242, -33165:8243, -33166:8451, -33167:65509, -33168:65284, -33169:65504, -33170:65505, -33171:65285, -33172:65283, -33173:65286, -33174:65290, -33175:65312, -33176:167, -33177:9734, -33178:9733, -33179:9675, -33180:9679, -33181:9678, -33182:9671, -33183:9670, -33184:9633, -33185:9632, -33186:9651, -33187:9650, -33188:9661, -33189:9660, -33190:8251, -33191:12306, -33192:8594, -33193:8592, -33194:8593, -33195:8595, -33196:12307, -33208:8712, -33209:8715, -33210:8838, -33211:8839, -33212:8834, -33213:8835, -33214:8746, -33215:8745, -33224:8743, -33225:8744, -33226:65506, -33227:8658, -33228:8660, -33229:8704, -33230:8707, -33242:8736, -33243:8869, -33244:8978, -33245:8706, -33246:8711, -33247:8801, -33248:8786, -33249:8810, -33250:8811, -33251:8730, -33252:8765, -33253:8733, -33254:8757, -33255:8747, -33256:8748, -33264:8491, -33265:8240, -33266:9839, -33267:9837, -33268:9834, -33269:8224, -33270:8225, -33271:182, -33276:9711, -33359:65296, -33360:65297, -33361:65298, -33362:65299, -33363:65300, -33364:65301, -33365:65302, -33366:65303, -33367:65304, -33368:65305, -33376:65313, -33377:65314, -33378:65315, -33379:65316, -33380:65317, -33381:65318, -33382:65319, -33383:65320, -33384:65321, -33385:65322, -33386:65323, -33387:65324, -33388:65325, -33389:65326, -33390:65327, -33391:65328, -33392:65329, -33393:65330, -33394:65331, -33395:65332, -33396:65333, -33397:65334, -33398:65335, -33399:65336, -33400:65337, -33401:65338, -33409:65345, -33410:65346, -33411:65347, -33412:65348, -33413:65349, -33414:65350, -33415:65351, -33416:65352, -33417:65353, -33418:65354, -33419:65355, -33420:65356, -33421:65357, -33422:65358, -33423:65359, -33424:65360, -33425:65361, -33426:65362, -33427:65363, -33428:65364, -33429:65365, -33430:65366, -33431:65367, -33432:65368, -33433:65369, -33434:65370, -33439:12353, -33440:12354, -33441:12355, -33442:12356, -33443:12357, -33444:12358, -33445:12359, -33446:12360, -33447:12361, -33448:12362, -33449:12363, -33450:12364, -33451:12365, -33452:12366, -33453:12367, -33454:12368, -33455:12369, -33456:12370, -33457:12371, -33458:12372, -33459:12373, -33460:12374, -33461:12375, -33462:12376, -33463:12377, -33464:12378, -33465:12379, -33466:12380, -33467:12381, -33468:12382, -33469:12383, -33470:12384, -33471:12385, -33472:12386, -33473:12387, -33474:12388, -33475:12389, -33476:12390, -33477:12391, -33478:12392, -33479:12393, -33480:12394, -33481:12395, -33482:12396, -33483:12397, -33484:12398, -33485:12399, -33486:12400, -33487:12401, -33488:12402, -33489:12403, -33490:12404, -33491:12405, -33492:12406, -33493:12407, -33494:12408, -33495:12409, -33496:12410, -33497:12411, -33498:12412, -33499:12413, -33500:12414, -33501:12415, -33502:12416, -33503:12417, -33504:12418, -33505:12419, -33506:12420, -33507:12421, -33508:12422, -33509:12423, -33510:12424, -33511:12425, -33512:12426, -33513:12427, -33514:12428, -33515:12429, -33516:12430, -33517:12431, -33518:12432, -33519:12433, -33520:12434, -33521:12435, -33600:12449, -33601:12450, -33602:12451, -33603:12452, -33604:12453, -33605:12454, -33606:12455, -33607:12456, -33608:12457, -33609:12458, -33610:12459, -33611:12460, -33612:12461, -33613:12462, -33614:12463, -33615:12464, -33616:12465, -33617:12466, -33618:12467, -33619:12468, -33620:12469, -33621:12470, -33622:12471, -33623:12472, -33624:12473, -33625:12474, -33626:12475, -33627:12476, -33628:12477, -33629:12478, -33630:12479, -33631:12480, -33632:12481, -33633:12482, -33634:12483, -33635:12484, -33636:12485, -33637:12486, -33638:12487, -33639:12488, -33640:12489, -33641:12490, -33642:12491, -33643:12492, -33644:12493, -33645:12494, -33646:12495, -33647:12496, -33648:12497, -33649:12498, -33650:12499, -33651:12500, -33652:12501, -33653:12502, -33654:12503, -33655:12504, -33656:12505, -33657:12506, -33658:12507, -33659:12508, -33660:12509, -33661:12510, -33662:12511, -33664:12512, -33665:12513, -33666:12514, -33667:12515, -33668:12516, -33669:12517, -33670:12518, -33671:12519, -33672:12520, -33673:12521, -33674:12522, -33675:12523, -33676:12524, -33677:12525, -33678:12526, -33679:12527, -33680:12528, -33681:12529, -33682:12530, -33683:12531, -33684:12532, -33685:12533, -33686:12534, -33695:913, -33696:914, -33697:915, -33698:916, -33699:917, -33700:918, -33701:919, -33702:920, -33703:921, -33704:922, -33705:923, -33706:924, -33707:925, -33708:926, -33709:927, -33710:928, -33711:929, -33712:931, -33713:932, -33714:933, -33715:934, -33716:935, -33717:936, -33718:937, -33727:945, -33728:946, -33729:947, -33730:948, -33731:949, -33732:950, -33733:951, -33734:952, -33735:953, -33736:954, -33737:955, -33738:956, -33739:957, -33740:958, -33741:959, -33742:960, -33743:961, -33744:963, -33745:964, -33746:965, -33747:966, -33748:967, -33749:968, -33750:969, -33856:1040, -33857:1041, -33858:1042, -33859:1043, -33860:1044, -33861:1045, -33862:1025, -33863:1046, -33864:1047, -33865:1048, -33866:1049, -33867:1050, -33868:1051, -33869:1052, -33870:1053, -33871:1054, -33872:1055, -33873:1056, -33874:1057, -33875:1058, -33876:1059, -33877:1060, -33878:1061, -33879:1062, -33880:1063, -33881:1064, -33882:1065, -33883:1066, -33884:1067, -33885:1068, -33886:1069, -33887:1070, -33888:1071, -33904:1072, -33905:1073, -33906:1074, -33907:1075, -33908:1076, -33909:1077, -33910:1105, -33911:1078, -33912:1079, -33913:1080, -33914:1081, -33915:1082, -33916:1083, -33917:1084, -33918:1085, -33920:1086, -33921:1087, -33922:1088, -33923:1089, -33924:1090, -33925:1091, -33926:1092, -33927:1093, -33928:1094, -33929:1095, -33930:1096, -33931:1097, -33932:1098, -33933:1099, -33934:1100, -33935:1101, -33936:1102, -33937:1103, -33951:9472, -33952:9474, -33953:9484, -33954:9488, -33955:9496, -33956:9492, -33957:9500, -33958:9516, -33959:9508, -33960:9524, -33961:9532, -33962:9473, -33963:9475, -33964:9487, -33965:9491, -33966:9499, -33967:9495, -33968:9507, -33969:9523, -33970:9515, -33971:9531, -33972:9547, -33973:9504, -33974:9519, -33975:9512, -33976:9527, -33977:9535, -33978:9501, -33979:9520, -33980:9509, -33981:9528, -33982:9538, -34624:9312, -34625:9313, -34626:9314, -34627:9315, -34628:9316, -34629:9317, -34630:9318, -34631:9319, -34632:9320, -34633:9321, -34634:9322, -34635:9323, -34636:9324, -34637:9325, -34638:9326, -34639:9327, -34640:9328, -34641:9329, -34642:9330, -34643:9331, -34644:8544, -34645:8545, -34646:8546, -34647:8547, -34648:8548, -34649:8549, -34650:8550, -34651:8551, -34652:8552, -34653:8553, -34655:13129, -34656:13076, -34657:13090, -34658:13133, -34659:13080, -34660:13095, -34661:13059, -34662:13110, -34663:13137, -34664:13143, -34665:13069, -34666:13094, -34667:13091, -34668:13099, -34669:13130, -34670:13115, -34671:13212, -34672:13213, -34673:13214, -34674:13198, -34675:13199, -34676:13252, -34677:13217, -34686:13179, -34688:12317, -34689:12319, -34690:8470, -34691:13261, -34692:8481, -34693:12964, -34694:12965, -34695:12966, -34696:12967, -34697:12968, -34698:12849, -34699:12850, -34700:12857, -34701:13182, -34702:13181, -34703:13180, -34704:8786, -34705:8801, -34706:8747, -34707:8750, -34708:8721, -34709:8730, -34710:8869, -34711:8736, -34712:8735, -34713:8895, -34714:8757, -34715:8745, -34716:8746, -34975:20124, -34976:21782, -34977:23043, -34978:38463, -34979:21696, -34980:24859, -34981:25384, -34982:23030, -34983:36898, -34984:33909, -34985:33564, -34986:31312, -34987:24746, -34988:25569, -34989:28197, -34990:26093, -34991:33894, -34992:33446, -34993:39925, -34994:26771, -34995:22311, -34996:26017, -34997:25201, -34998:23451, -34999:22992, -35000:34427, -35001:39156, -35002:32098, -35003:32190, -35004:39822, -35005:25110, -35006:31903, -35007:34999, -35008:23433, -35009:24245, -35010:25353, -35011:26263, -35012:26696, -35013:38343, -35014:38797, -35015:26447, -35016:20197, -35017:20234, -35018:20301, -35019:20381, -35020:20553, -35021:22258, -35022:22839, -35023:22996, -35024:23041, -35025:23561, -35026:24799, -35027:24847, -35028:24944, -35029:26131, -35030:26885, -35031:28858, -35032:30031, -35033:30064, -35034:31227, -35035:32173, -35036:32239, -35037:32963, -35038:33806, -35039:34915, -35040:35586, -35041:36949, -35042:36986, -35043:21307, -35044:20117, -35045:20133, -35046:22495, -35047:32946, -35048:37057, -35049:30959, -35050:19968, -35051:22769, -35052:28322, -35053:36920, -35054:31282, -35055:33576, -35056:33419, -35057:39983, -35058:20801, -35059:21360, -35060:21693, -35061:21729, -35062:22240, -35063:23035, -35064:24341, -35065:39154, -35066:28139, -35067:32996, -35068:34093, -35136:38498, -35137:38512, -35138:38560, -35139:38907, -35140:21515, -35141:21491, -35142:23431, -35143:28879, -35144:32701, -35145:36802, -35146:38632, -35147:21359, -35148:40284, -35149:31418, -35150:19985, -35151:30867, -35152:33276, -35153:28198, -35154:22040, -35155:21764, -35156:27421, -35157:34074, -35158:39995, -35159:23013, -35160:21417, -35161:28006, -35162:29916, -35163:38287, -35164:22082, -35165:20113, -35166:36939, -35167:38642, -35168:33615, -35169:39180, -35170:21473, -35171:21942, -35172:23344, -35173:24433, -35174:26144, -35175:26355, -35176:26628, -35177:27704, -35178:27891, -35179:27945, -35180:29787, -35181:30408, -35182:31310, -35183:38964, -35184:33521, -35185:34907, -35186:35424, -35187:37613, -35188:28082, -35189:30123, -35190:30410, -35191:39365, -35192:24742, -35193:35585, -35194:36234, -35195:38322, -35196:27022, -35197:21421, -35198:20870, -35200:22290, -35201:22576, -35202:22852, -35203:23476, -35204:24310, -35205:24616, -35206:25513, -35207:25588, -35208:27839, -35209:28436, -35210:28814, -35211:28948, -35212:29017, -35213:29141, -35214:29503, -35215:32257, -35216:33398, -35217:33489, -35218:34199, -35219:36960, -35220:37467, -35221:40219, -35222:22633, -35223:26044, -35224:27738, -35225:29989, -35226:20985, -35227:22830, -35228:22885, -35229:24448, -35230:24540, -35231:25276, -35232:26106, -35233:27178, -35234:27431, -35235:27572, -35236:29579, -35237:32705, -35238:35158, -35239:40236, -35240:40206, -35241:40644, -35242:23713, -35243:27798, -35244:33659, -35245:20740, -35246:23627, -35247:25014, -35248:33222, -35249:26742, -35250:29281, -35251:20057, -35252:20474, -35253:21368, -35254:24681, -35255:28201, -35256:31311, -35257:38899, -35258:19979, -35259:21270, -35260:20206, -35261:20309, -35262:20285, -35263:20385, -35264:20339, -35265:21152, -35266:21487, -35267:22025, -35268:22799, -35269:23233, -35270:23478, -35271:23521, -35272:31185, -35273:26247, -35274:26524, -35275:26550, -35276:27468, -35277:27827, -35278:28779, -35279:29634, -35280:31117, -35281:31166, -35282:31292, -35283:31623, -35284:33457, -35285:33499, -35286:33540, -35287:33655, -35288:33775, -35289:33747, -35290:34662, -35291:35506, -35292:22057, -35293:36008, -35294:36838, -35295:36942, -35296:38686, -35297:34442, -35298:20420, -35299:23784, -35300:25105, -35301:29273, -35302:30011, -35303:33253, -35304:33469, -35305:34558, -35306:36032, -35307:38597, -35308:39187, -35309:39381, -35310:20171, -35311:20250, -35312:35299, -35313:22238, -35314:22602, -35315:22730, -35316:24315, -35317:24555, -35318:24618, -35319:24724, -35320:24674, -35321:25040, -35322:25106, -35323:25296, -35324:25913, -35392:39745, -35393:26214, -35394:26800, -35395:28023, -35396:28784, -35397:30028, -35398:30342, -35399:32117, -35400:33445, -35401:34809, -35402:38283, -35403:38542, -35404:35997, -35405:20977, -35406:21182, -35407:22806, -35408:21683, -35409:23475, -35410:23830, -35411:24936, -35412:27010, -35413:28079, -35414:30861, -35415:33995, -35416:34903, -35417:35442, -35418:37799, -35419:39608, -35420:28012, -35421:39336, -35422:34521, -35423:22435, -35424:26623, -35425:34510, -35426:37390, -35427:21123, -35428:22151, -35429:21508, -35430:24275, -35431:25313, -35432:25785, -35433:26684, -35434:26680, -35435:27579, -35436:29554, -35437:30906, -35438:31339, -35439:35226, -35440:35282, -35441:36203, -35442:36611, -35443:37101, -35444:38307, -35445:38548, -35446:38761, -35447:23398, -35448:23731, -35449:27005, -35450:38989, -35451:38990, -35452:25499, -35453:31520, -35454:27179, -35456:27263, -35457:26806, -35458:39949, -35459:28511, -35460:21106, -35461:21917, -35462:24688, -35463:25324, -35464:27963, -35465:28167, -35466:28369, -35467:33883, -35468:35088, -35469:36676, -35470:19988, -35471:39993, -35472:21494, -35473:26907, -35474:27194, -35475:38788, -35476:26666, -35477:20828, -35478:31427, -35479:33970, -35480:37340, -35481:37772, -35482:22107, -35483:40232, -35484:26658, -35485:33541, -35486:33841, -35487:31909, -35488:21000, -35489:33477, -35490:29926, -35491:20094, -35492:20355, -35493:20896, -35494:23506, -35495:21002, -35496:21208, -35497:21223, -35498:24059, -35499:21914, -35500:22570, -35501:23014, -35502:23436, -35503:23448, -35504:23515, -35505:24178, -35506:24185, -35507:24739, -35508:24863, -35509:24931, -35510:25022, -35511:25563, -35512:25954, -35513:26577, -35514:26707, -35515:26874, -35516:27454, -35517:27475, -35518:27735, -35519:28450, -35520:28567, -35521:28485, -35522:29872, -35523:29976, -35524:30435, -35525:30475, -35526:31487, -35527:31649, -35528:31777, -35529:32233, -35530:32566, -35531:32752, -35532:32925, -35533:33382, -35534:33694, -35535:35251, -35536:35532, -35537:36011, -35538:36996, -35539:37969, -35540:38291, -35541:38289, -35542:38306, -35543:38501, -35544:38867, -35545:39208, -35546:33304, -35547:20024, -35548:21547, -35549:23736, -35550:24012, -35551:29609, -35552:30284, -35553:30524, -35554:23721, -35555:32747, -35556:36107, -35557:38593, -35558:38929, -35559:38996, -35560:39000, -35561:20225, -35562:20238, -35563:21361, -35564:21916, -35565:22120, -35566:22522, -35567:22855, -35568:23305, -35569:23492, -35570:23696, -35571:24076, -35572:24190, -35573:24524, -35574:25582, -35575:26426, -35576:26071, -35577:26082, -35578:26399, -35579:26827, -35580:26820, -35648:27231, -35649:24112, -35650:27589, -35651:27671, -35652:27773, -35653:30079, -35654:31048, -35655:23395, -35656:31232, -35657:32000, -35658:24509, -35659:35215, -35660:35352, -35661:36020, -35662:36215, -35663:36556, -35664:36637, -35665:39138, -35666:39438, -35667:39740, -35668:20096, -35669:20605, -35670:20736, -35671:22931, -35672:23452, -35673:25135, -35674:25216, -35675:25836, -35676:27450, -35677:29344, -35678:30097, -35679:31047, -35680:32681, -35681:34811, -35682:35516, -35683:35696, -35684:25516, -35685:33738, -35686:38816, -35687:21513, -35688:21507, -35689:21931, -35690:26708, -35691:27224, -35692:35440, -35693:30759, -35694:26485, -35695:40653, -35696:21364, -35697:23458, -35698:33050, -35699:34384, -35700:36870, -35701:19992, -35702:20037, -35703:20167, -35704:20241, -35705:21450, -35706:21560, -35707:23470, -35708:24339, -35709:24613, -35710:25937, -35712:26429, -35713:27714, -35714:27762, -35715:27875, -35716:28792, -35717:29699, -35718:31350, -35719:31406, -35720:31496, -35721:32026, -35722:31998, -35723:32102, -35724:26087, -35725:29275, -35726:21435, -35727:23621, -35728:24040, -35729:25298, -35730:25312, -35731:25369, -35732:28192, -35733:34394, -35734:35377, -35735:36317, -35736:37624, -35737:28417, -35738:31142, -35739:39770, -35740:20136, -35741:20139, -35742:20140, -35743:20379, -35744:20384, -35745:20689, -35746:20807, -35747:31478, -35748:20849, -35749:20982, -35750:21332, -35751:21281, -35752:21375, -35753:21483, -35754:21932, -35755:22659, -35756:23777, -35757:24375, -35758:24394, -35759:24623, -35760:24656, -35761:24685, -35762:25375, -35763:25945, -35764:27211, -35765:27841, -35766:29378, -35767:29421, -35768:30703, -35769:33016, -35770:33029, -35771:33288, -35772:34126, -35773:37111, -35774:37857, -35775:38911, -35776:39255, -35777:39514, -35778:20208, -35779:20957, -35780:23597, -35781:26241, -35782:26989, -35783:23616, -35784:26354, -35785:26997, -35786:29577, -35787:26704, -35788:31873, -35789:20677, -35790:21220, -35791:22343, -35792:24062, -35793:37670, -35794:26020, -35795:27427, -35796:27453, -35797:29748, -35798:31105, -35799:31165, -35800:31563, -35801:32202, -35802:33465, -35803:33740, -35804:34943, -35805:35167, -35806:35641, -35807:36817, -35808:37329, -35809:21535, -35810:37504, -35811:20061, -35812:20534, -35813:21477, -35814:21306, -35815:29399, -35816:29590, -35817:30697, -35818:33510, -35819:36527, -35820:39366, -35821:39368, -35822:39378, -35823:20855, -35824:24858, -35825:34398, -35826:21936, -35827:31354, -35828:20598, -35829:23507, -35830:36935, -35831:38533, -35832:20018, -35833:27355, -35834:37351, -35835:23633, -35836:23624, -35904:25496, -35905:31391, -35906:27795, -35907:38772, -35908:36705, -35909:31402, -35910:29066, -35911:38536, -35912:31874, -35913:26647, -35914:32368, -35915:26705, -35916:37740, -35917:21234, -35918:21531, -35919:34219, -35920:35347, -35921:32676, -35922:36557, -35923:37089, -35924:21350, -35925:34952, -35926:31041, -35927:20418, -35928:20670, -35929:21009, -35930:20804, -35931:21843, -35932:22317, -35933:29674, -35934:22411, -35935:22865, -35936:24418, -35937:24452, -35938:24693, -35939:24950, -35940:24935, -35941:25001, -35942:25522, -35943:25658, -35944:25964, -35945:26223, -35946:26690, -35947:28179, -35948:30054, -35949:31293, -35950:31995, -35951:32076, -35952:32153, -35953:32331, -35954:32619, -35955:33550, -35956:33610, -35957:34509, -35958:35336, -35959:35427, -35960:35686, -35961:36605, -35962:38938, -35963:40335, -35964:33464, -35965:36814, -35966:39912, -35968:21127, -35969:25119, -35970:25731, -35971:28608, -35972:38553, -35973:26689, -35974:20625, -35975:27424, -35976:27770, -35977:28500, -35978:31348, -35979:32080, -35980:34880, -35981:35363, -35982:26376, -35983:20214, -35984:20537, -35985:20518, -35986:20581, -35987:20860, -35988:21048, -35989:21091, -35990:21927, -35991:22287, -35992:22533, -35993:23244, -35994:24314, -35995:25010, -35996:25080, -35997:25331, -35998:25458, -35999:26908, -36000:27177, -36001:29309, -36002:29356, -36003:29486, -36004:30740, -36005:30831, -36006:32121, -36007:30476, -36008:32937, -36009:35211, -36010:35609, -36011:36066, -36012:36562, -36013:36963, -36014:37749, -36015:38522, -36016:38997, -36017:39443, -36018:40568, -36019:20803, -36020:21407, -36021:21427, -36022:24187, -36023:24358, -36024:28187, -36025:28304, -36026:29572, -36027:29694, -36028:32067, -36029:33335, -36030:35328, -36031:35578, -36032:38480, -36033:20046, -36034:20491, -36035:21476, -36036:21628, -36037:22266, -36038:22993, -36039:23396, -36040:24049, -36041:24235, -36042:24359, -36043:25144, -36044:25925, -36045:26543, -36046:28246, -36047:29392, -36048:31946, -36049:34996, -36050:32929, -36051:32993, -36052:33776, -36053:34382, -36054:35463, -36055:36328, -36056:37431, -36057:38599, -36058:39015, -36059:40723, -36060:20116, -36061:20114, -36062:20237, -36063:21320, -36064:21577, -36065:21566, -36066:23087, -36067:24460, -36068:24481, -36069:24735, -36070:26791, -36071:27278, -36072:29786, -36073:30849, -36074:35486, -36075:35492, -36076:35703, -36077:37264, -36078:20062, -36079:39881, -36080:20132, -36081:20348, -36082:20399, -36083:20505, -36084:20502, -36085:20809, -36086:20844, -36087:21151, -36088:21177, -36089:21246, -36090:21402, -36091:21475, -36092:21521, -36160:21518, -36161:21897, -36162:22353, -36163:22434, -36164:22909, -36165:23380, -36166:23389, -36167:23439, -36168:24037, -36169:24039, -36170:24055, -36171:24184, -36172:24195, -36173:24218, -36174:24247, -36175:24344, -36176:24658, -36177:24908, -36178:25239, -36179:25304, -36180:25511, -36181:25915, -36182:26114, -36183:26179, -36184:26356, -36185:26477, -36186:26657, -36187:26775, -36188:27083, -36189:27743, -36190:27946, -36191:28009, -36192:28207, -36193:28317, -36194:30002, -36195:30343, -36196:30828, -36197:31295, -36198:31968, -36199:32005, -36200:32024, -36201:32094, -36202:32177, -36203:32789, -36204:32771, -36205:32943, -36206:32945, -36207:33108, -36208:33167, -36209:33322, -36210:33618, -36211:34892, -36212:34913, -36213:35611, -36214:36002, -36215:36092, -36216:37066, -36217:37237, -36218:37489, -36219:30783, -36220:37628, -36221:38308, -36222:38477, -36224:38917, -36225:39321, -36226:39640, -36227:40251, -36228:21083, -36229:21163, -36230:21495, -36231:21512, -36232:22741, -36233:25335, -36234:28640, -36235:35946, -36236:36703, -36237:40633, -36238:20811, -36239:21051, -36240:21578, -36241:22269, -36242:31296, -36243:37239, -36244:40288, -36245:40658, -36246:29508, -36247:28425, -36248:33136, -36249:29969, -36250:24573, -36251:24794, -36252:39592, -36253:29403, -36254:36796, -36255:27492, -36256:38915, -36257:20170, -36258:22256, -36259:22372, -36260:22718, -36261:23130, -36262:24680, -36263:25031, -36264:26127, -36265:26118, -36266:26681, -36267:26801, -36268:28151, -36269:30165, -36270:32058, -36271:33390, -36272:39746, -36273:20123, -36274:20304, -36275:21449, -36276:21766, -36277:23919, -36278:24038, -36279:24046, -36280:26619, -36281:27801, -36282:29811, -36283:30722, -36284:35408, -36285:37782, -36286:35039, -36287:22352, -36288:24231, -36289:25387, -36290:20661, -36291:20652, -36292:20877, -36293:26368, -36294:21705, -36295:22622, -36296:22971, -36297:23472, -36298:24425, -36299:25165, -36300:25505, -36301:26685, -36302:27507, -36303:28168, -36304:28797, -36305:37319, -36306:29312, -36307:30741, -36308:30758, -36309:31085, -36310:25998, -36311:32048, -36312:33756, -36313:35009, -36314:36617, -36315:38555, -36316:21092, -36317:22312, -36318:26448, -36319:32618, -36320:36001, -36321:20916, -36322:22338, -36323:38442, -36324:22586, -36325:27018, -36326:32948, -36327:21682, -36328:23822, -36329:22524, -36330:30869, -36331:40442, -36332:20316, -36333:21066, -36334:21643, -36335:25662, -36336:26152, -36337:26388, -36338:26613, -36339:31364, -36340:31574, -36341:32034, -36342:37679, -36343:26716, -36344:39853, -36345:31545, -36346:21273, -36347:20874, -36348:21047, -36416:23519, -36417:25334, -36418:25774, -36419:25830, -36420:26413, -36421:27578, -36422:34217, -36423:38609, -36424:30352, -36425:39894, -36426:25420, -36427:37638, -36428:39851, -36429:30399, -36430:26194, -36431:19977, -36432:20632, -36433:21442, -36434:23665, -36435:24808, -36436:25746, -36437:25955, -36438:26719, -36439:29158, -36440:29642, -36441:29987, -36442:31639, -36443:32386, -36444:34453, -36445:35715, -36446:36059, -36447:37240, -36448:39184, -36449:26028, -36450:26283, -36451:27531, -36452:20181, -36453:20180, -36454:20282, -36455:20351, -36456:21050, -36457:21496, -36458:21490, -36459:21987, -36460:22235, -36461:22763, -36462:22987, -36463:22985, -36464:23039, -36465:23376, -36466:23629, -36467:24066, -36468:24107, -36469:24535, -36470:24605, -36471:25351, -36472:25903, -36473:23388, -36474:26031, -36475:26045, -36476:26088, -36477:26525, -36478:27490, -36480:27515, -36481:27663, -36482:29509, -36483:31049, -36484:31169, -36485:31992, -36486:32025, -36487:32043, -36488:32930, -36489:33026, -36490:33267, -36491:35222, -36492:35422, -36493:35433, -36494:35430, -36495:35468, -36496:35566, -36497:36039, -36498:36060, -36499:38604, -36500:39164, -36501:27503, -36502:20107, -36503:20284, -36504:20365, -36505:20816, -36506:23383, -36507:23546, -36508:24904, -36509:25345, -36510:26178, -36511:27425, -36512:28363, -36513:27835, -36514:29246, -36515:29885, -36516:30164, -36517:30913, -36518:31034, -36519:32780, -36520:32819, -36521:33258, -36522:33940, -36523:36766, -36524:27728, -36525:40575, -36526:24335, -36527:35672, -36528:40235, -36529:31482, -36530:36600, -36531:23437, -36532:38635, -36533:19971, -36534:21489, -36535:22519, -36536:22833, -36537:23241, -36538:23460, -36539:24713, -36540:28287, -36541:28422, -36542:30142, -36543:36074, -36544:23455, -36545:34048, -36546:31712, -36547:20594, -36548:26612, -36549:33437, -36550:23649, -36551:34122, -36552:32286, -36553:33294, -36554:20889, -36555:23556, -36556:25448, -36557:36198, -36558:26012, -36559:29038, -36560:31038, -36561:32023, -36562:32773, -36563:35613, -36564:36554, -36565:36974, -36566:34503, -36567:37034, -36568:20511, -36569:21242, -36570:23610, -36571:26451, -36572:28796, -36573:29237, -36574:37196, -36575:37320, -36576:37675, -36577:33509, -36578:23490, -36579:24369, -36580:24825, -36581:20027, -36582:21462, -36583:23432, -36584:25163, -36585:26417, -36586:27530, -36587:29417, -36588:29664, -36589:31278, -36590:33131, -36591:36259, -36592:37202, -36593:39318, -36594:20754, -36595:21463, -36596:21610, -36597:23551, -36598:25480, -36599:27193, -36600:32172, -36601:38656, -36602:22234, -36603:21454, -36604:21608, -36672:23447, -36673:23601, -36674:24030, -36675:20462, -36676:24833, -36677:25342, -36678:27954, -36679:31168, -36680:31179, -36681:32066, -36682:32333, -36683:32722, -36684:33261, -36685:33311, -36686:33936, -36687:34886, -36688:35186, -36689:35728, -36690:36468, -36691:36655, -36692:36913, -36693:37195, -36694:37228, -36695:38598, -36696:37276, -36697:20160, -36698:20303, -36699:20805, -36700:21313, -36701:24467, -36702:25102, -36703:26580, -36704:27713, -36705:28171, -36706:29539, -36707:32294, -36708:37325, -36709:37507, -36710:21460, -36711:22809, -36712:23487, -36713:28113, -36714:31069, -36715:32302, -36716:31899, -36717:22654, -36718:29087, -36719:20986, -36720:34899, -36721:36848, -36722:20426, -36723:23803, -36724:26149, -36725:30636, -36726:31459, -36727:33308, -36728:39423, -36729:20934, -36730:24490, -36731:26092, -36732:26991, -36733:27529, -36734:28147, -36736:28310, -36737:28516, -36738:30462, -36739:32020, -36740:24033, -36741:36981, -36742:37255, -36743:38918, -36744:20966, -36745:21021, -36746:25152, -36747:26257, -36748:26329, -36749:28186, -36750:24246, -36751:32210, -36752:32626, -36753:26360, -36754:34223, -36755:34295, -36756:35576, -36757:21161, -36758:21465, -36759:22899, -36760:24207, -36761:24464, -36762:24661, -36763:37604, -36764:38500, -36765:20663, -36766:20767, -36767:21213, -36768:21280, -36769:21319, -36770:21484, -36771:21736, -36772:21830, -36773:21809, -36774:22039, -36775:22888, -36776:22974, -36777:23100, -36778:23477, -36779:23558, -36780:23567, -36781:23569, -36782:23578, -36783:24196, -36784:24202, -36785:24288, -36786:24432, -36787:25215, -36788:25220, -36789:25307, -36790:25484, -36791:25463, -36792:26119, -36793:26124, -36794:26157, -36795:26230, -36796:26494, -36797:26786, -36798:27167, -36799:27189, -36800:27836, -36801:28040, -36802:28169, -36803:28248, -36804:28988, -36805:28966, -36806:29031, -36807:30151, -36808:30465, -36809:30813, -36810:30977, -36811:31077, -36812:31216, -36813:31456, -36814:31505, -36815:31911, -36816:32057, -36817:32918, -36818:33750, -36819:33931, -36820:34121, -36821:34909, -36822:35059, -36823:35359, -36824:35388, -36825:35412, -36826:35443, -36827:35937, -36828:36062, -36829:37284, -36830:37478, -36831:37758, -36832:37912, -36833:38556, -36834:38808, -36835:19978, -36836:19976, -36837:19998, -36838:20055, -36839:20887, -36840:21104, -36841:22478, -36842:22580, -36843:22732, -36844:23330, -36845:24120, -36846:24773, -36847:25854, -36848:26465, -36849:26454, -36850:27972, -36851:29366, -36852:30067, -36853:31331, -36854:33976, -36855:35698, -36856:37304, -36857:37664, -36858:22065, -36859:22516, -36860:39166, -36928:25325, -36929:26893, -36930:27542, -36931:29165, -36932:32340, -36933:32887, -36934:33394, -36935:35302, -36936:39135, -36937:34645, -36938:36785, -36939:23611, -36940:20280, -36941:20449, -36942:20405, -36943:21767, -36944:23072, -36945:23517, -36946:23529, -36947:24515, -36948:24910, -36949:25391, -36950:26032, -36951:26187, -36952:26862, -36953:27035, -36954:28024, -36955:28145, -36956:30003, -36957:30137, -36958:30495, -36959:31070, -36960:31206, -36961:32051, -36962:33251, -36963:33455, -36964:34218, -36965:35242, -36966:35386, -36967:36523, -36968:36763, -36969:36914, -36970:37341, -36971:38663, -36972:20154, -36973:20161, -36974:20995, -36975:22645, -36976:22764, -36977:23563, -36978:29978, -36979:23613, -36980:33102, -36981:35338, -36982:36805, -36983:38499, -36984:38765, -36985:31525, -36986:35535, -36987:38920, -36988:37218, -36989:22259, -36990:21416, -36992:36887, -36993:21561, -36994:22402, -36995:24101, -36996:25512, -36997:27700, -36998:28810, -36999:30561, -37000:31883, -37001:32736, -37002:34928, -37003:36930, -37004:37204, -37005:37648, -37006:37656, -37007:38543, -37008:29790, -37009:39620, -37010:23815, -37011:23913, -37012:25968, -37013:26530, -37014:36264, -37015:38619, -37016:25454, -37017:26441, -37018:26905, -37019:33733, -37020:38935, -37021:38592, -37022:35070, -37023:28548, -37024:25722, -37025:23544, -37026:19990, -37027:28716, -37028:30045, -37029:26159, -37030:20932, -37031:21046, -37032:21218, -37033:22995, -37034:24449, -37035:24615, -37036:25104, -37037:25919, -37038:25972, -37039:26143, -37040:26228, -37041:26866, -37042:26646, -37043:27491, -37044:28165, -37045:29298, -37046:29983, -37047:30427, -37048:31934, -37049:32854, -37050:22768, -37051:35069, -37052:35199, -37053:35488, -37054:35475, -37055:35531, -37056:36893, -37057:37266, -37058:38738, -37059:38745, -37060:25993, -37061:31246, -37062:33030, -37063:38587, -37064:24109, -37065:24796, -37066:25114, -37067:26021, -37068:26132, -37069:26512, -37070:30707, -37071:31309, -37072:31821, -37073:32318, -37074:33034, -37075:36012, -37076:36196, -37077:36321, -37078:36447, -37079:30889, -37080:20999, -37081:25305, -37082:25509, -37083:25666, -37084:25240, -37085:35373, -37086:31363, -37087:31680, -37088:35500, -37089:38634, -37090:32118, -37091:33292, -37092:34633, -37093:20185, -37094:20808, -37095:21315, -37096:21344, -37097:23459, -37098:23554, -37099:23574, -37100:24029, -37101:25126, -37102:25159, -37103:25776, -37104:26643, -37105:26676, -37106:27849, -37107:27973, -37108:27927, -37109:26579, -37110:28508, -37111:29006, -37112:29053, -37113:26059, -37114:31359, -37115:31661, -37116:32218, -37184:32330, -37185:32680, -37186:33146, -37187:33307, -37188:33337, -37189:34214, -37190:35438, -37191:36046, -37192:36341, -37193:36984, -37194:36983, -37195:37549, -37196:37521, -37197:38275, -37198:39854, -37199:21069, -37200:21892, -37201:28472, -37202:28982, -37203:20840, -37204:31109, -37205:32341, -37206:33203, -37207:31950, -37208:22092, -37209:22609, -37210:23720, -37211:25514, -37212:26366, -37213:26365, -37214:26970, -37215:29401, -37216:30095, -37217:30094, -37218:30990, -37219:31062, -37220:31199, -37221:31895, -37222:32032, -37223:32068, -37224:34311, -37225:35380, -37226:38459, -37227:36961, -37228:40736, -37229:20711, -37230:21109, -37231:21452, -37232:21474, -37233:20489, -37234:21930, -37235:22766, -37236:22863, -37237:29245, -37238:23435, -37239:23652, -37240:21277, -37241:24803, -37242:24819, -37243:25436, -37244:25475, -37245:25407, -37246:25531, -37248:25805, -37249:26089, -37250:26361, -37251:24035, -37252:27085, -37253:27133, -37254:28437, -37255:29157, -37256:20105, -37257:30185, -37258:30456, -37259:31379, -37260:31967, -37261:32207, -37262:32156, -37263:32865, -37264:33609, -37265:33624, -37266:33900, -37267:33980, -37268:34299, -37269:35013, -37270:36208, -37271:36865, -37272:36973, -37273:37783, -37274:38684, -37275:39442, -37276:20687, -37277:22679, -37278:24974, -37279:33235, -37280:34101, -37281:36104, -37282:36896, -37283:20419, -37284:20596, -37285:21063, -37286:21363, -37287:24687, -37288:25417, -37289:26463, -37290:28204, -37291:36275, -37292:36895, -37293:20439, -37294:23646, -37295:36042, -37296:26063, -37297:32154, -37298:21330, -37299:34966, -37300:20854, -37301:25539, -37302:23384, -37303:23403, -37304:23562, -37305:25613, -37306:26449, -37307:36956, -37308:20182, -37309:22810, -37310:22826, -37311:27760, -37312:35409, -37313:21822, -37314:22549, -37315:22949, -37316:24816, -37317:25171, -37318:26561, -37319:33333, -37320:26965, -37321:38464, -37322:39364, -37323:39464, -37324:20307, -37325:22534, -37326:23550, -37327:32784, -37328:23729, -37329:24111, -37330:24453, -37331:24608, -37332:24907, -37333:25140, -37334:26367, -37335:27888, -37336:28382, -37337:32974, -37338:33151, -37339:33492, -37340:34955, -37341:36024, -37342:36864, -37343:36910, -37344:38538, -37345:40667, -37346:39899, -37347:20195, -37348:21488, -37349:22823, -37350:31532, -37351:37261, -37352:38988, -37353:40441, -37354:28381, -37355:28711, -37356:21331, -37357:21828, -37358:23429, -37359:25176, -37360:25246, -37361:25299, -37362:27810, -37363:28655, -37364:29730, -37365:35351, -37366:37944, -37367:28609, -37368:35582, -37369:33592, -37370:20967, -37371:34552, -37372:21482, -37440:21481, -37441:20294, -37442:36948, -37443:36784, -37444:22890, -37445:33073, -37446:24061, -37447:31466, -37448:36799, -37449:26842, -37450:35895, -37451:29432, -37452:40008, -37453:27197, -37454:35504, -37455:20025, -37456:21336, -37457:22022, -37458:22374, -37459:25285, -37460:25506, -37461:26086, -37462:27470, -37463:28129, -37464:28251, -37465:28845, -37466:30701, -37467:31471, -37468:31658, -37469:32187, -37470:32829, -37471:32966, -37472:34507, -37473:35477, -37474:37723, -37475:22243, -37476:22727, -37477:24382, -37478:26029, -37479:26262, -37480:27264, -37481:27573, -37482:30007, -37483:35527, -37484:20516, -37485:30693, -37486:22320, -37487:24347, -37488:24677, -37489:26234, -37490:27744, -37491:30196, -37492:31258, -37493:32622, -37494:33268, -37495:34584, -37496:36933, -37497:39347, -37498:31689, -37499:30044, -37500:31481, -37501:31569, -37502:33988, -37504:36880, -37505:31209, -37506:31378, -37507:33590, -37508:23265, -37509:30528, -37510:20013, -37511:20210, -37512:23449, -37513:24544, -37514:25277, -37515:26172, -37516:26609, -37517:27880, -37518:34411, -37519:34935, -37520:35387, -37521:37198, -37522:37619, -37523:39376, -37524:27159, -37525:28710, -37526:29482, -37527:33511, -37528:33879, -37529:36015, -37530:19969, -37531:20806, -37532:20939, -37533:21899, -37534:23541, -37535:24086, -37536:24115, -37537:24193, -37538:24340, -37539:24373, -37540:24427, -37541:24500, -37542:25074, -37543:25361, -37544:26274, -37545:26397, -37546:28526, -37547:29266, -37548:30010, -37549:30522, -37550:32884, -37551:33081, -37552:33144, -37553:34678, -37554:35519, -37555:35548, -37556:36229, -37557:36339, -37558:37530, -37559:38263, -37560:38914, -37561:40165, -37562:21189, -37563:25431, -37564:30452, -37565:26389, -37566:27784, -37567:29645, -37568:36035, -37569:37806, -37570:38515, -37571:27941, -37572:22684, -37573:26894, -37574:27084, -37575:36861, -37576:37786, -37577:30171, -37578:36890, -37579:22618, -37580:26626, -37581:25524, -37582:27131, -37583:20291, -37584:28460, -37585:26584, -37586:36795, -37587:34086, -37588:32180, -37589:37716, -37590:26943, -37591:28528, -37592:22378, -37593:22775, -37594:23340, -37595:32044, -37596:29226, -37597:21514, -37598:37347, -37599:40372, -37600:20141, -37601:20302, -37602:20572, -37603:20597, -37604:21059, -37605:35998, -37606:21576, -37607:22564, -37608:23450, -37609:24093, -37610:24213, -37611:24237, -37612:24311, -37613:24351, -37614:24716, -37615:25269, -37616:25402, -37617:25552, -37618:26799, -37619:27712, -37620:30855, -37621:31118, -37622:31243, -37623:32224, -37624:33351, -37625:35330, -37626:35558, -37627:36420, -37628:36883, -37696:37048, -37697:37165, -37698:37336, -37699:40718, -37700:27877, -37701:25688, -37702:25826, -37703:25973, -37704:28404, -37705:30340, -37706:31515, -37707:36969, -37708:37841, -37709:28346, -37710:21746, -37711:24505, -37712:25764, -37713:36685, -37714:36845, -37715:37444, -37716:20856, -37717:22635, -37718:22825, -37719:23637, -37720:24215, -37721:28155, -37722:32399, -37723:29980, -37724:36028, -37725:36578, -37726:39003, -37727:28857, -37728:20253, -37729:27583, -37730:28593, -37731:30000, -37732:38651, -37733:20814, -37734:21520, -37735:22581, -37736:22615, -37737:22956, -37738:23648, -37739:24466, -37740:26007, -37741:26460, -37742:28193, -37743:30331, -37744:33759, -37745:36077, -37746:36884, -37747:37117, -37748:37709, -37749:30757, -37750:30778, -37751:21162, -37752:24230, -37753:22303, -37754:22900, -37755:24594, -37756:20498, -37757:20826, -37758:20908, -37760:20941, -37761:20992, -37762:21776, -37763:22612, -37764:22616, -37765:22871, -37766:23445, -37767:23798, -37768:23947, -37769:24764, -37770:25237, -37771:25645, -37772:26481, -37773:26691, -37774:26812, -37775:26847, -37776:30423, -37777:28120, -37778:28271, -37779:28059, -37780:28783, -37781:29128, -37782:24403, -37783:30168, -37784:31095, -37785:31561, -37786:31572, -37787:31570, -37788:31958, -37789:32113, -37790:21040, -37791:33891, -37792:34153, -37793:34276, -37794:35342, -37795:35588, -37796:35910, -37797:36367, -37798:36867, -37799:36879, -37800:37913, -37801:38518, -37802:38957, -37803:39472, -37804:38360, -37805:20685, -37806:21205, -37807:21516, -37808:22530, -37809:23566, -37810:24999, -37811:25758, -37812:27934, -37813:30643, -37814:31461, -37815:33012, -37816:33796, -37817:36947, -37818:37509, -37819:23776, -37820:40199, -37821:21311, -37822:24471, -37823:24499, -37824:28060, -37825:29305, -37826:30563, -37827:31167, -37828:31716, -37829:27602, -37830:29420, -37831:35501, -37832:26627, -37833:27233, -37834:20984, -37835:31361, -37836:26932, -37837:23626, -37838:40182, -37839:33515, -37840:23493, -37841:37193, -37842:28702, -37843:22136, -37844:23663, -37845:24775, -37846:25958, -37847:27788, -37848:35930, -37849:36929, -37850:38931, -37851:21585, -37852:26311, -37853:37389, -37854:22856, -37855:37027, -37856:20869, -37857:20045, -37858:20970, -37859:34201, -37860:35598, -37861:28760, -37862:25466, -37863:37707, -37864:26978, -37865:39348, -37866:32260, -37867:30071, -37868:21335, -37869:26976, -37870:36575, -37871:38627, -37872:27741, -37873:20108, -37874:23612, -37875:24336, -37876:36841, -37877:21250, -37878:36049, -37879:32905, -37880:34425, -37881:24319, -37882:26085, -37883:20083, -37884:20837, -37952:22914, -37953:23615, -37954:38894, -37955:20219, -37956:22922, -37957:24525, -37958:35469, -37959:28641, -37960:31152, -37961:31074, -37962:23527, -37963:33905, -37964:29483, -37965:29105, -37966:24180, -37967:24565, -37968:25467, -37969:25754, -37970:29123, -37971:31896, -37972:20035, -37973:24316, -37974:20043, -37975:22492, -37976:22178, -37977:24745, -37978:28611, -37979:32013, -37980:33021, -37981:33075, -37982:33215, -37983:36786, -37984:35223, -37985:34468, -37986:24052, -37987:25226, -37988:25773, -37989:35207, -37990:26487, -37991:27874, -37992:27966, -37993:29750, -37994:30772, -37995:23110, -37996:32629, -37997:33453, -37998:39340, -37999:20467, -38000:24259, -38001:25309, -38002:25490, -38003:25943, -38004:26479, -38005:30403, -38006:29260, -38007:32972, -38008:32954, -38009:36649, -38010:37197, -38011:20493, -38012:22521, -38013:23186, -38014:26757, -38016:26995, -38017:29028, -38018:29437, -38019:36023, -38020:22770, -38021:36064, -38022:38506, -38023:36889, -38024:34687, -38025:31204, -38026:30695, -38027:33833, -38028:20271, -38029:21093, -38030:21338, -38031:25293, -38032:26575, -38033:27850, -38034:30333, -38035:31636, -38036:31893, -38037:33334, -38038:34180, -38039:36843, -38040:26333, -38041:28448, -38042:29190, -38043:32283, -38044:33707, -38045:39361, -38046:40614, -38047:20989, -38048:31665, -38049:30834, -38050:31672, -38051:32903, -38052:31560, -38053:27368, -38054:24161, -38055:32908, -38056:30033, -38057:30048, -38058:20843, -38059:37474, -38060:28300, -38061:30330, -38062:37271, -38063:39658, -38064:20240, -38065:32624, -38066:25244, -38067:31567, -38068:38309, -38069:40169, -38070:22138, -38071:22617, -38072:34532, -38073:38588, -38074:20276, -38075:21028, -38076:21322, -38077:21453, -38078:21467, -38079:24070, -38080:25644, -38081:26001, -38082:26495, -38083:27710, -38084:27726, -38085:29256, -38086:29359, -38087:29677, -38088:30036, -38089:32321, -38090:33324, -38091:34281, -38092:36009, -38093:31684, -38094:37318, -38095:29033, -38096:38930, -38097:39151, -38098:25405, -38099:26217, -38100:30058, -38101:30436, -38102:30928, -38103:34115, -38104:34542, -38105:21290, -38106:21329, -38107:21542, -38108:22915, -38109:24199, -38110:24444, -38111:24754, -38112:25161, -38113:25209, -38114:25259, -38115:26000, -38116:27604, -38117:27852, -38118:30130, -38119:30382, -38120:30865, -38121:31192, -38122:32203, -38123:32631, -38124:32933, -38125:34987, -38126:35513, -38127:36027, -38128:36991, -38129:38750, -38130:39131, -38131:27147, -38132:31800, -38133:20633, -38134:23614, -38135:24494, -38136:26503, -38137:27608, -38138:29749, -38139:30473, -38140:32654, -38208:40763, -38209:26570, -38210:31255, -38211:21305, -38212:30091, -38213:39661, -38214:24422, -38215:33181, -38216:33777, -38217:32920, -38218:24380, -38219:24517, -38220:30050, -38221:31558, -38222:36924, -38223:26727, -38224:23019, -38225:23195, -38226:32016, -38227:30334, -38228:35628, -38229:20469, -38230:24426, -38231:27161, -38232:27703, -38233:28418, -38234:29922, -38235:31080, -38236:34920, -38237:35413, -38238:35961, -38239:24287, -38240:25551, -38241:30149, -38242:31186, -38243:33495, -38244:37672, -38245:37618, -38246:33948, -38247:34541, -38248:39981, -38249:21697, -38250:24428, -38251:25996, -38252:27996, -38253:28693, -38254:36007, -38255:36051, -38256:38971, -38257:25935, -38258:29942, -38259:19981, -38260:20184, -38261:22496, -38262:22827, -38263:23142, -38264:23500, -38265:20904, -38266:24067, -38267:24220, -38268:24598, -38269:25206, -38270:25975, -38272:26023, -38273:26222, -38274:28014, -38275:29238, -38276:31526, -38277:33104, -38278:33178, -38279:33433, -38280:35676, -38281:36000, -38282:36070, -38283:36212, -38284:38428, -38285:38468, -38286:20398, -38287:25771, -38288:27494, -38289:33310, -38290:33889, -38291:34154, -38292:37096, -38293:23553, -38294:26963, -38295:39080, -38296:33914, -38297:34135, -38298:20239, -38299:21103, -38300:24489, -38301:24133, -38302:26381, -38303:31119, -38304:33145, -38305:35079, -38306:35206, -38307:28149, -38308:24343, -38309:25173, -38310:27832, -38311:20175, -38312:29289, -38313:39826, -38314:20998, -38315:21563, -38316:22132, -38317:22707, -38318:24996, -38319:25198, -38320:28954, -38321:22894, -38322:31881, -38323:31966, -38324:32027, -38325:38640, -38326:25991, -38327:32862, -38328:19993, -38329:20341, -38330:20853, -38331:22592, -38332:24163, -38333:24179, -38334:24330, -38335:26564, -38336:20006, -38337:34109, -38338:38281, -38339:38491, -38340:31859, -38341:38913, -38342:20731, -38343:22721, -38344:30294, -38345:30887, -38346:21029, -38347:30629, -38348:34065, -38349:31622, -38350:20559, -38351:22793, -38352:29255, -38353:31687, -38354:32232, -38355:36794, -38356:36820, -38357:36941, -38358:20415, -38359:21193, -38360:23081, -38361:24321, -38362:38829, -38363:20445, -38364:33303, -38365:37610, -38366:22275, -38367:25429, -38368:27497, -38369:29995, -38370:35036, -38371:36628, -38372:31298, -38373:21215, -38374:22675, -38375:24917, -38376:25098, -38377:26286, -38378:27597, -38379:31807, -38380:33769, -38381:20515, -38382:20472, -38383:21253, -38384:21574, -38385:22577, -38386:22857, -38387:23453, -38388:23792, -38389:23791, -38390:23849, -38391:24214, -38392:25265, -38393:25447, -38394:25918, -38395:26041, -38396:26379, -38464:27861, -38465:27873, -38466:28921, -38467:30770, -38468:32299, -38469:32990, -38470:33459, -38471:33804, -38472:34028, -38473:34562, -38474:35090, -38475:35370, -38476:35914, -38477:37030, -38478:37586, -38479:39165, -38480:40179, -38481:40300, -38482:20047, -38483:20129, -38484:20621, -38485:21078, -38486:22346, -38487:22952, -38488:24125, -38489:24536, -38490:24537, -38491:25151, -38492:26292, -38493:26395, -38494:26576, -38495:26834, -38496:20882, -38497:32033, -38498:32938, -38499:33192, -38500:35584, -38501:35980, -38502:36031, -38503:37502, -38504:38450, -38505:21536, -38506:38956, -38507:21271, -38508:20693, -38509:21340, -38510:22696, -38511:25778, -38512:26420, -38513:29287, -38514:30566, -38515:31302, -38516:37350, -38517:21187, -38518:27809, -38519:27526, -38520:22528, -38521:24140, -38522:22868, -38523:26412, -38524:32763, -38525:20961, -38526:30406, -38528:25705, -38529:30952, -38530:39764, -38531:40635, -38532:22475, -38533:22969, -38534:26151, -38535:26522, -38536:27598, -38537:21737, -38538:27097, -38539:24149, -38540:33180, -38541:26517, -38542:39850, -38543:26622, -38544:40018, -38545:26717, -38546:20134, -38547:20451, -38548:21448, -38549:25273, -38550:26411, -38551:27819, -38552:36804, -38553:20397, -38554:32365, -38555:40639, -38556:19975, -38557:24930, -38558:28288, -38559:28459, -38560:34067, -38561:21619, -38562:26410, -38563:39749, -38564:24051, -38565:31637, -38566:23724, -38567:23494, -38568:34588, -38569:28234, -38570:34001, -38571:31252, -38572:33032, -38573:22937, -38574:31885, -38575:27665, -38576:30496, -38577:21209, -38578:22818, -38579:28961, -38580:29279, -38581:30683, -38582:38695, -38583:40289, -38584:26891, -38585:23167, -38586:23064, -38587:20901, -38588:21517, -38589:21629, -38590:26126, -38591:30431, -38592:36855, -38593:37528, -38594:40180, -38595:23018, -38596:29277, -38597:28357, -38598:20813, -38599:26825, -38600:32191, -38601:32236, -38602:38754, -38603:40634, -38604:25720, -38605:27169, -38606:33538, -38607:22916, -38608:23391, -38609:27611, -38610:29467, -38611:30450, -38612:32178, -38613:32791, -38614:33945, -38615:20786, -38616:26408, -38617:40665, -38618:30446, -38619:26466, -38620:21247, -38621:39173, -38622:23588, -38623:25147, -38624:31870, -38625:36016, -38626:21839, -38627:24758, -38628:32011, -38629:38272, -38630:21249, -38631:20063, -38632:20918, -38633:22812, -38634:29242, -38635:32822, -38636:37326, -38637:24357, -38638:30690, -38639:21380, -38640:24441, -38641:32004, -38642:34220, -38643:35379, -38644:36493, -38645:38742, -38646:26611, -38647:34222, -38648:37971, -38649:24841, -38650:24840, -38651:27833, -38652:30290, -38720:35565, -38721:36664, -38722:21807, -38723:20305, -38724:20778, -38725:21191, -38726:21451, -38727:23461, -38728:24189, -38729:24736, -38730:24962, -38731:25558, -38732:26377, -38733:26586, -38734:28263, -38735:28044, -38736:29494, -38737:29495, -38738:30001, -38739:31056, -38740:35029, -38741:35480, -38742:36938, -38743:37009, -38744:37109, -38745:38596, -38746:34701, -38747:22805, -38748:20104, -38749:20313, -38750:19982, -38751:35465, -38752:36671, -38753:38928, -38754:20653, -38755:24188, -38756:22934, -38757:23481, -38758:24248, -38759:25562, -38760:25594, -38761:25793, -38762:26332, -38763:26954, -38764:27096, -38765:27915, -38766:28342, -38767:29076, -38768:29992, -38769:31407, -38770:32650, -38771:32768, -38772:33865, -38773:33993, -38774:35201, -38775:35617, -38776:36362, -38777:36965, -38778:38525, -38779:39178, -38780:24958, -38781:25233, -38782:27442, -38784:27779, -38785:28020, -38786:32716, -38787:32764, -38788:28096, -38789:32645, -38790:34746, -38791:35064, -38792:26469, -38793:33713, -38794:38972, -38795:38647, -38796:27931, -38797:32097, -38798:33853, -38799:37226, -38800:20081, -38801:21365, -38802:23888, -38803:27396, -38804:28651, -38805:34253, -38806:34349, -38807:35239, -38808:21033, -38809:21519, -38810:23653, -38811:26446, -38812:26792, -38813:29702, -38814:29827, -38815:30178, -38816:35023, -38817:35041, -38818:37324, -38819:38626, -38820:38520, -38821:24459, -38822:29575, -38823:31435, -38824:33870, -38825:25504, -38826:30053, -38827:21129, -38828:27969, -38829:28316, -38830:29705, -38831:30041, -38832:30827, -38833:31890, -38834:38534, -38835:31452, -38836:40845, -38837:20406, -38838:24942, -38839:26053, -38840:34396, -38841:20102, -38842:20142, -38843:20698, -38844:20001, -38845:20940, -38846:23534, -38847:26009, -38848:26753, -38849:28092, -38850:29471, -38851:30274, -38852:30637, -38853:31260, -38854:31975, -38855:33391, -38856:35538, -38857:36988, -38858:37327, -38859:38517, -38860:38936, -38861:21147, -38862:32209, -38863:20523, -38864:21400, -38865:26519, -38866:28107, -38867:29136, -38868:29747, -38869:33256, -38870:36650, -38871:38563, -38872:40023, -38873:40607, -38874:29792, -38875:22593, -38876:28057, -38877:32047, -38878:39006, -38879:20196, -38880:20278, -38881:20363, -38882:20919, -38883:21169, -38884:23994, -38885:24604, -38886:29618, -38887:31036, -38888:33491, -38889:37428, -38890:38583, -38891:38646, -38892:38666, -38893:40599, -38894:40802, -38895:26278, -38896:27508, -38897:21015, -38898:21155, -38899:28872, -38900:35010, -38901:24265, -38902:24651, -38903:24976, -38904:28451, -38905:29001, -38906:31806, -38907:32244, -38908:32879, -38976:34030, -38977:36899, -38978:37676, -38979:21570, -38980:39791, -38981:27347, -38982:28809, -38983:36034, -38984:36335, -38985:38706, -38986:21172, -38987:23105, -38988:24266, -38989:24324, -38990:26391, -38991:27004, -38992:27028, -38993:28010, -38994:28431, -38995:29282, -38996:29436, -38997:31725, -38998:32769, -38999:32894, -39000:34635, -39001:37070, -39002:20845, -39003:40595, -39004:31108, -39005:32907, -39006:37682, -39007:35542, -39008:20525, -39009:21644, -39010:35441, -39011:27498, -39012:36036, -39013:33031, -39014:24785, -39015:26528, -39016:40434, -39017:20121, -39018:20120, -39019:39952, -39020:35435, -39021:34241, -39022:34152, -39023:26880, -39024:28286, -39025:30871, -39026:33109, -39071:24332, -39072:19984, -39073:19989, -39074:20010, -39075:20017, -39076:20022, -39077:20028, -39078:20031, -39079:20034, -39080:20054, -39081:20056, -39082:20098, -39083:20101, -39084:35947, -39085:20106, -39086:33298, -39087:24333, -39088:20110, -39089:20126, -39090:20127, -39091:20128, -39092:20130, -39093:20144, -39094:20147, -39095:20150, -39096:20174, -39097:20173, -39098:20164, -39099:20166, -39100:20162, -39101:20183, -39102:20190, -39103:20205, -39104:20191, -39105:20215, -39106:20233, -39107:20314, -39108:20272, -39109:20315, -39110:20317, -39111:20311, -39112:20295, -39113:20342, -39114:20360, -39115:20367, -39116:20376, -39117:20347, -39118:20329, -39119:20336, -39120:20369, -39121:20335, -39122:20358, -39123:20374, -39124:20760, -39125:20436, -39126:20447, -39127:20430, -39128:20440, -39129:20443, -39130:20433, -39131:20442, -39132:20432, -39133:20452, -39134:20453, -39135:20506, -39136:20520, -39137:20500, -39138:20522, -39139:20517, -39140:20485, -39141:20252, -39142:20470, -39143:20513, -39144:20521, -39145:20524, -39146:20478, -39147:20463, -39148:20497, -39149:20486, -39150:20547, -39151:20551, -39152:26371, -39153:20565, -39154:20560, -39155:20552, -39156:20570, -39157:20566, -39158:20588, -39159:20600, -39160:20608, -39161:20634, -39162:20613, -39163:20660, -39164:20658, -39232:20681, -39233:20682, -39234:20659, -39235:20674, -39236:20694, -39237:20702, -39238:20709, -39239:20717, -39240:20707, -39241:20718, -39242:20729, -39243:20725, -39244:20745, -39245:20737, -39246:20738, -39247:20758, -39248:20757, -39249:20756, -39250:20762, -39251:20769, -39252:20794, -39253:20791, -39254:20796, -39255:20795, -39256:20799, -39257:20800, -39258:20818, -39259:20812, -39260:20820, -39261:20834, -39262:31480, -39263:20841, -39264:20842, -39265:20846, -39266:20864, -39267:20866, -39268:22232, -39269:20876, -39270:20873, -39271:20879, -39272:20881, -39273:20883, -39274:20885, -39275:20886, -39276:20900, -39277:20902, -39278:20898, -39279:20905, -39280:20906, -39281:20907, -39282:20915, -39283:20913, -39284:20914, -39285:20912, -39286:20917, -39287:20925, -39288:20933, -39289:20937, -39290:20955, -39291:20960, -39292:34389, -39293:20969, -39294:20973, -39296:20976, -39297:20981, -39298:20990, -39299:20996, -39300:21003, -39301:21012, -39302:21006, -39303:21031, -39304:21034, -39305:21038, -39306:21043, -39307:21049, -39308:21071, -39309:21060, -39310:21067, -39311:21068, -39312:21086, -39313:21076, -39314:21098, -39315:21108, -39316:21097, -39317:21107, -39318:21119, -39319:21117, -39320:21133, -39321:21140, -39322:21138, -39323:21105, -39324:21128, -39325:21137, -39326:36776, -39327:36775, -39328:21164, -39329:21165, -39330:21180, -39331:21173, -39332:21185, -39333:21197, -39334:21207, -39335:21214, -39336:21219, -39337:21222, -39338:39149, -39339:21216, -39340:21235, -39341:21237, -39342:21240, -39343:21241, -39344:21254, -39345:21256, -39346:30008, -39347:21261, -39348:21264, -39349:21263, -39350:21269, -39351:21274, -39352:21283, -39353:21295, -39354:21297, -39355:21299, -39356:21304, -39357:21312, -39358:21318, -39359:21317, -39360:19991, -39361:21321, -39362:21325, -39363:20950, -39364:21342, -39365:21353, -39366:21358, -39367:22808, -39368:21371, -39369:21367, -39370:21378, -39371:21398, -39372:21408, -39373:21414, -39374:21413, -39375:21422, -39376:21424, -39377:21430, -39378:21443, -39379:31762, -39380:38617, -39381:21471, -39382:26364, -39383:29166, -39384:21486, -39385:21480, -39386:21485, -39387:21498, -39388:21505, -39389:21565, -39390:21568, -39391:21548, -39392:21549, -39393:21564, -39394:21550, -39395:21558, -39396:21545, -39397:21533, -39398:21582, -39399:21647, -39400:21621, -39401:21646, -39402:21599, -39403:21617, -39404:21623, -39405:21616, -39406:21650, -39407:21627, -39408:21632, -39409:21622, -39410:21636, -39411:21648, -39412:21638, -39413:21703, -39414:21666, -39415:21688, -39416:21669, -39417:21676, -39418:21700, -39419:21704, -39420:21672, -39488:21675, -39489:21698, -39490:21668, -39491:21694, -39492:21692, -39493:21720, -39494:21733, -39495:21734, -39496:21775, -39497:21780, -39498:21757, -39499:21742, -39500:21741, -39501:21754, -39502:21730, -39503:21817, -39504:21824, -39505:21859, -39506:21836, -39507:21806, -39508:21852, -39509:21829, -39510:21846, -39511:21847, -39512:21816, -39513:21811, -39514:21853, -39515:21913, -39516:21888, -39517:21679, -39518:21898, -39519:21919, -39520:21883, -39521:21886, -39522:21912, -39523:21918, -39524:21934, -39525:21884, -39526:21891, -39527:21929, -39528:21895, -39529:21928, -39530:21978, -39531:21957, -39532:21983, -39533:21956, -39534:21980, -39535:21988, -39536:21972, -39537:22036, -39538:22007, -39539:22038, -39540:22014, -39541:22013, -39542:22043, -39543:22009, -39544:22094, -39545:22096, -39546:29151, -39547:22068, -39548:22070, -39549:22066, -39550:22072, -39552:22123, -39553:22116, -39554:22063, -39555:22124, -39556:22122, -39557:22150, -39558:22144, -39559:22154, -39560:22176, -39561:22164, -39562:22159, -39563:22181, -39564:22190, -39565:22198, -39566:22196, -39567:22210, -39568:22204, -39569:22209, -39570:22211, -39571:22208, -39572:22216, -39573:22222, -39574:22225, -39575:22227, -39576:22231, -39577:22254, -39578:22265, -39579:22272, -39580:22271, -39581:22276, -39582:22281, -39583:22280, -39584:22283, -39585:22285, -39586:22291, -39587:22296, -39588:22294, -39589:21959, -39590:22300, -39591:22310, -39592:22327, -39593:22328, -39594:22350, -39595:22331, -39596:22336, -39597:22351, -39598:22377, -39599:22464, -39600:22408, -39601:22369, -39602:22399, -39603:22409, -39604:22419, -39605:22432, -39606:22451, -39607:22436, -39608:22442, -39609:22448, -39610:22467, -39611:22470, -39612:22484, -39613:22482, -39614:22483, -39615:22538, -39616:22486, -39617:22499, -39618:22539, -39619:22553, -39620:22557, -39621:22642, -39622:22561, -39623:22626, -39624:22603, -39625:22640, -39626:27584, -39627:22610, -39628:22589, -39629:22649, -39630:22661, -39631:22713, -39632:22687, -39633:22699, -39634:22714, -39635:22750, -39636:22715, -39637:22712, -39638:22702, -39639:22725, -39640:22739, -39641:22737, -39642:22743, -39643:22745, -39644:22744, -39645:22757, -39646:22748, -39647:22756, -39648:22751, -39649:22767, -39650:22778, -39651:22777, -39652:22779, -39653:22780, -39654:22781, -39655:22786, -39656:22794, -39657:22800, -39658:22811, -39659:26790, -39660:22821, -39661:22828, -39662:22829, -39663:22834, -39664:22840, -39665:22846, -39666:31442, -39667:22869, -39668:22864, -39669:22862, -39670:22874, -39671:22872, -39672:22882, -39673:22880, -39674:22887, -39675:22892, -39676:22889, -39744:22904, -39745:22913, -39746:22941, -39747:20318, -39748:20395, -39749:22947, -39750:22962, -39751:22982, -39752:23016, -39753:23004, -39754:22925, -39755:23001, -39756:23002, -39757:23077, -39758:23071, -39759:23057, -39760:23068, -39761:23049, -39762:23066, -39763:23104, -39764:23148, -39765:23113, -39766:23093, -39767:23094, -39768:23138, -39769:23146, -39770:23194, -39771:23228, -39772:23230, -39773:23243, -39774:23234, -39775:23229, -39776:23267, -39777:23255, -39778:23270, -39779:23273, -39780:23254, -39781:23290, -39782:23291, -39783:23308, -39784:23307, -39785:23318, -39786:23346, -39787:23248, -39788:23338, -39789:23350, -39790:23358, -39791:23363, -39792:23365, -39793:23360, -39794:23377, -39795:23381, -39796:23386, -39797:23387, -39798:23397, -39799:23401, -39800:23408, -39801:23411, -39802:23413, -39803:23416, -39804:25992, -39805:23418, -39806:23424, -39808:23427, -39809:23462, -39810:23480, -39811:23491, -39812:23495, -39813:23497, -39814:23508, -39815:23504, -39816:23524, -39817:23526, -39818:23522, -39819:23518, -39820:23525, -39821:23531, -39822:23536, -39823:23542, -39824:23539, -39825:23557, -39826:23559, -39827:23560, -39828:23565, -39829:23571, -39830:23584, -39831:23586, -39832:23592, -39833:23608, -39834:23609, -39835:23617, -39836:23622, -39837:23630, -39838:23635, -39839:23632, -39840:23631, -39841:23409, -39842:23660, -39843:23662, -39844:20066, -39845:23670, -39846:23673, -39847:23692, -39848:23697, -39849:23700, -39850:22939, -39851:23723, -39852:23739, -39853:23734, -39854:23740, -39855:23735, -39856:23749, -39857:23742, -39858:23751, -39859:23769, -39860:23785, -39861:23805, -39862:23802, -39863:23789, -39864:23948, -39865:23786, -39866:23819, -39867:23829, -39868:23831, -39869:23900, -39870:23839, -39871:23835, -39872:23825, -39873:23828, -39874:23842, -39875:23834, -39876:23833, -39877:23832, -39878:23884, -39879:23890, -39880:23886, -39881:23883, -39882:23916, -39883:23923, -39884:23926, -39885:23943, -39886:23940, -39887:23938, -39888:23970, -39889:23965, -39890:23980, -39891:23982, -39892:23997, -39893:23952, -39894:23991, -39895:23996, -39896:24009, -39897:24013, -39898:24019, -39899:24018, -39900:24022, -39901:24027, -39902:24043, -39903:24050, -39904:24053, -39905:24075, -39906:24090, -39907:24089, -39908:24081, -39909:24091, -39910:24118, -39911:24119, -39912:24132, -39913:24131, -39914:24128, -39915:24142, -39916:24151, -39917:24148, -39918:24159, -39919:24162, -39920:24164, -39921:24135, -39922:24181, -39923:24182, -39924:24186, -39925:40636, -39926:24191, -39927:24224, -39928:24257, -39929:24258, -39930:24264, -39931:24272, -39932:24271, -40000:24278, -40001:24291, -40002:24285, -40003:24282, -40004:24283, -40005:24290, -40006:24289, -40007:24296, -40008:24297, -40009:24300, -40010:24305, -40011:24307, -40012:24304, -40013:24308, -40014:24312, -40015:24318, -40016:24323, -40017:24329, -40018:24413, -40019:24412, -40020:24331, -40021:24337, -40022:24342, -40023:24361, -40024:24365, -40025:24376, -40026:24385, -40027:24392, -40028:24396, -40029:24398, -40030:24367, -40031:24401, -40032:24406, -40033:24407, -40034:24409, -40035:24417, -40036:24429, -40037:24435, -40038:24439, -40039:24451, -40040:24450, -40041:24447, -40042:24458, -40043:24456, -40044:24465, -40045:24455, -40046:24478, -40047:24473, -40048:24472, -40049:24480, -40050:24488, -40051:24493, -40052:24508, -40053:24534, -40054:24571, -40055:24548, -40056:24568, -40057:24561, -40058:24541, -40059:24755, -40060:24575, -40061:24609, -40062:24672, -40064:24601, -40065:24592, -40066:24617, -40067:24590, -40068:24625, -40069:24603, -40070:24597, -40071:24619, -40072:24614, -40073:24591, -40074:24634, -40075:24666, -40076:24641, -40077:24682, -40078:24695, -40079:24671, -40080:24650, -40081:24646, -40082:24653, -40083:24675, -40084:24643, -40085:24676, -40086:24642, -40087:24684, -40088:24683, -40089:24665, -40090:24705, -40091:24717, -40092:24807, -40093:24707, -40094:24730, -40095:24708, -40096:24731, -40097:24726, -40098:24727, -40099:24722, -40100:24743, -40101:24715, -40102:24801, -40103:24760, -40104:24800, -40105:24787, -40106:24756, -40107:24560, -40108:24765, -40109:24774, -40110:24757, -40111:24792, -40112:24909, -40113:24853, -40114:24838, -40115:24822, -40116:24823, -40117:24832, -40118:24820, -40119:24826, -40120:24835, -40121:24865, -40122:24827, -40123:24817, -40124:24845, -40125:24846, -40126:24903, -40127:24894, -40128:24872, -40129:24871, -40130:24906, -40131:24895, -40132:24892, -40133:24876, -40134:24884, -40135:24893, -40136:24898, -40137:24900, -40138:24947, -40139:24951, -40140:24920, -40141:24921, -40142:24922, -40143:24939, -40144:24948, -40145:24943, -40146:24933, -40147:24945, -40148:24927, -40149:24925, -40150:24915, -40151:24949, -40152:24985, -40153:24982, -40154:24967, -40155:25004, -40156:24980, -40157:24986, -40158:24970, -40159:24977, -40160:25003, -40161:25006, -40162:25036, -40163:25034, -40164:25033, -40165:25079, -40166:25032, -40167:25027, -40168:25030, -40169:25018, -40170:25035, -40171:32633, -40172:25037, -40173:25062, -40174:25059, -40175:25078, -40176:25082, -40177:25076, -40178:25087, -40179:25085, -40180:25084, -40181:25086, -40182:25088, -40183:25096, -40184:25097, -40185:25101, -40186:25100, -40187:25108, -40188:25115, -40256:25118, -40257:25121, -40258:25130, -40259:25134, -40260:25136, -40261:25138, -40262:25139, -40263:25153, -40264:25166, -40265:25182, -40266:25187, -40267:25179, -40268:25184, -40269:25192, -40270:25212, -40271:25218, -40272:25225, -40273:25214, -40274:25234, -40275:25235, -40276:25238, -40277:25300, -40278:25219, -40279:25236, -40280:25303, -40281:25297, -40282:25275, -40283:25295, -40284:25343, -40285:25286, -40286:25812, -40287:25288, -40288:25308, -40289:25292, -40290:25290, -40291:25282, -40292:25287, -40293:25243, -40294:25289, -40295:25356, -40296:25326, -40297:25329, -40298:25383, -40299:25346, -40300:25352, -40301:25327, -40302:25333, -40303:25424, -40304:25406, -40305:25421, -40306:25628, -40307:25423, -40308:25494, -40309:25486, -40310:25472, -40311:25515, -40312:25462, -40313:25507, -40314:25487, -40315:25481, -40316:25503, -40317:25525, -40318:25451, -40320:25449, -40321:25534, -40322:25577, -40323:25536, -40324:25542, -40325:25571, -40326:25545, -40327:25554, -40328:25590, -40329:25540, -40330:25622, -40331:25652, -40332:25606, -40333:25619, -40334:25638, -40335:25654, -40336:25885, -40337:25623, -40338:25640, -40339:25615, -40340:25703, -40341:25711, -40342:25718, -40343:25678, -40344:25898, -40345:25749, -40346:25747, -40347:25765, -40348:25769, -40349:25736, -40350:25788, -40351:25818, -40352:25810, -40353:25797, -40354:25799, -40355:25787, -40356:25816, -40357:25794, -40358:25841, -40359:25831, -40360:33289, -40361:25824, -40362:25825, -40363:25260, -40364:25827, -40365:25839, -40366:25900, -40367:25846, -40368:25844, -40369:25842, -40370:25850, -40371:25856, -40372:25853, -40373:25880, -40374:25884, -40375:25861, -40376:25892, -40377:25891, -40378:25899, -40379:25908, -40380:25909, -40381:25911, -40382:25910, -40383:25912, -40384:30027, -40385:25928, -40386:25942, -40387:25941, -40388:25933, -40389:25944, -40390:25950, -40391:25949, -40392:25970, -40393:25976, -40394:25986, -40395:25987, -40396:35722, -40397:26011, -40398:26015, -40399:26027, -40400:26039, -40401:26051, -40402:26054, -40403:26049, -40404:26052, -40405:26060, -40406:26066, -40407:26075, -40408:26073, -40409:26080, -40410:26081, -40411:26097, -40412:26482, -40413:26122, -40414:26115, -40415:26107, -40416:26483, -40417:26165, -40418:26166, -40419:26164, -40420:26140, -40421:26191, -40422:26180, -40423:26185, -40424:26177, -40425:26206, -40426:26205, -40427:26212, -40428:26215, -40429:26216, -40430:26207, -40431:26210, -40432:26224, -40433:26243, -40434:26248, -40435:26254, -40436:26249, -40437:26244, -40438:26264, -40439:26269, -40440:26305, -40441:26297, -40442:26313, -40443:26302, -40444:26300, -40512:26308, -40513:26296, -40514:26326, -40515:26330, -40516:26336, -40517:26175, -40518:26342, -40519:26345, -40520:26352, -40521:26357, -40522:26359, -40523:26383, -40524:26390, -40525:26398, -40526:26406, -40527:26407, -40528:38712, -40529:26414, -40530:26431, -40531:26422, -40532:26433, -40533:26424, -40534:26423, -40535:26438, -40536:26462, -40537:26464, -40538:26457, -40539:26467, -40540:26468, -40541:26505, -40542:26480, -40543:26537, -40544:26492, -40545:26474, -40546:26508, -40547:26507, -40548:26534, -40549:26529, -40550:26501, -40551:26551, -40552:26607, -40553:26548, -40554:26604, -40555:26547, -40556:26601, -40557:26552, -40558:26596, -40559:26590, -40560:26589, -40561:26594, -40562:26606, -40563:26553, -40564:26574, -40565:26566, -40566:26599, -40567:27292, -40568:26654, -40569:26694, -40570:26665, -40571:26688, -40572:26701, -40573:26674, -40574:26702, -40576:26803, -40577:26667, -40578:26713, -40579:26723, -40580:26743, -40581:26751, -40582:26783, -40583:26767, -40584:26797, -40585:26772, -40586:26781, -40587:26779, -40588:26755, -40589:27310, -40590:26809, -40591:26740, -40592:26805, -40593:26784, -40594:26810, -40595:26895, -40596:26765, -40597:26750, -40598:26881, -40599:26826, -40600:26888, -40601:26840, -40602:26914, -40603:26918, -40604:26849, -40605:26892, -40606:26829, -40607:26836, -40608:26855, -40609:26837, -40610:26934, -40611:26898, -40612:26884, -40613:26839, -40614:26851, -40615:26917, -40616:26873, -40617:26848, -40618:26863, -40619:26920, -40620:26922, -40621:26906, -40622:26915, -40623:26913, -40624:26822, -40625:27001, -40626:26999, -40627:26972, -40628:27000, -40629:26987, -40630:26964, -40631:27006, -40632:26990, -40633:26937, -40634:26996, -40635:26941, -40636:26969, -40637:26928, -40638:26977, -40639:26974, -40640:26973, -40641:27009, -40642:26986, -40643:27058, -40644:27054, -40645:27088, -40646:27071, -40647:27073, -40648:27091, -40649:27070, -40650:27086, -40651:23528, -40652:27082, -40653:27101, -40654:27067, -40655:27075, -40656:27047, -40657:27182, -40658:27025, -40659:27040, -40660:27036, -40661:27029, -40662:27060, -40663:27102, -40664:27112, -40665:27138, -40666:27163, -40667:27135, -40668:27402, -40669:27129, -40670:27122, -40671:27111, -40672:27141, -40673:27057, -40674:27166, -40675:27117, -40676:27156, -40677:27115, -40678:27146, -40679:27154, -40680:27329, -40681:27171, -40682:27155, -40683:27204, -40684:27148, -40685:27250, -40686:27190, -40687:27256, -40688:27207, -40689:27234, -40690:27225, -40691:27238, -40692:27208, -40693:27192, -40694:27170, -40695:27280, -40696:27277, -40697:27296, -40698:27268, -40699:27298, -40700:27299, -40768:27287, -40769:34327, -40770:27323, -40771:27331, -40772:27330, -40773:27320, -40774:27315, -40775:27308, -40776:27358, -40777:27345, -40778:27359, -40779:27306, -40780:27354, -40781:27370, -40782:27387, -40783:27397, -40784:34326, -40785:27386, -40786:27410, -40787:27414, -40788:39729, -40789:27423, -40790:27448, -40791:27447, -40792:30428, -40793:27449, -40794:39150, -40795:27463, -40796:27459, -40797:27465, -40798:27472, -40799:27481, -40800:27476, -40801:27483, -40802:27487, -40803:27489, -40804:27512, -40805:27513, -40806:27519, -40807:27520, -40808:27524, -40809:27523, -40810:27533, -40811:27544, -40812:27541, -40813:27550, -40814:27556, -40815:27562, -40816:27563, -40817:27567, -40818:27570, -40819:27569, -40820:27571, -40821:27575, -40822:27580, -40823:27590, -40824:27595, -40825:27603, -40826:27615, -40827:27628, -40828:27627, -40829:27635, -40830:27631, -40832:40638, -40833:27656, -40834:27667, -40835:27668, -40836:27675, -40837:27684, -40838:27683, -40839:27742, -40840:27733, -40841:27746, -40842:27754, -40843:27778, -40844:27789, -40845:27802, -40846:27777, -40847:27803, -40848:27774, -40849:27752, -40850:27763, -40851:27794, -40852:27792, -40853:27844, -40854:27889, -40855:27859, -40856:27837, -40857:27863, -40858:27845, -40859:27869, -40860:27822, -40861:27825, -40862:27838, -40863:27834, -40864:27867, -40865:27887, -40866:27865, -40867:27882, -40868:27935, -40869:34893, -40870:27958, -40871:27947, -40872:27965, -40873:27960, -40874:27929, -40875:27957, -40876:27955, -40877:27922, -40878:27916, -40879:28003, -40880:28051, -40881:28004, -40882:27994, -40883:28025, -40884:27993, -40885:28046, -40886:28053, -40887:28644, -40888:28037, -40889:28153, -40890:28181, -40891:28170, -40892:28085, -40893:28103, -40894:28134, -40895:28088, -40896:28102, -40897:28140, -40898:28126, -40899:28108, -40900:28136, -40901:28114, -40902:28101, -40903:28154, -40904:28121, -40905:28132, -40906:28117, -40907:28138, -40908:28142, -40909:28205, -40910:28270, -40911:28206, -40912:28185, -40913:28274, -40914:28255, -40915:28222, -40916:28195, -40917:28267, -40918:28203, -40919:28278, -40920:28237, -40921:28191, -40922:28227, -40923:28218, -40924:28238, -40925:28196, -40926:28415, -40927:28189, -40928:28216, -40929:28290, -40930:28330, -40931:28312, -40932:28361, -40933:28343, -40934:28371, -40935:28349, -40936:28335, -40937:28356, -40938:28338, -40939:28372, -40940:28373, -40941:28303, -40942:28325, -40943:28354, -40944:28319, -40945:28481, -40946:28433, -40947:28748, -40948:28396, -40949:28408, -40950:28414, -40951:28479, -40952:28402, -40953:28465, -40954:28399, -40955:28466, -40956:28364, -57408:28478, -57409:28435, -57410:28407, -57411:28550, -57412:28538, -57413:28536, -57414:28545, -57415:28544, -57416:28527, -57417:28507, -57418:28659, -57419:28525, -57420:28546, -57421:28540, -57422:28504, -57423:28558, -57424:28561, -57425:28610, -57426:28518, -57427:28595, -57428:28579, -57429:28577, -57430:28580, -57431:28601, -57432:28614, -57433:28586, -57434:28639, -57435:28629, -57436:28652, -57437:28628, -57438:28632, -57439:28657, -57440:28654, -57441:28635, -57442:28681, -57443:28683, -57444:28666, -57445:28689, -57446:28673, -57447:28687, -57448:28670, -57449:28699, -57450:28698, -57451:28532, -57452:28701, -57453:28696, -57454:28703, -57455:28720, -57456:28734, -57457:28722, -57458:28753, -57459:28771, -57460:28825, -57461:28818, -57462:28847, -57463:28913, -57464:28844, -57465:28856, -57466:28851, -57467:28846, -57468:28895, -57469:28875, -57470:28893, -57472:28889, -57473:28937, -57474:28925, -57475:28956, -57476:28953, -57477:29029, -57478:29013, -57479:29064, -57480:29030, -57481:29026, -57482:29004, -57483:29014, -57484:29036, -57485:29071, -57486:29179, -57487:29060, -57488:29077, -57489:29096, -57490:29100, -57491:29143, -57492:29113, -57493:29118, -57494:29138, -57495:29129, -57496:29140, -57497:29134, -57498:29152, -57499:29164, -57500:29159, -57501:29173, -57502:29180, -57503:29177, -57504:29183, -57505:29197, -57506:29200, -57507:29211, -57508:29224, -57509:29229, -57510:29228, -57511:29232, -57512:29234, -57513:29243, -57514:29244, -57515:29247, -57516:29248, -57517:29254, -57518:29259, -57519:29272, -57520:29300, -57521:29310, -57522:29314, -57523:29313, -57524:29319, -57525:29330, -57526:29334, -57527:29346, -57528:29351, -57529:29369, -57530:29362, -57531:29379, -57532:29382, -57533:29380, -57534:29390, -57535:29394, -57536:29410, -57537:29408, -57538:29409, -57539:29433, -57540:29431, -57541:20495, -57542:29463, -57543:29450, -57544:29468, -57545:29462, -57546:29469, -57547:29492, -57548:29487, -57549:29481, -57550:29477, -57551:29502, -57552:29518, -57553:29519, -57554:40664, -57555:29527, -57556:29546, -57557:29544, -57558:29552, -57559:29560, -57560:29557, -57561:29563, -57562:29562, -57563:29640, -57564:29619, -57565:29646, -57566:29627, -57567:29632, -57568:29669, -57569:29678, -57570:29662, -57571:29858, -57572:29701, -57573:29807, -57574:29733, -57575:29688, -57576:29746, -57577:29754, -57578:29781, -57579:29759, -57580:29791, -57581:29785, -57582:29761, -57583:29788, -57584:29801, -57585:29808, -57586:29795, -57587:29802, -57588:29814, -57589:29822, -57590:29835, -57591:29854, -57592:29863, -57593:29898, -57594:29903, -57595:29908, -57596:29681, -57664:29920, -57665:29923, -57666:29927, -57667:29929, -57668:29934, -57669:29938, -57670:29936, -57671:29937, -57672:29944, -57673:29943, -57674:29956, -57675:29955, -57676:29957, -57677:29964, -57678:29966, -57679:29965, -57680:29973, -57681:29971, -57682:29982, -57683:29990, -57684:29996, -57685:30012, -57686:30020, -57687:30029, -57688:30026, -57689:30025, -57690:30043, -57691:30022, -57692:30042, -57693:30057, -57694:30052, -57695:30055, -57696:30059, -57697:30061, -57698:30072, -57699:30070, -57700:30086, -57701:30087, -57702:30068, -57703:30090, -57704:30089, -57705:30082, -57706:30100, -57707:30106, -57708:30109, -57709:30117, -57710:30115, -57711:30146, -57712:30131, -57713:30147, -57714:30133, -57715:30141, -57716:30136, -57717:30140, -57718:30129, -57719:30157, -57720:30154, -57721:30162, -57722:30169, -57723:30179, -57724:30174, -57725:30206, -57726:30207, -57728:30204, -57729:30209, -57730:30192, -57731:30202, -57732:30194, -57733:30195, -57734:30219, -57735:30221, -57736:30217, -57737:30239, -57738:30247, -57739:30240, -57740:30241, -57741:30242, -57742:30244, -57743:30260, -57744:30256, -57745:30267, -57746:30279, -57747:30280, -57748:30278, -57749:30300, -57750:30296, -57751:30305, -57752:30306, -57753:30312, -57754:30313, -57755:30314, -57756:30311, -57757:30316, -57758:30320, -57759:30322, -57760:30326, -57761:30328, -57762:30332, -57763:30336, -57764:30339, -57765:30344, -57766:30347, -57767:30350, -57768:30358, -57769:30355, -57770:30361, -57771:30362, -57772:30384, -57773:30388, -57774:30392, -57775:30393, -57776:30394, -57777:30402, -57778:30413, -57779:30422, -57780:30418, -57781:30430, -57782:30433, -57783:30437, -57784:30439, -57785:30442, -57786:34351, -57787:30459, -57788:30472, -57789:30471, -57790:30468, -57791:30505, -57792:30500, -57793:30494, -57794:30501, -57795:30502, -57796:30491, -57797:30519, -57798:30520, -57799:30535, -57800:30554, -57801:30568, -57802:30571, -57803:30555, -57804:30565, -57805:30591, -57806:30590, -57807:30585, -57808:30606, -57809:30603, -57810:30609, -57811:30624, -57812:30622, -57813:30640, -57814:30646, -57815:30649, -57816:30655, -57817:30652, -57818:30653, -57819:30651, -57820:30663, -57821:30669, -57822:30679, -57823:30682, -57824:30684, -57825:30691, -57826:30702, -57827:30716, -57828:30732, -57829:30738, -57830:31014, -57831:30752, -57832:31018, -57833:30789, -57834:30862, -57835:30836, -57836:30854, -57837:30844, -57838:30874, -57839:30860, -57840:30883, -57841:30901, -57842:30890, -57843:30895, -57844:30929, -57845:30918, -57846:30923, -57847:30932, -57848:30910, -57849:30908, -57850:30917, -57851:30922, -57852:30956, -57920:30951, -57921:30938, -57922:30973, -57923:30964, -57924:30983, -57925:30994, -57926:30993, -57927:31001, -57928:31020, -57929:31019, -57930:31040, -57931:31072, -57932:31063, -57933:31071, -57934:31066, -57935:31061, -57936:31059, -57937:31098, -57938:31103, -57939:31114, -57940:31133, -57941:31143, -57942:40779, -57943:31146, -57944:31150, -57945:31155, -57946:31161, -57947:31162, -57948:31177, -57949:31189, -57950:31207, -57951:31212, -57952:31201, -57953:31203, -57954:31240, -57955:31245, -57956:31256, -57957:31257, -57958:31264, -57959:31263, -57960:31104, -57961:31281, -57962:31291, -57963:31294, -57964:31287, -57965:31299, -57966:31319, -57967:31305, -57968:31329, -57969:31330, -57970:31337, -57971:40861, -57972:31344, -57973:31353, -57974:31357, -57975:31368, -57976:31383, -57977:31381, -57978:31384, -57979:31382, -57980:31401, -57981:31432, -57982:31408, -57984:31414, -57985:31429, -57986:31428, -57987:31423, -57988:36995, -57989:31431, -57990:31434, -57991:31437, -57992:31439, -57993:31445, -57994:31443, -57995:31449, -57996:31450, -57997:31453, -57998:31457, -57999:31458, -58000:31462, -58001:31469, -58002:31472, -58003:31490, -58004:31503, -58005:31498, -58006:31494, -58007:31539, -58008:31512, -58009:31513, -58010:31518, -58011:31541, -58012:31528, -58013:31542, -58014:31568, -58015:31610, -58016:31492, -58017:31565, -58018:31499, -58019:31564, -58020:31557, -58021:31605, -58022:31589, -58023:31604, -58024:31591, -58025:31600, -58026:31601, -58027:31596, -58028:31598, -58029:31645, -58030:31640, -58031:31647, -58032:31629, -58033:31644, -58034:31642, -58035:31627, -58036:31634, -58037:31631, -58038:31581, -58039:31641, -58040:31691, -58041:31681, -58042:31692, -58043:31695, -58044:31668, -58045:31686, -58046:31709, -58047:31721, -58048:31761, -58049:31764, -58050:31718, -58051:31717, -58052:31840, -58053:31744, -58054:31751, -58055:31763, -58056:31731, -58057:31735, -58058:31767, -58059:31757, -58060:31734, -58061:31779, -58062:31783, -58063:31786, -58064:31775, -58065:31799, -58066:31787, -58067:31805, -58068:31820, -58069:31811, -58070:31828, -58071:31823, -58072:31808, -58073:31824, -58074:31832, -58075:31839, -58076:31844, -58077:31830, -58078:31845, -58079:31852, -58080:31861, -58081:31875, -58082:31888, -58083:31908, -58084:31917, -58085:31906, -58086:31915, -58087:31905, -58088:31912, -58089:31923, -58090:31922, -58091:31921, -58092:31918, -58093:31929, -58094:31933, -58095:31936, -58096:31941, -58097:31938, -58098:31960, -58099:31954, -58100:31964, -58101:31970, -58102:39739, -58103:31983, -58104:31986, -58105:31988, -58106:31990, -58107:31994, -58108:32006, -58176:32002, -58177:32028, -58178:32021, -58179:32010, -58180:32069, -58181:32075, -58182:32046, -58183:32050, -58184:32063, -58185:32053, -58186:32070, -58187:32115, -58188:32086, -58189:32078, -58190:32114, -58191:32104, -58192:32110, -58193:32079, -58194:32099, -58195:32147, -58196:32137, -58197:32091, -58198:32143, -58199:32125, -58200:32155, -58201:32186, -58202:32174, -58203:32163, -58204:32181, -58205:32199, -58206:32189, -58207:32171, -58208:32317, -58209:32162, -58210:32175, -58211:32220, -58212:32184, -58213:32159, -58214:32176, -58215:32216, -58216:32221, -58217:32228, -58218:32222, -58219:32251, -58220:32242, -58221:32225, -58222:32261, -58223:32266, -58224:32291, -58225:32289, -58226:32274, -58227:32305, -58228:32287, -58229:32265, -58230:32267, -58231:32290, -58232:32326, -58233:32358, -58234:32315, -58235:32309, -58236:32313, -58237:32323, -58238:32311, -58240:32306, -58241:32314, -58242:32359, -58243:32349, -58244:32342, -58245:32350, -58246:32345, -58247:32346, -58248:32377, -58249:32362, -58250:32361, -58251:32380, -58252:32379, -58253:32387, -58254:32213, -58255:32381, -58256:36782, -58257:32383, -58258:32392, -58259:32393, -58260:32396, -58261:32402, -58262:32400, -58263:32403, -58264:32404, -58265:32406, -58266:32398, -58267:32411, -58268:32412, -58269:32568, -58270:32570, -58271:32581, -58272:32588, -58273:32589, -58274:32590, -58275:32592, -58276:32593, -58277:32597, -58278:32596, -58279:32600, -58280:32607, -58281:32608, -58282:32616, -58283:32617, -58284:32615, -58285:32632, -58286:32642, -58287:32646, -58288:32643, -58289:32648, -58290:32647, -58291:32652, -58292:32660, -58293:32670, -58294:32669, -58295:32666, -58296:32675, -58297:32687, -58298:32690, -58299:32697, -58300:32686, -58301:32694, -58302:32696, -58303:35697, -58304:32709, -58305:32710, -58306:32714, -58307:32725, -58308:32724, -58309:32737, -58310:32742, -58311:32745, -58312:32755, -58313:32761, -58314:39132, -58315:32774, -58316:32772, -58317:32779, -58318:32786, -58319:32792, -58320:32793, -58321:32796, -58322:32801, -58323:32808, -58324:32831, -58325:32827, -58326:32842, -58327:32838, -58328:32850, -58329:32856, -58330:32858, -58331:32863, -58332:32866, -58333:32872, -58334:32883, -58335:32882, -58336:32880, -58337:32886, -58338:32889, -58339:32893, -58340:32895, -58341:32900, -58342:32902, -58343:32901, -58344:32923, -58345:32915, -58346:32922, -58347:32941, -58348:20880, -58349:32940, -58350:32987, -58351:32997, -58352:32985, -58353:32989, -58354:32964, -58355:32986, -58356:32982, -58357:33033, -58358:33007, -58359:33009, -58360:33051, -58361:33065, -58362:33059, -58363:33071, -58364:33099, -58432:38539, -58433:33094, -58434:33086, -58435:33107, -58436:33105, -58437:33020, -58438:33137, -58439:33134, -58440:33125, -58441:33126, -58442:33140, -58443:33155, -58444:33160, -58445:33162, -58446:33152, -58447:33154, -58448:33184, -58449:33173, -58450:33188, -58451:33187, -58452:33119, -58453:33171, -58454:33193, -58455:33200, -58456:33205, -58457:33214, -58458:33208, -58459:33213, -58460:33216, -58461:33218, -58462:33210, -58463:33225, -58464:33229, -58465:33233, -58466:33241, -58467:33240, -58468:33224, -58469:33242, -58470:33247, -58471:33248, -58472:33255, -58473:33274, -58474:33275, -58475:33278, -58476:33281, -58477:33282, -58478:33285, -58479:33287, -58480:33290, -58481:33293, -58482:33296, -58483:33302, -58484:33321, -58485:33323, -58486:33336, -58487:33331, -58488:33344, -58489:33369, -58490:33368, -58491:33373, -58492:33370, -58493:33375, -58494:33380, -58496:33378, -58497:33384, -58498:33386, -58499:33387, -58500:33326, -58501:33393, -58502:33399, -58503:33400, -58504:33406, -58505:33421, -58506:33426, -58507:33451, -58508:33439, -58509:33467, -58510:33452, -58511:33505, -58512:33507, -58513:33503, -58514:33490, -58515:33524, -58516:33523, -58517:33530, -58518:33683, -58519:33539, -58520:33531, -58521:33529, -58522:33502, -58523:33542, -58524:33500, -58525:33545, -58526:33497, -58527:33589, -58528:33588, -58529:33558, -58530:33586, -58531:33585, -58532:33600, -58533:33593, -58534:33616, -58535:33605, -58536:33583, -58537:33579, -58538:33559, -58539:33560, -58540:33669, -58541:33690, -58542:33706, -58543:33695, -58544:33698, -58545:33686, -58546:33571, -58547:33678, -58548:33671, -58549:33674, -58550:33660, -58551:33717, -58552:33651, -58553:33653, -58554:33696, -58555:33673, -58556:33704, -58557:33780, -58558:33811, -58559:33771, -58560:33742, -58561:33789, -58562:33795, -58563:33752, -58564:33803, -58565:33729, -58566:33783, -58567:33799, -58568:33760, -58569:33778, -58570:33805, -58571:33826, -58572:33824, -58573:33725, -58574:33848, -58575:34054, -58576:33787, -58577:33901, -58578:33834, -58579:33852, -58580:34138, -58581:33924, -58582:33911, -58583:33899, -58584:33965, -58585:33902, -58586:33922, -58587:33897, -58588:33862, -58589:33836, -58590:33903, -58591:33913, -58592:33845, -58593:33994, -58594:33890, -58595:33977, -58596:33983, -58597:33951, -58598:34009, -58599:33997, -58600:33979, -58601:34010, -58602:34000, -58603:33985, -58604:33990, -58605:34006, -58606:33953, -58607:34081, -58608:34047, -58609:34036, -58610:34071, -58611:34072, -58612:34092, -58613:34079, -58614:34069, -58615:34068, -58616:34044, -58617:34112, -58618:34147, -58619:34136, -58620:34120, -58688:34113, -58689:34306, -58690:34123, -58691:34133, -58692:34176, -58693:34212, -58694:34184, -58695:34193, -58696:34186, -58697:34216, -58698:34157, -58699:34196, -58700:34203, -58701:34282, -58702:34183, -58703:34204, -58704:34167, -58705:34174, -58706:34192, -58707:34249, -58708:34234, -58709:34255, -58710:34233, -58711:34256, -58712:34261, -58713:34269, -58714:34277, -58715:34268, -58716:34297, -58717:34314, -58718:34323, -58719:34315, -58720:34302, -58721:34298, -58722:34310, -58723:34338, -58724:34330, -58725:34352, -58726:34367, -58727:34381, -58728:20053, -58729:34388, -58730:34399, -58731:34407, -58732:34417, -58733:34451, -58734:34467, -58735:34473, -58736:34474, -58737:34443, -58738:34444, -58739:34486, -58740:34479, -58741:34500, -58742:34502, -58743:34480, -58744:34505, -58745:34851, -58746:34475, -58747:34516, -58748:34526, -58749:34537, -58750:34540, -58752:34527, -58753:34523, -58754:34543, -58755:34578, -58756:34566, -58757:34568, -58758:34560, -58759:34563, -58760:34555, -58761:34577, -58762:34569, -58763:34573, -58764:34553, -58765:34570, -58766:34612, -58767:34623, -58768:34615, -58769:34619, -58770:34597, -58771:34601, -58772:34586, -58773:34656, -58774:34655, -58775:34680, -58776:34636, -58777:34638, -58778:34676, -58779:34647, -58780:34664, -58781:34670, -58782:34649, -58783:34643, -58784:34659, -58785:34666, -58786:34821, -58787:34722, -58788:34719, -58789:34690, -58790:34735, -58791:34763, -58792:34749, -58793:34752, -58794:34768, -58795:38614, -58796:34731, -58797:34756, -58798:34739, -58799:34759, -58800:34758, -58801:34747, -58802:34799, -58803:34802, -58804:34784, -58805:34831, -58806:34829, -58807:34814, -58808:34806, -58809:34807, -58810:34830, -58811:34770, -58812:34833, -58813:34838, -58814:34837, -58815:34850, -58816:34849, -58817:34865, -58818:34870, -58819:34873, -58820:34855, -58821:34875, -58822:34884, -58823:34882, -58824:34898, -58825:34905, -58826:34910, -58827:34914, -58828:34923, -58829:34945, -58830:34942, -58831:34974, -58832:34933, -58833:34941, -58834:34997, -58835:34930, -58836:34946, -58837:34967, -58838:34962, -58839:34990, -58840:34969, -58841:34978, -58842:34957, -58843:34980, -58844:34992, -58845:35007, -58846:34993, -58847:35011, -58848:35012, -58849:35028, -58850:35032, -58851:35033, -58852:35037, -58853:35065, -58854:35074, -58855:35068, -58856:35060, -58857:35048, -58858:35058, -58859:35076, -58860:35084, -58861:35082, -58862:35091, -58863:35139, -58864:35102, -58865:35109, -58866:35114, -58867:35115, -58868:35137, -58869:35140, -58870:35131, -58871:35126, -58872:35128, -58873:35148, -58874:35101, -58875:35168, -58876:35166, -58944:35174, -58945:35172, -58946:35181, -58947:35178, -58948:35183, -58949:35188, -58950:35191, -58951:35198, -58952:35203, -58953:35208, -58954:35210, -58955:35219, -58956:35224, -58957:35233, -58958:35241, -58959:35238, -58960:35244, -58961:35247, -58962:35250, -58963:35258, -58964:35261, -58965:35263, -58966:35264, -58967:35290, -58968:35292, -58969:35293, -58970:35303, -58971:35316, -58972:35320, -58973:35331, -58974:35350, -58975:35344, -58976:35340, -58977:35355, -58978:35357, -58979:35365, -58980:35382, -58981:35393, -58982:35419, -58983:35410, -58984:35398, -58985:35400, -58986:35452, -58987:35437, -58988:35436, -58989:35426, -58990:35461, -58991:35458, -58992:35460, -58993:35496, -58994:35489, -58995:35473, -58996:35493, -58997:35494, -58998:35482, -58999:35491, -59000:35524, -59001:35533, -59002:35522, -59003:35546, -59004:35563, -59005:35571, -59006:35559, -59008:35556, -59009:35569, -59010:35604, -59011:35552, -59012:35554, -59013:35575, -59014:35550, -59015:35547, -59016:35596, -59017:35591, -59018:35610, -59019:35553, -59020:35606, -59021:35600, -59022:35607, -59023:35616, -59024:35635, -59025:38827, -59026:35622, -59027:35627, -59028:35646, -59029:35624, -59030:35649, -59031:35660, -59032:35663, -59033:35662, -59034:35657, -59035:35670, -59036:35675, -59037:35674, -59038:35691, -59039:35679, -59040:35692, -59041:35695, -59042:35700, -59043:35709, -59044:35712, -59045:35724, -59046:35726, -59047:35730, -59048:35731, -59049:35734, -59050:35737, -59051:35738, -59052:35898, -59053:35905, -59054:35903, -59055:35912, -59056:35916, -59057:35918, -59058:35920, -59059:35925, -59060:35938, -59061:35948, -59062:35960, -59063:35962, -59064:35970, -59065:35977, -59066:35973, -59067:35978, -59068:35981, -59069:35982, -59070:35988, -59071:35964, -59072:35992, -59073:25117, -59074:36013, -59075:36010, -59076:36029, -59077:36018, -59078:36019, -59079:36014, -59080:36022, -59081:36040, -59082:36033, -59083:36068, -59084:36067, -59085:36058, -59086:36093, -59087:36090, -59088:36091, -59089:36100, -59090:36101, -59091:36106, -59092:36103, -59093:36111, -59094:36109, -59095:36112, -59096:40782, -59097:36115, -59098:36045, -59099:36116, -59100:36118, -59101:36199, -59102:36205, -59103:36209, -59104:36211, -59105:36225, -59106:36249, -59107:36290, -59108:36286, -59109:36282, -59110:36303, -59111:36314, -59112:36310, -59113:36300, -59114:36315, -59115:36299, -59116:36330, -59117:36331, -59118:36319, -59119:36323, -59120:36348, -59121:36360, -59122:36361, -59123:36351, -59124:36381, -59125:36382, -59126:36368, -59127:36383, -59128:36418, -59129:36405, -59130:36400, -59131:36404, -59132:36426, -59200:36423, -59201:36425, -59202:36428, -59203:36432, -59204:36424, -59205:36441, -59206:36452, -59207:36448, -59208:36394, -59209:36451, -59210:36437, -59211:36470, -59212:36466, -59213:36476, -59214:36481, -59215:36487, -59216:36485, -59217:36484, -59218:36491, -59219:36490, -59220:36499, -59221:36497, -59222:36500, -59223:36505, -59224:36522, -59225:36513, -59226:36524, -59227:36528, -59228:36550, -59229:36529, -59230:36542, -59231:36549, -59232:36552, -59233:36555, -59234:36571, -59235:36579, -59236:36604, -59237:36603, -59238:36587, -59239:36606, -59240:36618, -59241:36613, -59242:36629, -59243:36626, -59244:36633, -59245:36627, -59246:36636, -59247:36639, -59248:36635, -59249:36620, -59250:36646, -59251:36659, -59252:36667, -59253:36665, -59254:36677, -59255:36674, -59256:36670, -59257:36684, -59258:36681, -59259:36678, -59260:36686, -59261:36695, -59262:36700, -59264:36706, -59265:36707, -59266:36708, -59267:36764, -59268:36767, -59269:36771, -59270:36781, -59271:36783, -59272:36791, -59273:36826, -59274:36837, -59275:36834, -59276:36842, -59277:36847, -59278:36999, -59279:36852, -59280:36869, -59281:36857, -59282:36858, -59283:36881, -59284:36885, -59285:36897, -59286:36877, -59287:36894, -59288:36886, -59289:36875, -59290:36903, -59291:36918, -59292:36917, -59293:36921, -59294:36856, -59295:36943, -59296:36944, -59297:36945, -59298:36946, -59299:36878, -59300:36937, -59301:36926, -59302:36950, -59303:36952, -59304:36958, -59305:36968, -59306:36975, -59307:36982, -59308:38568, -59309:36978, -59310:36994, -59311:36989, -59312:36993, -59313:36992, -59314:37002, -59315:37001, -59316:37007, -59317:37032, -59318:37039, -59319:37041, -59320:37045, -59321:37090, -59322:37092, -59323:25160, -59324:37083, -59325:37122, -59326:37138, -59327:37145, -59328:37170, -59329:37168, -59330:37194, -59331:37206, -59332:37208, -59333:37219, -59334:37221, -59335:37225, -59336:37235, -59337:37234, -59338:37259, -59339:37257, -59340:37250, -59341:37282, -59342:37291, -59343:37295, -59344:37290, -59345:37301, -59346:37300, -59347:37306, -59348:37312, -59349:37313, -59350:37321, -59351:37323, -59352:37328, -59353:37334, -59354:37343, -59355:37345, -59356:37339, -59357:37372, -59358:37365, -59359:37366, -59360:37406, -59361:37375, -59362:37396, -59363:37420, -59364:37397, -59365:37393, -59366:37470, -59367:37463, -59368:37445, -59369:37449, -59370:37476, -59371:37448, -59372:37525, -59373:37439, -59374:37451, -59375:37456, -59376:37532, -59377:37526, -59378:37523, -59379:37531, -59380:37466, -59381:37583, -59382:37561, -59383:37559, -59384:37609, -59385:37647, -59386:37626, -59387:37700, -59388:37678, -59456:37657, -59457:37666, -59458:37658, -59459:37667, -59460:37690, -59461:37685, -59462:37691, -59463:37724, -59464:37728, -59465:37756, -59466:37742, -59467:37718, -59468:37808, -59469:37804, -59470:37805, -59471:37780, -59472:37817, -59473:37846, -59474:37847, -59475:37864, -59476:37861, -59477:37848, -59478:37827, -59479:37853, -59480:37840, -59481:37832, -59482:37860, -59483:37914, -59484:37908, -59485:37907, -59486:37891, -59487:37895, -59488:37904, -59489:37942, -59490:37931, -59491:37941, -59492:37921, -59493:37946, -59494:37953, -59495:37970, -59496:37956, -59497:37979, -59498:37984, -59499:37986, -59500:37982, -59501:37994, -59502:37417, -59503:38000, -59504:38005, -59505:38007, -59506:38013, -59507:37978, -59508:38012, -59509:38014, -59510:38017, -59511:38015, -59512:38274, -59513:38279, -59514:38282, -59515:38292, -59516:38294, -59517:38296, -59518:38297, -59520:38304, -59521:38312, -59522:38311, -59523:38317, -59524:38332, -59525:38331, -59526:38329, -59527:38334, -59528:38346, -59529:28662, -59530:38339, -59531:38349, -59532:38348, -59533:38357, -59534:38356, -59535:38358, -59536:38364, -59537:38369, -59538:38373, -59539:38370, -59540:38433, -59541:38440, -59542:38446, -59543:38447, -59544:38466, -59545:38476, -59546:38479, -59547:38475, -59548:38519, -59549:38492, -59550:38494, -59551:38493, -59552:38495, -59553:38502, -59554:38514, -59555:38508, -59556:38541, -59557:38552, -59558:38549, -59559:38551, -59560:38570, -59561:38567, -59562:38577, -59563:38578, -59564:38576, -59565:38580, -59566:38582, -59567:38584, -59568:38585, -59569:38606, -59570:38603, -59571:38601, -59572:38605, -59573:35149, -59574:38620, -59575:38669, -59576:38613, -59577:38649, -59578:38660, -59579:38662, -59580:38664, -59581:38675, -59582:38670, -59583:38673, -59584:38671, -59585:38678, -59586:38681, -59587:38692, -59588:38698, -59589:38704, -59590:38713, -59591:38717, -59592:38718, -59593:38724, -59594:38726, -59595:38728, -59596:38722, -59597:38729, -59598:38748, -59599:38752, -59600:38756, -59601:38758, -59602:38760, -59603:21202, -59604:38763, -59605:38769, -59606:38777, -59607:38789, -59608:38780, -59609:38785, -59610:38778, -59611:38790, -59612:38795, -59613:38799, -59614:38800, -59615:38812, -59616:38824, -59617:38822, -59618:38819, -59619:38835, -59620:38836, -59621:38851, -59622:38854, -59623:38856, -59624:38859, -59625:38876, -59626:38893, -59627:40783, -59628:38898, -59629:31455, -59630:38902, -59631:38901, -59632:38927, -59633:38924, -59634:38968, -59635:38948, -59636:38945, -59637:38967, -59638:38973, -59639:38982, -59640:38991, -59641:38987, -59642:39019, -59643:39023, -59644:39024, -59712:39025, -59713:39028, -59714:39027, -59715:39082, -59716:39087, -59717:39089, -59718:39094, -59719:39108, -59720:39107, -59721:39110, -59722:39145, -59723:39147, -59724:39171, -59725:39177, -59726:39186, -59727:39188, -59728:39192, -59729:39201, -59730:39197, -59731:39198, -59732:39204, -59733:39200, -59734:39212, -59735:39214, -59736:39229, -59737:39230, -59738:39234, -59739:39241, -59740:39237, -59741:39248, -59742:39243, -59743:39249, -59744:39250, -59745:39244, -59746:39253, -59747:39319, -59748:39320, -59749:39333, -59750:39341, -59751:39342, -59752:39356, -59753:39391, -59754:39387, -59755:39389, -59756:39384, -59757:39377, -59758:39405, -59759:39406, -59760:39409, -59761:39410, -59762:39419, -59763:39416, -59764:39425, -59765:39439, -59766:39429, -59767:39394, -59768:39449, -59769:39467, -59770:39479, -59771:39493, -59772:39490, -59773:39488, -59774:39491, -59776:39486, -59777:39509, -59778:39501, -59779:39515, -59780:39511, -59781:39519, -59782:39522, -59783:39525, -59784:39524, -59785:39529, -59786:39531, -59787:39530, -59788:39597, -59789:39600, -59790:39612, -59791:39616, -59792:39631, -59793:39633, -59794:39635, -59795:39636, -59796:39646, -59797:39647, -59798:39650, -59799:39651, -59800:39654, -59801:39663, -59802:39659, -59803:39662, -59804:39668, -59805:39665, -59806:39671, -59807:39675, -59808:39686, -59809:39704, -59810:39706, -59811:39711, -59812:39714, -59813:39715, -59814:39717, -59815:39719, -59816:39720, -59817:39721, -59818:39722, -59819:39726, -59820:39727, -59821:39730, -59822:39748, -59823:39747, -59824:39759, -59825:39757, -59826:39758, -59827:39761, -59828:39768, -59829:39796, -59830:39827, -59831:39811, -59832:39825, -59833:39830, -59834:39831, -59835:39839, -59836:39840, -59837:39848, -59838:39860, -59839:39872, -59840:39882, -59841:39865, -59842:39878, -59843:39887, -59844:39889, -59845:39890, -59846:39907, -59847:39906, -59848:39908, -59849:39892, -59850:39905, -59851:39994, -59852:39922, -59853:39921, -59854:39920, -59855:39957, -59856:39956, -59857:39945, -59858:39955, -59859:39948, -59860:39942, -59861:39944, -59862:39954, -59863:39946, -59864:39940, -59865:39982, -59866:39963, -59867:39973, -59868:39972, -59869:39969, -59870:39984, -59871:40007, -59872:39986, -59873:40006, -59874:39998, -59875:40026, -59876:40032, -59877:40039, -59878:40054, -59879:40056, -59880:40167, -59881:40172, -59882:40176, -59883:40201, -59884:40200, -59885:40171, -59886:40195, -59887:40198, -59888:40234, -59889:40230, -59890:40367, -59891:40227, -59892:40223, -59893:40260, -59894:40213, -59895:40210, -59896:40257, -59897:40255, -59898:40254, -59899:40262, -59900:40264, -59968:40285, -59969:40286, -59970:40292, -59971:40273, -59972:40272, -59973:40281, -59974:40306, -59975:40329, -59976:40327, -59977:40363, -59978:40303, -59979:40314, -59980:40346, -59981:40356, -59982:40361, -59983:40370, -59984:40388, -59985:40385, -59986:40379, -59987:40376, -59988:40378, -59989:40390, -59990:40399, -59991:40386, -59992:40409, -59993:40403, -59994:40440, -59995:40422, -59996:40429, -59997:40431, -59998:40445, -59999:40474, -60000:40475, -60001:40478, -60002:40565, -60003:40569, -60004:40573, -60005:40577, -60006:40584, -60007:40587, -60008:40588, -60009:40594, -60010:40597, -60011:40593, -60012:40605, -60013:40613, -60014:40617, -60015:40632, -60016:40618, -60017:40621, -60018:38753, -60019:40652, -60020:40654, -60021:40655, -60022:40656, -60023:40660, -60024:40668, -60025:40670, -60026:40669, -60027:40672, -60028:40677, -60029:40680, -60030:40687, -60032:40692, -60033:40694, -60034:40695, -60035:40697, -60036:40699, -60037:40700, -60038:40701, -60039:40711, -60040:40712, -60041:30391, -60042:40725, -60043:40737, -60044:40748, -60045:40766, -60046:40778, -60047:40786, -60048:40788, -60049:40803, -60050:40799, -60051:40800, -60052:40801, -60053:40806, -60054:40807, -60055:40812, -60056:40810, -60057:40823, -60058:40818, -60059:40822, -60060:40853, -60061:40860, -60062:40864, -60063:22575, -60064:27079, -60065:36953, -60066:29796, -60067:20956, -60068:29081, -60736:32394, -60737:35100, -60738:37704, -60739:37512, -60740:34012, -60741:20425, -60742:28859, -60743:26161, -60744:26824, -60745:37625, -60746:26363, -60747:24389, -60748:20008, -60749:20193, -60750:20220, -60751:20224, -60752:20227, -60753:20281, -60754:20310, -60755:20370, -60756:20362, -60757:20378, -60758:20372, -60759:20429, -60760:20544, -60761:20514, -60762:20479, -60763:20510, -60764:20550, -60765:20592, -60766:20546, -60767:20628, -60768:20724, -60769:20696, -60770:20810, -60771:20836, -60772:20893, -60773:20926, -60774:20972, -60775:21013, -60776:21148, -60777:21158, -60778:21184, -60779:21211, -60780:21248, -60781:21255, -60782:21284, -60783:21362, -60784:21395, -60785:21426, -60786:21469, -60787:64014, -60788:21660, -60789:21642, -60790:21673, -60791:21759, -60792:21894, -60793:22361, -60794:22373, -60795:22444, -60796:22472, -60797:22471, -60798:64015, -60800:64016, -60801:22686, -60802:22706, -60803:22795, -60804:22867, -60805:22875, -60806:22877, -60807:22883, -60808:22948, -60809:22970, -60810:23382, -60811:23488, -60812:29999, -60813:23512, -60814:23532, -60815:23582, -60816:23718, -60817:23738, -60818:23797, -60819:23847, -60820:23891, -60821:64017, -60822:23874, -60823:23917, -60824:23992, -60825:23993, -60826:24016, -60827:24353, -60828:24372, -60829:24423, -60830:24503, -60831:24542, -60832:24669, -60833:24709, -60834:24714, -60835:24798, -60836:24789, -60837:24864, -60838:24818, -60839:24849, -60840:24887, -60841:24880, -60842:24984, -60843:25107, -60844:25254, -60845:25589, -60846:25696, -60847:25757, -60848:25806, -60849:25934, -60850:26112, -60851:26133, -60852:26171, -60853:26121, -60854:26158, -60855:26142, -60856:26148, -60857:26213, -60858:26199, -60859:26201, -60860:64018, -60861:26227, -60862:26265, -60863:26272, -60864:26290, -60865:26303, -60866:26362, -60867:26382, -60868:63785, -60869:26470, -60870:26555, -60871:26706, -60872:26560, -60873:26625, -60874:26692, -60875:26831, -60876:64019, -60877:26984, -60878:64020, -60879:27032, -60880:27106, -60881:27184, -60882:27243, -60883:27206, -60884:27251, -60885:27262, -60886:27362, -60887:27364, -60888:27606, -60889:27711, -60890:27740, -60891:27782, -60892:27759, -60893:27866, -60894:27908, -60895:28039, -60896:28015, -60897:28054, -60898:28076, -60899:28111, -60900:28152, -60901:28146, -60902:28156, -60903:28217, -60904:28252, -60905:28199, -60906:28220, -60907:28351, -60908:28552, -60909:28597, -60910:28661, -60911:28677, -60912:28679, -60913:28712, -60914:28805, -60915:28843, -60916:28943, -60917:28932, -60918:29020, -60919:28998, -60920:28999, -60921:64021, -60922:29121, -60923:29182, -60924:29361, -60992:29374, -60993:29476, -60994:64022, -60995:29559, -60996:29629, -60997:29641, -60998:29654, -60999:29667, -61000:29650, -61001:29703, -61002:29685, -61003:29734, -61004:29738, -61005:29737, -61006:29742, -61007:29794, -61008:29833, -61009:29855, -61010:29953, -61011:30063, -61012:30338, -61013:30364, -61014:30366, -61015:30363, -61016:30374, -61017:64023, -61018:30534, -61019:21167, -61020:30753, -61021:30798, -61022:30820, -61023:30842, -61024:31024, -61025:64024, -61026:64025, -61027:64026, -61028:31124, -61029:64027, -61030:31131, -61031:31441, -61032:31463, -61033:64028, -61034:31467, -61035:31646, -61036:64029, -61037:32072, -61038:32092, -61039:32183, -61040:32160, -61041:32214, -61042:32338, -61043:32583, -61044:32673, -61045:64030, -61046:33537, -61047:33634, -61048:33663, -61049:33735, -61050:33782, -61051:33864, -61052:33972, -61053:34131, -61054:34137, -61056:34155, -61057:64031, -61058:34224, -61059:64032, -61060:64033, -61061:34823, -61062:35061, -61063:35346, -61064:35383, -61065:35449, -61066:35495, -61067:35518, -61068:35551, -61069:64034, -61070:35574, -61071:35667, -61072:35711, -61073:36080, -61074:36084, -61075:36114, -61076:36214, -61077:64035, -61078:36559, -61079:64036, -61080:64037, -61081:36967, -61082:37086, -61083:64038, -61084:37141, -61085:37159, -61086:37338, -61087:37335, -61088:37342, -61089:37357, -61090:37358, -61091:37348, -61092:37349, -61093:37382, -61094:37392, -61095:37386, -61096:37434, -61097:37440, -61098:37436, -61099:37454, -61100:37465, -61101:37457, -61102:37433, -61103:37479, -61104:37543, -61105:37495, -61106:37496, -61107:37607, -61108:37591, -61109:37593, -61110:37584, -61111:64039, -61112:37589, -61113:37600, -61114:37587, -61115:37669, -61116:37665, -61117:37627, -61118:64040, -61119:37662, -61120:37631, -61121:37661, -61122:37634, -61123:37744, -61124:37719, -61125:37796, -61126:37830, -61127:37854, -61128:37880, -61129:37937, -61130:37957, -61131:37960, -61132:38290, -61133:63964, -61134:64041, -61135:38557, -61136:38575, -61137:38707, -61138:38715, -61139:38723, -61140:38733, -61141:38735, -61142:38737, -61143:38741, -61144:38999, -61145:39013, -61146:64042, -61147:64043, -61148:39207, -61149:64044, -61150:39326, -61151:39502, -61152:39641, -61153:39644, -61154:39797, -61155:39794, -61156:39823, -61157:39857, -61158:39867, -61159:39936, -61160:40304, -61161:40299, -61162:64045, -61163:40473, -61164:40657, -61167:8560, -61168:8561, -61169:8562, -61170:8563, -61171:8564, -61172:8565, -61173:8566, -61174:8567, -61175:8568, -61176:8569, -61177:65506, -61178:65508, -61179:65287, -61180:65282, -61504:57344, -61505:57345, -61506:57346, -61507:57347, -61508:57348, -61509:57349, -61510:57350, -61511:57351, -61512:57352, -61513:57353, -61514:57354, -61515:57355, -61516:57356, -61517:57357, -61518:57358, -61519:57359, -61520:57360, -61521:57361, -61522:57362, -61523:57363, -61524:57364, -61525:57365, -61526:57366, -61527:57367, -61528:57368, -61529:57369, -61530:57370, -61531:57371, -61532:57372, -61533:57373, -61534:57374, -61535:57375, -61536:57376, -61537:57377, -61538:57378, -61539:57379, -61540:57380, -61541:57381, -61542:57382, -61543:57383, -61544:57384, -61545:57385, -61546:57386, -61547:57387, -61548:57388, -61549:57389, -61550:57390, -61551:57391, -61552:57392, -61553:57393, -61554:57394, -61555:57395, -61556:57396, -61557:57397, -61558:57398, -61559:57399, -61560:57400, -61561:57401, -61562:57402, -61563:57403, -61564:57404, -61565:57405, -61566:57406, -61568:57407, -61569:57408, -61570:57409, -61571:57410, -61572:57411, -61573:57412, -61574:57413, -61575:57414, -61576:57415, -61577:57416, -61578:57417, -61579:57418, -61580:57419, -61581:57420, -61582:57421, -61583:57422, -61584:57423, -61585:57424, -61586:57425, -61587:57426, -61588:57427, -61589:57428, -61590:57429, -61591:57430, -61592:57431, -61593:57432, -61594:57433, -61595:57434, -61596:57435, -61597:57436, -61598:57437, -61599:57438, -61600:57439, -61601:57440, -61602:57441, -61603:57442, -61604:57443, -61605:57444, -61606:57445, -61607:57446, -61608:57447, -61609:57448, -61610:57449, -61611:57450, -61612:57451, -61613:57452, -61614:57453, -61615:57454, -61616:57455, -61617:57456, -61618:57457, -61619:57458, -61620:57459, -61621:57460, -61622:57461, -61623:57462, -61624:57463, -61625:57464, -61626:57465, -61627:57466, -61628:57467, -61629:57468, -61630:57469, -61631:57470, -61632:57471, -61633:57472, -61634:57473, -61635:57474, -61636:57475, -61637:57476, -61638:57477, -61639:57478, -61640:57479, -61641:57480, -61642:57481, -61643:57482, -61644:57483, -61645:57484, -61646:57485, -61647:57486, -61648:57487, -61649:57488, -61650:57489, -61651:57490, -61652:57491, -61653:57492, -61654:57493, -61655:57494, -61656:57495, -61657:57496, -61658:57497, -61659:57498, -61660:57499, -61661:57500, -61662:57501, -61663:57502, -61664:57503, -61665:57504, -61666:57505, -61667:57506, -61668:57507, -61669:57508, -61670:57509, -61671:57510, -61672:57511, -61673:57512, -61674:57513, -61675:57514, -61676:57515, -61677:57516, -61678:57517, -61679:57518, -61680:57519, -61681:57520, -61682:57521, -61683:57522, -61684:57523, -61685:57524, -61686:57525, -61687:57526, -61688:57527, -61689:57528, -61690:57529, -61691:57530, -61692:57531, -61760:57532, -61761:57533, -61762:57534, -61763:57535, -61764:57536, -61765:57537, -61766:57538, -61767:57539, -61768:57540, -61769:57541, -61770:57542, -61771:57543, -61772:57544, -61773:57545, -61774:57546, -61775:57547, -61776:57548, -61777:57549, -61778:57550, -61779:57551, -61780:57552, -61781:57553, -61782:57554, -61783:57555, -61784:57556, -61785:57557, -61786:57558, -61787:57559, -61788:57560, -61789:57561, -61790:57562, -61791:57563, -61792:57564, -61793:57565, -61794:57566, -61795:57567, -61796:57568, -61797:57569, -61798:57570, -61799:57571, -61800:57572, -61801:57573, -61802:57574, -61803:57575, -61804:57576, -61805:57577, -61806:57578, -61807:57579, -61808:57580, -61809:57581, -61810:57582, -61811:57583, -61812:57584, -61813:57585, -61814:57586, -61815:57587, -61816:57588, -61817:57589, -61818:57590, -61819:57591, -61820:57592, -61821:57593, -61822:57594, -61824:57595, -61825:57596, -61826:57597, -61827:57598, -61828:57599, -61829:57600, -61830:57601, -61831:57602, -61832:57603, -61833:57604, -61834:57605, -61835:57606, -61836:57607, -61837:57608, -61838:57609, -61839:57610, -61840:57611, -61841:57612, -61842:57613, -61843:57614, -61844:57615, -61845:57616, -61846:57617, -61847:57618, -61848:57619, -61849:57620, -61850:57621, -61851:57622, -61852:57623, -61853:57624, -61854:57625, -61855:57626, -61856:57627, -61857:57628, -61858:57629, -61859:57630, -61860:57631, -61861:57632, -61862:57633, -61863:57634, -61864:57635, -61865:57636, -61866:57637, -61867:57638, -61868:57639, -61869:57640, -61870:57641, -61871:57642, -61872:57643, -61873:57644, -61874:57645, -61875:57646, -61876:57647, -61877:57648, -61878:57649, -61879:57650, -61880:57651, -61881:57652, -61882:57653, -61883:57654, -61884:57655, -61885:57656, -61886:57657, -61887:57658, -61888:57659, -61889:57660, -61890:57661, -61891:57662, -61892:57663, -61893:57664, -61894:57665, -61895:57666, -61896:57667, -61897:57668, -61898:57669, -61899:57670, -61900:57671, -61901:57672, -61902:57673, -61903:57674, -61904:57675, -61905:57676, -61906:57677, -61907:57678, -61908:57679, -61909:57680, -61910:57681, -61911:57682, -61912:57683, -61913:57684, -61914:57685, -61915:57686, -61916:57687, -61917:57688, -61918:57689, -61919:57690, -61920:57691, -61921:57692, -61922:57693, -61923:57694, -61924:57695, -61925:57696, -61926:57697, -61927:57698, -61928:57699, -61929:57700, -61930:57701, -61931:57702, -61932:57703, -61933:57704, -61934:57705, -61935:57706, -61936:57707, -61937:57708, -61938:57709, -61939:57710, -61940:57711, -61941:57712, -61942:57713, -61943:57714, -61944:57715, -61945:57716, -61946:57717, -61947:57718, -61948:57719, -62016:57720, -62017:57721, -62018:57722, -62019:57723, -62020:57724, -62021:57725, -62022:57726, -62023:57727, -62024:57728, -62025:57729, -62026:57730, -62027:57731, -62028:57732, -62029:57733, -62030:57734, -62031:57735, -62032:57736, -62033:57737, -62034:57738, -62035:57739, -62036:57740, -62037:57741, -62038:57742, -62039:57743, -62040:57744, -62041:57745, -62042:57746, -62043:57747, -62044:57748, -62045:57749, -62046:57750, -62047:57751, -62048:57752, -62049:57753, -62050:57754, -62051:57755, -62052:57756, -62053:57757, -62054:57758, -62055:57759, -62056:57760, -62057:57761, -62058:57762, -62059:57763, -62060:57764, -62061:57765, -62062:57766, -62063:57767, -62064:57768, -62065:57769, -62066:57770, -62067:57771, -62068:57772, -62069:57773, -62070:57774, -62071:57775, -62072:57776, -62073:57777, -62074:57778, -62075:57779, -62076:57780, -62077:57781, -62078:57782, -62080:57783, -62081:57784, -62082:57785, -62083:57786, -62084:57787, -62085:57788, -62086:57789, -62087:57790, -62088:57791, -62089:57792, -62090:57793, -62091:57794, -62092:57795, -62093:57796, -62094:57797, -62095:57798, -62096:57799, -62097:57800, -62098:57801, -62099:57802, -62100:57803, -62101:57804, -62102:57805, -62103:57806, -62104:57807, -62105:57808, -62106:57809, -62107:57810, -62108:57811, -62109:57812, -62110:57813, -62111:57814, -62112:57815, -62113:57816, -62114:57817, -62115:57818, -62116:57819, -62117:57820, -62118:57821, -62119:57822, -62120:57823, -62121:57824, -62122:57825, -62123:57826, -62124:57827, -62125:57828, -62126:57829, -62127:57830, -62128:57831, -62129:57832, -62130:57833, -62131:57834, -62132:57835, -62133:57836, -62134:57837, -62135:57838, -62136:57839, -62137:57840, -62138:57841, -62139:57842, -62140:57843, -62141:57844, -62142:57845, -62143:57846, -62144:57847, -62145:57848, -62146:57849, -62147:57850, -62148:57851, -62149:57852, -62150:57853, -62151:57854, -62152:57855, -62153:57856, -62154:57857, -62155:57858, -62156:57859, -62157:57860, -62158:57861, -62159:57862, -62160:57863, -62161:57864, -62162:57865, -62163:57866, -62164:57867, -62165:57868, -62166:57869, -62167:57870, -62168:57871, -62169:57872, -62170:57873, -62171:57874, -62172:57875, -62173:57876, -62174:57877, -62175:57878, -62176:57879, -62177:57880, -62178:57881, -62179:57882, -62180:57883, -62181:57884, -62182:57885, -62183:57886, -62184:57887, -62185:57888, -62186:57889, -62187:57890, -62188:57891, -62189:57892, -62190:57893, -62191:57894, -62192:57895, -62193:57896, -62194:57897, -62195:57898, -62196:57899, -62197:57900, -62198:57901, -62199:57902, -62200:57903, -62201:57904, -62202:57905, -62203:57906, -62204:57907, -62272:57908, -62273:57909, -62274:57910, -62275:57911, -62276:57912, -62277:57913, -62278:57914, -62279:57915, -62280:57916, -62281:57917, -62282:57918, -62283:57919, -62284:57920, -62285:57921, -62286:57922, -62287:57923, -62288:57924, -62289:57925, -62290:57926, -62291:57927, -62292:57928, -62293:57929, -62294:57930, -62295:57931, -62296:57932, -62297:57933, -62298:57934, -62299:57935, -62300:57936, -62301:57937, -62302:57938, -62303:57939, -62304:57940, -62305:57941, -62306:57942, -62307:57943, -62308:57944, -62309:57945, -62310:57946, -62311:57947, -62312:57948, -62313:57949, -62314:57950, -62315:57951, -62316:57952, -62317:57953, -62318:57954, -62319:57955, -62320:57956, -62321:57957, -62322:57958, -62323:57959, -62324:57960, -62325:57961, -62326:57962, -62327:57963, -62328:57964, -62329:57965, -62330:57966, -62331:57967, -62332:57968, -62333:57969, -62334:57970, -62336:57971, -62337:57972, -62338:57973, -62339:57974, -62340:57975, -62341:57976, -62342:57977, -62343:57978, -62344:57979, -62345:57980, -62346:57981, -62347:57982, -62348:57983, -62349:57984, -62350:57985, -62351:57986, -62352:57987, -62353:57988, -62354:57989, -62355:57990, -62356:57991, -62357:57992, -62358:57993, -62359:57994, -62360:57995, -62361:57996, -62362:57997, -62363:57998, -62364:57999, -62365:58000, -62366:58001, -62367:58002, -62368:58003, -62369:58004, -62370:58005, -62371:58006, -62372:58007, -62373:58008, -62374:58009, -62375:58010, -62376:58011, -62377:58012, -62378:58013, -62379:58014, -62380:58015, -62381:58016, -62382:58017, -62383:58018, -62384:58019, -62385:58020, -62386:58021, -62387:58022, -62388:58023, -62389:58024, -62390:58025, -62391:58026, -62392:58027, -62393:58028, -62394:58029, -62395:58030, -62396:58031, -62397:58032, -62398:58033, -62399:58034, -62400:58035, -62401:58036, -62402:58037, -62403:58038, -62404:58039, -62405:58040, -62406:58041, -62407:58042, -62408:58043, -62409:58044, -62410:58045, -62411:58046, -62412:58047, -62413:58048, -62414:58049, -62415:58050, -62416:58051, -62417:58052, -62418:58053, -62419:58054, -62420:58055, -62421:58056, -62422:58057, -62423:58058, -62424:58059, -62425:58060, -62426:58061, -62427:58062, -62428:58063, -62429:58064, -62430:58065, -62431:58066, -62432:58067, -62433:58068, -62434:58069, -62435:58070, -62436:58071, -62437:58072, -62438:58073, -62439:58074, -62440:58075, -62441:58076, -62442:58077, -62443:58078, -62444:58079, -62445:58080, -62446:58081, -62447:58082, -62448:58083, -62449:58084, -62450:58085, -62451:58086, -62452:58087, -62453:58088, -62454:58089, -62455:58090, -62456:58091, -62457:58092, -62458:58093, -62459:58094, -62460:58095, -62528:58096, -62529:58097, -62530:58098, -62531:58099, -62532:58100, -62533:58101, -62534:58102, -62535:58103, -62536:58104, -62537:58105, -62538:58106, -62539:58107, -62540:58108, -62541:58109, -62542:58110, -62543:58111, -62544:58112, -62545:58113, -62546:58114, -62547:58115, -62548:58116, -62549:58117, -62550:58118, -62551:58119, -62552:58120, -62553:58121, -62554:58122, -62555:58123, -62556:58124, -62557:58125, -62558:58126, -62559:58127, -62560:58128, -62561:58129, -62562:58130, -62563:58131, -62564:58132, -62565:58133, -62566:58134, -62567:58135, -62568:58136, -62569:58137, -62570:58138, -62571:58139, -62572:58140, -62573:58141, -62574:58142, -62575:58143, -62576:58144, -62577:58145, -62578:58146, -62579:58147, -62580:58148, -62581:58149, -62582:58150, -62583:58151, -62584:58152, -62585:58153, -62586:58154, -62587:58155, -62588:58156, -62589:58157, -62590:58158, -62592:58159, -62593:58160, -62594:58161, -62595:58162, -62596:58163, -62597:58164, -62598:58165, -62599:58166, -62600:58167, -62601:58168, -62602:58169, -62603:58170, -62604:58171, -62605:58172, -62606:58173, -62607:58174, -62608:58175, -62609:58176, -62610:58177, -62611:58178, -62612:58179, -62613:58180, -62614:58181, -62615:58182, -62616:58183, -62617:58184, -62618:58185, -62619:58186, -62620:58187, -62621:58188, -62622:58189, -62623:58190, -62624:58191, -62625:58192, -62626:58193, -62627:58194, -62628:58195, -62629:58196, -62630:58197, -62631:58198, -62632:58199, -62633:58200, -62634:58201, -62635:58202, -62636:58203, -62637:58204, -62638:58205, -62639:58206, -62640:58207, -62641:58208, -62642:58209, -62643:58210, -62644:58211, -62645:58212, -62646:58213, -62647:58214, -62648:58215, -62649:58216, -62650:58217, -62651:58218, -62652:58219, -62653:58220, -62654:58221, -62655:58222, -62656:58223, -62657:58224, -62658:58225, -62659:58226, -62660:58227, -62661:58228, -62662:58229, -62663:58230, -62664:58231, -62665:58232, -62666:58233, -62667:58234, -62668:58235, -62669:58236, -62670:58237, -62671:58238, -62672:58239, -62673:58240, -62674:58241, -62675:58242, -62676:58243, -62677:58244, -62678:58245, -62679:58246, -62680:58247, -62681:58248, -62682:58249, -62683:58250, -62684:58251, -62685:58252, -62686:58253, -62687:58254, -62688:58255, -62689:58256, -62690:58257, -62691:58258, -62692:58259, -62693:58260, -62694:58261, -62695:58262, -62696:58263, -62697:58264, -62698:58265, -62699:58266, -62700:58267, -62701:58268, -62702:58269, -62703:58270, -62704:58271, -62705:58272, -62706:58273, -62707:58274, -62708:58275, -62709:58276, -62710:58277, -62711:58278, -62712:58279, -62713:58280, -62714:58281, -62715:58282, -62716:58283, -62784:58284, -62785:58285, -62786:58286, -62787:58287, -62788:58288, -62789:58289, -62790:58290, -62791:58291, -62792:58292, -62793:58293, -62794:58294, -62795:58295, -62796:58296, -62797:58297, -62798:58298, -62799:58299, -62800:58300, -62801:58301, -62802:58302, -62803:58303, -62804:58304, -62805:58305, -62806:58306, -62807:58307, -62808:58308, -62809:58309, -62810:58310, -62811:58311, -62812:58312, -62813:58313, -62814:58314, -62815:58315, -62816:58316, -62817:58317, -62818:58318, -62819:58319, -62820:58320, -62821:58321, -62822:58322, -62823:58323, -62824:58324, -62825:58325, -62826:58326, -62827:58327, -62828:58328, -62829:58329, -62830:58330, -62831:58331, -62832:58332, -62833:58333, -62834:58334, -62835:58335, -62836:58336, -62837:58337, -62838:58338, -62839:58339, -62840:58340, -62841:58341, -62842:58342, -62843:58343, -62844:58344, -62845:58345, -62846:58346, -62848:58347, -62849:58348, -62850:58349, -62851:58350, -62852:58351, -62853:58352, -62854:58353, -62855:58354, -62856:58355, -62857:58356, -62858:58357, -62859:58358, -62860:58359, -62861:58360, -62862:58361, -62863:58362, -62864:58363, -62865:58364, -62866:58365, -62867:58366, -62868:58367, -62869:58368, -62870:58369, -62871:58370, -62872:58371, -62873:58372, -62874:58373, -62875:58374, -62876:58375, -62877:58376, -62878:58377, -62879:58378, -62880:58379, -62881:58380, -62882:58381, -62883:58382, -62884:58383, -62885:58384, -62886:58385, -62887:58386, -62888:58387, -62889:58388, -62890:58389, -62891:58390, -62892:58391, -62893:58392, -62894:58393, -62895:58394, -62896:58395, -62897:58396, -62898:58397, -62899:58398, -62900:58399, -62901:58400, -62902:58401, -62903:58402, -62904:58403, -62905:58404, -62906:58405, -62907:58406, -62908:58407, -62909:58408, -62910:58409, -62911:58410, -62912:58411, -62913:58412, -62914:58413, -62915:58414, -62916:58415, -62917:58416, -62918:58417, -62919:58418, -62920:58419, -62921:58420, -62922:58421, -62923:58422, -62924:58423, -62925:58424, -62926:58425, -62927:58426, -62928:58427, -62929:58428, -62930:58429, -62931:58430, -62932:58431, -62933:58432, -62934:58433, -62935:58434, -62936:58435, -62937:58436, -62938:58437, -62939:58438, -62940:58439, -62941:58440, -62942:58441, -62943:58442, -62944:58443, -62945:58444, -62946:58445, -62947:58446, -62948:58447, -62949:58448, -62950:58449, -62951:58450, -62952:58451, -62953:58452, -62954:58453, -62955:58454, -62956:58455, -62957:58456, -62958:58457, -62959:58458, -62960:58459, -62961:58460, -62962:58461, -62963:58462, -62964:58463, -62965:58464, -62966:58465, -62967:58466, -62968:58467, -62969:58468, -62970:58469, -62971:58470, -62972:58471, -63040:58472, -63041:58473, -63042:58474, -63043:58475, -63044:58476, -63045:58477, -63046:58478, -63047:58479, -63048:58480, -63049:58481, -63050:58482, -63051:58483, -63052:58484, -63053:58485, -63054:58486, -63055:58487, -63056:58488, -63057:58489, -63058:58490, -63059:58491, -63060:58492, -63061:58493, -63062:58494, -63063:58495, -63064:58496, -63065:58497, -63066:58498, -63067:58499, -63068:58500, -63069:58501, -63070:58502, -63071:58503, -63072:58504, -63073:58505, -63074:58506, -63075:58507, -63076:58508, -63077:58509, -63078:58510, -63079:58511, -63080:58512, -63081:58513, -63082:58514, -63083:58515, -63084:58516, -63085:58517, -63086:58518, -63087:58519, -63088:58520, -63089:58521, -63090:58522, -63091:58523, -63092:58524, -63093:58525, -63094:58526, -63095:58527, -63096:58528, -63097:58529, -63098:58530, -63099:58531, -63100:58532, -63101:58533, -63102:58534, -63104:58535, -63105:58536, -63106:58537, -63107:58538, -63108:58539, -63109:58540, -63110:58541, -63111:58542, -63112:58543, -63113:58544, -63114:58545, -63115:58546, -63116:58547, -63117:58548, -63118:58549, -63119:58550, -63120:58551, -63121:58552, -63122:58553, -63123:58554, -63124:58555, -63125:58556, -63126:58557, -63127:58558, -63128:58559, -63129:58560, -63130:58561, -63131:58562, -63132:58563, -63133:58564, -63134:58565, -63135:58566, -63136:58567, -63137:58568, -63138:58569, -63139:58570, -63140:58571, -63141:58572, -63142:58573, -63143:58574, -63144:58575, -63145:58576, -63146:58577, -63147:58578, -63148:58579, -63149:58580, -63150:58581, -63151:58582, -63152:58583, -63153:58584, -63154:58585, -63155:58586, -63156:58587, -63157:58588, -63158:58589, -63159:58590, -63160:58591, -63161:58592, -63162:58593, -63163:58594, -63164:58595, -63165:58596, -63166:58597, -63167:58598, -63168:58599, -63169:58600, -63170:58601, -63171:58602, -63172:58603, -63173:58604, -63174:58605, -63175:58606, -63176:58607, -63177:58608, -63178:58609, -63179:58610, -63180:58611, -63181:58612, -63182:58613, -63183:58614, -63184:58615, -63185:58616, -63186:58617, -63187:58618, -63188:58619, -63189:58620, -63190:58621, -63191:58622, -63192:58623, -63193:58624, -63194:58625, -63195:58626, -63196:58627, -63197:58628, -63198:58629, -63199:58630, -63200:58631, -63201:58632, -63202:58633, -63203:58634, -63204:58635, -63205:58636, -63206:58637, -63207:58638, -63208:58639, -63209:58640, -63210:58641, -63211:58642, -63212:58643, -63213:58644, -63214:58645, -63215:58646, -63216:58647, -63217:58648, -63218:58649, -63219:58650, -63220:58651, -63221:58652, -63222:58653, -63223:58654, -63224:58655, -63225:58656, -63226:58657, -63227:58658, -63228:58659, -63296:58660, -63297:58661, -63298:58662, -63299:58663, -63300:58664, -63301:58665, -63302:58666, -63303:58667, -63304:58668, -63305:58669, -63306:58670, -63307:58671, -63308:58672, -63309:58673, -63310:58674, -63311:58675, -63312:58676, -63313:58677, -63314:58678, -63315:58679, -63316:58680, -63317:58681, -63318:58682, -63319:58683, -63320:58684, -63321:58685, -63322:58686, -63323:58687, -63324:58688, -63325:58689, -63326:58690, -63327:58691, -63328:58692, -63329:58693, -63330:58694, -63331:58695, -63332:58696, -63333:58697, -63334:58698, -63335:58699, -63336:58700, -63337:58701, -63338:58702, -63339:58703, -63340:58704, -63341:58705, -63342:58706, -63343:58707, -63344:58708, -63345:58709, -63346:58710, -63347:58711, -63348:58712, -63349:58713, -63350:58714, -63351:58715, -63352:58716, -63353:58717, -63354:58718, -63355:58719, -63356:58720, -63357:58721, -63358:58722, -63360:58723, -63361:58724, -63362:58725, -63363:58726, -63364:58727, -63365:58728, -63366:58729, -63367:58730, -63368:58731, -63369:58732, -63370:58733, -63371:58734, -63372:58735, -63373:58736, -63374:58737, -63375:58738, -63376:58739, -63377:58740, -63378:58741, -63379:58742, -63380:58743, -63381:58744, -63382:58745, -63383:58746, -63384:58747, -63385:58748, -63386:58749, -63387:58750, -63388:58751, -63389:58752, -63390:58753, -63391:58754, -63392:58755, -63393:58756, -63394:58757, -63395:58758, -63396:58759, -63397:58760, -63398:58761, -63399:58762, -63400:58763, -63401:58764, -63402:58765, -63403:58766, -63404:58767, -63405:58768, -63406:58769, -63407:58770, -63408:58771, -63409:58772, -63410:58773, -63411:58774, -63412:58775, -63413:58776, -63414:58777, -63415:58778, -63416:58779, -63417:58780, -63418:58781, -63419:58782, -63420:58783, -63421:58784, -63422:58785, -63423:58786, -63424:58787, -63425:58788, -63426:58789, -63427:58790, -63428:58791, -63429:58792, -63430:58793, -63431:58794, -63432:58795, -63433:58796, -63434:58797, -63435:58798, -63436:58799, -63437:58800, -63438:58801, -63439:58802, -63440:58803, -63441:58804, -63442:58805, -63443:58806, -63444:58807, -63445:58808, -63446:58809, -63447:58810, -63448:58811, -63449:58812, -63450:58813, -63451:58814, -63452:58815, -63453:58816, -63454:58817, -63455:58818, -63456:58819, -63457:58820, -63458:58821, -63459:58822, -63460:58823, -63461:58824, -63462:58825, -63463:58826, -63464:58827, -63465:58828, -63466:58829, -63467:58830, -63468:58831, -63469:58832, -63470:58833, -63471:58834, -63472:58835, -63473:58836, -63474:58837, -63475:58838, -63476:58839, -63477:58840, -63478:58841, -63479:58842, -63480:58843, -63481:58844, -63482:58845, -63483:58846, -63484:58847, -63552:58848, -63553:58849, -63554:58850, -63555:58851, -63556:58852, -63557:58853, -63558:58854, -63559:58855, -63560:58856, -63561:58857, -63562:58858, -63563:58859, -63564:58860, -63565:58861, -63566:58862, -63567:58863, -63568:58864, -63569:58865, -63570:58866, -63571:58867, -63572:58868, -63573:58869, -63574:58870, -63575:58871, -63576:58872, -63577:58873, -63578:58874, -63579:58875, -63580:58876, -63581:58877, -63582:58878, -63583:58879, -63584:58880, -63585:58881, -63586:58882, -63587:58883, -63588:58884, -63589:58885, -63590:58886, -63591:58887, -63592:58888, -63593:58889, -63594:58890, -63595:58891, -63596:58892, -63597:58893, -63598:58894, -63599:58895, -63600:58896, -63601:58897, -63602:58898, -63603:58899, -63604:58900, -63605:58901, -63606:58902, -63607:58903, -63608:58904, -63609:58905, -63610:58906, -63611:58907, -63612:58908, -63613:58909, -63614:58910, -63616:58911, -63617:58912, -63618:58913, -63619:58914, -63620:58915, -63621:58916, -63622:58917, -63623:58918, -63624:58919, -63625:58920, -63626:58921, -63627:58922, -63628:58923, -63629:58924, -63630:58925, -63631:58926, -63632:58927, -63633:58928, -63634:58929, -63635:58930, -63636:58931, -63637:58932, -63638:58933, -63639:58934, -63640:58935, -63641:58936, -63642:58937, -63643:58938, -63644:58939, -63645:58940, -63646:58941, -63647:58942, -63648:58943, -63649:58944, -63650:58945, -63651:58946, -63652:58947, -63653:58948, -63654:58949, -63655:58950, -63656:58951, -63657:58952, -63658:58953, -63659:58954, -63660:58955, -63661:58956, -63662:58957, -63663:58958, -63664:58959, -63665:58960, -63666:58961, -63667:58962, -63668:58963, -63669:58964, -63670:58965, -63671:58966, -63672:58967, -63673:58968, -63674:58969, -63675:58970, -63676:58971, -63677:58972, -63678:58973, -63679:58974, -63680:58975, -63681:58976, -63682:58977, -63683:58978, -63684:58979, -63685:58980, -63686:58981, -63687:58982, -63688:58983, -63689:58984, -63690:58985, -63691:58986, -63692:58987, -63693:58988, -63694:58989, -63695:58990, -63696:58991, -63697:58992, -63698:58993, -63699:58994, -63700:58995, -63701:58996, -63702:58997, -63703:58998, -63704:58999, -63705:59000, -63706:59001, -63707:59002, -63708:59003, -63709:59004, -63710:59005, -63711:59006, -63712:59007, -63713:59008, -63714:59009, -63715:59010, -63716:59011, -63717:59012, -63718:59013, -63719:59014, -63720:59015, -63721:59016, -63722:59017, -63723:59018, -63724:59019, -63725:59020, -63726:59021, -63727:59022, -63728:59023, -63729:59024, -63730:59025, -63731:59026, -63732:59027, -63733:59028, -63734:59029, -63735:59030, -63736:59031, -63737:59032, -63738:59033, -63739:59034, -63740:59035, -64064:8560, -64065:8561, -64066:8562, -64067:8563, -64068:8564, -64069:8565, -64070:8566, -64071:8567, -64072:8568, -64073:8569, -64074:8544, -64075:8545, -64076:8546, -64077:8547, -64078:8548, -64079:8549, -64080:8550, -64081:8551, -64082:8552, -64083:8553, -64084:65506, -64085:65508, -64086:65287, -64087:65282, -64088:12849, -64089:8470, -64090:8481, -64091:8757, -64092:32394, -64093:35100, -64094:37704, -64095:37512, -64096:34012, -64097:20425, -64098:28859, -64099:26161, -64100:26824, -64101:37625, -64102:26363, -64103:24389, -64104:20008, -64105:20193, -64106:20220, -64107:20224, -64108:20227, -64109:20281, -64110:20310, -64111:20370, -64112:20362, -64113:20378, -64114:20372, -64115:20429, -64116:20544, -64117:20514, -64118:20479, -64119:20510, -64120:20550, -64121:20592, -64122:20546, -64123:20628, -64124:20724, -64125:20696, -64126:20810, -64128:20836, -64129:20893, -64130:20926, -64131:20972, -64132:21013, -64133:21148, -64134:21158, -64135:21184, -64136:21211, -64137:21248, -64138:21255, -64139:21284, -64140:21362, -64141:21395, -64142:21426, -64143:21469, -64144:64014, -64145:21660, -64146:21642, -64147:21673, -64148:21759, -64149:21894, -64150:22361, -64151:22373, -64152:22444, -64153:22472, -64154:22471, -64155:64015, -64156:64016, -64157:22686, -64158:22706, -64159:22795, -64160:22867, -64161:22875, -64162:22877, -64163:22883, -64164:22948, -64165:22970, -64166:23382, -64167:23488, -64168:29999, -64169:23512, -64170:23532, -64171:23582, -64172:23718, -64173:23738, -64174:23797, -64175:23847, -64176:23891, -64177:64017, -64178:23874, -64179:23917, -64180:23992, -64181:23993, -64182:24016, -64183:24353, -64184:24372, -64185:24423, -64186:24503, -64187:24542, -64188:24669, -64189:24709, -64190:24714, -64191:24798, -64192:24789, -64193:24864, -64194:24818, -64195:24849, -64196:24887, -64197:24880, -64198:24984, -64199:25107, -64200:25254, -64201:25589, -64202:25696, -64203:25757, -64204:25806, -64205:25934, -64206:26112, -64207:26133, -64208:26171, -64209:26121, -64210:26158, -64211:26142, -64212:26148, -64213:26213, -64214:26199, -64215:26201, -64216:64018, -64217:26227, -64218:26265, -64219:26272, -64220:26290, -64221:26303, -64222:26362, -64223:26382, -64224:63785, -64225:26470, -64226:26555, -64227:26706, -64228:26560, -64229:26625, -64230:26692, -64231:26831, -64232:64019, -64233:26984, -64234:64020, -64235:27032, -64236:27106, -64237:27184, -64238:27243, -64239:27206, -64240:27251, -64241:27262, -64242:27362, -64243:27364, -64244:27606, -64245:27711, -64246:27740, -64247:27782, -64248:27759, -64249:27866, -64250:27908, -64251:28039, -64252:28015, -64320:28054, -64321:28076, -64322:28111, -64323:28152, -64324:28146, -64325:28156, -64326:28217, -64327:28252, -64328:28199, -64329:28220, -64330:28351, -64331:28552, -64332:28597, -64333:28661, -64334:28677, -64335:28679, -64336:28712, -64337:28805, -64338:28843, -64339:28943, -64340:28932, -64341:29020, -64342:28998, -64343:28999, -64344:64021, -64345:29121, -64346:29182, -64347:29361, -64348:29374, -64349:29476, -64350:64022, -64351:29559, -64352:29629, -64353:29641, -64354:29654, -64355:29667, -64356:29650, -64357:29703, -64358:29685, -64359:29734, -64360:29738, -64361:29737, -64362:29742, -64363:29794, -64364:29833, -64365:29855, -64366:29953, -64367:30063, -64368:30338, -64369:30364, -64370:30366, -64371:30363, -64372:30374, -64373:64023, -64374:30534, -64375:21167, -64376:30753, -64377:30798, -64378:30820, -64379:30842, -64380:31024, -64381:64024, -64382:64025, -64384:64026, -64385:31124, -64386:64027, -64387:31131, -64388:31441, -64389:31463, -64390:64028, -64391:31467, -64392:31646, -64393:64029, -64394:32072, -64395:32092, -64396:32183, -64397:32160, -64398:32214, -64399:32338, -64400:32583, -64401:32673, -64402:64030, -64403:33537, -64404:33634, -64405:33663, -64406:33735, -64407:33782, -64408:33864, -64409:33972, -64410:34131, -64411:34137, -64412:34155, -64413:64031, -64414:34224, -64415:64032, -64416:64033, -64417:34823, -64418:35061, -64419:35346, -64420:35383, -64421:35449, -64422:35495, -64423:35518, -64424:35551, -64425:64034, -64426:35574, -64427:35667, -64428:35711, -64429:36080, -64430:36084, -64431:36114, -64432:36214, -64433:64035, -64434:36559, -64435:64036, -64436:64037, -64437:36967, -64438:37086, -64439:64038, -64440:37141, -64441:37159, -64442:37338, -64443:37335, -64444:37342, -64445:37357, -64446:37358, -64447:37348, -64448:37349, -64449:37382, -64450:37392, -64451:37386, -64452:37434, -64453:37440, -64454:37436, -64455:37454, -64456:37465, -64457:37457, -64458:37433, -64459:37479, -64460:37543, -64461:37495, -64462:37496, -64463:37607, -64464:37591, -64465:37593, -64466:37584, -64467:64039, -64468:37589, -64469:37600, -64470:37587, -64471:37669, -64472:37665, -64473:37627, -64474:64040, -64475:37662, -64476:37631, -64477:37661, -64478:37634, -64479:37744, -64480:37719, -64481:37796, -64482:37830, -64483:37854, -64484:37880, -64485:37937, -64486:37957, -64487:37960, -64488:38290, -64489:63964, -64490:64041, -64491:38557, -64492:38575, -64493:38707, -64494:38715, -64495:38723, -64496:38733, -64497:38735, -64498:38737, -64499:38741, -64500:38999, -64501:39013, -64502:64042, -64503:64043, -64504:39207, -64505:64044, -64506:39326, -64507:39502, -64508:39641, -64576:39644, -64577:39797, -64578:39794, -64579:39823, -64580:39857, -64581:39867, -64582:39936, -64583:40304, -64584:40299, -64585:64045, -64586:40473, -64587:40657 -}; - -/** - * @author takahiro / https://github.com/takahirox - */ - -function DataViewEx ( buffer, littleEndian ) { - - this.dv = new DataView( buffer ); - this.offset = 0; - this.littleEndian = ( littleEndian !== undefined ) ? littleEndian : true; - this.encoder = new CharsetEncoder(); - -} - -DataViewEx.prototype = { - - constructor: DataViewEx, - - getInt8: function () { - - var value = this.dv.getInt8( this.offset ); - this.offset += 1; - return value; - - }, - - getInt8Array: function ( size ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getInt8() ); - - } - - return a; - - }, - - getUint8: function () { - - var value = this.dv.getUint8( this.offset ); - this.offset += 1; - return value; - - }, - - getUint8Array: function ( size ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getUint8() ); - - } - - return a; - - }, - - - getInt16: function () { - - var value = this.dv.getInt16( this.offset, this.littleEndian ); - this.offset += 2; - return value; - - }, - - getInt16Array: function ( size ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getInt16() ); - - } - - return a; - - }, - - getUint16: function () { - - var value = this.dv.getUint16( this.offset, this.littleEndian ); - this.offset += 2; - return value; - - }, - - getUint16Array: function ( size ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getUint16() ); - - } - - return a; - - }, - - getInt32: function () { - - var value = this.dv.getInt32( this.offset, this.littleEndian ); - this.offset += 4; - return value; - - }, - - getInt32Array: function ( size ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getInt32() ); - - } - - return a; - - }, - - getUint32: function () { - - var value = this.dv.getUint32( this.offset, this.littleEndian ); - this.offset += 4; - return value; - - }, - - getUint32Array: function ( size ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getUint32() ); - - } - - return a; - - }, - - getFloat32: function () { - - var value = this.dv.getFloat32( this.offset, this.littleEndian ); - this.offset += 4; - return value; - - }, - - getFloat32Array: function( size ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getFloat32() ); - - } - - return a; - - }, - - getFloat64: function () { - - var value = this.dv.getFloat64( this.offset, this.littleEndian ); - this.offset += 8; - return value; - - }, - - getFloat64Array: function( size ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getFloat64() ); - - } - - return a; - - }, - - getIndex: function ( type, isUnsigned ) { - - switch ( type ) { - - case 1: - return ( isUnsigned === true ) ? this.getUint8() : this.getInt8(); - - case 2: - return ( isUnsigned === true ) ? this.getUint16() : this.getInt16(); - - case 4: - return this.getInt32(); // No Uint32 - - default: - throw 'unknown number type ' + type + ' exception.'; - - } - - }, - - getIndexArray: function ( type, size, isUnsigned ) { - - var a = []; - - for ( var i = 0; i < size; i++ ) { - - a.push( this.getIndex( type, isUnsigned ) ); - - } - - return a; - - }, - - getChars: function ( size ) { - - var str = ''; - - while ( size > 0 ) { - - var value = this.getUint8(); - size--; - - if ( value === 0 ) { - - break; - - } - - str += String.fromCharCode( value ); - - } - - while ( size > 0 ) { - - this.getUint8(); - size--; - - } - - return str; - - }, - - getSjisStringsAsUnicode: function ( size ) { - - var a = []; - - while ( size > 0 ) { - - var value = this.getUint8(); - size--; - - if ( value === 0 ) { - - break; - - } - - a.push( value ); - - } - - while ( size > 0 ) { - - this.getUint8(); - size--; - - } - - return this.encoder.s2u( new Uint8Array( a ) ); - - }, - - getUnicodeStrings: function ( size ) { - - var str = ''; - - while ( size > 0 ) { - - var value = this.getUint16(); - size -= 2; - - if ( value === 0 ) { - - break; - - } - - str += String.fromCharCode( value ); - - } - - while ( size > 0 ) { - - this.getUint8(); - size--; - - } - - return str; - - }, - - getTextBuffer: function () { - - var size = this.getUint32(); - return this.getUnicodeStrings( size ); - - } - -}; - -/** - * @author takahiro / https://github.com/takahirox - */ - -function DataCreationHelper () { -} - -DataCreationHelper.prototype = { - - constructor: DataCreationHelper, - - leftToRightVector3: function ( v ) { - - v[ 2 ] = -v[ 2 ]; - - }, - - leftToRightQuaternion: function ( q ) { - - q[ 0 ] = -q[ 0 ]; - q[ 1 ] = -q[ 1 ]; - - }, - - leftToRightEuler: function ( r ) { - - r[ 0 ] = -r[ 0 ]; - r[ 1 ] = -r[ 1 ]; - - }, - - leftToRightIndexOrder: function ( p ) { - - var tmp = p[ 2 ]; - p[ 2 ] = p[ 0 ]; - p[ 0 ] = tmp; - - }, - - leftToRightVector3Range: function ( v1, v2 ) { - - var tmp = -v2[ 2 ]; - v2[ 2 ] = -v1[ 2 ]; - v1[ 2 ] = tmp; - - }, - - leftToRightEulerRange: function ( r1, r2 ) { - - var tmp1 = -r2[ 0 ]; - var tmp2 = -r2[ 1 ]; - r2[ 0 ] = -r1[ 0 ]; - r2[ 1 ] = -r1[ 1 ]; - r1[ 0 ] = tmp1; - r1[ 1 ] = tmp2; - - } - -}; - -/** - * @author takahiro / https://github.com/takahirox - */ - -function Parser() { -} - -Parser.prototype.parsePmd = function ( buffer, leftToRight ) { - - var pmd = {}; - var dv = new DataViewEx( buffer ); - - pmd.metadata = {}; - pmd.metadata.format = 'pmd'; - pmd.metadata.coordinateSystem = 'left'; - - var parseHeader = function () { - - var metadata = pmd.metadata; - metadata.magic = dv.getChars( 3 ); - - if ( metadata.magic !== 'Pmd' ) { - - throw 'PMD file magic is not Pmd, but ' + metadata.magic; - - } - - metadata.version = dv.getFloat32(); - metadata.modelName = dv.getSjisStringsAsUnicode( 20 ); - metadata.comment = dv.getSjisStringsAsUnicode( 256 ); - - }; - - var parseVertices = function () { - - var parseVertex = function () { - - var p = {}; - p.position = dv.getFloat32Array( 3 ); - p.normal = dv.getFloat32Array( 3 ); - p.uv = dv.getFloat32Array( 2 ); - p.skinIndices = dv.getUint16Array( 2 ); - p.skinWeights = [ dv.getUint8() / 100 ]; - p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] ); - p.edgeFlag = dv.getUint8(); - return p; - - }; - - var metadata = pmd.metadata; - metadata.vertexCount = dv.getUint32(); - - pmd.vertices = []; - - for ( var i = 0; i < metadata.vertexCount; i++ ) { - - pmd.vertices.push( parseVertex() ); - - } - - }; - - var parseFaces = function () { - - var parseFace = function () { - - var p = {}; - p.indices = dv.getUint16Array( 3 ); - return p; - - }; - - var metadata = pmd.metadata; - metadata.faceCount = dv.getUint32() / 3; - - pmd.faces = []; - - for ( var i = 0; i < metadata.faceCount; i++ ) { - - pmd.faces.push( parseFace() ); - - } - - }; - - var parseMaterials = function () { - - var parseMaterial = function () { - - var p = {}; - p.diffuse = dv.getFloat32Array( 4 ); - p.shininess = dv.getFloat32(); - p.specular = dv.getFloat32Array( 3 ); - p.ambient = dv.getFloat32Array( 3 ); - p.toonIndex = dv.getInt8(); - p.edgeFlag = dv.getUint8(); - p.faceCount = dv.getUint32() / 3; - p.fileName = dv.getSjisStringsAsUnicode( 20 ); - return p; - - }; - - var metadata = pmd.metadata; - metadata.materialCount = dv.getUint32(); - - pmd.materials = []; - - for ( var i = 0; i < metadata.materialCount; i++ ) { - - pmd.materials.push( parseMaterial() ); - - } - - }; - - var parseBones = function () { - - var parseBone = function () { - - var p = {}; - p.name = dv.getSjisStringsAsUnicode( 20 ); - p.parentIndex = dv.getInt16(); - p.tailIndex = dv.getInt16(); - p.type = dv.getUint8(); - p.ikIndex = dv.getInt16(); - p.position = dv.getFloat32Array( 3 ); - return p; - - }; - - var metadata = pmd.metadata; - metadata.boneCount = dv.getUint16(); - - pmd.bones = []; - - for ( var i = 0; i < metadata.boneCount; i++ ) { - - pmd.bones.push( parseBone() ); - - } - - }; - - var parseIks = function () { - - var parseIk = function () { - - var p = {}; - p.target = dv.getUint16(); - p.effector = dv.getUint16(); - p.linkCount = dv.getUint8(); - p.iteration = dv.getUint16(); - p.maxAngle = dv.getFloat32(); - - p.links = []; - for ( var i = 0; i < p.linkCount; i++ ) { - - var link = {}; - link.index = dv.getUint16(); - p.links.push( link ); - - } - - return p; - - }; - - var metadata = pmd.metadata; - metadata.ikCount = dv.getUint16(); - - pmd.iks = []; - - for ( var i = 0; i < metadata.ikCount; i++ ) { - - pmd.iks.push( parseIk() ); - - } - - }; - - var parseMorphs = function () { - - var parseMorph = function () { - - var p = {}; - p.name = dv.getSjisStringsAsUnicode( 20 ); - p.elementCount = dv.getUint32(); - p.type = dv.getUint8(); - - p.elements = []; - for ( var i = 0; i < p.elementCount; i++ ) { - - p.elements.push( { - index: dv.getUint32(), - position: dv.getFloat32Array( 3 ) - } ) ; - - } - - return p; - - }; - - var metadata = pmd.metadata; - metadata.morphCount = dv.getUint16(); - - pmd.morphs = []; - - for ( var i = 0; i < metadata.morphCount; i++ ) { - - pmd.morphs.push( parseMorph() ); - - } - - - }; - - var parseMorphFrames = function () { - - var parseMorphFrame = function () { - - var p = {}; - p.index = dv.getUint16(); - return p; - - }; - - var metadata = pmd.metadata; - metadata.morphFrameCount = dv.getUint8(); - - pmd.morphFrames = []; - - for ( var i = 0; i < metadata.morphFrameCount; i++ ) { - - pmd.morphFrames.push( parseMorphFrame() ); - - } - - }; - - var parseBoneFrameNames = function () { - - var parseBoneFrameName = function () { - - var p = {}; - p.name = dv.getSjisStringsAsUnicode( 50 ); - return p; - - }; - - var metadata = pmd.metadata; - metadata.boneFrameNameCount = dv.getUint8(); - - pmd.boneFrameNames = []; - - for ( var i = 0; i < metadata.boneFrameNameCount; i++ ) { - - pmd.boneFrameNames.push( parseBoneFrameName() ); - - } - - }; - - var parseBoneFrames = function () { - - var parseBoneFrame = function () { - - var p = {}; - p.boneIndex = dv.getInt16(); - p.frameIndex = dv.getUint8(); - return p; - - }; - - var metadata = pmd.metadata; - metadata.boneFrameCount = dv.getUint32(); - - pmd.boneFrames = []; - - for ( var i = 0; i < metadata.boneFrameCount; i++ ) { - - pmd.boneFrames.push( parseBoneFrame() ); - - } - - }; - - var parseEnglishHeader = function () { - - var metadata = pmd.metadata; - metadata.englishCompatibility = dv.getUint8(); - - if ( metadata.englishCompatibility > 0 ) { - - metadata.englishModelName = dv.getSjisStringsAsUnicode( 20 ); - metadata.englishComment = dv.getSjisStringsAsUnicode( 256 ); - - } - - }; - - var parseEnglishBoneNames = function () { - - var parseEnglishBoneName = function () { - - var p = {}; - p.name = dv.getSjisStringsAsUnicode( 20 ); - return p; - - }; - - var metadata = pmd.metadata; - - if ( metadata.englishCompatibility === 0 ) { - - return; - - } - - pmd.englishBoneNames = []; - - for ( var i = 0; i < metadata.boneCount; i++ ) { - - pmd.englishBoneNames.push( parseEnglishBoneName() ); - - } - - }; - - var parseEnglishMorphNames = function () { - - var parseEnglishMorphName = function () { - - var p = {}; - p.name = dv.getSjisStringsAsUnicode( 20 ); - return p; - - }; - - var metadata = pmd.metadata; - - if ( metadata.englishCompatibility === 0 ) { - - return; - - } - - pmd.englishMorphNames = []; - - for ( var i = 0; i < metadata.morphCount - 1; i++ ) { - - pmd.englishMorphNames.push( parseEnglishMorphName() ); - - } - - }; - - var parseEnglishBoneFrameNames = function () { - - var parseEnglishBoneFrameName = function () { - - var p = {}; - p.name = dv.getSjisStringsAsUnicode( 50 ); - return p; - - }; - - var metadata = pmd.metadata; - - if ( metadata.englishCompatibility === 0 ) { - - return; - - } - - pmd.englishBoneFrameNames = []; - - for ( var i = 0; i < metadata.boneFrameNameCount; i++ ) { - - pmd.englishBoneFrameNames.push( parseEnglishBoneFrameName() ); - - } - - }; - - var parseToonTextures = function () { - - var parseToonTexture = function () { - - var p = {}; - p.fileName = dv.getSjisStringsAsUnicode( 100 ); - return p; - - }; - - pmd.toonTextures = []; - - for ( var i = 0; i < 10; i++ ) { - - pmd.toonTextures.push( parseToonTexture() ); - - } - - }; - - var parseRigidBodies = function () { - - var parseRigidBody = function () { - - var p = {}; - p.name = dv.getSjisStringsAsUnicode( 20 ); - p.boneIndex = dv.getInt16(); - p.groupIndex = dv.getUint8(); - p.groupTarget = dv.getUint16(); - p.shapeType = dv.getUint8(); - p.width = dv.getFloat32(); - p.height = dv.getFloat32(); - p.depth = dv.getFloat32(); - p.position = dv.getFloat32Array( 3 ); - p.rotation = dv.getFloat32Array( 3 ); - p.weight = dv.getFloat32(); - p.positionDamping = dv.getFloat32(); - p.rotationDamping = dv.getFloat32(); - p.restitution = dv.getFloat32(); - p.friction = dv.getFloat32(); - p.type = dv.getUint8(); - return p; - - }; - - var metadata = pmd.metadata; - metadata.rigidBodyCount = dv.getUint32(); - - pmd.rigidBodies = []; - - for ( var i = 0; i < metadata.rigidBodyCount; i++ ) { - - pmd.rigidBodies.push( parseRigidBody() ); - - } - - }; - - var parseConstraints = function () { - - var parseConstraint = function () { - - var p = {}; - p.name = dv.getSjisStringsAsUnicode( 20 ); - p.rigidBodyIndex1 = dv.getUint32(); - p.rigidBodyIndex2 = dv.getUint32(); - p.position = dv.getFloat32Array( 3 ); - p.rotation = dv.getFloat32Array( 3 ); - p.translationLimitation1 = dv.getFloat32Array( 3 ); - p.translationLimitation2 = dv.getFloat32Array( 3 ); - p.rotationLimitation1 = dv.getFloat32Array( 3 ); - p.rotationLimitation2 = dv.getFloat32Array( 3 ); - p.springPosition = dv.getFloat32Array( 3 ); - p.springRotation = dv.getFloat32Array( 3 ); - return p; - - }; - - var metadata = pmd.metadata; - metadata.constraintCount = dv.getUint32(); - - pmd.constraints = []; - - for ( var i = 0; i < metadata.constraintCount; i++ ) { - - pmd.constraints.push( parseConstraint() ); - - } - - }; - - parseHeader(); - parseVertices(); - parseFaces(); - parseMaterials(); - parseBones(); - parseIks(); - parseMorphs(); - parseMorphFrames(); - parseBoneFrameNames(); - parseBoneFrames(); - parseEnglishHeader(); - parseEnglishBoneNames(); - parseEnglishMorphNames(); - parseEnglishBoneFrameNames(); - parseToonTextures(); - parseRigidBodies(); - parseConstraints(); - - if ( leftToRight === true ) this.leftToRightModel( pmd ); - - // console.log( pmd ); // for console debug - - return pmd; - -}; - -Parser.prototype.parsePmx = function ( buffer, leftToRight ) { - - var pmx = {}; - var dv = new DataViewEx( buffer ); - - pmx.metadata = {}; - pmx.metadata.format = 'pmx'; - pmx.metadata.coordinateSystem = 'left'; - - var parseHeader = function () { - - var metadata = pmx.metadata; - metadata.magic = dv.getChars( 4 ); - - // Note: don't remove the last blank space. - if ( metadata.magic !== 'PMX ' ) { - - throw 'PMX file magic is not PMX , but ' + metadata.magic; - - } - - metadata.version = dv.getFloat32(); - - if ( metadata.version !== 2.0 && metadata.version !== 2.1 ) { - - throw 'PMX version ' + metadata.version + ' is not supported.'; - - } - - metadata.headerSize = dv.getUint8(); - metadata.encoding = dv.getUint8(); - metadata.additionalUvNum = dv.getUint8(); - metadata.vertexIndexSize = dv.getUint8(); - metadata.textureIndexSize = dv.getUint8(); - metadata.materialIndexSize = dv.getUint8(); - metadata.boneIndexSize = dv.getUint8(); - metadata.morphIndexSize = dv.getUint8(); - metadata.rigidBodyIndexSize = dv.getUint8(); - metadata.modelName = dv.getTextBuffer(); - metadata.englishModelName = dv.getTextBuffer(); - metadata.comment = dv.getTextBuffer(); - metadata.englishComment = dv.getTextBuffer(); - - }; - - var parseVertices = function () { - - var parseVertex = function () { - - var p = {}; - p.position = dv.getFloat32Array( 3 ); - p.normal = dv.getFloat32Array( 3 ); - p.uv = dv.getFloat32Array( 2 ); - - p.auvs = []; - - for ( var i = 0; i < pmx.metadata.additionalUvNum; i++ ) { - - p.auvs.push( dv.getFloat32Array( 4 ) ); - - } - - p.type = dv.getUint8(); - - var indexSize = metadata.boneIndexSize; - - if ( p.type === 0 ) { // BDEF1 - - p.skinIndices = dv.getIndexArray( indexSize, 1 ); - p.skinWeights = [ 1.0 ]; - - } else if ( p.type === 1 ) { // BDEF2 - - p.skinIndices = dv.getIndexArray( indexSize, 2 ); - p.skinWeights = dv.getFloat32Array( 1 ); - p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] ); - - } else if ( p.type === 2 ) { // BDEF4 - - p.skinIndices = dv.getIndexArray( indexSize, 4 ); - p.skinWeights = dv.getFloat32Array( 4 ); - - } else if ( p.type === 3 ) { // SDEF - - p.skinIndices = dv.getIndexArray( indexSize, 2 ); - p.skinWeights = dv.getFloat32Array( 1 ); - p.skinWeights.push( 1.0 - p.skinWeights[ 0 ] ); - - p.skinC = dv.getFloat32Array( 3 ); - p.skinR0 = dv.getFloat32Array( 3 ); - p.skinR1 = dv.getFloat32Array( 3 ); - - // SDEF is not supported yet and is handled as BDEF2 so far. - // TODO: SDEF support - p.type = 1; - - } else { - - throw 'unsupport bone type ' + p.type + ' exception.'; - - } - - p.edgeRatio = dv.getFloat32(); - return p; - - }; - - var metadata = pmx.metadata; - metadata.vertexCount = dv.getUint32(); - - pmx.vertices = []; - - for ( var i = 0; i < metadata.vertexCount; i++ ) { - - pmx.vertices.push( parseVertex() ); - - } - - }; - - var parseFaces = function () { - - var parseFace = function () { - - var p = {}; - p.indices = dv.getIndexArray( metadata.vertexIndexSize, 3, true ); - return p; - - }; - - var metadata = pmx.metadata; - metadata.faceCount = dv.getUint32() / 3; - - pmx.faces = []; - - for ( var i = 0; i < metadata.faceCount; i++ ) { - - pmx.faces.push( parseFace() ); - - } - - }; - - var parseTextures = function () { - - var parseTexture = function () { - - return dv.getTextBuffer(); - - }; - - var metadata = pmx.metadata; - metadata.textureCount = dv.getUint32(); - - pmx.textures = []; - - for ( var i = 0; i < metadata.textureCount; i++ ) { - - pmx.textures.push( parseTexture() ); - - } - - }; - - var parseMaterials = function () { - - var parseMaterial = function () { - - var p = {}; - p.name = dv.getTextBuffer(); - p.englishName = dv.getTextBuffer(); - p.diffuse = dv.getFloat32Array( 4 ); - p.specular = dv.getFloat32Array( 3 ); - p.shininess = dv.getFloat32(); - p.ambient = dv.getFloat32Array( 3 ); - p.flag = dv.getUint8(); - p.edgeColor = dv.getFloat32Array( 4 ); - p.edgeSize = dv.getFloat32(); - p.textureIndex = dv.getIndex( pmx.metadata.textureIndexSize ); - p.envTextureIndex = dv.getIndex( pmx.metadata.textureIndexSize ); - p.envFlag = dv.getUint8(); - p.toonFlag = dv.getUint8(); - - if ( p.toonFlag === 0 ) { - - p.toonIndex = dv.getIndex( pmx.metadata.textureIndexSize ); - - } else if ( p.toonFlag === 1 ) { - - p.toonIndex = dv.getInt8(); - - } else { - - throw 'unknown toon flag ' + p.toonFlag + ' exception.'; - - } - - p.comment = dv.getTextBuffer(); - p.faceCount = dv.getUint32() / 3; - return p; - - }; - - var metadata = pmx.metadata; - metadata.materialCount = dv.getUint32(); - - pmx.materials = []; - - for ( var i = 0; i < metadata.materialCount; i++ ) { - - pmx.materials.push( parseMaterial() ); - - } - - }; - - var parseBones = function () { - - var parseBone = function () { - - var p = {}; - p.name = dv.getTextBuffer(); - p.englishName = dv.getTextBuffer(); - p.position = dv.getFloat32Array( 3 ); - p.parentIndex = dv.getIndex( pmx.metadata.boneIndexSize ); - p.transformationClass = dv.getUint32(); - p.flag = dv.getUint16(); - - if ( p.flag & 0x1 ) { - - p.connectIndex = dv.getIndex( pmx.metadata.boneIndexSize ); - - } else { - - p.offsetPosition = dv.getFloat32Array( 3 ); - - } - - if ( p.flag & 0x100 || p.flag & 0x200 ) { - - // Note: I don't think Grant is an appropriate name - // but I found that some English translated MMD tools use this term - // so I've named it Grant so far. - // I'd rename to more appropriate name from Grant later. - var grant = {}; - - grant.isLocal = ( p.flag & 0x80 ) !== 0 ? true : false; - grant.affectRotation = ( p.flag & 0x100 ) !== 0 ? true : false; - grant.affectPosition = ( p.flag & 0x200 ) !== 0 ? true : false; - grant.parentIndex = dv.getIndex( pmx.metadata.boneIndexSize ); - grant.ratio = dv.getFloat32(); - - p.grant = grant; - - } - - if ( p.flag & 0x400 ) { - - p.fixAxis = dv.getFloat32Array( 3 ); - - } - - if ( p.flag & 0x800 ) { - - p.localXVector = dv.getFloat32Array( 3 ); - p.localZVector = dv.getFloat32Array( 3 ); - - } - - if ( p.flag & 0x2000 ) { - - p.key = dv.getUint32(); - - } - - if ( p.flag & 0x20 ) { - - var ik = {}; - - ik.effector = dv.getIndex( pmx.metadata.boneIndexSize ); - ik.target = null; - ik.iteration = dv.getUint32(); - ik.maxAngle = dv.getFloat32(); - ik.linkCount = dv.getUint32(); - ik.links = []; - - for ( var i = 0; i < ik.linkCount; i++ ) { - - var link = {}; - link.index = dv.getIndex( pmx.metadata.boneIndexSize ); - link.angleLimitation = dv.getUint8(); - - if ( link.angleLimitation === 1 ) { - - link.lowerLimitationAngle = dv.getFloat32Array( 3 ); - link.upperLimitationAngle = dv.getFloat32Array( 3 ); - - } - - ik.links.push( link ); - - } - - p.ik = ik; - } - - return p; - - }; - - var metadata = pmx.metadata; - metadata.boneCount = dv.getUint32(); - - pmx.bones = []; - - for ( var i = 0; i < metadata.boneCount; i++ ) { - - pmx.bones.push( parseBone() ); - - } - - }; - - var parseMorphs = function () { - - var parseMorph = function () { - - var p = {}; - p.name = dv.getTextBuffer(); - p.englishName = dv.getTextBuffer(); - p.panel = dv.getUint8(); - p.type = dv.getUint8(); - p.elementCount = dv.getUint32(); - p.elements = []; - - for ( var i = 0; i < p.elementCount; i++ ) { - - if ( p.type === 0 ) { // group morph - - var m = {}; - m.index = dv.getIndex( pmx.metadata.morphIndexSize ); - m.ratio = dv.getFloat32(); - p.elements.push( m ); - - } else if ( p.type === 1 ) { // vertex morph - - var m = {}; - m.index = dv.getIndex( pmx.metadata.vertexIndexSize, true ); - m.position = dv.getFloat32Array( 3 ); - p.elements.push( m ); - - } else if ( p.type === 2 ) { // bone morph - - var m = {}; - m.index = dv.getIndex( pmx.metadata.boneIndexSize ); - m.position = dv.getFloat32Array( 3 ); - m.rotation = dv.getFloat32Array( 4 ); - p.elements.push( m ); - - } else if ( p.type === 3 ) { // uv morph - - var m = {}; - m.index = dv.getIndex( pmx.metadata.vertexIndexSize, true ); - m.uv = dv.getFloat32Array( 4 ); - p.elements.push( m ); - - } else if ( p.type === 4 ) { // additional uv1 - - // TODO: implement - - } else if ( p.type === 5 ) { // additional uv2 - - // TODO: implement - - } else if ( p.type === 6 ) { // additional uv3 - - // TODO: implement - - } else if ( p.type === 7 ) { // additional uv4 - - // TODO: implement - - } else if ( p.type === 8 ) { // material morph - - var m = {}; - m.index = dv.getIndex( pmx.metadata.materialIndexSize ); - m.type = dv.getUint8(); - m.diffuse = dv.getFloat32Array( 4 ); - m.specular = dv.getFloat32Array( 3 ); - m.shininess = dv.getFloat32(); - m.ambient = dv.getFloat32Array( 3 ); - m.edgeColor = dv.getFloat32Array( 4 ); - m.edgeSize = dv.getFloat32(); - m.textureColor = dv.getFloat32Array( 4 ); - m.sphereTextureColor = dv.getFloat32Array( 4 ); - m.toonColor = dv.getFloat32Array( 4 ); - p.elements.push( m ); - - } - - } - - return p; - - }; - - var metadata = pmx.metadata; - metadata.morphCount = dv.getUint32(); - - pmx.morphs = []; - - for ( var i = 0; i < metadata.morphCount; i++ ) { - - pmx.morphs.push( parseMorph() ); - - } - - }; - - var parseFrames = function () { - - var parseFrame = function () { - - var p = {}; - p.name = dv.getTextBuffer(); - p.englishName = dv.getTextBuffer(); - p.type = dv.getUint8(); - p.elementCount = dv.getUint32(); - p.elements = []; - - for ( var i = 0; i < p.elementCount; i++ ) { - - var e = {}; - e.target = dv.getUint8(); - e.index = ( e.target === 0 ) ? dv.getIndex( pmx.metadata.boneIndexSize ) : dv.getIndex( pmx.metadata.morphIndexSize ); - p.elements.push( e ); - - } - - return p; - - }; - - var metadata = pmx.metadata; - metadata.frameCount = dv.getUint32(); - - pmx.frames = []; - - for ( var i = 0; i < metadata.frameCount; i++ ) { - - pmx.frames.push( parseFrame() ); - - } - - }; - - var parseRigidBodies = function () { - - var parseRigidBody = function () { - - var p = {}; - p.name = dv.getTextBuffer(); - p.englishName = dv.getTextBuffer(); - p.boneIndex = dv.getIndex( pmx.metadata.boneIndexSize ); - p.groupIndex = dv.getUint8(); - p.groupTarget = dv.getUint16(); - p.shapeType = dv.getUint8(); - p.width = dv.getFloat32(); - p.height = dv.getFloat32(); - p.depth = dv.getFloat32(); - p.position = dv.getFloat32Array( 3 ); - p.rotation = dv.getFloat32Array( 3 ); - p.weight = dv.getFloat32(); - p.positionDamping = dv.getFloat32(); - p.rotationDamping = dv.getFloat32(); - p.restitution = dv.getFloat32(); - p.friction = dv.getFloat32(); - p.type = dv.getUint8(); - return p; - - }; - - var metadata = pmx.metadata; - metadata.rigidBodyCount = dv.getUint32(); - - pmx.rigidBodies = []; - - for ( var i = 0; i < metadata.rigidBodyCount; i++ ) { - - pmx.rigidBodies.push( parseRigidBody() ); - - } - - }; - - var parseConstraints = function () { - - var parseConstraint = function () { - - var p = {}; - p.name = dv.getTextBuffer(); - p.englishName = dv.getTextBuffer(); - p.type = dv.getUint8(); - p.rigidBodyIndex1 = dv.getIndex( pmx.metadata.rigidBodyIndexSize ); - p.rigidBodyIndex2 = dv.getIndex( pmx.metadata.rigidBodyIndexSize ); - p.position = dv.getFloat32Array( 3 ); - p.rotation = dv.getFloat32Array( 3 ); - p.translationLimitation1 = dv.getFloat32Array( 3 ); - p.translationLimitation2 = dv.getFloat32Array( 3 ); - p.rotationLimitation1 = dv.getFloat32Array( 3 ); - p.rotationLimitation2 = dv.getFloat32Array( 3 ); - p.springPosition = dv.getFloat32Array( 3 ); - p.springRotation = dv.getFloat32Array( 3 ); - return p; - - }; - - var metadata = pmx.metadata; - metadata.constraintCount = dv.getUint32(); - - pmx.constraints = []; - - for ( var i = 0; i < metadata.constraintCount; i++ ) { - - pmx.constraints.push( parseConstraint() ); - - } - - }; - - parseHeader(); - parseVertices(); - parseFaces(); - parseTextures(); - parseMaterials(); - parseBones(); - parseMorphs(); - parseFrames(); - parseRigidBodies(); - parseConstraints(); - - if ( leftToRight === true ) this.leftToRightModel( pmx ); - - // console.log( pmx ); // for console debug - - return pmx; - -}; - -Parser.prototype.parseVmd = function ( buffer, leftToRight ) { - - var vmd = {}; - var dv = new DataViewEx( buffer ); - - vmd.metadata = {}; - vmd.metadata.coordinateSystem = 'left'; - - var parseHeader = function () { - - var metadata = vmd.metadata; - metadata.magic = dv.getChars( 30 ); - - if ( metadata.magic !== 'Vocaloid Motion Data 0002' ) { - - throw 'VMD file magic is not Vocaloid Motion Data 0002, but ' + metadata.magic; - - } - - metadata.name = dv.getSjisStringsAsUnicode( 20 ); - - }; - - var parseMotions = function () { - - var parseMotion = function () { - - var p = {}; - p.boneName = dv.getSjisStringsAsUnicode( 15 ); - p.frameNum = dv.getUint32(); - p.position = dv.getFloat32Array( 3 ); - p.rotation = dv.getFloat32Array( 4 ); - p.interpolation = dv.getUint8Array( 64 ); - return p; - - }; - - var metadata = vmd.metadata; - metadata.motionCount = dv.getUint32(); - - vmd.motions = []; - for ( var i = 0; i < metadata.motionCount; i++ ) { - - vmd.motions.push( parseMotion() ); - - } - - }; - - var parseMorphs = function () { - - var parseMorph = function () { - - var p = {}; - p.morphName = dv.getSjisStringsAsUnicode( 15 ); - p.frameNum = dv.getUint32(); - p.weight = dv.getFloat32(); - return p; - - }; - - var metadata = vmd.metadata; - metadata.morphCount = dv.getUint32(); - - vmd.morphs = []; - for ( var i = 0; i < metadata.morphCount; i++ ) { - - vmd.morphs.push( parseMorph() ); - - } - - }; - - var parseCameras = function () { - - var parseCamera = function () { - - var p = {}; - p.frameNum = dv.getUint32(); - p.distance = dv.getFloat32(); - p.position = dv.getFloat32Array( 3 ); - p.rotation = dv.getFloat32Array( 3 ); - p.interpolation = dv.getUint8Array( 24 ); - p.fov = dv.getUint32(); - p.perspective = dv.getUint8(); - return p; - - }; - - var metadata = vmd.metadata; - metadata.cameraCount = dv.getUint32(); - - vmd.cameras = []; - for ( var i = 0; i < metadata.cameraCount; i++ ) { - - vmd.cameras.push( parseCamera() ); - - } - - }; - - parseHeader(); - parseMotions(); - parseMorphs(); - parseCameras(); - - if ( leftToRight === true ) this.leftToRightVmd( vmd ); - - // console.log( vmd ); // for console debug - - return vmd; - -}; - -Parser.prototype.parseVpd = function ( text, leftToRight ) { - - var vpd = {}; - - vpd.metadata = {}; - vpd.metadata.coordinateSystem = 'left'; - - vpd.bones = []; - - var commentPatternG = /\/\/\w*(\r|\n|\r\n)/g; - var newlinePattern = /\r|\n|\r\n/; - - var lines = text.replace( commentPatternG, '' ).split( newlinePattern ); - - function throwError () { - - throw 'the file seems not vpd file.'; - - } - - function checkMagic () { - - if ( lines[ 0 ] !== 'Vocaloid Pose Data file' ) { - - throwError(); - - } - - } - - function parseHeader () { - - if ( lines.length < 4 ) { - - throwError(); - - } - - vpd.metadata.parentFile = lines[ 2 ]; - vpd.metadata.boneCount = parseInt( lines[ 3 ] ); - - } - - function parseBones () { - - var boneHeaderPattern = /^\s*(Bone[0-9]+)\s*\{\s*(.*)$/; - var boneVectorPattern = /^\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*;/; - var boneQuaternionPattern = /^\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*,\s*(-?[0-9]+\.[0-9]+)\s*;/; - var boneFooterPattern = /^\s*}/; - - var bones = vpd.bones; - var n = null; - var v = null; - var q = null; - - for ( var i = 4; i < lines.length; i++ ) { - - var line = lines[ i ]; - - var result; - - result = line.match( boneHeaderPattern ); - - if ( result !== null ) { - - if ( n !== null ) { - - throwError(); - - } - - n = result[ 2 ]; - - } - - result = line.match( boneVectorPattern ); - - if ( result !== null ) { - - if ( v !== null ) { - - throwError(); - - } - - v = [ - - parseFloat( result[ 1 ] ), - parseFloat( result[ 2 ] ), - parseFloat( result[ 3 ] ) - - ]; - - } - - result = line.match( boneQuaternionPattern ); - - if ( result !== null ) { - - if ( q !== null ) { - - throwError(); - - } - - q = [ - - parseFloat( result[ 1 ] ), - parseFloat( result[ 2 ] ), - parseFloat( result[ 3 ] ), - parseFloat( result[ 4 ] ) - - ]; - - - } - - result = line.match( boneFooterPattern ); - - if ( result !== null ) { - - if ( n === null || v === null || q === null ) { - - throwError(); - - } - - bones.push( { - - name: n, - translation: v, - quaternion: q - - } ); - - n = null; - v = null; - q = null; - - } - - } - - if ( n !== null || v !== null || q !== null ) { - - throwError(); - - } - - } - - checkMagic(); - parseHeader(); - parseBones(); - - if ( leftToRight === true ) this.leftToRightVpd( vpd ); - - // console.log( vpd ); // for console debug - - return vpd; - -}; - -Parser.prototype.mergeVmds = function ( vmds ) { - - var v = {}; - v.metadata = {}; - v.metadata.name = vmds[ 0 ].metadata.name; - v.metadata.coordinateSystem = vmds[ 0 ].metadata.coordinateSystem; - v.metadata.motionCount = 0; - v.metadata.morphCount = 0; - v.metadata.cameraCount = 0; - v.motions = []; - v.morphs = []; - v.cameras = []; - - for ( var i = 0; i < vmds.length; i++ ) { - - var v2 = vmds[ i ]; - - v.metadata.motionCount += v2.metadata.motionCount; - v.metadata.morphCount += v2.metadata.morphCount; - v.metadata.cameraCount += v2.metadata.cameraCount; - - for ( var j = 0; j < v2.metadata.motionCount; j++ ) { - - v.motions.push( v2.motions[ j ] ); - - } - - for ( var j = 0; j < v2.metadata.morphCount; j++ ) { - - v.morphs.push( v2.morphs[ j ] ); - - } - - for ( var j = 0; j < v2.metadata.cameraCount; j++ ) { - - v.cameras.push( v2.cameras[ j ] ); - - } - - } - - return v; - -}; - -Parser.prototype.leftToRightModel = function ( model ) { - - if ( model.metadata.coordinateSystem === 'right' ) { - - return; - - } - - model.metadata.coordinateSystem = 'right'; - - var helper = new DataCreationHelper(); - - for ( var i = 0; i < model.metadata.vertexCount; i++ ) { - - helper.leftToRightVector3( model.vertices[ i ].position ); - helper.leftToRightVector3( model.vertices[ i ].normal ); - - } - - for ( var i = 0; i < model.metadata.faceCount; i++ ) { - - helper.leftToRightIndexOrder( model.faces[ i ].indices ); - - } - - for ( var i = 0; i < model.metadata.boneCount; i++ ) { - - helper.leftToRightVector3( model.bones[ i ].position ); - - } - - // TODO: support other morph for PMX - for ( var i = 0; i < model.metadata.morphCount; i++ ) { - - var m = model.morphs[ i ]; - - if ( model.metadata.format === 'pmx' && m.type !== 1 ) { - - // TODO: implement - continue; - - } - - for ( var j = 0; j < m.elements.length; j++ ) { - - helper.leftToRightVector3( m.elements[ j ].position ); - - } - - } - - for ( var i = 0; i < model.metadata.rigidBodyCount; i++ ) { - - helper.leftToRightVector3( model.rigidBodies[ i ].position ); - helper.leftToRightEuler( model.rigidBodies[ i ].rotation ); - - } - - for ( var i = 0; i < model.metadata.constraintCount; i++ ) { - - helper.leftToRightVector3( model.constraints[ i ].position ); - helper.leftToRightEuler( model.constraints[ i ].rotation ); - helper.leftToRightVector3Range( model.constraints[ i ].translationLimitation1, model.constraints[ i ].translationLimitation2 ); - helper.leftToRightEulerRange( model.constraints[ i ].rotationLimitation1, model.constraints[ i ].rotationLimitation2 ); - - } - -}; - -Parser.prototype.leftToRightVmd = function ( vmd ) { - - if ( vmd.metadata.coordinateSystem === 'right' ) { - - return; - - } - - vmd.metadata.coordinateSystem = 'right'; - - var helper = new DataCreationHelper(); - - for ( var i = 0; i < vmd.metadata.motionCount; i++ ) { - - helper.leftToRightVector3( vmd.motions[ i ].position ); - helper.leftToRightQuaternion( vmd.motions[ i ].rotation ); - - } - - for ( var i = 0; i < vmd.metadata.cameraCount; i++ ) { - - helper.leftToRightVector3( vmd.cameras[ i ].position ); - helper.leftToRightEuler( vmd.cameras[ i ].rotation ); - - } - -}; - -Parser.prototype.leftToRightVpd = function ( vpd ) { - - if ( vpd.metadata.coordinateSystem === 'right' ) { - - return; - - } - - vpd.metadata.coordinateSystem = 'right'; - - var helper = new DataCreationHelper(); - - for ( var i = 0; i < vpd.bones.length; i++ ) { - - helper.leftToRightVector3( vpd.bones[ i ].translation ); - helper.leftToRightQuaternion( vpd.bones[ i ].quaternion ); - - } - -}; - -var MMDParser = { - CharsetEncoder: CharsetEncoder, - Parser: Parser -}; - -export { MMDParser, CharsetEncoder, Parser }; diff --git a/three/addons/libs/motion-controllers.module.js b/three/addons/libs/motion-controllers.module.js deleted file mode 100644 index 9b2caae..0000000 --- a/three/addons/libs/motion-controllers.module.js +++ /dev/null @@ -1,397 +0,0 @@ -/** - * @webxr-input-profiles/motion-controllers 1.0.0 https://github.com/immersive-web/webxr-input-profiles - */ - -const Constants = { - Handedness: Object.freeze({ - NONE: 'none', - LEFT: 'left', - RIGHT: 'right' - }), - - ComponentState: Object.freeze({ - DEFAULT: 'default', - TOUCHED: 'touched', - PRESSED: 'pressed' - }), - - ComponentProperty: Object.freeze({ - BUTTON: 'button', - X_AXIS: 'xAxis', - Y_AXIS: 'yAxis', - STATE: 'state' - }), - - ComponentType: Object.freeze({ - TRIGGER: 'trigger', - SQUEEZE: 'squeeze', - TOUCHPAD: 'touchpad', - THUMBSTICK: 'thumbstick', - BUTTON: 'button' - }), - - ButtonTouchThreshold: 0.05, - - AxisTouchThreshold: 0.1, - - VisualResponseProperty: Object.freeze({ - TRANSFORM: 'transform', - VISIBILITY: 'visibility' - }) -}; - -/** - * @description Static helper function to fetch a JSON file and turn it into a JS object - * @param {string} path - Path to JSON file to be fetched - */ -async function fetchJsonFile(path) { - const response = await fetch(path); - if (!response.ok) { - throw new Error(response.statusText); - } else { - return response.json(); - } -} - -async function fetchProfilesList(basePath) { - if (!basePath) { - throw new Error('No basePath supplied'); - } - - const profileListFileName = 'profilesList.json'; - const profilesList = await fetchJsonFile(`${basePath}/${profileListFileName}`); - return profilesList; -} - -async function fetchProfile(xrInputSource, basePath, defaultProfile = null, getAssetPath = true) { - if (!xrInputSource) { - throw new Error('No xrInputSource supplied'); - } - - if (!basePath) { - throw new Error('No basePath supplied'); - } - - // Get the list of profiles - const supportedProfilesList = await fetchProfilesList(basePath); - - // Find the relative path to the first requested profile that is recognized - let match; - xrInputSource.profiles.some((profileId) => { - const supportedProfile = supportedProfilesList[profileId]; - if (supportedProfile) { - match = { - profileId, - profilePath: `${basePath}/${supportedProfile.path}`, - deprecated: !!supportedProfile.deprecated - }; - } - return !!match; - }); - - if (!match) { - if (!defaultProfile) { - throw new Error('No matching profile name found'); - } - - const supportedProfile = supportedProfilesList[defaultProfile]; - if (!supportedProfile) { - throw new Error(`No matching profile name found and default profile "${defaultProfile}" missing.`); - } - - match = { - profileId: defaultProfile, - profilePath: `${basePath}/${supportedProfile.path}`, - deprecated: !!supportedProfile.deprecated - }; - } - - const profile = await fetchJsonFile(match.profilePath); - - let assetPath; - if (getAssetPath) { - let layout; - if (xrInputSource.handedness === 'any') { - layout = profile.layouts[Object.keys(profile.layouts)[0]]; - } else { - layout = profile.layouts[xrInputSource.handedness]; - } - if (!layout) { - throw new Error( - `No matching handedness, ${xrInputSource.handedness}, in profile ${match.profileId}` - ); - } - - if (layout.assetPath) { - assetPath = match.profilePath.replace('profile.json', layout.assetPath); - } - } - - return { profile, assetPath }; -} - -/** @constant {Object} */ -const defaultComponentValues = { - xAxis: 0, - yAxis: 0, - button: 0, - state: Constants.ComponentState.DEFAULT -}; - -/** - * @description Converts an X, Y coordinate from the range -1 to 1 (as reported by the Gamepad - * API) to the range 0 to 1 (for interpolation). Also caps the X, Y values to be bounded within - * a circle. This ensures that thumbsticks are not animated outside the bounds of their physical - * range of motion and touchpads do not report touch locations off their physical bounds. - * @param {number} x The original x coordinate in the range -1 to 1 - * @param {number} y The original y coordinate in the range -1 to 1 - */ -function normalizeAxes(x = 0, y = 0) { - let xAxis = x; - let yAxis = y; - - // Determine if the point is outside the bounds of the circle - // and, if so, place it on the edge of the circle - const hypotenuse = Math.sqrt((x * x) + (y * y)); - if (hypotenuse > 1) { - const theta = Math.atan2(y, x); - xAxis = Math.cos(theta); - yAxis = Math.sin(theta); - } - - // Scale and move the circle so values are in the interpolation range. The circle's origin moves - // from (0, 0) to (0.5, 0.5). The circle's radius scales from 1 to be 0.5. - const result = { - normalizedXAxis: (xAxis * 0.5) + 0.5, - normalizedYAxis: (yAxis * 0.5) + 0.5 - }; - return result; -} - -/** - * Contains the description of how the 3D model should visually respond to a specific user input. - * This is accomplished by initializing the object with the name of a node in the 3D model and - * property that need to be modified in response to user input, the name of the nodes representing - * the allowable range of motion, and the name of the input which triggers the change. In response - * to the named input changing, this object computes the appropriate weighting to use for - * interpolating between the range of motion nodes. - */ -class VisualResponse { - constructor(visualResponseDescription) { - this.componentProperty = visualResponseDescription.componentProperty; - this.states = visualResponseDescription.states; - this.valueNodeName = visualResponseDescription.valueNodeName; - this.valueNodeProperty = visualResponseDescription.valueNodeProperty; - - if (this.valueNodeProperty === Constants.VisualResponseProperty.TRANSFORM) { - this.minNodeName = visualResponseDescription.minNodeName; - this.maxNodeName = visualResponseDescription.maxNodeName; - } - - // Initializes the response's current value based on default data - this.value = 0; - this.updateFromComponent(defaultComponentValues); - } - - /** - * Computes the visual response's interpolation weight based on component state - * @param {Object} componentValues - The component from which to update - * @param {number} xAxis - The reported X axis value of the component - * @param {number} yAxis - The reported Y axis value of the component - * @param {number} button - The reported value of the component's button - * @param {string} state - The component's active state - */ - updateFromComponent({ - xAxis, yAxis, button, state - }) { - const { normalizedXAxis, normalizedYAxis } = normalizeAxes(xAxis, yAxis); - switch (this.componentProperty) { - case Constants.ComponentProperty.X_AXIS: - this.value = (this.states.includes(state)) ? normalizedXAxis : 0.5; - break; - case Constants.ComponentProperty.Y_AXIS: - this.value = (this.states.includes(state)) ? normalizedYAxis : 0.5; - break; - case Constants.ComponentProperty.BUTTON: - this.value = (this.states.includes(state)) ? button : 0; - break; - case Constants.ComponentProperty.STATE: - if (this.valueNodeProperty === Constants.VisualResponseProperty.VISIBILITY) { - this.value = (this.states.includes(state)); - } else { - this.value = this.states.includes(state) ? 1.0 : 0.0; - } - break; - default: - throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`); - } - } -} - -class Component { - /** - * @param {Object} componentId - Id of the component - * @param {Object} componentDescription - Description of the component to be created - */ - constructor(componentId, componentDescription) { - if (!componentId - || !componentDescription - || !componentDescription.visualResponses - || !componentDescription.gamepadIndices - || Object.keys(componentDescription.gamepadIndices).length === 0) { - throw new Error('Invalid arguments supplied'); - } - - this.id = componentId; - this.type = componentDescription.type; - this.rootNodeName = componentDescription.rootNodeName; - this.touchPointNodeName = componentDescription.touchPointNodeName; - - // Build all the visual responses for this component - this.visualResponses = {}; - Object.keys(componentDescription.visualResponses).forEach((responseName) => { - const visualResponse = new VisualResponse(componentDescription.visualResponses[responseName]); - this.visualResponses[responseName] = visualResponse; - }); - - // Set default values - this.gamepadIndices = Object.assign({}, componentDescription.gamepadIndices); - - this.values = { - state: Constants.ComponentState.DEFAULT, - button: (this.gamepadIndices.button !== undefined) ? 0 : undefined, - xAxis: (this.gamepadIndices.xAxis !== undefined) ? 0 : undefined, - yAxis: (this.gamepadIndices.yAxis !== undefined) ? 0 : undefined - }; - } - - get data() { - const data = { id: this.id, ...this.values }; - return data; - } - - /** - * @description Poll for updated data based on current gamepad state - * @param {Object} gamepad - The gamepad object from which the component data should be polled - */ - updateFromGamepad(gamepad) { - // Set the state to default before processing other data sources - this.values.state = Constants.ComponentState.DEFAULT; - - // Get and normalize button - if (this.gamepadIndices.button !== undefined - && gamepad.buttons.length > this.gamepadIndices.button) { - const gamepadButton = gamepad.buttons[this.gamepadIndices.button]; - this.values.button = gamepadButton.value; - this.values.button = (this.values.button < 0) ? 0 : this.values.button; - this.values.button = (this.values.button > 1) ? 1 : this.values.button; - - // Set the state based on the button - if (gamepadButton.pressed || this.values.button === 1) { - this.values.state = Constants.ComponentState.PRESSED; - } else if (gamepadButton.touched || this.values.button > Constants.ButtonTouchThreshold) { - this.values.state = Constants.ComponentState.TOUCHED; - } - } - - // Get and normalize x axis value - if (this.gamepadIndices.xAxis !== undefined - && gamepad.axes.length > this.gamepadIndices.xAxis) { - this.values.xAxis = gamepad.axes[this.gamepadIndices.xAxis]; - this.values.xAxis = (this.values.xAxis < -1) ? -1 : this.values.xAxis; - this.values.xAxis = (this.values.xAxis > 1) ? 1 : this.values.xAxis; - - // If the state is still default, check if the xAxis makes it touched - if (this.values.state === Constants.ComponentState.DEFAULT - && Math.abs(this.values.xAxis) > Constants.AxisTouchThreshold) { - this.values.state = Constants.ComponentState.TOUCHED; - } - } - - // Get and normalize Y axis value - if (this.gamepadIndices.yAxis !== undefined - && gamepad.axes.length > this.gamepadIndices.yAxis) { - this.values.yAxis = gamepad.axes[this.gamepadIndices.yAxis]; - this.values.yAxis = (this.values.yAxis < -1) ? -1 : this.values.yAxis; - this.values.yAxis = (this.values.yAxis > 1) ? 1 : this.values.yAxis; - - // If the state is still default, check if the yAxis makes it touched - if (this.values.state === Constants.ComponentState.DEFAULT - && Math.abs(this.values.yAxis) > Constants.AxisTouchThreshold) { - this.values.state = Constants.ComponentState.TOUCHED; - } - } - - // Update the visual response weights based on the current component data - Object.values(this.visualResponses).forEach((visualResponse) => { - visualResponse.updateFromComponent(this.values); - }); - } -} - -/** - * @description Builds a motion controller with components and visual responses based on the - * supplied profile description. Data is polled from the xrInputSource's gamepad. - * @author Nell Waliczek / https://github.com/NellWaliczek -*/ -class MotionController { - /** - * @param {Object} xrInputSource - The XRInputSource to build the MotionController around - * @param {Object} profile - The best matched profile description for the supplied xrInputSource - * @param {Object} assetUrl - */ - constructor(xrInputSource, profile, assetUrl) { - if (!xrInputSource) { - throw new Error('No xrInputSource supplied'); - } - - if (!profile) { - throw new Error('No profile supplied'); - } - - this.xrInputSource = xrInputSource; - this.assetUrl = assetUrl; - this.id = profile.profileId; - - // Build child components as described in the profile description - this.layoutDescription = profile.layouts[xrInputSource.handedness]; - this.components = {}; - Object.keys(this.layoutDescription.components).forEach((componentId) => { - const componentDescription = this.layoutDescription.components[componentId]; - this.components[componentId] = new Component(componentId, componentDescription); - }); - - // Initialize components based on current gamepad state - this.updateFromGamepad(); - } - - get gripSpace() { - return this.xrInputSource.gripSpace; - } - - get targetRaySpace() { - return this.xrInputSource.targetRaySpace; - } - - /** - * @description Returns a subset of component data for simplified debugging - */ - get data() { - const data = []; - Object.values(this.components).forEach((component) => { - data.push(component.data); - }); - return data; - } - - /** - * @description Poll for updated data based on current gamepad state - */ - updateFromGamepad() { - Object.values(this.components).forEach((component) => { - component.updateFromGamepad(this.xrInputSource.gamepad); - }); - } -} - -export { Constants, MotionController, fetchProfile, fetchProfilesList }; diff --git a/three/addons/libs/opentype.module.js b/three/addons/libs/opentype.module.js deleted file mode 100644 index 7b5d64e..0000000 --- a/three/addons/libs/opentype.module.js +++ /dev/null @@ -1,14506 +0,0 @@ -/** - * https://opentype.js.org v1.3.4 | (c) Frederik De Bleser and other contributors | MIT License | Uses tiny-inflate by Devon Govett and string.prototype.codepointat polyfill by Mathias Bynens - */ - -/*! https://mths.be/codepointat v0.2.0 by @mathias */ -if (!String.prototype.codePointAt) { - (function() { - var defineProperty = (function() { - // IE 8 only supports `Object.defineProperty` on DOM elements - try { - var object = {}; - var $defineProperty = Object.defineProperty; - var result = $defineProperty(object, object, object) && $defineProperty; - } catch(error) {} - return result; - }()); - var codePointAt = function(position) { - if (this == null) { - throw TypeError(); - } - var string = String(this); - var size = string.length; - // `ToInteger` - var index = position ? Number(position) : 0; - if (index != index) { // better `isNaN` - index = 0; - } - // Account for out-of-bounds indices: - if (index < 0 || index >= size) { - return undefined; - } - // Get the first code unit - var first = string.charCodeAt(index); - var second; - if ( // check if it’s the start of a surrogate pair - first >= 0xD800 && first <= 0xDBFF && // high surrogate - size > index + 1 // there is a next code unit - ) { - second = string.charCodeAt(index + 1); - if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate - // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; - } - } - return first; - }; - if (defineProperty) { - defineProperty(String.prototype, 'codePointAt', { - 'value': codePointAt, - 'configurable': true, - 'writable': true - }); - } else { - String.prototype.codePointAt = codePointAt; - } - }()); -} - -var TINF_OK = 0; -var TINF_DATA_ERROR = -3; - -function Tree() { - this.table = new Uint16Array(16); /* table of code length counts */ - this.trans = new Uint16Array(288); /* code -> symbol translation table */ -} - -function Data(source, dest) { - this.source = source; - this.sourceIndex = 0; - this.tag = 0; - this.bitcount = 0; - - this.dest = dest; - this.destLen = 0; - - this.ltree = new Tree(); /* dynamic length/symbol tree */ - this.dtree = new Tree(); /* dynamic distance tree */ -} - -/* --------------------------------------------------- * - * -- uninitialized global data (static structures) -- * - * --------------------------------------------------- */ - -var sltree = new Tree(); -var sdtree = new Tree(); - -/* extra bits and base tables for length codes */ -var length_bits = new Uint8Array(30); -var length_base = new Uint16Array(30); - -/* extra bits and base tables for distance codes */ -var dist_bits = new Uint8Array(30); -var dist_base = new Uint16Array(30); - -/* special ordering of code length codes */ -var clcidx = new Uint8Array([ - 16, 17, 18, 0, 8, 7, 9, 6, - 10, 5, 11, 4, 12, 3, 13, 2, - 14, 1, 15 -]); - -/* used by tinf_decode_trees, avoids allocations every call */ -var code_tree = new Tree(); -var lengths = new Uint8Array(288 + 32); - -/* ----------------------- * - * -- utility functions -- * - * ----------------------- */ - -/* build extra bits and base tables */ -function tinf_build_bits_base(bits, base, delta, first) { - var i, sum; - - /* build bits table */ - for (i = 0; i < delta; ++i) { bits[i] = 0; } - for (i = 0; i < 30 - delta; ++i) { bits[i + delta] = i / delta | 0; } - - /* build base table */ - for (sum = first, i = 0; i < 30; ++i) { - base[i] = sum; - sum += 1 << bits[i]; - } -} - -/* build the fixed huffman trees */ -function tinf_build_fixed_trees(lt, dt) { - var i; - - /* build fixed length tree */ - for (i = 0; i < 7; ++i) { lt.table[i] = 0; } - - lt.table[7] = 24; - lt.table[8] = 152; - lt.table[9] = 112; - - for (i = 0; i < 24; ++i) { lt.trans[i] = 256 + i; } - for (i = 0; i < 144; ++i) { lt.trans[24 + i] = i; } - for (i = 0; i < 8; ++i) { lt.trans[24 + 144 + i] = 280 + i; } - for (i = 0; i < 112; ++i) { lt.trans[24 + 144 + 8 + i] = 144 + i; } - - /* build fixed distance tree */ - for (i = 0; i < 5; ++i) { dt.table[i] = 0; } - - dt.table[5] = 32; - - for (i = 0; i < 32; ++i) { dt.trans[i] = i; } -} - -/* given an array of code lengths, build a tree */ -var offs = new Uint16Array(16); - -function tinf_build_tree(t, lengths, off, num) { - var i, sum; - - /* clear code length count table */ - for (i = 0; i < 16; ++i) { t.table[i] = 0; } - - /* scan symbol lengths, and sum code length counts */ - for (i = 0; i < num; ++i) { t.table[lengths[off + i]]++; } - - t.table[0] = 0; - - /* compute offset table for distribution sort */ - for (sum = 0, i = 0; i < 16; ++i) { - offs[i] = sum; - sum += t.table[i]; - } - - /* create code->symbol translation table (symbols sorted by code) */ - for (i = 0; i < num; ++i) { - if (lengths[off + i]) { t.trans[offs[lengths[off + i]]++] = i; } - } -} - -/* ---------------------- * - * -- decode functions -- * - * ---------------------- */ - -/* get one bit from source stream */ -function tinf_getbit(d) { - /* check if tag is empty */ - if (!d.bitcount--) { - /* load next tag */ - d.tag = d.source[d.sourceIndex++]; - d.bitcount = 7; - } - - /* shift bit out of tag */ - var bit = d.tag & 1; - d.tag >>>= 1; - - return bit; -} - -/* read a num bit value from a stream and add base */ -function tinf_read_bits(d, num, base) { - if (!num) - { return base; } - - while (d.bitcount < 24) { - d.tag |= d.source[d.sourceIndex++] << d.bitcount; - d.bitcount += 8; - } - - var val = d.tag & (0xffff >>> (16 - num)); - d.tag >>>= num; - d.bitcount -= num; - return val + base; -} - -/* given a data stream and a tree, decode a symbol */ -function tinf_decode_symbol(d, t) { - while (d.bitcount < 24) { - d.tag |= d.source[d.sourceIndex++] << d.bitcount; - d.bitcount += 8; - } - - var sum = 0, cur = 0, len = 0; - var tag = d.tag; - - /* get more bits while code value is above sum */ - do { - cur = 2 * cur + (tag & 1); - tag >>>= 1; - ++len; - - sum += t.table[len]; - cur -= t.table[len]; - } while (cur >= 0); - - d.tag = tag; - d.bitcount -= len; - - return t.trans[sum + cur]; -} - -/* given a data stream, decode dynamic trees from it */ -function tinf_decode_trees(d, lt, dt) { - var hlit, hdist, hclen; - var i, num, length; - - /* get 5 bits HLIT (257-286) */ - hlit = tinf_read_bits(d, 5, 257); - - /* get 5 bits HDIST (1-32) */ - hdist = tinf_read_bits(d, 5, 1); - - /* get 4 bits HCLEN (4-19) */ - hclen = tinf_read_bits(d, 4, 4); - - for (i = 0; i < 19; ++i) { lengths[i] = 0; } - - /* read code lengths for code length alphabet */ - for (i = 0; i < hclen; ++i) { - /* get 3 bits code length (0-7) */ - var clen = tinf_read_bits(d, 3, 0); - lengths[clcidx[i]] = clen; - } - - /* build code length tree */ - tinf_build_tree(code_tree, lengths, 0, 19); - - /* decode code lengths for the dynamic trees */ - for (num = 0; num < hlit + hdist;) { - var sym = tinf_decode_symbol(d, code_tree); - - switch (sym) { - case 16: - /* copy previous code length 3-6 times (read 2 bits) */ - var prev = lengths[num - 1]; - for (length = tinf_read_bits(d, 2, 3); length; --length) { - lengths[num++] = prev; - } - break; - case 17: - /* repeat code length 0 for 3-10 times (read 3 bits) */ - for (length = tinf_read_bits(d, 3, 3); length; --length) { - lengths[num++] = 0; - } - break; - case 18: - /* repeat code length 0 for 11-138 times (read 7 bits) */ - for (length = tinf_read_bits(d, 7, 11); length; --length) { - lengths[num++] = 0; - } - break; - default: - /* values 0-15 represent the actual code lengths */ - lengths[num++] = sym; - break; - } - } - - /* build dynamic trees */ - tinf_build_tree(lt, lengths, 0, hlit); - tinf_build_tree(dt, lengths, hlit, hdist); -} - -/* ----------------------------- * - * -- block inflate functions -- * - * ----------------------------- */ - -/* given a stream and two trees, inflate a block of data */ -function tinf_inflate_block_data(d, lt, dt) { - while (1) { - var sym = tinf_decode_symbol(d, lt); - - /* check for end of block */ - if (sym === 256) { - return TINF_OK; - } - - if (sym < 256) { - d.dest[d.destLen++] = sym; - } else { - var length, dist, offs; - var i; - - sym -= 257; - - /* possibly get more bits from length code */ - length = tinf_read_bits(d, length_bits[sym], length_base[sym]); - - dist = tinf_decode_symbol(d, dt); - - /* possibly get more bits from distance code */ - offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]); - - /* copy match */ - for (i = offs; i < offs + length; ++i) { - d.dest[d.destLen++] = d.dest[i]; - } - } - } -} - -/* inflate an uncompressed block of data */ -function tinf_inflate_uncompressed_block(d) { - var length, invlength; - var i; - - /* unread from bitbuffer */ - while (d.bitcount > 8) { - d.sourceIndex--; - d.bitcount -= 8; - } - - /* get length */ - length = d.source[d.sourceIndex + 1]; - length = 256 * length + d.source[d.sourceIndex]; - - /* get one's complement of length */ - invlength = d.source[d.sourceIndex + 3]; - invlength = 256 * invlength + d.source[d.sourceIndex + 2]; - - /* check length */ - if (length !== (~invlength & 0x0000ffff)) - { return TINF_DATA_ERROR; } - - d.sourceIndex += 4; - - /* copy block */ - for (i = length; i; --i) - { d.dest[d.destLen++] = d.source[d.sourceIndex++]; } - - /* make sure we start next block on a byte boundary */ - d.bitcount = 0; - - return TINF_OK; -} - -/* inflate stream from source to dest */ -function tinf_uncompress(source, dest) { - var d = new Data(source, dest); - var bfinal, btype, res; - - do { - /* read final block flag */ - bfinal = tinf_getbit(d); - - /* read block type (2 bits) */ - btype = tinf_read_bits(d, 2, 0); - - /* decompress block */ - switch (btype) { - case 0: - /* decompress uncompressed block */ - res = tinf_inflate_uncompressed_block(d); - break; - case 1: - /* decompress block with fixed huffman trees */ - res = tinf_inflate_block_data(d, sltree, sdtree); - break; - case 2: - /* decompress block with dynamic huffman trees */ - tinf_decode_trees(d, d.ltree, d.dtree); - res = tinf_inflate_block_data(d, d.ltree, d.dtree); - break; - default: - res = TINF_DATA_ERROR; - } - - if (res !== TINF_OK) - { throw new Error('Data error'); } - - } while (!bfinal); - - if (d.destLen < d.dest.length) { - if (typeof d.dest.slice === 'function') - { return d.dest.slice(0, d.destLen); } - else - { return d.dest.subarray(0, d.destLen); } - } - - return d.dest; -} - -/* -------------------- * - * -- initialization -- * - * -------------------- */ - -/* build fixed huffman trees */ -tinf_build_fixed_trees(sltree, sdtree); - -/* build extra bits and base tables */ -tinf_build_bits_base(length_bits, length_base, 4, 3); -tinf_build_bits_base(dist_bits, dist_base, 2, 1); - -/* fix a special case */ -length_bits[28] = 0; -length_base[28] = 258; - -var tinyInflate = tinf_uncompress; - -// The Bounding Box object - -function derive(v0, v1, v2, v3, t) { - return Math.pow(1 - t, 3) * v0 + - 3 * Math.pow(1 - t, 2) * t * v1 + - 3 * (1 - t) * Math.pow(t, 2) * v2 + - Math.pow(t, 3) * v3; -} -/** - * A bounding box is an enclosing box that describes the smallest measure within which all the points lie. - * It is used to calculate the bounding box of a glyph or text path. - * - * On initialization, x1/y1/x2/y2 will be NaN. Check if the bounding box is empty using `isEmpty()`. - * - * @exports opentype.BoundingBox - * @class - * @constructor - */ -function BoundingBox() { - this.x1 = Number.NaN; - this.y1 = Number.NaN; - this.x2 = Number.NaN; - this.y2 = Number.NaN; -} - -/** - * Returns true if the bounding box is empty, that is, no points have been added to the box yet. - */ -BoundingBox.prototype.isEmpty = function() { - return isNaN(this.x1) || isNaN(this.y1) || isNaN(this.x2) || isNaN(this.y2); -}; - -/** - * Add the point to the bounding box. - * The x1/y1/x2/y2 coordinates of the bounding box will now encompass the given point. - * @param {number} x - The X coordinate of the point. - * @param {number} y - The Y coordinate of the point. - */ -BoundingBox.prototype.addPoint = function(x, y) { - if (typeof x === 'number') { - if (isNaN(this.x1) || isNaN(this.x2)) { - this.x1 = x; - this.x2 = x; - } - if (x < this.x1) { - this.x1 = x; - } - if (x > this.x2) { - this.x2 = x; - } - } - if (typeof y === 'number') { - if (isNaN(this.y1) || isNaN(this.y2)) { - this.y1 = y; - this.y2 = y; - } - if (y < this.y1) { - this.y1 = y; - } - if (y > this.y2) { - this.y2 = y; - } - } -}; - -/** - * Add a X coordinate to the bounding box. - * This extends the bounding box to include the X coordinate. - * This function is used internally inside of addBezier. - * @param {number} x - The X coordinate of the point. - */ -BoundingBox.prototype.addX = function(x) { - this.addPoint(x, null); -}; - -/** - * Add a Y coordinate to the bounding box. - * This extends the bounding box to include the Y coordinate. - * This function is used internally inside of addBezier. - * @param {number} y - The Y coordinate of the point. - */ -BoundingBox.prototype.addY = function(y) { - this.addPoint(null, y); -}; - -/** - * Add a Bézier curve to the bounding box. - * This extends the bounding box to include the entire Bézier. - * @param {number} x0 - The starting X coordinate. - * @param {number} y0 - The starting Y coordinate. - * @param {number} x1 - The X coordinate of the first control point. - * @param {number} y1 - The Y coordinate of the first control point. - * @param {number} x2 - The X coordinate of the second control point. - * @param {number} y2 - The Y coordinate of the second control point. - * @param {number} x - The ending X coordinate. - * @param {number} y - The ending Y coordinate. - */ -BoundingBox.prototype.addBezier = function(x0, y0, x1, y1, x2, y2, x, y) { - // This code is based on http://nishiohirokazu.blogspot.com/2009/06/how-to-calculate-bezier-curves-bounding.html - // and https://github.com/icons8/svg-path-bounding-box - - var p0 = [x0, y0]; - var p1 = [x1, y1]; - var p2 = [x2, y2]; - var p3 = [x, y]; - - this.addPoint(x0, y0); - this.addPoint(x, y); - - for (var i = 0; i <= 1; i++) { - var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; - var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; - var c = 3 * p1[i] - 3 * p0[i]; - - if (a === 0) { - if (b === 0) { continue; } - var t = -c / b; - if (0 < t && t < 1) { - if (i === 0) { this.addX(derive(p0[i], p1[i], p2[i], p3[i], t)); } - if (i === 1) { this.addY(derive(p0[i], p1[i], p2[i], p3[i], t)); } - } - continue; - } - - var b2ac = Math.pow(b, 2) - 4 * c * a; - if (b2ac < 0) { continue; } - var t1 = (-b + Math.sqrt(b2ac)) / (2 * a); - if (0 < t1 && t1 < 1) { - if (i === 0) { this.addX(derive(p0[i], p1[i], p2[i], p3[i], t1)); } - if (i === 1) { this.addY(derive(p0[i], p1[i], p2[i], p3[i], t1)); } - } - var t2 = (-b - Math.sqrt(b2ac)) / (2 * a); - if (0 < t2 && t2 < 1) { - if (i === 0) { this.addX(derive(p0[i], p1[i], p2[i], p3[i], t2)); } - if (i === 1) { this.addY(derive(p0[i], p1[i], p2[i], p3[i], t2)); } - } - } -}; - -/** - * Add a quadratic curve to the bounding box. - * This extends the bounding box to include the entire quadratic curve. - * @param {number} x0 - The starting X coordinate. - * @param {number} y0 - The starting Y coordinate. - * @param {number} x1 - The X coordinate of the control point. - * @param {number} y1 - The Y coordinate of the control point. - * @param {number} x - The ending X coordinate. - * @param {number} y - The ending Y coordinate. - */ -BoundingBox.prototype.addQuad = function(x0, y0, x1, y1, x, y) { - var cp1x = x0 + 2 / 3 * (x1 - x0); - var cp1y = y0 + 2 / 3 * (y1 - y0); - var cp2x = cp1x + 1 / 3 * (x - x0); - var cp2y = cp1y + 1 / 3 * (y - y0); - this.addBezier(x0, y0, cp1x, cp1y, cp2x, cp2y, x, y); -}; - -// Geometric objects - -/** - * A bézier path containing a set of path commands similar to a SVG path. - * Paths can be drawn on a context using `draw`. - * @exports opentype.Path - * @class - * @constructor - */ -function Path() { - this.commands = []; - this.fill = 'black'; - this.stroke = null; - this.strokeWidth = 1; -} - -/** - * @param {number} x - * @param {number} y - */ -Path.prototype.moveTo = function(x, y) { - this.commands.push({ - type: 'M', - x: x, - y: y - }); -}; - -/** - * @param {number} x - * @param {number} y - */ -Path.prototype.lineTo = function(x, y) { - this.commands.push({ - type: 'L', - x: x, - y: y - }); -}; - -/** - * Draws cubic curve - * @function - * curveTo - * @memberof opentype.Path.prototype - * @param {number} x1 - x of control 1 - * @param {number} y1 - y of control 1 - * @param {number} x2 - x of control 2 - * @param {number} y2 - y of control 2 - * @param {number} x - x of path point - * @param {number} y - y of path point - */ - -/** - * Draws cubic curve - * @function - * bezierCurveTo - * @memberof opentype.Path.prototype - * @param {number} x1 - x of control 1 - * @param {number} y1 - y of control 1 - * @param {number} x2 - x of control 2 - * @param {number} y2 - y of control 2 - * @param {number} x - x of path point - * @param {number} y - y of path point - * @see curveTo - */ -Path.prototype.curveTo = Path.prototype.bezierCurveTo = function(x1, y1, x2, y2, x, y) { - this.commands.push({ - type: 'C', - x1: x1, - y1: y1, - x2: x2, - y2: y2, - x: x, - y: y - }); -}; - -/** - * Draws quadratic curve - * @function - * quadraticCurveTo - * @memberof opentype.Path.prototype - * @param {number} x1 - x of control - * @param {number} y1 - y of control - * @param {number} x - x of path point - * @param {number} y - y of path point - */ - -/** - * Draws quadratic curve - * @function - * quadTo - * @memberof opentype.Path.prototype - * @param {number} x1 - x of control - * @param {number} y1 - y of control - * @param {number} x - x of path point - * @param {number} y - y of path point - */ -Path.prototype.quadTo = Path.prototype.quadraticCurveTo = function(x1, y1, x, y) { - this.commands.push({ - type: 'Q', - x1: x1, - y1: y1, - x: x, - y: y - }); -}; - -/** - * Closes the path - * @function closePath - * @memberof opentype.Path.prototype - */ - -/** - * Close the path - * @function close - * @memberof opentype.Path.prototype - */ -Path.prototype.close = Path.prototype.closePath = function() { - this.commands.push({ - type: 'Z' - }); -}; - -/** - * Add the given path or list of commands to the commands of this path. - * @param {Array} pathOrCommands - another opentype.Path, an opentype.BoundingBox, or an array of commands. - */ -Path.prototype.extend = function(pathOrCommands) { - if (pathOrCommands.commands) { - pathOrCommands = pathOrCommands.commands; - } else if (pathOrCommands instanceof BoundingBox) { - var box = pathOrCommands; - this.moveTo(box.x1, box.y1); - this.lineTo(box.x2, box.y1); - this.lineTo(box.x2, box.y2); - this.lineTo(box.x1, box.y2); - this.close(); - return; - } - - Array.prototype.push.apply(this.commands, pathOrCommands); -}; - -/** - * Calculate the bounding box of the path. - * @returns {opentype.BoundingBox} - */ -Path.prototype.getBoundingBox = function() { - var box = new BoundingBox(); - - var startX = 0; - var startY = 0; - var prevX = 0; - var prevY = 0; - for (var i = 0; i < this.commands.length; i++) { - var cmd = this.commands[i]; - switch (cmd.type) { - case 'M': - box.addPoint(cmd.x, cmd.y); - startX = prevX = cmd.x; - startY = prevY = cmd.y; - break; - case 'L': - box.addPoint(cmd.x, cmd.y); - prevX = cmd.x; - prevY = cmd.y; - break; - case 'Q': - box.addQuad(prevX, prevY, cmd.x1, cmd.y1, cmd.x, cmd.y); - prevX = cmd.x; - prevY = cmd.y; - break; - case 'C': - box.addBezier(prevX, prevY, cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y); - prevX = cmd.x; - prevY = cmd.y; - break; - case 'Z': - prevX = startX; - prevY = startY; - break; - default: - throw new Error('Unexpected path command ' + cmd.type); - } - } - if (box.isEmpty()) { - box.addPoint(0, 0); - } - return box; -}; - -/** - * Draw the path to a 2D context. - * @param {CanvasRenderingContext2D} ctx - A 2D drawing context. - */ -Path.prototype.draw = function(ctx) { - ctx.beginPath(); - for (var i = 0; i < this.commands.length; i += 1) { - var cmd = this.commands[i]; - if (cmd.type === 'M') { - ctx.moveTo(cmd.x, cmd.y); - } else if (cmd.type === 'L') { - ctx.lineTo(cmd.x, cmd.y); - } else if (cmd.type === 'C') { - ctx.bezierCurveTo(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y); - } else if (cmd.type === 'Q') { - ctx.quadraticCurveTo(cmd.x1, cmd.y1, cmd.x, cmd.y); - } else if (cmd.type === 'Z') { - ctx.closePath(); - } - } - - if (this.fill) { - ctx.fillStyle = this.fill; - ctx.fill(); - } - - if (this.stroke) { - ctx.strokeStyle = this.stroke; - ctx.lineWidth = this.strokeWidth; - ctx.stroke(); - } -}; - -/** - * Convert the Path to a string of path data instructions - * See http://www.w3.org/TR/SVG/paths.html#PathData - * @param {number} [decimalPlaces=2] - The amount of decimal places for floating-point values - * @return {string} - */ -Path.prototype.toPathData = function(decimalPlaces) { - decimalPlaces = decimalPlaces !== undefined ? decimalPlaces : 2; - - function floatToString(v) { - if (Math.round(v) === v) { - return '' + Math.round(v); - } else { - return v.toFixed(decimalPlaces); - } - } - - function packValues() { - var arguments$1 = arguments; - - var s = ''; - for (var i = 0; i < arguments.length; i += 1) { - var v = arguments$1[i]; - if (v >= 0 && i > 0) { - s += ' '; - } - - s += floatToString(v); - } - - return s; - } - - var d = ''; - for (var i = 0; i < this.commands.length; i += 1) { - var cmd = this.commands[i]; - if (cmd.type === 'M') { - d += 'M' + packValues(cmd.x, cmd.y); - } else if (cmd.type === 'L') { - d += 'L' + packValues(cmd.x, cmd.y); - } else if (cmd.type === 'C') { - d += 'C' + packValues(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y); - } else if (cmd.type === 'Q') { - d += 'Q' + packValues(cmd.x1, cmd.y1, cmd.x, cmd.y); - } else if (cmd.type === 'Z') { - d += 'Z'; - } - } - - return d; -}; - -/** - * Convert the path to an SVG element, as a string. - * @param {number} [decimalPlaces=2] - The amount of decimal places for floating-point values - * @return {string} - */ -Path.prototype.toSVG = function(decimalPlaces) { - var svg = '= 0 && v <= 255, 'Byte value should be between 0 and 255.'); - return [v]; -}; -/** - * @constant - * @type {number} - */ -sizeOf.BYTE = constant(1); - -/** - * Convert a 8-bit signed integer to a list of 1 byte. - * @param {string} - * @returns {Array} - */ -encode.CHAR = function(v) { - return [v.charCodeAt(0)]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.CHAR = constant(1); - -/** - * Convert an ASCII string to a list of bytes. - * @param {string} - * @returns {Array} - */ -encode.CHARARRAY = function(v) { - if (typeof v === 'undefined') { - v = ''; - console.warn('Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name.'); - } - var b = []; - for (var i = 0; i < v.length; i += 1) { - b[i] = v.charCodeAt(i); - } - - return b; -}; - -/** - * @param {Array} - * @returns {number} - */ -sizeOf.CHARARRAY = function(v) { - if (typeof v === 'undefined') { - return 0; - } - return v.length; -}; - -/** - * Convert a 16-bit unsigned integer to a list of 2 bytes. - * @param {number} - * @returns {Array} - */ -encode.USHORT = function(v) { - return [(v >> 8) & 0xFF, v & 0xFF]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.USHORT = constant(2); - -/** - * Convert a 16-bit signed integer to a list of 2 bytes. - * @param {number} - * @returns {Array} - */ -encode.SHORT = function(v) { - // Two's complement - if (v >= LIMIT16) { - v = -(2 * LIMIT16 - v); - } - - return [(v >> 8) & 0xFF, v & 0xFF]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.SHORT = constant(2); - -/** - * Convert a 24-bit unsigned integer to a list of 3 bytes. - * @param {number} - * @returns {Array} - */ -encode.UINT24 = function(v) { - return [(v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.UINT24 = constant(3); - -/** - * Convert a 32-bit unsigned integer to a list of 4 bytes. - * @param {number} - * @returns {Array} - */ -encode.ULONG = function(v) { - return [(v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.ULONG = constant(4); - -/** - * Convert a 32-bit unsigned integer to a list of 4 bytes. - * @param {number} - * @returns {Array} - */ -encode.LONG = function(v) { - // Two's complement - if (v >= LIMIT32) { - v = -(2 * LIMIT32 - v); - } - - return [(v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.LONG = constant(4); - -encode.FIXED = encode.ULONG; -sizeOf.FIXED = sizeOf.ULONG; - -encode.FWORD = encode.SHORT; -sizeOf.FWORD = sizeOf.SHORT; - -encode.UFWORD = encode.USHORT; -sizeOf.UFWORD = sizeOf.USHORT; - -/** - * Convert a 32-bit Apple Mac timestamp integer to a list of 8 bytes, 64-bit timestamp. - * @param {number} - * @returns {Array} - */ -encode.LONGDATETIME = function(v) { - return [0, 0, 0, 0, (v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.LONGDATETIME = constant(8); - -/** - * Convert a 4-char tag to a list of 4 bytes. - * @param {string} - * @returns {Array} - */ -encode.TAG = function(v) { - check.argument(v.length === 4, 'Tag should be exactly 4 ASCII characters.'); - return [v.charCodeAt(0), - v.charCodeAt(1), - v.charCodeAt(2), - v.charCodeAt(3)]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.TAG = constant(4); - -// CFF data types /////////////////////////////////////////////////////////// - -encode.Card8 = encode.BYTE; -sizeOf.Card8 = sizeOf.BYTE; - -encode.Card16 = encode.USHORT; -sizeOf.Card16 = sizeOf.USHORT; - -encode.OffSize = encode.BYTE; -sizeOf.OffSize = sizeOf.BYTE; - -encode.SID = encode.USHORT; -sizeOf.SID = sizeOf.USHORT; - -// Convert a numeric operand or charstring number to a variable-size list of bytes. -/** - * Convert a numeric operand or charstring number to a variable-size list of bytes. - * @param {number} - * @returns {Array} - */ -encode.NUMBER = function(v) { - if (v >= -107 && v <= 107) { - return [v + 139]; - } else if (v >= 108 && v <= 1131) { - v = v - 108; - return [(v >> 8) + 247, v & 0xFF]; - } else if (v >= -1131 && v <= -108) { - v = -v - 108; - return [(v >> 8) + 251, v & 0xFF]; - } else if (v >= -32768 && v <= 32767) { - return encode.NUMBER16(v); - } else { - return encode.NUMBER32(v); - } -}; - -/** - * @param {number} - * @returns {number} - */ -sizeOf.NUMBER = function(v) { - return encode.NUMBER(v).length; -}; - -/** - * Convert a signed number between -32768 and +32767 to a three-byte value. - * This ensures we always use three bytes, but is not the most compact format. - * @param {number} - * @returns {Array} - */ -encode.NUMBER16 = function(v) { - return [28, (v >> 8) & 0xFF, v & 0xFF]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.NUMBER16 = constant(3); - -/** - * Convert a signed number between -(2^31) and +(2^31-1) to a five-byte value. - * This is useful if you want to be sure you always use four bytes, - * at the expense of wasting a few bytes for smaller numbers. - * @param {number} - * @returns {Array} - */ -encode.NUMBER32 = function(v) { - return [29, (v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF]; -}; - -/** - * @constant - * @type {number} - */ -sizeOf.NUMBER32 = constant(5); - -/** - * @param {number} - * @returns {Array} - */ -encode.REAL = function(v) { - var value = v.toString(); - - // Some numbers use an epsilon to encode the value. (e.g. JavaScript will store 0.0000001 as 1e-7) - // This code converts it back to a number without the epsilon. - var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value); - if (m) { - var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length)); - value = (Math.round(v * epsilon) / epsilon).toString(); - } - - var nibbles = ''; - for (var i = 0, ii = value.length; i < ii; i += 1) { - var c = value[i]; - if (c === 'e') { - nibbles += value[++i] === '-' ? 'c' : 'b'; - } else if (c === '.') { - nibbles += 'a'; - } else if (c === '-') { - nibbles += 'e'; - } else { - nibbles += c; - } - } - - nibbles += (nibbles.length & 1) ? 'f' : 'ff'; - var out = [30]; - for (var i$1 = 0, ii$1 = nibbles.length; i$1 < ii$1; i$1 += 2) { - out.push(parseInt(nibbles.substr(i$1, 2), 16)); - } - - return out; -}; - -/** - * @param {number} - * @returns {number} - */ -sizeOf.REAL = function(v) { - return encode.REAL(v).length; -}; - -encode.NAME = encode.CHARARRAY; -sizeOf.NAME = sizeOf.CHARARRAY; - -encode.STRING = encode.CHARARRAY; -sizeOf.STRING = sizeOf.CHARARRAY; - -/** - * @param {DataView} data - * @param {number} offset - * @param {number} numBytes - * @returns {string} - */ -decode.UTF8 = function(data, offset, numBytes) { - var codePoints = []; - var numChars = numBytes; - for (var j = 0; j < numChars; j++, offset += 1) { - codePoints[j] = data.getUint8(offset); - } - - return String.fromCharCode.apply(null, codePoints); -}; - -/** - * @param {DataView} data - * @param {number} offset - * @param {number} numBytes - * @returns {string} - */ -decode.UTF16 = function(data, offset, numBytes) { - var codePoints = []; - var numChars = numBytes / 2; - for (var j = 0; j < numChars; j++, offset += 2) { - codePoints[j] = data.getUint16(offset); - } - - return String.fromCharCode.apply(null, codePoints); -}; - -/** - * Convert a JavaScript string to UTF16-BE. - * @param {string} - * @returns {Array} - */ -encode.UTF16 = function(v) { - var b = []; - for (var i = 0; i < v.length; i += 1) { - var codepoint = v.charCodeAt(i); - b[b.length] = (codepoint >> 8) & 0xFF; - b[b.length] = codepoint & 0xFF; - } - - return b; -}; - -/** - * @param {string} - * @returns {number} - */ -sizeOf.UTF16 = function(v) { - return v.length * 2; -}; - -// Data for converting old eight-bit Macintosh encodings to Unicode. -// This representation is optimized for decoding; encoding is slower -// and needs more memory. The assumption is that all opentype.js users -// want to open fonts, but saving a font will be comparatively rare -// so it can be more expensive. Keyed by IANA character set name. -// -// Python script for generating these strings: -// -// s = u''.join([chr(c).decode('mac_greek') for c in range(128, 256)]) -// print(s.encode('utf-8')) -/** - * @private - */ -var eightBitMacEncodings = { - 'x-mac-croatian': // Python: 'mac_croatian' - 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø' + - '¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ', - 'x-mac-cyrillic': // Python: 'mac_cyrillic' - 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњ' + - 'јЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю', - 'x-mac-gaelic': // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/GAELIC.TXT - 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæø' + - 'ṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ', - 'x-mac-greek': // Python: 'mac_greek' - 'Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩ' + - 'άΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ\u00AD', - 'x-mac-icelandic': // Python: 'mac_iceland' - 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' + - '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ', - 'x-mac-inuit': // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/INUIT.TXT - 'ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗ' + - 'ᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł', - 'x-mac-ce': // Python: 'mac_latin2' - 'ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅ' + - 'ņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ', - macintosh: // Python: 'mac_roman' - 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' + - '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ', - 'x-mac-romanian': // Python: 'mac_romanian' - 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș' + - '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ', - 'x-mac-turkish': // Python: 'mac_turkish' - 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' + - '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ' -}; - -/** - * Decodes an old-style Macintosh string. Returns either a Unicode JavaScript - * string, or 'undefined' if the encoding is unsupported. For example, we do - * not support Chinese, Japanese or Korean because these would need large - * mapping tables. - * @param {DataView} dataView - * @param {number} offset - * @param {number} dataLength - * @param {string} encoding - * @returns {string} - */ -decode.MACSTRING = function(dataView, offset, dataLength, encoding) { - var table = eightBitMacEncodings[encoding]; - if (table === undefined) { - return undefined; - } - - var result = ''; - for (var i = 0; i < dataLength; i++) { - var c = dataView.getUint8(offset + i); - // In all eight-bit Mac encodings, the characters 0x00..0x7F are - // mapped to U+0000..U+007F; we only need to look up the others. - if (c <= 0x7F) { - result += String.fromCharCode(c); - } else { - result += table[c & 0x7F]; - } - } - - return result; -}; - -// Helper function for encode.MACSTRING. Returns a dictionary for mapping -// Unicode character codes to their 8-bit MacOS equivalent. This table -// is not exactly a super cheap data structure, but we do not care because -// encoding Macintosh strings is only rarely needed in typical applications. -var macEncodingTableCache = typeof WeakMap === 'function' && new WeakMap(); -var macEncodingCacheKeys; -var getMacEncodingTable = function (encoding) { - // Since we use encoding as a cache key for WeakMap, it has to be - // a String object and not a literal. And at least on NodeJS 2.10.1, - // WeakMap requires that the same String instance is passed for cache hits. - if (!macEncodingCacheKeys) { - macEncodingCacheKeys = {}; - for (var e in eightBitMacEncodings) { - /*jshint -W053 */ // Suppress "Do not use String as a constructor." - macEncodingCacheKeys[e] = new String(e); - } - } - - var cacheKey = macEncodingCacheKeys[encoding]; - if (cacheKey === undefined) { - return undefined; - } - - // We can't do "if (cache.has(key)) {return cache.get(key)}" here: - // since garbage collection may run at any time, it could also kick in - // between the calls to cache.has() and cache.get(). In that case, - // we would return 'undefined' even though we do support the encoding. - if (macEncodingTableCache) { - var cachedTable = macEncodingTableCache.get(cacheKey); - if (cachedTable !== undefined) { - return cachedTable; - } - } - - var decodingTable = eightBitMacEncodings[encoding]; - if (decodingTable === undefined) { - return undefined; - } - - var encodingTable = {}; - for (var i = 0; i < decodingTable.length; i++) { - encodingTable[decodingTable.charCodeAt(i)] = i + 0x80; - } - - if (macEncodingTableCache) { - macEncodingTableCache.set(cacheKey, encodingTable); - } - - return encodingTable; -}; - -/** - * Encodes an old-style Macintosh string. Returns a byte array upon success. - * If the requested encoding is unsupported, or if the input string contains - * a character that cannot be expressed in the encoding, the function returns - * 'undefined'. - * @param {string} str - * @param {string} encoding - * @returns {Array} - */ -encode.MACSTRING = function(str, encoding) { - var table = getMacEncodingTable(encoding); - if (table === undefined) { - return undefined; - } - - var result = []; - for (var i = 0; i < str.length; i++) { - var c = str.charCodeAt(i); - - // In all eight-bit Mac encodings, the characters 0x00..0x7F are - // mapped to U+0000..U+007F; we only need to look up the others. - if (c >= 0x80) { - c = table[c]; - if (c === undefined) { - // str contains a Unicode character that cannot be encoded - // in the requested encoding. - return undefined; - } - } - result[i] = c; - // result.push(c); - } - - return result; -}; - -/** - * @param {string} str - * @param {string} encoding - * @returns {number} - */ -sizeOf.MACSTRING = function(str, encoding) { - var b = encode.MACSTRING(str, encoding); - if (b !== undefined) { - return b.length; - } else { - return 0; - } -}; - -// Helper for encode.VARDELTAS -function isByteEncodable(value) { - return value >= -128 && value <= 127; -} - -// Helper for encode.VARDELTAS -function encodeVarDeltaRunAsZeroes(deltas, pos, result) { - var runLength = 0; - var numDeltas = deltas.length; - while (pos < numDeltas && runLength < 64 && deltas[pos] === 0) { - ++pos; - ++runLength; - } - result.push(0x80 | (runLength - 1)); - return pos; -} - -// Helper for encode.VARDELTAS -function encodeVarDeltaRunAsBytes(deltas, offset, result) { - var runLength = 0; - var numDeltas = deltas.length; - var pos = offset; - while (pos < numDeltas && runLength < 64) { - var value = deltas[pos]; - if (!isByteEncodable(value)) { - break; - } - - // Within a byte-encoded run of deltas, a single zero is best - // stored literally as 0x00 value. However, if we have two or - // more zeroes in a sequence, it is better to start a new run. - // Fore example, the sequence of deltas [15, 15, 0, 15, 15] - // becomes 6 bytes (04 0F 0F 00 0F 0F) when storing the zero - // within the current run, but 7 bytes (01 0F 0F 80 01 0F 0F) - // when starting a new run. - if (value === 0 && pos + 1 < numDeltas && deltas[pos + 1] === 0) { - break; - } - - ++pos; - ++runLength; - } - result.push(runLength - 1); - for (var i = offset; i < pos; ++i) { - result.push((deltas[i] + 256) & 0xff); - } - return pos; -} - -// Helper for encode.VARDELTAS -function encodeVarDeltaRunAsWords(deltas, offset, result) { - var runLength = 0; - var numDeltas = deltas.length; - var pos = offset; - while (pos < numDeltas && runLength < 64) { - var value = deltas[pos]; - - // Within a word-encoded run of deltas, it is easiest to start - // a new run (with a different encoding) whenever we encounter - // a zero value. For example, the sequence [0x6666, 0, 0x7777] - // needs 7 bytes when storing the zero inside the current run - // (42 66 66 00 00 77 77), and equally 7 bytes when starting a - // new run (40 66 66 80 40 77 77). - if (value === 0) { - break; - } - - // Within a word-encoded run of deltas, a single value in the - // range (-128..127) should be encoded within the current run - // because it is more compact. For example, the sequence - // [0x6666, 2, 0x7777] becomes 7 bytes when storing the value - // literally (42 66 66 00 02 77 77), but 8 bytes when starting - // a new run (40 66 66 00 02 40 77 77). - if (isByteEncodable(value) && pos + 1 < numDeltas && isByteEncodable(deltas[pos + 1])) { - break; - } - - ++pos; - ++runLength; - } - result.push(0x40 | (runLength - 1)); - for (var i = offset; i < pos; ++i) { - var val = deltas[i]; - result.push(((val + 0x10000) >> 8) & 0xff, (val + 0x100) & 0xff); - } - return pos; -} - -/** - * Encode a list of variation adjustment deltas. - * - * Variation adjustment deltas are used in ‘gvar’ and ‘cvar’ tables. - * They indicate how points (in ‘gvar’) or values (in ‘cvar’) get adjusted - * when generating instances of variation fonts. - * - * @see https://www.microsoft.com/typography/otspec/gvar.htm - * @see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6gvar.html - * @param {Array} - * @return {Array} - */ -encode.VARDELTAS = function(deltas) { - var pos = 0; - var result = []; - while (pos < deltas.length) { - var value = deltas[pos]; - if (value === 0) { - pos = encodeVarDeltaRunAsZeroes(deltas, pos, result); - } else if (value >= -128 && value <= 127) { - pos = encodeVarDeltaRunAsBytes(deltas, pos, result); - } else { - pos = encodeVarDeltaRunAsWords(deltas, pos, result); - } - } - return result; -}; - -// Convert a list of values to a CFF INDEX structure. -// The values should be objects containing name / type / value. -/** - * @param {Array} l - * @returns {Array} - */ -encode.INDEX = function(l) { - //var offset, offsets, offsetEncoder, encodedOffsets, encodedOffset, data, - // i, v; - // Because we have to know which data type to use to encode the offsets, - // we have to go through the values twice: once to encode the data and - // calculate the offsets, then again to encode the offsets using the fitting data type. - var offset = 1; // First offset is always 1. - var offsets = [offset]; - var data = []; - for (var i = 0; i < l.length; i += 1) { - var v = encode.OBJECT(l[i]); - Array.prototype.push.apply(data, v); - offset += v.length; - offsets.push(offset); - } - - if (data.length === 0) { - return [0, 0]; - } - - var encodedOffsets = []; - var offSize = (1 + Math.floor(Math.log(offset) / Math.log(2)) / 8) | 0; - var offsetEncoder = [undefined, encode.BYTE, encode.USHORT, encode.UINT24, encode.ULONG][offSize]; - for (var i$1 = 0; i$1 < offsets.length; i$1 += 1) { - var encodedOffset = offsetEncoder(offsets[i$1]); - Array.prototype.push.apply(encodedOffsets, encodedOffset); - } - - return Array.prototype.concat(encode.Card16(l.length), - encode.OffSize(offSize), - encodedOffsets, - data); -}; - -/** - * @param {Array} - * @returns {number} - */ -sizeOf.INDEX = function(v) { - return encode.INDEX(v).length; -}; - -/** - * Convert an object to a CFF DICT structure. - * The keys should be numeric. - * The values should be objects containing name / type / value. - * @param {Object} m - * @returns {Array} - */ -encode.DICT = function(m) { - var d = []; - var keys = Object.keys(m); - var length = keys.length; - - for (var i = 0; i < length; i += 1) { - // Object.keys() return string keys, but our keys are always numeric. - var k = parseInt(keys[i], 0); - var v = m[k]; - // Value comes before the key. - d = d.concat(encode.OPERAND(v.value, v.type)); - d = d.concat(encode.OPERATOR(k)); - } - - return d; -}; - -/** - * @param {Object} - * @returns {number} - */ -sizeOf.DICT = function(m) { - return encode.DICT(m).length; -}; - -/** - * @param {number} - * @returns {Array} - */ -encode.OPERATOR = function(v) { - if (v < 1200) { - return [v]; - } else { - return [12, v - 1200]; - } -}; - -/** - * @param {Array} v - * @param {string} - * @returns {Array} - */ -encode.OPERAND = function(v, type) { - var d = []; - if (Array.isArray(type)) { - for (var i = 0; i < type.length; i += 1) { - check.argument(v.length === type.length, 'Not enough arguments given for type' + type); - d = d.concat(encode.OPERAND(v[i], type[i])); - } - } else { - if (type === 'SID') { - d = d.concat(encode.NUMBER(v)); - } else if (type === 'offset') { - // We make it easy for ourselves and always encode offsets as - // 4 bytes. This makes offset calculation for the top dict easier. - d = d.concat(encode.NUMBER32(v)); - } else if (type === 'number') { - d = d.concat(encode.NUMBER(v)); - } else if (type === 'real') { - d = d.concat(encode.REAL(v)); - } else { - throw new Error('Unknown operand type ' + type); - // FIXME Add support for booleans - } - } - - return d; -}; - -encode.OP = encode.BYTE; -sizeOf.OP = sizeOf.BYTE; - -// memoize charstring encoding using WeakMap if available -var wmm = typeof WeakMap === 'function' && new WeakMap(); - -/** - * Convert a list of CharString operations to bytes. - * @param {Array} - * @returns {Array} - */ -encode.CHARSTRING = function(ops) { - // See encode.MACSTRING for why we don't do "if (wmm && wmm.has(ops))". - if (wmm) { - var cachedValue = wmm.get(ops); - if (cachedValue !== undefined) { - return cachedValue; - } - } - - var d = []; - var length = ops.length; - - for (var i = 0; i < length; i += 1) { - var op = ops[i]; - d = d.concat(encode[op.type](op.value)); - } - - if (wmm) { - wmm.set(ops, d); - } - - return d; -}; - -/** - * @param {Array} - * @returns {number} - */ -sizeOf.CHARSTRING = function(ops) { - return encode.CHARSTRING(ops).length; -}; - -// Utility functions //////////////////////////////////////////////////////// - -/** - * Convert an object containing name / type / value to bytes. - * @param {Object} - * @returns {Array} - */ -encode.OBJECT = function(v) { - var encodingFunction = encode[v.type]; - check.argument(encodingFunction !== undefined, 'No encoding function for type ' + v.type); - return encodingFunction(v.value); -}; - -/** - * @param {Object} - * @returns {number} - */ -sizeOf.OBJECT = function(v) { - var sizeOfFunction = sizeOf[v.type]; - check.argument(sizeOfFunction !== undefined, 'No sizeOf function for type ' + v.type); - return sizeOfFunction(v.value); -}; - -/** - * Convert a table object to bytes. - * A table contains a list of fields containing the metadata (name, type and default value). - * The table itself has the field values set as attributes. - * @param {opentype.Table} - * @returns {Array} - */ -encode.TABLE = function(table) { - var d = []; - var length = table.fields.length; - var subtables = []; - var subtableOffsets = []; - - for (var i = 0; i < length; i += 1) { - var field = table.fields[i]; - var encodingFunction = encode[field.type]; - check.argument(encodingFunction !== undefined, 'No encoding function for field type ' + field.type + ' (' + field.name + ')'); - var value = table[field.name]; - if (value === undefined) { - value = field.value; - } - - var bytes = encodingFunction(value); - - if (field.type === 'TABLE') { - subtableOffsets.push(d.length); - d = d.concat([0, 0]); - subtables.push(bytes); - } else { - d = d.concat(bytes); - } - } - - for (var i$1 = 0; i$1 < subtables.length; i$1 += 1) { - var o = subtableOffsets[i$1]; - var offset = d.length; - check.argument(offset < 65536, 'Table ' + table.tableName + ' too big.'); - d[o] = offset >> 8; - d[o + 1] = offset & 0xff; - d = d.concat(subtables[i$1]); - } - - return d; -}; - -/** - * @param {opentype.Table} - * @returns {number} - */ -sizeOf.TABLE = function(table) { - var numBytes = 0; - var length = table.fields.length; - - for (var i = 0; i < length; i += 1) { - var field = table.fields[i]; - var sizeOfFunction = sizeOf[field.type]; - check.argument(sizeOfFunction !== undefined, 'No sizeOf function for field type ' + field.type + ' (' + field.name + ')'); - var value = table[field.name]; - if (value === undefined) { - value = field.value; - } - - numBytes += sizeOfFunction(value); - - // Subtables take 2 more bytes for offsets. - if (field.type === 'TABLE') { - numBytes += 2; - } - } - - return numBytes; -}; - -encode.RECORD = encode.TABLE; -sizeOf.RECORD = sizeOf.TABLE; - -// Merge in a list of bytes. -encode.LITERAL = function(v) { - return v; -}; - -sizeOf.LITERAL = function(v) { - return v.length; -}; - -// Table metadata - -/** - * @exports opentype.Table - * @class - * @param {string} tableName - * @param {Array} fields - * @param {Object} options - * @constructor - */ -function Table(tableName, fields, options) { - // For coverage tables with coverage format 2, we do not want to add the coverage data directly to the table object, - // as this will result in wrong encoding order of the coverage data on serialization to bytes. - // The fallback of using the field values directly when not present on the table is handled in types.encode.TABLE() already. - if (fields.length && (fields[0].name !== 'coverageFormat' || fields[0].value === 1)) { - for (var i = 0; i < fields.length; i += 1) { - var field = fields[i]; - this[field.name] = field.value; - } - } - - this.tableName = tableName; - this.fields = fields; - if (options) { - var optionKeys = Object.keys(options); - for (var i$1 = 0; i$1 < optionKeys.length; i$1 += 1) { - var k = optionKeys[i$1]; - var v = options[k]; - if (this[k] !== undefined) { - this[k] = v; - } - } - } -} - -/** - * Encodes the table and returns an array of bytes - * @return {Array} - */ -Table.prototype.encode = function() { - return encode.TABLE(this); -}; - -/** - * Get the size of the table. - * @return {number} - */ -Table.prototype.sizeOf = function() { - return sizeOf.TABLE(this); -}; - -/** - * @private - */ -function ushortList(itemName, list, count) { - if (count === undefined) { - count = list.length; - } - var fields = new Array(list.length + 1); - fields[0] = {name: itemName + 'Count', type: 'USHORT', value: count}; - for (var i = 0; i < list.length; i++) { - fields[i + 1] = {name: itemName + i, type: 'USHORT', value: list[i]}; - } - return fields; -} - -/** - * @private - */ -function tableList(itemName, records, itemCallback) { - var count = records.length; - var fields = new Array(count + 1); - fields[0] = {name: itemName + 'Count', type: 'USHORT', value: count}; - for (var i = 0; i < count; i++) { - fields[i + 1] = {name: itemName + i, type: 'TABLE', value: itemCallback(records[i], i)}; - } - return fields; -} - -/** - * @private - */ -function recordList(itemName, records, itemCallback) { - var count = records.length; - var fields = []; - fields[0] = {name: itemName + 'Count', type: 'USHORT', value: count}; - for (var i = 0; i < count; i++) { - fields = fields.concat(itemCallback(records[i], i)); - } - return fields; -} - -// Common Layout Tables - -/** - * @exports opentype.Coverage - * @class - * @param {opentype.Table} - * @constructor - * @extends opentype.Table - */ -function Coverage(coverageTable) { - if (coverageTable.format === 1) { - Table.call(this, 'coverageTable', - [{name: 'coverageFormat', type: 'USHORT', value: 1}] - .concat(ushortList('glyph', coverageTable.glyphs)) - ); - } else if (coverageTable.format === 2) { - Table.call(this, 'coverageTable', - [{name: 'coverageFormat', type: 'USHORT', value: 2}] - .concat(recordList('rangeRecord', coverageTable.ranges, function(RangeRecord) { - return [ - {name: 'startGlyphID', type: 'USHORT', value: RangeRecord.start}, - {name: 'endGlyphID', type: 'USHORT', value: RangeRecord.end}, - {name: 'startCoverageIndex', type: 'USHORT', value: RangeRecord.index} ]; - })) - ); - } else { - check.assert(false, 'Coverage format must be 1 or 2.'); - } -} -Coverage.prototype = Object.create(Table.prototype); -Coverage.prototype.constructor = Coverage; - -function ScriptList(scriptListTable) { - Table.call(this, 'scriptListTable', - recordList('scriptRecord', scriptListTable, function(scriptRecord, i) { - var script = scriptRecord.script; - var defaultLangSys = script.defaultLangSys; - check.assert(!!defaultLangSys, 'Unable to write GSUB: script ' + scriptRecord.tag + ' has no default language system.'); - return [ - {name: 'scriptTag' + i, type: 'TAG', value: scriptRecord.tag}, - {name: 'script' + i, type: 'TABLE', value: new Table('scriptTable', [ - {name: 'defaultLangSys', type: 'TABLE', value: new Table('defaultLangSys', [ - {name: 'lookupOrder', type: 'USHORT', value: 0}, - {name: 'reqFeatureIndex', type: 'USHORT', value: defaultLangSys.reqFeatureIndex}] - .concat(ushortList('featureIndex', defaultLangSys.featureIndexes)))} - ].concat(recordList('langSys', script.langSysRecords, function(langSysRecord, i) { - var langSys = langSysRecord.langSys; - return [ - {name: 'langSysTag' + i, type: 'TAG', value: langSysRecord.tag}, - {name: 'langSys' + i, type: 'TABLE', value: new Table('langSys', [ - {name: 'lookupOrder', type: 'USHORT', value: 0}, - {name: 'reqFeatureIndex', type: 'USHORT', value: langSys.reqFeatureIndex} - ].concat(ushortList('featureIndex', langSys.featureIndexes)))} - ]; - })))} - ]; - }) - ); -} -ScriptList.prototype = Object.create(Table.prototype); -ScriptList.prototype.constructor = ScriptList; - -/** - * @exports opentype.FeatureList - * @class - * @param {opentype.Table} - * @constructor - * @extends opentype.Table - */ -function FeatureList(featureListTable) { - Table.call(this, 'featureListTable', - recordList('featureRecord', featureListTable, function(featureRecord, i) { - var feature = featureRecord.feature; - return [ - {name: 'featureTag' + i, type: 'TAG', value: featureRecord.tag}, - {name: 'feature' + i, type: 'TABLE', value: new Table('featureTable', [ - {name: 'featureParams', type: 'USHORT', value: feature.featureParams} ].concat(ushortList('lookupListIndex', feature.lookupListIndexes)))} - ]; - }) - ); -} -FeatureList.prototype = Object.create(Table.prototype); -FeatureList.prototype.constructor = FeatureList; - -/** - * @exports opentype.LookupList - * @class - * @param {opentype.Table} - * @param {Object} - * @constructor - * @extends opentype.Table - */ -function LookupList(lookupListTable, subtableMakers) { - Table.call(this, 'lookupListTable', tableList('lookup', lookupListTable, function(lookupTable) { - var subtableCallback = subtableMakers[lookupTable.lookupType]; - check.assert(!!subtableCallback, 'Unable to write GSUB lookup type ' + lookupTable.lookupType + ' tables.'); - return new Table('lookupTable', [ - {name: 'lookupType', type: 'USHORT', value: lookupTable.lookupType}, - {name: 'lookupFlag', type: 'USHORT', value: lookupTable.lookupFlag} - ].concat(tableList('subtable', lookupTable.subtables, subtableCallback))); - })); -} -LookupList.prototype = Object.create(Table.prototype); -LookupList.prototype.constructor = LookupList; - -// Record = same as Table, but inlined (a Table has an offset and its data is further in the stream) -// Don't use offsets inside Records (probable bug), only in Tables. -var table = { - Table: Table, - Record: Table, - Coverage: Coverage, - ScriptList: ScriptList, - FeatureList: FeatureList, - LookupList: LookupList, - ushortList: ushortList, - tableList: tableList, - recordList: recordList, -}; - -// Parsing utility functions - -// Retrieve an unsigned byte from the DataView. -function getByte(dataView, offset) { - return dataView.getUint8(offset); -} - -// Retrieve an unsigned 16-bit short from the DataView. -// The value is stored in big endian. -function getUShort(dataView, offset) { - return dataView.getUint16(offset, false); -} - -// Retrieve a signed 16-bit short from the DataView. -// The value is stored in big endian. -function getShort(dataView, offset) { - return dataView.getInt16(offset, false); -} - -// Retrieve an unsigned 32-bit long from the DataView. -// The value is stored in big endian. -function getULong(dataView, offset) { - return dataView.getUint32(offset, false); -} - -// Retrieve a 32-bit signed fixed-point number (16.16) from the DataView. -// The value is stored in big endian. -function getFixed(dataView, offset) { - var decimal = dataView.getInt16(offset, false); - var fraction = dataView.getUint16(offset + 2, false); - return decimal + fraction / 65535; -} - -// Retrieve a 4-character tag from the DataView. -// Tags are used to identify tables. -function getTag(dataView, offset) { - var tag = ''; - for (var i = offset; i < offset + 4; i += 1) { - tag += String.fromCharCode(dataView.getInt8(i)); - } - - return tag; -} - -// Retrieve an offset from the DataView. -// Offsets are 1 to 4 bytes in length, depending on the offSize argument. -function getOffset(dataView, offset, offSize) { - var v = 0; - for (var i = 0; i < offSize; i += 1) { - v <<= 8; - v += dataView.getUint8(offset + i); - } - - return v; -} - -// Retrieve a number of bytes from start offset to the end offset from the DataView. -function getBytes(dataView, startOffset, endOffset) { - var bytes = []; - for (var i = startOffset; i < endOffset; i += 1) { - bytes.push(dataView.getUint8(i)); - } - - return bytes; -} - -// Convert the list of bytes to a string. -function bytesToString(bytes) { - var s = ''; - for (var i = 0; i < bytes.length; i += 1) { - s += String.fromCharCode(bytes[i]); - } - - return s; -} - -var typeOffsets = { - byte: 1, - uShort: 2, - short: 2, - uLong: 4, - fixed: 4, - longDateTime: 8, - tag: 4 -}; - -// A stateful parser that changes the offset whenever a value is retrieved. -// The data is a DataView. -function Parser(data, offset) { - this.data = data; - this.offset = offset; - this.relativeOffset = 0; -} - -Parser.prototype.parseByte = function() { - var v = this.data.getUint8(this.offset + this.relativeOffset); - this.relativeOffset += 1; - return v; -}; - -Parser.prototype.parseChar = function() { - var v = this.data.getInt8(this.offset + this.relativeOffset); - this.relativeOffset += 1; - return v; -}; - -Parser.prototype.parseCard8 = Parser.prototype.parseByte; - -Parser.prototype.parseUShort = function() { - var v = this.data.getUint16(this.offset + this.relativeOffset); - this.relativeOffset += 2; - return v; -}; - -Parser.prototype.parseCard16 = Parser.prototype.parseUShort; -Parser.prototype.parseSID = Parser.prototype.parseUShort; -Parser.prototype.parseOffset16 = Parser.prototype.parseUShort; - -Parser.prototype.parseShort = function() { - var v = this.data.getInt16(this.offset + this.relativeOffset); - this.relativeOffset += 2; - return v; -}; - -Parser.prototype.parseF2Dot14 = function() { - var v = this.data.getInt16(this.offset + this.relativeOffset) / 16384; - this.relativeOffset += 2; - return v; -}; - -Parser.prototype.parseULong = function() { - var v = getULong(this.data, this.offset + this.relativeOffset); - this.relativeOffset += 4; - return v; -}; - -Parser.prototype.parseOffset32 = Parser.prototype.parseULong; - -Parser.prototype.parseFixed = function() { - var v = getFixed(this.data, this.offset + this.relativeOffset); - this.relativeOffset += 4; - return v; -}; - -Parser.prototype.parseString = function(length) { - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - var string = ''; - this.relativeOffset += length; - for (var i = 0; i < length; i++) { - string += String.fromCharCode(dataView.getUint8(offset + i)); - } - - return string; -}; - -Parser.prototype.parseTag = function() { - return this.parseString(4); -}; - -// LONGDATETIME is a 64-bit integer. -// JavaScript and unix timestamps traditionally use 32 bits, so we -// only take the last 32 bits. -// + Since until 2038 those bits will be filled by zeros we can ignore them. -Parser.prototype.parseLongDateTime = function() { - var v = getULong(this.data, this.offset + this.relativeOffset + 4); - // Subtract seconds between 01/01/1904 and 01/01/1970 - // to convert Apple Mac timestamp to Standard Unix timestamp - v -= 2082844800; - this.relativeOffset += 8; - return v; -}; - -Parser.prototype.parseVersion = function(minorBase) { - var major = getUShort(this.data, this.offset + this.relativeOffset); - - // How to interpret the minor version is very vague in the spec. 0x5000 is 5, 0x1000 is 1 - // Default returns the correct number if minor = 0xN000 where N is 0-9 - // Set minorBase to 1 for tables that use minor = N where N is 0-9 - var minor = getUShort(this.data, this.offset + this.relativeOffset + 2); - this.relativeOffset += 4; - if (minorBase === undefined) { minorBase = 0x1000; } - return major + minor / minorBase / 10; -}; - -Parser.prototype.skip = function(type, amount) { - if (amount === undefined) { - amount = 1; - } - - this.relativeOffset += typeOffsets[type] * amount; -}; - -///// Parsing lists and records /////////////////////////////// - -// Parse a list of 32 bit unsigned integers. -Parser.prototype.parseULongList = function(count) { - if (count === undefined) { count = this.parseULong(); } - var offsets = new Array(count); - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - for (var i = 0; i < count; i++) { - offsets[i] = dataView.getUint32(offset); - offset += 4; - } - - this.relativeOffset += count * 4; - return offsets; -}; - -// Parse a list of 16 bit unsigned integers. The length of the list can be read on the stream -// or provided as an argument. -Parser.prototype.parseOffset16List = -Parser.prototype.parseUShortList = function(count) { - if (count === undefined) { count = this.parseUShort(); } - var offsets = new Array(count); - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - for (var i = 0; i < count; i++) { - offsets[i] = dataView.getUint16(offset); - offset += 2; - } - - this.relativeOffset += count * 2; - return offsets; -}; - -// Parses a list of 16 bit signed integers. -Parser.prototype.parseShortList = function(count) { - var list = new Array(count); - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - for (var i = 0; i < count; i++) { - list[i] = dataView.getInt16(offset); - offset += 2; - } - - this.relativeOffset += count * 2; - return list; -}; - -// Parses a list of bytes. -Parser.prototype.parseByteList = function(count) { - var list = new Array(count); - var dataView = this.data; - var offset = this.offset + this.relativeOffset; - for (var i = 0; i < count; i++) { - list[i] = dataView.getUint8(offset++); - } - - this.relativeOffset += count; - return list; -}; - -/** - * Parse a list of items. - * Record count is optional, if omitted it is read from the stream. - * itemCallback is one of the Parser methods. - */ -Parser.prototype.parseList = function(count, itemCallback) { - if (!itemCallback) { - itemCallback = count; - count = this.parseUShort(); - } - var list = new Array(count); - for (var i = 0; i < count; i++) { - list[i] = itemCallback.call(this); - } - return list; -}; - -Parser.prototype.parseList32 = function(count, itemCallback) { - if (!itemCallback) { - itemCallback = count; - count = this.parseULong(); - } - var list = new Array(count); - for (var i = 0; i < count; i++) { - list[i] = itemCallback.call(this); - } - return list; -}; - -/** - * Parse a list of records. - * Record count is optional, if omitted it is read from the stream. - * Example of recordDescription: { sequenceIndex: Parser.uShort, lookupListIndex: Parser.uShort } - */ -Parser.prototype.parseRecordList = function(count, recordDescription) { - // If the count argument is absent, read it in the stream. - if (!recordDescription) { - recordDescription = count; - count = this.parseUShort(); - } - var records = new Array(count); - var fields = Object.keys(recordDescription); - for (var i = 0; i < count; i++) { - var rec = {}; - for (var j = 0; j < fields.length; j++) { - var fieldName = fields[j]; - var fieldType = recordDescription[fieldName]; - rec[fieldName] = fieldType.call(this); - } - records[i] = rec; - } - return records; -}; - -Parser.prototype.parseRecordList32 = function(count, recordDescription) { - // If the count argument is absent, read it in the stream. - if (!recordDescription) { - recordDescription = count; - count = this.parseULong(); - } - var records = new Array(count); - var fields = Object.keys(recordDescription); - for (var i = 0; i < count; i++) { - var rec = {}; - for (var j = 0; j < fields.length; j++) { - var fieldName = fields[j]; - var fieldType = recordDescription[fieldName]; - rec[fieldName] = fieldType.call(this); - } - records[i] = rec; - } - return records; -}; - -// Parse a data structure into an object -// Example of description: { sequenceIndex: Parser.uShort, lookupListIndex: Parser.uShort } -Parser.prototype.parseStruct = function(description) { - if (typeof description === 'function') { - return description.call(this); - } else { - var fields = Object.keys(description); - var struct = {}; - for (var j = 0; j < fields.length; j++) { - var fieldName = fields[j]; - var fieldType = description[fieldName]; - struct[fieldName] = fieldType.call(this); - } - return struct; - } -}; - -/** - * Parse a GPOS valueRecord - * https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#value-record - * valueFormat is optional, if omitted it is read from the stream. - */ -Parser.prototype.parseValueRecord = function(valueFormat) { - if (valueFormat === undefined) { - valueFormat = this.parseUShort(); - } - if (valueFormat === 0) { - // valueFormat2 in kerning pairs is most often 0 - // in this case return undefined instead of an empty object, to save space - return; - } - var valueRecord = {}; - - if (valueFormat & 0x0001) { valueRecord.xPlacement = this.parseShort(); } - if (valueFormat & 0x0002) { valueRecord.yPlacement = this.parseShort(); } - if (valueFormat & 0x0004) { valueRecord.xAdvance = this.parseShort(); } - if (valueFormat & 0x0008) { valueRecord.yAdvance = this.parseShort(); } - - // Device table (non-variable font) / VariationIndex table (variable font) not supported - // https://docs.microsoft.com/fr-fr/typography/opentype/spec/chapter2#devVarIdxTbls - if (valueFormat & 0x0010) { valueRecord.xPlaDevice = undefined; this.parseShort(); } - if (valueFormat & 0x0020) { valueRecord.yPlaDevice = undefined; this.parseShort(); } - if (valueFormat & 0x0040) { valueRecord.xAdvDevice = undefined; this.parseShort(); } - if (valueFormat & 0x0080) { valueRecord.yAdvDevice = undefined; this.parseShort(); } - - return valueRecord; -}; - -/** - * Parse a list of GPOS valueRecords - * https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#value-record - * valueFormat and valueCount are read from the stream. - */ -Parser.prototype.parseValueRecordList = function() { - var valueFormat = this.parseUShort(); - var valueCount = this.parseUShort(); - var values = new Array(valueCount); - for (var i = 0; i < valueCount; i++) { - values[i] = this.parseValueRecord(valueFormat); - } - return values; -}; - -Parser.prototype.parsePointer = function(description) { - var structOffset = this.parseOffset16(); - if (structOffset > 0) { - // NULL offset => return undefined - return new Parser(this.data, this.offset + structOffset).parseStruct(description); - } - return undefined; -}; - -Parser.prototype.parsePointer32 = function(description) { - var structOffset = this.parseOffset32(); - if (structOffset > 0) { - // NULL offset => return undefined - return new Parser(this.data, this.offset + structOffset).parseStruct(description); - } - return undefined; -}; - -/** - * Parse a list of offsets to lists of 16-bit integers, - * or a list of offsets to lists of offsets to any kind of items. - * If itemCallback is not provided, a list of list of UShort is assumed. - * If provided, itemCallback is called on each item and must parse the item. - * See examples in tables/gsub.js - */ -Parser.prototype.parseListOfLists = function(itemCallback) { - var offsets = this.parseOffset16List(); - var count = offsets.length; - var relativeOffset = this.relativeOffset; - var list = new Array(count); - for (var i = 0; i < count; i++) { - var start = offsets[i]; - if (start === 0) { - // NULL offset - // Add i as owned property to list. Convenient with assert. - list[i] = undefined; - continue; - } - this.relativeOffset = start; - if (itemCallback) { - var subOffsets = this.parseOffset16List(); - var subList = new Array(subOffsets.length); - for (var j = 0; j < subOffsets.length; j++) { - this.relativeOffset = start + subOffsets[j]; - subList[j] = itemCallback.call(this); - } - list[i] = subList; - } else { - list[i] = this.parseUShortList(); - } - } - this.relativeOffset = relativeOffset; - return list; -}; - -///// Complex tables parsing ////////////////////////////////// - -// Parse a coverage table in a GSUB, GPOS or GDEF table. -// https://www.microsoft.com/typography/OTSPEC/chapter2.htm -// parser.offset must point to the start of the table containing the coverage. -Parser.prototype.parseCoverage = function() { - var startOffset = this.offset + this.relativeOffset; - var format = this.parseUShort(); - var count = this.parseUShort(); - if (format === 1) { - return { - format: 1, - glyphs: this.parseUShortList(count) - }; - } else if (format === 2) { - var ranges = new Array(count); - for (var i = 0; i < count; i++) { - ranges[i] = { - start: this.parseUShort(), - end: this.parseUShort(), - index: this.parseUShort() - }; - } - return { - format: 2, - ranges: ranges - }; - } - throw new Error('0x' + startOffset.toString(16) + ': Coverage format must be 1 or 2.'); -}; - -// Parse a Class Definition Table in a GSUB, GPOS or GDEF table. -// https://www.microsoft.com/typography/OTSPEC/chapter2.htm -Parser.prototype.parseClassDef = function() { - var startOffset = this.offset + this.relativeOffset; - var format = this.parseUShort(); - if (format === 1) { - return { - format: 1, - startGlyph: this.parseUShort(), - classes: this.parseUShortList() - }; - } else if (format === 2) { - return { - format: 2, - ranges: this.parseRecordList({ - start: Parser.uShort, - end: Parser.uShort, - classId: Parser.uShort - }) - }; - } - throw new Error('0x' + startOffset.toString(16) + ': ClassDef format must be 1 or 2.'); -}; - -///// Static methods /////////////////////////////////// -// These convenience methods can be used as callbacks and should be called with "this" context set to a Parser instance. - -Parser.list = function(count, itemCallback) { - return function() { - return this.parseList(count, itemCallback); - }; -}; - -Parser.list32 = function(count, itemCallback) { - return function() { - return this.parseList32(count, itemCallback); - }; -}; - -Parser.recordList = function(count, recordDescription) { - return function() { - return this.parseRecordList(count, recordDescription); - }; -}; - -Parser.recordList32 = function(count, recordDescription) { - return function() { - return this.parseRecordList32(count, recordDescription); - }; -}; - -Parser.pointer = function(description) { - return function() { - return this.parsePointer(description); - }; -}; - -Parser.pointer32 = function(description) { - return function() { - return this.parsePointer32(description); - }; -}; - -Parser.tag = Parser.prototype.parseTag; -Parser.byte = Parser.prototype.parseByte; -Parser.uShort = Parser.offset16 = Parser.prototype.parseUShort; -Parser.uShortList = Parser.prototype.parseUShortList; -Parser.uLong = Parser.offset32 = Parser.prototype.parseULong; -Parser.uLongList = Parser.prototype.parseULongList; -Parser.struct = Parser.prototype.parseStruct; -Parser.coverage = Parser.prototype.parseCoverage; -Parser.classDef = Parser.prototype.parseClassDef; - -///// Script, Feature, Lookup lists /////////////////////////////////////////////// -// https://www.microsoft.com/typography/OTSPEC/chapter2.htm - -var langSysTable = { - reserved: Parser.uShort, - reqFeatureIndex: Parser.uShort, - featureIndexes: Parser.uShortList -}; - -Parser.prototype.parseScriptList = function() { - return this.parsePointer(Parser.recordList({ - tag: Parser.tag, - script: Parser.pointer({ - defaultLangSys: Parser.pointer(langSysTable), - langSysRecords: Parser.recordList({ - tag: Parser.tag, - langSys: Parser.pointer(langSysTable) - }) - }) - })) || []; -}; - -Parser.prototype.parseFeatureList = function() { - return this.parsePointer(Parser.recordList({ - tag: Parser.tag, - feature: Parser.pointer({ - featureParams: Parser.offset16, - lookupListIndexes: Parser.uShortList - }) - })) || []; -}; - -Parser.prototype.parseLookupList = function(lookupTableParsers) { - return this.parsePointer(Parser.list(Parser.pointer(function() { - var lookupType = this.parseUShort(); - check.argument(1 <= lookupType && lookupType <= 9, 'GPOS/GSUB lookup type ' + lookupType + ' unknown.'); - var lookupFlag = this.parseUShort(); - var useMarkFilteringSet = lookupFlag & 0x10; - return { - lookupType: lookupType, - lookupFlag: lookupFlag, - subtables: this.parseList(Parser.pointer(lookupTableParsers[lookupType])), - markFilteringSet: useMarkFilteringSet ? this.parseUShort() : undefined - }; - }))) || []; -}; - -Parser.prototype.parseFeatureVariationsList = function() { - return this.parsePointer32(function() { - var majorVersion = this.parseUShort(); - var minorVersion = this.parseUShort(); - check.argument(majorVersion === 1 && minorVersion < 1, 'GPOS/GSUB feature variations table unknown.'); - var featureVariations = this.parseRecordList32({ - conditionSetOffset: Parser.offset32, - featureTableSubstitutionOffset: Parser.offset32 - }); - return featureVariations; - }) || []; -}; - -var parse = { - getByte: getByte, - getCard8: getByte, - getUShort: getUShort, - getCard16: getUShort, - getShort: getShort, - getULong: getULong, - getFixed: getFixed, - getTag: getTag, - getOffset: getOffset, - getBytes: getBytes, - bytesToString: bytesToString, - Parser: Parser, -}; - -// The `cmap` table stores the mappings from characters to glyphs. - -function parseCmapTableFormat12(cmap, p) { - //Skip reserved. - p.parseUShort(); - - // Length in bytes of the sub-tables. - cmap.length = p.parseULong(); - cmap.language = p.parseULong(); - - var groupCount; - cmap.groupCount = groupCount = p.parseULong(); - cmap.glyphIndexMap = {}; - - for (var i = 0; i < groupCount; i += 1) { - var startCharCode = p.parseULong(); - var endCharCode = p.parseULong(); - var startGlyphId = p.parseULong(); - - for (var c = startCharCode; c <= endCharCode; c += 1) { - cmap.glyphIndexMap[c] = startGlyphId; - startGlyphId++; - } - } -} - -function parseCmapTableFormat4(cmap, p, data, start, offset) { - // Length in bytes of the sub-tables. - cmap.length = p.parseUShort(); - cmap.language = p.parseUShort(); - - // segCount is stored x 2. - var segCount; - cmap.segCount = segCount = p.parseUShort() >> 1; - - // Skip searchRange, entrySelector, rangeShift. - p.skip('uShort', 3); - - // The "unrolled" mapping from character codes to glyph indices. - cmap.glyphIndexMap = {}; - var endCountParser = new parse.Parser(data, start + offset + 14); - var startCountParser = new parse.Parser(data, start + offset + 16 + segCount * 2); - var idDeltaParser = new parse.Parser(data, start + offset + 16 + segCount * 4); - var idRangeOffsetParser = new parse.Parser(data, start + offset + 16 + segCount * 6); - var glyphIndexOffset = start + offset + 16 + segCount * 8; - for (var i = 0; i < segCount - 1; i += 1) { - var glyphIndex = (void 0); - var endCount = endCountParser.parseUShort(); - var startCount = startCountParser.parseUShort(); - var idDelta = idDeltaParser.parseShort(); - var idRangeOffset = idRangeOffsetParser.parseUShort(); - for (var c = startCount; c <= endCount; c += 1) { - if (idRangeOffset !== 0) { - // The idRangeOffset is relative to the current position in the idRangeOffset array. - // Take the current offset in the idRangeOffset array. - glyphIndexOffset = (idRangeOffsetParser.offset + idRangeOffsetParser.relativeOffset - 2); - - // Add the value of the idRangeOffset, which will move us into the glyphIndex array. - glyphIndexOffset += idRangeOffset; - - // Then add the character index of the current segment, multiplied by 2 for USHORTs. - glyphIndexOffset += (c - startCount) * 2; - glyphIndex = parse.getUShort(data, glyphIndexOffset); - if (glyphIndex !== 0) { - glyphIndex = (glyphIndex + idDelta) & 0xFFFF; - } - } else { - glyphIndex = (c + idDelta) & 0xFFFF; - } - - cmap.glyphIndexMap[c] = glyphIndex; - } - } -} - -// Parse the `cmap` table. This table stores the mappings from characters to glyphs. -// There are many available formats, but we only support the Windows format 4 and 12. -// This function returns a `CmapEncoding` object or null if no supported format could be found. -function parseCmapTable(data, start) { - var cmap = {}; - cmap.version = parse.getUShort(data, start); - check.argument(cmap.version === 0, 'cmap table version should be 0.'); - - // The cmap table can contain many sub-tables, each with their own format. - // We're only interested in a "platform 0" (Unicode format) and "platform 3" (Windows format) table. - cmap.numTables = parse.getUShort(data, start + 2); - var offset = -1; - for (var i = cmap.numTables - 1; i >= 0; i -= 1) { - var platformId = parse.getUShort(data, start + 4 + (i * 8)); - var encodingId = parse.getUShort(data, start + 4 + (i * 8) + 2); - if ((platformId === 3 && (encodingId === 0 || encodingId === 1 || encodingId === 10)) || - (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 2 || encodingId === 3 || encodingId === 4))) { - offset = parse.getULong(data, start + 4 + (i * 8) + 4); - break; - } - } - - if (offset === -1) { - // There is no cmap table in the font that we support. - throw new Error('No valid cmap sub-tables found.'); - } - - var p = new parse.Parser(data, start + offset); - cmap.format = p.parseUShort(); - - if (cmap.format === 12) { - parseCmapTableFormat12(cmap, p); - } else if (cmap.format === 4) { - parseCmapTableFormat4(cmap, p, data, start, offset); - } else { - throw new Error('Only format 4 and 12 cmap tables are supported (found format ' + cmap.format + ').'); - } - - return cmap; -} - -function addSegment(t, code, glyphIndex) { - t.segments.push({ - end: code, - start: code, - delta: -(code - glyphIndex), - offset: 0, - glyphIndex: glyphIndex - }); -} - -function addTerminatorSegment(t) { - t.segments.push({ - end: 0xFFFF, - start: 0xFFFF, - delta: 1, - offset: 0 - }); -} - -// Make cmap table, format 4 by default, 12 if needed only -function makeCmapTable(glyphs) { - // Plan 0 is the base Unicode Plan but emojis, for example are on another plan, and needs cmap 12 format (with 32bit) - var isPlan0Only = true; - var i; - - // Check if we need to add cmap format 12 or if format 4 only is fine - for (i = glyphs.length - 1; i > 0; i -= 1) { - var g = glyphs.get(i); - if (g.unicode > 65535) { - console.log('Adding CMAP format 12 (needed!)'); - isPlan0Only = false; - break; - } - } - - var cmapTable = [ - {name: 'version', type: 'USHORT', value: 0}, - {name: 'numTables', type: 'USHORT', value: isPlan0Only ? 1 : 2}, - - // CMAP 4 header - {name: 'platformID', type: 'USHORT', value: 3}, - {name: 'encodingID', type: 'USHORT', value: 1}, - {name: 'offset', type: 'ULONG', value: isPlan0Only ? 12 : (12 + 8)} - ]; - - if (!isPlan0Only) - { cmapTable = cmapTable.concat([ - // CMAP 12 header - {name: 'cmap12PlatformID', type: 'USHORT', value: 3}, // We encode only for PlatformID = 3 (Windows) because it is supported everywhere - {name: 'cmap12EncodingID', type: 'USHORT', value: 10}, - {name: 'cmap12Offset', type: 'ULONG', value: 0} - ]); } - - cmapTable = cmapTable.concat([ - // CMAP 4 Subtable - {name: 'format', type: 'USHORT', value: 4}, - {name: 'cmap4Length', type: 'USHORT', value: 0}, - {name: 'language', type: 'USHORT', value: 0}, - {name: 'segCountX2', type: 'USHORT', value: 0}, - {name: 'searchRange', type: 'USHORT', value: 0}, - {name: 'entrySelector', type: 'USHORT', value: 0}, - {name: 'rangeShift', type: 'USHORT', value: 0} - ]); - - var t = new table.Table('cmap', cmapTable); - - t.segments = []; - for (i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs.get(i); - for (var j = 0; j < glyph.unicodes.length; j += 1) { - addSegment(t, glyph.unicodes[j], i); - } - - t.segments = t.segments.sort(function (a, b) { - return a.start - b.start; - }); - } - - addTerminatorSegment(t); - - var segCount = t.segments.length; - var segCountToRemove = 0; - - // CMAP 4 - // Set up parallel segment arrays. - var endCounts = []; - var startCounts = []; - var idDeltas = []; - var idRangeOffsets = []; - var glyphIds = []; - - // CMAP 12 - var cmap12Groups = []; - - // Reminder this loop is not following the specification at 100% - // The specification -> find suites of characters and make a group - // Here we're doing one group for each letter - // Doing as the spec can save 8 times (or more) space - for (i = 0; i < segCount; i += 1) { - var segment = t.segments[i]; - - // CMAP 4 - if (segment.end <= 65535 && segment.start <= 65535) { - endCounts = endCounts.concat({name: 'end_' + i, type: 'USHORT', value: segment.end}); - startCounts = startCounts.concat({name: 'start_' + i, type: 'USHORT', value: segment.start}); - idDeltas = idDeltas.concat({name: 'idDelta_' + i, type: 'SHORT', value: segment.delta}); - idRangeOffsets = idRangeOffsets.concat({name: 'idRangeOffset_' + i, type: 'USHORT', value: segment.offset}); - if (segment.glyphId !== undefined) { - glyphIds = glyphIds.concat({name: 'glyph_' + i, type: 'USHORT', value: segment.glyphId}); - } - } else { - // Skip Unicode > 65535 (16bit unsigned max) for CMAP 4, will be added in CMAP 12 - segCountToRemove += 1; - } - - // CMAP 12 - // Skip Terminator Segment - if (!isPlan0Only && segment.glyphIndex !== undefined) { - cmap12Groups = cmap12Groups.concat({name: 'cmap12Start_' + i, type: 'ULONG', value: segment.start}); - cmap12Groups = cmap12Groups.concat({name: 'cmap12End_' + i, type: 'ULONG', value: segment.end}); - cmap12Groups = cmap12Groups.concat({name: 'cmap12Glyph_' + i, type: 'ULONG', value: segment.glyphIndex}); - } - } - - // CMAP 4 Subtable - t.segCountX2 = (segCount - segCountToRemove) * 2; - t.searchRange = Math.pow(2, Math.floor(Math.log((segCount - segCountToRemove)) / Math.log(2))) * 2; - t.entrySelector = Math.log(t.searchRange / 2) / Math.log(2); - t.rangeShift = t.segCountX2 - t.searchRange; - - t.fields = t.fields.concat(endCounts); - t.fields.push({name: 'reservedPad', type: 'USHORT', value: 0}); - t.fields = t.fields.concat(startCounts); - t.fields = t.fields.concat(idDeltas); - t.fields = t.fields.concat(idRangeOffsets); - t.fields = t.fields.concat(glyphIds); - - t.cmap4Length = 14 + // Subtable header - endCounts.length * 2 + - 2 + // reservedPad - startCounts.length * 2 + - idDeltas.length * 2 + - idRangeOffsets.length * 2 + - glyphIds.length * 2; - - if (!isPlan0Only) { - // CMAP 12 Subtable - var cmap12Length = 16 + // Subtable header - cmap12Groups.length * 4; - - t.cmap12Offset = 12 + (2 * 2) + 4 + t.cmap4Length; - t.fields = t.fields.concat([ - {name: 'cmap12Format', type: 'USHORT', value: 12}, - {name: 'cmap12Reserved', type: 'USHORT', value: 0}, - {name: 'cmap12Length', type: 'ULONG', value: cmap12Length}, - {name: 'cmap12Language', type: 'ULONG', value: 0}, - {name: 'cmap12nGroups', type: 'ULONG', value: cmap12Groups.length / 3} - ]); - - t.fields = t.fields.concat(cmap12Groups); - } - - return t; -} - -var cmap = { parse: parseCmapTable, make: makeCmapTable }; - -// Glyph encoding - -var cffStandardStrings = [ - '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', - 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', - 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', - 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', - 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', - 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', - 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', - 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', - 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', - 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', - 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', - 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', - 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', - 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', - 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', - 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', - 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', - 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', - 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', - 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', - 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', - 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', - 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', '266 ff', 'onedotenleader', - 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', - 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', 'threequartersemdash', 'periodsuperior', - 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', - 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl', - 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', - 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', - 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', - 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', - 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', - 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', - 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', - 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', - 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', - 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', - 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', - 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', - 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', - 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', - 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall', '001.000', - '001.001', '001.002', '001.003', 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold']; - -var cffStandardEncoding = [ - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', - 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', - 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', - 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', - 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', - 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', - 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', - 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', - 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', - 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', - 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', - 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', - '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', - 'lslash', 'oslash', 'oe', 'germandbls']; - -var cffExpertEncoding = [ - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', - 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', - 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', - 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', - 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', - 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', - 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', - 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', - 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', - 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', - 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', - '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', - 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', - 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', - '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', - 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', - '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', - 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', - 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', - 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', - 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', - 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', - 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', - 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', - 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall']; - -var standardNames = [ - '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', - 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', - 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', - 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', - 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', - 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', - 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', - 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', - 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', - 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', - 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', - 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', - 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', - 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', - 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', - 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', - 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', - 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', - 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', - 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', - 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', - 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', - 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', - 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat']; - -/** - * This is the encoding used for fonts created from scratch. - * It loops through all glyphs and finds the appropriate unicode value. - * Since it's linear time, other encodings will be faster. - * @exports opentype.DefaultEncoding - * @class - * @constructor - * @param {opentype.Font} - */ -function DefaultEncoding(font) { - this.font = font; -} - -DefaultEncoding.prototype.charToGlyphIndex = function(c) { - var code = c.codePointAt(0); - var glyphs = this.font.glyphs; - if (glyphs) { - for (var i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs.get(i); - for (var j = 0; j < glyph.unicodes.length; j += 1) { - if (glyph.unicodes[j] === code) { - return i; - } - } - } - } - return null; -}; - -/** - * @exports opentype.CmapEncoding - * @class - * @constructor - * @param {Object} cmap - a object with the cmap encoded data - */ -function CmapEncoding(cmap) { - this.cmap = cmap; -} - -/** - * @param {string} c - the character - * @return {number} The glyph index. - */ -CmapEncoding.prototype.charToGlyphIndex = function(c) { - return this.cmap.glyphIndexMap[c.codePointAt(0)] || 0; -}; - -/** - * @exports opentype.CffEncoding - * @class - * @constructor - * @param {string} encoding - The encoding - * @param {Array} charset - The character set. - */ -function CffEncoding(encoding, charset) { - this.encoding = encoding; - this.charset = charset; -} - -/** - * @param {string} s - The character - * @return {number} The index. - */ -CffEncoding.prototype.charToGlyphIndex = function(s) { - var code = s.codePointAt(0); - var charName = this.encoding[code]; - return this.charset.indexOf(charName); -}; - -/** - * @exports opentype.GlyphNames - * @class - * @constructor - * @param {Object} post - */ -function GlyphNames(post) { - switch (post.version) { - case 1: - this.names = standardNames.slice(); - break; - case 2: - this.names = new Array(post.numberOfGlyphs); - for (var i = 0; i < post.numberOfGlyphs; i++) { - if (post.glyphNameIndex[i] < standardNames.length) { - this.names[i] = standardNames[post.glyphNameIndex[i]]; - } else { - this.names[i] = post.names[post.glyphNameIndex[i] - standardNames.length]; - } - } - - break; - case 2.5: - this.names = new Array(post.numberOfGlyphs); - for (var i$1 = 0; i$1 < post.numberOfGlyphs; i$1++) { - this.names[i$1] = standardNames[i$1 + post.glyphNameIndex[i$1]]; - } - - break; - case 3: - this.names = []; - break; - default: - this.names = []; - break; - } -} - -/** - * Gets the index of a glyph by name. - * @param {string} name - The glyph name - * @return {number} The index - */ -GlyphNames.prototype.nameToGlyphIndex = function(name) { - return this.names.indexOf(name); -}; - -/** - * @param {number} gid - * @return {string} - */ -GlyphNames.prototype.glyphIndexToName = function(gid) { - return this.names[gid]; -}; - -function addGlyphNamesAll(font) { - var glyph; - var glyphIndexMap = font.tables.cmap.glyphIndexMap; - var charCodes = Object.keys(glyphIndexMap); - - for (var i = 0; i < charCodes.length; i += 1) { - var c = charCodes[i]; - var glyphIndex = glyphIndexMap[c]; - glyph = font.glyphs.get(glyphIndex); - glyph.addUnicode(parseInt(c)); - } - - for (var i$1 = 0; i$1 < font.glyphs.length; i$1 += 1) { - glyph = font.glyphs.get(i$1); - if (font.cffEncoding) { - if (font.isCIDFont) { - glyph.name = 'gid' + i$1; - } else { - glyph.name = font.cffEncoding.charset[i$1]; - } - } else if (font.glyphNames.names) { - glyph.name = font.glyphNames.glyphIndexToName(i$1); - } - } -} - -function addGlyphNamesToUnicodeMap(font) { - font._IndexToUnicodeMap = {}; - - var glyphIndexMap = font.tables.cmap.glyphIndexMap; - var charCodes = Object.keys(glyphIndexMap); - - for (var i = 0; i < charCodes.length; i += 1) { - var c = charCodes[i]; - var glyphIndex = glyphIndexMap[c]; - if (font._IndexToUnicodeMap[glyphIndex] === undefined) { - font._IndexToUnicodeMap[glyphIndex] = { - unicodes: [parseInt(c)] - }; - } else { - font._IndexToUnicodeMap[glyphIndex].unicodes.push(parseInt(c)); - } - } -} - -/** - * @alias opentype.addGlyphNames - * @param {opentype.Font} - * @param {Object} - */ -function addGlyphNames(font, opt) { - if (opt.lowMemory) { - addGlyphNamesToUnicodeMap(font); - } else { - addGlyphNamesAll(font); - } -} - -// Drawing utility functions. - -// Draw a line on the given context from point `x1,y1` to point `x2,y2`. -function line(ctx, x1, y1, x2, y2) { - ctx.beginPath(); - ctx.moveTo(x1, y1); - ctx.lineTo(x2, y2); - ctx.stroke(); -} - -var draw = { line: line }; - -// The Glyph object -// import glyf from './tables/glyf' Can't be imported here, because it's a circular dependency - -function getPathDefinition(glyph, path) { - var _path = path || new Path(); - return { - configurable: true, - - get: function() { - if (typeof _path === 'function') { - _path = _path(); - } - - return _path; - }, - - set: function(p) { - _path = p; - } - }; -} -/** - * @typedef GlyphOptions - * @type Object - * @property {string} [name] - The glyph name - * @property {number} [unicode] - * @property {Array} [unicodes] - * @property {number} [xMin] - * @property {number} [yMin] - * @property {number} [xMax] - * @property {number} [yMax] - * @property {number} [advanceWidth] - */ - -// A Glyph is an individual mark that often corresponds to a character. -// Some glyphs, such as ligatures, are a combination of many characters. -// Glyphs are the basic building blocks of a font. -// -// The `Glyph` class contains utility methods for drawing the path and its points. -/** - * @exports opentype.Glyph - * @class - * @param {GlyphOptions} - * @constructor - */ -function Glyph(options) { - // By putting all the code on a prototype function (which is only declared once) - // we reduce the memory requirements for larger fonts by some 2% - this.bindConstructorValues(options); -} - -/** - * @param {GlyphOptions} - */ -Glyph.prototype.bindConstructorValues = function(options) { - this.index = options.index || 0; - - // These three values cannot be deferred for memory optimization: - this.name = options.name || null; - this.unicode = options.unicode || undefined; - this.unicodes = options.unicodes || options.unicode !== undefined ? [options.unicode] : []; - - // But by binding these values only when necessary, we reduce can - // the memory requirements by almost 3% for larger fonts. - if ('xMin' in options) { - this.xMin = options.xMin; - } - - if ('yMin' in options) { - this.yMin = options.yMin; - } - - if ('xMax' in options) { - this.xMax = options.xMax; - } - - if ('yMax' in options) { - this.yMax = options.yMax; - } - - if ('advanceWidth' in options) { - this.advanceWidth = options.advanceWidth; - } - - // The path for a glyph is the most memory intensive, and is bound as a value - // with a getter/setter to ensure we actually do path parsing only once the - // path is actually needed by anything. - Object.defineProperty(this, 'path', getPathDefinition(this, options.path)); -}; - -/** - * @param {number} - */ -Glyph.prototype.addUnicode = function(unicode) { - if (this.unicodes.length === 0) { - this.unicode = unicode; - } - - this.unicodes.push(unicode); -}; - -/** - * Calculate the minimum bounding box for this glyph. - * @return {opentype.BoundingBox} - */ -Glyph.prototype.getBoundingBox = function() { - return this.path.getBoundingBox(); -}; - -/** - * Convert the glyph to a Path we can draw on a drawing context. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {Object=} options - xScale, yScale to stretch the glyph. - * @param {opentype.Font} if hinting is to be used, the font - * @return {opentype.Path} - */ -Glyph.prototype.getPath = function(x, y, fontSize, options, font) { - x = x !== undefined ? x : 0; - y = y !== undefined ? y : 0; - fontSize = fontSize !== undefined ? fontSize : 72; - var commands; - var hPoints; - if (!options) { options = { }; } - var xScale = options.xScale; - var yScale = options.yScale; - - if (options.hinting && font && font.hinting) { - // in case of hinting, the hinting engine takes care - // of scaling the points (not the path) before hinting. - hPoints = this.path && font.hinting.exec(this, fontSize); - // in case the hinting engine failed hPoints is undefined - // and thus reverts to plain rending - } - - if (hPoints) { - // Call font.hinting.getCommands instead of `glyf.getPath(hPoints).commands` to avoid a circular dependency - commands = font.hinting.getCommands(hPoints); - x = Math.round(x); - y = Math.round(y); - // TODO in case of hinting xyScaling is not yet supported - xScale = yScale = 1; - } else { - commands = this.path.commands; - var scale = 1 / (this.path.unitsPerEm || 1000) * fontSize; - if (xScale === undefined) { xScale = scale; } - if (yScale === undefined) { yScale = scale; } - } - - var p = new Path(); - for (var i = 0; i < commands.length; i += 1) { - var cmd = commands[i]; - if (cmd.type === 'M') { - p.moveTo(x + (cmd.x * xScale), y + (-cmd.y * yScale)); - } else if (cmd.type === 'L') { - p.lineTo(x + (cmd.x * xScale), y + (-cmd.y * yScale)); - } else if (cmd.type === 'Q') { - p.quadraticCurveTo(x + (cmd.x1 * xScale), y + (-cmd.y1 * yScale), - x + (cmd.x * xScale), y + (-cmd.y * yScale)); - } else if (cmd.type === 'C') { - p.curveTo(x + (cmd.x1 * xScale), y + (-cmd.y1 * yScale), - x + (cmd.x2 * xScale), y + (-cmd.y2 * yScale), - x + (cmd.x * xScale), y + (-cmd.y * yScale)); - } else if (cmd.type === 'Z') { - p.closePath(); - } - } - - return p; -}; - -/** - * Split the glyph into contours. - * This function is here for backwards compatibility, and to - * provide raw access to the TrueType glyph outlines. - * @return {Array} - */ -Glyph.prototype.getContours = function() { - if (this.points === undefined) { - return []; - } - - var contours = []; - var currentContour = []; - for (var i = 0; i < this.points.length; i += 1) { - var pt = this.points[i]; - currentContour.push(pt); - if (pt.lastPointOfContour) { - contours.push(currentContour); - currentContour = []; - } - } - - check.argument(currentContour.length === 0, 'There are still points left in the current contour.'); - return contours; -}; - -/** - * Calculate the xMin/yMin/xMax/yMax/lsb/rsb for a Glyph. - * @return {Object} - */ -Glyph.prototype.getMetrics = function() { - var commands = this.path.commands; - var xCoords = []; - var yCoords = []; - for (var i = 0; i < commands.length; i += 1) { - var cmd = commands[i]; - if (cmd.type !== 'Z') { - xCoords.push(cmd.x); - yCoords.push(cmd.y); - } - - if (cmd.type === 'Q' || cmd.type === 'C') { - xCoords.push(cmd.x1); - yCoords.push(cmd.y1); - } - - if (cmd.type === 'C') { - xCoords.push(cmd.x2); - yCoords.push(cmd.y2); - } - } - - var metrics = { - xMin: Math.min.apply(null, xCoords), - yMin: Math.min.apply(null, yCoords), - xMax: Math.max.apply(null, xCoords), - yMax: Math.max.apply(null, yCoords), - leftSideBearing: this.leftSideBearing - }; - - if (!isFinite(metrics.xMin)) { - metrics.xMin = 0; - } - - if (!isFinite(metrics.xMax)) { - metrics.xMax = this.advanceWidth; - } - - if (!isFinite(metrics.yMin)) { - metrics.yMin = 0; - } - - if (!isFinite(metrics.yMax)) { - metrics.yMax = 0; - } - - metrics.rightSideBearing = this.advanceWidth - metrics.leftSideBearing - (metrics.xMax - metrics.xMin); - return metrics; -}; - -/** - * Draw the glyph on the given context. - * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {Object=} options - xScale, yScale to stretch the glyph. - */ -Glyph.prototype.draw = function(ctx, x, y, fontSize, options) { - this.getPath(x, y, fontSize, options).draw(ctx); -}; - -/** - * Draw the points of the glyph. - * On-curve points will be drawn in blue, off-curve points will be drawn in red. - * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - */ -Glyph.prototype.drawPoints = function(ctx, x, y, fontSize) { - function drawCircles(l, x, y, scale) { - ctx.beginPath(); - for (var j = 0; j < l.length; j += 1) { - ctx.moveTo(x + (l[j].x * scale), y + (l[j].y * scale)); - ctx.arc(x + (l[j].x * scale), y + (l[j].y * scale), 2, 0, Math.PI * 2, false); - } - - ctx.closePath(); - ctx.fill(); - } - - x = x !== undefined ? x : 0; - y = y !== undefined ? y : 0; - fontSize = fontSize !== undefined ? fontSize : 24; - var scale = 1 / this.path.unitsPerEm * fontSize; - - var blueCircles = []; - var redCircles = []; - var path = this.path; - for (var i = 0; i < path.commands.length; i += 1) { - var cmd = path.commands[i]; - if (cmd.x !== undefined) { - blueCircles.push({x: cmd.x, y: -cmd.y}); - } - - if (cmd.x1 !== undefined) { - redCircles.push({x: cmd.x1, y: -cmd.y1}); - } - - if (cmd.x2 !== undefined) { - redCircles.push({x: cmd.x2, y: -cmd.y2}); - } - } - - ctx.fillStyle = 'blue'; - drawCircles(blueCircles, x, y, scale); - ctx.fillStyle = 'red'; - drawCircles(redCircles, x, y, scale); -}; - -/** - * Draw lines indicating important font measurements. - * Black lines indicate the origin of the coordinate system (point 0,0). - * Blue lines indicate the glyph bounding box. - * Green line indicates the advance width of the glyph. - * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - */ -Glyph.prototype.drawMetrics = function(ctx, x, y, fontSize) { - var scale; - x = x !== undefined ? x : 0; - y = y !== undefined ? y : 0; - fontSize = fontSize !== undefined ? fontSize : 24; - scale = 1 / this.path.unitsPerEm * fontSize; - ctx.lineWidth = 1; - - // Draw the origin - ctx.strokeStyle = 'black'; - draw.line(ctx, x, -10000, x, 10000); - draw.line(ctx, -10000, y, 10000, y); - - // This code is here due to memory optimization: by not using - // defaults in the constructor, we save a notable amount of memory. - var xMin = this.xMin || 0; - var yMin = this.yMin || 0; - var xMax = this.xMax || 0; - var yMax = this.yMax || 0; - var advanceWidth = this.advanceWidth || 0; - - // Draw the glyph box - ctx.strokeStyle = 'blue'; - draw.line(ctx, x + (xMin * scale), -10000, x + (xMin * scale), 10000); - draw.line(ctx, x + (xMax * scale), -10000, x + (xMax * scale), 10000); - draw.line(ctx, -10000, y + (-yMin * scale), 10000, y + (-yMin * scale)); - draw.line(ctx, -10000, y + (-yMax * scale), 10000, y + (-yMax * scale)); - - // Draw the advance width - ctx.strokeStyle = 'green'; - draw.line(ctx, x + (advanceWidth * scale), -10000, x + (advanceWidth * scale), 10000); -}; - -// The GlyphSet object - -// Define a property on the glyph that depends on the path being loaded. -function defineDependentProperty(glyph, externalName, internalName) { - Object.defineProperty(glyph, externalName, { - get: function() { - // Request the path property to make sure the path is loaded. - glyph.path; // jshint ignore:line - return glyph[internalName]; - }, - set: function(newValue) { - glyph[internalName] = newValue; - }, - enumerable: true, - configurable: true - }); -} - -/** - * A GlyphSet represents all glyphs available in the font, but modelled using - * a deferred glyph loader, for retrieving glyphs only once they are absolutely - * necessary, to keep the memory footprint down. - * @exports opentype.GlyphSet - * @class - * @param {opentype.Font} - * @param {Array} - */ -function GlyphSet(font, glyphs) { - this.font = font; - this.glyphs = {}; - if (Array.isArray(glyphs)) { - for (var i = 0; i < glyphs.length; i++) { - var glyph = glyphs[i]; - glyph.path.unitsPerEm = font.unitsPerEm; - this.glyphs[i] = glyph; - } - } - - this.length = (glyphs && glyphs.length) || 0; -} - -/** - * @param {number} index - * @return {opentype.Glyph} - */ -GlyphSet.prototype.get = function(index) { - // this.glyphs[index] is 'undefined' when low memory mode is on. glyph is pushed on request only. - if (this.glyphs[index] === undefined) { - this.font._push(index); - if (typeof this.glyphs[index] === 'function') { - this.glyphs[index] = this.glyphs[index](); - } - - var glyph = this.glyphs[index]; - var unicodeObj = this.font._IndexToUnicodeMap[index]; - - if (unicodeObj) { - for (var j = 0; j < unicodeObj.unicodes.length; j++) - { glyph.addUnicode(unicodeObj.unicodes[j]); } - } - - if (this.font.cffEncoding) { - if (this.font.isCIDFont) { - glyph.name = 'gid' + index; - } else { - glyph.name = this.font.cffEncoding.charset[index]; - } - } else if (this.font.glyphNames.names) { - glyph.name = this.font.glyphNames.glyphIndexToName(index); - } - - this.glyphs[index].advanceWidth = this.font._hmtxTableData[index].advanceWidth; - this.glyphs[index].leftSideBearing = this.font._hmtxTableData[index].leftSideBearing; - } else { - if (typeof this.glyphs[index] === 'function') { - this.glyphs[index] = this.glyphs[index](); - } - } - - return this.glyphs[index]; -}; - -/** - * @param {number} index - * @param {Object} - */ -GlyphSet.prototype.push = function(index, loader) { - this.glyphs[index] = loader; - this.length++; -}; - -/** - * @alias opentype.glyphLoader - * @param {opentype.Font} font - * @param {number} index - * @return {opentype.Glyph} - */ -function glyphLoader(font, index) { - return new Glyph({index: index, font: font}); -} - -/** - * Generate a stub glyph that can be filled with all metadata *except* - * the "points" and "path" properties, which must be loaded only once - * the glyph's path is actually requested for text shaping. - * @alias opentype.ttfGlyphLoader - * @param {opentype.Font} font - * @param {number} index - * @param {Function} parseGlyph - * @param {Object} data - * @param {number} position - * @param {Function} buildPath - * @return {opentype.Glyph} - */ -function ttfGlyphLoader(font, index, parseGlyph, data, position, buildPath) { - return function() { - var glyph = new Glyph({index: index, font: font}); - - glyph.path = function() { - parseGlyph(glyph, data, position); - var path = buildPath(font.glyphs, glyph); - path.unitsPerEm = font.unitsPerEm; - return path; - }; - - defineDependentProperty(glyph, 'xMin', '_xMin'); - defineDependentProperty(glyph, 'xMax', '_xMax'); - defineDependentProperty(glyph, 'yMin', '_yMin'); - defineDependentProperty(glyph, 'yMax', '_yMax'); - - return glyph; - }; -} -/** - * @alias opentype.cffGlyphLoader - * @param {opentype.Font} font - * @param {number} index - * @param {Function} parseCFFCharstring - * @param {string} charstring - * @return {opentype.Glyph} - */ -function cffGlyphLoader(font, index, parseCFFCharstring, charstring) { - return function() { - var glyph = new Glyph({index: index, font: font}); - - glyph.path = function() { - var path = parseCFFCharstring(font, glyph, charstring); - path.unitsPerEm = font.unitsPerEm; - return path; - }; - - return glyph; - }; -} - -var glyphset = { GlyphSet: GlyphSet, glyphLoader: glyphLoader, ttfGlyphLoader: ttfGlyphLoader, cffGlyphLoader: cffGlyphLoader }; - -// The `CFF` table contains the glyph outlines in PostScript format. - -// Custom equals function that can also check lists. -function equals(a, b) { - if (a === b) { - return true; - } else if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) { - return false; - } - - for (var i = 0; i < a.length; i += 1) { - if (!equals(a[i], b[i])) { - return false; - } - } - - return true; - } else { - return false; - } -} - -// Subroutines are encoded using the negative half of the number space. -// See type 2 chapter 4.7 "Subroutine operators". -function calcCFFSubroutineBias(subrs) { - var bias; - if (subrs.length < 1240) { - bias = 107; - } else if (subrs.length < 33900) { - bias = 1131; - } else { - bias = 32768; - } - - return bias; -} - -// Parse a `CFF` INDEX array. -// An index array consists of a list of offsets, then a list of objects at those offsets. -function parseCFFIndex(data, start, conversionFn) { - var offsets = []; - var objects = []; - var count = parse.getCard16(data, start); - var objectOffset; - var endOffset; - if (count !== 0) { - var offsetSize = parse.getByte(data, start + 2); - objectOffset = start + ((count + 1) * offsetSize) + 2; - var pos = start + 3; - for (var i = 0; i < count + 1; i += 1) { - offsets.push(parse.getOffset(data, pos, offsetSize)); - pos += offsetSize; - } - - // The total size of the index array is 4 header bytes + the value of the last offset. - endOffset = objectOffset + offsets[count]; - } else { - endOffset = start + 2; - } - - for (var i$1 = 0; i$1 < offsets.length - 1; i$1 += 1) { - var value = parse.getBytes(data, objectOffset + offsets[i$1], objectOffset + offsets[i$1 + 1]); - if (conversionFn) { - value = conversionFn(value); - } - - objects.push(value); - } - - return {objects: objects, startOffset: start, endOffset: endOffset}; -} - -function parseCFFIndexLowMemory(data, start) { - var offsets = []; - var count = parse.getCard16(data, start); - var objectOffset; - var endOffset; - if (count !== 0) { - var offsetSize = parse.getByte(data, start + 2); - objectOffset = start + ((count + 1) * offsetSize) + 2; - var pos = start + 3; - for (var i = 0; i < count + 1; i += 1) { - offsets.push(parse.getOffset(data, pos, offsetSize)); - pos += offsetSize; - } - - // The total size of the index array is 4 header bytes + the value of the last offset. - endOffset = objectOffset + offsets[count]; - } else { - endOffset = start + 2; - } - - return {offsets: offsets, startOffset: start, endOffset: endOffset}; -} -function getCffIndexObject(i, offsets, data, start, conversionFn) { - var count = parse.getCard16(data, start); - var objectOffset = 0; - if (count !== 0) { - var offsetSize = parse.getByte(data, start + 2); - objectOffset = start + ((count + 1) * offsetSize) + 2; - } - - var value = parse.getBytes(data, objectOffset + offsets[i], objectOffset + offsets[i + 1]); - if (conversionFn) { - value = conversionFn(value); - } - return value; -} - -// Parse a `CFF` DICT real value. -function parseFloatOperand(parser) { - var s = ''; - var eof = 15; - var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-']; - while (true) { - var b = parser.parseByte(); - var n1 = b >> 4; - var n2 = b & 15; - - if (n1 === eof) { - break; - } - - s += lookup[n1]; - - if (n2 === eof) { - break; - } - - s += lookup[n2]; - } - - return parseFloat(s); -} - -// Parse a `CFF` DICT operand. -function parseOperand(parser, b0) { - var b1; - var b2; - var b3; - var b4; - if (b0 === 28) { - b1 = parser.parseByte(); - b2 = parser.parseByte(); - return b1 << 8 | b2; - } - - if (b0 === 29) { - b1 = parser.parseByte(); - b2 = parser.parseByte(); - b3 = parser.parseByte(); - b4 = parser.parseByte(); - return b1 << 24 | b2 << 16 | b3 << 8 | b4; - } - - if (b0 === 30) { - return parseFloatOperand(parser); - } - - if (b0 >= 32 && b0 <= 246) { - return b0 - 139; - } - - if (b0 >= 247 && b0 <= 250) { - b1 = parser.parseByte(); - return (b0 - 247) * 256 + b1 + 108; - } - - if (b0 >= 251 && b0 <= 254) { - b1 = parser.parseByte(); - return -(b0 - 251) * 256 - b1 - 108; - } - - throw new Error('Invalid b0 ' + b0); -} - -// Convert the entries returned by `parseDict` to a proper dictionary. -// If a value is a list of one, it is unpacked. -function entriesToObject(entries) { - var o = {}; - for (var i = 0; i < entries.length; i += 1) { - var key = entries[i][0]; - var values = entries[i][1]; - var value = (void 0); - if (values.length === 1) { - value = values[0]; - } else { - value = values; - } - - if (o.hasOwnProperty(key) && !isNaN(o[key])) { - throw new Error('Object ' + o + ' already has key ' + key); - } - - o[key] = value; - } - - return o; -} - -// Parse a `CFF` DICT object. -// A dictionary contains key-value pairs in a compact tokenized format. -function parseCFFDict(data, start, size) { - start = start !== undefined ? start : 0; - var parser = new parse.Parser(data, start); - var entries = []; - var operands = []; - size = size !== undefined ? size : data.length; - - while (parser.relativeOffset < size) { - var op = parser.parseByte(); - - // The first byte for each dict item distinguishes between operator (key) and operand (value). - // Values <= 21 are operators. - if (op <= 21) { - // Two-byte operators have an initial escape byte of 12. - if (op === 12) { - op = 1200 + parser.parseByte(); - } - - entries.push([op, operands]); - operands = []; - } else { - // Since the operands (values) come before the operators (keys), we store all operands in a list - // until we encounter an operator. - operands.push(parseOperand(parser, op)); - } - } - - return entriesToObject(entries); -} - -// Given a String Index (SID), return the value of the string. -// Strings below index 392 are standard CFF strings and are not encoded in the font. -function getCFFString(strings, index) { - if (index <= 390) { - index = cffStandardStrings[index]; - } else { - index = strings[index - 391]; - } - - return index; -} - -// Interpret a dictionary and return a new dictionary with readable keys and values for missing entries. -// This function takes `meta` which is a list of objects containing `operand`, `name` and `default`. -function interpretDict(dict, meta, strings) { - var newDict = {}; - var value; - - // Because we also want to include missing values, we start out from the meta list - // and lookup values in the dict. - for (var i = 0; i < meta.length; i += 1) { - var m = meta[i]; - - if (Array.isArray(m.type)) { - var values = []; - values.length = m.type.length; - for (var j = 0; j < m.type.length; j++) { - value = dict[m.op] !== undefined ? dict[m.op][j] : undefined; - if (value === undefined) { - value = m.value !== undefined && m.value[j] !== undefined ? m.value[j] : null; - } - if (m.type[j] === 'SID') { - value = getCFFString(strings, value); - } - values[j] = value; - } - newDict[m.name] = values; - } else { - value = dict[m.op]; - if (value === undefined) { - value = m.value !== undefined ? m.value : null; - } - - if (m.type === 'SID') { - value = getCFFString(strings, value); - } - newDict[m.name] = value; - } - } - - return newDict; -} - -// Parse the CFF header. -function parseCFFHeader(data, start) { - var header = {}; - header.formatMajor = parse.getCard8(data, start); - header.formatMinor = parse.getCard8(data, start + 1); - header.size = parse.getCard8(data, start + 2); - header.offsetSize = parse.getCard8(data, start + 3); - header.startOffset = start; - header.endOffset = start + 4; - return header; -} - -var TOP_DICT_META = [ - {name: 'version', op: 0, type: 'SID'}, - {name: 'notice', op: 1, type: 'SID'}, - {name: 'copyright', op: 1200, type: 'SID'}, - {name: 'fullName', op: 2, type: 'SID'}, - {name: 'familyName', op: 3, type: 'SID'}, - {name: 'weight', op: 4, type: 'SID'}, - {name: 'isFixedPitch', op: 1201, type: 'number', value: 0}, - {name: 'italicAngle', op: 1202, type: 'number', value: 0}, - {name: 'underlinePosition', op: 1203, type: 'number', value: -100}, - {name: 'underlineThickness', op: 1204, type: 'number', value: 50}, - {name: 'paintType', op: 1205, type: 'number', value: 0}, - {name: 'charstringType', op: 1206, type: 'number', value: 2}, - { - name: 'fontMatrix', - op: 1207, - type: ['real', 'real', 'real', 'real', 'real', 'real'], - value: [0.001, 0, 0, 0.001, 0, 0] - }, - {name: 'uniqueId', op: 13, type: 'number'}, - {name: 'fontBBox', op: 5, type: ['number', 'number', 'number', 'number'], value: [0, 0, 0, 0]}, - {name: 'strokeWidth', op: 1208, type: 'number', value: 0}, - {name: 'xuid', op: 14, type: [], value: null}, - {name: 'charset', op: 15, type: 'offset', value: 0}, - {name: 'encoding', op: 16, type: 'offset', value: 0}, - {name: 'charStrings', op: 17, type: 'offset', value: 0}, - {name: 'private', op: 18, type: ['number', 'offset'], value: [0, 0]}, - {name: 'ros', op: 1230, type: ['SID', 'SID', 'number']}, - {name: 'cidFontVersion', op: 1231, type: 'number', value: 0}, - {name: 'cidFontRevision', op: 1232, type: 'number', value: 0}, - {name: 'cidFontType', op: 1233, type: 'number', value: 0}, - {name: 'cidCount', op: 1234, type: 'number', value: 8720}, - {name: 'uidBase', op: 1235, type: 'number'}, - {name: 'fdArray', op: 1236, type: 'offset'}, - {name: 'fdSelect', op: 1237, type: 'offset'}, - {name: 'fontName', op: 1238, type: 'SID'} -]; - -var PRIVATE_DICT_META = [ - {name: 'subrs', op: 19, type: 'offset', value: 0}, - {name: 'defaultWidthX', op: 20, type: 'number', value: 0}, - {name: 'nominalWidthX', op: 21, type: 'number', value: 0} -]; - -// Parse the CFF top dictionary. A CFF table can contain multiple fonts, each with their own top dictionary. -// The top dictionary contains the essential metadata for the font, together with the private dictionary. -function parseCFFTopDict(data, strings) { - var dict = parseCFFDict(data, 0, data.byteLength); - return interpretDict(dict, TOP_DICT_META, strings); -} - -// Parse the CFF private dictionary. We don't fully parse out all the values, only the ones we need. -function parseCFFPrivateDict(data, start, size, strings) { - var dict = parseCFFDict(data, start, size); - return interpretDict(dict, PRIVATE_DICT_META, strings); -} - -// Returns a list of "Top DICT"s found using an INDEX list. -// Used to read both the usual high-level Top DICTs and also the FDArray -// discovered inside CID-keyed fonts. When a Top DICT has a reference to -// a Private DICT that is read and saved into the Top DICT. -// -// In addition to the expected/optional values as outlined in TOP_DICT_META -// the following values might be saved into the Top DICT. -// -// _subrs [] array of local CFF subroutines from Private DICT -// _subrsBias bias value computed from number of subroutines -// (see calcCFFSubroutineBias() and parseCFFCharstring()) -// _defaultWidthX default widths for CFF characters -// _nominalWidthX bias added to width embedded within glyph description -// -// _privateDict saved copy of parsed Private DICT from Top DICT -function gatherCFFTopDicts(data, start, cffIndex, strings) { - var topDictArray = []; - for (var iTopDict = 0; iTopDict < cffIndex.length; iTopDict += 1) { - var topDictData = new DataView(new Uint8Array(cffIndex[iTopDict]).buffer); - var topDict = parseCFFTopDict(topDictData, strings); - topDict._subrs = []; - topDict._subrsBias = 0; - topDict._defaultWidthX = 0; - topDict._nominalWidthX = 0; - var privateSize = topDict.private[0]; - var privateOffset = topDict.private[1]; - if (privateSize !== 0 && privateOffset !== 0) { - var privateDict = parseCFFPrivateDict(data, privateOffset + start, privateSize, strings); - topDict._defaultWidthX = privateDict.defaultWidthX; - topDict._nominalWidthX = privateDict.nominalWidthX; - if (privateDict.subrs !== 0) { - var subrOffset = privateOffset + privateDict.subrs; - var subrIndex = parseCFFIndex(data, subrOffset + start); - topDict._subrs = subrIndex.objects; - topDict._subrsBias = calcCFFSubroutineBias(topDict._subrs); - } - topDict._privateDict = privateDict; - } - topDictArray.push(topDict); - } - return topDictArray; -} - -// Parse the CFF charset table, which contains internal names for all the glyphs. -// This function will return a list of glyph names. -// See Adobe TN #5176 chapter 13, "Charsets". -function parseCFFCharset(data, start, nGlyphs, strings) { - var sid; - var count; - var parser = new parse.Parser(data, start); - - // The .notdef glyph is not included, so subtract 1. - nGlyphs -= 1; - var charset = ['.notdef']; - - var format = parser.parseCard8(); - if (format === 0) { - for (var i = 0; i < nGlyphs; i += 1) { - sid = parser.parseSID(); - charset.push(getCFFString(strings, sid)); - } - } else if (format === 1) { - while (charset.length <= nGlyphs) { - sid = parser.parseSID(); - count = parser.parseCard8(); - for (var i$1 = 0; i$1 <= count; i$1 += 1) { - charset.push(getCFFString(strings, sid)); - sid += 1; - } - } - } else if (format === 2) { - while (charset.length <= nGlyphs) { - sid = parser.parseSID(); - count = parser.parseCard16(); - for (var i$2 = 0; i$2 <= count; i$2 += 1) { - charset.push(getCFFString(strings, sid)); - sid += 1; - } - } - } else { - throw new Error('Unknown charset format ' + format); - } - - return charset; -} - -// Parse the CFF encoding data. Only one encoding can be specified per font. -// See Adobe TN #5176 chapter 12, "Encodings". -function parseCFFEncoding(data, start, charset) { - var code; - var enc = {}; - var parser = new parse.Parser(data, start); - var format = parser.parseCard8(); - if (format === 0) { - var nCodes = parser.parseCard8(); - for (var i = 0; i < nCodes; i += 1) { - code = parser.parseCard8(); - enc[code] = i; - } - } else if (format === 1) { - var nRanges = parser.parseCard8(); - code = 1; - for (var i$1 = 0; i$1 < nRanges; i$1 += 1) { - var first = parser.parseCard8(); - var nLeft = parser.parseCard8(); - for (var j = first; j <= first + nLeft; j += 1) { - enc[j] = code; - code += 1; - } - } - } else { - throw new Error('Unknown encoding format ' + format); - } - - return new CffEncoding(enc, charset); -} - -// Take in charstring code and return a Glyph object. -// The encoding is described in the Type 2 Charstring Format -// https://www.microsoft.com/typography/OTSPEC/charstr2.htm -function parseCFFCharstring(font, glyph, code) { - var c1x; - var c1y; - var c2x; - var c2y; - var p = new Path(); - var stack = []; - var nStems = 0; - var haveWidth = false; - var open = false; - var x = 0; - var y = 0; - var subrs; - var subrsBias; - var defaultWidthX; - var nominalWidthX; - if (font.isCIDFont) { - var fdIndex = font.tables.cff.topDict._fdSelect[glyph.index]; - var fdDict = font.tables.cff.topDict._fdArray[fdIndex]; - subrs = fdDict._subrs; - subrsBias = fdDict._subrsBias; - defaultWidthX = fdDict._defaultWidthX; - nominalWidthX = fdDict._nominalWidthX; - } else { - subrs = font.tables.cff.topDict._subrs; - subrsBias = font.tables.cff.topDict._subrsBias; - defaultWidthX = font.tables.cff.topDict._defaultWidthX; - nominalWidthX = font.tables.cff.topDict._nominalWidthX; - } - var width = defaultWidthX; - - function newContour(x, y) { - if (open) { - p.closePath(); - } - - p.moveTo(x, y); - open = true; - } - - function parseStems() { - var hasWidthArg; - - // The number of stem operators on the stack is always even. - // If the value is uneven, that means a width is specified. - hasWidthArg = stack.length % 2 !== 0; - if (hasWidthArg && !haveWidth) { - width = stack.shift() + nominalWidthX; - } - - nStems += stack.length >> 1; - stack.length = 0; - haveWidth = true; - } - - function parse(code) { - var b1; - var b2; - var b3; - var b4; - var codeIndex; - var subrCode; - var jpx; - var jpy; - var c3x; - var c3y; - var c4x; - var c4y; - - var i = 0; - while (i < code.length) { - var v = code[i]; - i += 1; - switch (v) { - case 1: // hstem - parseStems(); - break; - case 3: // vstem - parseStems(); - break; - case 4: // vmoveto - if (stack.length > 1 && !haveWidth) { - width = stack.shift() + nominalWidthX; - haveWidth = true; - } - - y += stack.pop(); - newContour(x, y); - break; - case 5: // rlineto - while (stack.length > 0) { - x += stack.shift(); - y += stack.shift(); - p.lineTo(x, y); - } - - break; - case 6: // hlineto - while (stack.length > 0) { - x += stack.shift(); - p.lineTo(x, y); - if (stack.length === 0) { - break; - } - - y += stack.shift(); - p.lineTo(x, y); - } - - break; - case 7: // vlineto - while (stack.length > 0) { - y += stack.shift(); - p.lineTo(x, y); - if (stack.length === 0) { - break; - } - - x += stack.shift(); - p.lineTo(x, y); - } - - break; - case 8: // rrcurveto - while (stack.length > 0) { - c1x = x + stack.shift(); - c1y = y + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x = c2x + stack.shift(); - y = c2y + stack.shift(); - p.curveTo(c1x, c1y, c2x, c2y, x, y); - } - - break; - case 10: // callsubr - codeIndex = stack.pop() + subrsBias; - subrCode = subrs[codeIndex]; - if (subrCode) { - parse(subrCode); - } - - break; - case 11: // return - return; - case 12: // flex operators - v = code[i]; - i += 1; - switch (v) { - case 35: // flex - // |- dx1 dy1 dx2 dy2 dx3 dy3 dx4 dy4 dx5 dy5 dx6 dy6 fd flex (12 35) |- - c1x = x + stack.shift(); // dx1 - c1y = y + stack.shift(); // dy1 - c2x = c1x + stack.shift(); // dx2 - c2y = c1y + stack.shift(); // dy2 - jpx = c2x + stack.shift(); // dx3 - jpy = c2y + stack.shift(); // dy3 - c3x = jpx + stack.shift(); // dx4 - c3y = jpy + stack.shift(); // dy4 - c4x = c3x + stack.shift(); // dx5 - c4y = c3y + stack.shift(); // dy5 - x = c4x + stack.shift(); // dx6 - y = c4y + stack.shift(); // dy6 - stack.shift(); // flex depth - p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy); - p.curveTo(c3x, c3y, c4x, c4y, x, y); - break; - case 34: // hflex - // |- dx1 dx2 dy2 dx3 dx4 dx5 dx6 hflex (12 34) |- - c1x = x + stack.shift(); // dx1 - c1y = y; // dy1 - c2x = c1x + stack.shift(); // dx2 - c2y = c1y + stack.shift(); // dy2 - jpx = c2x + stack.shift(); // dx3 - jpy = c2y; // dy3 - c3x = jpx + stack.shift(); // dx4 - c3y = c2y; // dy4 - c4x = c3x + stack.shift(); // dx5 - c4y = y; // dy5 - x = c4x + stack.shift(); // dx6 - p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy); - p.curveTo(c3x, c3y, c4x, c4y, x, y); - break; - case 36: // hflex1 - // |- dx1 dy1 dx2 dy2 dx3 dx4 dx5 dy5 dx6 hflex1 (12 36) |- - c1x = x + stack.shift(); // dx1 - c1y = y + stack.shift(); // dy1 - c2x = c1x + stack.shift(); // dx2 - c2y = c1y + stack.shift(); // dy2 - jpx = c2x + stack.shift(); // dx3 - jpy = c2y; // dy3 - c3x = jpx + stack.shift(); // dx4 - c3y = c2y; // dy4 - c4x = c3x + stack.shift(); // dx5 - c4y = c3y + stack.shift(); // dy5 - x = c4x + stack.shift(); // dx6 - p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy); - p.curveTo(c3x, c3y, c4x, c4y, x, y); - break; - case 37: // flex1 - // |- dx1 dy1 dx2 dy2 dx3 dy3 dx4 dy4 dx5 dy5 d6 flex1 (12 37) |- - c1x = x + stack.shift(); // dx1 - c1y = y + stack.shift(); // dy1 - c2x = c1x + stack.shift(); // dx2 - c2y = c1y + stack.shift(); // dy2 - jpx = c2x + stack.shift(); // dx3 - jpy = c2y + stack.shift(); // dy3 - c3x = jpx + stack.shift(); // dx4 - c3y = jpy + stack.shift(); // dy4 - c4x = c3x + stack.shift(); // dx5 - c4y = c3y + stack.shift(); // dy5 - if (Math.abs(c4x - x) > Math.abs(c4y - y)) { - x = c4x + stack.shift(); - } else { - y = c4y + stack.shift(); - } - - p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy); - p.curveTo(c3x, c3y, c4x, c4y, x, y); - break; - default: - console.log('Glyph ' + glyph.index + ': unknown operator ' + 1200 + v); - stack.length = 0; - } - break; - case 14: // endchar - if (stack.length > 0 && !haveWidth) { - width = stack.shift() + nominalWidthX; - haveWidth = true; - } - - if (open) { - p.closePath(); - open = false; - } - - break; - case 18: // hstemhm - parseStems(); - break; - case 19: // hintmask - case 20: // cntrmask - parseStems(); - i += (nStems + 7) >> 3; - break; - case 21: // rmoveto - if (stack.length > 2 && !haveWidth) { - width = stack.shift() + nominalWidthX; - haveWidth = true; - } - - y += stack.pop(); - x += stack.pop(); - newContour(x, y); - break; - case 22: // hmoveto - if (stack.length > 1 && !haveWidth) { - width = stack.shift() + nominalWidthX; - haveWidth = true; - } - - x += stack.pop(); - newContour(x, y); - break; - case 23: // vstemhm - parseStems(); - break; - case 24: // rcurveline - while (stack.length > 2) { - c1x = x + stack.shift(); - c1y = y + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x = c2x + stack.shift(); - y = c2y + stack.shift(); - p.curveTo(c1x, c1y, c2x, c2y, x, y); - } - - x += stack.shift(); - y += stack.shift(); - p.lineTo(x, y); - break; - case 25: // rlinecurve - while (stack.length > 6) { - x += stack.shift(); - y += stack.shift(); - p.lineTo(x, y); - } - - c1x = x + stack.shift(); - c1y = y + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x = c2x + stack.shift(); - y = c2y + stack.shift(); - p.curveTo(c1x, c1y, c2x, c2y, x, y); - break; - case 26: // vvcurveto - if (stack.length % 2) { - x += stack.shift(); - } - - while (stack.length > 0) { - c1x = x; - c1y = y + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x = c2x; - y = c2y + stack.shift(); - p.curveTo(c1x, c1y, c2x, c2y, x, y); - } - - break; - case 27: // hhcurveto - if (stack.length % 2) { - y += stack.shift(); - } - - while (stack.length > 0) { - c1x = x + stack.shift(); - c1y = y; - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x = c2x + stack.shift(); - y = c2y; - p.curveTo(c1x, c1y, c2x, c2y, x, y); - } - - break; - case 28: // shortint - b1 = code[i]; - b2 = code[i + 1]; - stack.push(((b1 << 24) | (b2 << 16)) >> 16); - i += 2; - break; - case 29: // callgsubr - codeIndex = stack.pop() + font.gsubrsBias; - subrCode = font.gsubrs[codeIndex]; - if (subrCode) { - parse(subrCode); - } - - break; - case 30: // vhcurveto - while (stack.length > 0) { - c1x = x; - c1y = y + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x = c2x + stack.shift(); - y = c2y + (stack.length === 1 ? stack.shift() : 0); - p.curveTo(c1x, c1y, c2x, c2y, x, y); - if (stack.length === 0) { - break; - } - - c1x = x + stack.shift(); - c1y = y; - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - y = c2y + stack.shift(); - x = c2x + (stack.length === 1 ? stack.shift() : 0); - p.curveTo(c1x, c1y, c2x, c2y, x, y); - } - - break; - case 31: // hvcurveto - while (stack.length > 0) { - c1x = x + stack.shift(); - c1y = y; - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - y = c2y + stack.shift(); - x = c2x + (stack.length === 1 ? stack.shift() : 0); - p.curveTo(c1x, c1y, c2x, c2y, x, y); - if (stack.length === 0) { - break; - } - - c1x = x; - c1y = y + stack.shift(); - c2x = c1x + stack.shift(); - c2y = c1y + stack.shift(); - x = c2x + stack.shift(); - y = c2y + (stack.length === 1 ? stack.shift() : 0); - p.curveTo(c1x, c1y, c2x, c2y, x, y); - } - - break; - default: - if (v < 32) { - console.log('Glyph ' + glyph.index + ': unknown operator ' + v); - } else if (v < 247) { - stack.push(v - 139); - } else if (v < 251) { - b1 = code[i]; - i += 1; - stack.push((v - 247) * 256 + b1 + 108); - } else if (v < 255) { - b1 = code[i]; - i += 1; - stack.push(-(v - 251) * 256 - b1 - 108); - } else { - b1 = code[i]; - b2 = code[i + 1]; - b3 = code[i + 2]; - b4 = code[i + 3]; - i += 4; - stack.push(((b1 << 24) | (b2 << 16) | (b3 << 8) | b4) / 65536); - } - } - } - } - - parse(code); - - glyph.advanceWidth = width; - return p; -} - -function parseCFFFDSelect(data, start, nGlyphs, fdArrayCount) { - var fdSelect = []; - var fdIndex; - var parser = new parse.Parser(data, start); - var format = parser.parseCard8(); - if (format === 0) { - // Simple list of nGlyphs elements - for (var iGid = 0; iGid < nGlyphs; iGid++) { - fdIndex = parser.parseCard8(); - if (fdIndex >= fdArrayCount) { - throw new Error('CFF table CID Font FDSelect has bad FD index value ' + fdIndex + ' (FD count ' + fdArrayCount + ')'); - } - fdSelect.push(fdIndex); - } - } else if (format === 3) { - // Ranges - var nRanges = parser.parseCard16(); - var first = parser.parseCard16(); - if (first !== 0) { - throw new Error('CFF Table CID Font FDSelect format 3 range has bad initial GID ' + first); - } - var next; - for (var iRange = 0; iRange < nRanges; iRange++) { - fdIndex = parser.parseCard8(); - next = parser.parseCard16(); - if (fdIndex >= fdArrayCount) { - throw new Error('CFF table CID Font FDSelect has bad FD index value ' + fdIndex + ' (FD count ' + fdArrayCount + ')'); - } - if (next > nGlyphs) { - throw new Error('CFF Table CID Font FDSelect format 3 range has bad GID ' + next); - } - for (; first < next; first++) { - fdSelect.push(fdIndex); - } - first = next; - } - if (next !== nGlyphs) { - throw new Error('CFF Table CID Font FDSelect format 3 range has bad final GID ' + next); - } - } else { - throw new Error('CFF Table CID Font FDSelect table has unsupported format ' + format); - } - return fdSelect; -} - -// Parse the `CFF` table, which contains the glyph outlines in PostScript format. -function parseCFFTable(data, start, font, opt) { - font.tables.cff = {}; - var header = parseCFFHeader(data, start); - var nameIndex = parseCFFIndex(data, header.endOffset, parse.bytesToString); - var topDictIndex = parseCFFIndex(data, nameIndex.endOffset); - var stringIndex = parseCFFIndex(data, topDictIndex.endOffset, parse.bytesToString); - var globalSubrIndex = parseCFFIndex(data, stringIndex.endOffset); - font.gsubrs = globalSubrIndex.objects; - font.gsubrsBias = calcCFFSubroutineBias(font.gsubrs); - - var topDictArray = gatherCFFTopDicts(data, start, topDictIndex.objects, stringIndex.objects); - if (topDictArray.length !== 1) { - throw new Error('CFF table has too many fonts in \'FontSet\' - count of fonts NameIndex.length = ' + topDictArray.length); - } - - var topDict = topDictArray[0]; - font.tables.cff.topDict = topDict; - - if (topDict._privateDict) { - font.defaultWidthX = topDict._privateDict.defaultWidthX; - font.nominalWidthX = topDict._privateDict.nominalWidthX; - } - - if (topDict.ros[0] !== undefined && topDict.ros[1] !== undefined) { - font.isCIDFont = true; - } - - if (font.isCIDFont) { - var fdArrayOffset = topDict.fdArray; - var fdSelectOffset = topDict.fdSelect; - if (fdArrayOffset === 0 || fdSelectOffset === 0) { - throw new Error('Font is marked as a CID font, but FDArray and/or FDSelect information is missing'); - } - fdArrayOffset += start; - var fdArrayIndex = parseCFFIndex(data, fdArrayOffset); - var fdArray = gatherCFFTopDicts(data, start, fdArrayIndex.objects, stringIndex.objects); - topDict._fdArray = fdArray; - fdSelectOffset += start; - topDict._fdSelect = parseCFFFDSelect(data, fdSelectOffset, font.numGlyphs, fdArray.length); - } - - var privateDictOffset = start + topDict.private[1]; - var privateDict = parseCFFPrivateDict(data, privateDictOffset, topDict.private[0], stringIndex.objects); - font.defaultWidthX = privateDict.defaultWidthX; - font.nominalWidthX = privateDict.nominalWidthX; - - if (privateDict.subrs !== 0) { - var subrOffset = privateDictOffset + privateDict.subrs; - var subrIndex = parseCFFIndex(data, subrOffset); - font.subrs = subrIndex.objects; - font.subrsBias = calcCFFSubroutineBias(font.subrs); - } else { - font.subrs = []; - font.subrsBias = 0; - } - - // Offsets in the top dict are relative to the beginning of the CFF data, so add the CFF start offset. - var charStringsIndex; - if (opt.lowMemory) { - charStringsIndex = parseCFFIndexLowMemory(data, start + topDict.charStrings); - font.nGlyphs = charStringsIndex.offsets.length; - } else { - charStringsIndex = parseCFFIndex(data, start + topDict.charStrings); - font.nGlyphs = charStringsIndex.objects.length; - } - - var charset = parseCFFCharset(data, start + topDict.charset, font.nGlyphs, stringIndex.objects); - if (topDict.encoding === 0) { - // Standard encoding - font.cffEncoding = new CffEncoding(cffStandardEncoding, charset); - } else if (topDict.encoding === 1) { - // Expert encoding - font.cffEncoding = new CffEncoding(cffExpertEncoding, charset); - } else { - font.cffEncoding = parseCFFEncoding(data, start + topDict.encoding, charset); - } - - // Prefer the CMAP encoding to the CFF encoding. - font.encoding = font.encoding || font.cffEncoding; - - font.glyphs = new glyphset.GlyphSet(font); - if (opt.lowMemory) { - font._push = function(i) { - var charString = getCffIndexObject(i, charStringsIndex.offsets, data, start + topDict.charStrings); - font.glyphs.push(i, glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString)); - }; - } else { - for (var i = 0; i < font.nGlyphs; i += 1) { - var charString = charStringsIndex.objects[i]; - font.glyphs.push(i, glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString)); - } - } -} - -// Convert a string to a String ID (SID). -// The list of strings is modified in place. -function encodeString(s, strings) { - var sid; - - // Is the string in the CFF standard strings? - var i = cffStandardStrings.indexOf(s); - if (i >= 0) { - sid = i; - } - - // Is the string already in the string index? - i = strings.indexOf(s); - if (i >= 0) { - sid = i + cffStandardStrings.length; - } else { - sid = cffStandardStrings.length + strings.length; - strings.push(s); - } - - return sid; -} - -function makeHeader() { - return new table.Record('Header', [ - {name: 'major', type: 'Card8', value: 1}, - {name: 'minor', type: 'Card8', value: 0}, - {name: 'hdrSize', type: 'Card8', value: 4}, - {name: 'major', type: 'Card8', value: 1} - ]); -} - -function makeNameIndex(fontNames) { - var t = new table.Record('Name INDEX', [ - {name: 'names', type: 'INDEX', value: []} - ]); - t.names = []; - for (var i = 0; i < fontNames.length; i += 1) { - t.names.push({name: 'name_' + i, type: 'NAME', value: fontNames[i]}); - } - - return t; -} - -// Given a dictionary's metadata, create a DICT structure. -function makeDict(meta, attrs, strings) { - var m = {}; - for (var i = 0; i < meta.length; i += 1) { - var entry = meta[i]; - var value = attrs[entry.name]; - if (value !== undefined && !equals(value, entry.value)) { - if (entry.type === 'SID') { - value = encodeString(value, strings); - } - - m[entry.op] = {name: entry.name, type: entry.type, value: value}; - } - } - - return m; -} - -// The Top DICT houses the global font attributes. -function makeTopDict(attrs, strings) { - var t = new table.Record('Top DICT', [ - {name: 'dict', type: 'DICT', value: {}} - ]); - t.dict = makeDict(TOP_DICT_META, attrs, strings); - return t; -} - -function makeTopDictIndex(topDict) { - var t = new table.Record('Top DICT INDEX', [ - {name: 'topDicts', type: 'INDEX', value: []} - ]); - t.topDicts = [{name: 'topDict_0', type: 'TABLE', value: topDict}]; - return t; -} - -function makeStringIndex(strings) { - var t = new table.Record('String INDEX', [ - {name: 'strings', type: 'INDEX', value: []} - ]); - t.strings = []; - for (var i = 0; i < strings.length; i += 1) { - t.strings.push({name: 'string_' + i, type: 'STRING', value: strings[i]}); - } - - return t; -} - -function makeGlobalSubrIndex() { - // Currently we don't use subroutines. - return new table.Record('Global Subr INDEX', [ - {name: 'subrs', type: 'INDEX', value: []} - ]); -} - -function makeCharsets(glyphNames, strings) { - var t = new table.Record('Charsets', [ - {name: 'format', type: 'Card8', value: 0} - ]); - for (var i = 0; i < glyphNames.length; i += 1) { - var glyphName = glyphNames[i]; - var glyphSID = encodeString(glyphName, strings); - t.fields.push({name: 'glyph_' + i, type: 'SID', value: glyphSID}); - } - - return t; -} - -function glyphToOps(glyph) { - var ops = []; - var path = glyph.path; - ops.push({name: 'width', type: 'NUMBER', value: glyph.advanceWidth}); - var x = 0; - var y = 0; - for (var i = 0; i < path.commands.length; i += 1) { - var dx = (void 0); - var dy = (void 0); - var cmd = path.commands[i]; - if (cmd.type === 'Q') { - // CFF only supports bézier curves, so convert the quad to a bézier. - var _13 = 1 / 3; - var _23 = 2 / 3; - - // We're going to create a new command so we don't change the original path. - // Since all coordinates are relative, we round() them ASAP to avoid propagating errors. - cmd = { - type: 'C', - x: cmd.x, - y: cmd.y, - x1: Math.round(_13 * x + _23 * cmd.x1), - y1: Math.round(_13 * y + _23 * cmd.y1), - x2: Math.round(_13 * cmd.x + _23 * cmd.x1), - y2: Math.round(_13 * cmd.y + _23 * cmd.y1) - }; - } - - if (cmd.type === 'M') { - dx = Math.round(cmd.x - x); - dy = Math.round(cmd.y - y); - ops.push({name: 'dx', type: 'NUMBER', value: dx}); - ops.push({name: 'dy', type: 'NUMBER', value: dy}); - ops.push({name: 'rmoveto', type: 'OP', value: 21}); - x = Math.round(cmd.x); - y = Math.round(cmd.y); - } else if (cmd.type === 'L') { - dx = Math.round(cmd.x - x); - dy = Math.round(cmd.y - y); - ops.push({name: 'dx', type: 'NUMBER', value: dx}); - ops.push({name: 'dy', type: 'NUMBER', value: dy}); - ops.push({name: 'rlineto', type: 'OP', value: 5}); - x = Math.round(cmd.x); - y = Math.round(cmd.y); - } else if (cmd.type === 'C') { - var dx1 = Math.round(cmd.x1 - x); - var dy1 = Math.round(cmd.y1 - y); - var dx2 = Math.round(cmd.x2 - cmd.x1); - var dy2 = Math.round(cmd.y2 - cmd.y1); - dx = Math.round(cmd.x - cmd.x2); - dy = Math.round(cmd.y - cmd.y2); - ops.push({name: 'dx1', type: 'NUMBER', value: dx1}); - ops.push({name: 'dy1', type: 'NUMBER', value: dy1}); - ops.push({name: 'dx2', type: 'NUMBER', value: dx2}); - ops.push({name: 'dy2', type: 'NUMBER', value: dy2}); - ops.push({name: 'dx', type: 'NUMBER', value: dx}); - ops.push({name: 'dy', type: 'NUMBER', value: dy}); - ops.push({name: 'rrcurveto', type: 'OP', value: 8}); - x = Math.round(cmd.x); - y = Math.round(cmd.y); - } - - // Contours are closed automatically. - } - - ops.push({name: 'endchar', type: 'OP', value: 14}); - return ops; -} - -function makeCharStringsIndex(glyphs) { - var t = new table.Record('CharStrings INDEX', [ - {name: 'charStrings', type: 'INDEX', value: []} - ]); - - for (var i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs.get(i); - var ops = glyphToOps(glyph); - t.charStrings.push({name: glyph.name, type: 'CHARSTRING', value: ops}); - } - - return t; -} - -function makePrivateDict(attrs, strings) { - var t = new table.Record('Private DICT', [ - {name: 'dict', type: 'DICT', value: {}} - ]); - t.dict = makeDict(PRIVATE_DICT_META, attrs, strings); - return t; -} - -function makeCFFTable(glyphs, options) { - var t = new table.Table('CFF ', [ - {name: 'header', type: 'RECORD'}, - {name: 'nameIndex', type: 'RECORD'}, - {name: 'topDictIndex', type: 'RECORD'}, - {name: 'stringIndex', type: 'RECORD'}, - {name: 'globalSubrIndex', type: 'RECORD'}, - {name: 'charsets', type: 'RECORD'}, - {name: 'charStringsIndex', type: 'RECORD'}, - {name: 'privateDict', type: 'RECORD'} - ]); - - var fontScale = 1 / options.unitsPerEm; - // We use non-zero values for the offsets so that the DICT encodes them. - // This is important because the size of the Top DICT plays a role in offset calculation, - // and the size shouldn't change after we've written correct offsets. - var attrs = { - version: options.version, - fullName: options.fullName, - familyName: options.familyName, - weight: options.weightName, - fontBBox: options.fontBBox || [0, 0, 0, 0], - fontMatrix: [fontScale, 0, 0, fontScale, 0, 0], - charset: 999, - encoding: 0, - charStrings: 999, - private: [0, 999] - }; - - var privateAttrs = {}; - - var glyphNames = []; - var glyph; - - // Skip first glyph (.notdef) - for (var i = 1; i < glyphs.length; i += 1) { - glyph = glyphs.get(i); - glyphNames.push(glyph.name); - } - - var strings = []; - - t.header = makeHeader(); - t.nameIndex = makeNameIndex([options.postScriptName]); - var topDict = makeTopDict(attrs, strings); - t.topDictIndex = makeTopDictIndex(topDict); - t.globalSubrIndex = makeGlobalSubrIndex(); - t.charsets = makeCharsets(glyphNames, strings); - t.charStringsIndex = makeCharStringsIndex(glyphs); - t.privateDict = makePrivateDict(privateAttrs, strings); - - // Needs to come at the end, to encode all custom strings used in the font. - t.stringIndex = makeStringIndex(strings); - - var startOffset = t.header.sizeOf() + - t.nameIndex.sizeOf() + - t.topDictIndex.sizeOf() + - t.stringIndex.sizeOf() + - t.globalSubrIndex.sizeOf(); - attrs.charset = startOffset; - - // We use the CFF standard encoding; proper encoding will be handled in cmap. - attrs.encoding = 0; - attrs.charStrings = attrs.charset + t.charsets.sizeOf(); - attrs.private[1] = attrs.charStrings + t.charStringsIndex.sizeOf(); - - // Recreate the Top DICT INDEX with the correct offsets. - topDict = makeTopDict(attrs, strings); - t.topDictIndex = makeTopDictIndex(topDict); - - return t; -} - -var cff = { parse: parseCFFTable, make: makeCFFTable }; - -// The `head` table contains global information about the font. - -// Parse the header `head` table -function parseHeadTable(data, start) { - var head = {}; - var p = new parse.Parser(data, start); - head.version = p.parseVersion(); - head.fontRevision = Math.round(p.parseFixed() * 1000) / 1000; - head.checkSumAdjustment = p.parseULong(); - head.magicNumber = p.parseULong(); - check.argument(head.magicNumber === 0x5F0F3CF5, 'Font header has wrong magic number.'); - head.flags = p.parseUShort(); - head.unitsPerEm = p.parseUShort(); - head.created = p.parseLongDateTime(); - head.modified = p.parseLongDateTime(); - head.xMin = p.parseShort(); - head.yMin = p.parseShort(); - head.xMax = p.parseShort(); - head.yMax = p.parseShort(); - head.macStyle = p.parseUShort(); - head.lowestRecPPEM = p.parseUShort(); - head.fontDirectionHint = p.parseShort(); - head.indexToLocFormat = p.parseShort(); - head.glyphDataFormat = p.parseShort(); - return head; -} - -function makeHeadTable(options) { - // Apple Mac timestamp epoch is 01/01/1904 not 01/01/1970 - var timestamp = Math.round(new Date().getTime() / 1000) + 2082844800; - var createdTimestamp = timestamp; - - if (options.createdTimestamp) { - createdTimestamp = options.createdTimestamp + 2082844800; - } - - return new table.Table('head', [ - {name: 'version', type: 'FIXED', value: 0x00010000}, - {name: 'fontRevision', type: 'FIXED', value: 0x00010000}, - {name: 'checkSumAdjustment', type: 'ULONG', value: 0}, - {name: 'magicNumber', type: 'ULONG', value: 0x5F0F3CF5}, - {name: 'flags', type: 'USHORT', value: 0}, - {name: 'unitsPerEm', type: 'USHORT', value: 1000}, - {name: 'created', type: 'LONGDATETIME', value: createdTimestamp}, - {name: 'modified', type: 'LONGDATETIME', value: timestamp}, - {name: 'xMin', type: 'SHORT', value: 0}, - {name: 'yMin', type: 'SHORT', value: 0}, - {name: 'xMax', type: 'SHORT', value: 0}, - {name: 'yMax', type: 'SHORT', value: 0}, - {name: 'macStyle', type: 'USHORT', value: 0}, - {name: 'lowestRecPPEM', type: 'USHORT', value: 0}, - {name: 'fontDirectionHint', type: 'SHORT', value: 2}, - {name: 'indexToLocFormat', type: 'SHORT', value: 0}, - {name: 'glyphDataFormat', type: 'SHORT', value: 0} - ], options); -} - -var head = { parse: parseHeadTable, make: makeHeadTable }; - -// The `hhea` table contains information for horizontal layout. - -// Parse the horizontal header `hhea` table -function parseHheaTable(data, start) { - var hhea = {}; - var p = new parse.Parser(data, start); - hhea.version = p.parseVersion(); - hhea.ascender = p.parseShort(); - hhea.descender = p.parseShort(); - hhea.lineGap = p.parseShort(); - hhea.advanceWidthMax = p.parseUShort(); - hhea.minLeftSideBearing = p.parseShort(); - hhea.minRightSideBearing = p.parseShort(); - hhea.xMaxExtent = p.parseShort(); - hhea.caretSlopeRise = p.parseShort(); - hhea.caretSlopeRun = p.parseShort(); - hhea.caretOffset = p.parseShort(); - p.relativeOffset += 8; - hhea.metricDataFormat = p.parseShort(); - hhea.numberOfHMetrics = p.parseUShort(); - return hhea; -} - -function makeHheaTable(options) { - return new table.Table('hhea', [ - {name: 'version', type: 'FIXED', value: 0x00010000}, - {name: 'ascender', type: 'FWORD', value: 0}, - {name: 'descender', type: 'FWORD', value: 0}, - {name: 'lineGap', type: 'FWORD', value: 0}, - {name: 'advanceWidthMax', type: 'UFWORD', value: 0}, - {name: 'minLeftSideBearing', type: 'FWORD', value: 0}, - {name: 'minRightSideBearing', type: 'FWORD', value: 0}, - {name: 'xMaxExtent', type: 'FWORD', value: 0}, - {name: 'caretSlopeRise', type: 'SHORT', value: 1}, - {name: 'caretSlopeRun', type: 'SHORT', value: 0}, - {name: 'caretOffset', type: 'SHORT', value: 0}, - {name: 'reserved1', type: 'SHORT', value: 0}, - {name: 'reserved2', type: 'SHORT', value: 0}, - {name: 'reserved3', type: 'SHORT', value: 0}, - {name: 'reserved4', type: 'SHORT', value: 0}, - {name: 'metricDataFormat', type: 'SHORT', value: 0}, - {name: 'numberOfHMetrics', type: 'USHORT', value: 0} - ], options); -} - -var hhea = { parse: parseHheaTable, make: makeHheaTable }; - -// The `hmtx` table contains the horizontal metrics for all glyphs. - -function parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs) { - var advanceWidth; - var leftSideBearing; - var p = new parse.Parser(data, start); - for (var i = 0; i < numGlyphs; i += 1) { - // If the font is monospaced, only one entry is needed. This last entry applies to all subsequent glyphs. - if (i < numMetrics) { - advanceWidth = p.parseUShort(); - leftSideBearing = p.parseShort(); - } - - var glyph = glyphs.get(i); - glyph.advanceWidth = advanceWidth; - glyph.leftSideBearing = leftSideBearing; - } -} - -function parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs) { - font._hmtxTableData = {}; - - var advanceWidth; - var leftSideBearing; - var p = new parse.Parser(data, start); - for (var i = 0; i < numGlyphs; i += 1) { - // If the font is monospaced, only one entry is needed. This last entry applies to all subsequent glyphs. - if (i < numMetrics) { - advanceWidth = p.parseUShort(); - leftSideBearing = p.parseShort(); - } - - font._hmtxTableData[i] = { - advanceWidth: advanceWidth, - leftSideBearing: leftSideBearing - }; - } -} - -// Parse the `hmtx` table, which contains the horizontal metrics for all glyphs. -// This function augments the glyph array, adding the advanceWidth and leftSideBearing to each glyph. -function parseHmtxTable(font, data, start, numMetrics, numGlyphs, glyphs, opt) { - if (opt.lowMemory) - { parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs); } - else - { parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs); } -} - -function makeHmtxTable(glyphs) { - var t = new table.Table('hmtx', []); - for (var i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs.get(i); - var advanceWidth = glyph.advanceWidth || 0; - var leftSideBearing = glyph.leftSideBearing || 0; - t.fields.push({name: 'advanceWidth_' + i, type: 'USHORT', value: advanceWidth}); - t.fields.push({name: 'leftSideBearing_' + i, type: 'SHORT', value: leftSideBearing}); - } - - return t; -} - -var hmtx = { parse: parseHmtxTable, make: makeHmtxTable }; - -// The `ltag` table stores IETF BCP-47 language tags. It allows supporting - -function makeLtagTable(tags) { - var result = new table.Table('ltag', [ - {name: 'version', type: 'ULONG', value: 1}, - {name: 'flags', type: 'ULONG', value: 0}, - {name: 'numTags', type: 'ULONG', value: tags.length} - ]); - - var stringPool = ''; - var stringPoolOffset = 12 + tags.length * 4; - for (var i = 0; i < tags.length; ++i) { - var pos = stringPool.indexOf(tags[i]); - if (pos < 0) { - pos = stringPool.length; - stringPool += tags[i]; - } - - result.fields.push({name: 'offset ' + i, type: 'USHORT', value: stringPoolOffset + pos}); - result.fields.push({name: 'length ' + i, type: 'USHORT', value: tags[i].length}); - } - - result.fields.push({name: 'stringPool', type: 'CHARARRAY', value: stringPool}); - return result; -} - -function parseLtagTable(data, start) { - var p = new parse.Parser(data, start); - var tableVersion = p.parseULong(); - check.argument(tableVersion === 1, 'Unsupported ltag table version.'); - // The 'ltag' specification does not define any flags; skip the field. - p.skip('uLong', 1); - var numTags = p.parseULong(); - - var tags = []; - for (var i = 0; i < numTags; i++) { - var tag = ''; - var offset = start + p.parseUShort(); - var length = p.parseUShort(); - for (var j = offset; j < offset + length; ++j) { - tag += String.fromCharCode(data.getInt8(j)); - } - - tags.push(tag); - } - - return tags; -} - -var ltag = { make: makeLtagTable, parse: parseLtagTable }; - -// The `maxp` table establishes the memory requirements for the font. - -// Parse the maximum profile `maxp` table. -function parseMaxpTable(data, start) { - var maxp = {}; - var p = new parse.Parser(data, start); - maxp.version = p.parseVersion(); - maxp.numGlyphs = p.parseUShort(); - if (maxp.version === 1.0) { - maxp.maxPoints = p.parseUShort(); - maxp.maxContours = p.parseUShort(); - maxp.maxCompositePoints = p.parseUShort(); - maxp.maxCompositeContours = p.parseUShort(); - maxp.maxZones = p.parseUShort(); - maxp.maxTwilightPoints = p.parseUShort(); - maxp.maxStorage = p.parseUShort(); - maxp.maxFunctionDefs = p.parseUShort(); - maxp.maxInstructionDefs = p.parseUShort(); - maxp.maxStackElements = p.parseUShort(); - maxp.maxSizeOfInstructions = p.parseUShort(); - maxp.maxComponentElements = p.parseUShort(); - maxp.maxComponentDepth = p.parseUShort(); - } - - return maxp; -} - -function makeMaxpTable(numGlyphs) { - return new table.Table('maxp', [ - {name: 'version', type: 'FIXED', value: 0x00005000}, - {name: 'numGlyphs', type: 'USHORT', value: numGlyphs} - ]); -} - -var maxp = { parse: parseMaxpTable, make: makeMaxpTable }; - -// The `name` naming table. - -// NameIDs for the name table. -var nameTableNames = [ - 'copyright', // 0 - 'fontFamily', // 1 - 'fontSubfamily', // 2 - 'uniqueID', // 3 - 'fullName', // 4 - 'version', // 5 - 'postScriptName', // 6 - 'trademark', // 7 - 'manufacturer', // 8 - 'designer', // 9 - 'description', // 10 - 'manufacturerURL', // 11 - 'designerURL', // 12 - 'license', // 13 - 'licenseURL', // 14 - 'reserved', // 15 - 'preferredFamily', // 16 - 'preferredSubfamily', // 17 - 'compatibleFullName', // 18 - 'sampleText', // 19 - 'postScriptFindFontName', // 20 - 'wwsFamily', // 21 - 'wwsSubfamily' // 22 -]; - -var macLanguages = { - 0: 'en', - 1: 'fr', - 2: 'de', - 3: 'it', - 4: 'nl', - 5: 'sv', - 6: 'es', - 7: 'da', - 8: 'pt', - 9: 'no', - 10: 'he', - 11: 'ja', - 12: 'ar', - 13: 'fi', - 14: 'el', - 15: 'is', - 16: 'mt', - 17: 'tr', - 18: 'hr', - 19: 'zh-Hant', - 20: 'ur', - 21: 'hi', - 22: 'th', - 23: 'ko', - 24: 'lt', - 25: 'pl', - 26: 'hu', - 27: 'es', - 28: 'lv', - 29: 'se', - 30: 'fo', - 31: 'fa', - 32: 'ru', - 33: 'zh', - 34: 'nl-BE', - 35: 'ga', - 36: 'sq', - 37: 'ro', - 38: 'cz', - 39: 'sk', - 40: 'si', - 41: 'yi', - 42: 'sr', - 43: 'mk', - 44: 'bg', - 45: 'uk', - 46: 'be', - 47: 'uz', - 48: 'kk', - 49: 'az-Cyrl', - 50: 'az-Arab', - 51: 'hy', - 52: 'ka', - 53: 'mo', - 54: 'ky', - 55: 'tg', - 56: 'tk', - 57: 'mn-CN', - 58: 'mn', - 59: 'ps', - 60: 'ks', - 61: 'ku', - 62: 'sd', - 63: 'bo', - 64: 'ne', - 65: 'sa', - 66: 'mr', - 67: 'bn', - 68: 'as', - 69: 'gu', - 70: 'pa', - 71: 'or', - 72: 'ml', - 73: 'kn', - 74: 'ta', - 75: 'te', - 76: 'si', - 77: 'my', - 78: 'km', - 79: 'lo', - 80: 'vi', - 81: 'id', - 82: 'tl', - 83: 'ms', - 84: 'ms-Arab', - 85: 'am', - 86: 'ti', - 87: 'om', - 88: 'so', - 89: 'sw', - 90: 'rw', - 91: 'rn', - 92: 'ny', - 93: 'mg', - 94: 'eo', - 128: 'cy', - 129: 'eu', - 130: 'ca', - 131: 'la', - 132: 'qu', - 133: 'gn', - 134: 'ay', - 135: 'tt', - 136: 'ug', - 137: 'dz', - 138: 'jv', - 139: 'su', - 140: 'gl', - 141: 'af', - 142: 'br', - 143: 'iu', - 144: 'gd', - 145: 'gv', - 146: 'ga', - 147: 'to', - 148: 'el-polyton', - 149: 'kl', - 150: 'az', - 151: 'nn' -}; - -// MacOS language ID → MacOS script ID -// -// Note that the script ID is not sufficient to determine what encoding -// to use in TrueType files. For some languages, MacOS used a modification -// of a mainstream script. For example, an Icelandic name would be stored -// with smRoman in the TrueType naming table, but the actual encoding -// is a special Icelandic version of the normal Macintosh Roman encoding. -// As another example, Inuktitut uses an 8-bit encoding for Canadian Aboriginal -// Syllables but MacOS had run out of available script codes, so this was -// done as a (pretty radical) "modification" of Ethiopic. -// -// http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt -var macLanguageToScript = { - 0: 0, // langEnglish → smRoman - 1: 0, // langFrench → smRoman - 2: 0, // langGerman → smRoman - 3: 0, // langItalian → smRoman - 4: 0, // langDutch → smRoman - 5: 0, // langSwedish → smRoman - 6: 0, // langSpanish → smRoman - 7: 0, // langDanish → smRoman - 8: 0, // langPortuguese → smRoman - 9: 0, // langNorwegian → smRoman - 10: 5, // langHebrew → smHebrew - 11: 1, // langJapanese → smJapanese - 12: 4, // langArabic → smArabic - 13: 0, // langFinnish → smRoman - 14: 6, // langGreek → smGreek - 15: 0, // langIcelandic → smRoman (modified) - 16: 0, // langMaltese → smRoman - 17: 0, // langTurkish → smRoman (modified) - 18: 0, // langCroatian → smRoman (modified) - 19: 2, // langTradChinese → smTradChinese - 20: 4, // langUrdu → smArabic - 21: 9, // langHindi → smDevanagari - 22: 21, // langThai → smThai - 23: 3, // langKorean → smKorean - 24: 29, // langLithuanian → smCentralEuroRoman - 25: 29, // langPolish → smCentralEuroRoman - 26: 29, // langHungarian → smCentralEuroRoman - 27: 29, // langEstonian → smCentralEuroRoman - 28: 29, // langLatvian → smCentralEuroRoman - 29: 0, // langSami → smRoman - 30: 0, // langFaroese → smRoman (modified) - 31: 4, // langFarsi → smArabic (modified) - 32: 7, // langRussian → smCyrillic - 33: 25, // langSimpChinese → smSimpChinese - 34: 0, // langFlemish → smRoman - 35: 0, // langIrishGaelic → smRoman (modified) - 36: 0, // langAlbanian → smRoman - 37: 0, // langRomanian → smRoman (modified) - 38: 29, // langCzech → smCentralEuroRoman - 39: 29, // langSlovak → smCentralEuroRoman - 40: 0, // langSlovenian → smRoman (modified) - 41: 5, // langYiddish → smHebrew - 42: 7, // langSerbian → smCyrillic - 43: 7, // langMacedonian → smCyrillic - 44: 7, // langBulgarian → smCyrillic - 45: 7, // langUkrainian → smCyrillic (modified) - 46: 7, // langByelorussian → smCyrillic - 47: 7, // langUzbek → smCyrillic - 48: 7, // langKazakh → smCyrillic - 49: 7, // langAzerbaijani → smCyrillic - 50: 4, // langAzerbaijanAr → smArabic - 51: 24, // langArmenian → smArmenian - 52: 23, // langGeorgian → smGeorgian - 53: 7, // langMoldavian → smCyrillic - 54: 7, // langKirghiz → smCyrillic - 55: 7, // langTajiki → smCyrillic - 56: 7, // langTurkmen → smCyrillic - 57: 27, // langMongolian → smMongolian - 58: 7, // langMongolianCyr → smCyrillic - 59: 4, // langPashto → smArabic - 60: 4, // langKurdish → smArabic - 61: 4, // langKashmiri → smArabic - 62: 4, // langSindhi → smArabic - 63: 26, // langTibetan → smTibetan - 64: 9, // langNepali → smDevanagari - 65: 9, // langSanskrit → smDevanagari - 66: 9, // langMarathi → smDevanagari - 67: 13, // langBengali → smBengali - 68: 13, // langAssamese → smBengali - 69: 11, // langGujarati → smGujarati - 70: 10, // langPunjabi → smGurmukhi - 71: 12, // langOriya → smOriya - 72: 17, // langMalayalam → smMalayalam - 73: 16, // langKannada → smKannada - 74: 14, // langTamil → smTamil - 75: 15, // langTelugu → smTelugu - 76: 18, // langSinhalese → smSinhalese - 77: 19, // langBurmese → smBurmese - 78: 20, // langKhmer → smKhmer - 79: 22, // langLao → smLao - 80: 30, // langVietnamese → smVietnamese - 81: 0, // langIndonesian → smRoman - 82: 0, // langTagalog → smRoman - 83: 0, // langMalayRoman → smRoman - 84: 4, // langMalayArabic → smArabic - 85: 28, // langAmharic → smEthiopic - 86: 28, // langTigrinya → smEthiopic - 87: 28, // langOromo → smEthiopic - 88: 0, // langSomali → smRoman - 89: 0, // langSwahili → smRoman - 90: 0, // langKinyarwanda → smRoman - 91: 0, // langRundi → smRoman - 92: 0, // langNyanja → smRoman - 93: 0, // langMalagasy → smRoman - 94: 0, // langEsperanto → smRoman - 128: 0, // langWelsh → smRoman (modified) - 129: 0, // langBasque → smRoman - 130: 0, // langCatalan → smRoman - 131: 0, // langLatin → smRoman - 132: 0, // langQuechua → smRoman - 133: 0, // langGuarani → smRoman - 134: 0, // langAymara → smRoman - 135: 7, // langTatar → smCyrillic - 136: 4, // langUighur → smArabic - 137: 26, // langDzongkha → smTibetan - 138: 0, // langJavaneseRom → smRoman - 139: 0, // langSundaneseRom → smRoman - 140: 0, // langGalician → smRoman - 141: 0, // langAfrikaans → smRoman - 142: 0, // langBreton → smRoman (modified) - 143: 28, // langInuktitut → smEthiopic (modified) - 144: 0, // langScottishGaelic → smRoman (modified) - 145: 0, // langManxGaelic → smRoman (modified) - 146: 0, // langIrishGaelicScript → smRoman (modified) - 147: 0, // langTongan → smRoman - 148: 6, // langGreekAncient → smRoman - 149: 0, // langGreenlandic → smRoman - 150: 0, // langAzerbaijanRoman → smRoman - 151: 0 // langNynorsk → smRoman -}; - -// While Microsoft indicates a region/country for all its language -// IDs, we omit the region code if it's equal to the "most likely -// region subtag" according to Unicode CLDR. For scripts, we omit -// the subtag if it is equal to the Suppress-Script entry in the -// IANA language subtag registry for IETF BCP 47. -// -// For example, Microsoft states that its language code 0x041A is -// Croatian in Croatia. We transform this to the BCP 47 language code 'hr' -// and not 'hr-HR' because Croatia is the default country for Croatian, -// according to Unicode CLDR. As another example, Microsoft states -// that 0x101A is Croatian (Latin) in Bosnia-Herzegovina. We transform -// this to 'hr-BA' and not 'hr-Latn-BA' because Latin is the default script -// for the Croatian language, according to IANA. -// -// http://www.unicode.org/cldr/charts/latest/supplemental/likely_subtags.html -// http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry -var windowsLanguages = { - 0x0436: 'af', - 0x041C: 'sq', - 0x0484: 'gsw', - 0x045E: 'am', - 0x1401: 'ar-DZ', - 0x3C01: 'ar-BH', - 0x0C01: 'ar', - 0x0801: 'ar-IQ', - 0x2C01: 'ar-JO', - 0x3401: 'ar-KW', - 0x3001: 'ar-LB', - 0x1001: 'ar-LY', - 0x1801: 'ary', - 0x2001: 'ar-OM', - 0x4001: 'ar-QA', - 0x0401: 'ar-SA', - 0x2801: 'ar-SY', - 0x1C01: 'aeb', - 0x3801: 'ar-AE', - 0x2401: 'ar-YE', - 0x042B: 'hy', - 0x044D: 'as', - 0x082C: 'az-Cyrl', - 0x042C: 'az', - 0x046D: 'ba', - 0x042D: 'eu', - 0x0423: 'be', - 0x0845: 'bn', - 0x0445: 'bn-IN', - 0x201A: 'bs-Cyrl', - 0x141A: 'bs', - 0x047E: 'br', - 0x0402: 'bg', - 0x0403: 'ca', - 0x0C04: 'zh-HK', - 0x1404: 'zh-MO', - 0x0804: 'zh', - 0x1004: 'zh-SG', - 0x0404: 'zh-TW', - 0x0483: 'co', - 0x041A: 'hr', - 0x101A: 'hr-BA', - 0x0405: 'cs', - 0x0406: 'da', - 0x048C: 'prs', - 0x0465: 'dv', - 0x0813: 'nl-BE', - 0x0413: 'nl', - 0x0C09: 'en-AU', - 0x2809: 'en-BZ', - 0x1009: 'en-CA', - 0x2409: 'en-029', - 0x4009: 'en-IN', - 0x1809: 'en-IE', - 0x2009: 'en-JM', - 0x4409: 'en-MY', - 0x1409: 'en-NZ', - 0x3409: 'en-PH', - 0x4809: 'en-SG', - 0x1C09: 'en-ZA', - 0x2C09: 'en-TT', - 0x0809: 'en-GB', - 0x0409: 'en', - 0x3009: 'en-ZW', - 0x0425: 'et', - 0x0438: 'fo', - 0x0464: 'fil', - 0x040B: 'fi', - 0x080C: 'fr-BE', - 0x0C0C: 'fr-CA', - 0x040C: 'fr', - 0x140C: 'fr-LU', - 0x180C: 'fr-MC', - 0x100C: 'fr-CH', - 0x0462: 'fy', - 0x0456: 'gl', - 0x0437: 'ka', - 0x0C07: 'de-AT', - 0x0407: 'de', - 0x1407: 'de-LI', - 0x1007: 'de-LU', - 0x0807: 'de-CH', - 0x0408: 'el', - 0x046F: 'kl', - 0x0447: 'gu', - 0x0468: 'ha', - 0x040D: 'he', - 0x0439: 'hi', - 0x040E: 'hu', - 0x040F: 'is', - 0x0470: 'ig', - 0x0421: 'id', - 0x045D: 'iu', - 0x085D: 'iu-Latn', - 0x083C: 'ga', - 0x0434: 'xh', - 0x0435: 'zu', - 0x0410: 'it', - 0x0810: 'it-CH', - 0x0411: 'ja', - 0x044B: 'kn', - 0x043F: 'kk', - 0x0453: 'km', - 0x0486: 'quc', - 0x0487: 'rw', - 0x0441: 'sw', - 0x0457: 'kok', - 0x0412: 'ko', - 0x0440: 'ky', - 0x0454: 'lo', - 0x0426: 'lv', - 0x0427: 'lt', - 0x082E: 'dsb', - 0x046E: 'lb', - 0x042F: 'mk', - 0x083E: 'ms-BN', - 0x043E: 'ms', - 0x044C: 'ml', - 0x043A: 'mt', - 0x0481: 'mi', - 0x047A: 'arn', - 0x044E: 'mr', - 0x047C: 'moh', - 0x0450: 'mn', - 0x0850: 'mn-CN', - 0x0461: 'ne', - 0x0414: 'nb', - 0x0814: 'nn', - 0x0482: 'oc', - 0x0448: 'or', - 0x0463: 'ps', - 0x0415: 'pl', - 0x0416: 'pt', - 0x0816: 'pt-PT', - 0x0446: 'pa', - 0x046B: 'qu-BO', - 0x086B: 'qu-EC', - 0x0C6B: 'qu', - 0x0418: 'ro', - 0x0417: 'rm', - 0x0419: 'ru', - 0x243B: 'smn', - 0x103B: 'smj-NO', - 0x143B: 'smj', - 0x0C3B: 'se-FI', - 0x043B: 'se', - 0x083B: 'se-SE', - 0x203B: 'sms', - 0x183B: 'sma-NO', - 0x1C3B: 'sms', - 0x044F: 'sa', - 0x1C1A: 'sr-Cyrl-BA', - 0x0C1A: 'sr', - 0x181A: 'sr-Latn-BA', - 0x081A: 'sr-Latn', - 0x046C: 'nso', - 0x0432: 'tn', - 0x045B: 'si', - 0x041B: 'sk', - 0x0424: 'sl', - 0x2C0A: 'es-AR', - 0x400A: 'es-BO', - 0x340A: 'es-CL', - 0x240A: 'es-CO', - 0x140A: 'es-CR', - 0x1C0A: 'es-DO', - 0x300A: 'es-EC', - 0x440A: 'es-SV', - 0x100A: 'es-GT', - 0x480A: 'es-HN', - 0x080A: 'es-MX', - 0x4C0A: 'es-NI', - 0x180A: 'es-PA', - 0x3C0A: 'es-PY', - 0x280A: 'es-PE', - 0x500A: 'es-PR', - - // Microsoft has defined two different language codes for - // “Spanish with modern sorting” and “Spanish with traditional - // sorting”. This makes sense for collation APIs, and it would be - // possible to express this in BCP 47 language tags via Unicode - // extensions (eg., es-u-co-trad is Spanish with traditional - // sorting). However, for storing names in fonts, the distinction - // does not make sense, so we give “es” in both cases. - 0x0C0A: 'es', - 0x040A: 'es', - - 0x540A: 'es-US', - 0x380A: 'es-UY', - 0x200A: 'es-VE', - 0x081D: 'sv-FI', - 0x041D: 'sv', - 0x045A: 'syr', - 0x0428: 'tg', - 0x085F: 'tzm', - 0x0449: 'ta', - 0x0444: 'tt', - 0x044A: 'te', - 0x041E: 'th', - 0x0451: 'bo', - 0x041F: 'tr', - 0x0442: 'tk', - 0x0480: 'ug', - 0x0422: 'uk', - 0x042E: 'hsb', - 0x0420: 'ur', - 0x0843: 'uz-Cyrl', - 0x0443: 'uz', - 0x042A: 'vi', - 0x0452: 'cy', - 0x0488: 'wo', - 0x0485: 'sah', - 0x0478: 'ii', - 0x046A: 'yo' -}; - -// Returns a IETF BCP 47 language code, for example 'zh-Hant' -// for 'Chinese in the traditional script'. -function getLanguageCode(platformID, languageID, ltag) { - switch (platformID) { - case 0: // Unicode - if (languageID === 0xFFFF) { - return 'und'; - } else if (ltag) { - return ltag[languageID]; - } - - break; - - case 1: // Macintosh - return macLanguages[languageID]; - - case 3: // Windows - return windowsLanguages[languageID]; - } - - return undefined; -} - -var utf16 = 'utf-16'; - -// MacOS script ID → encoding. This table stores the default case, -// which can be overridden by macLanguageEncodings. -var macScriptEncodings = { - 0: 'macintosh', // smRoman - 1: 'x-mac-japanese', // smJapanese - 2: 'x-mac-chinesetrad', // smTradChinese - 3: 'x-mac-korean', // smKorean - 6: 'x-mac-greek', // smGreek - 7: 'x-mac-cyrillic', // smCyrillic - 9: 'x-mac-devanagai', // smDevanagari - 10: 'x-mac-gurmukhi', // smGurmukhi - 11: 'x-mac-gujarati', // smGujarati - 12: 'x-mac-oriya', // smOriya - 13: 'x-mac-bengali', // smBengali - 14: 'x-mac-tamil', // smTamil - 15: 'x-mac-telugu', // smTelugu - 16: 'x-mac-kannada', // smKannada - 17: 'x-mac-malayalam', // smMalayalam - 18: 'x-mac-sinhalese', // smSinhalese - 19: 'x-mac-burmese', // smBurmese - 20: 'x-mac-khmer', // smKhmer - 21: 'x-mac-thai', // smThai - 22: 'x-mac-lao', // smLao - 23: 'x-mac-georgian', // smGeorgian - 24: 'x-mac-armenian', // smArmenian - 25: 'x-mac-chinesesimp', // smSimpChinese - 26: 'x-mac-tibetan', // smTibetan - 27: 'x-mac-mongolian', // smMongolian - 28: 'x-mac-ethiopic', // smEthiopic - 29: 'x-mac-ce', // smCentralEuroRoman - 30: 'x-mac-vietnamese', // smVietnamese - 31: 'x-mac-extarabic' // smExtArabic -}; - -// MacOS language ID → encoding. This table stores the exceptional -// cases, which override macScriptEncodings. For writing MacOS naming -// tables, we need to emit a MacOS script ID. Therefore, we cannot -// merge macScriptEncodings into macLanguageEncodings. -// -// http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt -var macLanguageEncodings = { - 15: 'x-mac-icelandic', // langIcelandic - 17: 'x-mac-turkish', // langTurkish - 18: 'x-mac-croatian', // langCroatian - 24: 'x-mac-ce', // langLithuanian - 25: 'x-mac-ce', // langPolish - 26: 'x-mac-ce', // langHungarian - 27: 'x-mac-ce', // langEstonian - 28: 'x-mac-ce', // langLatvian - 30: 'x-mac-icelandic', // langFaroese - 37: 'x-mac-romanian', // langRomanian - 38: 'x-mac-ce', // langCzech - 39: 'x-mac-ce', // langSlovak - 40: 'x-mac-ce', // langSlovenian - 143: 'x-mac-inuit', // langInuktitut - 146: 'x-mac-gaelic' // langIrishGaelicScript -}; - -function getEncoding(platformID, encodingID, languageID) { - switch (platformID) { - case 0: // Unicode - return utf16; - - case 1: // Apple Macintosh - return macLanguageEncodings[languageID] || macScriptEncodings[encodingID]; - - case 3: // Microsoft Windows - if (encodingID === 1 || encodingID === 10) { - return utf16; - } - - break; - } - - return undefined; -} - -// Parse the naming `name` table. -// FIXME: Format 1 additional fields are not supported yet. -// ltag is the content of the `ltag' table, such as ['en', 'zh-Hans', 'de-CH-1904']. -function parseNameTable(data, start, ltag) { - var name = {}; - var p = new parse.Parser(data, start); - var format = p.parseUShort(); - var count = p.parseUShort(); - var stringOffset = p.offset + p.parseUShort(); - for (var i = 0; i < count; i++) { - var platformID = p.parseUShort(); - var encodingID = p.parseUShort(); - var languageID = p.parseUShort(); - var nameID = p.parseUShort(); - var property = nameTableNames[nameID] || nameID; - var byteLength = p.parseUShort(); - var offset = p.parseUShort(); - var language = getLanguageCode(platformID, languageID, ltag); - var encoding = getEncoding(platformID, encodingID, languageID); - if (encoding !== undefined && language !== undefined) { - var text = (void 0); - if (encoding === utf16) { - text = decode.UTF16(data, stringOffset + offset, byteLength); - } else { - text = decode.MACSTRING(data, stringOffset + offset, byteLength, encoding); - } - - if (text) { - var translations = name[property]; - if (translations === undefined) { - translations = name[property] = {}; - } - - translations[language] = text; - } - } - } - - var langTagCount = 0; - if (format === 1) { - // FIXME: Also handle Microsoft's 'name' table 1. - langTagCount = p.parseUShort(); - } - - return name; -} - -// {23: 'foo'} → {'foo': 23} -// ['bar', 'baz'] → {'bar': 0, 'baz': 1} -function reverseDict(dict) { - var result = {}; - for (var key in dict) { - result[dict[key]] = parseInt(key); - } - - return result; -} - -function makeNameRecord(platformID, encodingID, languageID, nameID, length, offset) { - return new table.Record('NameRecord', [ - {name: 'platformID', type: 'USHORT', value: platformID}, - {name: 'encodingID', type: 'USHORT', value: encodingID}, - {name: 'languageID', type: 'USHORT', value: languageID}, - {name: 'nameID', type: 'USHORT', value: nameID}, - {name: 'length', type: 'USHORT', value: length}, - {name: 'offset', type: 'USHORT', value: offset} - ]); -} - -// Finds the position of needle in haystack, or -1 if not there. -// Like String.indexOf(), but for arrays. -function findSubArray(needle, haystack) { - var needleLength = needle.length; - var limit = haystack.length - needleLength + 1; - - loop: - for (var pos = 0; pos < limit; pos++) { - for (; pos < limit; pos++) { - for (var k = 0; k < needleLength; k++) { - if (haystack[pos + k] !== needle[k]) { - continue loop; - } - } - - return pos; - } - } - - return -1; -} - -function addStringToPool(s, pool) { - var offset = findSubArray(s, pool); - if (offset < 0) { - offset = pool.length; - var i = 0; - var len = s.length; - for (; i < len; ++i) { - pool.push(s[i]); - } - - } - - return offset; -} - -function makeNameTable(names, ltag) { - var nameID; - var nameIDs = []; - - var namesWithNumericKeys = {}; - var nameTableIds = reverseDict(nameTableNames); - for (var key in names) { - var id = nameTableIds[key]; - if (id === undefined) { - id = key; - } - - nameID = parseInt(id); - - if (isNaN(nameID)) { - throw new Error('Name table entry "' + key + '" does not exist, see nameTableNames for complete list.'); - } - - namesWithNumericKeys[nameID] = names[key]; - nameIDs.push(nameID); - } - - var macLanguageIds = reverseDict(macLanguages); - var windowsLanguageIds = reverseDict(windowsLanguages); - - var nameRecords = []; - var stringPool = []; - - for (var i = 0; i < nameIDs.length; i++) { - nameID = nameIDs[i]; - var translations = namesWithNumericKeys[nameID]; - for (var lang in translations) { - var text = translations[lang]; - - // For MacOS, we try to emit the name in the form that was introduced - // in the initial version of the TrueType spec (in the late 1980s). - // However, this can fail for various reasons: the requested BCP 47 - // language code might not have an old-style Mac equivalent; - // we might not have a codec for the needed character encoding; - // or the name might contain characters that cannot be expressed - // in the old-style Macintosh encoding. In case of failure, we emit - // the name in a more modern fashion (Unicode encoding with BCP 47 - // language tags) that is recognized by MacOS 10.5, released in 2009. - // If fonts were only read by operating systems, we could simply - // emit all names in the modern form; this would be much easier. - // However, there are many applications and libraries that read - // 'name' tables directly, and these will usually only recognize - // the ancient form (silently skipping the unrecognized names). - var macPlatform = 1; // Macintosh - var macLanguage = macLanguageIds[lang]; - var macScript = macLanguageToScript[macLanguage]; - var macEncoding = getEncoding(macPlatform, macScript, macLanguage); - var macName = encode.MACSTRING(text, macEncoding); - if (macName === undefined) { - macPlatform = 0; // Unicode - macLanguage = ltag.indexOf(lang); - if (macLanguage < 0) { - macLanguage = ltag.length; - ltag.push(lang); - } - - macScript = 4; // Unicode 2.0 and later - macName = encode.UTF16(text); - } - - var macNameOffset = addStringToPool(macName, stringPool); - nameRecords.push(makeNameRecord(macPlatform, macScript, macLanguage, - nameID, macName.length, macNameOffset)); - - var winLanguage = windowsLanguageIds[lang]; - if (winLanguage !== undefined) { - var winName = encode.UTF16(text); - var winNameOffset = addStringToPool(winName, stringPool); - nameRecords.push(makeNameRecord(3, 1, winLanguage, - nameID, winName.length, winNameOffset)); - } - } - } - - nameRecords.sort(function(a, b) { - return ((a.platformID - b.platformID) || - (a.encodingID - b.encodingID) || - (a.languageID - b.languageID) || - (a.nameID - b.nameID)); - }); - - var t = new table.Table('name', [ - {name: 'format', type: 'USHORT', value: 0}, - {name: 'count', type: 'USHORT', value: nameRecords.length}, - {name: 'stringOffset', type: 'USHORT', value: 6 + nameRecords.length * 12} - ]); - - for (var r = 0; r < nameRecords.length; r++) { - t.fields.push({name: 'record_' + r, type: 'RECORD', value: nameRecords[r]}); - } - - t.fields.push({name: 'strings', type: 'LITERAL', value: stringPool}); - return t; -} - -var _name = { parse: parseNameTable, make: makeNameTable }; - -// The `OS/2` table contains metrics required in OpenType fonts. - -var unicodeRanges = [ - {begin: 0x0000, end: 0x007F}, // Basic Latin - {begin: 0x0080, end: 0x00FF}, // Latin-1 Supplement - {begin: 0x0100, end: 0x017F}, // Latin Extended-A - {begin: 0x0180, end: 0x024F}, // Latin Extended-B - {begin: 0x0250, end: 0x02AF}, // IPA Extensions - {begin: 0x02B0, end: 0x02FF}, // Spacing Modifier Letters - {begin: 0x0300, end: 0x036F}, // Combining Diacritical Marks - {begin: 0x0370, end: 0x03FF}, // Greek and Coptic - {begin: 0x2C80, end: 0x2CFF}, // Coptic - {begin: 0x0400, end: 0x04FF}, // Cyrillic - {begin: 0x0530, end: 0x058F}, // Armenian - {begin: 0x0590, end: 0x05FF}, // Hebrew - {begin: 0xA500, end: 0xA63F}, // Vai - {begin: 0x0600, end: 0x06FF}, // Arabic - {begin: 0x07C0, end: 0x07FF}, // NKo - {begin: 0x0900, end: 0x097F}, // Devanagari - {begin: 0x0980, end: 0x09FF}, // Bengali - {begin: 0x0A00, end: 0x0A7F}, // Gurmukhi - {begin: 0x0A80, end: 0x0AFF}, // Gujarati - {begin: 0x0B00, end: 0x0B7F}, // Oriya - {begin: 0x0B80, end: 0x0BFF}, // Tamil - {begin: 0x0C00, end: 0x0C7F}, // Telugu - {begin: 0x0C80, end: 0x0CFF}, // Kannada - {begin: 0x0D00, end: 0x0D7F}, // Malayalam - {begin: 0x0E00, end: 0x0E7F}, // Thai - {begin: 0x0E80, end: 0x0EFF}, // Lao - {begin: 0x10A0, end: 0x10FF}, // Georgian - {begin: 0x1B00, end: 0x1B7F}, // Balinese - {begin: 0x1100, end: 0x11FF}, // Hangul Jamo - {begin: 0x1E00, end: 0x1EFF}, // Latin Extended Additional - {begin: 0x1F00, end: 0x1FFF}, // Greek Extended - {begin: 0x2000, end: 0x206F}, // General Punctuation - {begin: 0x2070, end: 0x209F}, // Superscripts And Subscripts - {begin: 0x20A0, end: 0x20CF}, // Currency Symbol - {begin: 0x20D0, end: 0x20FF}, // Combining Diacritical Marks For Symbols - {begin: 0x2100, end: 0x214F}, // Letterlike Symbols - {begin: 0x2150, end: 0x218F}, // Number Forms - {begin: 0x2190, end: 0x21FF}, // Arrows - {begin: 0x2200, end: 0x22FF}, // Mathematical Operators - {begin: 0x2300, end: 0x23FF}, // Miscellaneous Technical - {begin: 0x2400, end: 0x243F}, // Control Pictures - {begin: 0x2440, end: 0x245F}, // Optical Character Recognition - {begin: 0x2460, end: 0x24FF}, // Enclosed Alphanumerics - {begin: 0x2500, end: 0x257F}, // Box Drawing - {begin: 0x2580, end: 0x259F}, // Block Elements - {begin: 0x25A0, end: 0x25FF}, // Geometric Shapes - {begin: 0x2600, end: 0x26FF}, // Miscellaneous Symbols - {begin: 0x2700, end: 0x27BF}, // Dingbats - {begin: 0x3000, end: 0x303F}, // CJK Symbols And Punctuation - {begin: 0x3040, end: 0x309F}, // Hiragana - {begin: 0x30A0, end: 0x30FF}, // Katakana - {begin: 0x3100, end: 0x312F}, // Bopomofo - {begin: 0x3130, end: 0x318F}, // Hangul Compatibility Jamo - {begin: 0xA840, end: 0xA87F}, // Phags-pa - {begin: 0x3200, end: 0x32FF}, // Enclosed CJK Letters And Months - {begin: 0x3300, end: 0x33FF}, // CJK Compatibility - {begin: 0xAC00, end: 0xD7AF}, // Hangul Syllables - {begin: 0xD800, end: 0xDFFF}, // Non-Plane 0 * - {begin: 0x10900, end: 0x1091F}, // Phoenicia - {begin: 0x4E00, end: 0x9FFF}, // CJK Unified Ideographs - {begin: 0xE000, end: 0xF8FF}, // Private Use Area (plane 0) - {begin: 0x31C0, end: 0x31EF}, // CJK Strokes - {begin: 0xFB00, end: 0xFB4F}, // Alphabetic Presentation Forms - {begin: 0xFB50, end: 0xFDFF}, // Arabic Presentation Forms-A - {begin: 0xFE20, end: 0xFE2F}, // Combining Half Marks - {begin: 0xFE10, end: 0xFE1F}, // Vertical Forms - {begin: 0xFE50, end: 0xFE6F}, // Small Form Variants - {begin: 0xFE70, end: 0xFEFF}, // Arabic Presentation Forms-B - {begin: 0xFF00, end: 0xFFEF}, // Halfwidth And Fullwidth Forms - {begin: 0xFFF0, end: 0xFFFF}, // Specials - {begin: 0x0F00, end: 0x0FFF}, // Tibetan - {begin: 0x0700, end: 0x074F}, // Syriac - {begin: 0x0780, end: 0x07BF}, // Thaana - {begin: 0x0D80, end: 0x0DFF}, // Sinhala - {begin: 0x1000, end: 0x109F}, // Myanmar - {begin: 0x1200, end: 0x137F}, // Ethiopic - {begin: 0x13A0, end: 0x13FF}, // Cherokee - {begin: 0x1400, end: 0x167F}, // Unified Canadian Aboriginal Syllabics - {begin: 0x1680, end: 0x169F}, // Ogham - {begin: 0x16A0, end: 0x16FF}, // Runic - {begin: 0x1780, end: 0x17FF}, // Khmer - {begin: 0x1800, end: 0x18AF}, // Mongolian - {begin: 0x2800, end: 0x28FF}, // Braille Patterns - {begin: 0xA000, end: 0xA48F}, // Yi Syllables - {begin: 0x1700, end: 0x171F}, // Tagalog - {begin: 0x10300, end: 0x1032F}, // Old Italic - {begin: 0x10330, end: 0x1034F}, // Gothic - {begin: 0x10400, end: 0x1044F}, // Deseret - {begin: 0x1D000, end: 0x1D0FF}, // Byzantine Musical Symbols - {begin: 0x1D400, end: 0x1D7FF}, // Mathematical Alphanumeric Symbols - {begin: 0xFF000, end: 0xFFFFD}, // Private Use (plane 15) - {begin: 0xFE00, end: 0xFE0F}, // Variation Selectors - {begin: 0xE0000, end: 0xE007F}, // Tags - {begin: 0x1900, end: 0x194F}, // Limbu - {begin: 0x1950, end: 0x197F}, // Tai Le - {begin: 0x1980, end: 0x19DF}, // New Tai Lue - {begin: 0x1A00, end: 0x1A1F}, // Buginese - {begin: 0x2C00, end: 0x2C5F}, // Glagolitic - {begin: 0x2D30, end: 0x2D7F}, // Tifinagh - {begin: 0x4DC0, end: 0x4DFF}, // Yijing Hexagram Symbols - {begin: 0xA800, end: 0xA82F}, // Syloti Nagri - {begin: 0x10000, end: 0x1007F}, // Linear B Syllabary - {begin: 0x10140, end: 0x1018F}, // Ancient Greek Numbers - {begin: 0x10380, end: 0x1039F}, // Ugaritic - {begin: 0x103A0, end: 0x103DF}, // Old Persian - {begin: 0x10450, end: 0x1047F}, // Shavian - {begin: 0x10480, end: 0x104AF}, // Osmanya - {begin: 0x10800, end: 0x1083F}, // Cypriot Syllabary - {begin: 0x10A00, end: 0x10A5F}, // Kharoshthi - {begin: 0x1D300, end: 0x1D35F}, // Tai Xuan Jing Symbols - {begin: 0x12000, end: 0x123FF}, // Cuneiform - {begin: 0x1D360, end: 0x1D37F}, // Counting Rod Numerals - {begin: 0x1B80, end: 0x1BBF}, // Sundanese - {begin: 0x1C00, end: 0x1C4F}, // Lepcha - {begin: 0x1C50, end: 0x1C7F}, // Ol Chiki - {begin: 0xA880, end: 0xA8DF}, // Saurashtra - {begin: 0xA900, end: 0xA92F}, // Kayah Li - {begin: 0xA930, end: 0xA95F}, // Rejang - {begin: 0xAA00, end: 0xAA5F}, // Cham - {begin: 0x10190, end: 0x101CF}, // Ancient Symbols - {begin: 0x101D0, end: 0x101FF}, // Phaistos Disc - {begin: 0x102A0, end: 0x102DF}, // Carian - {begin: 0x1F030, end: 0x1F09F} // Domino Tiles -]; - -function getUnicodeRange(unicode) { - for (var i = 0; i < unicodeRanges.length; i += 1) { - var range = unicodeRanges[i]; - if (unicode >= range.begin && unicode < range.end) { - return i; - } - } - - return -1; -} - -// Parse the OS/2 and Windows metrics `OS/2` table -function parseOS2Table(data, start) { - var os2 = {}; - var p = new parse.Parser(data, start); - os2.version = p.parseUShort(); - os2.xAvgCharWidth = p.parseShort(); - os2.usWeightClass = p.parseUShort(); - os2.usWidthClass = p.parseUShort(); - os2.fsType = p.parseUShort(); - os2.ySubscriptXSize = p.parseShort(); - os2.ySubscriptYSize = p.parseShort(); - os2.ySubscriptXOffset = p.parseShort(); - os2.ySubscriptYOffset = p.parseShort(); - os2.ySuperscriptXSize = p.parseShort(); - os2.ySuperscriptYSize = p.parseShort(); - os2.ySuperscriptXOffset = p.parseShort(); - os2.ySuperscriptYOffset = p.parseShort(); - os2.yStrikeoutSize = p.parseShort(); - os2.yStrikeoutPosition = p.parseShort(); - os2.sFamilyClass = p.parseShort(); - os2.panose = []; - for (var i = 0; i < 10; i++) { - os2.panose[i] = p.parseByte(); - } - - os2.ulUnicodeRange1 = p.parseULong(); - os2.ulUnicodeRange2 = p.parseULong(); - os2.ulUnicodeRange3 = p.parseULong(); - os2.ulUnicodeRange4 = p.parseULong(); - os2.achVendID = String.fromCharCode(p.parseByte(), p.parseByte(), p.parseByte(), p.parseByte()); - os2.fsSelection = p.parseUShort(); - os2.usFirstCharIndex = p.parseUShort(); - os2.usLastCharIndex = p.parseUShort(); - os2.sTypoAscender = p.parseShort(); - os2.sTypoDescender = p.parseShort(); - os2.sTypoLineGap = p.parseShort(); - os2.usWinAscent = p.parseUShort(); - os2.usWinDescent = p.parseUShort(); - if (os2.version >= 1) { - os2.ulCodePageRange1 = p.parseULong(); - os2.ulCodePageRange2 = p.parseULong(); - } - - if (os2.version >= 2) { - os2.sxHeight = p.parseShort(); - os2.sCapHeight = p.parseShort(); - os2.usDefaultChar = p.parseUShort(); - os2.usBreakChar = p.parseUShort(); - os2.usMaxContent = p.parseUShort(); - } - - return os2; -} - -function makeOS2Table(options) { - return new table.Table('OS/2', [ - {name: 'version', type: 'USHORT', value: 0x0003}, - {name: 'xAvgCharWidth', type: 'SHORT', value: 0}, - {name: 'usWeightClass', type: 'USHORT', value: 0}, - {name: 'usWidthClass', type: 'USHORT', value: 0}, - {name: 'fsType', type: 'USHORT', value: 0}, - {name: 'ySubscriptXSize', type: 'SHORT', value: 650}, - {name: 'ySubscriptYSize', type: 'SHORT', value: 699}, - {name: 'ySubscriptXOffset', type: 'SHORT', value: 0}, - {name: 'ySubscriptYOffset', type: 'SHORT', value: 140}, - {name: 'ySuperscriptXSize', type: 'SHORT', value: 650}, - {name: 'ySuperscriptYSize', type: 'SHORT', value: 699}, - {name: 'ySuperscriptXOffset', type: 'SHORT', value: 0}, - {name: 'ySuperscriptYOffset', type: 'SHORT', value: 479}, - {name: 'yStrikeoutSize', type: 'SHORT', value: 49}, - {name: 'yStrikeoutPosition', type: 'SHORT', value: 258}, - {name: 'sFamilyClass', type: 'SHORT', value: 0}, - {name: 'bFamilyType', type: 'BYTE', value: 0}, - {name: 'bSerifStyle', type: 'BYTE', value: 0}, - {name: 'bWeight', type: 'BYTE', value: 0}, - {name: 'bProportion', type: 'BYTE', value: 0}, - {name: 'bContrast', type: 'BYTE', value: 0}, - {name: 'bStrokeVariation', type: 'BYTE', value: 0}, - {name: 'bArmStyle', type: 'BYTE', value: 0}, - {name: 'bLetterform', type: 'BYTE', value: 0}, - {name: 'bMidline', type: 'BYTE', value: 0}, - {name: 'bXHeight', type: 'BYTE', value: 0}, - {name: 'ulUnicodeRange1', type: 'ULONG', value: 0}, - {name: 'ulUnicodeRange2', type: 'ULONG', value: 0}, - {name: 'ulUnicodeRange3', type: 'ULONG', value: 0}, - {name: 'ulUnicodeRange4', type: 'ULONG', value: 0}, - {name: 'achVendID', type: 'CHARARRAY', value: 'XXXX'}, - {name: 'fsSelection', type: 'USHORT', value: 0}, - {name: 'usFirstCharIndex', type: 'USHORT', value: 0}, - {name: 'usLastCharIndex', type: 'USHORT', value: 0}, - {name: 'sTypoAscender', type: 'SHORT', value: 0}, - {name: 'sTypoDescender', type: 'SHORT', value: 0}, - {name: 'sTypoLineGap', type: 'SHORT', value: 0}, - {name: 'usWinAscent', type: 'USHORT', value: 0}, - {name: 'usWinDescent', type: 'USHORT', value: 0}, - {name: 'ulCodePageRange1', type: 'ULONG', value: 0}, - {name: 'ulCodePageRange2', type: 'ULONG', value: 0}, - {name: 'sxHeight', type: 'SHORT', value: 0}, - {name: 'sCapHeight', type: 'SHORT', value: 0}, - {name: 'usDefaultChar', type: 'USHORT', value: 0}, - {name: 'usBreakChar', type: 'USHORT', value: 0}, - {name: 'usMaxContext', type: 'USHORT', value: 0} - ], options); -} - -var os2 = { parse: parseOS2Table, make: makeOS2Table, unicodeRanges: unicodeRanges, getUnicodeRange: getUnicodeRange }; - -// The `post` table stores additional PostScript information, such as glyph names. - -// Parse the PostScript `post` table -function parsePostTable(data, start) { - var post = {}; - var p = new parse.Parser(data, start); - post.version = p.parseVersion(); - post.italicAngle = p.parseFixed(); - post.underlinePosition = p.parseShort(); - post.underlineThickness = p.parseShort(); - post.isFixedPitch = p.parseULong(); - post.minMemType42 = p.parseULong(); - post.maxMemType42 = p.parseULong(); - post.minMemType1 = p.parseULong(); - post.maxMemType1 = p.parseULong(); - switch (post.version) { - case 1: - post.names = standardNames.slice(); - break; - case 2: - post.numberOfGlyphs = p.parseUShort(); - post.glyphNameIndex = new Array(post.numberOfGlyphs); - for (var i = 0; i < post.numberOfGlyphs; i++) { - post.glyphNameIndex[i] = p.parseUShort(); - } - - post.names = []; - for (var i$1 = 0; i$1 < post.numberOfGlyphs; i$1++) { - if (post.glyphNameIndex[i$1] >= standardNames.length) { - var nameLength = p.parseChar(); - post.names.push(p.parseString(nameLength)); - } - } - - break; - case 2.5: - post.numberOfGlyphs = p.parseUShort(); - post.offset = new Array(post.numberOfGlyphs); - for (var i$2 = 0; i$2 < post.numberOfGlyphs; i$2++) { - post.offset[i$2] = p.parseChar(); - } - - break; - } - return post; -} - -function makePostTable() { - return new table.Table('post', [ - {name: 'version', type: 'FIXED', value: 0x00030000}, - {name: 'italicAngle', type: 'FIXED', value: 0}, - {name: 'underlinePosition', type: 'FWORD', value: 0}, - {name: 'underlineThickness', type: 'FWORD', value: 0}, - {name: 'isFixedPitch', type: 'ULONG', value: 0}, - {name: 'minMemType42', type: 'ULONG', value: 0}, - {name: 'maxMemType42', type: 'ULONG', value: 0}, - {name: 'minMemType1', type: 'ULONG', value: 0}, - {name: 'maxMemType1', type: 'ULONG', value: 0} - ]); -} - -var post = { parse: parsePostTable, make: makePostTable }; - -// The `GSUB` table contains ligatures, among other things. - -var subtableParsers = new Array(9); // subtableParsers[0] is unused - -// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#SS -subtableParsers[1] = function parseLookup1() { - var start = this.offset + this.relativeOffset; - var substFormat = this.parseUShort(); - if (substFormat === 1) { - return { - substFormat: 1, - coverage: this.parsePointer(Parser.coverage), - deltaGlyphId: this.parseUShort() - }; - } else if (substFormat === 2) { - return { - substFormat: 2, - coverage: this.parsePointer(Parser.coverage), - substitute: this.parseOffset16List() - }; - } - check.assert(false, '0x' + start.toString(16) + ': lookup type 1 format must be 1 or 2.'); -}; - -// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#MS -subtableParsers[2] = function parseLookup2() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, 'GSUB Multiple Substitution Subtable identifier-format must be 1'); - return { - substFormat: substFormat, - coverage: this.parsePointer(Parser.coverage), - sequences: this.parseListOfLists() - }; -}; - -// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#AS -subtableParsers[3] = function parseLookup3() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, 'GSUB Alternate Substitution Subtable identifier-format must be 1'); - return { - substFormat: substFormat, - coverage: this.parsePointer(Parser.coverage), - alternateSets: this.parseListOfLists() - }; -}; - -// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#LS -subtableParsers[4] = function parseLookup4() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, 'GSUB ligature table identifier-format must be 1'); - return { - substFormat: substFormat, - coverage: this.parsePointer(Parser.coverage), - ligatureSets: this.parseListOfLists(function() { - return { - ligGlyph: this.parseUShort(), - components: this.parseUShortList(this.parseUShort() - 1) - }; - }) - }; -}; - -var lookupRecordDesc = { - sequenceIndex: Parser.uShort, - lookupListIndex: Parser.uShort -}; - -// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#CSF -subtableParsers[5] = function parseLookup5() { - var start = this.offset + this.relativeOffset; - var substFormat = this.parseUShort(); - - if (substFormat === 1) { - return { - substFormat: substFormat, - coverage: this.parsePointer(Parser.coverage), - ruleSets: this.parseListOfLists(function() { - var glyphCount = this.parseUShort(); - var substCount = this.parseUShort(); - return { - input: this.parseUShortList(glyphCount - 1), - lookupRecords: this.parseRecordList(substCount, lookupRecordDesc) - }; - }) - }; - } else if (substFormat === 2) { - return { - substFormat: substFormat, - coverage: this.parsePointer(Parser.coverage), - classDef: this.parsePointer(Parser.classDef), - classSets: this.parseListOfLists(function() { - var glyphCount = this.parseUShort(); - var substCount = this.parseUShort(); - return { - classes: this.parseUShortList(glyphCount - 1), - lookupRecords: this.parseRecordList(substCount, lookupRecordDesc) - }; - }) - }; - } else if (substFormat === 3) { - var glyphCount = this.parseUShort(); - var substCount = this.parseUShort(); - return { - substFormat: substFormat, - coverages: this.parseList(glyphCount, Parser.pointer(Parser.coverage)), - lookupRecords: this.parseRecordList(substCount, lookupRecordDesc) - }; - } - check.assert(false, '0x' + start.toString(16) + ': lookup type 5 format must be 1, 2 or 3.'); -}; - -// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#CC -subtableParsers[6] = function parseLookup6() { - var start = this.offset + this.relativeOffset; - var substFormat = this.parseUShort(); - if (substFormat === 1) { - return { - substFormat: 1, - coverage: this.parsePointer(Parser.coverage), - chainRuleSets: this.parseListOfLists(function() { - return { - backtrack: this.parseUShortList(), - input: this.parseUShortList(this.parseShort() - 1), - lookahead: this.parseUShortList(), - lookupRecords: this.parseRecordList(lookupRecordDesc) - }; - }) - }; - } else if (substFormat === 2) { - return { - substFormat: 2, - coverage: this.parsePointer(Parser.coverage), - backtrackClassDef: this.parsePointer(Parser.classDef), - inputClassDef: this.parsePointer(Parser.classDef), - lookaheadClassDef: this.parsePointer(Parser.classDef), - chainClassSet: this.parseListOfLists(function() { - return { - backtrack: this.parseUShortList(), - input: this.parseUShortList(this.parseShort() - 1), - lookahead: this.parseUShortList(), - lookupRecords: this.parseRecordList(lookupRecordDesc) - }; - }) - }; - } else if (substFormat === 3) { - return { - substFormat: 3, - backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)), - inputCoverage: this.parseList(Parser.pointer(Parser.coverage)), - lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)), - lookupRecords: this.parseRecordList(lookupRecordDesc) - }; - } - check.assert(false, '0x' + start.toString(16) + ': lookup type 6 format must be 1, 2 or 3.'); -}; - -// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#ES -subtableParsers[7] = function parseLookup7() { - // Extension Substitution subtable - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, 'GSUB Extension Substitution subtable identifier-format must be 1'); - var extensionLookupType = this.parseUShort(); - var extensionParser = new Parser(this.data, this.offset + this.parseULong()); - return { - substFormat: 1, - lookupType: extensionLookupType, - extension: subtableParsers[extensionLookupType].call(extensionParser) - }; -}; - -// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#RCCS -subtableParsers[8] = function parseLookup8() { - var substFormat = this.parseUShort(); - check.argument(substFormat === 1, 'GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1'); - return { - substFormat: substFormat, - coverage: this.parsePointer(Parser.coverage), - backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)), - lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)), - substitutes: this.parseUShortList() - }; -}; - -// https://www.microsoft.com/typography/OTSPEC/gsub.htm -function parseGsubTable(data, start) { - start = start || 0; - var p = new Parser(data, start); - var tableVersion = p.parseVersion(1); - check.argument(tableVersion === 1 || tableVersion === 1.1, 'Unsupported GSUB table version.'); - if (tableVersion === 1) { - return { - version: tableVersion, - scripts: p.parseScriptList(), - features: p.parseFeatureList(), - lookups: p.parseLookupList(subtableParsers) - }; - } else { - return { - version: tableVersion, - scripts: p.parseScriptList(), - features: p.parseFeatureList(), - lookups: p.parseLookupList(subtableParsers), - variations: p.parseFeatureVariationsList() - }; - } - -} - -// GSUB Writing ////////////////////////////////////////////// -var subtableMakers = new Array(9); - -subtableMakers[1] = function makeLookup1(subtable) { - if (subtable.substFormat === 1) { - return new table.Table('substitutionTable', [ - {name: 'substFormat', type: 'USHORT', value: 1}, - {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)}, - {name: 'deltaGlyphID', type: 'USHORT', value: subtable.deltaGlyphId} - ]); - } else { - return new table.Table('substitutionTable', [ - {name: 'substFormat', type: 'USHORT', value: 2}, - {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)} - ].concat(table.ushortList('substitute', subtable.substitute))); - } -}; - -subtableMakers[2] = function makeLookup2(subtable) { - check.assert(subtable.substFormat === 1, 'Lookup type 2 substFormat must be 1.'); - return new table.Table('substitutionTable', [ - {name: 'substFormat', type: 'USHORT', value: 1}, - {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)} - ].concat(table.tableList('seqSet', subtable.sequences, function(sequenceSet) { - return new table.Table('sequenceSetTable', table.ushortList('sequence', sequenceSet)); - }))); -}; - -subtableMakers[3] = function makeLookup3(subtable) { - check.assert(subtable.substFormat === 1, 'Lookup type 3 substFormat must be 1.'); - return new table.Table('substitutionTable', [ - {name: 'substFormat', type: 'USHORT', value: 1}, - {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)} - ].concat(table.tableList('altSet', subtable.alternateSets, function(alternateSet) { - return new table.Table('alternateSetTable', table.ushortList('alternate', alternateSet)); - }))); -}; - -subtableMakers[4] = function makeLookup4(subtable) { - check.assert(subtable.substFormat === 1, 'Lookup type 4 substFormat must be 1.'); - return new table.Table('substitutionTable', [ - {name: 'substFormat', type: 'USHORT', value: 1}, - {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)} - ].concat(table.tableList('ligSet', subtable.ligatureSets, function(ligatureSet) { - return new table.Table('ligatureSetTable', table.tableList('ligature', ligatureSet, function(ligature) { - return new table.Table('ligatureTable', - [{name: 'ligGlyph', type: 'USHORT', value: ligature.ligGlyph}] - .concat(table.ushortList('component', ligature.components, ligature.components.length + 1)) - ); - })); - }))); -}; - -subtableMakers[6] = function makeLookup6(subtable) { - if (subtable.substFormat === 1) { - var returnTable = new table.Table('chainContextTable', [ - {name: 'substFormat', type: 'USHORT', value: subtable.substFormat}, - {name: 'coverage', type: 'TABLE', value: new table.Coverage(subtable.coverage)} - ].concat(table.tableList('chainRuleSet', subtable.chainRuleSets, function(chainRuleSet) { - return new table.Table('chainRuleSetTable', table.tableList('chainRule', chainRuleSet, function(chainRule) { - var tableData = table.ushortList('backtrackGlyph', chainRule.backtrack, chainRule.backtrack.length) - .concat(table.ushortList('inputGlyph', chainRule.input, chainRule.input.length + 1)) - .concat(table.ushortList('lookaheadGlyph', chainRule.lookahead, chainRule.lookahead.length)) - .concat(table.ushortList('substitution', [], chainRule.lookupRecords.length)); - - chainRule.lookupRecords.forEach(function (record, i) { - tableData = tableData - .concat({name: 'sequenceIndex' + i, type: 'USHORT', value: record.sequenceIndex}) - .concat({name: 'lookupListIndex' + i, type: 'USHORT', value: record.lookupListIndex}); - }); - return new table.Table('chainRuleTable', tableData); - })); - }))); - return returnTable; - } else if (subtable.substFormat === 2) { - check.assert(false, 'lookup type 6 format 2 is not yet supported.'); - } else if (subtable.substFormat === 3) { - var tableData = [ - {name: 'substFormat', type: 'USHORT', value: subtable.substFormat} ]; - - tableData.push({name: 'backtrackGlyphCount', type: 'USHORT', value: subtable.backtrackCoverage.length}); - subtable.backtrackCoverage.forEach(function (coverage, i) { - tableData.push({name: 'backtrackCoverage' + i, type: 'TABLE', value: new table.Coverage(coverage)}); - }); - tableData.push({name: 'inputGlyphCount', type: 'USHORT', value: subtable.inputCoverage.length}); - subtable.inputCoverage.forEach(function (coverage, i) { - tableData.push({name: 'inputCoverage' + i, type: 'TABLE', value: new table.Coverage(coverage)}); - }); - tableData.push({name: 'lookaheadGlyphCount', type: 'USHORT', value: subtable.lookaheadCoverage.length}); - subtable.lookaheadCoverage.forEach(function (coverage, i) { - tableData.push({name: 'lookaheadCoverage' + i, type: 'TABLE', value: new table.Coverage(coverage)}); - }); - - tableData.push({name: 'substitutionCount', type: 'USHORT', value: subtable.lookupRecords.length}); - subtable.lookupRecords.forEach(function (record, i) { - tableData = tableData - .concat({name: 'sequenceIndex' + i, type: 'USHORT', value: record.sequenceIndex}) - .concat({name: 'lookupListIndex' + i, type: 'USHORT', value: record.lookupListIndex}); - }); - - var returnTable$1 = new table.Table('chainContextTable', tableData); - - return returnTable$1; - } - - check.assert(false, 'lookup type 6 format must be 1, 2 or 3.'); -}; - -function makeGsubTable(gsub) { - return new table.Table('GSUB', [ - {name: 'version', type: 'ULONG', value: 0x10000}, - {name: 'scripts', type: 'TABLE', value: new table.ScriptList(gsub.scripts)}, - {name: 'features', type: 'TABLE', value: new table.FeatureList(gsub.features)}, - {name: 'lookups', type: 'TABLE', value: new table.LookupList(gsub.lookups, subtableMakers)} - ]); -} - -var gsub = { parse: parseGsubTable, make: makeGsubTable }; - -// The `GPOS` table contains kerning pairs, among other things. - -// Parse the metadata `meta` table. -// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6meta.html -function parseMetaTable(data, start) { - var p = new parse.Parser(data, start); - var tableVersion = p.parseULong(); - check.argument(tableVersion === 1, 'Unsupported META table version.'); - p.parseULong(); // flags - currently unused and set to 0 - p.parseULong(); // tableOffset - var numDataMaps = p.parseULong(); - - var tags = {}; - for (var i = 0; i < numDataMaps; i++) { - var tag = p.parseTag(); - var dataOffset = p.parseULong(); - var dataLength = p.parseULong(); - var text = decode.UTF8(data, start + dataOffset, dataLength); - - tags[tag] = text; - } - return tags; -} - -function makeMetaTable(tags) { - var numTags = Object.keys(tags).length; - var stringPool = ''; - var stringPoolOffset = 16 + numTags * 12; - - var result = new table.Table('meta', [ - {name: 'version', type: 'ULONG', value: 1}, - {name: 'flags', type: 'ULONG', value: 0}, - {name: 'offset', type: 'ULONG', value: stringPoolOffset}, - {name: 'numTags', type: 'ULONG', value: numTags} - ]); - - for (var tag in tags) { - var pos = stringPool.length; - stringPool += tags[tag]; - - result.fields.push({name: 'tag ' + tag, type: 'TAG', value: tag}); - result.fields.push({name: 'offset ' + tag, type: 'ULONG', value: stringPoolOffset + pos}); - result.fields.push({name: 'length ' + tag, type: 'ULONG', value: tags[tag].length}); - } - - result.fields.push({name: 'stringPool', type: 'CHARARRAY', value: stringPool}); - - return result; -} - -var meta = { parse: parseMetaTable, make: makeMetaTable }; - -// The `COLR` table adds support for multi-colored glyphs - -function parseColrTable(data, start) { - var p = new Parser(data, start); - var version = p.parseUShort(); - check.argument(version === 0x0000, 'Only COLRv0 supported.'); - var numBaseGlyphRecords = p.parseUShort(); - var baseGlyphRecordsOffset = p.parseOffset32(); - var layerRecordsOffset = p.parseOffset32(); - var numLayerRecords = p.parseUShort(); - p.relativeOffset = baseGlyphRecordsOffset; - var baseGlyphRecords = p.parseRecordList(numBaseGlyphRecords, { - glyphID: Parser.uShort, - firstLayerIndex: Parser.uShort, - numLayers: Parser.uShort, - }); - p.relativeOffset = layerRecordsOffset; - var layerRecords = p.parseRecordList(numLayerRecords, { - glyphID: Parser.uShort, - paletteIndex: Parser.uShort - }); - - return { - version: version, - baseGlyphRecords: baseGlyphRecords, - layerRecords: layerRecords, - }; -} - -function makeColrTable(ref) { - var version = ref.version; if ( version === void 0 ) version = 0x0000; - var baseGlyphRecords = ref.baseGlyphRecords; if ( baseGlyphRecords === void 0 ) baseGlyphRecords = []; - var layerRecords = ref.layerRecords; if ( layerRecords === void 0 ) layerRecords = []; - - check.argument(version === 0x0000, 'Only COLRv0 supported.'); - var baseGlyphRecordsOffset = 14; - var layerRecordsOffset = baseGlyphRecordsOffset + (baseGlyphRecords.length * 6); - return new table.Table('COLR', [ - { name: 'version', type: 'USHORT', value: version }, - { name: 'numBaseGlyphRecords', type: 'USHORT', value: baseGlyphRecords.length }, - { name: 'baseGlyphRecordsOffset', type: 'ULONG', value: baseGlyphRecordsOffset }, - { name: 'layerRecordsOffset', type: 'ULONG', value: layerRecordsOffset }, - { name: 'numLayerRecords', type: 'USHORT', value: layerRecords.length } ].concat( baseGlyphRecords.map(function (glyph, i) { return [ - { name: 'glyphID_' + i, type: 'USHORT', value: glyph.glyphID }, - { name: 'firstLayerIndex_' + i, type: 'USHORT', value: glyph.firstLayerIndex }, - { name: 'numLayers_' + i, type: 'USHORT', value: glyph.numLayers } ]; }).flat(), - layerRecords.map(function (layer, i) { return [ - { name: 'LayerGlyphID_' + i, type: 'USHORT', value: layer.glyphID }, - { name: 'paletteIndex_' + i, type: 'USHORT', value: layer.paletteIndex } ]; }).flat() )); -} - -var colr = { parse: parseColrTable, make: makeColrTable }; - -// The `CPAL` define a contiguous list of colors (colorRecords) - -// Parse the header `head` table -function parseCpalTable(data, start) { - var p = new Parser(data, start); - var version = p.parseShort(); - var numPaletteEntries = p.parseShort(); - var numPalettes = p.parseShort(); - var numColorRecords = p.parseShort(); - var colorRecordsArrayOffset = p.parseOffset32(); - var colorRecordIndices = p.parseUShortList(numPalettes); - p.relativeOffset = colorRecordsArrayOffset; - var colorRecords = p.parseULongList(numColorRecords); - return { - version: version, - numPaletteEntries: numPaletteEntries, - colorRecords: colorRecords, - colorRecordIndices: colorRecordIndices, - }; -} - -function makeCpalTable(ref) { - var version = ref.version; if ( version === void 0 ) version = 0; - var numPaletteEntries = ref.numPaletteEntries; if ( numPaletteEntries === void 0 ) numPaletteEntries = 0; - var colorRecords = ref.colorRecords; if ( colorRecords === void 0 ) colorRecords = []; - var colorRecordIndices = ref.colorRecordIndices; if ( colorRecordIndices === void 0 ) colorRecordIndices = [0]; - - check.argument(version === 0, 'Only CPALv0 are supported.'); - check.argument(colorRecords.length, 'No colorRecords given.'); - check.argument(colorRecordIndices.length, 'No colorRecordIndices given.'); - check.argument(!numPaletteEntries && colorRecordIndices.length == 1, 'Can\'t infer numPaletteEntries on multiple colorRecordIndices'); - return new table.Table('CPAL', [ - { name: 'version', type: 'USHORT', value: version }, - { name: 'numPaletteEntries', type: 'USHORT', value: numPaletteEntries || colorRecords.length }, - { name: 'numPalettes', type: 'USHORT', value: colorRecordIndices.length }, - { name: 'numColorRecords', type: 'USHORT', value: colorRecords.length }, - { name: 'colorRecordsArrayOffset', type: 'ULONG', value: 12 + 2 * colorRecordIndices.length } ].concat( colorRecordIndices.map(function (palette, i) { return ({ name: 'colorRecordIndices_' + i, type: 'USHORT', value: palette }); }), - colorRecords.map(function (color, i) { return ({ name: 'colorRecords_' + i, type: 'ULONG', value: color }); }) )); -} - -var cpal = { parse: parseCpalTable, make: makeCpalTable }; - -// The `sfnt` wrapper provides organization for the tables in the font. - -function log2(v) { - return Math.log(v) / Math.log(2) | 0; -} - -function computeCheckSum(bytes) { - while (bytes.length % 4 !== 0) { - bytes.push(0); - } - - var sum = 0; - for (var i = 0; i < bytes.length; i += 4) { - sum += (bytes[i] << 24) + - (bytes[i + 1] << 16) + - (bytes[i + 2] << 8) + - (bytes[i + 3]); - } - - sum %= Math.pow(2, 32); - return sum; -} - -function makeTableRecord(tag, checkSum, offset, length) { - return new table.Record('Table Record', [ - {name: 'tag', type: 'TAG', value: tag !== undefined ? tag : ''}, - {name: 'checkSum', type: 'ULONG', value: checkSum !== undefined ? checkSum : 0}, - {name: 'offset', type: 'ULONG', value: offset !== undefined ? offset : 0}, - {name: 'length', type: 'ULONG', value: length !== undefined ? length : 0} - ]); -} - -function makeSfntTable(tables) { - var sfnt = new table.Table('sfnt', [ - {name: 'version', type: 'TAG', value: 'OTTO'}, - {name: 'numTables', type: 'USHORT', value: 0}, - {name: 'searchRange', type: 'USHORT', value: 0}, - {name: 'entrySelector', type: 'USHORT', value: 0}, - {name: 'rangeShift', type: 'USHORT', value: 0} - ]); - sfnt.tables = tables; - sfnt.numTables = tables.length; - var highestPowerOf2 = Math.pow(2, log2(sfnt.numTables)); - sfnt.searchRange = 16 * highestPowerOf2; - sfnt.entrySelector = log2(highestPowerOf2); - sfnt.rangeShift = sfnt.numTables * 16 - sfnt.searchRange; - - var recordFields = []; - var tableFields = []; - - var offset = sfnt.sizeOf() + (makeTableRecord().sizeOf() * sfnt.numTables); - while (offset % 4 !== 0) { - offset += 1; - tableFields.push({name: 'padding', type: 'BYTE', value: 0}); - } - - for (var i = 0; i < tables.length; i += 1) { - var t = tables[i]; - check.argument(t.tableName.length === 4, 'Table name' + t.tableName + ' is invalid.'); - var tableLength = t.sizeOf(); - var tableRecord = makeTableRecord(t.tableName, computeCheckSum(t.encode()), offset, tableLength); - recordFields.push({name: tableRecord.tag + ' Table Record', type: 'RECORD', value: tableRecord}); - tableFields.push({name: t.tableName + ' table', type: 'RECORD', value: t}); - offset += tableLength; - check.argument(!isNaN(offset), 'Something went wrong calculating the offset.'); - while (offset % 4 !== 0) { - offset += 1; - tableFields.push({name: 'padding', type: 'BYTE', value: 0}); - } - } - - // Table records need to be sorted alphabetically. - recordFields.sort(function(r1, r2) { - if (r1.value.tag > r2.value.tag) { - return 1; - } else { - return -1; - } - }); - - sfnt.fields = sfnt.fields.concat(recordFields); - sfnt.fields = sfnt.fields.concat(tableFields); - return sfnt; -} - -// Get the metrics for a character. If the string has more than one character -// this function returns metrics for the first available character. -// You can provide optional fallback metrics if no characters are available. -function metricsForChar(font, chars, notFoundMetrics) { - for (var i = 0; i < chars.length; i += 1) { - var glyphIndex = font.charToGlyphIndex(chars[i]); - if (glyphIndex > 0) { - var glyph = font.glyphs.get(glyphIndex); - return glyph.getMetrics(); - } - } - - return notFoundMetrics; -} - -function average(vs) { - var sum = 0; - for (var i = 0; i < vs.length; i += 1) { - sum += vs[i]; - } - - return sum / vs.length; -} - -// Convert the font object to a SFNT data structure. -// This structure contains all the necessary tables and metadata to create a binary OTF file. -function fontToSfntTable(font) { - var xMins = []; - var yMins = []; - var xMaxs = []; - var yMaxs = []; - var advanceWidths = []; - var leftSideBearings = []; - var rightSideBearings = []; - var firstCharIndex; - var lastCharIndex = 0; - var ulUnicodeRange1 = 0; - var ulUnicodeRange2 = 0; - var ulUnicodeRange3 = 0; - var ulUnicodeRange4 = 0; - - for (var i = 0; i < font.glyphs.length; i += 1) { - var glyph = font.glyphs.get(i); - var unicode = glyph.unicode | 0; - - if (isNaN(glyph.advanceWidth)) { - throw new Error('Glyph ' + glyph.name + ' (' + i + '): advanceWidth is not a number.'); - } - - if (firstCharIndex > unicode || firstCharIndex === undefined) { - // ignore .notdef char - if (unicode > 0) { - firstCharIndex = unicode; - } - } - - if (lastCharIndex < unicode) { - lastCharIndex = unicode; - } - - var position = os2.getUnicodeRange(unicode); - if (position < 32) { - ulUnicodeRange1 |= 1 << position; - } else if (position < 64) { - ulUnicodeRange2 |= 1 << position - 32; - } else if (position < 96) { - ulUnicodeRange3 |= 1 << position - 64; - } else if (position < 123) { - ulUnicodeRange4 |= 1 << position - 96; - } else { - throw new Error('Unicode ranges bits > 123 are reserved for internal usage'); - } - // Skip non-important characters. - if (glyph.name === '.notdef') { continue; } - var metrics = glyph.getMetrics(); - xMins.push(metrics.xMin); - yMins.push(metrics.yMin); - xMaxs.push(metrics.xMax); - yMaxs.push(metrics.yMax); - leftSideBearings.push(metrics.leftSideBearing); - rightSideBearings.push(metrics.rightSideBearing); - advanceWidths.push(glyph.advanceWidth); - } - - var globals = { - xMin: Math.min.apply(null, xMins), - yMin: Math.min.apply(null, yMins), - xMax: Math.max.apply(null, xMaxs), - yMax: Math.max.apply(null, yMaxs), - advanceWidthMax: Math.max.apply(null, advanceWidths), - advanceWidthAvg: average(advanceWidths), - minLeftSideBearing: Math.min.apply(null, leftSideBearings), - maxLeftSideBearing: Math.max.apply(null, leftSideBearings), - minRightSideBearing: Math.min.apply(null, rightSideBearings) - }; - globals.ascender = font.ascender; - globals.descender = font.descender; - - var headTable = head.make({ - flags: 3, // 00000011 (baseline for font at y=0; left sidebearing point at x=0) - unitsPerEm: font.unitsPerEm, - xMin: globals.xMin, - yMin: globals.yMin, - xMax: globals.xMax, - yMax: globals.yMax, - lowestRecPPEM: 3, - createdTimestamp: font.createdTimestamp - }); - - var hheaTable = hhea.make({ - ascender: globals.ascender, - descender: globals.descender, - advanceWidthMax: globals.advanceWidthMax, - minLeftSideBearing: globals.minLeftSideBearing, - minRightSideBearing: globals.minRightSideBearing, - xMaxExtent: globals.maxLeftSideBearing + (globals.xMax - globals.xMin), - numberOfHMetrics: font.glyphs.length - }); - - var maxpTable = maxp.make(font.glyphs.length); - - var os2Table = os2.make(Object.assign({ - xAvgCharWidth: Math.round(globals.advanceWidthAvg), - usFirstCharIndex: firstCharIndex, - usLastCharIndex: lastCharIndex, - ulUnicodeRange1: ulUnicodeRange1, - ulUnicodeRange2: ulUnicodeRange2, - ulUnicodeRange3: ulUnicodeRange3, - ulUnicodeRange4: ulUnicodeRange4, - // See http://typophile.com/node/13081 for more info on vertical metrics. - // We get metrics for typical characters (such as "x" for xHeight). - // We provide some fallback characters if characters are unavailable: their - // ordering was chosen experimentally. - sTypoAscender: globals.ascender, - sTypoDescender: globals.descender, - sTypoLineGap: 0, - usWinAscent: globals.yMax, - usWinDescent: Math.abs(globals.yMin), - ulCodePageRange1: 1, // FIXME: hard-code Latin 1 support for now - sxHeight: metricsForChar(font, 'xyvw', {yMax: Math.round(globals.ascender / 2)}).yMax, - sCapHeight: metricsForChar(font, 'HIKLEFJMNTZBDPRAGOQSUVWXY', globals).yMax, - usDefaultChar: font.hasChar(' ') ? 32 : 0, // Use space as the default character, if available. - usBreakChar: font.hasChar(' ') ? 32 : 0, // Use space as the break character, if available. - }, font.tables.os2)); - - var hmtxTable = hmtx.make(font.glyphs); - var cmapTable = cmap.make(font.glyphs); - - var englishFamilyName = font.getEnglishName('fontFamily'); - var englishStyleName = font.getEnglishName('fontSubfamily'); - var englishFullName = englishFamilyName + ' ' + englishStyleName; - var postScriptName = font.getEnglishName('postScriptName'); - if (!postScriptName) { - postScriptName = englishFamilyName.replace(/\s/g, '') + '-' + englishStyleName; - } - - var names = {}; - for (var n in font.names) { - names[n] = font.names[n]; - } - - if (!names.uniqueID) { - names.uniqueID = {en: font.getEnglishName('manufacturer') + ':' + englishFullName}; - } - - if (!names.postScriptName) { - names.postScriptName = {en: postScriptName}; - } - - if (!names.preferredFamily) { - names.preferredFamily = font.names.fontFamily; - } - - if (!names.preferredSubfamily) { - names.preferredSubfamily = font.names.fontSubfamily; - } - - var languageTags = []; - var nameTable = _name.make(names, languageTags); - var ltagTable = (languageTags.length > 0 ? ltag.make(languageTags) : undefined); - - var postTable = post.make(); - var cffTable = cff.make(font.glyphs, { - version: font.getEnglishName('version'), - fullName: englishFullName, - familyName: englishFamilyName, - weightName: englishStyleName, - postScriptName: postScriptName, - unitsPerEm: font.unitsPerEm, - fontBBox: [0, globals.yMin, globals.ascender, globals.advanceWidthMax] - }); - - var metaTable = (font.metas && Object.keys(font.metas).length > 0) ? meta.make(font.metas) : undefined; - - // The order does not matter because makeSfntTable() will sort them. - var tables = [headTable, hheaTable, maxpTable, os2Table, nameTable, cmapTable, postTable, cffTable, hmtxTable]; - if (ltagTable) { - tables.push(ltagTable); - } - // Optional tables - if (font.tables.gsub) { - tables.push(gsub.make(font.tables.gsub)); - } - if (font.tables.cpal) { - tables.push(cpal.make(font.tables.cpal)); - } - if (font.tables.colr) { - tables.push(colr.make(font.tables.colr)); - } - if (metaTable) { - tables.push(metaTable); - } - - var sfntTable = makeSfntTable(tables); - - // Compute the font's checkSum and store it in head.checkSumAdjustment. - var bytes = sfntTable.encode(); - var checkSum = computeCheckSum(bytes); - var tableFields = sfntTable.fields; - var checkSumAdjusted = false; - for (var i$1 = 0; i$1 < tableFields.length; i$1 += 1) { - if (tableFields[i$1].name === 'head table') { - tableFields[i$1].value.checkSumAdjustment = 0xB1B0AFBA - checkSum; - checkSumAdjusted = true; - break; - } - } - - if (!checkSumAdjusted) { - throw new Error('Could not find head table with checkSum to adjust.'); - } - - return sfntTable; -} - -var sfnt = { make: makeSfntTable, fontToTable: fontToSfntTable, computeCheckSum: computeCheckSum }; - -// The Layout object is the prototype of Substitution objects, and provides - -function searchTag(arr, tag) { - /* jshint bitwise: false */ - var imin = 0; - var imax = arr.length - 1; - while (imin <= imax) { - var imid = (imin + imax) >>> 1; - var val = arr[imid].tag; - if (val === tag) { - return imid; - } else if (val < tag) { - imin = imid + 1; - } else { imax = imid - 1; } - } - // Not found: return -1-insertion point - return -imin - 1; -} - -function binSearch(arr, value) { - /* jshint bitwise: false */ - var imin = 0; - var imax = arr.length - 1; - while (imin <= imax) { - var imid = (imin + imax) >>> 1; - var val = arr[imid]; - if (val === value) { - return imid; - } else if (val < value) { - imin = imid + 1; - } else { imax = imid - 1; } - } - // Not found: return -1-insertion point - return -imin - 1; -} - -// binary search in a list of ranges (coverage, class definition) -function searchRange(ranges, value) { - // jshint bitwise: false - var range; - var imin = 0; - var imax = ranges.length - 1; - while (imin <= imax) { - var imid = (imin + imax) >>> 1; - range = ranges[imid]; - var start = range.start; - if (start === value) { - return range; - } else if (start < value) { - imin = imid + 1; - } else { imax = imid - 1; } - } - if (imin > 0) { - range = ranges[imin - 1]; - if (value > range.end) { return 0; } - return range; - } -} - -/** - * @exports opentype.Layout - * @class - */ -function Layout(font, tableName) { - this.font = font; - this.tableName = tableName; -} - -Layout.prototype = { - - /** - * Binary search an object by "tag" property - * @instance - * @function searchTag - * @memberof opentype.Layout - * @param {Array} arr - * @param {string} tag - * @return {number} - */ - searchTag: searchTag, - - /** - * Binary search in a list of numbers - * @instance - * @function binSearch - * @memberof opentype.Layout - * @param {Array} arr - * @param {number} value - * @return {number} - */ - binSearch: binSearch, - - /** - * Get or create the Layout table (GSUB, GPOS etc). - * @param {boolean} create - Whether to create a new one. - * @return {Object} The GSUB or GPOS table. - */ - getTable: function(create) { - var layout = this.font.tables[this.tableName]; - if (!layout && create) { - layout = this.font.tables[this.tableName] = this.createDefaultTable(); - } - return layout; - }, - - /** - * Returns all scripts in the substitution table. - * @instance - * @return {Array} - */ - getScriptNames: function() { - var layout = this.getTable(); - if (!layout) { return []; } - return layout.scripts.map(function(script) { - return script.tag; - }); - }, - - /** - * Returns the best bet for a script name. - * Returns 'DFLT' if it exists. - * If not, returns 'latn' if it exists. - * If neither exist, returns undefined. - */ - getDefaultScriptName: function() { - var layout = this.getTable(); - if (!layout) { return; } - var hasLatn = false; - for (var i = 0; i < layout.scripts.length; i++) { - var name = layout.scripts[i].tag; - if (name === 'DFLT') { return name; } - if (name === 'latn') { hasLatn = true; } - } - if (hasLatn) { return 'latn'; } - }, - - /** - * Returns all LangSysRecords in the given script. - * @instance - * @param {string} [script='DFLT'] - * @param {boolean} create - forces the creation of this script table if it doesn't exist. - * @return {Object} An object with tag and script properties. - */ - getScriptTable: function(script, create) { - var layout = this.getTable(create); - if (layout) { - script = script || 'DFLT'; - var scripts = layout.scripts; - var pos = searchTag(layout.scripts, script); - if (pos >= 0) { - return scripts[pos].script; - } else if (create) { - var scr = { - tag: script, - script: { - defaultLangSys: {reserved: 0, reqFeatureIndex: 0xffff, featureIndexes: []}, - langSysRecords: [] - } - }; - scripts.splice(-1 - pos, 0, scr); - return scr.script; - } - } - }, - - /** - * Returns a language system table - * @instance - * @param {string} [script='DFLT'] - * @param {string} [language='dlft'] - * @param {boolean} create - forces the creation of this langSysTable if it doesn't exist. - * @return {Object} - */ - getLangSysTable: function(script, language, create) { - var scriptTable = this.getScriptTable(script, create); - if (scriptTable) { - if (!language || language === 'dflt' || language === 'DFLT') { - return scriptTable.defaultLangSys; - } - var pos = searchTag(scriptTable.langSysRecords, language); - if (pos >= 0) { - return scriptTable.langSysRecords[pos].langSys; - } else if (create) { - var langSysRecord = { - tag: language, - langSys: {reserved: 0, reqFeatureIndex: 0xffff, featureIndexes: []} - }; - scriptTable.langSysRecords.splice(-1 - pos, 0, langSysRecord); - return langSysRecord.langSys; - } - } - }, - - /** - * Get a specific feature table. - * @instance - * @param {string} [script='DFLT'] - * @param {string} [language='dlft'] - * @param {string} feature - One of the codes listed at https://www.microsoft.com/typography/OTSPEC/featurelist.htm - * @param {boolean} create - forces the creation of the feature table if it doesn't exist. - * @return {Object} - */ - getFeatureTable: function(script, language, feature, create) { - var langSysTable = this.getLangSysTable(script, language, create); - if (langSysTable) { - var featureRecord; - var featIndexes = langSysTable.featureIndexes; - var allFeatures = this.font.tables[this.tableName].features; - // The FeatureIndex array of indices is in arbitrary order, - // even if allFeatures is sorted alphabetically by feature tag. - for (var i = 0; i < featIndexes.length; i++) { - featureRecord = allFeatures[featIndexes[i]]; - if (featureRecord.tag === feature) { - return featureRecord.feature; - } - } - if (create) { - var index = allFeatures.length; - // Automatic ordering of features would require to shift feature indexes in the script list. - check.assert(index === 0 || feature >= allFeatures[index - 1].tag, 'Features must be added in alphabetical order.'); - featureRecord = { - tag: feature, - feature: { params: 0, lookupListIndexes: [] } - }; - allFeatures.push(featureRecord); - featIndexes.push(index); - return featureRecord.feature; - } - } - }, - - /** - * Get the lookup tables of a given type for a script/language/feature. - * @instance - * @param {string} [script='DFLT'] - * @param {string} [language='dlft'] - * @param {string} feature - 4-letter feature code - * @param {number} lookupType - 1 to 9 - * @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables. - * @return {Object[]} - */ - getLookupTables: function(script, language, feature, lookupType, create) { - var featureTable = this.getFeatureTable(script, language, feature, create); - var tables = []; - if (featureTable) { - var lookupTable; - var lookupListIndexes = featureTable.lookupListIndexes; - var allLookups = this.font.tables[this.tableName].lookups; - // lookupListIndexes are in no particular order, so use naive search. - for (var i = 0; i < lookupListIndexes.length; i++) { - lookupTable = allLookups[lookupListIndexes[i]]; - if (lookupTable.lookupType === lookupType) { - tables.push(lookupTable); - } - } - if (tables.length === 0 && create) { - lookupTable = { - lookupType: lookupType, - lookupFlag: 0, - subtables: [], - markFilteringSet: undefined - }; - var index = allLookups.length; - allLookups.push(lookupTable); - lookupListIndexes.push(index); - return [lookupTable]; - } - } - return tables; - }, - - /** - * Find a glyph in a class definition table - * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table - * @param {object} classDefTable - an OpenType Layout class definition table - * @param {number} glyphIndex - the index of the glyph to find - * @returns {number} -1 if not found - */ - getGlyphClass: function(classDefTable, glyphIndex) { - switch (classDefTable.format) { - case 1: - if (classDefTable.startGlyph <= glyphIndex && glyphIndex < classDefTable.startGlyph + classDefTable.classes.length) { - return classDefTable.classes[glyphIndex - classDefTable.startGlyph]; - } - return 0; - case 2: - var range = searchRange(classDefTable.ranges, glyphIndex); - return range ? range.classId : 0; - } - }, - - /** - * Find a glyph in a coverage table - * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-table - * @param {object} coverageTable - an OpenType Layout coverage table - * @param {number} glyphIndex - the index of the glyph to find - * @returns {number} -1 if not found - */ - getCoverageIndex: function(coverageTable, glyphIndex) { - switch (coverageTable.format) { - case 1: - var index = binSearch(coverageTable.glyphs, glyphIndex); - return index >= 0 ? index : -1; - case 2: - var range = searchRange(coverageTable.ranges, glyphIndex); - return range ? range.index + glyphIndex - range.start : -1; - } - }, - - /** - * Returns the list of glyph indexes of a coverage table. - * Format 1: the list is stored raw - * Format 2: compact list as range records. - * @instance - * @param {Object} coverageTable - * @return {Array} - */ - expandCoverage: function(coverageTable) { - if (coverageTable.format === 1) { - return coverageTable.glyphs; - } else { - var glyphs = []; - var ranges = coverageTable.ranges; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var start = range.start; - var end = range.end; - for (var j = start; j <= end; j++) { - glyphs.push(j); - } - } - return glyphs; - } - } - -}; - -// The Position object provides utility methods to manipulate - -/** - * @exports opentype.Position - * @class - * @extends opentype.Layout - * @param {opentype.Font} - * @constructor - */ -function Position(font) { - Layout.call(this, font, 'gpos'); -} - -Position.prototype = Layout.prototype; - -/** - * Init some data for faster and easier access later. - */ -Position.prototype.init = function() { - var script = this.getDefaultScriptName(); - this.defaultKerningTables = this.getKerningTables(script); -}; - -/** - * Find a glyph pair in a list of lookup tables of type 2 and retrieve the xAdvance kerning value. - * - * @param {integer} leftIndex - left glyph index - * @param {integer} rightIndex - right glyph index - * @returns {integer} - */ -Position.prototype.getKerningValue = function(kerningLookups, leftIndex, rightIndex) { - for (var i = 0; i < kerningLookups.length; i++) { - var subtables = kerningLookups[i].subtables; - for (var j = 0; j < subtables.length; j++) { - var subtable = subtables[j]; - var covIndex = this.getCoverageIndex(subtable.coverage, leftIndex); - if (covIndex < 0) { continue; } - switch (subtable.posFormat) { - case 1: - // Search Pair Adjustment Positioning Format 1 - var pairSet = subtable.pairSets[covIndex]; - for (var k = 0; k < pairSet.length; k++) { - var pair = pairSet[k]; - if (pair.secondGlyph === rightIndex) { - return pair.value1 && pair.value1.xAdvance || 0; - } - } - break; // left glyph found, not right glyph - try next subtable - case 2: - // Search Pair Adjustment Positioning Format 2 - var class1 = this.getGlyphClass(subtable.classDef1, leftIndex); - var class2 = this.getGlyphClass(subtable.classDef2, rightIndex); - var pair$1 = subtable.classRecords[class1][class2]; - return pair$1.value1 && pair$1.value1.xAdvance || 0; - } - } - } - return 0; -}; - -/** - * List all kerning lookup tables. - * - * @param {string} [script='DFLT'] - use font.position.getDefaultScriptName() for a better default value - * @param {string} [language='dflt'] - * @return {object[]} The list of kerning lookup tables (may be empty), or undefined if there is no GPOS table (and we should use the kern table) - */ -Position.prototype.getKerningTables = function(script, language) { - if (this.font.tables.gpos) { - return this.getLookupTables(script, language, 'kern', 2); - } -}; - -// The Substitution object provides utility methods to manipulate - -/** - * @exports opentype.Substitution - * @class - * @extends opentype.Layout - * @param {opentype.Font} - * @constructor - */ -function Substitution(font) { - Layout.call(this, font, 'gsub'); -} - -// Check if 2 arrays of primitives are equal. -function arraysEqual(ar1, ar2) { - var n = ar1.length; - if (n !== ar2.length) { return false; } - for (var i = 0; i < n; i++) { - if (ar1[i] !== ar2[i]) { return false; } - } - return true; -} - -// Find the first subtable of a lookup table in a particular format. -function getSubstFormat(lookupTable, format, defaultSubtable) { - var subtables = lookupTable.subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - if (subtable.substFormat === format) { - return subtable; - } - } - if (defaultSubtable) { - subtables.push(defaultSubtable); - return defaultSubtable; - } - return undefined; -} - -Substitution.prototype = Layout.prototype; - -/** - * Create a default GSUB table. - * @return {Object} gsub - The GSUB table. - */ -Substitution.prototype.createDefaultTable = function() { - // Generate a default empty GSUB table with just a DFLT script and dflt lang sys. - return { - version: 1, - scripts: [{ - tag: 'DFLT', - script: { - defaultLangSys: { reserved: 0, reqFeatureIndex: 0xffff, featureIndexes: [] }, - langSysRecords: [] - } - }], - features: [], - lookups: [] - }; -}; - -/** - * List all single substitutions (lookup type 1) for a given script, language, and feature. - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - * @param {string} feature - 4-character feature name ('aalt', 'salt', 'ss01'...) - * @return {Array} substitutions - The list of substitutions. - */ -Substitution.prototype.getSingle = function(feature, script, language) { - var substitutions = []; - var lookupTables = this.getLookupTables(script, language, feature, 1); - for (var idx = 0; idx < lookupTables.length; idx++) { - var subtables = lookupTables[idx].subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - var glyphs = this.expandCoverage(subtable.coverage); - var j = (void 0); - if (subtable.substFormat === 1) { - var delta = subtable.deltaGlyphId; - for (j = 0; j < glyphs.length; j++) { - var glyph = glyphs[j]; - substitutions.push({ sub: glyph, by: glyph + delta }); - } - } else { - var substitute = subtable.substitute; - for (j = 0; j < glyphs.length; j++) { - substitutions.push({ sub: glyphs[j], by: substitute[j] }); - } - } - } - } - return substitutions; -}; - -/** - * List all multiple substitutions (lookup type 2) for a given script, language, and feature. - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - * @param {string} feature - 4-character feature name ('ccmp', 'stch') - * @return {Array} substitutions - The list of substitutions. - */ -Substitution.prototype.getMultiple = function(feature, script, language) { - var substitutions = []; - var lookupTables = this.getLookupTables(script, language, feature, 2); - for (var idx = 0; idx < lookupTables.length; idx++) { - var subtables = lookupTables[idx].subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - var glyphs = this.expandCoverage(subtable.coverage); - var j = (void 0); - - for (j = 0; j < glyphs.length; j++) { - var glyph = glyphs[j]; - var replacements = subtable.sequences[j]; - substitutions.push({ sub: glyph, by: replacements }); - } - } - } - return substitutions; -}; - -/** - * List all alternates (lookup type 3) for a given script, language, and feature. - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - * @param {string} feature - 4-character feature name ('aalt', 'salt'...) - * @return {Array} alternates - The list of alternates - */ -Substitution.prototype.getAlternates = function(feature, script, language) { - var alternates = []; - var lookupTables = this.getLookupTables(script, language, feature, 3); - for (var idx = 0; idx < lookupTables.length; idx++) { - var subtables = lookupTables[idx].subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - var glyphs = this.expandCoverage(subtable.coverage); - var alternateSets = subtable.alternateSets; - for (var j = 0; j < glyphs.length; j++) { - alternates.push({ sub: glyphs[j], by: alternateSets[j] }); - } - } - } - return alternates; -}; - -/** - * List all ligatures (lookup type 4) for a given script, language, and feature. - * The result is an array of ligature objects like { sub: [ids], by: id } - * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...) - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - * @return {Array} ligatures - The list of ligatures. - */ -Substitution.prototype.getLigatures = function(feature, script, language) { - var ligatures = []; - var lookupTables = this.getLookupTables(script, language, feature, 4); - for (var idx = 0; idx < lookupTables.length; idx++) { - var subtables = lookupTables[idx].subtables; - for (var i = 0; i < subtables.length; i++) { - var subtable = subtables[i]; - var glyphs = this.expandCoverage(subtable.coverage); - var ligatureSets = subtable.ligatureSets; - for (var j = 0; j < glyphs.length; j++) { - var startGlyph = glyphs[j]; - var ligSet = ligatureSets[j]; - for (var k = 0; k < ligSet.length; k++) { - var lig = ligSet[k]; - ligatures.push({ - sub: [startGlyph].concat(lig.components), - by: lig.ligGlyph - }); - } - } - } - } - return ligatures; -}; - -/** - * Add or modify a single substitution (lookup type 1) - * Format 2, more flexible, is always used. - * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...) - * @param {Object} substitution - { sub: id, by: id } (format 1 is not supported) - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - */ -Substitution.prototype.addSingle = function(feature, substitution, script, language) { - var lookupTable = this.getLookupTables(script, language, feature, 1, true)[0]; - var subtable = getSubstFormat(lookupTable, 2, { // lookup type 1 subtable, format 2, coverage format 1 - substFormat: 2, - coverage: {format: 1, glyphs: []}, - substitute: [] - }); - check.assert(subtable.coverage.format === 1, 'Single: unable to modify coverage table format ' + subtable.coverage.format); - var coverageGlyph = substitution.sub; - var pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph); - if (pos < 0) { - pos = -1 - pos; - subtable.coverage.glyphs.splice(pos, 0, coverageGlyph); - subtable.substitute.splice(pos, 0, 0); - } - subtable.substitute[pos] = substitution.by; -}; - -/** - * Add or modify a multiple substitution (lookup type 2) - * @param {string} feature - 4-letter feature name ('ccmp', 'stch') - * @param {Object} substitution - { sub: id, by: [id] } for format 2. - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - */ -Substitution.prototype.addMultiple = function(feature, substitution, script, language) { - check.assert(substitution.by instanceof Array && substitution.by.length > 1, 'Multiple: "by" must be an array of two or more ids'); - var lookupTable = this.getLookupTables(script, language, feature, 2, true)[0]; - var subtable = getSubstFormat(lookupTable, 1, { // lookup type 2 subtable, format 1, coverage format 1 - substFormat: 1, - coverage: {format: 1, glyphs: []}, - sequences: [] - }); - check.assert(subtable.coverage.format === 1, 'Multiple: unable to modify coverage table format ' + subtable.coverage.format); - var coverageGlyph = substitution.sub; - var pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph); - if (pos < 0) { - pos = -1 - pos; - subtable.coverage.glyphs.splice(pos, 0, coverageGlyph); - subtable.sequences.splice(pos, 0, 0); - } - subtable.sequences[pos] = substitution.by; -}; - -/** - * Add or modify an alternate substitution (lookup type 3) - * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...) - * @param {Object} substitution - { sub: id, by: [ids] } - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - */ -Substitution.prototype.addAlternate = function(feature, substitution, script, language) { - var lookupTable = this.getLookupTables(script, language, feature, 3, true)[0]; - var subtable = getSubstFormat(lookupTable, 1, { // lookup type 3 subtable, format 1, coverage format 1 - substFormat: 1, - coverage: {format: 1, glyphs: []}, - alternateSets: [] - }); - check.assert(subtable.coverage.format === 1, 'Alternate: unable to modify coverage table format ' + subtable.coverage.format); - var coverageGlyph = substitution.sub; - var pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph); - if (pos < 0) { - pos = -1 - pos; - subtable.coverage.glyphs.splice(pos, 0, coverageGlyph); - subtable.alternateSets.splice(pos, 0, 0); - } - subtable.alternateSets[pos] = substitution.by; -}; - -/** - * Add a ligature (lookup type 4) - * Ligatures with more components must be stored ahead of those with fewer components in order to be found - * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...) - * @param {Object} ligature - { sub: [ids], by: id } - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - */ -Substitution.prototype.addLigature = function(feature, ligature, script, language) { - var lookupTable = this.getLookupTables(script, language, feature, 4, true)[0]; - var subtable = lookupTable.subtables[0]; - if (!subtable) { - subtable = { // lookup type 4 subtable, format 1, coverage format 1 - substFormat: 1, - coverage: { format: 1, glyphs: [] }, - ligatureSets: [] - }; - lookupTable.subtables[0] = subtable; - } - check.assert(subtable.coverage.format === 1, 'Ligature: unable to modify coverage table format ' + subtable.coverage.format); - var coverageGlyph = ligature.sub[0]; - var ligComponents = ligature.sub.slice(1); - var ligatureTable = { - ligGlyph: ligature.by, - components: ligComponents - }; - var pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph); - if (pos >= 0) { - // ligatureSet already exists - var ligatureSet = subtable.ligatureSets[pos]; - for (var i = 0; i < ligatureSet.length; i++) { - // If ligature already exists, return. - if (arraysEqual(ligatureSet[i].components, ligComponents)) { - return; - } - } - // ligature does not exist: add it. - ligatureSet.push(ligatureTable); - } else { - // Create a new ligatureSet and add coverage for the first glyph. - pos = -1 - pos; - subtable.coverage.glyphs.splice(pos, 0, coverageGlyph); - subtable.ligatureSets.splice(pos, 0, [ligatureTable]); - } -}; - -/** - * List all feature data for a given script and language. - * @param {string} feature - 4-letter feature name - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - * @return {Array} substitutions - The list of substitutions. - */ -Substitution.prototype.getFeature = function(feature, script, language) { - if (/ss\d\d/.test(feature)) { - // ss01 - ss20 - return this.getSingle(feature, script, language); - } - switch (feature) { - case 'aalt': - case 'salt': - return this.getSingle(feature, script, language) - .concat(this.getAlternates(feature, script, language)); - case 'dlig': - case 'liga': - case 'rlig': - return this.getLigatures(feature, script, language); - case 'ccmp': - return this.getMultiple(feature, script, language) - .concat(this.getLigatures(feature, script, language)); - case 'stch': - return this.getMultiple(feature, script, language); - } - return undefined; -}; - -/** - * Add a substitution to a feature for a given script and language. - * @param {string} feature - 4-letter feature name - * @param {Object} sub - the substitution to add (an object like { sub: id or [ids], by: id or [ids] }) - * @param {string} [script='DFLT'] - * @param {string} [language='dflt'] - */ -Substitution.prototype.add = function(feature, sub, script, language) { - if (/ss\d\d/.test(feature)) { - // ss01 - ss20 - return this.addSingle(feature, sub, script, language); - } - switch (feature) { - case 'aalt': - case 'salt': - if (typeof sub.by === 'number') { - return this.addSingle(feature, sub, script, language); - } - return this.addAlternate(feature, sub, script, language); - case 'dlig': - case 'liga': - case 'rlig': - return this.addLigature(feature, sub, script, language); - case 'ccmp': - if (sub.by instanceof Array) { - return this.addMultiple(feature, sub, script, language); - } - return this.addLigature(feature, sub, script, language); - } - return undefined; -}; - -function checkArgument(expression, message) { - if (!expression) { - throw message; - } -} - -// The `glyf` table describes the glyphs in TrueType outline format. - -// Parse the coordinate data for a glyph. -function parseGlyphCoordinate(p, flag, previousValue, shortVectorBitMask, sameBitMask) { - var v; - if ((flag & shortVectorBitMask) > 0) { - // The coordinate is 1 byte long. - v = p.parseByte(); - // The `same` bit is re-used for short values to signify the sign of the value. - if ((flag & sameBitMask) === 0) { - v = -v; - } - - v = previousValue + v; - } else { - // The coordinate is 2 bytes long. - // If the `same` bit is set, the coordinate is the same as the previous coordinate. - if ((flag & sameBitMask) > 0) { - v = previousValue; - } else { - // Parse the coordinate as a signed 16-bit delta value. - v = previousValue + p.parseShort(); - } - } - - return v; -} - -// Parse a TrueType glyph. -function parseGlyph(glyph, data, start) { - var p = new parse.Parser(data, start); - glyph.numberOfContours = p.parseShort(); - glyph._xMin = p.parseShort(); - glyph._yMin = p.parseShort(); - glyph._xMax = p.parseShort(); - glyph._yMax = p.parseShort(); - var flags; - var flag; - - if (glyph.numberOfContours > 0) { - // This glyph is not a composite. - var endPointIndices = glyph.endPointIndices = []; - for (var i = 0; i < glyph.numberOfContours; i += 1) { - endPointIndices.push(p.parseUShort()); - } - - glyph.instructionLength = p.parseUShort(); - glyph.instructions = []; - for (var i$1 = 0; i$1 < glyph.instructionLength; i$1 += 1) { - glyph.instructions.push(p.parseByte()); - } - - var numberOfCoordinates = endPointIndices[endPointIndices.length - 1] + 1; - flags = []; - for (var i$2 = 0; i$2 < numberOfCoordinates; i$2 += 1) { - flag = p.parseByte(); - flags.push(flag); - // If bit 3 is set, we repeat this flag n times, where n is the next byte. - if ((flag & 8) > 0) { - var repeatCount = p.parseByte(); - for (var j = 0; j < repeatCount; j += 1) { - flags.push(flag); - i$2 += 1; - } - } - } - - check.argument(flags.length === numberOfCoordinates, 'Bad flags.'); - - if (endPointIndices.length > 0) { - var points = []; - var point; - // X/Y coordinates are relative to the previous point, except for the first point which is relative to 0,0. - if (numberOfCoordinates > 0) { - for (var i$3 = 0; i$3 < numberOfCoordinates; i$3 += 1) { - flag = flags[i$3]; - point = {}; - point.onCurve = !!(flag & 1); - point.lastPointOfContour = endPointIndices.indexOf(i$3) >= 0; - points.push(point); - } - - var px = 0; - for (var i$4 = 0; i$4 < numberOfCoordinates; i$4 += 1) { - flag = flags[i$4]; - point = points[i$4]; - point.x = parseGlyphCoordinate(p, flag, px, 2, 16); - px = point.x; - } - - var py = 0; - for (var i$5 = 0; i$5 < numberOfCoordinates; i$5 += 1) { - flag = flags[i$5]; - point = points[i$5]; - point.y = parseGlyphCoordinate(p, flag, py, 4, 32); - py = point.y; - } - } - - glyph.points = points; - } else { - glyph.points = []; - } - } else if (glyph.numberOfContours === 0) { - glyph.points = []; - } else { - glyph.isComposite = true; - glyph.points = []; - glyph.components = []; - var moreComponents = true; - while (moreComponents) { - flags = p.parseUShort(); - var component = { - glyphIndex: p.parseUShort(), - xScale: 1, - scale01: 0, - scale10: 0, - yScale: 1, - dx: 0, - dy: 0 - }; - if ((flags & 1) > 0) { - // The arguments are words - if ((flags & 2) > 0) { - // values are offset - component.dx = p.parseShort(); - component.dy = p.parseShort(); - } else { - // values are matched points - component.matchedPoints = [p.parseUShort(), p.parseUShort()]; - } - - } else { - // The arguments are bytes - if ((flags & 2) > 0) { - // values are offset - component.dx = p.parseChar(); - component.dy = p.parseChar(); - } else { - // values are matched points - component.matchedPoints = [p.parseByte(), p.parseByte()]; - } - } - - if ((flags & 8) > 0) { - // We have a scale - component.xScale = component.yScale = p.parseF2Dot14(); - } else if ((flags & 64) > 0) { - // We have an X / Y scale - component.xScale = p.parseF2Dot14(); - component.yScale = p.parseF2Dot14(); - } else if ((flags & 128) > 0) { - // We have a 2x2 transformation - component.xScale = p.parseF2Dot14(); - component.scale01 = p.parseF2Dot14(); - component.scale10 = p.parseF2Dot14(); - component.yScale = p.parseF2Dot14(); - } - - glyph.components.push(component); - moreComponents = !!(flags & 32); - } - if (flags & 0x100) { - // We have instructions - glyph.instructionLength = p.parseUShort(); - glyph.instructions = []; - for (var i$6 = 0; i$6 < glyph.instructionLength; i$6 += 1) { - glyph.instructions.push(p.parseByte()); - } - } - } -} - -// Transform an array of points and return a new array. -function transformPoints(points, transform) { - var newPoints = []; - for (var i = 0; i < points.length; i += 1) { - var pt = points[i]; - var newPt = { - x: transform.xScale * pt.x + transform.scale01 * pt.y + transform.dx, - y: transform.scale10 * pt.x + transform.yScale * pt.y + transform.dy, - onCurve: pt.onCurve, - lastPointOfContour: pt.lastPointOfContour - }; - newPoints.push(newPt); - } - - return newPoints; -} - -function getContours(points) { - var contours = []; - var currentContour = []; - for (var i = 0; i < points.length; i += 1) { - var pt = points[i]; - currentContour.push(pt); - if (pt.lastPointOfContour) { - contours.push(currentContour); - currentContour = []; - } - } - - check.argument(currentContour.length === 0, 'There are still points left in the current contour.'); - return contours; -} - -// Convert the TrueType glyph outline to a Path. -function getPath(points) { - var p = new Path(); - if (!points) { - return p; - } - - var contours = getContours(points); - - for (var contourIndex = 0; contourIndex < contours.length; ++contourIndex) { - var contour = contours[contourIndex]; - - var prev = null; - var curr = contour[contour.length - 1]; - var next = contour[0]; - - if (curr.onCurve) { - p.moveTo(curr.x, curr.y); - } else { - if (next.onCurve) { - p.moveTo(next.x, next.y); - } else { - // If both first and last points are off-curve, start at their middle. - var start = {x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5}; - p.moveTo(start.x, start.y); - } - } - - for (var i = 0; i < contour.length; ++i) { - prev = curr; - curr = next; - next = contour[(i + 1) % contour.length]; - - if (curr.onCurve) { - // This is a straight line. - p.lineTo(curr.x, curr.y); - } else { - var prev2 = prev; - var next2 = next; - - if (!prev.onCurve) { - prev2 = { x: (curr.x + prev.x) * 0.5, y: (curr.y + prev.y) * 0.5 }; - } - - if (!next.onCurve) { - next2 = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 }; - } - - p.quadraticCurveTo(curr.x, curr.y, next2.x, next2.y); - } - } - - p.closePath(); - } - return p; -} - -function buildPath(glyphs, glyph) { - if (glyph.isComposite) { - for (var j = 0; j < glyph.components.length; j += 1) { - var component = glyph.components[j]; - var componentGlyph = glyphs.get(component.glyphIndex); - // Force the ttfGlyphLoader to parse the glyph. - componentGlyph.getPath(); - if (componentGlyph.points) { - var transformedPoints = (void 0); - if (component.matchedPoints === undefined) { - // component positioned by offset - transformedPoints = transformPoints(componentGlyph.points, component); - } else { - // component positioned by matched points - if ((component.matchedPoints[0] > glyph.points.length - 1) || - (component.matchedPoints[1] > componentGlyph.points.length - 1)) { - throw Error('Matched points out of range in ' + glyph.name); - } - var firstPt = glyph.points[component.matchedPoints[0]]; - var secondPt = componentGlyph.points[component.matchedPoints[1]]; - var transform = { - xScale: component.xScale, scale01: component.scale01, - scale10: component.scale10, yScale: component.yScale, - dx: 0, dy: 0 - }; - secondPt = transformPoints([secondPt], transform)[0]; - transform.dx = firstPt.x - secondPt.x; - transform.dy = firstPt.y - secondPt.y; - transformedPoints = transformPoints(componentGlyph.points, transform); - } - glyph.points = glyph.points.concat(transformedPoints); - } - } - } - - return getPath(glyph.points); -} - -function parseGlyfTableAll(data, start, loca, font) { - var glyphs = new glyphset.GlyphSet(font); - - // The last element of the loca table is invalid. - for (var i = 0; i < loca.length - 1; i += 1) { - var offset = loca[i]; - var nextOffset = loca[i + 1]; - if (offset !== nextOffset) { - glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath)); - } else { - glyphs.push(i, glyphset.glyphLoader(font, i)); - } - } - - return glyphs; -} - -function parseGlyfTableOnLowMemory(data, start, loca, font) { - var glyphs = new glyphset.GlyphSet(font); - - font._push = function(i) { - var offset = loca[i]; - var nextOffset = loca[i + 1]; - if (offset !== nextOffset) { - glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath)); - } else { - glyphs.push(i, glyphset.glyphLoader(font, i)); - } - }; - - return glyphs; -} - -// Parse all the glyphs according to the offsets from the `loca` table. -function parseGlyfTable(data, start, loca, font, opt) { - if (opt.lowMemory) - { return parseGlyfTableOnLowMemory(data, start, loca, font); } - else - { return parseGlyfTableAll(data, start, loca, font); } -} - -var glyf = { getPath: getPath, parse: parseGlyfTable}; - -/* A TrueType font hinting interpreter. -* -* (c) 2017 Axel Kittenberger -* -* This interpreter has been implemented according to this documentation: -* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html -* -* According to the documentation F24DOT6 values are used for pixels. -* That means calculation is 1/64 pixel accurate and uses integer operations. -* However, Javascript has floating point operations by default and only -* those are available. One could make a case to simulate the 1/64 accuracy -* exactly by truncating after every division operation -* (for example with << 0) to get pixel exactly results as other TrueType -* implementations. It may make sense since some fonts are pixel optimized -* by hand using DELTAP instructions. The current implementation doesn't -* and rather uses full floating point precision. -* -* xScale, yScale and rotation is currently ignored. -* -* A few non-trivial instructions are missing as I didn't encounter yet -* a font that used them to test a possible implementation. -* -* Some fonts seem to use undocumented features regarding the twilight zone. -* Only some of them are implemented as they were encountered. -* -* The exports.DEBUG statements are removed on the minified distribution file. -*/ - -var instructionTable; -var exec; -var execGlyph; -var execComponent; - -/* -* Creates a hinting object. -* -* There ought to be exactly one -* for each truetype font that is used for hinting. -*/ -function Hinting(font) { - // the font this hinting object is for - this.font = font; - - this.getCommands = function (hPoints) { - return glyf.getPath(hPoints).commands; - }; - - // cached states - this._fpgmState = - this._prepState = - undefined; - - // errorState - // 0 ... all okay - // 1 ... had an error in a glyf, - // continue working but stop spamming - // the console - // 2 ... error at prep, stop hinting at this ppem - // 3 ... error at fpeg, stop hinting for this font at all - this._errorState = 0; -} - -/* -* Not rounding. -*/ -function roundOff(v) { - return v; -} - -/* -* Rounding to grid. -*/ -function roundToGrid(v) { - //Rounding in TT is supposed to "symmetrical around zero" - return Math.sign(v) * Math.round(Math.abs(v)); -} - -/* -* Rounding to double grid. -*/ -function roundToDoubleGrid(v) { - return Math.sign(v) * Math.round(Math.abs(v * 2)) / 2; -} - -/* -* Rounding to half grid. -*/ -function roundToHalfGrid(v) { - return Math.sign(v) * (Math.round(Math.abs(v) + 0.5) - 0.5); -} - -/* -* Rounding to up to grid. -*/ -function roundUpToGrid(v) { - return Math.sign(v) * Math.ceil(Math.abs(v)); -} - -/* -* Rounding to down to grid. -*/ -function roundDownToGrid(v) { - return Math.sign(v) * Math.floor(Math.abs(v)); -} - -/* -* Super rounding. -*/ -var roundSuper = function (v) { - var period = this.srPeriod; - var phase = this.srPhase; - var threshold = this.srThreshold; - var sign = 1; - - if (v < 0) { - v = -v; - sign = -1; - } - - v += threshold - phase; - - v = Math.trunc(v / period) * period; - - v += phase; - - // according to http://xgridfit.sourceforge.net/round.html - if (v < 0) { return phase * sign; } - - return v * sign; -}; - -/* -* Unit vector of x-axis. -*/ -var xUnitVector = { - x: 1, - - y: 0, - - axis: 'x', - - // Gets the projected distance between two points. - // o1/o2 ... if true, respective original position is used. - distance: function (p1, p2, o1, o2) { - return (o1 ? p1.xo : p1.x) - (o2 ? p2.xo : p2.x); - }, - - // Moves point p so the moved position has the same relative - // position to the moved positions of rp1 and rp2 than the - // original positions had. - // - // See APPENDIX on INTERPOLATE at the bottom of this file. - interpolate: function (p, rp1, rp2, pv) { - var do1; - var do2; - var doa1; - var doa2; - var dm1; - var dm2; - var dt; - - if (!pv || pv === this) { - do1 = p.xo - rp1.xo; - do2 = p.xo - rp2.xo; - dm1 = rp1.x - rp1.xo; - dm2 = rp2.x - rp2.xo; - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt = doa1 + doa2; - - if (dt === 0) { - p.x = p.xo + (dm1 + dm2) / 2; - return; - } - - p.x = p.xo + (dm1 * doa2 + dm2 * doa1) / dt; - return; - } - - do1 = pv.distance(p, rp1, true, true); - do2 = pv.distance(p, rp2, true, true); - dm1 = pv.distance(rp1, rp1, false, true); - dm2 = pv.distance(rp2, rp2, false, true); - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt = doa1 + doa2; - - if (dt === 0) { - xUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true); - return; - } - - xUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true); - }, - - // Slope of line normal to this - normalSlope: Number.NEGATIVE_INFINITY, - - // Sets the point 'p' relative to point 'rp' - // by the distance 'd'. - // - // See APPENDIX on SETRELATIVE at the bottom of this file. - // - // p ... point to set - // rp ... reference point - // d ... distance on projection vector - // pv ... projection vector (undefined = this) - // org ... if true, uses the original position of rp as reference. - setRelative: function (p, rp, d, pv, org) { - if (!pv || pv === this) { - p.x = (org ? rp.xo : rp.x) + d; - return; - } - - var rpx = org ? rp.xo : rp.x; - var rpy = org ? rp.yo : rp.y; - var rpdx = rpx + d * pv.x; - var rpdy = rpy + d * pv.y; - - p.x = rpdx + (p.y - rpdy) / pv.normalSlope; - }, - - // Slope of vector line. - slope: 0, - - // Touches the point p. - touch: function (p) { - p.xTouched = true; - }, - - // Tests if a point p is touched. - touched: function (p) { - return p.xTouched; - }, - - // Untouches the point p. - untouch: function (p) { - p.xTouched = false; - } -}; - -/* -* Unit vector of y-axis. -*/ -var yUnitVector = { - x: 0, - - y: 1, - - axis: 'y', - - // Gets the projected distance between two points. - // o1/o2 ... if true, respective original position is used. - distance: function (p1, p2, o1, o2) { - return (o1 ? p1.yo : p1.y) - (o2 ? p2.yo : p2.y); - }, - - // Moves point p so the moved position has the same relative - // position to the moved positions of rp1 and rp2 than the - // original positions had. - // - // See APPENDIX on INTERPOLATE at the bottom of this file. - interpolate: function (p, rp1, rp2, pv) { - var do1; - var do2; - var doa1; - var doa2; - var dm1; - var dm2; - var dt; - - if (!pv || pv === this) { - do1 = p.yo - rp1.yo; - do2 = p.yo - rp2.yo; - dm1 = rp1.y - rp1.yo; - dm2 = rp2.y - rp2.yo; - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt = doa1 + doa2; - - if (dt === 0) { - p.y = p.yo + (dm1 + dm2) / 2; - return; - } - - p.y = p.yo + (dm1 * doa2 + dm2 * doa1) / dt; - return; - } - - do1 = pv.distance(p, rp1, true, true); - do2 = pv.distance(p, rp2, true, true); - dm1 = pv.distance(rp1, rp1, false, true); - dm2 = pv.distance(rp2, rp2, false, true); - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt = doa1 + doa2; - - if (dt === 0) { - yUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true); - return; - } - - yUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true); - }, - - // Slope of line normal to this. - normalSlope: 0, - - // Sets the point 'p' relative to point 'rp' - // by the distance 'd' - // - // See APPENDIX on SETRELATIVE at the bottom of this file. - // - // p ... point to set - // rp ... reference point - // d ... distance on projection vector - // pv ... projection vector (undefined = this) - // org ... if true, uses the original position of rp as reference. - setRelative: function (p, rp, d, pv, org) { - if (!pv || pv === this) { - p.y = (org ? rp.yo : rp.y) + d; - return; - } - - var rpx = org ? rp.xo : rp.x; - var rpy = org ? rp.yo : rp.y; - var rpdx = rpx + d * pv.x; - var rpdy = rpy + d * pv.y; - - p.y = rpdy + pv.normalSlope * (p.x - rpdx); - }, - - // Slope of vector line. - slope: Number.POSITIVE_INFINITY, - - // Touches the point p. - touch: function (p) { - p.yTouched = true; - }, - - // Tests if a point p is touched. - touched: function (p) { - return p.yTouched; - }, - - // Untouches the point p. - untouch: function (p) { - p.yTouched = false; - } -}; - -Object.freeze(xUnitVector); -Object.freeze(yUnitVector); - -/* -* Creates a unit vector that is not x- or y-axis. -*/ -function UnitVector(x, y) { - this.x = x; - this.y = y; - this.axis = undefined; - this.slope = y / x; - this.normalSlope = -x / y; - Object.freeze(this); -} - -/* -* Gets the projected distance between two points. -* o1/o2 ... if true, respective original position is used. -*/ -UnitVector.prototype.distance = function(p1, p2, o1, o2) { - return ( - this.x * xUnitVector.distance(p1, p2, o1, o2) + - this.y * yUnitVector.distance(p1, p2, o1, o2) - ); -}; - -/* -* Moves point p so the moved position has the same relative -* position to the moved positions of rp1 and rp2 than the -* original positions had. -* -* See APPENDIX on INTERPOLATE at the bottom of this file. -*/ -UnitVector.prototype.interpolate = function(p, rp1, rp2, pv) { - var dm1; - var dm2; - var do1; - var do2; - var doa1; - var doa2; - var dt; - - do1 = pv.distance(p, rp1, true, true); - do2 = pv.distance(p, rp2, true, true); - dm1 = pv.distance(rp1, rp1, false, true); - dm2 = pv.distance(rp2, rp2, false, true); - doa1 = Math.abs(do1); - doa2 = Math.abs(do2); - dt = doa1 + doa2; - - if (dt === 0) { - this.setRelative(p, p, (dm1 + dm2) / 2, pv, true); - return; - } - - this.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true); -}; - -/* -* Sets the point 'p' relative to point 'rp' -* by the distance 'd' -* -* See APPENDIX on SETRELATIVE at the bottom of this file. -* -* p ... point to set -* rp ... reference point -* d ... distance on projection vector -* pv ... projection vector (undefined = this) -* org ... if true, uses the original position of rp as reference. -*/ -UnitVector.prototype.setRelative = function(p, rp, d, pv, org) { - pv = pv || this; - - var rpx = org ? rp.xo : rp.x; - var rpy = org ? rp.yo : rp.y; - var rpdx = rpx + d * pv.x; - var rpdy = rpy + d * pv.y; - - var pvns = pv.normalSlope; - var fvs = this.slope; - - var px = p.x; - var py = p.y; - - p.x = (fvs * px - pvns * rpdx + rpdy - py) / (fvs - pvns); - p.y = fvs * (p.x - px) + py; -}; - -/* -* Touches the point p. -*/ -UnitVector.prototype.touch = function(p) { - p.xTouched = true; - p.yTouched = true; -}; - -/* -* Returns a unit vector with x/y coordinates. -*/ -function getUnitVector(x, y) { - var d = Math.sqrt(x * x + y * y); - - x /= d; - y /= d; - - if (x === 1 && y === 0) { return xUnitVector; } - else if (x === 0 && y === 1) { return yUnitVector; } - else { return new UnitVector(x, y); } -} - -/* -* Creates a point in the hinting engine. -*/ -function HPoint( - x, - y, - lastPointOfContour, - onCurve -) { - this.x = this.xo = Math.round(x * 64) / 64; // hinted x value and original x-value - this.y = this.yo = Math.round(y * 64) / 64; // hinted y value and original y-value - - this.lastPointOfContour = lastPointOfContour; - this.onCurve = onCurve; - this.prevPointOnContour = undefined; - this.nextPointOnContour = undefined; - this.xTouched = false; - this.yTouched = false; - - Object.preventExtensions(this); -} - -/* -* Returns the next touched point on the contour. -* -* v ... unit vector to test touch axis. -*/ -HPoint.prototype.nextTouched = function(v) { - var p = this.nextPointOnContour; - - while (!v.touched(p) && p !== this) { p = p.nextPointOnContour; } - - return p; -}; - -/* -* Returns the previous touched point on the contour -* -* v ... unit vector to test touch axis. -*/ -HPoint.prototype.prevTouched = function(v) { - var p = this.prevPointOnContour; - - while (!v.touched(p) && p !== this) { p = p.prevPointOnContour; } - - return p; -}; - -/* -* The zero point. -*/ -var HPZero = Object.freeze(new HPoint(0, 0)); - -/* -* The default state of the interpreter. -* -* Note: Freezing the defaultState and then deriving from it -* makes the V8 Javascript engine going awkward, -* so this is avoided, albeit the defaultState shouldn't -* ever change. -*/ -var defaultState = { - cvCutIn: 17 / 16, // control value cut in - deltaBase: 9, - deltaShift: 0.125, - loop: 1, // loops some instructions - minDis: 1, // minimum distance - autoFlip: true -}; - -/* -* The current state of the interpreter. -* -* env ... 'fpgm' or 'prep' or 'glyf' -* prog ... the program -*/ -function State(env, prog) { - this.env = env; - this.stack = []; - this.prog = prog; - - switch (env) { - case 'glyf' : - this.zp0 = this.zp1 = this.zp2 = 1; - this.rp0 = this.rp1 = this.rp2 = 0; - /* fall through */ - case 'prep' : - this.fv = this.pv = this.dpv = xUnitVector; - this.round = roundToGrid; - } -} - -/* -* Executes a glyph program. -* -* This does the hinting for each glyph. -* -* Returns an array of moved points. -* -* glyph: the glyph to hint -* ppem: the size the glyph is rendered for -*/ -Hinting.prototype.exec = function(glyph, ppem) { - if (typeof ppem !== 'number') { - throw new Error('Point size is not a number!'); - } - - // Received a fatal error, don't do any hinting anymore. - if (this._errorState > 2) { return; } - - var font = this.font; - var prepState = this._prepState; - - if (!prepState || prepState.ppem !== ppem) { - var fpgmState = this._fpgmState; - - if (!fpgmState) { - // Executes the fpgm state. - // This is used by fonts to define functions. - State.prototype = defaultState; - - fpgmState = - this._fpgmState = - new State('fpgm', font.tables.fpgm); - - fpgmState.funcs = [ ]; - fpgmState.font = font; - - if (exports.DEBUG) { - console.log('---EXEC FPGM---'); - fpgmState.step = -1; - } - - try { - exec(fpgmState); - } catch (e) { - console.log('Hinting error in FPGM:' + e); - this._errorState = 3; - return; - } - } - - // Executes the prep program for this ppem setting. - // This is used by fonts to set cvt values - // depending on to be rendered font size. - - State.prototype = fpgmState; - prepState = - this._prepState = - new State('prep', font.tables.prep); - - prepState.ppem = ppem; - - // Creates a copy of the cvt table - // and scales it to the current ppem setting. - var oCvt = font.tables.cvt; - if (oCvt) { - var cvt = prepState.cvt = new Array(oCvt.length); - var scale = ppem / font.unitsPerEm; - for (var c = 0; c < oCvt.length; c++) { - cvt[c] = oCvt[c] * scale; - } - } else { - prepState.cvt = []; - } - - if (exports.DEBUG) { - console.log('---EXEC PREP---'); - prepState.step = -1; - } - - try { - exec(prepState); - } catch (e) { - if (this._errorState < 2) { - console.log('Hinting error in PREP:' + e); - } - this._errorState = 2; - } - } - - if (this._errorState > 1) { return; } - - try { - return execGlyph(glyph, prepState); - } catch (e) { - if (this._errorState < 1) { - console.log('Hinting error:' + e); - console.log('Note: further hinting errors are silenced'); - } - this._errorState = 1; - return undefined; - } -}; - -/* -* Executes the hinting program for a glyph. -*/ -execGlyph = function(glyph, prepState) { - // original point positions - var xScale = prepState.ppem / prepState.font.unitsPerEm; - var yScale = xScale; - var components = glyph.components; - var contours; - var gZone; - var state; - - State.prototype = prepState; - if (!components) { - state = new State('glyf', glyph.instructions); - if (exports.DEBUG) { - console.log('---EXEC GLYPH---'); - state.step = -1; - } - execComponent(glyph, state, xScale, yScale); - gZone = state.gZone; - } else { - var font = prepState.font; - gZone = []; - contours = []; - for (var i = 0; i < components.length; i++) { - var c = components[i]; - var cg = font.glyphs.get(c.glyphIndex); - - state = new State('glyf', cg.instructions); - - if (exports.DEBUG) { - console.log('---EXEC COMP ' + i + '---'); - state.step = -1; - } - - execComponent(cg, state, xScale, yScale); - // appends the computed points to the result array - // post processes the component points - var dx = Math.round(c.dx * xScale); - var dy = Math.round(c.dy * yScale); - var gz = state.gZone; - var cc = state.contours; - for (var pi = 0; pi < gz.length; pi++) { - var p = gz[pi]; - p.xTouched = p.yTouched = false; - p.xo = p.x = p.x + dx; - p.yo = p.y = p.y + dy; - } - - var gLen = gZone.length; - gZone.push.apply(gZone, gz); - for (var j = 0; j < cc.length; j++) { - contours.push(cc[j] + gLen); - } - } - - if (glyph.instructions && !state.inhibitGridFit) { - // the composite has instructions on its own - state = new State('glyf', glyph.instructions); - - state.gZone = state.z0 = state.z1 = state.z2 = gZone; - - state.contours = contours; - - // note: HPZero cannot be used here, since - // the point might be modified - gZone.push( - new HPoint(0, 0), - new HPoint(Math.round(glyph.advanceWidth * xScale), 0) - ); - - if (exports.DEBUG) { - console.log('---EXEC COMPOSITE---'); - state.step = -1; - } - - exec(state); - - gZone.length -= 2; - } - } - - return gZone; -}; - -/* -* Executes the hinting program for a component of a multi-component glyph -* or of the glyph itself for a non-component glyph. -*/ -execComponent = function(glyph, state, xScale, yScale) -{ - var points = glyph.points || []; - var pLen = points.length; - var gZone = state.gZone = state.z0 = state.z1 = state.z2 = []; - var contours = state.contours = []; - - // Scales the original points and - // makes copies for the hinted points. - var cp; // current point - for (var i = 0; i < pLen; i++) { - cp = points[i]; - - gZone[i] = new HPoint( - cp.x * xScale, - cp.y * yScale, - cp.lastPointOfContour, - cp.onCurve - ); - } - - // Chain links the contours. - var sp; // start point - var np; // next point - - for (var i$1 = 0; i$1 < pLen; i$1++) { - cp = gZone[i$1]; - - if (!sp) { - sp = cp; - contours.push(i$1); - } - - if (cp.lastPointOfContour) { - cp.nextPointOnContour = sp; - sp.prevPointOnContour = cp; - sp = undefined; - } else { - np = gZone[i$1 + 1]; - cp.nextPointOnContour = np; - np.prevPointOnContour = cp; - } - } - - if (state.inhibitGridFit) { return; } - - if (exports.DEBUG) { - console.log('PROCESSING GLYPH', state.stack); - for (var i$2 = 0; i$2 < pLen; i$2++) { - console.log(i$2, gZone[i$2].x, gZone[i$2].y); - } - } - - gZone.push( - new HPoint(0, 0), - new HPoint(Math.round(glyph.advanceWidth * xScale), 0) - ); - - exec(state); - - // Removes the extra points. - gZone.length -= 2; - - if (exports.DEBUG) { - console.log('FINISHED GLYPH', state.stack); - for (var i$3 = 0; i$3 < pLen; i$3++) { - console.log(i$3, gZone[i$3].x, gZone[i$3].y); - } - } -}; - -/* -* Executes the program loaded in state. -*/ -exec = function(state) { - var prog = state.prog; - - if (!prog) { return; } - - var pLen = prog.length; - var ins; - - for (state.ip = 0; state.ip < pLen; state.ip++) { - if (exports.DEBUG) { state.step++; } - ins = instructionTable[prog[state.ip]]; - - if (!ins) { - throw new Error( - 'unknown instruction: 0x' + - Number(prog[state.ip]).toString(16) - ); - } - - ins(state); - - // very extensive debugging for each step - /* - if (exports.DEBUG) { - var da; - if (state.gZone) { - da = []; - for (let i = 0; i < state.gZone.length; i++) - { - da.push(i + ' ' + - state.gZone[i].x * 64 + ' ' + - state.gZone[i].y * 64 + ' ' + - (state.gZone[i].xTouched ? 'x' : '') + - (state.gZone[i].yTouched ? 'y' : '') - ); - } - console.log('GZ', da); - } - - if (state.tZone) { - da = []; - for (let i = 0; i < state.tZone.length; i++) { - da.push(i + ' ' + - state.tZone[i].x * 64 + ' ' + - state.tZone[i].y * 64 + ' ' + - (state.tZone[i].xTouched ? 'x' : '') + - (state.tZone[i].yTouched ? 'y' : '') - ); - } - console.log('TZ', da); - } - - if (state.stack.length > 10) { - console.log( - state.stack.length, - '...', state.stack.slice(state.stack.length - 10) - ); - } else { - console.log(state.stack.length, state.stack); - } - } - */ - } -}; - -/* -* Initializes the twilight zone. -* -* This is only done if a SZPx instruction -* refers to the twilight zone. -*/ -function initTZone(state) -{ - var tZone = state.tZone = new Array(state.gZone.length); - - // no idea if this is actually correct... - for (var i = 0; i < tZone.length; i++) - { - tZone[i] = new HPoint(0, 0); - } -} - -/* -* Skips the instruction pointer ahead over an IF/ELSE block. -* handleElse .. if true breaks on matching ELSE -*/ -function skip(state, handleElse) -{ - var prog = state.prog; - var ip = state.ip; - var nesting = 1; - var ins; - - do { - ins = prog[++ip]; - if (ins === 0x58) // IF - { nesting++; } - else if (ins === 0x59) // EIF - { nesting--; } - else if (ins === 0x40) // NPUSHB - { ip += prog[ip + 1] + 1; } - else if (ins === 0x41) // NPUSHW - { ip += 2 * prog[ip + 1] + 1; } - else if (ins >= 0xB0 && ins <= 0xB7) // PUSHB - { ip += ins - 0xB0 + 1; } - else if (ins >= 0xB8 && ins <= 0xBF) // PUSHW - { ip += (ins - 0xB8 + 1) * 2; } - else if (handleElse && nesting === 1 && ins === 0x1B) // ELSE - { break; } - } while (nesting > 0); - - state.ip = ip; -} - -/*----------------------------------------------------------* -* And then a lot of instructions... * -*----------------------------------------------------------*/ - -// SVTCA[a] Set freedom and projection Vectors To Coordinate Axis -// 0x00-0x01 -function SVTCA(v, state) { - if (exports.DEBUG) { console.log(state.step, 'SVTCA[' + v.axis + ']'); } - - state.fv = state.pv = state.dpv = v; -} - -// SPVTCA[a] Set Projection Vector to Coordinate Axis -// 0x02-0x03 -function SPVTCA(v, state) { - if (exports.DEBUG) { console.log(state.step, 'SPVTCA[' + v.axis + ']'); } - - state.pv = state.dpv = v; -} - -// SFVTCA[a] Set Freedom Vector to Coordinate Axis -// 0x04-0x05 -function SFVTCA(v, state) { - if (exports.DEBUG) { console.log(state.step, 'SFVTCA[' + v.axis + ']'); } - - state.fv = v; -} - -// SPVTL[a] Set Projection Vector To Line -// 0x06-0x07 -function SPVTL(a, state) { - var stack = state.stack; - var p2i = stack.pop(); - var p1i = stack.pop(); - var p2 = state.z2[p2i]; - var p1 = state.z1[p1i]; - - if (exports.DEBUG) { console.log('SPVTL[' + a + ']', p2i, p1i); } - - var dx; - var dy; - - if (!a) { - dx = p1.x - p2.x; - dy = p1.y - p2.y; - } else { - dx = p2.y - p1.y; - dy = p1.x - p2.x; - } - - state.pv = state.dpv = getUnitVector(dx, dy); -} - -// SFVTL[a] Set Freedom Vector To Line -// 0x08-0x09 -function SFVTL(a, state) { - var stack = state.stack; - var p2i = stack.pop(); - var p1i = stack.pop(); - var p2 = state.z2[p2i]; - var p1 = state.z1[p1i]; - - if (exports.DEBUG) { console.log('SFVTL[' + a + ']', p2i, p1i); } - - var dx; - var dy; - - if (!a) { - dx = p1.x - p2.x; - dy = p1.y - p2.y; - } else { - dx = p2.y - p1.y; - dy = p1.x - p2.x; - } - - state.fv = getUnitVector(dx, dy); -} - -// SPVFS[] Set Projection Vector From Stack -// 0x0A -function SPVFS(state) { - var stack = state.stack; - var y = stack.pop(); - var x = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SPVFS[]', y, x); } - - state.pv = state.dpv = getUnitVector(x, y); -} - -// SFVFS[] Set Freedom Vector From Stack -// 0x0B -function SFVFS(state) { - var stack = state.stack; - var y = stack.pop(); - var x = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SPVFS[]', y, x); } - - state.fv = getUnitVector(x, y); -} - -// GPV[] Get Projection Vector -// 0x0C -function GPV(state) { - var stack = state.stack; - var pv = state.pv; - - if (exports.DEBUG) { console.log(state.step, 'GPV[]'); } - - stack.push(pv.x * 0x4000); - stack.push(pv.y * 0x4000); -} - -// GFV[] Get Freedom Vector -// 0x0C -function GFV(state) { - var stack = state.stack; - var fv = state.fv; - - if (exports.DEBUG) { console.log(state.step, 'GFV[]'); } - - stack.push(fv.x * 0x4000); - stack.push(fv.y * 0x4000); -} - -// SFVTPV[] Set Freedom Vector To Projection Vector -// 0x0E -function SFVTPV(state) { - state.fv = state.pv; - - if (exports.DEBUG) { console.log(state.step, 'SFVTPV[]'); } -} - -// ISECT[] moves point p to the InterSECTion of two lines -// 0x0F -function ISECT(state) -{ - var stack = state.stack; - var pa0i = stack.pop(); - var pa1i = stack.pop(); - var pb0i = stack.pop(); - var pb1i = stack.pop(); - var pi = stack.pop(); - var z0 = state.z0; - var z1 = state.z1; - var pa0 = z0[pa0i]; - var pa1 = z0[pa1i]; - var pb0 = z1[pb0i]; - var pb1 = z1[pb1i]; - var p = state.z2[pi]; - - if (exports.DEBUG) { console.log('ISECT[], ', pa0i, pa1i, pb0i, pb1i, pi); } - - // math from - // en.wikipedia.org/wiki/Line%E2%80%93line_intersection#Given_two_points_on_each_line - - var x1 = pa0.x; - var y1 = pa0.y; - var x2 = pa1.x; - var y2 = pa1.y; - var x3 = pb0.x; - var y3 = pb0.y; - var x4 = pb1.x; - var y4 = pb1.y; - - var div = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4); - var f1 = x1 * y2 - y1 * x2; - var f2 = x3 * y4 - y3 * x4; - - p.x = (f1 * (x3 - x4) - f2 * (x1 - x2)) / div; - p.y = (f1 * (y3 - y4) - f2 * (y1 - y2)) / div; -} - -// SRP0[] Set Reference Point 0 -// 0x10 -function SRP0(state) { - state.rp0 = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SRP0[]', state.rp0); } -} - -// SRP1[] Set Reference Point 1 -// 0x11 -function SRP1(state) { - state.rp1 = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SRP1[]', state.rp1); } -} - -// SRP1[] Set Reference Point 2 -// 0x12 -function SRP2(state) { - state.rp2 = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SRP2[]', state.rp2); } -} - -// SZP0[] Set Zone Pointer 0 -// 0x13 -function SZP0(state) { - var n = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SZP0[]', n); } - - state.zp0 = n; - - switch (n) { - case 0: - if (!state.tZone) { initTZone(state); } - state.z0 = state.tZone; - break; - case 1 : - state.z0 = state.gZone; - break; - default : - throw new Error('Invalid zone pointer'); - } -} - -// SZP1[] Set Zone Pointer 1 -// 0x14 -function SZP1(state) { - var n = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SZP1[]', n); } - - state.zp1 = n; - - switch (n) { - case 0: - if (!state.tZone) { initTZone(state); } - state.z1 = state.tZone; - break; - case 1 : - state.z1 = state.gZone; - break; - default : - throw new Error('Invalid zone pointer'); - } -} - -// SZP2[] Set Zone Pointer 2 -// 0x15 -function SZP2(state) { - var n = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SZP2[]', n); } - - state.zp2 = n; - - switch (n) { - case 0: - if (!state.tZone) { initTZone(state); } - state.z2 = state.tZone; - break; - case 1 : - state.z2 = state.gZone; - break; - default : - throw new Error('Invalid zone pointer'); - } -} - -// SZPS[] Set Zone PointerS -// 0x16 -function SZPS(state) { - var n = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SZPS[]', n); } - - state.zp0 = state.zp1 = state.zp2 = n; - - switch (n) { - case 0: - if (!state.tZone) { initTZone(state); } - state.z0 = state.z1 = state.z2 = state.tZone; - break; - case 1 : - state.z0 = state.z1 = state.z2 = state.gZone; - break; - default : - throw new Error('Invalid zone pointer'); - } -} - -// SLOOP[] Set LOOP variable -// 0x17 -function SLOOP(state) { - state.loop = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SLOOP[]', state.loop); } -} - -// RTG[] Round To Grid -// 0x18 -function RTG(state) { - if (exports.DEBUG) { console.log(state.step, 'RTG[]'); } - - state.round = roundToGrid; -} - -// RTHG[] Round To Half Grid -// 0x19 -function RTHG(state) { - if (exports.DEBUG) { console.log(state.step, 'RTHG[]'); } - - state.round = roundToHalfGrid; -} - -// SMD[] Set Minimum Distance -// 0x1A -function SMD(state) { - var d = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SMD[]', d); } - - state.minDis = d / 0x40; -} - -// ELSE[] ELSE clause -// 0x1B -function ELSE(state) { - // This instruction has been reached by executing a then branch - // so it just skips ahead until matching EIF. - // - // In case the IF was negative the IF[] instruction already - // skipped forward over the ELSE[] - - if (exports.DEBUG) { console.log(state.step, 'ELSE[]'); } - - skip(state, false); -} - -// JMPR[] JuMP Relative -// 0x1C -function JMPR(state) { - var o = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'JMPR[]', o); } - - // A jump by 1 would do nothing. - state.ip += o - 1; -} - -// SCVTCI[] Set Control Value Table Cut-In -// 0x1D -function SCVTCI(state) { - var n = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SCVTCI[]', n); } - - state.cvCutIn = n / 0x40; -} - -// DUP[] DUPlicate top stack element -// 0x20 -function DUP(state) { - var stack = state.stack; - - if (exports.DEBUG) { console.log(state.step, 'DUP[]'); } - - stack.push(stack[stack.length - 1]); -} - -// POP[] POP top stack element -// 0x21 -function POP(state) { - if (exports.DEBUG) { console.log(state.step, 'POP[]'); } - - state.stack.pop(); -} - -// CLEAR[] CLEAR the stack -// 0x22 -function CLEAR(state) { - if (exports.DEBUG) { console.log(state.step, 'CLEAR[]'); } - - state.stack.length = 0; -} - -// SWAP[] SWAP the top two elements on the stack -// 0x23 -function SWAP(state) { - var stack = state.stack; - - var a = stack.pop(); - var b = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SWAP[]'); } - - stack.push(a); - stack.push(b); -} - -// DEPTH[] DEPTH of the stack -// 0x24 -function DEPTH(state) { - var stack = state.stack; - - if (exports.DEBUG) { console.log(state.step, 'DEPTH[]'); } - - stack.push(stack.length); -} - -// LOOPCALL[] LOOPCALL function -// 0x2A -function LOOPCALL(state) { - var stack = state.stack; - var fn = stack.pop(); - var c = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'LOOPCALL[]', fn, c); } - - // saves callers program - var cip = state.ip; - var cprog = state.prog; - - state.prog = state.funcs[fn]; - - // executes the function - for (var i = 0; i < c; i++) { - exec(state); - - if (exports.DEBUG) { console.log( - ++state.step, - i + 1 < c ? 'next loopcall' : 'done loopcall', - i - ); } - } - - // restores the callers program - state.ip = cip; - state.prog = cprog; -} - -// CALL[] CALL function -// 0x2B -function CALL(state) { - var fn = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'CALL[]', fn); } - - // saves callers program - var cip = state.ip; - var cprog = state.prog; - - state.prog = state.funcs[fn]; - - // executes the function - exec(state); - - // restores the callers program - state.ip = cip; - state.prog = cprog; - - if (exports.DEBUG) { console.log(++state.step, 'returning from', fn); } -} - -// CINDEX[] Copy the INDEXed element to the top of the stack -// 0x25 -function CINDEX(state) { - var stack = state.stack; - var k = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'CINDEX[]', k); } - - // In case of k == 1, it copies the last element after popping - // thus stack.length - k. - stack.push(stack[stack.length - k]); -} - -// MINDEX[] Move the INDEXed element to the top of the stack -// 0x26 -function MINDEX(state) { - var stack = state.stack; - var k = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'MINDEX[]', k); } - - stack.push(stack.splice(stack.length - k, 1)[0]); -} - -// FDEF[] Function DEFinition -// 0x2C -function FDEF(state) { - if (state.env !== 'fpgm') { throw new Error('FDEF not allowed here'); } - var stack = state.stack; - var prog = state.prog; - var ip = state.ip; - - var fn = stack.pop(); - var ipBegin = ip; - - if (exports.DEBUG) { console.log(state.step, 'FDEF[]', fn); } - - while (prog[++ip] !== 0x2D){ } - - state.ip = ip; - state.funcs[fn] = prog.slice(ipBegin + 1, ip); -} - -// MDAP[a] Move Direct Absolute Point -// 0x2E-0x2F -function MDAP(round, state) { - var pi = state.stack.pop(); - var p = state.z0[pi]; - var fv = state.fv; - var pv = state.pv; - - if (exports.DEBUG) { console.log(state.step, 'MDAP[' + round + ']', pi); } - - var d = pv.distance(p, HPZero); - - if (round) { d = state.round(d); } - - fv.setRelative(p, HPZero, d, pv); - fv.touch(p); - - state.rp0 = state.rp1 = pi; -} - -// IUP[a] Interpolate Untouched Points through the outline -// 0x30 -function IUP(v, state) { - var z2 = state.z2; - var pLen = z2.length - 2; - var cp; - var pp; - var np; - - if (exports.DEBUG) { console.log(state.step, 'IUP[' + v.axis + ']'); } - - for (var i = 0; i < pLen; i++) { - cp = z2[i]; // current point - - // if this point has been touched go on - if (v.touched(cp)) { continue; } - - pp = cp.prevTouched(v); - - // no point on the contour has been touched? - if (pp === cp) { continue; } - - np = cp.nextTouched(v); - - if (pp === np) { - // only one point on the contour has been touched - // so simply moves the point like that - - v.setRelative(cp, cp, v.distance(pp, pp, false, true), v, true); - } - - v.interpolate(cp, pp, np, v); - } -} - -// SHP[] SHift Point using reference point -// 0x32-0x33 -function SHP(a, state) { - var stack = state.stack; - var rpi = a ? state.rp1 : state.rp2; - var rp = (a ? state.z0 : state.z1)[rpi]; - var fv = state.fv; - var pv = state.pv; - var loop = state.loop; - var z2 = state.z2; - - while (loop--) - { - var pi = stack.pop(); - var p = z2[pi]; - - var d = pv.distance(rp, rp, false, true); - fv.setRelative(p, p, d, pv); - fv.touch(p); - - if (exports.DEBUG) { - console.log( - state.step, - (state.loop > 1 ? - 'loop ' + (state.loop - loop) + ': ' : - '' - ) + - 'SHP[' + (a ? 'rp1' : 'rp2') + ']', pi - ); - } - } - - state.loop = 1; -} - -// SHC[] SHift Contour using reference point -// 0x36-0x37 -function SHC(a, state) { - var stack = state.stack; - var rpi = a ? state.rp1 : state.rp2; - var rp = (a ? state.z0 : state.z1)[rpi]; - var fv = state.fv; - var pv = state.pv; - var ci = stack.pop(); - var sp = state.z2[state.contours[ci]]; - var p = sp; - - if (exports.DEBUG) { console.log(state.step, 'SHC[' + a + ']', ci); } - - var d = pv.distance(rp, rp, false, true); - - do { - if (p !== rp) { fv.setRelative(p, p, d, pv); } - p = p.nextPointOnContour; - } while (p !== sp); -} - -// SHZ[] SHift Zone using reference point -// 0x36-0x37 -function SHZ(a, state) { - var stack = state.stack; - var rpi = a ? state.rp1 : state.rp2; - var rp = (a ? state.z0 : state.z1)[rpi]; - var fv = state.fv; - var pv = state.pv; - - var e = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SHZ[' + a + ']', e); } - - var z; - switch (e) { - case 0 : z = state.tZone; break; - case 1 : z = state.gZone; break; - default : throw new Error('Invalid zone'); - } - - var p; - var d = pv.distance(rp, rp, false, true); - var pLen = z.length - 2; - for (var i = 0; i < pLen; i++) - { - p = z[i]; - fv.setRelative(p, p, d, pv); - //if (p !== rp) fv.setRelative(p, p, d, pv); - } -} - -// SHPIX[] SHift point by a PIXel amount -// 0x38 -function SHPIX(state) { - var stack = state.stack; - var loop = state.loop; - var fv = state.fv; - var d = stack.pop() / 0x40; - var z2 = state.z2; - - while (loop--) { - var pi = stack.pop(); - var p = z2[pi]; - - if (exports.DEBUG) { - console.log( - state.step, - (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') + - 'SHPIX[]', pi, d - ); - } - - fv.setRelative(p, p, d); - fv.touch(p); - } - - state.loop = 1; -} - -// IP[] Interpolate Point -// 0x39 -function IP(state) { - var stack = state.stack; - var rp1i = state.rp1; - var rp2i = state.rp2; - var loop = state.loop; - var rp1 = state.z0[rp1i]; - var rp2 = state.z1[rp2i]; - var fv = state.fv; - var pv = state.dpv; - var z2 = state.z2; - - while (loop--) { - var pi = stack.pop(); - var p = z2[pi]; - - if (exports.DEBUG) { - console.log( - state.step, - (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') + - 'IP[]', pi, rp1i, '<->', rp2i - ); - } - - fv.interpolate(p, rp1, rp2, pv); - - fv.touch(p); - } - - state.loop = 1; -} - -// MSIRP[a] Move Stack Indirect Relative Point -// 0x3A-0x3B -function MSIRP(a, state) { - var stack = state.stack; - var d = stack.pop() / 64; - var pi = stack.pop(); - var p = state.z1[pi]; - var rp0 = state.z0[state.rp0]; - var fv = state.fv; - var pv = state.pv; - - fv.setRelative(p, rp0, d, pv); - fv.touch(p); - - if (exports.DEBUG) { console.log(state.step, 'MSIRP[' + a + ']', d, pi); } - - state.rp1 = state.rp0; - state.rp2 = pi; - if (a) { state.rp0 = pi; } -} - -// ALIGNRP[] Align to reference point. -// 0x3C -function ALIGNRP(state) { - var stack = state.stack; - var rp0i = state.rp0; - var rp0 = state.z0[rp0i]; - var loop = state.loop; - var fv = state.fv; - var pv = state.pv; - var z1 = state.z1; - - while (loop--) { - var pi = stack.pop(); - var p = z1[pi]; - - if (exports.DEBUG) { - console.log( - state.step, - (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') + - 'ALIGNRP[]', pi - ); - } - - fv.setRelative(p, rp0, 0, pv); - fv.touch(p); - } - - state.loop = 1; -} - -// RTG[] Round To Double Grid -// 0x3D -function RTDG(state) { - if (exports.DEBUG) { console.log(state.step, 'RTDG[]'); } - - state.round = roundToDoubleGrid; -} - -// MIAP[a] Move Indirect Absolute Point -// 0x3E-0x3F -function MIAP(round, state) { - var stack = state.stack; - var n = stack.pop(); - var pi = stack.pop(); - var p = state.z0[pi]; - var fv = state.fv; - var pv = state.pv; - var cv = state.cvt[n]; - - if (exports.DEBUG) { - console.log( - state.step, - 'MIAP[' + round + ']', - n, '(', cv, ')', pi - ); - } - - var d = pv.distance(p, HPZero); - - if (round) { - if (Math.abs(d - cv) < state.cvCutIn) { d = cv; } - - d = state.round(d); - } - - fv.setRelative(p, HPZero, d, pv); - - if (state.zp0 === 0) { - p.xo = p.x; - p.yo = p.y; - } - - fv.touch(p); - - state.rp0 = state.rp1 = pi; -} - -// NPUSB[] PUSH N Bytes -// 0x40 -function NPUSHB(state) { - var prog = state.prog; - var ip = state.ip; - var stack = state.stack; - - var n = prog[++ip]; - - if (exports.DEBUG) { console.log(state.step, 'NPUSHB[]', n); } - - for (var i = 0; i < n; i++) { stack.push(prog[++ip]); } - - state.ip = ip; -} - -// NPUSHW[] PUSH N Words -// 0x41 -function NPUSHW(state) { - var ip = state.ip; - var prog = state.prog; - var stack = state.stack; - var n = prog[++ip]; - - if (exports.DEBUG) { console.log(state.step, 'NPUSHW[]', n); } - - for (var i = 0; i < n; i++) { - var w = (prog[++ip] << 8) | prog[++ip]; - if (w & 0x8000) { w = -((w ^ 0xffff) + 1); } - stack.push(w); - } - - state.ip = ip; -} - -// WS[] Write Store -// 0x42 -function WS(state) { - var stack = state.stack; - var store = state.store; - - if (!store) { store = state.store = []; } - - var v = stack.pop(); - var l = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'WS', v, l); } - - store[l] = v; -} - -// RS[] Read Store -// 0x43 -function RS(state) { - var stack = state.stack; - var store = state.store; - - var l = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'RS', l); } - - var v = (store && store[l]) || 0; - - stack.push(v); -} - -// WCVTP[] Write Control Value Table in Pixel units -// 0x44 -function WCVTP(state) { - var stack = state.stack; - - var v = stack.pop(); - var l = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'WCVTP', v, l); } - - state.cvt[l] = v / 0x40; -} - -// RCVT[] Read Control Value Table entry -// 0x45 -function RCVT(state) { - var stack = state.stack; - var cvte = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'RCVT', cvte); } - - stack.push(state.cvt[cvte] * 0x40); -} - -// GC[] Get Coordinate projected onto the projection vector -// 0x46-0x47 -function GC(a, state) { - var stack = state.stack; - var pi = stack.pop(); - var p = state.z2[pi]; - - if (exports.DEBUG) { console.log(state.step, 'GC[' + a + ']', pi); } - - stack.push(state.dpv.distance(p, HPZero, a, false) * 0x40); -} - -// MD[a] Measure Distance -// 0x49-0x4A -function MD(a, state) { - var stack = state.stack; - var pi2 = stack.pop(); - var pi1 = stack.pop(); - var p2 = state.z1[pi2]; - var p1 = state.z0[pi1]; - var d = state.dpv.distance(p1, p2, a, a); - - if (exports.DEBUG) { console.log(state.step, 'MD[' + a + ']', pi2, pi1, '->', d); } - - state.stack.push(Math.round(d * 64)); -} - -// MPPEM[] Measure Pixels Per EM -// 0x4B -function MPPEM(state) { - if (exports.DEBUG) { console.log(state.step, 'MPPEM[]'); } - state.stack.push(state.ppem); -} - -// FLIPON[] set the auto FLIP Boolean to ON -// 0x4D -function FLIPON(state) { - if (exports.DEBUG) { console.log(state.step, 'FLIPON[]'); } - state.autoFlip = true; -} - -// LT[] Less Than -// 0x50 -function LT(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'LT[]', e2, e1); } - - stack.push(e1 < e2 ? 1 : 0); -} - -// LTEQ[] Less Than or EQual -// 0x53 -function LTEQ(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'LTEQ[]', e2, e1); } - - stack.push(e1 <= e2 ? 1 : 0); -} - -// GTEQ[] Greater Than -// 0x52 -function GT(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'GT[]', e2, e1); } - - stack.push(e1 > e2 ? 1 : 0); -} - -// GTEQ[] Greater Than or EQual -// 0x53 -function GTEQ(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'GTEQ[]', e2, e1); } - - stack.push(e1 >= e2 ? 1 : 0); -} - -// EQ[] EQual -// 0x54 -function EQ(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'EQ[]', e2, e1); } - - stack.push(e2 === e1 ? 1 : 0); -} - -// NEQ[] Not EQual -// 0x55 -function NEQ(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'NEQ[]', e2, e1); } - - stack.push(e2 !== e1 ? 1 : 0); -} - -// ODD[] ODD -// 0x56 -function ODD(state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'ODD[]', n); } - - stack.push(Math.trunc(n) % 2 ? 1 : 0); -} - -// EVEN[] EVEN -// 0x57 -function EVEN(state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'EVEN[]', n); } - - stack.push(Math.trunc(n) % 2 ? 0 : 1); -} - -// IF[] IF test -// 0x58 -function IF(state) { - var test = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'IF[]', test); } - - // if test is true it just continues - // if not the ip is skipped until matching ELSE or EIF - if (!test) { - skip(state, true); - - if (exports.DEBUG) { console.log(state.step, 'EIF[]'); } - } -} - -// EIF[] End IF -// 0x59 -function EIF(state) { - // this can be reached normally when - // executing an else branch. - // -> just ignore it - - if (exports.DEBUG) { console.log(state.step, 'EIF[]'); } -} - -// AND[] logical AND -// 0x5A -function AND(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'AND[]', e2, e1); } - - stack.push(e2 && e1 ? 1 : 0); -} - -// OR[] logical OR -// 0x5B -function OR(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'OR[]', e2, e1); } - - stack.push(e2 || e1 ? 1 : 0); -} - -// NOT[] logical NOT -// 0x5C -function NOT(state) { - var stack = state.stack; - var e = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'NOT[]', e); } - - stack.push(e ? 0 : 1); -} - -// DELTAP1[] DELTA exception P1 -// DELTAP2[] DELTA exception P2 -// DELTAP3[] DELTA exception P3 -// 0x5D, 0x71, 0x72 -function DELTAP123(b, state) { - var stack = state.stack; - var n = stack.pop(); - var fv = state.fv; - var pv = state.pv; - var ppem = state.ppem; - var base = state.deltaBase + (b - 1) * 16; - var ds = state.deltaShift; - var z0 = state.z0; - - if (exports.DEBUG) { console.log(state.step, 'DELTAP[' + b + ']', n, stack); } - - for (var i = 0; i < n; i++) { - var pi = stack.pop(); - var arg = stack.pop(); - var appem = base + ((arg & 0xF0) >> 4); - if (appem !== ppem) { continue; } - - var mag = (arg & 0x0F) - 8; - if (mag >= 0) { mag++; } - if (exports.DEBUG) { console.log(state.step, 'DELTAPFIX', pi, 'by', mag * ds); } - - var p = z0[pi]; - fv.setRelative(p, p, mag * ds, pv); - } -} - -// SDB[] Set Delta Base in the graphics state -// 0x5E -function SDB(state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SDB[]', n); } - - state.deltaBase = n; -} - -// SDS[] Set Delta Shift in the graphics state -// 0x5F -function SDS(state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SDS[]', n); } - - state.deltaShift = Math.pow(0.5, n); -} - -// ADD[] ADD -// 0x60 -function ADD(state) { - var stack = state.stack; - var n2 = stack.pop(); - var n1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'ADD[]', n2, n1); } - - stack.push(n1 + n2); -} - -// SUB[] SUB -// 0x61 -function SUB(state) { - var stack = state.stack; - var n2 = stack.pop(); - var n1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SUB[]', n2, n1); } - - stack.push(n1 - n2); -} - -// DIV[] DIV -// 0x62 -function DIV(state) { - var stack = state.stack; - var n2 = stack.pop(); - var n1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'DIV[]', n2, n1); } - - stack.push(n1 * 64 / n2); -} - -// MUL[] MUL -// 0x63 -function MUL(state) { - var stack = state.stack; - var n2 = stack.pop(); - var n1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'MUL[]', n2, n1); } - - stack.push(n1 * n2 / 64); -} - -// ABS[] ABSolute value -// 0x64 -function ABS(state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'ABS[]', n); } - - stack.push(Math.abs(n)); -} - -// NEG[] NEGate -// 0x65 -function NEG(state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'NEG[]', n); } - - stack.push(-n); -} - -// FLOOR[] FLOOR -// 0x66 -function FLOOR(state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'FLOOR[]', n); } - - stack.push(Math.floor(n / 0x40) * 0x40); -} - -// CEILING[] CEILING -// 0x67 -function CEILING(state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'CEILING[]', n); } - - stack.push(Math.ceil(n / 0x40) * 0x40); -} - -// ROUND[ab] ROUND value -// 0x68-0x6B -function ROUND(dt, state) { - var stack = state.stack; - var n = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'ROUND[]'); } - - stack.push(state.round(n / 0x40) * 0x40); -} - -// WCVTF[] Write Control Value Table in Funits -// 0x70 -function WCVTF(state) { - var stack = state.stack; - var v = stack.pop(); - var l = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'WCVTF[]', v, l); } - - state.cvt[l] = v * state.ppem / state.font.unitsPerEm; -} - -// DELTAC1[] DELTA exception C1 -// DELTAC2[] DELTA exception C2 -// DELTAC3[] DELTA exception C3 -// 0x73, 0x74, 0x75 -function DELTAC123(b, state) { - var stack = state.stack; - var n = stack.pop(); - var ppem = state.ppem; - var base = state.deltaBase + (b - 1) * 16; - var ds = state.deltaShift; - - if (exports.DEBUG) { console.log(state.step, 'DELTAC[' + b + ']', n, stack); } - - for (var i = 0; i < n; i++) { - var c = stack.pop(); - var arg = stack.pop(); - var appem = base + ((arg & 0xF0) >> 4); - if (appem !== ppem) { continue; } - - var mag = (arg & 0x0F) - 8; - if (mag >= 0) { mag++; } - - var delta = mag * ds; - - if (exports.DEBUG) { console.log(state.step, 'DELTACFIX', c, 'by', delta); } - - state.cvt[c] += delta; - } -} - -// SROUND[] Super ROUND -// 0x76 -function SROUND(state) { - var n = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'SROUND[]', n); } - - state.round = roundSuper; - - var period; - - switch (n & 0xC0) { - case 0x00: - period = 0.5; - break; - case 0x40: - period = 1; - break; - case 0x80: - period = 2; - break; - default: - throw new Error('invalid SROUND value'); - } - - state.srPeriod = period; - - switch (n & 0x30) { - case 0x00: - state.srPhase = 0; - break; - case 0x10: - state.srPhase = 0.25 * period; - break; - case 0x20: - state.srPhase = 0.5 * period; - break; - case 0x30: - state.srPhase = 0.75 * period; - break; - default: throw new Error('invalid SROUND value'); - } - - n &= 0x0F; - - if (n === 0) { state.srThreshold = 0; } - else { state.srThreshold = (n / 8 - 0.5) * period; } -} - -// S45ROUND[] Super ROUND 45 degrees -// 0x77 -function S45ROUND(state) { - var n = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'S45ROUND[]', n); } - - state.round = roundSuper; - - var period; - - switch (n & 0xC0) { - case 0x00: - period = Math.sqrt(2) / 2; - break; - case 0x40: - period = Math.sqrt(2); - break; - case 0x80: - period = 2 * Math.sqrt(2); - break; - default: - throw new Error('invalid S45ROUND value'); - } - - state.srPeriod = period; - - switch (n & 0x30) { - case 0x00: - state.srPhase = 0; - break; - case 0x10: - state.srPhase = 0.25 * period; - break; - case 0x20: - state.srPhase = 0.5 * period; - break; - case 0x30: - state.srPhase = 0.75 * period; - break; - default: - throw new Error('invalid S45ROUND value'); - } - - n &= 0x0F; - - if (n === 0) { state.srThreshold = 0; } - else { state.srThreshold = (n / 8 - 0.5) * period; } -} - -// ROFF[] Round Off -// 0x7A -function ROFF(state) { - if (exports.DEBUG) { console.log(state.step, 'ROFF[]'); } - - state.round = roundOff; -} - -// RUTG[] Round Up To Grid -// 0x7C -function RUTG(state) { - if (exports.DEBUG) { console.log(state.step, 'RUTG[]'); } - - state.round = roundUpToGrid; -} - -// RDTG[] Round Down To Grid -// 0x7D -function RDTG(state) { - if (exports.DEBUG) { console.log(state.step, 'RDTG[]'); } - - state.round = roundDownToGrid; -} - -// SCANCTRL[] SCAN conversion ConTRoL -// 0x85 -function SCANCTRL(state) { - var n = state.stack.pop(); - - // ignored by opentype.js - - if (exports.DEBUG) { console.log(state.step, 'SCANCTRL[]', n); } -} - -// SDPVTL[a] Set Dual Projection Vector To Line -// 0x86-0x87 -function SDPVTL(a, state) { - var stack = state.stack; - var p2i = stack.pop(); - var p1i = stack.pop(); - var p2 = state.z2[p2i]; - var p1 = state.z1[p1i]; - - if (exports.DEBUG) { console.log(state.step, 'SDPVTL[' + a + ']', p2i, p1i); } - - var dx; - var dy; - - if (!a) { - dx = p1.x - p2.x; - dy = p1.y - p2.y; - } else { - dx = p2.y - p1.y; - dy = p1.x - p2.x; - } - - state.dpv = getUnitVector(dx, dy); -} - -// GETINFO[] GET INFOrmation -// 0x88 -function GETINFO(state) { - var stack = state.stack; - var sel = stack.pop(); - var r = 0; - - if (exports.DEBUG) { console.log(state.step, 'GETINFO[]', sel); } - - // v35 as in no subpixel hinting - if (sel & 0x01) { r = 35; } - - // TODO rotation and stretch currently not supported - // and thus those GETINFO are always 0. - - // opentype.js is always gray scaling - if (sel & 0x20) { r |= 0x1000; } - - stack.push(r); -} - -// ROLL[] ROLL the top three stack elements -// 0x8A -function ROLL(state) { - var stack = state.stack; - var a = stack.pop(); - var b = stack.pop(); - var c = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'ROLL[]'); } - - stack.push(b); - stack.push(a); - stack.push(c); -} - -// MAX[] MAXimum of top two stack elements -// 0x8B -function MAX(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'MAX[]', e2, e1); } - - stack.push(Math.max(e1, e2)); -} - -// MIN[] MINimum of top two stack elements -// 0x8C -function MIN(state) { - var stack = state.stack; - var e2 = stack.pop(); - var e1 = stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'MIN[]', e2, e1); } - - stack.push(Math.min(e1, e2)); -} - -// SCANTYPE[] SCANTYPE -// 0x8D -function SCANTYPE(state) { - var n = state.stack.pop(); - // ignored by opentype.js - if (exports.DEBUG) { console.log(state.step, 'SCANTYPE[]', n); } -} - -// INSTCTRL[] INSTCTRL -// 0x8D -function INSTCTRL(state) { - var s = state.stack.pop(); - var v = state.stack.pop(); - - if (exports.DEBUG) { console.log(state.step, 'INSTCTRL[]', s, v); } - - switch (s) { - case 1 : state.inhibitGridFit = !!v; return; - case 2 : state.ignoreCvt = !!v; return; - default: throw new Error('invalid INSTCTRL[] selector'); - } -} - -// PUSHB[abc] PUSH Bytes -// 0xB0-0xB7 -function PUSHB(n, state) { - var stack = state.stack; - var prog = state.prog; - var ip = state.ip; - - if (exports.DEBUG) { console.log(state.step, 'PUSHB[' + n + ']'); } - - for (var i = 0; i < n; i++) { stack.push(prog[++ip]); } - - state.ip = ip; -} - -// PUSHW[abc] PUSH Words -// 0xB8-0xBF -function PUSHW(n, state) { - var ip = state.ip; - var prog = state.prog; - var stack = state.stack; - - if (exports.DEBUG) { console.log(state.ip, 'PUSHW[' + n + ']'); } - - for (var i = 0; i < n; i++) { - var w = (prog[++ip] << 8) | prog[++ip]; - if (w & 0x8000) { w = -((w ^ 0xffff) + 1); } - stack.push(w); - } - - state.ip = ip; -} - -// MDRP[abcde] Move Direct Relative Point -// 0xD0-0xEF -// (if indirect is 0) -// -// and -// -// MIRP[abcde] Move Indirect Relative Point -// 0xE0-0xFF -// (if indirect is 1) - -function MDRP_MIRP(indirect, setRp0, keepD, ro, dt, state) { - var stack = state.stack; - var cvte = indirect && stack.pop(); - var pi = stack.pop(); - var rp0i = state.rp0; - var rp = state.z0[rp0i]; - var p = state.z1[pi]; - - var md = state.minDis; - var fv = state.fv; - var pv = state.dpv; - var od; // original distance - var d; // moving distance - var sign; // sign of distance - var cv; - - d = od = pv.distance(p, rp, true, true); - sign = d >= 0 ? 1 : -1; // Math.sign would be 0 in case of 0 - - // TODO consider autoFlip - d = Math.abs(d); - - if (indirect) { - cv = state.cvt[cvte]; - - if (ro && Math.abs(d - cv) < state.cvCutIn) { d = cv; } - } - - if (keepD && d < md) { d = md; } - - if (ro) { d = state.round(d); } - - fv.setRelative(p, rp, sign * d, pv); - fv.touch(p); - - if (exports.DEBUG) { - console.log( - state.step, - (indirect ? 'MIRP[' : 'MDRP[') + - (setRp0 ? 'M' : 'm') + - (keepD ? '>' : '_') + - (ro ? 'R' : '_') + - (dt === 0 ? 'Gr' : (dt === 1 ? 'Bl' : (dt === 2 ? 'Wh' : ''))) + - ']', - indirect ? - cvte + '(' + state.cvt[cvte] + ',' + cv + ')' : - '', - pi, - '(d =', od, '->', sign * d, ')' - ); - } - - state.rp1 = state.rp0; - state.rp2 = pi; - if (setRp0) { state.rp0 = pi; } -} - -/* -* The instruction table. -*/ -instructionTable = [ - /* 0x00 */ SVTCA.bind(undefined, yUnitVector), - /* 0x01 */ SVTCA.bind(undefined, xUnitVector), - /* 0x02 */ SPVTCA.bind(undefined, yUnitVector), - /* 0x03 */ SPVTCA.bind(undefined, xUnitVector), - /* 0x04 */ SFVTCA.bind(undefined, yUnitVector), - /* 0x05 */ SFVTCA.bind(undefined, xUnitVector), - /* 0x06 */ SPVTL.bind(undefined, 0), - /* 0x07 */ SPVTL.bind(undefined, 1), - /* 0x08 */ SFVTL.bind(undefined, 0), - /* 0x09 */ SFVTL.bind(undefined, 1), - /* 0x0A */ SPVFS, - /* 0x0B */ SFVFS, - /* 0x0C */ GPV, - /* 0x0D */ GFV, - /* 0x0E */ SFVTPV, - /* 0x0F */ ISECT, - /* 0x10 */ SRP0, - /* 0x11 */ SRP1, - /* 0x12 */ SRP2, - /* 0x13 */ SZP0, - /* 0x14 */ SZP1, - /* 0x15 */ SZP2, - /* 0x16 */ SZPS, - /* 0x17 */ SLOOP, - /* 0x18 */ RTG, - /* 0x19 */ RTHG, - /* 0x1A */ SMD, - /* 0x1B */ ELSE, - /* 0x1C */ JMPR, - /* 0x1D */ SCVTCI, - /* 0x1E */ undefined, // TODO SSWCI - /* 0x1F */ undefined, // TODO SSW - /* 0x20 */ DUP, - /* 0x21 */ POP, - /* 0x22 */ CLEAR, - /* 0x23 */ SWAP, - /* 0x24 */ DEPTH, - /* 0x25 */ CINDEX, - /* 0x26 */ MINDEX, - /* 0x27 */ undefined, // TODO ALIGNPTS - /* 0x28 */ undefined, - /* 0x29 */ undefined, // TODO UTP - /* 0x2A */ LOOPCALL, - /* 0x2B */ CALL, - /* 0x2C */ FDEF, - /* 0x2D */ undefined, // ENDF (eaten by FDEF) - /* 0x2E */ MDAP.bind(undefined, 0), - /* 0x2F */ MDAP.bind(undefined, 1), - /* 0x30 */ IUP.bind(undefined, yUnitVector), - /* 0x31 */ IUP.bind(undefined, xUnitVector), - /* 0x32 */ SHP.bind(undefined, 0), - /* 0x33 */ SHP.bind(undefined, 1), - /* 0x34 */ SHC.bind(undefined, 0), - /* 0x35 */ SHC.bind(undefined, 1), - /* 0x36 */ SHZ.bind(undefined, 0), - /* 0x37 */ SHZ.bind(undefined, 1), - /* 0x38 */ SHPIX, - /* 0x39 */ IP, - /* 0x3A */ MSIRP.bind(undefined, 0), - /* 0x3B */ MSIRP.bind(undefined, 1), - /* 0x3C */ ALIGNRP, - /* 0x3D */ RTDG, - /* 0x3E */ MIAP.bind(undefined, 0), - /* 0x3F */ MIAP.bind(undefined, 1), - /* 0x40 */ NPUSHB, - /* 0x41 */ NPUSHW, - /* 0x42 */ WS, - /* 0x43 */ RS, - /* 0x44 */ WCVTP, - /* 0x45 */ RCVT, - /* 0x46 */ GC.bind(undefined, 0), - /* 0x47 */ GC.bind(undefined, 1), - /* 0x48 */ undefined, // TODO SCFS - /* 0x49 */ MD.bind(undefined, 0), - /* 0x4A */ MD.bind(undefined, 1), - /* 0x4B */ MPPEM, - /* 0x4C */ undefined, // TODO MPS - /* 0x4D */ FLIPON, - /* 0x4E */ undefined, // TODO FLIPOFF - /* 0x4F */ undefined, // TODO DEBUG - /* 0x50 */ LT, - /* 0x51 */ LTEQ, - /* 0x52 */ GT, - /* 0x53 */ GTEQ, - /* 0x54 */ EQ, - /* 0x55 */ NEQ, - /* 0x56 */ ODD, - /* 0x57 */ EVEN, - /* 0x58 */ IF, - /* 0x59 */ EIF, - /* 0x5A */ AND, - /* 0x5B */ OR, - /* 0x5C */ NOT, - /* 0x5D */ DELTAP123.bind(undefined, 1), - /* 0x5E */ SDB, - /* 0x5F */ SDS, - /* 0x60 */ ADD, - /* 0x61 */ SUB, - /* 0x62 */ DIV, - /* 0x63 */ MUL, - /* 0x64 */ ABS, - /* 0x65 */ NEG, - /* 0x66 */ FLOOR, - /* 0x67 */ CEILING, - /* 0x68 */ ROUND.bind(undefined, 0), - /* 0x69 */ ROUND.bind(undefined, 1), - /* 0x6A */ ROUND.bind(undefined, 2), - /* 0x6B */ ROUND.bind(undefined, 3), - /* 0x6C */ undefined, // TODO NROUND[ab] - /* 0x6D */ undefined, // TODO NROUND[ab] - /* 0x6E */ undefined, // TODO NROUND[ab] - /* 0x6F */ undefined, // TODO NROUND[ab] - /* 0x70 */ WCVTF, - /* 0x71 */ DELTAP123.bind(undefined, 2), - /* 0x72 */ DELTAP123.bind(undefined, 3), - /* 0x73 */ DELTAC123.bind(undefined, 1), - /* 0x74 */ DELTAC123.bind(undefined, 2), - /* 0x75 */ DELTAC123.bind(undefined, 3), - /* 0x76 */ SROUND, - /* 0x77 */ S45ROUND, - /* 0x78 */ undefined, // TODO JROT[] - /* 0x79 */ undefined, // TODO JROF[] - /* 0x7A */ ROFF, - /* 0x7B */ undefined, - /* 0x7C */ RUTG, - /* 0x7D */ RDTG, - /* 0x7E */ POP, // actually SANGW, supposed to do only a pop though - /* 0x7F */ POP, // actually AA, supposed to do only a pop though - /* 0x80 */ undefined, // TODO FLIPPT - /* 0x81 */ undefined, // TODO FLIPRGON - /* 0x82 */ undefined, // TODO FLIPRGOFF - /* 0x83 */ undefined, - /* 0x84 */ undefined, - /* 0x85 */ SCANCTRL, - /* 0x86 */ SDPVTL.bind(undefined, 0), - /* 0x87 */ SDPVTL.bind(undefined, 1), - /* 0x88 */ GETINFO, - /* 0x89 */ undefined, // TODO IDEF - /* 0x8A */ ROLL, - /* 0x8B */ MAX, - /* 0x8C */ MIN, - /* 0x8D */ SCANTYPE, - /* 0x8E */ INSTCTRL, - /* 0x8F */ undefined, - /* 0x90 */ undefined, - /* 0x91 */ undefined, - /* 0x92 */ undefined, - /* 0x93 */ undefined, - /* 0x94 */ undefined, - /* 0x95 */ undefined, - /* 0x96 */ undefined, - /* 0x97 */ undefined, - /* 0x98 */ undefined, - /* 0x99 */ undefined, - /* 0x9A */ undefined, - /* 0x9B */ undefined, - /* 0x9C */ undefined, - /* 0x9D */ undefined, - /* 0x9E */ undefined, - /* 0x9F */ undefined, - /* 0xA0 */ undefined, - /* 0xA1 */ undefined, - /* 0xA2 */ undefined, - /* 0xA3 */ undefined, - /* 0xA4 */ undefined, - /* 0xA5 */ undefined, - /* 0xA6 */ undefined, - /* 0xA7 */ undefined, - /* 0xA8 */ undefined, - /* 0xA9 */ undefined, - /* 0xAA */ undefined, - /* 0xAB */ undefined, - /* 0xAC */ undefined, - /* 0xAD */ undefined, - /* 0xAE */ undefined, - /* 0xAF */ undefined, - /* 0xB0 */ PUSHB.bind(undefined, 1), - /* 0xB1 */ PUSHB.bind(undefined, 2), - /* 0xB2 */ PUSHB.bind(undefined, 3), - /* 0xB3 */ PUSHB.bind(undefined, 4), - /* 0xB4 */ PUSHB.bind(undefined, 5), - /* 0xB5 */ PUSHB.bind(undefined, 6), - /* 0xB6 */ PUSHB.bind(undefined, 7), - /* 0xB7 */ PUSHB.bind(undefined, 8), - /* 0xB8 */ PUSHW.bind(undefined, 1), - /* 0xB9 */ PUSHW.bind(undefined, 2), - /* 0xBA */ PUSHW.bind(undefined, 3), - /* 0xBB */ PUSHW.bind(undefined, 4), - /* 0xBC */ PUSHW.bind(undefined, 5), - /* 0xBD */ PUSHW.bind(undefined, 6), - /* 0xBE */ PUSHW.bind(undefined, 7), - /* 0xBF */ PUSHW.bind(undefined, 8), - /* 0xC0 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 0), - /* 0xC1 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 1), - /* 0xC2 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 2), - /* 0xC3 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 3), - /* 0xC4 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 0), - /* 0xC5 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 1), - /* 0xC6 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 2), - /* 0xC7 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 3), - /* 0xC8 */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 0), - /* 0xC9 */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 1), - /* 0xCA */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 2), - /* 0xCB */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 3), - /* 0xCC */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 0), - /* 0xCD */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 1), - /* 0xCE */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 2), - /* 0xCF */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 3), - /* 0xD0 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 0), - /* 0xD1 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 1), - /* 0xD2 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 2), - /* 0xD3 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 3), - /* 0xD4 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 0), - /* 0xD5 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 1), - /* 0xD6 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 2), - /* 0xD7 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 3), - /* 0xD8 */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 0), - /* 0xD9 */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 1), - /* 0xDA */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 2), - /* 0xDB */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 3), - /* 0xDC */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 0), - /* 0xDD */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 1), - /* 0xDE */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 2), - /* 0xDF */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 3), - /* 0xE0 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 0), - /* 0xE1 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 1), - /* 0xE2 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 2), - /* 0xE3 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 3), - /* 0xE4 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 0), - /* 0xE5 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 1), - /* 0xE6 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 2), - /* 0xE7 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 3), - /* 0xE8 */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 0), - /* 0xE9 */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 1), - /* 0xEA */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 2), - /* 0xEB */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 3), - /* 0xEC */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 0), - /* 0xED */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 1), - /* 0xEE */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 2), - /* 0xEF */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 3), - /* 0xF0 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 0), - /* 0xF1 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 1), - /* 0xF2 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 2), - /* 0xF3 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 3), - /* 0xF4 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 0), - /* 0xF5 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 1), - /* 0xF6 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 2), - /* 0xF7 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 3), - /* 0xF8 */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 0), - /* 0xF9 */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 1), - /* 0xFA */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 2), - /* 0xFB */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 3), - /* 0xFC */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 0), - /* 0xFD */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 1), - /* 0xFE */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 2), - /* 0xFF */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 3) -]; - -/***************************** - Mathematical Considerations -****************************** - -fv ... refers to freedom vector -pv ... refers to projection vector -rp ... refers to reference point -p ... refers to to point being operated on -d ... refers to distance - -SETRELATIVE: -============ - -case freedom vector == x-axis: ------------------------------- - - (pv) - .-' - rpd .-' - .-* - d .-'90°' - .-' ' - .-' ' - *-' ' b - rp ' - ' - ' - p *----------*-------------- (fv) - pm - - rpdx = rpx + d * pv.x - rpdy = rpy + d * pv.y - - equation of line b - - y - rpdy = pvns * (x- rpdx) - - y = p.y - - x = rpdx + ( p.y - rpdy ) / pvns - - -case freedom vector == y-axis: ------------------------------- - - * pm - |\ - | \ - | \ - | \ - | \ - | \ - | \ - | \ - | \ - | \ b - | \ - | \ - | \ .-' (pv) - | 90° \.-' - | .-'* rpd - | .-' - * *-' d - p rp - - rpdx = rpx + d * pv.x - rpdy = rpy + d * pv.y - - equation of line b: - pvns ... normal slope to pv - - y - rpdy = pvns * (x - rpdx) - - x = p.x - - y = rpdy + pvns * (p.x - rpdx) - - - -generic case: -------------- - - - .'(fv) - .' - .* pm - .' ! - .' . - .' ! - .' . b - .' ! - * . - p ! - 90° . ... (pv) - ...-*-''' - ...---''' rpd - ...---''' d - *--''' - rp - - rpdx = rpx + d * pv.x - rpdy = rpy + d * pv.y - - equation of line b: - pvns... normal slope to pv - - y - rpdy = pvns * (x - rpdx) - - equation of freedom vector line: - fvs ... slope of freedom vector (=fy/fx) - - y - py = fvs * (x - px) - - - on pm both equations are true for same x/y - - y - rpdy = pvns * (x - rpdx) - - y - py = fvs * (x - px) - - form to y and set equal: - - pvns * (x - rpdx) + rpdy = fvs * (x - px) + py - - expand: - - pvns * x - pvns * rpdx + rpdy = fvs * x - fvs * px + py - - switch: - - fvs * x - fvs * px + py = pvns * x - pvns * rpdx + rpdy - - solve for x: - - fvs * x - pvns * x = fvs * px - pvns * rpdx - py + rpdy - - - - fvs * px - pvns * rpdx + rpdy - py - x = ----------------------------------- - fvs - pvns - - and: - - y = fvs * (x - px) + py - - - -INTERPOLATE: -============ - -Examples of point interpolation. - -The weight of the movement of the reference point gets bigger -the further the other reference point is away, thus the safest -option (that is avoiding 0/0 divisions) is to weight the -original distance of the other point by the sum of both distances. - -If the sum of both distances is 0, then move the point by the -arithmetic average of the movement of both reference points. - - - - - (+6) - rp1o *---->*rp1 - . . (+12) - . . rp2o *---------->* rp2 - . . . . - . . . . - . 10 20 . . - |.........|...................| . - . . . - . . (+8) . - po *------>*p . - . . . - . 12 . 24 . - |...........|.......................| - 36 - - -------- - - - - (+10) - rp1o *-------->*rp1 - . . (-10) - . . rp2 *<---------* rpo2 - . . . . - . . . . - . 10 . 30 . . - |.........|.............................| - . . - . (+5) . - po *--->* p . - . . . - . . 20 . - |....|..............| - 5 15 - - -------- - - - (+10) - rp1o *-------->*rp1 - . . - . . - rp2o *-------->*rp2 - - - (+10) - po *-------->* p - -------- - - - (+10) - rp1o *-------->*rp1 - . . - . .(+30) - rp2o *---------------------------->*rp2 - - - (+25) - po *----------------------->* p - - - -vim: set ts=4 sw=4 expandtab: -*****/ - -/** - * Converts a string into a list of tokens. - */ - -/** - * Create a new token - * @param {string} char a single char - */ -function Token(char) { - this.char = char; - this.state = {}; - this.activeState = null; -} - -/** - * Create a new context range - * @param {number} startIndex range start index - * @param {number} endOffset range end index offset - * @param {string} contextName owner context name - */ -function ContextRange(startIndex, endOffset, contextName) { - this.contextName = contextName; - this.startIndex = startIndex; - this.endOffset = endOffset; -} - -/** - * Check context start and end - * @param {string} contextName a unique context name - * @param {function} checkStart a predicate function the indicates a context's start - * @param {function} checkEnd a predicate function the indicates a context's end - */ -function ContextChecker(contextName, checkStart, checkEnd) { - this.contextName = contextName; - this.openRange = null; - this.ranges = []; - this.checkStart = checkStart; - this.checkEnd = checkEnd; -} - -/** - * @typedef ContextParams - * @type Object - * @property {array} context context items - * @property {number} currentIndex current item index - */ - -/** - * Create a context params - * @param {array} context a list of items - * @param {number} currentIndex current item index - */ -function ContextParams(context, currentIndex) { - this.context = context; - this.index = currentIndex; - this.length = context.length; - this.current = context[currentIndex]; - this.backtrack = context.slice(0, currentIndex); - this.lookahead = context.slice(currentIndex + 1); -} - -/** - * Create an event instance - * @param {string} eventId event unique id - */ -function Event(eventId) { - this.eventId = eventId; - this.subscribers = []; -} - -/** - * Initialize a core events and auto subscribe required event handlers - * @param {any} events an object that enlists core events handlers - */ -function initializeCoreEvents(events) { - var this$1 = this; - - var coreEvents = [ - 'start', 'end', 'next', 'newToken', 'contextStart', - 'contextEnd', 'insertToken', 'removeToken', 'removeRange', - 'replaceToken', 'replaceRange', 'composeRUD', 'updateContextsRanges' - ]; - - coreEvents.forEach(function (eventId) { - Object.defineProperty(this$1.events, eventId, { - value: new Event(eventId) - }); - }); - - if (!!events) { - coreEvents.forEach(function (eventId) { - var event = events[eventId]; - if (typeof event === 'function') { - this$1.events[eventId].subscribe(event); - } - }); - } - var requiresContextUpdate = [ - 'insertToken', 'removeToken', 'removeRange', - 'replaceToken', 'replaceRange', 'composeRUD' - ]; - requiresContextUpdate.forEach(function (eventId) { - this$1.events[eventId].subscribe( - this$1.updateContextsRanges - ); - }); -} - -/** - * Converts a string into a list of tokens - * @param {any} events tokenizer core events - */ -function Tokenizer(events) { - this.tokens = []; - this.registeredContexts = {}; - this.contextCheckers = []; - this.events = {}; - this.registeredModifiers = []; - - initializeCoreEvents.call(this, events); -} - -/** - * Sets the state of a token, usually called by a state modifier. - * @param {string} key state item key - * @param {any} value state item value - */ -Token.prototype.setState = function(key, value) { - this.state[key] = value; - this.activeState = { key: key, value: this.state[key] }; - return this.activeState; -}; - -Token.prototype.getState = function (stateId) { - return this.state[stateId] || null; -}; - -/** - * Checks if an index exists in the tokens list. - * @param {number} index token index - */ -Tokenizer.prototype.inboundIndex = function(index) { - return index >= 0 && index < this.tokens.length; -}; - -/** - * Compose and apply a list of operations (replace, update, delete) - * @param {array} RUDs replace, update and delete operations - * TODO: Perf. Optimization (lengthBefore === lengthAfter ? dispatch once) - */ -Tokenizer.prototype.composeRUD = function (RUDs) { - var this$1 = this; - - var silent = true; - var state = RUDs.map(function (RUD) { return ( - this$1[RUD[0]].apply(this$1, RUD.slice(1).concat(silent)) - ); }); - var hasFAILObject = function (obj) { return ( - typeof obj === 'object' && - obj.hasOwnProperty('FAIL') - ); }; - if (state.every(hasFAILObject)) { - return { - FAIL: "composeRUD: one or more operations hasn't completed successfully", - report: state.filter(hasFAILObject) - }; - } - this.dispatch('composeRUD', [state.filter(function (op) { return !hasFAILObject(op); })]); -}; - -/** - * Replace a range of tokens with a list of tokens - * @param {number} startIndex range start index - * @param {number} offset range offset - * @param {token} tokens a list of tokens to replace - * @param {boolean} silent dispatch events and update context ranges - */ -Tokenizer.prototype.replaceRange = function (startIndex, offset, tokens, silent) { - offset = offset !== null ? offset : this.tokens.length; - var isTokenType = tokens.every(function (token) { return token instanceof Token; }); - if (!isNaN(startIndex) && this.inboundIndex(startIndex) && isTokenType) { - var replaced = this.tokens.splice.apply( - this.tokens, [startIndex, offset].concat(tokens) - ); - if (!silent) { this.dispatch('replaceToken', [startIndex, offset, tokens]); } - return [replaced, tokens]; - } else { - return { FAIL: 'replaceRange: invalid tokens or startIndex.' }; - } -}; - -/** - * Replace a token with another token - * @param {number} index token index - * @param {token} token a token to replace - * @param {boolean} silent dispatch events and update context ranges - */ -Tokenizer.prototype.replaceToken = function (index, token, silent) { - if (!isNaN(index) && this.inboundIndex(index) && token instanceof Token) { - var replaced = this.tokens.splice(index, 1, token); - if (!silent) { this.dispatch('replaceToken', [index, token]); } - return [replaced[0], token]; - } else { - return { FAIL: 'replaceToken: invalid token or index.' }; - } -}; - -/** - * Removes a range of tokens - * @param {number} startIndex range start index - * @param {number} offset range offset - * @param {boolean} silent dispatch events and update context ranges - */ -Tokenizer.prototype.removeRange = function(startIndex, offset, silent) { - offset = !isNaN(offset) ? offset : this.tokens.length; - var tokens = this.tokens.splice(startIndex, offset); - if (!silent) { this.dispatch('removeRange', [tokens, startIndex, offset]); } - return tokens; -}; - -/** - * Remove a token at a certain index - * @param {number} index token index - * @param {boolean} silent dispatch events and update context ranges - */ -Tokenizer.prototype.removeToken = function(index, silent) { - if (!isNaN(index) && this.inboundIndex(index)) { - var token = this.tokens.splice(index, 1); - if (!silent) { this.dispatch('removeToken', [token, index]); } - return token; - } else { - return { FAIL: 'removeToken: invalid token index.' }; - } -}; - -/** - * Insert a list of tokens at a certain index - * @param {array} tokens a list of tokens to insert - * @param {number} index insert the list of tokens at index - * @param {boolean} silent dispatch events and update context ranges - */ -Tokenizer.prototype.insertToken = function (tokens, index, silent) { - var tokenType = tokens.every( - function (token) { return token instanceof Token; } - ); - if (tokenType) { - this.tokens.splice.apply( - this.tokens, [index, 0].concat(tokens) - ); - if (!silent) { this.dispatch('insertToken', [tokens, index]); } - return tokens; - } else { - return { FAIL: 'insertToken: invalid token(s).' }; - } -}; - -/** - * A state modifier that is called on 'newToken' event - * @param {string} modifierId state modifier id - * @param {function} condition a predicate function that returns true or false - * @param {function} modifier a function to update token state - */ -Tokenizer.prototype.registerModifier = function(modifierId, condition, modifier) { - this.events.newToken.subscribe(function(token, contextParams) { - var conditionParams = [token, contextParams]; - var canApplyModifier = ( - condition === null || - condition.apply(this, conditionParams) === true - ); - var modifierParams = [token, contextParams]; - if (canApplyModifier) { - var newStateValue = modifier.apply(this, modifierParams); - token.setState(modifierId, newStateValue); - } - }); - this.registeredModifiers.push(modifierId); -}; - -/** - * Subscribe a handler to an event - * @param {function} eventHandler an event handler function - */ -Event.prototype.subscribe = function (eventHandler) { - if (typeof eventHandler === 'function') { - return ((this.subscribers.push(eventHandler)) - 1); - } else { - return { FAIL: ("invalid '" + (this.eventId) + "' event handler")}; - } -}; - -/** - * Unsubscribe an event handler - * @param {string} subsId subscription id - */ -Event.prototype.unsubscribe = function (subsId) { - this.subscribers.splice(subsId, 1); -}; - -/** - * Sets context params current value index - * @param {number} index context params current value index - */ -ContextParams.prototype.setCurrentIndex = function(index) { - this.index = index; - this.current = this.context[index]; - this.backtrack = this.context.slice(0, index); - this.lookahead = this.context.slice(index + 1); -}; - -/** - * Get an item at an offset from the current value - * example (current value is 3): - * 1 2 [3] 4 5 | items values - * -2 -1 0 1 2 | offset values - * @param {number} offset an offset from current value index - */ -ContextParams.prototype.get = function (offset) { - switch (true) { - case (offset === 0): - return this.current; - case (offset < 0 && Math.abs(offset) <= this.backtrack.length): - return this.backtrack.slice(offset)[0]; - case (offset > 0 && offset <= this.lookahead.length): - return this.lookahead[offset - 1]; - default: - return null; - } -}; - -/** - * Converts a context range into a string value - * @param {contextRange} range a context range - */ -Tokenizer.prototype.rangeToText = function (range) { - if (range instanceof ContextRange) { - return ( - this.getRangeTokens(range) - .map(function (token) { return token.char; }).join('') - ); - } -}; - -/** - * Converts all tokens into a string - */ -Tokenizer.prototype.getText = function () { - return this.tokens.map(function (token) { return token.char; }).join(''); -}; - -/** - * Get a context by name - * @param {string} contextName context name to get - */ -Tokenizer.prototype.getContext = function (contextName) { - var context = this.registeredContexts[contextName]; - return !!context ? context : null; -}; - -/** - * Subscribes a new event handler to an event - * @param {string} eventName event name to subscribe to - * @param {function} eventHandler a function to be invoked on event - */ -Tokenizer.prototype.on = function(eventName, eventHandler) { - var event = this.events[eventName]; - if (!!event) { - return event.subscribe(eventHandler); - } else { - return null; - } -}; - -/** - * Dispatches an event - * @param {string} eventName event name - * @param {any} args event handler arguments - */ -Tokenizer.prototype.dispatch = function(eventName, args) { - var this$1 = this; - - var event = this.events[eventName]; - if (event instanceof Event) { - event.subscribers.forEach(function (subscriber) { - subscriber.apply(this$1, args || []); - }); - } -}; - -/** - * Register a new context checker - * @param {string} contextName a unique context name - * @param {function} contextStartCheck a predicate function that returns true on context start - * @param {function} contextEndCheck a predicate function that returns true on context end - * TODO: call tokenize on registration to update context ranges with the new context. - */ -Tokenizer.prototype.registerContextChecker = function(contextName, contextStartCheck, contextEndCheck) { - if (!!this.getContext(contextName)) { return { - FAIL: - ("context name '" + contextName + "' is already registered.") - }; } - if (typeof contextStartCheck !== 'function') { return { - FAIL: - "missing context start check." - }; } - if (typeof contextEndCheck !== 'function') { return { - FAIL: - "missing context end check." - }; } - var contextCheckers = new ContextChecker( - contextName, contextStartCheck, contextEndCheck - ); - this.registeredContexts[contextName] = contextCheckers; - this.contextCheckers.push(contextCheckers); - return contextCheckers; -}; - -/** - * Gets a context range tokens - * @param {contextRange} range a context range - */ -Tokenizer.prototype.getRangeTokens = function(range) { - var endIndex = range.startIndex + range.endOffset; - return [].concat( - this.tokens - .slice(range.startIndex, endIndex) - ); -}; - -/** - * Gets the ranges of a context - * @param {string} contextName context name - */ -Tokenizer.prototype.getContextRanges = function(contextName) { - var context = this.getContext(contextName); - if (!!context) { - return context.ranges; - } else { - return { FAIL: ("context checker '" + contextName + "' is not registered.") }; - } -}; - -/** - * Resets context ranges to run context update - */ -Tokenizer.prototype.resetContextsRanges = function () { - var registeredContexts = this.registeredContexts; - for (var contextName in registeredContexts) { - if (registeredContexts.hasOwnProperty(contextName)) { - var context = registeredContexts[contextName]; - context.ranges = []; - } - } -}; - -/** - * Updates context ranges - */ -Tokenizer.prototype.updateContextsRanges = function () { - this.resetContextsRanges(); - var chars = this.tokens.map(function (token) { return token.char; }); - for (var i = 0; i < chars.length; i++) { - var contextParams = new ContextParams(chars, i); - this.runContextCheck(contextParams); - } - this.dispatch('updateContextsRanges', [this.registeredContexts]); -}; - -/** - * Sets the end offset of an open range - * @param {number} offset range end offset - * @param {string} contextName context name - */ -Tokenizer.prototype.setEndOffset = function (offset, contextName) { - var startIndex = this.getContext(contextName).openRange.startIndex; - var range = new ContextRange(startIndex, offset, contextName); - var ranges = this.getContext(contextName).ranges; - range.rangeId = contextName + "." + (ranges.length); - ranges.push(range); - this.getContext(contextName).openRange = null; - return range; -}; - -/** - * Runs a context check on the current context - * @param {contextParams} contextParams current context params - */ -Tokenizer.prototype.runContextCheck = function(contextParams) { - var this$1 = this; - - var index = contextParams.index; - this.contextCheckers.forEach(function (contextChecker) { - var contextName = contextChecker.contextName; - var openRange = this$1.getContext(contextName).openRange; - if (!openRange && contextChecker.checkStart(contextParams)) { - openRange = new ContextRange(index, null, contextName); - this$1.getContext(contextName).openRange = openRange; - this$1.dispatch('contextStart', [contextName, index]); - } - if (!!openRange && contextChecker.checkEnd(contextParams)) { - var offset = (index - openRange.startIndex) + 1; - var range = this$1.setEndOffset(offset, contextName); - this$1.dispatch('contextEnd', [contextName, range]); - } - }); -}; - -/** - * Converts a text into a list of tokens - * @param {string} text a text to tokenize - */ -Tokenizer.prototype.tokenize = function (text) { - this.tokens = []; - this.resetContextsRanges(); - var chars = Array.from(text); - this.dispatch('start'); - for (var i = 0; i < chars.length; i++) { - var char = chars[i]; - var contextParams = new ContextParams(chars, i); - this.dispatch('next', [contextParams]); - this.runContextCheck(contextParams); - var token = new Token(char); - this.tokens.push(token); - this.dispatch('newToken', [token, contextParams]); - } - this.dispatch('end', [this.tokens]); - return this.tokens; -}; - -// ╭─┄┄┄────────────────────────┄─────────────────────────────────────────────╮ -// ┊ Character Class Assertions ┊ Checks if a char belongs to a certain class ┊ -// ╰─╾──────────────────────────┄─────────────────────────────────────────────╯ -// jscs:disable maximumLineLength -/** - * Check if a char is Arabic - * @param {string} c a single char - */ -function isArabicChar(c) { - return /[\u0600-\u065F\u066A-\u06D2\u06FA-\u06FF]/.test(c); -} - -/** - * Check if a char is an isolated arabic char - * @param {string} c a single char - */ -function isIsolatedArabicChar(char) { - return /[\u0630\u0690\u0621\u0631\u0661\u0671\u0622\u0632\u0672\u0692\u06C2\u0623\u0673\u0693\u06C3\u0624\u0694\u06C4\u0625\u0675\u0695\u06C5\u06E5\u0676\u0696\u06C6\u0627\u0677\u0697\u06C7\u0648\u0688\u0698\u06C8\u0689\u0699\u06C9\u068A\u06CA\u066B\u068B\u06CB\u068C\u068D\u06CD\u06FD\u068E\u06EE\u06FE\u062F\u068F\u06CF\u06EF]/.test(char); -} - -/** - * Check if a char is an Arabic Tashkeel char - * @param {string} c a single char - */ -function isTashkeelArabicChar(char) { - return /[\u0600-\u0605\u060C-\u060E\u0610-\u061B\u061E\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED]/.test(char); -} - -/** - * Check if a char is Latin - * @param {string} c a single char - */ -function isLatinChar(c) { - return /[A-z]/.test(c); -} - -/** - * Check if a char is whitespace char - * @param {string} c a single char - */ -function isWhiteSpace(c) { - return /\s/.test(c); -} - -/** - * Query a feature by some of it's properties to lookup a glyph substitution. - */ - -/** - * Create feature query instance - * @param {Font} font opentype font instance - */ -function FeatureQuery(font) { - this.font = font; - this.features = {}; -} - -/** - * @typedef SubstitutionAction - * @type Object - * @property {number} id substitution type - * @property {string} tag feature tag - * @property {any} substitution substitution value(s) - */ - -/** - * Create a substitution action instance - * @param {SubstitutionAction} action - */ -function SubstitutionAction(action) { - this.id = action.id; - this.tag = action.tag; - this.substitution = action.substitution; -} - -/** - * Lookup a coverage table - * @param {number} glyphIndex glyph index - * @param {CoverageTable} coverage coverage table - */ -function lookupCoverage(glyphIndex, coverage) { - if (!glyphIndex) { return -1; } - switch (coverage.format) { - case 1: - return coverage.glyphs.indexOf(glyphIndex); - - case 2: - var ranges = coverage.ranges; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (glyphIndex >= range.start && glyphIndex <= range.end) { - var offset = glyphIndex - range.start; - return range.index + offset; - } - } - break; - default: - return -1; // not found - } - return -1; -} - -/** - * Handle a single substitution - format 1 - * @param {ContextParams} contextParams context params to lookup - */ -function singleSubstitutionFormat1(glyphIndex, subtable) { - var substituteIndex = lookupCoverage(glyphIndex, subtable.coverage); - if (substituteIndex === -1) { return null; } - return glyphIndex + subtable.deltaGlyphId; -} - -/** - * Handle a single substitution - format 2 - * @param {ContextParams} contextParams context params to lookup - */ -function singleSubstitutionFormat2(glyphIndex, subtable) { - var substituteIndex = lookupCoverage(glyphIndex, subtable.coverage); - if (substituteIndex === -1) { return null; } - return subtable.substitute[substituteIndex]; -} - -/** - * Lookup a list of coverage tables - * @param {any} coverageList a list of coverage tables - * @param {ContextParams} contextParams context params to lookup - */ -function lookupCoverageList(coverageList, contextParams) { - var lookupList = []; - for (var i = 0; i < coverageList.length; i++) { - var coverage = coverageList[i]; - var glyphIndex = contextParams.current; - glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex; - var lookupIndex = lookupCoverage(glyphIndex, coverage); - if (lookupIndex !== -1) { - lookupList.push(lookupIndex); - } - } - if (lookupList.length !== coverageList.length) { return -1; } - return lookupList; -} - -/** - * Handle chaining context substitution - format 3 - * @param {ContextParams} contextParams context params to lookup - */ -function chainingSubstitutionFormat3(contextParams, subtable) { - var lookupsCount = ( - subtable.inputCoverage.length + - subtable.lookaheadCoverage.length + - subtable.backtrackCoverage.length - ); - if (contextParams.context.length < lookupsCount) { return []; } - // INPUT LOOKUP // - var inputLookups = lookupCoverageList( - subtable.inputCoverage, contextParams - ); - if (inputLookups === -1) { return []; } - // LOOKAHEAD LOOKUP // - var lookaheadOffset = subtable.inputCoverage.length - 1; - if (contextParams.lookahead.length < subtable.lookaheadCoverage.length) { return []; } - var lookaheadContext = contextParams.lookahead.slice(lookaheadOffset); - while (lookaheadContext.length && isTashkeelArabicChar(lookaheadContext[0].char)) { - lookaheadContext.shift(); - } - var lookaheadParams = new ContextParams(lookaheadContext, 0); - var lookaheadLookups = lookupCoverageList( - subtable.lookaheadCoverage, lookaheadParams - ); - // BACKTRACK LOOKUP // - var backtrackContext = [].concat(contextParams.backtrack); - backtrackContext.reverse(); - while (backtrackContext.length && isTashkeelArabicChar(backtrackContext[0].char)) { - backtrackContext.shift(); - } - if (backtrackContext.length < subtable.backtrackCoverage.length) { return []; } - var backtrackParams = new ContextParams(backtrackContext, 0); - var backtrackLookups = lookupCoverageList( - subtable.backtrackCoverage, backtrackParams - ); - var contextRulesMatch = ( - inputLookups.length === subtable.inputCoverage.length && - lookaheadLookups.length === subtable.lookaheadCoverage.length && - backtrackLookups.length === subtable.backtrackCoverage.length - ); - var substitutions = []; - if (contextRulesMatch) { - for (var i = 0; i < subtable.lookupRecords.length; i++) { - var lookupRecord = subtable.lookupRecords[i]; - var lookupListIndex = lookupRecord.lookupListIndex; - var lookupTable = this.getLookupByIndex(lookupListIndex); - for (var s = 0; s < lookupTable.subtables.length; s++) { - var subtable$1 = lookupTable.subtables[s]; - var lookup = this.getLookupMethod(lookupTable, subtable$1); - var substitutionType = this.getSubstitutionType(lookupTable, subtable$1); - if (substitutionType === '12') { - for (var n = 0; n < inputLookups.length; n++) { - var glyphIndex = contextParams.get(n); - var substitution = lookup(glyphIndex); - if (substitution) { substitutions.push(substitution); } - } - } - } - } - } - return substitutions; -} - -/** - * Handle ligature substitution - format 1 - * @param {ContextParams} contextParams context params to lookup - */ -function ligatureSubstitutionFormat1(contextParams, subtable) { - // COVERAGE LOOKUP // - var glyphIndex = contextParams.current; - var ligSetIndex = lookupCoverage(glyphIndex, subtable.coverage); - if (ligSetIndex === -1) { return null; } - // COMPONENTS LOOKUP - // (!) note, components are ordered in the written direction. - var ligature; - var ligatureSet = subtable.ligatureSets[ligSetIndex]; - for (var s = 0; s < ligatureSet.length; s++) { - ligature = ligatureSet[s]; - for (var l = 0; l < ligature.components.length; l++) { - var lookaheadItem = contextParams.lookahead[l]; - var component = ligature.components[l]; - if (lookaheadItem !== component) { break; } - if (l === ligature.components.length - 1) { return ligature; } - } - } - return null; -} - -/** - * Handle decomposition substitution - format 1 - * @param {number} glyphIndex glyph index - * @param {any} subtable subtable - */ -function decompositionSubstitutionFormat1(glyphIndex, subtable) { - var substituteIndex = lookupCoverage(glyphIndex, subtable.coverage); - if (substituteIndex === -1) { return null; } - return subtable.sequences[substituteIndex]; -} - -/** - * Get default script features indexes - */ -FeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function () { - var scripts = this.font.tables.gsub.scripts; - for (var s = 0; s < scripts.length; s++) { - var script = scripts[s]; - if (script.tag === 'DFLT') { return ( - script.script.defaultLangSys.featureIndexes - ); } - } - return []; -}; - -/** - * Get feature indexes of a specific script - * @param {string} scriptTag script tag - */ -FeatureQuery.prototype.getScriptFeaturesIndexes = function(scriptTag) { - var tables = this.font.tables; - if (!tables.gsub) { return []; } - if (!scriptTag) { return this.getDefaultScriptFeaturesIndexes(); } - var scripts = this.font.tables.gsub.scripts; - for (var i = 0; i < scripts.length; i++) { - var script = scripts[i]; - if (script.tag === scriptTag && script.script.defaultLangSys) { - return script.script.defaultLangSys.featureIndexes; - } else { - var langSysRecords = script.langSysRecords; - if (!!langSysRecords) { - for (var j = 0; j < langSysRecords.length; j++) { - var langSysRecord = langSysRecords[j]; - if (langSysRecord.tag === scriptTag) { - var langSys = langSysRecord.langSys; - return langSys.featureIndexes; - } - } - } - } - } - return this.getDefaultScriptFeaturesIndexes(); -}; - -/** - * Map a feature tag to a gsub feature - * @param {any} features gsub features - * @param {string} scriptTag script tag - */ -FeatureQuery.prototype.mapTagsToFeatures = function (features, scriptTag) { - var tags = {}; - for (var i = 0; i < features.length; i++) { - var tag = features[i].tag; - var feature = features[i].feature; - tags[tag] = feature; - } - this.features[scriptTag].tags = tags; -}; - -/** - * Get features of a specific script - * @param {string} scriptTag script tag - */ -FeatureQuery.prototype.getScriptFeatures = function (scriptTag) { - var features = this.features[scriptTag]; - if (this.features.hasOwnProperty(scriptTag)) { return features; } - var featuresIndexes = this.getScriptFeaturesIndexes(scriptTag); - if (!featuresIndexes) { return null; } - var gsub = this.font.tables.gsub; - features = featuresIndexes.map(function (index) { return gsub.features[index]; }); - this.features[scriptTag] = features; - this.mapTagsToFeatures(features, scriptTag); - return features; -}; - -/** - * Get substitution type - * @param {any} lookupTable lookup table - * @param {any} subtable subtable - */ -FeatureQuery.prototype.getSubstitutionType = function(lookupTable, subtable) { - var lookupType = lookupTable.lookupType.toString(); - var substFormat = subtable.substFormat.toString(); - return lookupType + substFormat; -}; - -/** - * Get lookup method - * @param {any} lookupTable lookup table - * @param {any} subtable subtable - */ -FeatureQuery.prototype.getLookupMethod = function(lookupTable, subtable) { - var this$1 = this; - - var substitutionType = this.getSubstitutionType(lookupTable, subtable); - switch (substitutionType) { - case '11': - return function (glyphIndex) { return singleSubstitutionFormat1.apply( - this$1, [glyphIndex, subtable] - ); }; - case '12': - return function (glyphIndex) { return singleSubstitutionFormat2.apply( - this$1, [glyphIndex, subtable] - ); }; - case '63': - return function (contextParams) { return chainingSubstitutionFormat3.apply( - this$1, [contextParams, subtable] - ); }; - case '41': - return function (contextParams) { return ligatureSubstitutionFormat1.apply( - this$1, [contextParams, subtable] - ); }; - case '21': - return function (glyphIndex) { return decompositionSubstitutionFormat1.apply( - this$1, [glyphIndex, subtable] - ); }; - default: - throw new Error( - "lookupType: " + (lookupTable.lookupType) + " - " + - "substFormat: " + (subtable.substFormat) + " " + - "is not yet supported" - ); - } -}; - -/** - * [ LOOKUP TYPES ] - * ------------------------------- - * Single 1; - * Multiple 2; - * Alternate 3; - * Ligature 4; - * Context 5; - * ChainingContext 6; - * ExtensionSubstitution 7; - * ReverseChainingContext 8; - * ------------------------------- - * - */ - -/** - * @typedef FQuery - * @type Object - * @param {string} tag feature tag - * @param {string} script feature script - * @param {ContextParams} contextParams context params - */ - -/** - * Lookup a feature using a query parameters - * @param {FQuery} query feature query - */ -FeatureQuery.prototype.lookupFeature = function (query) { - var contextParams = query.contextParams; - var currentIndex = contextParams.index; - var feature = this.getFeature({ - tag: query.tag, script: query.script - }); - if (!feature) { return new Error( - "font '" + (this.font.names.fullName.en) + "' " + - "doesn't support feature '" + (query.tag) + "' " + - "for script '" + (query.script) + "'." - ); } - var lookups = this.getFeatureLookups(feature); - var substitutions = [].concat(contextParams.context); - for (var l = 0; l < lookups.length; l++) { - var lookupTable = lookups[l]; - var subtables = this.getLookupSubtables(lookupTable); - for (var s = 0; s < subtables.length; s++) { - var subtable = subtables[s]; - var substType = this.getSubstitutionType(lookupTable, subtable); - var lookup = this.getLookupMethod(lookupTable, subtable); - var substitution = (void 0); - switch (substType) { - case '11': - substitution = lookup(contextParams.current); - if (substitution) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 11, tag: query.tag, substitution: substitution - })); - } - break; - case '12': - substitution = lookup(contextParams.current); - if (substitution) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 12, tag: query.tag, substitution: substitution - })); - } - break; - case '63': - substitution = lookup(contextParams); - if (Array.isArray(substitution) && substitution.length) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 63, tag: query.tag, substitution: substitution - })); - } - break; - case '41': - substitution = lookup(contextParams); - if (substitution) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 41, tag: query.tag, substitution: substitution - })); - } - break; - case '21': - substitution = lookup(contextParams.current); - if (substitution) { - substitutions.splice(currentIndex, 1, new SubstitutionAction({ - id: 21, tag: query.tag, substitution: substitution - })); - } - break; - } - contextParams = new ContextParams(substitutions, currentIndex); - if (Array.isArray(substitution) && !substitution.length) { continue; } - substitution = null; - } - } - return substitutions.length ? substitutions : null; -}; - -/** - * Checks if a font supports a specific features - * @param {FQuery} query feature query object - */ -FeatureQuery.prototype.supports = function (query) { - if (!query.script) { return false; } - this.getScriptFeatures(query.script); - var supportedScript = this.features.hasOwnProperty(query.script); - if (!query.tag) { return supportedScript; } - var supportedFeature = ( - this.features[query.script].some(function (feature) { return feature.tag === query.tag; }) - ); - return supportedScript && supportedFeature; -}; - -/** - * Get lookup table subtables - * @param {any} lookupTable lookup table - */ -FeatureQuery.prototype.getLookupSubtables = function (lookupTable) { - return lookupTable.subtables || null; -}; - -/** - * Get lookup table by index - * @param {number} index lookup table index - */ -FeatureQuery.prototype.getLookupByIndex = function (index) { - var lookups = this.font.tables.gsub.lookups; - return lookups[index] || null; -}; - -/** - * Get lookup tables for a feature - * @param {string} feature - */ -FeatureQuery.prototype.getFeatureLookups = function (feature) { - // TODO: memoize - return feature.lookupListIndexes.map(this.getLookupByIndex.bind(this)); -}; - -/** - * Query a feature by it's properties - * @param {any} query an object that describes the properties of a query - */ -FeatureQuery.prototype.getFeature = function getFeature(query) { - if (!this.font) { return { FAIL: "No font was found"}; } - if (!this.features.hasOwnProperty(query.script)) { - this.getScriptFeatures(query.script); - } - var scriptFeatures = this.features[query.script]; - if (!scriptFeatures) { return ( - { FAIL: ("No feature for script " + (query.script))} - ); } - if (!scriptFeatures.tags[query.tag]) { return null; } - return this.features[query.script].tags[query.tag]; -}; - -/** - * Arabic word context checkers - */ - -function arabicWordStartCheck(contextParams) { - var char = contextParams.current; - var prevChar = contextParams.get(-1); - return ( - // ? arabic first char - (prevChar === null && isArabicChar(char)) || - // ? arabic char preceded with a non arabic char - (!isArabicChar(prevChar) && isArabicChar(char)) - ); -} - -function arabicWordEndCheck(contextParams) { - var nextChar = contextParams.get(1); - return ( - // ? last arabic char - (nextChar === null) || - // ? next char is not arabic - (!isArabicChar(nextChar)) - ); -} - -var arabicWordCheck = { - startCheck: arabicWordStartCheck, - endCheck: arabicWordEndCheck -}; - -/** - * Arabic sentence context checkers - */ - -function arabicSentenceStartCheck(contextParams) { - var char = contextParams.current; - var prevChar = contextParams.get(-1); - return ( - // ? an arabic char preceded with a non arabic char - (isArabicChar(char) || isTashkeelArabicChar(char)) && - !isArabicChar(prevChar) - ); -} - -function arabicSentenceEndCheck(contextParams) { - var nextChar = contextParams.get(1); - switch (true) { - case nextChar === null: - return true; - case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)): - var nextIsWhitespace = isWhiteSpace(nextChar); - if (!nextIsWhitespace) { return true; } - if (nextIsWhitespace) { - var arabicCharAhead = false; - arabicCharAhead = ( - contextParams.lookahead.some( - function (c) { return isArabicChar(c) || isTashkeelArabicChar(c); } - ) - ); - if (!arabicCharAhead) { return true; } - } - break; - default: - return false; - } -} - -var arabicSentenceCheck = { - startCheck: arabicSentenceStartCheck, - endCheck: arabicSentenceEndCheck -}; - -/** - * Apply single substitution format 1 - * @param {Array} substitutions substitutions - * @param {any} tokens a list of tokens - * @param {number} index token index - */ -function singleSubstitutionFormat1$1(action, tokens, index) { - tokens[index].setState(action.tag, action.substitution); -} - -/** - * Apply single substitution format 2 - * @param {Array} substitutions substitutions - * @param {any} tokens a list of tokens - * @param {number} index token index - */ -function singleSubstitutionFormat2$1(action, tokens, index) { - tokens[index].setState(action.tag, action.substitution); -} - -/** - * Apply chaining context substitution format 3 - * @param {Array} substitutions substitutions - * @param {any} tokens a list of tokens - * @param {number} index token index - */ -function chainingSubstitutionFormat3$1(action, tokens, index) { - action.substitution.forEach(function (subst, offset) { - var token = tokens[index + offset]; - token.setState(action.tag, subst); - }); -} - -/** - * Apply ligature substitution format 1 - * @param {Array} substitutions substitutions - * @param {any} tokens a list of tokens - * @param {number} index token index - */ -function ligatureSubstitutionFormat1$1(action, tokens, index) { - var token = tokens[index]; - token.setState(action.tag, action.substitution.ligGlyph); - var compsCount = action.substitution.components.length; - for (var i = 0; i < compsCount; i++) { - token = tokens[index + i + 1]; - token.setState('deleted', true); - } -} - -/** - * Supported substitutions - */ -var SUBSTITUTIONS = { - 11: singleSubstitutionFormat1$1, - 12: singleSubstitutionFormat2$1, - 63: chainingSubstitutionFormat3$1, - 41: ligatureSubstitutionFormat1$1 -}; - -/** - * Apply substitutions to a list of tokens - * @param {Array} substitutions substitutions - * @param {any} tokens a list of tokens - * @param {number} index token index - */ -function applySubstitution(action, tokens, index) { - if (action instanceof SubstitutionAction && SUBSTITUTIONS[action.id]) { - SUBSTITUTIONS[action.id](action, tokens, index); - } -} - -/** - * Apply Arabic presentation forms to a range of tokens - */ - -/** - * Check if a char can be connected to it's preceding char - * @param {ContextParams} charContextParams context params of a char - */ -function willConnectPrev(charContextParams) { - var backtrack = [].concat(charContextParams.backtrack); - for (var i = backtrack.length - 1; i >= 0; i--) { - var prevChar = backtrack[i]; - var isolated = isIsolatedArabicChar(prevChar); - var tashkeel = isTashkeelArabicChar(prevChar); - if (!isolated && !tashkeel) { return true; } - if (isolated) { return false; } - } - return false; -} - -/** - * Check if a char can be connected to it's proceeding char - * @param {ContextParams} charContextParams context params of a char - */ -function willConnectNext(charContextParams) { - if (isIsolatedArabicChar(charContextParams.current)) { return false; } - for (var i = 0; i < charContextParams.lookahead.length; i++) { - var nextChar = charContextParams.lookahead[i]; - var tashkeel = isTashkeelArabicChar(nextChar); - if (!tashkeel) { return true; } - } - return false; -} - -/** - * Apply arabic presentation forms to a list of tokens - * @param {ContextRange} range a range of tokens - */ -function arabicPresentationForms(range) { - var this$1 = this; - - var script = 'arab'; - var tags = this.featuresTags[script]; - var tokens = this.tokenizer.getRangeTokens(range); - if (tokens.length === 1) { return; } - var contextParams = new ContextParams( - tokens.map(function (token) { return token.getState('glyphIndex'); } - ), 0); - var charContextParams = new ContextParams( - tokens.map(function (token) { return token.char; } - ), 0); - tokens.forEach(function (token, index) { - if (isTashkeelArabicChar(token.char)) { return; } - contextParams.setCurrentIndex(index); - charContextParams.setCurrentIndex(index); - var CONNECT = 0; // 2 bits 00 (10: can connect next) (01: can connect prev) - if (willConnectPrev(charContextParams)) { CONNECT |= 1; } - if (willConnectNext(charContextParams)) { CONNECT |= 2; } - var tag; - switch (CONNECT) { - case 1: (tag = 'fina'); break; - case 2: (tag = 'init'); break; - case 3: (tag = 'medi'); break; - } - if (tags.indexOf(tag) === -1) { return; } - var substitutions = this$1.query.lookupFeature({ - tag: tag, script: script, contextParams: contextParams - }); - if (substitutions instanceof Error) { return console.info(substitutions.message); } - substitutions.forEach(function (action, index) { - if (action instanceof SubstitutionAction) { - applySubstitution(action, tokens, index); - contextParams.context[index] = action.substitution; - } - }); - }); -} - -/** - * Apply Arabic required ligatures feature to a range of tokens - */ - -/** - * Update context params - * @param {any} tokens a list of tokens - * @param {number} index current item index - */ -function getContextParams(tokens, index) { - var context = tokens.map(function (token) { return token.activeState.value; }); - return new ContextParams(context, index || 0); -} - -/** - * Apply Arabic required ligatures to a context range - * @param {ContextRange} range a range of tokens - */ -function arabicRequiredLigatures(range) { - var this$1 = this; - - var script = 'arab'; - var tokens = this.tokenizer.getRangeTokens(range); - var contextParams = getContextParams(tokens); - contextParams.context.forEach(function (glyphIndex, index) { - contextParams.setCurrentIndex(index); - var substitutions = this$1.query.lookupFeature({ - tag: 'rlig', script: script, contextParams: contextParams - }); - if (substitutions.length) { - substitutions.forEach( - function (action) { return applySubstitution(action, tokens, index); } - ); - contextParams = getContextParams(tokens); - } - }); -} - -/** - * Latin word context checkers - */ - -function latinWordStartCheck(contextParams) { - var char = contextParams.current; - var prevChar = contextParams.get(-1); - return ( - // ? latin first char - (prevChar === null && isLatinChar(char)) || - // ? latin char preceded with a non latin char - (!isLatinChar(prevChar) && isLatinChar(char)) - ); -} - -function latinWordEndCheck(contextParams) { - var nextChar = contextParams.get(1); - return ( - // ? last latin char - (nextChar === null) || - // ? next char is not latin - (!isLatinChar(nextChar)) - ); -} - -var latinWordCheck = { - startCheck: latinWordStartCheck, - endCheck: latinWordEndCheck -}; - -/** - * Apply Latin ligature feature to a range of tokens - */ - -/** - * Update context params - * @param {any} tokens a list of tokens - * @param {number} index current item index - */ -function getContextParams$1(tokens, index) { - var context = tokens.map(function (token) { return token.activeState.value; }); - return new ContextParams(context, index || 0); -} - -/** - * Apply Arabic required ligatures to a context range - * @param {ContextRange} range a range of tokens - */ -function latinLigature(range) { - var this$1 = this; - - var script = 'latn'; - var tokens = this.tokenizer.getRangeTokens(range); - var contextParams = getContextParams$1(tokens); - contextParams.context.forEach(function (glyphIndex, index) { - contextParams.setCurrentIndex(index); - var substitutions = this$1.query.lookupFeature({ - tag: 'liga', script: script, contextParams: contextParams - }); - if (substitutions.length) { - substitutions.forEach( - function (action) { return applySubstitution(action, tokens, index); } - ); - contextParams = getContextParams$1(tokens); - } - }); -} - -/** - * Infer bidirectional properties for a given text and apply - * the corresponding layout rules. - */ - -/** - * Create Bidi. features - * @param {string} baseDir text base direction. value either 'ltr' or 'rtl' - */ -function Bidi(baseDir) { - this.baseDir = baseDir || 'ltr'; - this.tokenizer = new Tokenizer(); - this.featuresTags = {}; -} - -/** - * Sets Bidi text - * @param {string} text a text input - */ -Bidi.prototype.setText = function (text) { - this.text = text; -}; - -/** - * Store essential context checks: - * arabic word check for applying gsub features - * arabic sentence check for adjusting arabic layout - */ -Bidi.prototype.contextChecks = ({ - latinWordCheck: latinWordCheck, - arabicWordCheck: arabicWordCheck, - arabicSentenceCheck: arabicSentenceCheck -}); - -/** - * Register arabic word check - */ -function registerContextChecker(checkId) { - var check = this.contextChecks[(checkId + "Check")]; - return this.tokenizer.registerContextChecker( - checkId, check.startCheck, check.endCheck - ); -} - -/** - * Perform pre tokenization procedure then - * tokenize text input - */ -function tokenizeText() { - registerContextChecker.call(this, 'latinWord'); - registerContextChecker.call(this, 'arabicWord'); - registerContextChecker.call(this, 'arabicSentence'); - return this.tokenizer.tokenize(this.text); -} - -/** - * Reverse arabic sentence layout - * TODO: check base dir before applying adjustments - priority low - */ -function reverseArabicSentences() { - var this$1 = this; - - var ranges = this.tokenizer.getContextRanges('arabicSentence'); - ranges.forEach(function (range) { - var rangeTokens = this$1.tokenizer.getRangeTokens(range); - this$1.tokenizer.replaceRange( - range.startIndex, - range.endOffset, - rangeTokens.reverse() - ); - }); -} - -/** - * Register supported features tags - * @param {script} script script tag - * @param {Array} tags features tags list - */ -Bidi.prototype.registerFeatures = function (script, tags) { - var this$1 = this; - - var supportedTags = tags.filter( - function (tag) { return this$1.query.supports({script: script, tag: tag}); } - ); - if (!this.featuresTags.hasOwnProperty(script)) { - this.featuresTags[script] = supportedTags; - } else { - this.featuresTags[script] = - this.featuresTags[script].concat(supportedTags); - } -}; - -/** - * Apply GSUB features - * @param {Array} tagsList a list of features tags - * @param {string} script a script tag - * @param {Font} font opentype font instance - */ -Bidi.prototype.applyFeatures = function (font, features) { - if (!font) { throw new Error( - 'No valid font was provided to apply features' - ); } - if (!this.query) { this.query = new FeatureQuery(font); } - for (var f = 0; f < features.length; f++) { - var feature = features[f]; - if (!this.query.supports({script: feature.script})) { continue; } - this.registerFeatures(feature.script, feature.tags); - } -}; - -/** - * Register a state modifier - * @param {string} modifierId state modifier id - * @param {function} condition a predicate function that returns true or false - * @param {function} modifier a modifier function to set token state - */ -Bidi.prototype.registerModifier = function (modifierId, condition, modifier) { - this.tokenizer.registerModifier(modifierId, condition, modifier); -}; - -/** - * Check if 'glyphIndex' is registered - */ -function checkGlyphIndexStatus() { - if (this.tokenizer.registeredModifiers.indexOf('glyphIndex') === -1) { - throw new Error( - 'glyphIndex modifier is required to apply ' + - 'arabic presentation features.' - ); - } -} - -/** - * Apply arabic presentation forms features - */ -function applyArabicPresentationForms() { - var this$1 = this; - - var script = 'arab'; - if (!this.featuresTags.hasOwnProperty(script)) { return; } - checkGlyphIndexStatus.call(this); - var ranges = this.tokenizer.getContextRanges('arabicWord'); - ranges.forEach(function (range) { - arabicPresentationForms.call(this$1, range); - }); -} - -/** - * Apply required arabic ligatures - */ -function applyArabicRequireLigatures() { - var this$1 = this; - - var script = 'arab'; - if (!this.featuresTags.hasOwnProperty(script)) { return; } - var tags = this.featuresTags[script]; - if (tags.indexOf('rlig') === -1) { return; } - checkGlyphIndexStatus.call(this); - var ranges = this.tokenizer.getContextRanges('arabicWord'); - ranges.forEach(function (range) { - arabicRequiredLigatures.call(this$1, range); - }); -} - -/** - * Apply required arabic ligatures - */ -function applyLatinLigatures() { - var this$1 = this; - - var script = 'latn'; - if (!this.featuresTags.hasOwnProperty(script)) { return; } - var tags = this.featuresTags[script]; - if (tags.indexOf('liga') === -1) { return; } - checkGlyphIndexStatus.call(this); - var ranges = this.tokenizer.getContextRanges('latinWord'); - ranges.forEach(function (range) { - latinLigature.call(this$1, range); - }); -} - -/** - * Check if a context is registered - * @param {string} contextId context id - */ -Bidi.prototype.checkContextReady = function (contextId) { - return !!this.tokenizer.getContext(contextId); -}; - -/** - * Apply features to registered contexts - */ -Bidi.prototype.applyFeaturesToContexts = function () { - if (this.checkContextReady('arabicWord')) { - applyArabicPresentationForms.call(this); - applyArabicRequireLigatures.call(this); - } - if (this.checkContextReady('latinWord')) { - applyLatinLigatures.call(this); - } - if (this.checkContextReady('arabicSentence')) { - reverseArabicSentences.call(this); - } -}; - -/** - * process text input - * @param {string} text an input text - */ -Bidi.prototype.processText = function(text) { - if (!this.text || this.text !== text) { - this.setText(text); - tokenizeText.call(this); - this.applyFeaturesToContexts(); - } -}; - -/** - * Process a string of text to identify and adjust - * bidirectional text entities. - * @param {string} text input text - */ -Bidi.prototype.getBidiText = function (text) { - this.processText(text); - return this.tokenizer.getText(); -}; - -/** - * Get the current state index of each token - * @param {text} text an input text - */ -Bidi.prototype.getTextGlyphs = function (text) { - this.processText(text); - var indexes = []; - for (var i = 0; i < this.tokenizer.tokens.length; i++) { - var token = this.tokenizer.tokens[i]; - if (token.state.deleted) { continue; } - var index = token.activeState.value; - indexes.push(Array.isArray(index) ? index[0] : index); - } - return indexes; -}; - -// The Font object - -/** - * @typedef FontOptions - * @type Object - * @property {Boolean} empty - whether to create a new empty font - * @property {string} familyName - * @property {string} styleName - * @property {string=} fullName - * @property {string=} postScriptName - * @property {string=} designer - * @property {string=} designerURL - * @property {string=} manufacturer - * @property {string=} manufacturerURL - * @property {string=} license - * @property {string=} licenseURL - * @property {string=} version - * @property {string=} description - * @property {string=} copyright - * @property {string=} trademark - * @property {Number} unitsPerEm - * @property {Number} ascender - * @property {Number} descender - * @property {Number} createdTimestamp - * @property {string=} weightClass - * @property {string=} widthClass - * @property {string=} fsSelection - */ - -/** - * A Font represents a loaded OpenType font file. - * It contains a set of glyphs and methods to draw text on a drawing context, - * or to get a path representing the text. - * @exports opentype.Font - * @class - * @param {FontOptions} - * @constructor - */ -function Font(options) { - options = options || {}; - options.tables = options.tables || {}; - - if (!options.empty) { - // Check that we've provided the minimum set of names. - checkArgument(options.familyName, 'When creating a new Font object, familyName is required.'); - checkArgument(options.styleName, 'When creating a new Font object, styleName is required.'); - checkArgument(options.unitsPerEm, 'When creating a new Font object, unitsPerEm is required.'); - checkArgument(options.ascender, 'When creating a new Font object, ascender is required.'); - checkArgument(options.descender <= 0, 'When creating a new Font object, negative descender value is required.'); - - // OS X will complain if the names are empty, so we put a single space everywhere by default. - this.names = { - fontFamily: {en: options.familyName || ' '}, - fontSubfamily: {en: options.styleName || ' '}, - fullName: {en: options.fullName || options.familyName + ' ' + options.styleName}, - // postScriptName may not contain any whitespace - postScriptName: {en: options.postScriptName || (options.familyName + options.styleName).replace(/\s/g, '')}, - designer: {en: options.designer || ' '}, - designerURL: {en: options.designerURL || ' '}, - manufacturer: {en: options.manufacturer || ' '}, - manufacturerURL: {en: options.manufacturerURL || ' '}, - license: {en: options.license || ' '}, - licenseURL: {en: options.licenseURL || ' '}, - version: {en: options.version || 'Version 0.1'}, - description: {en: options.description || ' '}, - copyright: {en: options.copyright || ' '}, - trademark: {en: options.trademark || ' '} - }; - this.unitsPerEm = options.unitsPerEm || 1000; - this.ascender = options.ascender; - this.descender = options.descender; - this.createdTimestamp = options.createdTimestamp; - this.tables = Object.assign(options.tables, { - os2: Object.assign({ - usWeightClass: options.weightClass || this.usWeightClasses.MEDIUM, - usWidthClass: options.widthClass || this.usWidthClasses.MEDIUM, - fsSelection: options.fsSelection || this.fsSelectionValues.REGULAR, - }, options.tables.os2) - }); - } - - this.supported = true; // Deprecated: parseBuffer will throw an error if font is not supported. - this.glyphs = new glyphset.GlyphSet(this, options.glyphs || []); - this.encoding = new DefaultEncoding(this); - this.position = new Position(this); - this.substitution = new Substitution(this); - this.tables = this.tables || {}; - - // needed for low memory mode only. - this._push = null; - this._hmtxTableData = {}; - - Object.defineProperty(this, 'hinting', { - get: function() { - if (this._hinting) { return this._hinting; } - if (this.outlinesFormat === 'truetype') { - return (this._hinting = new Hinting(this)); - } - } - }); -} - -/** - * Check if the font has a glyph for the given character. - * @param {string} - * @return {Boolean} - */ -Font.prototype.hasChar = function(c) { - return this.encoding.charToGlyphIndex(c) !== null; -}; - -/** - * Convert the given character to a single glyph index. - * Note that this function assumes that there is a one-to-one mapping between - * the given character and a glyph; for complex scripts this might not be the case. - * @param {string} - * @return {Number} - */ -Font.prototype.charToGlyphIndex = function(s) { - return this.encoding.charToGlyphIndex(s); -}; - -/** - * Convert the given character to a single Glyph object. - * Note that this function assumes that there is a one-to-one mapping between - * the given character and a glyph; for complex scripts this might not be the case. - * @param {string} - * @return {opentype.Glyph} - */ -Font.prototype.charToGlyph = function(c) { - var glyphIndex = this.charToGlyphIndex(c); - var glyph = this.glyphs.get(glyphIndex); - if (!glyph) { - // .notdef - glyph = this.glyphs.get(0); - } - - return glyph; -}; - -/** - * Update features - * @param {any} options features options - */ -Font.prototype.updateFeatures = function (options) { - // TODO: update all features options not only 'latn'. - return this.defaultRenderOptions.features.map(function (feature) { - if (feature.script === 'latn') { - return { - script: 'latn', - tags: feature.tags.filter(function (tag) { return options[tag]; }) - }; - } else { - return feature; - } - }); -}; - -/** - * Convert the given text to a list of Glyph objects. - * Note that there is no strict one-to-one mapping between characters and - * glyphs, so the list of returned glyphs can be larger or smaller than the - * length of the given string. - * @param {string} - * @param {GlyphRenderOptions} [options] - * @return {opentype.Glyph[]} - */ -Font.prototype.stringToGlyphs = function(s, options) { - var this$1 = this; - - - var bidi = new Bidi(); - - // Create and register 'glyphIndex' state modifier - var charToGlyphIndexMod = function (token) { return this$1.charToGlyphIndex(token.char); }; - bidi.registerModifier('glyphIndex', null, charToGlyphIndexMod); - - // roll-back to default features - var features = options ? - this.updateFeatures(options.features) : - this.defaultRenderOptions.features; - - bidi.applyFeatures(this, features); - - var indexes = bidi.getTextGlyphs(s); - - var length = indexes.length; - - // convert glyph indexes to glyph objects - var glyphs = new Array(length); - var notdef = this.glyphs.get(0); - for (var i = 0; i < length; i += 1) { - glyphs[i] = this.glyphs.get(indexes[i]) || notdef; - } - return glyphs; -}; - -/** - * @param {string} - * @return {Number} - */ -Font.prototype.nameToGlyphIndex = function(name) { - return this.glyphNames.nameToGlyphIndex(name); -}; - -/** - * @param {string} - * @return {opentype.Glyph} - */ -Font.prototype.nameToGlyph = function(name) { - var glyphIndex = this.nameToGlyphIndex(name); - var glyph = this.glyphs.get(glyphIndex); - if (!glyph) { - // .notdef - glyph = this.glyphs.get(0); - } - - return glyph; -}; - -/** - * @param {Number} - * @return {String} - */ -Font.prototype.glyphIndexToName = function(gid) { - if (!this.glyphNames.glyphIndexToName) { - return ''; - } - - return this.glyphNames.glyphIndexToName(gid); -}; - -/** - * Retrieve the value of the kerning pair between the left glyph (or its index) - * and the right glyph (or its index). If no kerning pair is found, return 0. - * The kerning value gets added to the advance width when calculating the spacing - * between glyphs. - * For GPOS kerning, this method uses the default script and language, which covers - * most use cases. To have greater control, use font.position.getKerningValue . - * @param {opentype.Glyph} leftGlyph - * @param {opentype.Glyph} rightGlyph - * @return {Number} - */ -Font.prototype.getKerningValue = function(leftGlyph, rightGlyph) { - leftGlyph = leftGlyph.index || leftGlyph; - rightGlyph = rightGlyph.index || rightGlyph; - var gposKerning = this.position.defaultKerningTables; - if (gposKerning) { - return this.position.getKerningValue(gposKerning, leftGlyph, rightGlyph); - } - // "kern" table - return this.kerningPairs[leftGlyph + ',' + rightGlyph] || 0; -}; - -/** - * @typedef GlyphRenderOptions - * @type Object - * @property {string} [script] - script used to determine which features to apply. By default, 'DFLT' or 'latn' is used. - * See https://www.microsoft.com/typography/otspec/scripttags.htm - * @property {string} [language='dflt'] - language system used to determine which features to apply. - * See https://www.microsoft.com/typography/developers/opentype/languagetags.aspx - * @property {boolean} [kerning=true] - whether to include kerning values - * @property {object} [features] - OpenType Layout feature tags. Used to enable or disable the features of the given script/language system. - * See https://www.microsoft.com/typography/otspec/featuretags.htm - */ -Font.prototype.defaultRenderOptions = { - kerning: true, - features: [ - /** - * these 4 features are required to render Arabic text properly - * and shouldn't be turned off when rendering arabic text. - */ - { script: 'arab', tags: ['init', 'medi', 'fina', 'rlig'] }, - { script: 'latn', tags: ['liga', 'rlig'] } - ] -}; - -/** - * Helper function that invokes the given callback for each glyph in the given text. - * The callback gets `(glyph, x, y, fontSize, options)`.* @param {string} text - * @param {string} text - The text to apply. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {GlyphRenderOptions=} options - * @param {Function} callback - */ -Font.prototype.forEachGlyph = function(text, x, y, fontSize, options, callback) { - x = x !== undefined ? x : 0; - y = y !== undefined ? y : 0; - fontSize = fontSize !== undefined ? fontSize : 72; - options = Object.assign({}, this.defaultRenderOptions, options); - var fontScale = 1 / this.unitsPerEm * fontSize; - var glyphs = this.stringToGlyphs(text, options); - var kerningLookups; - if (options.kerning) { - var script = options.script || this.position.getDefaultScriptName(); - kerningLookups = this.position.getKerningTables(script, options.language); - } - for (var i = 0; i < glyphs.length; i += 1) { - var glyph = glyphs[i]; - callback.call(this, glyph, x, y, fontSize, options); - if (glyph.advanceWidth) { - x += glyph.advanceWidth * fontScale; - } - - if (options.kerning && i < glyphs.length - 1) { - // We should apply position adjustment lookups in a more generic way. - // Here we only use the xAdvance value. - var kerningValue = kerningLookups ? - this.position.getKerningValue(kerningLookups, glyph.index, glyphs[i + 1].index) : - this.getKerningValue(glyph, glyphs[i + 1]); - x += kerningValue * fontScale; - } - - if (options.letterSpacing) { - x += options.letterSpacing * fontSize; - } else if (options.tracking) { - x += (options.tracking / 1000) * fontSize; - } - } - return x; -}; - -/** - * Create a Path object that represents the given text. - * @param {string} text - The text to create. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {GlyphRenderOptions=} options - * @return {opentype.Path} - */ -Font.prototype.getPath = function(text, x, y, fontSize, options) { - var fullPath = new Path(); - this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) { - var glyphPath = glyph.getPath(gX, gY, gFontSize, options, this); - fullPath.extend(glyphPath); - }); - return fullPath; -}; - -/** - * Create an array of Path objects that represent the glyphs of a given text. - * @param {string} text - The text to create. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {GlyphRenderOptions=} options - * @return {opentype.Path[]} - */ -Font.prototype.getPaths = function(text, x, y, fontSize, options) { - var glyphPaths = []; - this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) { - var glyphPath = glyph.getPath(gX, gY, gFontSize, options, this); - glyphPaths.push(glyphPath); - }); - - return glyphPaths; -}; - -/** - * Returns the advance width of a text. - * - * This is something different than Path.getBoundingBox() as for example a - * suffixed whitespace increases the advanceWidth but not the bounding box - * or an overhanging letter like a calligraphic 'f' might have a quite larger - * bounding box than its advance width. - * - * This corresponds to canvas2dContext.measureText(text).width - * - * @param {string} text - The text to create. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {GlyphRenderOptions=} options - * @return advance width - */ -Font.prototype.getAdvanceWidth = function(text, fontSize, options) { - return this.forEachGlyph(text, 0, 0, fontSize, options, function() {}); -}; - -/** - * Draw the text on the given drawing context. - * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas. - * @param {string} text - The text to create. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {GlyphRenderOptions=} options - */ -Font.prototype.draw = function(ctx, text, x, y, fontSize, options) { - this.getPath(text, x, y, fontSize, options).draw(ctx); -}; - -/** - * Draw the points of all glyphs in the text. - * On-curve points will be drawn in blue, off-curve points will be drawn in red. - * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas. - * @param {string} text - The text to create. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {GlyphRenderOptions=} options - */ -Font.prototype.drawPoints = function(ctx, text, x, y, fontSize, options) { - this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) { - glyph.drawPoints(ctx, gX, gY, gFontSize); - }); -}; - -/** - * Draw lines indicating important font measurements for all glyphs in the text. - * Black lines indicate the origin of the coordinate system (point 0,0). - * Blue lines indicate the glyph bounding box. - * Green line indicates the advance width of the glyph. - * @param {CanvasRenderingContext2D} ctx - A 2D drawing context, like Canvas. - * @param {string} text - The text to create. - * @param {number} [x=0] - Horizontal position of the beginning of the text. - * @param {number} [y=0] - Vertical position of the *baseline* of the text. - * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`. - * @param {GlyphRenderOptions=} options - */ -Font.prototype.drawMetrics = function(ctx, text, x, y, fontSize, options) { - this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) { - glyph.drawMetrics(ctx, gX, gY, gFontSize); - }); -}; - -/** - * @param {string} - * @return {string} - */ -Font.prototype.getEnglishName = function(name) { - var translations = this.names[name]; - if (translations) { - return translations.en; - } -}; - -/** - * Validate - */ -Font.prototype.validate = function() { - var _this = this; - - function assert(predicate, message) { - } - - function assertNamePresent(name) { - var englishName = _this.getEnglishName(name); - assert(englishName && englishName.trim().length > 0); - } - - // Identification information - assertNamePresent('fontFamily'); - assertNamePresent('weightName'); - assertNamePresent('manufacturer'); - assertNamePresent('copyright'); - assertNamePresent('version'); - - // Dimension information - assert(this.unitsPerEm > 0); -}; - -/** - * Convert the font object to a SFNT data structure. - * This structure contains all the necessary tables and metadata to create a binary OTF file. - * @return {opentype.Table} - */ -Font.prototype.toTables = function() { - return sfnt.fontToTable(this); -}; -/** - * @deprecated Font.toBuffer is deprecated. Use Font.toArrayBuffer instead. - */ -Font.prototype.toBuffer = function() { - console.warn('Font.toBuffer is deprecated. Use Font.toArrayBuffer instead.'); - return this.toArrayBuffer(); -}; -/** - * Converts a `opentype.Font` into an `ArrayBuffer` - * @return {ArrayBuffer} - */ -Font.prototype.toArrayBuffer = function() { - var sfntTable = this.toTables(); - var bytes = sfntTable.encode(); - var buffer = new ArrayBuffer(bytes.length); - var intArray = new Uint8Array(buffer); - for (var i = 0; i < bytes.length; i++) { - intArray[i] = bytes[i]; - } - - return buffer; -}; - -/** - * Initiate a download of the OpenType font. - */ -Font.prototype.download = function(fileName) { - var familyName = this.getEnglishName('fontFamily'); - var styleName = this.getEnglishName('fontSubfamily'); - fileName = fileName || familyName.replace(/\s/g, '') + '-' + styleName + '.otf'; - var arrayBuffer = this.toArrayBuffer(); - - window.URL = window.URL || window.webkitURL; - - if (window.URL) { - var dataView = new DataView(arrayBuffer); - var blob = new Blob([dataView], {type: 'font/opentype'}); - - var link = document.createElement('a'); - link.href = window.URL.createObjectURL(blob); - link.download = fileName; - - var event = document.createEvent('MouseEvents'); - event.initEvent('click', true, false); - link.dispatchEvent(event); - } else { - console.warn('Font file could not be downloaded. Try using a different browser.'); - } -}; -/** - * @private - */ -Font.prototype.fsSelectionValues = { - ITALIC: 0x001, //1 - UNDERSCORE: 0x002, //2 - NEGATIVE: 0x004, //4 - OUTLINED: 0x008, //8 - STRIKEOUT: 0x010, //16 - BOLD: 0x020, //32 - REGULAR: 0x040, //64 - USER_TYPO_METRICS: 0x080, //128 - WWS: 0x100, //256 - OBLIQUE: 0x200 //512 -}; - -/** - * @private - */ -Font.prototype.usWidthClasses = { - ULTRA_CONDENSED: 1, - EXTRA_CONDENSED: 2, - CONDENSED: 3, - SEMI_CONDENSED: 4, - MEDIUM: 5, - SEMI_EXPANDED: 6, - EXPANDED: 7, - EXTRA_EXPANDED: 8, - ULTRA_EXPANDED: 9 -}; - -/** - * @private - */ -Font.prototype.usWeightClasses = { - THIN: 100, - EXTRA_LIGHT: 200, - LIGHT: 300, - NORMAL: 400, - MEDIUM: 500, - SEMI_BOLD: 600, - BOLD: 700, - EXTRA_BOLD: 800, - BLACK: 900 -}; - -// The `fvar` table stores font variation axes and instances. - -function addName(name, names) { - var nameString = JSON.stringify(name); - var nameID = 256; - for (var nameKey in names) { - var n = parseInt(nameKey); - if (!n || n < 256) { - continue; - } - - if (JSON.stringify(names[nameKey]) === nameString) { - return n; - } - - if (nameID <= n) { - nameID = n + 1; - } - } - - names[nameID] = name; - return nameID; -} - -function makeFvarAxis(n, axis, names) { - var nameID = addName(axis.name, names); - return [ - {name: 'tag_' + n, type: 'TAG', value: axis.tag}, - {name: 'minValue_' + n, type: 'FIXED', value: axis.minValue << 16}, - {name: 'defaultValue_' + n, type: 'FIXED', value: axis.defaultValue << 16}, - {name: 'maxValue_' + n, type: 'FIXED', value: axis.maxValue << 16}, - {name: 'flags_' + n, type: 'USHORT', value: 0}, - {name: 'nameID_' + n, type: 'USHORT', value: nameID} - ]; -} - -function parseFvarAxis(data, start, names) { - var axis = {}; - var p = new parse.Parser(data, start); - axis.tag = p.parseTag(); - axis.minValue = p.parseFixed(); - axis.defaultValue = p.parseFixed(); - axis.maxValue = p.parseFixed(); - p.skip('uShort', 1); // reserved for flags; no values defined - axis.name = names[p.parseUShort()] || {}; - return axis; -} - -function makeFvarInstance(n, inst, axes, names) { - var nameID = addName(inst.name, names); - var fields = [ - {name: 'nameID_' + n, type: 'USHORT', value: nameID}, - {name: 'flags_' + n, type: 'USHORT', value: 0} - ]; - - for (var i = 0; i < axes.length; ++i) { - var axisTag = axes[i].tag; - fields.push({ - name: 'axis_' + n + ' ' + axisTag, - type: 'FIXED', - value: inst.coordinates[axisTag] << 16 - }); - } - - return fields; -} - -function parseFvarInstance(data, start, axes, names) { - var inst = {}; - var p = new parse.Parser(data, start); - inst.name = names[p.parseUShort()] || {}; - p.skip('uShort', 1); // reserved for flags; no values defined - - inst.coordinates = {}; - for (var i = 0; i < axes.length; ++i) { - inst.coordinates[axes[i].tag] = p.parseFixed(); - } - - return inst; -} - -function makeFvarTable(fvar, names) { - var result = new table.Table('fvar', [ - {name: 'version', type: 'ULONG', value: 0x10000}, - {name: 'offsetToData', type: 'USHORT', value: 0}, - {name: 'countSizePairs', type: 'USHORT', value: 2}, - {name: 'axisCount', type: 'USHORT', value: fvar.axes.length}, - {name: 'axisSize', type: 'USHORT', value: 20}, - {name: 'instanceCount', type: 'USHORT', value: fvar.instances.length}, - {name: 'instanceSize', type: 'USHORT', value: 4 + fvar.axes.length * 4} - ]); - result.offsetToData = result.sizeOf(); - - for (var i = 0; i < fvar.axes.length; i++) { - result.fields = result.fields.concat(makeFvarAxis(i, fvar.axes[i], names)); - } - - for (var j = 0; j < fvar.instances.length; j++) { - result.fields = result.fields.concat(makeFvarInstance(j, fvar.instances[j], fvar.axes, names)); - } - - return result; -} - -function parseFvarTable(data, start, names) { - var p = new parse.Parser(data, start); - var tableVersion = p.parseULong(); - check.argument(tableVersion === 0x00010000, 'Unsupported fvar table version.'); - var offsetToData = p.parseOffset16(); - // Skip countSizePairs. - p.skip('uShort', 1); - var axisCount = p.parseUShort(); - var axisSize = p.parseUShort(); - var instanceCount = p.parseUShort(); - var instanceSize = p.parseUShort(); - - var axes = []; - for (var i = 0; i < axisCount; i++) { - axes.push(parseFvarAxis(data, start + offsetToData + i * axisSize, names)); - } - - var instances = []; - var instanceStart = start + offsetToData + axisCount * axisSize; - for (var j = 0; j < instanceCount; j++) { - instances.push(parseFvarInstance(data, instanceStart + j * instanceSize, axes, names)); - } - - return {axes: axes, instances: instances}; -} - -var fvar = { make: makeFvarTable, parse: parseFvarTable }; - -// The `GDEF` table contains various glyph properties - -var attachList = function() { - return { - coverage: this.parsePointer(Parser.coverage), - attachPoints: this.parseList(Parser.pointer(Parser.uShortList)) - }; -}; - -var caretValue = function() { - var format = this.parseUShort(); - check.argument(format === 1 || format === 2 || format === 3, - 'Unsupported CaretValue table version.'); - if (format === 1) { - return { coordinate: this.parseShort() }; - } else if (format === 2) { - return { pointindex: this.parseShort() }; - } else if (format === 3) { - // Device / Variation Index tables unsupported - return { coordinate: this.parseShort() }; - } -}; - -var ligGlyph = function() { - return this.parseList(Parser.pointer(caretValue)); -}; - -var ligCaretList = function() { - return { - coverage: this.parsePointer(Parser.coverage), - ligGlyphs: this.parseList(Parser.pointer(ligGlyph)) - }; -}; - -var markGlyphSets = function() { - this.parseUShort(); // Version - return this.parseList(Parser.pointer(Parser.coverage)); -}; - -function parseGDEFTable(data, start) { - start = start || 0; - var p = new Parser(data, start); - var tableVersion = p.parseVersion(1); - check.argument(tableVersion === 1 || tableVersion === 1.2 || tableVersion === 1.3, - 'Unsupported GDEF table version.'); - var gdef = { - version: tableVersion, - classDef: p.parsePointer(Parser.classDef), - attachList: p.parsePointer(attachList), - ligCaretList: p.parsePointer(ligCaretList), - markAttachClassDef: p.parsePointer(Parser.classDef) - }; - if (tableVersion >= 1.2) { - gdef.markGlyphSets = p.parsePointer(markGlyphSets); - } - return gdef; -} -var gdef = { parse: parseGDEFTable }; - -// The `GPOS` table contains kerning pairs, among other things. - -var subtableParsers$1 = new Array(10); // subtableParsers[0] is unused - -// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-1-single-adjustment-positioning-subtable -// this = Parser instance -subtableParsers$1[1] = function parseLookup1() { - var start = this.offset + this.relativeOffset; - var posformat = this.parseUShort(); - if (posformat === 1) { - return { - posFormat: 1, - coverage: this.parsePointer(Parser.coverage), - value: this.parseValueRecord() - }; - } else if (posformat === 2) { - return { - posFormat: 2, - coverage: this.parsePointer(Parser.coverage), - values: this.parseValueRecordList() - }; - } - check.assert(false, '0x' + start.toString(16) + ': GPOS lookup type 1 format must be 1 or 2.'); -}; - -// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-2-pair-adjustment-positioning-subtable -subtableParsers$1[2] = function parseLookup2() { - var start = this.offset + this.relativeOffset; - var posFormat = this.parseUShort(); - check.assert(posFormat === 1 || posFormat === 2, '0x' + start.toString(16) + ': GPOS lookup type 2 format must be 1 or 2.'); - var coverage = this.parsePointer(Parser.coverage); - var valueFormat1 = this.parseUShort(); - var valueFormat2 = this.parseUShort(); - if (posFormat === 1) { - // Adjustments for Glyph Pairs - return { - posFormat: posFormat, - coverage: coverage, - valueFormat1: valueFormat1, - valueFormat2: valueFormat2, - pairSets: this.parseList(Parser.pointer(Parser.list(function() { - return { // pairValueRecord - secondGlyph: this.parseUShort(), - value1: this.parseValueRecord(valueFormat1), - value2: this.parseValueRecord(valueFormat2) - }; - }))) - }; - } else if (posFormat === 2) { - var classDef1 = this.parsePointer(Parser.classDef); - var classDef2 = this.parsePointer(Parser.classDef); - var class1Count = this.parseUShort(); - var class2Count = this.parseUShort(); - return { - // Class Pair Adjustment - posFormat: posFormat, - coverage: coverage, - valueFormat1: valueFormat1, - valueFormat2: valueFormat2, - classDef1: classDef1, - classDef2: classDef2, - class1Count: class1Count, - class2Count: class2Count, - classRecords: this.parseList(class1Count, Parser.list(class2Count, function() { - return { - value1: this.parseValueRecord(valueFormat1), - value2: this.parseValueRecord(valueFormat2) - }; - })) - }; - } -}; - -subtableParsers$1[3] = function parseLookup3() { return { error: 'GPOS Lookup 3 not supported' }; }; -subtableParsers$1[4] = function parseLookup4() { return { error: 'GPOS Lookup 4 not supported' }; }; -subtableParsers$1[5] = function parseLookup5() { return { error: 'GPOS Lookup 5 not supported' }; }; -subtableParsers$1[6] = function parseLookup6() { return { error: 'GPOS Lookup 6 not supported' }; }; -subtableParsers$1[7] = function parseLookup7() { return { error: 'GPOS Lookup 7 not supported' }; }; -subtableParsers$1[8] = function parseLookup8() { return { error: 'GPOS Lookup 8 not supported' }; }; -subtableParsers$1[9] = function parseLookup9() { return { error: 'GPOS Lookup 9 not supported' }; }; - -// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos -function parseGposTable(data, start) { - start = start || 0; - var p = new Parser(data, start); - var tableVersion = p.parseVersion(1); - check.argument(tableVersion === 1 || tableVersion === 1.1, 'Unsupported GPOS table version ' + tableVersion); - - if (tableVersion === 1) { - return { - version: tableVersion, - scripts: p.parseScriptList(), - features: p.parseFeatureList(), - lookups: p.parseLookupList(subtableParsers$1) - }; - } else { - return { - version: tableVersion, - scripts: p.parseScriptList(), - features: p.parseFeatureList(), - lookups: p.parseLookupList(subtableParsers$1), - variations: p.parseFeatureVariationsList() - }; - } - -} - -// GPOS Writing ////////////////////////////////////////////// -// NOT SUPPORTED -var subtableMakers$1 = new Array(10); - -function makeGposTable(gpos) { - return new table.Table('GPOS', [ - {name: 'version', type: 'ULONG', value: 0x10000}, - {name: 'scripts', type: 'TABLE', value: new table.ScriptList(gpos.scripts)}, - {name: 'features', type: 'TABLE', value: new table.FeatureList(gpos.features)}, - {name: 'lookups', type: 'TABLE', value: new table.LookupList(gpos.lookups, subtableMakers$1)} - ]); -} - -var gpos = { parse: parseGposTable, make: makeGposTable }; - -// The `kern` table contains kerning pairs. - -function parseWindowsKernTable(p) { - var pairs = {}; - // Skip nTables. - p.skip('uShort'); - var subtableVersion = p.parseUShort(); - check.argument(subtableVersion === 0, 'Unsupported kern sub-table version.'); - // Skip subtableLength, subtableCoverage - p.skip('uShort', 2); - var nPairs = p.parseUShort(); - // Skip searchRange, entrySelector, rangeShift. - p.skip('uShort', 3); - for (var i = 0; i < nPairs; i += 1) { - var leftIndex = p.parseUShort(); - var rightIndex = p.parseUShort(); - var value = p.parseShort(); - pairs[leftIndex + ',' + rightIndex] = value; - } - return pairs; -} - -function parseMacKernTable(p) { - var pairs = {}; - // The Mac kern table stores the version as a fixed (32 bits) but we only loaded the first 16 bits. - // Skip the rest. - p.skip('uShort'); - var nTables = p.parseULong(); - //check.argument(nTables === 1, 'Only 1 subtable is supported (got ' + nTables + ').'); - if (nTables > 1) { - console.warn('Only the first kern subtable is supported.'); - } - p.skip('uLong'); - var coverage = p.parseUShort(); - var subtableVersion = coverage & 0xFF; - p.skip('uShort'); - if (subtableVersion === 0) { - var nPairs = p.parseUShort(); - // Skip searchRange, entrySelector, rangeShift. - p.skip('uShort', 3); - for (var i = 0; i < nPairs; i += 1) { - var leftIndex = p.parseUShort(); - var rightIndex = p.parseUShort(); - var value = p.parseShort(); - pairs[leftIndex + ',' + rightIndex] = value; - } - } - return pairs; -} - -// Parse the `kern` table which contains kerning pairs. -function parseKernTable(data, start) { - var p = new parse.Parser(data, start); - var tableVersion = p.parseUShort(); - if (tableVersion === 0) { - return parseWindowsKernTable(p); - } else if (tableVersion === 1) { - return parseMacKernTable(p); - } else { - throw new Error('Unsupported kern table version (' + tableVersion + ').'); - } -} - -var kern = { parse: parseKernTable }; - -// The `loca` table stores the offsets to the locations of the glyphs in the font. - -// Parse the `loca` table. This table stores the offsets to the locations of the glyphs in the font, -// relative to the beginning of the glyphData table. -// The number of glyphs stored in the `loca` table is specified in the `maxp` table (under numGlyphs) -// The loca table has two versions: a short version where offsets are stored as uShorts, and a long -// version where offsets are stored as uLongs. The `head` table specifies which version to use -// (under indexToLocFormat). -function parseLocaTable(data, start, numGlyphs, shortVersion) { - var p = new parse.Parser(data, start); - var parseFn = shortVersion ? p.parseUShort : p.parseULong; - // There is an extra entry after the last index element to compute the length of the last glyph. - // That's why we use numGlyphs + 1. - var glyphOffsets = []; - for (var i = 0; i < numGlyphs + 1; i += 1) { - var glyphOffset = parseFn.call(p); - if (shortVersion) { - // The short table version stores the actual offset divided by 2. - glyphOffset *= 2; - } - - glyphOffsets.push(glyphOffset); - } - - return glyphOffsets; -} - -var loca = { parse: parseLocaTable }; - -// opentype.js - -/** - * The opentype library. - * @namespace opentype - */ - -// File loaders ///////////////////////////////////////////////////////// - -/** - * Loads a font from a URL. The callback throws an error message as the first parameter if it fails - * and the font as an ArrayBuffer in the second parameter if it succeeds. - * @param {string} url - The URL of the font file. - * @param {Function} callback - The function to call when the font load completes - */ -function loadFromUrl(url, callback) { - var request = new XMLHttpRequest(); - request.open('get', url, true); - request.responseType = 'arraybuffer'; - request.onload = function() { - if (request.response) { - return callback(null, request.response); - } else { - return callback('Font could not be loaded: ' + request.statusText); - } - }; - - request.onerror = function () { - callback('Font could not be loaded'); - }; - - request.send(); -} - -// Table Directory Entries ////////////////////////////////////////////// -/** - * Parses OpenType table entries. - * @param {DataView} - * @param {Number} - * @return {Object[]} - */ -function parseOpenTypeTableEntries(data, numTables) { - var tableEntries = []; - var p = 12; - for (var i = 0; i < numTables; i += 1) { - var tag = parse.getTag(data, p); - var checksum = parse.getULong(data, p + 4); - var offset = parse.getULong(data, p + 8); - var length = parse.getULong(data, p + 12); - tableEntries.push({tag: tag, checksum: checksum, offset: offset, length: length, compression: false}); - p += 16; - } - - return tableEntries; -} - -/** - * Parses WOFF table entries. - * @param {DataView} - * @param {Number} - * @return {Object[]} - */ -function parseWOFFTableEntries(data, numTables) { - var tableEntries = []; - var p = 44; // offset to the first table directory entry. - for (var i = 0; i < numTables; i += 1) { - var tag = parse.getTag(data, p); - var offset = parse.getULong(data, p + 4); - var compLength = parse.getULong(data, p + 8); - var origLength = parse.getULong(data, p + 12); - var compression = (void 0); - if (compLength < origLength) { - compression = 'WOFF'; - } else { - compression = false; - } - - tableEntries.push({tag: tag, offset: offset, compression: compression, - compressedLength: compLength, length: origLength}); - p += 20; - } - - return tableEntries; -} - -/** - * @typedef TableData - * @type Object - * @property {DataView} data - The DataView - * @property {number} offset - The data offset. - */ - -/** - * @param {DataView} - * @param {Object} - * @return {TableData} - */ -function uncompressTable(data, tableEntry) { - if (tableEntry.compression === 'WOFF') { - var inBuffer = new Uint8Array(data.buffer, tableEntry.offset + 2, tableEntry.compressedLength - 2); - var outBuffer = new Uint8Array(tableEntry.length); - tinyInflate(inBuffer, outBuffer); - if (outBuffer.byteLength !== tableEntry.length) { - throw new Error('Decompression error: ' + tableEntry.tag + ' decompressed length doesn\'t match recorded length'); - } - - var view = new DataView(outBuffer.buffer, 0); - return {data: view, offset: 0}; - } else { - return {data: data, offset: tableEntry.offset}; - } -} - -// Public API /////////////////////////////////////////////////////////// - -/** - * Parse the OpenType file data (as an ArrayBuffer) and return a Font object. - * Throws an error if the font could not be parsed. - * @param {ArrayBuffer} - * @param {Object} opt - options for parsing - * @return {opentype.Font} - */ -function parseBuffer(buffer, opt) { - opt = (opt === undefined || opt === null) ? {} : opt; - - var indexToLocFormat; - var ltagTable; - - // Since the constructor can also be called to create new fonts from scratch, we indicate this - // should be an empty font that we'll fill with our own data. - var font = new Font({empty: true}); - - // OpenType fonts use big endian byte ordering. - // We can't rely on typed array view types, because they operate with the endianness of the host computer. - // Instead we use DataViews where we can specify endianness. - var data = new DataView(buffer, 0); - var numTables; - var tableEntries = []; - var signature = parse.getTag(data, 0); - if (signature === String.fromCharCode(0, 1, 0, 0) || signature === 'true' || signature === 'typ1') { - font.outlinesFormat = 'truetype'; - numTables = parse.getUShort(data, 4); - tableEntries = parseOpenTypeTableEntries(data, numTables); - } else if (signature === 'OTTO') { - font.outlinesFormat = 'cff'; - numTables = parse.getUShort(data, 4); - tableEntries = parseOpenTypeTableEntries(data, numTables); - } else if (signature === 'wOFF') { - var flavor = parse.getTag(data, 4); - if (flavor === String.fromCharCode(0, 1, 0, 0)) { - font.outlinesFormat = 'truetype'; - } else if (flavor === 'OTTO') { - font.outlinesFormat = 'cff'; - } else { - throw new Error('Unsupported OpenType flavor ' + signature); - } - - numTables = parse.getUShort(data, 12); - tableEntries = parseWOFFTableEntries(data, numTables); - } else { - throw new Error('Unsupported OpenType signature ' + signature); - } - - var cffTableEntry; - var fvarTableEntry; - var glyfTableEntry; - var gdefTableEntry; - var gposTableEntry; - var gsubTableEntry; - var hmtxTableEntry; - var kernTableEntry; - var locaTableEntry; - var nameTableEntry; - var metaTableEntry; - var p; - - for (var i = 0; i < numTables; i += 1) { - var tableEntry = tableEntries[i]; - var table = (void 0); - switch (tableEntry.tag) { - case 'cmap': - table = uncompressTable(data, tableEntry); - font.tables.cmap = cmap.parse(table.data, table.offset); - font.encoding = new CmapEncoding(font.tables.cmap); - break; - case 'cvt ' : - table = uncompressTable(data, tableEntry); - p = new parse.Parser(table.data, table.offset); - font.tables.cvt = p.parseShortList(tableEntry.length / 2); - break; - case 'fvar': - fvarTableEntry = tableEntry; - break; - case 'fpgm' : - table = uncompressTable(data, tableEntry); - p = new parse.Parser(table.data, table.offset); - font.tables.fpgm = p.parseByteList(tableEntry.length); - break; - case 'head': - table = uncompressTable(data, tableEntry); - font.tables.head = head.parse(table.data, table.offset); - font.unitsPerEm = font.tables.head.unitsPerEm; - indexToLocFormat = font.tables.head.indexToLocFormat; - break; - case 'hhea': - table = uncompressTable(data, tableEntry); - font.tables.hhea = hhea.parse(table.data, table.offset); - font.ascender = font.tables.hhea.ascender; - font.descender = font.tables.hhea.descender; - font.numberOfHMetrics = font.tables.hhea.numberOfHMetrics; - break; - case 'hmtx': - hmtxTableEntry = tableEntry; - break; - case 'ltag': - table = uncompressTable(data, tableEntry); - ltagTable = ltag.parse(table.data, table.offset); - break; - case 'COLR': - table = uncompressTable(data, tableEntry); - font.tables.colr = colr.parse(table.data, table.offset); - break; - case 'CPAL': - table = uncompressTable(data, tableEntry); - font.tables.cpal = cpal.parse(table.data, table.offset); - break; - case 'maxp': - table = uncompressTable(data, tableEntry); - font.tables.maxp = maxp.parse(table.data, table.offset); - font.numGlyphs = font.tables.maxp.numGlyphs; - break; - case 'name': - nameTableEntry = tableEntry; - break; - case 'OS/2': - table = uncompressTable(data, tableEntry); - font.tables.os2 = os2.parse(table.data, table.offset); - break; - case 'post': - table = uncompressTable(data, tableEntry); - font.tables.post = post.parse(table.data, table.offset); - font.glyphNames = new GlyphNames(font.tables.post); - break; - case 'prep' : - table = uncompressTable(data, tableEntry); - p = new parse.Parser(table.data, table.offset); - font.tables.prep = p.parseByteList(tableEntry.length); - break; - case 'glyf': - glyfTableEntry = tableEntry; - break; - case 'loca': - locaTableEntry = tableEntry; - break; - case 'CFF ': - cffTableEntry = tableEntry; - break; - case 'kern': - kernTableEntry = tableEntry; - break; - case 'GDEF': - gdefTableEntry = tableEntry; - break; - case 'GPOS': - gposTableEntry = tableEntry; - break; - case 'GSUB': - gsubTableEntry = tableEntry; - break; - case 'meta': - metaTableEntry = tableEntry; - break; - } - } - - var nameTable = uncompressTable(data, nameTableEntry); - font.tables.name = _name.parse(nameTable.data, nameTable.offset, ltagTable); - font.names = font.tables.name; - - if (glyfTableEntry && locaTableEntry) { - var shortVersion = indexToLocFormat === 0; - var locaTable = uncompressTable(data, locaTableEntry); - var locaOffsets = loca.parse(locaTable.data, locaTable.offset, font.numGlyphs, shortVersion); - var glyfTable = uncompressTable(data, glyfTableEntry); - font.glyphs = glyf.parse(glyfTable.data, glyfTable.offset, locaOffsets, font, opt); - } else if (cffTableEntry) { - var cffTable = uncompressTable(data, cffTableEntry); - cff.parse(cffTable.data, cffTable.offset, font, opt); - } else { - throw new Error('Font doesn\'t contain TrueType or CFF outlines.'); - } - - var hmtxTable = uncompressTable(data, hmtxTableEntry); - hmtx.parse(font, hmtxTable.data, hmtxTable.offset, font.numberOfHMetrics, font.numGlyphs, font.glyphs, opt); - addGlyphNames(font, opt); - - if (kernTableEntry) { - var kernTable = uncompressTable(data, kernTableEntry); - font.kerningPairs = kern.parse(kernTable.data, kernTable.offset); - } else { - font.kerningPairs = {}; - } - - if (gdefTableEntry) { - var gdefTable = uncompressTable(data, gdefTableEntry); - font.tables.gdef = gdef.parse(gdefTable.data, gdefTable.offset); - } - - if (gposTableEntry) { - var gposTable = uncompressTable(data, gposTableEntry); - font.tables.gpos = gpos.parse(gposTable.data, gposTable.offset); - font.position.init(); - } - - if (gsubTableEntry) { - var gsubTable = uncompressTable(data, gsubTableEntry); - font.tables.gsub = gsub.parse(gsubTable.data, gsubTable.offset); - } - - if (fvarTableEntry) { - var fvarTable = uncompressTable(data, fvarTableEntry); - font.tables.fvar = fvar.parse(fvarTable.data, fvarTable.offset, font.names); - } - - if (metaTableEntry) { - var metaTable = uncompressTable(data, metaTableEntry); - font.tables.meta = meta.parse(metaTable.data, metaTable.offset); - font.metas = font.tables.meta; - } - - return font; -} - -/** - * Asynchronously load the font from a URL or a filesystem. When done, call the callback - * with two arguments `(err, font)`. The `err` will be null on success, - * the `font` is a Font object. - * We use the node.js callback convention so that - * opentype.js can integrate with frameworks like async.js. - * @alias opentype.load - * @param {string} url - The URL of the font to load. - * @param {Function} callback - The callback. - */ -function load(url, callback, opt) { - opt = (opt === undefined || opt === null) ? {} : opt; - - return new Promise(function (resolve, reject) { - loadFromUrl(url, function(err, arrayBuffer) { - if (err) { - if (callback) { - return callback(err); - } else { - reject(err); - } - } - var font; - try { - font = parseBuffer(arrayBuffer, opt); - } catch (e) { - if (callback) { - return callback(e, null); - } else { - reject(e); - } - } - if (callback) { - return callback(null, font); - } else { - resolve(font); - } - }); - }); -} - -var opentype = /*#__PURE__*/Object.freeze({ - __proto__: null, - Font: Font, - Glyph: Glyph, - Path: Path, - BoundingBox: BoundingBox, - _parse: parse, - parse: parseBuffer, - load: load, -}); - -export default opentype; -export { BoundingBox, Font, Glyph, Path, parse as _parse, load, parseBuffer as parse }; diff --git a/three/addons/libs/potpack.module.js b/three/addons/libs/potpack.module.js deleted file mode 100644 index efba9a4..0000000 --- a/three/addons/libs/potpack.module.js +++ /dev/null @@ -1,125 +0,0 @@ -/** - * potpack - by [@mourner](https://github.com/mourner) - * - * A tiny JavaScript function for packing 2D rectangles into a near-square container, - * which is useful for generating CSS sprites and WebGL textures. Similar to - * [shelf-pack](https://github.com/mapbox/shelf-pack), but static (you can't add items - * once a layout is generated), and aims for maximal space utilization. - * - * A variation of algorithms used in [rectpack2D](https://github.com/TeamHypersomnia/rectpack2D) - * and [bin-pack](https://github.com/bryanburgers/bin-pack), which are in turn based - * on [this article by Blackpawn](http://blackpawn.com/texts/lightmaps/default.html). - * - * @license - * ISC License - * - * Copyright (c) 2018, Mapbox - * - * Permission to use, copy, modify, and/or distribute this software for any purpose - * with or without fee is hereby granted, provided that the above copyright notice - * and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH - * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, - * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - * THIS SOFTWARE. - */ - -function potpack(boxes) { - - // calculate total box area and maximum box width - let area = 0; - let maxWidth = 0; - - for (const box of boxes) { - area += box.w * box.h; - maxWidth = Math.max(maxWidth, box.w); - } - - // sort the boxes for insertion by height, descending - boxes.sort((a, b) => b.h - a.h); - - // aim for a squarish resulting container, - // slightly adjusted for sub-100% space utilization - const startWidth = Math.max(Math.ceil(Math.sqrt(area / 0.95)), maxWidth); - - // start with a single empty space, unbounded at the bottom - const spaces = [{x: 0, y: 0, w: startWidth, h: Infinity}]; - - let width = 0; - let height = 0; - - for (const box of boxes) { - // look through spaces backwards so that we check smaller spaces first - for (let i = spaces.length - 1; i >= 0; i--) { - const space = spaces[i]; - - // look for empty spaces that can accommodate the current box - if (box.w > space.w || box.h > space.h) continue; - - // found the space; add the box to its top-left corner - // |-------|-------| - // | box | | - // |_______| | - // | space | - // |_______________| - box.x = space.x; - box.y = space.y; - - height = Math.max(height, box.y + box.h); - width = Math.max(width, box.x + box.w); - - if (box.w === space.w && box.h === space.h) { - // space matches the box exactly; remove it - const last = spaces.pop(); - if (i < spaces.length) spaces[i] = last; - - } else if (box.h === space.h) { - // space matches the box height; update it accordingly - // |-------|---------------| - // | box | updated space | - // |_______|_______________| - space.x += box.w; - space.w -= box.w; - - } else if (box.w === space.w) { - // space matches the box width; update it accordingly - // |---------------| - // | box | - // |_______________| - // | updated space | - // |_______________| - space.y += box.h; - space.h -= box.h; - - } else { - // otherwise the box splits the space into two spaces - // |-------|-----------| - // | box | new space | - // |_______|___________| - // | updated space | - // |___________________| - spaces.push({ - x: space.x + box.w, - y: space.y, - w: space.w - box.w, - h: box.h - }); - space.y += box.h; - space.h -= box.h; - } - break; - } - } - - return { - w: width, // container width - h: height, // container height - fill: (area / (width * height)) || 0 // space utilization - }; -} - -export { potpack }; \ No newline at end of file diff --git a/three/addons/libs/rhino3dm/rhino3dm.js b/three/addons/libs/rhino3dm/rhino3dm.js deleted file mode 100644 index 89fa5ab..0000000 --- a/three/addons/libs/rhino3dm/rhino3dm.js +++ /dev/null @@ -1,8743 +0,0 @@ - -var rhino3dm = (() => { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(config) { - var rhino3dm = config || {}; - - - -// The Module object: Our interface to the outside world. We import -// and export values on it. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to check if Module already exists (e.g. case 3 above). -// Substitution will be replaced with actual code on later stage of the build, -// this way Closure Compiler will not mangle it (e.g. case 4. above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module = typeof rhino3dm != 'undefined' ? rhino3dm : {}; - -// See https://caniuse.com/mdn-javascript_builtins_object_assign - -// See https://caniuse.com/mdn-javascript_builtins_bigint64array - -// Set up the promise that indicates the Module is initialized -var readyPromiseResolve, readyPromiseReject; -Module['ready'] = new Promise(function(resolve, reject) { - readyPromiseResolve = resolve; - readyPromiseReject = reject; -}); -["_main","_fflush","___getTypeName","__embind_initialize_bindings","onRuntimeInitialized"].forEach((prop) => { - if (!Object.getOwnPropertyDescriptor(Module['ready'], prop)) { - Object.defineProperty(Module['ready'], prop, { - get: () => abort('You are getting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - set: () => abort('You are setting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - }); - } -}); - -// --pre-jses are emitted after the Module integration code, so that they can -// refer to Module (if they choose; they can also define Module) -// {{PRE_JSES}} - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = Object.assign({}, Module); - -var arguments_ = []; -var thisProgram = './this.program'; -var quit_ = (status, toThrow) => { - throw toThrow; -}; - -// Determine the runtime environment we are in. You can customize this by -// setting the ENVIRONMENT setting at compile time (see settings.js). - -// Attempt to auto-detect the environment -var ENVIRONMENT_IS_WEB = typeof window == 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts == 'function'; -// N.b. Electron.js environment is simultaneously a NODE-environment, but -// also a web environment. -var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (Module['ENVIRONMENT']) { - throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)'); -} - -// `/` should be present at the end if `scriptDirectory` is not empty -var scriptDirectory = ''; -function locateFile(path) { - if (Module['locateFile']) { - return Module['locateFile'](path, scriptDirectory); - } - return scriptDirectory + path; -} - -// Hooks that are implemented differently in different runtime environments. -var read_, - readAsync, - readBinary, - setWindowTitle; - -// Normally we don't log exceptions but instead let them bubble out the top -// level where the embedding environment (e.g. the browser) can handle -// them. -// However under v8 and node we sometimes exit the process direcly in which case -// its up to use us to log the exception before exiting. -// If we fix https://github.com/emscripten-core/emscripten/issues/15080 -// this may no longer be needed under node. -function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return; - let toLog = e; - if (e && typeof e == 'object' && e.stack) { - toLog = [e, e.stack]; - } - err('exiting due to exception: ' + toLog); -} - -if (ENVIRONMENT_IS_NODE) { - if (typeof process == 'undefined' || !process.release || process.release.name !== 'node') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - // `require()` is no-op in an ESM module, use `createRequire()` to construct - // the require()` function. This is only necessary for multi-environment - // builds, `-sENVIRONMENT=node` emits a static import declaration instead. - // TODO: Swap all `require()`'s with `import()`'s? - // These modules will usually be used on Node.js. Load them eagerly to avoid - // the complexity of lazy-loading. - var fs = require('fs'); - var nodePath = require('path'); - - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = nodePath.dirname(scriptDirectory) + '/'; - } else { - scriptDirectory = __dirname + '/'; - } - -// include: node_shell_read.js - - -read_ = (filename, binary) => { - // We need to re-wrap `file://` strings to URLs. Normalizing isn't - // necessary in that case, the path should already be absolute. - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - return fs.readFileSync(filename, binary ? undefined : 'utf8'); -}; - -readBinary = (filename) => { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - assert(ret.buffer); - return ret; -}; - -readAsync = (filename, onload, onerror) => { - // See the comment in the `read_` function. - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - fs.readFile(filename, function(err, data) { - if (err) onerror(err); - else onload(data.buffer); - }); -}; - -// end include: node_shell_read.js - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/'); - } - - arguments_ = process['argv'].slice(2); - - // MODULARIZE will export the module in the proper place outside, we don't need to export here - - process['on']('uncaughtException', function(ex) { - // suppress ExitStatus exceptions from showing an error - if (!(ex instanceof ExitStatus)) { - throw ex; - } - }); - - // Without this older versions of node (< v15) will log unhandled rejections - // but return 0, which is not normally the desired behaviour. This is - // not be needed with node v15 and about because it is now the default - // behaviour: - // See https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode - process['on']('unhandledRejection', function(reason) { throw reason; }); - - quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status; - throw toThrow; - } - logExceptionOnExit(toThrow); - process['exit'](status); - }; - - Module['inspect'] = function () { return '[Emscripten Module object]'; }; - -} else -if (ENVIRONMENT_IS_SHELL) { - - if ((typeof process == 'object' && typeof require === 'function') || typeof window == 'object' || typeof importScripts == 'function') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - if (typeof read != 'undefined') { - read_ = function shell_read(f) { - return read(f); - }; - } - - readBinary = function readBinary(f) { - let data; - if (typeof readbuffer == 'function') { - return new Uint8Array(readbuffer(f)); - } - data = read(f, 'binary'); - assert(typeof data == 'object'); - return data; - }; - - readAsync = function readAsync(f, onload, onerror) { - setTimeout(() => onload(readBinary(f)), 0); - }; - - if (typeof scriptArgs != 'undefined') { - arguments_ = scriptArgs; - } else if (typeof arguments != 'undefined') { - arguments_ = arguments; - } - - if (typeof quit == 'function') { - quit_ = (status, toThrow) => { - logExceptionOnExit(toThrow); - quit(status); - }; - } - - if (typeof print != 'undefined') { - // Prefer to use print/printErr where they exist, as they usually work better. - if (typeof console == 'undefined') console = /** @type{!Console} */({}); - console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); - console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr != 'undefined' ? printErr : print); - } - -} else - -// Note that this includes Node.js workers when relevant (pthreads is enabled). -// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and -// ENVIRONMENT_IS_NODE. -if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled - scriptDirectory = self.location.href; - } else if (typeof document != 'undefined' && document.currentScript) { // web - scriptDirectory = document.currentScript.src; - } - // When MODULARIZE, this JS may be executed later, after document.currentScript - // is gone, so we saved it, and we use it here instead of any other info. - if (_scriptDir) { - scriptDirectory = _scriptDir; - } - // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. - // otherwise, slice off the final part of the url to find the script directory. - // if scriptDirectory does not contain a slash, lastIndexOf will return -1, - // and scriptDirectory will correctly be replaced with an empty string. - // If scriptDirectory contains a query (starting with ?) or a fragment (starting with #), - // they are removed because they could contain a slash. - if (scriptDirectory.indexOf('blob:') !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf('/')+1); - } else { - scriptDirectory = ''; - } - - if (!(typeof window == 'object' || typeof importScripts == 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - // Differentiate the Web Worker from the Node Worker case, as reading must - // be done differently. - { -// include: web_or_worker_shell_read.js - - - read_ = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.send(null); - return xhr.responseText; - } - - if (ENVIRONMENT_IS_WORKER) { - readBinary = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.responseType = 'arraybuffer'; - xhr.send(null); - return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); - }; - } - - readAsync = (url, onload, onerror) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.onload = () => { - if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 - onload(xhr.response); - return; - } - onerror(); - }; - xhr.onerror = onerror; - xhr.send(null); - } - -// end include: web_or_worker_shell_read.js - } - - setWindowTitle = (title) => document.title = title; -} else -{ - throw new Error('environment detection error'); -} - -var out = Module['print'] || console.log.bind(console); -var err = Module['printErr'] || console.warn.bind(console); - -// Merge back in the overrides -Object.assign(Module, moduleOverrides); -// Free the object hierarchy contained in the overrides, this lets the GC -// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. -moduleOverrides = null; -checkIncomingModuleAPI(); - -// Emit code to handle expected values on the Module object. This applies Module.x -// to the proper local x. This has two benefits: first, we only emit it if it is -// expected to arrive, and second, by using a local everywhere else that can be -// minified. - -if (Module['arguments']) arguments_ = Module['arguments'];legacyModuleProp('arguments', 'arguments_'); - -if (Module['thisProgram']) thisProgram = Module['thisProgram'];legacyModuleProp('thisProgram', 'thisProgram'); - -if (Module['quit']) quit_ = Module['quit'];legacyModuleProp('quit', 'quit_'); - -// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message -// Assertions on removed incoming Module JS APIs. -assert(typeof Module['memoryInitializerPrefixURL'] == 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['pthreadMainPrefixURL'] == 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['cdInitializerPrefixURL'] == 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['filePackagePrefixURL'] == 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['read'] == 'undefined', 'Module.read option was removed (modify read_ in JS)'); -assert(typeof Module['readAsync'] == 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); -assert(typeof Module['readBinary'] == 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); -assert(typeof Module['setWindowTitle'] == 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); -assert(typeof Module['TOTAL_MEMORY'] == 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); -legacyModuleProp('read', 'read_'); -legacyModuleProp('readAsync', 'readAsync'); -legacyModuleProp('readBinary', 'readBinary'); -legacyModuleProp('setWindowTitle', 'setWindowTitle'); -var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; -var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; -var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; -var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; - -assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."); - -// include: support.js - - -var STACK_ALIGN = 16; -var POINTER_SIZE = 4; - -function getNativeTypeSize(type) { - switch (type) { - case 'i1': case 'i8': case 'u8': return 1; - case 'i16': case 'u16': return 2; - case 'i32': case 'u32': return 4; - case 'i64': case 'u64': return 8; - case 'float': return 4; - case 'double': return 8; - default: { - if (type[type.length - 1] === '*') { - return POINTER_SIZE; - } - if (type[0] === 'i') { - const bits = Number(type.substr(1)); - assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); - return bits / 8; - } - return 0; - } - } -} - -// include: runtime_debug.js - - -function legacyModuleProp(prop, newName) { - if (!Object.getOwnPropertyDescriptor(Module, prop)) { - Object.defineProperty(Module, prop, { - configurable: true, - get: function() { - abort('Module.' + prop + ' has been replaced with plain ' + newName + ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)'); - } - }); - } -} - -function ignoredModuleProp(prop) { - if (Object.getOwnPropertyDescriptor(Module, prop)) { - abort('`Module.' + prop + '` was supplied but `' + prop + '` not included in INCOMING_MODULE_JS_API'); - } -} - -// forcing the filesystem exports a few things by default -function isExportedByForceFilesystem(name) { - return name === 'FS_createPath' || - name === 'FS_createDataFile' || - name === 'FS_createPreloadedFile' || - name === 'FS_unlink' || - name === 'addRunDependency' || - // The old FS has some functionality that WasmFS lacks. - name === 'FS_createLazyFile' || - name === 'FS_createDevice' || - name === 'removeRunDependency'; -} - -function missingGlobal(sym, msg) { - Object.defineProperty(globalThis, sym, { - configurable: true, - get: function() { - warnOnce('`' + sym + '` is not longer defined by emscripten. ' + msg); - return undefined; - } - }); -} - -missingGlobal('buffer', 'Please use HEAP8.buffer or wasmMemory.buffer'); - -function missingLibrarySymbol(sym) { - if (typeof globalThis !== 'undefined' && !Object.getOwnPropertyDescriptor(globalThis, sym)) { - Object.defineProperty(globalThis, sym, { - configurable: true, - get: function() { - // Can't `abort()` here because it would break code that does runtime - // checks. e.g. `if (typeof SDL === 'undefined')`. - var msg = '`' + sym + '` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line'; - // DEFAULT_LIBRARY_FUNCS_TO_INCLUDE requires the name as it appears in - // library.js, which means $name for a JS name with no prefix, or name - // for a JS name like _name. - var librarySymbol = sym; - if (!librarySymbol.startsWith('_')) { - librarySymbol = '$' + sym; - } - msg += " (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE=" + librarySymbol + ")"; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - warnOnce(msg); - return undefined; - } - }); - } -} - -function unexportedRuntimeSymbol(sym) { - if (!Object.getOwnPropertyDescriptor(Module, sym)) { - Object.defineProperty(Module, sym, { - configurable: true, - get: function() { - var msg = "'" + sym + "' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - abort(msg); - } - }); - } -} - -// end include: runtime_debug.js -// end include: support.js - - - -// === Preamble library stuff === - -// Documentation for the public APIs defined in this file must be updated in: -// site/source/docs/api_reference/preamble.js.rst -// A prebuilt local version of the documentation is available at: -// site/build/text/docs/api_reference/preamble.js.txt -// You can also build docs locally as HTML or other formats in site/ -// An online HTML version (which may be of a different version of Emscripten) -// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html - -var wasmBinary; -if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];legacyModuleProp('wasmBinary', 'wasmBinary'); -var noExitRuntime = Module['noExitRuntime'] || true;legacyModuleProp('noExitRuntime', 'noExitRuntime'); - -if (typeof WebAssembly != 'object') { - abort('no native wasm support detected'); -} - -// Wasm globals - -var wasmMemory; - -//======================================== -// Runtime essentials -//======================================== - -// whether we are quitting the application. no code should run after this. -// set in exit() and abort() -var ABORT = false; - -// set by exit() and abort(). Passed to 'onExit' handler. -// NOTE: This is also used as the process return code code in shell environments -// but only when noExitRuntime is false. -var EXITSTATUS; - -/** @type {function(*, string=)} */ -function assert(condition, text) { - if (!condition) { - abort('Assertion failed' + (text ? ': ' + text : '')); - } -} - -// We used to include malloc/free by default in the past. Show a helpful error in -// builds with assertions. - -// include: runtime_strings.js - - -// runtime_strings.js: String related runtime functions that are part of both -// MINIMAL_RUNTIME and regular runtime. - -var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined; - -/** - * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given - * array that contains uint8 values, returns a copy of that string as a - * Javascript String object. - * heapOrArray is either a regular array, or a JavaScript typed array view. - * @param {number} idx - * @param {number=} maxBytesToRead - * @return {string} - */ -function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. Also, use the length info to avoid running tiny - // strings through TextDecoder, since .subarray() allocates garbage. - // (As a tiny code save trick, compare endPtr against endIdx using a negation, - // so that undefined means Infinity) - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; - - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); - } - var str = ''; - // If building with TextDecoder, we have already computed the string length - // above, so test loop end condition against that - while (idx < endPtr) { - // For UTF8 byte structure, see: - // http://en.wikipedia.org/wiki/UTF-8#Description - // https://www.ietf.org/rfc/rfc2279.txt - // https://tools.ietf.org/html/rfc3629 - var u0 = heapOrArray[idx++]; - if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } - var u1 = heapOrArray[idx++] & 63; - if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } - var u2 = heapOrArray[idx++] & 63; - if ((u0 & 0xF0) == 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } else { - if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte ' + ptrToString(u0) + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!'); - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); - } - - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; -} - -/** - * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the - * emscripten HEAP, returns a copy of that string as a Javascript String object. - * - * @param {number} ptr - * @param {number=} maxBytesToRead - An optional length that specifies the - * maximum number of bytes to read. You can omit this parameter to scan the - * string until the first \0 byte. If maxBytesToRead is passed, and the string - * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the - * string will cut short at that byte index (i.e. maxBytesToRead will not - * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing - * frequent uses of UTF8ToString() with and without maxBytesToRead may throw - * JS JIT optimizations off, so it is worth to consider consistently using one - * @return {string} - */ -function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; -} - -/** - * Copies the given Javascript String object 'str' to the given byte array at - * address 'outIdx', encoded in UTF8 form and null-terminated. The copy will - * require at most str.length*4+1 bytes of space in the HEAP. Use the function - * lengthBytesUTF8 to compute the exact number of bytes (excluding null - * terminator) that this function will write. - * - * @param {string} str - The Javascript string to copy. - * @param {ArrayBufferView|Array} heap - The array to copy to. Each - * index in this array is assumed - * to be one 8-byte element. - * @param {number} outIdx - The starting offset in the array to begin the copying. - * @param {number} maxBytesToWrite - The maximum number of bytes this function - * can write to the array. This count should - * include the null terminator, i.e. if - * maxBytesToWrite=1, only the null terminator - * will be written and nothing else. - * maxBytesToWrite=0 does not write any bytes - * to the output, not even the null - * terminator. - * @return {number} The number of bytes written, EXCLUDING the null terminator. - */ -function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - // Parameter maxBytesToWrite is not optional. Negative values, 0, null, - // undefined and false each don't write out any bytes. - if (!(maxBytesToWrite > 0)) - return 0; - - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description - // and https://www.ietf.org/rfc/rfc2279.txt - // and https://tools.ietf.org/html/rfc3629 - var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 0xC0 | (u >> 6); - heap[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 0xE0 | (u >> 12); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } else { - if (outIdx + 3 >= endIdx) break; - if (u > 0x10FFFF) warnOnce('Invalid Unicode code point ' + ptrToString(u) + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).'); - heap[outIdx++] = 0xF0 | (u >> 18); - heap[outIdx++] = 0x80 | ((u >> 12) & 63); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } - } - // Null-terminate the pointer to the buffer. - heap[outIdx] = 0; - return outIdx - startIdx; -} - -/** - * Copies the given Javascript String object 'str' to the emscripten HEAP at - * address 'outPtr', null-terminated and encoded in UTF8 form. The copy will - * require at most str.length*4+1 bytes of space in the HEAP. - * Use the function lengthBytesUTF8 to compute the exact number of bytes - * (excluding null terminator) that this function will write. - * - * @return {number} The number of bytes written, EXCLUDING the null terminator. - */ -function stringToUTF8(str, outPtr, maxBytesToWrite) { - assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); -} - -/** - * Returns the number of bytes the given Javascript string takes if encoded as a - * UTF8 byte array, EXCLUDING the null terminator byte. - * - * @param {string} str - JavaScript string to operator on - * @return {number} Length, in bytes, of the UTF8 encoded string. - */ -function lengthBytesUTF8(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var c = str.charCodeAt(i); // possibly a lead surrogate - if (c <= 0x7F) { - len++; - } else if (c <= 0x7FF) { - len += 2; - } else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; ++i; - } else { - len += 3; - } - } - return len; -} - -// end include: runtime_strings.js -// Memory management - -var HEAP, -/** @type {!Int8Array} */ - HEAP8, -/** @type {!Uint8Array} */ - HEAPU8, -/** @type {!Int16Array} */ - HEAP16, -/** @type {!Uint16Array} */ - HEAPU16, -/** @type {!Int32Array} */ - HEAP32, -/** @type {!Uint32Array} */ - HEAPU32, -/** @type {!Float32Array} */ - HEAPF32, -/** @type {!Float64Array} */ - HEAPF64; - -function updateMemoryViews() { - var b = wasmMemory.buffer; - Module['HEAP8'] = HEAP8 = new Int8Array(b); - Module['HEAP16'] = HEAP16 = new Int16Array(b); - Module['HEAP32'] = HEAP32 = new Int32Array(b); - Module['HEAPU8'] = HEAPU8 = new Uint8Array(b); - Module['HEAPU16'] = HEAPU16 = new Uint16Array(b); - Module['HEAPU32'] = HEAPU32 = new Uint32Array(b); - Module['HEAPF32'] = HEAPF32 = new Float32Array(b); - Module['HEAPF64'] = HEAPF64 = new Float64Array(b); -} - -var STACK_SIZE = 65536; -if (Module['STACK_SIZE']) assert(STACK_SIZE === Module['STACK_SIZE'], 'the stack size can no longer be determined at runtime') - -var INITIAL_MEMORY = Module['INITIAL_MEMORY'] || 16777216;legacyModuleProp('INITIAL_MEMORY', 'INITIAL_MEMORY'); - -assert(INITIAL_MEMORY >= STACK_SIZE, 'INITIAL_MEMORY should be larger than STACK_SIZE, was ' + INITIAL_MEMORY + '! (STACK_SIZE=' + STACK_SIZE + ')'); - -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array != 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, - 'JS engine does not provide full typed array support'); - -// If memory is defined in wasm, the user can't provide it. -assert(!Module['wasmMemory'], 'Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally'); -assert(INITIAL_MEMORY == 16777216, 'Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically'); - -// include: runtime_init_table.js -// In regular non-RELOCATABLE mode the table is exported -// from the wasm module and this will be assigned once -// the exports are available. -var wasmTable; - -// end include: runtime_init_table.js -// include: runtime_stack_check.js - - -// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. -function writeStackCookie() { - var max = _emscripten_stack_get_end(); - assert((max & 3) == 0); - // If the stack ends at address zero we write our cookies 4 bytes into the - // stack. This prevents interference with the (separate) address-zero check - // below. - if (max == 0) { - max += 4; - } - // The stack grow downwards towards _emscripten_stack_get_end. - // We write cookies to the final two words in the stack and detect if they are - // ever overwritten. - HEAPU32[((max)>>2)] = 0x2135467; - HEAPU32[(((max)+(4))>>2)] = 0x89BACDFE; - // Also test the global address 0 for integrity. - HEAPU32[0] = 0x63736d65; /* 'emsc' */ -} - -function checkStackCookie() { - if (ABORT) return; - var max = _emscripten_stack_get_end(); - // See writeStackCookie(). - if (max == 0) { - max += 4; - } - var cookie1 = HEAPU32[((max)>>2)]; - var cookie2 = HEAPU32[(((max)+(4))>>2)]; - if (cookie1 != 0x2135467 || cookie2 != 0x89BACDFE) { - abort('Stack overflow! Stack cookie has been overwritten at ' + ptrToString(max) + ', expected hex dwords 0x89BACDFE and 0x2135467, but received ' + ptrToString(cookie2) + ' ' + ptrToString(cookie1)); - } - // Also test the global address 0 for integrity. - if (HEAPU32[0] !== 0x63736d65 /* 'emsc' */) { - abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); - } -} - -// end include: runtime_stack_check.js -// include: runtime_assertions.js - - -// Endianness check -(function() { - var h16 = new Int16Array(1); - var h8 = new Int8Array(h16.buffer); - h16[0] = 0x6373; - if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)'; -})(); - -// end include: runtime_assertions.js -var __ATPRERUN__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the main() is called - -var runtimeInitialized = false; - -function keepRuntimeAlive() { - return noExitRuntime; -} - -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 initRuntime() { - assert(!runtimeInitialized); - runtimeInitialized = true; - - checkStackCookie(); - - SOCKFS.root = FS.mount(SOCKFS, {}, null); - -if (!Module["noFSInit"] && !FS.init.initialized) - FS.init(); -FS.ignorePermissions = false; - -TTY.init(); - callRuntimeCallbacks(__ATINIT__); -} - -function postRun() { - checkStackCookie(); - - 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); -} - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} - -function addOnExit(cb) { -} - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} - -// include: runtime_math.js - - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc - -assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); - -// end include: runtime_math.js -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// Module.preRun (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled -var runDependencyTracking = {}; - -function getUniqueRunDependency(id) { - var orig = id; - while (1) { - if (!runDependencyTracking[id]) return id; - id = orig + Math.random(); - } -} - -function addRunDependency(id) { - runDependencies++; - - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - - if (id) { - assert(!runDependencyTracking[id]); - runDependencyTracking[id] = 1; - if (runDependencyWatcher === null && typeof setInterval != 'undefined') { - // Check for missing dependencies every few seconds - runDependencyWatcher = setInterval(function() { - if (ABORT) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - return; - } - var shown = false; - for (var dep in runDependencyTracking) { - if (!shown) { - shown = true; - err('still waiting on run dependencies:'); - } - err('dependency: ' + dep); - } - if (shown) { - err('(end of list)'); - } - }, 10000); - } - } else { - err('warning: run dependency added without ID'); - } -} - -function removeRunDependency(id) { - runDependencies--; - - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - - if (id) { - assert(runDependencyTracking[id]); - delete runDependencyTracking[id]; - } else { - err('warning: run dependency removed without ID'); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} - -/** @param {string|number=} what */ -function abort(what) { - if (Module['onAbort']) { - Module['onAbort'](what); - } - - what = 'Aborted(' + what + ')'; - // TODO(sbc): Should we remove printing and leave it up to whoever - // catches the exception? - err(what); - - ABORT = true; - EXITSTATUS = 1; - - // Use a wasm runtime error, because a JS error might be seen as a foreign - // exception, which means we'd run destructors on it. We need the error to - // simply make the program stop. - // FIXME This approach does not work in Wasm EH because it currently does not assume - // all RuntimeErrors are from traps; it decides whether a RuntimeError is from - // a trap or not based on a hidden field within the object. So at the moment - // we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that - // allows this in the wasm spec. - - // Suppress closure compiler warning here. Closure compiler's builtin extern - // defintion for WebAssembly.RuntimeError claims it takes no arguments even - // though it can. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed. - /** @suppress {checkTypes} */ - var e = new WebAssembly.RuntimeError(what); - - readyPromiseReject(e); - // Throw the error whether or not MODULARIZE is set because abort is used - // in code paths apart from instantiation where an exception is expected - // to be thrown when abort is called. - throw e; -} - -// {{MEM_INITIALIZER}} - -// include: memoryprofiler.js - - -// end include: memoryprofiler.js -// include: URIUtils.js - - -// Prefix of data URIs emitted by SINGLE_FILE and related options. -var dataURIPrefix = 'data:application/octet-stream;base64,'; - -// Indicates whether filename is a base64 data URI. -function isDataURI(filename) { - // Prefix of data URIs emitted by SINGLE_FILE and related options. - return filename.startsWith(dataURIPrefix); -} - -// Indicates whether filename is delivered via file protocol (as opposed to http/https) -function isFileURI(filename) { - return filename.startsWith('file://'); -} - -// end include: URIUtils.js -/** @param {boolean=} fixedasm */ -function createExportWrapper(name, fixedasm) { - return function() { - var displayName = name; - var asm = fixedasm; - if (!fixedasm) { - asm = Module['asm']; - } - assert(runtimeInitialized, 'native function `' + displayName + '` called before runtime initialization'); - if (!asm[name]) { - assert(asm[name], 'exported native function `' + displayName + '` not found'); - } - return asm[name].apply(null, arguments); - }; -} - -var wasmBinaryFile; - wasmBinaryFile = 'rhino3dm.wasm'; - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); - } - -function getBinary(file) { - try { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - if (readBinary) { - return readBinary(file); - } - throw "both async and sync fetching of the wasm failed"; - } - catch (err) { - abort(err); - } -} - -function getBinaryPromise() { - // If we don't have the binary yet, try to to load it asynchronously. - // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. - // See https://github.com/github/fetch/pull/92#issuecomment-140665932 - // Cordova or Electron apps are typically loaded from a file:// url. - // So use fetch if it is available and the url is not a file, otherwise fall back to XHR. - if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' - && !isFileURI(wasmBinaryFile) - ) { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { - if (!response['ok']) { - throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; - } - return response['arrayBuffer'](); - }).catch(function () { - return getBinary(wasmBinaryFile); - }); - } - else { - if (readAsync) { - // fetch is not available or url is file => try XHR (readAsync uses XHR internally) - return new Promise(function(resolve, reject) { - readAsync(wasmBinaryFile, function(response) { resolve(new Uint8Array(/** @type{!ArrayBuffer} */(response))) }, reject) - }); - } - } - } - - // Otherwise, getBinary should be able to get it synchronously - return Promise.resolve().then(function() { return getBinary(wasmBinaryFile); }); -} - -// Create the wasm instance. -// Receives the wasm imports, returns the exports. -function createWasm() { - // prepare imports - var info = { - 'env': asmLibraryArg, - 'wasi_snapshot_preview1': asmLibraryArg, - }; - // Load the wasm module and create an instance of using native support in the JS engine. - // handle a generated wasm instance, receiving its exports and - // performing other necessary setup - /** @param {WebAssembly.Module=} module*/ - function receiveInstance(instance, module) { - var exports = instance.exports; - - Module['asm'] = exports; - - wasmMemory = Module['asm']['memory']; - assert(wasmMemory, "memory not found in wasm exports"); - // This assertion doesn't hold when emscripten is run in --post-link - // mode. - // TODO(sbc): Read INITIAL_MEMORY out of the wasm file in post-link mode. - //assert(wasmMemory.buffer.byteLength === 16777216); - updateMemoryViews(); - - wasmTable = Module['asm']['__indirect_function_table']; - assert(wasmTable, "table not found in wasm exports"); - - addOnInit(Module['asm']['__wasm_call_ctors']); - - removeRunDependency('wasm-instantiate'); - - } - // wait for the pthread pool (if any) - addRunDependency('wasm-instantiate'); - - // Prefer streaming instantiation if available. - // Async compilation can be confusing when an error on the page overwrites Module - // (for example, if the order of elements is wrong, and the one defining Module is - // later), so we save Module and check it later. - var trueModule = Module; - function receiveInstantiationResult(result) { - // 'result' is a ResultObject object which has both the module and instance. - // receiveInstance() will swap in the exports (to Module.asm) so they can be called - assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); - trueModule = null; - // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. - // When the regression is fixed, can restore the above USE_PTHREADS-enabled path. - receiveInstance(result['instance']); - } - - function instantiateArrayBuffer(receiver) { - return getBinaryPromise().then(function(binary) { - return WebAssembly.instantiate(binary, info); - }).then(function (instance) { - return instance; - }).then(receiver, function(reason) { - err('failed to asynchronously prepare wasm: ' + reason); - - // Warn on some common problems. - if (isFileURI(wasmBinaryFile)) { - err('warning: Loading from a file URI (' + wasmBinaryFile + ') is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing'); - } - abort(reason); - }); - } - - function instantiateAsync() { - if (!wasmBinary && - typeof WebAssembly.instantiateStreaming == 'function' && - !isDataURI(wasmBinaryFile) && - // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. - !isFileURI(wasmBinaryFile) && - // Avoid instantiateStreaming() on Node.js environment for now, as while - // Node.js v18.1.0 implements it, it does not have a full fetch() - // implementation yet. - // - // Reference: - // https://github.com/emscripten-core/emscripten/pull/16917 - !ENVIRONMENT_IS_NODE && - typeof fetch == 'function') { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { - // Suppress closure warning here since the upstream definition for - // instantiateStreaming only allows Promise rather than - // an actual Response. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure is fixed. - /** @suppress {checkTypes} */ - var result = WebAssembly.instantiateStreaming(response, info); - - return result.then( - receiveInstantiationResult, - function(reason) { - // We expect the most common failure cause to be a bad MIME type for the binary, - // in which case falling back to ArrayBuffer instantiation should work. - err('wasm streaming compile failed: ' + reason); - err('falling back to ArrayBuffer instantiation'); - return instantiateArrayBuffer(receiveInstantiationResult); - }); - }); - } else { - return instantiateArrayBuffer(receiveInstantiationResult); - } - } - - // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback - // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel - // to any other async startup actions they are performing. - // Also pthreads and wasm workers initialize the wasm instance through this path. - if (Module['instantiateWasm']) { - try { - var exports = Module['instantiateWasm'](info, receiveInstance); - return exports; - } catch(e) { - err('Module.instantiateWasm callback failed with error: ' + e); - // If instantiation fails, reject the module ready promise. - readyPromiseReject(e); - } - } - - // If instantiation fails, reject the module ready promise. - instantiateAsync().catch(readyPromiseReject); - return {}; // no exports yet; we'll fill them in later -} - -// Globals used by JS i64 conversions (see makeSetValue) -var tempDouble; -var tempI64; - -// === Body === - -var ASM_CONSTS = { - -}; - - - - - - /** @constructor */ - function ExitStatus(status) { - this.name = 'ExitStatus'; - this.message = 'Program terminated with exit(' + status + ')'; - this.status = status; - } - - function callRuntimeCallbacks(callbacks) { - while (callbacks.length > 0) { - // Pass the module as the first argument. - callbacks.shift()(Module); - } - } - - - /** - * @param {number} ptr - * @param {string} type - */ - function getValue(ptr, type = 'i8') { - if (type.endsWith('*')) type = '*'; - 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)]; - case '*': return HEAPU32[((ptr)>>2)]; - default: abort('invalid type for getValue: ' + type); - } - return null; - } - - function ptrToString(ptr) { - assert(typeof ptr === 'number'); - return '0x' + ptr.toString(16).padStart(8, '0'); - } - - - /** - * @param {number} ptr - * @param {number} value - * @param {string} type - */ - function setValue(ptr, value, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': HEAP8[((ptr)>>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.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>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; - case '*': HEAPU32[((ptr)>>2)] = value; break; - default: abort('invalid type for setValue: ' + type); - } - } - - function warnOnce(text) { - if (!warnOnce.shown) warnOnce.shown = {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - if (ENVIRONMENT_IS_NODE) text = 'warning: ' + text; - err(text); - } - } - - function ___assert_fail(condition, filename, line, func) { - abort('Assertion failed: ' + UTF8ToString(condition) + ', at: ' + [filename ? UTF8ToString(filename) : 'unknown filename', line, func ? UTF8ToString(func) : 'unknown function']); - } - - /** @constructor */ - function ExceptionInfo(excPtr) { - this.excPtr = excPtr; - this.ptr = excPtr - 24; - - this.set_type = function(type) { - HEAPU32[(((this.ptr)+(4))>>2)] = type; - }; - - this.get_type = function() { - return HEAPU32[(((this.ptr)+(4))>>2)]; - }; - - this.set_destructor = function(destructor) { - HEAPU32[(((this.ptr)+(8))>>2)] = destructor; - }; - - this.get_destructor = function() { - return HEAPU32[(((this.ptr)+(8))>>2)]; - }; - - this.set_refcount = function(refcount) { - HEAP32[((this.ptr)>>2)] = refcount; - }; - - this.set_caught = function (caught) { - caught = caught ? 1 : 0; - HEAP8[(((this.ptr)+(12))>>0)] = caught; - }; - - this.get_caught = function () { - return HEAP8[(((this.ptr)+(12))>>0)] != 0; - }; - - this.set_rethrown = function (rethrown) { - rethrown = rethrown ? 1 : 0; - HEAP8[(((this.ptr)+(13))>>0)] = rethrown; - }; - - this.get_rethrown = function () { - return HEAP8[(((this.ptr)+(13))>>0)] != 0; - }; - - // Initialize native structure fields. Should be called once after allocated. - this.init = function(type, destructor) { - this.set_adjusted_ptr(0); - this.set_type(type); - this.set_destructor(destructor); - this.set_refcount(0); - this.set_caught(false); - this.set_rethrown(false); - } - - this.add_ref = function() { - var value = HEAP32[((this.ptr)>>2)]; - HEAP32[((this.ptr)>>2)] = value + 1; - }; - - // Returns true if last reference released. - this.release_ref = function() { - var prev = HEAP32[((this.ptr)>>2)]; - HEAP32[((this.ptr)>>2)] = prev - 1; - assert(prev > 0); - return prev === 1; - }; - - this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(((this.ptr)+(16))>>2)] = adjustedPtr; - }; - - this.get_adjusted_ptr = function() { - return HEAPU32[(((this.ptr)+(16))>>2)]; - }; - - // Get pointer which is expected to be received by catch clause in C++ code. It may be adjusted - // when the pointer is casted to some of the exception object base classes (e.g. when virtual - // inheritance is used). When a pointer is thrown this method should return the thrown pointer - // itself. - this.get_exception_ptr = function() { - // Work around a fastcomp bug, this code is still included for some reason in a build without - // exceptions support. - var isPointer = ___cxa_is_pointer_type(this.get_type()); - if (isPointer) { - return HEAPU32[((this.excPtr)>>2)]; - } - var adjusted = this.get_adjusted_ptr(); - if (adjusted !== 0) return adjusted; - return this.excPtr; - }; - } - - var exceptionLast = 0; - - var uncaughtExceptionCount = 0; - function ___cxa_throw(ptr, type, destructor) { - var info = new ExceptionInfo(ptr); - // Initialize ExceptionInfo content after it was allocated in __cxa_allocate_exception. - info.init(type, destructor); - exceptionLast = ptr; - uncaughtExceptionCount++; - throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch."; - } - - function getRandomDevice() { - if (typeof crypto == 'object' && typeof crypto['getRandomValues'] == 'function') { - // for modern web browsers - var randomBuffer = new Uint8Array(1); - return () => { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; - } else - if (ENVIRONMENT_IS_NODE) { - // for nodejs with or without crypto support included - try { - var crypto_module = require('crypto'); - // nodejs has crypto support - return () => crypto_module['randomBytes'](1)[0]; - } catch (e) { - // nodejs doesn't have crypto support - } - } - // we couldn't find a proper implementation, as Math.random() is not suitable for /dev/random, see emscripten-core/emscripten/pull/7096 - return () => abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); - } - - var PATH = {isAbs:(path) => path.charAt(0) === '/',splitPath:(filename) => { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:(parts, allowAboveRoot) => { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up; up--) { - parts.unshift('..'); - } - } - return parts; - },normalize:(path) => { - var isAbsolute = PATH.isAbs(path), - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter((p) => !!p), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:(path) => { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:(path) => { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - path = PATH.normalize(path); - path = path.replace(/\/$/, ""); - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },join:function() { - var paths = Array.prototype.slice.call(arguments); - return PATH.normalize(paths.join('/')); - },join2:(l, r) => { - return PATH.normalize(l + '/' + r); - }}; - - - var PATH_FS = {resolve:function() { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path != 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - return ''; // an invalid portion invalidates the whole thing - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = PATH.isAbs(path); - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter((p) => !!p), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:(from, to) => { - from = PATH_FS.resolve(from).substr(1); - to = PATH_FS.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - - /** @type {function(string, boolean=, number=)} */ - 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; - } - var TTY = {ttys:[],init:function () { - // https://github.com/emscripten-core/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function() { - // https://github.com/emscripten-core/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function(dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function(stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(43); - } - stream.tty = tty; - stream.seekable = false; - },close:function(stream) { - // flush any pending line data - stream.tty.ops.fsync(stream.tty); - },fsync:function(stream) { - stream.tty.ops.fsync(stream.tty); - },read:function(stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(60); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(60); - } - try { - for (var i = 0; i < length; i++) { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } - } catch (e) { - throw new FS.ErrnoError(29); - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function(tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - // we will read data by chunks of BUFSIZE - var BUFSIZE = 256; - var buf = Buffer.alloc(BUFSIZE); - var bytesRead = 0; - - try { - bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, -1); - } catch(e) { - // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes, - // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0. - if (e.toString().includes('EOF')) bytesRead = 0; - else throw e; - } - - if (bytesRead > 0) { - result = buf.slice(0, bytesRead).toString('utf-8'); - } else { - result = null; - } - } else - if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function(tty, val) { - if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. - } - },fsync:function(tty) { - if (tty.output && tty.output.length > 0) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }},default_tty1_ops:{put_char:function(tty, val) { - if (val === null || val === 10) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); - } - },fsync:function(tty) { - if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }}}; - - - function zeroMemory(address, size) { - HEAPU8.fill(0, address, address + size); - return address; - } - - function alignMemory(size, alignment) { - assert(alignment, "alignment argument is required"); - return Math.ceil(size / alignment) * alignment; - } - function mmapAlloc(size) { - abort('internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported'); - } - var MEMFS = {ops_table:null,mount:function(mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function(parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(63); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap, - msync: MEMFS.stream_ops.msync - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - } - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity. - // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred - // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size - // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. - node.contents = null; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - parent.timestamp = node.timestamp; - } - return node; - },getFileDataAsTypedArray:function(node) { - if (!node.contents) return new Uint8Array(0); - if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. - return new Uint8Array(node.contents); - },expandFileStorage:function(node, newCapacity) { - var prevCapacity = node.contents ? node.contents.length : 0; - if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. - // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. - // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to - // avoid overshooting the allocation cap by a very large margin. - var CAPACITY_DOUBLING_MAX = 1024 * 1024; - newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) >>> 0); - if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. - var oldContents = node.contents; - node.contents = new Uint8Array(newCapacity); // Allocate new storage. - if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. - },resizeFileStorage:function(node, newSize) { - if (node.usedBytes == newSize) return; - if (newSize == 0) { - node.contents = null; // Fully decommit when requesting a resize to zero. - node.usedBytes = 0; - } else { - var oldContents = node.contents; - node.contents = new Uint8Array(newSize); // Allocate new storage. - if (oldContents) { - node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. - } - node.usedBytes = newSize; - } - },node_ops:{getattr:function(node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.usedBytes; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function(node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.resizeFileStorage(node, attr.size); - } - },lookup:function(parent, name) { - throw FS.genericErrors[44]; - },mknod:function(parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function(old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(55); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.parent.timestamp = Date.now() - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - new_dir.timestamp = old_node.parent.timestamp; - old_node.parent = new_dir; - },unlink:function(parent, name) { - delete parent.contents[name]; - parent.timestamp = Date.now(); - },rmdir:function(parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(55); - } - delete parent.contents[name]; - parent.timestamp = Date.now(); - },readdir:function(node) { - var entries = ['.', '..']; - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function(parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function(node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(28); - } - return node.link; - }},stream_ops:{read:function(stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= stream.node.usedBytes) return 0; - var size = Math.min(stream.node.usedBytes - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else { - for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; - } - return size; - },write:function(stream, buffer, offset, length, position, canOwn) { - // The data buffer should be a typed array view - assert(!(buffer instanceof ArrayBuffer)); - // If the buffer is located in main memory (HEAP), and if - // memory can grow, we can't hold on to references of the - // memory buffer, as they may get invalidated. That means we - // need to do copy its contents. - if (buffer.buffer === HEAP8.buffer) { - canOwn = false; - } - - if (!length) return 0; - var node = stream.node; - node.timestamp = Date.now(); - - if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array? - if (canOwn) { - assert(position === 0, 'canOwn must imply no weird position inside the file'); - node.contents = buffer.subarray(offset, offset + length); - node.usedBytes = length; - return length; - } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. - node.contents = buffer.slice(offset, offset + length); - node.usedBytes = length; - return length; - } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? - node.contents.set(buffer.subarray(offset, offset + length), position); - return length; - } - } - - // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. - MEMFS.expandFileStorage(node, position+length); - if (node.contents.subarray && buffer.subarray) { - // Use typed array write which is available. - node.contents.set(buffer.subarray(offset, offset + length), position); - } else { - for (var i = 0; i < length; i++) { - node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. - } - } - node.usedBytes = Math.max(node.usedBytes, position + length); - return length; - },llseek:function(stream, offset, whence) { - var position = offset; - if (whence === 1) { - position += stream.position; - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - position += stream.node.usedBytes; - } - } - if (position < 0) { - throw new FS.ErrnoError(28); - } - return position; - },allocate:function(stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length); - stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); - },mmap:function(stream, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if (!(flags & 2) && contents.buffer === HEAP8.buffer) { - // We can't emulate MAP_SHARED when the file is not backed by the - // buffer we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = mmapAlloc(length); - if (!ptr) { - throw new FS.ErrnoError(48); - } - HEAP8.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - },msync:function(stream, buffer, offset, length, mmapFlags) { - MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); - // should we check if bytesWritten and length are the same? - return 0; - }}}; - - /** @param {boolean=} noRunDep */ - function asyncLoad(url, onload, onerror, noRunDep) { - var dep = !noRunDep ? getUniqueRunDependency('al ' + url) : ''; - readAsync(url, (arrayBuffer) => { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (dep) removeRunDependency(dep); - }, (event) => { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (dep) addRunDependency(dep); - } - - - var ERRNO_MESSAGES = {0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"}; - - var ERRNO_CODES = {}; - - function withStackSave(f) { - var stack = stackSave(); - var ret = f(); - stackRestore(stack); - return ret; - } - function demangle(func) { - warnOnce('warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling'); - return func; - } - function demangleAll(text) { - var regex = - /\b_Z[\w\d_]+/g; - return text.replace(regex, - function(x) { - var y = demangle(x); - return x === y ? x : (y + ' [' + x + ']'); - }); - } - var FS = {root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path, opts = {}) => { - path = PATH_FS.resolve(path); - - if (!path) return { path: '', node: null }; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - opts = Object.assign(defaults, opts) - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(32); - } - - // split the absolute path - var parts = path.split('/').filter((p) => !!p); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH_FS.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(32); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:(node) => { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:(parentid, name) => { - var hash = 0; - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:(node) => { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:(node) => { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:(parent, name) => { - var errCode = FS.mayLookup(parent); - if (errCode) { - throw new FS.ErrnoError(errCode, parent); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:(parent, name, mode, rdev) => { - assert(typeof parent == 'object') - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:(node) => { - FS.hashRemoveNode(node); - },isRoot:(node) => { - return node === node.parent; - },isMountpoint:(node) => { - return !!node.mounted; - },isFile:(mode) => { - return (mode & 61440) === 32768; - },isDir:(mode) => { - return (mode & 61440) === 16384; - },isLink:(mode) => { - return (mode & 61440) === 40960; - },isChrdev:(mode) => { - return (mode & 61440) === 8192; - },isBlkdev:(mode) => { - return (mode & 61440) === 24576; - },isFIFO:(mode) => { - return (mode & 61440) === 4096; - },isSocket:(mode) => { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:(str) => { - var flags = FS.flagModes[str]; - if (typeof flags == 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:(flag) => { - var perms = ['r', 'w', 'rw'][flag & 3]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:(node, perms) => { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.includes('r') && !(node.mode & 292)) { - return 2; - } else if (perms.includes('w') && !(node.mode & 146)) { - return 2; - } else if (perms.includes('x') && !(node.mode & 73)) { - return 2; - } - return 0; - },mayLookup:(dir) => { - var errCode = FS.nodePermissions(dir, 'x'); - if (errCode) return errCode; - if (!dir.node_ops.lookup) return 2; - return 0; - },mayCreate:(dir, name) => { - try { - var node = FS.lookupNode(dir, name); - return 20; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:(dir, name, isdir) => { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var errCode = FS.nodePermissions(dir, 'wx'); - if (errCode) { - return errCode; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return 54; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return 10; - } - } else { - if (FS.isDir(node.mode)) { - return 31; - } - } - return 0; - },mayOpen:(node, flags) => { - if (!node) { - return 44; - } - if (FS.isLink(node.mode)) { - return 32; - } else if (FS.isDir(node.mode)) { - if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write - (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only) - return 31; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:(fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(33); - },getStream:(fd) => FS.streams[fd],createStream:(stream, fd_start, fd_end) => { - if (!FS.FSStream) { - FS.FSStream = /** @constructor */ function() { - this.shared = { }; - }; - FS.FSStream.prototype = {}; - Object.defineProperties(FS.FSStream.prototype, { - object: { - /** @this {FS.FSStream} */ - get: function() { return this.node; }, - /** @this {FS.FSStream} */ - set: function(val) { this.node = val; } - }, - isRead: { - /** @this {FS.FSStream} */ - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - /** @this {FS.FSStream} */ - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - /** @this {FS.FSStream} */ - get: function() { return (this.flags & 1024); } - }, - flags: { - /** @this {FS.FSStream} */ - get: function() { return this.shared.flags; }, - /** @this {FS.FSStream} */ - set: function(val) { this.shared.flags = val; }, - }, - position : { - /** @this {FS.FSStream} */ - get: function() { return this.shared.position; }, - /** @this {FS.FSStream} */ - set: function(val) { this.shared.position = val; }, - }, - }); - } - // clone it, so we can return an instance of FSStream - stream = Object.assign(new FS.FSStream(), stream); - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:(fd) => { - FS.streams[fd] = null; - },chrdev_stream_ops:{open:(stream) => { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:() => { - throw new FS.ErrnoError(70); - }},major:(dev) => ((dev) >> 8),minor:(dev) => ((dev) & 0xff),makedev:(ma, mi) => ((ma) << 8 | (mi)),registerDevice:(dev, ops) => { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:(dev) => FS.devices[dev],getMounts:(mount) => { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:(populate, callback) => { - if (typeof populate == 'function') { - callback = populate; - populate = false; - } - - FS.syncFSRequests++; - - if (FS.syncFSRequests > 1) { - err('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work'); - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function doCallback(errCode) { - assert(FS.syncFSRequests > 0); - FS.syncFSRequests--; - return callback(errCode); - } - - function done(errCode) { - if (errCode) { - if (!done.errored) { - done.errored = true; - return doCallback(errCode); - } - return; - } - if (++completed >= mounts.length) { - doCallback(null); - } - }; - - // sync all mounts - mounts.forEach((mount) => { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:(type, opts, mountpoint) => { - if (typeof type == 'string') { - // The filesystem was not included, and instead we have an error - // message stored in the variable. - throw type; - } - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(10); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:(mountpoint) => { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(28); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach((hash) => { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.includes(current.mount)) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:(parent, name) => { - return parent.node_ops.lookup(parent, name); - },mknod:(path, mode, dev) => { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - if (!name || name === '.' || name === '..') { - throw new FS.ErrnoError(28); - } - var errCode = FS.mayCreate(parent, name); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:(path, mode) => { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:(path, mode) => { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdirTree:(path, mode) => { - var dirs = path.split('/'); - var d = ''; - for (var i = 0; i < dirs.length; ++i) { - if (!dirs[i]) continue; - d += '/' + dirs[i]; - try { - FS.mkdir(d, mode); - } catch(e) { - if (e.errno != 20) throw e; - } - } - },mkdev:(path, mode, dev) => { - if (typeof dev == 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:(oldpath, newpath) => { - if (!PATH_FS.resolve(oldpath)) { - throw new FS.ErrnoError(44); - } - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - if (!parent) { - throw new FS.ErrnoError(44); - } - var newname = PATH.basename(newpath); - var errCode = FS.mayCreate(parent, newname); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:(old_path, new_path) => { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - - // let the errors from non existant directories percolate up - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - - if (!old_dir || !new_dir) throw new FS.ErrnoError(44); - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(75); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH_FS.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(28); - } - // new path should not be an ancestor of the old path - relative = PATH_FS.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(55); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var errCode = FS.mayDelete(old_dir, old_name, isdir); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - errCode = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(10); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - errCode = FS.nodePermissions(old_dir, 'w'); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:(path) => { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var errCode = FS.mayDelete(parent, name, true); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:(path) => { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(54); - } - return node.node_ops.readdir(node); - },unlink:(path) => { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - if (!parent) { - throw new FS.ErrnoError(44); - } - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var errCode = FS.mayDelete(parent, name, false); - if (errCode) { - // According to POSIX, we should map EISDIR to EPERM, but - // we instead do what Linux does (and we must, as we use - // the musl linux libc). - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:(path) => { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link) { - throw new FS.ErrnoError(44); - } - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(28); - } - return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); - },stat:(path, dontFollow) => { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node) { - throw new FS.ErrnoError(44); - } - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(63); - } - return node.node_ops.getattr(node); - },lstat:(path) => { - return FS.stat(path, true); - },chmod:(path, mode, dontFollow) => { - var node; - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:(path, mode) => { - FS.chmod(path, mode, true); - },fchmod:(fd, mode) => { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - FS.chmod(stream.node, mode); - },chown:(path, uid, gid, dontFollow) => { - var node; - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:(path, uid, gid) => { - FS.chown(path, uid, gid, true); - },fchown:(fd, uid, gid) => { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - FS.chown(stream.node, uid, gid); - },truncate:(path, len) => { - if (len < 0) { - throw new FS.ErrnoError(28); - } - var node; - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(31); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(28); - } - var errCode = FS.nodePermissions(node, 'w'); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:(fd, len) => { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(28); - } - FS.truncate(stream.node, len); - },utime:(path, atime, mtime) => { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:(path, flags, mode) => { - if (path === "") { - throw new FS.ErrnoError(44); - } - flags = typeof flags == 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode == 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path == 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - var created = false; - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(20); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - created = true; - } - } - if (!node) { - throw new FS.ErrnoError(44); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // if asked only for a directory, then this must be one - if ((flags & 65536) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - // check permissions, if this is not a file we just created now (it is ok to - // create and write to a file with read-only permissions; it is read-only - // for later use) - if (!created) { - var errCode = FS.mayOpen(node, flags); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - // do truncation if necessary - if ((flags & 512) && !created) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512 | 131072); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - } - } - return stream; - },close:(stream) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (stream.getdents) stream.getdents = null; // free readdir state - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - stream.fd = null; - },isClosed:(stream) => { - return stream.fd === null; - },llseek:(stream, offset, whence) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(70); - } - if (whence != 0 && whence != 1 && whence != 2) { - throw new FS.ErrnoError(28); - } - stream.position = stream.stream_ops.llseek(stream, offset, whence); - stream.ungotten = []; - return stream.position; - },read:(stream, buffer, offset, length, position) => { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(28); - } - var seeking = typeof position != 'undefined'; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:(stream, buffer, offset, length, position, canOwn) => { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(28); - } - if (stream.seekable && stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var seeking = typeof position != 'undefined'; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:(stream, offset, length) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(28); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(138); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:(stream, length, position, prot, flags) => { - // User requests writing to file (prot & PROT_WRITE != 0). - // Checking if we have permissions to write to the file unless - // MAP_PRIVATE flag is set. According to POSIX spec it is possible - // to write to file opened in read-only mode with MAP_PRIVATE flag, - // as all modifications will be visible only in the memory of - // the current process. - if ((prot & 2) !== 0 - && (flags & 2) === 0 - && (stream.flags & 2097155) !== 2) { - throw new FS.ErrnoError(2); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(2); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(43); - } - return stream.stream_ops.mmap(stream, length, position, prot, flags); - },msync:(stream, buffer, offset, length, mmapFlags) => { - if (!stream.stream_ops.msync) { - return 0; - } - return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); - },munmap:(stream) => 0,ioctl:(stream, cmd, arg) => { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(59); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:(path, opts = {}) => { - opts.flags = opts.flags || 0; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = UTF8ArrayToString(buf, 0); - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:(path, data, opts = {}) => { - opts.flags = opts.flags || 577; - var stream = FS.open(path, opts.flags, opts.mode); - if (typeof data == 'string') { - var buf = new Uint8Array(lengthBytesUTF8(data)+1); - var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); - FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); - } else if (ArrayBuffer.isView(data)) { - FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); - } else { - throw new Error('Unsupported data type'); - } - FS.close(stream); - },cwd:() => FS.currentPath,chdir:(path) => { - var lookup = FS.lookupPath(path, { follow: true }); - if (lookup.node === null) { - throw new FS.ErrnoError(44); - } - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(54); - } - var errCode = FS.nodePermissions(lookup.node, 'x'); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:() => { - FS.mkdir('/tmp'); - FS.mkdir('/home'); - FS.mkdir('/home/web_user'); - },createDefaultDevices:() => { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: () => 0, - write: (stream, buffer, offset, length, pos) => length, - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using err() rather than out() - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // setup /dev/[u]random - var random_device = getRandomDevice(); - FS.createDevice('/dev', 'random', random_device); - FS.createDevice('/dev', 'urandom', random_device); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createSpecialDirectories:() => { - // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the - // name of the stream for fd 6 (see test_unistd_ttyname) - FS.mkdir('/proc'); - var proc_self = FS.mkdir('/proc/self'); - FS.mkdir('/proc/self/fd'); - FS.mount({ - mount: () => { - var node = FS.createNode(proc_self, 'fd', 16384 | 511 /* 0777 */, 73); - node.node_ops = { - lookup: (parent, name) => { - var fd = +name; - var stream = FS.getStream(fd); - if (!stream) throw new FS.ErrnoError(8); - var ret = { - parent: null, - mount: { mountpoint: 'fake' }, - node_ops: { readlink: () => stream.path }, - }; - ret.parent = ret; // make it look like a simple root node - return ret; - } - }; - return node; - } - }, {}, '/proc/self/fd'); - },createStandardStreams:() => { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 0); - var stdout = FS.open('/dev/stdout', 1); - var stderr = FS.open('/dev/stderr', 1); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:() => { - if (FS.ErrnoError) return; - FS.ErrnoError = /** @this{Object} */ function ErrnoError(errno, node) { - this.node = node; - this.setErrno = /** @this{Object} */ function(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - }; - this.setErrno(errno); - this.message = ERRNO_MESSAGES[errno]; - - // Try to get a maximally helpful stack trace. On Node.js, getting Error.stack - // now ensures it shows what we want. - if (this.stack) { - // Define the stack property for Node.js 4, which otherwise errors on the next line. - Object.defineProperty(this, "stack", { value: (new Error).stack, writable: true }); - this.stack = demangleAll(this.stack); - } - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [44].forEach((code) => { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:() => { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - FS.createSpecialDirectories(); - - FS.filesystems = { - 'MEMFS': MEMFS, - }; - },init:(input, output, error) => { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:() => { - FS.init.initialized = false; - // force-flush all streams, so we get musl std streams printed out - _fflush(0); - // close all of our streams - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:(canRead, canWrite) => { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },findObject:(path, dontResolveLastLink) => { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (!ret.exists) { - return null; - } - return ret.object; - },analyzePath:(path, dontResolveLastLink) => { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createPath:(parent, path, canRead, canWrite) => { - parent = typeof parent == 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:(parent, name, properties, canRead, canWrite) => { - var path = PATH.join2(typeof parent == 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:(parent, name, data, canRead, canWrite, canOwn) => { - var path = name; - if (parent) { - parent = typeof parent == 'string' ? parent : FS.getPath(parent); - path = name ? PATH.join2(parent, name) : parent; - } - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data == 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 577); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:(parent, name, input, output) => { - var path = PATH.join2(typeof parent == 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: (stream) => { - stream.seekable = false; - }, - close: (stream) => { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: (stream, buffer, offset, length, pos /* ignored */) => { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: (stream, buffer, offset, length, pos) => { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(29); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },forceLoadFile:(obj) => { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - if (typeof XMLHttpRequest != 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (read_) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(read_(obj.url), true); - obj.usedBytes = obj.contents.length; - } catch (e) { - throw new FS.ErrnoError(29); - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - },createLazyFile:(parent, name, url, canRead, canWrite) => { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - /** @constructor */ - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = /** @this{Object} */ function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = (idx / this.chunkSize)|0; - return this.getter(chunkNum)[chunkOffset]; - }; - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - }; - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; - - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (from, to) => { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(/** @type{Array} */(xhr.response || [])); - } - return intArrayFromString(xhr.responseText || '', true); - }; - var lazyArray = this; - lazyArray.setDataGetter((chunkNum) => { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof lazyArray.chunks[chunkNum] == 'undefined') { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof lazyArray.chunks[chunkNum] == 'undefined') throw new Error('doXHR failed!'); - return lazyArray.chunks[chunkNum]; - }); - - if (usesGzip || !datalength) { - // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length - chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file - datalength = this.getter(0).length; - chunkSize = datalength; - out("LazyFiles on gzip forces download of the whole file when length is accessed"); - } - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - }; - if (typeof XMLHttpRequest != 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperties(lazyArray, { - length: { - get: /** @this{Object} */ function() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }, - chunkSize: { - get: /** @this{Object} */ function() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // Add a function that defers querying the file size until it is asked the first time. - Object.defineProperties(node, { - usedBytes: { - get: /** @this {FSNode} */ function() { return this.contents.length; } - } - }); - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach((key) => { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - FS.forceLoadFile(node); - return fn.apply(null, arguments); - }; - }); - function writeChunks(stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - } - // use a custom read function - stream_ops.read = (stream, buffer, offset, length, position) => { - FS.forceLoadFile(node); - return writeChunks(stream, buffer, offset, length, position) - }; - // use a custom mmap function - stream_ops.mmap = (stream, length, position, prot, flags) => { - FS.forceLoadFile(node); - var ptr = mmapAlloc(length); - if (!ptr) { - throw new FS.ErrnoError(48); - } - writeChunks(stream, HEAP8, ptr, length, position); - return { ptr: ptr, allocated: true }; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; - var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname - function processData(byteArray) { - function finish(byteArray) { - if (preFinish) preFinish(); - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency(dep); - } - if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { - if (onerror) onerror(); - removeRunDependency(dep); - })) { - return; - } - finish(byteArray); - } - addRunDependency(dep); - if (typeof url == 'string') { - asyncLoad(url, (byteArray) => processData(byteArray), onerror); - } else { - processData(url); - } - },indexedDB:() => { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:() => { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths, onload, onerror) => { - onload = onload || (() => {}); - onerror = onerror || (() => {}); - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = () => { - out('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = () => { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach((path) => { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = () => { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = () => { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:(paths, onload, onerror) => { - onload = onload || (() => {}); - onerror = onerror || (() => {}); - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = () => { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach((path) => { - var getRequest = files.get(path); - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = () => { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },absolutePath:() => { - abort('FS.absolutePath has been removed; use PATH_FS.resolve instead'); - },createFolder:() => { - abort('FS.createFolder has been removed; use FS.mkdir instead'); - },createLink:() => { - abort('FS.createLink has been removed; use FS.symlink instead'); - },joinPath:() => { - abort('FS.joinPath has been removed; use PATH.join instead'); - },mmapAlloc:() => { - abort('FS.mmapAlloc has been replaced by the top level function mmapAlloc'); - },standardizePath:() => { - abort('FS.standardizePath has been removed; use PATH.normalize instead'); - }}; - var SOCKFS = {mount:function(mount) { - // If Module['websocket'] has already been defined (e.g. for configuring - // the subprotocol/url) use that, if not initialise it to a new object. - Module['websocket'] = (Module['websocket'] && - ('object' === typeof Module['websocket'])) ? Module['websocket'] : {}; - - // Add the Event registration mechanism to the exported websocket configuration - // object so we can register network callbacks from native JavaScript too. - // For more documentation see system/include/emscripten/emscripten.h - Module['websocket']._callbacks = {}; - Module['websocket']['on'] = /** @this{Object} */ function(event, callback) { - if ('function' === typeof callback) { - this._callbacks[event] = callback; - } - return this; - }; - - Module['websocket'].emit = /** @this{Object} */ function(event, param) { - if ('function' === typeof this._callbacks[event]) { - this._callbacks[event].call(this, param); - } - }; - - // If debug is enabled register simple default logging callbacks for each Event. - - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function(family, type, protocol) { - type &= ~526336; // Some applications may pass it; it makes no sense for a single process. - var streaming = type == 1; - if (streaming && protocol && protocol != 6) { - throw new FS.ErrnoError(66); // if SOCK_STREAM, must be tcp or 0. - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - error: null, // Used in getsockopt for SOL_SOCKET/SO_ERROR test - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: 2, - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function(fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function(stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function(stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function(stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function(stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function(stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function() { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function(sock, addr, port) { - var ws; - - if (typeof addr == 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces '//' comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the '#' for '//' again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - var parts = addr.split('/'); - url = url + parts[0] + ":" + port + "/" + parts.slice(1).join('/'); - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The default WebSocket options - var opts = undefined; - - if (subProtocols !== 'null') { - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - opts = subProtocols; - } - - // some webservers (azure) does not support subprotocol header - if (runtimeConfig && null === Module['websocket']['subprotocol']) { - subProtocols = 'null'; - opts = undefined; - } - - // If node we use the ws library. - var WebSocketConstructor; - if (ENVIRONMENT_IS_NODE) { - WebSocketConstructor = /** @type{(typeof WebSocket)} */(require('ws')); - } else - { - WebSocketConstructor = WebSocket; - } - ws = new WebSocketConstructor(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(23); - } - } - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport != 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function(sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function(sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function(sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function(sock, peer) { - var first = true; - - var handleOpen = function () { - - Module['websocket'].emit('open', sock.stream.fd); - - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - if (typeof data == 'string') { - var encoder = new TextEncoder(); // should be utf-8 - data = encoder.encode(data); // make a typed array from the string - } else { - assert(data.byteLength !== undefined); // must receive an ArrayBuffer - if (data.byteLength == 0) { - // An empty ArrayBuffer will emit a pseudo disconnect event - // as recv/recvmsg will return zero which indicates that a socket - // has performed a shutdown although the connection has not been disconnected yet. - return; - } - data = new Uint8Array(data); // make a typed array view on the array buffer - } - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - Module['websocket'].emit('message', sock.stream.fd); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, isBinary) { - if (!isBinary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('close', function() { - Module['websocket'].emit('close', sock.stream.fd); - }); - peer.socket.on('error', function(error) { - // Although the ws library may pass errors that may be more descriptive than - // ECONNREFUSED they are not necessarily the expected error code e.g. - // ENOTFOUND on getaddrinfo seems to be node.js specific, so using ECONNREFUSED - // is still probably the most useful thing to do. - sock.error = 14; // Used in getsockopt for SOL_SOCKET/SO_ERROR test. - Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'ECONNREFUSED: Connection refused']); - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onclose = function() { - Module['websocket'].emit('close', sock.stream.fd); - }; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - peer.socket.onerror = function(error) { - // The WebSocket spec only allows a 'simple event' to be thrown on error, - // so we only really know as much as ECONNREFUSED. - sock.error = 14; // Used in getsockopt for SOL_SOCKET/SO_ERROR test. - Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'ECONNREFUSED: Connection refused']); - }; - } - },poll:function(sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function(sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)] = bytes; - return 0; - default: - return 28; - } - },close:function(sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function(sock, addr, port) { - if (typeof sock.saddr != 'undefined' || typeof sock.sport != 'undefined') { - throw new FS.ErrnoError(28); // already bound - } - sock.saddr = addr; - sock.sport = port; - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== 138) throw e; - } - } - },connect:function(sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(138); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr != 'undefined' && typeof sock.dport != 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(7); - } else { - throw new FS.ErrnoError(30); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(26); - },listen:function(sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(138); - } - if (sock.server) { - throw new FS.ErrnoError(28); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - Module['websocket'].emit('listen', sock.stream.fd); // Send Event with listen fd. - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - Module['websocket'].emit('connection', newsock.stream.fd); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - Module['websocket'].emit('connection', sock.stream.fd); - } - }); - sock.server.on('close', function() { - Module['websocket'].emit('close', sock.stream.fd); - sock.server = null; - }); - sock.server.on('error', function(error) { - // Although the ws library may pass errors that may be more descriptive than - // ECONNREFUSED they are not necessarily the expected error code e.g. - // ENOTFOUND on getaddrinfo seems to be node.js specific, so using EHOSTUNREACH - // is still probably the most useful thing to do. This error shouldn't - // occur in a well written app as errors should get trapped in the compiled - // app's own getaddrinfo call. - sock.error = 23; // Used in getsockopt for SOL_SOCKET/SO_ERROR test. - Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'EHOSTUNREACH: Host is unreachable']); - // don't throw - }); - },accept:function(listensock) { - if (!listensock.server || !listensock.pending.length) { - throw new FS.ErrnoError(28); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function(sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(53); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function(sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(17); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(53); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(6); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - if (ArrayBuffer.isView(buffer)) { - offset += buffer.byteOffset; - buffer = buffer.buffer; - } - - var data; - data = buffer.slice(offset, offset + length); - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(28); - } - },recvmsg:function(sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(53); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(53); - } - if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(6); - } - throw new FS.ErrnoError(6); - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}}; - - function getSocketFromFD(fd) { - var socket = SOCKFS.getSocket(fd); - if (!socket) throw new FS.ErrnoError(8); - return socket; - } - - function setErrNo(value) { - HEAP32[((___errno_location())>>2)] = value; - return value; - } - var Sockets = {BUFFER_SIZE:10240,MAX_BUFFER_SIZE:10485760,nextFd:1,fds:{},nextport:1,maxport:65535,peer:null,connections:{},portmap:{},localAddr:4261412874,addrPool:[33554442,50331658,67108874,83886090,100663306,117440522,134217738,150994954,167772170,184549386,201326602,218103818,234881034]}; - - function inetNtop4(addr) { - return (addr & 0xff) + '.' + ((addr >> 8) & 0xff) + '.' + ((addr >> 16) & 0xff) + '.' + ((addr >> 24) & 0xff) - } - - - function inetNtop6(ints) { - // ref: http://www.ietf.org/rfc/rfc2373.txt - section 2.5.4 - // Format for IPv4 compatible and mapped 128-bit IPv6 Addresses - // 128-bits are split into eight 16-bit words - // stored in network byte order (big-endian) - // | 80 bits | 16 | 32 bits | - // +-----------------------------------------------------------------+ - // | 10 bytes | 2 | 4 bytes | - // +--------------------------------------+--------------------------+ - // + 5 words | 1 | 2 words | - // +--------------------------------------+--------------------------+ - // |0000..............................0000|0000| IPv4 ADDRESS | (compatible) - // +--------------------------------------+----+---------------------+ - // |0000..............................0000|FFFF| IPv4 ADDRESS | (mapped) - // +--------------------------------------+----+---------------------+ - var str = ""; - var word = 0; - var longest = 0; - var lastzero = 0; - var zstart = 0; - var len = 0; - var i = 0; - var parts = [ - ints[0] & 0xffff, - (ints[0] >> 16), - ints[1] & 0xffff, - (ints[1] >> 16), - ints[2] & 0xffff, - (ints[2] >> 16), - ints[3] & 0xffff, - (ints[3] >> 16) - ]; - - // Handle IPv4-compatible, IPv4-mapped, loopback and any/unspecified addresses - - var hasipv4 = true; - var v4part = ""; - // check if the 10 high-order bytes are all zeros (first 5 words) - for (i = 0; i < 5; i++) { - if (parts[i] !== 0) { hasipv4 = false; break; } - } - - if (hasipv4) { - // low-order 32-bits store an IPv4 address (bytes 13 to 16) (last 2 words) - v4part = inetNtop4(parts[6] | (parts[7] << 16)); - // IPv4-mapped IPv6 address if 16-bit value (bytes 11 and 12) == 0xFFFF (6th word) - if (parts[5] === -1) { - str = "::ffff:"; - str += v4part; - return str; - } - // IPv4-compatible IPv6 address if 16-bit value (bytes 11 and 12) == 0x0000 (6th word) - if (parts[5] === 0) { - str = "::"; - //special case IPv6 addresses - if (v4part === "0.0.0.0") v4part = ""; // any/unspecified address - if (v4part === "0.0.0.1") v4part = "1";// loopback address - str += v4part; - return str; - } - } - - // Handle all other IPv6 addresses - - // first run to find the longest contiguous zero words - for (word = 0; word < 8; word++) { - if (parts[word] === 0) { - if (word - lastzero > 1) { - len = 0; - } - lastzero = word; - len++; - } - if (len > longest) { - longest = len; - zstart = word - longest + 1; - } - } - - for (word = 0; word < 8; word++) { - if (longest > 1) { - // compress contiguous zeros - to produce "::" - if (parts[word] === 0 && word >= zstart && word < (zstart + longest) ) { - if (word === zstart) { - str += ":"; - if (zstart === 0) str += ":"; //leading zeros case - } - continue; - } - } - // converts 16-bit words from big-endian to little-endian before converting to hex string - str += Number(_ntohs(parts[word] & 0xffff)).toString(16); - str += word < 7 ? ":" : ""; - } - return str; - } - - function readSockaddr(sa, salen) { - // family / port offsets are common to both sockaddr_in and sockaddr_in6 - var family = HEAP16[((sa)>>1)]; - var port = _ntohs(HEAPU16[(((sa)+(2))>>1)]); - var addr; - - switch (family) { - case 2: - if (salen !== 16) { - return { errno: 28 }; - } - addr = HEAP32[(((sa)+(4))>>2)]; - addr = inetNtop4(addr); - break; - case 10: - if (salen !== 28) { - return { errno: 28 }; - } - addr = [ - HEAP32[(((sa)+(8))>>2)], - HEAP32[(((sa)+(12))>>2)], - HEAP32[(((sa)+(16))>>2)], - HEAP32[(((sa)+(20))>>2)] - ]; - addr = inetNtop6(addr); - break; - default: - return { errno: 5 }; - } - - return { family: family, addr: addr, port: port }; - } - - - function inetPton4(str) { - var b = str.split('.'); - for (var i = 0; i < 4; i++) { - var tmp = Number(b[i]); - if (isNaN(tmp)) return null; - b[i] = tmp; - } - return (b[0] | (b[1] << 8) | (b[2] << 16) | (b[3] << 24)) >>> 0; - } - - - /** @suppress {checkTypes} */ - function jstoi_q(str) { - return parseInt(str); - } - function inetPton6(str) { - var words; - var w, offset, z, i; - /* http://home.deds.nl/~aeron/regex/ */ - var valid6regx = /^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i - var parts = []; - if (!valid6regx.test(str)) { - return null; - } - if (str === "::") { - return [0, 0, 0, 0, 0, 0, 0, 0]; - } - // Z placeholder to keep track of zeros when splitting the string on ":" - if (str.startsWith("::")) { - str = str.replace("::", "Z:"); // leading zeros case - } else { - str = str.replace("::", ":Z:"); - } - - if (str.indexOf(".") > 0) { - // parse IPv4 embedded stress - str = str.replace(new RegExp('[.]', 'g'), ":"); - words = str.split(":"); - words[words.length-4] = jstoi_q(words[words.length-4]) + jstoi_q(words[words.length-3])*256; - words[words.length-3] = jstoi_q(words[words.length-2]) + jstoi_q(words[words.length-1])*256; - words = words.slice(0, words.length-2); - } else { - words = str.split(":"); - } - - offset = 0; z = 0; - for (w=0; w < words.length; w++) { - if (typeof words[w] == 'string') { - if (words[w] === 'Z') { - // compressed zeros - write appropriate number of zero words - for (z = 0; z < (8 - words.length+1); z++) { - parts[w+z] = 0; - } - offset = z-1; - } else { - // parse hex to field to 16-bit value and write it in network byte-order - parts[w+offset] = _htons(parseInt(words[w],16)); - } - } else { - // parsed IPv4 words - parts[w+offset] = words[w]; - } - } - return [ - (parts[1] << 16) | parts[0], - (parts[3] << 16) | parts[2], - (parts[5] << 16) | parts[4], - (parts[7] << 16) | parts[6] - ]; - } - var DNS = {address_map:{id:1,addrs:{},names:{}},lookup_name:function (name) { - // If the name is already a valid ipv4 / ipv6 address, don't generate a fake one. - var res = inetPton4(name); - if (res !== null) { - return name; - } - res = inetPton6(name); - if (res !== null) { - return name; - } - - // See if this name is already mapped. - var addr; - - if (DNS.address_map.addrs[name]) { - addr = DNS.address_map.addrs[name]; - } else { - var id = DNS.address_map.id++; - assert(id < 65535, 'exceeded max address mappings of 65535'); - - addr = '172.29.' + (id & 0xff) + '.' + (id & 0xff00); - - DNS.address_map.names[addr] = name; - DNS.address_map.addrs[name] = addr; - } - - return addr; - },lookup_addr:function (addr) { - if (DNS.address_map.names[addr]) { - return DNS.address_map.names[addr]; - } - - return null; - }}; - /** @param {boolean=} allowNull */ - function getSocketAddress(addrp, addrlen, allowNull) { - if (allowNull && addrp === 0) return null; - var info = readSockaddr(addrp, addrlen); - if (info.errno) throw new FS.ErrnoError(info.errno); - info.addr = DNS.lookup_addr(info.addr) || info.addr; - return info; - } - - - var SYSCALLS = {DEFAULT_POLLMASK:5,calculateAt:function(dirfd, path, allowEmpty) { - if (PATH.isAbs(path)) { - return path; - } - // relative path - var dir; - if (dirfd === -100) { - dir = FS.cwd(); - } else { - var dirstream = SYSCALLS.getStreamFromFD(dirfd); - dir = dirstream.path; - } - if (path.length == 0) { - if (!allowEmpty) { - throw new FS.ErrnoError(44);; - } - return dir; - } - return PATH.join2(dir, path); - },doStat:function(func, path, buf) { - try { - var stat = func(path); - } catch (e) { - if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { - // an error occurred while trying to look up the path; we should just report ENOTDIR - return -54; - } - throw e; - } - HEAP32[((buf)>>2)] = stat.dev; - HEAP32[(((buf)+(8))>>2)] = stat.ino; - HEAP32[(((buf)+(12))>>2)] = stat.mode; - HEAPU32[(((buf)+(16))>>2)] = stat.nlink; - HEAP32[(((buf)+(20))>>2)] = stat.uid; - HEAP32[(((buf)+(24))>>2)] = stat.gid; - HEAP32[(((buf)+(28))>>2)] = stat.rdev; - (tempI64 = [stat.size>>>0,(tempDouble=stat.size,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(40))>>2)] = tempI64[0],HEAP32[(((buf)+(44))>>2)] = tempI64[1]); - HEAP32[(((buf)+(48))>>2)] = 4096; - HEAP32[(((buf)+(52))>>2)] = stat.blocks; - var atime = stat.atime.getTime(); - var mtime = stat.mtime.getTime(); - var ctime = stat.ctime.getTime(); - (tempI64 = [Math.floor(atime / 1000)>>>0,(tempDouble=Math.floor(atime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(56))>>2)] = tempI64[0],HEAP32[(((buf)+(60))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(64))>>2)] = (atime % 1000) * 1000; - (tempI64 = [Math.floor(mtime / 1000)>>>0,(tempDouble=Math.floor(mtime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(72))>>2)] = tempI64[0],HEAP32[(((buf)+(76))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(80))>>2)] = (mtime % 1000) * 1000; - (tempI64 = [Math.floor(ctime / 1000)>>>0,(tempDouble=Math.floor(ctime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(88))>>2)] = tempI64[0],HEAP32[(((buf)+(92))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(96))>>2)] = (ctime % 1000) * 1000; - (tempI64 = [stat.ino>>>0,(tempDouble=stat.ino,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(104))>>2)] = tempI64[0],HEAP32[(((buf)+(108))>>2)] = tempI64[1]); - return 0; - },doMsync:function(addr, stream, len, flags, offset) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (flags & 2) { - // MAP_PRIVATE calls need not to be synced back to underlying fs - return 0; - } - var buffer = HEAPU8.slice(addr, addr + len); - FS.msync(stream, buffer, offset, len, flags); - },varargs:undefined,get:function() { - assert(SYSCALLS.varargs != undefined); - SYSCALLS.varargs += 4; - var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; - return ret; - },getStr:function(ptr) { - var ret = UTF8ToString(ptr); - return ret; - },getStreamFromFD:function(fd) { - var stream = FS.getStream(fd); - if (!stream) throw new FS.ErrnoError(8); - return stream; - }}; - function ___syscall_connect(fd, addr, addrlen) { - try { - - var sock = getSocketFromFD(fd); - var info = getSocketAddress(addr, addrlen); - sock.sock_ops.connect(sock, info.addr, info.port); - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_faccessat(dirfd, path, amode, flags) { - try { - - path = SYSCALLS.getStr(path); - assert(flags === 0); - path = SYSCALLS.calculateAt(dirfd, path); - if (amode & ~7) { - // need a valid mode - return -28; - } - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node) { - return -44; - } - var perms = ''; - if (amode & 4) perms += 'r'; - if (amode & 2) perms += 'w'; - if (amode & 1) perms += 'x'; - if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { - return -2; - } - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - - function ___syscall_fcntl64(fd, cmd, varargs) { - SYSCALLS.varargs = varargs; - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - switch (cmd) { - case 0: { - var arg = SYSCALLS.get(); - if (arg < 0) { - return -28; - } - var newStream; - newStream = FS.createStream(stream, arg); - return newStream.fd; - } - case 1: - case 2: - return 0; // FD_CLOEXEC makes no sense for a single process. - case 3: - return stream.flags; - case 4: { - var arg = SYSCALLS.get(); - stream.flags |= arg; - return 0; - } - case 5: - /* case 5: Currently in musl F_GETLK64 has same value as F_GETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ { - - var arg = SYSCALLS.get(); - var offset = 0; - // We're always unlocked. - HEAP16[(((arg)+(offset))>>1)] = 2; - return 0; - } - case 6: - case 7: - /* case 6: Currently in musl F_SETLK64 has same value as F_SETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ - /* case 7: Currently in musl F_SETLKW64 has same value as F_SETLKW, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ - - - return 0; // Pretend that the locking is successful. - case 16: - case 8: - return -28; // These are for sockets. We don't have them fully implemented yet. - case 9: - // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fcntl() returns that, and we set errno ourselves. - setErrNo(28); - return -1; - default: { - return -28; - } - } - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_fstat64(fd, buf) { - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - return SYSCALLS.doStat(FS.stat, stream.path, buf); - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function convertI32PairToI53Checked(lo, hi) { - assert(lo == (lo >>> 0) || lo == (lo|0)); // lo should either be a i32 or a u32 - assert(hi === (hi|0)); // hi should be a i32 - return ((hi + 0x200000) >>> 0 < 0x400001 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN; - } - - - - - function ___syscall_ftruncate64(fd, length_low, length_high) { - try { - - var length = convertI32PairToI53Checked(length_low, length_high); if (isNaN(length)) return -61; - FS.ftruncate(fd, length); - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_ioctl(fd, op, varargs) { - SYSCALLS.varargs = varargs; - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - switch (op) { - case 21509: - case 21505: { - if (!stream.tty) return -59; - return 0; - } - case 21510: - case 21511: - case 21512: - case 21506: - case 21507: - case 21508: { - if (!stream.tty) return -59; - return 0; // no-op, not actually adjusting terminal settings - } - case 21519: { - if (!stream.tty) return -59; - var argp = SYSCALLS.get(); - HEAP32[((argp)>>2)] = 0; - return 0; - } - case 21520: { - if (!stream.tty) return -59; - return -28; // not supported - } - case 21531: { - var argp = SYSCALLS.get(); - return FS.ioctl(stream, op, argp); - } - case 21523: { - // TODO: in theory we should write to the winsize struct that gets - // passed in, but for now musl doesn't read anything on it - if (!stream.tty) return -59; - return 0; - } - case 21524: { - // TODO: technically, this ioctl call should change the window size. - // but, since emscripten doesn't have any concept of a terminal window - // yet, we'll just silently throw it away as we do TIOCGWINSZ - if (!stream.tty) return -59; - return 0; - } - default: return -28; // not supported - } - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_lstat64(path, buf) { - try { - - path = SYSCALLS.getStr(path); - return SYSCALLS.doStat(FS.lstat, path, buf); - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_newfstatat(dirfd, path, buf, flags) { - try { - - path = SYSCALLS.getStr(path); - var nofollow = flags & 256; - var allowEmpty = flags & 4096; - flags = flags & (~6400); - assert(!flags, 'unknown flags in __syscall_newfstatat: ' + flags); - path = SYSCALLS.calculateAt(dirfd, path, allowEmpty); - return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf); - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_openat(dirfd, path, flags, varargs) { - SYSCALLS.varargs = varargs; - try { - - path = SYSCALLS.getStr(path); - path = SYSCALLS.calculateAt(dirfd, path); - var mode = varargs ? SYSCALLS.get() : 0; - return FS.open(path, flags, mode).fd; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - - function ___syscall_socket(domain, type, protocol) { - try { - - var sock = SOCKFS.createSocket(domain, type, protocol); - assert(sock.stream.fd < 64); // XXX ? select() assumes socket fd values are in 0..63 - return sock.stream.fd; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_stat64(path, buf) { - try { - - path = SYSCALLS.getStr(path); - return SYSCALLS.doStat(FS.stat, path, buf); - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - var tupleRegistrations = {}; - - function runDestructors(destructors) { - while (destructors.length) { - var ptr = destructors.pop(); - var del = destructors.pop(); - del(ptr); - } - } - - function simpleReadValueFromPointer(pointer) { - return this['fromWireType'](HEAP32[((pointer)>>2)]); - } - - var awaitingDependencies = {}; - - var registeredTypes = {}; - - var typeDependencies = {}; - - var char_0 = 48; - - var char_9 = 57; - function makeLegalFunctionName(name) { - if (undefined === name) { - return '_unknown'; - } - name = name.replace(/[^a-zA-Z0-9_]/g, '$'); - var f = name.charCodeAt(0); - if (f >= char_0 && f <= char_9) { - return '_' + name; - } - return name; - } - function createNamedFunction(name, body) { - name = makeLegalFunctionName(name); - /*jshint evil:true*/ - return new Function( - "body", - "return function " + name + "() {\n" + - " \"use strict\";" + - " return body.apply(this, arguments);\n" + - "};\n" - )(body); - } - function extendError(baseErrorType, errorName) { - var errorClass = createNamedFunction(errorName, function(message) { - this.name = errorName; - this.message = message; - - var stack = (new Error(message)).stack; - if (stack !== undefined) { - this.stack = this.toString() + '\n' + - stack.replace(/^Error(:[^\n]*)?\n/, ''); - } - }); - errorClass.prototype = Object.create(baseErrorType.prototype); - errorClass.prototype.constructor = errorClass; - errorClass.prototype.toString = function() { - if (this.message === undefined) { - return this.name; - } else { - return this.name + ': ' + this.message; - } - }; - - return errorClass; - } - var InternalError = undefined; - function throwInternalError(message) { - throw new InternalError(message); - } - function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) { - myTypes.forEach(function(type) { - typeDependencies[type] = dependentTypes; - }); - - function onComplete(typeConverters) { - var myTypeConverters = getTypeConverters(typeConverters); - if (myTypeConverters.length !== myTypes.length) { - throwInternalError('Mismatched type converter count'); - } - for (var i = 0; i < myTypes.length; ++i) { - registerType(myTypes[i], myTypeConverters[i]); - } - } - - var typeConverters = new Array(dependentTypes.length); - var unregisteredTypes = []; - var registered = 0; - dependentTypes.forEach((dt, i) => { - if (registeredTypes.hasOwnProperty(dt)) { - typeConverters[i] = registeredTypes[dt]; - } else { - unregisteredTypes.push(dt); - if (!awaitingDependencies.hasOwnProperty(dt)) { - awaitingDependencies[dt] = []; - } - awaitingDependencies[dt].push(() => { - typeConverters[i] = registeredTypes[dt]; - ++registered; - if (registered === unregisteredTypes.length) { - onComplete(typeConverters); - } - }); - } - }); - if (0 === unregisteredTypes.length) { - onComplete(typeConverters); - } - } - function __embind_finalize_value_array(rawTupleType) { - var reg = tupleRegistrations[rawTupleType]; - delete tupleRegistrations[rawTupleType]; - var elements = reg.elements; - var elementsLength = elements.length; - var elementTypes = elements.map(function(elt) { return elt.getterReturnType; }). - concat(elements.map(function(elt) { return elt.setterArgumentType; })); - - var rawConstructor = reg.rawConstructor; - var rawDestructor = reg.rawDestructor; - - whenDependentTypesAreResolved([rawTupleType], elementTypes, function(elementTypes) { - elements.forEach((elt, i) => { - var getterReturnType = elementTypes[i]; - var getter = elt.getter; - var getterContext = elt.getterContext; - var setterArgumentType = elementTypes[i + elementsLength]; - var setter = elt.setter; - var setterContext = elt.setterContext; - elt.read = (ptr) => { - return getterReturnType['fromWireType'](getter(getterContext, ptr)); - }; - elt.write = (ptr, o) => { - var destructors = []; - setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); - runDestructors(destructors); - }; - }); - - return [{ - name: reg.name, - 'fromWireType': function(ptr) { - var rv = new Array(elementsLength); - for (var i = 0; i < elementsLength; ++i) { - rv[i] = elements[i].read(ptr); - } - rawDestructor(ptr); - return rv; - }, - 'toWireType': function(destructors, o) { - if (elementsLength !== o.length) { - throw new TypeError("Incorrect number of tuple elements for " + reg.name + ": expected=" + elementsLength + ", actual=" + o.length); - } - var ptr = rawConstructor(); - for (var i = 0; i < elementsLength; ++i) { - elements[i].write(ptr, o[i]); - } - if (destructors !== null) { - destructors.push(rawDestructor, ptr); - } - return ptr; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: rawDestructor, - }]; - }); - } - - var structRegistrations = {}; - - - - function __embind_finalize_value_object(structType) { - var reg = structRegistrations[structType]; - delete structRegistrations[structType]; - - var rawConstructor = reg.rawConstructor; - var rawDestructor = reg.rawDestructor; - var fieldRecords = reg.fields; - var fieldTypes = fieldRecords.map((field) => field.getterReturnType). - concat(fieldRecords.map((field) => field.setterArgumentType)); - whenDependentTypesAreResolved([structType], fieldTypes, (fieldTypes) => { - var fields = {}; - fieldRecords.forEach((field, i) => { - var fieldName = field.fieldName; - var getterReturnType = fieldTypes[i]; - var getter = field.getter; - var getterContext = field.getterContext; - var setterArgumentType = fieldTypes[i + fieldRecords.length]; - var setter = field.setter; - var setterContext = field.setterContext; - fields[fieldName] = { - read: (ptr) => { - return getterReturnType['fromWireType']( - getter(getterContext, ptr)); - }, - write: (ptr, o) => { - var destructors = []; - setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); - runDestructors(destructors); - } - }; - }); - - return [{ - name: reg.name, - 'fromWireType': function(ptr) { - var rv = {}; - for (var i in fields) { - rv[i] = fields[i].read(ptr); - } - rawDestructor(ptr); - return rv; - }, - 'toWireType': function(destructors, o) { - // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: - // assume all fields are present without checking. - for (var fieldName in fields) { - if (!(fieldName in o)) { - throw new TypeError('Missing field: "' + fieldName + '"'); - } - } - var ptr = rawConstructor(); - for (fieldName in fields) { - fields[fieldName].write(ptr, o[fieldName]); - } - if (destructors !== null) { - destructors.push(rawDestructor, ptr); - } - return ptr; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: rawDestructor, - }]; - }); - } - - function __embind_register_bigint(primitiveType, name, size, minRange, maxRange) {} - - function getShiftFromSize(size) { - switch (size) { - case 1: return 0; - case 2: return 1; - case 4: return 2; - case 8: return 3; - default: - throw new TypeError('Unknown type size: ' + size); - } - } - - function embind_init_charCodes() { - var codes = new Array(256); - for (var i = 0; i < 256; ++i) { - codes[i] = String.fromCharCode(i); - } - embind_charCodes = codes; - } - var embind_charCodes = undefined; - function readLatin1String(ptr) { - var ret = ""; - var c = ptr; - while (HEAPU8[c]) { - ret += embind_charCodes[HEAPU8[c++]]; - } - return ret; - } - - - - - var BindingError = undefined; - function throwBindingError(message) { - throw new BindingError(message); - } - - /** @param {Object=} options */ - function registerType(rawType, registeredInstance, options = {}) { - if (!('argPackAdvance' in registeredInstance)) { - throw new TypeError('registerType registeredInstance requires argPackAdvance'); - } - - var name = registeredInstance.name; - if (!rawType) { - throwBindingError('type "' + name + '" must have a positive integer typeid pointer'); - } - if (registeredTypes.hasOwnProperty(rawType)) { - if (options.ignoreDuplicateRegistrations) { - return; - } else { - throwBindingError("Cannot register type '" + name + "' twice"); - } - } - - registeredTypes[rawType] = registeredInstance; - delete typeDependencies[rawType]; - - if (awaitingDependencies.hasOwnProperty(rawType)) { - var callbacks = awaitingDependencies[rawType]; - delete awaitingDependencies[rawType]; - callbacks.forEach((cb) => cb()); - } - } - function __embind_register_bool(rawType, name, size, trueValue, falseValue) { - var shift = getShiftFromSize(size); - - name = readLatin1String(name); - registerType(rawType, { - name: name, - 'fromWireType': function(wt) { - // ambiguous emscripten ABI: sometimes return values are - // true or false, and sometimes integers (0 or 1) - return !!wt; - }, - 'toWireType': function(destructors, o) { - return o ? trueValue : falseValue; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': function(pointer) { - // TODO: if heap is fixed (like in asm.js) this could be executed outside - var heap; - if (size === 1) { - heap = HEAP8; - } else if (size === 2) { - heap = HEAP16; - } else if (size === 4) { - heap = HEAP32; - } else { - throw new TypeError("Unknown boolean type size: " + name); - } - return this['fromWireType'](heap[pointer >> shift]); - }, - destructorFunction: null, // This type does not need a destructor - }); - } - - - function ClassHandle_isAliasOf(other) { - if (!(this instanceof ClassHandle)) { - return false; - } - if (!(other instanceof ClassHandle)) { - return false; - } - - var leftClass = this.$$.ptrType.registeredClass; - var left = this.$$.ptr; - var rightClass = other.$$.ptrType.registeredClass; - var right = other.$$.ptr; - - while (leftClass.baseClass) { - left = leftClass.upcast(left); - leftClass = leftClass.baseClass; - } - - while (rightClass.baseClass) { - right = rightClass.upcast(right); - rightClass = rightClass.baseClass; - } - - return leftClass === rightClass && left === right; - } - - function shallowCopyInternalPointer(o) { - return { - count: o.count, - deleteScheduled: o.deleteScheduled, - preservePointerOnDelete: o.preservePointerOnDelete, - ptr: o.ptr, - ptrType: o.ptrType, - smartPtr: o.smartPtr, - smartPtrType: o.smartPtrType, - }; - } - - function throwInstanceAlreadyDeleted(obj) { - function getInstanceTypeName(handle) { - return handle.$$.ptrType.registeredClass.name; - } - throwBindingError(getInstanceTypeName(obj) + ' instance already deleted'); - } - - var finalizationRegistry = false; - - function detachFinalizer(handle) {} - - function runDestructor($$) { - if ($$.smartPtr) { - $$.smartPtrType.rawDestructor($$.smartPtr); - } else { - $$.ptrType.registeredClass.rawDestructor($$.ptr); - } - } - function releaseClassHandle($$) { - $$.count.value -= 1; - var toDelete = 0 === $$.count.value; - if (toDelete) { - runDestructor($$); - } - } - - function downcastPointer(ptr, ptrClass, desiredClass) { - if (ptrClass === desiredClass) { - return ptr; - } - if (undefined === desiredClass.baseClass) { - return null; // no conversion - } - - var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass); - if (rv === null) { - return null; - } - return desiredClass.downcast(rv); - } - - var registeredPointers = {}; - - function getInheritedInstanceCount() { - return Object.keys(registeredInstances).length; - } - - function getLiveInheritedInstances() { - var rv = []; - for (var k in registeredInstances) { - if (registeredInstances.hasOwnProperty(k)) { - rv.push(registeredInstances[k]); - } - } - return rv; - } - - var deletionQueue = []; - function flushPendingDeletes() { - while (deletionQueue.length) { - var obj = deletionQueue.pop(); - obj.$$.deleteScheduled = false; - obj['delete'](); - } - } - - var delayFunction = undefined; - - - function setDelayFunction(fn) { - delayFunction = fn; - if (deletionQueue.length && delayFunction) { - delayFunction(flushPendingDeletes); - } - } - function init_embind() { - Module['getInheritedInstanceCount'] = getInheritedInstanceCount; - Module['getLiveInheritedInstances'] = getLiveInheritedInstances; - Module['flushPendingDeletes'] = flushPendingDeletes; - Module['setDelayFunction'] = setDelayFunction; - } - var registeredInstances = {}; - - function getBasestPointer(class_, ptr) { - if (ptr === undefined) { - throwBindingError('ptr should not be undefined'); - } - while (class_.baseClass) { - ptr = class_.upcast(ptr); - class_ = class_.baseClass; - } - return ptr; - } - function getInheritedInstance(class_, ptr) { - ptr = getBasestPointer(class_, ptr); - return registeredInstances[ptr]; - } - - - function makeClassHandle(prototype, record) { - if (!record.ptrType || !record.ptr) { - throwInternalError('makeClassHandle requires ptr and ptrType'); - } - var hasSmartPtrType = !!record.smartPtrType; - var hasSmartPtr = !!record.smartPtr; - if (hasSmartPtrType !== hasSmartPtr) { - throwInternalError('Both smartPtrType and smartPtr must be specified'); - } - record.count = { value: 1 }; - return attachFinalizer(Object.create(prototype, { - $$: { - value: record, - }, - })); - } - function RegisteredPointer_fromWireType(ptr) { - // ptr is a raw pointer (or a raw smartpointer) - - // rawPointer is a maybe-null raw pointer - var rawPointer = this.getPointee(ptr); - if (!rawPointer) { - this.destructor(ptr); - return null; - } - - var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer); - if (undefined !== registeredInstance) { - // JS object has been neutered, time to repopulate it - if (0 === registeredInstance.$$.count.value) { - registeredInstance.$$.ptr = rawPointer; - registeredInstance.$$.smartPtr = ptr; - return registeredInstance['clone'](); - } else { - // else, just increment reference count on existing object - // it already has a reference to the smart pointer - var rv = registeredInstance['clone'](); - this.destructor(ptr); - return rv; - } - } - - function makeDefaultHandle() { - if (this.isSmartPointer) { - return makeClassHandle(this.registeredClass.instancePrototype, { - ptrType: this.pointeeType, - ptr: rawPointer, - smartPtrType: this, - smartPtr: ptr, - }); - } else { - return makeClassHandle(this.registeredClass.instancePrototype, { - ptrType: this, - ptr: ptr, - }); - } - } - - var actualType = this.registeredClass.getActualType(rawPointer); - var registeredPointerRecord = registeredPointers[actualType]; - if (!registeredPointerRecord) { - return makeDefaultHandle.call(this); - } - - var toType; - if (this.isConst) { - toType = registeredPointerRecord.constPointerType; - } else { - toType = registeredPointerRecord.pointerType; - } - var dp = downcastPointer( - rawPointer, - this.registeredClass, - toType.registeredClass); - if (dp === null) { - return makeDefaultHandle.call(this); - } - if (this.isSmartPointer) { - return makeClassHandle(toType.registeredClass.instancePrototype, { - ptrType: toType, - ptr: dp, - smartPtrType: this, - smartPtr: ptr, - }); - } else { - return makeClassHandle(toType.registeredClass.instancePrototype, { - ptrType: toType, - ptr: dp, - }); - } - } - function attachFinalizer(handle) { - if ('undefined' === typeof FinalizationRegistry) { - attachFinalizer = (handle) => handle; - return handle; - } - // If the running environment has a FinalizationRegistry (see - // https://github.com/tc39/proposal-weakrefs), then attach finalizers - // for class handles. We check for the presence of FinalizationRegistry - // at run-time, not build-time. - finalizationRegistry = new FinalizationRegistry((info) => { - console.warn(info.leakWarning.stack.replace(/^Error: /, '')); - releaseClassHandle(info.$$); - }); - attachFinalizer = (handle) => { - var $$ = handle.$$; - var hasSmartPtr = !!$$.smartPtr; - if (hasSmartPtr) { - // We should not call the destructor on raw pointers in case other code expects the pointee to live - var info = { $$: $$ }; - // Create a warning as an Error instance in advance so that we can store - // the current stacktrace and point to it when / if a leak is detected. - // This is more useful than the empty stacktrace of `FinalizationRegistry` - // callback. - var cls = $$.ptrType.registeredClass; - info.leakWarning = new Error("Embind found a leaked C++ instance " + cls.name + " <" + ptrToString($$.ptr) + ">.\n" + - "We'll free it automatically in this case, but this functionality is not reliable across various environments.\n" + - "Make sure to invoke .delete() manually once you're done with the instance instead.\n" + - "Originally allocated"); // `.stack` will add "at ..." after this sentence - if ('captureStackTrace' in Error) { - Error.captureStackTrace(info.leakWarning, RegisteredPointer_fromWireType); - } - finalizationRegistry.register(handle, info, handle); - } - return handle; - }; - detachFinalizer = (handle) => finalizationRegistry.unregister(handle); - return attachFinalizer(handle); - } - function ClassHandle_clone() { - if (!this.$$.ptr) { - throwInstanceAlreadyDeleted(this); - } - - if (this.$$.preservePointerOnDelete) { - this.$$.count.value += 1; - return this; - } else { - var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), { - $$: { - value: shallowCopyInternalPointer(this.$$), - } - })); - - clone.$$.count.value += 1; - clone.$$.deleteScheduled = false; - return clone; - } - } - - - - - function ClassHandle_delete() { - if (!this.$$.ptr) { - throwInstanceAlreadyDeleted(this); - } - - if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { - throwBindingError('Object already scheduled for deletion'); - } - - detachFinalizer(this); - releaseClassHandle(this.$$); - - if (!this.$$.preservePointerOnDelete) { - this.$$.smartPtr = undefined; - this.$$.ptr = undefined; - } - } - - function ClassHandle_isDeleted() { - return !this.$$.ptr; - } - - - - function ClassHandle_deleteLater() { - if (!this.$$.ptr) { - throwInstanceAlreadyDeleted(this); - } - if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { - throwBindingError('Object already scheduled for deletion'); - } - deletionQueue.push(this); - if (deletionQueue.length === 1 && delayFunction) { - delayFunction(flushPendingDeletes); - } - this.$$.deleteScheduled = true; - return this; - } - function init_ClassHandle() { - ClassHandle.prototype['isAliasOf'] = ClassHandle_isAliasOf; - ClassHandle.prototype['clone'] = ClassHandle_clone; - ClassHandle.prototype['delete'] = ClassHandle_delete; - ClassHandle.prototype['isDeleted'] = ClassHandle_isDeleted; - ClassHandle.prototype['deleteLater'] = ClassHandle_deleteLater; - } - function ClassHandle() { - } - - - - function ensureOverloadTable(proto, methodName, humanName) { - if (undefined === proto[methodName].overloadTable) { - var prevFunc = proto[methodName]; - // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments. - proto[methodName] = function() { - // TODO This check can be removed in -O3 level "unsafe" optimizations. - if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) { - throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!"); - } - return proto[methodName].overloadTable[arguments.length].apply(this, arguments); - }; - // Move the previous function into the overload table. - proto[methodName].overloadTable = []; - proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; - } - } - - /** @param {number=} numArguments */ - function exposePublicSymbol(name, value, numArguments) { - if (Module.hasOwnProperty(name)) { - if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) { - throwBindingError("Cannot register public name '" + name + "' twice"); - } - - // We are exposing a function with the same name as an existing function. Create an overload table and a function selector - // that routes between the two. - ensureOverloadTable(Module, name, name); - if (Module.hasOwnProperty(numArguments)) { - throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!"); - } - // Add the new function into the overload table. - Module[name].overloadTable[numArguments] = value; - } - else { - Module[name] = value; - if (undefined !== numArguments) { - Module[name].numArguments = numArguments; - } - } - } - - - - /** @constructor */ - function RegisteredClass(name, - constructor, - instancePrototype, - rawDestructor, - baseClass, - getActualType, - upcast, - downcast) { - this.name = name; - this.constructor = constructor; - this.instancePrototype = instancePrototype; - this.rawDestructor = rawDestructor; - this.baseClass = baseClass; - this.getActualType = getActualType; - this.upcast = upcast; - this.downcast = downcast; - this.pureVirtualFunctions = []; - } - - - function upcastPointer(ptr, ptrClass, desiredClass) { - while (ptrClass !== desiredClass) { - if (!ptrClass.upcast) { - throwBindingError("Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name); - } - ptr = ptrClass.upcast(ptr); - ptrClass = ptrClass.baseClass; - } - return ptr; - } - function constNoSmartPtrRawPointerToWireType(destructors, handle) { - if (handle === null) { - if (this.isReference) { - throwBindingError('null is not a valid ' + this.name); - } - return 0; - } - - if (!handle.$$) { - throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); - } - if (!handle.$$.ptr) { - throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); - } - var handleClass = handle.$$.ptrType.registeredClass; - var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); - return ptr; - } - - - function genericPointerToWireType(destructors, handle) { - var ptr; - if (handle === null) { - if (this.isReference) { - throwBindingError('null is not a valid ' + this.name); - } - - if (this.isSmartPointer) { - ptr = this.rawConstructor(); - if (destructors !== null) { - destructors.push(this.rawDestructor, ptr); - } - return ptr; - } else { - return 0; - } - } - - if (!handle.$$) { - throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); - } - if (!handle.$$.ptr) { - throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); - } - if (!this.isConst && handle.$$.ptrType.isConst) { - throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name); - } - var handleClass = handle.$$.ptrType.registeredClass; - ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); - - if (this.isSmartPointer) { - // TODO: this is not strictly true - // We could support BY_EMVAL conversions from raw pointers to smart pointers - // because the smart pointer can hold a reference to the handle - if (undefined === handle.$$.smartPtr) { - throwBindingError('Passing raw pointer to smart pointer is illegal'); - } - - switch (this.sharingPolicy) { - case 0: // NONE - // no upcasting - if (handle.$$.smartPtrType === this) { - ptr = handle.$$.smartPtr; - } else { - throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name); - } - break; - - case 1: // INTRUSIVE - ptr = handle.$$.smartPtr; - break; - - case 2: // BY_EMVAL - if (handle.$$.smartPtrType === this) { - ptr = handle.$$.smartPtr; - } else { - var clonedHandle = handle['clone'](); - ptr = this.rawShare( - ptr, - Emval.toHandle(function() { - clonedHandle['delete'](); - }) - ); - if (destructors !== null) { - destructors.push(this.rawDestructor, ptr); - } - } - break; - - default: - throwBindingError('Unsupporting sharing policy'); - } - } - return ptr; - } - - - function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) { - if (handle === null) { - if (this.isReference) { - throwBindingError('null is not a valid ' + this.name); - } - return 0; - } - - if (!handle.$$) { - throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); - } - if (!handle.$$.ptr) { - throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); - } - if (handle.$$.ptrType.isConst) { - throwBindingError('Cannot convert argument of type ' + handle.$$.ptrType.name + ' to parameter type ' + this.name); - } - var handleClass = handle.$$.ptrType.registeredClass; - var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); - return ptr; - } - - - function RegisteredPointer_getPointee(ptr) { - if (this.rawGetPointee) { - ptr = this.rawGetPointee(ptr); - } - return ptr; - } - - function RegisteredPointer_destructor(ptr) { - if (this.rawDestructor) { - this.rawDestructor(ptr); - } - } - - function RegisteredPointer_deleteObject(handle) { - if (handle !== null) { - handle['delete'](); - } - } - - function init_RegisteredPointer() { - RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee; - RegisteredPointer.prototype.destructor = RegisteredPointer_destructor; - RegisteredPointer.prototype['argPackAdvance'] = 8; - RegisteredPointer.prototype['readValueFromPointer'] = simpleReadValueFromPointer; - RegisteredPointer.prototype['deleteObject'] = RegisteredPointer_deleteObject; - RegisteredPointer.prototype['fromWireType'] = RegisteredPointer_fromWireType; - } - /** @constructor - @param {*=} pointeeType, - @param {*=} sharingPolicy, - @param {*=} rawGetPointee, - @param {*=} rawConstructor, - @param {*=} rawShare, - @param {*=} rawDestructor, - */ - function RegisteredPointer( - name, - registeredClass, - isReference, - isConst, - - // smart pointer properties - isSmartPointer, - pointeeType, - sharingPolicy, - rawGetPointee, - rawConstructor, - rawShare, - rawDestructor - ) { - this.name = name; - this.registeredClass = registeredClass; - this.isReference = isReference; - this.isConst = isConst; - - // smart pointer properties - this.isSmartPointer = isSmartPointer; - this.pointeeType = pointeeType; - this.sharingPolicy = sharingPolicy; - this.rawGetPointee = rawGetPointee; - this.rawConstructor = rawConstructor; - this.rawShare = rawShare; - this.rawDestructor = rawDestructor; - - if (!isSmartPointer && registeredClass.baseClass === undefined) { - if (isConst) { - this['toWireType'] = constNoSmartPtrRawPointerToWireType; - this.destructorFunction = null; - } else { - this['toWireType'] = nonConstNoSmartPtrRawPointerToWireType; - this.destructorFunction = null; - } - } else { - this['toWireType'] = genericPointerToWireType; - // Here we must leave this.destructorFunction undefined, since whether genericPointerToWireType returns - // a pointer that needs to be freed up is runtime-dependent, and cannot be evaluated at registration time. - // TODO: Create an alternative mechanism that allows removing the use of var destructors = []; array in - // craftInvokerFunction altogether. - } - } - - /** @param {number=} numArguments */ - function replacePublicSymbol(name, value, numArguments) { - if (!Module.hasOwnProperty(name)) { - throwInternalError('Replacing nonexistant public symbol'); - } - // If there's an overload table for this symbol, replace the symbol in the overload table instead. - if (undefined !== Module[name].overloadTable && undefined !== numArguments) { - Module[name].overloadTable[numArguments] = value; - } - else { - Module[name] = value; - Module[name].argCount = numArguments; - } - } - - - - function dynCallLegacy(sig, ptr, args) { - assert(('dynCall_' + sig) in Module, 'bad function pointer type - dynCall function not found for sig \'' + sig + '\''); - if (args && args.length) { - // j (64-bit integer) must be passed in as two numbers [low 32, high 32]. - assert(args.length === sig.substring(1).replace(/j/g, '--').length); - } else { - assert(sig.length == 1); - } - var f = Module['dynCall_' + sig]; - return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr); - } - - var wasmTableMirror = []; - - function getWasmTableEntry(funcPtr) { - var func = wasmTableMirror[funcPtr]; - if (!func) { - if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; - wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); - } - assert(wasmTable.get(funcPtr) == func, "JavaScript-side Wasm function table mirror is out of date!"); - return func; - } - - /** @param {Object=} args */ - function dynCall(sig, ptr, args) { - // Without WASM_BIGINT support we cannot directly call function with i64 as - // part of thier signature, so we rely the dynCall functions generated by - // wasm-emscripten-finalize - if (sig.includes('j')) { - return dynCallLegacy(sig, ptr, args); - } - assert(getWasmTableEntry(ptr), 'missing table entry in dynCall: ' + ptr); - var rtn = getWasmTableEntry(ptr).apply(null, args); - return rtn; - } - - function getDynCaller(sig, ptr) { - assert(sig.includes('j') || sig.includes('p'), 'getDynCaller should only be called with i64 sigs') - var argCache = []; - return function() { - argCache.length = 0; - Object.assign(argCache, arguments); - return dynCall(sig, ptr, argCache); - }; - } - - - function embind__requireFunction(signature, rawFunction) { - signature = readLatin1String(signature); - - function makeDynCaller() { - if (signature.includes('j')) { - return getDynCaller(signature, rawFunction); - } - return getWasmTableEntry(rawFunction); - } - - var fp = makeDynCaller(); - if (typeof fp != "function") { - throwBindingError("unknown function pointer with signature " + signature + ": " + rawFunction); - } - return fp; - } - - - - var UnboundTypeError = undefined; - - - function getTypeName(type) { - var ptr = ___getTypeName(type); - var rv = readLatin1String(ptr); - _free(ptr); - return rv; - } - function throwUnboundTypeError(message, types) { - var unboundTypes = []; - var seen = {}; - function visit(type) { - if (seen[type]) { - return; - } - if (registeredTypes[type]) { - return; - } - if (typeDependencies[type]) { - typeDependencies[type].forEach(visit); - return; - } - unboundTypes.push(type); - seen[type] = true; - } - types.forEach(visit); - - throw new UnboundTypeError(message + ': ' + unboundTypes.map(getTypeName).join([', '])); - } - - function __embind_register_class(rawType, - rawPointerType, - rawConstPointerType, - baseClassRawType, - getActualTypeSignature, - getActualType, - upcastSignature, - upcast, - downcastSignature, - downcast, - name, - destructorSignature, - rawDestructor) { - name = readLatin1String(name); - getActualType = embind__requireFunction(getActualTypeSignature, getActualType); - if (upcast) { - upcast = embind__requireFunction(upcastSignature, upcast); - } - if (downcast) { - downcast = embind__requireFunction(downcastSignature, downcast); - } - rawDestructor = embind__requireFunction(destructorSignature, rawDestructor); - var legalFunctionName = makeLegalFunctionName(name); - - exposePublicSymbol(legalFunctionName, function() { - // this code cannot run if baseClassRawType is zero - throwUnboundTypeError('Cannot construct ' + name + ' due to unbound types', [baseClassRawType]); - }); - - whenDependentTypesAreResolved( - [rawType, rawPointerType, rawConstPointerType], - baseClassRawType ? [baseClassRawType] : [], - function(base) { - base = base[0]; - - var baseClass; - var basePrototype; - if (baseClassRawType) { - baseClass = base.registeredClass; - basePrototype = baseClass.instancePrototype; - } else { - basePrototype = ClassHandle.prototype; - } - - var constructor = createNamedFunction(legalFunctionName, function() { - if (Object.getPrototypeOf(this) !== instancePrototype) { - throw new BindingError("Use 'new' to construct " + name); - } - if (undefined === registeredClass.constructor_body) { - throw new BindingError(name + " has no accessible constructor"); - } - var body = registeredClass.constructor_body[arguments.length]; - if (undefined === body) { - throw new BindingError("Tried to invoke ctor of " + name + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(registeredClass.constructor_body).toString() + ") parameters instead!"); - } - return body.apply(this, arguments); - }); - - var instancePrototype = Object.create(basePrototype, { - constructor: { value: constructor }, - }); - - constructor.prototype = instancePrototype; - - var registeredClass = new RegisteredClass(name, - constructor, - instancePrototype, - rawDestructor, - baseClass, - getActualType, - upcast, - downcast); - - var referenceConverter = new RegisteredPointer(name, - registeredClass, - true, - false, - false); - - var pointerConverter = new RegisteredPointer(name + '*', - registeredClass, - false, - false, - false); - - var constPointerConverter = new RegisteredPointer(name + ' const*', - registeredClass, - false, - true, - false); - - registeredPointers[rawType] = { - pointerType: pointerConverter, - constPointerType: constPointerConverter - }; - - replacePublicSymbol(legalFunctionName, constructor); - - return [referenceConverter, pointerConverter, constPointerConverter]; - } - ); - } - - - function new_(constructor, argumentList) { - if (!(constructor instanceof Function)) { - throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function"); - } - /* - * Previously, the following line was just: - * function dummy() {}; - * Unfortunately, Chrome was preserving 'dummy' as the object's name, even - * though at creation, the 'dummy' has the correct constructor name. Thus, - * objects created with IMVU.new would show up in the debugger as 'dummy', - * which isn't very helpful. Using IMVU.createNamedFunction addresses the - * issue. Doublely-unfortunately, there's no way to write a test for this - * behavior. -NRD 2013.02.22 - */ - var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){}); - dummy.prototype = constructor.prototype; - var obj = new dummy; - - var r = constructor.apply(obj, argumentList); - return (r instanceof Object) ? r : obj; - } - - - function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) { - // humanName: a human-readable string name for the function to be generated. - // argTypes: An array that contains the embind type objects for all types in the function signature. - // argTypes[0] is the type object for the function return value. - // argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method. - // argTypes[2...] are the actual function parameters. - // classType: The embind type object for the class to be bound, or null if this is not a method of a class. - // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code. - // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling. - var argCount = argTypes.length; - - if (argCount < 2) { - throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"); - } - - var isClassMethodFunc = (argTypes[1] !== null && classType !== null); - - // Free functions with signature "void function()" do not need an invoker that marshalls between wire types. - // TODO: This omits argument count check - enable only at -O3 or similar. - // if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) { - // return FUNCTION_TABLE[fn]; - // } - - // Determine if we need to use a dynamic stack to store the destructors for the function parameters. - // TODO: Remove this completely once all function invokers are being dynamically generated. - var needsDestructorStack = false; - - for (var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. - if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack - needsDestructorStack = true; - break; - } - } - - var returns = (argTypes[0].name !== "void"); - - var argsList = ""; - var argsListWired = ""; - for (var i = 0; i < argCount - 2; ++i) { - argsList += (i!==0?", ":"")+"arg"+i; - argsListWired += (i!==0?", ":"")+"arg"+i+"Wired"; - } - - var invokerFnBody = - "return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n" + - "if (arguments.length !== "+(argCount - 2)+") {\n" + - "throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount - 2)+" args!');\n" + - "}\n"; - - if (needsDestructorStack) { - invokerFnBody += "var destructors = [];\n"; - } - - var dtorStack = needsDestructorStack ? "destructors" : "null"; - var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"]; - var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]]; - - if (isClassMethodFunc) { - invokerFnBody += "var thisWired = classParam.toWireType("+dtorStack+", this);\n"; - } - - for (var i = 0; i < argCount - 2; ++i) { - invokerFnBody += "var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n"; - args1.push("argType"+i); - args2.push(argTypes[i+2]); - } - - if (isClassMethodFunc) { - argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired; - } - - invokerFnBody += - (returns?"var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n"; - - if (needsDestructorStack) { - invokerFnBody += "runDestructors(destructors);\n"; - } else { - for (var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. - var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired")); - if (argTypes[i].destructorFunction !== null) { - invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n"; - args1.push(paramName+"_dtor"); - args2.push(argTypes[i].destructorFunction); - } - } - } - - if (returns) { - invokerFnBody += "var ret = retType.fromWireType(rv);\n" + - "return ret;\n"; - } else { - } - - invokerFnBody += "}\n"; - - args1.push(invokerFnBody); - - var invokerFunction = new_(Function, args1).apply(null, args2); - return invokerFunction; - } - - - function heap32VectorToArray(count, firstElement) { - var array = []; - for (var i = 0; i < count; i++) { - // TODO(https://github.com/emscripten-core/emscripten/issues/17310): - // Find a way to hoist the `>> 2` or `>> 3` out of this loop. - array.push(HEAPU32[(((firstElement)+(i * 4))>>2)]); - } - return array; - } - - - - - function __embind_register_class_class_function(rawClassType, - methodName, - argCount, - rawArgTypesAddr, - invokerSignature, - rawInvoker, - fn) { - var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - methodName = readLatin1String(methodName); - rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); - whenDependentTypesAreResolved([], [rawClassType], function(classType) { - classType = classType[0]; - var humanName = classType.name + '.' + methodName; - - function unboundTypesHandler() { - throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes); - } - - if (methodName.startsWith("@@")) { - methodName = Symbol[methodName.substring(2)]; - } - - var proto = classType.registeredClass.constructor; - if (undefined === proto[methodName]) { - // This is the first function to be registered with this name. - unboundTypesHandler.argCount = argCount-1; - proto[methodName] = unboundTypesHandler; - } else { - // There was an existing function with the same name registered. Set up - // a function overload routing table. - ensureOverloadTable(proto, methodName, humanName); - proto[methodName].overloadTable[argCount-1] = unboundTypesHandler; - } - - whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { - // Replace the initial unbound-types-handler stub with the proper - // function. If multiple overloads are registered, the function handlers - // go into an overload table. - var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); - var func = craftInvokerFunction(humanName, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn); - if (undefined === proto[methodName].overloadTable) { - func.argCount = argCount-1; - proto[methodName] = func; - } else { - proto[methodName].overloadTable[argCount-1] = func; - } - return []; - }); - return []; - }); - } - - - - - - - - function __embind_register_class_constructor( - rawClassType, - argCount, - rawArgTypesAddr, - invokerSignature, - invoker, - rawConstructor - ) { - assert(argCount > 0); - var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - invoker = embind__requireFunction(invokerSignature, invoker); - var args = [rawConstructor]; - var destructors = []; - - whenDependentTypesAreResolved([], [rawClassType], function(classType) { - classType = classType[0]; - var humanName = 'constructor ' + classType.name; - - if (undefined === classType.registeredClass.constructor_body) { - classType.registeredClass.constructor_body = []; - } - if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) { - throw new BindingError("Cannot register multiple constructors with identical number of parameters (" + (argCount-1) + ") for class '" + classType.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!"); - } - classType.registeredClass.constructor_body[argCount - 1] = () => { - throwUnboundTypeError('Cannot construct ' + classType.name + ' due to unbound types', rawArgTypes); - }; - - whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { - // Insert empty slot for context type (argTypes[1]). - argTypes.splice(1, 0, null); - classType.registeredClass.constructor_body[argCount - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, rawConstructor); - return []; - }); - return []; - }); - } - - - - - - - function __embind_register_class_function(rawClassType, - methodName, - argCount, - rawArgTypesAddr, // [ReturnType, ThisType, Args...] - invokerSignature, - rawInvoker, - context, - isPureVirtual) { - var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - methodName = readLatin1String(methodName); - rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); - - whenDependentTypesAreResolved([], [rawClassType], function(classType) { - classType = classType[0]; - var humanName = classType.name + '.' + methodName; - - if (methodName.startsWith("@@")) { - methodName = Symbol[methodName.substring(2)]; - } - - if (isPureVirtual) { - classType.registeredClass.pureVirtualFunctions.push(methodName); - } - - function unboundTypesHandler() { - throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes); - } - - var proto = classType.registeredClass.instancePrototype; - var method = proto[methodName]; - if (undefined === method || (undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2)) { - // This is the first overload to be registered, OR we are replacing a - // function in the base class with a function in the derived class. - unboundTypesHandler.argCount = argCount - 2; - unboundTypesHandler.className = classType.name; - proto[methodName] = unboundTypesHandler; - } else { - // There was an existing function with the same name registered. Set up - // a function overload routing table. - ensureOverloadTable(proto, methodName, humanName); - proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler; - } - - whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { - var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context); - - // Replace the initial unbound-handler-stub function with the appropriate member function, now that all types - // are resolved. If multiple overloads are registered for this function, the function goes into an overload table. - if (undefined === proto[methodName].overloadTable) { - // Set argCount in case an overload is registered later - memberFunction.argCount = argCount - 2; - proto[methodName] = memberFunction; - } else { - proto[methodName].overloadTable[argCount - 2] = memberFunction; - } - - return []; - }); - return []; - }); - } - - - - - - - - - function validateThis(this_, classType, humanName) { - if (!(this_ instanceof Object)) { - throwBindingError(humanName + ' with invalid "this": ' + this_); - } - if (!(this_ instanceof classType.registeredClass.constructor)) { - throwBindingError(humanName + ' incompatible with "this" of type ' + this_.constructor.name); - } - if (!this_.$$.ptr) { - throwBindingError('cannot call emscripten binding method ' + humanName + ' on deleted object'); - } - - // todo: kill this - return upcastPointer(this_.$$.ptr, - this_.$$.ptrType.registeredClass, - classType.registeredClass); - } - function __embind_register_class_property(classType, - fieldName, - getterReturnType, - getterSignature, - getter, - getterContext, - setterArgumentType, - setterSignature, - setter, - setterContext) { - fieldName = readLatin1String(fieldName); - getter = embind__requireFunction(getterSignature, getter); - - whenDependentTypesAreResolved([], [classType], function(classType) { - classType = classType[0]; - var humanName = classType.name + '.' + fieldName; - var desc = { - get: function() { - throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]); - }, - enumerable: true, - configurable: true - }; - if (setter) { - desc.set = () => { - throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]); - }; - } else { - desc.set = (v) => { - throwBindingError(humanName + ' is a read-only property'); - }; - } - - Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); - - whenDependentTypesAreResolved( - [], - (setter ? [getterReturnType, setterArgumentType] : [getterReturnType]), - function(types) { - var getterReturnType = types[0]; - var desc = { - get: function() { - var ptr = validateThis(this, classType, humanName + ' getter'); - return getterReturnType['fromWireType'](getter(getterContext, ptr)); - }, - enumerable: true - }; - - if (setter) { - setter = embind__requireFunction(setterSignature, setter); - var setterArgumentType = types[1]; - desc.set = function(v) { - var ptr = validateThis(this, classType, humanName + ' setter'); - var destructors = []; - setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, v)); - runDestructors(destructors); - }; - } - - Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); - return []; - }); - - return []; - }); - } - - var emval_free_list = []; - - var emval_handle_array = [{},{value:undefined},{value:null},{value:true},{value:false}]; - function __emval_decref(handle) { - if (handle > 4 && 0 === --emval_handle_array[handle].refcount) { - emval_handle_array[handle] = undefined; - emval_free_list.push(handle); - } - } - - - - - function count_emval_handles() { - var count = 0; - for (var i = 5; i < emval_handle_array.length; ++i) { - if (emval_handle_array[i] !== undefined) { - ++count; - } - } - return count; - } - - function get_first_emval() { - for (var i = 5; i < emval_handle_array.length; ++i) { - if (emval_handle_array[i] !== undefined) { - return emval_handle_array[i]; - } - } - return null; - } - function init_emval() { - Module['count_emval_handles'] = count_emval_handles; - Module['get_first_emval'] = get_first_emval; - } - var Emval = {toValue:(handle) => { - if (!handle) { - throwBindingError('Cannot use deleted val. handle = ' + handle); - } - return emval_handle_array[handle].value; - },toHandle:(value) => { - switch (value) { - case undefined: return 1; - case null: return 2; - case true: return 3; - case false: return 4; - default:{ - var handle = emval_free_list.length ? - emval_free_list.pop() : - emval_handle_array.length; - - emval_handle_array[handle] = {refcount: 1, value: value}; - return handle; - } - } - }}; - - - - function __embind_register_emval(rawType, name) { - name = readLatin1String(name); - registerType(rawType, { - name: name, - 'fromWireType': function(handle) { - var rv = Emval.toValue(handle); - __emval_decref(handle); - return rv; - }, - 'toWireType': function(destructors, value) { - return Emval.toHandle(value); - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: null, // This type does not need a destructor - - // TODO: do we need a deleteObject here? write a test where - // emval is passed into JS via an interface - }); - } - - - - function enumReadValueFromPointer(name, shift, signed) { - switch (shift) { - case 0: return function(pointer) { - var heap = signed ? HEAP8 : HEAPU8; - return this['fromWireType'](heap[pointer]); - }; - case 1: return function(pointer) { - var heap = signed ? HEAP16 : HEAPU16; - return this['fromWireType'](heap[pointer >> 1]); - }; - case 2: return function(pointer) { - var heap = signed ? HEAP32 : HEAPU32; - return this['fromWireType'](heap[pointer >> 2]); - }; - default: - throw new TypeError("Unknown integer type: " + name); - } - } - - - function __embind_register_enum(rawType, name, size, isSigned) { - var shift = getShiftFromSize(size); - name = readLatin1String(name); - - function ctor() {} - ctor.values = {}; - - registerType(rawType, { - name: name, - constructor: ctor, - 'fromWireType': function(c) { - return this.constructor.values[c]; - }, - 'toWireType': function(destructors, c) { - return c.value; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': enumReadValueFromPointer(name, shift, isSigned), - destructorFunction: null, - }); - exposePublicSymbol(name, ctor); - } - - - - - - function requireRegisteredType(rawType, humanName) { - var impl = registeredTypes[rawType]; - if (undefined === impl) { - throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); - } - return impl; - } - function __embind_register_enum_value(rawEnumType, name, enumValue) { - var enumType = requireRegisteredType(rawEnumType, 'enum'); - name = readLatin1String(name); - - var Enum = enumType.constructor; - - var Value = Object.create(enumType.constructor.prototype, { - value: {value: enumValue}, - constructor: {value: createNamedFunction(enumType.name + '_' + name, function() {})}, - }); - Enum.values[enumValue] = Value; - Enum[name] = Value; - } - - function embindRepr(v) { - if (v === null) { - return 'null'; - } - var t = typeof v; - if (t === 'object' || t === 'array' || t === 'function') { - return v.toString(); - } else { - return '' + v; - } - } - - function floatReadValueFromPointer(name, shift) { - switch (shift) { - case 2: return function(pointer) { - return this['fromWireType'](HEAPF32[pointer >> 2]); - }; - case 3: return function(pointer) { - return this['fromWireType'](HEAPF64[pointer >> 3]); - }; - default: - throw new TypeError("Unknown float type: " + name); - } - } - - - - function __embind_register_float(rawType, name, size) { - var shift = getShiftFromSize(size); - name = readLatin1String(name); - registerType(rawType, { - name: name, - 'fromWireType': function(value) { - return value; - }, - 'toWireType': function(destructors, value) { - if (typeof value != "number" && typeof value != "boolean") { - throw new TypeError('Cannot convert "' + embindRepr(value) + '" to ' + this.name); - } - // The VM will perform JS to Wasm value conversion, according to the spec: - // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue - return value; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': floatReadValueFromPointer(name, shift), - destructorFunction: null, // This type does not need a destructor - }); - } - - - - function integerReadValueFromPointer(name, shift, signed) { - // integers are quite common, so generate very specialized functions - switch (shift) { - case 0: return signed ? - function readS8FromPointer(pointer) { return HEAP8[pointer]; } : - function readU8FromPointer(pointer) { return HEAPU8[pointer]; }; - case 1: return signed ? - function readS16FromPointer(pointer) { return HEAP16[pointer >> 1]; } : - function readU16FromPointer(pointer) { return HEAPU16[pointer >> 1]; }; - case 2: return signed ? - function readS32FromPointer(pointer) { return HEAP32[pointer >> 2]; } : - function readU32FromPointer(pointer) { return HEAPU32[pointer >> 2]; }; - default: - throw new TypeError("Unknown integer type: " + name); - } - } - - - function __embind_register_integer(primitiveType, name, size, minRange, maxRange) { - name = readLatin1String(name); - // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come - // out as 'i32 -1'. Always treat those as max u32. - if (maxRange === -1) { - maxRange = 4294967295; - } - - var shift = getShiftFromSize(size); - - var fromWireType = (value) => value; - - if (minRange === 0) { - var bitshift = 32 - 8*size; - fromWireType = (value) => (value << bitshift) >>> bitshift; - } - - var isUnsignedType = (name.includes('unsigned')); - var checkAssertions = (value, toTypeName) => { - if (typeof value != "number" && typeof value != "boolean") { - throw new TypeError('Cannot convert "' + embindRepr(value) + '" to ' + toTypeName); - } - if (value < minRange || value > maxRange) { - throw new TypeError('Passing a number "' + embindRepr(value) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ', ' + maxRange + ']!'); - } - } - var toWireType; - if (isUnsignedType) { - toWireType = function(destructors, value) { - checkAssertions(value, this.name); - return value >>> 0; - } - } else { - toWireType = function(destructors, value) { - checkAssertions(value, this.name); - // The VM will perform JS to Wasm value conversion, according to the spec: - // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue - return value; - } - } - registerType(primitiveType, { - name: name, - 'fromWireType': fromWireType, - 'toWireType': toWireType, - 'argPackAdvance': 8, - 'readValueFromPointer': integerReadValueFromPointer(name, shift, minRange !== 0), - destructorFunction: null, // This type does not need a destructor - }); - } - - - function __embind_register_memory_view(rawType, dataTypeIndex, name) { - var typeMapping = [ - Int8Array, - Uint8Array, - Int16Array, - Uint16Array, - Int32Array, - Uint32Array, - Float32Array, - Float64Array, - ]; - - var TA = typeMapping[dataTypeIndex]; - - function decodeMemoryView(handle) { - handle = handle >> 2; - var heap = HEAPU32; - var size = heap[handle]; // in elements - var data = heap[handle + 1]; // byte offset into emscripten heap - return new TA(heap.buffer, data, size); - } - - name = readLatin1String(name); - registerType(rawType, { - name: name, - 'fromWireType': decodeMemoryView, - 'argPackAdvance': 8, - 'readValueFromPointer': decodeMemoryView, - }, { - ignoreDuplicateRegistrations: true, - }); - } - - - - - function __embind_register_std_string(rawType, name) { - name = readLatin1String(name); - var stdStringIsUTF8 - //process only std::string bindings with UTF8 support, in contrast to e.g. std::basic_string - = (name === "std::string"); - - registerType(rawType, { - name: name, - 'fromWireType': function(value) { - var length = HEAPU32[((value)>>2)]; - var payload = value + 4; - - var str; - if (stdStringIsUTF8) { - var decodeStartPtr = payload; - // Looping here to support possible embedded '0' bytes - for (var i = 0; i <= length; ++i) { - var currentBytePtr = payload + i; - if (i == length || HEAPU8[currentBytePtr] == 0) { - var maxRead = currentBytePtr - decodeStartPtr; - var stringSegment = UTF8ToString(decodeStartPtr, maxRead); - if (str === undefined) { - str = stringSegment; - } else { - str += String.fromCharCode(0); - str += stringSegment; - } - decodeStartPtr = currentBytePtr + 1; - } - } - } else { - var a = new Array(length); - for (var i = 0; i < length; ++i) { - a[i] = String.fromCharCode(HEAPU8[payload + i]); - } - str = a.join(''); - } - - _free(value); - - return str; - }, - 'toWireType': function(destructors, value) { - if (value instanceof ArrayBuffer) { - value = new Uint8Array(value); - } - - var length; - var valueIsOfTypeString = (typeof value == 'string'); - - if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) { - throwBindingError('Cannot pass non-string to std::string'); - } - if (stdStringIsUTF8 && valueIsOfTypeString) { - length = lengthBytesUTF8(value); - } else { - length = value.length; - } - - // assumes 4-byte alignment - var base = _malloc(4 + length + 1); - var ptr = base + 4; - HEAPU32[((base)>>2)] = length; - if (stdStringIsUTF8 && valueIsOfTypeString) { - stringToUTF8(value, ptr, length + 1); - } else { - if (valueIsOfTypeString) { - for (var i = 0; i < length; ++i) { - var charCode = value.charCodeAt(i); - if (charCode > 255) { - _free(ptr); - throwBindingError('String has UTF-16 code units that do not fit in 8 bits'); - } - HEAPU8[ptr + i] = charCode; - } - } else { - for (var i = 0; i < length; ++i) { - HEAPU8[ptr + i] = value[i]; - } - } - } - - if (destructors !== null) { - destructors.push(_free, base); - } - return base; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: function(ptr) { _free(ptr); }, - }); - } - - - - - var UTF16Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf-16le') : undefined;; - function UTF16ToString(ptr, maxBytesToRead) { - assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); - var endPtr = ptr; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. - // Also, use the length info to avoid running tiny strings through - // TextDecoder, since .subarray() allocates garbage. - var idx = endPtr >> 1; - var maxIdx = idx + maxBytesToRead / 2; - // If maxBytesToRead is not passed explicitly, it will be undefined, and this - // will always evaluate to true. This saves on code size. - while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; - endPtr = idx << 1; - - if (endPtr - ptr > 32 && UTF16Decoder) - return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); - - // Fallback: decode without UTF16Decoder - var str = ''; - - // If maxBytesToRead is not passed explicitly, it will be undefined, and the - // for-loop's condition will always evaluate to true. The loop is then - // terminated on the first null char. - for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) break; - // fromCharCode constructs a character from a UTF-16 code unit, so we can - // pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } - - return str; - } - - function stringToUTF16(str, outPtr, maxBytesToWrite) { - assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 2) return 0; - maxBytesToWrite -= 2; // Null terminator. - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; - for (var i = 0; i < numCharsToWrite; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[((outPtr)>>1)] = codeUnit; - outPtr += 2; - } - // Null-terminate the pointer to the HEAP. - HEAP16[((outPtr)>>1)] = 0; - return outPtr - startPtr; - } - - function lengthBytesUTF16(str) { - return str.length*2; - } - - function UTF32ToString(ptr, maxBytesToRead) { - assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); - var i = 0; - - var str = ''; - // If maxBytesToRead is not passed explicitly, it will be undefined, and this - // will always evaluate to true. This saves on code size. - while (!(i >= maxBytesToRead / 4)) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) break; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } - return str; - } - - function stringToUTF32(str, outPtr, maxBytesToWrite) { - assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 4) return 0; - var startPtr = outPtr; - var endPtr = startPtr + maxBytesToWrite - 4; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++i); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[((outPtr)>>2)] = codeUnit; - outPtr += 4; - if (outPtr + 4 > endPtr) break; - } - // Null-terminate the pointer to the HEAP. - HEAP32[((outPtr)>>2)] = 0; - return outPtr - startPtr; - } - - function lengthBytesUTF32(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. - len += 4; - } - - return len; - } - function __embind_register_std_wstring(rawType, charSize, name) { - name = readLatin1String(name); - var decodeString, encodeString, getHeap, lengthBytesUTF, shift; - if (charSize === 2) { - decodeString = UTF16ToString; - encodeString = stringToUTF16; - lengthBytesUTF = lengthBytesUTF16; - getHeap = () => HEAPU16; - shift = 1; - } else if (charSize === 4) { - decodeString = UTF32ToString; - encodeString = stringToUTF32; - lengthBytesUTF = lengthBytesUTF32; - getHeap = () => HEAPU32; - shift = 2; - } - registerType(rawType, { - name: name, - 'fromWireType': function(value) { - // Code mostly taken from _embind_register_std_string fromWireType - var length = HEAPU32[value >> 2]; - var HEAP = getHeap(); - var str; - - var decodeStartPtr = value + 4; - // Looping here to support possible embedded '0' bytes - for (var i = 0; i <= length; ++i) { - var currentBytePtr = value + 4 + i * charSize; - if (i == length || HEAP[currentBytePtr >> shift] == 0) { - var maxReadBytes = currentBytePtr - decodeStartPtr; - var stringSegment = decodeString(decodeStartPtr, maxReadBytes); - if (str === undefined) { - str = stringSegment; - } else { - str += String.fromCharCode(0); - str += stringSegment; - } - decodeStartPtr = currentBytePtr + charSize; - } - } - - _free(value); - - return str; - }, - 'toWireType': function(destructors, value) { - if (!(typeof value == 'string')) { - throwBindingError('Cannot pass non-string to C++ string type ' + name); - } - - // assumes 4-byte alignment - var length = lengthBytesUTF(value); - var ptr = _malloc(4 + length + charSize); - HEAPU32[ptr >> 2] = length >> shift; - - encodeString(value, ptr + 4, length + charSize); - - if (destructors !== null) { - destructors.push(_free, ptr); - } - return ptr; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: function(ptr) { _free(ptr); }, - }); - } - - - - function __embind_register_value_array( - rawType, - name, - constructorSignature, - rawConstructor, - destructorSignature, - rawDestructor - ) { - tupleRegistrations[rawType] = { - name: readLatin1String(name), - rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), - rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), - elements: [], - }; - } - - - function __embind_register_value_array_element( - rawTupleType, - getterReturnType, - getterSignature, - getter, - getterContext, - setterArgumentType, - setterSignature, - setter, - setterContext - ) { - tupleRegistrations[rawTupleType].elements.push({ - getterReturnType: getterReturnType, - getter: embind__requireFunction(getterSignature, getter), - getterContext: getterContext, - setterArgumentType: setterArgumentType, - setter: embind__requireFunction(setterSignature, setter), - setterContext: setterContext, - }); - } - - - - function __embind_register_value_object( - rawType, - name, - constructorSignature, - rawConstructor, - destructorSignature, - rawDestructor - ) { - structRegistrations[rawType] = { - name: readLatin1String(name), - rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), - rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), - fields: [], - }; - } - - - - function __embind_register_value_object_field( - structType, - fieldName, - getterReturnType, - getterSignature, - getter, - getterContext, - setterArgumentType, - setterSignature, - setter, - setterContext - ) { - structRegistrations[structType].fields.push({ - fieldName: readLatin1String(fieldName), - getterReturnType: getterReturnType, - getter: embind__requireFunction(getterSignature, getter), - getterContext: getterContext, - setterArgumentType: setterArgumentType, - setter: embind__requireFunction(setterSignature, setter), - setterContext: setterContext, - }); - } - - - function __embind_register_void(rawType, name) { - name = readLatin1String(name); - registerType(rawType, { - isVoid: true, // void return values can be optimized out sometimes - name: name, - 'argPackAdvance': 0, - 'fromWireType': function() { - return undefined; - }, - 'toWireType': function(destructors, o) { - // TODO: assert if anything else is given? - return undefined; - }, - }); - } - - var nowIsMonotonic = true;; - function __emscripten_get_now_is_monotonic() { - return nowIsMonotonic; - } - - - function __emval_as(handle, returnType, destructorsRef) { - handle = Emval.toValue(handle); - returnType = requireRegisteredType(returnType, 'emval::as'); - var destructors = []; - var rd = Emval.toHandle(destructors); - HEAPU32[((destructorsRef)>>2)] = rd; - return returnType['toWireType'](destructors, handle); - } - - function emval_allocateDestructors(destructorsRef) { - var destructors = []; - HEAPU32[((destructorsRef)>>2)] = Emval.toHandle(destructors); - return destructors; - } - - var emval_symbols = {}; - - function getStringOrSymbol(address) { - var symbol = emval_symbols[address]; - if (symbol === undefined) { - return readLatin1String(address); - } - return symbol; - } - - var emval_methodCallers = []; - - function __emval_call_method(caller, handle, methodName, destructorsRef, args) { - caller = emval_methodCallers[caller]; - handle = Emval.toValue(handle); - methodName = getStringOrSymbol(methodName); - return caller(handle, methodName, emval_allocateDestructors(destructorsRef), args); - } - - - - - function __emval_call_void_method(caller, handle, methodName, args) { - caller = emval_methodCallers[caller]; - handle = Emval.toValue(handle); - methodName = getStringOrSymbol(methodName); - caller(handle, methodName, null, args); - } - - - function __emval_equals(first, second) { - first = Emval.toValue(first); - second = Emval.toValue(second); - return first == second; - } - - - - function emval_get_global() { - if (typeof globalThis == 'object') { - return globalThis; - } - return (function(){ - return Function; - })()('return this')(); - } - function __emval_get_global(name) { - if (name===0) { - return Emval.toHandle(emval_get_global()); - } else { - name = getStringOrSymbol(name); - return Emval.toHandle(emval_get_global()[name]); - } - } - - function emval_addMethodCaller(caller) { - var id = emval_methodCallers.length; - emval_methodCallers.push(caller); - return id; - } - - function emval_lookupTypes(argCount, argTypes) { - var a = new Array(argCount); - for (var i = 0; i < argCount; ++i) { - a[i] = requireRegisteredType(HEAPU32[(((argTypes)+(i * POINTER_SIZE))>>2)], - "parameter " + i); - } - return a; - } - - - - var emval_registeredMethods = []; - function __emval_get_method_caller(argCount, argTypes) { - var types = emval_lookupTypes(argCount, argTypes); - var retType = types[0]; - var signatureName = retType.name + "_$" + types.slice(1).map(function (t) { return t.name; }).join("_") + "$"; - var returnId = emval_registeredMethods[signatureName]; - if (returnId !== undefined) { - return returnId; - } - - var params = ["retType"]; - var args = [retType]; - - var argsList = ""; // 'arg0, arg1, arg2, ... , argN' - for (var i = 0; i < argCount - 1; ++i) { - argsList += (i !== 0 ? ", " : "") + "arg" + i; - params.push("argType" + i); - args.push(types[1 + i]); - } - - var functionName = makeLegalFunctionName("methodCaller_" + signatureName); - var functionBody = - "return function " + functionName + "(handle, name, destructors, args) {\n"; - - var offset = 0; - for (var i = 0; i < argCount - 1; ++i) { - functionBody += - " var arg" + i + " = argType" + i + ".readValueFromPointer(args" + (offset ? ("+"+offset) : "") + ");\n"; - offset += types[i + 1]['argPackAdvance']; - } - functionBody += - " var rv = handle[name](" + argsList + ");\n"; - for (var i = 0; i < argCount - 1; ++i) { - if (types[i + 1]['deleteObject']) { - functionBody += - " argType" + i + ".deleteObject(arg" + i + ");\n"; - } - } - if (!retType.isVoid) { - functionBody += - " return retType.toWireType(destructors, rv);\n"; - } - functionBody += - "};\n"; - - params.push(functionBody); - var invokerFunction = new_(Function, params).apply(null, args); - returnId = emval_addMethodCaller(invokerFunction); - emval_registeredMethods[signatureName] = returnId; - return returnId; - } - - - function __emval_get_module_property(name) { - name = getStringOrSymbol(name); - return Emval.toHandle(Module[name]); - } - - function __emval_get_property(handle, key) { - handle = Emval.toValue(handle); - key = Emval.toValue(key); - return Emval.toHandle(handle[key]); - } - - function __emval_incref(handle) { - if (handle > 4) { - emval_handle_array[handle].refcount += 1; - } - } - - function __emval_instanceof(object, constructor) { - object = Emval.toValue(object); - constructor = Emval.toValue(constructor); - return object instanceof constructor; - } - - function __emval_is_number(handle) { - handle = Emval.toValue(handle); - return typeof handle == 'number'; - } - - function __emval_is_string(handle) { - handle = Emval.toValue(handle); - return typeof handle == 'string'; - } - - - function craftEmvalAllocator(argCount) { - /*This function returns a new function that looks like this: - function emval_allocator_3(constructor, argTypes, args) { - var argType0 = requireRegisteredType(HEAP32[(argTypes >> 2)], "parameter 0"); - var arg0 = argType0['readValueFromPointer'](args); - var argType1 = requireRegisteredType(HEAP32[(argTypes >> 2) + 1], "parameter 1"); - var arg1 = argType1['readValueFromPointer'](args + 8); - var argType2 = requireRegisteredType(HEAP32[(argTypes >> 2) + 2], "parameter 2"); - var arg2 = argType2['readValueFromPointer'](args + 16); - var obj = new constructor(arg0, arg1, arg2); - return Emval.toHandle(obj); - } */ - var argsList = ""; - for (var i = 0; i < argCount; ++i) { - argsList += (i!==0?", ":"")+"arg"+i; // 'arg0, arg1, ..., argn' - } - - // The body of the generated function does not have access to enclosing - // scope where HEAPU64/HEAPU32/etc are defined, and we cannot pass them - // directly as arguments (like we do the Module object) since memory - // growth can cause them to be re-bound. - var getMemory = () => HEAPU32; - - var functionBody = - "return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n" + - " var HEAPU32 = getMemory();\n"; - - for (var i = 0; i < argCount; ++i) { - functionBody += - "var argType"+i+" = requireRegisteredType(HEAPU32[((argTypes)>>2)], 'parameter "+i+"');\n" + - "var arg"+i+" = argType"+i+".readValueFromPointer(args);\n" + - "args += argType"+i+"['argPackAdvance'];\n" + - "argTypes += 4;\n"; - } - functionBody += - "var obj = new constructor("+argsList+");\n" + - "return valueToHandle(obj);\n" + - "}\n"; - - /*jshint evil:true*/ - return (new Function("requireRegisteredType", "Module", "valueToHandle", "getMemory" , functionBody))( - requireRegisteredType, Module, Emval.toHandle, getMemory); - } - - var emval_newers = {}; - - function __emval_new(handle, argCount, argTypes, args) { - handle = Emval.toValue(handle); - - var newer = emval_newers[argCount]; - if (!newer) { - newer = craftEmvalAllocator(argCount); - emval_newers[argCount] = newer; - } - - return newer(handle, argTypes, args); - } - - function __emval_new_array() { - return Emval.toHandle([]); - } - - - function __emval_new_cstring(v) { - return Emval.toHandle(getStringOrSymbol(v)); - } - - function __emval_new_object() { - return Emval.toHandle({}); - } - - - - function __emval_run_destructors(handle) { - var destructors = Emval.toValue(handle); - runDestructors(destructors); - __emval_decref(handle); - } - - function __emval_set_property(handle, key, value) { - handle = Emval.toValue(handle); - key = Emval.toValue(key); - value = Emval.toValue(value); - handle[key] = value; - } - - - function __emval_take_value(type, arg) { - type = requireRegisteredType(type, '_emval_take_value'); - var v = type['readValueFromPointer'](arg); - return Emval.toHandle(v); - } - - function readI53FromI64(ptr) { - return HEAPU32[ptr>>2] + HEAP32[ptr+4>>2] * 4294967296; - } - function __gmtime_js(time, tmPtr) { - var date = new Date(readI53FromI64(time)*1000); - HEAP32[((tmPtr)>>2)] = date.getUTCSeconds(); - HEAP32[(((tmPtr)+(4))>>2)] = date.getUTCMinutes(); - HEAP32[(((tmPtr)+(8))>>2)] = date.getUTCHours(); - HEAP32[(((tmPtr)+(12))>>2)] = date.getUTCDate(); - HEAP32[(((tmPtr)+(16))>>2)] = date.getUTCMonth(); - HEAP32[(((tmPtr)+(20))>>2)] = date.getUTCFullYear()-1900; - HEAP32[(((tmPtr)+(24))>>2)] = date.getUTCDay(); - var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); - var yday = ((date.getTime() - start) / (1000 * 60 * 60 * 24))|0; - HEAP32[(((tmPtr)+(28))>>2)] = yday; - } - - - function __isLeapYear(year) { - return year%4 === 0 && (year%100 !== 0 || year%400 === 0); - } - - var __MONTH_DAYS_LEAP_CUMULATIVE = [0,31,60,91,121,152,182,213,244,274,305,335]; - - var __MONTH_DAYS_REGULAR_CUMULATIVE = [0,31,59,90,120,151,181,212,243,273,304,334]; - function __yday_from_date(date) { - var isLeapYear = __isLeapYear(date.getFullYear()); - var monthDaysCumulative = (isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE); - var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; // -1 since it's days since Jan 1 - - return yday; - } - function __localtime_js(time, tmPtr) { - var date = new Date(readI53FromI64(time)*1000); - HEAP32[((tmPtr)>>2)] = date.getSeconds(); - HEAP32[(((tmPtr)+(4))>>2)] = date.getMinutes(); - HEAP32[(((tmPtr)+(8))>>2)] = date.getHours(); - HEAP32[(((tmPtr)+(12))>>2)] = date.getDate(); - HEAP32[(((tmPtr)+(16))>>2)] = date.getMonth(); - HEAP32[(((tmPtr)+(20))>>2)] = date.getFullYear()-1900; - HEAP32[(((tmPtr)+(24))>>2)] = date.getDay(); - - var yday = __yday_from_date(date)|0; - HEAP32[(((tmPtr)+(28))>>2)] = yday; - HEAP32[(((tmPtr)+(36))>>2)] = -(date.getTimezoneOffset() * 60); - - // Attention: DST is in December in South, and some regions don't have DST at all. - var start = new Date(date.getFullYear(), 0, 1); - var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); - var winterOffset = start.getTimezoneOffset(); - var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset))|0; - HEAP32[(((tmPtr)+(32))>>2)] = dst; - } - - function __mktime_js(tmPtr) { - var date = new Date(HEAP32[(((tmPtr)+(20))>>2)] + 1900, - HEAP32[(((tmPtr)+(16))>>2)], - HEAP32[(((tmPtr)+(12))>>2)], - HEAP32[(((tmPtr)+(8))>>2)], - HEAP32[(((tmPtr)+(4))>>2)], - HEAP32[((tmPtr)>>2)], - 0); - - // There's an ambiguous hour when the time goes back; the tm_isdst field is - // used to disambiguate it. Date() basically guesses, so we fix it up if it - // guessed wrong, or fill in tm_isdst with the guess if it's -1. - var dst = HEAP32[(((tmPtr)+(32))>>2)]; - var guessedOffset = date.getTimezoneOffset(); - var start = new Date(date.getFullYear(), 0, 1); - var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); - var winterOffset = start.getTimezoneOffset(); - var dstOffset = Math.min(winterOffset, summerOffset); // DST is in December in South - if (dst < 0) { - // Attention: some regions don't have DST at all. - HEAP32[(((tmPtr)+(32))>>2)] = Number(summerOffset != winterOffset && dstOffset == guessedOffset); - } else if ((dst > 0) != (dstOffset == guessedOffset)) { - var nonDstOffset = Math.max(winterOffset, summerOffset); - var trueOffset = dst > 0 ? dstOffset : nonDstOffset; - // Don't try setMinutes(date.getMinutes() + ...) -- it's messed up. - date.setTime(date.getTime() + (trueOffset - guessedOffset)*60000); - } - - HEAP32[(((tmPtr)+(24))>>2)] = date.getDay(); - var yday = __yday_from_date(date)|0; - HEAP32[(((tmPtr)+(28))>>2)] = yday; - // To match expected behavior, update fields from date - HEAP32[((tmPtr)>>2)] = date.getSeconds(); - HEAP32[(((tmPtr)+(4))>>2)] = date.getMinutes(); - HEAP32[(((tmPtr)+(8))>>2)] = date.getHours(); - HEAP32[(((tmPtr)+(12))>>2)] = date.getDate(); - HEAP32[(((tmPtr)+(16))>>2)] = date.getMonth(); - HEAP32[(((tmPtr)+(20))>>2)] = date.getYear(); - - return (date.getTime() / 1000)|0; - } - - function allocateUTF8(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = _malloc(size); - if (ret) stringToUTF8Array(str, HEAP8, ret, size); - return ret; - } - function __tzset_js(timezone, daylight, tzname) { - // TODO: Use (malleable) environment variables instead of system settings. - var currentYear = new Date().getFullYear(); - var winter = new Date(currentYear, 0, 1); - var summer = new Date(currentYear, 6, 1); - var winterOffset = winter.getTimezoneOffset(); - var summerOffset = summer.getTimezoneOffset(); - - // Local standard timezone offset. Local standard time is not adjusted for daylight savings. - // This code uses the fact that getTimezoneOffset returns a greater value during Standard Time versus Daylight Saving Time (DST). - // Thus it determines the expected output during Standard Time, and it compares whether the output of the given date the same (Standard) or less (DST). - var stdTimezoneOffset = Math.max(winterOffset, summerOffset); - - // timezone is specified as seconds west of UTC ("The external variable - // `timezone` shall be set to the difference, in seconds, between - // Coordinated Universal Time (UTC) and local standard time."), the same - // as returned by stdTimezoneOffset. - // See http://pubs.opengroup.org/onlinepubs/009695399/functions/tzset.html - HEAPU32[((timezone)>>2)] = stdTimezoneOffset * 60; - - HEAP32[((daylight)>>2)] = Number(winterOffset != summerOffset); - - function extractZone(date) { - var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); - return match ? match[1] : "GMT"; - }; - var winterName = extractZone(winter); - var summerName = extractZone(summer); - var winterNamePtr = allocateUTF8(winterName); - var summerNamePtr = allocateUTF8(summerName); - if (summerOffset < winterOffset) { - // Northern hemisphere - HEAPU32[((tzname)>>2)] = winterNamePtr; - HEAPU32[(((tzname)+(4))>>2)] = summerNamePtr; - } else { - HEAPU32[((tzname)>>2)] = summerNamePtr; - HEAPU32[(((tzname)+(4))>>2)] = winterNamePtr; - } - } - - function _abort() { - abort('native code called abort()'); - } - - function _emscripten_console_error(str) { - assert(typeof str == 'number'); - console.error(UTF8ToString(str)); - } - - function _emscripten_date_now() { - return Date.now(); - } - - function getHeapMax() { - // Stay one Wasm page short of 4GB: while e.g. Chrome is able to allocate - // full 4GB Wasm memories, the size will wrap back to 0 bytes in Wasm side - // for any code that deals with heap sizes, which would require special - // casing all heap size related code to treat 0 specially. - return 2147483648; - } - function _emscripten_get_heap_max() { - return getHeapMax(); - } - - var _emscripten_get_now;if (ENVIRONMENT_IS_NODE) { - _emscripten_get_now = () => { - var t = process['hrtime'](); - return t[0] * 1e3 + t[1] / 1e6; - }; - } else _emscripten_get_now = () => performance.now(); - ; - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num); - } - - - function emscripten_realloc_buffer(size) { - var b = wasmMemory.buffer; - try { - // round size grow request up to wasm page size (fixed 64KB per spec) - wasmMemory.grow((size - b.byteLength + 65535) >>> 16); // .grow() takes a delta compared to the previous size - updateMemoryViews(); - return 1 /*success*/; - } catch(e) { - err('emscripten_realloc_buffer: Attempted to grow heap from ' + b.byteLength + ' bytes to ' + size + ' bytes, but got error: ' + e); - } - // implicit 0 return to save code size (caller will cast "undefined" into 0 - // anyhow) - } - function _emscripten_resize_heap(requestedSize) { - var oldSize = HEAPU8.length; - requestedSize = requestedSize >>> 0; - // With multithreaded builds, races can happen (another thread might increase the size - // in between), so return a failure, and let the caller retry. - assert(requestedSize > oldSize); - - // Memory resize rules: - // 1. Always increase heap size to at least the requested size, rounded up - // to next page multiple. - // 2a. If MEMORY_GROWTH_LINEAR_STEP == -1, excessively resize the heap - // geometrically: increase the heap size according to - // MEMORY_GROWTH_GEOMETRIC_STEP factor (default +20%), At most - // overreserve by MEMORY_GROWTH_GEOMETRIC_CAP bytes (default 96MB). - // 2b. If MEMORY_GROWTH_LINEAR_STEP != -1, excessively resize the heap - // linearly: increase the heap size by at least - // MEMORY_GROWTH_LINEAR_STEP bytes. - // 3. Max size for the heap is capped at 2048MB-WASM_PAGE_SIZE, or by - // MAXIMUM_MEMORY, or by ASAN limit, depending on which is smallest - // 4. If we were unable to allocate as much memory, it may be due to - // over-eager decision to excessively reserve due to (3) above. - // Hence if an allocation fails, cut down on the amount of excess - // growth, in an attempt to succeed to perform a smaller allocation. - - // A limit is set for how much we can grow. We should not exceed that - // (the wasm binary specifies it, so if we tried, we'd fail anyhow). - var maxHeapSize = getHeapMax(); - if (requestedSize > maxHeapSize) { - err('Cannot enlarge memory, asked to go up to ' + requestedSize + ' bytes, but the limit is ' + maxHeapSize + ' bytes!'); - return false; - } - - let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; - - // Loop through potential heap size increases. If we attempt a too eager - // reservation that fails, cut down on the attempted size and reserve a - // smaller bump instead. (max 3 times, chosen somewhat arbitrarily) - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); // ensure geometric growth - // but limit overreserving (default to capping at +96MB overgrowth at most) - overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296 ); - - var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); - - var replacement = emscripten_realloc_buffer(newSize); - if (replacement) { - - return true; - } - } - err('Failed to grow the heap from ' + oldSize + ' bytes to ' + newSize + ' bytes, not enough memory!'); - return false; - } - - var ENV = {}; - - function getExecutableName() { - return thisProgram || './this.program'; - } - function getEnvStrings() { - if (!getEnvStrings.strings) { - // Default values. - // Browser language detection #8751 - var lang = ((typeof navigator == 'object' && navigator.languages && navigator.languages[0]) || 'C').replace('-', '_') + '.UTF-8'; - var env = { - 'USER': 'web_user', - 'LOGNAME': 'web_user', - 'PATH': '/', - 'PWD': '/', - 'HOME': '/home/web_user', - 'LANG': lang, - '_': getExecutableName() - }; - // Apply the user-provided values, if any. - for (var x in ENV) { - // x is a key in ENV; if ENV[x] is undefined, that means it was - // explicitly set to be so. We allow user code to do that to - // force variables with default values to remain unset. - if (ENV[x] === undefined) delete env[x]; - else env[x] = ENV[x]; - } - var strings = []; - for (var x in env) { - strings.push(x + '=' + env[x]); - } - getEnvStrings.strings = strings; - } - return getEnvStrings.strings; - } - - /** @param {boolean=} dontAddNull */ - function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; ++i) { - assert(str.charCodeAt(i) === (str.charCodeAt(i) & 0xff)); - HEAP8[((buffer++)>>0)] = str.charCodeAt(i); - } - // Null-terminate the pointer to the HEAP. - if (!dontAddNull) HEAP8[((buffer)>>0)] = 0; - } - - function _environ_get(__environ, environ_buf) { - var bufSize = 0; - getEnvStrings().forEach(function(string, i) { - var ptr = environ_buf + bufSize; - HEAPU32[(((__environ)+(i*4))>>2)] = ptr; - writeAsciiToMemory(string, ptr); - bufSize += string.length + 1; - }); - return 0; - } - - - function _environ_sizes_get(penviron_count, penviron_buf_size) { - var strings = getEnvStrings(); - HEAPU32[((penviron_count)>>2)] = strings.length; - var bufSize = 0; - strings.forEach(function(string) { - bufSize += string.length + 1; - }); - HEAPU32[((penviron_buf_size)>>2)] = bufSize; - return 0; - } - - - function _proc_exit(code) { - EXITSTATUS = code; - if (!keepRuntimeAlive()) { - if (Module['onExit']) Module['onExit'](code); - ABORT = true; - } - quit_(code, new ExitStatus(code)); - } - /** @param {boolean|number=} implicit */ - function exitJS(status, implicit) { - EXITSTATUS = status; - - checkUnflushedContent(); - - // if exit() was called explicitly, warn the user if the runtime isn't actually being shut down - if (keepRuntimeAlive() && !implicit) { - var msg = 'program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'; - readyPromiseReject(msg); - err(msg); - } - - _proc_exit(status); - } - var _exit = exitJS; - - function _fd_close(fd) { - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - FS.close(stream); - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return e.errno; - } - } - - /** @param {number=} offset */ - function doReadv(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[((iov)>>2)]; - var len = HEAPU32[(((iov)+(4))>>2)]; - iov += 8; - var curr = FS.read(stream, HEAP8,ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - if (curr < len) break; // nothing more to read - if (typeof offset !== 'undefined') { - offset += curr; - } - } - return ret; - } - - function _fd_read(fd, iov, iovcnt, pnum) { - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - var num = doReadv(stream, iov, iovcnt); - HEAPU32[((pnum)>>2)] = num; - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return e.errno; - } - } - - - - - - function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { - try { - - var offset = convertI32PairToI53Checked(offset_low, offset_high); if (isNaN(offset)) return 61; - var stream = SYSCALLS.getStreamFromFD(fd); - FS.llseek(stream, offset, whence); - (tempI64 = [stream.position>>>0,(tempDouble=stream.position,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((newOffset)>>2)] = tempI64[0],HEAP32[(((newOffset)+(4))>>2)] = tempI64[1]); - if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return e.errno; - } - } - - /** @param {number=} offset */ - function doWritev(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[((iov)>>2)]; - var len = HEAPU32[(((iov)+(4))>>2)]; - iov += 8; - var curr = FS.write(stream, HEAP8,ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - if (typeof offset !== 'undefined') { - offset += curr; - } - } - return ret; - } - - function _fd_write(fd, iov, iovcnt, pnum) { - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - var num = doWritev(stream, iov, iovcnt); - HEAPU32[((pnum)>>2)] = num; - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return e.errno; - } - } - - var FSNode = /** @constructor */ function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - var readMode = 292/*292*/ | 73/*73*/; - var writeMode = 146/*146*/; - Object.defineProperties(FSNode.prototype, { - read: { - get: /** @this{FSNode} */function() { - return (this.mode & readMode) === readMode; - }, - set: /** @this{FSNode} */function(val) { - val ? this.mode |= readMode : this.mode &= ~readMode; - } - }, - write: { - get: /** @this{FSNode} */function() { - return (this.mode & writeMode) === writeMode; - }, - set: /** @this{FSNode} */function(val) { - val ? this.mode |= writeMode : this.mode &= ~writeMode; - } - }, - isFolder: { - get: /** @this{FSNode} */function() { - return FS.isDir(this.mode); - } - }, - isDevice: { - get: /** @this{FSNode} */function() { - return FS.isChrdev(this.mode); - } - } - }); - FS.FSNode = FSNode; - FS.staticInit();; -ERRNO_CODES = { - 'EPERM': 63, - 'ENOENT': 44, - 'ESRCH': 71, - 'EINTR': 27, - 'EIO': 29, - 'ENXIO': 60, - 'E2BIG': 1, - 'ENOEXEC': 45, - 'EBADF': 8, - 'ECHILD': 12, - 'EAGAIN': 6, - 'EWOULDBLOCK': 6, - 'ENOMEM': 48, - 'EACCES': 2, - 'EFAULT': 21, - 'ENOTBLK': 105, - 'EBUSY': 10, - 'EEXIST': 20, - 'EXDEV': 75, - 'ENODEV': 43, - 'ENOTDIR': 54, - 'EISDIR': 31, - 'EINVAL': 28, - 'ENFILE': 41, - 'EMFILE': 33, - 'ENOTTY': 59, - 'ETXTBSY': 74, - 'EFBIG': 22, - 'ENOSPC': 51, - 'ESPIPE': 70, - 'EROFS': 69, - 'EMLINK': 34, - 'EPIPE': 64, - 'EDOM': 18, - 'ERANGE': 68, - 'ENOMSG': 49, - 'EIDRM': 24, - 'ECHRNG': 106, - 'EL2NSYNC': 156, - 'EL3HLT': 107, - 'EL3RST': 108, - 'ELNRNG': 109, - 'EUNATCH': 110, - 'ENOCSI': 111, - 'EL2HLT': 112, - 'EDEADLK': 16, - 'ENOLCK': 46, - 'EBADE': 113, - 'EBADR': 114, - 'EXFULL': 115, - 'ENOANO': 104, - 'EBADRQC': 103, - 'EBADSLT': 102, - 'EDEADLOCK': 16, - 'EBFONT': 101, - 'ENOSTR': 100, - 'ENODATA': 116, - 'ETIME': 117, - 'ENOSR': 118, - 'ENONET': 119, - 'ENOPKG': 120, - 'EREMOTE': 121, - 'ENOLINK': 47, - 'EADV': 122, - 'ESRMNT': 123, - 'ECOMM': 124, - 'EPROTO': 65, - 'EMULTIHOP': 36, - 'EDOTDOT': 125, - 'EBADMSG': 9, - 'ENOTUNIQ': 126, - 'EBADFD': 127, - 'EREMCHG': 128, - 'ELIBACC': 129, - 'ELIBBAD': 130, - 'ELIBSCN': 131, - 'ELIBMAX': 132, - 'ELIBEXEC': 133, - 'ENOSYS': 52, - 'ENOTEMPTY': 55, - 'ENAMETOOLONG': 37, - 'ELOOP': 32, - 'EOPNOTSUPP': 138, - 'EPFNOSUPPORT': 139, - 'ECONNRESET': 15, - 'ENOBUFS': 42, - 'EAFNOSUPPORT': 5, - 'EPROTOTYPE': 67, - 'ENOTSOCK': 57, - 'ENOPROTOOPT': 50, - 'ESHUTDOWN': 140, - 'ECONNREFUSED': 14, - 'EADDRINUSE': 3, - 'ECONNABORTED': 13, - 'ENETUNREACH': 40, - 'ENETDOWN': 38, - 'ETIMEDOUT': 73, - 'EHOSTDOWN': 142, - 'EHOSTUNREACH': 23, - 'EINPROGRESS': 26, - 'EALREADY': 7, - 'EDESTADDRREQ': 17, - 'EMSGSIZE': 35, - 'EPROTONOSUPPORT': 66, - 'ESOCKTNOSUPPORT': 137, - 'EADDRNOTAVAIL': 4, - 'ENETRESET': 39, - 'EISCONN': 30, - 'ENOTCONN': 53, - 'ETOOMANYREFS': 141, - 'EUSERS': 136, - 'EDQUOT': 19, - 'ESTALE': 72, - 'ENOTSUP': 138, - 'ENOMEDIUM': 148, - 'EILSEQ': 25, - 'EOVERFLOW': 61, - 'ECANCELED': 11, - 'ENOTRECOVERABLE': 56, - 'EOWNERDEAD': 62, - 'ESTRPIPE': 135, - };; -InternalError = Module['InternalError'] = extendError(Error, 'InternalError');; -embind_init_charCodes(); -BindingError = Module['BindingError'] = extendError(Error, 'BindingError');; -init_ClassHandle(); -init_embind();; -init_RegisteredPointer(); -UnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError');; -init_emval();; -var ASSERTIONS = true; - -function checkIncomingModuleAPI() { - ignoredModuleProp('fetchSettings'); -} -var asmLibraryArg = { - "__assert_fail": ___assert_fail, - "__cxa_throw": ___cxa_throw, - "__syscall_connect": ___syscall_connect, - "__syscall_faccessat": ___syscall_faccessat, - "__syscall_fcntl64": ___syscall_fcntl64, - "__syscall_fstat64": ___syscall_fstat64, - "__syscall_ftruncate64": ___syscall_ftruncate64, - "__syscall_ioctl": ___syscall_ioctl, - "__syscall_lstat64": ___syscall_lstat64, - "__syscall_newfstatat": ___syscall_newfstatat, - "__syscall_openat": ___syscall_openat, - "__syscall_socket": ___syscall_socket, - "__syscall_stat64": ___syscall_stat64, - "_embind_finalize_value_array": __embind_finalize_value_array, - "_embind_finalize_value_object": __embind_finalize_value_object, - "_embind_register_bigint": __embind_register_bigint, - "_embind_register_bool": __embind_register_bool, - "_embind_register_class": __embind_register_class, - "_embind_register_class_class_function": __embind_register_class_class_function, - "_embind_register_class_constructor": __embind_register_class_constructor, - "_embind_register_class_function": __embind_register_class_function, - "_embind_register_class_property": __embind_register_class_property, - "_embind_register_emval": __embind_register_emval, - "_embind_register_enum": __embind_register_enum, - "_embind_register_enum_value": __embind_register_enum_value, - "_embind_register_float": __embind_register_float, - "_embind_register_integer": __embind_register_integer, - "_embind_register_memory_view": __embind_register_memory_view, - "_embind_register_std_string": __embind_register_std_string, - "_embind_register_std_wstring": __embind_register_std_wstring, - "_embind_register_value_array": __embind_register_value_array, - "_embind_register_value_array_element": __embind_register_value_array_element, - "_embind_register_value_object": __embind_register_value_object, - "_embind_register_value_object_field": __embind_register_value_object_field, - "_embind_register_void": __embind_register_void, - "_emscripten_get_now_is_monotonic": __emscripten_get_now_is_monotonic, - "_emval_as": __emval_as, - "_emval_call_method": __emval_call_method, - "_emval_call_void_method": __emval_call_void_method, - "_emval_decref": __emval_decref, - "_emval_equals": __emval_equals, - "_emval_get_global": __emval_get_global, - "_emval_get_method_caller": __emval_get_method_caller, - "_emval_get_module_property": __emval_get_module_property, - "_emval_get_property": __emval_get_property, - "_emval_incref": __emval_incref, - "_emval_instanceof": __emval_instanceof, - "_emval_is_number": __emval_is_number, - "_emval_is_string": __emval_is_string, - "_emval_new": __emval_new, - "_emval_new_array": __emval_new_array, - "_emval_new_cstring": __emval_new_cstring, - "_emval_new_object": __emval_new_object, - "_emval_run_destructors": __emval_run_destructors, - "_emval_set_property": __emval_set_property, - "_emval_take_value": __emval_take_value, - "_gmtime_js": __gmtime_js, - "_localtime_js": __localtime_js, - "_mktime_js": __mktime_js, - "_tzset_js": __tzset_js, - "abort": _abort, - "emscripten_console_error": _emscripten_console_error, - "emscripten_date_now": _emscripten_date_now, - "emscripten_get_heap_max": _emscripten_get_heap_max, - "emscripten_get_now": _emscripten_get_now, - "emscripten_memcpy_big": _emscripten_memcpy_big, - "emscripten_resize_heap": _emscripten_resize_heap, - "environ_get": _environ_get, - "environ_sizes_get": _environ_sizes_get, - "exit": _exit, - "fd_close": _fd_close, - "fd_read": _fd_read, - "fd_seek": _fd_seek, - "fd_write": _fd_write -}; -var asm = createWasm(); -/** @type {function(...*):?} */ -var ___wasm_call_ctors = Module["___wasm_call_ctors"] = createExportWrapper("__wasm_call_ctors"); - -/** @type {function(...*):?} */ -var _malloc = Module["_malloc"] = createExportWrapper("malloc"); - -/** @type {function(...*):?} */ -var _fflush = Module["_fflush"] = createExportWrapper("fflush"); - -/** @type {function(...*):?} */ -var _free = Module["_free"] = createExportWrapper("free"); - -/** @type {function(...*):?} */ -var ___errno_location = Module["___errno_location"] = createExportWrapper("__errno_location"); - -/** @type {function(...*):?} */ -var ___getTypeName = Module["___getTypeName"] = createExportWrapper("__getTypeName"); - -/** @type {function(...*):?} */ -var __embind_initialize_bindings = Module["__embind_initialize_bindings"] = createExportWrapper("_embind_initialize_bindings"); - -/** @type {function(...*):?} */ -var _htons = Module["_htons"] = createExportWrapper("htons"); - -/** @type {function(...*):?} */ -var _ntohs = Module["_ntohs"] = createExportWrapper("ntohs"); - -/** @type {function(...*):?} */ -var _emscripten_stack_init = Module["_emscripten_stack_init"] = function() { - return (_emscripten_stack_init = Module["_emscripten_stack_init"] = Module["asm"]["emscripten_stack_init"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var _emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = function() { - return (_emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = Module["asm"]["emscripten_stack_get_free"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var _emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = function() { - return (_emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var _emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = function() { - return (_emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var stackSave = Module["stackSave"] = createExportWrapper("stackSave"); - -/** @type {function(...*):?} */ -var stackRestore = Module["stackRestore"] = createExportWrapper("stackRestore"); - -/** @type {function(...*):?} */ -var stackAlloc = Module["stackAlloc"] = createExportWrapper("stackAlloc"); - -/** @type {function(...*):?} */ -var _emscripten_stack_get_current = Module["_emscripten_stack_get_current"] = function() { - return (_emscripten_stack_get_current = Module["_emscripten_stack_get_current"] = Module["asm"]["emscripten_stack_get_current"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var ___cxa_is_pointer_type = Module["___cxa_is_pointer_type"] = createExportWrapper("__cxa_is_pointer_type"); - -/** @type {function(...*):?} */ -var dynCall_ji = Module["dynCall_ji"] = createExportWrapper("dynCall_ji"); - -/** @type {function(...*):?} */ -var dynCall_iiijii = Module["dynCall_iiijii"] = createExportWrapper("dynCall_iiijii"); - -/** @type {function(...*):?} */ -var dynCall_iij = Module["dynCall_iij"] = createExportWrapper("dynCall_iij"); - -/** @type {function(...*):?} */ -var dynCall_vij = Module["dynCall_vij"] = createExportWrapper("dynCall_vij"); - -/** @type {function(...*):?} */ -var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji"); - - - - - -// === Auto-generated postamble setup entry stuff === - - -var unexportedRuntimeSymbols = [ - 'run', - 'UTF8ArrayToString', - 'UTF8ToString', - 'stringToUTF8Array', - 'stringToUTF8', - 'lengthBytesUTF8', - 'addOnPreRun', - 'addOnInit', - 'addOnPreMain', - 'addOnExit', - 'addOnPostRun', - 'addRunDependency', - 'removeRunDependency', - 'FS_createFolder', - 'FS_createPath', - 'FS_createDataFile', - 'FS_createPreloadedFile', - 'FS_createLazyFile', - 'FS_createLink', - 'FS_createDevice', - 'FS_unlink', - 'getLEB', - 'getFunctionTables', - 'alignFunctionTables', - 'registerFunctions', - 'prettyPrint', - 'getCompilerSetting', - 'out', - 'err', - 'callMain', - 'abort', - 'keepRuntimeAlive', - 'wasmMemory', - 'stackAlloc', - 'stackSave', - 'stackRestore', - 'getTempRet0', - 'setTempRet0', - 'writeStackCookie', - 'checkStackCookie', - 'ptrToString', - 'zeroMemory', - 'stringToNewUTF8', - 'exitJS', - 'getHeapMax', - 'emscripten_realloc_buffer', - 'ENV', - 'ERRNO_CODES', - 'ERRNO_MESSAGES', - 'setErrNo', - 'inetPton4', - 'inetNtop4', - 'inetPton6', - 'inetNtop6', - 'readSockaddr', - 'writeSockaddr', - 'DNS', - 'getHostByName', - 'Protocols', - 'Sockets', - 'getRandomDevice', - 'warnOnce', - 'traverseStack', - 'UNWIND_CACHE', - 'convertPCtoSourceLocation', - 'readEmAsmArgsArray', - 'readEmAsmArgs', - 'runEmAsmFunction', - 'runMainThreadEmAsm', - 'jstoi_q', - 'jstoi_s', - 'getExecutableName', - 'listenOnce', - 'autoResumeAudioContext', - 'dynCallLegacy', - 'getDynCaller', - 'dynCall', - 'handleException', - 'runtimeKeepalivePush', - 'runtimeKeepalivePop', - 'callUserCallback', - 'maybeExit', - 'safeSetTimeout', - 'asmjsMangle', - 'asyncLoad', - 'alignMemory', - 'mmapAlloc', - 'handleAllocator', - 'writeI53ToI64', - 'writeI53ToI64Clamped', - 'writeI53ToI64Signaling', - 'writeI53ToU64Clamped', - 'writeI53ToU64Signaling', - 'readI53FromI64', - 'readI53FromU64', - 'convertI32PairToI53', - 'convertI32PairToI53Checked', - 'convertU32PairToI53', - 'getCFunc', - 'ccall', - 'cwrap', - 'uleb128Encode', - 'sigToWasmTypes', - 'generateFuncType', - 'convertJsFunctionToWasm', - 'freeTableIndexes', - 'functionsInTableMap', - 'getEmptyTableSlot', - 'updateTableMap', - 'addFunction', - 'removeFunction', - 'reallyNegative', - 'unSign', - 'strLen', - 'reSign', - 'formatString', - 'setValue', - 'getValue', - 'PATH', - 'PATH_FS', - 'intArrayFromString', - 'intArrayToString', - 'AsciiToString', - 'stringToAscii', - 'UTF16Decoder', - 'UTF16ToString', - 'stringToUTF16', - 'lengthBytesUTF16', - 'UTF32ToString', - 'stringToUTF32', - 'lengthBytesUTF32', - 'allocateUTF8', - 'allocateUTF8OnStack', - 'writeStringToMemory', - 'writeArrayToMemory', - 'writeAsciiToMemory', - 'SYSCALLS', - 'getSocketFromFD', - 'getSocketAddress', - 'JSEvents', - 'registerKeyEventCallback', - 'specialHTMLTargets', - 'maybeCStringToJsString', - 'findEventTarget', - 'findCanvasEventTarget', - 'getBoundingClientRect', - 'fillMouseEventData', - 'registerMouseEventCallback', - 'registerWheelEventCallback', - 'registerUiEventCallback', - 'registerFocusEventCallback', - 'fillDeviceOrientationEventData', - 'registerDeviceOrientationEventCallback', - 'fillDeviceMotionEventData', - 'registerDeviceMotionEventCallback', - 'screenOrientation', - 'fillOrientationChangeEventData', - 'registerOrientationChangeEventCallback', - 'fillFullscreenChangeEventData', - 'registerFullscreenChangeEventCallback', - 'JSEvents_requestFullscreen', - 'JSEvents_resizeCanvasForFullscreen', - 'registerRestoreOldStyle', - 'hideEverythingExceptGivenElement', - 'restoreHiddenElements', - 'setLetterbox', - 'currentFullscreenStrategy', - 'restoreOldWindowedStyle', - 'softFullscreenResizeWebGLRenderTarget', - 'doRequestFullscreen', - 'fillPointerlockChangeEventData', - 'registerPointerlockChangeEventCallback', - 'registerPointerlockErrorEventCallback', - 'requestPointerLock', - 'fillVisibilityChangeEventData', - 'registerVisibilityChangeEventCallback', - 'registerTouchEventCallback', - 'fillGamepadEventData', - 'registerGamepadEventCallback', - 'registerBeforeUnloadEventCallback', - 'fillBatteryEventData', - 'battery', - 'registerBatteryEventCallback', - 'setCanvasElementSize', - 'getCanvasElementSize', - 'demangle', - 'demangleAll', - 'jsStackTrace', - 'stackTrace', - 'ExitStatus', - 'getEnvStrings', - 'checkWasiClock', - 'doReadv', - 'doWritev', - 'dlopenMissingError', - 'createDyncallWrapper', - 'setImmediateWrapped', - 'clearImmediateWrapped', - 'polyfillSetImmediate', - 'promiseMap', - 'newNativePromise', - 'getPromise', - 'uncaughtExceptionCount', - 'exceptionLast', - 'exceptionCaught', - 'ExceptionInfo', - 'exception_addRef', - 'exception_decRef', - 'Browser', - 'setMainLoop', - 'wget', - 'FS', - 'MEMFS', - 'TTY', - 'PIPEFS', - 'SOCKFS', - '_setNetworkCallback', - 'tempFixedLengthArray', - 'miniTempWebGLFloatBuffers', - 'heapObjectForWebGLType', - 'heapAccessShiftForWebGLHeap', - 'GL', - 'emscriptenWebGLGet', - 'computeUnpackAlignedImageSize', - 'emscriptenWebGLGetTexPixelData', - 'emscriptenWebGLGetUniform', - 'webglGetUniformLocation', - 'webglPrepareUniformLocationsBeforeFirstUse', - 'webglGetLeftBracePos', - 'emscriptenWebGLGetVertexAttrib', - 'writeGLArray', - 'AL', - 'SDL_unicode', - 'SDL_ttfContext', - 'SDL_audio', - 'SDL', - 'SDL_gfx', - 'GLUT', - 'EGL', - 'GLFW_Window', - 'GLFW', - 'GLEW', - 'IDBStore', - 'runAndAbortIfError', - 'ALLOC_NORMAL', - 'ALLOC_STACK', - 'allocate', - 'InternalError', - 'BindingError', - 'UnboundTypeError', - 'PureVirtualError', - 'init_embind', - 'throwInternalError', - 'throwBindingError', - 'throwUnboundTypeError', - 'ensureOverloadTable', - 'exposePublicSymbol', - 'replacePublicSymbol', - 'extendError', - 'createNamedFunction', - 'embindRepr', - 'registeredInstances', - 'getBasestPointer', - 'registerInheritedInstance', - 'unregisterInheritedInstance', - 'getInheritedInstance', - 'getInheritedInstanceCount', - 'getLiveInheritedInstances', - 'registeredTypes', - 'awaitingDependencies', - 'typeDependencies', - 'registeredPointers', - 'registerType', - 'whenDependentTypesAreResolved', - 'embind_charCodes', - 'embind_init_charCodes', - 'readLatin1String', - 'getTypeName', - 'heap32VectorToArray', - 'requireRegisteredType', - 'getShiftFromSize', - 'integerReadValueFromPointer', - 'enumReadValueFromPointer', - 'floatReadValueFromPointer', - 'simpleReadValueFromPointer', - 'runDestructors', - 'new_', - 'craftInvokerFunction', - 'embind__requireFunction', - 'tupleRegistrations', - 'structRegistrations', - 'genericPointerToWireType', - 'constNoSmartPtrRawPointerToWireType', - 'nonConstNoSmartPtrRawPointerToWireType', - 'init_RegisteredPointer', - 'RegisteredPointer', - 'RegisteredPointer_getPointee', - 'RegisteredPointer_destructor', - 'RegisteredPointer_deleteObject', - 'RegisteredPointer_fromWireType', - 'runDestructor', - 'releaseClassHandle', - 'finalizationRegistry', - 'detachFinalizer_deps', - 'detachFinalizer', - 'attachFinalizer', - 'makeClassHandle', - 'init_ClassHandle', - 'ClassHandle', - 'ClassHandle_isAliasOf', - 'throwInstanceAlreadyDeleted', - 'ClassHandle_clone', - 'ClassHandle_delete', - 'deletionQueue', - 'ClassHandle_isDeleted', - 'ClassHandle_deleteLater', - 'flushPendingDeletes', - 'delayFunction', - 'setDelayFunction', - 'RegisteredClass', - 'shallowCopyInternalPointer', - 'downcastPointer', - 'upcastPointer', - 'validateThis', - 'char_0', - 'char_9', - 'makeLegalFunctionName', - 'emval_handle_array', - 'emval_free_list', - 'emval_symbols', - 'init_emval', - 'count_emval_handles', - 'get_first_emval', - 'getStringOrSymbol', - 'Emval', - 'emval_newers', - 'craftEmvalAllocator', - 'emval_get_global', - 'emval_lookupTypes', - 'emval_allocateDestructors', - 'emval_methodCallers', - 'emval_addMethodCaller', - 'emval_registeredMethods', -]; -unexportedRuntimeSymbols.forEach(unexportedRuntimeSymbol); -var missingLibrarySymbols = [ - 'stringToNewUTF8', - 'writeSockaddr', - 'getHostByName', - 'traverseStack', - 'convertPCtoSourceLocation', - 'readEmAsmArgs', - 'runEmAsmFunction', - 'runMainThreadEmAsm', - 'jstoi_s', - 'listenOnce', - 'autoResumeAudioContext', - 'handleException', - 'runtimeKeepalivePush', - 'runtimeKeepalivePop', - 'callUserCallback', - 'maybeExit', - 'safeSetTimeout', - 'asmjsMangle', - 'handleAllocator', - 'writeI53ToI64', - 'writeI53ToI64Clamped', - 'writeI53ToI64Signaling', - 'writeI53ToU64Clamped', - 'writeI53ToU64Signaling', - 'readI53FromU64', - 'convertI32PairToI53', - 'convertU32PairToI53', - 'getCFunc', - 'ccall', - 'cwrap', - 'uleb128Encode', - 'sigToWasmTypes', - 'generateFuncType', - 'convertJsFunctionToWasm', - 'getEmptyTableSlot', - 'updateTableMap', - 'addFunction', - 'removeFunction', - 'reallyNegative', - 'unSign', - 'strLen', - 'reSign', - 'formatString', - 'intArrayToString', - 'AsciiToString', - 'stringToAscii', - 'allocateUTF8OnStack', - 'writeStringToMemory', - 'writeArrayToMemory', - 'registerKeyEventCallback', - 'maybeCStringToJsString', - 'findEventTarget', - 'findCanvasEventTarget', - 'getBoundingClientRect', - 'fillMouseEventData', - 'registerMouseEventCallback', - 'registerWheelEventCallback', - 'registerUiEventCallback', - 'registerFocusEventCallback', - 'fillDeviceOrientationEventData', - 'registerDeviceOrientationEventCallback', - 'fillDeviceMotionEventData', - 'registerDeviceMotionEventCallback', - 'screenOrientation', - 'fillOrientationChangeEventData', - 'registerOrientationChangeEventCallback', - 'fillFullscreenChangeEventData', - 'registerFullscreenChangeEventCallback', - 'JSEvents_requestFullscreen', - 'JSEvents_resizeCanvasForFullscreen', - 'registerRestoreOldStyle', - 'hideEverythingExceptGivenElement', - 'restoreHiddenElements', - 'setLetterbox', - 'softFullscreenResizeWebGLRenderTarget', - 'doRequestFullscreen', - 'fillPointerlockChangeEventData', - 'registerPointerlockChangeEventCallback', - 'registerPointerlockErrorEventCallback', - 'requestPointerLock', - 'fillVisibilityChangeEventData', - 'registerVisibilityChangeEventCallback', - 'registerTouchEventCallback', - 'fillGamepadEventData', - 'registerGamepadEventCallback', - 'registerBeforeUnloadEventCallback', - 'fillBatteryEventData', - 'battery', - 'registerBatteryEventCallback', - 'setCanvasElementSize', - 'getCanvasElementSize', - 'jsStackTrace', - 'stackTrace', - 'checkWasiClock', - 'createDyncallWrapper', - 'setImmediateWrapped', - 'clearImmediateWrapped', - 'polyfillSetImmediate', - 'newNativePromise', - 'getPromise', - 'exception_addRef', - 'exception_decRef', - 'setMainLoop', - '_setNetworkCallback', - 'heapObjectForWebGLType', - 'heapAccessShiftForWebGLHeap', - 'emscriptenWebGLGet', - 'computeUnpackAlignedImageSize', - 'emscriptenWebGLGetTexPixelData', - 'emscriptenWebGLGetUniform', - 'webglGetUniformLocation', - 'webglPrepareUniformLocationsBeforeFirstUse', - 'webglGetLeftBracePos', - 'emscriptenWebGLGetVertexAttrib', - 'writeGLArray', - 'SDL_unicode', - 'SDL_ttfContext', - 'SDL_audio', - 'GLFW_Window', - 'runAndAbortIfError', - 'ALLOC_NORMAL', - 'ALLOC_STACK', - 'allocate', - 'registerInheritedInstance', - 'unregisterInheritedInstance', -]; -missingLibrarySymbols.forEach(missingLibrarySymbol) - - -var calledRun; - -dependenciesFulfilled = function runCaller() { - // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -}; - -function stackCheckInit() { - // This is normally called automatically during __wasm_call_ctors but need to - // get these values before even running any of the ctors so we call it redundantly - // here. - _emscripten_stack_init(); - // TODO(sbc): Move writeStackCookie to native to to avoid this. - writeStackCookie(); -} - -/** @type {function(Array=)} */ -function run(args) { - args = args || arguments_; - - if (runDependencies > 0) { - return; - } - - stackCheckInit(); - - preRun(); - - // a preRun added a dependency, run will be called later - if (runDependencies > 0) { - return; - } - - function doRun() { - // run may have just been called through dependencies being fulfilled just in this very frame, - // or while the async setStatus time below was happening - if (calledRun) return; - calledRun = true; - Module['calledRun'] = true; - - if (ABORT) return; - - initRuntime(); - - readyPromiseResolve(Module); - if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); - - assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - doRun(); - }, 1); - } else - { - doRun(); - } - checkStackCookie(); -} - -function checkUnflushedContent() { - // Compiler settings do not allow exiting the runtime, so flushing - // the streams is not possible. but in ASSERTIONS mode we check - // if there was something to flush, and if so tell the user they - // should request that the runtime be exitable. - // Normally we would not even include flush() at all, but in ASSERTIONS - // builds we do so just for this check, and here we see if there is any - // content to flush, that is, we check if there would have been - // something a non-ASSERTIONS build would have not seen. - // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 - // mode (which has its own special function for this; otherwise, all - // the code is inside libc) - var oldOut = out; - var oldErr = err; - var has = false; - out = err = (x) => { - has = true; - } - try { // it doesn't matter if it fails - _fflush(0); - // also flush in the JS FS layer - ['stdout', 'stderr'].forEach(function(name) { - var info = FS.analyzePath('/dev/' + name); - if (!info) return; - var stream = info.object; - var rdev = stream.rdev; - var tty = TTY.ttys[rdev]; - if (tty && tty.output && tty.output.length) { - has = true; - } - }); - } catch(e) {} - out = oldOut; - err = oldErr; - if (has) { - warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); - } -} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -run(); - - - - - - return rhino3dm.ready -} -); -})(); -if (typeof exports === 'object' && typeof module === 'object') - module.exports = rhino3dm; -else if (typeof define === 'function' && define['amd']) - define([], function() { return rhino3dm; }); -else if (typeof exports === 'object') - exports["rhino3dm"] = rhino3dm; diff --git a/three/addons/libs/rhino3dm/rhino3dm.module.js b/three/addons/libs/rhino3dm/rhino3dm.module.js deleted file mode 100644 index 77110f1..0000000 --- a/three/addons/libs/rhino3dm/rhino3dm.module.js +++ /dev/null @@ -1,8749 +0,0 @@ - -var rhino3dm = (() => { - var _scriptDir = import.meta.url; - - return ( -async function(config) { - var rhino3dm = config || {}; - - - -// The Module object: Our interface to the outside world. We import -// and export values on it. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to check if Module already exists (e.g. case 3 above). -// Substitution will be replaced with actual code on later stage of the build, -// this way Closure Compiler will not mangle it (e.g. case 4. above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module = typeof rhino3dm != 'undefined' ? rhino3dm : {}; - -// See https://caniuse.com/mdn-javascript_builtins_object_assign - -// See https://caniuse.com/mdn-javascript_builtins_bigint64array - -// Set up the promise that indicates the Module is initialized -var readyPromiseResolve, readyPromiseReject; -Module['ready'] = new Promise(function(resolve, reject) { - readyPromiseResolve = resolve; - readyPromiseReject = reject; -}); -["_main","_fflush","___getTypeName","__embind_initialize_bindings","onRuntimeInitialized"].forEach((prop) => { - if (!Object.getOwnPropertyDescriptor(Module['ready'], prop)) { - Object.defineProperty(Module['ready'], prop, { - get: () => abort('You are getting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - set: () => abort('You are setting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - }); - } -}); - -// --pre-jses are emitted after the Module integration code, so that they can -// refer to Module (if they choose; they can also define Module) -// {{PRE_JSES}} - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = Object.assign({}, Module); - -var arguments_ = []; -var thisProgram = './this.program'; -var quit_ = (status, toThrow) => { - throw toThrow; -}; - -// Determine the runtime environment we are in. You can customize this by -// setting the ENVIRONMENT setting at compile time (see settings.js). - -// Attempt to auto-detect the environment -var ENVIRONMENT_IS_WEB = typeof window == 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts == 'function'; -// N.b. Electron.js environment is simultaneously a NODE-environment, but -// also a web environment. -var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (Module['ENVIRONMENT']) { - throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)'); -} - -// `/` should be present at the end if `scriptDirectory` is not empty -var scriptDirectory = ''; -function locateFile(path) { - if (Module['locateFile']) { - return Module['locateFile'](path, scriptDirectory); - } - return scriptDirectory + path; -} - -// Hooks that are implemented differently in different runtime environments. -var read_, - readAsync, - readBinary, - setWindowTitle; - -// Normally we don't log exceptions but instead let them bubble out the top -// level where the embedding environment (e.g. the browser) can handle -// them. -// However under v8 and node we sometimes exit the process direcly in which case -// its up to use us to log the exception before exiting. -// If we fix https://github.com/emscripten-core/emscripten/issues/15080 -// this may no longer be needed under node. -function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return; - let toLog = e; - if (e && typeof e == 'object' && e.stack) { - toLog = [e, e.stack]; - } - err('exiting due to exception: ' + toLog); -} - -if (ENVIRONMENT_IS_NODE) { - if (typeof process == 'undefined' || !process.release || process.release.name !== 'node') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - // `require()` is no-op in an ESM module, use `createRequire()` to construct - // the require()` function. This is only necessary for multi-environment - // builds, `-sENVIRONMENT=node` emits a static import declaration instead. - // TODO: Swap all `require()`'s with `import()`'s? - const { createRequire } = await import('module'); - /** @suppress{duplicate} */ - var require = createRequire(import.meta.url); - // These modules will usually be used on Node.js. Load them eagerly to avoid - // the complexity of lazy-loading. - var fs = require('fs'); - var nodePath = require('path'); - - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = nodePath.dirname(scriptDirectory) + '/'; - } else { - // EXPORT_ES6 + ENVIRONMENT_IS_NODE always requires use of import.meta.url, - // since there's no way getting the current absolute path of the module when - // support for that is not available. - scriptDirectory = require('url').fileURLToPath(new URL('./', import.meta.url)); // includes trailing slash - } - -// include: node_shell_read.js - - -read_ = (filename, binary) => { - // We need to re-wrap `file://` strings to URLs. Normalizing isn't - // necessary in that case, the path should already be absolute. - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - return fs.readFileSync(filename, binary ? undefined : 'utf8'); -}; - -readBinary = (filename) => { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - assert(ret.buffer); - return ret; -}; - -readAsync = (filename, onload, onerror) => { - // See the comment in the `read_` function. - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - fs.readFile(filename, function(err, data) { - if (err) onerror(err); - else onload(data.buffer); - }); -}; - -// end include: node_shell_read.js - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/'); - } - - arguments_ = process['argv'].slice(2); - - // MODULARIZE will export the module in the proper place outside, we don't need to export here - - process['on']('uncaughtException', function(ex) { - // suppress ExitStatus exceptions from showing an error - if (!(ex instanceof ExitStatus)) { - throw ex; - } - }); - - // Without this older versions of node (< v15) will log unhandled rejections - // but return 0, which is not normally the desired behaviour. This is - // not be needed with node v15 and about because it is now the default - // behaviour: - // See https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode - process['on']('unhandledRejection', function(reason) { throw reason; }); - - quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status; - throw toThrow; - } - logExceptionOnExit(toThrow); - process['exit'](status); - }; - - Module['inspect'] = function () { return '[Emscripten Module object]'; }; - -} else -if (ENVIRONMENT_IS_SHELL) { - - if ((typeof process == 'object' && typeof require === 'function') || typeof window == 'object' || typeof importScripts == 'function') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - if (typeof read != 'undefined') { - read_ = function shell_read(f) { - return read(f); - }; - } - - readBinary = function readBinary(f) { - let data; - if (typeof readbuffer == 'function') { - return new Uint8Array(readbuffer(f)); - } - data = read(f, 'binary'); - assert(typeof data == 'object'); - return data; - }; - - readAsync = function readAsync(f, onload, onerror) { - setTimeout(() => onload(readBinary(f)), 0); - }; - - if (typeof scriptArgs != 'undefined') { - arguments_ = scriptArgs; - } else if (typeof arguments != 'undefined') { - arguments_ = arguments; - } - - if (typeof quit == 'function') { - quit_ = (status, toThrow) => { - logExceptionOnExit(toThrow); - quit(status); - }; - } - - if (typeof print != 'undefined') { - // Prefer to use print/printErr where they exist, as they usually work better. - if (typeof console == 'undefined') console = /** @type{!Console} */({}); - console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); - console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr != 'undefined' ? printErr : print); - } - -} else - -// Note that this includes Node.js workers when relevant (pthreads is enabled). -// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and -// ENVIRONMENT_IS_NODE. -if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled - scriptDirectory = self.location.href; - } else if (typeof document != 'undefined' && document.currentScript) { // web - scriptDirectory = document.currentScript.src; - } - // When MODULARIZE, this JS may be executed later, after document.currentScript - // is gone, so we saved it, and we use it here instead of any other info. - if (_scriptDir) { - scriptDirectory = _scriptDir; - } - // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. - // otherwise, slice off the final part of the url to find the script directory. - // if scriptDirectory does not contain a slash, lastIndexOf will return -1, - // and scriptDirectory will correctly be replaced with an empty string. - // If scriptDirectory contains a query (starting with ?) or a fragment (starting with #), - // they are removed because they could contain a slash. - if (scriptDirectory.indexOf('blob:') !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf('/')+1); - } else { - scriptDirectory = ''; - } - - if (!(typeof window == 'object' || typeof importScripts == 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - // Differentiate the Web Worker from the Node Worker case, as reading must - // be done differently. - { -// include: web_or_worker_shell_read.js - - - read_ = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.send(null); - return xhr.responseText; - } - - if (ENVIRONMENT_IS_WORKER) { - readBinary = (url) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - xhr.responseType = 'arraybuffer'; - xhr.send(null); - return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); - }; - } - - readAsync = (url, onload, onerror) => { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'arraybuffer'; - xhr.onload = () => { - if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 - onload(xhr.response); - return; - } - onerror(); - }; - xhr.onerror = onerror; - xhr.send(null); - } - -// end include: web_or_worker_shell_read.js - } - - setWindowTitle = (title) => document.title = title; -} else -{ - throw new Error('environment detection error'); -} - -var out = Module['print'] || console.log.bind(console); -var err = Module['printErr'] || console.warn.bind(console); - -// Merge back in the overrides -Object.assign(Module, moduleOverrides); -// Free the object hierarchy contained in the overrides, this lets the GC -// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. -moduleOverrides = null; -checkIncomingModuleAPI(); - -// Emit code to handle expected values on the Module object. This applies Module.x -// to the proper local x. This has two benefits: first, we only emit it if it is -// expected to arrive, and second, by using a local everywhere else that can be -// minified. - -if (Module['arguments']) arguments_ = Module['arguments'];legacyModuleProp('arguments', 'arguments_'); - -if (Module['thisProgram']) thisProgram = Module['thisProgram'];legacyModuleProp('thisProgram', 'thisProgram'); - -if (Module['quit']) quit_ = Module['quit'];legacyModuleProp('quit', 'quit_'); - -// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message -// Assertions on removed incoming Module JS APIs. -assert(typeof Module['memoryInitializerPrefixURL'] == 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['pthreadMainPrefixURL'] == 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['cdInitializerPrefixURL'] == 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['filePackagePrefixURL'] == 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['read'] == 'undefined', 'Module.read option was removed (modify read_ in JS)'); -assert(typeof Module['readAsync'] == 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); -assert(typeof Module['readBinary'] == 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); -assert(typeof Module['setWindowTitle'] == 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); -assert(typeof Module['TOTAL_MEMORY'] == 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); -legacyModuleProp('read', 'read_'); -legacyModuleProp('readAsync', 'readAsync'); -legacyModuleProp('readBinary', 'readBinary'); -legacyModuleProp('setWindowTitle', 'setWindowTitle'); -var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; -var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; -var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; -var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; - -assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable."); - -// include: support.js - - -var STACK_ALIGN = 16; -var POINTER_SIZE = 4; - -function getNativeTypeSize(type) { - switch (type) { - case 'i1': case 'i8': case 'u8': return 1; - case 'i16': case 'u16': return 2; - case 'i32': case 'u32': return 4; - case 'i64': case 'u64': return 8; - case 'float': return 4; - case 'double': return 8; - default: { - if (type[type.length - 1] === '*') { - return POINTER_SIZE; - } - if (type[0] === 'i') { - const bits = Number(type.substr(1)); - assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); - return bits / 8; - } - return 0; - } - } -} - -// include: runtime_debug.js - - -function legacyModuleProp(prop, newName) { - if (!Object.getOwnPropertyDescriptor(Module, prop)) { - Object.defineProperty(Module, prop, { - configurable: true, - get: function() { - abort('Module.' + prop + ' has been replaced with plain ' + newName + ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)'); - } - }); - } -} - -function ignoredModuleProp(prop) { - if (Object.getOwnPropertyDescriptor(Module, prop)) { - abort('`Module.' + prop + '` was supplied but `' + prop + '` not included in INCOMING_MODULE_JS_API'); - } -} - -// forcing the filesystem exports a few things by default -function isExportedByForceFilesystem(name) { - return name === 'FS_createPath' || - name === 'FS_createDataFile' || - name === 'FS_createPreloadedFile' || - name === 'FS_unlink' || - name === 'addRunDependency' || - // The old FS has some functionality that WasmFS lacks. - name === 'FS_createLazyFile' || - name === 'FS_createDevice' || - name === 'removeRunDependency'; -} - -function missingGlobal(sym, msg) { - Object.defineProperty(globalThis, sym, { - configurable: true, - get: function() { - warnOnce('`' + sym + '` is not longer defined by emscripten. ' + msg); - return undefined; - } - }); -} - -missingGlobal('buffer', 'Please use HEAP8.buffer or wasmMemory.buffer'); - -function missingLibrarySymbol(sym) { - if (typeof globalThis !== 'undefined' && !Object.getOwnPropertyDescriptor(globalThis, sym)) { - Object.defineProperty(globalThis, sym, { - configurable: true, - get: function() { - // Can't `abort()` here because it would break code that does runtime - // checks. e.g. `if (typeof SDL === 'undefined')`. - var msg = '`' + sym + '` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line'; - // DEFAULT_LIBRARY_FUNCS_TO_INCLUDE requires the name as it appears in - // library.js, which means $name for a JS name with no prefix, or name - // for a JS name like _name. - var librarySymbol = sym; - if (!librarySymbol.startsWith('_')) { - librarySymbol = '$' + sym; - } - msg += " (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE=" + librarySymbol + ")"; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - warnOnce(msg); - return undefined; - } - }); - } -} - -function unexportedRuntimeSymbol(sym) { - if (!Object.getOwnPropertyDescriptor(Module, sym)) { - Object.defineProperty(Module, sym, { - configurable: true, - get: function() { - var msg = "'" + sym + "' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - abort(msg); - } - }); - } -} - -// end include: runtime_debug.js -// end include: support.js - - - -// === Preamble library stuff === - -// Documentation for the public APIs defined in this file must be updated in: -// site/source/docs/api_reference/preamble.js.rst -// A prebuilt local version of the documentation is available at: -// site/build/text/docs/api_reference/preamble.js.txt -// You can also build docs locally as HTML or other formats in site/ -// An online HTML version (which may be of a different version of Emscripten) -// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html - -var wasmBinary; -if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];legacyModuleProp('wasmBinary', 'wasmBinary'); -var noExitRuntime = Module['noExitRuntime'] || true;legacyModuleProp('noExitRuntime', 'noExitRuntime'); - -if (typeof WebAssembly != 'object') { - abort('no native wasm support detected'); -} - -// Wasm globals - -var wasmMemory; - -//======================================== -// Runtime essentials -//======================================== - -// whether we are quitting the application. no code should run after this. -// set in exit() and abort() -var ABORT = false; - -// set by exit() and abort(). Passed to 'onExit' handler. -// NOTE: This is also used as the process return code code in shell environments -// but only when noExitRuntime is false. -var EXITSTATUS; - -/** @type {function(*, string=)} */ -function assert(condition, text) { - if (!condition) { - abort('Assertion failed' + (text ? ': ' + text : '')); - } -} - -// We used to include malloc/free by default in the past. Show a helpful error in -// builds with assertions. - -// include: runtime_strings.js - - -// runtime_strings.js: String related runtime functions that are part of both -// MINIMAL_RUNTIME and regular runtime. - -var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined; - -/** - * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given - * array that contains uint8 values, returns a copy of that string as a - * Javascript String object. - * heapOrArray is either a regular array, or a JavaScript typed array view. - * @param {number} idx - * @param {number=} maxBytesToRead - * @return {string} - */ -function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. Also, use the length info to avoid running tiny - // strings through TextDecoder, since .subarray() allocates garbage. - // (As a tiny code save trick, compare endPtr against endIdx using a negation, - // so that undefined means Infinity) - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; - - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); - } - var str = ''; - // If building with TextDecoder, we have already computed the string length - // above, so test loop end condition against that - while (idx < endPtr) { - // For UTF8 byte structure, see: - // http://en.wikipedia.org/wiki/UTF-8#Description - // https://www.ietf.org/rfc/rfc2279.txt - // https://tools.ietf.org/html/rfc3629 - var u0 = heapOrArray[idx++]; - if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } - var u1 = heapOrArray[idx++] & 63; - if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } - var u2 = heapOrArray[idx++] & 63; - if ((u0 & 0xF0) == 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } else { - if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte ' + ptrToString(u0) + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!'); - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); - } - - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; -} - -/** - * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the - * emscripten HEAP, returns a copy of that string as a Javascript String object. - * - * @param {number} ptr - * @param {number=} maxBytesToRead - An optional length that specifies the - * maximum number of bytes to read. You can omit this parameter to scan the - * string until the first \0 byte. If maxBytesToRead is passed, and the string - * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the - * string will cut short at that byte index (i.e. maxBytesToRead will not - * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing - * frequent uses of UTF8ToString() with and without maxBytesToRead may throw - * JS JIT optimizations off, so it is worth to consider consistently using one - * @return {string} - */ -function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; -} - -/** - * Copies the given Javascript String object 'str' to the given byte array at - * address 'outIdx', encoded in UTF8 form and null-terminated. The copy will - * require at most str.length*4+1 bytes of space in the HEAP. Use the function - * lengthBytesUTF8 to compute the exact number of bytes (excluding null - * terminator) that this function will write. - * - * @param {string} str - The Javascript string to copy. - * @param {ArrayBufferView|Array} heap - The array to copy to. Each - * index in this array is assumed - * to be one 8-byte element. - * @param {number} outIdx - The starting offset in the array to begin the copying. - * @param {number} maxBytesToWrite - The maximum number of bytes this function - * can write to the array. This count should - * include the null terminator, i.e. if - * maxBytesToWrite=1, only the null terminator - * will be written and nothing else. - * maxBytesToWrite=0 does not write any bytes - * to the output, not even the null - * terminator. - * @return {number} The number of bytes written, EXCLUDING the null terminator. - */ -function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - // Parameter maxBytesToWrite is not optional. Negative values, 0, null, - // undefined and false each don't write out any bytes. - if (!(maxBytesToWrite > 0)) - return 0; - - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description - // and https://www.ietf.org/rfc/rfc2279.txt - // and https://tools.ietf.org/html/rfc3629 - var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 0xC0 | (u >> 6); - heap[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 0xE0 | (u >> 12); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } else { - if (outIdx + 3 >= endIdx) break; - if (u > 0x10FFFF) warnOnce('Invalid Unicode code point ' + ptrToString(u) + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).'); - heap[outIdx++] = 0xF0 | (u >> 18); - heap[outIdx++] = 0x80 | ((u >> 12) & 63); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } - } - // Null-terminate the pointer to the buffer. - heap[outIdx] = 0; - return outIdx - startIdx; -} - -/** - * Copies the given Javascript String object 'str' to the emscripten HEAP at - * address 'outPtr', null-terminated and encoded in UTF8 form. The copy will - * require at most str.length*4+1 bytes of space in the HEAP. - * Use the function lengthBytesUTF8 to compute the exact number of bytes - * (excluding null terminator) that this function will write. - * - * @return {number} The number of bytes written, EXCLUDING the null terminator. - */ -function stringToUTF8(str, outPtr, maxBytesToWrite) { - assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); -} - -/** - * Returns the number of bytes the given Javascript string takes if encoded as a - * UTF8 byte array, EXCLUDING the null terminator byte. - * - * @param {string} str - JavaScript string to operator on - * @return {number} Length, in bytes, of the UTF8 encoded string. - */ -function lengthBytesUTF8(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var c = str.charCodeAt(i); // possibly a lead surrogate - if (c <= 0x7F) { - len++; - } else if (c <= 0x7FF) { - len += 2; - } else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; ++i; - } else { - len += 3; - } - } - return len; -} - -// end include: runtime_strings.js -// Memory management - -var HEAP, -/** @type {!Int8Array} */ - HEAP8, -/** @type {!Uint8Array} */ - HEAPU8, -/** @type {!Int16Array} */ - HEAP16, -/** @type {!Uint16Array} */ - HEAPU16, -/** @type {!Int32Array} */ - HEAP32, -/** @type {!Uint32Array} */ - HEAPU32, -/** @type {!Float32Array} */ - HEAPF32, -/** @type {!Float64Array} */ - HEAPF64; - -function updateMemoryViews() { - var b = wasmMemory.buffer; - Module['HEAP8'] = HEAP8 = new Int8Array(b); - Module['HEAP16'] = HEAP16 = new Int16Array(b); - Module['HEAP32'] = HEAP32 = new Int32Array(b); - Module['HEAPU8'] = HEAPU8 = new Uint8Array(b); - Module['HEAPU16'] = HEAPU16 = new Uint16Array(b); - Module['HEAPU32'] = HEAPU32 = new Uint32Array(b); - Module['HEAPF32'] = HEAPF32 = new Float32Array(b); - Module['HEAPF64'] = HEAPF64 = new Float64Array(b); -} - -var STACK_SIZE = 65536; -if (Module['STACK_SIZE']) assert(STACK_SIZE === Module['STACK_SIZE'], 'the stack size can no longer be determined at runtime') - -var INITIAL_MEMORY = Module['INITIAL_MEMORY'] || 16777216;legacyModuleProp('INITIAL_MEMORY', 'INITIAL_MEMORY'); - -assert(INITIAL_MEMORY >= STACK_SIZE, 'INITIAL_MEMORY should be larger than STACK_SIZE, was ' + INITIAL_MEMORY + '! (STACK_SIZE=' + STACK_SIZE + ')'); - -// check for full engine support (use string 'subarray' to avoid closure compiler confusion) -assert(typeof Int32Array != 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, - 'JS engine does not provide full typed array support'); - -// If memory is defined in wasm, the user can't provide it. -assert(!Module['wasmMemory'], 'Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally'); -assert(INITIAL_MEMORY == 16777216, 'Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically'); - -// include: runtime_init_table.js -// In regular non-RELOCATABLE mode the table is exported -// from the wasm module and this will be assigned once -// the exports are available. -var wasmTable; - -// end include: runtime_init_table.js -// include: runtime_stack_check.js - - -// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. -function writeStackCookie() { - var max = _emscripten_stack_get_end(); - assert((max & 3) == 0); - // If the stack ends at address zero we write our cookies 4 bytes into the - // stack. This prevents interference with the (separate) address-zero check - // below. - if (max == 0) { - max += 4; - } - // The stack grow downwards towards _emscripten_stack_get_end. - // We write cookies to the final two words in the stack and detect if they are - // ever overwritten. - HEAPU32[((max)>>2)] = 0x2135467; - HEAPU32[(((max)+(4))>>2)] = 0x89BACDFE; - // Also test the global address 0 for integrity. - HEAPU32[0] = 0x63736d65; /* 'emsc' */ -} - -function checkStackCookie() { - if (ABORT) return; - var max = _emscripten_stack_get_end(); - // See writeStackCookie(). - if (max == 0) { - max += 4; - } - var cookie1 = HEAPU32[((max)>>2)]; - var cookie2 = HEAPU32[(((max)+(4))>>2)]; - if (cookie1 != 0x2135467 || cookie2 != 0x89BACDFE) { - abort('Stack overflow! Stack cookie has been overwritten at ' + ptrToString(max) + ', expected hex dwords 0x89BACDFE and 0x2135467, but received ' + ptrToString(cookie2) + ' ' + ptrToString(cookie1)); - } - // Also test the global address 0 for integrity. - if (HEAPU32[0] !== 0x63736d65 /* 'emsc' */) { - abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); - } -} - -// end include: runtime_stack_check.js -// include: runtime_assertions.js - - -// Endianness check -(function() { - var h16 = new Int16Array(1); - var h8 = new Int8Array(h16.buffer); - h16[0] = 0x6373; - if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)'; -})(); - -// end include: runtime_assertions.js -var __ATPRERUN__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the main() is called - -var runtimeInitialized = false; - -function keepRuntimeAlive() { - return noExitRuntime; -} - -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 initRuntime() { - assert(!runtimeInitialized); - runtimeInitialized = true; - - checkStackCookie(); - - SOCKFS.root = FS.mount(SOCKFS, {}, null); - -if (!Module["noFSInit"] && !FS.init.initialized) - FS.init(); -FS.ignorePermissions = false; - -TTY.init(); - callRuntimeCallbacks(__ATINIT__); -} - -function postRun() { - checkStackCookie(); - - 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); -} - -function addOnInit(cb) { - __ATINIT__.unshift(cb); -} - -function addOnExit(cb) { -} - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} - -// include: runtime_math.js - - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc - -assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); - -// end include: runtime_math.js -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// Module.preRun (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled -var runDependencyTracking = {}; - -function getUniqueRunDependency(id) { - var orig = id; - while (1) { - if (!runDependencyTracking[id]) return id; - id = orig + Math.random(); - } -} - -function addRunDependency(id) { - runDependencies++; - - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - - if (id) { - assert(!runDependencyTracking[id]); - runDependencyTracking[id] = 1; - if (runDependencyWatcher === null && typeof setInterval != 'undefined') { - // Check for missing dependencies every few seconds - runDependencyWatcher = setInterval(function() { - if (ABORT) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - return; - } - var shown = false; - for (var dep in runDependencyTracking) { - if (!shown) { - shown = true; - err('still waiting on run dependencies:'); - } - err('dependency: ' + dep); - } - if (shown) { - err('(end of list)'); - } - }, 10000); - } - } else { - err('warning: run dependency added without ID'); - } -} - -function removeRunDependency(id) { - runDependencies--; - - if (Module['monitorRunDependencies']) { - Module['monitorRunDependencies'](runDependencies); - } - - if (id) { - assert(runDependencyTracking[id]); - delete runDependencyTracking[id]; - } else { - err('warning: run dependency removed without ID'); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} - -/** @param {string|number=} what */ -function abort(what) { - if (Module['onAbort']) { - Module['onAbort'](what); - } - - what = 'Aborted(' + what + ')'; - // TODO(sbc): Should we remove printing and leave it up to whoever - // catches the exception? - err(what); - - ABORT = true; - EXITSTATUS = 1; - - // Use a wasm runtime error, because a JS error might be seen as a foreign - // exception, which means we'd run destructors on it. We need the error to - // simply make the program stop. - // FIXME This approach does not work in Wasm EH because it currently does not assume - // all RuntimeErrors are from traps; it decides whether a RuntimeError is from - // a trap or not based on a hidden field within the object. So at the moment - // we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that - // allows this in the wasm spec. - - // Suppress closure compiler warning here. Closure compiler's builtin extern - // defintion for WebAssembly.RuntimeError claims it takes no arguments even - // though it can. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed. - /** @suppress {checkTypes} */ - var e = new WebAssembly.RuntimeError(what); - - readyPromiseReject(e); - // Throw the error whether or not MODULARIZE is set because abort is used - // in code paths apart from instantiation where an exception is expected - // to be thrown when abort is called. - throw e; -} - -// {{MEM_INITIALIZER}} - -// include: memoryprofiler.js - - -// end include: memoryprofiler.js -// include: URIUtils.js - - -// Prefix of data URIs emitted by SINGLE_FILE and related options. -var dataURIPrefix = 'data:application/octet-stream;base64,'; - -// Indicates whether filename is a base64 data URI. -function isDataURI(filename) { - // Prefix of data URIs emitted by SINGLE_FILE and related options. - return filename.startsWith(dataURIPrefix); -} - -// Indicates whether filename is delivered via file protocol (as opposed to http/https) -function isFileURI(filename) { - return filename.startsWith('file://'); -} - -// end include: URIUtils.js -/** @param {boolean=} fixedasm */ -function createExportWrapper(name, fixedasm) { - return function() { - var displayName = name; - var asm = fixedasm; - if (!fixedasm) { - asm = Module['asm']; - } - assert(runtimeInitialized, 'native function `' + displayName + '` called before runtime initialization'); - if (!asm[name]) { - assert(asm[name], 'exported native function `' + displayName + '` not found'); - } - return asm[name].apply(null, arguments); - }; -} - -var wasmBinaryFile; -if (Module['locateFile']) { - wasmBinaryFile = 'rhino3dm.wasm'; - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); - } -} else { - // Use bundler-friendly `new URL(..., import.meta.url)` pattern; works in browsers too. - wasmBinaryFile = new URL('rhino3dm.wasm', import.meta.url).href; -} - -function getBinary(file) { - try { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - if (readBinary) { - return readBinary(file); - } - throw "both async and sync fetching of the wasm failed"; - } - catch (err) { - abort(err); - } -} - -function getBinaryPromise() { - // If we don't have the binary yet, try to to load it asynchronously. - // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. - // See https://github.com/github/fetch/pull/92#issuecomment-140665932 - // Cordova or Electron apps are typically loaded from a file:// url. - // So use fetch if it is available and the url is not a file, otherwise fall back to XHR. - if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' - && !isFileURI(wasmBinaryFile) - ) { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { - if (!response['ok']) { - throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; - } - return response['arrayBuffer'](); - }).catch(function () { - return getBinary(wasmBinaryFile); - }); - } - else { - if (readAsync) { - // fetch is not available or url is file => try XHR (readAsync uses XHR internally) - return new Promise(function(resolve, reject) { - readAsync(wasmBinaryFile, function(response) { resolve(new Uint8Array(/** @type{!ArrayBuffer} */(response))) }, reject) - }); - } - } - } - - // Otherwise, getBinary should be able to get it synchronously - return Promise.resolve().then(function() { return getBinary(wasmBinaryFile); }); -} - -// Create the wasm instance. -// Receives the wasm imports, returns the exports. -function createWasm() { - // prepare imports - var info = { - 'env': asmLibraryArg, - 'wasi_snapshot_preview1': asmLibraryArg, - }; - // Load the wasm module and create an instance of using native support in the JS engine. - // handle a generated wasm instance, receiving its exports and - // performing other necessary setup - /** @param {WebAssembly.Module=} module*/ - function receiveInstance(instance, module) { - var exports = instance.exports; - - Module['asm'] = exports; - - wasmMemory = Module['asm']['memory']; - assert(wasmMemory, "memory not found in wasm exports"); - // This assertion doesn't hold when emscripten is run in --post-link - // mode. - // TODO(sbc): Read INITIAL_MEMORY out of the wasm file in post-link mode. - //assert(wasmMemory.buffer.byteLength === 16777216); - updateMemoryViews(); - - wasmTable = Module['asm']['__indirect_function_table']; - assert(wasmTable, "table not found in wasm exports"); - - addOnInit(Module['asm']['__wasm_call_ctors']); - - removeRunDependency('wasm-instantiate'); - - } - // wait for the pthread pool (if any) - addRunDependency('wasm-instantiate'); - - // Prefer streaming instantiation if available. - // Async compilation can be confusing when an error on the page overwrites Module - // (for example, if the order of elements is wrong, and the one defining Module is - // later), so we save Module and check it later. - var trueModule = Module; - function receiveInstantiationResult(result) { - // 'result' is a ResultObject object which has both the module and instance. - // receiveInstance() will swap in the exports (to Module.asm) so they can be called - assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); - trueModule = null; - // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. - // When the regression is fixed, can restore the above USE_PTHREADS-enabled path. - receiveInstance(result['instance']); - } - - function instantiateArrayBuffer(receiver) { - return getBinaryPromise().then(function(binary) { - return WebAssembly.instantiate(binary, info); - }).then(function (instance) { - return instance; - }).then(receiver, function(reason) { - err('failed to asynchronously prepare wasm: ' + reason); - - // Warn on some common problems. - if (isFileURI(wasmBinaryFile)) { - err('warning: Loading from a file URI (' + wasmBinaryFile + ') is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing'); - } - abort(reason); - }); - } - - function instantiateAsync() { - if (!wasmBinary && - typeof WebAssembly.instantiateStreaming == 'function' && - !isDataURI(wasmBinaryFile) && - // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. - !isFileURI(wasmBinaryFile) && - // Avoid instantiateStreaming() on Node.js environment for now, as while - // Node.js v18.1.0 implements it, it does not have a full fetch() - // implementation yet. - // - // Reference: - // https://github.com/emscripten-core/emscripten/pull/16917 - !ENVIRONMENT_IS_NODE && - typeof fetch == 'function') { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { - // Suppress closure warning here since the upstream definition for - // instantiateStreaming only allows Promise rather than - // an actual Response. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure is fixed. - /** @suppress {checkTypes} */ - var result = WebAssembly.instantiateStreaming(response, info); - - return result.then( - receiveInstantiationResult, - function(reason) { - // We expect the most common failure cause to be a bad MIME type for the binary, - // in which case falling back to ArrayBuffer instantiation should work. - err('wasm streaming compile failed: ' + reason); - err('falling back to ArrayBuffer instantiation'); - return instantiateArrayBuffer(receiveInstantiationResult); - }); - }); - } else { - return instantiateArrayBuffer(receiveInstantiationResult); - } - } - - // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback - // to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel - // to any other async startup actions they are performing. - // Also pthreads and wasm workers initialize the wasm instance through this path. - if (Module['instantiateWasm']) { - try { - var exports = Module['instantiateWasm'](info, receiveInstance); - return exports; - } catch(e) { - err('Module.instantiateWasm callback failed with error: ' + e); - // If instantiation fails, reject the module ready promise. - readyPromiseReject(e); - } - } - - // If instantiation fails, reject the module ready promise. - instantiateAsync().catch(readyPromiseReject); - return {}; // no exports yet; we'll fill them in later -} - -// Globals used by JS i64 conversions (see makeSetValue) -var tempDouble; -var tempI64; - -// === Body === - -var ASM_CONSTS = { - -}; - - - - - - /** @constructor */ - function ExitStatus(status) { - this.name = 'ExitStatus'; - this.message = 'Program terminated with exit(' + status + ')'; - this.status = status; - } - - function callRuntimeCallbacks(callbacks) { - while (callbacks.length > 0) { - // Pass the module as the first argument. - callbacks.shift()(Module); - } - } - - - /** - * @param {number} ptr - * @param {string} type - */ - function getValue(ptr, type = 'i8') { - if (type.endsWith('*')) type = '*'; - 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)]; - case '*': return HEAPU32[((ptr)>>2)]; - default: abort('invalid type for getValue: ' + type); - } - return null; - } - - function ptrToString(ptr) { - assert(typeof ptr === 'number'); - return '0x' + ptr.toString(16).padStart(8, '0'); - } - - - /** - * @param {number} ptr - * @param {number} value - * @param {string} type - */ - function setValue(ptr, value, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': HEAP8[((ptr)>>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.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>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; - case '*': HEAPU32[((ptr)>>2)] = value; break; - default: abort('invalid type for setValue: ' + type); - } - } - - function warnOnce(text) { - if (!warnOnce.shown) warnOnce.shown = {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - if (ENVIRONMENT_IS_NODE) text = 'warning: ' + text; - err(text); - } - } - - function ___assert_fail(condition, filename, line, func) { - abort('Assertion failed: ' + UTF8ToString(condition) + ', at: ' + [filename ? UTF8ToString(filename) : 'unknown filename', line, func ? UTF8ToString(func) : 'unknown function']); - } - - /** @constructor */ - function ExceptionInfo(excPtr) { - this.excPtr = excPtr; - this.ptr = excPtr - 24; - - this.set_type = function(type) { - HEAPU32[(((this.ptr)+(4))>>2)] = type; - }; - - this.get_type = function() { - return HEAPU32[(((this.ptr)+(4))>>2)]; - }; - - this.set_destructor = function(destructor) { - HEAPU32[(((this.ptr)+(8))>>2)] = destructor; - }; - - this.get_destructor = function() { - return HEAPU32[(((this.ptr)+(8))>>2)]; - }; - - this.set_refcount = function(refcount) { - HEAP32[((this.ptr)>>2)] = refcount; - }; - - this.set_caught = function (caught) { - caught = caught ? 1 : 0; - HEAP8[(((this.ptr)+(12))>>0)] = caught; - }; - - this.get_caught = function () { - return HEAP8[(((this.ptr)+(12))>>0)] != 0; - }; - - this.set_rethrown = function (rethrown) { - rethrown = rethrown ? 1 : 0; - HEAP8[(((this.ptr)+(13))>>0)] = rethrown; - }; - - this.get_rethrown = function () { - return HEAP8[(((this.ptr)+(13))>>0)] != 0; - }; - - // Initialize native structure fields. Should be called once after allocated. - this.init = function(type, destructor) { - this.set_adjusted_ptr(0); - this.set_type(type); - this.set_destructor(destructor); - this.set_refcount(0); - this.set_caught(false); - this.set_rethrown(false); - } - - this.add_ref = function() { - var value = HEAP32[((this.ptr)>>2)]; - HEAP32[((this.ptr)>>2)] = value + 1; - }; - - // Returns true if last reference released. - this.release_ref = function() { - var prev = HEAP32[((this.ptr)>>2)]; - HEAP32[((this.ptr)>>2)] = prev - 1; - assert(prev > 0); - return prev === 1; - }; - - this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(((this.ptr)+(16))>>2)] = adjustedPtr; - }; - - this.get_adjusted_ptr = function() { - return HEAPU32[(((this.ptr)+(16))>>2)]; - }; - - // Get pointer which is expected to be received by catch clause in C++ code. It may be adjusted - // when the pointer is casted to some of the exception object base classes (e.g. when virtual - // inheritance is used). When a pointer is thrown this method should return the thrown pointer - // itself. - this.get_exception_ptr = function() { - // Work around a fastcomp bug, this code is still included for some reason in a build without - // exceptions support. - var isPointer = ___cxa_is_pointer_type(this.get_type()); - if (isPointer) { - return HEAPU32[((this.excPtr)>>2)]; - } - var adjusted = this.get_adjusted_ptr(); - if (adjusted !== 0) return adjusted; - return this.excPtr; - }; - } - - var exceptionLast = 0; - - var uncaughtExceptionCount = 0; - function ___cxa_throw(ptr, type, destructor) { - var info = new ExceptionInfo(ptr); - // Initialize ExceptionInfo content after it was allocated in __cxa_allocate_exception. - info.init(type, destructor); - exceptionLast = ptr; - uncaughtExceptionCount++; - throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch."; - } - - function getRandomDevice() { - if (typeof crypto == 'object' && typeof crypto['getRandomValues'] == 'function') { - // for modern web browsers - var randomBuffer = new Uint8Array(1); - return () => { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; - } else - if (ENVIRONMENT_IS_NODE) { - // for nodejs with or without crypto support included - try { - var crypto_module = require('crypto'); - // nodejs has crypto support - return () => crypto_module['randomBytes'](1)[0]; - } catch (e) { - // nodejs doesn't have crypto support - } - } - // we couldn't find a proper implementation, as Math.random() is not suitable for /dev/random, see emscripten-core/emscripten/pull/7096 - return () => abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); - } - - var PATH = {isAbs:(path) => path.charAt(0) === '/',splitPath:(filename) => { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - },normalizeArray:(parts, allowAboveRoot) => { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up; up--) { - parts.unshift('..'); - } - } - return parts; - },normalize:(path) => { - var isAbsolute = PATH.isAbs(path), - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - path = PATH.normalizeArray(path.split('/').filter((p) => !!p), !isAbsolute).join('/'); - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - return (isAbsolute ? '/' : '') + path; - },dirname:(path) => { - var result = PATH.splitPath(path), - root = result[0], - dir = result[1]; - if (!root && !dir) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - },basename:(path) => { - // EMSCRIPTEN return '/'' for '/', not an empty string - if (path === '/') return '/'; - path = PATH.normalize(path); - path = path.replace(/\/$/, ""); - var lastSlash = path.lastIndexOf('/'); - if (lastSlash === -1) return path; - return path.substr(lastSlash+1); - },join:function() { - var paths = Array.prototype.slice.call(arguments); - return PATH.normalize(paths.join('/')); - },join2:(l, r) => { - return PATH.normalize(l + '/' + r); - }}; - - - var PATH_FS = {resolve:function() { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? arguments[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path != 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - return ''; // an invalid portion invalidates the whole thing - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = PATH.isAbs(path); - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter((p) => !!p), !resolvedAbsolute).join('/'); - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; - },relative:(from, to) => { - from = PATH_FS.resolve(from).substr(1); - to = PATH_FS.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (; start < arr.length; start++) { - if (arr[start] !== '') break; - } - var end = arr.length - 1; - for (; end >= 0; end--) { - if (arr[end] !== '') break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split('/')); - var toParts = trim(to.split('/')); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..'); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join('/'); - }}; - - - /** @type {function(string, boolean=, number=)} */ - 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; - } - var TTY = {ttys:[],init:function () { - // https://github.com/emscripten-core/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process['stdin']['setEncoding']('utf8'); - // } - },shutdown:function() { - // https://github.com/emscripten-core/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process['stdin']['pause'](); - // } - },register:function(dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - },stream_ops:{open:function(stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(43); - } - stream.tty = tty; - stream.seekable = false; - },close:function(stream) { - // flush any pending line data - stream.tty.ops.fsync(stream.tty); - },fsync:function(stream) { - stream.tty.ops.fsync(stream.tty); - },read:function(stream, buffer, offset, length, pos /* ignored */) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(60); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - },write:function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(60); - } - try { - for (var i = 0; i < length; i++) { - stream.tty.ops.put_char(stream.tty, buffer[offset+i]); - } - } catch (e) { - throw new FS.ErrnoError(29); - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - }},default_tty_ops:{get_char:function(tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - // we will read data by chunks of BUFSIZE - var BUFSIZE = 256; - var buf = Buffer.alloc(BUFSIZE); - var bytesRead = 0; - - try { - bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, -1); - } catch(e) { - // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes, - // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0. - if (e.toString().includes('EOF')) bytesRead = 0; - else throw e; - } - - if (bytesRead > 0) { - result = buf.slice(0, bytesRead).toString('utf-8'); - } else { - result = null; - } - } else - if (typeof window != 'undefined' && - typeof window.prompt == 'function') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - },put_char:function(tty, val) { - if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. - } - },fsync:function(tty) { - if (tty.output && tty.output.length > 0) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }},default_tty1_ops:{put_char:function(tty, val) { - if (val === null || val === 10) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); - } - },fsync:function(tty) { - if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }}}; - - - function zeroMemory(address, size) { - HEAPU8.fill(0, address, address + size); - return address; - } - - function alignMemory(size, alignment) { - assert(alignment, "alignment argument is required"); - return Math.ceil(size / alignment) * alignment; - } - function mmapAlloc(size) { - abort('internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported'); - } - var MEMFS = {ops_table:null,mount:function(mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createNode:function(parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(63); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap, - msync: MEMFS.stream_ops.msync - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - } - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity. - // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred - // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size - // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. - node.contents = null; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - parent.timestamp = node.timestamp; - } - return node; - },getFileDataAsTypedArray:function(node) { - if (!node.contents) return new Uint8Array(0); - if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. - return new Uint8Array(node.contents); - },expandFileStorage:function(node, newCapacity) { - var prevCapacity = node.contents ? node.contents.length : 0; - if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. - // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. - // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to - // avoid overshooting the allocation cap by a very large margin. - var CAPACITY_DOUBLING_MAX = 1024 * 1024; - newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) >>> 0); - if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. - var oldContents = node.contents; - node.contents = new Uint8Array(newCapacity); // Allocate new storage. - if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. - },resizeFileStorage:function(node, newSize) { - if (node.usedBytes == newSize) return; - if (newSize == 0) { - node.contents = null; // Fully decommit when requesting a resize to zero. - node.usedBytes = 0; - } else { - var oldContents = node.contents; - node.contents = new Uint8Array(newSize); // Allocate new storage. - if (oldContents) { - node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. - } - node.usedBytes = newSize; - } - },node_ops:{getattr:function(node) { - var attr = {}; - // device numbers reuse inode numbers. - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.usedBytes; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - },setattr:function(node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.resizeFileStorage(node, attr.size); - } - },lookup:function(parent, name) { - throw FS.genericErrors[44]; - },mknod:function(parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - },rename:function(old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - } - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(55); - } - } - } - // do the internal rewiring - delete old_node.parent.contents[old_node.name]; - old_node.parent.timestamp = Date.now() - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - new_dir.timestamp = old_node.parent.timestamp; - old_node.parent = new_dir; - },unlink:function(parent, name) { - delete parent.contents[name]; - parent.timestamp = Date.now(); - },rmdir:function(parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(55); - } - delete parent.contents[name]; - parent.timestamp = Date.now(); - },readdir:function(node) { - var entries = ['.', '..']; - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - },symlink:function(parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - },readlink:function(node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(28); - } - return node.link; - }},stream_ops:{read:function(stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= stream.node.usedBytes) return 0; - var size = Math.min(stream.node.usedBytes - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - buffer.set(contents.subarray(position, position + size), offset); - } else { - for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; - } - return size; - },write:function(stream, buffer, offset, length, position, canOwn) { - // The data buffer should be a typed array view - assert(!(buffer instanceof ArrayBuffer)); - // If the buffer is located in main memory (HEAP), and if - // memory can grow, we can't hold on to references of the - // memory buffer, as they may get invalidated. That means we - // need to do copy its contents. - if (buffer.buffer === HEAP8.buffer) { - canOwn = false; - } - - if (!length) return 0; - var node = stream.node; - node.timestamp = Date.now(); - - if (buffer.subarray && (!node.contents || node.contents.subarray)) { // This write is from a typed array to a typed array? - if (canOwn) { - assert(position === 0, 'canOwn must imply no weird position inside the file'); - node.contents = buffer.subarray(offset, offset + length); - node.usedBytes = length; - return length; - } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. - node.contents = buffer.slice(offset, offset + length); - node.usedBytes = length; - return length; - } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? - node.contents.set(buffer.subarray(offset, offset + length), position); - return length; - } - } - - // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. - MEMFS.expandFileStorage(node, position+length); - if (node.contents.subarray && buffer.subarray) { - // Use typed array write which is available. - node.contents.set(buffer.subarray(offset, offset + length), position); - } else { - for (var i = 0; i < length; i++) { - node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. - } - } - node.usedBytes = Math.max(node.usedBytes, position + length); - return length; - },llseek:function(stream, offset, whence) { - var position = offset; - if (whence === 1) { - position += stream.position; - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - position += stream.node.usedBytes; - } - } - if (position < 0) { - throw new FS.ErrnoError(28); - } - return position; - },allocate:function(stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length); - stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); - },mmap:function(stream, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - var ptr; - var allocated; - var contents = stream.node.contents; - // Only make a new copy when MAP_PRIVATE is specified. - if (!(flags & 2) && contents.buffer === HEAP8.buffer) { - // We can't emulate MAP_SHARED when the file is not backed by the - // buffer we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = mmapAlloc(length); - if (!ptr) { - throw new FS.ErrnoError(48); - } - HEAP8.set(contents, ptr); - } - return { ptr: ptr, allocated: allocated }; - },msync:function(stream, buffer, offset, length, mmapFlags) { - MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); - // should we check if bytesWritten and length are the same? - return 0; - }}}; - - /** @param {boolean=} noRunDep */ - function asyncLoad(url, onload, onerror, noRunDep) { - var dep = !noRunDep ? getUniqueRunDependency('al ' + url) : ''; - readAsync(url, (arrayBuffer) => { - assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); - onload(new Uint8Array(arrayBuffer)); - if (dep) removeRunDependency(dep); - }, (event) => { - if (onerror) { - onerror(); - } else { - throw 'Loading data file "' + url + '" failed.'; - } - }); - if (dep) addRunDependency(dep); - } - - - var ERRNO_MESSAGES = {0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"}; - - var ERRNO_CODES = {}; - - function withStackSave(f) { - var stack = stackSave(); - var ret = f(); - stackRestore(stack); - return ret; - } - function demangle(func) { - warnOnce('warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling'); - return func; - } - function demangleAll(text) { - var regex = - /\b_Z[\w\d_]+/g; - return text.replace(regex, - function(x) { - var y = demangle(x); - return x === y ? x : (y + ' [' + x + ']'); - }); - } - var FS = {root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path, opts = {}) => { - path = PATH_FS.resolve(path); - - if (!path) return { path: '', node: null }; - - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - opts = Object.assign(defaults, opts) - - if (opts.recurse_count > 8) { // max recursive lookup of 8 - throw new FS.ErrnoError(32); - } - - // split the absolute path - var parts = path.split('/').filter((p) => !!p); - - // start at the root - var current = FS.root; - var current_path = '/'; - - for (var i = 0; i < parts.length; i++) { - var islast = (i === parts.length-1); - if (islast && opts.parent) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH_FS.resolve(PATH.dirname(current_path), link); - - var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 }); - current = lookup.node; - - if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - throw new FS.ErrnoError(32); - } - } - } - } - - return { path: current_path, node: current }; - },getPath:(node) => { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; - } - path = path ? node.name + '/' + path : node.name; - node = node.parent; - } - },hashName:(parentid, name) => { - var hash = 0; - - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; - } - return ((parentid + hash) >>> 0) % FS.nameTable.length; - },hashAddNode:(node) => { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - },hashRemoveNode:(node) => { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - },lookupNode:(parent, name) => { - var errCode = FS.mayLookup(parent); - if (errCode) { - throw new FS.ErrnoError(errCode, parent); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - },createNode:(parent, name, mode, rdev) => { - assert(typeof parent == 'object') - var node = new FS.FSNode(parent, name, mode, rdev); - - FS.hashAddNode(node); - - return node; - },destroyNode:(node) => { - FS.hashRemoveNode(node); - },isRoot:(node) => { - return node === node.parent; - },isMountpoint:(node) => { - return !!node.mounted; - },isFile:(mode) => { - return (mode & 61440) === 32768; - },isDir:(mode) => { - return (mode & 61440) === 16384; - },isLink:(mode) => { - return (mode & 61440) === 40960; - },isChrdev:(mode) => { - return (mode & 61440) === 8192; - },isBlkdev:(mode) => { - return (mode & 61440) === 24576; - },isFIFO:(mode) => { - return (mode & 61440) === 4096; - },isSocket:(mode) => { - return (mode & 49152) === 49152; - },flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:(str) => { - var flags = FS.flagModes[str]; - if (typeof flags == 'undefined') { - throw new Error('Unknown file open mode: ' + str); - } - return flags; - },flagsToPermissionString:(flag) => { - var perms = ['r', 'w', 'rw'][flag & 3]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - },nodePermissions:(node, perms) => { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - if (perms.includes('r') && !(node.mode & 292)) { - return 2; - } else if (perms.includes('w') && !(node.mode & 146)) { - return 2; - } else if (perms.includes('x') && !(node.mode & 73)) { - return 2; - } - return 0; - },mayLookup:(dir) => { - var errCode = FS.nodePermissions(dir, 'x'); - if (errCode) return errCode; - if (!dir.node_ops.lookup) return 2; - return 0; - },mayCreate:(dir, name) => { - try { - var node = FS.lookupNode(dir, name); - return 20; - } catch (e) { - } - return FS.nodePermissions(dir, 'wx'); - },mayDelete:(dir, name, isdir) => { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var errCode = FS.nodePermissions(dir, 'wx'); - if (errCode) { - return errCode; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return 54; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return 10; - } - } else { - if (FS.isDir(node.mode)) { - return 31; - } - } - return 0; - },mayOpen:(node, flags) => { - if (!node) { - return 44; - } - if (FS.isLink(node.mode)) { - return 32; - } else if (FS.isDir(node.mode)) { - if (FS.flagsToPermissionString(flags) !== 'r' || // opening for write - (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only) - return 31; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - },MAX_OPEN_FDS:4096,nextfd:(fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(33); - },getStream:(fd) => FS.streams[fd],createStream:(stream, fd_start, fd_end) => { - if (!FS.FSStream) { - FS.FSStream = /** @constructor */ function() { - this.shared = { }; - }; - FS.FSStream.prototype = {}; - Object.defineProperties(FS.FSStream.prototype, { - object: { - /** @this {FS.FSStream} */ - get: function() { return this.node; }, - /** @this {FS.FSStream} */ - set: function(val) { this.node = val; } - }, - isRead: { - /** @this {FS.FSStream} */ - get: function() { return (this.flags & 2097155) !== 1; } - }, - isWrite: { - /** @this {FS.FSStream} */ - get: function() { return (this.flags & 2097155) !== 0; } - }, - isAppend: { - /** @this {FS.FSStream} */ - get: function() { return (this.flags & 1024); } - }, - flags: { - /** @this {FS.FSStream} */ - get: function() { return this.shared.flags; }, - /** @this {FS.FSStream} */ - set: function(val) { this.shared.flags = val; }, - }, - position : { - /** @this {FS.FSStream} */ - get: function() { return this.shared.position; }, - /** @this {FS.FSStream} */ - set: function(val) { this.shared.position = val; }, - }, - }); - } - // clone it, so we can return an instance of FSStream - stream = Object.assign(new FS.FSStream(), stream); - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - },closeStream:(fd) => { - FS.streams[fd] = null; - },chrdev_stream_ops:{open:(stream) => { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - },llseek:() => { - throw new FS.ErrnoError(70); - }},major:(dev) => ((dev) >> 8),minor:(dev) => ((dev) & 0xff),makedev:(ma, mi) => ((ma) << 8 | (mi)),registerDevice:(dev, ops) => { - FS.devices[dev] = { stream_ops: ops }; - },getDevice:(dev) => FS.devices[dev],getMounts:(mount) => { - var mounts = []; - var check = [mount]; - - while (check.length) { - var m = check.pop(); - - mounts.push(m); - - check.push.apply(check, m.mounts); - } - - return mounts; - },syncfs:(populate, callback) => { - if (typeof populate == 'function') { - callback = populate; - populate = false; - } - - FS.syncFSRequests++; - - if (FS.syncFSRequests > 1) { - err('warning: ' + FS.syncFSRequests + ' FS.syncfs operations in flight at once, probably just doing extra work'); - } - - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - - function doCallback(errCode) { - assert(FS.syncFSRequests > 0); - FS.syncFSRequests--; - return callback(errCode); - } - - function done(errCode) { - if (errCode) { - if (!done.errored) { - done.errored = true; - return doCallback(errCode); - } - return; - } - if (++completed >= mounts.length) { - doCallback(null); - } - }; - - // sync all mounts - mounts.forEach((mount) => { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - },mount:(type, opts, mountpoint) => { - if (typeof type == 'string') { - // The filesystem was not included, and instead we have an error - // message stored in the variable. - throw type; - } - var root = mountpoint === '/'; - var pseudo = !mountpoint; - var node; - - if (root && FS.root) { - throw new FS.ErrnoError(10); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - mountpoint = lookup.path; // use the absolute path - node = lookup.node; - - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - } - - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - if (node.mount) { - node.mount.mounts.push(mount); - } - } - - return mountRoot; - },unmount:(mountpoint) => { - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); - - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(28); - } - - // destroy the nodes for this mount, and all its child mounts - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - - Object.keys(FS.nameTable).forEach((hash) => { - var current = FS.nameTable[hash]; - - while (current) { - var next = current.name_next; - - if (mounts.includes(current.mount)) { - FS.destroyNode(current); - } - - current = next; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - },lookup:(parent, name) => { - return parent.node_ops.lookup(parent, name); - },mknod:(path, mode, dev) => { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - if (!name || name === '.' || name === '..') { - throw new FS.ErrnoError(28); - } - var errCode = FS.mayCreate(parent, name); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.mknod(parent, name, mode, dev); - },create:(path, mode) => { - mode = mode !== undefined ? mode : 438 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - },mkdir:(path, mode) => { - mode = mode !== undefined ? mode : 511 /* 0777 */; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - },mkdirTree:(path, mode) => { - var dirs = path.split('/'); - var d = ''; - for (var i = 0; i < dirs.length; ++i) { - if (!dirs[i]) continue; - d += '/' + dirs[i]; - try { - FS.mkdir(d, mode); - } catch(e) { - if (e.errno != 20) throw e; - } - } - },mkdev:(path, mode, dev) => { - if (typeof dev == 'undefined') { - dev = mode; - mode = 438 /* 0666 */; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - },symlink:(oldpath, newpath) => { - if (!PATH_FS.resolve(oldpath)) { - throw new FS.ErrnoError(44); - } - var lookup = FS.lookupPath(newpath, { parent: true }); - var parent = lookup.node; - if (!parent) { - throw new FS.ErrnoError(44); - } - var newname = PATH.basename(newpath); - var errCode = FS.mayCreate(parent, newname); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.symlink(parent, newname, oldpath); - },rename:(old_path, new_path) => { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - // parents must exist - var lookup, old_dir, new_dir; - - // let the errors from non existant directories percolate up - lookup = FS.lookupPath(old_path, { parent: true }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { parent: true }); - new_dir = lookup.node; - - if (!old_dir || !new_dir) throw new FS.ErrnoError(44); - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(75); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH_FS.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(28); - } - // new path should not be an ancestor of the old path - relative = PATH_FS.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(55); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var errCode = FS.mayDelete(old_dir, old_name, isdir); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - errCode = new_node ? - FS.mayDelete(new_dir, new_name, isdir) : - FS.mayCreate(new_dir, new_name); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { - throw new FS.ErrnoError(10); - } - // if we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - errCode = FS.nodePermissions(old_dir, 'w'); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - FS.hashAddNode(old_node); - } - },rmdir:(path) => { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var errCode = FS.mayDelete(parent, name, true); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - },readdir:(path) => { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(54); - } - return node.node_ops.readdir(node); - },unlink:(path) => { - var lookup = FS.lookupPath(path, { parent: true }); - var parent = lookup.node; - if (!parent) { - throw new FS.ErrnoError(44); - } - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var errCode = FS.mayDelete(parent, name, false); - if (errCode) { - // According to POSIX, we should map EISDIR to EPERM, but - // we instead do what Linux does (and we must, as we use - // the musl linux libc). - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - },readlink:(path) => { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link) { - throw new FS.ErrnoError(44); - } - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(28); - } - return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); - },stat:(path, dontFollow) => { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - var node = lookup.node; - if (!node) { - throw new FS.ErrnoError(44); - } - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(63); - } - return node.node_ops.getattr(node); - },lstat:(path) => { - return FS.stat(path, true); - },chmod:(path, mode, dontFollow) => { - var node; - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now() - }); - },lchmod:(path, mode) => { - FS.chmod(path, mode, true); - },fchmod:(fd, mode) => { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - FS.chmod(stream.node, mode); - },chown:(path, uid, gid, dontFollow) => { - var node; - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - // we ignore the uid / gid for now - }); - },lchown:(path, uid, gid) => { - FS.chown(path, uid, gid, true); - },fchown:(fd, uid, gid) => { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - FS.chown(stream.node, uid, gid); - },truncate:(path, len) => { - if (len < 0) { - throw new FS.ErrnoError(28); - } - var node; - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: true }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(31); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(28); - } - var errCode = FS.nodePermissions(node, 'w'); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - },ftruncate:(fd, len) => { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(28); - } - FS.truncate(stream.node, len); - },utime:(path, atime, mtime) => { - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - },open:(path, flags, mode) => { - if (path === "") { - throw new FS.ErrnoError(44); - } - flags = typeof flags == 'string' ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode == 'undefined' ? 438 /* 0666 */ : mode; - if ((flags & 64)) { - mode = (mode & 4095) | 32768; - } else { - mode = 0; - } - var node; - if (typeof path == 'object') { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) { - // ignore - } - } - // perhaps we need to create the node - var created = false; - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(20); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - created = true; - } - } - if (!node) { - throw new FS.ErrnoError(44); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // if asked only for a directory, then this must be one - if ((flags & 65536) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - // check permissions, if this is not a file we just created now (it is ok to - // create and write to a file with read-only permissions; it is read-only - // for later use) - if (!created) { - var errCode = FS.mayOpen(node, flags); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - // do truncation if necessary - if ((flags & 512) && !created) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512 | 131072); - - // register the stream with the filesystem - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), // we want the absolute path to the node - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }); - // call the new stream's open function - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - } - } - return stream; - },close:(stream) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (stream.getdents) stream.getdents = null; // free readdir state - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - stream.fd = null; - },isClosed:(stream) => { - return stream.fd === null; - },llseek:(stream, offset, whence) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(70); - } - if (whence != 0 && whence != 1 && whence != 2) { - throw new FS.ErrnoError(28); - } - stream.position = stream.stream_ops.llseek(stream, offset, whence); - stream.ungotten = []; - return stream.position; - },read:(stream, buffer, offset, length, position) => { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(28); - } - var seeking = typeof position != 'undefined'; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - },write:(stream, buffer, offset, length, position, canOwn) => { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(28); - } - if (stream.seekable && stream.flags & 1024) { - // seek to the end before writing in append mode - FS.llseek(stream, 0, 2); - } - var seeking = typeof position != 'undefined'; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - return bytesWritten; - },allocate:(stream, offset, length) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(28); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(138); - } - stream.stream_ops.allocate(stream, offset, length); - },mmap:(stream, length, position, prot, flags) => { - // User requests writing to file (prot & PROT_WRITE != 0). - // Checking if we have permissions to write to the file unless - // MAP_PRIVATE flag is set. According to POSIX spec it is possible - // to write to file opened in read-only mode with MAP_PRIVATE flag, - // as all modifications will be visible only in the memory of - // the current process. - if ((prot & 2) !== 0 - && (flags & 2) === 0 - && (stream.flags & 2097155) !== 2) { - throw new FS.ErrnoError(2); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(2); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(43); - } - return stream.stream_ops.mmap(stream, length, position, prot, flags); - },msync:(stream, buffer, offset, length, mmapFlags) => { - if (!stream.stream_ops.msync) { - return 0; - } - return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); - },munmap:(stream) => 0,ioctl:(stream, cmd, arg) => { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(59); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - },readFile:(path, opts = {}) => { - opts.flags = opts.flags || 0; - opts.encoding = opts.encoding || 'binary'; - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === 'utf8') { - ret = UTF8ArrayToString(buf, 0); - } else if (opts.encoding === 'binary') { - ret = buf; - } - FS.close(stream); - return ret; - },writeFile:(path, data, opts = {}) => { - opts.flags = opts.flags || 577; - var stream = FS.open(path, opts.flags, opts.mode); - if (typeof data == 'string') { - var buf = new Uint8Array(lengthBytesUTF8(data)+1); - var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); - FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); - } else if (ArrayBuffer.isView(data)) { - FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); - } else { - throw new Error('Unsupported data type'); - } - FS.close(stream); - },cwd:() => FS.currentPath,chdir:(path) => { - var lookup = FS.lookupPath(path, { follow: true }); - if (lookup.node === null) { - throw new FS.ErrnoError(44); - } - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(54); - } - var errCode = FS.nodePermissions(lookup.node, 'x'); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - FS.currentPath = lookup.path; - },createDefaultDirectories:() => { - FS.mkdir('/tmp'); - FS.mkdir('/home'); - FS.mkdir('/home/web_user'); - },createDefaultDevices:() => { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: () => 0, - write: (stream, buffer, offset, length, pos) => length, - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using err() rather than out() - // so we register a second tty just for it. - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev('/dev/tty', FS.makedev(5, 0)); - FS.mkdev('/dev/tty1', FS.makedev(6, 0)); - // setup /dev/[u]random - var random_device = getRandomDevice(); - FS.createDevice('/dev', 'random', random_device); - FS.createDevice('/dev', 'urandom', random_device); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - },createSpecialDirectories:() => { - // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the - // name of the stream for fd 6 (see test_unistd_ttyname) - FS.mkdir('/proc'); - var proc_self = FS.mkdir('/proc/self'); - FS.mkdir('/proc/self/fd'); - FS.mount({ - mount: () => { - var node = FS.createNode(proc_self, 'fd', 16384 | 511 /* 0777 */, 73); - node.node_ops = { - lookup: (parent, name) => { - var fd = +name; - var stream = FS.getStream(fd); - if (!stream) throw new FS.ErrnoError(8); - var ret = { - parent: null, - mount: { mountpoint: 'fake' }, - node_ops: { readlink: () => stream.path }, - }; - ret.parent = ret; // make it look like a simple root node - return ret; - } - }; - return node; - } - }, {}, '/proc/self/fd'); - },createStandardStreams:() => { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']); - } else { - FS.symlink('/dev/tty', '/dev/stdin'); - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']); - } else { - FS.symlink('/dev/tty', '/dev/stdout'); - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']); - } else { - FS.symlink('/dev/tty1', '/dev/stderr'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 0); - var stdout = FS.open('/dev/stdout', 1); - var stderr = FS.open('/dev/stderr', 1); - assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); - assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); - assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); - },ensureErrnoError:() => { - if (FS.ErrnoError) return; - FS.ErrnoError = /** @this{Object} */ function ErrnoError(errno, node) { - this.node = node; - this.setErrno = /** @this{Object} */ function(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - }; - this.setErrno(errno); - this.message = ERRNO_MESSAGES[errno]; - - // Try to get a maximally helpful stack trace. On Node.js, getting Error.stack - // now ensures it shows what we want. - if (this.stack) { - // Define the stack property for Node.js 4, which otherwise errors on the next line. - Object.defineProperty(this, "stack", { value: (new Error).stack, writable: true }); - this.stack = demangleAll(this.stack); - } - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [44].forEach((code) => { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - },staticInit:() => { - FS.ensureErrnoError(); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - FS.createSpecialDirectories(); - - FS.filesystems = { - 'MEMFS': MEMFS, - }; - },init:(input, output, error) => { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - FS.ensureErrnoError(); - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - },quit:() => { - FS.init.initialized = false; - // force-flush all streams, so we get musl std streams printed out - _fflush(0); - // close all of our streams - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - },getMode:(canRead, canWrite) => { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - },findObject:(path, dontResolveLastLink) => { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (!ret.exists) { - return null; - } - return ret.object; - },analyzePath:(path, dontResolveLastLink) => { - // operate from within the context of the symlink's target - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - path = lookup.path; - } catch (e) { - } - var ret = { - isRoot: false, exists: false, error: 0, name: null, path: null, object: null, - parentExists: false, parentPath: null, parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { parent: true }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === '/'; - } catch (e) { - ret.error = e.errno; - }; - return ret; - },createPath:(parent, path, canRead, canWrite) => { - parent = typeof parent == 'string' ? parent : FS.getPath(parent); - var parts = path.split('/').reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) { - // ignore EEXIST - } - parent = current; - } - return current; - },createFile:(parent, name, properties, canRead, canWrite) => { - var path = PATH.join2(typeof parent == 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - },createDataFile:(parent, name, data, canRead, canWrite, canOwn) => { - var path = name; - if (parent) { - parent = typeof parent == 'string' ? parent : FS.getPath(parent); - path = name ? PATH.join2(parent, name) : parent; - } - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data == 'string') { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - // make sure we can write to the file - FS.chmod(node, mode | 146); - var stream = FS.open(node, 577); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - },createDevice:(parent, name, input, output) => { - var path = PATH.join2(typeof parent == 'string' ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open: (stream) => { - stream.seekable = false; - }, - close: (stream) => { - // flush any pending line data - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: (stream, buffer, offset, length, pos /* ignored */) => { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset+i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: (stream, buffer, offset, length, pos) => { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset+i]); - } catch (e) { - throw new FS.ErrnoError(29); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - },forceLoadFile:(obj) => { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - if (typeof XMLHttpRequest != 'undefined') { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (read_) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - obj.contents = intArrayFromString(read_(obj.url), true); - obj.usedBytes = obj.contents.length; - } catch (e) { - throw new FS.ErrnoError(29); - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.'); - } - },createLazyFile:(parent, name, url, canRead, canWrite) => { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. - /** @constructor */ - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - LazyUint8Array.prototype.get = /** @this{Object} */ function LazyUint8Array_get(idx) { - if (idx > this.length-1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = (idx / this.chunkSize)|0; - return this.getter(chunkNum)[chunkOffset]; - }; - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - }; - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - // Find length - var xhr = new XMLHttpRequest(); - xhr.open('HEAD', url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; - - var chunkSize = 1024*1024; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - var doXHR = (from, to) => { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - xhr.responseType = 'arraybuffer'; - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain; charset=x-user-defined'); - } - - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(/** @type{Array} */(xhr.response || [])); - } - return intArrayFromString(xhr.responseText || '', true); - }; - var lazyArray = this; - lazyArray.setDataGetter((chunkNum) => { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - if (typeof lazyArray.chunks[chunkNum] == 'undefined') { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof lazyArray.chunks[chunkNum] == 'undefined') throw new Error('doXHR failed!'); - return lazyArray.chunks[chunkNum]; - }); - - if (usesGzip || !datalength) { - // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length - chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file - datalength = this.getter(0).length; - chunkSize = datalength; - out("LazyFiles on gzip forces download of the whole file when length is accessed"); - } - - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - }; - if (typeof XMLHttpRequest != 'undefined') { - if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; - var lazyArray = new LazyUint8Array(); - Object.defineProperties(lazyArray, { - length: { - get: /** @this{Object} */ function() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }, - chunkSize: { - get: /** @this{Object} */ function() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - } - }); - - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // Add a function that defers querying the file size until it is asked the first time. - Object.defineProperties(node, { - usedBytes: { - get: /** @this {FSNode} */ function() { return this.contents.length; } - } - }); - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach((key) => { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - FS.forceLoadFile(node); - return fn.apply(null, arguments); - }; - }); - function writeChunks(stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= contents.length) - return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - } - // use a custom read function - stream_ops.read = (stream, buffer, offset, length, position) => { - FS.forceLoadFile(node); - return writeChunks(stream, buffer, offset, length, position) - }; - // use a custom mmap function - stream_ops.mmap = (stream, length, position, prot, flags) => { - FS.forceLoadFile(node); - var ptr = mmapAlloc(length); - if (!ptr) { - throw new FS.ErrnoError(48); - } - writeChunks(stream, HEAP8, ptr, length, position); - return { ptr: ptr, allocated: true }; - }; - node.stream_ops = stream_ops; - return node; - },createPreloadedFile:(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; - var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname - function processData(byteArray) { - function finish(byteArray) { - if (preFinish) preFinish(); - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency(dep); - } - if (Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { - if (onerror) onerror(); - removeRunDependency(dep); - })) { - return; - } - finish(byteArray); - } - addRunDependency(dep); - if (typeof url == 'string') { - asyncLoad(url, (byteArray) => processData(byteArray), onerror); - } else { - processData(url); - } - },indexedDB:() => { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - },DB_NAME:() => { - return 'EM_FS_' + window.location.pathname; - },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths, onload, onerror) => { - onload = onload || (() => {}); - onerror = onerror || (() => {}); - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = () => { - out('creating db'); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = () => { - var db = openRequest.result; - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach((path) => { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = () => { ok++; if (ok + fail == total) finish() }; - putRequest.onerror = () => { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },loadFilesFromDB:(paths, onload, onerror) => { - onload = onload || (() => {}); - onerror = onerror || (() => {}); - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; // no database to load from - openRequest.onsuccess = () => { - var db = openRequest.result; - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); - } catch(e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach((path) => { - var getRequest = files.get(path); - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = () => { fail++; if (ok + fail == total) finish() }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - },absolutePath:() => { - abort('FS.absolutePath has been removed; use PATH_FS.resolve instead'); - },createFolder:() => { - abort('FS.createFolder has been removed; use FS.mkdir instead'); - },createLink:() => { - abort('FS.createLink has been removed; use FS.symlink instead'); - },joinPath:() => { - abort('FS.joinPath has been removed; use PATH.join instead'); - },mmapAlloc:() => { - abort('FS.mmapAlloc has been replaced by the top level function mmapAlloc'); - },standardizePath:() => { - abort('FS.standardizePath has been removed; use PATH.normalize instead'); - }}; - var SOCKFS = {mount:function(mount) { - // If Module['websocket'] has already been defined (e.g. for configuring - // the subprotocol/url) use that, if not initialise it to a new object. - Module['websocket'] = (Module['websocket'] && - ('object' === typeof Module['websocket'])) ? Module['websocket'] : {}; - - // Add the Event registration mechanism to the exported websocket configuration - // object so we can register network callbacks from native JavaScript too. - // For more documentation see system/include/emscripten/emscripten.h - Module['websocket']._callbacks = {}; - Module['websocket']['on'] = /** @this{Object} */ function(event, callback) { - if ('function' === typeof callback) { - this._callbacks[event] = callback; - } - return this; - }; - - Module['websocket'].emit = /** @this{Object} */ function(event, param) { - if ('function' === typeof this._callbacks[event]) { - this._callbacks[event].call(this, param); - } - }; - - // If debug is enabled register simple default logging callbacks for each Event. - - return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - },createSocket:function(family, type, protocol) { - type &= ~526336; // Some applications may pass it; it makes no sense for a single process. - var streaming = type == 1; - if (streaming && protocol && protocol != 6) { - throw new FS.ErrnoError(66); // if SOCK_STREAM, must be tcp or 0. - } - - // create our internal socket structure - var sock = { - family: family, - type: type, - protocol: protocol, - server: null, - error: null, // Used in getsockopt for SOL_SOCKET/SO_ERROR test - peers: {}, - pending: [], - recv_queue: [], - sock_ops: SOCKFS.websocket_sock_ops - }; - - // create the filesystem node to store the socket structure - var name = SOCKFS.nextname(); - var node = FS.createNode(SOCKFS.root, name, 49152, 0); - node.sock = sock; - - // and the wrapping stream that enables library functions such - // as read and write to indirectly interact with the socket - var stream = FS.createStream({ - path: name, - node: node, - flags: 2, - seekable: false, - stream_ops: SOCKFS.stream_ops - }); - - // map the new stream to the socket structure (sockets have a 1:1 - // relationship with a stream) - sock.stream = stream; - - return sock; - },getSocket:function(fd) { - var stream = FS.getStream(fd); - if (!stream || !FS.isSocket(stream.node.mode)) { - return null; - } - return stream.node.sock; - },stream_ops:{poll:function(stream) { - var sock = stream.node.sock; - return sock.sock_ops.poll(sock); - },ioctl:function(stream, request, varargs) { - var sock = stream.node.sock; - return sock.sock_ops.ioctl(sock, request, varargs); - },read:function(stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - var msg = sock.sock_ops.recvmsg(sock, length); - if (!msg) { - // socket is closed - return 0; - } - buffer.set(msg.buffer, offset); - return msg.buffer.length; - },write:function(stream, buffer, offset, length, position /* ignored */) { - var sock = stream.node.sock; - return sock.sock_ops.sendmsg(sock, buffer, offset, length); - },close:function(stream) { - var sock = stream.node.sock; - sock.sock_ops.close(sock); - }},nextname:function() { - if (!SOCKFS.nextname.current) { - SOCKFS.nextname.current = 0; - } - return 'socket[' + (SOCKFS.nextname.current++) + ']'; - },websocket_sock_ops:{createPeer:function(sock, addr, port) { - var ws; - - if (typeof addr == 'object') { - ws = addr; - addr = null; - port = null; - } - - if (ws) { - // for sockets that've already connected (e.g. we're the server) - // we can inspect the _socket property for the address - if (ws._socket) { - addr = ws._socket.remoteAddress; - port = ws._socket.remotePort; - } - // if we're just now initializing a connection to the remote, - // inspect the url property - else { - var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url); - if (!result) { - throw new Error('WebSocket URL must be in the format ws(s)://address:port'); - } - addr = result[1]; - port = parseInt(result[2], 10); - } - } else { - // create the actual websocket object and connect - try { - // runtimeConfig gets set to true if WebSocket runtime configuration is available. - var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket'])); - - // The default value is 'ws://' the replace is needed because the compiler replaces '//' comments with '#' - // comments without checking context, so we'd end up with ws:#, the replace swaps the '#' for '//' again. - var url = 'ws:#'.replace('#', '//'); - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['url']) { - url = Module['websocket']['url']; // Fetch runtime WebSocket URL config. - } - } - - if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it. - var parts = addr.split('/'); - url = url + parts[0] + ":" + port + "/" + parts.slice(1).join('/'); - } - - // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set. - var subProtocols = 'binary'; // The default value is 'binary' - - if (runtimeConfig) { - if ('string' === typeof Module['websocket']['subprotocol']) { - subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config. - } - } - - // The default WebSocket options - var opts = undefined; - - if (subProtocols !== 'null') { - // The regex trims the string (removes spaces at the beginning and end, then splits the string by - // , into an Array. Whitespace removal is important for Websockify and ws. - subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */); - - opts = subProtocols; - } - - // some webservers (azure) does not support subprotocol header - if (runtimeConfig && null === Module['websocket']['subprotocol']) { - subProtocols = 'null'; - opts = undefined; - } - - // If node we use the ws library. - var WebSocketConstructor; - if (ENVIRONMENT_IS_NODE) { - WebSocketConstructor = /** @type{(typeof WebSocket)} */(require('ws')); - } else - { - WebSocketConstructor = WebSocket; - } - ws = new WebSocketConstructor(url, opts); - ws.binaryType = 'arraybuffer'; - } catch (e) { - throw new FS.ErrnoError(23); - } - } - - var peer = { - addr: addr, - port: port, - socket: ws, - dgram_send_queue: [] - }; - - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer); - - // if this is a bound dgram socket, send the port number first to allow - // us to override the ephemeral port reported to us by remotePort on the - // remote end. - if (sock.type === 2 && typeof sock.sport != 'undefined') { - peer.dgram_send_queue.push(new Uint8Array([ - 255, 255, 255, 255, - 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0), - ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff) - ])); - } - - return peer; - },getPeer:function(sock, addr, port) { - return sock.peers[addr + ':' + port]; - },addPeer:function(sock, peer) { - sock.peers[peer.addr + ':' + peer.port] = peer; - },removePeer:function(sock, peer) { - delete sock.peers[peer.addr + ':' + peer.port]; - },handlePeerEvents:function(sock, peer) { - var first = true; - - var handleOpen = function () { - - Module['websocket'].emit('open', sock.stream.fd); - - try { - var queued = peer.dgram_send_queue.shift(); - while (queued) { - peer.socket.send(queued); - queued = peer.dgram_send_queue.shift(); - } - } catch (e) { - // not much we can do here in the way of proper error handling as we've already - // lied and said this data was sent. shut it down. - peer.socket.close(); - } - }; - - function handleMessage(data) { - if (typeof data == 'string') { - var encoder = new TextEncoder(); // should be utf-8 - data = encoder.encode(data); // make a typed array from the string - } else { - assert(data.byteLength !== undefined); // must receive an ArrayBuffer - if (data.byteLength == 0) { - // An empty ArrayBuffer will emit a pseudo disconnect event - // as recv/recvmsg will return zero which indicates that a socket - // has performed a shutdown although the connection has not been disconnected yet. - return; - } - data = new Uint8Array(data); // make a typed array view on the array buffer - } - - // if this is the port message, override the peer's port with it - var wasfirst = first; - first = false; - if (wasfirst && - data.length === 10 && - data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && - data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) { - // update the peer's port and it's key in the peer map - var newport = ((data[8] << 8) | data[9]); - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - peer.port = newport; - SOCKFS.websocket_sock_ops.addPeer(sock, peer); - return; - } - - sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data }); - Module['websocket'].emit('message', sock.stream.fd); - }; - - if (ENVIRONMENT_IS_NODE) { - peer.socket.on('open', handleOpen); - peer.socket.on('message', function(data, isBinary) { - if (!isBinary) { - return; - } - handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer - }); - peer.socket.on('close', function() { - Module['websocket'].emit('close', sock.stream.fd); - }); - peer.socket.on('error', function(error) { - // Although the ws library may pass errors that may be more descriptive than - // ECONNREFUSED they are not necessarily the expected error code e.g. - // ENOTFOUND on getaddrinfo seems to be node.js specific, so using ECONNREFUSED - // is still probably the most useful thing to do. - sock.error = 14; // Used in getsockopt for SOL_SOCKET/SO_ERROR test. - Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'ECONNREFUSED: Connection refused']); - // don't throw - }); - } else { - peer.socket.onopen = handleOpen; - peer.socket.onclose = function() { - Module['websocket'].emit('close', sock.stream.fd); - }; - peer.socket.onmessage = function peer_socket_onmessage(event) { - handleMessage(event.data); - }; - peer.socket.onerror = function(error) { - // The WebSocket spec only allows a 'simple event' to be thrown on error, - // so we only really know as much as ECONNREFUSED. - sock.error = 14; // Used in getsockopt for SOL_SOCKET/SO_ERROR test. - Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'ECONNREFUSED: Connection refused']); - }; - } - },poll:function(sock) { - if (sock.type === 1 && sock.server) { - // listen sockets should only say they're available for reading - // if there are pending clients. - return sock.pending.length ? (64 | 1) : 0; - } - - var mask = 0; - var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets - SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : - null; - - if (sock.recv_queue.length || - !dest || // connection-less sockets are always ready to read - (dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed - mask |= (64 | 1); - } - - if (!dest || // connection-less sockets are always ready to write - (dest && dest.socket.readyState === dest.socket.OPEN)) { - mask |= 4; - } - - if ((dest && dest.socket.readyState === dest.socket.CLOSING) || - (dest && dest.socket.readyState === dest.socket.CLOSED)) { - mask |= 16; - } - - return mask; - },ioctl:function(sock, request, arg) { - switch (request) { - case 21531: - var bytes = 0; - if (sock.recv_queue.length) { - bytes = sock.recv_queue[0].data.length; - } - HEAP32[((arg)>>2)] = bytes; - return 0; - default: - return 28; - } - },close:function(sock) { - // if we've spawned a listen server, close it - if (sock.server) { - try { - sock.server.close(); - } catch (e) { - } - sock.server = null; - } - // close any peer connections - var peers = Object.keys(sock.peers); - for (var i = 0; i < peers.length; i++) { - var peer = sock.peers[peers[i]]; - try { - peer.socket.close(); - } catch (e) { - } - SOCKFS.websocket_sock_ops.removePeer(sock, peer); - } - return 0; - },bind:function(sock, addr, port) { - if (typeof sock.saddr != 'undefined' || typeof sock.sport != 'undefined') { - throw new FS.ErrnoError(28); // already bound - } - sock.saddr = addr; - sock.sport = port; - // in order to emulate dgram sockets, we need to launch a listen server when - // binding on a connection-less socket - // note: this is only required on the server side - if (sock.type === 2) { - // close the existing server if it exists - if (sock.server) { - sock.server.close(); - sock.server = null; - } - // swallow error operation not supported error that occurs when binding in the - // browser where this isn't supported - try { - sock.sock_ops.listen(sock, 0); - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e; - if (e.errno !== 138) throw e; - } - } - },connect:function(sock, addr, port) { - if (sock.server) { - throw new FS.ErrnoError(138); - } - - // TODO autobind - // if (!sock.addr && sock.type == 2) { - // } - - // early out if we're already connected / in the middle of connecting - if (typeof sock.daddr != 'undefined' && typeof sock.dport != 'undefined') { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - if (dest) { - if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(7); - } else { - throw new FS.ErrnoError(30); - } - } - } - - // add the socket to our peer list and set our - // destination address / port to match - var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - sock.daddr = peer.addr; - sock.dport = peer.port; - - // always "fail" in non-blocking mode - throw new FS.ErrnoError(26); - },listen:function(sock, backlog) { - if (!ENVIRONMENT_IS_NODE) { - throw new FS.ErrnoError(138); - } - if (sock.server) { - throw new FS.ErrnoError(28); // already listening - } - var WebSocketServer = require('ws').Server; - var host = sock.saddr; - sock.server = new WebSocketServer({ - host: host, - port: sock.sport - // TODO support backlog - }); - Module['websocket'].emit('listen', sock.stream.fd); // Send Event with listen fd. - - sock.server.on('connection', function(ws) { - if (sock.type === 1) { - var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol); - - // create a peer on the new socket - var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws); - newsock.daddr = peer.addr; - newsock.dport = peer.port; - - // push to queue for accept to pick up - sock.pending.push(newsock); - Module['websocket'].emit('connection', newsock.stream.fd); - } else { - // create a peer on the listen socket so calling sendto - // with the listen socket and an address will resolve - // to the correct client - SOCKFS.websocket_sock_ops.createPeer(sock, ws); - Module['websocket'].emit('connection', sock.stream.fd); - } - }); - sock.server.on('close', function() { - Module['websocket'].emit('close', sock.stream.fd); - sock.server = null; - }); - sock.server.on('error', function(error) { - // Although the ws library may pass errors that may be more descriptive than - // ECONNREFUSED they are not necessarily the expected error code e.g. - // ENOTFOUND on getaddrinfo seems to be node.js specific, so using EHOSTUNREACH - // is still probably the most useful thing to do. This error shouldn't - // occur in a well written app as errors should get trapped in the compiled - // app's own getaddrinfo call. - sock.error = 23; // Used in getsockopt for SOL_SOCKET/SO_ERROR test. - Module['websocket'].emit('error', [sock.stream.fd, sock.error, 'EHOSTUNREACH: Host is unreachable']); - // don't throw - }); - },accept:function(listensock) { - if (!listensock.server || !listensock.pending.length) { - throw new FS.ErrnoError(28); - } - var newsock = listensock.pending.shift(); - newsock.stream.flags = listensock.stream.flags; - return newsock; - },getname:function(sock, peer) { - var addr, port; - if (peer) { - if (sock.daddr === undefined || sock.dport === undefined) { - throw new FS.ErrnoError(53); - } - addr = sock.daddr; - port = sock.dport; - } else { - // TODO saddr and sport will be set for bind()'d UDP sockets, but what - // should we be returning for TCP sockets that've been connect()'d? - addr = sock.saddr || 0; - port = sock.sport || 0; - } - return { addr: addr, port: port }; - },sendmsg:function(sock, buffer, offset, length, addr, port) { - if (sock.type === 2) { - // connection-less sockets will honor the message address, - // and otherwise fall back to the bound destination address - if (addr === undefined || port === undefined) { - addr = sock.daddr; - port = sock.dport; - } - // if there was no address to fall back to, error out - if (addr === undefined || port === undefined) { - throw new FS.ErrnoError(17); - } - } else { - // connection-based sockets will only use the bound - addr = sock.daddr; - port = sock.dport; - } - - // find the peer for the destination address - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port); - - // early out if not connected with a connection-based socket - if (sock.type === 1) { - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - throw new FS.ErrnoError(53); - } else if (dest.socket.readyState === dest.socket.CONNECTING) { - throw new FS.ErrnoError(6); - } - } - - // create a copy of the incoming data to send, as the WebSocket API - // doesn't work entirely with an ArrayBufferView, it'll just send - // the entire underlying buffer - if (ArrayBuffer.isView(buffer)) { - offset += buffer.byteOffset; - buffer = buffer.buffer; - } - - var data; - data = buffer.slice(offset, offset + length); - - // if we're emulating a connection-less dgram socket and don't have - // a cached connection, queue the buffer to send upon connect and - // lie, saying the data was sent now. - if (sock.type === 2) { - if (!dest || dest.socket.readyState !== dest.socket.OPEN) { - // if we're not connected, open a new connection - if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port); - } - dest.dgram_send_queue.push(data); - return length; - } - } - - try { - // send the actual data - dest.socket.send(data); - return length; - } catch (e) { - throw new FS.ErrnoError(28); - } - },recvmsg:function(sock, length) { - // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html - if (sock.type === 1 && sock.server) { - // tcp servers should not be recv()'ing on the listen socket - throw new FS.ErrnoError(53); - } - - var queued = sock.recv_queue.shift(); - if (!queued) { - if (sock.type === 1) { - var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport); - - if (!dest) { - // if we have a destination address but are not connected, error out - throw new FS.ErrnoError(53); - } - if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) { - // return null if the socket has closed - return null; - } - // else, our socket is in a valid state but truly has nothing available - throw new FS.ErrnoError(6); - } - throw new FS.ErrnoError(6); - } - - // queued.data will be an ArrayBuffer if it's unadulterated, but if it's - // requeued TCP data it'll be an ArrayBufferView - var queuedLength = queued.data.byteLength || queued.data.length; - var queuedOffset = queued.data.byteOffset || 0; - var queuedBuffer = queued.data.buffer || queued.data; - var bytesRead = Math.min(length, queuedLength); - var res = { - buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead), - addr: queued.addr, - port: queued.port - }; - - // push back any unread data for TCP connections - if (sock.type === 1 && bytesRead < queuedLength) { - var bytesRemaining = queuedLength - bytesRead; - queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining); - sock.recv_queue.unshift(queued); - } - - return res; - }}}; - - function getSocketFromFD(fd) { - var socket = SOCKFS.getSocket(fd); - if (!socket) throw new FS.ErrnoError(8); - return socket; - } - - function setErrNo(value) { - HEAP32[((___errno_location())>>2)] = value; - return value; - } - var Sockets = {BUFFER_SIZE:10240,MAX_BUFFER_SIZE:10485760,nextFd:1,fds:{},nextport:1,maxport:65535,peer:null,connections:{},portmap:{},localAddr:4261412874,addrPool:[33554442,50331658,67108874,83886090,100663306,117440522,134217738,150994954,167772170,184549386,201326602,218103818,234881034]}; - - function inetNtop4(addr) { - return (addr & 0xff) + '.' + ((addr >> 8) & 0xff) + '.' + ((addr >> 16) & 0xff) + '.' + ((addr >> 24) & 0xff) - } - - - function inetNtop6(ints) { - // ref: http://www.ietf.org/rfc/rfc2373.txt - section 2.5.4 - // Format for IPv4 compatible and mapped 128-bit IPv6 Addresses - // 128-bits are split into eight 16-bit words - // stored in network byte order (big-endian) - // | 80 bits | 16 | 32 bits | - // +-----------------------------------------------------------------+ - // | 10 bytes | 2 | 4 bytes | - // +--------------------------------------+--------------------------+ - // + 5 words | 1 | 2 words | - // +--------------------------------------+--------------------------+ - // |0000..............................0000|0000| IPv4 ADDRESS | (compatible) - // +--------------------------------------+----+---------------------+ - // |0000..............................0000|FFFF| IPv4 ADDRESS | (mapped) - // +--------------------------------------+----+---------------------+ - var str = ""; - var word = 0; - var longest = 0; - var lastzero = 0; - var zstart = 0; - var len = 0; - var i = 0; - var parts = [ - ints[0] & 0xffff, - (ints[0] >> 16), - ints[1] & 0xffff, - (ints[1] >> 16), - ints[2] & 0xffff, - (ints[2] >> 16), - ints[3] & 0xffff, - (ints[3] >> 16) - ]; - - // Handle IPv4-compatible, IPv4-mapped, loopback and any/unspecified addresses - - var hasipv4 = true; - var v4part = ""; - // check if the 10 high-order bytes are all zeros (first 5 words) - for (i = 0; i < 5; i++) { - if (parts[i] !== 0) { hasipv4 = false; break; } - } - - if (hasipv4) { - // low-order 32-bits store an IPv4 address (bytes 13 to 16) (last 2 words) - v4part = inetNtop4(parts[6] | (parts[7] << 16)); - // IPv4-mapped IPv6 address if 16-bit value (bytes 11 and 12) == 0xFFFF (6th word) - if (parts[5] === -1) { - str = "::ffff:"; - str += v4part; - return str; - } - // IPv4-compatible IPv6 address if 16-bit value (bytes 11 and 12) == 0x0000 (6th word) - if (parts[5] === 0) { - str = "::"; - //special case IPv6 addresses - if (v4part === "0.0.0.0") v4part = ""; // any/unspecified address - if (v4part === "0.0.0.1") v4part = "1";// loopback address - str += v4part; - return str; - } - } - - // Handle all other IPv6 addresses - - // first run to find the longest contiguous zero words - for (word = 0; word < 8; word++) { - if (parts[word] === 0) { - if (word - lastzero > 1) { - len = 0; - } - lastzero = word; - len++; - } - if (len > longest) { - longest = len; - zstart = word - longest + 1; - } - } - - for (word = 0; word < 8; word++) { - if (longest > 1) { - // compress contiguous zeros - to produce "::" - if (parts[word] === 0 && word >= zstart && word < (zstart + longest) ) { - if (word === zstart) { - str += ":"; - if (zstart === 0) str += ":"; //leading zeros case - } - continue; - } - } - // converts 16-bit words from big-endian to little-endian before converting to hex string - str += Number(_ntohs(parts[word] & 0xffff)).toString(16); - str += word < 7 ? ":" : ""; - } - return str; - } - - function readSockaddr(sa, salen) { - // family / port offsets are common to both sockaddr_in and sockaddr_in6 - var family = HEAP16[((sa)>>1)]; - var port = _ntohs(HEAPU16[(((sa)+(2))>>1)]); - var addr; - - switch (family) { - case 2: - if (salen !== 16) { - return { errno: 28 }; - } - addr = HEAP32[(((sa)+(4))>>2)]; - addr = inetNtop4(addr); - break; - case 10: - if (salen !== 28) { - return { errno: 28 }; - } - addr = [ - HEAP32[(((sa)+(8))>>2)], - HEAP32[(((sa)+(12))>>2)], - HEAP32[(((sa)+(16))>>2)], - HEAP32[(((sa)+(20))>>2)] - ]; - addr = inetNtop6(addr); - break; - default: - return { errno: 5 }; - } - - return { family: family, addr: addr, port: port }; - } - - - function inetPton4(str) { - var b = str.split('.'); - for (var i = 0; i < 4; i++) { - var tmp = Number(b[i]); - if (isNaN(tmp)) return null; - b[i] = tmp; - } - return (b[0] | (b[1] << 8) | (b[2] << 16) | (b[3] << 24)) >>> 0; - } - - - /** @suppress {checkTypes} */ - function jstoi_q(str) { - return parseInt(str); - } - function inetPton6(str) { - var words; - var w, offset, z, i; - /* http://home.deds.nl/~aeron/regex/ */ - var valid6regx = /^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i - var parts = []; - if (!valid6regx.test(str)) { - return null; - } - if (str === "::") { - return [0, 0, 0, 0, 0, 0, 0, 0]; - } - // Z placeholder to keep track of zeros when splitting the string on ":" - if (str.startsWith("::")) { - str = str.replace("::", "Z:"); // leading zeros case - } else { - str = str.replace("::", ":Z:"); - } - - if (str.indexOf(".") > 0) { - // parse IPv4 embedded stress - str = str.replace(new RegExp('[.]', 'g'), ":"); - words = str.split(":"); - words[words.length-4] = jstoi_q(words[words.length-4]) + jstoi_q(words[words.length-3])*256; - words[words.length-3] = jstoi_q(words[words.length-2]) + jstoi_q(words[words.length-1])*256; - words = words.slice(0, words.length-2); - } else { - words = str.split(":"); - } - - offset = 0; z = 0; - for (w=0; w < words.length; w++) { - if (typeof words[w] == 'string') { - if (words[w] === 'Z') { - // compressed zeros - write appropriate number of zero words - for (z = 0; z < (8 - words.length+1); z++) { - parts[w+z] = 0; - } - offset = z-1; - } else { - // parse hex to field to 16-bit value and write it in network byte-order - parts[w+offset] = _htons(parseInt(words[w],16)); - } - } else { - // parsed IPv4 words - parts[w+offset] = words[w]; - } - } - return [ - (parts[1] << 16) | parts[0], - (parts[3] << 16) | parts[2], - (parts[5] << 16) | parts[4], - (parts[7] << 16) | parts[6] - ]; - } - var DNS = {address_map:{id:1,addrs:{},names:{}},lookup_name:function (name) { - // If the name is already a valid ipv4 / ipv6 address, don't generate a fake one. - var res = inetPton4(name); - if (res !== null) { - return name; - } - res = inetPton6(name); - if (res !== null) { - return name; - } - - // See if this name is already mapped. - var addr; - - if (DNS.address_map.addrs[name]) { - addr = DNS.address_map.addrs[name]; - } else { - var id = DNS.address_map.id++; - assert(id < 65535, 'exceeded max address mappings of 65535'); - - addr = '172.29.' + (id & 0xff) + '.' + (id & 0xff00); - - DNS.address_map.names[addr] = name; - DNS.address_map.addrs[name] = addr; - } - - return addr; - },lookup_addr:function (addr) { - if (DNS.address_map.names[addr]) { - return DNS.address_map.names[addr]; - } - - return null; - }}; - /** @param {boolean=} allowNull */ - function getSocketAddress(addrp, addrlen, allowNull) { - if (allowNull && addrp === 0) return null; - var info = readSockaddr(addrp, addrlen); - if (info.errno) throw new FS.ErrnoError(info.errno); - info.addr = DNS.lookup_addr(info.addr) || info.addr; - return info; - } - - - var SYSCALLS = {DEFAULT_POLLMASK:5,calculateAt:function(dirfd, path, allowEmpty) { - if (PATH.isAbs(path)) { - return path; - } - // relative path - var dir; - if (dirfd === -100) { - dir = FS.cwd(); - } else { - var dirstream = SYSCALLS.getStreamFromFD(dirfd); - dir = dirstream.path; - } - if (path.length == 0) { - if (!allowEmpty) { - throw new FS.ErrnoError(44);; - } - return dir; - } - return PATH.join2(dir, path); - },doStat:function(func, path, buf) { - try { - var stat = func(path); - } catch (e) { - if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { - // an error occurred while trying to look up the path; we should just report ENOTDIR - return -54; - } - throw e; - } - HEAP32[((buf)>>2)] = stat.dev; - HEAP32[(((buf)+(8))>>2)] = stat.ino; - HEAP32[(((buf)+(12))>>2)] = stat.mode; - HEAPU32[(((buf)+(16))>>2)] = stat.nlink; - HEAP32[(((buf)+(20))>>2)] = stat.uid; - HEAP32[(((buf)+(24))>>2)] = stat.gid; - HEAP32[(((buf)+(28))>>2)] = stat.rdev; - (tempI64 = [stat.size>>>0,(tempDouble=stat.size,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(40))>>2)] = tempI64[0],HEAP32[(((buf)+(44))>>2)] = tempI64[1]); - HEAP32[(((buf)+(48))>>2)] = 4096; - HEAP32[(((buf)+(52))>>2)] = stat.blocks; - var atime = stat.atime.getTime(); - var mtime = stat.mtime.getTime(); - var ctime = stat.ctime.getTime(); - (tempI64 = [Math.floor(atime / 1000)>>>0,(tempDouble=Math.floor(atime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(56))>>2)] = tempI64[0],HEAP32[(((buf)+(60))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(64))>>2)] = (atime % 1000) * 1000; - (tempI64 = [Math.floor(mtime / 1000)>>>0,(tempDouble=Math.floor(mtime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(72))>>2)] = tempI64[0],HEAP32[(((buf)+(76))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(80))>>2)] = (mtime % 1000) * 1000; - (tempI64 = [Math.floor(ctime / 1000)>>>0,(tempDouble=Math.floor(ctime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(88))>>2)] = tempI64[0],HEAP32[(((buf)+(92))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(96))>>2)] = (ctime % 1000) * 1000; - (tempI64 = [stat.ino>>>0,(tempDouble=stat.ino,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[(((buf)+(104))>>2)] = tempI64[0],HEAP32[(((buf)+(108))>>2)] = tempI64[1]); - return 0; - },doMsync:function(addr, stream, len, flags, offset) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (flags & 2) { - // MAP_PRIVATE calls need not to be synced back to underlying fs - return 0; - } - var buffer = HEAPU8.slice(addr, addr + len); - FS.msync(stream, buffer, offset, len, flags); - },varargs:undefined,get:function() { - assert(SYSCALLS.varargs != undefined); - SYSCALLS.varargs += 4; - var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; - return ret; - },getStr:function(ptr) { - var ret = UTF8ToString(ptr); - return ret; - },getStreamFromFD:function(fd) { - var stream = FS.getStream(fd); - if (!stream) throw new FS.ErrnoError(8); - return stream; - }}; - function ___syscall_connect(fd, addr, addrlen) { - try { - - var sock = getSocketFromFD(fd); - var info = getSocketAddress(addr, addrlen); - sock.sock_ops.connect(sock, info.addr, info.port); - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_faccessat(dirfd, path, amode, flags) { - try { - - path = SYSCALLS.getStr(path); - assert(flags === 0); - path = SYSCALLS.calculateAt(dirfd, path); - if (amode & ~7) { - // need a valid mode - return -28; - } - var lookup = FS.lookupPath(path, { follow: true }); - var node = lookup.node; - if (!node) { - return -44; - } - var perms = ''; - if (amode & 4) perms += 'r'; - if (amode & 2) perms += 'w'; - if (amode & 1) perms += 'x'; - if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { - return -2; - } - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - - function ___syscall_fcntl64(fd, cmd, varargs) { - SYSCALLS.varargs = varargs; - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - switch (cmd) { - case 0: { - var arg = SYSCALLS.get(); - if (arg < 0) { - return -28; - } - var newStream; - newStream = FS.createStream(stream, arg); - return newStream.fd; - } - case 1: - case 2: - return 0; // FD_CLOEXEC makes no sense for a single process. - case 3: - return stream.flags; - case 4: { - var arg = SYSCALLS.get(); - stream.flags |= arg; - return 0; - } - case 5: - /* case 5: Currently in musl F_GETLK64 has same value as F_GETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ { - - var arg = SYSCALLS.get(); - var offset = 0; - // We're always unlocked. - HEAP16[(((arg)+(offset))>>1)] = 2; - return 0; - } - case 6: - case 7: - /* case 6: Currently in musl F_SETLK64 has same value as F_SETLK, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ - /* case 7: Currently in musl F_SETLKW64 has same value as F_SETLKW, so omitted to avoid duplicate case blocks. If that changes, uncomment this */ - - - return 0; // Pretend that the locking is successful. - case 16: - case 8: - return -28; // These are for sockets. We don't have them fully implemented yet. - case 9: - // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fcntl() returns that, and we set errno ourselves. - setErrNo(28); - return -1; - default: { - return -28; - } - } - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_fstat64(fd, buf) { - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - return SYSCALLS.doStat(FS.stat, stream.path, buf); - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function convertI32PairToI53Checked(lo, hi) { - assert(lo == (lo >>> 0) || lo == (lo|0)); // lo should either be a i32 or a u32 - assert(hi === (hi|0)); // hi should be a i32 - return ((hi + 0x200000) >>> 0 < 0x400001 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN; - } - - - - - function ___syscall_ftruncate64(fd, length_low, length_high) { - try { - - var length = convertI32PairToI53Checked(length_low, length_high); if (isNaN(length)) return -61; - FS.ftruncate(fd, length); - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_ioctl(fd, op, varargs) { - SYSCALLS.varargs = varargs; - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - switch (op) { - case 21509: - case 21505: { - if (!stream.tty) return -59; - return 0; - } - case 21510: - case 21511: - case 21512: - case 21506: - case 21507: - case 21508: { - if (!stream.tty) return -59; - return 0; // no-op, not actually adjusting terminal settings - } - case 21519: { - if (!stream.tty) return -59; - var argp = SYSCALLS.get(); - HEAP32[((argp)>>2)] = 0; - return 0; - } - case 21520: { - if (!stream.tty) return -59; - return -28; // not supported - } - case 21531: { - var argp = SYSCALLS.get(); - return FS.ioctl(stream, op, argp); - } - case 21523: { - // TODO: in theory we should write to the winsize struct that gets - // passed in, but for now musl doesn't read anything on it - if (!stream.tty) return -59; - return 0; - } - case 21524: { - // TODO: technically, this ioctl call should change the window size. - // but, since emscripten doesn't have any concept of a terminal window - // yet, we'll just silently throw it away as we do TIOCGWINSZ - if (!stream.tty) return -59; - return 0; - } - default: return -28; // not supported - } - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_lstat64(path, buf) { - try { - - path = SYSCALLS.getStr(path); - return SYSCALLS.doStat(FS.lstat, path, buf); - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_newfstatat(dirfd, path, buf, flags) { - try { - - path = SYSCALLS.getStr(path); - var nofollow = flags & 256; - var allowEmpty = flags & 4096; - flags = flags & (~6400); - assert(!flags, 'unknown flags in __syscall_newfstatat: ' + flags); - path = SYSCALLS.calculateAt(dirfd, path, allowEmpty); - return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf); - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_openat(dirfd, path, flags, varargs) { - SYSCALLS.varargs = varargs; - try { - - path = SYSCALLS.getStr(path); - path = SYSCALLS.calculateAt(dirfd, path); - var mode = varargs ? SYSCALLS.get() : 0; - return FS.open(path, flags, mode).fd; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - - function ___syscall_socket(domain, type, protocol) { - try { - - var sock = SOCKFS.createSocket(domain, type, protocol); - assert(sock.stream.fd < 64); // XXX ? select() assumes socket fd values are in 0..63 - return sock.stream.fd; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - function ___syscall_stat64(path, buf) { - try { - - path = SYSCALLS.getStr(path); - return SYSCALLS.doStat(FS.stat, path, buf); - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return -e.errno; - } - } - - var tupleRegistrations = {}; - - function runDestructors(destructors) { - while (destructors.length) { - var ptr = destructors.pop(); - var del = destructors.pop(); - del(ptr); - } - } - - function simpleReadValueFromPointer(pointer) { - return this['fromWireType'](HEAP32[((pointer)>>2)]); - } - - var awaitingDependencies = {}; - - var registeredTypes = {}; - - var typeDependencies = {}; - - var char_0 = 48; - - var char_9 = 57; - function makeLegalFunctionName(name) { - if (undefined === name) { - return '_unknown'; - } - name = name.replace(/[^a-zA-Z0-9_]/g, '$'); - var f = name.charCodeAt(0); - if (f >= char_0 && f <= char_9) { - return '_' + name; - } - return name; - } - function createNamedFunction(name, body) { - name = makeLegalFunctionName(name); - /*jshint evil:true*/ - return new Function( - "body", - "return function " + name + "() {\n" + - " \"use strict\";" + - " return body.apply(this, arguments);\n" + - "};\n" - )(body); - } - function extendError(baseErrorType, errorName) { - var errorClass = createNamedFunction(errorName, function(message) { - this.name = errorName; - this.message = message; - - var stack = (new Error(message)).stack; - if (stack !== undefined) { - this.stack = this.toString() + '\n' + - stack.replace(/^Error(:[^\n]*)?\n/, ''); - } - }); - errorClass.prototype = Object.create(baseErrorType.prototype); - errorClass.prototype.constructor = errorClass; - errorClass.prototype.toString = function() { - if (this.message === undefined) { - return this.name; - } else { - return this.name + ': ' + this.message; - } - }; - - return errorClass; - } - var InternalError = undefined; - function throwInternalError(message) { - throw new InternalError(message); - } - function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) { - myTypes.forEach(function(type) { - typeDependencies[type] = dependentTypes; - }); - - function onComplete(typeConverters) { - var myTypeConverters = getTypeConverters(typeConverters); - if (myTypeConverters.length !== myTypes.length) { - throwInternalError('Mismatched type converter count'); - } - for (var i = 0; i < myTypes.length; ++i) { - registerType(myTypes[i], myTypeConverters[i]); - } - } - - var typeConverters = new Array(dependentTypes.length); - var unregisteredTypes = []; - var registered = 0; - dependentTypes.forEach((dt, i) => { - if (registeredTypes.hasOwnProperty(dt)) { - typeConverters[i] = registeredTypes[dt]; - } else { - unregisteredTypes.push(dt); - if (!awaitingDependencies.hasOwnProperty(dt)) { - awaitingDependencies[dt] = []; - } - awaitingDependencies[dt].push(() => { - typeConverters[i] = registeredTypes[dt]; - ++registered; - if (registered === unregisteredTypes.length) { - onComplete(typeConverters); - } - }); - } - }); - if (0 === unregisteredTypes.length) { - onComplete(typeConverters); - } - } - function __embind_finalize_value_array(rawTupleType) { - var reg = tupleRegistrations[rawTupleType]; - delete tupleRegistrations[rawTupleType]; - var elements = reg.elements; - var elementsLength = elements.length; - var elementTypes = elements.map(function(elt) { return elt.getterReturnType; }). - concat(elements.map(function(elt) { return elt.setterArgumentType; })); - - var rawConstructor = reg.rawConstructor; - var rawDestructor = reg.rawDestructor; - - whenDependentTypesAreResolved([rawTupleType], elementTypes, function(elementTypes) { - elements.forEach((elt, i) => { - var getterReturnType = elementTypes[i]; - var getter = elt.getter; - var getterContext = elt.getterContext; - var setterArgumentType = elementTypes[i + elementsLength]; - var setter = elt.setter; - var setterContext = elt.setterContext; - elt.read = (ptr) => { - return getterReturnType['fromWireType'](getter(getterContext, ptr)); - }; - elt.write = (ptr, o) => { - var destructors = []; - setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); - runDestructors(destructors); - }; - }); - - return [{ - name: reg.name, - 'fromWireType': function(ptr) { - var rv = new Array(elementsLength); - for (var i = 0; i < elementsLength; ++i) { - rv[i] = elements[i].read(ptr); - } - rawDestructor(ptr); - return rv; - }, - 'toWireType': function(destructors, o) { - if (elementsLength !== o.length) { - throw new TypeError("Incorrect number of tuple elements for " + reg.name + ": expected=" + elementsLength + ", actual=" + o.length); - } - var ptr = rawConstructor(); - for (var i = 0; i < elementsLength; ++i) { - elements[i].write(ptr, o[i]); - } - if (destructors !== null) { - destructors.push(rawDestructor, ptr); - } - return ptr; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: rawDestructor, - }]; - }); - } - - var structRegistrations = {}; - - - - function __embind_finalize_value_object(structType) { - var reg = structRegistrations[structType]; - delete structRegistrations[structType]; - - var rawConstructor = reg.rawConstructor; - var rawDestructor = reg.rawDestructor; - var fieldRecords = reg.fields; - var fieldTypes = fieldRecords.map((field) => field.getterReturnType). - concat(fieldRecords.map((field) => field.setterArgumentType)); - whenDependentTypesAreResolved([structType], fieldTypes, (fieldTypes) => { - var fields = {}; - fieldRecords.forEach((field, i) => { - var fieldName = field.fieldName; - var getterReturnType = fieldTypes[i]; - var getter = field.getter; - var getterContext = field.getterContext; - var setterArgumentType = fieldTypes[i + fieldRecords.length]; - var setter = field.setter; - var setterContext = field.setterContext; - fields[fieldName] = { - read: (ptr) => { - return getterReturnType['fromWireType']( - getter(getterContext, ptr)); - }, - write: (ptr, o) => { - var destructors = []; - setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, o)); - runDestructors(destructors); - } - }; - }); - - return [{ - name: reg.name, - 'fromWireType': function(ptr) { - var rv = {}; - for (var i in fields) { - rv[i] = fields[i].read(ptr); - } - rawDestructor(ptr); - return rv; - }, - 'toWireType': function(destructors, o) { - // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: - // assume all fields are present without checking. - for (var fieldName in fields) { - if (!(fieldName in o)) { - throw new TypeError('Missing field: "' + fieldName + '"'); - } - } - var ptr = rawConstructor(); - for (fieldName in fields) { - fields[fieldName].write(ptr, o[fieldName]); - } - if (destructors !== null) { - destructors.push(rawDestructor, ptr); - } - return ptr; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: rawDestructor, - }]; - }); - } - - function __embind_register_bigint(primitiveType, name, size, minRange, maxRange) {} - - function getShiftFromSize(size) { - switch (size) { - case 1: return 0; - case 2: return 1; - case 4: return 2; - case 8: return 3; - default: - throw new TypeError('Unknown type size: ' + size); - } - } - - function embind_init_charCodes() { - var codes = new Array(256); - for (var i = 0; i < 256; ++i) { - codes[i] = String.fromCharCode(i); - } - embind_charCodes = codes; - } - var embind_charCodes = undefined; - function readLatin1String(ptr) { - var ret = ""; - var c = ptr; - while (HEAPU8[c]) { - ret += embind_charCodes[HEAPU8[c++]]; - } - return ret; - } - - - - - var BindingError = undefined; - function throwBindingError(message) { - throw new BindingError(message); - } - - /** @param {Object=} options */ - function registerType(rawType, registeredInstance, options = {}) { - if (!('argPackAdvance' in registeredInstance)) { - throw new TypeError('registerType registeredInstance requires argPackAdvance'); - } - - var name = registeredInstance.name; - if (!rawType) { - throwBindingError('type "' + name + '" must have a positive integer typeid pointer'); - } - if (registeredTypes.hasOwnProperty(rawType)) { - if (options.ignoreDuplicateRegistrations) { - return; - } else { - throwBindingError("Cannot register type '" + name + "' twice"); - } - } - - registeredTypes[rawType] = registeredInstance; - delete typeDependencies[rawType]; - - if (awaitingDependencies.hasOwnProperty(rawType)) { - var callbacks = awaitingDependencies[rawType]; - delete awaitingDependencies[rawType]; - callbacks.forEach((cb) => cb()); - } - } - function __embind_register_bool(rawType, name, size, trueValue, falseValue) { - var shift = getShiftFromSize(size); - - name = readLatin1String(name); - registerType(rawType, { - name: name, - 'fromWireType': function(wt) { - // ambiguous emscripten ABI: sometimes return values are - // true or false, and sometimes integers (0 or 1) - return !!wt; - }, - 'toWireType': function(destructors, o) { - return o ? trueValue : falseValue; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': function(pointer) { - // TODO: if heap is fixed (like in asm.js) this could be executed outside - var heap; - if (size === 1) { - heap = HEAP8; - } else if (size === 2) { - heap = HEAP16; - } else if (size === 4) { - heap = HEAP32; - } else { - throw new TypeError("Unknown boolean type size: " + name); - } - return this['fromWireType'](heap[pointer >> shift]); - }, - destructorFunction: null, // This type does not need a destructor - }); - } - - - function ClassHandle_isAliasOf(other) { - if (!(this instanceof ClassHandle)) { - return false; - } - if (!(other instanceof ClassHandle)) { - return false; - } - - var leftClass = this.$$.ptrType.registeredClass; - var left = this.$$.ptr; - var rightClass = other.$$.ptrType.registeredClass; - var right = other.$$.ptr; - - while (leftClass.baseClass) { - left = leftClass.upcast(left); - leftClass = leftClass.baseClass; - } - - while (rightClass.baseClass) { - right = rightClass.upcast(right); - rightClass = rightClass.baseClass; - } - - return leftClass === rightClass && left === right; - } - - function shallowCopyInternalPointer(o) { - return { - count: o.count, - deleteScheduled: o.deleteScheduled, - preservePointerOnDelete: o.preservePointerOnDelete, - ptr: o.ptr, - ptrType: o.ptrType, - smartPtr: o.smartPtr, - smartPtrType: o.smartPtrType, - }; - } - - function throwInstanceAlreadyDeleted(obj) { - function getInstanceTypeName(handle) { - return handle.$$.ptrType.registeredClass.name; - } - throwBindingError(getInstanceTypeName(obj) + ' instance already deleted'); - } - - var finalizationRegistry = false; - - function detachFinalizer(handle) {} - - function runDestructor($$) { - if ($$.smartPtr) { - $$.smartPtrType.rawDestructor($$.smartPtr); - } else { - $$.ptrType.registeredClass.rawDestructor($$.ptr); - } - } - function releaseClassHandle($$) { - $$.count.value -= 1; - var toDelete = 0 === $$.count.value; - if (toDelete) { - runDestructor($$); - } - } - - function downcastPointer(ptr, ptrClass, desiredClass) { - if (ptrClass === desiredClass) { - return ptr; - } - if (undefined === desiredClass.baseClass) { - return null; // no conversion - } - - var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass); - if (rv === null) { - return null; - } - return desiredClass.downcast(rv); - } - - var registeredPointers = {}; - - function getInheritedInstanceCount() { - return Object.keys(registeredInstances).length; - } - - function getLiveInheritedInstances() { - var rv = []; - for (var k in registeredInstances) { - if (registeredInstances.hasOwnProperty(k)) { - rv.push(registeredInstances[k]); - } - } - return rv; - } - - var deletionQueue = []; - function flushPendingDeletes() { - while (deletionQueue.length) { - var obj = deletionQueue.pop(); - obj.$$.deleteScheduled = false; - obj['delete'](); - } - } - - var delayFunction = undefined; - - - function setDelayFunction(fn) { - delayFunction = fn; - if (deletionQueue.length && delayFunction) { - delayFunction(flushPendingDeletes); - } - } - function init_embind() { - Module['getInheritedInstanceCount'] = getInheritedInstanceCount; - Module['getLiveInheritedInstances'] = getLiveInheritedInstances; - Module['flushPendingDeletes'] = flushPendingDeletes; - Module['setDelayFunction'] = setDelayFunction; - } - var registeredInstances = {}; - - function getBasestPointer(class_, ptr) { - if (ptr === undefined) { - throwBindingError('ptr should not be undefined'); - } - while (class_.baseClass) { - ptr = class_.upcast(ptr); - class_ = class_.baseClass; - } - return ptr; - } - function getInheritedInstance(class_, ptr) { - ptr = getBasestPointer(class_, ptr); - return registeredInstances[ptr]; - } - - - function makeClassHandle(prototype, record) { - if (!record.ptrType || !record.ptr) { - throwInternalError('makeClassHandle requires ptr and ptrType'); - } - var hasSmartPtrType = !!record.smartPtrType; - var hasSmartPtr = !!record.smartPtr; - if (hasSmartPtrType !== hasSmartPtr) { - throwInternalError('Both smartPtrType and smartPtr must be specified'); - } - record.count = { value: 1 }; - return attachFinalizer(Object.create(prototype, { - $$: { - value: record, - }, - })); - } - function RegisteredPointer_fromWireType(ptr) { - // ptr is a raw pointer (or a raw smartpointer) - - // rawPointer is a maybe-null raw pointer - var rawPointer = this.getPointee(ptr); - if (!rawPointer) { - this.destructor(ptr); - return null; - } - - var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer); - if (undefined !== registeredInstance) { - // JS object has been neutered, time to repopulate it - if (0 === registeredInstance.$$.count.value) { - registeredInstance.$$.ptr = rawPointer; - registeredInstance.$$.smartPtr = ptr; - return registeredInstance['clone'](); - } else { - // else, just increment reference count on existing object - // it already has a reference to the smart pointer - var rv = registeredInstance['clone'](); - this.destructor(ptr); - return rv; - } - } - - function makeDefaultHandle() { - if (this.isSmartPointer) { - return makeClassHandle(this.registeredClass.instancePrototype, { - ptrType: this.pointeeType, - ptr: rawPointer, - smartPtrType: this, - smartPtr: ptr, - }); - } else { - return makeClassHandle(this.registeredClass.instancePrototype, { - ptrType: this, - ptr: ptr, - }); - } - } - - var actualType = this.registeredClass.getActualType(rawPointer); - var registeredPointerRecord = registeredPointers[actualType]; - if (!registeredPointerRecord) { - return makeDefaultHandle.call(this); - } - - var toType; - if (this.isConst) { - toType = registeredPointerRecord.constPointerType; - } else { - toType = registeredPointerRecord.pointerType; - } - var dp = downcastPointer( - rawPointer, - this.registeredClass, - toType.registeredClass); - if (dp === null) { - return makeDefaultHandle.call(this); - } - if (this.isSmartPointer) { - return makeClassHandle(toType.registeredClass.instancePrototype, { - ptrType: toType, - ptr: dp, - smartPtrType: this, - smartPtr: ptr, - }); - } else { - return makeClassHandle(toType.registeredClass.instancePrototype, { - ptrType: toType, - ptr: dp, - }); - } - } - function attachFinalizer(handle) { - if ('undefined' === typeof FinalizationRegistry) { - attachFinalizer = (handle) => handle; - return handle; - } - // If the running environment has a FinalizationRegistry (see - // https://github.com/tc39/proposal-weakrefs), then attach finalizers - // for class handles. We check for the presence of FinalizationRegistry - // at run-time, not build-time. - finalizationRegistry = new FinalizationRegistry((info) => { - console.warn(info.leakWarning.stack.replace(/^Error: /, '')); - releaseClassHandle(info.$$); - }); - attachFinalizer = (handle) => { - var $$ = handle.$$; - var hasSmartPtr = !!$$.smartPtr; - if (hasSmartPtr) { - // We should not call the destructor on raw pointers in case other code expects the pointee to live - var info = { $$: $$ }; - // Create a warning as an Error instance in advance so that we can store - // the current stacktrace and point to it when / if a leak is detected. - // This is more useful than the empty stacktrace of `FinalizationRegistry` - // callback. - var cls = $$.ptrType.registeredClass; - info.leakWarning = new Error("Embind found a leaked C++ instance " + cls.name + " <" + ptrToString($$.ptr) + ">.\n" + - "We'll free it automatically in this case, but this functionality is not reliable across various environments.\n" + - "Make sure to invoke .delete() manually once you're done with the instance instead.\n" + - "Originally allocated"); // `.stack` will add "at ..." after this sentence - if ('captureStackTrace' in Error) { - Error.captureStackTrace(info.leakWarning, RegisteredPointer_fromWireType); - } - finalizationRegistry.register(handle, info, handle); - } - return handle; - }; - detachFinalizer = (handle) => finalizationRegistry.unregister(handle); - return attachFinalizer(handle); - } - function ClassHandle_clone() { - if (!this.$$.ptr) { - throwInstanceAlreadyDeleted(this); - } - - if (this.$$.preservePointerOnDelete) { - this.$$.count.value += 1; - return this; - } else { - var clone = attachFinalizer(Object.create(Object.getPrototypeOf(this), { - $$: { - value: shallowCopyInternalPointer(this.$$), - } - })); - - clone.$$.count.value += 1; - clone.$$.deleteScheduled = false; - return clone; - } - } - - - - - function ClassHandle_delete() { - if (!this.$$.ptr) { - throwInstanceAlreadyDeleted(this); - } - - if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { - throwBindingError('Object already scheduled for deletion'); - } - - detachFinalizer(this); - releaseClassHandle(this.$$); - - if (!this.$$.preservePointerOnDelete) { - this.$$.smartPtr = undefined; - this.$$.ptr = undefined; - } - } - - function ClassHandle_isDeleted() { - return !this.$$.ptr; - } - - - - function ClassHandle_deleteLater() { - if (!this.$$.ptr) { - throwInstanceAlreadyDeleted(this); - } - if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { - throwBindingError('Object already scheduled for deletion'); - } - deletionQueue.push(this); - if (deletionQueue.length === 1 && delayFunction) { - delayFunction(flushPendingDeletes); - } - this.$$.deleteScheduled = true; - return this; - } - function init_ClassHandle() { - ClassHandle.prototype['isAliasOf'] = ClassHandle_isAliasOf; - ClassHandle.prototype['clone'] = ClassHandle_clone; - ClassHandle.prototype['delete'] = ClassHandle_delete; - ClassHandle.prototype['isDeleted'] = ClassHandle_isDeleted; - ClassHandle.prototype['deleteLater'] = ClassHandle_deleteLater; - } - function ClassHandle() { - } - - - - function ensureOverloadTable(proto, methodName, humanName) { - if (undefined === proto[methodName].overloadTable) { - var prevFunc = proto[methodName]; - // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments. - proto[methodName] = function() { - // TODO This check can be removed in -O3 level "unsafe" optimizations. - if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) { - throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!"); - } - return proto[methodName].overloadTable[arguments.length].apply(this, arguments); - }; - // Move the previous function into the overload table. - proto[methodName].overloadTable = []; - proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; - } - } - - /** @param {number=} numArguments */ - function exposePublicSymbol(name, value, numArguments) { - if (Module.hasOwnProperty(name)) { - if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) { - throwBindingError("Cannot register public name '" + name + "' twice"); - } - - // We are exposing a function with the same name as an existing function. Create an overload table and a function selector - // that routes between the two. - ensureOverloadTable(Module, name, name); - if (Module.hasOwnProperty(numArguments)) { - throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!"); - } - // Add the new function into the overload table. - Module[name].overloadTable[numArguments] = value; - } - else { - Module[name] = value; - if (undefined !== numArguments) { - Module[name].numArguments = numArguments; - } - } - } - - - - /** @constructor */ - function RegisteredClass(name, - constructor, - instancePrototype, - rawDestructor, - baseClass, - getActualType, - upcast, - downcast) { - this.name = name; - this.constructor = constructor; - this.instancePrototype = instancePrototype; - this.rawDestructor = rawDestructor; - this.baseClass = baseClass; - this.getActualType = getActualType; - this.upcast = upcast; - this.downcast = downcast; - this.pureVirtualFunctions = []; - } - - - function upcastPointer(ptr, ptrClass, desiredClass) { - while (ptrClass !== desiredClass) { - if (!ptrClass.upcast) { - throwBindingError("Expected null or instance of " + desiredClass.name + ", got an instance of " + ptrClass.name); - } - ptr = ptrClass.upcast(ptr); - ptrClass = ptrClass.baseClass; - } - return ptr; - } - function constNoSmartPtrRawPointerToWireType(destructors, handle) { - if (handle === null) { - if (this.isReference) { - throwBindingError('null is not a valid ' + this.name); - } - return 0; - } - - if (!handle.$$) { - throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); - } - if (!handle.$$.ptr) { - throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); - } - var handleClass = handle.$$.ptrType.registeredClass; - var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); - return ptr; - } - - - function genericPointerToWireType(destructors, handle) { - var ptr; - if (handle === null) { - if (this.isReference) { - throwBindingError('null is not a valid ' + this.name); - } - - if (this.isSmartPointer) { - ptr = this.rawConstructor(); - if (destructors !== null) { - destructors.push(this.rawDestructor, ptr); - } - return ptr; - } else { - return 0; - } - } - - if (!handle.$$) { - throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); - } - if (!handle.$$.ptr) { - throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); - } - if (!this.isConst && handle.$$.ptrType.isConst) { - throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name); - } - var handleClass = handle.$$.ptrType.registeredClass; - ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); - - if (this.isSmartPointer) { - // TODO: this is not strictly true - // We could support BY_EMVAL conversions from raw pointers to smart pointers - // because the smart pointer can hold a reference to the handle - if (undefined === handle.$$.smartPtr) { - throwBindingError('Passing raw pointer to smart pointer is illegal'); - } - - switch (this.sharingPolicy) { - case 0: // NONE - // no upcasting - if (handle.$$.smartPtrType === this) { - ptr = handle.$$.smartPtr; - } else { - throwBindingError('Cannot convert argument of type ' + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + ' to parameter type ' + this.name); - } - break; - - case 1: // INTRUSIVE - ptr = handle.$$.smartPtr; - break; - - case 2: // BY_EMVAL - if (handle.$$.smartPtrType === this) { - ptr = handle.$$.smartPtr; - } else { - var clonedHandle = handle['clone'](); - ptr = this.rawShare( - ptr, - Emval.toHandle(function() { - clonedHandle['delete'](); - }) - ); - if (destructors !== null) { - destructors.push(this.rawDestructor, ptr); - } - } - break; - - default: - throwBindingError('Unsupporting sharing policy'); - } - } - return ptr; - } - - - function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) { - if (handle === null) { - if (this.isReference) { - throwBindingError('null is not a valid ' + this.name); - } - return 0; - } - - if (!handle.$$) { - throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); - } - if (!handle.$$.ptr) { - throwBindingError('Cannot pass deleted object as a pointer of type ' + this.name); - } - if (handle.$$.ptrType.isConst) { - throwBindingError('Cannot convert argument of type ' + handle.$$.ptrType.name + ' to parameter type ' + this.name); - } - var handleClass = handle.$$.ptrType.registeredClass; - var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); - return ptr; - } - - - function RegisteredPointer_getPointee(ptr) { - if (this.rawGetPointee) { - ptr = this.rawGetPointee(ptr); - } - return ptr; - } - - function RegisteredPointer_destructor(ptr) { - if (this.rawDestructor) { - this.rawDestructor(ptr); - } - } - - function RegisteredPointer_deleteObject(handle) { - if (handle !== null) { - handle['delete'](); - } - } - - function init_RegisteredPointer() { - RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee; - RegisteredPointer.prototype.destructor = RegisteredPointer_destructor; - RegisteredPointer.prototype['argPackAdvance'] = 8; - RegisteredPointer.prototype['readValueFromPointer'] = simpleReadValueFromPointer; - RegisteredPointer.prototype['deleteObject'] = RegisteredPointer_deleteObject; - RegisteredPointer.prototype['fromWireType'] = RegisteredPointer_fromWireType; - } - /** @constructor - @param {*=} pointeeType, - @param {*=} sharingPolicy, - @param {*=} rawGetPointee, - @param {*=} rawConstructor, - @param {*=} rawShare, - @param {*=} rawDestructor, - */ - function RegisteredPointer( - name, - registeredClass, - isReference, - isConst, - - // smart pointer properties - isSmartPointer, - pointeeType, - sharingPolicy, - rawGetPointee, - rawConstructor, - rawShare, - rawDestructor - ) { - this.name = name; - this.registeredClass = registeredClass; - this.isReference = isReference; - this.isConst = isConst; - - // smart pointer properties - this.isSmartPointer = isSmartPointer; - this.pointeeType = pointeeType; - this.sharingPolicy = sharingPolicy; - this.rawGetPointee = rawGetPointee; - this.rawConstructor = rawConstructor; - this.rawShare = rawShare; - this.rawDestructor = rawDestructor; - - if (!isSmartPointer && registeredClass.baseClass === undefined) { - if (isConst) { - this['toWireType'] = constNoSmartPtrRawPointerToWireType; - this.destructorFunction = null; - } else { - this['toWireType'] = nonConstNoSmartPtrRawPointerToWireType; - this.destructorFunction = null; - } - } else { - this['toWireType'] = genericPointerToWireType; - // Here we must leave this.destructorFunction undefined, since whether genericPointerToWireType returns - // a pointer that needs to be freed up is runtime-dependent, and cannot be evaluated at registration time. - // TODO: Create an alternative mechanism that allows removing the use of var destructors = []; array in - // craftInvokerFunction altogether. - } - } - - /** @param {number=} numArguments */ - function replacePublicSymbol(name, value, numArguments) { - if (!Module.hasOwnProperty(name)) { - throwInternalError('Replacing nonexistant public symbol'); - } - // If there's an overload table for this symbol, replace the symbol in the overload table instead. - if (undefined !== Module[name].overloadTable && undefined !== numArguments) { - Module[name].overloadTable[numArguments] = value; - } - else { - Module[name] = value; - Module[name].argCount = numArguments; - } - } - - - - function dynCallLegacy(sig, ptr, args) { - assert(('dynCall_' + sig) in Module, 'bad function pointer type - dynCall function not found for sig \'' + sig + '\''); - if (args && args.length) { - // j (64-bit integer) must be passed in as two numbers [low 32, high 32]. - assert(args.length === sig.substring(1).replace(/j/g, '--').length); - } else { - assert(sig.length == 1); - } - var f = Module['dynCall_' + sig]; - return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr); - } - - var wasmTableMirror = []; - - function getWasmTableEntry(funcPtr) { - var func = wasmTableMirror[funcPtr]; - if (!func) { - if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; - wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); - } - assert(wasmTable.get(funcPtr) == func, "JavaScript-side Wasm function table mirror is out of date!"); - return func; - } - - /** @param {Object=} args */ - function dynCall(sig, ptr, args) { - // Without WASM_BIGINT support we cannot directly call function with i64 as - // part of thier signature, so we rely the dynCall functions generated by - // wasm-emscripten-finalize - if (sig.includes('j')) { - return dynCallLegacy(sig, ptr, args); - } - assert(getWasmTableEntry(ptr), 'missing table entry in dynCall: ' + ptr); - var rtn = getWasmTableEntry(ptr).apply(null, args); - return rtn; - } - - function getDynCaller(sig, ptr) { - assert(sig.includes('j') || sig.includes('p'), 'getDynCaller should only be called with i64 sigs') - var argCache = []; - return function() { - argCache.length = 0; - Object.assign(argCache, arguments); - return dynCall(sig, ptr, argCache); - }; - } - - - function embind__requireFunction(signature, rawFunction) { - signature = readLatin1String(signature); - - function makeDynCaller() { - if (signature.includes('j')) { - return getDynCaller(signature, rawFunction); - } - return getWasmTableEntry(rawFunction); - } - - var fp = makeDynCaller(); - if (typeof fp != "function") { - throwBindingError("unknown function pointer with signature " + signature + ": " + rawFunction); - } - return fp; - } - - - - var UnboundTypeError = undefined; - - - function getTypeName(type) { - var ptr = ___getTypeName(type); - var rv = readLatin1String(ptr); - _free(ptr); - return rv; - } - function throwUnboundTypeError(message, types) { - var unboundTypes = []; - var seen = {}; - function visit(type) { - if (seen[type]) { - return; - } - if (registeredTypes[type]) { - return; - } - if (typeDependencies[type]) { - typeDependencies[type].forEach(visit); - return; - } - unboundTypes.push(type); - seen[type] = true; - } - types.forEach(visit); - - throw new UnboundTypeError(message + ': ' + unboundTypes.map(getTypeName).join([', '])); - } - - function __embind_register_class(rawType, - rawPointerType, - rawConstPointerType, - baseClassRawType, - getActualTypeSignature, - getActualType, - upcastSignature, - upcast, - downcastSignature, - downcast, - name, - destructorSignature, - rawDestructor) { - name = readLatin1String(name); - getActualType = embind__requireFunction(getActualTypeSignature, getActualType); - if (upcast) { - upcast = embind__requireFunction(upcastSignature, upcast); - } - if (downcast) { - downcast = embind__requireFunction(downcastSignature, downcast); - } - rawDestructor = embind__requireFunction(destructorSignature, rawDestructor); - var legalFunctionName = makeLegalFunctionName(name); - - exposePublicSymbol(legalFunctionName, function() { - // this code cannot run if baseClassRawType is zero - throwUnboundTypeError('Cannot construct ' + name + ' due to unbound types', [baseClassRawType]); - }); - - whenDependentTypesAreResolved( - [rawType, rawPointerType, rawConstPointerType], - baseClassRawType ? [baseClassRawType] : [], - function(base) { - base = base[0]; - - var baseClass; - var basePrototype; - if (baseClassRawType) { - baseClass = base.registeredClass; - basePrototype = baseClass.instancePrototype; - } else { - basePrototype = ClassHandle.prototype; - } - - var constructor = createNamedFunction(legalFunctionName, function() { - if (Object.getPrototypeOf(this) !== instancePrototype) { - throw new BindingError("Use 'new' to construct " + name); - } - if (undefined === registeredClass.constructor_body) { - throw new BindingError(name + " has no accessible constructor"); - } - var body = registeredClass.constructor_body[arguments.length]; - if (undefined === body) { - throw new BindingError("Tried to invoke ctor of " + name + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(registeredClass.constructor_body).toString() + ") parameters instead!"); - } - return body.apply(this, arguments); - }); - - var instancePrototype = Object.create(basePrototype, { - constructor: { value: constructor }, - }); - - constructor.prototype = instancePrototype; - - var registeredClass = new RegisteredClass(name, - constructor, - instancePrototype, - rawDestructor, - baseClass, - getActualType, - upcast, - downcast); - - var referenceConverter = new RegisteredPointer(name, - registeredClass, - true, - false, - false); - - var pointerConverter = new RegisteredPointer(name + '*', - registeredClass, - false, - false, - false); - - var constPointerConverter = new RegisteredPointer(name + ' const*', - registeredClass, - false, - true, - false); - - registeredPointers[rawType] = { - pointerType: pointerConverter, - constPointerType: constPointerConverter - }; - - replacePublicSymbol(legalFunctionName, constructor); - - return [referenceConverter, pointerConverter, constPointerConverter]; - } - ); - } - - - function new_(constructor, argumentList) { - if (!(constructor instanceof Function)) { - throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function"); - } - /* - * Previously, the following line was just: - * function dummy() {}; - * Unfortunately, Chrome was preserving 'dummy' as the object's name, even - * though at creation, the 'dummy' has the correct constructor name. Thus, - * objects created with IMVU.new would show up in the debugger as 'dummy', - * which isn't very helpful. Using IMVU.createNamedFunction addresses the - * issue. Doublely-unfortunately, there's no way to write a test for this - * behavior. -NRD 2013.02.22 - */ - var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){}); - dummy.prototype = constructor.prototype; - var obj = new dummy; - - var r = constructor.apply(obj, argumentList); - return (r instanceof Object) ? r : obj; - } - - - function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) { - // humanName: a human-readable string name for the function to be generated. - // argTypes: An array that contains the embind type objects for all types in the function signature. - // argTypes[0] is the type object for the function return value. - // argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method. - // argTypes[2...] are the actual function parameters. - // classType: The embind type object for the class to be bound, or null if this is not a method of a class. - // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code. - // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling. - var argCount = argTypes.length; - - if (argCount < 2) { - throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!"); - } - - var isClassMethodFunc = (argTypes[1] !== null && classType !== null); - - // Free functions with signature "void function()" do not need an invoker that marshalls between wire types. - // TODO: This omits argument count check - enable only at -O3 or similar. - // if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) { - // return FUNCTION_TABLE[fn]; - // } - - // Determine if we need to use a dynamic stack to store the destructors for the function parameters. - // TODO: Remove this completely once all function invokers are being dynamically generated. - var needsDestructorStack = false; - - for (var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. - if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack - needsDestructorStack = true; - break; - } - } - - var returns = (argTypes[0].name !== "void"); - - var argsList = ""; - var argsListWired = ""; - for (var i = 0; i < argCount - 2; ++i) { - argsList += (i!==0?", ":"")+"arg"+i; - argsListWired += (i!==0?", ":"")+"arg"+i+"Wired"; - } - - var invokerFnBody = - "return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n" + - "if (arguments.length !== "+(argCount - 2)+") {\n" + - "throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount - 2)+" args!');\n" + - "}\n"; - - if (needsDestructorStack) { - invokerFnBody += "var destructors = [];\n"; - } - - var dtorStack = needsDestructorStack ? "destructors" : "null"; - var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"]; - var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]]; - - if (isClassMethodFunc) { - invokerFnBody += "var thisWired = classParam.toWireType("+dtorStack+", this);\n"; - } - - for (var i = 0; i < argCount - 2; ++i) { - invokerFnBody += "var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n"; - args1.push("argType"+i); - args2.push(argTypes[i+2]); - } - - if (isClassMethodFunc) { - argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired; - } - - invokerFnBody += - (returns?"var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n"; - - if (needsDestructorStack) { - invokerFnBody += "runDestructors(destructors);\n"; - } else { - for (var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method. - var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired")); - if (argTypes[i].destructorFunction !== null) { - invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n"; - args1.push(paramName+"_dtor"); - args2.push(argTypes[i].destructorFunction); - } - } - } - - if (returns) { - invokerFnBody += "var ret = retType.fromWireType(rv);\n" + - "return ret;\n"; - } else { - } - - invokerFnBody += "}\n"; - - args1.push(invokerFnBody); - - var invokerFunction = new_(Function, args1).apply(null, args2); - return invokerFunction; - } - - - function heap32VectorToArray(count, firstElement) { - var array = []; - for (var i = 0; i < count; i++) { - // TODO(https://github.com/emscripten-core/emscripten/issues/17310): - // Find a way to hoist the `>> 2` or `>> 3` out of this loop. - array.push(HEAPU32[(((firstElement)+(i * 4))>>2)]); - } - return array; - } - - - - - function __embind_register_class_class_function(rawClassType, - methodName, - argCount, - rawArgTypesAddr, - invokerSignature, - rawInvoker, - fn) { - var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - methodName = readLatin1String(methodName); - rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); - whenDependentTypesAreResolved([], [rawClassType], function(classType) { - classType = classType[0]; - var humanName = classType.name + '.' + methodName; - - function unboundTypesHandler() { - throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes); - } - - if (methodName.startsWith("@@")) { - methodName = Symbol[methodName.substring(2)]; - } - - var proto = classType.registeredClass.constructor; - if (undefined === proto[methodName]) { - // This is the first function to be registered with this name. - unboundTypesHandler.argCount = argCount-1; - proto[methodName] = unboundTypesHandler; - } else { - // There was an existing function with the same name registered. Set up - // a function overload routing table. - ensureOverloadTable(proto, methodName, humanName); - proto[methodName].overloadTable[argCount-1] = unboundTypesHandler; - } - - whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { - // Replace the initial unbound-types-handler stub with the proper - // function. If multiple overloads are registered, the function handlers - // go into an overload table. - var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */); - var func = craftInvokerFunction(humanName, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn); - if (undefined === proto[methodName].overloadTable) { - func.argCount = argCount-1; - proto[methodName] = func; - } else { - proto[methodName].overloadTable[argCount-1] = func; - } - return []; - }); - return []; - }); - } - - - - - - - - function __embind_register_class_constructor( - rawClassType, - argCount, - rawArgTypesAddr, - invokerSignature, - invoker, - rawConstructor - ) { - assert(argCount > 0); - var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - invoker = embind__requireFunction(invokerSignature, invoker); - var args = [rawConstructor]; - var destructors = []; - - whenDependentTypesAreResolved([], [rawClassType], function(classType) { - classType = classType[0]; - var humanName = 'constructor ' + classType.name; - - if (undefined === classType.registeredClass.constructor_body) { - classType.registeredClass.constructor_body = []; - } - if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) { - throw new BindingError("Cannot register multiple constructors with identical number of parameters (" + (argCount-1) + ") for class '" + classType.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!"); - } - classType.registeredClass.constructor_body[argCount - 1] = () => { - throwUnboundTypeError('Cannot construct ' + classType.name + ' due to unbound types', rawArgTypes); - }; - - whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { - // Insert empty slot for context type (argTypes[1]). - argTypes.splice(1, 0, null); - classType.registeredClass.constructor_body[argCount - 1] = craftInvokerFunction(humanName, argTypes, null, invoker, rawConstructor); - return []; - }); - return []; - }); - } - - - - - - - function __embind_register_class_function(rawClassType, - methodName, - argCount, - rawArgTypesAddr, // [ReturnType, ThisType, Args...] - invokerSignature, - rawInvoker, - context, - isPureVirtual) { - var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); - methodName = readLatin1String(methodName); - rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); - - whenDependentTypesAreResolved([], [rawClassType], function(classType) { - classType = classType[0]; - var humanName = classType.name + '.' + methodName; - - if (methodName.startsWith("@@")) { - methodName = Symbol[methodName.substring(2)]; - } - - if (isPureVirtual) { - classType.registeredClass.pureVirtualFunctions.push(methodName); - } - - function unboundTypesHandler() { - throwUnboundTypeError('Cannot call ' + humanName + ' due to unbound types', rawArgTypes); - } - - var proto = classType.registeredClass.instancePrototype; - var method = proto[methodName]; - if (undefined === method || (undefined === method.overloadTable && method.className !== classType.name && method.argCount === argCount - 2)) { - // This is the first overload to be registered, OR we are replacing a - // function in the base class with a function in the derived class. - unboundTypesHandler.argCount = argCount - 2; - unboundTypesHandler.className = classType.name; - proto[methodName] = unboundTypesHandler; - } else { - // There was an existing function with the same name registered. Set up - // a function overload routing table. - ensureOverloadTable(proto, methodName, humanName); - proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler; - } - - whenDependentTypesAreResolved([], rawArgTypes, function(argTypes) { - var memberFunction = craftInvokerFunction(humanName, argTypes, classType, rawInvoker, context); - - // Replace the initial unbound-handler-stub function with the appropriate member function, now that all types - // are resolved. If multiple overloads are registered for this function, the function goes into an overload table. - if (undefined === proto[methodName].overloadTable) { - // Set argCount in case an overload is registered later - memberFunction.argCount = argCount - 2; - proto[methodName] = memberFunction; - } else { - proto[methodName].overloadTable[argCount - 2] = memberFunction; - } - - return []; - }); - return []; - }); - } - - - - - - - - - function validateThis(this_, classType, humanName) { - if (!(this_ instanceof Object)) { - throwBindingError(humanName + ' with invalid "this": ' + this_); - } - if (!(this_ instanceof classType.registeredClass.constructor)) { - throwBindingError(humanName + ' incompatible with "this" of type ' + this_.constructor.name); - } - if (!this_.$$.ptr) { - throwBindingError('cannot call emscripten binding method ' + humanName + ' on deleted object'); - } - - // todo: kill this - return upcastPointer(this_.$$.ptr, - this_.$$.ptrType.registeredClass, - classType.registeredClass); - } - function __embind_register_class_property(classType, - fieldName, - getterReturnType, - getterSignature, - getter, - getterContext, - setterArgumentType, - setterSignature, - setter, - setterContext) { - fieldName = readLatin1String(fieldName); - getter = embind__requireFunction(getterSignature, getter); - - whenDependentTypesAreResolved([], [classType], function(classType) { - classType = classType[0]; - var humanName = classType.name + '.' + fieldName; - var desc = { - get: function() { - throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]); - }, - enumerable: true, - configurable: true - }; - if (setter) { - desc.set = () => { - throwUnboundTypeError('Cannot access ' + humanName + ' due to unbound types', [getterReturnType, setterArgumentType]); - }; - } else { - desc.set = (v) => { - throwBindingError(humanName + ' is a read-only property'); - }; - } - - Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); - - whenDependentTypesAreResolved( - [], - (setter ? [getterReturnType, setterArgumentType] : [getterReturnType]), - function(types) { - var getterReturnType = types[0]; - var desc = { - get: function() { - var ptr = validateThis(this, classType, humanName + ' getter'); - return getterReturnType['fromWireType'](getter(getterContext, ptr)); - }, - enumerable: true - }; - - if (setter) { - setter = embind__requireFunction(setterSignature, setter); - var setterArgumentType = types[1]; - desc.set = function(v) { - var ptr = validateThis(this, classType, humanName + ' setter'); - var destructors = []; - setter(setterContext, ptr, setterArgumentType['toWireType'](destructors, v)); - runDestructors(destructors); - }; - } - - Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); - return []; - }); - - return []; - }); - } - - var emval_free_list = []; - - var emval_handle_array = [{},{value:undefined},{value:null},{value:true},{value:false}]; - function __emval_decref(handle) { - if (handle > 4 && 0 === --emval_handle_array[handle].refcount) { - emval_handle_array[handle] = undefined; - emval_free_list.push(handle); - } - } - - - - - function count_emval_handles() { - var count = 0; - for (var i = 5; i < emval_handle_array.length; ++i) { - if (emval_handle_array[i] !== undefined) { - ++count; - } - } - return count; - } - - function get_first_emval() { - for (var i = 5; i < emval_handle_array.length; ++i) { - if (emval_handle_array[i] !== undefined) { - return emval_handle_array[i]; - } - } - return null; - } - function init_emval() { - Module['count_emval_handles'] = count_emval_handles; - Module['get_first_emval'] = get_first_emval; - } - var Emval = {toValue:(handle) => { - if (!handle) { - throwBindingError('Cannot use deleted val. handle = ' + handle); - } - return emval_handle_array[handle].value; - },toHandle:(value) => { - switch (value) { - case undefined: return 1; - case null: return 2; - case true: return 3; - case false: return 4; - default:{ - var handle = emval_free_list.length ? - emval_free_list.pop() : - emval_handle_array.length; - - emval_handle_array[handle] = {refcount: 1, value: value}; - return handle; - } - } - }}; - - - - function __embind_register_emval(rawType, name) { - name = readLatin1String(name); - registerType(rawType, { - name: name, - 'fromWireType': function(handle) { - var rv = Emval.toValue(handle); - __emval_decref(handle); - return rv; - }, - 'toWireType': function(destructors, value) { - return Emval.toHandle(value); - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: null, // This type does not need a destructor - - // TODO: do we need a deleteObject here? write a test where - // emval is passed into JS via an interface - }); - } - - - - function enumReadValueFromPointer(name, shift, signed) { - switch (shift) { - case 0: return function(pointer) { - var heap = signed ? HEAP8 : HEAPU8; - return this['fromWireType'](heap[pointer]); - }; - case 1: return function(pointer) { - var heap = signed ? HEAP16 : HEAPU16; - return this['fromWireType'](heap[pointer >> 1]); - }; - case 2: return function(pointer) { - var heap = signed ? HEAP32 : HEAPU32; - return this['fromWireType'](heap[pointer >> 2]); - }; - default: - throw new TypeError("Unknown integer type: " + name); - } - } - - - function __embind_register_enum(rawType, name, size, isSigned) { - var shift = getShiftFromSize(size); - name = readLatin1String(name); - - function ctor() {} - ctor.values = {}; - - registerType(rawType, { - name: name, - constructor: ctor, - 'fromWireType': function(c) { - return this.constructor.values[c]; - }, - 'toWireType': function(destructors, c) { - return c.value; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': enumReadValueFromPointer(name, shift, isSigned), - destructorFunction: null, - }); - exposePublicSymbol(name, ctor); - } - - - - - - function requireRegisteredType(rawType, humanName) { - var impl = registeredTypes[rawType]; - if (undefined === impl) { - throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); - } - return impl; - } - function __embind_register_enum_value(rawEnumType, name, enumValue) { - var enumType = requireRegisteredType(rawEnumType, 'enum'); - name = readLatin1String(name); - - var Enum = enumType.constructor; - - var Value = Object.create(enumType.constructor.prototype, { - value: {value: enumValue}, - constructor: {value: createNamedFunction(enumType.name + '_' + name, function() {})}, - }); - Enum.values[enumValue] = Value; - Enum[name] = Value; - } - - function embindRepr(v) { - if (v === null) { - return 'null'; - } - var t = typeof v; - if (t === 'object' || t === 'array' || t === 'function') { - return v.toString(); - } else { - return '' + v; - } - } - - function floatReadValueFromPointer(name, shift) { - switch (shift) { - case 2: return function(pointer) { - return this['fromWireType'](HEAPF32[pointer >> 2]); - }; - case 3: return function(pointer) { - return this['fromWireType'](HEAPF64[pointer >> 3]); - }; - default: - throw new TypeError("Unknown float type: " + name); - } - } - - - - function __embind_register_float(rawType, name, size) { - var shift = getShiftFromSize(size); - name = readLatin1String(name); - registerType(rawType, { - name: name, - 'fromWireType': function(value) { - return value; - }, - 'toWireType': function(destructors, value) { - if (typeof value != "number" && typeof value != "boolean") { - throw new TypeError('Cannot convert "' + embindRepr(value) + '" to ' + this.name); - } - // The VM will perform JS to Wasm value conversion, according to the spec: - // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue - return value; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': floatReadValueFromPointer(name, shift), - destructorFunction: null, // This type does not need a destructor - }); - } - - - - function integerReadValueFromPointer(name, shift, signed) { - // integers are quite common, so generate very specialized functions - switch (shift) { - case 0: return signed ? - function readS8FromPointer(pointer) { return HEAP8[pointer]; } : - function readU8FromPointer(pointer) { return HEAPU8[pointer]; }; - case 1: return signed ? - function readS16FromPointer(pointer) { return HEAP16[pointer >> 1]; } : - function readU16FromPointer(pointer) { return HEAPU16[pointer >> 1]; }; - case 2: return signed ? - function readS32FromPointer(pointer) { return HEAP32[pointer >> 2]; } : - function readU32FromPointer(pointer) { return HEAPU32[pointer >> 2]; }; - default: - throw new TypeError("Unknown integer type: " + name); - } - } - - - function __embind_register_integer(primitiveType, name, size, minRange, maxRange) { - name = readLatin1String(name); - // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come - // out as 'i32 -1'. Always treat those as max u32. - if (maxRange === -1) { - maxRange = 4294967295; - } - - var shift = getShiftFromSize(size); - - var fromWireType = (value) => value; - - if (minRange === 0) { - var bitshift = 32 - 8*size; - fromWireType = (value) => (value << bitshift) >>> bitshift; - } - - var isUnsignedType = (name.includes('unsigned')); - var checkAssertions = (value, toTypeName) => { - if (typeof value != "number" && typeof value != "boolean") { - throw new TypeError('Cannot convert "' + embindRepr(value) + '" to ' + toTypeName); - } - if (value < minRange || value > maxRange) { - throw new TypeError('Passing a number "' + embindRepr(value) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ', ' + maxRange + ']!'); - } - } - var toWireType; - if (isUnsignedType) { - toWireType = function(destructors, value) { - checkAssertions(value, this.name); - return value >>> 0; - } - } else { - toWireType = function(destructors, value) { - checkAssertions(value, this.name); - // The VM will perform JS to Wasm value conversion, according to the spec: - // https://www.w3.org/TR/wasm-js-api-1/#towebassemblyvalue - return value; - } - } - registerType(primitiveType, { - name: name, - 'fromWireType': fromWireType, - 'toWireType': toWireType, - 'argPackAdvance': 8, - 'readValueFromPointer': integerReadValueFromPointer(name, shift, minRange !== 0), - destructorFunction: null, // This type does not need a destructor - }); - } - - - function __embind_register_memory_view(rawType, dataTypeIndex, name) { - var typeMapping = [ - Int8Array, - Uint8Array, - Int16Array, - Uint16Array, - Int32Array, - Uint32Array, - Float32Array, - Float64Array, - ]; - - var TA = typeMapping[dataTypeIndex]; - - function decodeMemoryView(handle) { - handle = handle >> 2; - var heap = HEAPU32; - var size = heap[handle]; // in elements - var data = heap[handle + 1]; // byte offset into emscripten heap - return new TA(heap.buffer, data, size); - } - - name = readLatin1String(name); - registerType(rawType, { - name: name, - 'fromWireType': decodeMemoryView, - 'argPackAdvance': 8, - 'readValueFromPointer': decodeMemoryView, - }, { - ignoreDuplicateRegistrations: true, - }); - } - - - - - function __embind_register_std_string(rawType, name) { - name = readLatin1String(name); - var stdStringIsUTF8 - //process only std::string bindings with UTF8 support, in contrast to e.g. std::basic_string - = (name === "std::string"); - - registerType(rawType, { - name: name, - 'fromWireType': function(value) { - var length = HEAPU32[((value)>>2)]; - var payload = value + 4; - - var str; - if (stdStringIsUTF8) { - var decodeStartPtr = payload; - // Looping here to support possible embedded '0' bytes - for (var i = 0; i <= length; ++i) { - var currentBytePtr = payload + i; - if (i == length || HEAPU8[currentBytePtr] == 0) { - var maxRead = currentBytePtr - decodeStartPtr; - var stringSegment = UTF8ToString(decodeStartPtr, maxRead); - if (str === undefined) { - str = stringSegment; - } else { - str += String.fromCharCode(0); - str += stringSegment; - } - decodeStartPtr = currentBytePtr + 1; - } - } - } else { - var a = new Array(length); - for (var i = 0; i < length; ++i) { - a[i] = String.fromCharCode(HEAPU8[payload + i]); - } - str = a.join(''); - } - - _free(value); - - return str; - }, - 'toWireType': function(destructors, value) { - if (value instanceof ArrayBuffer) { - value = new Uint8Array(value); - } - - var length; - var valueIsOfTypeString = (typeof value == 'string'); - - if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) { - throwBindingError('Cannot pass non-string to std::string'); - } - if (stdStringIsUTF8 && valueIsOfTypeString) { - length = lengthBytesUTF8(value); - } else { - length = value.length; - } - - // assumes 4-byte alignment - var base = _malloc(4 + length + 1); - var ptr = base + 4; - HEAPU32[((base)>>2)] = length; - if (stdStringIsUTF8 && valueIsOfTypeString) { - stringToUTF8(value, ptr, length + 1); - } else { - if (valueIsOfTypeString) { - for (var i = 0; i < length; ++i) { - var charCode = value.charCodeAt(i); - if (charCode > 255) { - _free(ptr); - throwBindingError('String has UTF-16 code units that do not fit in 8 bits'); - } - HEAPU8[ptr + i] = charCode; - } - } else { - for (var i = 0; i < length; ++i) { - HEAPU8[ptr + i] = value[i]; - } - } - } - - if (destructors !== null) { - destructors.push(_free, base); - } - return base; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: function(ptr) { _free(ptr); }, - }); - } - - - - - var UTF16Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf-16le') : undefined;; - function UTF16ToString(ptr, maxBytesToRead) { - assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); - var endPtr = ptr; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. - // Also, use the length info to avoid running tiny strings through - // TextDecoder, since .subarray() allocates garbage. - var idx = endPtr >> 1; - var maxIdx = idx + maxBytesToRead / 2; - // If maxBytesToRead is not passed explicitly, it will be undefined, and this - // will always evaluate to true. This saves on code size. - while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; - endPtr = idx << 1; - - if (endPtr - ptr > 32 && UTF16Decoder) - return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); - - // Fallback: decode without UTF16Decoder - var str = ''; - - // If maxBytesToRead is not passed explicitly, it will be undefined, and the - // for-loop's condition will always evaluate to true. The loop is then - // terminated on the first null char. - for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { - var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; - if (codeUnit == 0) break; - // fromCharCode constructs a character from a UTF-16 code unit, so we can - // pass the UTF16 string right through. - str += String.fromCharCode(codeUnit); - } - - return str; - } - - function stringToUTF16(str, outPtr, maxBytesToWrite) { - assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 2) return 0; - maxBytesToWrite -= 2; // Null terminator. - var startPtr = outPtr; - var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; - for (var i = 0; i < numCharsToWrite; ++i) { - // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - HEAP16[((outPtr)>>1)] = codeUnit; - outPtr += 2; - } - // Null-terminate the pointer to the HEAP. - HEAP16[((outPtr)>>1)] = 0; - return outPtr - startPtr; - } - - function lengthBytesUTF16(str) { - return str.length*2; - } - - function UTF32ToString(ptr, maxBytesToRead) { - assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); - var i = 0; - - var str = ''; - // If maxBytesToRead is not passed explicitly, it will be undefined, and this - // will always evaluate to true. This saves on code size. - while (!(i >= maxBytesToRead / 4)) { - var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; - if (utf32 == 0) break; - ++i; - // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - if (utf32 >= 0x10000) { - var ch = utf32 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } else { - str += String.fromCharCode(utf32); - } - } - return str; - } - - function stringToUTF32(str, outPtr, maxBytesToWrite) { - assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); - assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. - if (maxBytesToWrite === undefined) { - maxBytesToWrite = 0x7FFFFFFF; - } - if (maxBytesToWrite < 4) return 0; - var startPtr = outPtr; - var endPtr = startPtr + maxBytesToWrite - 4; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); // possibly a lead surrogate - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { - var trailSurrogate = str.charCodeAt(++i); - codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); - } - HEAP32[((outPtr)>>2)] = codeUnit; - outPtr += 4; - if (outPtr + 4 > endPtr) break; - } - // Null-terminate the pointer to the HEAP. - HEAP32[((outPtr)>>2)] = 0; - return outPtr - startPtr; - } - - function lengthBytesUTF32(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var codeUnit = str.charCodeAt(i); - if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. - len += 4; - } - - return len; - } - function __embind_register_std_wstring(rawType, charSize, name) { - name = readLatin1String(name); - var decodeString, encodeString, getHeap, lengthBytesUTF, shift; - if (charSize === 2) { - decodeString = UTF16ToString; - encodeString = stringToUTF16; - lengthBytesUTF = lengthBytesUTF16; - getHeap = () => HEAPU16; - shift = 1; - } else if (charSize === 4) { - decodeString = UTF32ToString; - encodeString = stringToUTF32; - lengthBytesUTF = lengthBytesUTF32; - getHeap = () => HEAPU32; - shift = 2; - } - registerType(rawType, { - name: name, - 'fromWireType': function(value) { - // Code mostly taken from _embind_register_std_string fromWireType - var length = HEAPU32[value >> 2]; - var HEAP = getHeap(); - var str; - - var decodeStartPtr = value + 4; - // Looping here to support possible embedded '0' bytes - for (var i = 0; i <= length; ++i) { - var currentBytePtr = value + 4 + i * charSize; - if (i == length || HEAP[currentBytePtr >> shift] == 0) { - var maxReadBytes = currentBytePtr - decodeStartPtr; - var stringSegment = decodeString(decodeStartPtr, maxReadBytes); - if (str === undefined) { - str = stringSegment; - } else { - str += String.fromCharCode(0); - str += stringSegment; - } - decodeStartPtr = currentBytePtr + charSize; - } - } - - _free(value); - - return str; - }, - 'toWireType': function(destructors, value) { - if (!(typeof value == 'string')) { - throwBindingError('Cannot pass non-string to C++ string type ' + name); - } - - // assumes 4-byte alignment - var length = lengthBytesUTF(value); - var ptr = _malloc(4 + length + charSize); - HEAPU32[ptr >> 2] = length >> shift; - - encodeString(value, ptr + 4, length + charSize); - - if (destructors !== null) { - destructors.push(_free, ptr); - } - return ptr; - }, - 'argPackAdvance': 8, - 'readValueFromPointer': simpleReadValueFromPointer, - destructorFunction: function(ptr) { _free(ptr); }, - }); - } - - - - function __embind_register_value_array( - rawType, - name, - constructorSignature, - rawConstructor, - destructorSignature, - rawDestructor - ) { - tupleRegistrations[rawType] = { - name: readLatin1String(name), - rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), - rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), - elements: [], - }; - } - - - function __embind_register_value_array_element( - rawTupleType, - getterReturnType, - getterSignature, - getter, - getterContext, - setterArgumentType, - setterSignature, - setter, - setterContext - ) { - tupleRegistrations[rawTupleType].elements.push({ - getterReturnType: getterReturnType, - getter: embind__requireFunction(getterSignature, getter), - getterContext: getterContext, - setterArgumentType: setterArgumentType, - setter: embind__requireFunction(setterSignature, setter), - setterContext: setterContext, - }); - } - - - - function __embind_register_value_object( - rawType, - name, - constructorSignature, - rawConstructor, - destructorSignature, - rawDestructor - ) { - structRegistrations[rawType] = { - name: readLatin1String(name), - rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), - rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), - fields: [], - }; - } - - - - function __embind_register_value_object_field( - structType, - fieldName, - getterReturnType, - getterSignature, - getter, - getterContext, - setterArgumentType, - setterSignature, - setter, - setterContext - ) { - structRegistrations[structType].fields.push({ - fieldName: readLatin1String(fieldName), - getterReturnType: getterReturnType, - getter: embind__requireFunction(getterSignature, getter), - getterContext: getterContext, - setterArgumentType: setterArgumentType, - setter: embind__requireFunction(setterSignature, setter), - setterContext: setterContext, - }); - } - - - function __embind_register_void(rawType, name) { - name = readLatin1String(name); - registerType(rawType, { - isVoid: true, // void return values can be optimized out sometimes - name: name, - 'argPackAdvance': 0, - 'fromWireType': function() { - return undefined; - }, - 'toWireType': function(destructors, o) { - // TODO: assert if anything else is given? - return undefined; - }, - }); - } - - var nowIsMonotonic = true;; - function __emscripten_get_now_is_monotonic() { - return nowIsMonotonic; - } - - - function __emval_as(handle, returnType, destructorsRef) { - handle = Emval.toValue(handle); - returnType = requireRegisteredType(returnType, 'emval::as'); - var destructors = []; - var rd = Emval.toHandle(destructors); - HEAPU32[((destructorsRef)>>2)] = rd; - return returnType['toWireType'](destructors, handle); - } - - function emval_allocateDestructors(destructorsRef) { - var destructors = []; - HEAPU32[((destructorsRef)>>2)] = Emval.toHandle(destructors); - return destructors; - } - - var emval_symbols = {}; - - function getStringOrSymbol(address) { - var symbol = emval_symbols[address]; - if (symbol === undefined) { - return readLatin1String(address); - } - return symbol; - } - - var emval_methodCallers = []; - - function __emval_call_method(caller, handle, methodName, destructorsRef, args) { - caller = emval_methodCallers[caller]; - handle = Emval.toValue(handle); - methodName = getStringOrSymbol(methodName); - return caller(handle, methodName, emval_allocateDestructors(destructorsRef), args); - } - - - - - function __emval_call_void_method(caller, handle, methodName, args) { - caller = emval_methodCallers[caller]; - handle = Emval.toValue(handle); - methodName = getStringOrSymbol(methodName); - caller(handle, methodName, null, args); - } - - - function __emval_equals(first, second) { - first = Emval.toValue(first); - second = Emval.toValue(second); - return first == second; - } - - - - function emval_get_global() { - if (typeof globalThis == 'object') { - return globalThis; - } - return (function(){ - return Function; - })()('return this')(); - } - function __emval_get_global(name) { - if (name===0) { - return Emval.toHandle(emval_get_global()); - } else { - name = getStringOrSymbol(name); - return Emval.toHandle(emval_get_global()[name]); - } - } - - function emval_addMethodCaller(caller) { - var id = emval_methodCallers.length; - emval_methodCallers.push(caller); - return id; - } - - function emval_lookupTypes(argCount, argTypes) { - var a = new Array(argCount); - for (var i = 0; i < argCount; ++i) { - a[i] = requireRegisteredType(HEAPU32[(((argTypes)+(i * POINTER_SIZE))>>2)], - "parameter " + i); - } - return a; - } - - - - var emval_registeredMethods = []; - function __emval_get_method_caller(argCount, argTypes) { - var types = emval_lookupTypes(argCount, argTypes); - var retType = types[0]; - var signatureName = retType.name + "_$" + types.slice(1).map(function (t) { return t.name; }).join("_") + "$"; - var returnId = emval_registeredMethods[signatureName]; - if (returnId !== undefined) { - return returnId; - } - - var params = ["retType"]; - var args = [retType]; - - var argsList = ""; // 'arg0, arg1, arg2, ... , argN' - for (var i = 0; i < argCount - 1; ++i) { - argsList += (i !== 0 ? ", " : "") + "arg" + i; - params.push("argType" + i); - args.push(types[1 + i]); - } - - var functionName = makeLegalFunctionName("methodCaller_" + signatureName); - var functionBody = - "return function " + functionName + "(handle, name, destructors, args) {\n"; - - var offset = 0; - for (var i = 0; i < argCount - 1; ++i) { - functionBody += - " var arg" + i + " = argType" + i + ".readValueFromPointer(args" + (offset ? ("+"+offset) : "") + ");\n"; - offset += types[i + 1]['argPackAdvance']; - } - functionBody += - " var rv = handle[name](" + argsList + ");\n"; - for (var i = 0; i < argCount - 1; ++i) { - if (types[i + 1]['deleteObject']) { - functionBody += - " argType" + i + ".deleteObject(arg" + i + ");\n"; - } - } - if (!retType.isVoid) { - functionBody += - " return retType.toWireType(destructors, rv);\n"; - } - functionBody += - "};\n"; - - params.push(functionBody); - var invokerFunction = new_(Function, params).apply(null, args); - returnId = emval_addMethodCaller(invokerFunction); - emval_registeredMethods[signatureName] = returnId; - return returnId; - } - - - function __emval_get_module_property(name) { - name = getStringOrSymbol(name); - return Emval.toHandle(Module[name]); - } - - function __emval_get_property(handle, key) { - handle = Emval.toValue(handle); - key = Emval.toValue(key); - return Emval.toHandle(handle[key]); - } - - function __emval_incref(handle) { - if (handle > 4) { - emval_handle_array[handle].refcount += 1; - } - } - - function __emval_instanceof(object, constructor) { - object = Emval.toValue(object); - constructor = Emval.toValue(constructor); - return object instanceof constructor; - } - - function __emval_is_number(handle) { - handle = Emval.toValue(handle); - return typeof handle == 'number'; - } - - function __emval_is_string(handle) { - handle = Emval.toValue(handle); - return typeof handle == 'string'; - } - - - function craftEmvalAllocator(argCount) { - /*This function returns a new function that looks like this: - function emval_allocator_3(constructor, argTypes, args) { - var argType0 = requireRegisteredType(HEAP32[(argTypes >> 2)], "parameter 0"); - var arg0 = argType0['readValueFromPointer'](args); - var argType1 = requireRegisteredType(HEAP32[(argTypes >> 2) + 1], "parameter 1"); - var arg1 = argType1['readValueFromPointer'](args + 8); - var argType2 = requireRegisteredType(HEAP32[(argTypes >> 2) + 2], "parameter 2"); - var arg2 = argType2['readValueFromPointer'](args + 16); - var obj = new constructor(arg0, arg1, arg2); - return Emval.toHandle(obj); - } */ - var argsList = ""; - for (var i = 0; i < argCount; ++i) { - argsList += (i!==0?", ":"")+"arg"+i; // 'arg0, arg1, ..., argn' - } - - // The body of the generated function does not have access to enclosing - // scope where HEAPU64/HEAPU32/etc are defined, and we cannot pass them - // directly as arguments (like we do the Module object) since memory - // growth can cause them to be re-bound. - var getMemory = () => HEAPU32; - - var functionBody = - "return function emval_allocator_"+argCount+"(constructor, argTypes, args) {\n" + - " var HEAPU32 = getMemory();\n"; - - for (var i = 0; i < argCount; ++i) { - functionBody += - "var argType"+i+" = requireRegisteredType(HEAPU32[((argTypes)>>2)], 'parameter "+i+"');\n" + - "var arg"+i+" = argType"+i+".readValueFromPointer(args);\n" + - "args += argType"+i+"['argPackAdvance'];\n" + - "argTypes += 4;\n"; - } - functionBody += - "var obj = new constructor("+argsList+");\n" + - "return valueToHandle(obj);\n" + - "}\n"; - - /*jshint evil:true*/ - return (new Function("requireRegisteredType", "Module", "valueToHandle", "getMemory" , functionBody))( - requireRegisteredType, Module, Emval.toHandle, getMemory); - } - - var emval_newers = {}; - - function __emval_new(handle, argCount, argTypes, args) { - handle = Emval.toValue(handle); - - var newer = emval_newers[argCount]; - if (!newer) { - newer = craftEmvalAllocator(argCount); - emval_newers[argCount] = newer; - } - - return newer(handle, argTypes, args); - } - - function __emval_new_array() { - return Emval.toHandle([]); - } - - - function __emval_new_cstring(v) { - return Emval.toHandle(getStringOrSymbol(v)); - } - - function __emval_new_object() { - return Emval.toHandle({}); - } - - - - function __emval_run_destructors(handle) { - var destructors = Emval.toValue(handle); - runDestructors(destructors); - __emval_decref(handle); - } - - function __emval_set_property(handle, key, value) { - handle = Emval.toValue(handle); - key = Emval.toValue(key); - value = Emval.toValue(value); - handle[key] = value; - } - - - function __emval_take_value(type, arg) { - type = requireRegisteredType(type, '_emval_take_value'); - var v = type['readValueFromPointer'](arg); - return Emval.toHandle(v); - } - - function readI53FromI64(ptr) { - return HEAPU32[ptr>>2] + HEAP32[ptr+4>>2] * 4294967296; - } - function __gmtime_js(time, tmPtr) { - var date = new Date(readI53FromI64(time)*1000); - HEAP32[((tmPtr)>>2)] = date.getUTCSeconds(); - HEAP32[(((tmPtr)+(4))>>2)] = date.getUTCMinutes(); - HEAP32[(((tmPtr)+(8))>>2)] = date.getUTCHours(); - HEAP32[(((tmPtr)+(12))>>2)] = date.getUTCDate(); - HEAP32[(((tmPtr)+(16))>>2)] = date.getUTCMonth(); - HEAP32[(((tmPtr)+(20))>>2)] = date.getUTCFullYear()-1900; - HEAP32[(((tmPtr)+(24))>>2)] = date.getUTCDay(); - var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); - var yday = ((date.getTime() - start) / (1000 * 60 * 60 * 24))|0; - HEAP32[(((tmPtr)+(28))>>2)] = yday; - } - - - function __isLeapYear(year) { - return year%4 === 0 && (year%100 !== 0 || year%400 === 0); - } - - var __MONTH_DAYS_LEAP_CUMULATIVE = [0,31,60,91,121,152,182,213,244,274,305,335]; - - var __MONTH_DAYS_REGULAR_CUMULATIVE = [0,31,59,90,120,151,181,212,243,273,304,334]; - function __yday_from_date(date) { - var isLeapYear = __isLeapYear(date.getFullYear()); - var monthDaysCumulative = (isLeapYear ? __MONTH_DAYS_LEAP_CUMULATIVE : __MONTH_DAYS_REGULAR_CUMULATIVE); - var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; // -1 since it's days since Jan 1 - - return yday; - } - function __localtime_js(time, tmPtr) { - var date = new Date(readI53FromI64(time)*1000); - HEAP32[((tmPtr)>>2)] = date.getSeconds(); - HEAP32[(((tmPtr)+(4))>>2)] = date.getMinutes(); - HEAP32[(((tmPtr)+(8))>>2)] = date.getHours(); - HEAP32[(((tmPtr)+(12))>>2)] = date.getDate(); - HEAP32[(((tmPtr)+(16))>>2)] = date.getMonth(); - HEAP32[(((tmPtr)+(20))>>2)] = date.getFullYear()-1900; - HEAP32[(((tmPtr)+(24))>>2)] = date.getDay(); - - var yday = __yday_from_date(date)|0; - HEAP32[(((tmPtr)+(28))>>2)] = yday; - HEAP32[(((tmPtr)+(36))>>2)] = -(date.getTimezoneOffset() * 60); - - // Attention: DST is in December in South, and some regions don't have DST at all. - var start = new Date(date.getFullYear(), 0, 1); - var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); - var winterOffset = start.getTimezoneOffset(); - var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset))|0; - HEAP32[(((tmPtr)+(32))>>2)] = dst; - } - - function __mktime_js(tmPtr) { - var date = new Date(HEAP32[(((tmPtr)+(20))>>2)] + 1900, - HEAP32[(((tmPtr)+(16))>>2)], - HEAP32[(((tmPtr)+(12))>>2)], - HEAP32[(((tmPtr)+(8))>>2)], - HEAP32[(((tmPtr)+(4))>>2)], - HEAP32[((tmPtr)>>2)], - 0); - - // There's an ambiguous hour when the time goes back; the tm_isdst field is - // used to disambiguate it. Date() basically guesses, so we fix it up if it - // guessed wrong, or fill in tm_isdst with the guess if it's -1. - var dst = HEAP32[(((tmPtr)+(32))>>2)]; - var guessedOffset = date.getTimezoneOffset(); - var start = new Date(date.getFullYear(), 0, 1); - var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); - var winterOffset = start.getTimezoneOffset(); - var dstOffset = Math.min(winterOffset, summerOffset); // DST is in December in South - if (dst < 0) { - // Attention: some regions don't have DST at all. - HEAP32[(((tmPtr)+(32))>>2)] = Number(summerOffset != winterOffset && dstOffset == guessedOffset); - } else if ((dst > 0) != (dstOffset == guessedOffset)) { - var nonDstOffset = Math.max(winterOffset, summerOffset); - var trueOffset = dst > 0 ? dstOffset : nonDstOffset; - // Don't try setMinutes(date.getMinutes() + ...) -- it's messed up. - date.setTime(date.getTime() + (trueOffset - guessedOffset)*60000); - } - - HEAP32[(((tmPtr)+(24))>>2)] = date.getDay(); - var yday = __yday_from_date(date)|0; - HEAP32[(((tmPtr)+(28))>>2)] = yday; - // To match expected behavior, update fields from date - HEAP32[((tmPtr)>>2)] = date.getSeconds(); - HEAP32[(((tmPtr)+(4))>>2)] = date.getMinutes(); - HEAP32[(((tmPtr)+(8))>>2)] = date.getHours(); - HEAP32[(((tmPtr)+(12))>>2)] = date.getDate(); - HEAP32[(((tmPtr)+(16))>>2)] = date.getMonth(); - HEAP32[(((tmPtr)+(20))>>2)] = date.getYear(); - - return (date.getTime() / 1000)|0; - } - - function allocateUTF8(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = _malloc(size); - if (ret) stringToUTF8Array(str, HEAP8, ret, size); - return ret; - } - function __tzset_js(timezone, daylight, tzname) { - // TODO: Use (malleable) environment variables instead of system settings. - var currentYear = new Date().getFullYear(); - var winter = new Date(currentYear, 0, 1); - var summer = new Date(currentYear, 6, 1); - var winterOffset = winter.getTimezoneOffset(); - var summerOffset = summer.getTimezoneOffset(); - - // Local standard timezone offset. Local standard time is not adjusted for daylight savings. - // This code uses the fact that getTimezoneOffset returns a greater value during Standard Time versus Daylight Saving Time (DST). - // Thus it determines the expected output during Standard Time, and it compares whether the output of the given date the same (Standard) or less (DST). - var stdTimezoneOffset = Math.max(winterOffset, summerOffset); - - // timezone is specified as seconds west of UTC ("The external variable - // `timezone` shall be set to the difference, in seconds, between - // Coordinated Universal Time (UTC) and local standard time."), the same - // as returned by stdTimezoneOffset. - // See http://pubs.opengroup.org/onlinepubs/009695399/functions/tzset.html - HEAPU32[((timezone)>>2)] = stdTimezoneOffset * 60; - - HEAP32[((daylight)>>2)] = Number(winterOffset != summerOffset); - - function extractZone(date) { - var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); - return match ? match[1] : "GMT"; - }; - var winterName = extractZone(winter); - var summerName = extractZone(summer); - var winterNamePtr = allocateUTF8(winterName); - var summerNamePtr = allocateUTF8(summerName); - if (summerOffset < winterOffset) { - // Northern hemisphere - HEAPU32[((tzname)>>2)] = winterNamePtr; - HEAPU32[(((tzname)+(4))>>2)] = summerNamePtr; - } else { - HEAPU32[((tzname)>>2)] = summerNamePtr; - HEAPU32[(((tzname)+(4))>>2)] = winterNamePtr; - } - } - - function _abort() { - abort('native code called abort()'); - } - - function _emscripten_console_error(str) { - assert(typeof str == 'number'); - console.error(UTF8ToString(str)); - } - - function _emscripten_date_now() { - return Date.now(); - } - - function getHeapMax() { - // Stay one Wasm page short of 4GB: while e.g. Chrome is able to allocate - // full 4GB Wasm memories, the size will wrap back to 0 bytes in Wasm side - // for any code that deals with heap sizes, which would require special - // casing all heap size related code to treat 0 specially. - return 2147483648; - } - function _emscripten_get_heap_max() { - return getHeapMax(); - } - - var _emscripten_get_now;if (ENVIRONMENT_IS_NODE) { - _emscripten_get_now = () => { - var t = process['hrtime'](); - return t[0] * 1e3 + t[1] / 1e6; - }; - } else _emscripten_get_now = () => performance.now(); - ; - - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num); - } - - - function emscripten_realloc_buffer(size) { - var b = wasmMemory.buffer; - try { - // round size grow request up to wasm page size (fixed 64KB per spec) - wasmMemory.grow((size - b.byteLength + 65535) >>> 16); // .grow() takes a delta compared to the previous size - updateMemoryViews(); - return 1 /*success*/; - } catch(e) { - err('emscripten_realloc_buffer: Attempted to grow heap from ' + b.byteLength + ' bytes to ' + size + ' bytes, but got error: ' + e); - } - // implicit 0 return to save code size (caller will cast "undefined" into 0 - // anyhow) - } - function _emscripten_resize_heap(requestedSize) { - var oldSize = HEAPU8.length; - requestedSize = requestedSize >>> 0; - // With multithreaded builds, races can happen (another thread might increase the size - // in between), so return a failure, and let the caller retry. - assert(requestedSize > oldSize); - - // Memory resize rules: - // 1. Always increase heap size to at least the requested size, rounded up - // to next page multiple. - // 2a. If MEMORY_GROWTH_LINEAR_STEP == -1, excessively resize the heap - // geometrically: increase the heap size according to - // MEMORY_GROWTH_GEOMETRIC_STEP factor (default +20%), At most - // overreserve by MEMORY_GROWTH_GEOMETRIC_CAP bytes (default 96MB). - // 2b. If MEMORY_GROWTH_LINEAR_STEP != -1, excessively resize the heap - // linearly: increase the heap size by at least - // MEMORY_GROWTH_LINEAR_STEP bytes. - // 3. Max size for the heap is capped at 2048MB-WASM_PAGE_SIZE, or by - // MAXIMUM_MEMORY, or by ASAN limit, depending on which is smallest - // 4. If we were unable to allocate as much memory, it may be due to - // over-eager decision to excessively reserve due to (3) above. - // Hence if an allocation fails, cut down on the amount of excess - // growth, in an attempt to succeed to perform a smaller allocation. - - // A limit is set for how much we can grow. We should not exceed that - // (the wasm binary specifies it, so if we tried, we'd fail anyhow). - var maxHeapSize = getHeapMax(); - if (requestedSize > maxHeapSize) { - err('Cannot enlarge memory, asked to go up to ' + requestedSize + ' bytes, but the limit is ' + maxHeapSize + ' bytes!'); - return false; - } - - let alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; - - // Loop through potential heap size increases. If we attempt a too eager - // reservation that fails, cut down on the attempted size and reserve a - // smaller bump instead. (max 3 times, chosen somewhat arbitrarily) - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); // ensure geometric growth - // but limit overreserving (default to capping at +96MB overgrowth at most) - overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296 ); - - var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); - - var replacement = emscripten_realloc_buffer(newSize); - if (replacement) { - - return true; - } - } - err('Failed to grow the heap from ' + oldSize + ' bytes to ' + newSize + ' bytes, not enough memory!'); - return false; - } - - var ENV = {}; - - function getExecutableName() { - return thisProgram || './this.program'; - } - function getEnvStrings() { - if (!getEnvStrings.strings) { - // Default values. - // Browser language detection #8751 - var lang = ((typeof navigator == 'object' && navigator.languages && navigator.languages[0]) || 'C').replace('-', '_') + '.UTF-8'; - var env = { - 'USER': 'web_user', - 'LOGNAME': 'web_user', - 'PATH': '/', - 'PWD': '/', - 'HOME': '/home/web_user', - 'LANG': lang, - '_': getExecutableName() - }; - // Apply the user-provided values, if any. - for (var x in ENV) { - // x is a key in ENV; if ENV[x] is undefined, that means it was - // explicitly set to be so. We allow user code to do that to - // force variables with default values to remain unset. - if (ENV[x] === undefined) delete env[x]; - else env[x] = ENV[x]; - } - var strings = []; - for (var x in env) { - strings.push(x + '=' + env[x]); - } - getEnvStrings.strings = strings; - } - return getEnvStrings.strings; - } - - /** @param {boolean=} dontAddNull */ - function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; ++i) { - assert(str.charCodeAt(i) === (str.charCodeAt(i) & 0xff)); - HEAP8[((buffer++)>>0)] = str.charCodeAt(i); - } - // Null-terminate the pointer to the HEAP. - if (!dontAddNull) HEAP8[((buffer)>>0)] = 0; - } - - function _environ_get(__environ, environ_buf) { - var bufSize = 0; - getEnvStrings().forEach(function(string, i) { - var ptr = environ_buf + bufSize; - HEAPU32[(((__environ)+(i*4))>>2)] = ptr; - writeAsciiToMemory(string, ptr); - bufSize += string.length + 1; - }); - return 0; - } - - - function _environ_sizes_get(penviron_count, penviron_buf_size) { - var strings = getEnvStrings(); - HEAPU32[((penviron_count)>>2)] = strings.length; - var bufSize = 0; - strings.forEach(function(string) { - bufSize += string.length + 1; - }); - HEAPU32[((penviron_buf_size)>>2)] = bufSize; - return 0; - } - - - function _proc_exit(code) { - EXITSTATUS = code; - if (!keepRuntimeAlive()) { - if (Module['onExit']) Module['onExit'](code); - ABORT = true; - } - quit_(code, new ExitStatus(code)); - } - /** @param {boolean|number=} implicit */ - function exitJS(status, implicit) { - EXITSTATUS = status; - - checkUnflushedContent(); - - // if exit() was called explicitly, warn the user if the runtime isn't actually being shut down - if (keepRuntimeAlive() && !implicit) { - var msg = 'program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'; - readyPromiseReject(msg); - err(msg); - } - - _proc_exit(status); - } - var _exit = exitJS; - - function _fd_close(fd) { - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - FS.close(stream); - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return e.errno; - } - } - - /** @param {number=} offset */ - function doReadv(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[((iov)>>2)]; - var len = HEAPU32[(((iov)+(4))>>2)]; - iov += 8; - var curr = FS.read(stream, HEAP8,ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - if (curr < len) break; // nothing more to read - if (typeof offset !== 'undefined') { - offset += curr; - } - } - return ret; - } - - function _fd_read(fd, iov, iovcnt, pnum) { - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - var num = doReadv(stream, iov, iovcnt); - HEAPU32[((pnum)>>2)] = num; - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return e.errno; - } - } - - - - - - function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { - try { - - var offset = convertI32PairToI53Checked(offset_low, offset_high); if (isNaN(offset)) return 61; - var stream = SYSCALLS.getStreamFromFD(fd); - FS.llseek(stream, offset, whence); - (tempI64 = [stream.position>>>0,(tempDouble=stream.position,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? ((Math.min((+(Math.floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)],HEAP32[((newOffset)>>2)] = tempI64[0],HEAP32[(((newOffset)+(4))>>2)] = tempI64[1]); - if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return e.errno; - } - } - - /** @param {number=} offset */ - function doWritev(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[((iov)>>2)]; - var len = HEAPU32[(((iov)+(4))>>2)]; - iov += 8; - var curr = FS.write(stream, HEAP8,ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - if (typeof offset !== 'undefined') { - offset += curr; - } - } - return ret; - } - - function _fd_write(fd, iov, iovcnt, pnum) { - try { - - var stream = SYSCALLS.getStreamFromFD(fd); - var num = doWritev(stream, iov, iovcnt); - HEAPU32[((pnum)>>2)] = num; - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e; - return e.errno; - } - } - - var FSNode = /** @constructor */ function(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; - }; - var readMode = 292/*292*/ | 73/*73*/; - var writeMode = 146/*146*/; - Object.defineProperties(FSNode.prototype, { - read: { - get: /** @this{FSNode} */function() { - return (this.mode & readMode) === readMode; - }, - set: /** @this{FSNode} */function(val) { - val ? this.mode |= readMode : this.mode &= ~readMode; - } - }, - write: { - get: /** @this{FSNode} */function() { - return (this.mode & writeMode) === writeMode; - }, - set: /** @this{FSNode} */function(val) { - val ? this.mode |= writeMode : this.mode &= ~writeMode; - } - }, - isFolder: { - get: /** @this{FSNode} */function() { - return FS.isDir(this.mode); - } - }, - isDevice: { - get: /** @this{FSNode} */function() { - return FS.isChrdev(this.mode); - } - } - }); - FS.FSNode = FSNode; - FS.staticInit();; -ERRNO_CODES = { - 'EPERM': 63, - 'ENOENT': 44, - 'ESRCH': 71, - 'EINTR': 27, - 'EIO': 29, - 'ENXIO': 60, - 'E2BIG': 1, - 'ENOEXEC': 45, - 'EBADF': 8, - 'ECHILD': 12, - 'EAGAIN': 6, - 'EWOULDBLOCK': 6, - 'ENOMEM': 48, - 'EACCES': 2, - 'EFAULT': 21, - 'ENOTBLK': 105, - 'EBUSY': 10, - 'EEXIST': 20, - 'EXDEV': 75, - 'ENODEV': 43, - 'ENOTDIR': 54, - 'EISDIR': 31, - 'EINVAL': 28, - 'ENFILE': 41, - 'EMFILE': 33, - 'ENOTTY': 59, - 'ETXTBSY': 74, - 'EFBIG': 22, - 'ENOSPC': 51, - 'ESPIPE': 70, - 'EROFS': 69, - 'EMLINK': 34, - 'EPIPE': 64, - 'EDOM': 18, - 'ERANGE': 68, - 'ENOMSG': 49, - 'EIDRM': 24, - 'ECHRNG': 106, - 'EL2NSYNC': 156, - 'EL3HLT': 107, - 'EL3RST': 108, - 'ELNRNG': 109, - 'EUNATCH': 110, - 'ENOCSI': 111, - 'EL2HLT': 112, - 'EDEADLK': 16, - 'ENOLCK': 46, - 'EBADE': 113, - 'EBADR': 114, - 'EXFULL': 115, - 'ENOANO': 104, - 'EBADRQC': 103, - 'EBADSLT': 102, - 'EDEADLOCK': 16, - 'EBFONT': 101, - 'ENOSTR': 100, - 'ENODATA': 116, - 'ETIME': 117, - 'ENOSR': 118, - 'ENONET': 119, - 'ENOPKG': 120, - 'EREMOTE': 121, - 'ENOLINK': 47, - 'EADV': 122, - 'ESRMNT': 123, - 'ECOMM': 124, - 'EPROTO': 65, - 'EMULTIHOP': 36, - 'EDOTDOT': 125, - 'EBADMSG': 9, - 'ENOTUNIQ': 126, - 'EBADFD': 127, - 'EREMCHG': 128, - 'ELIBACC': 129, - 'ELIBBAD': 130, - 'ELIBSCN': 131, - 'ELIBMAX': 132, - 'ELIBEXEC': 133, - 'ENOSYS': 52, - 'ENOTEMPTY': 55, - 'ENAMETOOLONG': 37, - 'ELOOP': 32, - 'EOPNOTSUPP': 138, - 'EPFNOSUPPORT': 139, - 'ECONNRESET': 15, - 'ENOBUFS': 42, - 'EAFNOSUPPORT': 5, - 'EPROTOTYPE': 67, - 'ENOTSOCK': 57, - 'ENOPROTOOPT': 50, - 'ESHUTDOWN': 140, - 'ECONNREFUSED': 14, - 'EADDRINUSE': 3, - 'ECONNABORTED': 13, - 'ENETUNREACH': 40, - 'ENETDOWN': 38, - 'ETIMEDOUT': 73, - 'EHOSTDOWN': 142, - 'EHOSTUNREACH': 23, - 'EINPROGRESS': 26, - 'EALREADY': 7, - 'EDESTADDRREQ': 17, - 'EMSGSIZE': 35, - 'EPROTONOSUPPORT': 66, - 'ESOCKTNOSUPPORT': 137, - 'EADDRNOTAVAIL': 4, - 'ENETRESET': 39, - 'EISCONN': 30, - 'ENOTCONN': 53, - 'ETOOMANYREFS': 141, - 'EUSERS': 136, - 'EDQUOT': 19, - 'ESTALE': 72, - 'ENOTSUP': 138, - 'ENOMEDIUM': 148, - 'EILSEQ': 25, - 'EOVERFLOW': 61, - 'ECANCELED': 11, - 'ENOTRECOVERABLE': 56, - 'EOWNERDEAD': 62, - 'ESTRPIPE': 135, - };; -InternalError = Module['InternalError'] = extendError(Error, 'InternalError');; -embind_init_charCodes(); -BindingError = Module['BindingError'] = extendError(Error, 'BindingError');; -init_ClassHandle(); -init_embind();; -init_RegisteredPointer(); -UnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError');; -init_emval();; -var ASSERTIONS = true; - -function checkIncomingModuleAPI() { - ignoredModuleProp('fetchSettings'); -} -var asmLibraryArg = { - "__assert_fail": ___assert_fail, - "__cxa_throw": ___cxa_throw, - "__syscall_connect": ___syscall_connect, - "__syscall_faccessat": ___syscall_faccessat, - "__syscall_fcntl64": ___syscall_fcntl64, - "__syscall_fstat64": ___syscall_fstat64, - "__syscall_ftruncate64": ___syscall_ftruncate64, - "__syscall_ioctl": ___syscall_ioctl, - "__syscall_lstat64": ___syscall_lstat64, - "__syscall_newfstatat": ___syscall_newfstatat, - "__syscall_openat": ___syscall_openat, - "__syscall_socket": ___syscall_socket, - "__syscall_stat64": ___syscall_stat64, - "_embind_finalize_value_array": __embind_finalize_value_array, - "_embind_finalize_value_object": __embind_finalize_value_object, - "_embind_register_bigint": __embind_register_bigint, - "_embind_register_bool": __embind_register_bool, - "_embind_register_class": __embind_register_class, - "_embind_register_class_class_function": __embind_register_class_class_function, - "_embind_register_class_constructor": __embind_register_class_constructor, - "_embind_register_class_function": __embind_register_class_function, - "_embind_register_class_property": __embind_register_class_property, - "_embind_register_emval": __embind_register_emval, - "_embind_register_enum": __embind_register_enum, - "_embind_register_enum_value": __embind_register_enum_value, - "_embind_register_float": __embind_register_float, - "_embind_register_integer": __embind_register_integer, - "_embind_register_memory_view": __embind_register_memory_view, - "_embind_register_std_string": __embind_register_std_string, - "_embind_register_std_wstring": __embind_register_std_wstring, - "_embind_register_value_array": __embind_register_value_array, - "_embind_register_value_array_element": __embind_register_value_array_element, - "_embind_register_value_object": __embind_register_value_object, - "_embind_register_value_object_field": __embind_register_value_object_field, - "_embind_register_void": __embind_register_void, - "_emscripten_get_now_is_monotonic": __emscripten_get_now_is_monotonic, - "_emval_as": __emval_as, - "_emval_call_method": __emval_call_method, - "_emval_call_void_method": __emval_call_void_method, - "_emval_decref": __emval_decref, - "_emval_equals": __emval_equals, - "_emval_get_global": __emval_get_global, - "_emval_get_method_caller": __emval_get_method_caller, - "_emval_get_module_property": __emval_get_module_property, - "_emval_get_property": __emval_get_property, - "_emval_incref": __emval_incref, - "_emval_instanceof": __emval_instanceof, - "_emval_is_number": __emval_is_number, - "_emval_is_string": __emval_is_string, - "_emval_new": __emval_new, - "_emval_new_array": __emval_new_array, - "_emval_new_cstring": __emval_new_cstring, - "_emval_new_object": __emval_new_object, - "_emval_run_destructors": __emval_run_destructors, - "_emval_set_property": __emval_set_property, - "_emval_take_value": __emval_take_value, - "_gmtime_js": __gmtime_js, - "_localtime_js": __localtime_js, - "_mktime_js": __mktime_js, - "_tzset_js": __tzset_js, - "abort": _abort, - "emscripten_console_error": _emscripten_console_error, - "emscripten_date_now": _emscripten_date_now, - "emscripten_get_heap_max": _emscripten_get_heap_max, - "emscripten_get_now": _emscripten_get_now, - "emscripten_memcpy_big": _emscripten_memcpy_big, - "emscripten_resize_heap": _emscripten_resize_heap, - "environ_get": _environ_get, - "environ_sizes_get": _environ_sizes_get, - "exit": _exit, - "fd_close": _fd_close, - "fd_read": _fd_read, - "fd_seek": _fd_seek, - "fd_write": _fd_write -}; -var asm = createWasm(); -/** @type {function(...*):?} */ -var ___wasm_call_ctors = Module["___wasm_call_ctors"] = createExportWrapper("__wasm_call_ctors"); - -/** @type {function(...*):?} */ -var _malloc = Module["_malloc"] = createExportWrapper("malloc"); - -/** @type {function(...*):?} */ -var _fflush = Module["_fflush"] = createExportWrapper("fflush"); - -/** @type {function(...*):?} */ -var _free = Module["_free"] = createExportWrapper("free"); - -/** @type {function(...*):?} */ -var ___errno_location = Module["___errno_location"] = createExportWrapper("__errno_location"); - -/** @type {function(...*):?} */ -var ___getTypeName = Module["___getTypeName"] = createExportWrapper("__getTypeName"); - -/** @type {function(...*):?} */ -var __embind_initialize_bindings = Module["__embind_initialize_bindings"] = createExportWrapper("_embind_initialize_bindings"); - -/** @type {function(...*):?} */ -var _htons = Module["_htons"] = createExportWrapper("htons"); - -/** @type {function(...*):?} */ -var _ntohs = Module["_ntohs"] = createExportWrapper("ntohs"); - -/** @type {function(...*):?} */ -var _emscripten_stack_init = Module["_emscripten_stack_init"] = function() { - return (_emscripten_stack_init = Module["_emscripten_stack_init"] = Module["asm"]["emscripten_stack_init"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var _emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = function() { - return (_emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = Module["asm"]["emscripten_stack_get_free"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var _emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = function() { - return (_emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var _emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = function() { - return (_emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var stackSave = Module["stackSave"] = createExportWrapper("stackSave"); - -/** @type {function(...*):?} */ -var stackRestore = Module["stackRestore"] = createExportWrapper("stackRestore"); - -/** @type {function(...*):?} */ -var stackAlloc = Module["stackAlloc"] = createExportWrapper("stackAlloc"); - -/** @type {function(...*):?} */ -var _emscripten_stack_get_current = Module["_emscripten_stack_get_current"] = function() { - return (_emscripten_stack_get_current = Module["_emscripten_stack_get_current"] = Module["asm"]["emscripten_stack_get_current"]).apply(null, arguments); -}; - -/** @type {function(...*):?} */ -var ___cxa_is_pointer_type = Module["___cxa_is_pointer_type"] = createExportWrapper("__cxa_is_pointer_type"); - -/** @type {function(...*):?} */ -var dynCall_ji = Module["dynCall_ji"] = createExportWrapper("dynCall_ji"); - -/** @type {function(...*):?} */ -var dynCall_iiijii = Module["dynCall_iiijii"] = createExportWrapper("dynCall_iiijii"); - -/** @type {function(...*):?} */ -var dynCall_iij = Module["dynCall_iij"] = createExportWrapper("dynCall_iij"); - -/** @type {function(...*):?} */ -var dynCall_vij = Module["dynCall_vij"] = createExportWrapper("dynCall_vij"); - -/** @type {function(...*):?} */ -var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji"); - - - - - -// === Auto-generated postamble setup entry stuff === - - -var unexportedRuntimeSymbols = [ - 'run', - 'UTF8ArrayToString', - 'UTF8ToString', - 'stringToUTF8Array', - 'stringToUTF8', - 'lengthBytesUTF8', - 'addOnPreRun', - 'addOnInit', - 'addOnPreMain', - 'addOnExit', - 'addOnPostRun', - 'addRunDependency', - 'removeRunDependency', - 'FS_createFolder', - 'FS_createPath', - 'FS_createDataFile', - 'FS_createPreloadedFile', - 'FS_createLazyFile', - 'FS_createLink', - 'FS_createDevice', - 'FS_unlink', - 'getLEB', - 'getFunctionTables', - 'alignFunctionTables', - 'registerFunctions', - 'prettyPrint', - 'getCompilerSetting', - 'out', - 'err', - 'callMain', - 'abort', - 'keepRuntimeAlive', - 'wasmMemory', - 'stackAlloc', - 'stackSave', - 'stackRestore', - 'getTempRet0', - 'setTempRet0', - 'writeStackCookie', - 'checkStackCookie', - 'ptrToString', - 'zeroMemory', - 'stringToNewUTF8', - 'exitJS', - 'getHeapMax', - 'emscripten_realloc_buffer', - 'ENV', - 'ERRNO_CODES', - 'ERRNO_MESSAGES', - 'setErrNo', - 'inetPton4', - 'inetNtop4', - 'inetPton6', - 'inetNtop6', - 'readSockaddr', - 'writeSockaddr', - 'DNS', - 'getHostByName', - 'Protocols', - 'Sockets', - 'getRandomDevice', - 'warnOnce', - 'traverseStack', - 'UNWIND_CACHE', - 'convertPCtoSourceLocation', - 'readEmAsmArgsArray', - 'readEmAsmArgs', - 'runEmAsmFunction', - 'runMainThreadEmAsm', - 'jstoi_q', - 'jstoi_s', - 'getExecutableName', - 'listenOnce', - 'autoResumeAudioContext', - 'dynCallLegacy', - 'getDynCaller', - 'dynCall', - 'handleException', - 'runtimeKeepalivePush', - 'runtimeKeepalivePop', - 'callUserCallback', - 'maybeExit', - 'safeSetTimeout', - 'asmjsMangle', - 'asyncLoad', - 'alignMemory', - 'mmapAlloc', - 'handleAllocator', - 'writeI53ToI64', - 'writeI53ToI64Clamped', - 'writeI53ToI64Signaling', - 'writeI53ToU64Clamped', - 'writeI53ToU64Signaling', - 'readI53FromI64', - 'readI53FromU64', - 'convertI32PairToI53', - 'convertI32PairToI53Checked', - 'convertU32PairToI53', - 'getCFunc', - 'ccall', - 'cwrap', - 'uleb128Encode', - 'sigToWasmTypes', - 'generateFuncType', - 'convertJsFunctionToWasm', - 'freeTableIndexes', - 'functionsInTableMap', - 'getEmptyTableSlot', - 'updateTableMap', - 'addFunction', - 'removeFunction', - 'reallyNegative', - 'unSign', - 'strLen', - 'reSign', - 'formatString', - 'setValue', - 'getValue', - 'PATH', - 'PATH_FS', - 'intArrayFromString', - 'intArrayToString', - 'AsciiToString', - 'stringToAscii', - 'UTF16Decoder', - 'UTF16ToString', - 'stringToUTF16', - 'lengthBytesUTF16', - 'UTF32ToString', - 'stringToUTF32', - 'lengthBytesUTF32', - 'allocateUTF8', - 'allocateUTF8OnStack', - 'writeStringToMemory', - 'writeArrayToMemory', - 'writeAsciiToMemory', - 'SYSCALLS', - 'getSocketFromFD', - 'getSocketAddress', - 'JSEvents', - 'registerKeyEventCallback', - 'specialHTMLTargets', - 'maybeCStringToJsString', - 'findEventTarget', - 'findCanvasEventTarget', - 'getBoundingClientRect', - 'fillMouseEventData', - 'registerMouseEventCallback', - 'registerWheelEventCallback', - 'registerUiEventCallback', - 'registerFocusEventCallback', - 'fillDeviceOrientationEventData', - 'registerDeviceOrientationEventCallback', - 'fillDeviceMotionEventData', - 'registerDeviceMotionEventCallback', - 'screenOrientation', - 'fillOrientationChangeEventData', - 'registerOrientationChangeEventCallback', - 'fillFullscreenChangeEventData', - 'registerFullscreenChangeEventCallback', - 'JSEvents_requestFullscreen', - 'JSEvents_resizeCanvasForFullscreen', - 'registerRestoreOldStyle', - 'hideEverythingExceptGivenElement', - 'restoreHiddenElements', - 'setLetterbox', - 'currentFullscreenStrategy', - 'restoreOldWindowedStyle', - 'softFullscreenResizeWebGLRenderTarget', - 'doRequestFullscreen', - 'fillPointerlockChangeEventData', - 'registerPointerlockChangeEventCallback', - 'registerPointerlockErrorEventCallback', - 'requestPointerLock', - 'fillVisibilityChangeEventData', - 'registerVisibilityChangeEventCallback', - 'registerTouchEventCallback', - 'fillGamepadEventData', - 'registerGamepadEventCallback', - 'registerBeforeUnloadEventCallback', - 'fillBatteryEventData', - 'battery', - 'registerBatteryEventCallback', - 'setCanvasElementSize', - 'getCanvasElementSize', - 'demangle', - 'demangleAll', - 'jsStackTrace', - 'stackTrace', - 'ExitStatus', - 'getEnvStrings', - 'checkWasiClock', - 'doReadv', - 'doWritev', - 'dlopenMissingError', - 'createDyncallWrapper', - 'setImmediateWrapped', - 'clearImmediateWrapped', - 'polyfillSetImmediate', - 'promiseMap', - 'newNativePromise', - 'getPromise', - 'uncaughtExceptionCount', - 'exceptionLast', - 'exceptionCaught', - 'ExceptionInfo', - 'exception_addRef', - 'exception_decRef', - 'Browser', - 'setMainLoop', - 'wget', - 'FS', - 'MEMFS', - 'TTY', - 'PIPEFS', - 'SOCKFS', - '_setNetworkCallback', - 'tempFixedLengthArray', - 'miniTempWebGLFloatBuffers', - 'heapObjectForWebGLType', - 'heapAccessShiftForWebGLHeap', - 'GL', - 'emscriptenWebGLGet', - 'computeUnpackAlignedImageSize', - 'emscriptenWebGLGetTexPixelData', - 'emscriptenWebGLGetUniform', - 'webglGetUniformLocation', - 'webglPrepareUniformLocationsBeforeFirstUse', - 'webglGetLeftBracePos', - 'emscriptenWebGLGetVertexAttrib', - 'writeGLArray', - 'AL', - 'SDL_unicode', - 'SDL_ttfContext', - 'SDL_audio', - 'SDL', - 'SDL_gfx', - 'GLUT', - 'EGL', - 'GLFW_Window', - 'GLFW', - 'GLEW', - 'IDBStore', - 'runAndAbortIfError', - 'ALLOC_NORMAL', - 'ALLOC_STACK', - 'allocate', - 'InternalError', - 'BindingError', - 'UnboundTypeError', - 'PureVirtualError', - 'init_embind', - 'throwInternalError', - 'throwBindingError', - 'throwUnboundTypeError', - 'ensureOverloadTable', - 'exposePublicSymbol', - 'replacePublicSymbol', - 'extendError', - 'createNamedFunction', - 'embindRepr', - 'registeredInstances', - 'getBasestPointer', - 'registerInheritedInstance', - 'unregisterInheritedInstance', - 'getInheritedInstance', - 'getInheritedInstanceCount', - 'getLiveInheritedInstances', - 'registeredTypes', - 'awaitingDependencies', - 'typeDependencies', - 'registeredPointers', - 'registerType', - 'whenDependentTypesAreResolved', - 'embind_charCodes', - 'embind_init_charCodes', - 'readLatin1String', - 'getTypeName', - 'heap32VectorToArray', - 'requireRegisteredType', - 'getShiftFromSize', - 'integerReadValueFromPointer', - 'enumReadValueFromPointer', - 'floatReadValueFromPointer', - 'simpleReadValueFromPointer', - 'runDestructors', - 'new_', - 'craftInvokerFunction', - 'embind__requireFunction', - 'tupleRegistrations', - 'structRegistrations', - 'genericPointerToWireType', - 'constNoSmartPtrRawPointerToWireType', - 'nonConstNoSmartPtrRawPointerToWireType', - 'init_RegisteredPointer', - 'RegisteredPointer', - 'RegisteredPointer_getPointee', - 'RegisteredPointer_destructor', - 'RegisteredPointer_deleteObject', - 'RegisteredPointer_fromWireType', - 'runDestructor', - 'releaseClassHandle', - 'finalizationRegistry', - 'detachFinalizer_deps', - 'detachFinalizer', - 'attachFinalizer', - 'makeClassHandle', - 'init_ClassHandle', - 'ClassHandle', - 'ClassHandle_isAliasOf', - 'throwInstanceAlreadyDeleted', - 'ClassHandle_clone', - 'ClassHandle_delete', - 'deletionQueue', - 'ClassHandle_isDeleted', - 'ClassHandle_deleteLater', - 'flushPendingDeletes', - 'delayFunction', - 'setDelayFunction', - 'RegisteredClass', - 'shallowCopyInternalPointer', - 'downcastPointer', - 'upcastPointer', - 'validateThis', - 'char_0', - 'char_9', - 'makeLegalFunctionName', - 'emval_handle_array', - 'emval_free_list', - 'emval_symbols', - 'init_emval', - 'count_emval_handles', - 'get_first_emval', - 'getStringOrSymbol', - 'Emval', - 'emval_newers', - 'craftEmvalAllocator', - 'emval_get_global', - 'emval_lookupTypes', - 'emval_allocateDestructors', - 'emval_methodCallers', - 'emval_addMethodCaller', - 'emval_registeredMethods', -]; -unexportedRuntimeSymbols.forEach(unexportedRuntimeSymbol); -var missingLibrarySymbols = [ - 'stringToNewUTF8', - 'writeSockaddr', - 'getHostByName', - 'traverseStack', - 'convertPCtoSourceLocation', - 'readEmAsmArgs', - 'runEmAsmFunction', - 'runMainThreadEmAsm', - 'jstoi_s', - 'listenOnce', - 'autoResumeAudioContext', - 'handleException', - 'runtimeKeepalivePush', - 'runtimeKeepalivePop', - 'callUserCallback', - 'maybeExit', - 'safeSetTimeout', - 'asmjsMangle', - 'handleAllocator', - 'writeI53ToI64', - 'writeI53ToI64Clamped', - 'writeI53ToI64Signaling', - 'writeI53ToU64Clamped', - 'writeI53ToU64Signaling', - 'readI53FromU64', - 'convertI32PairToI53', - 'convertU32PairToI53', - 'getCFunc', - 'ccall', - 'cwrap', - 'uleb128Encode', - 'sigToWasmTypes', - 'generateFuncType', - 'convertJsFunctionToWasm', - 'getEmptyTableSlot', - 'updateTableMap', - 'addFunction', - 'removeFunction', - 'reallyNegative', - 'unSign', - 'strLen', - 'reSign', - 'formatString', - 'intArrayToString', - 'AsciiToString', - 'stringToAscii', - 'allocateUTF8OnStack', - 'writeStringToMemory', - 'writeArrayToMemory', - 'registerKeyEventCallback', - 'maybeCStringToJsString', - 'findEventTarget', - 'findCanvasEventTarget', - 'getBoundingClientRect', - 'fillMouseEventData', - 'registerMouseEventCallback', - 'registerWheelEventCallback', - 'registerUiEventCallback', - 'registerFocusEventCallback', - 'fillDeviceOrientationEventData', - 'registerDeviceOrientationEventCallback', - 'fillDeviceMotionEventData', - 'registerDeviceMotionEventCallback', - 'screenOrientation', - 'fillOrientationChangeEventData', - 'registerOrientationChangeEventCallback', - 'fillFullscreenChangeEventData', - 'registerFullscreenChangeEventCallback', - 'JSEvents_requestFullscreen', - 'JSEvents_resizeCanvasForFullscreen', - 'registerRestoreOldStyle', - 'hideEverythingExceptGivenElement', - 'restoreHiddenElements', - 'setLetterbox', - 'softFullscreenResizeWebGLRenderTarget', - 'doRequestFullscreen', - 'fillPointerlockChangeEventData', - 'registerPointerlockChangeEventCallback', - 'registerPointerlockErrorEventCallback', - 'requestPointerLock', - 'fillVisibilityChangeEventData', - 'registerVisibilityChangeEventCallback', - 'registerTouchEventCallback', - 'fillGamepadEventData', - 'registerGamepadEventCallback', - 'registerBeforeUnloadEventCallback', - 'fillBatteryEventData', - 'battery', - 'registerBatteryEventCallback', - 'setCanvasElementSize', - 'getCanvasElementSize', - 'jsStackTrace', - 'stackTrace', - 'checkWasiClock', - 'createDyncallWrapper', - 'setImmediateWrapped', - 'clearImmediateWrapped', - 'polyfillSetImmediate', - 'newNativePromise', - 'getPromise', - 'exception_addRef', - 'exception_decRef', - 'setMainLoop', - '_setNetworkCallback', - 'heapObjectForWebGLType', - 'heapAccessShiftForWebGLHeap', - 'emscriptenWebGLGet', - 'computeUnpackAlignedImageSize', - 'emscriptenWebGLGetTexPixelData', - 'emscriptenWebGLGetUniform', - 'webglGetUniformLocation', - 'webglPrepareUniformLocationsBeforeFirstUse', - 'webglGetLeftBracePos', - 'emscriptenWebGLGetVertexAttrib', - 'writeGLArray', - 'SDL_unicode', - 'SDL_ttfContext', - 'SDL_audio', - 'GLFW_Window', - 'runAndAbortIfError', - 'ALLOC_NORMAL', - 'ALLOC_STACK', - 'allocate', - 'registerInheritedInstance', - 'unregisterInheritedInstance', -]; -missingLibrarySymbols.forEach(missingLibrarySymbol) - - -var calledRun; - -dependenciesFulfilled = function runCaller() { - // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -}; - -function stackCheckInit() { - // This is normally called automatically during __wasm_call_ctors but need to - // get these values before even running any of the ctors so we call it redundantly - // here. - _emscripten_stack_init(); - // TODO(sbc): Move writeStackCookie to native to to avoid this. - writeStackCookie(); -} - -/** @type {function(Array=)} */ -function run(args) { - args = args || arguments_; - - if (runDependencies > 0) { - return; - } - - stackCheckInit(); - - preRun(); - - // a preRun added a dependency, run will be called later - if (runDependencies > 0) { - return; - } - - function doRun() { - // run may have just been called through dependencies being fulfilled just in this very frame, - // or while the async setStatus time below was happening - if (calledRun) return; - calledRun = true; - Module['calledRun'] = true; - - if (ABORT) return; - - initRuntime(); - - readyPromiseResolve(Module); - if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); - - assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - doRun(); - }, 1); - } else - { - doRun(); - } - checkStackCookie(); -} - -function checkUnflushedContent() { - // Compiler settings do not allow exiting the runtime, so flushing - // the streams is not possible. but in ASSERTIONS mode we check - // if there was something to flush, and if so tell the user they - // should request that the runtime be exitable. - // Normally we would not even include flush() at all, but in ASSERTIONS - // builds we do so just for this check, and here we see if there is any - // content to flush, that is, we check if there would have been - // something a non-ASSERTIONS build would have not seen. - // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 - // mode (which has its own special function for this; otherwise, all - // the code is inside libc) - var oldOut = out; - var oldErr = err; - var has = false; - out = err = (x) => { - has = true; - } - try { // it doesn't matter if it fails - _fflush(0); - // also flush in the JS FS layer - ['stdout', 'stderr'].forEach(function(name) { - var info = FS.analyzePath('/dev/' + name); - if (!info) return; - var stream = info.object; - var rdev = stream.rdev; - var tty = TTY.ttys[rdev]; - if (tty && tty.output && tty.output.length) { - has = true; - } - }); - } catch(e) {} - out = oldOut; - err = oldErr; - if (has) { - warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); - } -} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -run(); - - - - - - return rhino3dm.ready -} -); -})(); -export default rhino3dm; \ No newline at end of file diff --git a/three/addons/libs/rhino3dm/rhino3dm.wasm b/three/addons/libs/rhino3dm/rhino3dm.wasm deleted file mode 100644 index db4548425881d8a271eee89351df9bb5cd513405..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10091572 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�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%0AuUm^PnWkHqr7KSA< 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%0AkBV4>i@HMF7TaC zXa1k>_jgP3%jGxBWQGns$91M?yIa-E_Tt-%+TQQm-EFtJ?e>yhw$rU{yW4*!Lxv24 zU=RdB5X1-ugFz4kK`;n{AP9mW2!j9n^L&55Bs0m33^TLSU9Y@e`90@+pL2Q6?R(Do zKA-2=)9qSVYBUz6<$f=`@^0i=I16p~{rR(-+q>-A4fZa(AqXqu@jCfM=44kF>5FZ+ zq}hC?bLakrZH__4^0yN4M!lFtNAEC>@q6Vz404At{%bEIBo7d?tL!;CeAs1=A;gjl zTH)ll)!;BcvZrp>r!y1tHxIElFF<1Wwsw_Fy%`nR>M)!WBTB=_O>&{iC8dTY%cnk^ zY^$FlJ3#V{Ca+GVr4y*~d*kJgk<9d?8hjVKm?15B3ho@(vvELRgqNuW%n{k>byNjO z5QbT}mU|fnv3+XL=@(-k%zCXmb7<9B)&f@3WPa|=*8PmNfZegqu{(e{9Eu&wXu$#x zEr5~cCqD}gV!>DA?<%bmk-J=TrK09k{8kY#*R<8zQ_;fPM}dH##a`GlI!t;k)~o1$ zzc>m6L__{1ef%{b;PO;dm!@qJ`l<(x?}QS7fWra;z9Jyt6B%7s0gFo&`gy2g6bMM9 zb@Pf8=Sl+t4%`^y>4I!7_$rn@e!Ehvf&8vYaYID2Zx8nv5U?g49ehg4??@y-z-lQ90t6f(Cta}( z>lYy4kbXUC=llZaNppE|WSaM!eGVE(MN8AHnT9Uww;teo5UT88<8up(Su_a@q&UGD z5U?gE@RI=ni8LVKaEccTOe3iR5U@`L0tD>kcV415<)4y}Pa$M;7y(B68$vM{J~tvH z;OiI#P!9d60urz`ms=LZNI)VD2{@RFk$^ZX%Oe4MR18SKZY!oc$fq@DWBh_G?qmY?u+Q;tBk)#C7)kZ^3(nq)%6+bS|3Kh^u9#sOI5)AzMNY)13VuV zI>6U`!R_t7!b{fva%w(ZQKq6}(qR1(?yDe1tSxI({#oVsEcvyX6s>9hHPv8wT1Y@4 z6g$&V6S9AU5O}~2)#vNLjr999U`CdzGaW+&JJQ}Df^F#-BG{fTKm=EcABf-zenDEM zy#Q@)kaFw7s4n!Q7{PCW65O9Dts2*)qWUy|!G!x>49Wmum-5dk<#VJQwz7u}FUYV= z3l-?TNz-SdfJ^lYs<4haBegSd#HSg5yUdv)%$4XpukGZ(YX!M88Wj{@-8%1z4jpenMUOrLGzOyz2Tqb*&8} zP9Hxd^wTO}fj`R~FaucNzZfF$UqJ-^e9hh(Nk+$|fea?xFJkx!7`vo@LHWHveqAPe zmmvmOHPXTby6>|Fq@#i3(_ZL6aDanw2?sc!-zrdYmTD+%ctOPOvqAbB2{8yhP+}V{ zurKZBlVU!tW?~yYkjVcKXMfroG;kp8fd;yLK~pLF-!nn^otNlN`yo|xh-y}cx)B9A z=>AaU|I_`a#QvlEjr(^1fxmPA;r_U$*h9&P>i>xZe;S9Mc~SYjsQhe?QC$S0kebvK z8Eg>XV?$B&=EF%r1O@)9hs*spmDlfo(RY@rp-9j{I=D!nLAtL<;6S>s$X5q2R&(9A zL@7Yi)$$9Vs>r{jl3$|a;UHowy-0c&&qt&6Y$k&hsGrY*ag@P=uEQ(%YO+7$a3sAU1byx(kTtp27{*g$svdGYfyz`1Y zpGJsjEfTyCVtJ9^g$WRatW`?27@`>h5MGfNLemXXhruA?aF&M`RtZB$K1+h!!FeHi zlFit;k@8pw^3GETQm_Jw?&uNFjKht5afCLm0eO zB7{invcx?_01Z{=?xH-_u&c+8J(CO10{Bu6kSRGnlgBe40>$^=*<`)5maYJfW!naL|&_FMP%Y>LLUn;B%&T-&=QYi43P*PJd=kV4rUB?I2X<_yy1XS32)dB!Fb4c zL(Pt;5}02IV$|VDNYNMoM|6#21FAh4osiwVGsRe~;_9=NlD+@bltSecA?r;Xwi1vO;#Px?2N z!JA~zX3g1_$>S8;Gciu_G)n8qM3;g5T&B#I5$;xF3a7YAgm8*ombfQlI7LQO#>WuF zu8cp=q*#^lLMZ|oWJD>|c@P~CjHrySrZ%oR$zmErT|oiHSmgmQlF#z7zGz8CC#SvO zjP61*Xf`RDlYXHxSV#udY;)O473YzTHN`Q~@m!c2ilb#nkw-MLHoW}g#Rg_%fhso4q5%Ad^aW@} z^0^|&9hUElret(V+FvOtt|Ws-lLF-B{>or~GHA5sY|QvJE59jY*hT=DtWlZhD)x6* zEAiEYSEw-saa=B<4WiW&ugrMC8(E_=f;U36W(?8D8kI5NqM;F6lu8)KW(d}(jIU88 zYN$k85VZyVdKGj%QgjF)={m;xq9GZbnl==pyMYYqO^W)YU!)8cDFbWHw&Fa%vAx*e zq|B~?xu-aK_@SilRJfCHw;EH($5kSPeC)EsJ;j1JQu*#;12?igFBZ6wm{rBTOUb)n z?o_H!$frOfXlyh7Eu6JoiDRS>O~cxADd9R~WM z*moPzT5RSC=!@clWdYt7N_7vZnjz?mVqdFD)KZDoAZiT?xc(|Z^2w)XOo}DR=(M!Y z+tI~Bid=R2Z!~+nG zmbj(FKNLi#rwh<#W>ksxYLA#i%_RVQWxL@~3pSJ#;IfPi+qpbmi0?O|vBW=NL{o`> z62d)6K}%KQ6A*O}Y_d!IK@#8~1ZWPT=DA+Eez5q}!_*h5g z#H_L3u1Q9Kil0&1XUJTu4ST|*KUkR`Oy<4TO})kbS*ucCu^$xkLonBrM2BH3@HvH_ zQ({$d5Mo5V^(@4&C9Wy)&x_|_Vup&C#P$+w4c0C%7vhJF z7%uj&7%@`pUlr%8a1N-fS0MT!Soe#)*_BvA)f#H`USBZ-I;(Hlzp2APlAk2pl_atN8XTF1AR_&2Re%S(JUc0b(nFn5+jm#_{k zRCpnuvpdu-)e!9>-h`vg5_gvP{ovu8UE=pQqOHW&7|~wh7b*E7Qms^~8i*ATyqHS- zp{m58RH8nJ>H~j(I1dP`{DGk(p990(vH2N1l!(qu`&vD(B?BF2fO=zGK^YuI23=N> zt`fi4ie1I167zmA50peN9hdS4D||5FepTZjh&~aEA$l$GK#7-W6}H?Z{tzR2si6^l zCH^oaKMdv`r8*R%8-fj6iPw7K>Zn9r5Y+{~PMmc}ad_y+=kPFhTwaQSM08f#AED<* zkU_smfqjg_mBHa;FlZGSEb&KLu|p-^Ov)^Qc}X@p0UJn1De+N+Yq@W8OCf4R90^ek z!K}~vqb+f5)*oX;b=KD#QIqw@D*3T6k4TDoh+&grxWpf!N*qBYYB7ru_~XQR98w$~ zI`TO_%pISXqAwAho%Uurr-2N5O^RMjSSW)d)eKgVx~xCJipAyYiOTF~m|L>ZIm
Da4SUb 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 #0&E@U_uP%A_ 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

#njd|qE2&a^~(;2!q&3k z@yn2)O8Y|ZtL?V4vO1Vi@Z6tCCmhbOTg16caKrYXcX07@oyq77rY)fZ8xCfa#>oqN z7KtdDc3nczv=u%3r~EAVc#w11@#+U_%KAo26*{LT^Q74A#X-q>d$KU>2A%jbgM zEa1#!e>eLOo5Acca$@X3+^Fo0r2U2P z?B6B!VBNxrngmNHUmTUYxG0_c^x-8Dtk5VEk7M)eCwjdik9~*ylpmJXKf(f@-3^;c z%nsqFOnUmL$xV8Nf?@frCY%Xlcuj|zc0L<{xRjDNn(UPKbIMyr;bk?PI0w4JNwfQ$ z_QGZ>!{@p8d3AO^N`B-kU{>iWa>nPne=x^8)#RzJ(GpxYuu*UaN4(~eHL_Ar){w01 z0=XS)WRRpAn4`N;tSWT>3*2Lr9R!bE*fZai%g9_?cIr+Q^(6Tk#_n!P0;figebG7h z#faZL9@~RF0;zF(x_LEzFFm$5NqZYgjgt0t`|7bn++G?4wC_HtuXD_nR=0J$LH2{( zuZ9t~znC0Ar9Vo_M{5{wA5+SK?m#{NWqR|MBewIoA02n9{DnNRh?HnpDdpqt<9gyN zoJ)Qs$MGP}@Y3#34MN9=OS@0h_=8~nNytyuFwhFzLGDw*3k!A(M`tnM((cnW47krk zZ-&zniOOhQ=B9Wp%ne&7AyG1UOo2pMzi=uf%3~JdD9I3?ghY8?QZv7j0{zUTdtlT6 z5LFqyr94pe1$|mkL%*oh@O@q%yN0c_>BnyVYkJa$F3SQ;rx1I>t3wSn*UfTs)wFx_ zj+z1|YX@+$cF=uC$DRTwYe%ZLqwde8?m%v-YXf;@U0dbvMAdiF{eZgD`Be8g`oZi* z_jh)cZfD(>-vNk8>e_SkL)X^*UFhh$aKEhh71@f-K-kGP8IpO^m5R#Tfkri%_Gai7 zx*~ys73hbdtNS~$xnMFmR7Cr0xl*7XmJ7PS6P6<;(_Dltbb*8|&`(7)xOQe#n@k$O zh0y>m&<|h7kxW%46EbhdeZZx*=XriG2h{yt8P&U*%^C4{N6*a@DU2S`I{SA1v%) z!{##tQ_r>n?OZl>*)w%*Il1WlxVF6W-@~EBS0)k_(U%Hc*gge* zqV<7RL7H!;fU(n9q_=_x#_Xt_I{R2EWFQu~*+GYWqb*|Y$!Ox?qordG`AW$btr-}H z83v&y|AO*_APLKZV@nu@@UJ9SIxCvg(Pr;k+Qc#Cf zv{P}Q7E+s8o@+`olUPmjdq*2E@+vgvLNTl+e6}wpmK^V%h$FH$2Qg@?9Gq zw;v3vd`~LYV(G+0BCGMc=~79R*nGKUhYxv?H(4_=h9i-4_NFGXM3u9JomL741B=t( zx_H+i!)0kC`ve|E)V0|BD4BNiWAhiE9aZFOw&}{o%wPH1E@EI||Cwu-&GukS1rt*Y z)nE^%HNV82>bQqf9PKFCj3-;%Ep!7dJ^%!v0vt$Fi9(tKrGMF%u-+(Tek)z8p$UBNXia6u+j}SHA*4WMS(+QD333+e zn=p9zlmyaG7MDEPPt7U|wXSDv9Q=$2^V5?SRGP?Vu>!6LUS+MX)oK;31vC(|P&KQ< z?cDZX1~fnxwR7DLi&>dw+>W1`l_h1TFw5c@PXz7F?82IH7TofHO9M(?WdI?n1*|!eCObsiM8ew|CA@xnROixe_b>?SqF-!3Y@{O#*s+2phl!k><;*da3woM?{4$l zmPk898qFdS&7b?~w@>~ZTs9I3|D>wix;lQJqx}k;5bj5k?Wq3tJQ+I*$@$a<0IOxs%W@TM6XkHi+CVV!%pD7%(pVJniGP5Y(maetyGpED@Z(kR8i27P4b`CZDfC%fe{K62qOGMR`v_e#?@?a*gJVd5iL1 zyJ?%2Bv$Dr7C||S@;Oi%yhKQW_z!eoHdk_{CJp_A;@xvdzp@NxwH4 z+0E=vS{RnxZl)|N9mdWUA)ejL9$mAWX_k;|XUY)L3>NndFUs#_b|%A%vuv%HrFlnE zx-(023>-hI5G-b9-kD^NCFKspRI5N+o3^J(;sO=elhmH3nQ7YIB|DU2%pPZCQi{Q- z)vOP}%)r?U&TS7SIB%iZE@P(CW)U`>DX_wyGaDdWNb9v zDlY7Hw(yIccrp%W9~n4*j+>vWVYBS>LEA!qu#*w`$J~6kz%GrCE<5x%+duf~Xz)65cFz`zfu3^36Ts8~VjP;xEYgCG%f6>bgv9Xx^jR zU}$b02;Yc25X^nyo8e_yEX-5xTbMSR6 zPNG?bcco+%j?PoDJ$So#VgKD`lDDP&os#@c>Z)L9he01!chdhrzk^BHjJt2js6On&i1i=1 z!g736+5et^LHhjx!HMjtv80U2rSA1MoY>+g&}7p8Sn9@{-24>GVw?jAQ#WS;miUkQ z9Z5#E;~SE(?f5zs|4)%+H8V%j->rnZsiq5^Y|7owYA`8ZEOq}2=HNeeHSVVvh5yUu zLU$*^&TMRKE`v?Xq7z=Sx&cb-qfyQ2%X)MlD?%(hRk_vvo zq^94WM;&=&=72O7=oGdD zUaje{u{G^61t&xs*DaFZ7ziSZ68scGCfVjjahyHelFk{Z(>Wspbu6)u*W)rrH?!?! z5Hj1wQ3J;U$#5T)kbCM0%69@XG@9u-=ZTl*WN1xom3)8R{KA#b7HqpHh(-CQY_L&%rH95Eu3^qzFiB)u!0GfD4G z`(_mP(0M2s(Y*Kd4GPNF^-D>RHNo7A?Ozff2l0od~Xw5U2A*cR~1@$I||6lUChKL~?#?B>y+Ci6^SI=dS>W3eVMl>kw!8CTgJt^# z37NHDm7?8?nFe8?7Gms#PYN7m(? z1+p%OBRw2Lc!nt%xYd~mWL10)m1-*p-*_NBVRYVF5MG=0G9bsonr>yXv=v}UE?G1& zxh~S1OqQ#SU2B2ACJ{Clc$tyAYpHE_0+VsskY8uATyJ+V&rV^ZUE`V3na^*OwYFrr z$qH#IFvD;&17Byd^v3CHjA$v4`8OP~TF2O%r^vu948kSLRaC06AiVjkw2Z@9s&U;= z5O!x{D{v-slcli$b8yLWyRzL*wv8F-HAyZA3b;`DmZ0k)Hc|fq}&fu94j$~qY zgc?7ba4cmXPheWFKK6v&eNxXpi7e|AZhgW(m2gj)EKge@>ofitWq3w~n=B)7`m;ui zX8dyr+%4Rr3HL<8@e~=j^;{&&!#p>f2_M8`>Uov(JlE?o;q_U+L6;l295PvkGyVmW zw>?JEiQO2WUIaIcyyV|Mp7-F=O_uP5B=3I9gI zyEpUIGS){3CB}p;1*w0>SHhPTwf-9kx<8P ztDLvF?#+ZZWc_b+`5P{KOqRZkf5&90)s#}3WKJ+ymT<|en(;>@!>)`!Qg@F`5(Pa; zG)=!W>6Rv?m!s_N(Ykvyck7d`KIxB1x?_?WFUMLTof&_eG8{+Y8%&nybIWVyiZUZ}ela<@I{+LQjGq`Syux!4M+%lJ!_;SvfTGg&&~^h=Fs%=pWa4vyz0 z-33Xe?lK%RnyWT{&!3x=s_V#(& zBVH!LjdA)-MvSNZ%}EExtCH^8q~j?vaO-A72-(rFkKA60Uz2oelG=>g8o!&Hrm<4F zd9syC@9)w|WzA&6lv^fW+&cN9FL&{-aG7hiGF&Da*McQ2;AGT2g^>ai#}wf*nJ_jt zQaIbt1Gd6Q;T!J(4yk=a4iF-|2X@*N37{YtIY%Io7{=rPC+&zK=SxslJYyj4oFBoY zSb?(zKdHl~Il(RG7?x$Bo9saFME=O#O<^0fGkK{m=KR{Nv=jH8qut@(@rnB%@F#cH zKKKWSKY7RIBZU3rZFNZBKXutRZxvz=UGf8WWtpWD3;b82C=ykWk<$m~725@e`|bH~ z-UKdZ`)vgNdFRv(wAHA)eQc{w6|m%5fsVZwWcj3d>ceR3ISO$@Fg?MVS-d^rOR0q? znw>7Vty=i5satp}gS*~J`xa2e*}QEc=-}vx@%_Mb-!ciNo0pfpE9UaH$^|sBkdCsT z2nKjtkveh8%284f+_R8#2-8;{^&dk!3yD&~Ia0s@L~K&YvBUPk+Jzh;MHUINy({N< zu1cqGK_Po`6E>Avn7kjUZk?%A_fIL+1Milq>toYMHT2;~)i+bA)=eqZBkz{#nWAZ= zdUWPeeRuj8+xA+wuJ!IE0|%SI12%C?cw5tNWY!S7R=?li1h>t!-5#H^-JW=NyG`52 zpPYHSZDlmuwKf4v8}0o4jGEhL+D=bT*-p>AyPY_c+45X4GV^xY8}}`?yJzJ?+BZJ8 zvrmS1WLZVxh2m0}aP8;_vh}5{gGhd7&nYL=X&@sLvcY;!$jIBLHu!p%7z0mCEylYt zjy^flj3YD5*zx!bGY&j6!;BqI&otxnGtAid)YKV2JC&9rLnAhECcLM^UqxmHW}PCd zTk!14if06+IipNwz}HY)5_v_~RnG&HtsUFrdxi~hTkea~GWOjvIb(O6@qe;G-2Y_R z9?6AD*(x*Zg5chTtmgPGFHzT&Q8e~l>Zp+cOrb0O1&c3$H;AB(DL(?=JVxM~87;(Edu`{c$_p^U!;4vDoiPv+RYCdsz@|ddr^E_Lj_y-k%Ts_v$SJac^0fO!}y|q-mCS zTlQJhH#5sKcx_tIzU3CvTi7#`C7~JW$;_8-g0ZPUm@$D=H^K5%x{l_75|{l2y`{(u z-zcUW8_@E_zQVdmg}O->z6)M%IA=irhmTV^3KXmTh9; z$812y*rcljZcmH`w=b`jCryFdmCts*3NcJ{AE}|=IPaZjuVOdE-}fxm@DsDxp%&oBP-Q-sr7%Np7unM?SLI%;2(7*ar`n zEuidKvtlb{SH0La{!q|lm7$=?`y}u2a-JDx_Orh?3TlWIv}9|XCz^Qby__eKyox8B zCr)cN*n-%3;`!gH^TfG{sSvvveCaJaPe|nVa-P7BdUNLqRvJ|-IOH^O22G$%mK-2> zngxhFsIjWYCfph%;C5syPF--;c^@7Xs_t*$QDN2C+@s=eXBuzq-J4CeEQ-#jZfs`1 ziNQ4CUyhI*Ib0!ZsKkHa%km!15LSBR!2SgWEibz&jH-AU#y-F_r@;r})54kC=tA5t zgl1v;U{&ztQ&reoEY#)oq8EHRa^A5USyBu|T~5FFvj?r`qA$BOl>^5gP4!8PM5)Q2 z#T0345{si1oI!y!z$UxNY;F8=BV@%`pRu5*60wyDyN_hMgd3$s1gHyqVR*$&pl7^(V5w6}Ed+QJ=qYG?M%340PW{f&n4T%I=t&@#nlALPi&;op6>S&-;Jr=3)syx(}BdrO} z*Nd|+7yAyiHpd@b(&2~Ww)-g(<6dG8+I|PM!7SczJNg}p-3|!6Q(5tOwyM^UoLMJ{ zL_muLLBoag@xj`16gvr0CyHi3O5Tah9w{Nkv}q7J@|@hA(Yd=ub%12Wk(UY6uXz6ulsFIL3djyY^#J!O)uoKoO9k5`;`VAe#kcKXiU(j_4<%U+SPi0+MPmY zVK?JF8^%a*1v7^tYtWtIapB6o;sc&9XExWT8hvU4tq}d;XuS2+NlsTCT*EXI|JKzx zVXIpQ-A&Ux+f7CP7ky@-KiG~5zubv4TXBqurPgx&wVcK)xr!* z=O|@Xk9^hX93^GNJ$WF9T752W?pleNen#&!%=9yIuEYYL&WTMvqa1@%d=V6mlgjoIwhQbda~Jis>Qsc_H3z{nNo1we!TR86E(YQ2}e*CJE?{b zE137M7kwcG;xEH@Mf^^52r=4Clj92~O< zA z_k7$Q63xqUeR1q%S#LMZ%aTO%vK%dDuZ2bXa51m@l-mJw*WL48mLyK^WtorLGgutn zosZiyfWb3f5ygI)I{vaEeC2xJSuD_gj=Qdg4Y`y;>Z~dWyDl$aAJ=?@ znuQbqu3VFT*~Dw)7r(m_zk4{4_ql8+QETm?JIy72PvOn-J+e+bz<;adcb^nHXUD7F$5ZbfteP|a0Im+G@gH>`4Nh2u=j0x4 zPq&v-5S)*(+_69NyaVIEzc{=n8#`6@$?%)R-r{g=R?d}fK33k=I6cMw1Ti@QCL@(% z+gI!xmC{JcFe#{{GIGRRU+M84!6T~Dg7hOWXi|}FKmnN+8p9t^G$~9A{b9GhWU^efcS*7;;l(IEf`A^H6&zv*s zs$%EN=H2DZhZ81_R#kXm^4nO28z#R^RX(K55SwGFuQ)v8CfInTKT(36h+thA*{*+q zt1r~xZ~4WbX^}rfY`&xtYO7+0%AwtZqmz+CC5eaXW_?x8r?M*csT>oVKf>(W*o;>C zG^;{v&7EFNv{ovv53z76<%x;M zO{M<^89#v!LuL3pJ`I1t75!sYj9f7XE9Hu*P&?f!?mIXl@r&PJ zr9WBXoGbw|A;$A~YP!Fx!BO-7NLh!8&39E&Po@7Jx4wrsrmXMh5`UoIzFah({>s>= zvQupEsq8Q|9hH8C*sM^iS-gcGa`nR+|0DM!DeK4Xo9{CDM$Se7d+DTk#gv6JrX`xwWn-l`r%OP>3DqMf%Z*f8VSdI< zobd{Os>C@JaqwZlL*YNT`i~mCF8{BT^((OIn6Zoe7tNXe8H}~)E zSMEQfAUI3&@orWXhYw~aBKb7uRM%7-J~YXrveA^+SnOAd-%9wkSq++t{VJubBBg~C zMp{MA$FjA;d@LDj73N&YV5^7%{Vb+?R)lMxi2Nvtz{7ZxU~;+~6d|X}0TJ?T>=z-& z%svRlT!lGZN{_v|qd`}pK_?GPMqLFimTKZgyX>u)@ThDxWiF4?PcmYl!n`K&JFc*3 zJ?5F%t%4QlrwfAdSK&{Wkf$SLeMSx?D|i-1$Qt=ho|2GSn~mwIR%Q=sQ3km%t~b@n z=aJD_Va|?>L<+Q&{)&m9Je^`HZ^RB`+QBU`Jp-n-nXoqF# zo75pJav@Q3f*?Yb=*)KK8){-o?i`v`kapIioc74mpGc*Ql$%>5@4@mY=8rsJS5<^-?v!6754UmM zED7bK*d#)pm5n0KgJ=*TpUQd&#%hH>Ur*^>s5=_0revHdx!qjhajHbg_&{=5R}uSF z;^SmWzBo?5#E8aKb^BiKznij2hF?a=%(kSHpBP zEkB=4T`o0%uah4sPNZ`9L@p%iOb|{e7c2*dOgy2qpxIayK9VJP4_DVqDwRv}SW)r&+amFce5+DgNogU4fm|-fPKefW`F29ImFIjr+sh;0&hz23 zt~^}YlAehDGb9Ob%qw|AQTW&- zuh9{ei;~wDg~Qo6{uu8Qk^wm>^5^OPc@h@*(tT1RMZQfbZK{a@nhpmR(2I9%;Bomx zqLIMDUonz{$j@{Qf~+bJhp$NcVYS6D*Uggf5r`%c@>6XT@fbvdh({snAsET!a!-v$ zvhHXko06X}Zq4QXNo#L>RmojfE_c-w4y!btDf#I*T~4d4Ys)>}s1Qx%Uhb+mrqc5f z1t(Sdyh%A8`12*@`A9jG4u{h6XHDV1S|g9u=S|5QjOhzj6#Kj{DuY~9M@`8u#p$C) z)R&u=DkHgEUaBelR2f%d`m!D|rlWzsKuj-y=|DOhNXwHog)eK3ACvE?l#DYgQa>rL zT)EXE(S`&*s5$@C*YZkUR}?;;mB(uepI6?EDi znS6Ii*-$3;-N?OpRS@2GTE^pa%ZeKY&64nBh$azD5RD>EfoKr10-_#*ksNsQ`qevG zcQles$+!S>yE(uMSnVCT0M`W*F2G%;1P_z7{~>f2b+QkC*O_QO=*GUxJfx) z<}a0$mm+0XIs~g?HILx`TZ7xLJKL1pYD^=C-`W6&UoxDl5=_bR{N-I8csze0>X{mh zXkfT1=LO^(6Vvk{MvducnZHa-FN0}EI^>&hQwL!w86RP!#_Kunxr_rcb$}g=a39XS zle>$;r?Os-#P|i%byY4(?kozQCKREPM_O6eq}g%n0| znUB1WTWJ{+q>b7d(Owq$7oSRj>&n6h@Hfso7!OIpOSv&9q61<;gj|vPMO+5a2f;`# zi~Nu^l66NTxlAKDaz`F2!yQ>lmOC;dxlHcJENFPX+mwu7a+Ho6F~mTbmuoU3xlFFf zL?Bd772FNc1;I#$rKG$)894U3Xni^7p?j26YGB<#R*De_l|?^W;}$ttC- z$XmDQB4wBqMsn6rp%}?ogIr=HXALchk(`b2h~y@|sw_O4dJl;20N2fu@J@&(5&aO2 zBJPH05OEhoJp?1U%-^G@G?H~kBiWQJv>!%tnZMWCd(bZH%3=f?`hqF>{y6;sBO1&6 zkP%H~G2{xGK@6e1c-CJnxvxgb=5*Mc_7Cxhdx-XaIO!fXC9gB4k62N)W&TlR zc$5-q=V{;Ru{eF$i25@BxDgFy{t4xLf}CSw`Z&a>F&)kNYsB;#m^Om)llD(4=aVp9 zpL765F_NE30&fJukV9DHLZWp^M;%}Xqo?vpUR4x6oApoY`KMvfta4FuQ&IR_)<2`< zXGm@&8O)y|f35Cc3*R=YNpq3!R!TQ1Eu=7#vwno9cqeE5vqrRK{c}bDU-!HUyoUnU zWy7a0O8X7E-oW*cBzzWPP{attfQaWI`b9hk(Fegu&iWVhlt!}dXe4Jfl3z3??904l z?LBIjy;=XVa=*;;y{6<>;`CRIV1IYa2sS2PQ_k1O*{y=dAi5wJ$ytA$q`VF(>(gO< z+P|)xuhZUdB;6aPj3E;<$MRGwLo>Gq~s+m?vn1Mq(fNbLZb1cqYkix(UMd=T{jek z&u9G+g04Cu#b{BvD7mgEWZ)gCG3?lUTE)wD4*&rYBobwOPMH8CIy$ zrsPxN^kyUK!H+VcA?r_5&eO;_CZ?xCj2hF?Qh$?}-UQRpl#D=DD(6a=u441alzck7 zMC=%)9Ks?O5&;iL9bgBe)ALH+SQx&L^=Ih$GbEKxd{FXOVfbR!pQ+?C#g}BhlMDUL z;(IfE+amD`eXmk_NogU4kzDFqc#4r+>d!Kwt<bjNd zAxU@^#Gr^4hyf92L-dPS4bca|NG|o~=qZh4-O)%c)kr?qm<*Nr^Q^tw?6SAipRe5K zs~}VI1#$X?MhujCA^Y)8F7+2F=SAe~R>AEMT@Z}qQolx0u0hI?R0!7^>M8Y?DZ^!y&|pfwJWlU4qOa6nVMKqazfw7`Bxk3XUIEczOgl>bEn<2L zOovn9aLQk$oL9lL3+xk9^3^Qv_@d<#mbDvSJ*;L}*|3yhmBia6ujCDd;Y-Z^dj1+1 zjO3KOzA)saaIKQBC3)DCJY48+72jJWterNE6na~a_o*hNFp^7rH%~E=OZ;_4jFkB6 zjo47)Z%~2fP~fW4@Z2LnThVn7*UggfI*29_-4Kl;Zh&YIaXmym1S6SYrKdEKbw?xF zlzfvhX)g6QTYLA~WgYra?ln9=U`oCvPQTTN#!}yBL{q81O*wBP=SDs| zO>*CcltZZy6v5k-^LE<%4iGL)$^FLkPAjUm)Ze8HcTqy4Df#X=T{wfRu1ozrMl_WA zwaU4coMU2o55%Z39WC*XRWB7691es zJVyylrsU`2^bJPzmG~Eo=r8dvD(8#j>=e@%AUcd`M~S~nOz(nePbvh2^d;qd38ted zH)=|LnZ+GDM(iiCc4JY-YKD~!OBohAtV8lj?k@~q&H7jL{3|f%%PG0HFdWPJSC#xK z$vvjzovcTrUV|7EF$OUp;thy?5wAn^K`>QR`!`eJYpiYb>|3PwR)?=={jYWT zYc6}LHF;xsqaIQ1-%bVN3I7|r?5+0iDBC+^Yo4c5^4herk-o%;fogw*5rftKNC2i%2|h1#L~1|nhv@a`J>XoqiKJ%71dMi>y@FN z5?bd84EUHh{a7RVs{L_B^jG@^`htzMgjALPzc1Uzo+EEAC!RUl^ybS9u4BucSqUReWRZiudg(062Co1_w z@imoq6#9F`_g?spaF&kvg?>;egQN`G>H2V$U(QoZ-c|l2BSxyca60**s`4kRz&B~| zRn_6G_k)Y6>lH9)mV_rkG>KRa(J10%hz1c&5cLpD-qrpTJtbw=>6X-7Yif?LLz}Dp zscEVCG~-%V?N=)QN=jH|Y8KWg3$$u~x)F`l{tP3Us{NVDc_ukGB8)o&V%+2$uk!av z&ijzFEfs>#+oGH;wD?(Rcb2JnwW;}RE2_5Iw<<#`CA68E&xzB|HKM-SpJzlvwQp0- zHgb-M>3I;N#&opG-!G>3!?Yz8wxs;|%6UFaFG#x!OwAXj9a5i~b_k1HNVGcbr~~X^ zbYWi2?SLYb+f}EWnp+FQx3c~sC0|5xi>bM#&_5u)4@g+6Nn4?}jnN_1gcL@0 zmA{y$7}-_+5+mBGybw&;=B)CUs=!kya9ve+DkJ+cU0=rakR-eWVo=1z5CbAEh3FU2 z0nsPIhO!77#AcOoxs^UtIpwca&TDCCFkQP%yVsd^ueYLls{9Sga04Z@n|6ER z^c#)ntMWG)(O>0nR?eHr*(s(sL39|?jw=6~C0R(7fBjsF6&W?Gq%(^#D7fdYUzS`fX4EK?t(=yy2r$1oCNVOkQh9NR^S%wGW z^oNWXtM(5Y@&DNS68I{sqy76XHwm)j;u1mFQX7g0`LM5EObs0F=dTV9$^(2Y#lh?G_Rg4et0CVph=3@VpEuYzM-m zjNrBTDY}CNcHp}>BRC9I1wVJiB+bkQ!p%D4>0)vk_&B>DeR=rbNoNg zH3f1(mD5SrGi5!ep-Ebjp$Coij0|lypfp2YH(*|d9wNbAAh;$YsJ}Bs5A*vlYmdUx z44|68K>$?*4gpw2;B^3%0B|hJP~7)lovuTpNFN%-sLBYSgd4`sVfZY!mc1IEP_Skw zB3>c}>Ew)BijrWYDem7${zsLs$a#2f?6Wvswx0E+=Y5uKqMDDwu$ zT<8Ubo{lBv*l1jfqEZx%Juy(nMPqBv(D6p9JVPfCVFDjEWmc0k*6`+-_EBLtrpXFIxKUd-tvph>HqtxTwYo8TadLPm5 z1KO5;wEet4nZC+^sw{oLfa)xLkeCkwa~Uh}0D#2+Fw3)aD`nmand{sDFCnZZ=4!Nl zRaB~?u?++DA!GWmkt)y9M~LtUC={GTjeK=7{ZRudv-B|oR%Pkq#C#l>i^%jb0AMFf%;@rAa!L_AS~p9L=Qy;bpSgsda|X@6o4U^X(d7X9nx-{KRzT3$cCe<*GNYgr|)FEXZQZUPV>ROb- zEbpmL8&KO*pD|!dPi0JNsQ|%AS;6cPh~v%gXYpN337-Z~L|`p|LIUdm3@7jmfC2!R zvu=JdnO z5pxqT8%cR1fCiJZp{MSkoI5C|8{k2U&BWY{7T*#TL>EUlZ#Aadj8s!k-A;tm@-ASf9!L-H=YFw=+W<8j`6qT2(n|DVA zQm>B+goRv?XlqnZ2e1R9-7Vd`CM}qdu6tO14;a)Wy16Y65%7l0YMXRRmrEPzeAtyQjX&QZ}cVWwY73`88ux(^H$Q#rNB1MNd6I`~#p+ zZ{2(_nci$bRZo50fa;!lh?s|fxr~%w2e23bW^+${iE_RKIjit)imQi-c^EBTkRk;s z?B<~$$mkT#<}oP(shgq#VIdbJ8k!=g1K5Gln3UuKzA7!aCSAv} z{8%ukOmuTaS}-wPi6lQa# zjyIq-Qzsa(B~yz@@Kv*ni{=_Ljf_SC5c6!p|;#GD4q zMpB;2A|_`;rtYPjdm(2zg32TEIx(lC#b>0*4D05Z#&njEYRc5vM3@Ze;1=Mr-+Fzd;54uCpiT9>IWlj+M~y4VdCyE>1U^T2d|ip;lez9B^*^`sPm zu#gK9%}f#00qnr&hL&z#mKI!_t~av$jbMNWSM7ItQCfh@<1!|fA-T-DxhzdzA>UWP zx72E~I87Uw(ukB2q+m8@>P;wx*_^2h3@FXig$B&a)I}sX5d_y{29H2xdo#ap#&-=R zTmYb&z)b+E2rL4yioikul>jiCGxZjhvf0cmo6XkEw;G$8OkHd(ew%$(Wa<*)F9C%{ z>*l4&^za#xs!YAzQmQlc4r1N`%w?o}JAlOiFq<=VALZN!Im_GtA?ueDb2(bPJVnZ_ zo9{HHcNwYjOud^3cY{K)b#p~B{T>4Z@e>Dx2F4 zN?olaW+j;3n8HiSA4h)B)_k=)RV2o|hI(PS^Wc{(dkhO?2~& zv|tLXG?=^!$tBj!C29H^`Mw6ewb%~BNFq&}n9_ulb+$oX*FzsbDa_^``k(=|J#@7J zTY6{}3El#NlQM%l(9I9=`yqT6Q^E%U6cKm;Kp}xD0K*Ba22cP1vpG{AW+|J^+?=zU zn|g3IKVoc(GZio0VKzT%pUpk=G2%Z43Qg9{k0;Z^XX^?x^$ANU%G4)``6MtKN%;u? z4JKzp58Y2W_e0JSHz;xSDPlf_7GIMhYpk2s8q=qZR8tRqh6vAq!X)eFb;2m<;jA>mDJwT=hz_i#6id|h#%=KWpAw@P=H@}b~kh(fWAS~p9 zL~Bz7bpSgsdZDG8C#40~rR$3<{~{O^C%U;PEr1P4Et6}JTxi`~n5GBG_aOL|X0w}% z)3li>%@iLgn9bR`5v4GjvvrdJrP;dKfO*-vg#;f4!8O^z@OymS%I~fCu0dhh1fZJ0 zMgUa=wg6Z~U^9S90GQ3$x-BJ`ny%Yfc01B5vV&>qTF1{ie3oak%Xi=tyY6h=nL_uq zUG`a#t@T8!2ilC2sGEN&nZDbAs%+h3Ky|h@5VHZ8%UFRu02Twl%+A)=Df8=)xzG&? zUENE}y=eWHQ{?58*h>TT6=T|Hq{_2(9})I}!n~8Hn}0Q#{+a=m+1g~ls%+g)%>BSz zM5avu%8Y4QwjLtWLtt9q1_iDjAm#xuJ(wZ~Q)0Vu9g!lCdS{A2SjYv5UP%$u0qnpC zFA;J(ffLp6v|xI=zRvQmgF!)}%bQaJSQQ;&@*yNQrBc|YR6R_-hrzcNTi^j+L7LLb zKnglzX4|HCU6vk3Da`CFEkLRMZf%whHDF7Y4g(@DRy=FgC^6Ix>~rJjy`*Y3>coRlZiPQnDt~j2|%4OtwVc}=`b*Da2RrA z3NfdE>2;}cT`Ie|Bvl~w$W(!_kP8w`NEOrp?7*lbHQCLLslm*2oyzi4DHQ>pr&EJj z={k*H)5sS9tjbgMYVy4rd`rWHEmemzWjInwkb;@rL#G27GrNb*Frc)D&NN^ilpg?O zI0&xk5p076&uo6r#&-?Zt{DKT2}}o2MPL?yRRm@Ns04tS-9t-R%6_MrWxvz5fM0KH zYM?erukkSYsOx$9nNOcxoc@*a9K5pD*B5?jD;Nv7XwKxGeIY``k0O^A6L zFc*>OVgO~vw5*4YB-4>#TI&S0jxHhQ5-?qwDoazj>t2>Bka|w4Kv>8Hi58{`>Hv0N zw5+9@x1z%1VX}aD;%)5|YZ;R~RMzJYdD^htgc8`75XX^^0tpM68 zn|&*j>6HdFWb3^KG-m64#JmrfTgdTV0JQ)hK(?BTQy~R#f_0AGPt5z#LaS0`RcdVC zKz$%pP=Sh60bj5HaiqM#Z+Lxba6L>&S@uB?Uq=9wU`=W;CtX+bYc-N<0Kg7ERY$YY zMuTS+9IEklWU7u~${3_nnu~R1Z><6{^!2^%#_A_tr-M$ekeA+&fr`3#w{< zSL3@0h20Iwm!r=R^BJ@`+HIY+`Lh_CF#I%9wY~LuB0LWYRkq@-Po{4$psu&RU_gCueUX?i z0&@+Sz5t-cnAY^xA~G#vqdP&Bqa49f3#J=WWn*e=|3KZ8Dv%nT1Ysc;BziVgPzSIB zqfISSp*l5yQT1k)-^@A@KxeN?4d$oo7Jh9(G6x}!o2fdEe8+)rq1B`+RmU@BJW>jf z(%&uUty_VNOWoeO&49w*y4`@H-dYDh9tFXQ-a#=gopu_^DZ_14WV+2_38x|{gBfwtJXc~3H(%X@z? z(!B;O>#Z*n^JQSpAmzOPN&w(#$KE=Da!!Dpl}=EJ2iu7G3R=7|RT{0E_gOc;YNSeg z>uW@K4HT-ao12p9`wb}Ttp^NP)LRb{^B^!Mk?8>d#m2O_x6=PqiovuT4^BGTOw495 zeLYoPw{AX^Dv-K9RUjQow5=;9|U3 z>F9W3jz<8M328DRjZ0^78mI9!Myj@#P9(xaP^hu~y*8OX$$+|EI@y5wUOI)CQ-HaK zOeeF5F|FyPlgM-un3g#~nWNVc^Exoa5wRqV(|Br{Kp>vSehM{=q4Z)vJdCf~{6TWB>YOVue%nSzu8q+lBN z(itd)Y1~U^8c^6vXBkk`OJ|ed2oS9372JerYzN&^e3w(gnE;j%m;qohf!P2S5ts#_ z3;?EaFTI{rY#KAmrm=PN9Ai`7OXpfQ&$G{Yy>veD=YvAIb@L6$^cxLW+)JrH!E?{O z^d@571k4$vTn3;70H$#-y^eBT2RTcfpw!U?#9V+DUzjEft(zBFH{WceN_*)oM7RYM z)>t>+noOq(2M%Su^fm()_0lE8TmsBVWO^HbVq;p|OU=8y1WZftf~ccQiMbR^m!-)v z>*m|j1X9mU69@~rAkm^UK^?#jjBan~<{7EM0$l8{{2i1k(an=mgN1NWVe)eFwQep> z)u|MAD)?66{dtI=s?(S<4JnmK!8FcM>J~ALbM#IFs&e!$1FCcMZW6p61e=-L zepleT35DfO0F4C70W=V}8$dmQy8zSyz--RZdsxb5GqY?q=WsT!Fg8s&y3)G2(muE3 z=)J_h7ZfV2o9|1e-)}%ej;=DGF-IRD<^#Z7Ps*zRtOJ1AoTJkz=XA(f>;%P*K1j?5 z(c-JqWVLm3m38w&MyfVPA11=Xq+s3rNHV?J06Y`%r~&mk`WP`E1LhhseH1{AF|Enb z8Du&GObeZ$5O1v#^Kme(Ns}7u<|onwQm;%C2n)F&QB|6t4qyjHPqcJ%QEC9crYBkc zNiZl(bo21k;AUL?F!?DY7g#qJr0Puaok_k{lfqP;#gth{DL@KlbB?Y-Da_^^U28yL zjy`QbQI0-Cg7<)6MNV*dt*`6&y$;{ylyEJ8Wdzm$SWMs<0E-Ab4WJAFW^;}{%ThL* znPs!ty7@U{Q=X>Q{$_&v`kzf%qFhq0+kfg=G4R1}x6eS_78l=tg301m+A( zl%qR|xf7U^$aDvQVq;pIqm1YwrC|EEpedreh`0+p>(iv(dikX^fzZ#V31o#>5NJ!9 zpbFpyJ}OSmkIeQ9a1-gZN&@S{wkdhQNLRHCA|iA8oe6>-y;H2GsP? zLk6trqla1iFp#TR>JWe`0I-4Wqw`pad8ov%gSv>CK}12PxDM?kATzX6Y-B=+^(g^7 z}gQoV>(1P@=c{Co<5@K9JSMXv@9R!h<0L~aJN^%87=5F_|Kf`u7LYB+#3 z1g-{9V};j?jdmT_^Jb*O>#*v&AUav|^BHS~nUSmLw>O=$9s9wwB*8;hkr6vNX0stXYEi_IU zD)F6QT|_4laT0`>+(|%Ya;I2fLWt^=URStgeXtZ zg)F}iLMb~19F81_hC5Q%*Vrudm)g#@o)!# zWdv>qu-FP$^i`T_<8ryL-f6(%zIvAd%lhiwEPgkT7qQe`0LlPBh`!1&Ua}aKI6F97 zD~MMC8Sd#MpmI;^Xqu4{+yMg_=C45U5|g1MMQ>yA+fcl~21J4AN@F@)w35i>K%OB% z^S-Fw%kO(xn8TqGz$5}I0Tf%|8KU=D;S$mN4JZ~}WxyoS2Uz?8AQ!RJDgcE5;Q1%I zgq2u=N}L&-sSgtGLCCPWlYq+V*1C0L%WRm`s(>* zVItoLw!(e)Z-;dzCgrnhM0FwwjL~>SmhHAAHE>V5dfMV6h449<)IEz0H8Bkc(Jq9e_drkO8BXmAC_ykU;b~;yni$p6?`}@_g%9YK{hXrt5m`4FKDyC>hCaH9L?&LZ+d{l8kYQ^l0hO(- zW2rG3+?B4|n7@roO@@Z3-boqmqzpEsYelyk(=DQPM6LyLvjihBmUi%a2fmv)pz8oM z64*|1R=8Porxk7z-DN<7XuScAqA#)dOF*t?sd@l)03d_tU97}is6-5*R(BI`H)Pn; zNkC;!>sYFf26w}ZhxrXGZZg!tqK?JyrVKWuYgP9e(=Dnm6L}|)n>8p$KfJ>4SMc4$ z0sS(7Mgn^QG+5zg)kZ7aq`J?52Gv&$XjFZT#a{z*Jxjd`pbh|JP_1AkDo_bNR?|eh zCdjbAlYq+p*0Hoc8dSiPnE3}#oR(tPG)46u7Qcrw*pRO6s|StgmcH6d=74Sn&`97QfCejEaH1Zv!p(j4umKHym5#^=(%V;u@|JBV9t5aosR96X z03btOUBODMKqVr=a5 zaBNyG!w)xYbNHMAW$n!80J=~Dd+Bd_Zphz0X0-j7nfO@cI6YaNw~Rc_SkCrTL>g!kQ4YcPzF+ZNQU&t$9n`Z#IW_HCqvd}p{+BI z((}`^ay5L2qfHcNJjC%gx9e5TmG9VNY#VkO16`xrV!Ify4~>)>8=I^4s2-y$cj7}@ z$4HtS(>)DOtpNiMZ^Vjn89tgGk9=THx7D1>3n1j|;+Mx0SG>#B7azGkUrexP z>IZrDB18^2M_GaJEfzoVE;Bhw3hRRPruBspjuBQ1p}qO=)(PSBedwJ2uAp=vv`l&ZguP4qv5+h7%ylhtiN} zuTt<2-jU(!c0T$Rf6%uWq1Lf~Mwh18L_|tgbamH!?Pl|!8|Q(&v4;sDSokpkSQHN? z>am;$o%C4D0JLxPRL@@1<9ld5q>J>xi%jSbz6u^qJjTvB{{6QIWF8?^j1g83BT`^_ z#K8rJ5dQ99cO@{?K=nB;W3$^I_D6+wY5TN~_LMs9BR!?geAiRzXt&S6k97N-{h_zd zXFk&HbIym}K0`jz?Q_wG-aeOpq}%5!AA0+I<0IWZ-}%tn=dzD<`~3JrZ=aukq}%7$ zAA0*-@sVzy-+$=s^QVt=`~2-gZ=WkW+CDdY7)MgvKEK;D>EDm?nSFTTZ1>KG_7A0n zU=i_Qw@}eXyMpwB!FcM!ZlM_;?G}Pf+q-R{(w3JC-%^2>=i(9A@b%YF zfd{oOR5PL04lq?TP}Q00FoJdZ7`_478ETxCXL`FrkJt@*zRun40nl`42h&Zr1jSNB zy2nQ2dB?ZZ-Ys#Qj8OmkPBmrK4RQP#Yo}sCM_Bdud>F*9~WvHP4|_F zDza`}@mgPZR=@3Al+a6_kkB~V%d~N*!g^5cwbF5Vd~|fyK3^R)%{AUv_MxFWJ~q)q z-TCfdM(hvN?Djxw^{|I!p;yEMgpVWycxRm>AI1KlbdJ;(LchpnhYZ(3Z3qdvK;~Y> zc5VPp!??orOn)vQr?uVyNc+=MuzL832P%)4p8fHhCLb1Vvu<>6GgG1XhdHjJ$3ZT< znr!-K;J406resRy0O+iHW9;| zxb~7>98vGjs@d--cFc#nYWDxPR?T;Fr8&3#D@|S_1}oBA?-YZTiH{CF){fiI4qR&T z?gE!$T#f7}uDcg`^JDFHp?O2w3(Xtbev~CX#PP0z#RKkO?e%iFm!zvb^NCx=EOF91 zPfIKU4o2pi-~Y@E?oAIbg>ZpF!|EgNdF{7(!5dc>n_3HbxrVEBzPjx3HTIksLdIFF z{4TimK@NZV@cuWZ23{%0uXGw}z=x@hjq~?})8K1w`&u=`!d;+=g)1JrmksVq$IQob zzl=eH}ks__n+bWwH^LViBQImA4zfz+*$F zcg}TE-i(35o?*pq%T*tA?Yb?_J78p?)bEq8^1jpdDl=Tak8l45cOKju-f)A9tHfBz z4=`%lKG2-r`A)lzeOJF3;K^T*{&<=>6U~@>+?bn9H0{(Mfb)^RX}sO+2He)445r{3 zlRp6&*o^pN-F>*gGcO8lU6gM}#m*o<+VuwkA98Q;I_W}YdIhYTlx@dV%O3;H{o+H`4I3pmQt*!8iA4yGoa z%Z@!b-$-}Dz=8<@=IDR$)OpcuZ|Y3^KQVP`-HuP4gv9T|)LGX4@IES2=l1q#U*x8C z)L`m(4)oY<&^@K$x3kqS1@k*Cz4JGcgx+Sx&?pCUr0tBM?F?U*?-W~#ADOng3eJ@O znk)Thn=9SX{-8T51A2M;wBPlBUh#en=wCvC)Ip$v{cw^3=UD66=`Hxy9TmQH@0#zrqr!LH zyXK2<6-S|+Yryxb&M|Lu?g)>5tvwvugRz$a%R@68&bM`yrr^n~0@u}_gl2G>KnE72IO zL}7_*cA;!j)4xTi70}~pCE8h!?<~i2uYP(Y^$5#o97Z;9N9ACj-cz#ju|w}B*>Xat zS?A%RRmpZ#7R>VY7tEtV`_A@hzsu=R|3OcOm)e;Q@A?O1<@@ymQrXTANQaLl^Z-cw z3MB8Sc9%G~=t#qnCoMMgIQ$SCc`W&lzo|JYBl)iONAi1V_pNW=?n51?TgNmhiCevd z3MdmQAZiWYpaL2JO-O&29wu1ip$ZMUgsNFOE2K!**ba;;;T>O#O6|XQTsZu-o@dac zX|cPH{xI0`ks1bd?F@tWGRU`mq@>$~e33zSAio#0$!`&uAT&3_CRC)yCSnnv)%|L=%_ z>&_2G3^3}T7?*?^$sz^+tag7M z95!TB@Q1#Kb{>FriXgrzFMi=h6btY|w;6vVZp5skGU5I7hTDlQv3qbQgw)nw1-d)M zR^;;Xl6`B}0lXM{#G|I2Nynq_U^vl61sz+N3x~f5ZjI5^xGU=pQ;XvzQ+mca;TNY> z<^Eo!dZ43H-QTWMtKKZtTK8?Fdf
cNgm^+>x?Rliv(-0Hn`Up@N4NVU47Qq{C8 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

38KOTCY0YCam*~dMG>)0gsG9 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

+S;5x~D{>^#-rrC-l|(mqpI2|xFNgfg zU%gw@06n`tLwXZx96NDyn378#MQeS=b-4-`v!^F;98U)4gq3c zoBXh(vWgEbJ7Fo_g#9t0tfJ`^9mwO3JwVF|x_x&dksMMPNL$^>6+zid+DTZ^5D-4T z(g0)?5{dxT`R@BC6(MKxLYH6)T$GM`mC#T8LBqO&NG7^@nT3EGmOG_l()GxJMkhwb znu(PDS_|$uwEJczkVx?|rp;w?fYmA9=Kdq*HH;7_0WT&b0O&uTg^MCs&+^2jj8+OJ_s^ZYVw7E@vtY9>tP7;p~9=eRd|?G!G&XwcDurgXk#5j zD}tWPx5B^#BA}5w1v8}S2Yr~xqNc=Wkn_h}G*^YHJ2v5Bn#-Y(7dJ=GmK!fr9+QQ# z+PH|OSeP9c9Klk@om$J&MIz!7Mg_k!DIddB-Km|rrq!ZD7h%AmODa-RsK4&Q=78Cb zH$gVS8cnZ-6oF(_Vu+-o%iN3Zz!pL7i>Y*&^Q5B;Mhw@k%3l8cazAJG0jVqxFi%&i zB2_q)s@~Uw0s{rky7onT2+cp_&R{DuYax0P=k(ziG+&QUvfAZ}M4(vwA~#P%yoLZ0 zz(p(pk%d8wX4L{7d$A*~=uUMV0^encH~MJ9Nb?Y^1b%~xBHzzP@j6XEG4n{aCcd4G86j*+xc$Qx=p6lG1DaEkNU8^}A?LQd9HoT3?u_|9x zUxMCx9nu}vp@-;sm@oRLSrR+`6&W6l2-@0)3T z94HQq*8FjW)GZiSzM5Y9J!12r@3!3Lxilia8C@E&C5me5Z^Wo;9XPo41svRl(&gZW zdmJ2o$iX$_4Ei+r9n4_9@&x(h;4s4}$k!a)JD9V4*58gD!=;Tdij4pVL(Z&ChjM0h2^z#2MV^qKPRT-lOwG%N$ z4QrD>`Q{j-MzwDOV+3DLn_ih$VvHJNhAz(-F;{aFS7MC(LYHTZn$*4mW7M>E2^phi zwXe+j1gwmV~miehjLlQ2=2!oW7M3jw5WZ*B&lFg_F^Yv1TXedWsHW@uHX)> z&HE3pqwX*csPsfzM?A&|KV*y;As``RgnTkan8w765%S3xq5hQ_qoX&OF*dbc>p-80O0JK4sb32 z&MN>o|E2?62!M+U04~1i0G9#a7X<*9-*kYh0C05yz%@4=;CcYuPyle_O$WFI0P)aN zoStvJ=>WF@;P!$M?zrgycLCt;0)TsNI>3DZxW544ftwES2-mOx;IW$y@B{#!EC6__ zL;$Cm#?usvS<(I`6_|o%svdb$kB8d7?Fbs|326U)Z~Q$<3Uejl81O`Vn`qdvU4*%36~fhnmk5PIXv^$ z&v3M+0sOxEWliv&1$O`_YN~;8i(9X131%7h7tzm#+qj4%!Ed?K2zhES20$Ur*RNS_Xu(Db zwwea*sWl3M#6$QDIi!0UJxN7Ru*<~FRpqpLs2sNz-74WcU9eCMRv1{RBuH)B;GH*v z7W&+3+Nop0pcJfG5(3tFdD>PVd4#Hi*J)#YEL%nW1P~U0-qe+1bho4kd#i1{`4V@ytd0~dq=4!YdAL*-#0d;bihE%h zIt*O`I*mYmQZ^SzYDwy|Nl&3PE*b?7Rovp{2{1DWLGk$nmA+0^4^)dkKvfNH*H2^M zRz8lxBLOw;l-o#MFun>>FLBNm!&BTYdtxg)KjcHNtbRQawh>LSJinQZJ*xgVd5|VxT3@ zs_$Vsoc?2BSKu)^ITPtWLHbW(a2fp<_#pih&sm`ZKSSEjV(RDc3;l)sBLDrVYU)+M zf}fH6YfSwTWqyfO){kf*`B(VgYw|03Ef;P_mi!uc!q=UiQoljQZ{;`g+g$Z}poYAT zgTs5)>1nu&TJlB={zt!4Z_1nQ1gQ`OCclN$w_@gbOF%+g76K%Z)kj}D`hZ0IKSpQ6Qm}$@tqs52?huiT@?UIgCYF@1nBDnp5PCv zAoc>s3pJr-Ac0EpRC7Ueql^pTA+}Xn&bNz=W&00LaKzICM&**}(aK|2LuHN$);<%t z7%vpG&nAJWxNCxJIgA9n3Y`&93e{l1p;7)W$S5sm^#l&+D8+l3)LA(oWNG46g&-ezK}NK%W(ef2>VfWtm{ra0 zhWZ+R$k)bGW*+{i638<^m+?E-Q1@{D1i38JU$kGEN=ITk#-nGeGTYpQFaYj&19Tf7D;X!llqzV(axr``5<2lg{;n|~ zO~&tf1LWJ3hpPt`6UIZ;0}Jq5)m&gG4SW;&{WNI!BglLtroJQJapz`&#FLSHKoELE z9)-bx{(sj-8O%awphX&3N>i$V5!bD?H`Hb}zZtDH$N5?%fEO{ zSI1qDsa|5z%Sd`Tre2X(+|M#`%Axe)0FF6Regv%42=rq=@hALU8NgYWEwvCe;fL~L zL{9h@m&`fl^M9g)({Kiw43_X$j_R*!I|sELgW9A!xG8|65p8S>;A}J{vwGlMAi8Ou zjZ@O3NA4+r?<|Cw>nFaCqYPSOC7dru+)8%CbBT(_Q$j zYVHcC9fZ3BaB1@L8vcGQhEw%l<=5^)fAQ-^hom7AgDJnM9{3Y${YmX)rJbl$A6Jwr zf%+znUHmpS)$7Q3m6x690d)2ae7yn8L@9Y)Up-Cvt-gAqG;Tt_V=dgy-sCTCZEx`x zx3u4*JRE>=H8trIjN2l>;v%w(aCZSNA2fR#f4?1rU+|mq2X~R**>|Et)6~Bq=ijOa z@Ke?NH?^CUcB4{%G=q&{s(LjYQ{|#WE+$yx!@GXsd;Fbjs=EB0W~x7< z(4Rrl38OBkIex2}!%ek^ecgk;^5L&~_`6hU>H#c4Rr7VVmrd1{M~1$|3=0;)dP(K(RFhy^*{LfpX!17 zM2!Cinz7p7fMB{-eP*gA z%=$Z@Eso}mv{h4nHbu>CoWmygV?F<9j6c@sy4y_EOxImwDv~S^a#OWntrjS=l7*Y& zk7f9ys=3Tm2bgsLpld|)l2l86wM4gD8G>e78Sdwq5e3y zeC{*dFEdqV!(ElBx)|>2Ox4xk3EvF`unMN)(J9?oQXld?;^{s0AID79iv@b2z%qT7 z_l~Fc(SIB=RbLk9ivo*vfqwDy{`!w|rW&CCz!TB~S#lss9?~cNpm_RVLpmGM#gMLs zpkwF*paT#Hr@pBkj9cx9~fgc*q@8S3!ZAC|? zsS*4ffzRQPet>bY)JP-xL7E!H^ifFfjaTwA)o6U;$g$K1I8rS&hPh(^<3mF}G}Kr_ zz(TFfR3GWwam*cu-0_Bh1(;w6xUH`;)kNJ$Z%cj50w1ICV|w>ail#@wxP&!*`rV(v!sXXT9p|`UPnPsTihRoJunWJ;(GIuU==NU53Q1cC$ugCJKZUm^f zfCUzy@l$#%pT*M`>Ob%v`yxXCai$@23_&dvK-MB}EYnbLt`%L?&{B)p&SHG$S5F%s|;CXsMUt7Hrx%FYK?AWf~D57z*;nZ&T<#w-S>Fsq43ejBnqHsqnkc;Caa)Y=B~b%i z2}(+C;c$59A)|hkrJb&}E=j^&1J6~`Tp8B4$x;q?jbyo{TvC!M9Qq4ay0rmB{K8F+ zcZ6IB5{vq=N_oCBmYi@tlL*uj{O}!BeV@YY@*z$hHV*!D_}C>wmxbJmwIOeEy(<$& zA$ZN17Tzljqe8-4uffJ`!4DS+Q1s&yyroglgsYny{fHMe{gh@3IRM;(Dc}nOb`hyo zirb(LF?qtK2RaU-J|SJF{6OE{|L#YgpJ;0mK^QSwp!(G%qcu#CmUj@%xg4tf#z zXa;6c+xij#V1w8RctJc6n$&*(wnQxkBU)hLM~iT9-r{yN)vZV^uqMyR z5v$0<*Ox?6b~kAYWb#2efHF28Cc22igX#{LxKR9CMjjW02dOldsJS3m zzm@aF#pPTsP=O|sgTA)T?JQB}c9pnuyRY0iIP=^?y3VySpp`Ik!0-psY3cw;!Xrto zH{J;rz#umwb}o(vsBWScsbPl7CKr?te`B^Jl8fCJmSmb(`hmN0Rax8t%2EkJpPfL# z3*qJ5t(mZ{;JF2_o$z`jB-|(@jfuAbb95|n8g8U{2vYR0Pfaevi|sa; z3Fxcs)v&zt&B5|L39)={VJvTdSu97NlB3N2CzkuhL)UV1*_Rm0HCpV8qlNxD7XSK7 zAo+dsf3)(mu+&46o-spWK4ikvxn`37ze7=Mc4!CRRFO><3t9~v zgcKxY6t)LUWjw1fDwV?^m%O>9CU^UWN!9y4rK)dSg;Hrb%#loQ3*8{u(o@}fZ+WjV z{WZ2}a>;gQ@0+tbk0;!nCkpS*?w8%2=u>i(*;m+|H%zKeUIB?u#nE=+6`hAm{iJ&Y zs9wafDV5@{!nO|-lDS{%W3&lsk%EL56U+NR$ zUWB;<^mp3St1d-{Qufa{*^+Up)z9*_7+xp!WcWXQQtW*@{!wlPmq1l!;GTlqr6{_iBSzdX~rYBT2~#YwNQa96rxxMmK<^hksye zxo;9!LSBVHFllfIGeG3~C-ky!YtfoyVbS=4FBp(Z7OiQC7OmMgwrGzUTr|q=uW`}7 zXW%;es1Zq6`vw;6SbWiX8iBI!8?+btrr7LOS^myy?Jp9d1b92EKr&ruXSFGvMS3J) zdBZF!MJu|us+ttGgTa425ROkuVOd%JUV6&J?qF%n@%pbLGky!~-E>RC7 zp(Pq_Sp_?1TKp{a7UA#T;39Os)n9}zTGG!Dp;uaj4yCgQnrB#9bkyY5zA4n}Yx<); zqXVE_ZPZ;#anzgQqyDCEwON^#5!8vEQ~^olBq{G-inmjMM5C4nH7 zT9xK2EK-v@1&s9KXB)_bW(X2%T`1=$e5ZY-*qs(~4bBNqHVB5O8Y}cBdp0~t{rKd$ zWvilERIgxpXi}4?Nrmi3yV1y<*@|YedNy(~8aRq zrhYLg7Y33K$Gh{0SN1#d2+iDK$;DX=8e#eabO z8ZZc~QCCG_2mbrm3s1sjdVj64$U-2y8@#XqYCc*FzVY%_1(vM*Ow}CGw z0fBxB7(b1{#P4TBtv9aG@SI9cATABhlPE=!kpCut+jk-zSBhGlQ?dE{m1u%CO7Y^c z4b7q{cVTKk_2n~O?V?Ip9?#&ADHhcGnuj^Ip*C+22XWOHk6?)}BrD1XfRbo^DWn8M zE41Pc&q8(E9g&5hX}f649m$7}C^*IV>S5<-BWTprTyxa+_E0?t6OqE`M+ijVQ4~pi zxyb!0-?rSV3!7&u!DuP&Ri&5HsI0i{GuB;m|F>fzVELT?GLhVVO;PPKyfrO4@WKob zh88Cy7z}8q1nU*pgJ?r~Vn&!WCxN>FrX2!y`XWFOPu$liK{X2+az|%j-jckFg(h)f ze8GmC%IUaK2hAZ;lUo{wdl?Yadjo{luorke5cz=KzDEKS?C8DbxatA(V3JPCR@XBZ zp=MpWHZ2`5>?pNw|lzK3$9)U(U{cU2*rsjeCH^ z!xHYE^vfC*c!&n{zrM#X;tzur4FOV8xzmT(alnQGlbJ%-fRB8>u3q`FYahLc|1&+Kl9B=$ml%k)Lwny7iIfQ0O0Uq*5@|d=1W9O` z6DJ%DGU{`K5T=lR>%ewAQE(ybmG8;CNuMg0crw3+%?YCPDtv0ECy(jCSXR8JV)R79>5)1s+ofO=F`<$Xdz6wnnKtAm;pzhQx@LmobR?>m2f^fU6uJRv9^FJdL(&EUhJ$WdMa_r^>Ltep@CrjYN>OAgRTUJe$?Czj1F7iMvYPhE|1vTaDs3zUSoIZBR%LD_@W#Pg|)C7)YQ{ED1M}LL8>H`6U~Znq1eja85w@67$`K zXeq9oy!XMN1S3TA`RAQpHO+w++X~ofn2G9!O;VKr2Q<(me{1my2>O~Y5W3zCzbNsB z_j_@3~U`o9;y1!LKq3wd;+MROraA^(N<=Gg)eM*3bwyU)R8b$)X>nA z4P;fS=vQUIU4zk$(kPau{8jFtm9Q_9&Q%oxHKc-nRy+a5sv@iCpepX?8D2Ygf$7#E z2^d=c9t9z^+~uy;X!!)hvM%lfmLFGNrAxXXDhV>Hn&rX!Tk;_MEBWQBhw$|f6k*_X zD&tQbpTL&;A&^*`rEkp7;qHLRtb$DM@&L?x;K~ntzL|*DqMChmdP`<#`rXCm)5&7hG*%IO?t=_G%!E{Ep`k@?S7V2VRZ8BtaC^-}x3N zIj|(PfyB4St@U`lWjFKHD>*PEwW&&w^7WuzNyA0K51Rw*1$Gw+o1-P<7Gg9&eE3xDXUNBFOyMwc^)2k!h3#|i`t!mbQ8o-upcwqDEX=np%sYO@jD$qjMIy3@y z=Ck;d(Yvtap2MHd#nkfv@qPUH{TSjHJOky#^N75&Uf-WF$t$WI0{N&ao{5iFIF@K z=WS8fLA@FDt0DQDLCZX_8AzxK%V*<~8F9Etpq7$!4hmn{sxrPRdxMHgZ7`_#RhTX5 z=yQCm8lqiTzTWPBoy9AJhJQb5-%k|LoACjBJ-`qcRf-6AAkEQ&Ap(5b6TfhV@l_2{ z7{rnD_GnxH1d2{gAOmNiq5NBO62jTtg{MI_WhHYCQQsH)5Fv2=y_^JI6Q-g>%6)1dKJPwr7I0aiR5 z72czG4p$Mxvtuj%l?97fC6Eqe)vl!w+Y#V{ ztdxdh`$2h#s#AxtW%MmJ4YclkkJh~hT89ml1O;j}{yZj+$)maIaZo+Pe8JYEh7plq zm)OR)hxzAKih9HA?eEa!oAQRdSy#O!zw@Go84OaQ=Q&-yjbZ*l{vdDXsDHy6 z{=59U{98Rl7;zX&B;>V`BRL%7JM3!+p+w%1KjtEch$H`@g`rIRPt^Sr<9xiwKq4&t zuDr{i_Yn3YHx~g!-etfL4b);75$4sCdi+745c%`F2ozFJ{+iz}KPZTWV-nX5Ef%PT zNFa{{g>wz}v|P(@>nizl5RrTRHoZtz45ssadL9xdxl85#P!Ttdvj0 zxs~TKUg*{K@^ftCId3o51Q{;8muqq@VETcHR)zL*4W;+;b64HVPk3utcrQP3$zHDJ z?U_d~Z-@pZkK|x4BZz4A0QNfjRSjPV{G@UAVNX2IC#TY}yTO+Du|-k2NKDZu5LFa! zt|9y%*ZLWhe1@b|@9t+YnD1c|KU){<2tYiHEsdWl*wW9-_jA+_kY58k_y_f15b>Nu zbHRx^@&d0>DE5SU5&1RcMXC877*CB-nUYB`35`fK?$e}04bf3LlZctpQuq#=(8 zRZ*{d72lB8bre7llQ*%6->iqdtSkQ>yZdceg0&#+22QKTEw_^%op)fAJ^mIrUd8{(s4T$zOBS->@{;r}DRYh}7dSQjfo8e@Dju z%HQRG-}6H9B&qs_)Yp`?fq{rS@_sI3?jW%t*a$t2YK*s|vA?m_D^y`n9sJn@K{A>e zh{J<`I`#ahIY|tf(_A;#!a&FzM8SENQE`ykGTz>Esug2ww8FOqri#;#NMROZ&O@b5pCGihX!KW$Oq`iSSBH~O@2o{((74CA;Jy*9EVjL@7LBrZde=PYVhB9bOcdu zkjgMO8Y^n5Nu1KjemI*P2Dxz%)TVkslgcDSvq3)*!)A(sAT}|?uEClzKunTW8xgx} zs_6#M8{uT88;D+mxH61hgFo_&+6Z5RRhexdh7AJPL;_{4QgFhFcVFapibf6l|N>yT{8b?Q} z3GvWa%CDv9{^tf_#xOojh~a6RqTy+l=?FF84G~agrG|qbH4cK*kZaKhyo&u>%}_On zSyNZ7K{h!+gsQ=B3S-pZ&#y3$bu5SgHTZ8G27+ibD7yjuL^v7;0ckiSR4I?(hbXwo zK>S151pM3VFWeRbG5I*stpgOCUA0}8wHU+=f9^nkcKWq<8Hkg{ z+Pe+JK0~awcNtp@se9tJQ`BC+_C5n~!Vs`4hVWaUj0X%v;6fy**21cw4d)OrqQ(XhnH9$tK*%cIRmS?A><@-=u6FNfJkfn@U z#-p_mr2SY*eK-Fz?&h|4@v2MdCr1ETIM3Hq$dgj(fvf9l#hQf+mn*mM!UYHV>(vMC zNURSkk@BQOg_>Mzd|j=vpl7?5lF^L-Q^&Ug^$g}uR$bguL!N2`8MHP;G$beyc4py% zT{Nn$l+|`nU?{XFi`n#1#}9oL@RLqh?%pie zUoaGfQz#xeu>j$W_vu;>Qyf9MoF)i>>+YvbseXu8HqcgSe1)?y)^e&Vw!us%^gqN-1VEP9M#fD5M2MgXO6X`$aOL? za$SFCPTW9eAht?mP9wSh|W7yiE zRiBr5-XR|1162H`&QVE`39`sU>vuzQf;O*rPD=iB?Jx4KfS`h zjpzgGpI%|t08v~0~Zw2gNjSDXA0Fk z8(blt@XZEbFpglG+{qPj712**Sm2r9I_C2WxF0d1r|BE6f%oI1Cy2i_w&jof<1g4u7Qvx+$N&=3)JbIuRd*7(R zn+}-X6uF4{hWeE-A^MiUSigcLQkaZeL0>z(;~u_*Es-AtS!%z-Bn!g_NSug~MGO=7ewDTCD-n;Iyh zcXS~;g6nh|18u-s5oLj|2#o3;<`k_|#a z`{1tG+%s2*OQ`LGyJf2+#)2>Df?g&_;q}=Ech4rt{r`h~@Z=#W-aLOCFz)lNsF&Eo z=_8I7t|08`T)8S9;fD~g5c`5ZanxPjI2g8b6!+0M7%T{lgL`Cy>J~8$E??-7gH+rz z4(^!^>p^!-hF6~!!b>VZu4K_1Nk{fdfp{q?ZYvDx4gUOYjFSNRFdX{mhp2g`L(h~l{iI|f`-t15r*iWu}n0t_=Gn-|8K`K z*--4(3iNqdU~yL$7Cd$2l^E>rbXb!gaX4uRWMaVT&JSb)tDP9F?uZ6IL&ncxXZQ2E zFxmP4*gF#dtE&2s&%JM!Hw(-~W?&T5a|LmbMcf8NO=e~`3z#A9=OP9I#-R*3@^E&kGlp1SN>Q#-&7#c7e)qU(*Tt)3WV zqUW5YY(~;Iuaq(I!9$f8g-$a?>tjqIwj-%nDZUY5kVWREx2{tB%{Nmi{#JSIWJwSV z@Df8MIVozQo7KH`kW##2KX_fTN6&2ZPEyLrH{R|`Bj$eIX<2CzQG|tS+kMN-oF>{L z*%f^@0zp5YOh8&Q`7YTC=N1Xhg&m7ES%(L9dl}6s3i^p)BvHNIhE*Z0NS~)1XoX<<{~V z=XxsX@TwA_YTZhD5&*zl!idx>O8V{PTU2R>+)@7Z{XFY06{wN5S3@!-w~J{*%H?*6 z8SBOJ8gvYpPLeiDGkq|e#vrOX4^g4y38KP71bw2paUFSO>UxGUe7k%TE27Yi{Lp$# zh&wlILfo|hozq+B%00b@t|&RKK%4ZQ0ZYxqa@g});KQ;4%w73}+7+#^5~*-a6RKZr zD68pTP_}L)aGqR#Ttm5ZC^gZu`>|fx!_Aq`dKQuO?oN`s`e~|dL6(m#q9080;HiDT zKhw*$J}TZeMyu@x#JCqkQ!{w4F~+@fjlrvyb)nRC&uVMTAi7t>UT_LiZMX9bqr1eJ zv(9gP#O#3_Vz#Uz#Oz0#5;1%5e+DsIcm_1T4Viv9mG3$66F*8rux3mA^jNr5XKHnWN z3)g{|g=<30!Z#f;E2Q2*&Z}QzPT=(fuad7P;ML|}Xuo&x>M+5hd6+;OUE<2y9VV#m zAxzL)qWojMC(28=G*KSk?Ts(?{W>T1{iY(Z@3)&$?0e#WM(kU)@x{LH?qOoz?D_X`-!Mbz3q2D1{<4Y0zQuc#h<#6PG_miR|9Y|S4{wWoZ*Te#kmI0N zH+^{VZLu$hN&|2e+blN+vG0trtBZZlY`$XOv)#qM$zjcDfwrM4b-Y=FoevKcj~NhZ zvtv&18@DM0zdz>$zZWVJ{Qj~j1;4-k&j@~xe|@9leP@g}!SBV&1izIg`2Dj;@O!3X zg9X2rdL;P0yom(A%g2`pelKk_!SA{?3Vw^iaQkwb?qR_!8!X_h5_o-;m~%G=AGud6 z7X4DIBYy8xCQ8C>$9lwXdzx;^Q-{gY^0tp0oimIeP<)dQeHUQ#6EJTPnA1*FZswNP3ozS+?i9&-D2)k#HF`p;MiGH8O%2;aO|9^Wdp~0 z>LWK#-CGlJkdNGd5DTUT1W;m%v|?hA4e~=&Pll^DVor$|RTicu`tej!4+q3- z_I1r&FhaJ+Npg_;ZP06zZP1YxTB3)hl77M|0j(R51^gLE28y=m;i=@E?Z+O$TSh;T zI8sP1L;{Mz(NB#a$PeeX&T114WuDN*qLf5xkFx~3O1Kfz=0a{$Oi8g4KiH0=Yln_3 zMy|Q>SC#_yzaW1ocZ>X&fQsX?x=(+rYa%m1l4I zdHL3t&EB*+JT4xW5-v{GKA&)Awx2v%DoZj$-AFe#_7)uWGtKd0ZAn;so%*zNj+d!s zW;UHkq^E?iYAs3l1XSKfYoL&Wec`1@9L%A{SD;&xp(1}LB^i2cv}D6HkDJ(1FAIHz zdQbEV<5|%f^qxv7pT)8q=)b=5@-Mr~%azUM67l6%HY)Sdmvy1xm{?MJ=_;+F&QKatEzF4$T(78_aoO{zbMhd7`rVfe2c91 zkI>jv+Usi&+0WcqDKaE&k>Y*AJ>I-EL zICGNNn6|-`8@llWTz;QJ zY@e(Mv0c6?5!-@iqx+ZU2;h}J*9o{6vQeM5NoM1!!MX+f}k zRa?+B`K6tR8d#ZZFCqW|)bYM*NiAz~bM$Kl04~eLNEtHvscJn*#JD+l`I{tB;@`3& z@86P)Q1{@@rXKpY^p?>5Tz8>+1LfZ5Z4Q;ny;p?cwmIM3O5_I!TM30A>lVa_+UU>H zNb8i@R1$S{A&+_*+Nv&~Of`lxy#V>ytJ(wUDAF<|xs$u%ekK(3L&&iE?8qFQ48yC5 zPSDKJ{^T*6=)_~0D`_TCi=RaObzl-{=C!#25+iJ%Py5D}KvC~Qkk~4EFWc+bB_UDo zhVj*C5AA5)vw?(}19fjOyX?3kp#u4Ko6052zm%8fkL;nIB6zhndQZam3=K(ApcW6B z7+<9#?;3JGzsc6Cl}2c*J8xEMy?Uwa+ZAd06>4!J7m32F-qO~q%hzGOqIKSS_1as_ zdiAgJ)2T9@RtBKF`QY{PI&DS7w7%N-Kf7z=J+xk3{H9y4{$0L@E9#f^7={Zv%eo3z z%Eiv_EDM)xp!Mpn@R{<~tIu}|AnFC{)kWpoy}s6~`JJq>z39$e0{>iGzOL(!ac?y1 z)uo+1uwGr(SRlB1f4+3IDB2Sl)&YNJpx}-eAt8`IXP`>L&^uR`4(J=MUdUbZE;9U>B*G2q# zbF5calyCj!XubN9=6Er3w6UyLYoL$~)Z)(=x&GFxFEeUu)_W?Yd=|^zv|cUJ_>}rw zS0-YXh%a9)Kbsf5+19JmJJ)W#LJRZOt3(TjBkGEdkAQfrd`&ixBsd$4+imX=)H{5!4laXMh)~j!JZW`+q z*g~=OYKakLu?(^S)+<=xy2WTZKH+x2gk`K(XIM9Gfc5H%GS;hkTFKu;>(x~dR9!@a z)?vN+7Jxvh_3CN{;H_@GGD)JudUbPWE;@U&vtHfOUFhCGxp%SaF8A7Ub6c|9^a+B~ zGOwQ9=og=jzSrZJWR1LROeJgNcY0@yv^LMXbQ87t?wnk3PepRU_j;$z9}OE%3qRY< z`4Eep-!BCoq+PaNeI`KJv0b3Cstr$736XM5V^gvq0$#Z~IZNUXsL+La-S2}Fb|2l3 zU@$4aIa8zD3Y!}rPWAvU-76vI1ee<{!Ry^-ez24UvZ>dyGkgiVo`F+yfOLhay(?yG zVAs^ADs$(LYk@oNytf7^BZY*rL$<6eEc+Jk0IXb@Y-hJ{0j>t`;N z@>9n*Ul&_x-T?gY%{RZr4U~I9;$)SDId3V$y^+oQ>k{vmjXhQFZAqreedd<7uJF}+ zdxvbS&5wV66HS!|a#LklMN{QRz0>Afg0SCd)oYt8ZVhu~3ns`GnhR~^=SqL(O8?wk z!MLxD%xZN&U(j4?L0@R`a}DQC*C%T$G6#G~biWnKZuRe%Y^eTUI@j*HViV1^hjVoI zlZxo>r@cdWZ?ov$VbKd--9+r_7df(dv?8*3tar%fk|6ART54_Vs%;JIsu>>B?Ab}# zr9FaOMV=is@Mt%7)em;n&%fV?rQg_9-~ZmFf90lH27jHStKU>aSHJBYx_TuD2cA~D zHo6+K2D&n@OwmPq`DJiR=xR&dcZiH-=xQtIYAfAuL*yy53=U!$9OUWFA|B*gX&#nH zcv>b06VNwU_tSEQbN#a{thG9{x>nua8c(>b{rdx;TOW`4-%Gc5Y${FX$sFA-uZV7+ z>K(eBzSeyqGjlA|u~g9^)GE5YPMY%n0tEW{nVV>RygR4D+_Nqfrc$HY_rkJ9wT-Qt z{eGuJH+yoYN??p#OCK76kvT>QUOot%F`LN;Fs zf@sabf7%L%;J+l!PnQ3?LwScN_|F3OSS1KeDfZjv=2|R)>gqn&0UvBZohODd`fmP zJ?6bI7U?p)OA`k4SJ176a9CuR4}&j`->+XCa;|S~yuU|~GoiWDyyI6B1=1cBXw9kz zZ8rA!F@xxo_k}Blb$7*mE$pVRVsV>PSLU&+&w@Nh`bC&myoJJY>*FmNiRJC@v;|%Z z5n}!ODUe@UNOW;Z4w{O>i9RB^)53WZq}dHKVB#&5_HJFlblHQz(bkEO6B`<$R?XsMZhWV4Jen_)Xb~7i?ny zYoqg~Y5K|ogB%VTM^aB{Fuc{E-Zg#(3bS{g%X1P*aq}hvB>=MPF}8<$MHUJP6fObZQx}ov*ZhMhMIv&QgVcB>Gwg6~%?YidT;anS@jdyfA z(kt7ol~hs{k;>=ZTBNcpM=C}*kLG?YO$et<+9wESB%B?>Y3D%pr=c8DmJ3QrlN5>v z{b1H=4@b(ZCHf&Fmx#az^f$PskNL?DA`ksEV~0}8C!-(IK2^ECdKkh{>|Vjn6t{?e z8sipVeWpF%9~uu}s0UL1z$}x#O|~UBAX*;krg_j4bvKCUyX7*P4d%H#3DrV3eIcT4 zU2DIZs@PGF*f|$>DS|)xbqE2~ih80X5N3N`_R;&IAAdD~jE1=Ou6Q_!qITqg9kcNW zHv&Q$zE(o2u85E>+8hYUsA74JDsIiQ6M_q8mf8t7CefrChezP{PU_C2ZW4@3|n@X3Z*wd*u`l1GN zYOCFrI*{&A_jhw!yWMReT{@}>ZvN8gYtYY5AJ+2QM8_^j?}Bv}*> zBw2=+18&8>?tOgSHJI4-&_@{8emrW!7y0^cVfCjB+v`P!k*LTpvIlC)9=`np7-BPw zL^>d;=>74G;&|O3lV6=U9Yh(%CbrTud%D4HPdyXCGzR;`m0Rfm!_fV`5MlQ6WjO9T zjpSB3AjRnZ-Y#}~>%NVo7m2%%9ZtAnjE}t9YrAChp3kyJn%%-Q*#( zg`DXYo-sHM=#n71dRp$%yy8n~ec)@{`+apV*=u>rnf@+t;Y^ZIrJx}L_S*Qq$t+o^ zKoHPbZ`61aioP+;yY;0CsUu!nRD-lCe=SQ#5?wb9Rp;;DuTG}7IYmX+PlGB}aVpKl3~nTh!03+N~Xx=6WllU>_3=L^p6T&Df{%iVmlwni`Y2pSlg^$6#db z=*DT8pSCdkDYrE;cl6C^%;uEa2EjX8G7UmVxowfYGmo^yj&stN4vub~7RS*o)8g%- zTc^cCqBm0UP`RPCGlNrZ`;KsWbafC9^OtteVJLGq<=Q*KL!&v>OklgTqYe&{HswZi zga_)*NPlUR4kH<14ucutl-sEzJR-U#h{yO#JG)qX1AYKwaKqh>ZltI|10Pk>=v{ba zmn;LmE2EuqyLE(9GB5n776z1ZyLW^WGe2vAzocA8M>rw#^A>nX%8l&^cT>y8sfda3 z9+`1Wp_Ch+WtQy8OxP>>_Oy6!uD*k-@5sjcxP90`cS3agv^b+zc8lN1jdym0N2~Sw z`b!gam=N#h#<@M*-Y($+K4{^>r7~NkeLy5;aGml!D zGfRmZog-+3l|$Ug7LW#>0`zQ)?j-G5vZm-j1R{6(XiVu`LPm6{*^#Lg?6Zkwq&eC; z_0|6~re|xz2vsLIp`q2w0@b;x?|zHbjpz zEp#rn3BOd0ZxE7Wm-+(a=D4Mcq`*b@OpCYBOIVJj2dd;2HRh&(sbQA}@X|mo7YR(f zv=t51%+o|;8!h<~qQ)sd${?QgViYr*G$iZQ)L#`f_3JdM41CP;5&{u>AX``H~IT|6%cu`;#B<4f^<{ zU}d?bV3xXS7Konmbbx_cCRu2oC8{4wWg5~iECt%!r8aKN@Flv~OA3AH^v1Qy>PZIR zb-;=bl$X^j0{Yq!s>P(V{K?Na(2tP5O|kT)Tp0Zx;N1nyjc@vx7)G!lCxRbUF6lM> zRZfuej1I(6cu(G_mX7ew^>8#y(Ijr(2af)>TuIG0O8{Ya075JYz9z;6Un2pFSdQ?_ zg?0M6xEA-4eA+6~FliM~Cs`@)FB&n@a97EM2684cVJqCo{6)oq8@+&Ervr>m?+-u% z7~rKSb6w3R2R+tz$r`}rjKM*rE)<0hk!y7^OrNIZ^;|K9q=A019J>vo_EMFnhh2`h zU9WcemH*vcUeOd?i{87K>0*Wln>_l(JWjOW`$~STDEYN2_v`c^$Ks+g!ftLcfQ_y^ za;wbiyj25V%Nv_~8f2J-DNn58nPuX@^+tsau)M3ji5L%HE3w2iMn9Sc*_E(A){&FF zU9jT0Sh{nAf;~&5gI!r1m|n`qZ@a`s&O|#Z)l43mXxD zNWZ{d0h;?ObY${Bts|iHa*plX6?e~fg;KfNawDalZ1*zStF3jeQMKZQ6#*(e{Im~W z@s5~G`DVgUubHOXPY1GYXj8Sx$xm3oh*UbBl6gd?j^e!v++;T;I&TTQm=~8z>}l1D zmh_LG==gfEGqbd6bs&4H>$Dd&HcBBUEd+>G8z3evbSNb; zRf$a*lukHAwG&!DG#g_S(WPN-m{`{|MD=M>;0RJVFrLmM)5oU9WU8c}?7%PS_Iz$Q zr`}kiD?r_PcZO?sGm>}5#QXEe{$hebJd#cw1;9RvOCzKEt&XbPXg<1A#-S?Ix-nU_ z!JXYs*?1TAz^+{K3ZO3S?siuJ2e@6_0Z9Q9;sbf)z_BR+dsVIjVj0Vov02oDajqka zTHsI%Y7@0USI`XfnS&7U4@y4c*xR_)9XvLrY{7f;jd$?VREE(g0sFYUi>f<;W@PBy z2`-~~u)GR2qSn1Liw3c8Jkd=w?NwB{AD8#bqBTr{_trHxUYhd8w?N(AT_J6v`o#(< zOdX$yp_v=MQ46)EB!|1`p=p_4OFl&&k=Xo`X`cBr(9uuHUBY#!w9@wfQ+)L`oAb)AFfH0{h(ubw}f^)QCm;sM6-On`H+zuS3 zyrO$bIZf2piJ9NFK)ERwqx|X4M9>Tl6XGFmNc7k=?rbL;6qiOq&M7w(g*Nj<3p8!Y z?G)Xa5<}Y2ucoQ*(QrLF)h=$*6Y=*q<;7nKo|)gZ6r|A1?~@-N@_GK(u+*z!@O=oX z0s+_zX0A~(jDowG5KScy7yE`M^6>A9Md05T|9CR_;eym@nZZS};*%|&BKuWUnUMI! zAn5NUW>J_5asC85H2k6kZx-Wx3F4w`LBqPWs z5u~V3`D*K-7^2M37}LyO$g(K6`bWIaLq+Qhjg-JAR%sHSJd13VF%1?&WacSN74pz} z1+!m0JWflSfq(cF`Ki0E?)bwxyW^R%-SKSq?s!Vlq|rr%-BD={%gY+ovVwvmfv_11 zY^@*Xb%+g*Pa{pLbgr^nC|cn zf61go_pA0PIsb?k3#~43UIu7bixWv@+TPO}pzT>>SLGUXUOpeQ26%N@h)l{}4Khgx z^htscOS^cFIRZ%yN=J8VM-eW{I^Pg|tDb4WFKM|=`qhUCBK)OJ=5Zz4pj(>hmg4lw zu6eE9Qkk85Mfq;A7SFjU8Qyn=wWo#J`nFWb@nmP_Kf}{39gp-pn1G}#!?4)%*5hW# zfReQ=2f`jH?lm{gSYvuzgh_D)WXXhsAUyjXq$?37m;ORi!wN{;+L{~hX$)=&{Nz{^ zl;NXCXf-Nc^D{S}t;Js7djYJ5yT#Ch38fOh|H6`vv|tt{e%OP?Pc4>FvS{>Iu7WqS zu6qjw-Zq&_`MBl$j$ZV4S=4>f;sNnMK5k~DXyr5vNof}HEs-(#F^FcF@rWPx&64$c z+vp{(F0Jy5wHc1II%`G#aOROaYvUpO7}62Wie8?U`BO`7eLgvQby{wHJ}LU!w0Ibg z4eJPx%RJNK*Jr`9|CkoHN2{jA!=u-x#XAbN277J~PZsR#Ms|efV+Fvr;IA3@d{Pd4 zUJwYLHuU))JTi?gUtma0y`T zc6GbC-Q8F>4)KMS??Gku$RcEp2Y61oJv+jALFSuZt3l9AxxG5Vxk2XH7A!9*w|7T4 zC&;X5@rZOsI9n~;N5#wy;t82m5-gEqvq+ThlsFmvYg#-}m-pkc7bS&0N3TzdO{kfT z+K_TnJHji1=&>;F)R$%>ymOcnAhz#=kUG&#ah-0On+}FO4&glIW@M4d_m20B&fsEudpJH%yu7jv!l7w zkGqe#kL$-LXxb;;C)_9bp)Y=lmp+w^KkYsp|DXH6=qxU}_*5>QnvFl>J`;a7 zvy@^^bDwpmMQ7X1IfB~e1ljoXz?~k%X9SdWX5h{U+?hdi&h!{kNXKUdZf@Yt(gl6+ zY`t?f@0=63bAotY;N}I&dFGHzWSxXXihVUT%(GQSYGg@OA*5S?!ieNhj6k%zt%xGx3q6)N+~fx9AbUk;)R zrpH&R%&!FQ%D{caE-X^RzZ$qjf%~d1sHCg(k*oN~)q!IgUlX`%g6KkSrQ@&Z*4Mao zZQ!mA;;#pphpEKkzExgpqW!q+g#RkV*UTVwRtz;^dVYDrR1ENY6Hk;6* zT$!DN4wju`JH*uTc8>Ki*!`ubpZ;3ZPnfVaqtSe^sFo{Nt7VTz^NRHuO6Z9hqmDVDtM z){T)!qX?z#UMMy9%8^2Jg`5c8#K>Wi>QE+gee`&UuB#0&a@*fBiRExl+A6tCrxEFE zT;GEHczIpo#X!!D#BkyItyQ|O%pLki)4@BstD);NH(x5E`j?BS{wtdmr+uZUmanc> z%O20otJY_3@>1{4O*(k(b8~%0^KV7{^!K8E`r2kSn*S)O<*L8qJF|3Vl!Gd|5a4W*H^1$kLTu%>oYfb zsdq<{4(|QY{C815{imp(=8W2$M)QrLTFz-@4K%A}I#MlrJeoJJ&uH>e?~W!_@BPs{ zy%jMbaY8$zsGn}ztT^qNMYWu}S}l9bY42DcPRmQZJDPNG?~mqLMg4SkQ9s?eS&im7 zMYWu_S}l7#n)j^FX!26;jwT)4`=fboQ9qqm)K90^Z%&-{b49g0f3;fnnA6_7KAe`9 zdUrJG;I)tDE@3r!B2Zm$%rSdn@J?a(fvc8xL)xSJS-kBCgOgXm#_+T=J@URpTRb|f zKP~8P5|Np2b+d@=M<(M%cUQYBQ?abd;6DYIGF%%!#K+CvvTm!Z%qulAw#abwl@xlW z8C>(`k|eMl?;f+0xIVlPOSA$TfqZwpams zW}}Sn+e4bTfmY)6czBrBkh+o~O*3j~4QX5P1hp&j7|joXp;(%hVrj#XP7clrt-`r?y`Nzd0`k8K)>K?M?1^w5|mi6&< zv*mGefZoxZhnk`<^j|ky9v8mNmdghnyv>$-z?L^hx#{fz?7;xKFcgGsti7GKXWpcB(UsR)q!5|j6rzx3tC4z6 z>*YO(J82p{-y&@6R}y3sUBf%x_0-ac=`}f-HQD?jAM96KlmKD?)^ZExD+>0jEeiG< zh_m`YEric8EFW#qxaEK=5$FisMLDx!AL9_)aD)0mS*>uc{eej^~M^%WNoQsDUu`;8AUP?OQDh`2|<-l zCSo~7VxLT8v~!k1g{)mP%o0+}dvXvCn^l%Mh0hM*R7u)0x~_;Mek2h|W86@mG(`bO zRX%)UdmWPGB0IZwOPV6^YDfCqvWt*;oUj^C; zA0XUsd=&$!snrgf7G{1X4aOPkqV_G4V~PoeHxd}cpJXHEy-K9?TVcxzH|EgsH(;|=FWDG^ch{u zk0JZ@38<+)JCqLJo>^fDc!ue-JLpDrOy|zTTtx zz)o(oBJ0NZH!TrM^w@NQ2UWr@Jg_Ulb{2tWpWa=b&(SZZHzsxHz)Nqx@wq8GL# z+)jyX_P`T*JpRvny1hDyrwed+-rK#SE8fSNwvTUGLp*^y83odH$>X`uw0-&PL}lK{ z;`zLvK0C=*aI%|(=ksLTo~O8}lZlcH@OH+#xhtMd)28Q}HiHlB?`F9DvqTG8&Ap%V zU0WqhJBSAkb_cnGv+*JR0q^a6;U2lB9VYjA^Loz4?{e>oJ~uW#g0>y$j*!PQp3X

4h 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%0Ds4uGnco)LQSSE8}#^wKg$+zlkoX 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

qw!=d<>3?#gBG{ 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�V)AHr3>mTt( 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

IZ5-6<(Q7ys`>MDhv?$fKXq) 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

4tmA^Z0cjfJF%HN~%_vY;$JP#;;pKkBZ z8@c)SzI=<-_5l@~i8oK)X2RDj@inWNuLqsJh1u#PZf57T+Rjm-hw?TjZx2yuu9%vu zeo9xqhm}4rZx0h8j`aB=I=@QP!Xr+!e|Xg2_hWf`G;fc=^@6B*nU+oHTZ1^K7*#$T@Z5ucx8 z@LBcBbGllbw`cOU7*?Op+p~Fl4!6bp7U2b@y_mNb^7bNWFNyw3&BNhkCBK4aPu^Z3 z`Bf#qO7d}taY$LB`z72T%gs{VEam1HKJ~d@ru${OPnD3%MQlahmgj8+#9mXEy~fyr z#n+Yhb@EE1wo*4MlY(*Ax)Z`G6ynT{yq3U!h$AnLn>oeSg^7a|IJ{Pl}J3p?^e@;5f=g?Uer4>6d zEara4s2H9v*y2KXpE(@;R_L4o3}6WwiaSvirAM)<5cJ+FMMKnxnM69 z!Yc(MOwg+ZM*9{yJ}88e@-)|qf-NtE*9x|x5MD1B7q1tN2!jh$GNfRG3pS)s31?7=ol&jg#IQ1L-l~Fe zxr!=QtBTcy;!5`wa&rqHqGV%uX2H%ZgtH1Zv=GiN7#C+3@bFXx=N9aof}KkR=c$78 zyaKl=Ilq9d#{~sLF?nIZE+~YH3dY4ng+Ae8l^j;Eiwic4l9wdyzeHtA3C{hc;^oo; zb{875cjJ6?S;3W?!wc?wG(v1$UMS6c5Fez1jVKuZ4lmec1-rc9-bV^ra;2zTDJqHS z+9}~GF?F@7zouYU73>+nejX!|R<~Qa8$UfV0RYmE^hBG*xk;? zJ!0dYgbgNqyKt}Q-dC`D3w9rL?-$+s{k>t$_dvlOD7Zb}OnOc2n^iC_XBASLzL~rV ztZFoA+l2>3YIeaMEZA&F%~40sp{jwNJ}^9_^tlCls9JZ}yrCC4p!(+ZW=jZ$UR zx1p@Z5)*A+dpiuq+Eu`MQrw&3JuECL1|q87SKF7qdMYLo3kty_J)f&>`$on%Izlm6c_vUA*Ji1UDP2(9%3v zJ>_h_GPX{_6W*V=Q8)C{;~(?*$AT?`Mm;7^xloeHlkm!Z0&@1dzYvVufpB{u!>_99 zYa4nd`G0CX13|F^P_ow4EA*n54ze^F_Q9zlwnOMG&WMDaxP(zr+a!!samKOugvIvr z6c#PU_UX{#d{(=|AappcUx!!1FX*#h&}Z;kGkk(X4D!@3?a1OYCo#uF@mCc2wf#zP zQ@?@cZ(uiZVW8k|Y2jxUE3N=r!a0DEad6_l#<9tjRennuR1NWOn~FVE_pO%HbcSB_#Y)rcPo zJ6g>UnJ=6n$1yy}ka5dGU?_$MNYZ7^y^h5b@6RLDlx8-_s|=7?1v|y7jMvsdxK&(& zS~bZ{rO#ziS)47sg!*6BDd%JIfbCPVJYey3CtI%@99=}h#qM-=ai(}VvS~Q5lScS}jO`Tgb?Kf11$v0s`nLuMs+|G)9)*q~)9y{-xbzo5etMIODW~X&o zg5NmVt$dGgi*sz!;YWvI&cf`(n!q{+w1TW`Vy|k3tYq8(TFEjf4wJ3HS!1ihF8kon z(tROuUSL4gue&d_jun_j3RKQ5sf=)diXee$>{hn*!NGVG%-r>c`nO5zk6HVjjn2uk zw;iuwd)wAJv)*r4Jo~PU_}+oW?I3qMz1KqOtI)-EtPtm;h$nGuJCy@50_mO~v};(H z&mJ|f&A-=qpWo7XNxk}b%qK?kZtvX6pg+a^bW`UYBL&W?w`2B+)@whm^kcEYK33_n zd#_JixH%5UjJ&@1Aqi5eyD}|%Bm+AQ~AUTddrc>!kMXV)EoTBS_wq5kd zqt?pAxT|$5-VBcu>)CO!EiTL2SOaAbJrYK{N2=Hz|BzeAc4s{{$HZJI%jQ_w_SGXm zLhXlTcHVugyJwqMU)y?vli^=!TL=pgOAWsHsw)(bq|n(X-G1@`8$cbPqyu#WDQt@IPD zkDZ|Oj%>$Gc1W4c_+b683oHFZ`?;N{^dgSgO^yLcI#7_9BP;zcxM=@H>GkZ)O^HeJ z!TJFcQt4$j=(5t;{lSN{UzORQo!Q^$(QoZHzA59!{k!5+b!Y>7bIyKWW?S}bf7B!2 zmCKkX|5-Hqf*aX4;pr%5)KO(N=cAc3IE~z$$!z+a7b8t)TmgNJEU*gY1)OVbn%28U zdfpAm+iHPq9nFT-Vq+Go4U6NB>BPUOPgJ^ACILHHn`qu9oSNxT4?^joojc4J z_0`1b&$rkv92auDm;daOa@YS$pOk_uj_v#1>-@B!V6ncnv9E2NoGKba>+eVwjm|n^ zFu6O2Qs63a!2@V@0*uR)?8w`L-l530vB}mGDED{viq! z$v&j%>7IT`x56Z8Y=uce2~bJWW|oZotw=KufTn|y;O_`GJ*g~};r^5qzACM;5}GL6 z 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

v|8{Ed87{-P6#6>@Z-m(xD;IG^*jeq11 z4f1&(FDNKU#%&@Cm9Gi2>5wRp!4X^yhnj2G%+x0gr8FTDMmY7^_#FM_OL5JT!mZ09jgJyJl<^@r(L#;F!Q^c=g2Obq-T{kg>w?A5Y@snEOM-Q}MT$1o z`j1bops7~I3$e&4(vYX|bDH#Hif;k+(lop%1JI%ixk2sBycI$qqLnEI)p$^vp-esL1n_i#(vCw{{IG%%85aUW5&n&Csh}>DbF&Rf- zTM$!-<4J;LHL+3X00v#wEr%c%YZk4>YwRO6XZs{{3`Gt7n#e!kMFsSSf$!vih(Bb)ap&OvU9e0Wg4L*lm0}xypy+;twErKkBfbVCDu61Y$R_ zz=6Od#$MKKlzWlUN0yR@3m*TdT-&Y_b@^@nm^Y8ti&D%^_tW+oVt_MJ0JUuZkJ$fw zCT1H0Py*aG_WteBOv;~$!5!^kQP`GBm=~m?{{=ns3mcO-;dk3t*_wm(*zL~nH!AB2 zkN_&j>wJ`ZB6iP$FdaVGVsqniQMNlSZ7kogh#Gl!oK}wSn0C#O_TzMVL;z`u_1fFWtC7J<`N#g#J0oW&jAmvBq|0Lg=i3&Q>YPwZtOPitr$>Lx6JlPH^s+ zHKL@-(a1qEbCHkSxo$>^WyxpV?c<2Wme{L z=wr+2x#Eqb!kOS;{n42q`A2a=IEv@8ys#onKTDM+h2Yqq;Ri`@WctBl`=jw)VG9#h9Yahhrrg z>r=>@=^YFLei}npK%i)3u^7bAftwqTOh?1I3uoA7)EtgO^x|z~X-H8|=&e?U(fLEG z+Pk#MH72t_6K%3AeH^r81lW4n#QGwGt-hr_S67O88XjpPA%_-&geDddmJ#Y~5@0zZ zfk7pOhB3t8X|LH*Az{fxf_x?|C4)9{7{#1cq4r6pV*q*@>Z|yqcgE3L>W?~B7G9gH zpG+G?<8DxY4B`*p)&TzSZJ|VjMO4}X{j2`sdy{U$LBSwxJ>_R=2urZ-Kyx1y7SA7X zMqf6f4PmJj;k>s3;sE)nP-u!=jD9weX8@lUx=|t1B0!eW@*YEFLUZGpQMAZ+ z{;X_F^gyiF$fvKqBl9yP7V}dvebHXOC|ES^CitJY%V3=MGusX-nES4r^h*=)#gy8f zIq9pV>q=li*C2k0m8q?6ucWmwX&su+cU9lqxG)`!R1c-8Tt$fubEqk>d{FvG!)(Kh zHa>;^+R7URM$mLtuWyfUj1bgaVFYIZsL9^YeX7}n?NY^?g(-QZ$)ulpdYUWO>Abk?m((|2{;N|vKA zceS$th{F6-^i5Q=iE5I_9AYFj>C523c8GeguM;LywGr*t+*k}Q%fg8BiLv}GQL_`#uzfZYt)V7o_~t754nsN{re{-q*e-oM?i|0E-}@p7!seEiCQ&&vJ~9i zmH|jNEbnH^AaiD53xwmCq3JA;nCutjj z4O;HM(C>lVXSwf$J@Gx3drP|%S(nPq-vcCHLu)8dEjH|0`5AjK2|E06`qE4x%>RRv z_lMkHu`A>JRdZHT?k`+m;NeD?ie+M2k=klYCzlOq(hbu{p2a;Z4Phd-51bFLW?Gxn)3l~R#~3!&fGO9eg1X$sHONMKg1mYL z*@irjC9yOSj^P&DxYlY1PDW`>u!VrC456#cwb3-zf+hH%mr`dsx1skuvHmn>21N}I zA1Rqyc!4Yf^k)m*Nch*bE;GKBLla0_W?oF=D~{c0eHKivLd^hrP@_sng3={ zzV#_;eHCTX06NVEp|<8;BXl@O$3$L5L9B4 z+o-(;ldyICM@fMsw^)GmlVQjOJaJm*5C+hC&%AL?1~is~gUxYp@RJap&k`l^l3$Q6 zNrJ7Y$X5DN0iAQ0mc(xB0%*lH^2hW2v^>oc|CUaOQnz)pfj*xw5$ZqSkxCM32 zn_3i}qK8Ykop*_55QMXLW7$rkwoj^Awh_Lp7F^*ScGOU+DXWyZGNQ(2B3eKfN49WA zD`G`E@LI8~TgP%sWDUeGkyv%8)FkM~-I&VY=pa;1&3#m?iWp`bFsAMUoCCasPF7^x7Z$gBK4Jf7!Zq0NrZ4#)1|g zx^+Nv;|{@#UF{BB?)ygG z7+$ULDc6=$xtiCMJ~V+>-*jU~s`F>3g_Xs$SXo`H=EWoD3kM1b9=T@BQOs)E(5_MQ z3;lx(M$7PiOB12uuM-`_eL>jUkBC}@lHOjMrCP{VCX?|PMAn<#Xgjn~)GRyBEvyZp zcG8Dr(b0+M-K3pIH*g_q$1LDf_!)D_bUcj2Gk%-MQ(qtiY%Mv}-U}m*W>o01PRMT}%Fr zUgF8W`z4MGf*y;GA3u>Zlhjum_l)qG%aEqf%;so~KGT3T%uyTV)v98x(|dTI#GS9x zl^KZ{mM$vXd021hp2`BXt6$jlwfQt)#l8)tiy5SJ!eq5~O-0tXrI{_58qe)i$y=UD zmAyfVUc|2C{9iCix@E33Wd4(1;`-#XB9A!^49~qlt;_&8CMUoJ8^rM3i#$We>>9`9 zbkT@KczEt5o|z7KOiq>{);!!%^2{9eO1UMiRaEgO+}!v-OHxK_@$B)HHiRCkinocL zcw#Fe;WhPs)0M+u_5fK(@n+oII3Z~4e6*C?r%Pq4xkq>AtGD{JB~|Vhh>^n%amf*Qkg zmzsTv<*C`P3BsO!CMi zBjbKAmvg`%jg5YEDCQyjBD`_0xZ(5XC}OL5w9V!3T#K0+G~m9L+#Zi zM2Xgfu9iw%8kNOjagv%!Ep(=8UwA2EoE|!<5C3`()@FaIa0Xl#1}k@2y=xWfu>5s$ zgzVh#$JW@1;cufw3^57>A206}&$syM=45cj3EPRXF_n6%)6I!hr|GMq0?GFBX+HOaG!0KGA zTgb5FJI<^M8gg`;8GUwT+k{ihwABrC4R|k;!pq?*DpnQ20M|a!mhvax5}AX2`_)_0I8k?YcE>_kTS(D7;IPnq1y&s$jyc(IMQD5tqQNbvHnzyz)KDu_ z7+MVErY99gB$Mb^i(@y0CegihTqNq{T9apX_a&{soi8(n36Wjr`m1jdc4KMyYyYH$?j7U-*Me9RN1jLqmHi&tlRTX}D3gaR zj+7;aeURZ~6`AATii7X!aPfEE8BG>NT5kL$bEyY7IH{&}giJJx+_JUTMqN)o=^!W~ zVvWIZd<`7TwfcxXz>F{^TgodP?FnY2)`_IyMQq@j?J4PKO9R+|8)1$Nq4l`yvQdru zDmScL9phjDD&mIIDTWkrBRArzrwCZU)1Vaa=g>?Z#swgfd{ zWip^o=FZArqS^>xSAaQbZ8x@*uEQK(r?MD)(?_pda+wTt_M5s|=N(0a3S?>qvYsGx=^lRIMKJ_#tg%6yN%tqcjf8|*9(hW1+(x?{mkEt z@Xhf&viYvuEZo#>QRKdgz2{a0*k!_9aV)Zl+Y)BhrvbP%GIF<}yt^Did$L9XO&GK{9fAjKl@M4#r)52iIE-U>0jb)#g zyS(^>UiO(>k$u?wP2d@Ys~}{S6_NK=#NVVF^0mzJ-!8NKe$hoE^fJrj#mOw8msut+ zBC~{EW|{oYlUXuf?UVmOiqL}=yJ*Y^!@>U{P^YNXy1xmW{!7 zX8L;B_-|h}j$Cxvh?cNyM2lNCqJR3b5&5IeKWf=HaIwqAe~PT}R+krzuVsy|^&@C? zSPz>zym~A~KXSyPi^hMCtnuW3{G#z*mluuf0@|Vnl(oM;pnR=V1zK9ARDEjEMI%^( zq!BDm(g^9f_@jrbbiMw`W+1y{vT=E)# zD=3*p4PYr*O`iDb%{e4SM-KM+B080&G)va^5X&xRnf&?Jeb5bba9Ajde|@c9__wUp z=l_ zE1xY?XZhyF?SiHy*OX%H>I4{ND+XY>>z2%>m>MUU0(?d_fX}a-`}BMI3bx+G+{2|h z1H=m|QU=50ThbcV*lPq*Z**K4@gR2GmHAZ#cO`ZWP~lBDOKKv#x$&3&!o-r78DZ`X z4PqrF({$YdU$%CkPOuT(_{}GWmgrM+DwnyT@BmqEl*k)OlLyHD=&P5>8`@F{F%Qd} z;cqGJrF{Uys6T4+-#h63l`TyGe6i?LhBD1=QD(2O6a%Ayw`(XeNOcp1wsVb&w={)! zr||AY05{FN+|u|64uf>@r7P!!ZXaq=(6FiivVrD>T|xBoVgf~SVaav)CbFwz;BKs3 zhJdgc)-TjR$(bq2jN1(Qg_mq5Nya@iu>N_#Q6#6Cp!=FzG;tKPh^Inxs_n`PI^ z6Z2ytS~f8b-N>}ayy%sk`FSsTag7(fPebp$z4P()|4VCRt_7=FqouYr?!@6u)*1${ z%5fba$8~@dQQ2YtgL!fw|`uCOl~ou z`?7t<>TzrdzDF1YJy;Ac4e3}!#h8nvaCze{fGFE1Y zzJf-T*g+_XZ--SA?9Ld_;gu*)WplU?kVh>zL9xBau|4R-zeJDl(^6)+1o4 z;`loXiZ!Uo6}yGmjcZyEjEX&i*dshmGmn_giVdmxDv+8hw!E?BjEX_A#kjV*Jh82z zM^H2?_A!xL%^hR0^FZ@*^1-&IVpkC|^C%-^J~nb|x?>ev+X)>+gO7D%lXti+w+^jb zrk|t{*K_NE)LYk+0JNtY5V{a27?Ijt`_S;jKlM$IQ-d65)xd8k-^Uf91yINY*e3ab zD<=sg$K&|i9dGekfbHSmyoh(F3Hrd_xni7v^K*BC#YixT=RAyWf{DPbVn`ubG@PB>?DG@3tHjJ{*aEWGjAbB{q59z(}1( zg?9$LpBTxv9+SJnSRl9IhX?-2`BQT6&V8cwi2nl~|6o)Id9^j(w%I7(PIUA?B)p;pD8+t)C+Z#Cwr)GOz1xv*a6Y@ACNJL? zq(39d&qjr7D&w)~F60B%SUSn=lJ4pzxn0MlKc}X@a6fmyD5bj@)O$B=Fcur;N~;xg zW4NR);g5O`_sfZJiv^xrtb{x9Usqy7QE9RFa(lYHCc#k|%5S*)?XN^pneI)~QTRS? zpLFj=x3?z|Gul7#v+YaJlmJ4psez+;_X`|f_6xoZ0VRbUASy9A@lHZ1HZ7Pa%4VYuJ5+3wC6P`}hr-8WQ%SdGdbqj`rpdztPdN$Q zB&?HAhHbPcVOY2xgkjkWuL)JNO1{%b!;Ckq2x%D2eLO4NoqQQi*NZmH*d|X9QF95p zN%A;Jc~I)fihVM%@mGsCZ894PmzX}+OivYYGo;Os;EFbNCNW|`Aa-R33p4q89_AeUVI-POqG9Dm874|*Ym{pPhd^^(0HGKJVlat8 zA2xnb3T6nHvql+~-fWFBN14u{O1A{=mH^@~8f9+aZWhb(WO0YxDzfDw++om$sZnkh zc~~-!33P`IId_L%TeTRLGP!BzyOiZ!q`5nAcZ)fUEawGKioqH-S)BIw1aO8GA+2Xk zzb}Bd9;$loy=N=su=IY*<^g5%0P!9SAPGz10}I6mcE9+*Cc_6NX0SgK{73*5m}>TD zP>A3H6YJNbL2~@ffpLPVUQbwtPb$MFN%543z@P&o!@r0u3@Wh6=`(?QS_EK4@qqF7 zxT<8mH!OWt{qkG@B^dNy#q@b)^t?L4de6__7xeH29=4Txr!9SvXBx6E1@MHWFN+}z zb}+}61@sQYU_tt-QGdP47XjF1yFvK8=|e2`l|@_7rA|*cP+<7V-|$LahnZ9riCc55uAe zzzz#V00z+^`8wt6paIk8pb8ThJco*L1Tk96UE)&D2G%Mzup>k0zu*M({9llNO@IT8 z^2-!pFdd5hE1NJ*Two`J!*lG5%J)RbxBB{$p#VFHfJk&;R+Upi$KT1sU}ETM&Z$`d zlwigRCYjb^o))^(NE)Q4E6>wA@|+R683css8ClXZjTP(+V$kTy^Q^kmz@q0Ov^ z9J45nOxQ8u$m9=Rv6G`@?loStSzVl&ybU7GW$OCNL&t;5>G~@|82#K8q`p$wTuCJm zXok{9P4JN@pw1Y~o1xwTe7T;Ha)Wy6 z#?ajmx*HiOH)*8Yq>;jG*nom0F?6?vL&G`9PNzgJ z=T0$6$E9;ae$1uPw}k}-{xNj?>A~%xyPXv9vPbSV*xf8aOL~VA+(G!A7E|Bu3f)~6 z^AC~Z=^rd+lHRSDcN2b(#niWXp_^whPm3H+PqUc$^j^ihm+(JXOntjAboW`z(<8^z z(-kvYGpEPt{h@@>2h@fS5c$E-Js74Bg$TkAhwh=!J?HF}s9*08{;pE%%X^`Fk0m~rz8^Xs zz8{XV)654J^8+G$sF?clQRqGjmFHQJb> z4J=`j?x*7Si;C&~ky_>e`pg}`&jTaJp8^hw+(DM`+{o=8xpOUHK0R0o4<`H&OE^sl zr}6X9$nmFu!yC7czxLn1dz2^)3PovygkiE()34v%C^+1q>k`TI}gkC?V0JCWN- zyv7faKZ!TG?*1gs^-R}n-fdL)lkx!;|88I|t@Sum?T>~LYf1{XKgLSg62w!y{S3`X z1wBVWpffu9*|wYxkF1G)x7DX)k&E;9AG4b`r}=B-ocm z&xvluG=xoPo*I%Vhv0Fa-Xa_C>#0#KJismO2KavBE@y2IsD~ij!7;c^>coH6p4`U4_F{pjoZs+?B%R9byG zD-a9boqmL8^gD!`PJ~>9N_Mm}=h4)q8n5py9o`psTtr+j$Bww9>d>Citt_ZnzUk3e&zU0lv8%W9xwLC|S)Uhb$uzY;XKZyi&tX)NOG{uX@>ga4<{#^VU&gS* zGvmW}W+XF6BWb0KLH;|7sFm#EF;R^rQaczGq@Y$V!XARuz5+gA`Zl`0G)^~hl#NvQ zNc^VfXp}0y=^Lj5scnbfbm}3`=~;#&(-ldM_w-?=P8h?YCQZBJ3wYT5#)m-uU$^ zu{X$Ko04c!x*-ymIs5(<>L4g0HAZt%2BqU0-FVbN-P}f_kdZ0Er4tFl$G6}Co^|EV2`)HT|*AeP{P$^f^0wium!1P{ap{b$^&nB9C3&uIbO+B(J?0msWF#QHfGk z2_o;IM6KyB)#Z~ZcybZ_&9Bm5)24g6U%EXfr+c|yyS<9=zWqj<{%_Iq{ML?^|Kn5c zt(5zaa-X8u)=<}k>6F0jjjm?0R5tsfuF2@%#T(Co(h5X*LproK-B8}J@doa|0DTRK z4>pa?!K6M!S{ru=!RTzJ+360IO-^j@hXqpC92%sDOKF3GW*mANS{m&P`kEs+OdhGz z-;p}~k>V(oa})}R(OL0FEAlacJ32sXQ3r!85iPSeUjr9E-&NR~Apt+eK zy-gs!&3RJYl%%`4zz)`y^g_|S56|UL;ZX8Lv`Xf<0d3C31Vkuvd{xln@OKF@n5Xj0 zd07^K9*4in2r$b;52;Mf88XcYDEKd|T7JvfB zbT~T2*@No>wwkgkrzk@BZte!PQ+A4@DR0!X8)?d$0u(zabd<6sofDwY@%o&LP@5of z5b{vq&uheRqKD^`C3mhmxvb=wEG5re>3KNmDC^rPPTPr+++j(i;*lcfj$o41Jl#<9 zu)r$DFtj}kHB>wI1k(1P__V%~*7kystF!v!y43;fBJK37t zfh?pS2%>Eab+fR0xnpVSVcva_NzKSE`KUKzIZtYpNVu#LL5-78zWWll z9FnN(>4nc8CVWzh4rXZe;6|PC>n$vZ@;-H>G#CWV?SKK)+v`LgW&wChZXl1zc)vOk z8*`d(vAO!Nyd*F-)8?oVfH#1MS<0G!DT6og6gkJF-`I>+vNMl!MFZDALRwdA{HAVsvVv= zYv5m8bET6}&bW09!c^3ZIG8`tGm^)Os~fA0(!9abTmoqgi%V@ zBBQl@Mq_xowj1NtE^)Ys+*qHHkWbadXF`l?+k0fLK5j7YHXw9^VhZ^&OWpd-jXQe) z#gcRi$?2tRrDLI^JVUVw!zL`)QhjTDEm2C1v-u{@xpA#G*jF2jWF z(#F<ji7$B|V)reSV) zDP6_(3=wPV3~Y%;6q;B;Ii?Er5W7_~Wl2tF+2l<85mAfPHJ;4_Q3)VEvz*^sJkeuapJUI=p`McXh8U=}t@&ZPB?jGm1=6P+Dr+Sq#~+EP+VmpoHz1E+0F zO36G^PYHv*iyy240ZLw19a|Wzh?+u`@(apDlLlvsM+k_z5eA#LIeN=zHzm0dUqiP^ zs|b$B5KER`CXl;u^l#|N7@)95dzB`6Hfdv09sm>_4zrTW87kFO0yZ{!W@9~*({$ov zq*%=u-b!xppX8hp9csJ@M6sdNieD|qFpphdW0Ph|_UWRtWP|88H_i{kL7q~(GZ9Xj zKWi^qL~kS2-w||OH!1?sjE2g1B-(415XOYDYK{ekrM9Wl6i4NI95ay@OHLw-%&)qM ze0d3V2Ir)y&9j)?QJavvBI47E(zCWne`R`Bni35widG4^L(s4eQMh9%fO$j&IEg+o z?(H_$;@T80aN}~GdpoJ(-X6*lF;w9RE5mYL`InTHf8@UsfGFecM!+K6bbpCH28e81 z9{5t@?)LQ`NH&9Lu|dTY>MMFSotZKJ=E;2m83fhvM^19iRrx zv-Z}xG&y-XD^x-g$8Lb3)U+NP7<5LvN*hO=>CXi>uJY|I{kc$(KoLu6BjZyXEQJ?r zDktv)0MKc3mR3K}SLQP8X?H4N%q*FO!gX(M{Bc*PYdA2SSL(weTSnTmvc$>xJYt#b zI0EtP0-i0(Uh~Z^Iv$^{txc%S$j+dK+Qih5!A83_qy2cJ-Mb~T_UKc%?cDB&2m-nr zlHQI&vxpBWl{@6qZ2%*6PB|nxtOukB$x0Kb(W*$U@>7>nUTjcBGp=8w(rWY z(&*_JQOPAX#5#ska;XMza#^QCYMm|)sq+{Ei;k%OUFxn5=fgW6&LcXjdiA7d@$YDs zF7AJ}nTdV3+oFf4n!Gbmw7K-hiWlMC)J&9NVPq%5a2s8Xe8DCl8v?bG*0!6SZv0gk zoo=d?V3Gh>j~ZByvRz-y(6%r!&>H>9-kw%-wh&$7aV2`SgzO9K$pl`WozYViX_*yn z-Y!7c&Zqzx!A6XZu$n2{F!iIOgoI^rf)p$8Hf9gwHiQ=L{xVyy%8I_K62?O#L3CsH z4gEr-N@kZ>*0GSuw85JrNb@G_l<7de+TpA{9n3;(1kR;&2yZeZdlQS^##UyoJd13+ zu{fNE@s_r0t<3M0`E5({Fa+$82-q;eX5LWUu;#{Tk=Oe~j0b4BTs(;msMBJl4sGEB z4X-%P!6=|V^paoQ@LVqzJZUBoB<-An=11QFF=Uoj*VJBvC(rt{HczWJ z+oi;{%-Wyj6r0m(J67W1luCBhM@iNmm@r6Fv{EBZEWuTl3<+OUrIX~N*v zSCmAaTyqW5aUN?a0Jcd zN`&k(ZBO}Vhg?KXHJvlArgNl^v!k8*rHOt4aBp)Zxw1s>1g?+Ov6BwcNY5eM#4?LE zHAS*Uo1b8HlZEk#RC5*8GLeRz!0Xp#!;alRQrW0(;;fmZgLyQ#$P`(T<{H%8_*xW< zRa5?-jB2MbO+%S_y?hYS3|YpHv}HBY#1yk!NdhD%no~<0$?L?(t-}vw@P5&;A?J@R z>WCG(?>kh*599#sC=*wvD!!pzARv4G|WANMf)+*xE9TqdCI|eYgO%$wCb75sy zodzj9rojg5(7d9mW*)@Q_UQXix1t+bVj*dBE48O9lld^WvKv-PhcniP^Pc{djD=Dh z(j#=@g@uv@ZX^R5&%o`R#AQTY&8=SIEWSpTCXbq@PA-94eP?5nw|fV^y2d?eot=@t z=gXbFHmTO`m^WjYH|y|dog((-Z_?Rgn;XH0_AMh|My4UdE}XY zY%`~Z8?j!icq_*oM4U`T@4A`B#kI0L)7l7b9=oyvF;*BIwG?vFi!||nhr&mbshM0l zxUTestEgJ}O@P;0516Qhu8LfLSPHX+&macmRl%0TjF08ra>;ev!lN0>S6EoM`;fAa z;V*cv-uBil{;gv|Z7Z)qQDDo`(!DYt+`chuzG;_+=T>IfmL(y~v`fAbbioOc4qs3P%lz~W0z-0&*+=qh^&?F&#?9~(3Pp{rhn_hpS@aj1Y zGvlUb67Y)4vtwx6<&INwM<;LHt>&$N^HuJL)@26@({$JcSkBSefx@(TX1d}T2MR4Z zx^T>0&g2Z)wrssD-%LevpBn~47r#0$a^%n3K%HxpR3xR@(8pANY;2l=dZVU#4tNldOA|C2Kir zZ!I6#@;YR{Lz2}XEpr_Iw07wDx1w(|_D7{>i$tw= zJuO)$tO{2FXhiNTW)9jJv^3(pIM~=XVrNRxh4oByNe>-KwNm{Z(uQA`kG;5_ZA=Qj zWlX_mh_u4T-5G;G&{&l*|4G5e>sK7!GYqMCuQ9p)+CHrs$Q;_#dfOr*F|haIwzk4` zl-SQo>~AGHvQ7)1cV|I%w5C?;G%Il+EnLyRvxQ|P)+Oh%Hd6%}(zHAY=BHsa@esQ; z=4*uJ)UAZB5Os=4dD)F`1OB+-$RWd6pI31s+MzG#P{z}b-%vm1YM1HQtj?-ZicxvwZ^ZNtyp8+m~?Ho7Rq=Ww~wn)!jtv78kw|L0^|q5tKh)=Wa`qUbOSOq zs82E75Y6d^rst$;?fgH^wYza8bfvKyPeo|-;ko`bI#U+@jR`ef>9-k86Pp|FsSCeX zK3B|Pvu8z%CLzVf1e?sXCLbIuR#%nQlw3PJ$E@Vt>$M2kX&tdi-wiY-Aqk*hJIlM2 z8%^eHz=SGuHNdpwxd8=BEO^)}$K=+PsO?zyAmC)(v(ceFemNT*)dPywu{+g>ujB&L zwCgPy2}_R8MRi=A-QDWgN}el_r_K>9v=sr?v_C%}FePDX3N_c?v_0+zT4?)eE#H=~ zZAV9rgk`-NDQq~|^+ajfP{C`3-p&nn+bJQ(5(m5~c0bHk=%I)gCJ6L(oGOx=E5nRK zk1%Z9Q%vR{7Wn$EqBb1ifRP~$==-XSyj4p`1S8!y#?=fp+Cee_oiK`aut6pTeeBlk zXoryuws!984S8zVvJyircH^qc8t=v@x0V2!vHXfCU;?)cH)60&bQ_OLzfD5Z%9qkj$Ziv# z-KIR<3_gI(N?s$M4TK=wf`BdE7H-QDR|aFZ6#+Ju*R4UD73Soi2Z-JGin=JsXx*l{ z@zOBt=Ld7de!l2Ytc~Hoem+FCY-12>UjZj=umJUXN`si<$;&SU2)moAb8QEQlpN%! z9ahWoKPjYV_IHaVvPcces2IrBKTrwlv~MFZq7vm7+h{UZBfk!aY3NiDjeHFCC3Yvq z?GO$J^nFisl|4(KO8MT4xzMY`-UO0#;k}9G>`Qa{e6mf+j;{A#-Reib9bGAA7_$J_ zBn30rSwv~EeqA(n05(xQs*N4n{ZqYWbcuB_Q=~i@1S@>0Op)0Sw7=T2Rc$_4Si4Pg zmT9P^Zd;mT-vN8j!5N{Y&Lbd2u=WP9JQ9m*7Whv~P z_R*rJPSRNf;{^0R45bde2i?=!-1tHT4peJttx*(Zx;cPpEC|R;B43ZQt;UpeR5Sa@ z0aym6CL8DY5n-H@rXryCat&p2PH^6KzO~hu1~B>DHEWi%&@M*N$ren0NfD_aXQH|x z)O#Zj^p;{j&xq#0CiAHPDWHS&BeS3MVNeUlF4gIO;^E`=PQ>tkr^AOG!Tte<56RA7 zCU$^-@IkV4qESViHEZ8-OB^88MJ21B>hj^>{vD9yXU?+`6@t6gKGh|%cOJ?_1%?Xb}fQW|9ScgirEck1G`O5cXz*VyBE`vE2)@0vih1|0UZm; zqQ<#Ez58`G3boMg>GsUJa4#bM#_i>PQ%Zkpd(dwy-S|IQo_phCU?2BCz}5G0zZ(Z) zJxHers6GX#^wfZtm|DIxJP3CKyv_cCqzkORUm&D9Uk(J*3tBx8S{;n~!K6Hdl%zex zVBUA%-3`#XO)eno0*D-@jHU;LsY!ac@atgK!LI{r2ftnhiX1>HVCl#WAV}2=-$FAnYYz>oo6ihY#8;B98(f)cF_O`W1qum%HNq8}hgouvFLjRKU@5z|jjQB!Z$}7l1|gfOQ-VD3!Y6 zM%Ck{07yD;^pf!Cf}Z=X;6|=3RdaZ##<|7X;no1CIxYrELZZ_yw*@#Mz~4Zr0!1GO z6rEh}kkw9B2=E|%e4sub0kkf$&<#!<48t^#~ z$mhVLayw8mhXZ&H&?|%6vlo3LU@>@tM>!s7FMBdzt$9jq^Hfm83juBia6`aK@JxVr z0{2WXIh`+;1a3aT&j#*UyZZ55fGU)g;S;$a;Ih77DxbGs&lB+l!tqH^Okb3*0mb}l zfI9*%^Jj}?tGp0c1zrwVg%+p+3yA-U91!4!fC{{3t_fbF0KP0WC>y z$^!uo3|NhLWjqlC@aWo^V)uyQT|6hx@0pR$HrX&0h!fuCARwxY`b7V=(fP?L^<8l6gmfWl2pBx5AuF8lYFG_U6PS=7&?Pt z%EyeHW@+S?#Q0`-{szvjG*jf+-fJhN$XNs$*b?WF4L@QDcxPtj#?lJ#6nP)H{r-Q8~+RRo|O)w9*72S~J zCak!wEgjtG1_RgUYKlw*(%jaI>ex24#)V+kP9SULA@bc3$rZBZ)(fc+%kzlzPpi^c z{=V?49K$f{j^k2rkQ!>gl#b?IMrT>X=y5HH4q|Ic*jIBmrq!o0x^x{1sJ7pJ5{CWv z&1;#d?Qor_t2P4E&jAfF%AB72~7=4y{7p z_9VT5LrI@!gqVMWAt=@|^lkZqJp-o$9NNYLm7#C@64gM;y{f>WrkR(}lrUnJ_u$Z8 zRp8K-urOul+m!HBR)Svoz;mJB-v@Z~ZN9nj{4V-w9-fmPRZ2(({NiqX$)>4!rD?UO zqh^`MGliQDda@KRV+wnW#a(jLeBM8@uGtN>PU^}W>$IwKuq|}8s#|)8AdA;~YS+?m z?@&zBa{hi_J;N8oZLNV=-h;cGY3LWtvZGd+`WKt&Xpa;P8B87KGq0hIrOHC->UGe3 zfUtHTUYRIefdCqiFGJWiHx3VD@AKiy+C;MtBVBXjqd`~Pe$ZsZZVMN@)tiBtjZ0mf z(c%v%ZInV7b9|91!w^yBRRJtic~yvAla>Ol3I=2rS~a_xAox=Tit52v8^F?q2^3{2 z^j5ywO-k$`g+W#FN%DvRN-MaI#@ISzycZ_0RO* zTGh&awE0@bc`5ft;$V}-n-i3teUlv3m1YdZ7Ytc^sWEiiBF0b_{O)WS*n8^IYJ;dX z#j>=)GXB6ZuGXH8@iS;F+;(9-T1qKKdfUO&5KV=HS_En0^dPfn-|RqIeVvV}_wTs4 zR`0JIX)P*mkos;YJ|Xx9y20&0n}T$qdu)Y2-&W7QsM1%m(pRR=!wQGV!|KXzxYKqy zEGvB#lAHNl8zQcgt4m+C@HyH^6}g)GhFh(aX7`R(b!%|%$gRG(+iWU+j1|AO6)$fk z>lBV`0m?Miebech+d5hC74Gv=TA=tsb@A&n3)g2L%SK+GZlHRYS)Hp#7}a%$ubs+Q zEb4W#sB5XIzJWxZ6UozTlg;VIgc=Ka30-AUb?=B#`<>>-d%Fd@EMZ(pw93X6AKAEK z*;(vm7exUfEt&_oZ`&SrT4C**_ zdXpG=Kb2)O!-+aW!KkeVgW(t~c*Y>N;<$7OwJ%=_HYshWpBphljI*>7lo53Lz6yhE zm6A7=*8(#H%V2{1<+D8ljG9~) zc2kjCD!Fs9RHh{#6;ihLwQXsp?a+>!vb@gyP(q+Z!y#{Se<|Ib@EzRtZiiC3BX!?V zb+1dFEJ=&K6aS+;cRw!Sqc?UtcTA_B5b{&^6Zg|n`ZK1}E`;tvY25VxFIe z&1`wPl82aTW#=MO)*nsCu2vn+K5aRP;4JZ@ayE_tX%iEmR1X^nIttZs6na`fG*!Kg zk$~z*kX8;tE4h{1J39dtW`9%%-d|h8$inBh)cI3S;q8beepTk2Zk~Qa^A2sOmD7W> z(CQN6*6_uEZdG$vE-@FGnssh1Nfsf~bF>>XIbGY0a%&fvmt)-;I;_|$t)mZZ0p=|! zHIvl1PE1l3SyxQ|a23mhV_wFYWl9&l)(+}5OukII(lN0jaaJUYq`C3cFc{H!;_}U( z0vB56NZR7cRAr^_#*5ieU@{_?kC2TpPF)SI@!N}&9C#D3qXk`HtQuA0YetpEl-F!> zDT9JCfTJHy8!vR2W@hR*&ES#4t$x|+0c?ulWy+h$8dYh(Mh@3@2cBU?q{1OnrX-B4 zNbqRzx#~>-Q>q1UwD%Eu(d>K%Ov_!CP6_(J=4vs=2{*>0Kkv>MJ@0kbwO z3TB;H17^*@LJ~Wx&Diuuzsi;ZfK_@x$DF6<9YoFZoHdNVuOy|Mv@gGzmmml*Av^qZIJ?VWp`?bfZuVO zj7zI=Zq{m>S6&;x`EB7gY|Zw{Te+>2h4y58=5JHkz|CsC4gS^Y+&1MUI%a47p3;7w z0y7V5eit5>{*Ze9$oCKXX5om;7yfdhaEF7gr>)e=> zVDH`&w`?Acyf?Y*g9EmGN?5pK_qz@OV_!n1bXdBPG4>0Hu^$$x{bk}t&X|ftYNGd9 zwB*CREfnQ-hSipJ#^p1HOoJ0PH@*@C{TAIMC@9kLwY*WNCAG^4%T?uxbK*ibiD@j| zCHAqKXl2vG7Avv`uUCDtqzs_8)_n7>N9$(Ix12Sfj^#ZIGkSR~EWpEMQNjA=tG+)$ z4ssHd`Q@or#nN_mwL=ap`|&ye*BXOh-@>wK&XM4@x^SD$6c>xUcx3A5^)p#um+`Bl-q$EUnx)n!tgn z_QnwwWW{9NO|G6Pka6Tj%f($Jr+9MBxR%ahW6)BMDWz-c`&hT88_QXVL-;!FH~|Sb zBH_A{#n)D$^=NdhX_i4j$N%+}s*E$%_YGaaZCK){^exwp;}3GM!x6Y*M*9Sxo-tvo zZ;>U}YPd1|ZU^sO0U1y9yd_q~rpmH{Fy6#%o;=F3;uBRc#zi1Pkr{8UE9EO&Uw`N4Qg|DM63#gsllPabW&pEowhC+yonj5=%@pv)!=(q5a zXzijyHR8^+ign4whX)Kr2{@T@Q5U^U>t)Dh5~2_MXXN>87^dFpuy~=Fwy`b`*yA9+5V!K{82rxfOmVtHfJ!R#O-1V(;o|EpY6$R|Z_ z-D&Qn53sxnAA%mvtP=?bwdK6?pI-W4c~p3tTcPZlLOv-BkKIcjNZ1M=>TppZpa%NL z0|T!I@6uS%DrQ5#E@~ww;_if|)xa=`H+e;Ow4}>rO>GM=l}6hn524(#>}7I@(7~q1 z)n?M2(SxpfYT&uLx>Sv9EEevU72CTyeCm1DLaFCrF+?`tYv$l#OTOBTF{BE=5 z?Y2}wf;@P7I@k~3--lnu{I{^!@23Mf*1IYV+QRa71?^2+@XBf_6Sudl6}K0@J;rLJ z`(uT>AFgNTl<>H`?WA_Gy6{C`j#!Kb3`ae=@uUMU%bsQKFQ4{teY3`9zo3eCl2@zH zef?+v^HpN;?c`-{Ndz!WX%RC;4bXA*iQ(a^@xINn`Q;05_w-#niNtKS(;9RJbE=zN0M^)s9d$OncM0SP8&UOBIPh=D@1{_0sGLd>MdY8c;P8x<&Pnw0b z+uB7aTMnJc>lnkSUVl}SdRZ)|SShn5m1DL6$%kxI1F2Z~IvCaFIy3Weu-7lP*I0CI zS6W&9cm+!3Vb+hstshq*;fTV?t?ZGjptjIibc9JnM?wIxs^g}4@&xWf)vdlFHHvJi zyL$45&MpnoQOu(?t+tsrEpCMAvd)^xUDS3hYFpVub5d()|CA=feX~8S(O@@7gMCjq zvzomVjmDc~wjr5SF6cDqg3jH@bv@Zc8{GJ!d4Wc=Xb#oslKDMB-JaMJC1XQ&BaHo% z9WkW_V}gRdrzW_& zC#RLSdvIK7a6c$=#cEp|LTick2bS;Kfkob--S^z~$uXsZOLtK9cO?FfMO;DeBu24t(fkil)vQBFN^79H(8Hx46T&!$8HbzzNO6LD4LXe5^c|7 zx);ZgU*joSDSykO-xfvhrAHucmGXm_!^#Ir=^BPc#QG2~H||3o%&<<|hhO_-ZlvA5 z$pNKwNoCjyq-F^_@Q=yeYvM62wm0bAbz@oIN2O5crNH% z&6{Zk-knBHpmL4->%a>47a4)aJ;d<1Z=)BQd1!QpwxDxQry4Va-WB%t)WFRM66$$|>Un11&JgmpB*<+J$Sq)7=)Hj0rso)|*E!Vl zT*U-!du{;QwglQ1_t07i7~1En66aHi3*;$UEMGZ%MB9WX4Vc>ocM*%~>phxcL5d5P z-(C;*m#rR`c%&!@+#Cqp!d0yz`MT8nLwkJgWf?kFL^9xTom@m;A;4`BATH=z?fxId zYKp5>&ec4hok4PoKyYF8av#}XYe}!Ql-CmDIw5eC@?%Shm*@syxaK6|Yk+R-^p-#8T#g%JZ&hdsoABpNu~h8m_Ypt<&%Z>y&72&M}_w*)ZPUi006p--~+l@OvU0 z5kdBN~4Li&}S z5xO%%b4Y$>NYkDr;;+;wzS5b-^))lx2!1bup!S02>s%UeR%qQiE7X!kmggzU^T_gi zv2}T3FYDI}l@3y`3qx4FN}km#O9Qc21MFT!(Rp1O!sP{dmsR6(rGd-qa&dW0g3C)K zT&37o5&LQpc%`#LsJmeJNhVU|fml9pChu8D)1~GSuzY99A8+~J|lOASe zy(zSn_2$q7vpH(8Tf)M_t>WvNBg!t3dEFF3<0Szt+y3T;h5LIz*hTiYkv)7}e+;4P z(kO$SYiq3E|@<@!@L9tekp zs{tOaB7|FTWr=X>fozo7qV-r$sJEyxj9U-ES7JXrElsV9`llOd#9DabXu%EAxv6+!r{}uC(K%; zd`^5?V%2&!gi#A(Ehx3diApP|&}fyQ(F)gtMl0+71$wasyx1!tG+MA|X?DP()c}cB zQS@1_hvLq9RrFalJ0$f}9!y&FEL2(zWhSk+!}J}|WeCROE7lyn$miu3 z`9gVBh_KSBa8>2f{UT=U{$jU+&}y&6bjGPG_hTkpt`atcUY9I`ZUG#NNongRRbJXMX@6PJ`$%ff72st3JvlXZmoyc z*arDgkqz>rrB6C0D!km9LL3Y)G5^A44Egafk)1+v;{9!a_g6=^Ml2A%>5o^s6CzlA z#npR!BtBlgoD{W-y$?!`2%bK8?Me{V(L$%Hs)ZZaK47J5fRxVXmQA74BFz@KC84$k!KS5P9h_u_7M9R zU+(OY!X|c3l+F^NSbCn=!Q6S#Ch7UA>IIQIKXMn4)rG!YFD$n!8C(>(i=y=6h}O$; zx+HR!=t-lyI7%;#xKVRif0gs6y99?wZJ5ONFkB+;vnYD16KfDCKrNh1?Li8=~~a z$lVwvv#vrL=X1SDNpFta%~3ihayLckEs^8PE%eB(3Yr_aTO&7@TyIm4+-5yOzJFA{ ze0LZ);|0^ZBX?Jn-V?dIqjVk&f{~lY z8{Dh1{uH@;VG5+I`yzLr-XN>w{R({`a`#8>foNhMHH!`9`=jn*E(lGYcu<8tNQEAX z+(S|NaO572lBo{`>7T7+2KyuSh2#ID$`0bcM?k>(|r#`b*@Virf>C`%9EOa5D#QU#n*n{tV&sBR4-v zpN-tJzE;l>V5`ydk-F&x#e0ExFGlXgD19k%FGb0P;3HmEz{}L3jnC)#9K`2ye7eHh z)MjOc7u=f=99%1iC?)@nJAX080>fwhx{3voCMd`

GN#avt#IV>+jnn0@LrHyD?D(6;PwPbG48eVan@-r_u{%6Ye;>Qw z$6iP)teGC6z#|AeGInqV9_5{n9c`H&qp)KLJ2rO5#_4gfJ1TZZ$L_c|Iif^29dE~y z6BO$NVx1T}{*LF{NijK}tmh~5>y+5>r{|}}?o_T^<&(Gl3nX%(f&(Dh8S(eXdv6~UQ&n%xLJ=^k`srWOAbx!Q~JDYFk zDxX<;K8s)H#g0EcKRep?supfS4CIU2aO9&SC0p)CZT7+%#2J*cXoFS6XpbDch^a z?CRKE9jCKnZ4KANj%e4!rS#gE8Gl{uu8iGv{JcJPWOQxpX2&s0s`;T@&Gy^xI&v!Rd!klsyZYfvcR;$8XRbeg>Zj0S*ar#HA!tJpm+U;a{ zhf26JcDKgvPJZ4MJ2JW>c7KfBT~>v=72%%P-5tAoh%k>TxOrIx^!6w@?-eTePqDi< zPVbA|pWsl99bfK`$E6P_^@Fi{Aa)Ou`XQx$NU4>SHSb|+XLS;y#OYEMG-Cv0Gj3PZlq&c1rs&M^`d^$finc~^lWQynXa?i(w6IMuHh~0Csls>mFm5uY+thK*@5Y0{eGG97Q}8roW2sfSNvp^nDeRvUnTIh*u55~ zugC87@=T^3-caZpguWTOH(^?h-CN~QG}mt{^ld`liQPM~blWrQ!p-)r``tj@nw!&^ zSE{it77%-Fsny4(-dJvsJ^WM+&#j%-;IZ9Oi8R9vG#agJzEy1m+NDs7zO+Vk1wdN| z;m_N;#l&3;5e`zu$VKt9?KRkJ%g_+CIhl#l-jYr%A&$y1eWJ_sCY zY3R?t5-&Y0S4OPk9o?c+*`kn7D~94!<^Yu2ZVP5EEBioDA4+*XR3$7Z}j=F(PCzsr*mL>*B?1CIV% zbP=n%?<%U@V;UN&;#(7AYx!XWZOhlyih}c@^(kLBUQ-QS z2HfiV+Q9mZmt@SsuF&KN4Mc`guBVsae@@2J@6vx#ApFY5%)?vwMU&xX}Q_7Y@ zv}%AV<@C&a+Zj(?wR0n)nnNQ7z1_`gUkF-8j{WEx()9uZ!RuGRTpsxvTAKcYiyRx=H+1S6e7Ih4z_}Qkbkvq@~?)kKx*B;#)QMT z`yQdy?$s{Kt`z;R#ybmZX5$Akp*G4qP+{+dSs2Ux((T|ab(IwC4vVlYtcf3z=Ef&m zSYr&0%O&rdJK%I#_<325t1smS>Yr zvIQ)kJj;5y6y0SP?u_EXnxWCJ#*LVcxyq;(E$^=Sp3u#SZly!CyeO2FCIK~N&YjI& zSlUai1W-zz)V*))v{$3UcR3wyEmFlnb8i%k(z>a$+M*5sm4mID3;AN#QUXvwi)Ee) z8(Ko^rujze+Q>AAex5)_D;?e}mFaSNUGtJEchxvROFqM^AGKIs?MsvCaK1J+o`q)L(wveiDSdl9W5wL$5$e|RXnyu+5x@i;xp^`oz))qkP1`r$uITK!$Hj8?|QL-i_>s#dP9 zf{&Y69@*ps8DsCB#5&)ZvrO1gZx|lViT53*LtVGRk=ebMNzBtc6Ev?42a{f2cqQzA zdC9d?@I~y`;xRc)gY4F$!jJU{W(f;rzKs;wB8`WFQQ_Oc`neRPKpvgI=xBk(H~`9e z*EBpAQ$HLQ0D|H%N)9$8ErDezgJWTme4s5UFSnlaE$w{VSFix<#(KrEXFFSUtz%E* zTe;V3XY2PMe{-_Itte&u5F){3|CmL3Ca95@shM4~p`jkbePH1W{sZXb>^24q z`Ea+&CW|iPh09K;PrqR=vYNff>b%Grh3EPqC37v;>Avn7l^1EFw-A+xj0 zq6BDNvRq$TY`~)pjDu2-xKk;09jc!7(eWs&{7}-TXn69dc}7QgEX#A1BhOhd@5U8D zL5+9qprDldMm*X`=fH`2B*%kfg?eZL+Mz5fV$D-l^LU^m?zj0aKZJ~w?c*{jn4M@#Dhl{XjwO>z9@@T}= zKa5@L^4$wM$+WlHV@=AE0@?@;+MeMx* zN4ei9_Wc(7x5UmsQUn2#Li48B3HLYl$dFKqjV_M7_a*ke#dJy_G!!tYslr5|pHqsw zZgT9=ag#%-9<)>kFiY@QSOgY@*FuYNkohcpPzl{0iusV<^&x(fv7dJb2Xt8lGX*Fr z!%WechY3%G1H%&D4277Q4g%uvfd0XAVE|4_jt!3>^vJ;dUSKJP!jZy-=oJ7><-tr9 z!A#+J6{8rk?tCJrF6IKX@#ZC%+q%4ekm5)=yX{FjD*rY6=|Hjoy=AC}dO~Y}BZ5_snsm zwdfoba!UY4%H2XCx2lj^t&nReWUepdHebjeRS4b+_wO%vg?}_O)NO)Bx!cQy+^ItD zv_fl<-f0od7@a<rgn9uho#0UJWoo-XF<%KBTl*_i=2cbZRjbT{SLX$W(jxh~ugn|D z=FOmRZ2uIugm0L0LXVSrvs{_CRhhT5%8)a-sJ!_t+)W2g&YqLW+`+ zZaxoyKb3$+@lI31$_$tq61<;aQedJ=fTRfCU%`d5*%l7)=$HdNI_98|QVtFar}a+} zr2tFuFW4!>se=t2QwRl?$^)0uxURJSp(+Bn6cDPzC}O&DF}RcbF8n-amogK)LH$(M}d_RItujEF@i*yHX{^diq$Nu z3^@awVm$+>zMG#7y8)o$F`y}cRHsnjsVeZ)j>Z8$#p0IXr&!!nXOi7rwlG~nJNHe>M{YRSjm+5NF3e`Zod%`4 zOXw*OQzeg>GG#8PDdZ+YNzEhRUMf%Z?=83W6oXLxDFipADJJl@2Tt9GgVg(kpJMlZ zP#`MzAoVoZls4suV_hZzHkAiE1$Z+AKV>n1PVx7!ZQlMZz*)!Se}zHWY^HIrZN2 zAr~56u$FjH0510;FZ_~_RxBEP0@r#b!&-s3N?t2z%YIoIy-Y?6Lbo6UT&3IrQRP8W zVLJ;!R|#D8ittq)bVxWjt2{6(tY-pI30(D-2bn3yw-xv{fgr5j2~&_&?@}0x{CnyO zkX7#qTvbXx@LlnNjif_Q&!->y>H3kMt{>}_J_!rg^cTDe#1;R36avBmYL!h_09SeN zR$4pgI|uBF-=9)4(5ufvU{~s+FZ8emZbcn|S>?f6akEw^E5WTkXGIg}%3JFXj3f{N zwaRxutpH&afm>0|G(DfjFVI%}>G@%iI}9$coD8goL|9lyn_LOvihMv^IcEuTc-EAjz$l?QtT)-wWY1^B9%0I_+t6w1-l|2a94R?S6~bxKv!U}iXg7Y2V_+qconDuL9Fcg zj0lXC-V4((sI148kIpp?yD*WT;P(`5B|xz92Ep3hW;?K}JlHGH2f|+&fI7U#`@ zYcaOY7hnsV7BXJMB)>rDr7VvNBX^Y^Es$LN>ycg88?uh~eO48I)>jxvsw#9N724f= zmVlc8Oc}3_xMD{1=i|L)P6u2>g7UlHq<6e2N*3VrTFGxFxg?D?{sjg`4az7mU8MJq zZ`I?u85&Ht>HXu|B7_XUV7EnOG#HJ>h{8~RJ5Z*0G(a0Cco@I#pjGd*@phL=y^EiB z3kPNa0Kx9DarF`a3E)qbvPBRvQqChP5Ha%olT!YPp9T@L08nA~TS~0|;KyFJl!@?S zqj_HR8PG6aD9|vzzY`^Y z<+7$73EowPz{7xxy+?-clOb8YZ&@OwexNKqAd3&nS$q_M83Qkt{HP6+cWfjX9`Fr5ZM_q zm@%MafWgM4GxdJw#BQcwV;sEoe&<%b-z=>`v*P4coQU~WJx`gPFAN!wF)(E*kTJeo zNM;u)vx^Nlb}^YR>FpaVlZ6X1R*>4x0 zAsIvHZE`_&+j(dxHx4Z*(s3fjEq08gT!Yp%cJm8wx2`h3@M4r%hX2b~*||&(foKmB z_aw1-&0StkbsD0>T{HY;|x{T@O{+23DbWZD5rqOFHwC zA@K8(bw&d!L~Pg@Eh}b#27Eisc|Zn$4*kC^sTGug`6V?PHMwhxy?b)tC&u*m2^$@xpK z$58#D=3wrtYEfN9*afIM!u?T2qIl zRDFTox#q^%OKK}?q$Nygo6wYJR$&>w>ApbY#0Fi~);*Zu5QdwXKl72Bcx0Tay#%^i zIU4{8rr6XV|vLg20qAgGHOgS%V*;*Dbq!Fq2a#7m@W*O zjj_!01Y>M?u6ZF;jeu{5bZ$&PKM0pC6DBNzN@3`lwGliWEzUB_xUIv4h^wV>>B2CS zihm@TDDh$e(}7=^Dn3Jc@VEzpA4_O=zAnaRNKaPap2U(1hK|)hFx8E^gigQ#3MtJm zhl`V!_URO!aA6QE=NG+2Ub+m$sVpk^9Zrszj^FEr=WTlp)GwR0l)W?&#Zn1LJ+t<> z>AF%|mz+cvnP+B$VhOdx(1@10@X{>{88Fj)A-ZM$9S(|D`9>Zh~eRw}1U~s;u*&{k+ zRIQuGHik2TeV3NyI+BiKQC!h@s>j&;79Z$G*3+6a zUOnCxu4lNSgKBX_w%atYniU?pGM_fu5w*!o6ZYnX{T(m7v^IWrxue3dDsOC>IkaJ^SdMj~r(3=qTv-PVI<@OxZp zaG0>jt*##?>ppIUtYjk%?I?LHYiS#6sWWFJEUSjzET$PGnOpZsI+)7VVv^4aypE>L z4ak^iBx>b=a>&iC`Tyngna|NLFmO7FKLrjtb~hjr*ka%nPu!^f!t8 z&FXf+*`Q7t3&WL#k=uYSD8rRWwxO0uybL#Eq3%E{llyq>aaNrPZh|)0jR=QJ*G&Wf z$`tZA<&8b;vwb1wf^Kv5?7>IZ10k2%V@vDVtw{FW!buLm_Ev6dCkyp=v!30Cs^C*_ zV_m4?C|Ln~+Uw!wS8ubeug-Qd{kSbZ6?nFel!J$K`R*p&IUDH7t^BQsH!mca9>a=Uv>-+@!3AKPUg6`x@F- zKUO|FRIS}qpWWSVZg-prG80NdQtv_RJ%GQ_lfUGvch@0b9csy6Q(=CcB{N|;P% z$#A;2?5Eu@pK7eyV3@{O)#S!iN1Lq9*qRT+?1a^MnjHu*sq*~-BLZ`np!Mr;BH*-x zr22+2`Us19p={BZVzuwJq(@rRBZ+X7Mb$Sf(??s>i_EXbMHUsUs6{=72*+AfeLF6| zy@w{##WG(*LFac<%+*vNbM-+5^zFm|%eA6jVtzX=QB?nO*s)K7Xt#tNn})@VjXnGS zv3DMDQdQ^QpL_4j?82<OhPGt1*cYuwuv9J7Vux zu|$J4#)`eh7&XSONvw&{_xpR!o!OaXfi;PF|DPnu$j;n*&U5;C`tzL2#Ga>#J$ID0ER8aCk=bDTo!YdPCH(yJp`NauRDgx$u2@P26WeFYCD&FLD7q}ffeeR@I)YX*j)Ei7fK!L^YjkE) ziFm{Eya};@(u#MnwBl|haTJuy!$w#Ie3n#?z-8jN+V5Z(?kXC+pGNYM{v!fkzg!jQKu$ys=t7IoM@ zZn!m7%_x_ccA-Z?oz1WF#B>*}LZ5K^@kz4{h zyIr=8hp@IpA$3Db@!CLI8%Pouu0vPMq0Fj7zp47JZe6#l1cqg>!$4r)gQ)WskA(DFto8ZKQwq2UM)Xc@xAT$#voM-8efbtI20z@1Tf{uq=4Bh8DL&! zhnlvLej7(*)beY3<}1b3zwy%Uhqun7z79 zWA23{o!hrcBKWVAiP8CTDmS{eLL%kMSFn;>5v;V5#2(0T+{y{#M*ac@-_*O=!c$xm6?!5GH|-Z-|z z<{ZN2Ov?gxeYZX=+5+E@YRh!U<;6jL|HJFO3_y9jJxIVU|y{adgosmB7HDX zmN^XK-9s0+a0*zvMv%jFGd~Uw0C0F?Zi67ZczF(1O&uuUlcxdEa&HtR{-FewFAahf z+f!SUu}pbmMcSzJeR8sGU_F-OoGliDoON5C^V5)@Gi_D={o*YS84gV*r+d3_N9L5CoOWtM;UUZt~)~MQE*RuyiWkkvD^5^Q}@=A^6rZ)9rR<^qtJ6NP?Z|OkY)#=&l zi6*aO{*-B`60LJi_BbnW1@TMb5ChN)Dx|lIU2m~XJz#`GCm-8h`7e~;u3lNSAPgwl zJzk3m!oH*?5&KtR*mp)G)k3B)CrM>GMLGj^X`Ogf&!N6ke(k3snCbXtgC3f3ny@qX+|5-bTk@ufJK2aLv-YF+lK5J5*XAe zNyu6r!txxN6?n2jb+YhdO2A!-rz@HGN!Pt)YA!OvB9Q8QhO%x|$-)OiH4T7u5a95(>nmL1By`n1DW3bjk!fpIK;=9sV~e;{Jv{KsGlbf z0A?SdBq7wl7a=aSkm;<7g-l19Ya!E-=MtLdJPR;0kkVifj0I_NxSq32%R%~gqO7OS zxUX1`&RUP3XXv9U743FTS@{MdO)(d z5t`&k??>`(Gdm6*_;9l;yz?&}>JakYF{f-Rk^jQPqpgxYJ6+fbL0|o|fxa zPo&m~Qt|ri@%7aLVr}vaaLE)XVms=enm};`sxr_yBVHMdddl9WLh0a?FL@US`6hRe3NdER?YX z?1<%~&|Z+x_dyf$lg0vHNrC${zZaIlar5Ty09+TqwGdM(`%qArFHcmW2h?nXhYVa7 z75R<8{f6K31Lk{GeylnyyoQGZ8424VsExC)?byS0b3IDzhSi-L?GGNsda?Muh#-Ij zcn!$c-a2c3f{3r5zxJSbEnwq@dX3t#^M}01GN(5ox$7TWHuV7jvb1grB9L{1MyAkO z(3Pvn63eSH)7`T6v~UecVo4hK>Ot{3g_%lFlXdHwKF^eS>*UX{e44&1?1B6>Ox19% zSqm{#RxQU{Lko~RFNs@U)waqu=O62fI;m43uZ6TzkIfXb^)+$OkT zsdOH>&~Ue@`Jt-xqgHxzN^f2y`aWqsi+G$ixks&ZJ#MGNli>R*jmH)}A+Af={gk-; zxS!&|rK2@mMeyg!;?AX;-omoHL0(y=XM)?(O~CEcrbh`tWo>9tUy8&f+6IZyw%+&8 zFYb0yD=i8LlFi21UM>z6>!pYkko023ct>rXooH#NBI3B6^=KEjiw-(Fc}G0Q)E_`l z3P-Z6dy)qe0kx~tD!cJuw<12PyDO0Y9@^G>@@UT@>cEM5G|5d8sHXyg`9D<#MJYT; zvbdqiIm53R%EJ8Htl8dxp3L0t!~1=FVE@VZu&Uqt@rY3U`=b`*5g9-Q`I*4&iw|4U z$%*o4%i_=`U2ayzrl^}!`JTl3=TQ>t|G5D7*XPPLx0dr;);+J^+WtR6Ir^hgd>~yh zrJ}rBS+MDpkup(peh}Zyt+gKa*C*s@nk6N`-tOT1xzo@uX5Ej8)~4aT62yma9Pn}_ z1Hd7K|Np7`SyOx{Ygx`n#!)&fIZDl_7-z^TVW#bnS?bj+6jz7KO%)ZRo2jH^Qb(g- z4CKHH$~h`1#YYFWBaSvTnV(eDjSr=yZp@->BtW*bb!ZNyG(_q6%S(A-y*u8@fy%OI z>xjW9MWHl?kQyiX$m@cG;xLQqkT8q^&Z|-ro)VZ{t7vc!=oc0Z75!iqPgYY8o)$D58ZABj_H&;}Dd^ta8 z!mX8=K=X$_(B}hSKIc}=!$n-UnAEC`d9-n{{W!QmAcjXYNwR@R2QqAxfgWit_{G8XhpLqMR5lU9G`3X z##PKgxIr&&;OC8&9Y8N`l1Hod_KTJ?;KlM5r8NGRS==wNTm|sWLBYxWHH+&jAsOZV zibJdt1<>GadVU+fZVzyOwdZ$OdH~>pycQ^YeR61qD2#oU5cc1TERV{aQVQb-OT0$4 zaF<@*1*E%eL;gxXf5lHQQ@wmY0#>|w=h>|67NY=$zs02$Tj6?u}}$#y31&@fN)(uzdgDAT4^GQif+9eiX5 zg=1{??+h#@2yb)&BGMx?JtiVG z;Vxp}*3;8kM9O(n=nFr`76h(Lq$%2=mjVM3*(edKXsaQSA0{b|64~g@VbDkXW5k>+ zt}oTNA;6VLis4&Z$VPpWut`$ZRO{mDGPIead6|KX+Q(3n0eQ zh<(In%61F&8d19`LK8volvXv5=B=DomEF>(F?VASthD4=lidNc#;jL1jqKh4oLj2i zAX!V(8)z17gDgpJz+Bhpm`B&>nCY`5`JOnX&nq?Njt#?AyyZp2UA6dH4^XegBUrC{ ztMxv9t$T|lHcFiRAX5qv=Aw%`awA$$PqWt({iL91mcZ8pmtufrLf>7tUPrw*okU{v z)mt}%5g^`-K4Yfd0FZj#OJMZ`VS+B^)#1=q7o3bZS+j~u$cB}<6IU*=N4P2+bd!@R zqcc32{Xai%8pD+h_^Os8PD0&F>Vp|tz78UBEO^=!ZCvIlC$4`t{xB0e@dtnC9r**x zzcqi5n2hI7c33!uKXtM>M7l7H9hp-u*9QF=1@j?;PXh5ED>LitCYa5Z?M~?xbZ#lT z8AG)yicZ$Wq?@^csU6XUKn>Z}XINATEb?G?FCN z5m9Qbo@VOR%S^p`Q*n*LxqV_{JhHi^d0xXzz2wKd7IU{&CAF6IqmTMwTIUiBML%;g z?oUfZv2g=R@j!+$P(vXoKic0xycz5Uxxppa2}>``*tYhG$i+jtp|B9^xOJOg9>qJZ z=Z2NUJ0_E{HSGFu9o7-_65aupVFax1`fY_Kl>}oHKngAiOPX_=j7)8;$=n(iA>}sp zj^n9#Gk$C)2XSX3+FT>5r0Ht1%w1yuw1rDj3+I$tcq0|wC?3aN)OwdAlu~Xhg4S%M zfR7Up-VlZ~e@cl$+fZm53r$KGn(cHeZcka${FmbI+j@N8MybW!kqX*cp7tjW4L#Zw zs(;rKq|3s8U+sF=^=)XnBR@b&lNzNWA|5ze+JN>v6E5> zQAhV1;zN0OXs0lR)Sq~dk_G)M*RONOC{)R~QlHkCp8dE-*syqzeW&cFCc&NkSPWXv6X!5(hT1B66!Xc_D)% za$zZ6&355xS~tUpWW$VQwqnEy(x;d(q&*;#^5DlzB7ovPj2m-bgyDc?SnQdpUVA+? zSoCrrXlSqoZ_MC3wb;!$x~-cN05#@R__0(2S()u;J{cyM6Ve%kltKCkg6RdHGsF(0@4LRu(Hrp+qC*p^wvvBy2+8M(pzJLAORcR zZlY^J)h5G9^f{d@za+asTaYWMvIQmDZP|ou8M8VuIhZFk-U!3~-i^dUN0`p4MhrL} zEDeP;jz0+gHWNKPUgE%ksc{gL9Ds5VP|_8ANC&G=4|Rwnx2Z2&Yip1<3{{J48L*+- z&>tT~y{PJYy+^Z^?6QMdhE-_6(#jJ4)kp>}L0?H*X$bFFbp8l?cULDiO*T!|%hG$W zV}`I}vdNA~h|JZzj>3U-yR$7$MZlrKuE~Bg@txUhvLP6IKTvZ&c7&?~&GyyI50F4* zARq|_KFAGXk_Y@>x}J`!+8h7&>*?TcksG&wbu0Th>ofE!b93Q^D>|{`k{rEK$&;8t zoQ@p`QSjIkcV&y~v^7*E#NDD@`r350zBW-Dw^rB|+G#~GU-^S&ut0CBjVT&)<9%P2 zeN8B%dnSK#iCM_z&n<^)#pAXplAdivsMc;lq&r8gv@!xoaSGdK@NxYTySiU{SIc*G zp1NvFAr9mcahrBIU~eUBEA*E6^YHa+y*|0d+^#-4eC;q8AygX#NLinL^Oc=Y{TWN^ zcLkOjtUgFqrqT8J`KDs;K&=ki8yx|F>B>3TVBhxN%b;7hKR_}BsW$xG)>_40v1(<@ zVdo%E>O^EvZzd1i&OCyhfHsgPTxYlZxOfGjLinOC_{AE2Us3qo=4&M!-r*p?ge!BQ zb#<$35wA*V3ld)v_fRQ`(l1`!Qx-iS0ahp9Z|oR78bC7)Pji{s7<#%G+}AU1Qwiuy z1xV9r7-nVB?jy{`CDzaNAIk;SqJ6NA4oV0SOLd@1C?I5tio$__@nhq4s9?+jnS8my z*GqbvhHc1Luy~H9s(nwRO~W}DQG@4@CVM1hh==J$cFst3mT~JRqMLNQ0e#!hZGh5Y zLo^N>xs97@_z3IUCY8oE^#jLs2-DNeJl`-jZlZ5vP%@0c=#;)~kqjk`X2IrZTp@&Q z80W?}<1jSV$E~zpZsp%w;L0fkt_;x|Y~!|Vj<=&%+rv`e9h85SWZkynX&8u%+d%|< zAhORai223W9eJ@M+IwYF6wEY%EmLR`c9LN)%)~Bk*QR(ky16^-#O`nrbaRhNH}_PP zR6Nm5)MQPf=3cBVZC#7c^hjJ%>vijwA#+54D% zz|nF&n>k(32Pl1+Y%{MNmg3IM$7?djYg%#5) zu+YoM1Ofs}mX!5?hrZ%IvuOG*Hy)D@bfz$$%i&tCGr)f7#7#o+E{oqgt<4#I!LCRx zQngpkm{wO#8RBXJ+*Ol;97mT8mK&pM1hlSKxomIWXPb^9Gl7wTD5f=0bgtz^6Ju)( z;@yC9cLw^hSi?&yp$oBvJoYZk||eYQl2xn(n2%5iQ&5gCQO-&*gx z)Lb)eYo9lq7kQ%OhTJJc$!+F7*^0Yo$NX<~_pq&6RFm3plRPS23L9)&x+3dLB*bZC zogoMh_wZ)+n@prHAnlv?@rACc^6}lFJ+9nb7mxo4%gC$RM%k@`&V#1+S!RM5^_#mb6QRs8u(WA2{7+p)GyeTj_VIJS6LNru=^xc|~l zkOcKQk=}R@KWI;PBrOU5C$y-JYeI-Zglgp%GjSbHk+j^1P zd!szJ!m5Q!zVjR9ZZ@J?`3`TC**E9@tvAY9x$ojeS@^9c>f7BY|I7@PZFRHksqMH?wg~E$aD9Vl4MPf_r}8HsELKJ+9YQvLpRHVrD~1T0bAzCZK((8) zF)glcNfhGxQ;%%eB$XyO(iJI24K<*MY4~?s7n-1-1J7m12?}(N)S`3#egcQ^+`NOy zqGd=qlLQUp;>1M$FG0{lol`i4#RaI4rJ^ekCwQ`}l7lYt^eT1<`6pLU=hQ2oOUd$P zc{0BVb7WZ~x61P6OPgBR^PCd-T6(W80xKg({-oiB5MD+#kxdE_#6BK{fVEsnXdE0t zOk4;4#qAk2{wn!f4z97!U|=m`QU>iBa}NZ;s!Ld06WbUuRiW838X^mxD{T9CTrPr}f+I;IQ5Xi+XOj8z(Q_Xa`NZ@say z8jZ1N>BU*Jro~t^*GZ_`mIJwcoc9Z+wae#BLS#D>@=vqVg+Z;z)>{!-zFhB*XAIS; zR2Tzpc8S!RF?4Orebxbet^Qwq zf^GQU=?QLVKLhq%Q-;s|b0_#kcK`eT!V~<({|6lWax#YR@C0jE|IQP9)PFY)w&DM` zoZwg5KEeBj9cKh`4z1X=IYi41qriE)NK5sy}CPf*&j z_B8(*XYI(VTO9_BKg#+Tz!T7`g$Jbi6lRTUkUrZ3T9Y5H0lQ%wnS5|`9&3&aq$#yVQ0rIJ!=C1Kl9+~+^sPQrnX zK3lAsm8QRz;Jf#B@90DNMdzWD`z-42s*W2R%Nm!uV0+Czu$0e%$V1JU}z)- zZ8BjN7dp``DFD3L2Wb{tauhICD7NM%(OBBnL~71WVn|P_m$03RE$Ld`{y}2vK+s2Z zFfmX{I*1fX`sO5{RTl|&TEf%#9*$^h?yHZ#A3w)lkZiUr97AJnP8h7wjx8d&P~-z! zBol6s65XAb)s96R+G2u?4$Rxb=HH&?TVG6jH@21bu3{fz0oc4)RL0mV%KD+Tx03lP z`SDmz;w8InIJs=7Byj;5L{DT-7}^jsyB?*T9M+;5hqc#2ALw%Fheq&Bek?FdXv=Dk zX%&8liOBi(375}7s)?aAwno7$^>UCaoD(CzCLCSWr9CFvF`a{}F#F`&(BWi=FzAR|Xg`ZF-quf|M=3Gbx|Cq_#C*{R%DD$pA+X09X4 zcSWQn*l1Nm+C7$`5candu4wu9ra_>#GMlW8ThFnmQT#SE=59y_!!~LxE7M|=>9EHPm=^99{?$ob%tmT#jg6G;mTI*=mC{n{ zt8Nd5>vZa3`FzP}%EkF-iBPbV*uaSe=bFr8O%&15HAYjcqeT(5W|9MuDu;^1e?slc zQq!!cWTxqcj)~W1ph`!+P6&L<4lY(o3Wc3<_P^T(yix4 z=HH)&@l*=;t_?89TwmsxZllq0#a^m}Q5>FK+FJ%~6Ax`upjjOEW{jsc@i8CLZZtv^ z8*avqZ*8}p?D&St zapORC-+|&G>apcZg4PaI>{@Jw^}d9?aEbQ`#vMuD*LNd*$dbryAY|-&upw`3yDDT! z4W(bjMqx3#Q_@k89!Z8xUI57FU+n5^NBDvTQj{9rn{SnQ_Mcz$uMK`4wPh}WW8HUZE*I@pTN8}vHdvl@#nBoJ9azm7AZ_{Pb zk95R%M!(T<9gwfC*aB1hgYz46#bw~1Hi%^UTgQK93#e=*I`|#(A5W_xB)I}we6@HoYUUkKX@b4N9Uvokpf0?gpl^ zHP!}9yiW=xPxxwc1KUX!vaJr(q$63E|G=Xt>G;tU=U<&#qadb@uGWTnhF^95Jq(|j zld?YnO?5YeHgoW%q-@01pK3aSDZ-T?@r&Y?MB)E0Ta7<2b2S!5!Mc7mTpQl+7VB4b z)0NdQOK*&(nR;7!zo&@wCV7CaRAP@wEnLOh>Z|-h8>B2|5h3uBMeM}bEl|8AAAq4C z1}+70Z#S&?W!j4_l1Q70nqJehVZZ2hobnIXU8(Zv{b6Bl*PWqRJn<30fhD zTl~R|wV-e2+6g>cn_R04+S>wJudxMW3p_nFUJEc7TDv|aY^@1_;OlB&{cs1r_=mVH z)_Q~69)Mm@fGP76P(a|e15CBrdKzIhNl|dz;2D2|4`Z{e`)%bqpCH#c@BfEfXU_Gl zgh}7Aaqp){+jL2{ZQT1mXC>FWDXz|bz}fkqvr>z*Ql@>*N}2yaXQlSZ9d(I(8@c1> zTs(`*9oy%SsJmk+ZRI)Zz;5l3*gl!&xyzPm{>Pg_*j)*Z`|fPxGwnBpnEPD|Y`>I~ zohY_{RABqBAh_>Mhg*6vnqs82_!NWFO};-s%+CNwGV7@^!j`ZRIymbouW@ZL!iDo< zuSdv#?MJB;3v!yZurZ9}OjVJ`bIO#EuK&yZdYa0AB@;Ubk#S%ch=5)zuh zme9q5xEdF?j-TC1qKql=utLUj!p#V1*0H>MjD94Y_6ag1n{gxZf1eg_2=K&THnv19 zO>qI?A>M3mlj%6LZ5pqgb8ENh(q>EAL}Bxnt%zjGlGw2@Xk#I!jeM#1f*G-X?33|y z#K+wc<9BNkZ|mF0XdoW5k~1Z&pFFCT8m-M)awmF><+f4l7)Og*w=s0)i8)=1U?*6x z04Hg6)7JYmbbEDfFn0Hfjk(*ypntoik#x{FR*Sc$D{7fG&A!WAXZW*HJMm{lRGfF6 z$JTIs%3^EE1v#^(5crs~Lf+x7Yi)pTFPJx&-68IYtXFo_bUnr*e+<~st|sA>U8lV~ z)7sll*BVgoiZ7)oQ)}dpxjm3 zkR6ugD=F!h7vPx5T$-icbnKdEOg_jY}YVvOyH^hwow z`hSkwEW}czz5nTs+eUfTI&No{;kezxaw1m;-%AGgm%h5aiK25 zpgfPM@IP^(&ROEvZVkge{}~tRY3;sHl_?6kekzQU53K}U-w#5)pXmDf3SAHLV$r^n zfJ??bnf&E{*DN>8e>L51hWoYGY=ggMr!FbrQiH!{r(%Rr8*r(?U$axcyMRj#?V}sp zdr=;}#LJ|;5THE&N!p#O_Me1+LS_jNj_weg9(bdGZxa$Z0&tlTK-Y8L5M5>obV$mUEQm(x|Eyep%94k@R zPbRnhku533b0(23VYW5E^>u@N@qwu>@esxGG-E>2j~6z?m~b6zx7J4OPbTNl2&e-u zpf1J3!%=RynL7+jtw?-$>Xp-sQ?D%}LL!e9sK1HZ*lkimMvXC{+q4_TgBiCOt7P&& ztRk3Xg29tAYP6S7H^o~}%W{a9;&CRB8<(`ZGPYQ>YoXRk@r1&BG<93ij6%V0-Heca zt0V-x1b^GHv;=c>+cztSH6dzzPegupI-2v{vW{lu|(Mp4}@Xd!{!F=+X!EXmF+sC1dx>{l6~%p~qO}vr z-GWW2MpuP&x0=Lm=W~<~-ku@Pl9Cr%3Gy)Ux4TcnWC@wb!;~Qz6Q|a{Io?Y2j>*Jy zd=Q@)kc~-cnD}y1uod~2*bn4hA`jCXV#uEouoF*FmLt-VOH6BxkZH*pAqNwmU(k)y z)W~USBsh$P2C^XI7H)P5)XBWMwHbrWXDU#*rDXR%weggN&VtFZ4Dv3%~&KtuOW46n9 zH>}77rDG9|^3PUwD-TRb(9N#0FtgYuRqmUvvMg6e5=DZ~M&3>7J-Ow~q}laQ^&~wD zR}kr0)PW?-Y;1DZF>M<8TYY5Os^3q|n?$?Bt)s&=kU1H|g)^v`duN~-h`KVA zBTxKCSuT4+(Fu!ZqhL~o^Pi=$D{<3g+{lrs9u1K#cNayJ)$DWa2;hdaWcHxV*n_U` zHZGzg8>JTo>J<`0u!eXO4Qo@kiR_nsF0D*kW*=D- zjD0wphOMgfeuNAi;wrI(1}nVGy6mqr5`TuNSUkQdRE8De0oWj>!CwRomFgtxIw^My zae)TM)e(>E4mB%8U=2ZswtW7Hrxf_8t#k%ix6-iCB7XJ;nNgvS*HB3vOH6j1YJ);D zMO_$Xe3<_daEf}WB=CBU9URkR`3-PpXd}3&bxD2;6svYt0LGeR($KLsFl*^gZ}e25 z*Hblv+}85QEh~Q#VyyNFhoiB|dUq0j3E}Z)UH0BU?@5w%gT09$A>-W;5)9GkP`(Zw znG(`po3Cq+Of6?8$^fh*0D0|AAwtZTNt3b#cJ#_-iXDAP2Ft?dl?-8Q9oTegi^ zCpUv4vu=BO;5$l=M2(!7q(YPgA>GmKv;}A~P*h{LODW#fR&G}zWE)u}!ZB$OfwYH4 zwwp#~`4IgCTa;ssY?ANPUh34|ZZEfY37cj5*@-MEJo`*nweqASrJ=@rfFCoa$?gD*z&)%31*@DWrO*fto#v*O$Xytc5~bN4)C}g# zx`XMP9|9>0HD+)q2=ox24P}e?XN>t!_cM2BDgL>Q`RA1}AI7U0WHgykj6sN5u%bqN zm_`liRN6vz6C3Mrr8n_w3f8o7lDm-3fipp-K6#;@FBg-skmq2^V*)T_30w*B0Gd2j zNed5(L69KV9B#m8|41BINc2VHw2JRxD&lB{E1M(8Oi-CTLG8mGVuoz#ew1XPQWeIf4 zMo3;l#vydiyj~HIme9}Zl?J|%l!ThUtCg70T@85hu!ixqmeB87z>|iMl9fD!0zW?i zPa;A-^8t?$flb_vqJeI*w1hX&p_?g49zpIJPexdoTLSuVYd{7_0RP=E+Ci zRGSyX4vK6zC|Zv1mcL*+Tok6)IY;1pUQ}|<;kP(4#RfWw$9bct ztBg!tA0*m&ItZnc|LR5=!IPD67zwD=VIr$7W;Zbg3MYucMKyL4essN9OuS@bNSzpC z3Abibjny@DL0=tyU$|f4{RcW=bS)=F^!IK+{<+74oO(Kt1`O$xAb3b;Q`^%r@#BW} z2`7SdhPbsccZ%0xgD9i(dLSD^G)*;#hPFX9);6OhC71T@`fh!}*Z}944FqFDZuX7b zMxdAt!7m%TQL+va=Y@3;oEI=QZR!7J^gM~A?{P{KIHe`~7KO*Q6dsrC15)&=VUUX& zp5Vs232HcTfk_oEeW)Y!&N#43x-uQx0M&x)m%ue?x1CK#Xl4}*W&6V0O39mcJ6K9y z(9Mo+`}~dEZ#>_L=jGg7EiB{<=BJa?CJJ^Kie~&585wX`c%I@>=wB>qgNeTtj1 zApSgXd_D^%!Nj%jaJF3!ux9#4q=@}O;Jbz`v23ytm`|1no^)9lIglbEB*gDbq*u7)?p=3Q(7Dyr$kA} z{BeM<3xu3z1;R=YxL^&w91)C$t>aZSMxseerpsf{Qc#1H0DUa?P~`-2(vDLZ5Y%x& zHU9>78Vh#f6^IEebu!n~oB+^s#JMqmQ*`Z|!o4%u=q|cBIR;7j?ivdx4(?P-qiYCi zj1W{%gP_1oBEzV|h5}U?5D*n#&k6E><5~b$rNLIi!ijo0kqo*tZTO1hxuC2{_T14i z7%GUX5fq)Br_QP-SK!5}3ZA++5RT#j2#PP41x+N(r7HI*sOk#Fd8NjAWmQ#>l64LI zlmhDzbwZQ!@ zaIaDI_p18)s;aLieSahQ`=+|_CXJ9uJG_(9pgU)1sA`icW=?fKL(C^e+b+k zTPFE!HS|v4-VWS5H1w{@zFR%XljHYP!%c#GeEAr@;N05`PIqV|=1=p8)dHzl`EV#q))`8LaMtMSfNcJy%O$aXxOq*poeIZqudM z8R~ZQg6n{-8}q8C^BJm@0EJd-#1kDPp7>pz=+Dq#twn{hcOISS3#8B>_2WfZ945Ou zAl1-^9Yh}*q{93zG$3FSnZU|P@T)a>huSDs>RJZZA~J~$l{E277=b$I#SU&G`A=``HZXaa`!ZBA-}<#NA$Lf-z3-}CDPc{IO97oja7EZrEJrCN!; z8^?4|a6ARQeK{261e>*5xf#W-c(ohSioBOr6p>bJuNJ?uPVGQ_PdzH7iU`QBk|FGb z=e4IFRr>E%dKXIXQbf+bt6m}JcYn9i2>adceIqsWwFdIF4TLBq^RtLFI=DTG(3gA0 z2r=>>Uk7)_<4HW8B=76Jpfgiy;+qf+z&8djk4$54H@S#XAf-P)a6eFqnGqD{%*api zzLeNk8Jkl2v%lM4C1yn^3uajf+9=XSu_&q&QuCpd*B2C#cmyhYI4;@la4VaK(mcTZ zsE7g~(4Ueksl*YHJJ21Gv^R|s(~3w!0{v-r%_?zZXjdAzSq4o5_DFr1~qy7-yUJrkZ2Kg)~$TvPFLVd0C6h}{m*x<$!heko#? zPTno4%Yyj%5OIv7{BxmuKD66cH6Ug?K+zT@l35r)>_Xe-9{_ROs}9{KaSWtxDZZa! zFp&FMU&*Yf3BlU|dbcQg_rV}G3O9eHs7ZD91v>jN`HlMXZ~S8DUJUcIc=wQ?{zfz~ z6mALX7nl#XzpF|rEs&9{qN(A6&L1@sT0doy%@2BG?R{X?pKRDSev=su!*e+nI+k9qUws_y+Ibbk)rU+CT^0{RI+&&sq+)Tes*DGwJ` zJ^V}$KjY!sG;b8rv)XZR7|$Aq0iOX&0ju!>2k%8K;Y;E$;4Mn=%UZ&h%Li{!9sGrs z@VB;v@E1%wO9)#5-@(7XO^#pT?MUoK2e^$Q+y=Zx{JOY>{MAqEzOe1~xeb_={z7Ew z8}LL?{HE%>NgcQfK5y{ttw7rtUZVqiMlpu5;G-Ash{e#wczgsq;*L+Q)OQWgdn*4P zrC>Dpyvw%_4A6&q@gYCqFZk%i#{t}h0G$xQh`193$Z^lp?1^OmbSLs)QB?TirEcOo z@)f?L2;TvZp_(T}h1()AAS?+GjRAo(DI&r_YU55y`u4eTET8lI3rS~G^JJ^}rD}f3 z^S=g;k4pS4aC}a-nou5r`-<}F!yNT#4$p6kG|hik)xT5W>%e^tosf^e3E7A&mCsN_0(D6|hP7XDJ zbM#^kFHWHs{>3kVV=zyP+{vLkE$Q2-DtRg;PveespaIxnQp=j+$`{JJ1?=Y;O_(0viQ z^Fnt)n18u~&@K!)S93#mVHjT&y18LIFLZpF7dFKghn%ZRLU(cKE(uHVr6K3)(lDWy z!Je1V`!K#-tz1qkSA_10FupQWx31E|t9W>I=&laqYeIKr=q?N0HDUhdO4HYdI+xcO zld#tTDt z2gogS3oG5GC-+#l@1@(IF;%#a3ipTZp3w2{y-Bwv6nH=r_+aQB2;GBB;ICEq*P(bB z(Hjrx=R?%}P3V3T#t(%^*FVj2;CDQ z4CZ5q1}^9r{ba^Uhc+D6OBr}RZcA-GRqB(eFsSBNx&RB8to!+hXrhY@DRwr%Pns? ze^H_@rxM^?Y#Cmoc8FNfkdT%9|d&JAY{#Vl9zu}0Hal)7yHXt-$fBZ9LtTYGl?oiZceZaesFv9gP!dY>oe$$@;5`WX8T4iJ~iO?sloT)f%CA%gcU2sqX1E$PQln=J;Bvl*y6OnjY4m#!u9cH z6y6N3n8Kqe?0H{3f&EosxPi^luu_;g6&bHSTV~NBI{dNtTt{x4&HnM4{o|`}Tw zOE!XOTuSI$wv4xC2XCeQWb<)?_?ffg6RYO_q{MP+ADN!STjw0n$N*vb{!&@rzo%&u z_ap;p;0h?|Cu)(FoG;Hu9|rek+X z?=EwIK!4z!RRYFm5BMHGVG{vAu^3N+%h}6eN>_x9HpFmt0AqZ1(o%(u4y)Mca{}1t za}qceHae_gqt6XsqtCSx!{MUqjEiO(r@E;N;Ooj~Zey`_Q@l}G{&+UaTT zIWKoZxRtUfr<|5LzSb2nQqprIg!+MqQo|a6LpRY+wW)HH$|>|JmvNCxaXGyo=o)a< z78#*F#F5RCKDM=VwOS1kEs5RC@1FKs ztaS5_pHZ7X%r0n(U~_98;=cW1Jn2r4%9grLrn$rNPjMd7eWQAGy(u?HVxFJ4nYAugrbVT(3b+< zpIJ^2|5w&&)c@9Lsq1uJ7b-K+74@F8*B*bYJ}5 z;!2BJ>r5smQ&bf(dx?pECu0iPDq!~Lxb>hxnj{BSOx6`-@zsUd>e5+#lx`vIRz&xO zVk>{ubS;n~bdUgeH*bK#eNwTlO*6KYP2ZTGgM5tOfAqauk#Tm{0B^}g+s>)9?*@_aehq_R*UM#<}i`~w?bG`W5OA&k|t|tJwen8V|%)7YWZWrIVwJ5cgF4Q&j zM2LK*Xx7@6ANKk?cc zA~26k75$S$JLA?HnVRCC3={S)N4y1s!rhv_VK+D2?dAtIlCKK-V*^vzAAThIn%$vP zclQI^h*GAs*+73rxltO}9;k5ks0^&2#x`+S{y?m<+7_!>#HrjYM*DX6gdW|~x7)FcMG?Len687?nJCiC;E2BQEHsRHE*FmSOMw%B&>iYRob0E16#SR7NGr@;3kiV z=0Z+uxwmdv?tL&1+Gj*`Me=4FYM6b{NT`&?-0PWW%NY%aM!Gj64po{%m7c;O$#6Gh z{M}#%_~r$nv>l3eg7Z%jt4GmV<@i$%>Cu6Mf_?M^E`@-jfqir-?i7yl`8u&2uP@UQ z)J3g zu7@~6aRW7WX|AU@AcvG(bF=N)@pdgdl{vHQ6ZZmsOGsxQF_iN49Qqy3j=$eh-aK9Q ziPxmOIaZcLVTis@=}0VycWPOgon7E|;{QA6U%w&9X$SS=S}`9Yo2>zCBs&{ZA$t0I zt7>Bnc5{QvJ9r3Rhlphh^arj@dt`Svw7hrM;k_|!f&Q%L*3ac?wnM(0wLpH>QYzQf6gZwk_ zuNBklQas95Zxk~i%v#`#1o=lOvI!M&3vip3I4zqQ3ree-)9U6$4vn>H*4H{G79QGd z;hV!RKn?+QNto5TcpRX{V+S|B1lyK}ZNn>|sB^&{-m)?GX&CjJ5gita(q8f&hu{{S zjw3)?jkjbxrg7Bp!tzm}#a$d6vtFtvsnLd@f+s7c+3nkEqwZa2kPb2V| zjdJ)ke}{8>>-`|EZ6l&Z4)^rraI8NGIXoERSd_C?)Zq4I76|aOARf}PTZX#64*N6$wElheXK5k8P0J$Z1$-tCQGi(#{Q&)=XncVth1}wpiu{b6o zsa}L6f?59vA>at$fsp;}V9s)r%lD2KEtyye4(34a{gnJN7I;l?Y>))%^I2I`rlfFI%~DXpSiImNotqQY|d`0-t} zaIU9uE;hOv`-e3tuAZEQKLcHcbMd1ytJBFf@x)xer0nbISC#04HP?G+E8dv>3c z;z0~=kOw-4V@SclZtwz+w)Vn5vBf>nt=%#{Z#BD)TUR$p2#t~WXZTI6YR2NI=H1%15^9aDVbu^sZw0$ zyP+8ynA#tlS7nsl(JuFL+d47Ou@lQkkiBSe8C~O;R+KSIu)F}uYR>X*V`u{zs1S8- zrO|C{GFE9-hO??4uW!Z6E2|=4k8TwKn^t1m5^4tGP9!$$F^VuDw4SbaXKtJ|7>}7? zm*Taku$GOe4{Z@itpWG1%AopEklZpN;^F}gGwiW7qD1NTWkuM)UXAr z5YFbB5~wtr5~IvCC1a?*1+>@}rFbmE8f#NBjz-7%+A{LhCK*q;vNxJ-66GoIyJRa2 z#JA?PH_6`0Z7Y*(Jb~PH-DFY|@4&ROhrf@@&ki~B{fXR;Ku@;sPHf+uX>jKvRQ4`x z-<@zQh=O&reM8>05*XoBfE}BB3OG}`jbL=loQ+ZAF9{CI3WvE4qZ8>oq#DwB>$Az` zx#uV1E1CEZuxpKb8C~l=u!2TM$;o10T^G%T-|z|p*($u^m>NuG4R!OIBhCG2%`GL! zq9@9L*^7pHB@JcrH%w>Srd@9>J>%2fO|f^^_x=(ra0N9u3stcZ_V~kHl-wE zHYs)u+CCcO2E~K55Rw56i3jK0U@vH~g`jW)TQ-j{ES(6yS%|e8b7zD>@Aljyn$zSS z5l#~&;p$uGH(`I}=pkKbV7(PXKbh3Y64==x>ck8D43k6DNKturNKaynWm8;DN86Z9 zJ3{{_a-rDCgR3;B4Rj>psy&G@Ix~pL-n#I-4kAkWL&n#4b!rCr@~d zt|h!8*M;I7EqVE^$S${QmP`W-q9yVzgIJlMtII`q1~Zl~Q;ajiHrOIm*cpe;0QI>M zji}k#(O-ZukhIt`jmO z69ur!`q9~S7TJa&Oe2Oco;_Tia+XFRuRkVKNXbHG1-H;jEE1Jj6(Rw@()<8s*u{@*d9!)11~Irj3t`-ELEWfkDY z0B($818<=xi2&fCz%^ld83u z76!p|PiDPo9B-}CiNm&|T{$~(7AzG`2{e;&yNpa>K@lLh$+%tdjn);w_;%yxZbcbw z#(OYd`2M&(i}6IvGsR3#qJrs^O7Y$R-rE3A<{^o3+&(3&F*EK53E+MCzHbZQ{rI_` zS!1F$Dw;)|+MB}TDN2(w75&f;^PgQ85VRriMwg}dKpHuaMkrXKppV=TPuFVU)#I9r zL~G#P!Mr=zbUpDQ%!jFUil}wEqSeVHS{=04KPRNaPs%F(G%FEv~iHCz$X zNp>j;wJZv?qULNkCh-&j>Dv1@P z4o*r=C47A>nd(dIS7KI~G5gBPWK*e3(AJ#@^G;em`bc;y=OrC8qqgu?NJZf-{YBV;b)N7R$$tuO zi|t0V*BWmHOT=4$7T)@EvOG({TUd%UVk_qFv^Mb;#$zjBJf;#bCT-#^S$8ZMZ&3@o zv+lUQ2u2=3Nf~j;?Vud#rwVa>CdBnw(x(>0C9bFq#Pzul*XLH6OQr>J1xrU+vEg8i?- zUV@xpuL|Tg(U-EkwF`YIV#1QpSFl9%byl!M{3Ul(;tVYXe^L2s!#rOni&}%gc)K(V z_Kjh%Z;}PB!C=%}8VZ{k3Wd!yUkw(d{U|K>*P<}3VFiV;igMP)?gKMN-Ll{$(AoLi zvKN34jg7j%tbZ|0IS`XkXm)Vfg;=Va(I^(AlfY(F1b>0je24`Q7$P%Svm6p*M4A#d zyO=82lJYs4Dwn9rrE+I=m(rFYF_W^G523*MT;<=d)g3`MyH2&;!O zcIEpCp<(qCL*dA_@EFdqn7Vo_Z>|FwJO_&2b3l#&V0miJ3PE4k>H1p+)W$E5+XNTp zCczqU9!F^ZaB~cnn)j*Zef)%f;G-At2@hD!Be1W; zlCHcV;SMrz2Sx89fC~U5xOeXmY7Zf_1@K|WfIxIyrtAO!0Sh!9}vhr;3@gVmgFCh!9xJ* zOI!C@{dyMC!M3hC^PHYMN5`L+5xY#;ab-xnWb;SiEc%k*y)1inEZIv~u+!8lzA5b3 zTij$z@$UrccjcyD)34XcO&Ns~#=o~|c-^Mq4Hb|n`kR6KeSqD%EZn{Kpr5lp$co*_ zA*|Q~8L_`5Z`o4(wrajzZs;BTddC{F%lcjYmSy^TfqTzK_8^ zBf1pHiamoJdl4IT_oo1Q=p*Q%2M0tKL^FPN=muW9IkT=UdPovp(L?$xdWgT!Ls{q{ zd_Y+1uEd3*vc^<8x6oDG{WR-LMol+C|bR z36D$yvSt#X`(b!|G4}6SL^xFm5f#bs;>eCn9zn(2ERu?hHwE!l0qV>uJTgOoRi#Br ztUu06yRPoMw8y^PRnu}(78Mf8GWDpYqoyF8_rcNZKE&5HloI*!w17->7k;g}K zcoku!Y(ML3$~T}HZq3xytG^2%}ctzF%?HqYE&_n(h@7wO;mAH9&PGJkm(5*`dM$UHSuHczFkFc6L!EBdEOpCXdW@GZkN%MqPYmxoJvWrKYdq zfouZyVE*>x_nwFen1o4uorL!$o!XnPdl%!$Zlc@EO?KoYMw+lk{^IEbq-u#rMWKDU z^|E%U+A+H%+AL-N!zb#}$nm*^gSH=a$}vQ^+KT>|O<~8H{D5OND!wc#;NkT{K$@ZH z0WvUkQ{83dV|HNSg-jJGCL`17IxNl9kT3xO0gv#~)LdPiM#OM+GFLxV%|j@5h}<@R z;(jdo0ySF%40?o&K{c;Q6F=md@`O?9T20usJa{3aV|Eyw7VXBiok;>+SMk(T4$> zxFH!e)Ej^x-!f2diSMQfB`!2TbM;~_FD??1W-sPR&>%oJrX`=a(Pn|eOS3m=8gAkN z0-(2ze9J(<73I~*N8P(L(6U3fWe`6Uq1Y6JL@%z8a6wRSPD9$co2`4mxKc&0q=3JI1dc8iM@s^pJLK=Fj@_0< zP~mPXcZ?QqSI2JWfoyXmp$OtC358~{ii%U;7Yh7BfZikd1u|`@GyDLMPKkuOGtg}S z5oa{qy=CuCs@yNCL3cu7VOqpoW-;$h5nhFbkw~}xXba^sZL4l2!F){BD6mMJ*H z!eDmk+zNW>a$heZ)=e4ghU)Ea;w*D_FRMW{8o7V5=so29;oi%GIrumSG3;&zZnx}zs9qc%YRO?cGFASE zdQtH|ye}>P!~3jzz&Kh(<-z9}NA(QW4;aVl#j(7=36YOp94{|K_3Zw%!%y-4a?dFJ zfO_@-555QruMsUul~15DZisx;fs^QRhz}w!PUgj&5GO=?VSb2$`e0hD%Y)W4VBnRA zP?@6mA@WfNPBR$z7iMrW!~s9V3(;PjDMv)X_;p&YioY)Rj20hK&mQ8zYXP^$S&WU) zhk}qeAu9&Eb-0WW^Ox;k8hHi5WZ-i*il8 zhWLk}ybdXHMfujaE-XA0#<(RSJf_(E(EB8ETjNTal_w&%H80E)5obkiYdIcj(tg8j zjZ2?Re0_Y20m3&CBtWSJa!fRL#oG)JE{R;iyuj0tkNg;MO}x_pJ)FjC(LG$AeVTnl zv;PPW9s+7gzKdDB7ZE7Sw%~5_Rjjx#sw-HH>>l${REc}#spuX}`got! zO#B${x3(X%ns_d<4=IlqBOjIcHTxlSk6EYgvZ9ZxQ;+k2NiqtA&IR&n#KZA7tjWWn z-5L*v2?g?qdi@BX9u1*D9+P(?UW{DeFxnx0js6l@6cWybUpd?y6%-*)B!t34aM|k8 z(-eP3feHwWz|GA*3kg)fi|6?Hyy6hpix)z|1!x|gAVL-XlF4viG(az@{7aO7*)CrDj{Ab~blSZgx~I!MWAi?vo;|~Z`GmQECs*b7sr-RC@T&tKhT0w<>BUF< z{5ZsU-@5!KdGZVDvuQm2-Luv+VEkD{|4h-p$fMsn@QK0rR4+c|#b+UY`}X2H(k1eREytIF@FfrwMh6+Te*TT0Uxn)Y-}UqF{QNo;o$!r* ze#6h15#eJ<&9`)zn_!^!NS|c4_ zYhOOj#@G2LQG9*m_q z#dk%H?{@*|?#NN@PQLvra(wOv=E5?}<0HpsAutK_ZvDK+AiR){?=8c;&p(Oc`yoQE@8SwcvFwq+s%!drZYw7qmWtb29CsF)J7~d~?s>kw963HO0rQnI z%##Th5V==?IV6GkTZ2G2j#tYtf9Ib>@oSOe`)fe@edH+jD&Jm@9G~9<^Nli0A}{cH z1DL}Tm~R?{nVI+xWteaIC+YZ)M5Tz_AA$6Cei!#hpaZ=_!048cGgZZUFI4cwX zwG8ub{z*FiDsp`P3P^vC9OeGXx343|=kLJ$rVR76hz}0K;|MF7cE5jlavtCo^j4SX z(D|AjnX(m@^teujlHNh414?vx<6?E$RJILH9Av;AorF9dBv3?cdWb@-2D0dCzAlHZIxzcBBk-9{|BS`z3$?6v5{SE{Hme#5wTub-iUyL~M=XO~ZHOUY=I_^L-cs;p}r8s9JHzUqR7uK=9TE*pT z6)nS2;iil%6Iny~MKva?xOiOdlg0KXEq0Nd#5^SN3&dtqUV&XKRx{7L(!H+A4zUV$ zoU1BUbG02OJ8Csn`VaTj6SqQL>0w=Qj3F-Eo?#K4>xsyJbr&aH>BU&e{!M^hV`M7n zO8;o0f@QrBo=t?T%~JNik2fSf6@(ci@8oz*YL-2nY!>>+##hQuBZkke3R<;c3_T3Z z`&+72+vqy%bCKx0c78qELfsu`-8E0Z!rd9R!yq>Vbpd-L>F!V(C7Fp^yW}l%E8VrV zBC@x(D*Avv;oN}j5MtoBE@I|korBb3Q5%`4H}0uNEufY+u$Il7yl`KJh!h(-LN%fm z*eGdv6fGCrC|4-On=nzE)V55Z3bl+wlUb8*?lyIs>yV75R!hPYmPaX1l6BsKRk6fN z`OANTDj+Qj^YMB&8?PqnnRU5T03jLxa!OSBMNH@v1*sH#4W-9pYd*u<{tXpR^sf}SbB zcdGCK6MDAq+Bv>!=c;Rn+TY1Y)Q%{gf04_dExC2lwF?9edHMx1lPJY=)swltYZ*%< zG5fx{_#zK=o`-s|pkfm7Q3km>f_4ec=LM3}Us8s8nV=$KN8)}tP?55yk+a)?E6yqG zsVfD^Bov^lZJ5`R)C;awD}eM|D}eEy0(%!e&q!>J zFr9yI2xRVeQ@KO82;8knCJF`krb7#Shm!E`pbSLlSn|mQ=61cmodp@A4K@ZzIxU!- zTVnD%6a*222L$0w$jO0>I2?JoPeNgL>ca9?8zX`FJwg7so3J`GSobRYVgA9JOjLef zke@ppa|d8NAe#qSJwIS^5Bc)zU<^`mULg@jI$jmqP|N)l0U96i^YEyjhsV^*$AiM* zS?m>%i_2O8Y4{@&jwj2#NZ_87sM|fsv?2{xQ14`6eE*PoKkfVXj6xl%f6uDcb0#BC zEEjAfh{In9^1o&z2*Y0t^3RV)94?~<#NjUml7;i-73OF$y9E~Wcea@GuC9+?^Mm-k z9|X1vsrZdRN=(GtubYJX_W|N=gx<*@{-Ex>B~dqG?vm^j(ulWf2Jv=)y@Gj9yraU% zun~8^ORACgRQNqscC&C4JPhO54AC}CexS&E-b?}UH6m>U*c0N9Rr^npX(OjBAA6o(+08-4d6mY9Q6o`eh%u3N032e>oR|p}6LZuj zwi@FT6PaWb5CjnrkWnT@P!MoD2m;Qt;*5%lGtM}_zkBW7ea;bl9^dPFzdt^&meXCe zYSpl7SFLr|sngw(Xsyz_EZjg+gYCRn6Ob!u(&DSAm@8M7q z!LbiYcTo*pz_J-WVCrFMVbm9;0Z=Co{xY!}Cx9Bf80WBR$anx>*3q1gRS$gOsZoaj zM3*}PLPIbSs0bW-Qd++7_&{+v&Zk)~Itq~HG!cR+X+UVOXPcUi#sNW1Q%%$53lA4~ z6+Ge5@EK{|x{seK;0@2)4g9RtXO`MMJ6)cf7vMar>h5l)T;e6|o-1y^&VbDG;0ErT z1$l1K?k=Fv<)ZxIbr9~H-5huBDA+msRj~6j?)B~&8Ar+KPDg>3SzycWXF9+Z7`iAA zdD+cT=nnFW$5O`-+^{(ay)G>fdR>)m2LYQ|piLPJ6oo)%69ifa`pxNR&;KeoQnlXea=m!J;3A0{j_$S}b;Y=sm;39a21%QG_AGI1Zt@3C8b_pi7E z=vTjV=j{49>@WU{yVR0vxLc)QOA(w(C^Fn_mn^*nzkJ)#f4_U?rDJ7ud+QJ_Vn1$q zvmHjbZox!JZg_UFUAef*6|?Qypy?Px5>QbBK@sW4?lt{%4>D?6N=8~r^+wmX$f;@} zjE}q4^V>v>Pe-onZJl17>Ya`iKGdhp6+U)m>3c`Ss~r9>baO5b*H+`!W6R@K-gsXT zbx$(HHvST~rFSUtdB&2jf4H+Zr?f~9iS3rkXZM%4FyHeY3*8iF(Ql95l8e8% z4@6ngKK?u0ekg<%fp7!*7AES1S?Z3SmBKv-A#f`gPyJbP**%XI(Y7?8Cwdc4qKPM$ z*XKholl9bz*3(W-n%K&GDl79TpIX#+1ZGmb(X%j=5-Rj%O^a&qbx+m*WoOubRZz6D z_V<<@Jd-?J+@o@xiM~Z-zi#MSsW`GC}D!}-uQhxIcL z>gS_yfnDIDtnap6v3#lveWYYb)#AiO$`)!?x6oh04yqLj)rAN<15z#(4@ktFuIN{& zRz9ACL^(Kxc7jGx=7VEZrk-K<`249e2WU#_2^wFVas^-Xk002TsO$LsDjo-nVYJ;>ni<= zIDji8Bl}X^v$Y=P7U!~80vm4^rC zwP2aWBLMLO1wS9qF^zn7AiLOs+W!1D)_K)AVB`1jn?%goZg`_}o#(XFOD5Rv9jbSv9U8d=A%p>2*5Pn7FYx zlO3)I&X{xOV%7sQ<0II?x{1ZnusDVd?U)Lt#mDkU;^IG{HOJxKmYog5VnQc(t8QlQ zu7aw5K~2OTl>571%75Rl*cX3Qiv9QfnyP-?svo~01s@g@WBwCUgnVaS|Blp_ZY)-0 zGe5#tqkCjZvo38ejtSpp+9M%J>TDHCso<^^Te@KJDPDEMl9daXon54gW}Y1g1+K;; z)B0<(jb$au(jG3^m+~xb;PR2{Xf4rr`rY79D)DmR{AdauS{SexjsG7-G+ub5Ti;Re z#uxRy%=eRB=#g&M_^C@H6W>|NP&-K6l|BA$GIKc8cDF-W`Pi9i?wfX#1%BebsjGd{ zx+>og-V*msyR~rNRJOgWto#m0!n?=LOn1{C#5nOk%)V`hDL>*x*gdw!-%Wq8##jE~ zfbEAXzld^lN zi>JFP$Iv6Qg=sXK^_1{*8T29FL-XZB5$IbuL-`6th=;s2)op!H`l^hk5{0vf_ELkk zVZtQ7y?UVkGz;_0nfCGPow&7ZQFOa<8liqW+y0FBk11T5(-BuS- z&{Y7gZ6NpKqA@n%^#yYYIH}70m~!r)@le)Gj80S5Rl7x*W*k;qH0^M22Kt>Hku;-u zhiih5!hUCC-*er34Q=8wtN46{Cm=tkiMzwg&VfzKs9JZ7#R$0zt7FP_^tI58t!9I#~4FHTg7t*BmqamD8Fts!jeca{jAPS1Sm++5vUp%-AsltvBJ&XCd*#t#=KAh*(tj z4+{OmuU6REHLu)=O6MRdiMWU=ah6}MfcRe!6a4CYJ6|bD3@pT{|3;t^G2`|hNdBWB zSQl_|)7y87J}D*wdPJY*qZ?*rKb^i1uuD_0KReA;8K^GQuM7F5^3rdbv z$>v)Y%5beib%N@nb;J%PBB>#i91j8KK9of9P&ilJkwv@k43v*aUgtf20u*~_C~|97 zC1dvwDmg_ZYdVN$Osn3zxK}4coFwqzET^4%x{J0R?R5t0Ei&#*jqR1ZuPz_BVDTBq2`pgZzSv#|;N z{9erDAebD~lF9euO+CJJn5}tZz=PEAHnQgA8hT=p!(N(CE5Ukkc*y&C}|Jkv;G^PE{*YZ=!Hw1hV5sMrh4uMmK z35k37zs3W0Dg!2aq(%_4#tNI>U+q*oExP{f9jX3w-j357xlYK~?u=WaB70sE3-Sz& z0qgLY$uiurc^f=KyCJp;$$EQMvfLV%49|=&8J?j($t6S9)qim0s$H!E!79$wEyD8v z=lH`lL-An!JTG28k>dXah3|}Kw1^JLaqan>*~Z)Gf1vP<@r)MHA@5Jw1)SZAqDx?Z zv_vqAO~?&dKe`}&&yfL}O#AYsfF$+nreJff(+u^GlLj~;ZBhX zN=o}A*3b~JOL!I7Jdn(OH&nZx2Z|ixbvz_<2M&(o#bOp9T-25%r41(Ihu4f#yF(pBW?uoh!@mdL^eydL608EHmh&obC-D? zkGg@xqe*kvHz6Gd0b3=c`sOg5p37qn;yor(!y3(_OL{v%?XWjY>?Y)4LYwJiV53IS zohAg&>86Nos_%}8LkYIgY0#afJD1ue+5G%AqLZ^plFTkSQ}z*l8F7ZUd992kI8oQQ zMA|p`H5&rW$T1g-`Gd5cG4$&Lw&+Ysh2G^$EMl{ z(#J$yAW)CZR2LEB&R|Oc6+0vg0r5*eH4BH2#(t;2=R_DO}Behh4cmpK=&ZkH#X3loa@s<`?xokJPUStfIc6!s+k49V>1gG zTr@GrbioOh^A~`Rwa{1E(-8vHlNCx{K^-e)UV$Qd8z|nGeEO8$37D~2AQ#T&q+Oxq zm^gQ2gJzHG#o5x=IFnRr`D_tp07+v7G&kguVL_KvLw2_#c18GBXV9wpR$K-v!7 znw=I`!p>|2JF^kQ4P;Z+dW!P^-?MjP648TZSZ;SV?cKCxW9(-r3vvd@36nd64DOYa zW>(MSY)_WZj?okzfx~cgYag=r#Tazo3Y+n_jRU2fP%X3eooa)%ySsXc%SjF0R-qGP zhL*{u+$q*DyK%N8xS_LsuM!TT`3Gqq>m93-2_G*B@ZgpuKcE7<$`-}1C?9{aGWlUV ztcSpglcgAB_#q(7kI^R&wXWSaQzhd{5?#_q*V*9>AiDkx&<+1ZC}uJ55s%NQ;2S+S zed!M-b`*^`D)G~rWkdFd3OJ_?IX3s}hPhw!ag*a)$0rY_cG_e=KaB&Yto;H`dcahg zMXgjEieIuF{|c4z*Y=wpAaDZUa5ImCKj(A;PuPjM)h}ra9GGqQ4>8VrH27zr5XWr(e7 z|A&wxJlZxcw|&V&YSm+{`&bq-V^NP*9&0HmpS282d&384vv1X&KzZ&3RKQGp+IsYs zPFpopy&TMwCD$%60gA~cPEuj}HGvpTt5rABrk{)B57VX1y~MsJ;_6-!SLIvTzTG`} zH9)9&HR!;8aRsXyo`q>;4# zSC}<^@xSiMRKv((v{n81nk!Rc*BtBF@g)3TS0={6*CxiRy$~_|VQq?*pWW>7S|V*3)IT-(=bd?4>1je#fwbv@LdU+#Qz(UzL4L42?dW6H7@*bO{f~s&N?{?hh z+KSbUHR}_mIg6I{sI5@3g|b5C9Tn>g-IDNlKe6KokH?eo(0Kkxj*pw_VL76eXVW$Z zz0}35&)W8A53EyE5GxNXRll%b^ITL=Is#_~7$g6-kwq(OzoS!bd6R5?Cy;gm%$(KE zoMsuzS2l4?%8dVg+cx{8a+@zZGLd2F&?si(ir9u(qf)81@!PQ_f7*<`4k3KA*ec$) z6&AwV*~%>Bs4tm?#KA6|Zfhpr*3s=}qvP{H1R_VVR^6zB2U@%hA;z+)Bft6`RUju? z;dm4At5kglwZif`AAzZEn($|Ucf(V9l)ay=p7YIf&Y(;}g;FmNKk+ z`Frkd@mnSw>wTLS*8>c7Yjwed8TuVnyabcp{oR(LQ~C4dISf@e(<^Vx@Q!kz$Dzjl zguTR)y}H7-=YTJ{O5oMFW1%8`g;MePUSoW>gek%x9E^^C@HxDsghy!82Q0qf)7c&1Y*owOh|r_!KvnFpv8m zr>UMm609KJNRMr`k@_~OZWP%`bJ|IZZQ8b(kWc+}^CmH^vs-EwgIEnA)Zz^0%MR)N z?cvGztHUD1SC6Zv8si4EC8^bHJ?2ZZl?Pt+e_kY%Q19v_zBE4H8dOFeqv50F%xW` zqrWsSlbI>5I&1Snt)Qo)w*)=Kbj(JfPYjArPPP(N$>mIm?HEvLun&d?=!v7XoT4Y> zbf}gbhaW;O6GJLZN;|ZB=t@7>E&Otei;9QUdUAN&aW)SoNT_*~riA=jX6F2w6Igvyfjz z&){0upLiCT7Oz#3ef;4h=g#t>o*XzAJw}CB{aaFzcd@Mcoh+;D_uV-sNlC)BKUTt@ zXy%`4&BQ^K2FszNtvDg6L(s)#m7QcKGGN+SPv$p*t|lQD;j9;J;Oi-T1vDyp2qKO8 zUs%?`jua8~R6CXV|ChFHUQMU=*Spc$U{mi!)mXFKr%#`zTKJn}W6Coa>@HR~ClnKc zR`Iodvf1@Py0lF^;}l{`KIZ&@GG54gw0br4TEx17-U~mJl&) zS<2Fs%toKg<#6t%5Gx&wa8~=L20U8MglpR-q%yq)7uH#w!-Xlqg>G?M5?qMF|HD*% z^9RdA&-kL}?ciZXedbY7#FmXME@6!ud%*YXv4B&ma!qkc%a%?qSOk6*HC{ z3hGwzC%U&X4sg=|y#rEx2+9!Mi`<^#6(l6C>;fvhh1}>&ESNIV9v84qvQwrz%{;;2ho?)H}@T7TJ+Nha~pid&BLnTzHm@;UZ2wpH}dow8@q zT7Y2<=P>u3-G;WfRO!)AX$#Wz`Znolsoo9onbp@3u)l6|oDPSZ(#*GJ;9H3;-CKz* ztc@PC#)}XnLq#@=RI|C6HSf%}dRQ3oNZj1TwzXYk^b~hGHo(|bccm4(R6AKKBOb48 z4_0EA4`jBpyO2w;)I9-Ig>iO_$3B#Ocy)&$zDy+SDXDj(L?>#c}#Y z*rx8S0=oMW{7bE^{`ffsQz1^lG;92FEyr=c1%dl5n+Ed8@4^Z3())YRwiDX8#kcpE z126kSa>Tk77~G!}8t2b(!+Nqj_$Av4a!F4+Ng+|aIt(}zB&SzQ7TbOIvcFW2K~9m~ z_upbNL=l}p_^)DO_5C-$UyI?!={k9EZbaD70mOgB-2P6bXL6u*W`)D6zgtBSRh{fC z0pL~JjhOZyN;;RLDi5=9j)s~8fPZod5I?T-`0k!D&(WWM*}p^q#Qxv5AbDKpLvg;0 zInL3a#8D)Gj#o924b*WI zmf?OP)z6OvIEUbL>e{4zgIgMI^h^2K6h~1*os?6HAv(2)=M{%k6ig1OAl0|wI*L-4 zIL_dJYEg5GxuVO#7H3o(O~uw5@qmr;bWWm1={(AfH%2-K&O|t(TAWnI@e;pc;|&>g z=-XJGL8&s%J2aBnxIBPo7QzycWy4o<2rPgRdMw!)O7yvR?Z zID<+&W_m&VWs*L{PoG*EZba`*K^Er)oTdYiX*7p}sOc#QG`~pIZ@wAVgrTZDgFFS| z;__6!d~XC-)zD+N=&l8K}sBgDH^hXvOFbiibQeNwI@$v0IEA#dDG0DV`VscmjR%{xo0y7 zC7N4mM80lEbF*#RJdntA|96`%(#8YT<`-zb@4tkerWf@RKZ=MQ)p$|W=KJ>BqOCR6 zxR-h&yVkZ2EY*5aB1uj4p7_0^q$jZ=k1EgRO_$te(H%|1d-sQ_)UIFs1gZ)QqZvj3Ey#2Bmg#QyU)PBNAR*aNe1YJEHGCvg!EFZQJxn6~4OPRS23(%>cf5BXk^(_=eke8p5S(%Hruti&N5Qi>>B`HjijcF}CV$Km!m9)DI1e}3Ea z_;l}Wbt@rVZrYNmQ5PBxBAUG!dSGtIN)v_eI{;}V~v zMwI8#$3a@NRyw%uPc9d>O0^T zC1%{xGYSpgrJ3>9urz|TjA`R$eCfoXle*IBYn~Xy-TqGb8m^rAjk%s z`yy%i97zs1b>+a0>w$HV;=XX}pd!a5$#Fy{ofvdX?;HCt@#6?TE%0-69iab;8Wc41 zH=J?$Q9-xxI~alY*a?;Jd)oZ_+EDzVyx_S)jQu2y{u87gzN``u_^hWI9pCouh^&R} zkT9T={FdX%cA}ju@vRqSs-eta|Cj2J{IxvqrXqk3)vT&&4i30o|JQlWoh5mc#~%Zhob4NEPuRyFt;!WYsK@>lF~oJ>S1yw)N(VDl3N zq$%8t@e8qOSSl8zkiL+-qWO5^h-43o12G7Yp|~cE3^Xzo&B1)&@-!Kja}|ocT>;p+ zls_>Y^(6<{Dix}tRRxP5m(fSZx4c9;Db375v>KCIqRac-;-8#81;ZbTAzUF-#gWjk z`C%%$Ue_5L+4940$`OiWsqr|a@U;rVSX$z?ua_fVAw=OA0P)IKEN|8oX&eD~vxtk9 zlC=+}Ka-)oB5u|d&CQyUKBCV5!>`iRG>!xC8gL3S7{#Wh3|TBO1M;{sNwcP>=nDGe zbXm!wQ`QWCx`$aRh>ABWg^pK2mE*b2iEGpBnu~<@WFfHb0jx#Q?+sLMk8!BQ-Cg+Qo4<7pr25A+yRZwsnxR zM`5r`#W3Q*yeE!shQ&^8@NY_$N8yDABOOe7xS$sge${pdi=D)FC+ns=@phrG8n|1i z!^ju=oh98%TH8H~SOamavk2Ai2a8Pj-*tdb8EtS&3E zZd_d@C#pd0xgA<_8+;1a`zUfp3lA&Ua@RU^SE{`HqrB{`?~=WB(jgqJ;6lJ%tlUd2 z_i3!|s}4E(@cnvqKVd=67(8yi|q9< zFOI8`SKd>>_uV!5`xN{@m3>gF4A(7_AI^nMiSw4EvX4~e;}lL@@JC*eKk}@7l2k@* z($GH@$!Ce@mI{HqVEcKs&tIs|U(n}1a{JLYjdvF7iwlc>^3dW#&_7M_s;d@mQKu-D;J#&0I%(Bll^K%wYpKZPxSX}b`-z4CGyVB3h5&CP^V7H+=_NNV z+_shj7d*Le+ggh*txH9I#_=1OR3_{d*Dfhs zjmzoy81iv9jzdW0yLfwO7_0ot+||ov!WdbpB84%LOp1uJ4g1x}lOu?5nJ|yrA=YlE zc*K0~0NmK2!lBIewnO(Ipx8t7Vxd<%tlSF4#cSM^G1yh=;wOFTL4&c$L&ecz&O2=6 znO~!oT;G9njp(xhDb7ezA!T*OEK3`MF{?g(VXAjF7WkRdo7)Nf8%7BH=c&qnOK<6z zJ`aKanm%nptgmo-LP#X4jk6T=cvbbsH_A`GhU-f@x|QMn68N}Aw>5%+pY1B%aTmn@ zoCimO)Qu3Li&<<2rpoIi{b#Mg!yKakY>S$}eSZZHC2KpfwrfNYlwIT2xEgt?TJsL& zr{6*YgxyZk2W+S2ns=t=YIr1Su7-$YWEeH96I3&IdsuyUhyCsZHMTthmI<~iB8}Hf z)}CbT>A{e|ad*Zbp;mLp@;i8Jh;JOrtbcJ;pK((AWJ@kvYb|?lU<$GatI8*HiID^O@3Brrd z!{)|yE02DjJIS=W2NsZ=6gOubB~*`tVmn$PkdCrrntOX}`K~vL7#Znu^0CqtnoIpu zrH-c*mkxf$Lg(kk3UTyPofub#>z6)Uv8I6gLkx^+bM7}nN^rUBCPviYdV@dj!4A%0 z73ud8=(C?0dlu3w-f}VG?a1H3GUhFBdgdEAL^NTwaV+HD;0m#4b3G?&G?_&w!KkHA z#DmhE%8$&gC)iOZE+J&?FO8tKCmOhIb6Gs?N~H$4wZ9#d?pl6rUOn(_lj0&L*Y8dh zg4r6Y--$hrXD^TD!Q7~?-N_59vqC!mq;a0*wT_XBt zyd#`P(B!Le>iypo`InssX8SKOt?A_F$CC!X9@17oZgm^t0y`h*_JSC3&?2E*cx!MX z2R7438&vZJgY#|>NcLRTwq+SU~|9T*(rmb_&-8N5PXoQ z3$37uFW-f#8EkQ$q?_V`)xcB?Xk}|_D-|#jVpL=yXDJu*m$7zkdf};CIz=6rPo4O+ zcNjhHuiZ?i<$AK(!^xLg>)x5ZNh3M*jXg7!7`u|U(CON-+%+)#T0)t3+gdvo(e}|x z|A|*mnIt&f_N;{+pz8pJ##`+cUABYh{JK_+ZfC7jwe_nA>ku*QVYH=P<`D8H&D zH0MhwGwqueSVZ>_p|74b!f%Pt&AJ+!?E-M&M45f;Tdb7dR+)Y2*1oke`)Mus4$Qx! zKye*#+_0ZvJtM;JLipVpAx2(WICFL&M_drP#dsr^(>t(M9>5{hK`J9yt4poS5429m ze&%4sjElfie!$}PLlOGzts3Ev%S<@zEfp;-UMYWUtd=4?433A@2oKk8bp(W3D9c%} zl*3sQj}&2d2)ow^dnjU3HAWl*a15tc*oTYoSO|};5&lGk$HDP9Lc&AnV2ako6zk$o zxUBUvmH7o_uoA~nwPx97CgR<{WFl@SNJw#7?q+G0VIi(r#!*$r^fx)9!c~#|Nr;56 zeQZd#9Bzl%;T2wjGDeP{p3ZBK ziXp{H{0h|A^&sOYru|Wsa5U_WZov*LQOZ!wH*$qH;21;%*wx+v0gBvMtg-t!?A#}E zCHxY0zih$oS6Um~qD+*em6{1HZfY{BSHVuVFm9P+RO zZ$i)bP56_YB%UWzv={dgdsX7Q5;dNGA>*(17yD}^oC?oVTk!mw7NJIXHa4>Nb9SqT zSpyO)I7A7!{U@!9Bk zqNnQ2R^onqW{dAozgdX1O%oB#P(xFK2#3I9sHzy+Tm{$aQ8slb3z{g`UQ{u>Wfdd5 zioby-LI{`$syGtDQGP%>%B$d>AR1RYXDxiC-m(zZBSC4Ey0aR0DNYb33k1 z+A&`@<<*XB)Q)Ss9Uy;XFYtD>x-4G-`}4)@I)@^V^nd|#pnx7P+80RRzr{MTjy`2N zFHswo>Q*0@;VU434D>P$bZtW5txE^5H~RHG?#QbYSfF3uyGcl3B>?`(cL=3i_irm- zAgRzKNDwfv0{TbKmh1UsFw#uc>D$~_@@uDYjSu3LiYv%1z6vlO#J5AtI=@PcSG8cg zTC{6~{Be=FB4{tm&19B;uXs1ECX)}Gcc(zT3fNxR6iG14_1z?rARFP`SPi~XpB|g) zU6eVL8!Na;VJjz|r%K2?HOSbMLp8QRnI@uIciXb{A7t1-%HPrH8agk#l_YHi8Q8i} zGHmoYL)R9Yy%`@5%RA zt5y=X`DOILi}g)jEt!O5_RbuySB%IWUIolL@+0KH)v`(fGF7?-v3Z(YPnl zi2bPSJBW#r7;S&GAFt-xFEiH3{TnFmuAAWm>;Fi}>KaLr6Lno8m&_Q-YOOD3O(;3{Kqi4?!J<02dN-S2L z!iiLcKQrn<7EJD8`;RG^K+z_Q;F87|Wg)WMd>27WkbW-*EjH zuG9NAnh|V_#Gj%#J7Vpe?f!4WCZBG1{L&JHPo=TZ?R*XGBj zSn9^G)P1cxSiZ>pe`Ic~Dfs`)Ao?$yD}^5~GH>Z2xwtA?dHLDaj_6Sxi;B2`0zPiQyCWOj4qBc|e*^eXFX_p0;9t zz_*$24o(v7DOUUaty3j@myUe5CWmHGk^~YQfW5_mF+$M2*?nClbb-2y zmIOvOi(d4D=$-$>_<*c8T><)$)fyiZX;IU4Cnq#Q$+j-gA<7uAks7y60i;wv`Cq7AJ%Z425^G6p}VQD3PI zb!n{(-M1xWDB<%zDnl$TRb|M5(Hl- zvcKBjqCRJ|a$pQ2Oj(l_wOryE!@t*_Zu@Yi7*$||AC|LdNX?QJ_bcMr5(kCnKWjW& z8dJdYUoCi^uN4qg$o?(c)$>t>=;fAFp`>|VLlqK7*8ZPfh z(XQQU~fhJ_=LvvC)p#agUxom$u^&W49E<~xTWCVfb z1FBF!_2J8WbR}GxqykzGI?w{zx==&7uvu5awF!G9<_-jlXOBeZxmKnR(Y(_zexPJk z=V=ihCK8^rhq^)d~C8igOQGzt%<5V7rpw4Iw36Xv+DP;-)Hsl99* zHn^9P9J-BrDM9C1=|g|JYF*XRmO=iAYeT=8-2#omazXl&8r2>ZN38EwfA5BME2D)* z87-g#-RCvkubLi6VX|PYqQWHI$HO5Z59HkklLbN^sQZsJ*R&OO3+S&{DLk5(E67w~ ztwO>ar}*eeJQ&OoDi|qH_Nl7c`Lx>hG;Mo^X{9DVD~km}!$hAk)z_)$b17Sw!u+5T zp4ZfSzPbM|D0{ufLSIkzi{kvET7}PxSby9KGX$Q?%L)?{TOMF_fbjul2R*{8D*jrl z@a7f=H}_aDIgAeEQ0-0C`XWBwJ=~mVRpZGAPFd|@-KBeQbRr^doKI6x! zH6{7;6gCCX^fSU2V$mm!O#!9^mC!d$1Nw4;PmBBMWbc1UI5F)6hps}{zvbi zBkgRt$uHAc?lgoY?%<(Oa|iPf{_q^S@Q3gosB^KZeQ@1@vcm;@EX_m0J8obI@mT?yMTEQ;S~MPa~gDb`BY?%qmximxT-(X_XVE^%KCtdSHC=H z+9~MJoVvhjfAnY%{O}zYr8;>VR2cnP_IBsTh0&n(%L4$M!tqO8a#Y>f4$@Ke_duz? zUn`3GyiX=#Gxd6rvh>R>6i*2UQ#8h(503HYA5!#3Nzu+2xc*p;)QMwXoyb7ll~$IK zzREhd?h5r`HEOhHwW<%3JLUAQM?;SuZQTS%9|?W;8a@8=)Rewb*_ zB<%cN56c?s=%o;a^cAcEY;q11_kJ)UZJMK$^D`7_2SgYTfzlm5=0v31VRAD zTkTzE4%7dpUX5~29czZ7C$|zNX_Lntq_U0zgPjxiqqvTv-bs2Q%dJSg1FTpem$=P{fNg$wfo~Y7leVh}oko8LfVWEq}hV}r~UgjI+rd+^g z&Du1Et+0mLnsZjakgUt0-w+BmHe+oGD=dgD(t7D;KUfF(*?K!s5FfZikYG{h=(=re z{qqg|!2n1UMEh+|$X`)V-F8%0vjS?Xd_w~c$KfED zVm1Xh)21ZV9RxLq<@cfB4@x`u!tv zg=peU?NABKt_(M_DmxlF4K&lHB@H`_?}zE$=OOxo8x&PLJ!6O4^rT@&LUE+-eIBAe zcvuq!uGG8P45y&J9@N*vFMhHxcL4Du<^hPOno`q`k3%)yBr77W9&lQ2$BNC&jQz}J zCQYeX6&)*w-7LAHxH5yQqAQc8{0eIK-F>Y7aN|=Hvw%izR<$WrBO_h@bfWX)<&j)LI3PNy6q2QGdqKlJUeNME6noQ{Rg@3PJDLH$*@k&Nt$vB)ThYv z+8^|XsH);IH)DUXxz(oB6zIRP+%X$H&T1nkiL~Vm+HyuCM~OsOEzeF)5F1gIPZytg z8CIuxNn0E$l^fI3?JOL4o8S1nD#MC&RnnG!KI`t`)p1+0ps2a{ zQs{r{MracHgK)Qna6Vf$ZoQX;(V22n79k+l?9BUoMPTnOhwQ+osTz73$6{sKt~vB3 zldZD9KvYEvg2w>l+lvdV-Q}i?_QxCuYT~3+n;rVJe9dcC(}p3bBkKG=BA<+*85wPI zId(TW??%JcX2#A)==NbLwPv_l!=A(jHi8N-mY9AqdIMbC8XjHCE?aUSmqKwOkd2=1Kwa;)5m`p${SrI~2u zLmnTf`EI9s8l6mok_x%u*^~}b)Rx)>Pc&+c_jDyrr=v6cN&)KgG(UTsnTi&nwDocI z8oF7cn+4r$=QT$^=kOEVdbS@eUYUxX!j(o+BPw>2>)1K;>%^5PYPNG#q-Tb>Ox6+};`3&ClTZ)8;3y z#R{D(CJMJIyIrMjrxfZoA8F#Nb%3aM;hGHkxLuRHE^EBx8VK(2X5Oiick=Tt*Qb?% z#(lS!T#(`1(H6w7QBG%!x#lxQ6mV9%`#nf&d{scp%7dbL5GLr_OpJ%U*N-Ui5fUGD z75g!%;e=U5SFiSZtti$)f#UsmN=kQ!I0!3BccX3wFbHs8m_hfpg~=eGee)|;zg0KN zcMjdV5yjj1DC0S)-Wr5!Gg8d2O$On4FZnzKDB+Y`uafKe`JxA9RmMwFx>fSJjJ?1m zljBD(inO^RJ8Mb!gs5p@pM@>(RfZ#J5P?SXI8?bUS}; z3p6p;dGzmy;vFd7l@2bG{!TTM{zj?a48nO~QARrVqGSv{bPfDN3T^VLKN63R_=zUY zM;X}lf8sq^oIzE$#mN|a>Lovg;4?3Y7M?>7Z$t~10FOY0z@Ni@ zpR4W)!b&Js@vd6!H!2n@qtG)f$;f7ZNiqsm3w{ocyl%|(bJ*R{SctETh1!%c`Tmy|5hj!iZ9! z3t_tJMfu6eEw4sGv#RA&L^K7Wsk&sPdqONOTn}Q|Baur#Gt#>KGflUDbbl+E3RjBa zN+@P2B5RoKyyqw)tIZ*mIIN5UVVyGy$$CRF3iFZxt+-M4y15;a<8nwN_a$^kVjkbP zEpd&H!i^c-9Jw(Wg#})60R#)ZB%xY!Ekd;_V^P``dC8kHwlHlsRYzg5NEbsueAesJ zVM$sq06|xmDD)~$l+#RNBD1m-^6N&b1ZVU?xLJuelX#1Qtt#Xy@mTqHS#1!SM9~Dr zas^clw>j$-9%FR{sVm9eJJTuL%=$+3)?^TFSM*gPv9c7Z>eb@0nqO~ zlWBW09iDR5Pp9pvv^`DgGi2|La?r%;mbRv32%b&r*R$lWQ`OIj$8-F8K5cxI{zBSb z@SZHs*g6I`8G`j*a6JSss^Cj1_!7TfP8%PkZ%Eq)FL+zVUgSwshu{^Fz5>CkX?ryt zUQ26JdOdBgrR{Z6-yl1@>3x1nly8x?F>M>u;qA1&nKu4?qt@qlMDY$3@22hDba>Bs zy`Q%C()K>7ACRqwu!41vsJls@KTPY_hvaWkaeetHZ6A4CSF-N$aFb4c?35ov@QEn( z<Xf%oXdi3!jVfb11(6oJ@y48Q|i+8HAyJ8Fa<|`gUOk*=az= z`ekfDrV<9SVsaZQV|?kK(U(3MyD$?iICn?r28noZ#s+0IS56j>SJeNM6&}MrGcf5Z~xZ|;wm!93j5-)ED z*L5c)a}dHE>iw}TamPdH&Hqc>5q8^AS4~Uq&2Wl;$WoebGwFhug+lgB+v(I(AH-@eU8f|`WK$u^m z$^Mc#gOjD2oi|Q9DVdn(d{2Hmf1p|WD?7-3B~n9g?HpTr>*jnucCh;+rJ%Wr^w(JN z{92?Pu*~Tk+jRL?a*xI`oxD6K`5)_h{7qZBN4MEW~4+228`i*Uz5aGdVFIRbQOtCL<$yPuPf-uess z1=I3p-0-?FmAO6YeRcZZLsOcY>GHH z<{}Z$l0Im7*Kdz?L56vWGl%Fpq;rS9385lW4(8{QuqHA-tD_UQgna*)wm9}3vx*}| zVrSs2%2pN}d52gLN@hv8GcrDR!0K?4j-XW@DyG7$Jc1eCO)pu@s5@;@$oSj^qhoMZ|Km2mI>*B8C%UF3Lu}&599(zJ_B1odUPeQ2(Zp*X4Nq0k{^A58Byp z?Sq8k1gblsG5ntQ)9tefC8L^av10xV_T0iI`;TJqVLLm?K1>?nceDhs{LxNs#6tTN zQEX~wy=+rb#b2QQivX5C>JRv`C_ZXuf3=T9kqqG9RBa<2c9U&cYtP;ej3rycSipw= zhDDmomfK;4mbEj5wkWzXL4F|qxE;vv$4RrQW(wl6#b{}tw6k;Ulcb5YXlYQp=Z7zc zOZ&7P7r8!d(cJ&2xfjrg3mSEF53X|5tHVt6qKVUA^UJMjLOH>6W zpd^D+Rns(j2A|K`0i@VxN!P$r_!WDBP%S_xS#Xpj7@B8XEU;h0{CPW>GJKwN6GVlQ zBO%4<10{i0xGBs}AbUQ_08<&`CBJ9~`eI*r$)@duvT$h_g0b@VAPoL8umi5tW3}K$ z3m`7zfmMQI)HdxC$CaQDltG2gK!eZ&VwR zfQ-m2yHSy%?o7q-iLc7oW2c0b0HfT)h~29Zzc(3iFq2dbGpWdAAqxsp-DhYG_(`@k ze$oMZ1>q$zexhM~Of-*CGpNbh6p#tMdP2BK;!6QD24ItDB2(<1NL>UaY3*4-TtG{* z&1i{`l4k^#c(HpUyC<@HqmwaOpuvD7bzmfX10Ml9NgO1+;NB8m!o~$qBnv2VQ2Hsn zdUfPq&=J+~iqc=9rLW3PLFh;afg>AIpd+UX9eGUvNuv;wNB{|lNDU#;JJ_e8+_bIi z6tZ|kXcR!gM-+~bSf7Sika^EbzDN4|DJ&LLvago}D9M7BG{zO|U4 zH@*9j&{S_;dVxaM$ARsKC(fH5ZDME~w(D*)y)dIn+Bpc*y~zgP08Tk{5c(L9$jDMEYPyNklOu4R~S~dgH(F z#t%^A2aqs(TTRNLDl-&HFqMnacteozFED4WA_Gn~}F$sZYSS`~+U&dh2kj2pgfv?iwF~BkE^du!tB5|^u?tsRC(Kx`e&=-dYWJYDDifk%mATWG{ z)J*sCGn6rdpWrfllmRGnr9Yp64f60ZFnNHpoY8F2&xUG_AR0g$p)_g;s7%(e7w{H7 z%D6fWEVDOLWKe_fn?e3O*{`4;tmiqHgg)Eq?3bA}-`NA);1!3mKs9{k^9`tmCk|A@ zn##}X(#A&_HK=AtgP@urNjn!iqw7U~Jyc5^qY-km)EO;P#xj0_*6>lrje={`&Y=x} zIX1M~PO7~~?Yt;%r(PDY8$w7@23Y6jG?Ub8cuFjrK?Ze}dJswR6Pek@a z6rPM2Kh0?}o{H=#rL?gpqwqBM9@+~JB2FO9xI=JIxHGNU0IHJ(+5rMjgZ&8l0Tp_h z#V{RR%U-muy)d9GC=ljnX&@gEAHCxbDDeRj9~9yvz=sMze6p<&AFv^i9Uz`)EZbYW zOg^Sgt`+(N4s;p_kcRCEm23t2bO>NR07FlwPZ#C``tuC6Jqs$>9*hU-b^LrT4ay^s z=UL%AKB~_!sy+bEws>LJMaJjZXj*tKGAN$o)qO$j0RDMFFb}q9@z}oDVz^%tMGOSJ zL`ye#OJ7mltzaM4cR@s;KCJJK|GYudfOweRGPgW!E11h5|#dVYQ=5Xdt&r9pjEazq2Tk&RGEy-^6z zBK`QQ>XMv=fe;O3AB zT7xs?aqR(lxbTlfX z8CYJ>UMJ~Du~2Z*IXa`$M=IcC4|$bDOeV%=WER2EBVg5K8Oh#>&M__{l^25tEN&s4 zkST9yknIAV()fw70a3#zdDAc&Ku{$SlYlESI`+rVfPW{%t?1KU=lra}P)y5kGSB(D zcyY$g`b#3GDnhA+#Mmo^Bk&jQx7u4X{qIY>Zw z_4a^ZX92K*!ZX0po&m&st51zf8o=7^l4OoGIiuyGUk*JeET1O6t#C#lomqg+#sHAX zM;WUCxt-DI2EbAqU7cg}aE#{I7!sB?sClbZcr``VWNb|)+`-`=cqKBzof_r4GIl4h zH=}$vqilC)Vm;*^<=vaHdop$}dH0FOeIS{!oH^lk*!Dk zda;FU_EKaoM)nf2*~^i=Oy-6bOZ_X6ZHVj@7WjA7uJeF(v(_*L2zze-;DtCGz=%GgJlCE>NmUXAQEWV4S|?vspt40KMpPvdf* zs+?Ac&(z(|=-=m=^16263)TAtKl^ZDI~)3DjnC)2(y>%Vfqq#E^vkk-W_fWg1O&h( z3qJ?2c(OEd{i{KY24aZUxb9C1D zC}RvSmoppJV571&E@{}M&S56Od`+jLTV6ozeIP8%L(M zlLV@rpmt7(+nGGbiCG@VB)mf+{${bo$TB-8XMIIJlL(kdmcB5^hAZ#JyS+HG089qBadAThk|5XBu(+?lmI zv*9j;)NG73Xvpr#+TC3KX2|ZZaD7lI55n~! z7UOJqI4hyy5hXrC;-jp;+3*-LEMP`|r+B4$&Y}TG(afk0Zq+n`|WqufcsO9RptUZ@q5;jHlVPu6_&)KwUGohZYW={8J;!d44Xpo8zqWECqcIU#7oFtQ>N*qe! zMLD}D7lv_Iij7Fl*PxFyCqEK^!JGs`XcsfrplgB7y3_mZ; z86Rbg&DmJ*@r(u=owFIq&|T(?#)*C$RO6AIb9NcuCOD(Zm2o*gC+3WgGA8A0k~5mw zU=wmSvpRHCd!>f%N)nbfB#JJ5|Dr|T`;_d9$oiC~guW%~TN)qwm6}nT{w3>Ivi_x$ z!({dSikwZ(*%kDC3VpXJ-t)oj!c;YBDh-*&bIXP4-p(0HoI&DDT9gY{V#|WDN-lXH zW_c%Pi)J=7bFkFIc8_m!b7eTrQ^q`gUWIX9oN+Z)D&EOiz#$|hqcz_dT_gHypkI(P zKJ)pu&>3B;jBELM9oOOFj79hWaYnNNK5{m@I$BgaN24{zM=QQT1hlXgN!B<&CAVOf@Z|rW>$g$%Pwzp5LUzn@GGFE0$ciC1*G0Y-!GJ$yId- zO5Q4>TOn$~kR=zEQ<58VO1zE46**gx3oCQdA#PXV?If8)mdFylb0+xB?y(k_p61b&getYe+bp4obma9Zy!0MkCpK;KR?MCA7y;X9Xn?lz;|_N2k3Fh<44Q0UUUU78PL zy|T-cco~V~@-{9X#^<$BO;F+l5--o&<@qo%Z)5W|K5rBAF3G`bk|-uYF*$FO^WloT zU6J=g|0#LKc52?HZAM-yG%4&D)&3%_V1^ILyme-yV2grIf4Sc{RhB5A*X9_ODUmH6$*`+k$*p z$iU=nVcs{|ktO7*Yx8z(en}WrvXLbl#gw>C^(@NUb$MGvJ&V=s#d+AXGdj21Q66FjDBzo>Sx`n8yZ!6lczo>A#%DD!OIp3R4K zUe|Lt?gu!LbVAB_0yme?8 z$Azzwjbk3aD+ce0!TWi8H*fF5;DfxqCkFOGwfLGSjBinVLdnLLYy!nU%-e?|ZDa4` z!zQu$C~uqc_7QA8RyRN9-MbZ0bwBI&@NbybVj-VivS}ro&TxIM27HmX z&-3;L4d_##0euR|7*T3Qb&xsyn_03MC7W3~CG;&&s$aqS7OY|*$i6yK5Fd7Ks% zY!r>SRy?nT=bEUEX7?rP{U!8%biqa!!kB`MDfmi%sT`P(6~oI4c4@&bgWjV0!X z*p6$_-0RfI2?d(~|3xLcu4Ic!Cxy#ZcB1~7RItknHVFok3pTM3t`LLCg?O&hr^PBi zrC?Jie|^aom+X4VPc7I~(YCQG3SnBorm5yOHog$1i|LGlO)uCCn9fueW)?Ja{nkBG z_exRBD%h0;n+3&eRXCdp)#EuLpF@x57Hlp7Kh)2w3U(EhFKO{`k-p{?Y)MIZX-7@F0d%V&u$NhyL zrrvBz8y?WF2l(~6em$sP4;BteZ)ltDn&~QqYD3%bP@$X-4;SpALU^QL4-+w@V0?MB z&?7vinYFfHj}>e!Gwbn!J znTNhXJ=s9|D+PO{5MEWW*9!J>!Cs@->jitYV6T(?M!{b4LAtfU_JZAymzZ6|#j(s!Ix-`*|QyH2_s{eW2^(qs_cE0o`C8{Sv*-iPvo zf_+d39~O+yd;H#{0r{w4n+o<3?{Kx$$A$9iZNn!j^$Ap;7VJ~Z+zZC%V}5_GQePD8 z^MZX5m+~#EPm$!lMe9?vzD2G;7JYR46}A2|y8ZDsX8nuE`R>-6Cq1CZFbyo)fT9g7 zo*o7jjjTaX3@+N>qHIN%l~i(wN)91?Xtm@;DmkoZ7Zq(7C5IP{tl?0MDB1{0)`c5N zb_1*UjivI^w&7yR*~Mg!PJ?uM(WV!}jG|Dq znM#~V;*~|avKVF+ZAQ^w8h2fy0{ft7vx>wS(N&U~7tYTk;m(?Tqdb z{XJ0KTQoj*^X)!obiXq0=jQ`OW?b%Q4$|3+GEAAwrGzq0wr5pd+M{>hUNa$AJ8-<)D)}TopDNl@#qe~|_$)8k6Y)rI+B!TVif5pBwrI~5!@8nc@thK$Bk}p7 zJzoqjIIs0eTuhIB*GHWb4v{?uPp z;;SUSRy4w}yk4|d7+eJUxGf{M32%tv4Jh6$+MC7jRiEkI}?P7R`5!pJt ztHgIne6MKl6~p^Qd#h;g6z%=$Q~$uWiZB`HXLU>cyyUJsExL!Mp2?k23n#TmO1ZpH&Uk zr`}dopE}g5_0(6BFomb?hW8iNm&a`#28hc5xD2eff%Rcfz1E7sN*qk$ka`enVUP~5x8e0+M7c2f4?XIND-zOO=5UtO}*2+(Uh2a-FgBzKmK?{}h~+*K6=n+^?kmyFL{ z=r8w_j6(OImyD}tmldR?BEmXwa3tl%hkHeY2Cznn^+$v)!U@{c-f}u zla)D{%q!~ciuy36-loKvZOUu63R9IkmE39dHmyEP_lGeW$A_zFqx)IC~E`JB})Ed+wbX z&D?zF$~InX!zoxm#x}4E$i@VFur0}8z${Bxcz20Q5C(QuS}?l{R?azRjk2tqbIv*E zILcX8&XT|9U)^^!vUlI_`+aad>aIF<>Qw0Js_yFZ#FWznMNHsyV$Ap{Vp7Z|`F^sh zwvCV3s<6XN_KK!RehN}kW5#bXN7KBb>57=n>5Q21Q^d@e&Gd>^*S2XfTb=K4WV=Qk zZVdsOAZ1Tuk7Sm@SF9r7>F+vkhgoH0B=|li@ODxD1Kq`3zSm!*IA(`q?nun4u(8aJ1ja8)x}%afio~&)9gDf+v2sduLV+g;JQ=f-F?TAa3{ETX zG=XPgb|&V|#_V{^PQ~o3H$EH~&LQN@J|EML>vxpq9nxHg*@c+9sIpv&+4-1VqAZtV zb}?p`iM~RsCfrp?U*+^#%&x`U^;kIu-caBT0&m9bX3X7++4Y!RiP^1~-!`@?;ciRf zHWGJYb|>cUdR_Mvc#pt$WA<*$HHq8Zm|an~+xt>e}rZtddXE0?e)+9Uml z>mcb4NOz1|$GGbhrzSebt$o}&$KP;W;?^l{U5M`LGwdemZk%?HTlcu@5ih5lJr&rK zz+Q3d6?eVk)+28G?HbQ-?CKNOXwX-3eUa-IH-3FM>hHAuTH3xUI{N2Grhq zjRx!eXpoS7Bb9n2X-36uRNRe@+vvD|e*CtYV@%xMj@uZTV=T>KW8>a0q@L=GQ@U}a z8y~mvaW}!+I8lKU37izSNpUwhZWH1*Iqsk8Y-Y&!opDNBE2pUvor>tRxJ`?@>1u)* zahnpi88pGnxJ{4SOrmGSjo)VOF9mv`I$OzR6Fw(ybK-8U&vu>y=MgwRZu8@ALEPrX zZ9$OjmVCAgeYT4vx(Lz5aa$aBOO)->xGjv^QnFnZwjtwwq{}xNRca z&2igE8HwIPo^jhswmi%7wYAl!-=_525ZE5K?Qyq5>31R+x1FTl6}KI6+eP&5xb2Q> z7}}<%JA2}`CqC0{FSBiBww*^{d)21<;a-+YzFV#><-|+%ZWXp}JxbZv6g&k~UM(ath^_1jJ zA$K}%r{nI7w4ROI$+(?G>$$j{iQ74%&m;F_A&NJ!1A^M}7XkZ$<2ri>feSv{i&A%y z(@SyVr-;jOyX<@YM)m_!rQzjs#izW2z*V2}no?fl^m^R*DdI-lZupd&*epStD5c+7 zi}g3X^|zGh7NWP~c02Cw$oji+yU9p~_4nd-CvNwMem8FK2G>s$eHz;|VNDX&G{LGk zL0vaX1Y;R$n@-66V@`}S|yBMbIx09Gjf}RwN6-@1Pk=MHEp?pXIwia zYlm3-gtbq&4hgL3n6S19>zH`MbxK%=gmogibHX|&bobs-W;>XF?X2+tb61(|Wck1Y z%r3IDYr?uDtSgpwlcn7f;joLT-F==tlxGi=_DopMgzKd|dnc@W!g`ZupM>>FSRbPM z%JO~*>zA16cJmNCVY_wl<_pl@D;pqX1CSn=uz?9TNXiB$tUr$(QC69-K?$oQdPu^C zP=HdmhxG~t*ju9j`^s!@neC$hLsfub2^*TQVH9Av3NXAz0Y>;dM=H;eC>@osQ3*F% zdA^;n5ea*nJjWz#bi&3EJyr!6m#}dZU_Z|z6SiN&K)wLuy|M{XHUa6037eR3lca2N z!p0|TGRmeTY*NCe5Ir?vQz<~!9mr2_c{g#e%np>r5o}aM!KDR2LTks;|P?=Sg*`cyu zx&_K@VZs(9Y$3TVO4y?NIW6`%Em2NOP_;B+OA~IHa$26S#R*$ZPAd|&EMY5%UYW3! zzGodSv%@sZks1wilqpS_9i?GbDZ|wXTa~cYWVj|_YiJg~ZlPbT^*OFnj_XjlK4I&* z>XqZhgsn~3MsnPgunh^@MD*r_ZT4N^SeYFo$Ky3}JW*!H%j^U>Zc&a~6SgH`Tgh=- z!nP?#^6;bSc7N6FP?kH;xieuq6K+?+_-*HWx0-$rJvL!`YF>4FeX@N@whyuWbP48o z3FEhy^MeUHn9y^^D&>ACVO0q`MDB-!<~)4Al8^WzAC;n`Bs`X|V+nU$MLvPT1*0@CxA(H_y^Qdcgk51~D0{E*IxAt< zu=jext|sg{(KnE08?e5-zscz>l6ft+mEcaoZYS&x3GOD0sJlqqOW2Ks-Anih!pZy< z!i%L-Wp=X6PO)-4U1q0g?K5RBcRV+}^7@KNUvX#4>gw9ZSkNosg)%c->`yj{}T zC0%yWfIN$Wtej!A2uw2nk~N?Plrs(D*&<9J)xFrAY+>x@7b3HYO~N$cuGx3i}p zY1_jV>E=bdA==%G>ZnK3dU(+tY!FM@4vFTyK2wOE^7h*+X+4wH3+djnwRcj_(vt;= z0(!#s$6Ozl>@1e~8+ZLA&=1M}N#oZiX?>I4J(<3C7@)`jL=H^az@!_Lv_VO~`aj3~ z#m+JAX~yrL@(xzMl}Q_%v`XrF2z5WD6+hjE+$ZCulHk7@f z>CM=rjZMyU7t4&_g|eTzaY{EnY2%VMo^%tEHi0yO|AvW*o0PPPNt;C6WSKTO={G$T z(odhl4tJ@{E(I1$k@VE0O-b5Rq^AWIOv_t<>}6RnJ!#Xi;7XbCyNm@hlx}9yW+ZJU z>1HKuR<#AQ6*nhovy(Q5xVf@mZr+0XyYH^5Vy;p#Cu1-FN1?VLwfKs=rod|ivSJKs z>w1l=TCRfX?8e`+_GP_k~x4By8$$_56ZxuLF$baX)nj}T}tG<4;|e>8Nyow}?HjPxHpo`L;ariMlD08vn~2=3&c8Y6{J69aOEV;I!_b^@ zJQN#-$%bLrz~dY$a#PF=&)M*tA11a)=hmccN!nI)ZVResTfTab9ii&k&TvchjLaFo z5xJkb9ZI*8ku_;MNw+I$yGRoZ6T20+CuzHrwuiXAvU6|#B9#R+&?wn73Y%8Nw6SZS zWcD%2?N8eNq&wh;zJm%pNMKdcs*>(d(hel;P%!k3R{GJT=P?-?7x5@DXKz!fV|@8n z#oXAOaXgkvJuG{UB<*n0j$qHxpo~XVMv8VUX~!tqI4K;5!pi(LgU;~^9Pb1DXDYlc zIWD7)W7LVHok+TqNjsU$UYNkkEh0}T@)VJ$lXg1k&T#r<;i8A#&f3QD&hXxLHmS3- zh@DI7=a%8LkG@+mJXk+t`#H4GT5Vr<{nuB%gA!QcmV{ zO3L^tVrt5!`jp4mdy=waL7__AG>J|_V0y}?r`!y=A)lGD87Z4d;4E(`&()6eIep5G zhnCJx>1;LvbEw3en=2)AIh~g>eu|i%viUy06SZwl%1(rqF7PQAAh6J}1~3r4n6=z_OGrOS$FhwJTD#JY_2gT9?I;977Youfir)yKjPZ8@I^*-f#1UC4T86fRuLwEeC@q6nTQkleAIF zoubb3kwxybB2N=}hH6QQN!dI3$Xf1#A}CTYgnv^7n;W@&Fm^R&I2vSw*( zo(^)viJ}BsAlNc(Ez_=5S}I#Bur+~g($*&J+7ejo+9|Ldf$h`QKJ7ZBtyS9ErmaI- zew?)?<>T*;i1J;JL^~ncIc=TOt_y)|+EZXx0=uQHTiSI`TbH!)x1&!lht)kK(F2K| zY3rGGy}Yj83hYf_pS1N!yS@b0a{Uz8kHG$E>z{T5($*_&ebY7|(8VfkU|OrRL6RGU z++dPLU8PPdIUSO=!D-{~z;v)^<4dWu4NcE<6Lf!{!2P{ToSDF|v<)M0q5>xpI7xxS z(>9#INeY}q;35T%NZSYkCo6C=fve*A$>IxciUOw)xJi;D(>4;xsS2D*;4TG@O4}#` zrzvn6fmI3|owm^gPFLV`0(s(F;NDK#+XT)~;0yvU)W~S20%sCrbn6m{rTZqc>QaK@QBSo;}S zOA{_7z?;1+XB;mh)8#o^PNpk-3=U^=#^Fk4=#!M;x5WUxo4} zJa>MIwU}F-*S;oa9Irw9T4wHOUl(d$pEC~EqkXEhPfOd>v`s_%bhM*?dJX*>q<;hY zt5;rkruSiPg>KoNXqHEnya0bH?FTvY4SPW~OaM+Gdi)EEQl@jSRNsY+J6M z+pc`J`+W2WgI+OPJ$rV#ZuIH=*1xCSoHRTC=B8~<+RaPb+_amYHV)>e8@L6^XJOhF zq-`PjEK1uVa*@xe#Zt5wMRoFu>bNE8@*=l1ZA;Q_S=yGS-SV_?upC7zq-bT@R-|nu zidLm3VLx(rrlF`m}8z-Nv9UH>#+5n@+oL zk|CS8RyU_@bJ}g;v`+MCw>4c}?6#$CYudJ@8@ugkBW62dJG?+0w=<1%!(D0HnYLXB z>`ogoyAjxvwmoV8)IMiBsQsO)#GO>4sV|t@m9t$0@2=66_vCDM&i1fi*eiSYrEPE8 z_F?b-z~23`SH>QYu?NWHVA>9*T~%o8AsKr(ZHLl!7+a2{jhG{d9Sw~=CS#AM?O585 zBXA;Z#GF9jWSX`(m9|q{>U(o`lAN(Lc!Vfp_tm%>_veh?KDzFKoE@MD2Wu3eDrX0C zRz(p`s|aV(b~a4l`bTtnb``u+%bC}-EHh6jppxJD6<Q?+Lq)imwi{`?NfB=8^0<{Rz-<-aHW}YZ+nuz#8y4W63h-{)?s4zKz9tzX zrb&i7qu(f0$2H4PfaV!%ma*oU#;!%ih-ra9%S^ri3*8Bxjb!YE3Xp$jSjV->U{33d zwaQp)8UyI)HaUa2`6rSGCJ#nKwk;?qkb9d=S45nHbO6iGqwI+v_GN)yr_-_ zW^AAry;$1_y%$&QQu3oX*S`KSi)fah6Yc9X|;fyY5pmo=b8z{p9idF#Nci zlhJsdu{mtw%-CFZvu2Eg`5DG@^|FN-TadAZ8OHOBEy{$$@Z)ZAM%#~7p* zIi`9$p0Pt2J5Ifw$k;K4iVUxp{i9z0nE#|?PG#(5#!ew~I;h*zs$1348EHR*uCt-` zbE>8D89SG;^VHHi86)N$1TG-J10=p^;>A+NZilsWk!zG|4}nV=eHe0C#k$Pt6*_tl zag`qJYvK-%fiiX{th8%B0jsaU!)N4KaqpYm>PyUzIOQ&K0lW%X?Y z?u1s~MJ@4!+*5hq&Dgz+y&Kkq%Gm_2m^A?a*3@src-%G1QqJaCYnHX<**9E^tP#@! zftK;b%Ub)aUi16W z@^RN8i&Y)7)*)*h5$i-k>y+gp3kG9ujFqlin?X3Yu37Dvs1PLNY7gL ztY#6Xa=P*NkbDp1duFXC5IAMfJ8QkN);o~zleIp`m%7tlzOUr_BHu4-{j#pVC1#<+Wz~qR4bR$$ zY=s*s8%9!(wDL0r88=GNd_*=XYom#NJL|`Zx3lWY)7adkb{T`oW3x6ko4r`+y+0B$ zP7&jX7>`1K^O}$~jwfWZO@@f;Lw!zEUK5ewb2`3?o2>Fq$=Vd`yPUJh_$bMF{Lxg| zFfD6Svo;MIrelLm_ZHw^Kyfp(HX~~@iJK*rvoOEf$8N^W&MLDxikU-ZbF(%#>*gul z{H)E++I-S2kh$}+wji55)yOSWB%i|ZMd2bM7c1#vuav&^47%MCNi5CUlB_L7Vp&%H z*OyCfIa#d8+KMcW+LvWBiAN%ZZ&9uSYSkztV=*q}j$^ZVS0DhZ*3mC4O z9su|?z#?3}zHCufi$gwee97>){<6~tN$}_K0UogueB=5$($3zv#f&XU!5ee!-5^ZQ zzVlpDw4|Re_?G6}1x}YU7wcC8omun!aIGLkEQes#D5o+j6E<npYoiRwz=mjYUWnS)jUs=(Pt>bsAk;69>&>^~Ni z_~Rt}xG&f<1?BD&NO>Gzg?kd2Cy@y>LglLyEpT8_>qOslPunN$>9T?XI%a`;1`W?Z zlJ$3EvVYFO;*%9}41Z^eaPt6C?KAH0?eFaG8@LC2!hc@3VlQ1+|2!A^gTGC(=g|9{ z(6oeq&V7NLp10@S7wrpT%-fghxi4evSM1C7l?wNQzs_F3T-{fEf*1AA%dXsBl;L=R zuM_<@_maJ6<@QopB<}?NWqSoD@D#OP@Ybk4I=%b%3im4cze>$`jn5Rk^Z@9T6t9Jq z^Evm8@;dIDNPn}T`<8vny2Ry!i!(O-VWSjog{Uh4H3%~Tc74Caz z_+GUJ_<6GO2lj(H(W(dz-oJ1Er1}ktf^TI>Um6A^dfLbj=3#-#@dzJrKeeBPG*S%uS!hrL2ZvNR zUvPWM32*RqqK(}z?HBe-%yPdX;jisi_Uj4HWXd(*KR#zu14;_bad1c&d+P%l5<$Ec^Mz47e*RlS&#!27(t zBhW7|5L7md`u-^Yg&e>83LYqEy~;UAgnCu-V1)p%$LG5$x>D8-i3D!n@ftz(VDC_Q zXD4Eq+`i-dJ+xp%#75{eVZ%LG?>)ZX`HIY&W5v%DeD#0w`)+~PccNc%IDHTK^){Y% znINa{)m?d_{JyIkY_aFINnva_jPHjOa6zfb2TDKGK3ga@pri*}}z z&+?AoXQ6zy8h!SC^>gIwUFz`xKi5~!JaP2=b&MZ)Lgz=gX8fhhYDAxq(V;h&8NQU5^$js7i%dceVxIpa{1bgd3K)C_|; z?4ulNKS>#P6Am@e%hip3hC^*lugwz&4)OGC5AlG4-0%=?4?ka^Th1dKKJt9Qb5y6` zFdulnKm_hbIehf_g6B!*(JXbNFLH=e2>T%SU=APS@G&Sy9C|cV6xl0hY=zS2|_2;zFKjIzO{v0R0#O)sy_K$B9Re8?VBMh{!c9@Y>; zN?$Rwh+jS=fz|lA3)S%f>fvwfgZ15GD0|!zve!T>}LQ3S5HRjJun$T_VZ-?X=Pm3>MG-B?bG&bm@)4N zG#`1*XZ(6NA^C#)B9jt7A*uhK35jVsq7uLEUL@mkdy!d4Ia83Y+DrA^%NY5J)tr6= z6BVGo%D4d&l?GwPuafbrben`Oq_3gs>jVJy^%qibg{mKYgMRdlhD=1h$;J5^D6UB4 zq4)PBUDnmT2;&|KyH7FQr&iE?8oa0bP%rrogwfU0<3df3{RdtVrzNfLLls{M{x+rBg+E8cN4D9wUQFpF8eHDBDNE@hr(e;LQOY{$xP`7s*HMm1hgWvEyS%evAV9i%hZkOcwP}J8;ojn6 z_ZgD?UHOGVRw$pbzvq(wl>J@yddo;M8ay3&$bHs6s|OqPf+G7RNvZohs_WY415|ji zJ*&G`AT>Y`5cBW zaU&jd#4B;9yLi|W$t7-y`VXwIX%D@jP$GmgmdUnyGf`d@rwbMv4+dCJ(+hLiON~CL z(AtF7Zm3~|J5h-}oL$sNozNbE^x|{g7tddS>WaaAsKI;gLw=BWBFGf^4@q&Jm1gF9 z{*0748%E36`vh@)P)}sN?(4ljZAg6}eAR)Thb^JRGcz z>3enTDfJ|_a)DJd%o!H`4Sm_xqQUKbh0nmS6DDVZ(k1W zc>#ql)Qx(3SS8zwd3&^xyS$to0$(j>J0H(a!cJ#!>4Uuhl6XZD^|aZnJ`(jCa<6J& zuUNhN60b_)YucajbtJwHe%@ZQSGi&B)67pgz9ETkYP-U>koZl@4hVD%|6>DhwbA|g) zf0g{F#>xu?ETv2AzZ!~6@BX50TL3TZukJ4i`-^)EJDWt*5KXnXXv!Ljl{3F495s)q z%3CO+1*a^U`6+@GbSuvbVn0H2@LFLJT6;w-qH(s1R9mf}SzhzZ+ACt+jKf_{S?Tgq z1dHa5UeT1afM`>E>8Mw-WhVljSP8(qlVCTLxD!cOTl13@tgUG{7T3i9(%5{q+MwnG1L!*F=&gv}MD!7=-domJ6gBCX&i)%#m3hmM zW&;B*UJ3ZM7G?dEwjXKza@*%W0O%LI3PlVg!mqY{1k3HgUMbrkSa;9#hM}WUqLqja zi5NfC%uugmm?El)_CCTdyJgrcHuXf+uaIN^zu zPw^PG*?!3#EZ65m!V!-ZInS%PE&4H!Rk^VD`B4u?FM2W@g4q}>Uer#iszR;Ai&=}a zfic4Rn>DwXYpmP*=EsbskTwhRi*Mc*`t`QpZ7V2tT(mY^=5oryo1Y?9M_75Q_UEuK zga-${1xtA}Ek$c3zZR)={?YLoj@Elc8x*mD(~X{QuZT^0L@Y&YVp&g-^UX-M>|>#@ z1g!G3k#Nu*Cj;Jtx@V~cr2EqX=~XE;48=9`Z=C+3?9vxw~<5%&57!zm27=fr@+EiU30 zBF67LM;E=GONzL}>E(#=Q^b{sUGaJrvm1o|;>*rZM6OFz_9X;7$5igBl3pdjHBY>k zZP$J4-%!L2PH%dun<8#SAil{qHW*!}19{ub-InBS;_rCsn{vPFRoqiV0D-f21GAb$ zfxJlto09HE*qRhx?sPYHDiyO)>DfZ#Ce~C;>84SJ@2K%p?#-iWUD$98-$X!$Z(`C&g1L z0!nECU~%|CM`x!fbq6c17*rfXcNCMm>Z~hg-J+U|bk}KjPJ3`#%k|W0PfmMr$`Gy7 z-kkOkbPCs~=D@gdFgjWvjvK~6XL~yeqYd8(7=t-uWloqFn%lT2FgHD3?eZp| zHt1`d@`Z5J!D}mq*H$+=j^}rE_zSp=tR_bxvWeL?DJoza2UDZ<0Jf3U^r!)Dn@(0U zRPGtR+&8u`_6FsK(xzGOY^j+;4Kwye;k7|%6Ps=2w@yBs;MY zcs9Zo5H{LdH@Xm18)_E;wU2^n6Rd4XG~l!~fYXL`%S39kWmva7sEFm!pdLuOBFZ9c zCEYUWpsKBm3aQ4y>gd;mRf~wK21acyX+2iWPv#2*SHn}ex4}QLN6`i;%7fLQtO=|J zG;K3gv_*=br)?2KjqiX0BewZUin{Gl+a7g0)Do&~RP9uGpsMYP0#$>pCa4+*duZ6b zQngR<`*n06YJ0^~V?^|1wfzF9JtnMLl~g7Gwh66P3|y^l6e<-@doRbqtdaDHKx;75 z_+}@t=cw-;CE3f3K&aWVs5_oFiG|Mzu4RSr>2DN%8X8Zcu`=I3PDRT<<4#Axso80+ znllL0Ayzy!4u-SSTU0d*acV@Lk7h6a!7szruNC&0ee4 z201M&aN6Byo}3maYf@NVsAx!cD9m21*4DAG+`yv&NrQyO z+%#`Om%{R>2x(n}M{6uF8d2S9+R@#=1_y-(E3F4f!K4NG^-|K_Vx@sdYwTc@5!I(K zd!;(lzJ=Oy-mef;8rU-?p82E$3aMRiXz$aGkx)SqHwprLMRJ#z<RGF@v6U}!g0USIk4>-dBy?0l zM-c+Xc8tx*BC+veENqDrLb9omP720WC)&kh*$6!)1%TN|e3}e3qpHJS2c4}zbhfjM zred^-#>T;UY6Bb_3EK~xhq z?XqXLU9H)8@YI6FW5s{HQ1CPseUQ>PxJBdLR-ShRPP04Yc~>oPw?^Z^Oe+vF?Ovg4 zB5ay?X&f{yss|>Gq|J*Ur2$B*a4m{R+M%=$FMURP!77-M!E8im$*IgNP2R_w?rg(N-RLp{Xqx zH~^qAT=MBnk>F>8i^M(SU?{aZOhygYOVJTJ8p&tLY&OHZQGAYwn*+W(q->+v1Xm=? z84o?i;PD!Nt3~zQSfv<;S3o{9B*l0>%vJ8>H9^Krz_`(B&xtyl$k}j>iheRNNl7R3 z{SG^MNjgQQPf_BRw>_3&eZ56`23iFGG~XQag8Ji& z7v|;ugQlk3Ip#}tfzW7R(JGv0qWNaS!GgYZ(sxXfTO_%~e34iL0IdQ78eFqb4t;zL z#p`$y3{LY=6kkC7+$~iC$Y@J(Hc5izqM+%?@5p^6ZbgwFJXaR^>u;6XaCK36{x$_sgOZjXJn2GfCALnqv;dL@APr6$gtU6^r=wBln{@%L^?e^U+7^ESZB=UU zXu5z@$qdQcs7XI0Z^vI(kw9tNiv&vJU?&~ne_*0nz(Wg?!$aenV)4+#Lfcma$P6MH z7_)lN%&34W@yx7>3OJ;Wa7ae&^+p{Qw@g>{5v2xTmcOcxs%?+br~Ht7OlQY9MJ?1#VzI}(}+hb_D{3NJfDLFxRIVtv;&}T>@!SO&qzS+U6yf|DdAC_fk^|W!&#NT3~2YOzEEi8 zOSY@N>aOu|IS2H+>qX@}x&WQV+MnXx6zt61Dk`r6W2wN~1cE!e!?%q1=-`S^155*r z26V0L@dEg07zG*)NZPv?)ufmvYEtaGHKPkpWwke;8BS@60ir=jb1iU;&3eALzH3=b z(pDae)~cAjObo>Ngk;`E3EK*7Cf*tBv-T|E#XGAH@Qj2Vg*<~$Rv}PXr+h+k>|Ct7 zZkJ+g7kjKLOZ4IZQkK2m2u7I*WSxt7*N6TdlIp?9(R@|)RJQQSdKSChqL#TnB9Fl* zs|TNqY@v?zW#l2-{wiw!VtQjwI&wikDN}C*QU>>IU~&Eup)kP2L=@Al7xmD^1Q!b$ z$hS5h6Eacs!&%tud`ZY;(f3crcYmo-wn|wyq!kc}>eKPD2{7z#F4NyouR;t48A$1CZ06>O9**aSvv4nRUE zHSjTinfVbm0)`B=liAQz>>!X$Di(f>gQ-|FO=^LOO%qa#WxUkR$Xi6E%v91@48p}i zip?q(PmF^(SOiln;y{YQ5SvHR`ARxp7R~e)K^I%#EdnSulc#!tMd7wX`uif^1s1EC z7t;ln@bIfRz>BF1EMunMh?y8- z{;DMLJHA0LNO3hs42GBpVeb@YZ!~h36?IvL_$0f4`xY~8fhKlEKr!vsniX-^ga*rA zInJn8Tt3GMBX*r(uUOM-Sx2&)`0-MxwtAI1xME-c=o>)Af_RS=Q^f%PDy@cp;a7u^ zl83E4$Kg{p`T$GIg7P||fN>ULz)+&2W}<#clus<10!Q+qCN>zN%@Jq;3MV*fDLR-$ zH>Tl**+wr4N5G2;0M^=z>ZpxqVG`xrOhPw#Q8t2l(Y6S*^P)OxFMgOr`FfMk&0e%r zFfk11fIvqts-sS|Ac#qn4><|l;zgemQ4I16@m*?#_0qK#L^0J%w^}?k?e4*1-4Os5 z*2OE}n^2CohIxSw$FL?Y8Zh|zi5-xh>SDaO(j~k zET)J`Cb>L~jF^B%CN9}@QZx)+fy~IKm?5{{8kUd zfRlk-p+@HA6V9&%mrMy4)RMqL&nH`m#3IqiRA+qc%ki$TB^KAx*m(U zd=5REi)wRShTg~a3yq#-B zCX=1O$&g>~X=DMNj078nC<9K$Tdi7v%#;D&5_7yaG<&lcWO-5hHZK~o%MjJkjy$_;Kc7Q`AM>J>IAoI9Vv_C3+qql(GT8~f3<2!tb65?2q?QqL zga$tc79rwtxV{}+x3x3ghA|G{9T29r1ZwAtgFX)6g17-Gn zfxk{zZJxvEtK5Q1JOvtiFg)DnV$TFVV`cysOz}Mp0+T~i% z#DI}C222LR3>X>CI)oapL;Nv-W6WoLco!ZsNCkv3@ME`8aYryRaAUl= zss(Herdi!6aKR`nFf6)9_`3{;wP1mvu4xH4FgRa~-6g7wK0Kopxu-=5$S-SA(%7{u zfdOVMk!U5Xmn>@SMY*N4k&3orenIQd(1Lp$X1)YmQw?tsA*1&?i zMV(0iW{bhL1jrVAE$%Db1lh{tw6Lf}Aw(_I^%PbMidJKYT41)IXz^vSm|C)^Pu`-w zQUOP+uTWY%fA!%V3I)-M3ZgYY5G|g+dYslEBnFqj#sbBKMPX;Cl!_rGptOKzF<9nR zfXs@z;UO}su^S3?-cE2xI4o`^M-9H)tA^$d?_rYpx8(hc;Ao%AK3 zuz+5%lit&?W(s}vn7CI#Kc6ej^BCv^wZhp@zG#rGI9@=|LaA9KP8PT-zBd!a3YHb! z-9N&>*d>x!Dy)?)MPivsvP>mW9!zMKd!w8~bLh+4(Ls*V9HKRcK*Cx?W-%N^E@z7^>e2OSO)Prr=bfPjRrhgjYop+FAm93d|I*io}@; zs}$4}^GXT?c4|k7kW-IVBd2)F?z7?2*`qdvFSSRMsm5-fP*nF}Q)*KnQ$gJwl!_`L zr>qLShkQ5}@L{Pq;*nBEP;s;b_7s>Y9%PC!1*9tM>&Io$al%iCCJ-^!r;vNO?RI+$hv>>D-Yzm{E5`j%o}x3Yrwq zD25S%qhwJNMomA(Y+8znW~G3mteLneKAa1+(ORS^P*eA> zzBW<;Dhha1$cjQWDqux1q=c*}hLi_cQL>`5c0_`P>MS&r08y}^IOtaTO*l|=6c|wO zpnAZx>RC#k?dgeDbm*EKsNSWnkKT>vAy9lU>&rkj^cM;WvJ*ZCN})jM>KmvW!9ek3 zOMfbbg|bRA7*Z+<)L>Dd9uxK{sGVWb4Bcs%7*BXS%hwL%CyqxFG)ii~JdtEHYThmd z0|n1XSD#-eGvq>j8dIv<+gN4pp-(e$q5}a+_$Lm0Q1;H6i11ImZJ}=2j)Dc-aEhZe zkew!$3IhcaYH}$kC@@g<#DU_A9S?n)O4ie;A}VQ`Dk*%|%Bl-4RGFU^!sn?f#C+e?Lf;$SBR?2-YyOQAjic&Y&KgaLc)%%=9J>mY#BeLfQqr~4LliqXY8dp1+ZY6?_< zYw99a6Ps#cFq$-gboVAeY2r~G;ZT`+;xSg~Au{z6l!;9>#QGBT4QWY?N%{l{NK*G0 zl%xt#lKKgh6x^i!Ks-=17)VK=lR{JyI=ER?su)9JRv815)L4)tC`v=gWti|ss+Hm1 zq!BV{1mOUYM&ct?>fj`eih)XEo1!-fbz`IsLeiKRh$LR}ik<`|iBIig0w4{qQ7aRq z0!|Xxq=^Vj@+!Dl0Y_q+jIc+*ks1q*MATFy;2ur$7ESjSK}KR{C*hur1oQ}Xvtw|N zU>osTH?MB4)B!w#el!nt0FQ{8j|8kEe$#7Mv@k}`StRligd;X0dKKJhmPo}?!H-}b zH5ToNs1SFw+*`E5TeMOZtt2J5BfPw>mO21Ot79SINX>@2byBxJ2ImOIQDZ@l){1k) zhC^6KLMGksIh)k-V2kjMyBPsEM}Z1BM;vb@2%yn6-*dKm6JQCH=M>}H>jz|x} z2sg#M3EY!UpGO?Ac~CtEx)HRb{q&pz!W}_23Rg3{Ogk83xU7m6n?ycr8}B<(HFJR0~Xct`9s$+M0CAGv!F z;9|gz>H|AM2@c$V9yP(WLDM*BBOc@FJ$W;IuhERpDgA4|<~nQ6+3>>fZb1&fi!ifE zp?F6ew~S{8{K$uQI9JJ$8BUncOkK@7`bs+za zabIs8<3S-v+ex6KI?;cGeS{>~qb~TV76Zw36UYeWQGJ+4MD-B(2*42&p*YZ^un>@s zcq@=EL~ot-eorC#_(HTP6b6aozP=D(ka%l=Vyw=_)+_|o1nOv9JlpzDLLD(ZB6d;U@Ck7UM~Z@c#M=O(w7Izs z0w9nm)8sh#BR3^38q(Cb=tfg1(=?d_-)LGK$`LOEf-=nr%QTOrnbOXRLp~DlXeJIo z;y{l89`QCnY3Id7IGRUVPdo~X0{4h_0r{eUG~#W*dy29sZi}d_FA0BynamiLc;wMy zNRoku6v!-(8^2}9yciY^9?}Xg0}m;X0e!@8B{DB7ghH&214oh`@JN9S zgd~1zkZIs2r_6W2BQc}$B%~0J#0vui_C*3uH%zKX4IW94)f2k?f=%Mx0H~eKaga&b zvyFnM)$xFxq?e5TNe$d2W>X%K6mpYT-J#`ZG_M$B5<_A9`GUE=$+R(0)xIkZQ%NAD zU2y@FIM@^an#f7Kn3c}`9-p+Ix(A5Fwxxr#9&Ds=FdAOys(f)#2RMnvo~TIyG|3$m zHwiXUJ$Ee55Pw|iPUz3cI0Pk7NEPl>9Eg$#N~hwFiIh|&Qj&N{pprN^OIlD#=aenb zkvOy@lIPh-6|j*o=0e^WY`7RNKN%GxiLsA5^N1vOC0@R$1R4^7R|y1&bS(}INgH)< zDDVb>H{-yK9M~g1DZ3aKDCt%_d$SSzBQgYb1PAF3_TE*7cj>wJr~LQgY*vJW1Qh9A z6gBZp%~GIgg79XdA;CdnRwd9;c8F&n(PUH{3?z6+Es1ND5H_h*qQ)jhfJjYvd=wIq z*vy<)+s;R{PryThg~azLq90{vWCcVD^uj~pIOHLbu5&`W8)?rjNI*TR8|4EB+`j6p zD`$8nz?YKFx^Xrx-#fq{@n9(d14#&^?m{2|LIQhK4-OKQ(nlmD5J(juko-v7HxZ1q zG($fLKsV~2aG;O+CB!}AU?6E>AF&$r#G}EatxQ;@C)TLlhRBE^6l$p8Mj(zbY%4^6MH4V!BF2L>3i~tdHVI|yZD1FQry5O8WXHWJ!V&K_$zilA3(66%Iq&DkW;>r~ zG{am7H_EPm6TA^(GZ5oLl3=4Dcq0Zn88BOaz!nBDK=u1jHh@Bmv(@AR`WzQq#+n8ko^C!Hg<^8TnRP zale&TCb%kB30EX&(aMB?MI5XlEvzC2D~}~wN80sb75QP8RsvAOpha7NE!vm>S%m0j zTB!&c5iwhcfk?D9AsW#pQH)>`sg<@XcKiKWW5=DU11QlB4D;-V%EV9E1wbBuZ z9YKtz-a#uJRo=&B8>k|NEI#lMs;EM!A`nKNR`eLOBDK<_2*e_U&V+O#c7F(91cs=( zm1xLwQsyZ|4k*#Ngn&dGT%e{eDm7>!z(kkG;<5^QIbTq;Us2MlVh)Kx1da&)5C_*u z3V(=~mYykelcYd~ZYkmYp$QOCwi-ml({67uUHqQH-xY}nln_G}-v5)?%0>W%!Xczt zQkP?M5rvuq4rn2UkZUQ7klv2BO2QceBm~Ml34aLYPea!x3E>E2P>tQnZ6QOjb1n&5 z2&@pV9=&$5@8Bcg3U#RF3Ux|mZ#QzC^ZA1eqHej{z!BoOD_MaKB059|p{hHkRPQS8 zk<`ZMo+1eW3gX3LKC9k70tgV?pgu(O^*EqIe-I{!92kZB`=SB{V$&P~18abRC@SQH@nKV3(&si$xuKq9^QCP*+U`U-TcEQAoDGNsy8s5@29q$~sEfqJfrkSY2X2jV zu!M?Os?3)uo8@BI*mAO2k+fw=4}yUR6BdkzMXP+9tyUhZX^=JIy9n>H)^|^UEUS_M znFT5fa2BvE4ctb-SWv}4mxRnhHb7Y*v}`7uEtCeV%KZ$s`V6)ygKcE6T}Tx;Dnh7i zO=`~pIF+4Ac|F+W3q|R63#$^KRD@C4179OqA6N<*?N7o>ftA7(N*NspD^0aQ!hnJ201KE55PpHto_ zy3c8UK+B%-2Ypyq`jVYfl5>>od=i=oFq87R?D$pS1p+~rTug#35#a@wL^?~MUxLQ%-~s?a9Fmt0MXUBbcjyKR4O7ii;7%OqlIGCH z1u(Iesrn+7u!{8fkk+XRNF}}_w@C$84eikub-tT=a*3!V?Vyc^kdpd9N=Of%q@xfe z6%HgxXS{xJ2`px#PnVS6=+iajH~Mswlbi0T@)3`MAAv<8_6WF=E&`I|H~Mgy_LNvJ z;X@qwk)A2gBY;L=i_`}{LT3F^5J;epuA@+eBM?WJ zT8TO$&`4z}JLS*$yVVd$4$Xr`hNRqZ;YMsYxs6bI03(n_Mv{J%avN16Hy|U_48zFV z(lJKTV}%ca7=mAV5lF-t8CRVf27(tEpUUp|^9R`w?=7HHPEbO~A}~h+vIxyL2~SEm z=PH2craX|EoTA&q7@3k1Vq|hkKoJh6rRqTxLBR}RMZk&hJ%j9=nYWW6eU_4f5}BO> zBLYxF7!eNUl60Puf)JS}iU_VGMFt70lgSk55N1>*&1DL5f8 zLfDThKFIxc02fl?za&|ytXD}EEC{dhJnLf(2|N=-7?8E8$3zAp#ky4XZlj=9sHyd; zQ(zw(QVt@>`jl`W9BiUpHcJ)k53nFxP_!>`V#z zu`4Cw2M2pnuR;7k=RRRSz z91l1j06)Nb(@U=tijk8>XB0oVhS$2%!l9`#{)kRhxNm>!qN@Um*=a*dj~ zqFjJ_T=7s3&>nC+pnF`WL2oGOP0>7{b}%X_=`9uiig!BYksf-taYw14dgM33LG>tx z>Je^&1MR`M#96q%*l&sk<-xBcd(VHIK`ENx*gUOg$4v$O@ZGzad;~SupBAEiSPR^y zx0IOiw^@Y^WRo>{H$`?M zvb)G2;(_!?XPY$kk0S2G!Gg$5OD_raLa28dE(qRSdZsgpe~!f8`e=cB(8F6z?{4MO zz#wQpo%UX^^};)5WJ}i@aZes72o6L#_eOd%gRZ zhK^l)Jac<=B9VK^fpOe(*@-Aas=&a0e>Meh= z_$acn3YXJmLxbe#I9|LqN*_YOLk)2g^DrJ_9?9a-F%8_uQ1XD+7)jN^ zYs_=*NmM-9(BW0p;ZoJ==p(PE?P+z;XNYpsP6hEEeBM>6&qJQ-ziWK?K>-%xIga36y=Bm0~_tEhHZRNE(cKs9Ir~C|To;AWS%=>fA1&v1-q~3N4vfBBo%&y;BsC&^up7=H-U& z6??_ivzP4G_8WZ8u=T$_*;Tu2eN_{8U!sQkr_}w{8rpAv{y+L|_3>{68T`)Pu;2Y0 zzcjd|F&xoU$djutpU4`o6Z~yF)Oe4sh4v5hgFyT5vFZ0TO`zltoc)1PXny4T)6?!d zr2I$wj{Rdp9KROYcYR9rg6|RWefwVEx2Dj3P>n{Q^iSivrqKQ=sH-1x_(SR{LAUu4 z$3LoeU*j)-#9zaC4L6D(6ZvEByoL+^Uowfsk;uck@c(B&QM$5mfq`pB&7tuVWo)`l zmS15gs6}Pt49?g-p;w`Lkx8%D%M9LS=yMT0vE#v}-dZ!V=}Pr31&g>+3mpF8?q8{2 zf6tX_In^my76sm%vP~O*(7W@ktPA_8K z=V023vdtPhoNCH}W$1*@`>@P5Z~Q?zO;9l&&QXd>y=?{Z#b)?^FSE3jHN+Pdjw`b* z8V7Rtu2j=KB)Ny}A$#}@Dz3IY(lGE;nQhrPROnsCmAb#dB=4HBVctDusggd9x5mfc zz)Rbs-XR^WP}3o$eJGQ7?f+jZpxZaY8xJ(YsM2VY$XkWFVHB1BuMPmUJ)xHILAspx z@y%pXPWm3=e(_eIlluj&>?`=|fd_By0EzrUSPPeGH-)w2rcloR=$jd|;Tkj;X3$tl z1@q6N@-(LPN)ESowJpc(1Ali7Z~z#gN*}gIDyY&AFtVUR{s|uqE`z_}@Ne{H)T{WQ z{wbwuanh~z>Erfz_FN1D;gZUvU*rhFBo^~b6B6^gthXJYrqQOReRNa%^EnoVA|K~Io+|I(KoC0Fod3ku zAp1}DPc!Af>Ib;6@($#Gi1d%}ANHdPITOp9{m;^lFERUPRo9R0$8wVV6S?5FpQxsM z?gcm&D{w!vpK;UuDR$o*Gg?nzvU6*zos&vdOK-11rlxi>`G z-`FY~p05IKUc~I*s&g;G+csj4;yjFhN&|=6>RgSju~l%( zQE&kcx4qCG1ED|JA91*i(3|)N`wzJy4Z{D79sh}&?f-0uldxL$UtC(jyRL|<>2#Z@ zzuxzR`4)+q$p2Fl{QfkJFbFh@AkhqeG0h{^Ji^f56vxEFK2X>;`d0d{Pim+rEU%0P zv&aXW{`cYCo9<$GaVgel(Ir~W3&!ecYzc!!X}0qp^^7pQeQnb<9Nxb+={UTBt*h}J zBCo>z6A? z%=+#V}0LOr7H(_E!~lxU1QLgtMP87Tf< z{o%7z@Mmjm0{9%cf8IXNQ1LlNhr0G`Jy&z;NEg=R5uq=V@QXZzj53&%^Yn{%zV@Yt znmsZ^d_|3;ta<1Cg1w-O7$fRLe~lYLWWS2+R~x#Q>?QXys$Sv0dK9s~y<+t%nDf10 zFIxkvXXRxvt<`)ry^7G+>}!k+ue#Ul>-Ji`2PSpCf;F*YBh2gSEcYGt+v^RPu959O zlC7VweOE!>v+rp)Kc8}c2cJdS_iyg|O8EoCe$Y@ugC=o5RLcAA1r>ycL8a^%Wt`~f zQ$ET}jg&toWiV3<+zgWPX9WH1y>13^RP8c#{VR|;<^zG- zcRlwPn(?pp7yE04dyBsEmKuZyC=3fcM`R#q8et4zT#$MO1>S)W$PKPVM58d{1;cQ^ zKfYYx|99cb^4i1(4;%)+8HByq`78KuBCJ1Ql=G=VwByT(gE#TyghMA>IsGeRDt5Gv zFsxc@2BS895Wt=`fqVC-3fu7Us85Bjd+*L^FgM<|O4ZJLCu~Qm_7Q6z(JBY!$XABB z42jAQ)DUv%Ao-3F>kzSy$ajiZC-hS)Z`IIH|1j?~Y8d)EOTLTuQ`iOht`YnbBA>6) zZi?>iy%lz+R(hypac&9J!pM9g-#0Xsw zyY%6Wg}w?W^8!aM3A258;tDB%w>O>(FpXq5C!Fq!i&-<2W(L(bQm?JhZ`C zHdM~S__(8Hp7I#>RN+tX6NYmzT!#&jvoO9hM&>7>S-1;B$vdJiA-=_U>s2$i87kq5h^?T6Grjw;8I*9PO1LUwE9E}1!mU;b zS3g+7SyDC2tIC&fcJzJ;=XjrFb0{Hx$@reRW}fp1d8+VrH$RF$GMh&U7f5CSGOvdv zTmWartHB``g|4)10Uah!aicxD;N)M`L*@{uz0MuuppSk@bG>dvPyE2O{c_2NiLU z)2fK^Q^cW&9rFGMyWx_I0VjV~_(|T`o?IH@8mANojr=(x4M#|KG-CYZuJM?%Jg)HL zoSl%%MIU}LVkf<3W^Tvig)h9{JeT*|C-;AR)28tU*Nvs_jC6#a8}~%ysqw6QJ7!n- zqN<4JB!=6@I{%B?My}KUo7+ab0A7q(ue>3z=RF2KTUe(Yr^Tf>Zsai=P8<1%nW9{e z$RnftINnf}Hx+)9vs-f6=)>{Sc-t3|N$L#-+PvmE_!&gF@Bc&Io5xvIT1TElL~?Zpn^6H2nY&}jfx6_ z$RLWMf-@o@&N!o@-tV(&pVQq+^1koy-uuV>Tt7#;_TE*i#$9{WTF+XG>vnW;i^zVV z;$Ki44~}n}Q%4e8ntC@1MVp4AUyL`$MtQ^g3TLFTokaS_P#F;8ywMH7_uIgjw`5?< znZPDKI2)ooz8eP-xE9}Ku^U3-JU>)-;6qbRukuhhrhL`;3eqC>1&Qk@I=!sCqk)`bZQQ45T`~6;fk!|6l8+Oh7{HkiEAtF0T!Hp>kiqA-`H-KrYtD z$cpQ@Klkq(_p22MKX7a%LHcDpuJ zc_L?jsGP-d-@4S*;p5(Q%`dwUX1-cJ#&vGpgXA9FD}F~)_9VGy_ln;tySV#m_frmX zCUE7>aWMM)xlkfwHEJKXm!tu~zy0BUKM0f@j=TNEyjbS$`g5E@V7LQxq&UzWsPj(q zz+5!qe{$^4rshIKyO6v99>3Pri6qX&b=o;1RCr{l(2o6jieqs-{RPZEVq0Xk$GBtb zn#8q5|0|~LS4^AELDuA72MQ*W6@}mE6lCZA0`ge0oX3GbhO0lp{r&=+hyTv~p#Wb` zq^$~0`ql14?Wtrt+Mh(%PIf25&7Z^>{}k7&mV>=G`BU9#MSnUKpH9VOV$HhVjC|IH z6a5*1fQifVSNt96ceVQy5LMm2(6iDtsAt2$pRE=a)IvM$7dY)(3;#?D%{}-99P`g{ ze<}F$sK>%+NghR>6XEBL+WCRn1@3%zfvEkpW?=;!`(FdcZqzP>nmPWyfW!RX!(slP z>hHz)7r!{a_9CKZRl9%5te*V6{3X=Y*Yy>*eu+4B{`QY>0;X@*K;zB_^6eVLHxGV2 z48dR)3_N@DK^S6dsF&F9>aG>PgZUQq6X34(_iz|&$Xyn}i^E={Ps_M;anWSCG|JDp z(2pQ5Jhc$Ol<5g;P1CLr=iDeSxp3N_6HCMfv?m-j4~>~_WY={t*jsqm%httlxc{cQ z7F;!Ucu+nr@WYTl5wJ?0M*l9g^=>iACC=D#&r$As#2~{I zV-q9BSRIBnZWMR?7cs`rm}?C)-dHQ~0r?5XMYkFTCyW&y4eO?c9VkZFi4n%=4vG)S zOSfNuw`8%#`9YT`Q#W`}KH;#S7~zp=kyuUmOR<&nJc8MSr^_$pWbl|e__+8x_c)WWLQ}p%Qyzv3&dyo~Z)XjFqvIA=E2I3w z7sKOG8ukue?`cXuqtefmN*|cQ}Vd${EqqEt&_pBE2bK>$~=kU5MevZToQQg)& zYQxWE4eAA3*Q7s$-&hmDaFmvRx4`PjtYEDwT-#LPtEv!g?p5%ZV(Y}sk=Q_muc;3k zji=j4A6{1=Kjb;_X&cL#LS+1}*3>|de5*r8S24@HBCf4U2=)Nnun<6}KyG_u2 zPjufa(d`Wv$Kwwo{BPrXySvOz?G^5U3vM2KBtP87fWfO_wMS2S*ejg9=WuNp@^SZK zyK%AjH<%F^I86DN>CeQ#!H{f51lcX9j9Mztwx)hEMU06Z<;$u~t2s%$Pv6Q*I!O6e zANg-aY2kfO#p0iLH7JWp%lxA2%n zY8s>hywA24LPg?E={1OamPJqzX$y3g#ZG~gMemZL=m!WUzXP+=Ei+~Sy7@FLf~fVyZ036A!2KXUsitMiUhuHZdcEwWER ztd8y|qz_rUk)@lmw(~oYb*F;gnXDGrtKd;`=nhH_W!)d$$NtKihXLB&?OO0%$hsT7 z+pU1`va9Z(-cZ)=a6sLaRbf@O4`EfRVRX_=jHx?tH_Cc|+tVGOtW3^6WZ1{Tt0=b4 zAGZdUU^ygV+R?TW4$rit{{b)|ttJir7Nvsr5duIZ{%5rR8!$%xVf@g3llFvG(an+c zn=KcsD&E?Hh1Ex8$r~8fS|x3*c37dw)WQPw6n$&nIza@xN;FafbrZK_2n zDNRR-{w#|Zb(C)zFA5^1h*8!4`>5}JKvbwQ4&#V#;4n-%tQGcS{}XsZ$g{lsPg)U= z$I%sF7nY-f#Z|%L@~o^ZO3%@LCmLVETNuN=i#9*Hnu59bA4Q3?Vc7#RCIjyi77rb_ z4>vDj>i2@s-tflzfUGcW*)e`!@|y^}Cb`n5{xG;i{MgUBVt+j+PwccwPWn$Y7l(?ylsx7x8h^v++h^bSk;n7 zZ6?Kh9ZA$?CFF5y7-`y50V91l^6?{r=IrpVY0j7})16rdjtvD6hN#>x-7lru`W0l4 z1qtyhY7dcls5*4`cxwHP`wh(W@d4RT2Pdsqws6u#{|B3qKa^(#QMuOOi5i}h+==d_ zb6}?b7-H30LlHA6!>O*9JGGBLP5DlDr@7P5@x7_&3>fY+0Hr9FWXO0XgLh_&x%yM+ z0D)@7Od}yb+Z7J?eQ47;j=;1@YxU;CP6nWbx~~gaK5S8 zV!hOgrtsV9KVKaf@5`fe{0MQ{aM*aok%(d>3{^G`2&wzRQp0M)N#o~H?HR51lov0~ zEwTm~TP;ELRT53ZR>M9Y>4}{aNi;o1Y;zIrnbkMWKJzw|*Q&y6p&0g>a-0+8SFY|ne6JBBLZq`WL%#h5G#F-6vIt;;^akPha z=Wl}WG8jl&)30B@dBjQOn}L`kgXL6eHcU=(j<3#guv5bcd@F3zzbJv@901B~^@`En zZQ1o08STzu1e!(jJG{m2teu(FXj#9{8L-9Hd~}Pg+2{h3tEfrKdvhpQmU3L+z4KwG z-jPo1n7suf7rauzCY`tr+Pe9ER``ygWG3_AyAQnKNVe#RkA5fDx#)ML6T51su%>mP za2M(B!zIWo5h*J!6UjQTDX>p7A;;Ua8Wcrs{fz5y#ngrVfMe@OL-Y*@9C# zVR*W>2hAD5zwYk#D8hwQN@Q214W_bdMO6#r4imT!&r7VU+q+GxWpTW7-&n_vghgba z+a|b#_ARz71gi*Ajr{|O%K*#465f`wtjh}qWNN>$$ynG%4X^>KY|)FY?(8aD z=fHutC25E?FuDb%?YnxuD@To8d7ga(Q?P3SOE8mtm`WN|-Et4A-TEG+S?SF@DT?xs znIy4>h*|6438OGcMRuGHnitE-sY5eiv4pP{i&)`05>7a_c2wktqi!UWK%S|}xn1l4 zqPK2pED{k={e$c4KGEV-;;I|z}fw@==ZYj?WNo~6I?$!4Q|lpd>^-u<{XF$W>FDaRSp@p zA=nz>VfS(SxnH?%Zr`@;Ibw1jB%7FY-rWP-fk(FxU|Ss)%Gp}qgWNT)rV-}1hx>Kt z;i2^KPBu-qxbOYhviq%MlwRixOJ@)BV5NFgx!ts&~@%N zDnN;@6?^+5=rA0+JF@7H(n>s<+Kw(D^Zo@NnxopZnh{4k{rfM?*Kxi%z4IVtojfk; zYi5Di#ZLj&EWP*tHf%6W$s(=W!NQ7%jhn5z4;wdkES55hGJ{dper-VtNNK0C-o71O z&H}ZDrC5h}Az~F0Fu15qxSW$ipjzsjGt&*v`|kNx^0udCPD3j%6`KJwKr>qVj=a-5 zaZBSYN=T#%<-LZpYyAQiJ5uOP$x$D9SQ__$t%f7K2phW&Zn( z@YCVF&rZt5tO`8_iS6`(YdR~}`j%&9J1J{d{XXxUV7%04u(A9Vd}VutM)3N&9$I$x zd8@R~8;vk5ndPeq`8Ywl8b01U`w9P-BQNKi6S6ZX_gZIL=8n$yVf3ttz)=~sOdVD0 zccJjtFlFHl3-Hrj`F?c?%vfE^PuHI1mzcn|8a^PWnnOe|#Ke-^1q7y95S) zztBLvBF!;nJn3#ILf(oUd~-_#X7XU39$erceF*b>P@7hZ)1;P9p~cg#tl5)289aLn zWn(8K9?Wz{{=n`Z{h;XEvF)|fh*{o%68xc5jO-iSYVE(F zV66L^g3)=3YgO#%zU6k5$j!n%zu>tRbaPIe zKJVJSVh`8#%hg7}67i&8>n;7q*~2cYs3Uv;qS(Y6O$GwnMR`N*L~_Tg&x z^U!vx?#YA0*oqG;O2z1Ec|e!CR_xKjeuR~BBu|elARjr3m2|}a|F&1Qn*a0d^)?+a zYAC?P`hk_KwxYmx}k$ zq?4{g9bckId#c;1s4r1D=Psd<-9jT78#R*H^;+SWhM5O}E^tWQ9LHkUMFBr{gOVM6 zi@bPMZuj!~E=w(oa7R_{r?$Sah}{E`Wh9ZM+q=j+xF_#mmHSyihc_l=A4QWl8=I}1 z7?>}e7?>}1LwyeIj9{iN+6rKE1KYsP%ACE-fPRZFuJN>{rGWmocz?c^+z|K8UED65 zOI9RX`RXo4=%IQR>My(T9R30dPFO+4&Hc~6yqW;Myj>vSC&tc9J_#(}DW0R#<+k84 zUB2zM72kkx8%MG*VM&-VjTq>#HP^wVNGsCL{jlh_XP4ey(`T(}UqiIOAJO6;72sJA zSaWJ@k1{bl-Jxb!!ZOI2Cd7G`!;WqT^pP;^9rze^KpRrCDfT;&BQPkQt=M(6sPBs_ zd?)gBLJh)*?#kp#@!`5?r@je{d(0l3YpDSN1{t>ZJ;)s_0hN2IzkrXa&T5Fiw7f_B5K9|u?c>-?D8 z5ZiT0Ff^YO*Q{v{^~NBN&NfAoM{fOF!nL~J8}(^1P>@^(1wm*{Z6|SkQXwEfM5-6p zy$b$RY&uRuo_&ftO|{Xj)0xTB6*``ZSrU`unsE{G>zty(pXtu@e^R&3;`*!ta_X~@ zQ~yao*n(BeZrq1QeFXhDhp_MzJ(ufqEiSy5aYt`=Ua4ESU7Zq3n^`1_Nv{9PpRaCR z!1V=r5|FwttY-%sKvv2?wP9#r3}m7V*8WyU1Pa z`dYU@)Af@Cv;|lja>$@tg0*WHx*@tb1d-@aiJv8e9v}oaa_Ic6OdaY;q|wA0A_vmu zO9lJTN<$1yKn!jog&u*&2Qx56-i(nnH<3M$0-YX7RE=_Et)CxMujRJtsTu0-Xqp83rN@$Q)rn^7HhT+FZ?z6k!Ay$XubM z@sP@c&Pg`~G$uJK>(GOOh5!jE_<6#c&KKD-7R2r^5FSLW0?a&*zGeMcXayHi@L?5P zq=JjMdL%=J6od*{Yz2WoKTOwEFl*Zq4faxjMM@Ch(B?<2&C7)t0V`4vP{au+f=@xN zRz#pg0`Au>6M96;Hlz5Yz%eT`l!!%Wr?XB0nx6uOo^|%=3^an+R(p> z;Qp-OA?hr!>}LS1XPte{3Wh-K6nsGin}EQ&|B_;{s~|w`=b6!FoqbtNTN42&aUm)@ z$Y6V^GFcw))mmkFRrp@OA_f8uix0T>Iu=FN{Pl(nUQdP%wuD|&GZa;PV+14^Xh{~e zUCp@LLUiAqwf_w(`34!ljK=U`3YG! z+m80BN|pg7_TcjpA{bcuW`Ix4TDQeo2P|icU^#{Z4vPucZ#%($zlvPH7`qq+J_qcZ z1M7>qTny6J1LEcPWds7a*;*Q`0M1~2!S@a!D_~!`TP++s$@{YI0`}!<7|(}`a7&1< z-N)=H1ZoE^KU^?*MwFb`G*K`M%wF9*FgvzGb|15$(H7wya6NWR_c!Y-@!Izkf*e$N zh}RDO+tv~SudqY2F~|82ZWUV)c>=hjC$u>2V*xmu&EL4Vd&T2&UCU-k*mgYhWMSL! z(4*10-kzHP?QwkcD941%>ZhpC?Qo$tD&LKCy*|cJ2VV6C@XS}lQHTF~vNUSq1mlo3 z;4nk{ai*&aVxoTsQ>Nd&k?z8mIs;NjQsBN@*Ybq&eQ}|_M0WiD%L|ZHcACxa;5pn(9!5+Uq#s zwP(4Qtg*Esnvo(+ndAF-pzUACqgnOV1upTkU>d|4kxf>EF{&eE_%b$*j8?8sRp+|LY zcfBztd|WNzBMLT2gB*$k&c=Yv5k>C(HBn@1i6YfMn%6=S*;ySJ~VLvJQ?TlsIj$;_dTyB^2L=gNz_li?OSG5vxanRa*+Zfcc z--x1bZ^hedHW*yY0?4@^!f1{7fvk(x?njif1<@tx!I`nO>sEgJ-ze;iv?=Y3SjU>w zmnD@u`&~lQ00;VATG>iz?K)FetI+FR)q>+WBGW8^2DxhOdCjysy6aCT4y^ofoLTwP zjV2mXmCNSxO>}f*ikT6h6$5&rM09hr`YVD(o(v@ z^!|*;&BZInM%DlRgTfRC@rvmy(8o)zVp6mG8eX<4He~50WW8Y<~fyvLzX^6jOU6 z&k4+QKB!f{pIvsN=3o82d`IR7oraj#r9Z)}%K=l15 zRQ?kKm`Wp*e*vsl&kFl*(}QedsT3UgXgZRPPg?k*c}h0HPP0wN2iaQ=A>7XS*Ux9i zX;N!Yx^t=pZ%Bw!`2}L;A-x@~E-5`pUtU_A9KTpsp8iUZr@!b`?$lqlv)TH~7m(13+vpQG zO@H|Y637w9?Taft;AV~DHyjClUH8pm#o-sdYOX?q*7x8GE45ZzS--cYVcDh&%~Jq& z-2L-S9!J%P3oD7l&Yc^%qsDjPzOUDvdhVzjD6J}S-;lCm|9kfhps5^XoqDL&gwmed zhyh`;yf?2ewO_-mIw4l6q7!91sjQG6HXxnVB$_>uCLtHD^t`Im?e`i**PD34C znY#bz@5T1nz1hJ-{(Y$KKR9xb8wb9BQIPjFb>$$s5(Iq*u^JC?J!*sMg`7W!Y4~{& z>E5Ao>*9KrtE#O@5bo6>(yJ8=)g4i5o*E8og-5TWKocI#bOr}pM+FC5ICOExwg+r* zoIkLYI}m{$ZJu0-0v`uBf}j4nQ;hw<@kl%w7j50UxnH8#KfY~8pr|yZxjz?MEzJR` zjPW0`)uLDHkFHhltrb>7Ly8cuAw6Ip-&*rH$wiKP7eiCZ`kq zP0Du@`8MThHl;`iw<${q-6{DQE2HgeHYL6nx66XU)52{@30s+zux53FaB!Qla1dc& zZ^?vJ@ur-gDiHQr?yN>XEp_~+rl8XKRi@uL$mqG6n2Ay?s4*79zCUY@t#m;qq zITBkjNeIt##Uj|&|FZd&ADC9bsY5HViqq4Yc?t5uZQNfAhz$RRnDFoThnb${pJbEH z`wMFjp`Oj1+Q4ej~C5jxdO926-K6B}ZCGB#%TY zAwQo!e#$Xgaz{e+s!>BNE1`MG#EnsjwjkmtX)i?*iB$3`gmza4q21L6Dcyv_Y_<9t zNHN18ZpP|6%Z%|6=gU2oonvf-0Fn+}7u9U85ayL=C1gj4$nQE*6Og?p!o0GbacPo9 zdr%*_dTY}tg6h)btbY@YP=oR}kbjayjYu8~g1$m%iXKei5-B4;JwW6*)d-Cy+%7$~ z?lK4DzEa)2k{cJ+!23*7*=dwO{>V?QyO~dVA}H)ONDd3Z(##&*f>hCn60G=U#>QF) z4TOjr+FOy;ogT}qedM_F7lZ?{pM>+`&q?6l} zgp-IN)i4B-4;l@ED$fPpTxuA(^|>LO@_xzTOf%w2CKY+*HkrIqqqsnq!Eb`v{;)2C z(V8|DM3V$Pp^n8ebi;ZLfu-crT+Y)kKk0ld*w{^%W|GPCv0`HhB8*%nktC4>Sb_*9 z^`*hxt)3yAe5_=}2K5z@ZHtMp>NV3=wMSYhjtuD}^&_4n#0m93W#Ysq%yoe{Gd^;* zHQuZp>S>v^HToH;<99QA6tYV5Sn!OT78DUyW*gP&sJv7CThq29ziHZLhHbR2S~AI2 zC6OdsR}Vikt=WusTs2c32wpYQwRI*tdL53Pw0Xa|u_o5sBVTNVkg*`swtP#|wjhHXUsWyWeAdR#%qZ?N?tfmAK~Aueh#QHj!hJ-K{FDPhBEJdNs1L1~#P4Qr;l|=v zds-j)B8bXDNql(4_RZ-ZYe})EA)h4RipeJtULu=BPC1B6M3IA02FWK3O9c7hP+hTU z$9`B$|BylMDH$aDGr2F5n*n5w?9V6yV~HHM$s~>vDCz-Tj;=5n4m%R~a2VP7qj%%WEWMvetLj+ zoSTfu6vC);HxM!UQ>_f@Up8%WPM2R9dw_cDW-D_O@zW_^s+bz4s^Y1-!4%HWK%-kC zS{3DQi5ViaK5XAy&5FhApl%@&6_=<_P$i+ZA#PZV8U+;?KW$dG$81*SKn6|4`KTUP zTc`|BLEMG3_iomfyW3Wlr20HVVBZ)cuqS@7sNEw;ZzZPnrOoQzSew;-Ry{&%f>u#I zLTG---S3O-7-^do?9?rAZ17d7zts|OcC*4Anw~n+v(pBDTk6PnE2-O4$M3eZ-rpfs z?+#eKepF$c*`0wx>hCI%x;rHJ%A}5TBLwE8j(m5Kx+it~=0NIRk-8UB3``((pA{UI z^K(n2?hkiT|3KLIfYc+Yi$!WNq*&;I)DkN=F6Wn)NG%I@QvYb`NIwdJ<*6gzQc{nl zj^A=fJuXs@LrQDh#%hHXoR;%Xlt?`p?(ls{9qE-2cq(<|dxF%{spIz)q@EF}XCS3j zYou0L!Pz;#xebZoTMMamBDD@utj$1by%k)X^BYQ}UJG|pzcF>BH$vd` z)RAuksW(!`?{!GMDN=7jY96HQp!a|l{e$Q`<$(wdC->bvB+E0|y6xmQ-*R#ke8>`@ z;ue$=3sv^v*eyhPN!dlQnQeLO9*x~{ymCAi| zqo<(yw5UE4yQk4lLUmQ_D7*@)t3`D+RN-Br%Bk$x*gYF}VGn#u1M?OGBL>PIJr}#@ zcvS7*)}yz11f$C%4n5DuHN;Lsi5dGBWA{SrUy2=xm*OM+%WBk`*u5OPHS8g;Xn%P{ z`-_8n0G9erssuH^n>y0(rW5@p(ch%1X%&Kj$iF8ZXKn1(#*O~{)V-Iw_tW0~Rgqp7 zyH`9gn}H+*d0173JW0L%Du-tR0s6 z{vna`19Fb^fZRks5R33}DCLF`u@*-{ zlpC&c!zl-g8p>U2*~ejS7!o;udCrl(oN^;@GK7zO%8gXHk(66eDtCotpO*SjA(8W= ziKd2kLdsnUDg@XE<*rh>t0=d+RPJiaK0Ec-ghbAd$vM(vC^r`8c{s$x^ z(9UZu`<&EY7ZN#tJznzAE>dnh#)-r$qTB?Pn?O03!cgu8%f2}EH-<#c*Q098xq8Y? z%sC!Uq+El_HBe40qAlAETK*gC-8PG3?(#Ojrp3H5cCQgtCUzTR|3>Ucyuo6AQ!DN* zbltIgixu~F?A~U*g=SRxNvdEH6%6CO=)&9KC+p5+?)0-ag+1dPds*vQ?y6-|?D)OI z%le*P(f84f$L@Vz(GOzxF6wSx(GS(e51YTDAI0t?dqt;+`V^>_U(t_a_p!aAH|fz$ zJPNNUz4}CSK7o#4ENDCED{tRsF$15X9*^CpRQ8!NeP)^XV?8tc|L1D#me_6K{hLbI z8ax0(J1-)WiCLqkU!oG{=`{Rm#cmo;0dL#Wuk^HE;`$|xetOP*1=qt<6NfP#{gW)) zfP`!V6UVQA(#H=<7>~h;8!+ z5-Z@lEI~DQH4ox%kC34dpNBI)864|a#p>d<`1vTfpfmUE;RaBCsA zteVk@O$hU~pQhfIjz6!F-N@TB0 z9KU7F2I`BIn4roYWIJ$8QBRpDfY5DslXtY&Ie*OEjOd z1S9fviRLrJ=flq*lvd>&`JN)R8drW`e4zPkiRRUbc>g zuyV&~qF<$d5v)+o zy+~_b$~p2qPwHj-1?JpKv};YNUE>qSZ%t|Z#>M`X63w-is3+okiRL=I1?Jp3D6P*q z@~tJc0Z)NBw;r0Wm1s^#9KY8}<2O6@8%s1_x5ON_#1hRnbB^?zP_C@PI3fW@+F;P@;L&&X9xMlCd^u+P|q}jl4w%koP1D^PwoLnU&eE*SPTVX6g^8P;_}ddl;`Zc7e}{_RnYcR= zcPB;fO59zgg0tD_G{23BYb0n@;_goTJ&7Z6Pja-sR|W4&+`a5)6r3A2>bWXRnfnuW zf8rky2q{}a4<_zG-62$H;^&F({KU;m+gB5{r^w_(xRp;>10YxW&}GB-FgbYUZ%IRK%9D#FnvF5xqTekHV#wS_19I68Bh= zzy2;ndx--8wVXCBPy7m%TR|g6MbLjjS5MgbEPa9bENc`tByJ;AUl*A-68C!I-hj-Ti6i%$ka$B79ZG`Kwfq*Tl1 zQpQhtdlSdyr%f4Y#b@>$(w~aR%MVyCU_YQ%7QS zTIa76!K+etW$La!&i+8@HLxoRj z=H>i14Zr7rs1R%ewkaniH#{Z?3*-j>8*3Hzkg_+WxjAhj0S?~W4FbJ3`$4GRneze0 z12C|U0u8wB)Bs7qzvn6~Xig1Mo*(ew2L%BG0e1b6=mTgDYdD}ap)5e@{3z%gQAYfj z>_0X~UKoh(P*O!Y2s+$%$&W!dou!e3?nurZ&5xJIoZfkk)|o1Brdn!S1qW*+V7wq~~CJtxLFgj&%nGU>&g1-loR--Qjg78CW z)1g`X0*NQ(tm!b{vlVtPwY0NN%AY3t7FSmwOci5&6!e3Mi*8}(tys(@R^yW>@oefF1Zw%N#$i!B&#jvJ=5`wbVru`ma! z?RT1!6S$Q{HsIDD+#f`Sz591;-D<#^3bf_9EE1J!I!UEY=GMstMLp52Uapr)vCp5x zHlI~aF1CBvMsAp5?o=*LEqH>VsPfY_Q`pJ4-UWY#J43fHkP#U^38(X2Q01sa{zR5P z6{H4NO=qiAfm?+FwlaNm3tJhL;#+bypOUO{a`7pF&E$rZZ-3SxmW*lCr}KDtUcnbt zg*kmH`1AGhl&xp};)+<$)Z#o9&ryimV$yVW1Z-Z8pyvJ5~qGf!c)q|nZUaRkXI0vEnvLUNR9WFw{mA`CdgZYiL;39iEGX%xxL_ZJqO8{_QFLoZ&L>BU*pqfI$J8q#RIuQUo9;B;c?z;md;Enopm zkaD2>=C>hhBO35gQi5B&g0WWeH7kkOZL5|zeBm{DRi^ozBV_CZz7jG!Y& zWj-E_;{-nP%*zDRd-87HpjHQkIckggERX@}7in;PL#BtHWQI5m?9N!?pdinqA4lhL zlUj5WEuCr(Q>T!c7HKlkdgoAmOYbeMwjQASo?$J70hxx+@~pQrMF%A~hj}vHs#pY0 zmN&DE&TKs>Mr%oCA$G;4n3_^E*pNtZ1ma9QZi-wi~J{sJqrP-TLhj?8d0P>ZDbRvDPH z1$YWARZI;qXB?z-gIDko4K$)hPXClbHQr9D@sitqDezH^bAIRHa#NY3CeI1yz||xA z=|x9P-nXnKKi{v=+CufcLQY)?Ud`HaPuj|=kb<0(JM2Mt=_{lt=N!)sl&#@Q{YxN>znsS;43U-}r zq1Kzmd_9ymu#MP2!}gMX-^R6C8gs5P%biz43a$C;mKDAjY3K)GPK+pC{1d6r(Wk#j z-G|rALvpFcOC$caEO=0zYqv!s&e@lno89%A9jCH$RZmSJdIy`N-bpLyW~V z;8q15`m6oNW~h_7=;!sI8W`|T$ZGA*OGnPtW@vpHsS)VLISzAas&RY3L~XHdz_+7C z|0wG*3UW#Y^Bk4@N+rLdBwG$YJ?Jk#{92Uo{a<1zWF?Vn4v?`)bCVsdyTQ6S7%?Yi zI_SWM+Jp|%&0vv({#NR66zJ&6FO8e^^fFoNpz*#;);ZWmO7n_N92NOUE>Vlqacbp2 zLHd)dB05jTG`*IS8N`wf3dmY6}Ud;)ifQsRN~ji(ub3{A+D7^Jo5FZ z^J7R%o?0u)Cubm%=-H4^ZupeknGj9$Fo^3wUxibY2q*tciP8*ngW2 zLD_?<2er>c>26>I$fs|MsdQd7daOSbIHBbFa3}GIli8I^Gc+M=QC1>=yiu+$`aHgq;HVmoqTVSde>y@@5J>Iza#Tet4gF0zpF8+ zMDa@C_&6jI3F1kA2mu7}CZ=!jCT~X?k6=ioKG8swNFh>(0?HG_>wy%~b=^rk@^jLk zLkgL?iQbV1v7jYjM;;_nUqT9j7Wv1q@U7tNRATf%s=p-=y9|)H9NBn-Was4TM{1CX z%?Bp+5}>oR zvi!6Pkvff;mm*QmT6IOZlX#|v^e707meAdeBz2{UdPhU*DzYJ>MX_c1A$7GSP~co+ z30gHK+({%@B|R1bOcMF7A$6@ps|Z-@C0%8$Lu#?*ht&0!Sdn_5{F`44cq;5?Rwjp?{_p```kZu2D zjpc__n97Z*AbCRohup0};y3c$M(Qq!-w?#rBYA_=-H_T?BGqV#O{pYt zfz&Jz$B=sejNC%wU*Yl%w-A zpXC3KEsN;TDrB-dvv!x&_#$ZH3%EkbkP}x!Q2IM1Gn!-07&oVp*?Gj{)xh@&SWW2ZDzU z_m(Ue6tY!qxVLJ<&5F(va7T5`j=}Pn{OUHT2X8k(5C7g4D}YRv`woSJQtmqi;!!+} zyJCIq?pBlTX6J4cfJZPMa`Nw8Dh!r~Hr$(qYa&vX+HhZ7Zo*u({(gaY8vRP9-QYYV z?#JZyl2YI%6Rw8dKB)ZjgqTpsrg^cj5hNbs^RhrSEi@#=LOw4KtEPul(}ULPMFL33 z4-3$U2L+I5i&G?Z4PoA5bz!lMD&&{wY6(}IWOf9V>*K;s zfSMp$fNEXQY>b}}I6|ZLr0^0NwUst%PpOip7&WjGPsajHkduE`+K^)&5WMO!!K;*W z70sEOv-Zvf5)(^+^{gH|3yJ3hm_W|88bjAx+9dZzeLG#8d5eTm{HB~sq6t{Fp8SDq z4|VeJ%!~+^k=-i}(VZUHlT@2S!Io}7$xl39#-oMvPn?Hm7K8s$+SPL_!Y;%nRM#^z zTl+quuJ0k|BB*9meQR-27;w=RDU9vyV#iu|>NqMyHWP z&?S;O>Z$m{%6JSJk>?ys-N(uAxMjo@xiWG9YUCjY87Wgl21ja6F(H88iY?I zSm=pGY)Ag+PiA6IvTazViX0j(q;O+6IfAb~!}sFWsT4ZR^|F{l?o_03rYuxB-&ES>ZvlQBlJ=Sg+C9`ZPaS znTD8en<1Ruheou1sGZ%7;@W1z%ZYid4%VkjHV0HBLh6QWt|$YQOHGszA)I3bFQZ8| zgw^3-j;s!}Gc6jSawBDkf~3w`gd~pNx~xN^lyMZL`_LhI4<4-oNaaRLFjqt%N9(S# zs(9)7h*jb!$Aog69y>_@fN*Yo#6gb3<`}yQ!a4Q@9h?50a~z}sVpKc$0+%Z}_a-rF?gr$;sX1YgE2Q z@?km7gdB^}3D55_%aeO}es3g!4MH>`RWcEC<@JWo^}YCypR`@FHtM_E#oxK4gVa*Y z*Ec`c<5iIFwarbLEn%E1=?*JMpX{s1WA3Qs7Zksi*lx;|zj5-c>~KD~P_yrm zxu~G%cd#t~P7!UVU(JLkN)IAv+>z{<3*4yz5w2uq&VhnH*^csWfUW|ob9qZxH@L*23p%W<=bb5O4%n<_q*t8~VOh;@s^FUx zWapsfev)T3ZJ&s=5O2NB``rZ!ILtIp2GlKI22I%zV<96oBDU?&{&$;EF&P-ru!)j` zb!%cHDuOk-z4hqHv5#&0w2`AoI!OD+2reDJKipX+9|pj=Zeh||KT;M=Af z2F{hHWurajW7%>N1Y9|ht08gwf>wNK(KA0Mg=~%Am$av!*w=oD9~9!wn40bte_==B zWiwM~Wb($_6vWs_0)=#o*XZYz5)%V|Qd98g-4JMnt*qAdaJ6zXSEt-Kqak-QEgX-I zMAa68o%T?ctJH$4D198&9!0fM&LMI8g~LF#;E$mN<`&y@aVl_iOplwq&q+%sm7GO6 zg~ai=EDiC+mH8TF{w+0#vw*AM$qDWRq;1+ik5P^>s$Y>wyJ4<;v?k3uD3g*=+86>^_ikv4MR~GG;`L_A#shv zrCljLxoPLlLe!aQj?dA^e?2a_E34t)56&rvB_FG>keZb4JMy8CqX61U9OK~5dT4Qe_ZQxP-!PTXv8+pSo@|=BiEUs=+0q9^jN4$dZ5vMNJ*UG9lqgNPu#@F z(u`iCR~=S?oBO|ZZ^N;MFyszxfi|h z6of&j_F9&%o~wxw+yS~h45h>rhzzz@H$t*B+trdV1JdTY8x-LkD%~XVPu8H7xCfi_ zo0{!$h`Qk;u4p#z=lM~ZMi>n2p(u~84-r}8$ajW7`WMwMp1YsFvC`;lp;In0~M zG~S|Vyd@i6Sc%G#kt?h6ILW}_Ehbq1^I|)=3hF;Cb@+@N%tmJLY7gK!?zAo=H-|U5 zAsacAc$B=0tk}0wGGjRknSHAsz;6Wm)*EBlx89hQyjM*M=B;dP@E-6XbIE=`b<5*k zJtCI~fxPz6y!`NS^#IQw)LhL|1DjNOy8n<)e43Mq$WfT7teOQ@Z~++>s^G&a_%K(C z%#Ky}Im|s`1skwiVPaLV#8+kd10-pS_3|yrA~ka6^UEwY<1*Mt&UBH^ZI4QYS44Hk zz(3Z+3_h-sD`f5(G{N71O1x(y@sY&a&H^-YrYV}zj+0F@wuh5UR6fKM(c4i~2-a9;nZ+Z*AaM+d%14YM z>be@3lvg!wuQFQe#P7o-u7ycl-z~W_*SGVL+iMSf4t;==@A%ZPG{LM_SP#MfMzRmqjvEE$ffmaAjA+tv90gp7(0=ZFEq zKhD?r9jTv~aIQnqccft***CK?7XL#`A0$S_-U748?bOaqZl`KnFl)xDQA3M}ELDog zQf>+ZL?mT31zC|1mO6fKPI+)mUG}RB9O>SiF_qxx zs|-EAInpp~7JQy2ba&kwg`YQ!{29Kv^LrcrgTkni{efK5ZeN1epXm=~R4m9`(f4pY z4hutE!_7lo<}1BQzS6UP+4Rh_R`#ShJ&k_?vZSbT3d^iRJE1D{*)pg;fc-Q45l}0I zsjxO3Ri5dGjMUMP3UMo7nWDfl87UAE^*b(qw=ZuY=@Uqwux||C92N@F8O=_{CLvwxhnT(Yi|r+5SHJ$?p#&!7pM_#PX0K8M5NB2PeF??SM+~{+F!GVv1DNdfB*Q>}v1ANFP>w%WsOqwt4dID!?Q0K#Yr%n3A-rhm+gAa6im*pBfRwm?HLJD&fevjtrWsg#YA&Q*Dk$X>%S<2&KU!AO$l=z$w z%+4ml0@{VlSgu%|X0(Fo${BDu6oRvX+nL7P!RAbtj|L-+O^Y=M!xWM$b7vw_A@>a9 zerAvxerG1LY&&=+OM&Tu)hQxSp_#L6olyi9rwT>}Ux)%mR!hE84I?AR!m5Ie?5P}l z211sqCNPtSz2Qfer*d|NsFrl48a4*4QdGmrnxp)4xHK+DK06wXmspFH5(2ke;9g*D zxXNTKut-Y5&fITVUlqa$!xUw$7NbMf!015BQu87=&$42`0&BC*vQqhcRX!hD#`}0A z-RFs4aa8a%p_?$EQIB}R;C-qmP^Kz`$OT2K=BN8F zNXV;pVWT7=rq9Xl(n?P$@uFZkWoo06hVBQUtOW%NylEGCacy z?IpG-;7@!+GWb(boMGVO3qJ8)XPo zfInG#5z2u1Fb5%HATu_!cdWISa>g}}qn}6x^0c|bZPzbA8x>iE3UcUXZrtY5CEpUuL2DqE+^x$VRU8+ z5g=SZwY+-p_g3n#aRdhdCSW#o+!pG%O#_oP5Ig|C>ilEpE6iDT^Xs6169o!DHm-jf zIfn`oP;7w-An=hDhOq$~fcqt31Hc8~#KWWhCoz}i+%EzT7#iRK2s{{?^I+EHc~bpb zm*-oTA2JX?H86mz%k$~-rc#%wX@Ot?0tZxs3vm2>m^v1z4$uG~10JD{#i5SHr7lx! ziFrjf-nF0q>{R0YMxv&65K?2CgzmLXkOI>E{S4iA~rhkR> z{RM#n*rS<53>ZnjV>?l&vTp@8=~z_tt7Qdjuo^sVoeB^;9V=}Kn94; zYBD@)C4mO8O>_CYoF>?V7vwlWB{5TcHpUcDpO1F(r$EUU$@-F&d|4%5=5mdYb@t#D z!R%BLTgI2brdi3nFn5$(OI92u(Asq>xsJ>AhOg6u4T9OJB!-Z$VtH;Qftp&$*T}HZ zO1`d=uXFi^f#~$$O=0O&62nP=c^{}`w)WnNbz*)yL*C(`iPD{u3uRbI^24l-cV+jE zkvq84*!F7G@gA4&%L3jWd?3V~>cIGN6GrdN>iAIdA#ivf$`-yL93EAiAVW=(A7@p3 zB5Qa+dH89HwF7^uDl#+o&%%Sx1;bMn7F9gX0n1`DttAf1<`%TiD zt&UED=5h5E8TuvqZUV-u0+EOQ(k#~XV4#fJRmZ2u)d9F#Nhg#ZB?pmpu$2UHS5>lb zA1VYN=3heOsU+5;K>0qilI;Z4qvUWhTxumRQ_0J?1f$1K55U}wu#%Xbg68|&O6G;s zqvS|3Twx_gspKdwN1J)K9vDndbz-UthHs0NtQKaEl2?)8YAXp)58j_kzwTheVRn3I>3=E6FdjI)LPHbv@6=CpupM+^fPA8Q)E2 zJ*)=+_inU0u$2Yi_f@kx>JuFb49+)^oDEjR;WDKq*{@P>Q+3&}7?~u7N1(Y>#T2pw zVE!ZzX{Dk$p1K^h-{_aj{ePcos!1ft_5C2Une-Gx9(#3tl*p^D?(oj2< z@*Id?6%apMK63$TuL|g%0#nfv_DfKHnBLAy*tkpZzFOdYRA;b0zx0Th^ONp$gNUUKdUJ-@0va`h; zs)(@=t#~zITwb(JualvzKyd3-8e5;X0>Oom*&wQ~nHBA83|Q~-XL_UTZT;(-gEumB z+gksoDtb!>w^*0pp(M<~+ok66F1{lRTQ&Dx&B42+N#)5VncQ~b3;LeyZ8Zn)i`obJ z=R+CZg6S{H)Rv6=`+l=Ip!COT=O?nN^*}j4PJ~P+@hRi?nJ9do+0hm~4%&NQO`DA% zMZb{steS)^Eo`q0X@ecDY-szX7}3^YI}440DfY5%U|I~uvrQDRoE@Bs!Vp>34wW6P zjAw_Y9vfK_!_!&}W}$GIOlC2bEn*%^D=tr&gCUfxkfH1d5^Rzxjje2H4rt&NqH0F7 zSj>hwuy+p&+Hl@@1*bSh1q<3MNo_5jsbI8(pRMlJ9nMhdcCY?v63xfI!jx}(^i@>L62^b2`%oFi}Ipeg%{=Q#nqZ= z?d#Rti78HceM5>vWj`s!wJsiYYjLDY=_zubixXW$6cC2=O&SJ@RtJB#)8y(FpR{

pjO{4M{U7(oBXyl%3E6HqEwm1y)p4 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

x&-h zA}zOfc;NP4dJ#C;!trxD@OsXp{F^yi=UtAtwT`pxkgY8^-HJ6Q+XN?DHd=B~*9jK# zu{yqTR_6Fyp0pUHv6*0?!dgS0s;oO6r8&K6Sz@ooJOip)huP3r@D;I#*oha&?}LwVZ14c$fP+ z1?b7HPoo+qXM%_cRBwC2VNZ6 z+jHpUVcXzgD>iWO;jFt+2OoVrIQphJ`Lfya9CAAFQrzN^BDSg}fmZN=)Wf#T*GX~g z)pNQd0%8RRUY{I+`#GI&`Au=WEwq+*`ffR>vs;Q3X76l)i@M~|B%V!N-LFHej~4X(x;S%MO>kbt(b6MOob>19 zV?NUX$R?#cVkZr4y0nrVKl*E6emlaJ#_+w znzJee$eT+K1xffMrCNyn)+3TZBTRl53PNa+hGmB2997S6KZpE1tqc?lN;y1jLufuW| zEub*!BIF6{0&UkKZMWimPNi)EunBz5alnigX6$VtH*@6BQ#^Ze^%*&t%hepNJ>+dp zM_>ex?$PqJaY&_CACe0?zg0S$nvSM@Y+MT za+1|?Gj-O}2; zWc1U9y(ejPtJr&H*m&mHaptW>je83{Z)tC_mUZr}Y{1^C4H(tiy0>womA%bc)w$N} zE!bwV$862s^6mDAHSQknVwACW)CGIWhpJiyWba~SDw$^>V?W7e^4)AA-($r7Imqrc zXZO~zbxhlPAF6s=Kz3i@SFUV)N!$B)w{SbPyOC4LrDj8a^vizwm zEcU^6?$5aU=k{mz=XLG@2JwI�RTdxxe5BTSEKGIv3bjK1AT;Ujxk36JjOV5q`nG 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

go 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%0A(9j2-6vOCPP_ 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

n9#kg%(toW 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

&S4aYM06kExnr)-1tRMzBh)Farp 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

cu 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

Fwc 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̺<1fzuAV; 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

9W+AJg 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 bLw@|>)u4+M_v4TF@kgjhxKEg! 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≶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 bhY}EhvT(PZb%5XMWnmM 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 ?H4>#nV9vmTLp1Oeph{NOt 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ʤdm^zSewIYe}Ah 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

^ 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

211(9XE|j!z{z4 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

  • 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%0AG>LOKwn0~gj$odJzJL$Hn9 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%0A2;OrLjCOrU8E;ARb|bYzF3{L`y#QvdOI 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%0DOivAH@D=RN-yTIDGyIH95dvcS_^@| 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%0DgD}V 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©CtaX_5xXn4}CTOQcX}`X%F!+&F;_PKZYA8#X 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 z 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

    KM0ZsRY)Gpejt3SLyY9-L~TR(Lye?O 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 IXopB&&DGl_GS`+ft!_yR=Tp9GAYV1Q6x}Pd4 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
    MM*w;)}kLcA?RIsP2;%eDqX@<}1y5$FuC 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 ?hQ37fB?2ut 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'VdIoXHZnGx>Xt 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%0AnS~7VsuCY%Lvg`N`2?=&XM!=s}Mm`WC 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 pjMId#QTA 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 z%0D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

    |b`5Ckq>F~n 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

    fp`uYCe?-l#&A>pz~TP!k=e@pY)Np+?P6 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

    6QU8g8IZbTV#95 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�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 prevTime + 1000 ) { - - fpsPanel.update( ( frames * 1000 ) / ( time - prevTime ), 100 ); - - prevTime = time; - frames = 0; - - if ( memPanel ) { - - var memory = performance.memory; - memPanel.update( memory.usedJSHeapSize / 1048576, memory.jsHeapSizeLimit / 1048576 ); - - } - - } - - return time; - - }, - - update: function () { - - beginTime = this.end(); - - }, - - // Backwards Compatibility - - domElement: container, - setMode: showPanel - - }; - -}; - -Stats.Panel = function ( name, fg, bg ) { - - var min = Infinity, max = 0, round = Math.round; - var PR = round( window.devicePixelRatio || 1 ); - - var WIDTH = 80 * PR, HEIGHT = 48 * PR, - TEXT_X = 3 * PR, TEXT_Y = 2 * PR, - GRAPH_X = 3 * PR, GRAPH_Y = 15 * PR, - GRAPH_WIDTH = 74 * PR, GRAPH_HEIGHT = 30 * PR; - - var canvas = document.createElement( 'canvas' ); - canvas.width = WIDTH; - canvas.height = HEIGHT; - canvas.style.cssText = 'width:80px;height:48px'; - - var context = canvas.getContext( '2d' ); - context.font = 'bold ' + ( 9 * PR ) + 'px Helvetica,Arial,sans-serif'; - context.textBaseline = 'top'; - - context.fillStyle = bg; - context.fillRect( 0, 0, WIDTH, HEIGHT ); - - context.fillStyle = fg; - context.fillText( name, TEXT_X, TEXT_Y ); - context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); - - context.fillStyle = bg; - context.globalAlpha = 0.9; - context.fillRect( GRAPH_X, GRAPH_Y, GRAPH_WIDTH, GRAPH_HEIGHT ); - - return { - - dom: canvas, - - update: function ( value, maxValue ) { - - min = Math.min( min, value ); - max = Math.max( max, value ); - - context.fillStyle = bg; - context.globalAlpha = 1; - context.fillRect( 0, 0, WIDTH, GRAPH_Y ); - context.fillStyle = fg; - context.fillText( round( value ) + ' ' + name + ' (' + round( min ) + '-' + round( max ) + ')', TEXT_X, TEXT_Y ); - - context.drawImage( canvas, GRAPH_X + PR, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT, GRAPH_X, GRAPH_Y, GRAPH_WIDTH - PR, GRAPH_HEIGHT ); - - context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, GRAPH_HEIGHT ); - - context.fillStyle = bg; - context.globalAlpha = 0.9; - context.fillRect( GRAPH_X + GRAPH_WIDTH - PR, GRAPH_Y, PR, round( ( 1 - ( value / maxValue ) ) * GRAPH_HEIGHT ) ); - - } - - }; - -}; - -export default Stats; diff --git a/three/addons/libs/surfaceNet.js b/three/addons/libs/surfaceNet.js deleted file mode 100644 index 527c3ee..0000000 --- a/three/addons/libs/surfaceNet.js +++ /dev/null @@ -1,201 +0,0 @@ -/** - * SurfaceNets in JavaScript - * - * Written by Mikola Lysenko (C) 2012 - * - * MIT License - * - * Based on: S.F. Gibson, 'Constrained Elastic Surface Nets'. (1998) MERL Tech Report. - * from https://github.com/mikolalysenko/isosurface/tree/master - * - */ - -let surfaceNet = ( dims, potential, bounds ) => { - - - //Precompute edge table, like Paul Bourke does. - // This saves a bit of time when computing the centroid of each boundary cell - var cube_edges = new Int32Array(24) , edge_table = new Int32Array(256); - (function() { - - //Initialize the cube_edges table - // This is just the vertex number of each cube - var k = 0; - for(var i=0; i<8; ++i) { - for(var j=1; j<=4; j<<=1) { - var p = i^j; - if(i <= p) { - cube_edges[k++] = i; - cube_edges[k++] = p; - } - } - } - - //Initialize the intersection table. - // This is a 2^(cube configuration) -> 2^(edge configuration) map - // There is one entry for each possible cube configuration, and the output is a 12-bit vector enumerating all edges crossing the 0-level. - for(var i=0; i<256; ++i) { - var em = 0; - for(var j=0; j<24; j+=2) { - var a = !!(i & (1<> 1)) : 0; - } - edge_table[i] = em; - } - })(); - - //Internal buffer, this may get resized at run time - var buffer = new Array(4096); - (function() { - for(var i=0; i buffer.length) { - var ol = buffer.length; - buffer.length = R[2] * 2; - while(ol < buffer.length) { - buffer[ol++] = 0; - } - } - - //March over the voxel grid - for(x[2]=0; x[2] 1e-6) { - t = g0 / t; - } else { - continue; - } - - //Interpolate vertices and add up intersections (this can be done without multiplying) - for(var j=0, k=1; j<3; ++j, k<<=1) { - var a = e0 & k - , b = e1 & k; - if(a !== b) { - v[j] += a ? 1.0 - t : t; - } else { - v[j] += a ? 1.0 : 0; - } - } - } - - //Now we just average the edge intersections and add them to coordinate - var s = 1.0 / e_count; - for(var i=0; i<3; ++i) { - v[i] = scale[i] * (x[i] + s * v[i]) + shift[i]; - } - - //Add vertex to buffer, store pointer to vertex index in buffer - buffer[m] = vertices.length; - vertices.push(v); - - //Now we need to add faces together, to do this we just loop over 3 basis components - for(var i=0; i<3; ++i) { - //The first three entries of the edge_mask count the crossings along the edge - if(!(edge_mask & (1< 10000 ? 10000 : power; - return { - In: function (amount) { - return Math.pow(amount, power); - }, - Out: function (amount) { - return 1 - Math.pow((1 - amount), power); - }, - InOut: function (amount) { - if (amount < 0.5) { - return Math.pow((amount * 2), power) / 2; - } - return (1 - Math.pow((2 - amount * 2), power)) / 2 + 0.5; - }, - }; - }, -}); - -var now = function () { return performance.now(); }; - -/** - * Controlling groups of tweens - * - * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components. - * In these cases, you may want to create your own smaller groups of tween - */ -var Group = /** @class */ (function () { - function Group() { - this._tweens = {}; - this._tweensAddedDuringUpdate = {}; - } - Group.prototype.getAll = function () { - var _this = this; - return Object.keys(this._tweens).map(function (tweenId) { - return _this._tweens[tweenId]; - }); - }; - Group.prototype.removeAll = function () { - this._tweens = {}; - }; - Group.prototype.add = function (tween) { - this._tweens[tween.getId()] = tween; - this._tweensAddedDuringUpdate[tween.getId()] = tween; - }; - Group.prototype.remove = function (tween) { - delete this._tweens[tween.getId()]; - delete this._tweensAddedDuringUpdate[tween.getId()]; - }; - Group.prototype.update = function (time, preserve) { - if (time === void 0) { time = now(); } - if (preserve === void 0) { preserve = false; } - var tweenIds = Object.keys(this._tweens); - if (tweenIds.length === 0) { - return false; - } - // Tweens are updated in "batches". If you add a new tween during an - // update, then the new tween will be updated in the next batch. - // If you remove a tween during an update, it may or may not be updated. - // However, if the removed tween was added during the current batch, - // then it will not be updated. - while (tweenIds.length > 0) { - this._tweensAddedDuringUpdate = {}; - for (var i = 0; i < tweenIds.length; i++) { - var tween = this._tweens[tweenIds[i]]; - var autoStart = !preserve; - if (tween && tween.update(time, autoStart) === false && !preserve) { - delete this._tweens[tweenIds[i]]; - } - } - tweenIds = Object.keys(this._tweensAddedDuringUpdate); - } - return true; - }; - return Group; -}()); - -/** - * - */ -var Interpolation = { - Linear: function (v, k) { - var m = v.length - 1; - var f = m * k; - var i = Math.floor(f); - var fn = Interpolation.Utils.Linear; - if (k < 0) { - return fn(v[0], v[1], f); - } - if (k > 1) { - return fn(v[m], v[m - 1], m - f); - } - return fn(v[i], v[i + 1 > m ? m : i + 1], f - i); - }, - Bezier: function (v, k) { - var b = 0; - var n = v.length - 1; - var pw = Math.pow; - var bn = Interpolation.Utils.Bernstein; - for (var i = 0; i <= n; i++) { - b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i); - } - return b; - }, - CatmullRom: function (v, k) { - var m = v.length - 1; - var f = m * k; - var i = Math.floor(f); - var fn = Interpolation.Utils.CatmullRom; - if (v[0] === v[m]) { - if (k < 0) { - i = Math.floor((f = m * (1 + k))); - } - return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i); - } - else { - if (k < 0) { - return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]); - } - if (k > 1) { - return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]); - } - return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i); - } - }, - Utils: { - Linear: function (p0, p1, t) { - return (p1 - p0) * t + p0; - }, - Bernstein: function (n, i) { - var fc = Interpolation.Utils.Factorial; - return fc(n) / fc(i) / fc(n - i); - }, - Factorial: (function () { - var a = [1]; - return function (n) { - var s = 1; - if (a[n]) { - return a[n]; - } - for (var i = n; i > 1; i--) { - s *= i; - } - a[n] = s; - return s; - }; - })(), - CatmullRom: function (p0, p1, p2, p3, t) { - var v0 = (p2 - p0) * 0.5; - var v1 = (p3 - p1) * 0.5; - var t2 = t * t; - var t3 = t * t2; - return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1; - }, - }, -}; - -/** - * Utils - */ -var Sequence = /** @class */ (function () { - function Sequence() { - } - Sequence.nextId = function () { - return Sequence._nextId++; - }; - Sequence._nextId = 0; - return Sequence; -}()); - -var mainGroup = new Group(); - -/** - * Tween.js - Licensed under the MIT license - * https://github.com/tweenjs/tween.js - * ---------------------------------------------- - * - * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors. - * Thank you all, you're awesome! - */ -var Tween = /** @class */ (function () { - function Tween(_object, _group) { - if (_group === void 0) { _group = mainGroup; } - this._object = _object; - this._group = _group; - this._isPaused = false; - this._pauseStart = 0; - this._valuesStart = {}; - this._valuesEnd = {}; - this._valuesStartRepeat = {}; - this._duration = 1000; - this._isDynamic = false; - this._initialRepeat = 0; - this._repeat = 0; - this._yoyo = false; - this._isPlaying = false; - this._reversed = false; - this._delayTime = 0; - this._startTime = 0; - this._easingFunction = Easing.Linear.None; - this._interpolationFunction = Interpolation.Linear; - // eslint-disable-next-line - this._chainedTweens = []; - this._onStartCallbackFired = false; - this._onEveryStartCallbackFired = false; - this._id = Sequence.nextId(); - this._isChainStopped = false; - this._propertiesAreSetUp = false; - this._goToEnd = false; - } - Tween.prototype.getId = function () { - return this._id; - }; - Tween.prototype.isPlaying = function () { - return this._isPlaying; - }; - Tween.prototype.isPaused = function () { - return this._isPaused; - }; - Tween.prototype.to = function (target, duration) { - if (duration === void 0) { duration = 1000; } - if (this._isPlaying) - throw new Error('Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.'); - this._valuesEnd = target; - this._propertiesAreSetUp = false; - this._duration = duration; - return this; - }; - Tween.prototype.duration = function (duration) { - if (duration === void 0) { duration = 1000; } - this._duration = duration; - return this; - }; - Tween.prototype.dynamic = function (dynamic) { - if (dynamic === void 0) { dynamic = false; } - this._isDynamic = dynamic; - return this; - }; - Tween.prototype.start = function (time, overrideStartingValues) { - if (time === void 0) { time = now(); } - if (overrideStartingValues === void 0) { overrideStartingValues = false; } - if (this._isPlaying) { - return this; - } - // eslint-disable-next-line - this._group && this._group.add(this); - this._repeat = this._initialRepeat; - if (this._reversed) { - // If we were reversed (f.e. using the yoyo feature) then we need to - // flip the tween direction back to forward. - this._reversed = false; - for (var property in this._valuesStartRepeat) { - this._swapEndStartRepeatValues(property); - this._valuesStart[property] = this._valuesStartRepeat[property]; - } - } - this._isPlaying = true; - this._isPaused = false; - this._onStartCallbackFired = false; - this._onEveryStartCallbackFired = false; - this._isChainStopped = false; - this._startTime = time; - this._startTime += this._delayTime; - if (!this._propertiesAreSetUp || overrideStartingValues) { - this._propertiesAreSetUp = true; - // If dynamic is not enabled, clone the end values instead of using the passed-in end values. - if (!this._isDynamic) { - var tmp = {}; - for (var prop in this._valuesEnd) - tmp[prop] = this._valuesEnd[prop]; - this._valuesEnd = tmp; - } - this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, overrideStartingValues); - } - return this; - }; - Tween.prototype.startFromCurrentValues = function (time) { - return this.start(time, true); - }; - Tween.prototype._setupProperties = function (_object, _valuesStart, _valuesEnd, _valuesStartRepeat, overrideStartingValues) { - for (var property in _valuesEnd) { - var startValue = _object[property]; - var startValueIsArray = Array.isArray(startValue); - var propType = startValueIsArray ? 'array' : typeof startValue; - var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]); - // If `to()` specifies a property that doesn't exist in the source object, - // we should not set that property in the object - if (propType === 'undefined' || propType === 'function') { - continue; - } - // Check if an Array was provided as property value - if (isInterpolationList) { - var endValues = _valuesEnd[property]; - if (endValues.length === 0) { - continue; - } - // Handle an array of relative values. - // Creates a local copy of the Array with the start value at the front - var temp = [startValue]; - for (var i = 0, l = endValues.length; i < l; i += 1) { - var value = this._handleRelativeValue(startValue, endValues[i]); - if (isNaN(value)) { - isInterpolationList = false; - console.warn('Found invalid interpolation list. Skipping.'); - break; - } - temp.push(value); - } - if (isInterpolationList) { - // if (_valuesStart[property] === undefined) { // handle end values only the first time. NOT NEEDED? setupProperties is now guarded by _propertiesAreSetUp. - _valuesEnd[property] = temp; - // } - } - } - // handle the deepness of the values - if ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) { - _valuesStart[property] = startValueIsArray ? [] : {}; - var nestedObject = startValue; - for (var prop in nestedObject) { - _valuesStart[property][prop] = nestedObject[prop]; - } - // TODO? repeat nested values? And yoyo? And array values? - _valuesStartRepeat[property] = startValueIsArray ? [] : {}; - var endValues = _valuesEnd[property]; - // If dynamic is not enabled, clone the end values instead of using the passed-in end values. - if (!this._isDynamic) { - var tmp = {}; - for (var prop in endValues) - tmp[prop] = endValues[prop]; - _valuesEnd[property] = endValues = tmp; - } - this._setupProperties(nestedObject, _valuesStart[property], endValues, _valuesStartRepeat[property], overrideStartingValues); - } - else { - // Save the starting value, but only once unless override is requested. - if (typeof _valuesStart[property] === 'undefined' || overrideStartingValues) { - _valuesStart[property] = startValue; - } - if (!startValueIsArray) { - // eslint-disable-next-line - // @ts-ignore FIXME? - _valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings - } - if (isInterpolationList) { - // eslint-disable-next-line - // @ts-ignore FIXME? - _valuesStartRepeat[property] = _valuesEnd[property].slice().reverse(); - } - else { - _valuesStartRepeat[property] = _valuesStart[property] || 0; - } - } - } - }; - Tween.prototype.stop = function () { - if (!this._isChainStopped) { - this._isChainStopped = true; - this.stopChainedTweens(); - } - if (!this._isPlaying) { - return this; - } - // eslint-disable-next-line - this._group && this._group.remove(this); - this._isPlaying = false; - this._isPaused = false; - if (this._onStopCallback) { - this._onStopCallback(this._object); - } - return this; - }; - Tween.prototype.end = function () { - this._goToEnd = true; - this.update(Infinity); - return this; - }; - Tween.prototype.pause = function (time) { - if (time === void 0) { time = now(); } - if (this._isPaused || !this._isPlaying) { - return this; - } - this._isPaused = true; - this._pauseStart = time; - // eslint-disable-next-line - this._group && this._group.remove(this); - return this; - }; - Tween.prototype.resume = function (time) { - if (time === void 0) { time = now(); } - if (!this._isPaused || !this._isPlaying) { - return this; - } - this._isPaused = false; - this._startTime += time - this._pauseStart; - this._pauseStart = 0; - // eslint-disable-next-line - this._group && this._group.add(this); - return this; - }; - Tween.prototype.stopChainedTweens = function () { - for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) { - this._chainedTweens[i].stop(); - } - return this; - }; - Tween.prototype.group = function (group) { - if (group === void 0) { group = mainGroup; } - this._group = group; - return this; - }; - Tween.prototype.delay = function (amount) { - if (amount === void 0) { amount = 0; } - this._delayTime = amount; - return this; - }; - Tween.prototype.repeat = function (times) { - if (times === void 0) { times = 0; } - this._initialRepeat = times; - this._repeat = times; - return this; - }; - Tween.prototype.repeatDelay = function (amount) { - this._repeatDelayTime = amount; - return this; - }; - Tween.prototype.yoyo = function (yoyo) { - if (yoyo === void 0) { yoyo = false; } - this._yoyo = yoyo; - return this; - }; - Tween.prototype.easing = function (easingFunction) { - if (easingFunction === void 0) { easingFunction = Easing.Linear.None; } - this._easingFunction = easingFunction; - return this; - }; - Tween.prototype.interpolation = function (interpolationFunction) { - if (interpolationFunction === void 0) { interpolationFunction = Interpolation.Linear; } - this._interpolationFunction = interpolationFunction; - return this; - }; - // eslint-disable-next-line - Tween.prototype.chain = function () { - var tweens = []; - for (var _i = 0; _i < arguments.length; _i++) { - tweens[_i] = arguments[_i]; - } - this._chainedTweens = tweens; - return this; - }; - Tween.prototype.onStart = function (callback) { - this._onStartCallback = callback; - return this; - }; - Tween.prototype.onEveryStart = function (callback) { - this._onEveryStartCallback = callback; - return this; - }; - Tween.prototype.onUpdate = function (callback) { - this._onUpdateCallback = callback; - return this; - }; - Tween.prototype.onRepeat = function (callback) { - this._onRepeatCallback = callback; - return this; - }; - Tween.prototype.onComplete = function (callback) { - this._onCompleteCallback = callback; - return this; - }; - Tween.prototype.onStop = function (callback) { - this._onStopCallback = callback; - return this; - }; - /** - * @returns true if the tween is still playing after the update, false - * otherwise (calling update on a paused tween still returns true because - * it is still playing, just paused). - */ - Tween.prototype.update = function (time, autoStart) { - if (time === void 0) { time = now(); } - if (autoStart === void 0) { autoStart = true; } - if (this._isPaused) - return true; - var property; - var elapsed; - var endTime = this._startTime + this._duration; - if (!this._goToEnd && !this._isPlaying) { - if (time > endTime) - return false; - if (autoStart) - this.start(time, true); - } - this._goToEnd = false; - if (time < this._startTime) { - return true; - } - if (this._onStartCallbackFired === false) { - if (this._onStartCallback) { - this._onStartCallback(this._object); - } - this._onStartCallbackFired = true; - } - if (this._onEveryStartCallbackFired === false) { - if (this._onEveryStartCallback) { - this._onEveryStartCallback(this._object); - } - this._onEveryStartCallbackFired = true; - } - elapsed = (time - this._startTime) / this._duration; - elapsed = this._duration === 0 || elapsed > 1 ? 1 : elapsed; - var value = this._easingFunction(elapsed); - // properties transformations - this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value); - if (this._onUpdateCallback) { - this._onUpdateCallback(this._object, elapsed); - } - if (elapsed === 1) { - if (this._repeat > 0) { - if (isFinite(this._repeat)) { - this._repeat--; - } - // Reassign starting values, restart by making startTime = now - for (property in this._valuesStartRepeat) { - if (!this._yoyo && typeof this._valuesEnd[property] === 'string') { - this._valuesStartRepeat[property] = - // eslint-disable-next-line - // @ts-ignore FIXME? - this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]); - } - if (this._yoyo) { - this._swapEndStartRepeatValues(property); - } - this._valuesStart[property] = this._valuesStartRepeat[property]; - } - if (this._yoyo) { - this._reversed = !this._reversed; - } - if (this._repeatDelayTime !== undefined) { - this._startTime = time + this._repeatDelayTime; - } - else { - this._startTime = time + this._delayTime; - } - if (this._onRepeatCallback) { - this._onRepeatCallback(this._object); - } - this._onEveryStartCallbackFired = false; - return true; - } - else { - if (this._onCompleteCallback) { - this._onCompleteCallback(this._object); - } - for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) { - // Make the chained tweens start exactly at the time they should, - // even if the `update()` method was called way past the duration of the tween - this._chainedTweens[i].start(this._startTime + this._duration, false); - } - this._isPlaying = false; - return false; - } - } - return true; - }; - Tween.prototype._updateProperties = function (_object, _valuesStart, _valuesEnd, value) { - for (var property in _valuesEnd) { - // Don't update properties that do not exist in the source object - if (_valuesStart[property] === undefined) { - continue; - } - var start = _valuesStart[property] || 0; - var end = _valuesEnd[property]; - var startIsArray = Array.isArray(_object[property]); - var endIsArray = Array.isArray(end); - var isInterpolationList = !startIsArray && endIsArray; - if (isInterpolationList) { - _object[property] = this._interpolationFunction(end, value); - } - else if (typeof end === 'object' && end) { - // eslint-disable-next-line - // @ts-ignore FIXME? - this._updateProperties(_object[property], start, end, value); - } - else { - // Parses relative end values with start as base (e.g.: +10, -3) - end = this._handleRelativeValue(start, end); - // Protect against non numeric properties. - if (typeof end === 'number') { - // eslint-disable-next-line - // @ts-ignore FIXME? - _object[property] = start + (end - start) * value; - } - } - } - }; - Tween.prototype._handleRelativeValue = function (start, end) { - if (typeof end !== 'string') { - return end; - } - if (end.charAt(0) === '+' || end.charAt(0) === '-') { - return start + parseFloat(end); - } - return parseFloat(end); - }; - Tween.prototype._swapEndStartRepeatValues = function (property) { - var tmp = this._valuesStartRepeat[property]; - var endValue = this._valuesEnd[property]; - if (typeof endValue === 'string') { - this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue); - } - else { - this._valuesStartRepeat[property] = this._valuesEnd[property]; - } - this._valuesEnd[property] = tmp; - }; - return Tween; -}()); - -var VERSION = '21.0.0'; - -/** - * Tween.js - Licensed under the MIT license - * https://github.com/tweenjs/tween.js - * ---------------------------------------------- - * - * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors. - * Thank you all, you're awesome! - */ -var nextId = Sequence.nextId; -/** - * Controlling groups of tweens - * - * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components. - * In these cases, you may want to create your own smaller groups of tweens. - */ -var TWEEN = mainGroup; -// This is the best way to export things in a way that's compatible with both ES -// Modules and CommonJS, without build hacks, and so as not to break the -// existing API. -// https://github.com/rollup/rollup/issues/1961#issuecomment-423037881 -var getAll = TWEEN.getAll.bind(TWEEN); -var removeAll = TWEEN.removeAll.bind(TWEEN); -var add = TWEEN.add.bind(TWEEN); -var remove = TWEEN.remove.bind(TWEEN); -var update = TWEEN.update.bind(TWEEN); -var exports = { - Easing: Easing, - Group: Group, - Interpolation: Interpolation, - now: now, - Sequence: Sequence, - nextId: nextId, - Tween: Tween, - VERSION: VERSION, - getAll: getAll, - removeAll: removeAll, - add: add, - remove: remove, - update: update, -}; - -export { Easing, Group, Interpolation, Sequence, Tween, VERSION, add, exports as default, getAll, nextId, now, remove, removeAll, update }; diff --git a/three/addons/libs/utif.module.js b/three/addons/libs/utif.module.js deleted file mode 100644 index 9a655bd..0000000 --- a/three/addons/libs/utif.module.js +++ /dev/null @@ -1,1665 +0,0 @@ -var UTIF = {}; - -// Following lines add a JPEG decoder to UTIF.JpegDecoder -(function(){"use strict";var W=function a1(){function W(p){this.message="JPEG error: "+p}W.prototype=new Error;W.prototype.name="JpegError";W.constructor=W;return W}(),ak=function ag(){var p=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),t=4017,ac=799,ah=3406,ao=2276,ar=1567,ai=3784,s=5793,ad=2896;function ak(Q){if(Q==null)Q={};if(Q.w==null)Q.w=-1;this.V=Q.n;this.N=Q.w}function a5(Q,h){var f=0,G=[],n,E,a=16,F;while(a>0&&!Q[a-1]){a--}G.push({children:[],index:0});var C=G[0];for(n=0;n0){C=G.pop()}C.index++;G.push(C);while(G.length<=n){G.push(F={children:[],index:0});C.children[C.index]=F.children;C=F}f++}if(n+10){V--;return J>>V&1}J=Q[h++];if(J===255){var I=Q[h++];if(I){if(I===220&&d){h+=2;var l=Z(Q,h);h+=2;if(l>0&&l!==f.s){throw new DNLMarkerError("Found DNL marker (0xFFDC) while parsing scan data",l)}}else if(I===217){if(d){var M=q*8; -if(M>0&&M>>7}function u(I){var l=I;while(!0){l=l[Y()];switch(typeof l){case"number":return l;case"object":continue}throw new W("invalid huffman sequence")}}function m(I){var e=0;while(I>0){e=e<<1|Y();I--}return e}function j(I){if(I===1){return Y()===1?1:-1}var e=m(I);if(e>=1<>4;if(i===0){if(A<15){break}N+=16;continue}N+=A;var o=p[N];X.D[I+o]=j(i);N++}}function $(X,I){var l=u(X.J),M=l===0?0:j(l)<0){r--;return}var N=E,l=a;while(N<=l){var M=u(X.i),S=M&15,i=M>>4;if(S===0){if(i<15){r=m(i)+(1<>4;if(S===0){if(M<15){r=m(M)+(1<0){for(O=0;O0?"unexpected":"excessive";h=k.offset}if(k.M>=65488&&k.M<=65495){h+=2}else{break}}return h-z}function al(Q,h,f){var G=Q.$,n=Q.D,E,a,C,F,d,T,U,z,J,V,Y,u,m,j,v,$,b;if(!G){throw new W("missing required Quantization Table.")}for(var r=0;r<64;r+=8){J=n[h+r];V=n[h+r+1];Y=n[h+r+2];u=n[h+r+3];m=n[h+r+4];j=n[h+r+5];v=n[h+r+6];$=n[h+r+7];J*=G[r];if((V|Y|u|m|j|v|$)===0){b=s*J+512>>10;f[r]=b;f[r+1]=b;f[r+2]=b;f[r+3]=b;f[r+4]=b;f[r+5]=b;f[r+6]=b;f[r+7]=b;continue}V*=G[r+1];Y*=G[r+2];u*=G[r+3];m*=G[r+4];j*=G[r+5];v*=G[r+6];$*=G[r+7];E=s*J+128>>8;a=s*m+128>>8;C=Y;F=v;d=ad*(V-$)+128>>8;z=ad*(V+$)+128>>8; -T=u<<4;U=j<<4;E=E+a+1>>1;a=E-a;b=C*ai+F*ar+128>>8;C=C*ar-F*ai+128>>8;F=b;d=d+U+1>>1;U=d-U;z=z+T+1>>1;T=z-T;E=E+F+1>>1;F=E-F;a=a+C+1>>1;C=a-C;b=d*ao+z*ah+2048>>12;d=d*ah-z*ao+2048>>12;z=b;b=T*ac+U*t+2048>>12;T=T*t-U*ac+2048>>12;U=b;f[r]=E+z;f[r+7]=E-z;f[r+1]=a+U;f[r+6]=a-U;f[r+2]=C+T;f[r+5]=C-T;f[r+3]=F+d;f[r+4]=F-d}for(var P=0;P<8;++P){J=f[P];V=f[P+8];Y=f[P+16];u=f[P+24];m=f[P+32];j=f[P+40];v=f[P+48];$=f[P+56];if((V|Y|u|m|j|v|$)===0){b=s*J+8192>>14;if(b<-2040){b=0}else if(b>=2024){b=255}else{b=b+2056>>4}n[h+P]=b;n[h+P+8]=b;n[h+P+16]=b;n[h+P+24]=b;n[h+P+32]=b;n[h+P+40]=b;n[h+P+48]=b;n[h+P+56]=b;continue}E=s*J+2048>>12;a=s*m+2048>>12;C=Y;F=v;d=ad*(V-$)+2048>>12;z=ad*(V+$)+2048>>12;T=u;U=j;E=(E+a+1>>1)+4112;a=E-a;b=C*ai+F*ar+2048>>12;C=C*ar-F*ai+2048>>12;F=b;d=d+U+1>>1;U=d-U;z=z+T+1>>1;T=z-T;E=E+F+1>>1;F=E-F;a=a+C+1>>1;C=a-C;b=d*ao+z*ah+2048>>12;d=d*ah-z*ao+2048>>12;z=b; -b=T*ac+U*t+2048>>12;T=T*t-U*ac+2048>>12;U=b;J=E+z;$=E-z;V=a+U;v=a-U;Y=C+T;j=C-T;u=F+d;m=F-d;if(J<16){J=0}else if(J>=4080){J=255}else{J>>=4}if(V<16){V=0}else if(V>=4080){V=255}else{V>>=4}if(Y<16){Y=0}else if(Y>=4080){Y=255}else{Y>>=4}if(u<16){u=0}else if(u>=4080){u=255}else{u>>=4}if(m<16){m=0}else if(m>=4080){m=255}else{m>>=4}if(j<16){j=0}else if(j>=4080){j=255}else{j>>=4}if(v<16){v=0}else if(v>=4080){v=255}else{v>>=4}if($<16){$=0}else if($>=4080){$=255}else{$>>=4}n[h+P]=J; -n[h+P+8]=V;n[h+P+16]=Y;n[h+P+24]=u;n[h+P+32]=m;n[h+P+40]=j;n[h+P+48]=v;n[h+P+56]=$}}function a0(Q,h){var f=h.P,G=h.c,n=new Int16Array(64);for(var E=0;E=G){return null}var E=Z(Q,h);if(E>=65472&&E<=65534){return{u:null,M:E,offset:h}}var a=Z(Q,n);while(!(a>=65472&&a<=65534)){if(++n>=G){return null}a=Z(Q,n)}return{u:E.toString(16),M:a,offset:n}}ak.prototype={parse(Q,h){if(h==null)h={}; -var f=h.F,E=0,a=null,C=null,F,d,T=0;function G(){var o=Z(Q,E);E+=2;var B=E+o-2,V=an(Q,B,E);if(V&&V.u){B=V.offset}var ab=Q.subarray(E,B);E+=ab.length;return ab}function n(F){var o=Math.ceil(F.o/8/F.X),B=Math.ceil(F.s/8/F.B);for(var Y=0;Y>4===0){for(u=0;u<64;u++){b=p[u];P[b]=Q[E++]}}else if(r>>4===1){for(u=0;u<64;u++){b=p[u];P[b]=Z(Q,E);E+=2}}else{throw new W("DQT - invalid table spec")}U[r&15]=P}break;case 65472:case 65473:case 65474:if(F){throw new W("Only single frame JPEGs supported")}E+=2;F={};F.G=V===65473;F.Z=V===65474;F.precision=Q[E++];var D=Z(Q,E),a4,q=0,H=0;E+=2;F.s=f||D;F.o=Z(Q,E);E+=2;F.W=[];F._={};var a8=Q[E++];for(Y=0;Y>4,y=Q[E+1]&15;if(q>4===0?J:z)[_&15]=a5(N,K)}break;case 65501:E+=2;d=Z(Q,E);E+=2;break;case 65498:var x=++T===1&&!f,R;E+=2;var k=Q[E++],g=[];for(Y=0;Y>4];R.i=z[a6&15];g.push(R)}var I=Q[E++],l=Q[E++],M=Q[E++];try{var S=a7(Q,E,F,g,d,I,l,M>>4,M&15,x);E+=S}catch(ex){if(ex instanceof DNLMarkerError){return this.parse(Q,{F:ex.s})}else if(ex instanceof EOIMarkerError){break markerLoop}throw ex}break;case 65500:E+=4;break;case 65535:if(Q[E]!==255){E--}break;default:var i=an(Q,E-2,E-3);if(i&&i.u){E=i.offset;break}if(E>=Q.length-1){break markerLoop}throw new W("JpegImage.parse - unknown marker: "+V.toString(16))}V=Z(Q,E);E+=2}this.width=F.o;this.height=F.s;this.g=a;this.b=C;this.W=[];for(Y=0;Y>8)+P[J+1]}}}return v},get f(){if(this.b){return!!this.b.a}if(this.p===3){if(this.N===0){return!1}else if(this.W[0].index===82&&this.W[1].index===71&&this.W[2].index===66){return!1}return!0}if(this.N===1){return!0}return!1},z:function aj(Q){var h,f,G; -for(var n=0,E=Q.length;n4){throw new W("Unsupported color mode")}var E=this.Y(h,f,n);if(this.p===1&&G){var a=E.length,C=new Uint8ClampedArray(a*3),F=0;for(var d=0;d>24}function Z(p,t){return p[t]<<8|p[t+1]}function am(p,t){return(p[t]<<24|p[t+1]<<16|p[t+2]<<8|p[t+3])>>>0}UTIF.JpegDecoder=ak}()); - -//UTIF.JpegDecoder = PDFJS.JpegImage; - - -UTIF.encodeImage = function(rgba, w, h, metadata) -{ - var idf = { "t256":[w], "t257":[h], "t258":[8,8,8,8], "t259":[1], "t262":[2], "t273":[1000], // strips offset - "t277":[4], "t278":[h], /* rows per strip */ "t279":[w*h*4], // strip byte counts - "t282":[[72,1]], "t283":[[72,1]], "t284":[1], "t286":[[0,1]], "t287":[[0,1]], "t296":[1], "t305": ["Photopea (UTIF.js)"], "t338":[1] - }; - if (metadata) for (var i in metadata) idf[i] = metadata[i]; - - var prfx = new Uint8Array(UTIF.encode([idf])); - var img = new Uint8Array(rgba); - var data = new Uint8Array(1000+w*h*4); - for(var i=0; i probably not an image - img.isLE = id=="II"; - img.width = img["t256"][0]; //delete img["t256"]; - img.height = img["t257"][0]; //delete img["t257"]; - - var cmpr = img["t259"] ? img["t259"][0] : 1; //delete img["t259"]; - var fo = img["t266"] ? img["t266"][0] : 1; //delete img["t266"]; - if(img["t284"] && img["t284"][0]==2) log("PlanarConfiguration 2 should not be used!"); - if(cmpr==7 && img["t258"] && img["t258"].length>3) img["t258"]=img["t258"].slice(0,3); - - var spp = img["t277"]?img["t277"][0]:1; - var bps = img["t258"]?img["t258"][0]:1; - var bipp = bps*spp; // bits per pixel - /* - var bipp; // bits per pixel - if(img["t258"]) bipp = Math.min(32,img["t258"][0])*img["t258"].length; - else bipp = (img["t277"]?img["t277"][0]:1); - */ - // Some .NEF files have t258==14, even though they use 16 bits per pixel - if(cmpr==1 && img["t279"]!=null && img["t278"] && img["t262"][0]==32803) { - bipp = Math.round((img["t279"][0]*8)/(img.width*img["t278"][0])); - } - if(img["t50885"] && img["t50885"][0]==4) bipp = img["t258"][0]*3; // RAW_CANON_40D_SRAW_V103.CR2 - var bipl = Math.ceil(img.width*bipp/8)*8; - var soff = img["t273"]; if(soff==null || img["t322"]) soff = img["t324"]; - var bcnt = img["t279"]; if(cmpr==1 && soff.length==1) bcnt = [img.height*(bipl>>>3)]; if(bcnt==null || img["t322"]) bcnt = img["t325"]; - //bcnt[0] = Math.min(bcnt[0], data.length); // Hasselblad, "RAW_HASSELBLAD_H3D39II.3FR" - var bytes = new Uint8Array(img.height*(bipl>>>3)), bilen = 0; - - if(img["t322"]!=null) // tiled - { - var tw = img["t322"][0], th = img["t323"][0]; - var tx = Math.floor((img.width + tw - 1) / tw); - var ty = Math.floor((img.height + th - 1) / th); - var tbuff = new Uint8Array(Math.ceil(tw*th*bipp/8)|0); - console.log("====", tx,ty); - for(var y=0; y>>3, bpl = Math.ceil(bps*noc*w/8); - - // convert to Little Endian /* - if(bps==16 && !img.isLE && img["t33422"]==null) // not DNG - for(var y=0; y>>8)&255; - } - else if(noc==3) for(var j= 3; j> 3 ^ 0x3ff0; - return (buffer[byte] | buffer[byte + 1] << 8) >> (vpos & 7) & ~((-1) << bits); - } - } - // Raw Format 6 - function getBufferDataRW6(i) { - return buffer[vpos + 15 - i]; - } - function readPageRW6() { - bytes[0] = (getBufferDataRW6(0) << 6) | (getBufferDataRW6(1) >> 2); // 14 bit - bytes[1] = (((getBufferDataRW6(1) & 0x3) << 12) | (getBufferDataRW6(2) << 4) | (getBufferDataRW6(3) >> 4)) & 0x3fff; - bytes[2] = (getBufferDataRW6(3) >> 2) & 0x3; - bytes[3] = ((getBufferDataRW6(3) & 0x3) << 8) | getBufferDataRW6(4); - bytes[4] = (getBufferDataRW6(5) << 2) | (getBufferDataRW6(6) >> 6); - bytes[5] = ((getBufferDataRW6(6) & 0x3f) << 4) | (getBufferDataRW6(7) >> 4); - bytes[6] = (getBufferDataRW6(7) >> 2) & 0x3; - bytes[7] = ((getBufferDataRW6(7) & 0x3) << 8) | getBufferDataRW6(8); - bytes[8] = ((getBufferDataRW6(9) << 2) & 0x3fc) | (getBufferDataRW6(10) >> 6); - bytes[9] = ((getBufferDataRW6(10) << 4) | (getBufferDataRW6(11) >> 4)) & 0x3ff; - bytes[10] = (getBufferDataRW6(11) >> 2) & 0x3; - bytes[11] = ((getBufferDataRW6(11) & 0x3) << 8) | getBufferDataRW6(12); - bytes[12] = (((getBufferDataRW6(13) << 2) & 0x3fc) | getBufferDataRW6(14) >> 6) & 0x3ff; - bytes[13] = ((getBufferDataRW6(14) << 4) | (getBufferDataRW6(15) >> 4)) & 0x3ff; - vpos += 16; - byte = 0; - } - function readPageRw6_bps12() { - bytes[0] = (getBufferDataRW6(0) << 4) | (getBufferDataRW6(1) >> 4); - bytes[1] = (((getBufferDataRW6(1) & 0xf) << 8) | (getBufferDataRW6(2))) & 0xfff; - bytes[2] = (getBufferDataRW6(3) >> 6) & 0x3; - bytes[3] = ((getBufferDataRW6(3) & 0x3f) << 2) | (getBufferDataRW6(4) >> 6); - bytes[4] = ((getBufferDataRW6(4) & 0x3f) << 2) | (getBufferDataRW6(5) >> 6); - bytes[5] = ((getBufferDataRW6(5) & 0x3f) << 2) | (getBufferDataRW6(6) >> 6); - bytes[6] = (getBufferDataRW6(6) >> 4) & 0x3; - bytes[7] = ((getBufferDataRW6(6) & 0xf) << 4) | (getBufferDataRW6(7) >> 4); - bytes[8] = ((getBufferDataRW6(7) & 0xf) << 4) | (getBufferDataRW6(8) >> 4); - bytes[9] = ((getBufferDataRW6(8) & 0xf) << 4) | (getBufferDataRW6(9) >> 4); - bytes[10] = (getBufferDataRW6(9) >> 2) & 0x3; - bytes[11] = ((getBufferDataRW6(9) & 0x3) << 6) | (getBufferDataRW6(10) >> 2); - bytes[12] = ((getBufferDataRW6(10) & 0x3) << 6) | (getBufferDataRW6(11) >> 2); - bytes[13] = ((getBufferDataRW6(11) & 0x3) << 6) | (getBufferDataRW6(12) >> 2); - bytes[14] = getBufferDataRW6(12) & 0x3; - bytes[15] = getBufferDataRW6(13); - bytes[16] = getBufferDataRW6(14); - bytes[17] = getBufferDataRW6(15); - - vpos += 16; - byte = 0; - } - // Main loop - function resetPredNonzeros(){ - pred[0]=0; pred[1]=0; - nonz[0]=0; nonz[1]=0; - } - if (RW2_Format == 7) { - throw RW2_Format; - - // Skatch of version 7 - /* - var pixels_per_block = bitsPerSample == 14 ? 9 : 10; - rowbytes = 0|(rawWidth / pixels_per_block * 16); - for (row = 0; row < rawHeight - 15; row += 16) { - var rowstoread = Math.min(16, rawHeight - row); - var readlen = rowbytes*rowstoread; - buffer = new Uint8Array(image.slice(bidx, bidx+readlen)); - vpos = 0; - bidx += readlen; - i = 0; - for (crow = 0; crow < rowstoread; crow++) { - idx = (row + crow) * rawWidth; - for (col = 0; col <= rawWidth - pixels_per_block; col += pixels_per_block) { - for(j=0; j < pixels_per_block; j++) bytes[j] = buffer[i++]; - if (bitsPerSample == 12) { - result[idx ] = ((bytes[1] & 0xF) << 8) + bytes[0]; - result[idx + 1] = 16 * bytes[2] + (bytes[1] >> 4); - result[idx + 2] = ((bytes[4] & 0xF) << 8) + bytes[3]; - result[idx + 3] = 16 * bytes[5] + (bytes[4] >> 4); - result[idx + 4] = ((bytes[7] & 0xF) << 8) + bytes[6]; - result[idx + 5] = 16 * bytes[8] + (bytes[7] >> 4); - result[idx + 6] = ((bytes[10] & 0xF) << 8) + bytes[9]; - result[idx + 7] = 16 * bytes[11] + (bytes[10] >> 4); - result[idx + 8] = ((bytes[13] & 0xF) << 8) + bytes[12]; - result[idx + 9] = 16 * bytes[14] + (bytes[13] >> 4); - } else if (bitsPerSample == 14) { - result[idx] = bytes[0] + ((bytes[1] & 0x3F) << 8); - result[idx + 1] = (bytes[1] >> 6) + 4 * (bytes[2]) + ((bytes[3] & 0xF) << 10); - result[idx + 2] = (bytes[3] >> 4) + 16 * (bytes[4]) + ((bytes[5] & 3) << 12); - result[idx + 3] = ((bytes[5] & 0xFC) >> 2) + (bytes[6] << 6); - result[idx + 4] = bytes[7] + ((bytes[8] & 0x3F) << 8); - result[idx + 5] = (bytes[8] >> 6) + 4 * bytes[9] + ((bytes[10] & 0xF) << 10); - result[idx + 6] = (bytes[10] >> 4) + 16 * bytes[11] + ((bytes[12] & 3) << 12); - result[idx + 7] = ((bytes[12] & 0xFC) >> 2) + (bytes[13] << 6); - result[idx + 8] = bytes[14] + ((bytes[15] & 0x3F) << 8); - } - } - } - } - */ - } - else if(RW2_Format == 6) { - var is12bit = bitsPerSample == 12, - readPageRw6Fn = is12bit ? readPageRw6_bps12 : readPageRW6, - pixelsPerBlock = is12bit ? 14 : 11, - pixelbase0 = is12bit ? 0x80 : 0x200, - pixelbase_compare = is12bit ? 0x800 : 0x2000, - spix_compare = is12bit ? 0x3fff : 0xffff, - pixel_mask = is12bit ? 0xfff : 0x3fff, - blocksperrow = rawWidth / pixelsPerBlock, - rowbytes = blocksperrow * 16, - bufferSize = is12bit ? 18 : 14; - - for (row = 0; row < rawHeight - 15; row += 16) { - var rowstoread = Math.min(16, rawHeight - row); - var readlen = rowbytes*rowstoread; - buffer = new Uint8Array(img_buffer, off+bidx, readlen);//new Uint8Array(image.slice(bidx, bidx+readlen)); - vpos = 0; - bidx += readlen; - for (crow = 0, col = 0; crow < rowstoread; crow++, col = 0) { - idx = (row + crow) * rawWidth; - for (var rblock = 0; rblock < blocksperrow; rblock++) { - readPageRw6Fn(); - resetPredNonzeros(); - sh=0; pixel_base=0; - for (i = 0; i < pixelsPerBlock; i++){ - isOdd = i & 1; - if (i % 3 == 2) { - var base = byte < bufferSize ? bytes[byte++] : 0; - if (base == 3) base = 4; - pixel_base = pixelbase0 << base; - sh = 1 << base; - } - var epixel = byte < bufferSize ? bytes[byte++] : 0; - if (pred[isOdd]) { - epixel *= sh; - if (pixel_base < pixelbase_compare && nonz[isOdd] > pixel_base) - epixel += nonz[isOdd] - pixel_base; - nonz[isOdd] = epixel; - } else { - pred[isOdd] = epixel; - if (epixel) - nonz[isOdd] = epixel; - else - epixel = nonz[isOdd]; - } - result[idx + col++] = (epixel - 0xf) <= spix_compare ? (epixel - 0xf) & spix_compare : ((epixel + 0x7ffffff1) >> 0x1f) & pixel_mask; - } - } - } - } - } - else if (RW2_Format == 5) { - var blockSize = bitsPerSample == 12 ? 10 : 9; - for (row = 0; row < rawHeight; row++) { - for (col = 0; col < rawWidth; col+=blockSize) { - getDataRaw(0); - // Tuhle podminku pouziva i RW2_Format 7 - if (bitsPerSample == 12) { - result[idx++] = ((bytes[1] & 0xF) << 8) + bytes[0]; - result[idx++] = 16 * bytes[2] + (bytes[1] >> 4); - result[idx++] = ((bytes[4] & 0xF) << 8) + bytes[3]; - result[idx++] = 16 * bytes[5] + (bytes[4] >> 4); - result[idx++] = ((bytes[7] & 0xF) << 8) + bytes[6]; - result[idx++] = 16 * bytes[8] + (bytes[7] >> 4); - result[idx++] = ((bytes[10] & 0xF) << 8) + bytes[9]; - result[idx++] = 16 * bytes[11] + (bytes[10] >> 4); - result[idx++] = ((bytes[13] & 0xF) << 8) + bytes[12]; - result[idx++] = 16 * bytes[14] + (bytes[13] >> 4); - } else if (bitsPerSample == 14) { - result[idx++] = bytes[0] + ((bytes[1] & 0x3F) << 8); - result[idx++] = (bytes[1] >> 6) + 4 * (bytes[2]) + ((bytes[3] & 0xF) << 10); - result[idx++] = (bytes[3] >> 4) + 16 * (bytes[4]) + ((bytes[5] & 3) << 12); - result[idx++] = ((bytes[5] & 0xFC) >> 2) + (bytes[6] << 6); - result[idx++] = bytes[7] + ((bytes[8] & 0x3F) << 8); - result[idx++] = (bytes[8] >> 6) + 4 * bytes[9] + ((bytes[10] & 0xF) << 10); - result[idx++] = (bytes[10] >> 4) + 16 * bytes[11] + ((bytes[12] & 3) << 12); - result[idx++] = ((bytes[12] & 0xFC) >> 2) + (bytes[13] << 6); - result[idx++] = bytes[14] + ((bytes[15] & 0x3F) << 8); - } - } - } - //console.log(result[1000000 - 1]) - } else if(RW2_Format == 4) { - for (row = 0; row < rawHeight; row++){ - for(col = 0; col < rawWidth; col++){ - i = col % 14; - isOdd = i & 1; - if (i==0) resetPredNonzeros(); - if (i%3 == 2) - sh = 4 >> (3 - getDataRaw(2)); - if (nonz[isOdd]) { - j = getDataRaw(8); - if(j != 0){ - pred[isOdd] -= 0x80 << sh; - if (pred[isOdd] < 0 || sh == 4) - pred[isOdd] &= ~((-1) << sh); - pred[isOdd] += j << sh; - } - } else { - nonz[isOdd] = getDataRaw(8); - if(nonz[isOdd] || i > 11) - pred[isOdd] = nonz[isOdd] << 4 | getDataRaw(4); - } - result[idx++] = pred[col & 1]; - } - } - } - else throw RW2_Format; - } - - -UTIF.decode._decodeVC5 = function(){var x=[1,0,1,0,2,2,1,1,3,7,1,2,5,25,1,3,6,48,1,4,6,54,1,5,7,111,1,8,7,99,1,6,7,105,12,0,7,107,1,7,8,209,20,0,8,212,1,9,8,220,1,10,9,393,1,11,9,394,32,0,9,416,1,12,9,427,1,13,10,887,1,18,10,784,1,14,10,790,1,15,10,835,60,0,10,852,1,16,10,885,1,17,11,1571,1,19,11,1668,1,20,11,1669,100,0,11,1707,1,21,11,1772,1,22,12,3547,1,29,12,3164,1,24,12,3166,1,25,12,3140,1,23,12,3413,1,26,12,3537,1,27,12,3539,1,28,13,7093,1,35,13,6283,1,30,13,6331,1,31,13,6335,180,0,13,6824,1,32,13,7072,1,33,13,7077,320,0,13,7076,1,34,14,12565,1,36,14,12661,1,37,14,12669,1,38,14,13651,1,39,14,14184,1,40,15,28295,1,46,15,28371,1,47,15,25320,1,42,15,25336,1,43,15,25128,1,41,15,27300,1,44,15,28293,1,45,16,50259,1,48,16,50643,1,49,16,50675,1,50,16,56740,1,53,16,56584,1,51,16,56588,1,52,17,113483,1,61,17,113482,1,60,17,101285,1,55,17,101349,1,56,17,109205,1,57,17,109207,1,58,17,100516,1,54,17,113171,1,59,18,202568,1,62,18,202696,1,63,18,218408,1,64,18,218412,1,65,18,226340,1,66,18,226356,1,67,18,226358,1,68,19,402068,1,69,19,405138,1,70,19,405394,1,71,19,436818,1,72,19,436826,1,73,19,452714,1,75,19,452718,1,76,19,452682,1,74,20,804138,1,77,20,810279,1,78,20,810790,1,79,20,873638,1,80,20,873654,1,81,20,905366,1,82,20,905430,1,83,20,905438,1,84,21,1608278,1,85,21,1620557,1,86,21,1621582,1,87,21,1621583,1,88,21,1747310,1,89,21,1810734,1,90,21,1810735,1,91,21,1810863,1,92,21,1810879,1,93,22,3621725,1,99,22,3621757,1,100,22,3241112,1,94,22,3494556,1,95,22,3494557,1,96,22,3494622,1,97,22,3494623,1,98,23,6482227,1,102,23,6433117,1,101,23,6989117,1,103,23,6989119,1,105,23,6989118,1,104,23,7243449,1,106,23,7243512,1,107,24,13978233,1,111,24,12964453,1,109,24,12866232,1,108,24,14486897,1,113,24,13978232,1,110,24,14486896,1,112,24,14487026,1,114,24,14487027,1,115,25,25732598,1,225,25,25732597,1,189,25,25732596,1,188,25,25732595,1,203,25,25732594,1,202,25,25732593,1,197,25,25732592,1,207,25,25732591,1,169,25,25732590,1,223,25,25732589,1,159,25,25732522,1,235,25,25732579,1,152,25,25732575,1,192,25,25732489,1,179,25,25732573,1,201,25,25732472,1,172,25,25732576,1,149,25,25732488,1,178,25,25732566,1,120,25,25732571,1,219,25,25732577,1,150,25,25732487,1,127,25,25732506,1,211,25,25732548,1,125,25,25732588,1,158,25,25732486,1,247,25,25732467,1,238,25,25732508,1,163,25,25732552,1,228,25,25732603,1,183,25,25732513,1,217,25,25732587,1,168,25,25732520,1,122,25,25732484,1,128,25,25732562,1,249,25,25732505,1,187,25,25732504,1,186,25,25732483,1,136,25,25928905,1,181,25,25732560,1,255,25,25732500,1,230,25,25732482,1,135,25,25732555,1,233,25,25732568,1,222,25,25732583,1,145,25,25732481,1,134,25,25732586,1,167,25,25732521,1,248,25,25732518,1,209,25,25732480,1,243,25,25732512,1,216,25,25732509,1,164,25,25732547,1,140,25,25732479,1,157,25,25732544,1,239,25,25732574,1,191,25,25732564,1,251,25,25732478,1,156,25,25732546,1,139,25,25732498,1,242,25,25732557,1,133,25,25732477,1,162,25,25732515,1,213,25,25732584,1,165,25,25732514,1,212,25,25732476,1,227,25,25732494,1,198,25,25732531,1,236,25,25732530,1,234,25,25732529,1,117,25,25732528,1,215,25,25732527,1,124,25,25732526,1,123,25,25732525,1,254,25,25732524,1,253,25,25732523,1,148,25,25732570,1,218,25,25732580,1,146,25,25732581,1,147,25,25732569,1,224,25,25732533,1,143,25,25732540,1,184,25,25732541,1,185,25,25732585,1,166,25,25732556,1,132,25,25732485,1,129,25,25732563,1,250,25,25732578,1,151,25,25732501,1,119,25,25732502,1,193,25,25732536,1,176,25,25732496,1,245,25,25732553,1,229,25,25732516,1,206,25,25732582,1,144,25,25732517,1,208,25,25732558,1,137,25,25732543,1,241,25,25732466,1,237,25,25732507,1,190,25,25732542,1,240,25,25732551,1,131,25,25732554,1,232,25,25732565,1,252,25,25732475,1,171,25,25732493,1,205,25,25732492,1,204,25,25732491,1,118,25,25732490,1,214,25,25928904,1,180,25,25732549,1,126,25,25732602,1,182,25,25732539,1,175,25,25732545,1,141,25,25732559,1,138,25,25732537,1,177,25,25732534,1,153,25,25732503,1,194,25,25732606,1,160,25,25732567,1,121,25,25732538,1,174,25,25732497,1,246,25,25732550,1,130,25,25732572,1,200,25,25732474,1,170,25,25732511,1,221,25,25732601,1,196,25,25732532,1,142,25,25732519,1,210,25,25732495,1,199,25,25732605,1,155,25,25732535,1,154,25,25732499,1,244,25,25732510,1,220,25,25732600,1,195,25,25732607,1,161,25,25732604,1,231,25,25732473,1,173,25,25732599,1,226,26,51465122,1,116,26,51465123,0,1],o,C,k,P=[3,3,3,3,2,2,2,1,1,1],V=24576,ar=16384,H=8192,az=ar|H; -function d(t){var E=t[1],h=t[0][E>>>3]>>>7-(E&7)&1;t[1]++;return h}function ag(t,E){if(o==null){o={}; -for(var h=0;h>>1}return t}function A(t,E){return t>>E}function O(t,E,h,L,g,n){E[h]=A(A(11*t[g]-4*t[g+n]+t[g+n+n]+4,3)+t[L],1); -E[h+n]=A(A(5*t[g]+4*t[g+n]-t[g+n+n]+4,3)-t[L],1)}function J(t,E,h,L,g,n){var W=t[g-n]-t[g+n],j=t[g],$=t[L]; -E[h]=A(A(W+4,3)+j+$,1);E[h+n]=A(A(-W+4,3)+j-$,1)}function y(t,E,h,L,g,n){E[h]=A(A(5*t[g]+4*t[g-n]-t[g-n-n]+4,3)+t[L],1); -E[h+n]=A(A(11*t[g]-4*t[g-n]+t[g-n-n]+4,3)-t[L],1)}function q(t){t=t<0?0:t>4095?4095:t;t=k[t]>>>2;return t}function av(t,E,h,L,g,n){L=new Uint16Array(L.buffer); -var W=Date.now(),j=UTIF._binBE,$=E+h,r,u,X,I,ax,a3,R,ai,aa,ap,ah,ae,aD,al,i,aE,T,B;E+=4;var a5=n[0]==1; -while(E<$){var S=j.readShort(t,E),s=j.readUshort(t,E+2);E+=4;if(S==12)r=s;else if(S==20)u=s;else if(S==21)X=s; -else if(S==48)I=s;else if(S==53)ax=s;else if(S==35)a3=s;else if(S==62)R=s;else if(S==101)ai=s;else if(S==109)aa=s; -else if(S==84)ap=s;else if(S==106)ah=s;else if(S==107)ae=s;else if(S==108)aD=s;else if(S==102)al=s;else if(S==104)i=s; -else if(S==105)aE=s;else{var F=S<0?-S:S,D=F&65280,_=0;if(F&az){if(F&H){_=s&65535;_+=(F&255)<<16}else{_=s&65535}}if((F&V)==V){if(T==null){T=[]; -for(var M=0;M<4;M++)T[M]=new Int16Array((u>>>1)*(X>>>1));B=new Int16Array((u>>>1)*(X>>>1));C=new Int16Array(1024); -for(var M=0;M<1024;M++){var aG=M-512,p=Math.abs(aG),r=Math.floor(768*p*p*p/(255*255*255))+p;C[M]=Math.sign(aG)*r}k=new Uint16Array(4096); -var aA=(1<<16)-1;for(var M=0;M<4096;M++){var at=M,a1=aA*(Math.pow(113,at/4095)-1)/112;k[M]=Math.min(a1,aA)}}var w=T[R],v=m(u,1+P[I]),N=m(X,1+P[I]); -if(I==0){for(var b=0;b>>1)+G]=t[c]<<8|t[c+1]}}else{var a7=[t,E*8],a4=[],ay=0,aw=v*N,f=[0,0],Q=0,s=0; -while(ay0){a4[ay++]=s;Q--}}var l=(I-1)%3,aF=l!=1?v:0,a2=l!=0?N:0; -for(var b=0;b>>1)+aF,au=b*v;for(var G=0;G>>1,an=v*2,a9=N*2; -for(var b=0;b>14-K*2&3;var a6=aC[aB];if(a6!=0)for(var b=0;b>>1)*(u>>>1)+(G>>>1),z=a8[c],ao=ab[c]-2048,ak=aq[c]-2048,ad=as[c]-2048,aj=(ao<<1)+z,a0=(ak<<1)+z,aH=z+ad,am=z-ad; -if(a5){L[U]=q(aH);L[U+1]=q(a0);L[U+u]=q(aj);L[U+u+1]=q(am)}else{L[U]=q(aj);L[U+1]=q(aH);L[U+u]=q(am); -L[U+u+1]=q(a0)}}}E+=_*4}else if(F==16388){E+=_*4}else if(D==8192||D==8448||D==9216){}else throw F.toString(16)}}console.log(Date.now()-W)}return av}() - - - -UTIF.decode._decodeLogLuv32 = function(img, data, off, len, tgt, toff) { - var w = img.width, qw=w*4; - var io = 0, out = new Uint8Array(qw); - - while(io>> (tab[i] >>> 8); - for(var c=0; c>>4); tgt[toff+i+1]=(b0<<4)|(b2>>>4); tgt[toff+i+2]=(b2<<4)|(b1>>>4); } - return; - } - - var pix = new Uint16Array(16); - var row, col, val, max, min, imax, imin, sh, bit, i, dp; - - var data = new Uint8Array(raw_width+1); - for (row=0; row < height; row++) { - //fread (data, 1, raw_width, ifp); - for(var j=0; j>> 11); - imax = 0x0f & (val >>> 22); - imin = 0x0f & (val >>> 26); - for (sh=0; sh < 4 && 0x80 << sh <= max-min; sh++); - for (bit=30, i=0; i < 16; i++) - if (i == imax) pix[i] = max; - else if (i == imin) pix[i] = min; - else { - pix[i] = ((bin.readUshort(data, dp+(bit >> 3)) >>> (bit & 7) & 0x7f) << sh) + min; - if (pix[i] > 0x7ff) pix[i] = 0x7ff; - bit += 7; - } - for (i=0; i < 16; i++, col+=2) { - //RAW(row,col) = curve[pix[i] << 1] >> 2; - var clr = pix[i]<<1; //clr = 0xffff; - UTIF.decode._putsF(tgt, (row*raw_width+col)*tiff_bps, clr<<(16-tiff_bps)); - } - col -= col & 1 ? 1:31; - } - } -} - -UTIF.decode._decodeNikon = function(img,imgs, data, off, src_length, tgt, toff) -{ - var nikon_tree = [ - [ 0, 0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0, /* 12-bit lossy */ - 5,4,3,6,2,7,1,0,8,9,11,10,12 ], - [ 0, 0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0, /* 12-bit lossy after split */ - 0x39,0x5a,0x38,0x27,0x16,5,4,3,2,1,0,11,12,12 ], - [ 0, 0,1,4,2,3,1,2,0,0,0,0,0,0,0,0,0, /* 12-bit lossless */ - 5,4,6,3,7,2,8,1,9,0,10,11,12 ], - [ 0, 0,1,4,3,1,1,1,1,1,2,0,0,0,0,0,0, /* 14-bit lossy */ - 5,6,4,7,8,3,9,2,1,0,10,11,12,13,14 ], - [ 0, 0,1,5,1,1,1,1,1,1,1,2,0,0,0,0,0, /* 14-bit lossy after split */ - 8,0x5c,0x4b,0x3a,0x29,7,6,5,4,3,2,1,0,13,14 ], - [ 0, 0,1,4,2,2,3,1,2,0,0,0,0,0,0,0,0, /* 14-bit lossless */ - 7,6,8,5,9,4,10,3,11,12,2,0,1,13,14 ] ]; - - var raw_width = img["t256"][0], height=img["t257"][0], tiff_bps=img["t258"][0]; - - var tree = 0, split = 0; - var make_decoder = UTIF.decode._make_decoder; - var getbithuff = UTIF.decode._getbithuff; - - var mn = imgs[0].exifIFD.makerNote, md = mn["t150"]?mn["t150"]:mn["t140"], mdo=0; //console.log(mn,md); - //console.log(md[0].toString(16), md[1].toString(16), tiff_bps); - var ver0 = md[mdo++], ver1 = md[mdo++]; - if (ver0 == 0x49 || ver1 == 0x58) mdo+=2110; - if (ver0 == 0x46) tree = 2; - if (tiff_bps == 14) tree += 3; - - var vpred = [[0,0],[0,0]], bin=(img.isLE ? UTIF._binLE : UTIF._binBE); - for(var i=0; i<2; i++) for(var j=0; j<2; j++) { vpred[i][j] = bin.readShort(md,mdo); mdo+=2; } // not sure here ... [i][j] or [j][i] - //console.log(vpred); - - - var max = 1 << tiff_bps & 0x7fff, step=0; - var csize = bin.readShort(md,mdo); mdo+=2; - if (csize > 1) step = Math.floor(max / (csize-1)); - if (ver0 == 0x44 && ver1 == 0x20 && step > 0) split = bin.readShort(md,562); - - - var i; - var row, col; - var len, shl, diff; - var min_v = 0; - var hpred = [0,0]; - var huff = make_decoder(nikon_tree[tree]); - - //var g_input_offset=0, bitbuf=0, vbits=0, reset=0; - var prm = [off,0,0,0]; - //console.log(split); split = 170; - - for (min_v=row=0; row < height; row++) { - if (split && row == split) { - //free (huff); - huff = make_decoder (nikon_tree[tree+1]); - //max_v += (min_v = 16) << 1; - } - for (col=0; col < raw_width; col++) { - i = getbithuff(data,prm,huff[0],huff); - len = i & 15; - shl = i >>> 4; - diff = (((getbithuff(data,prm,len-shl,0) << 1) + 1) << shl) >>> 1; - if ((diff & (1 << (len-1))) == 0) - diff -= (1 << len) - (shl==0?1:0); - if (col < 2) hpred[col] = vpred[row & 1][col] += diff; - else hpred[col & 1] += diff; - - var clr = Math.min(Math.max(hpred[col & 1],0),(1<>>3); dt[o]|=val>>>16; dt[o+1]|=val>>>8; dt[o+2]|=val; } - - -UTIF.decode._getbithuff = function(data,prm,nbits, huff) { - var zero_after_ff = 0; - var get_byte = UTIF.decode._get_byte; - var c; - - var off=prm[0], bitbuf=prm[1], vbits=prm[2], reset=prm[3]; - - //if (nbits > 25) return 0; - //if (nbits < 0) return bitbuf = vbits = reset = 0; - if (nbits == 0 || vbits < 0) return 0; - while (!reset && vbits < nbits && (c = data[off++]) != -1 && - !(reset = zero_after_ff && c == 0xff && data[off++])) { - //console.log("byte read into c"); - bitbuf = (bitbuf << 8) + c; - vbits += 8; - } - c = (bitbuf << (32-vbits)) >>> (32-nbits); - if (huff) { - vbits -= huff[c+1] >>> 8; //console.log(c, huff[c]>>8); - c = huff[c+1]&255; - } else - vbits -= nbits; - if (vbits < 0) throw "e"; - - prm[0]=off; prm[1]=bitbuf; prm[2]=vbits; prm[3]=reset; - - return c; -} - -UTIF.decode._make_decoder = function(source) { - var max, len, h, i, j; - var huff = []; - - for (max=16; max!=0 && !source[max]; max--); - var si=17; - - huff[0] = max; - for (h=len=1; len <= max; len++) - for (i=0; i < source[len]; i++, ++si) - for (j=0; j < 1 << (max-len); j++) - if (h <= 1 << max) - huff[h++] = (len << 8) | source[si]; - return huff; -} - -UTIF.decode._decodeNewJPEG = function(img, data, off, len, tgt, toff) -{ - len = Math.min(len, data.length-off); - var tables = img["t347"], tlen = tables ? tables.length : 0, buff = new Uint8Array(tlen + len); - - if (tables) { - var SOI = 216, EOI = 217, boff = 0; - for (var i=0; i<(tlen-1); i++) - { - // Skip EOI marker from JPEGTables - if (tables[i]==255 && tables[i+1]==EOI) break; - buff[boff++] = tables[i]; - } - - // Skip SOI marker from data - var byte1 = data[off], byte2 = data[off + 1]; - if (byte1!=255 || byte2!=SOI) - { - buff[boff++] = byte1; - buff[boff++] = byte2; - } - for (var i=2; i>>8); } - else for(var i=0; i>>8); tgt[toff+(i<<1)+1] = (out[i]&255); } - } - else if(bps==14 || bps==12 || bps==10) { // 4 * 14 == 56 == 7 * 8 - var rst = 16-bps; - for(var i=0; i 1); - } - - if(!isTiled) - { - if(data[off]==255 && data[off+1]==SOI) return { jpegOffset: off }; - if(jpgIchgFmt!=null) - { - if(data[off+jifoff]==255 && data[off+jifoff+1]==SOI) joff = off+jifoff; - else log("JPEGInterchangeFormat does not point to SOI"); - - if(jpgIchgFmtLen==null) log("JPEGInterchangeFormatLength field is missing"); - else if(jifoff >= soff || (jifoff+jiflen) <= soff) log("JPEGInterchangeFormatLength field value is invalid"); - - if(joff != null) return { jpegOffset: joff }; - } - } - - if(ycbcrss!=null) { ssx = ycbcrss[0]; ssy = ycbcrss[1]; } - - if(jpgIchgFmt!=null) - if(jpgIchgFmtLen!=null) - if(jiflen >= 2 && (jifoff+jiflen) <= soff) - { - if(data[off+jifoff+jiflen-2]==255 && data[off+jifoff+jiflen-1]==SOI) tables = new Uint8Array(jiflen-2); - else tables = new Uint8Array(jiflen); - - for(i=0; i offset to first strip or tile"); - - if(tables == null) - { - var ooff = 0, out = []; - out[ooff++] = 255; out[ooff++] = SOI; - - var qtables = img["t519"]; - if(qtables==null) throw new Error("JPEGQTables tag is missing"); - for(i=0; i>> 8); out[ooff++] = nc & 255; - out[ooff++] = (i | (k << 4)); - for(j=0; j<16; j++) out[ooff++] = data[off+htables[i]+j]; - for(j=0; j>> 8) & 255; out[ooff++] = img.height & 255; - out[ooff++] = (img.width >>> 8) & 255; out[ooff++] = img.width & 255; - out[ooff++] = spp; - if(spp==1) { out[ooff++] = 1; out[ooff++] = 17; out[ooff++] = 0; } - else for(i=0; i<3; i++) - { - out[ooff++] = i + 1; - out[ooff++] = (i != 0) ? 17 : (((ssx & 15) << 4) | (ssy & 15)); - out[ooff++] = i; - } - - if(jpgresint!=null && jpgresint[0]!=0) - { - out[ooff++] = 255; out[ooff++] = DRI; out[ooff++] = 0; out[ooff++] = 4; - out[ooff++] = (jpgresint[0] >>> 8) & 255; - out[ooff++] = jpgresint[0] & 255; - } - - tables = new Uint8Array(out); - } - - var sofpos = -1; - i = 0; - while(i < (tables.length - 1)) { - if(tables[i]==255 && tables[i+1]==SOF0) { sofpos = i; break; } - i++; - } - - if(sofpos == -1) - { - var tmptab = new Uint8Array(tables.length + 10 + 3*spp); - tmptab.set(tables); - var tmpoff = tables.length; - sofpos = tables.length; - tables = tmptab; - - tables[tmpoff++] = 255; tables[tmpoff++] = SOF0; - tables[tmpoff++] = 0; tables[tmpoff++] = 8 + 3*spp; tables[tmpoff++] = 8; - tables[tmpoff++] = (img.height >>> 8) & 255; tables[tmpoff++] = img.height & 255; - tables[tmpoff++] = (img.width >>> 8) & 255; tables[tmpoff++] = img.width & 255; - tables[tmpoff++] = spp; - if(spp==1) { tables[tmpoff++] = 1; tables[tmpoff++] = 17; tables[tmpoff++] = 0; } - else for(i=0; i<3; i++) - { - tables[tmpoff++] = i + 1; - tables[tmpoff++] = (i != 0) ? 17 : (((ssx & 15) << 4) | (ssy & 15)); - tables[tmpoff++] = i; - } - } - - if(data[soff]==255 && data[soff+1]==SOS) - { - var soslen = (data[soff+2]<<8) | data[soff+3]; - sosMarker = new Uint8Array(soslen+2); - sosMarker[0] = data[soff]; sosMarker[1] = data[soff+1]; sosMarker[2] = data[soff+2]; sosMarker[3] = data[soff+3]; - for(i=0; i<(soslen-2); i++) sosMarker[i+4] = data[soff+i+4]; - } - else - { - sosMarker = new Uint8Array(2 + 6 + 2*spp); - var sosoff = 0; - sosMarker[sosoff++] = 255; sosMarker[sosoff++] = SOS; - sosMarker[sosoff++] = 0; sosMarker[sosoff++] = 6 + 2*spp; sosMarker[sosoff++] = spp; - if(spp==1) { sosMarker[sosoff++] = 1; sosMarker[sosoff++] = 0; } - else for(i=0; i<3; i++) - { - sosMarker[sosoff++] = i+1; sosMarker[sosoff++] = (i << 4) | i; - } - sosMarker[sosoff++] = 0; sosMarker[sosoff++] = 63; sosMarker[sosoff++] = 0; - } - - return { jpegOffset: off, tables: tables, sosMarker: sosMarker, sofPosition: sofpos }; -} - -UTIF.decode._decodeOldJPEG = function(img, data, off, len, tgt, toff) -{ - var i, dlen, tlen, buff, buffoff; - var jpegData = UTIF.decode._decodeOldJPEGInit(img, data, off, len); - - if(jpegData.jpegOffset!=null) - { - dlen = off+len-jpegData.jpegOffset; - buff = new Uint8Array(dlen); - for(i=0; i>> 8) & 255; buff[jpegData.sofPosition+6] = img.height & 255; - buff[jpegData.sofPosition+7] = (img.width >>> 8) & 255; buff[jpegData.sofPosition+8] = img.width & 255; - - if(data[off]!=255 || data[off+1]!=SOS) - { - buff.set(jpegData.sosMarker, buffoff); - buffoff += sosMarker.length; - } - for(i=0; i=0 && n<128) for(var i=0; i< n+1; i++) { ta[toff]=sa[off]; toff++; off++; } - if(n>=-127 && n<0) { for(var i=0; i<-n+1; i++) { ta[toff]=sa[off]; toff++; } off++; } - } - return toff; -} - -UTIF.decode._decodeThunder = function(data, off, len, tgt, toff) -{ - var d2 = [ 0, 1, 0, -1 ], d3 = [ 0, 1, 2, 3, 0, -3, -2, -1 ]; - var lim = off+len, qoff = toff*2, px = 0; - while(off>>6), n = (b&63); off++; - if(msk==3) { px=(n&15); tgt[qoff>>>1] |= (px<<(4*(1-qoff&1))); qoff++; } - if(msk==0) for(var i=0; i>>1] |= (px<<(4*(1-qoff&1))); qoff++; } - if(msk==2) for(var i=0; i<2; i++) { var d=(n>>>(3*(1-i)))&7; if(d!=4) { px+=d3[d]; tgt[qoff>>>1] |= (px<<(4*(1-qoff&1))); qoff++; } } - if(msk==1) for(var i=0; i<3; i++) { var d=(n>>>(2*(2-i)))&3; if(d!=2) { px+=d2[d]; tgt[qoff>>>1] |= (px<<(4*(1-qoff&1))); qoff++; } } - } -} - -UTIF.decode._dmap = { "1":0,"011":1,"000011":2,"0000011":3, "010":-1,"000010":-2,"0000010":-3 }; -UTIF.decode._lens = ( function() -{ - var addKeys = function(lens, arr, i0, inc) { for(var i=0; i>>3)>>3]>>>(7-(boff&7)))&1; - if(fo==2) bit = (data[boff>>>3]>>>( (boff&7)))&1; - boff++; wrd+=bit; - if(mode=="H") - { - if(U._lens[clr][wrd]!=null) - { - var dl=U._lens[clr][wrd]; wrd=""; len+=dl; - if(dl<64) { U._addNtimes(line,len,clr); a0+=len; clr=1-clr; len=0; toRead--; if(toRead==0) mode=""; } - } - } - else - { - if(wrd=="0001") { wrd=""; U._addNtimes(line,b2-a0,clr); a0=b2; } - if(wrd=="001" ) { wrd=""; mode="H"; toRead=2; } - if(U._dmap[wrd]!=null) { a1 = b1+U._dmap[wrd]; U._addNtimes(line, a1-a0, clr); a0=a1; wrd=""; clr=1-clr; } - } - if(line.length==w && mode=="") - { - U._writeBits(line, tgt, toff*8+y*bipl); - clr=0; y++; a0=0; - pline=U._makeDiff(line); line=[]; - } - //if(wrd.length>150) { log(wrd); break; throw "e"; } - } -} - -UTIF.decode._findDiff = function(line, x, clr) { for(var i=0; i=x && line[i+1]==clr) return line[i]; } - -UTIF.decode._makeDiff = function(line) -{ - var out = []; if(line[0]==1) out.push(0,1); - for(var i=1; i>>3)>>3]>>>(7-(boff&7)))&1; - if(fo==2) bit = (data[boff>>>3]>>>( (boff&7)))&1; - boff++; wrd+=bit; - - len = U._lens[clr][wrd]; - if(len!=null) { - U._addNtimes(line,len,clr); wrd=""; - if(len<64) clr = 1-clr; - if(line.length==w) { U._writeBits(line, tgt, toff*8+y*bipl); line=[]; y++; clr=0; if((boff&7)!=0) boff+=8-(boff&7); if(len>=64) boff+=8; } - } - } -} - -UTIF.decode._decodeG3 = function(data, off, slen, tgt, toff, w, fo, twoDim) -{ - var U = UTIF.decode, boff=off<<3, len=0, wrd=""; - var line=[], pline=[]; for(var i=0; i>>3)>>3]>>>(7-(boff&7)))&1; - if(fo==2) bit = (data[boff>>>3]>>>( (boff&7)))&1; - boff++; wrd+=bit; - - if(is1D) - { - if(U._lens[clr][wrd]!=null) - { - var dl=U._lens[clr][wrd]; wrd=""; len+=dl; - if(dl<64) { U._addNtimes(line,len,clr); clr=1-clr; len=0; } - } - } - else - { - if(mode=="H") - { - if(U._lens[clr][wrd]!=null) - { - var dl=U._lens[clr][wrd]; wrd=""; len+=dl; - if(dl<64) { U._addNtimes(line,len,clr); a0+=len; clr=1-clr; len=0; toRead--; if(toRead==0) mode=""; } - } - } - else - { - if(wrd=="0001") { wrd=""; U._addNtimes(line,b2-a0,clr); a0=b2; } - if(wrd=="001" ) { wrd=""; mode="H"; toRead=2; } - if(U._dmap[wrd]!=null) { a1 = b1+U._dmap[wrd]; U._addNtimes(line, a1-a0, clr); a0=a1; wrd=""; clr=1-clr; } - } - } - if(wrd.endsWith("000000000001")) // needed for some files - { - if(y>=0) U._writeBits(line, tgt, toff*8+y*bipl); - if(twoDim) { - if(fo==1) is1D = ((data[boff>>>3]>>>(7-(boff&7)))&1)==1; - if(fo==2) is1D = ((data[boff>>>3]>>>( (boff&7)))&1)==1; - boff++; - } - //log("EOL",y, "next 1D:", is1D); - wrd=""; clr=0; y++; a0=0; - pline=U._makeDiff(line); line=[]; - } - } - if(line.length==w) U._writeBits(line, tgt, toff*8+y*bipl); -} - -UTIF.decode._addNtimes = function(arr, n, val) { for(var i=0; i>>3] |= (bits[i]<<(7-((boff+i)&7))); -} - -UTIF.decode._decodeLZW=UTIF.decode._decodeLZW=function(){var e,U,Z,u,K=0,V=0,g=0,N=0,O=function(){var S=e>>>3,A=U[S]<<16|U[S+1]<<8|U[S+2],j=A>>>24-(e&7)-V&(1<>>----------------"); - for(var i=0; idata.buffer.byteLength) num=data.buffer.byteLength-no; arr = new Uint8Array(data.buffer, no, num); } - if(type== 2) { var o0 = (num<5 ? offset-4 : voff), c=data[o0], len=Math.max(0, Math.min(num-1,data.length-o0)); - if(c<128 || len==0) arr.push( bin.readASCII(data, o0, len) ); - else arr = new Uint8Array(data.buffer, o0, len); } - if(type== 3) { for(var j=0; j4) { bin.writeUint(data, offset, eoff); toff=eoff; } - - if (type== 1 || type==7) { for(var i=0; i4) { dlen += (dlen&1); eoff += dlen; } - offset += 4; - } - return [offset, eoff]; -} - -UTIF.toRGBA8 = function(out, scl) -{ - function gamma(x) { return x < 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1.0 / 2.4) - 0.055; } - - - var w = out.width, h = out.height, area = w*h, qarea = area*4, data = out.data; - var img = new Uint8Array(area*4); - //console.log(out); - // 0: WhiteIsZero, 1: BlackIsZero, 2: RGB, 3: Palette color, 4: Transparency mask, 5: CMYK - var intp = (out["t262"] ? out["t262"][0]: 2), bps = (out["t258"]?Math.min(32,out["t258"][0]):1); - if(out["t262"]==null && bps==1) intp=0; - - var smpls = out["t277"]?out["t277"][0] : (out["t258"]?out["t258"].length : [1,1,3,1,1,4,3][intp]); - var sfmt = out["t339"]?out["t339"][0] : null; if(intp==1 && bps==32 && sfmt!=3) throw "e"; // sample format - var bpl = Math.ceil(smpls*bps*w/8); - - //log("interpretation: ", intp, "smpls", smpls, "bps", bps, "sample format",sfmt, out); - - if(false) {} - else if(intp==0) - { - scl = 1/256; // "Photopeatest.tif" - for(var y=0; y>3)])>>(7- (i&7)))& 1; img[qi]=img[qi+1]=img[qi+2]=( 1-px)*255; img[qi+3]=255; } - if(bps== 4) for(var i=0; i>1)])>>(4-4*(i&1)))&15; img[qi]=img[qi+1]=img[qi+2]=(15-px)* 17; img[qi+3]=255; } - if(bps== 8) for(var i=0; i>3)])>>(7- (i&7)))&1; img[qi]=img[qi+1]=img[qi+2]=(px)*255; img[qi+3]=255; } - if(bps== 2) for(var i=0; i>2)])>>(6-2*(i&3)))&3; img[qi]=img[qi+1]=img[qi+2]=(px)* 85; img[qi+3]=255; } - if(bps== 8) for(var i=0; i>>2)+i, px=f32[o]; img[qi]=img[qi+1]=img[qi+2]= ~~(0.5+255*px); img[qi+3]=255; } - } - } - else if(intp==2) - { - if(bps== 8) - { - if(smpls==1) for(var i=0; i=4) for(var i=0; i1 && out["t338"] && out["t338"][0]!=0; - - for(var y=0; y>>3)]>>>(7- (x&7)))& 1; - else if(bps==2) mi=(data[dof+(x>>>2)]>>>(6-2*(x&3)))& 3; - else if(bps==4) mi=(data[dof+(x>>>1)]>>>(4-4*(x&1)))&15; - else if(bps==8) mi= data[dof+x*smpls]; - else throw bps; - img[qi]=(map[mi]>>8); img[qi+1]=(map[cn+mi]>>8); img[qi+2]=(map[cn+cn+mi]>>8); img[qi+3]=nexta ? data[dof+x*smpls+1] : 255; - } - } - else if(intp==5) - { - var gotAlpha = smpls>4 ? 1 : 0; - for(var i=0; i>>1); - var Y = data[si+(j&1)], Cb=data[si+2]-128, Cr=data[si+3]-128; - - var r = Y + ( (Cr >> 2) + (Cr >> 3) + (Cr >> 5) ) ; - var g = Y - ( (Cb >> 2) + (Cb >> 4) + (Cb >> 5)) - ( (Cr >> 1) + (Cr >> 3) + (Cr >> 4) + (Cr >> 5)) ; - var b = Y + ( Cb + (Cb >> 1) + (Cb >> 2) + (Cb >> 6)) ; - - img[qi ]=Math.max(0,Math.min(255,r)); - img[qi+1]=Math.max(0,Math.min(255,g)); - img[qi+2]=Math.max(0,Math.min(255,b)); - img[qi+3]=255; - } - } - } - else if(intp==32845) { - - for(var y=0; yma) { ma=ar; page=img; } - } - UTIF.decodeImage(buff, page, ifds); - var rgba = UTIF.toRGBA8(page), w=page.width, h=page.height; - - var cnv = document.createElement("canvas"); cnv.width=w; cnv.height=h; - var ctx = cnv.getContext("2d"); - var imgd = new ImageData(new Uint8ClampedArray(rgba.buffer),w,h); - ctx.putImageData(imgd,0,0); - return cnv.toDataURL(); -} - - -UTIF._binBE = -{ - nextZero : function(data, o) { while(data[o]!=0) o++; return o; }, - readUshort : function(buff, p) { return (buff[p]<< 8) | buff[p+1]; }, - readShort : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+1]; a[1]=buff[p+0]; return UTIF._binBE. i16[0]; }, - readInt : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+3]; a[1]=buff[p+2]; a[2]=buff[p+1]; a[3]=buff[p+0]; return UTIF._binBE. i32[0]; }, - readUint : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+3]; a[1]=buff[p+2]; a[2]=buff[p+1]; a[3]=buff[p+0]; return UTIF._binBE.ui32[0]; }, - readASCII : function(buff, p, l) { var s = ""; for(var i=0; i> 8)&255; buff[p+1] = n&255; }, - writeInt : function(buff, p, n) { var a=UTIF._binBE.ui8; UTIF._binBE.i32[0]=n; buff[p+3]=a[0]; buff[p+2]=a[1]; buff[p+1]=a[2]; buff[p+0]=a[3]; }, - writeUint : function(buff, p, n) { buff[p] = (n>>24)&255; buff[p+1] = (n>>16)&255; buff[p+2] = (n>>8)&255; buff[p+3] = (n>>0)&255; }, - writeASCII : function(buff, p, s) { for(var i = 0; i < s.length; i++) buff[p+i] = s.charCodeAt(i); }, - writeDouble: function(buff, p, n) - { - UTIF._binBE.fl64[0] = n; - for (var i = 0; i < 8; i++) buff[p + i] = UTIF._binBE.ui8[7 - i]; - } -} -UTIF._binBE.ui8 = new Uint8Array (8); -UTIF._binBE.i16 = new Int16Array (UTIF._binBE.ui8.buffer); -UTIF._binBE.i32 = new Int32Array (UTIF._binBE.ui8.buffer); -UTIF._binBE.ui32 = new Uint32Array (UTIF._binBE.ui8.buffer); -UTIF._binBE.fl32 = new Float32Array(UTIF._binBE.ui8.buffer); -UTIF._binBE.fl64 = new Float64Array(UTIF._binBE.ui8.buffer); - -UTIF._binLE = -{ - nextZero : UTIF._binBE.nextZero, - readUshort : function(buff, p) { return (buff[p+1]<< 8) | buff[p]; }, - readShort : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+0]; a[1]=buff[p+1]; return UTIF._binBE. i16[0]; }, - readInt : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+0]; a[1]=buff[p+1]; a[2]=buff[p+2]; a[3]=buff[p+3]; return UTIF._binBE. i32[0]; }, - readUint : function(buff, p) { var a=UTIF._binBE.ui8; a[0]=buff[p+0]; a[1]=buff[p+1]; a[2]=buff[p+2]; a[3]=buff[p+3]; return UTIF._binBE.ui32[0]; }, - readASCII : UTIF._binBE.readASCII, - readFloat : function(buff, p) { var a=UTIF._binBE.ui8; for(var i=0;i<4;i++) a[i]=buff[p+ i]; return UTIF._binBE.fl32[0]; }, - readDouble : function(buff, p) { var a=UTIF._binBE.ui8; for(var i=0;i<8;i++) a[i]=buff[p+ i]; return UTIF._binBE.fl64[0]; }, - - writeUshort: function(buff, p, n) { buff[p] = (n)&255; buff[p+1] = (n>>8)&255; }, - writeInt : function(buff, p, n) { var a=UTIF._binBE.ui8; UTIF._binBE.i32[0]=n; buff[p+0]=a[0]; buff[p+1]=a[1]; buff[p+2]=a[2]; buff[p+3]=a[3]; }, - writeUint : function(buff, p, n) { buff[p] = (n>>>0)&255; buff[p+1] = (n>>>8)&255; buff[p+2] = (n>>>16)&255; buff[p+3] = (n>>>24)&255; }, - writeASCII : UTIF._binBE.writeASCII -} -UTIF._copyTile = function(tb, tw, th, b, w, h, xoff, yoff) -{ - //log("copyTile", tw, th, w, h, xoff, yoff); - var xlim = Math.min(tw, w-xoff); - var ylim = Math.min(th, h-yoff); - for(var y=0; y>>2<<5);while(i==0){i=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7); - var D=(d>>>3)+4,q=N[D-4]|N[D-3]<<8;if(Z)W=H.H.W(W,w+q);W.set(new R(N.buffer,N.byteOffset+D,q),w);d=D+q<<3; - w+=q;continue}if(Z)W=H.H.W(W,w+(1<<17));if(m==1){v=b.J;C=b.h;X=(1<<9)-1;u=(1<<5)-1}if(m==2){J=A(N,d,5)+257; - h=A(N,d+5,5)+1;Q=A(N,d+10,4)+4;d+=14;var E=d,j=1;for(var c=0;c<38;c+=2){b.Q[c]=0;b.Q[c+1]=0}for(var c=0; - cj)j=K}d+=3*Q;M(b.Q,j);I(b.Q,j,b.u);v=b.w;C=b.d; - d=l(b.u,(1<>>4;if(p>>>8==0){W[w++]=p}else if(p==256){break}else{var z=w+p-254; - if(p>264){var _=b.q[p-257];z=w+(_>>>3)+A(N,d,_&7);d+=_&7}var $=C[e(N,d)&u];d+=$&15;var s=$>>>4,Y=b.c[s],a=(Y>>>4)+n(N,d,Y&15); - d+=Y&15;while(w>>4; - if(b<=15){A[I]=b;I++}else{var Z=0,m=0;if(b==16){m=3+l(V,n,2);n+=2;Z=A[I-1]}else if(b==17){m=3+l(V,n,3); - n+=3}else if(b==18){m=11+l(V,n,7);n+=7}var J=I+m;while(I>>1; - while(An)n=M;A++}while(A>1,I=N[l+1],e=M<<4|I,b=W-I,Z=N[l]<>>15-W;R[J]=e;Z++}}};H.H.l=function(N,W){var R=H.H.m.r,V=15-W;for(var n=0;n>>V}};H.H.M=function(N,W,R){R=R<<(W&7);var V=W>>>3;N[V]|=R;N[V+1]|=R>>>8}; - H.H.I=function(N,W,R){R=R<<(W&7);var V=W>>>3;N[V]|=R;N[V+1]|=R>>>8;N[V+2]|=R>>>16};H.H.e=function(N,W,R){return(N[W>>>3]|N[(W>>>3)+1]<<8)>>>(W&7)&(1<>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16)>>>(W&7)&(1<>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16)>>>(W&7)}; - H.H.i=function(N,W){return(N[W>>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16|N[(W>>>3)+3]<<24)>>>(W&7)};H.H.m=function(){var N=Uint16Array,W=Uint32Array; - return{K:new N(16),j:new N(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[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,0,0,0],q:new N(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[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,0,0],c:new W(32),J:new N(512),_:[],h:new N(32),$:[],w:new N(32768),C:[],v:[],d:new N(32768),D:[],u:new N(512),Q:[],r:new N(1<<15),s:new W(286),Y:new W(30),a:new W(19),t:new W(15e3),k:new N(1<<16),g:new N(1<<15)}}(); - (function(){var N=H.H.m,W=1<<15;for(var R=0;R>>1|(V&1431655765)<<1; - V=(V&3435973836)>>>2|(V&858993459)<<2;V=(V&4042322160)>>>4|(V&252645135)<<4;V=(V&4278255360)>>>8|(V&16711935)<<8; - N.r[R]=(V>>>16|V<<16)>>>17}function n(A,l,M){while(l--!=0)A.push(0,M)}for(var R=0;R<32;R++){N.q[R]=N.S[R]<<3|N.T[R]; - N.c[R]=N.p[R]<<4|N.z[R]}n(N._,144,8);n(N._,255-143,9);n(N._,279-255,7);n(N._,287-279,8);H.H.n(N._,9); - H.H.A(N._,9,N.J);H.H.l(N._,9);n(N.$,32,5);H.H.n(N.$,5);H.H.A(N.$,5,N.h);H.H.l(N.$,5);n(N.Q,19,0);n(N.C,286,0); - n(N.D,30,0);n(N.v,320,0)}());return H.H.N}(); - - - -UTIF.LosslessJpegDecode =function(){var b,O;function l(){return b[O++]}function m(){return b[O++]<<8|b[O++]}function a0(h){var V=l(),I=[0,0,0,255],f=[],G=8; -for(var w=0;w<16;w++)f[w]=l();for(var w=0;w<16;w++){for(var x=0;x>--s&1; -Y=I[Y+F]}E[w]=Y}}function z(h,V,I,f){if(h[V+3]!=255)return 0;if(I==0)return V;for(var w=0;w<2;w++){if(h[V+w]==0){h[V+w]=h.length; -h.push(0,0,f,255)}var x=z(h,h[V+w],I-1,f+1);if(x!=0)return x}return 0}function i(h){var V=h.b,I=h.f; -while(V<25&&h.a>(V.b-=h)&65535>>16-h}function g(h,V){var I=h[0],f=0,w=255,x=0;if(V.b<16)i(V);var T=V.f>>V.b-8&255; -f=h[1][T];w=I[f+3];V.b-=I[f+2];while(w==255){x=V.f>>--V.b&1;f=I[f+x];w=I[f+3]}return w}function P(h,V){if(h<32768>>16-V)h+=-(1<>4,J&15]}}else if(Y==65476){var a3=O+F-2;while(O>>4];x[v[0]]=v.slice(1)}I=l();O+=2;break}else if(Y==65501){w=m()}else{O+=F-2}}var a4=f>8?Uint16Array:Uint8Array,$=new a4(s*_*E),M={b:0,f:0,c:I==8,a:O,data:b,d:b.length,e:w}; -if(M.c)a1($,_*E,M,G[0],s);else{var c=[],p=0,D=0;for(var t=0;tp)p=S; -if(K>D)D=K;c.push(S*K)}if(p!=1||D!=1){if(E!=3||c[1]!=1||c[2]!=1)throw"e";if(p!=2||D!=1&&D!=2)throw"e"; -var u=[],Z=0;for(var t=0;t>>1)*B+(S>>>1))*Z,y=(K&1)*2+(S&1); -$[q]=n[k+y];$[q+1]=n[k+4];$[q+2]=n[k+5]}else for(var S=0;S<_;S++){var q=(K*_+S)*E,k=(K*B+(S>>>1))*Z,y=S&1; -$[q]=n[k+y];$[q+1]=n[k+2];$[q+2]=n[k+3]}}}else{X($,_*E,M,G,E,s);if(w==0)j($,I,_,s,0,E,E,f);else{var U=Math.floor(w/_); -for(var K=0;K>>1);else if(V==6)Q=h[J]+(r-h[J-G]>>>1);else if(V==7)Q=r+h[J]>>>1;else throw V; -h[a]+=Q}}}}return C}(); - - -(function(){var G=0,F=1,i=2,b=3,J=4,N=5,E=6,s=7,c=8,T=9,a3=10,f=11,q=12,M=13,m=14,x=15,L=16,$=17,p=18; -function a5(t){var Z=UTIF._binBE.readUshort,u={b:Z(t,0),i:t[2],C:t[3],u:t[4],q:Z(t,5),k:Z(t,7),e:Z(t,9),l:Z(t,11),s:t[13],d:Z(t,14)}; -if(u.b!=18771||u.i>1||u.q<6||u.q%6||u.e<768||u.e%24||u.l!=768||u.k=u.l||u.s>16||u.s!=u.k/u.l||u.s!=Math.ceil(u.e/u.l)||u.d!=u.q/6||u.u!=12&&u.u!=14&&u.u!=16||u.C!=16&&u.C!=0){throw"Invalid data"}if(u.i==0){throw"Not implemented. We need this file!"}u.h=u.C==16; -u.m=(u.h?u.l*2/3:u.l>>>1)|0;u.A=u.m+2;u.f=64;u.g=(1<>>6);for(var e=0;e<3;e++){for(var Q=0; -Q<41;Q++){Z[e][Q]=[u,1]}}return Z}function a4(t){for(var Z=-1,u=0;!u;Z++){u=t[t.j]>>>7-t.a&1;t.a++;t.a&=7; -if(!t.a)t.j++}return Z}function K(t,Z){var u=0,e=8-t.a,Q=t.j,V=t.a;if(Z){if(Z>=e){do{u<<=e;Z-=e;u|=t[t.j]&(1<=8)}if(Z){u<<=Z;e-=Z;u|=t[t.j]>>>e&(1<n&&C>>2;if(o){w[X]=h;return}l=Z.t*Z.c[t.g+Y-H]+Z.c[t.g+g-Y]}else{h=Y>g&&Y>P||Y>>2:A+v>>>1; -l=Z.t*Z.c[t.g+Y-g]+Z.c[t.g+g-A]}R=y(l);var W=a4(u);if(W>>1):a>>>1; -O[R][0]+=y(a);if(O[R][1]==t.f){O[R][0]>>>=1;O[R][1]>>>=1}O[R][1]++;h=l<0?h-a:h+a;if(t.i){if(h<0)h+=Z.w; -else if(h>t.g)h-=Z.w}w[X]=h>=0?Math.min(h,t.g):0}function U(t,Z,u){var e=t[0].length;for(var Q=Z;Q<=u; -Q++){t[Q][0]=t[Q-1][1];t[Q][e-1]=t[Q-1][e-2]}}function B(t){U(t,s,q);U(t,i,J);U(t,x,$)}function _(t,Z,u,e,Q,V,O,o,X,k,j,I,a){var l=0,R=1,w=QJ; -while(R8){r(t,Z,u,e,Q,R,o[X]);r(t,Z,u,e,V,R,o[X]);R+=2}}B(e)}function a8(t,Z,u,e,Q,V){_(t,Z,u,e,i,s,Q,V,0,0,1,0,8); -_(t,Z,u,e,c,x,Q,V,1,0,1,0,8);_(t,Z,u,e,b,T,Q,V,2,1,0,3,0);_(t,Z,u,e,a3,L,Q,V,0,0,0,3,2);_(t,Z,u,e,J,f,Q,V,1,0,0,3,2); -_(t,Z,u,e,q,$,Q,V,2,1,0,3,0)}function a9(t,Z,u,e,Q,V){var O=V.length,o=t.l;if(Q+1==t.s)o=t.e-Q*t.l;var X=6*t.e*e+Q*t.l; -for(var k=0;k<6;k++){for(var j=0;j>>1)}else if(I==2){a=x+(k>>>1)}else{a=s+k}var l=t.h?(j*2/3&2147483646|j%3&1)+(j%3>>>1):j>>>1; -Z[X+j]=u[a][l+1]}X+=t.e}}UTIF._decompressRAF=function(t,Z){var u=a5(t),e=a7(t,u),Q=a2(u),V=new Int16Array(u.e*u.q); -if(Z==null){Z=u.h?[[1,1,0,1,1,2],[1,1,2,1,1,0],[2,0,1,0,2,1],[1,1,2,1,1,0],[1,1,0,1,1,2],[0,2,1,2,0,1]]:[[0,1],[3,2]]}var O=[[G,b],[F,J],[N,f],[E,q],[M,L],[m,$]],o=[]; -for(var X=0;XA.arrayBuffer()).then(A=>WebAssembly.instantiate(A,g)).then(this._init):WebAssembly.instantiate(Buffer.from(C,"base64"),g).then(this._init),A)}_init(A){I=A.instance,g.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!I)throw new Error("ZSTDDecoder: Await .init() before decoding.");const Q=A.byteLength,C=I.exports.malloc(Q);B.set(A,C),g=g||Number(I.exports.ZSTD_findDecompressedSize(C,Q));const E=I.exports.malloc(g),i=I.exports.ZSTD_decompress(E,g,C,Q),D=B.slice(E,E+i);return I.exports.free(C),I.exports.free(E),D}}const C="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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";export{Q as ZSTDDecoder}; diff --git a/three/addons/lights/IESSpotLight.js b/three/addons/lights/IESSpotLight.js deleted file mode 100644 index 817f378..0000000 --- a/three/addons/lights/IESSpotLight.js +++ /dev/null @@ -1,25 +0,0 @@ -import { SpotLight } from 'three'; - -class IESSpotLight extends SpotLight { - - constructor( color, intensity, distance, angle, penumbra, decay ) { - - super( color, intensity, distance, angle, penumbra, decay ); - - this.iesMap = null; - - } - - copy( source, recursive ) { - - super.copy( source, recursive ); - - this.iesMap = source.iesMap; - - return this; - - } - -} - -export default IESSpotLight; diff --git a/three/addons/lights/LightProbeGenerator.js b/three/addons/lights/LightProbeGenerator.js deleted file mode 100644 index 4bd9896..0000000 --- a/three/addons/lights/LightProbeGenerator.js +++ /dev/null @@ -1,286 +0,0 @@ -import { - Color, - LightProbe, - LinearSRGBColorSpace, - SphericalHarmonics3, - Vector3, - SRGBColorSpace, - NoColorSpace, - HalfFloatType, - DataUtils -} from 'three'; - -class LightProbeGenerator { - - // https://www.ppsloan.org/publications/StupidSH36.pdf - static fromCubeTexture( cubeTexture ) { - - let totalWeight = 0; - - const coord = new Vector3(); - - const dir = new Vector3(); - - const color = new Color(); - - const shBasis = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; - - const sh = new SphericalHarmonics3(); - const shCoefficients = sh.coefficients; - - for ( let faceIndex = 0; faceIndex < 6; faceIndex ++ ) { - - const image = cubeTexture.image[ faceIndex ]; - - const width = image.width; - const height = image.height; - - const canvas = document.createElement( 'canvas' ); - - canvas.width = width; - canvas.height = height; - - const context = canvas.getContext( '2d' ); - - context.drawImage( image, 0, 0, width, height ); - - const imageData = context.getImageData( 0, 0, width, height ); - - const data = imageData.data; - - const imageWidth = imageData.width; // assumed to be square - - const pixelSize = 2 / imageWidth; - - for ( let i = 0, il = data.length; i < il; i += 4 ) { // RGBA assumed - - // pixel color - color.setRGB( data[ i ] / 255, data[ i + 1 ] / 255, data[ i + 2 ] / 255 ); - - // convert to linear color space - convertColorToLinear( color, cubeTexture.colorSpace ); - - // pixel coordinate on unit cube - - const pixelIndex = i / 4; - - const col = - 1 + ( pixelIndex % imageWidth + 0.5 ) * pixelSize; - - const row = 1 - ( Math.floor( pixelIndex / imageWidth ) + 0.5 ) * pixelSize; - - switch ( faceIndex ) { - - case 0: coord.set( - 1, row, - col ); break; - - case 1: coord.set( 1, row, col ); break; - - case 2: coord.set( - col, 1, - row ); break; - - case 3: coord.set( - col, - 1, row ); break; - - case 4: coord.set( - col, row, 1 ); break; - - case 5: coord.set( col, row, - 1 ); break; - - } - - // weight assigned to this pixel - - const lengthSq = coord.lengthSq(); - - const weight = 4 / ( Math.sqrt( lengthSq ) * lengthSq ); - - totalWeight += weight; - - // direction vector to this pixel - dir.copy( coord ).normalize(); - - // evaluate SH basis functions in direction dir - SphericalHarmonics3.getBasisAt( dir, shBasis ); - - // accummuulate - for ( let j = 0; j < 9; j ++ ) { - - shCoefficients[ j ].x += shBasis[ j ] * color.r * weight; - shCoefficients[ j ].y += shBasis[ j ] * color.g * weight; - shCoefficients[ j ].z += shBasis[ j ] * color.b * weight; - - } - - } - - } - - // normalize - const norm = ( 4 * Math.PI ) / totalWeight; - - for ( let j = 0; j < 9; j ++ ) { - - shCoefficients[ j ].x *= norm; - shCoefficients[ j ].y *= norm; - shCoefficients[ j ].z *= norm; - - } - - return new LightProbe( sh ); - - } - - static fromCubeRenderTarget( renderer, cubeRenderTarget ) { - - // The renderTarget must be set to RGBA in order to make readRenderTargetPixels works - let totalWeight = 0; - - const coord = new Vector3(); - - const dir = new Vector3(); - - const color = new Color(); - - const shBasis = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; - - const sh = new SphericalHarmonics3(); - const shCoefficients = sh.coefficients; - - const dataType = cubeRenderTarget.texture.type; - - for ( let faceIndex = 0; faceIndex < 6; faceIndex ++ ) { - - const imageWidth = cubeRenderTarget.width; // assumed to be square - - let data; - - if ( dataType === HalfFloatType ) { - - data = new Uint16Array( imageWidth * imageWidth * 4 ); - - } else { - - // assuming UnsignedByteType - - data = new Uint8Array( imageWidth * imageWidth * 4 ); - - } - - renderer.readRenderTargetPixels( cubeRenderTarget, 0, 0, imageWidth, imageWidth, data, faceIndex ); - - const pixelSize = 2 / imageWidth; - - for ( let i = 0, il = data.length; i < il; i += 4 ) { // RGBA assumed - - let r, g, b; - - if ( dataType === HalfFloatType ) { - - r = DataUtils.fromHalfFloat( data[ i ] ); - g = DataUtils.fromHalfFloat( data[ i + 1 ] ); - b = DataUtils.fromHalfFloat( data[ i + 2 ] ); - - } else { - - r = data[ i ] / 255; - g = data[ i + 1 ] / 255; - b = data[ i + 2 ] / 255; - - } - - // pixel color - color.setRGB( r, g, b ); - - // convert to linear color space - convertColorToLinear( color, cubeRenderTarget.texture.colorSpace ); - - // pixel coordinate on unit cube - - const pixelIndex = i / 4; - - const col = - 1 + ( pixelIndex % imageWidth + 0.5 ) * pixelSize; - - const row = 1 - ( Math.floor( pixelIndex / imageWidth ) + 0.5 ) * pixelSize; - - switch ( faceIndex ) { - - case 0: coord.set( 1, row, - col ); break; - - case 1: coord.set( - 1, row, col ); break; - - case 2: coord.set( col, 1, - row ); break; - - case 3: coord.set( col, - 1, row ); break; - - case 4: coord.set( col, row, 1 ); break; - - case 5: coord.set( - col, row, - 1 ); break; - - } - - // weight assigned to this pixel - - const lengthSq = coord.lengthSq(); - - const weight = 4 / ( Math.sqrt( lengthSq ) * lengthSq ); - - totalWeight += weight; - - // direction vector to this pixel - dir.copy( coord ).normalize(); - - // evaluate SH basis functions in direction dir - SphericalHarmonics3.getBasisAt( dir, shBasis ); - - // accummuulate - for ( let j = 0; j < 9; j ++ ) { - - shCoefficients[ j ].x += shBasis[ j ] * color.r * weight; - shCoefficients[ j ].y += shBasis[ j ] * color.g * weight; - shCoefficients[ j ].z += shBasis[ j ] * color.b * weight; - - } - - } - - } - - // normalize - const norm = ( 4 * Math.PI ) / totalWeight; - - for ( let j = 0; j < 9; j ++ ) { - - shCoefficients[ j ].x *= norm; - shCoefficients[ j ].y *= norm; - shCoefficients[ j ].z *= norm; - - } - - return new LightProbe( sh ); - - } - -} - -function convertColorToLinear( color, colorSpace ) { - - switch ( colorSpace ) { - - case SRGBColorSpace: - - color.convertSRGBToLinear(); - break; - - case LinearSRGBColorSpace: - case NoColorSpace: - - break; - - default: - - console.warn( 'WARNING: LightProbeGenerator convertColorToLinear() encountered an unsupported color space.' ); - break; - - } - - return color; - -} - -export { LightProbeGenerator }; diff --git a/three/addons/lights/RectAreaLightUniformsLib.js b/three/addons/lights/RectAreaLightUniformsLib.js deleted file mode 100644 index cf916b3..0000000 --- a/three/addons/lights/RectAreaLightUniformsLib.js +++ /dev/null @@ -1,79 +0,0 @@ -import { - ClampToEdgeWrapping, - DataTexture, - DataUtils, - FloatType, - HalfFloatType, - LinearFilter, - NearestFilter, - RGBAFormat, - UVMapping, - UniformsLib -} from 'three'; - -/** - * Uniforms library for RectAreaLight shared webgl shaders - * - * NOTE: This is a temporary location for the BRDF approximation texture data - * based off of Eric Heitz's work (see citation below). BRDF data for - * RectAreaLight is currently approximated using a precomputed texture - * of roughly 80kb in size. The hope is to find a better way to include - * the large texture data before including the full RectAreaLight implementation - * in the main build files. - * - * TODO: figure out a way to compress the LTC BRDF data - */ - -// Real-Time Polygonal-Light Shading with Linearly Transformed Cosines -// by Eric Heitz, Jonathan Dupuy, Stephen Hill and David Neubelt -// code: https://github.com/selfshadow/ltc_code/ - -class RectAreaLightUniformsLib { - - static init() { - - // source: https://github.com/selfshadow/ltc_code/tree/master/fit/results/ltc.js - - const LTC_MAT_1 = [ 1, 0, 0, 2e-05, 1, 0, 0, 0.000503905, 1, 0, 0, 0.00201562, 1, 0, 0, 0.00453516, 1, 0, 0, 0.00806253, 1, 0, 0, 0.0125978, 1, 0, 0, 0.018141, 1, 0, 0, 0.0246924, 1, 0, 0, 0.0322525, 1, 0, 0, 0.0408213, 1, 0, 0, 0.0503999, 1, 0, 0, 0.0609894, 1, 0, 0, 0.0725906, 1, 0, 0, 0.0852058, 1, 0, 0, 0.0988363, 1, 0, 0, 0.113484, 1, 0, 0, 0.129153, 1, 0, 0, 0.145839, 1, 0, 0, 0.163548, 1, 0, 0, 0.182266, 1, 0, 0, 0.201942, 1, 0, 0, 0.222314, 1, 0, 0, 0.241906, 1, 0, 0, 0.262314, 1, 0, 0, 0.285754, 1, 0, 0, 0.310159, 1, 0, 0, 0.335426, 1, 0, 0, 0.361341, 1, 0, 0, 0.387445, 1, 0, 0, 0.412784, 1, 0, 0, 0.438197, 1, 0, 0, 0.466966, 1, 0, 0, 0.49559, 1, 0, 0, 0.523448, 1, 0, 0, 0.549938, 1, 0, 0, 0.57979, 1, 0, 0, 0.608746, 1, 0, 0, 0.636185, 1, 0, 0, 0.664748, 1, 0, 0, 0.69313, 1, 0, 0, 0.71966, 1, 0, 0, 0.747662, 1, 0, 0, 0.774023, 1, 0, 0, 0.799775, 1, 0, 0, 0.825274, 1, 0, 0, 0.849156, 1, 0, 0, 0.873248, 1, 0, 0, 0.89532, 1, 0, 0, 0.917565, 1, 0, 0, 0.937863, 1, 0, 0, 0.958139, 1, 0, 0, 0.976563, 1, 0, 0, 0.994658, 1, 0, 0, 1.0112, 1, 0, 0, 1.02712, 1, 0, 0, 1.04189, 1, 0, 0, 1.05568, 1, 0, 0, 1.06877, 1, 0, 0, 1.08058, 1, 0, 0, 1.09194, 1, 0, 0, 1.10191, 1, 0, 0, 1.11161, 1, 0, 0, 1.1199, 1, 0, 0, 1.12813, 0.999547, - 4.48815e-07, 0.0224417, 1.99902e-05, 0.999495, - 1.13079e-05, 0.0224406, 0.000503651, 0.999496, - 4.52317e-05, 0.0224406, 0.00201461, 0.999496, - 0.000101772, 0.0224406, 0.00453287, 0.999495, - 0.000180928, 0.0224406, 0.00805845, 0.999497, - 0.000282702, 0.0224406, 0.0125914, 0.999496, - 0.000407096, 0.0224406, 0.0181319, 0.999498, - 0.000554114, 0.0224406, 0.02468, 0.999499, - 0.000723768, 0.0224406, 0.0322363, 0.999495, - 0.000916058, 0.0224405, 0.0408009, 0.999499, - 0.00113101, 0.0224408, 0.050375, 0.999494, - 0.00136863, 0.0224405, 0.0609586, 0.999489, - 0.00162896, 0.0224401, 0.0725537, 0.999489, - 0.00191201, 0.0224414, 0.0851619, 0.999498, - 0.00221787, 0.0224413, 0.0987867, 0.999492, - 0.00254642, 0.0224409, 0.113426, 0.999507, - 0.00289779, 0.0224417, 0.129088, 0.999494, - 0.0032716, 0.0224386, 0.145767, 0.999546, - 0.0036673, 0.0224424, 0.163472, 0.999543, - 0.00408166, 0.0224387, 0.182182, 0.999499, - 0.00450056, 0.0224338, 0.201843, 0.999503, - 0.00483661, 0.0224203, 0.222198, 0.999546, - 0.00452928, 0.022315, 0.241714, 0.999508, - 0.00587403, 0.0224329, 0.262184, 0.999509, - 0.00638806, 0.0224271, 0.285609, 0.999501, - 0.00691028, 0.0224166, 0.309998, 0.999539, - 0.00741979, 0.0223989, 0.335262, 0.999454, - 0.00786282, 0.0223675, 0.361154, 0.999529, - 0.00811928, 0.0222828, 0.387224, 0.999503, - 0.00799941, 0.0221063, 0.41252, 0.999561, - 0.00952753, 0.0223057, 0.438006, 0.999557, - 0.0099134, 0.0222065, 0.466735, 0.999541, - 0.0100935, 0.0220402, 0.495332, 0.999562, - 0.00996821, 0.0218067, 0.523197, 0.999556, - 0.0105031, 0.0217096, 0.550223, 0.999561, - 0.0114191, 0.0217215, 0.579498, 0.999588, - 0.0111818, 0.0213357, 0.608416, 0.999633, - 0.0107725, 0.0208689, 0.635965, 0.999527, - 0.0121671, 0.0210149, 0.664476, 0.999508, - 0.0116005, 0.020431, 0.692786, 0.999568, - 0.0115604, 0.0199791, 0.719709, 0.999671, - 0.0121117, 0.0197415, 0.74737, 0.999688, - 0.0110769, 0.0188846, 0.773692, 0.99962, - 0.0122368, 0.0188452, 0.799534, 0.999823, - 0.0110325, 0.0178001, 0.825046, 0.999599, - 0.0114923, 0.0174221, 0.849075, 0.999619, - 0.0105923, 0.0164345, 0.872999, 0.999613, - 0.0105988, 0.0158227, 0.895371, 0.99964, - 0.00979861, 0.0148131, 0.917364, 0.99977, - 0.00967238, 0.0140721, 0.938002, 0.999726, - 0.00869175, 0.0129543, 0.957917, 0.99973, - 0.00866872, 0.0122329, 0.976557, 0.999773, - 0.00731956, 0.0108958, 0.994459, 0.999811, - 0.00756027, 0.0102715, 1.01118, 0.999862, - 0.00583732, 0.00878781, 1.02701, 0.999835, - 0.00631438, 0.00827529, 1.04186, 0.999871, - 0.00450785, 0.00674583, 1.05569, 0.999867, - 0.00486079, 0.00621041, 1.06861, 0.999939, - 0.00322072, 0.00478301, 1.08064, 0.999918, - 0.00318199, 0.00406395, 1.09181, 1.00003, - 0.00193348, 0.00280682, 1.10207, 0.999928, - 0.00153729, 0.00198741, 1.11152, 0.999933, - 0.000623666, 0.000917714, 1.12009, 1, - 1.02387e-06, 9.07581e-07, 1.12813, 0.997866, - 8.96716e-07, 0.0448334, 1.99584e-05, 0.997987, - 2.25945e-05, 0.0448389, 0.000502891, 0.997987, - 9.03781e-05, 0.0448388, 0.00201156, 0.997985, - 0.000203351, 0.0448388, 0.00452602, 0.997986, - 0.000361514, 0.0448388, 0.00804629, 0.997987, - 0.00056487, 0.0448389, 0.0125724, 0.997988, - 0.000813423, 0.0448389, 0.0181045, 0.997984, - 0.00110718, 0.0448387, 0.0246427, 0.997985, - 0.00144616, 0.0448388, 0.0321875, 0.997987, - 0.00183038, 0.044839, 0.0407392, 0.997983, - 0.00225987, 0.0448387, 0.0502986, 0.997991, - 0.00273467, 0.0448389, 0.0608667, 0.997984, - 0.00325481, 0.0448384, 0.0724444, 0.998002, - 0.00382043, 0.044839, 0.0850348, 0.997997, - 0.00443145, 0.0448396, 0.0986372, 0.998007, - 0.00508796, 0.0448397, 0.113255, 0.998008, - 0.00578985, 0.04484, 0.128891, 0.998003, - 0.00653683, 0.0448384, 0.145548, 0.997983, - 0.00732713, 0.0448358, 0.163221, 0.997985, - 0.00815454, 0.0448358, 0.181899, 0.998005, - 0.00898985, 0.0448286, 0.201533, 0.998026, - 0.00964404, 0.0447934, 0.221821, 0.998055, - 0.00922677, 0.044611, 0.241282, 0.99804, - 0.0117361, 0.0448245, 0.261791, 0.998048, - 0.0127628, 0.0448159, 0.285181, 0.998088, - 0.0138055, 0.0447996, 0.30954, 0.998058, - 0.0148206, 0.0447669, 0.334751, 0.998099, - 0.0156998, 0.044697, 0.36061, 0.998116, - 0.0161976, 0.0445122, 0.386603, 0.998195, - 0.015945, 0.0441711, 0.411844, 0.998168, - 0.0183947, 0.0444255, 0.43773, 0.998184, - 0.0197913, 0.0443809, 0.466009, 0.998251, - 0.0201426, 0.0440689, 0.494574, 0.998305, - 0.0198847, 0.0435632, 0.522405, 0.998273, - 0.0210577, 0.043414, 0.549967, 0.998254, - 0.0227901, 0.0433943, 0.578655, 0.998349, - 0.0223108, 0.0426529, 0.60758, 0.99843, - 0.0223088, 0.042, 0.635524, 0.998373, - 0.0241141, 0.0418987, 0.663621, 0.998425, - 0.0231446, 0.0408118, 0.691906, 0.998504, - 0.0233684, 0.0400565, 0.719339, 0.998443, - 0.0241652, 0.0394634, 0.74643, 0.99848, - 0.0228715, 0.0380002, 0.773086, 0.998569, - 0.023519, 0.0372322, 0.798988, 0.998619, - 0.0223108, 0.0356468, 0.824249, 0.998594, - 0.0223105, 0.034523, 0.848808, 0.998622, - 0.0213426, 0.0328887, 0.87227, 0.998669, - 0.0207912, 0.0314374, 0.895157, 0.998705, - 0.0198416, 0.0296925, 0.916769, 0.998786, - 0.0189168, 0.0279634, 0.937773, 0.998888, - 0.0178811, 0.0261597, 0.957431, 0.99906, - 0.0166845, 0.0242159, 0.976495, 0.999038, - 0.0155464, 0.0222638, 0.994169, 0.999237, - 0.0141349, 0.0201967, 1.01112, 0.999378, - 0.0129324, 0.0181744, 1.02692, 0.999433, - 0.0113192, 0.0159898, 1.04174, 0.999439, - 0.0101244, 0.0140385, 1.05559, 0.999614, - 0.00837456, 0.0117826, 1.06852, 0.999722, - 0.00721769, 0.00983745, 1.08069, 0.999817, - 0.00554067, 0.00769002, 1.09176, 0.99983, - 0.00426961, 0.005782, 1.10211, 0.999964, - 0.00273904, 0.00374503, 1.11152, 1.00001, - 0.00136739, 0.00187176, 1.12031, 0.999946, 3.93227e-05, - 2.8919e-05, 1.12804, 0.995847, - 1.3435e-06, 0.0671785, 1.9916e-05, 0.995464, - 3.38387e-05, 0.0671527, 0.000501622, 0.99547, - 0.000135355, 0.0671531, 0.00200649, 0.995471, - 0.00030455, 0.0671532, 0.00451461, 0.99547, - 0.000541423, 0.0671531, 0.008026, 0.995471, - 0.00084598, 0.0671531, 0.0125407, 0.99547, - 0.00121823, 0.0671531, 0.0180589, 0.99547, - 0.00165817, 0.0671531, 0.0245806, 0.995463, - 0.00216583, 0.0671526, 0.0321062, 0.995468, - 0.00274127, 0.0671527, 0.0406366, 0.995474, - 0.00338447, 0.0671534, 0.0501717, 0.995473, - 0.00409554, 0.0671533, 0.0607131, 0.995478, - 0.00487451, 0.0671531, 0.0722618, 0.995476, - 0.00572148, 0.0671532, 0.0848191, 0.995477, - 0.00663658, 0.0671539, 0.0983882, 0.995498, - 0.00761986, 0.0671541, 0.112972, 0.995509, - 0.00867094, 0.0671542, 0.128568, 0.995509, - 0.00978951, 0.0671531, 0.145183, 0.995503, - 0.0109725, 0.0671491, 0.162808, 0.995501, - 0.012211, 0.0671465, 0.181441, 0.99553, - 0.0134565, 0.0671371, 0.201015, 0.99555, - 0.014391, 0.0670831, 0.221206, 0.99558, - 0.014351, 0.0668883, 0.240813, 0.995577, - 0.0173997, 0.0671055, 0.261257, 0.995602, - 0.0191111, 0.0671178, 0.284467, 0.995623, - 0.0206705, 0.0670946, 0.308765, 0.995658, - 0.022184, 0.0670472, 0.333905, 0.995705, - 0.0234832, 0.0669417, 0.359677, 0.995719, - 0.0241933, 0.0666714, 0.385554, 0.995786, - 0.0243539, 0.066266, 0.410951, 0.995887, - 0.0271866, 0.0664367, 0.437163, 0.995944, - 0.0296012, 0.0664931, 0.464842, 0.996004, - 0.0301045, 0.0660105, 0.49332, 0.996128, - 0.0298311, 0.0652694, 0.521131, 0.996253, - 0.0316426, 0.0650739, 0.549167, 0.996244, - 0.0339043, 0.0649433, 0.57737, 0.996309, - 0.033329, 0.0638926, 0.606073, 0.996417, - 0.0338935, 0.0630849, 0.634527, 0.996372, - 0.0353104, 0.0625083, 0.66256, 0.996542, - 0.0348942, 0.0611986, 0.690516, 0.996568, - 0.0351614, 0.060069, 0.718317, 0.996711, - 0.0354317, 0.0588522, 0.74528, 0.996671, - 0.0349513, 0.0571902, 0.772061, 0.996865, - 0.0345622, 0.0555321, 0.798089, 0.996802, - 0.0342566, 0.0537816, 0.823178, 0.996992, - 0.0330862, 0.0516095, 0.847949, 0.996944, - 0.0324666, 0.0495537, 0.871431, 0.997146, - 0.0309544, 0.0470302, 0.894357, 0.997189, - 0.0299372, 0.0446043, 0.916142, 0.997471, - 0.0281389, 0.0418812, 0.937193, 0.997515, - 0.0268702, 0.0391823, 0.957, 0.997812, - 0.0247166, 0.0361338, 0.975936, 0.998027, - 0.0233525, 0.0333945, 0.99391, 0.998233, - 0.0209839, 0.0301917, 1.01075, 0.998481, - 0.0194309, 0.027271, 1.02669, 0.998859, - 0.0169728, 0.0240162, 1.04173, 0.99894, - 0.0152322, 0.0210517, 1.05551, 0.999132, - 0.0127497, 0.0178632, 1.06856, 0.999369, - 0.0108282, 0.014787, 1.08054, 0.999549, - 0.00845886, 0.0116185, 1.09185, 0.999805, - 0.0063937, 0.00867209, 1.10207, 0.99985, - 0.00414582, 0.00566823, 1.1117, 0.999912, - 0.00207443, 0.00277562, 1.12022, 1.00001, 8.70226e-05, - 5.3766e-05, 1.12832, 0.991943, - 1.78672e-06, 0.0893382, 1.98384e-05, 0.991952, - 4.50183e-05, 0.089339, 0.000499849, 0.991956, - 0.000180074, 0.0893394, 0.0019994, 0.991955, - 0.000405167, 0.0893393, 0.00449867, 0.991953, - 0.000720298, 0.0893391, 0.00799764, 0.991955, - 0.00112548, 0.0893393, 0.0124964, 0.991957, - 0.0016207, 0.0893395, 0.0179951, 0.991958, - 0.00220601, 0.0893396, 0.0244939, 0.991947, - 0.00288137, 0.0893385, 0.0319929, 0.991962, - 0.00364693, 0.0893399, 0.0404933, 0.991965, - 0.00450264, 0.0893399, 0.049995, 0.99198, - 0.00544862, 0.0893411, 0.0604995, 0.99197, - 0.00648491, 0.0893397, 0.0720074, 0.991976, - 0.00761164, 0.089341, 0.0845207, 0.99198, - 0.00882891, 0.0893405, 0.0980413, 0.991982, - 0.0101367, 0.0893396, 0.112571, 0.992008, - 0.011535, 0.0893415, 0.128115, 0.992026, - 0.0130228, 0.0893414, 0.144672, 0.992064, - 0.0145966, 0.0893418, 0.162241, 0.992041, - 0.0162421, 0.0893359, 0.180801, 0.992086, - 0.0178888, 0.0893214, 0.200302, 0.992157, - 0.0190368, 0.0892401, 0.220332, 0.992181, - 0.0195584, 0.0890525, 0.240144, 0.992175, - 0.0227257, 0.0892153, 0.260728, 0.99221, - 0.0254195, 0.089304, 0.283473, 0.99222, - 0.0274883, 0.0892703, 0.307673, 0.992317, - 0.0294905, 0.0892027, 0.332729, 0.992374, - 0.0311861, 0.0890577, 0.358387, 0.992505, - 0.0320656, 0.0886994, 0.384102, 0.992568, - 0.0329715, 0.0883198, 0.409767, 0.992675, - 0.036006, 0.0883602, 0.436145, 0.992746, - 0.0392897, 0.0884591, 0.463217, 0.992873, - 0.0399337, 0.0878287, 0.491557, 0.992934, - 0.040231, 0.0870108, 0.519516, 0.993091, - 0.0422013, 0.0865857, 0.547741, 0.993259, - 0.0443503, 0.0861937, 0.575792, 0.993455, - 0.0446368, 0.0851187, 0.604233, 0.993497, - 0.0454299, 0.0840576, 0.632925, 0.993694, - 0.0463296, 0.0829671, 0.660985, 0.993718, - 0.0470619, 0.0817185, 0.688714, 0.993973, - 0.0468838, 0.0800294, 0.716743, 0.994207, - 0.046705, 0.0781286, 0.74377, 0.994168, - 0.0469698, 0.0763337, 0.77042, 0.9945, - 0.0456816, 0.0738184, 0.796659, 0.994356, - 0.0455518, 0.0715545, 0.821868, 0.994747, - 0.0439488, 0.0686085, 0.846572, 0.994937, - 0.0430056, 0.065869, 0.870435, 0.995142, - 0.0413414, 0.0626446, 0.893272, 0.995451, - 0.0396521, 0.05929, 0.915376, 0.995445, - 0.0378453, 0.0558503, 0.936196, 0.995967, - 0.0355219, 0.0520949, 0.956376, 0.996094, - 0.0335146, 0.048377, 0.975327, 0.996622, - 0.030682, 0.0442575, 0.993471, 0.996938, - 0.0285504, 0.0404693, 1.01052, 0.997383, - 0.0253399, 0.0360903, 1.02637, 0.997714, - 0.0231651, 0.0322176, 1.04139, 0.998249, - 0.0198138, 0.0278433, 1.05542, 0.998596, - 0.0174337, 0.0238759, 1.06846, 0.998946, - 0.0141349, 0.0195944, 1.08056, 0.99928, - 0.0115603, 0.0156279, 1.09181, 0.999507, - 0.00839065, 0.0114607, 1.10213, 0.999697, - 0.005666, 0.00763325, 1.11169, 0.999869, - 0.00269902, 0.00364946, 1.12042, 1.00001, 6.23836e-05, - 3.19288e-05, 1.12832, 0.987221, - 2.22675e-06, 0.111332, 1.97456e-05, 0.98739, - 5.61116e-05, 0.111351, 0.000497563, 0.987448, - 0.000224453, 0.111357, 0.00199031, 0.987441, - 0.000505019, 0.111357, 0.0044782, 0.987442, - 0.000897816, 0.111357, 0.00796129, 0.987442, - 0.00140284, 0.111357, 0.0124396, 0.987444, - 0.00202012, 0.111357, 0.0179132, 0.987442, - 0.00274964, 0.111357, 0.0243824, 0.987446, - 0.00359147, 0.111357, 0.0318474, 0.987435, - 0.00454562, 0.111356, 0.0403086, 0.987461, - 0.00561225, 0.111358, 0.0497678, 0.987458, - 0.00679125, 0.111358, 0.0602239, 0.987443, - 0.0080828, 0.111356, 0.0716792, 0.987476, - 0.0094872, 0.111358, 0.0841364, 0.98749, - 0.0110044, 0.111361, 0.097597, 0.987508, - 0.0126344, 0.111362, 0.112062, 0.987494, - 0.0143767, 0.111357, 0.127533, 0.987526, - 0.0162307, 0.111359, 0.144015, 0.987558, - 0.0181912, 0.111361, 0.161502, 0.987602, - 0.0202393, 0.111355, 0.179979, 0.987692, - 0.022273, 0.111346, 0.199386, 0.987702, - 0.0235306, 0.111215, 0.219183, 0.987789, - 0.0247628, 0.111061, 0.239202, 0.987776, - 0.0280668, 0.111171, 0.259957, 0.987856, - 0.0316751, 0.111327, 0.282198, 0.987912, - 0.0342468, 0.111282, 0.306294, 0.988, - 0.0367205, 0.111198, 0.331219, 0.988055, - 0.0387766, 0.110994, 0.356708, 0.988241, - 0.0397722, 0.110547, 0.382234, 0.988399, - 0.0416076, 0.110198, 0.408227, 0.988539, - 0.0448192, 0.110137, 0.434662, 0.988661, - 0.0483793, 0.110143, 0.461442, 0.988967, - 0.0495895, 0.109453, 0.489318, 0.989073, - 0.0506797, 0.108628, 0.517516, 0.989274, - 0.0526953, 0.108003, 0.545844, 0.989528, - 0.054578, 0.107255, 0.573823, 0.989709, - 0.0561503, 0.106294, 0.601944, 0.989991, - 0.056866, 0.104896, 0.630855, 0.990392, - 0.0572914, 0.103336, 0.658925, 0.990374, - 0.0586224, 0.10189, 0.686661, 0.990747, - 0.0584764, 0.099783, 0.714548, 0.991041, - 0.0582662, 0.0974309, 0.74186, 0.991236, - 0.0584118, 0.0951678, 0.768422, 0.991585, - 0.0573055, 0.0921581, 0.794817, 0.991984, - 0.0564241, 0.0891167, 0.820336, 0.9921, - 0.0553608, 0.085805, 0.84493, 0.992749, - 0.0533816, 0.0820354, 0.868961, 0.99288, - 0.0518661, 0.0782181, 0.891931, 0.993511, - 0.0492492, 0.0738935, 0.914186, 0.993617, - 0.0471956, 0.0696402, 0.93532, 0.99411, - 0.044216, 0.0649659, 0.95543, 0.994595, - 0.0416654, 0.0603177, 0.974685, 0.994976, - 0.0384314, 0.0553493, 0.992807, 0.995579, - 0.0353491, 0.0503942, 1.00996, 0.996069, - 0.0319787, 0.0452123, 1.02606, 0.996718, - 0.028472, 0.0400112, 1.04114, 0.997173, - 0.0250789, 0.0349456, 1.05517, 0.997818, - 0.0213326, 0.029653, 1.0683, 0.998318, - 0.0178509, 0.024549, 1.0805, 0.998853, - 0.0141118, 0.0194197, 1.09177, 0.999218, - 0.0105914, 0.0143869, 1.1022, 0.999594, - 0.00693474, 0.00943517, 1.11175, 0.99975, - 0.00340478, 0.00464051, 1.12056, 1.00001, 0.000109172, - 0.000112821, 1.12853, 0.983383, - 2.66524e-06, 0.133358, 1.96534e-05, 0.981942, - 6.71009e-05, 0.133162, 0.000494804, 0.981946, - 0.000268405, 0.133163, 0.00197923, 0.981944, - 0.000603912, 0.133163, 0.00445326, 0.981941, - 0.00107362, 0.133162, 0.00791693, 0.981946, - 0.00167755, 0.133163, 0.0123703, 0.981944, - 0.00241569, 0.133162, 0.0178135, 0.981945, - 0.00328807, 0.133163, 0.0242466, 0.981945, - 0.00429472, 0.133162, 0.03167, 0.981955, - 0.00543573, 0.133164, 0.0400846, 0.981951, - 0.00671105, 0.133163, 0.0494901, 0.981968, - 0.00812092, 0.133165, 0.0598886, 0.981979, - 0.00966541, 0.133166, 0.0712811, 0.981996, - 0.0113446, 0.133168, 0.083669, 0.982014, - 0.0131585, 0.133169, 0.0970533, 0.982011, - 0.0151073, 0.133167, 0.111438, 0.982062, - 0.0171906, 0.133172, 0.126826, 0.9821, - 0.0194067, 0.133175, 0.143215, 0.982149, - 0.0217502, 0.133176, 0.160609, 0.982163, - 0.0241945, 0.133173, 0.178981, 0.982247, - 0.0265907, 0.133148, 0.198249, 0.982291, - 0.027916, 0.132974, 0.217795, 0.982396, - 0.0299663, 0.132868, 0.238042, 0.982456, - 0.0334544, 0.132934, 0.258901, 0.982499, - 0.0378636, 0.133137, 0.280639, 0.982617, - 0.0409274, 0.133085, 0.304604, 0.98274, - 0.0438523, 0.132985, 0.329376, 0.982944, - 0.0462288, 0.132728, 0.354697, 0.98308, - 0.0475995, 0.132228, 0.380102, 0.983391, - 0.0501901, 0.131924, 0.406256, 0.983514, - 0.0535899, 0.131737, 0.432735, 0.98373, - 0.0571858, 0.131567, 0.459359, 0.984056, - 0.0592353, 0.130932, 0.486637, 0.984234, - 0.0610488, 0.130092, 0.51509, 0.984748, - 0.0630758, 0.12923, 0.543461, 0.985073, - 0.0647398, 0.128174, 0.571376, 0.985195, - 0.0671941, 0.127133, 0.599414, 0.985734, - 0.0681345, 0.125576, 0.628134, 0.986241, - 0.0686089, 0.123639, 0.656399, 0.986356, - 0.0698511, 0.121834, 0.684258, 0.986894, - 0.0700931, 0.119454, 0.711818, 0.987382, - 0.0698321, 0.116718, 0.739511, 0.988109, - 0.0693975, 0.113699, 0.766267, 0.988363, - 0.0689584, 0.110454, 0.792456, 0.989112, - 0.0672353, 0.106602, 0.81813, 0.989241, - 0.0662034, 0.10267, 0.842889, 0.990333, - 0.0638938, 0.0981381, 0.867204, 0.990591, - 0.0618534, 0.0935388, 0.89038, 0.991106, - 0.0593117, 0.088553, 0.912576, 0.991919, - 0.0562676, 0.0832187, 0.934118, 0.992111, - 0.0534085, 0.0778302, 0.954254, 0.992997, - 0.0495459, 0.0720453, 0.973722, 0.993317, - 0.0463707, 0.0663458, 0.991949, 0.994133, - 0.0421245, 0.0601883, 1.00936, 0.994705, - 0.0384977, 0.0542501, 1.02559, 0.995495, - 0.0340956, 0.0479862, 1.04083, 0.996206, - 0.030105, 0.041887, 1.05497, 0.996971, - 0.0256095, 0.0355355, 1.06824, 0.997796, - 0.0213932, 0.0293655, 1.08056, 0.998272, - 0.0169612, 0.0232926, 1.09182, 0.998857, - 0.0126756, 0.0172786, 1.10219, 0.99939, - 0.00832486, 0.0113156, 1.11192, 0.999752, - 0.00410826, 0.00557892, 1.12075, 1, 0.000150957, - 0.000119101, 1.12885, 0.975169, - 3.09397e-06, 0.154669, 1.95073e-05, 0.975439, - 7.79608e-05, 0.154712, 0.000491534, 0.975464, - 0.000311847, 0.154716, 0.00196617, 0.975464, - 0.000701656, 0.154716, 0.00442387, 0.975462, - 0.0012474, 0.154715, 0.0078647, 0.975461, - 0.00194906, 0.154715, 0.0122886, 0.975464, - 0.00280667, 0.154715, 0.0176959, 0.975468, - 0.00382025, 0.154716, 0.0240867, 0.975471, - 0.00498985, 0.154716, 0.0314612, 0.975472, - 0.00631541, 0.154717, 0.0398199, 0.975486, - 0.00779719, 0.154718, 0.0491639, 0.975489, - 0.00943505, 0.154718, 0.0594932, 0.975509, - 0.0112295, 0.154721, 0.0708113, 0.97554, - 0.0131802, 0.154724, 0.0831176, 0.975557, - 0.0152876, 0.154726, 0.096415, 0.975585, - 0.0175512, 0.154728, 0.110705, 0.975605, - 0.0199713, 0.154729, 0.125992, 0.975645, - 0.0225447, 0.154729, 0.142272, 0.975711, - 0.0252649, 0.154735, 0.159549, 0.975788, - 0.0280986, 0.154736, 0.177805, 0.975872, - 0.0308232, 0.154704, 0.196911, 0.975968, - 0.0324841, 0.154525, 0.216324, 0.976063, - 0.0351281, 0.154432, 0.236628, 0.976157, - 0.0388618, 0.15446, 0.257539, 0.976204, - 0.0437704, 0.154665, 0.278975, 0.976358, - 0.047514, 0.154652, 0.302606, 0.976571, - 0.0508638, 0.154535, 0.327204, 0.976725, - 0.0534995, 0.154221, 0.352276, 0.977013, - 0.0555547, 0.153737, 0.377696, 0.977294, - 0.0586728, 0.153403, 0.403855, 0.977602, - 0.0622715, 0.15312, 0.430333, 0.977932, - 0.0658166, 0.152755, 0.456855, 0.978241, - 0.0689877, 0.152233, 0.483668, 0.978602, - 0.0712805, 0.15132, 0.512097, 0.979234, - 0.0732775, 0.150235, 0.540455, 0.97977, - 0.075163, 0.148978, 0.568486, 0.979995, - 0.0778026, 0.147755, 0.596524, 0.98078, - 0.0791854, 0.146019, 0.624825, 0.981628, - 0.0799666, 0.143906, 0.653403, 0.982067, - 0.0808532, 0.141561, 0.681445, 0.98271, - 0.0816024, 0.139025, 0.708918, 0.983734, - 0.0812511, 0.135764, 0.736594, 0.98431, - 0.0806201, 0.132152, 0.763576, 0.985071, - 0.0801605, 0.12846, 0.789797, 0.98618, - 0.0784208, 0.124084, 0.815804, 0.986886, - 0.0766643, 0.1193, 0.840869, 0.987485, - 0.0747744, 0.114236, 0.864952, 0.988431, - 0.0716701, 0.108654, 0.888431, 0.988886, - 0.0691609, 0.102994, 0.910963, 0.990024, - 0.0654048, 0.0967278, 0.932629, 0.990401, - 0.0619765, 0.090384, 0.95313, 0.991093, - 0.0579296, 0.0837885, 0.972587, 0.992018, - 0.0536576, 0.0770171, 0.991184, 0.992536, - 0.0493719, 0.0701486, 1.00863, 0.993421, - 0.0444813, 0.062953, 1.02494, 0.993928, - 0.040008, 0.0560455, 1.04017, 0.994994, - 0.0347982, 0.04856, 1.05463, 0.995866, - 0.0301017, 0.0416152, 1.06807, 0.996916, - 0.0248225, 0.0342597, 1.08039, 0.997766, - 0.0199229, 0.0271668, 1.09177, 0.998479, - 0.0147422, 0.0201387, 1.10235, 0.99921, - 0.00980173, 0.0131944, 1.11206, 0.999652, - 0.0047426, 0.00640712, 1.12104, 0.999998, 8.91673e-05, - 0.00010379, 1.12906, 0.967868, - 3.51885e-06, 0.175947, 1.93569e-05, 0.968001, - 8.86733e-05, 0.175972, 0.000487782, 0.96801, - 0.000354697, 0.175973, 0.00195115, 0.968012, - 0.000798063, 0.175974, 0.00439006, 0.968011, - 0.00141879, 0.175973, 0.00780461, 0.968011, - 0.00221686, 0.175973, 0.0121948, 0.968016, - 0.00319231, 0.175974, 0.0175607, 0.968019, - 0.00434515, 0.175974, 0.0239027, 0.968018, - 0.00567538, 0.175974, 0.0312208, 0.968033, - 0.00718308, 0.175977, 0.0395158, 0.968049, - 0.00886836, 0.175979, 0.0487885, 0.968047, - 0.0107312, 0.175978, 0.0590394, 0.968072, - 0.0127719, 0.175981, 0.0702705, 0.968108, - 0.0149905, 0.175986, 0.0824836, 0.968112, - 0.0173866, 0.175985, 0.0956783, 0.968173, - 0.0199611, 0.175993, 0.109862, 0.96827, - 0.0227128, 0.176008, 0.125033, 0.968292, - 0.025639, 0.17601, 0.141193, 0.968339, - 0.0287299, 0.176007, 0.158336, 0.968389, - 0.0319399, 0.176001, 0.176441, 0.968501, - 0.034941, 0.175962, 0.195359, 0.968646, - 0.0370812, 0.175793, 0.214686, 0.968789, - 0.0402329, 0.175708, 0.234973, 0.96886, - 0.0442601, 0.1757, 0.255871, 0.969013, - 0.049398, 0.175876, 0.277238, 0.969242, - 0.0539932, 0.17594, 0.300326, 0.969419, - 0.0577299, 0.175781, 0.324702, 0.969763, - 0.0605643, 0.175432, 0.349527, 0.970093, - 0.0634488, 0.174992, 0.374976, 0.970361, - 0.0670589, 0.174611, 0.401097, 0.970825, - 0.0708246, 0.174226, 0.427496, 0.971214, - 0.0742871, 0.173684, 0.453858, 0.971622, - 0.0782608, 0.173186, 0.480637, 0.972175, - 0.0813151, 0.172288, 0.508655, 0.972944, - 0.0832678, 0.170979, 0.536973, 0.973595, - 0.0855964, 0.169573, 0.565138, 0.974345, - 0.0882163, 0.168152, 0.593222, 0.975233, - 0.0901671, 0.166314, 0.621201, 0.976239, - 0.0912111, 0.163931, 0.649919, 0.977289, - 0.0916959, 0.161106, 0.678011, 0.978076, - 0.0927061, 0.158272, 0.705717, 0.979533, - 0.0925562, 0.15475, 0.733228, 0.980335, - 0.0918159, 0.150638, 0.760454, 0.981808, - 0.0908508, 0.146201, 0.786918, 0.983061, - 0.0896172, 0.141386, 0.812953, 0.984148, - 0.0871588, 0.135837, 0.838281, 0.985047, - 0.0850624, 0.130135, 0.862594, 0.986219, - 0.0818541, 0.123882, 0.88633, 0.987043, - 0.0784523, 0.117126, 0.908952, 0.988107, - 0.0749601, 0.110341, 0.930744, 0.988955, - 0.0703548, 0.102885, 0.951728, 0.989426, - 0.0662798, 0.0954167, 0.971166, 0.990421, - 0.0610834, 0.0876331, 0.989984, 0.991032, - 0.0562936, 0.0797785, 1.00765, 0.992041, - 0.0508154, 0.0718166, 1.02434, 0.992794, - 0.0454045, 0.0637125, 1.03976, 0.993691, - 0.0398194, 0.0555338, 1.05418, 0.994778, - 0.0341482, 0.0473388, 1.06772, 0.995915, - 0.028428, 0.0391016, 1.08028, 0.997109, - 0.022642, 0.0309953, 1.09185, 0.998095, - 0.0168738, 0.0230288, 1.10247, 0.998985, - 0.0111274, 0.0150722, 1.11229, 0.999581, - 0.00543881, 0.00740605, 1.12131, 1.00003, 0.000162239, - 0.000105549, 1.12946, 0.959505, - 3.93734e-06, 0.196876, 1.91893e-05, 0.959599, - 9.92157e-05, 0.196895, 0.000483544, 0.959641, - 0.000396868, 0.196903, 0.0019342, 0.959599, - 0.000892948, 0.196895, 0.00435193, 0.959603, - 0.00158747, 0.196896, 0.0077368, 0.959604, - 0.00248042, 0.196896, 0.0120888, 0.959605, - 0.00357184, 0.196896, 0.0174082, 0.959605, - 0.00486169, 0.196896, 0.0236949, 0.959613, - 0.00635008, 0.196897, 0.0309497, 0.959619, - 0.00803696, 0.196898, 0.0391725, 0.959636, - 0.00992255, 0.196901, 0.0483649, 0.959634, - 0.0120067, 0.1969, 0.0585266, 0.959675, - 0.0142898, 0.196906, 0.0696609, 0.959712, - 0.0167717, 0.196911, 0.0817678, 0.959752, - 0.0194524, 0.196918, 0.0948494, 0.959807, - 0.0223321, 0.196925, 0.10891, 0.959828, - 0.0254091, 0.196924, 0.123947, 0.959906, - 0.0286815, 0.196934, 0.139968, 0.960005, - 0.0321371, 0.196944, 0.156968, 0.960071, - 0.0357114, 0.196936, 0.17491, 0.960237, - 0.0389064, 0.196882, 0.193597, 0.960367, - 0.041623, 0.196731, 0.21285, 0.960562, - 0.0452655, 0.196654, 0.233075, 0.960735, - 0.0496207, 0.196643, 0.253941, 0.960913, - 0.0549379, 0.196774, 0.275278, 0.961121, - 0.0603414, 0.196893, 0.297733, 0.96139, - 0.0644244, 0.196717, 0.321877, 0.961818, - 0.067556, 0.196314, 0.346476, 0.962175, - 0.0712709, 0.195917, 0.371907, 0.96255, - 0.0752848, 0.1955, 0.397916, 0.963164, - 0.0792073, 0.195026, 0.424229, 0.963782, - 0.0828225, 0.194424, 0.450637, 0.964306, - 0.0873119, 0.193831, 0.477288, 0.964923, - 0.0911051, 0.192973, 0.504716, 0.966048, - 0.093251, 0.19151, 0.533053, 0.967024, - 0.0958983, 0.190013, 0.561366, 0.968038, - 0.09835, 0.188253, 0.589464, 0.969152, - 0.100754, 0.186257, 0.617433, 0.970557, - 0.102239, 0.183775, 0.645801, 0.972104, - 0.102767, 0.180645, 0.674278, 0.973203, - 0.103492, 0.177242, 0.702004, 0.975123, - 0.103793, 0.17345, 0.729529, 0.97641, - 0.102839, 0.168886, 0.756712, 0.978313, - 0.101687, 0.163892, 0.783801, 0.980036, - 0.100314, 0.158439, 0.809671, 0.981339, - 0.097836, 0.152211, 0.835402, 0.982794, - 0.0950006, 0.145679, 0.860081, 0.984123, - 0.0920994, 0.138949, 0.883757, 0.984918, - 0.0878641, 0.131283, 0.90685, 0.985999, - 0.083939, 0.123464, 0.928786, 0.987151, - 0.0791234, 0.115324, 0.94983, 0.987827, - 0.0739332, 0.106854, 0.96962, 0.988806, - 0.0688088, 0.0982691, 0.98861, 0.989588, - 0.0628962, 0.0893456, 1.00667, 0.990438, - 0.0573146, 0.0805392, 1.02344, 0.991506, - 0.0509433, 0.0713725, 1.03933, 0.992492, - 0.0448724, 0.0623732, 1.05378, 0.993663, - 0.0383497, 0.0530838, 1.06747, 0.994956, - 0.0319593, 0.0439512, 1.08007, 0.99634, - 0.025401, 0.0347803, 1.09182, 0.99761, - 0.0189687, 0.0257954, 1.1025, 0.99863, - 0.0124441, 0.0169893, 1.11247, 0.99947, - 0.00614003, 0.00829498, 1.12151, 1.00008, 0.000216624, - 0.000146107, 1.12993, 0.950129, - 4.34955e-06, 0.217413, 1.90081e-05, 0.950264, - 0.00010957, 0.217444, 0.00047884, 0.9503, - 0.000438299, 0.217451, 0.00191543, 0.950246, - 0.000986124, 0.21744, 0.00430951, 0.950246, - 0.00175311, 0.21744, 0.00766137, 0.950245, - 0.00273923, 0.21744, 0.011971, 0.950253, - 0.00394453, 0.217441, 0.0172385, 0.950258, - 0.00536897, 0.217442, 0.0234641, 0.950267, - 0.00701262, 0.217444, 0.030648, 0.950277, - 0.00887551, 0.217446, 0.038791, 0.950284, - 0.0109576, 0.217446, 0.0478931, 0.950312, - 0.0132591, 0.217451, 0.0579568, 0.950334, - 0.01578, 0.217454, 0.0689821, 0.950378, - 0.0185204, 0.217462, 0.0809714, 0.950417, - 0.0214803, 0.217467, 0.0939265, 0.950488, - 0.0246594, 0.217479, 0.10785, 0.950534, - 0.0280565, 0.217483, 0.122743, 0.950633, - 0.0316685, 0.217498, 0.138611, 0.950698, - 0.0354787, 0.217499, 0.155442, 0.950844, - 0.0394003, 0.217507, 0.173208, 0.950999, - 0.0426812, 0.217419, 0.191605, 0.951221, - 0.0461302, 0.217317, 0.21084, 0.951412, - 0.0502131, 0.217238, 0.230945, 0.951623, - 0.0549183, 0.21722, 0.251745, 0.951867, - 0.0604493, 0.217306, 0.273001, 0.952069, - 0.0665189, 0.217466, 0.294874, 0.952459, - 0.0709179, 0.217266, 0.318732, 0.952996, - 0.0746112, 0.216891, 0.34318, 0.953425, - 0.0789252, 0.216503, 0.36849, 0.953885, - 0.0833293, 0.216042, 0.394373, 0.954617, - 0.087371, 0.215469, 0.420505, 0.955429, - 0.0914054, 0.214802, 0.446907, 0.956068, - 0.0961671, 0.214146, 0.473522, 0.957094, - 0.10048, 0.213286, 0.50052, 0.958372, - 0.103248, 0.211796, 0.528715, 0.959654, - 0.106033, 0.21016, 0.557065, 0.961305, - 0.108384, 0.208149, 0.585286, 0.962785, - 0.111122, 0.206024, 0.613334, 0.964848, - 0.112981, 0.203442, 0.641334, 0.966498, - 0.113717, 0.19996, 0.669955, 0.968678, - 0.114121, 0.196105, 0.698094, 0.970489, - 0.114524, 0.191906, 0.725643, 0.972903, - 0.113792, 0.186963, 0.752856, 0.974701, - 0.112406, 0.181343, 0.780013, 0.976718, - 0.110685, 0.175185, 0.806268, 0.978905, - 0.108468, 0.168535, 0.832073, 0.980267, - 0.105061, 0.161106, 0.857149, 0.981967, - 0.101675, 0.153387, 0.881145, 0.983063, - 0.0974492, 0.145199, 0.904255, 0.984432, - 0.0925815, 0.136527, 0.926686, 0.985734, - 0.0877983, 0.127584, 0.947901, 0.986228, - 0.081884, 0.118125, 0.968111, 0.98719, - 0.0761208, 0.108594, 0.98719, 0.988228, - 0.0698196, 0.0989996, 1.00559, 0.989046, - 0.0632739, 0.0890074, 1.02246, 0.990242, - 0.056522, 0.0790832, 1.03841, 0.991252, - 0.0495272, 0.0689182, 1.05347, 0.992542, - 0.0425373, 0.0588592, 1.06724, 0.994096, - 0.0353198, 0.0486833, 1.08009, 0.995593, - 0.028235, 0.0385977, 1.09177, 0.99711, - 0.0209511, 0.0286457, 1.10274, 0.998263, - 0.0139289, 0.0188497, 1.11262, 0.999254, - 0.0067359, 0.009208, 1.12191, 0.999967, 0.000141846, - 6.57764e-05, 1.13024, 0.935608, - 4.74692e-06, 0.236466, 1.87817e-05, 0.93996, - 0.00011971, 0.237568, 0.000473646, 0.939959, - 0.000478845, 0.237567, 0.0018946, 0.939954, - 0.0010774, 0.237566, 0.00426284, 0.939956, - 0.00191538, 0.237566, 0.00757842, 0.939954, - 0.00299277, 0.237566, 0.0118413, 0.93996, - 0.00430961, 0.237567, 0.0170518, 0.939969, - 0.00586589, 0.237569, 0.02321, 0.939982, - 0.00766166, 0.237572, 0.0303164, 0.939987, - 0.00969686, 0.237572, 0.0383711, 0.939997, - 0.0119715, 0.237574, 0.0473751, 0.940031, - 0.0144858, 0.237581, 0.0573298, 0.940073, - 0.0172399, 0.237589, 0.0682366, 0.94012, - 0.0202335, 0.237598, 0.080097, 0.940162, - 0.0234663, 0.237604, 0.0929116, 0.940237, - 0.0269387, 0.237615, 0.106686, 0.940328, - 0.0306489, 0.237632, 0.121421, 0.940419, - 0.0345917, 0.237645, 0.137115, 0.940522, - 0.0387481, 0.237654, 0.153766, 0.940702, - 0.0429906, 0.237661, 0.17133, 0.940871, - 0.0465089, 0.237561, 0.189502, 0.941103, - 0.050531, 0.23748, 0.208616, 0.941369, - 0.0550657, 0.237423, 0.228595, 0.941641, - 0.0601337, 0.237399, 0.249287, 0.941903, - 0.0658804, 0.237443, 0.270467, 0.942224, - 0.0722674, 0.237597, 0.292024, 0.942633, - 0.0771788, 0.237419, 0.315272, 0.943172, - 0.0815623, 0.237068, 0.339579, 0.943691, - 0.0863973, 0.236682, 0.364717, 0.944382, - 0.0911536, 0.236213, 0.390435, 0.945392, - 0.0952967, 0.235562, 0.416425, 0.946185, - 0.0998948, 0.234832, 0.442772, 0.947212, - 0.104796, 0.234114, 0.469347, 0.948778, - 0.10928, 0.233222, 0.496162, 0.950149, - 0.113081, 0.231845, 0.523978, 0.951989, - 0.115893, 0.230005, 0.552295, 0.953921, - 0.11846, 0.227862, 0.580569, 0.955624, - 0.12115, 0.225439, 0.608698, 0.958234, - 0.123373, 0.222635, 0.636696, 0.960593, - 0.124519, 0.219093, 0.665208, 0.963201, - 0.124736, 0.214749, 0.693557, 0.965642, - 0.125012, 0.210059, 0.721334, 0.968765, - 0.124661, 0.204935, 0.748613, 0.971753, - 0.122996, 0.198661, 0.776224, 0.973751, - 0.120998, 0.191823, 0.802461, 0.976709, - 0.118583, 0.184359, 0.828399, 0.977956, - 0.115102, 0.176437, 0.853693, 0.979672, - 0.111077, 0.167681, 0.877962, 0.981816, - 0.10688, 0.158872, 0.901564, 0.98238, - 0.101469, 0.149398, 0.924057, 0.983964, - 0.0960013, 0.139436, 0.945751, 0.984933, - 0.0899626, 0.12943, 0.966272, 0.985694, - 0.0832973, 0.11894, 0.985741, 0.986822, - 0.0767082, 0.108349, 1.00407, 0.987725, - 0.0693614, 0.0976026, 1.02154, 0.98877, - 0.06211, 0.086652, 1.03757, 0.990129, - 0.0544143, 0.0756182, 1.05296, 0.991337, - 0.046744, 0.0645753, 1.06683, 0.992978, - 0.0387931, 0.0534683, 1.0798, 0.994676, - 0.030973, 0.0424137, 1.09181, 0.99645, - 0.0230311, 0.0314035, 1.10286, 0.997967, - 0.0152065, 0.0206869, 1.11291, 0.99922, - 0.00744837, 0.010155, 1.12237, 1.00002, 0.000240209, - 7.52767e-05, 1.13089, 0.922948, - 5.15351e-06, 0.255626, 1.86069e-05, 0.928785, - 0.000129623, 0.257244, 0.000468009, 0.928761, - 0.00051849, 0.257237, 0.00187202, 0.928751, - 0.0011666, 0.257235, 0.00421204, 0.928751, - 0.00207395, 0.257234, 0.0074881, 0.928754, - 0.00324055, 0.257235, 0.0117002, 0.92876, - 0.00466639, 0.257236, 0.0168486, 0.928763, - 0.00635149, 0.257237, 0.0229334, 0.928774, - 0.00829584, 0.257239, 0.029955, 0.928791, - 0.0104995, 0.257243, 0.0379139, 0.928804, - 0.0129623, 0.257245, 0.0468108, 0.928847, - 0.0156846, 0.257255, 0.0566473, 0.92889, - 0.0186661, 0.257263, 0.0674246, 0.928924, - 0.0219067, 0.257268, 0.0791433, 0.928989, - 0.0254066, 0.257282, 0.0918076, 0.92909, - 0.0291651, 0.257301, 0.105419, 0.92918, - 0.0331801, 0.257316, 0.119978, 0.92929, - 0.0374469, 0.257332, 0.135491, 0.929453, - 0.041939, 0.257357, 0.151948, 0.929586, - 0.0464612, 0.257347, 0.169275, 0.929858, - 0.0503426, 0.257269, 0.187257, 0.930125, - 0.0548409, 0.257199, 0.206204, 0.930403, - 0.0598063, 0.257149, 0.22601, 0.930726, - 0.0652437, 0.257122, 0.246561, 0.931098, - 0.0712376, 0.257153, 0.267618, 0.931396, - 0.0777506, 0.257237, 0.288993, 0.931947, - 0.0832374, 0.257124, 0.311527, 0.932579, - 0.0883955, 0.25683, 0.335697, 0.933194, - 0.0937037, 0.256444, 0.360634, 0.934013, - 0.0987292, 0.255939, 0.386126, 0.935307, - 0.103215, 0.255282, 0.412018, 0.936374, - 0.108234, 0.254538, 0.438292, 0.93776, - 0.113234, 0.253728, 0.464805, 0.939599, - 0.118013, 0.25275, 0.491464, 0.941036, - 0.122661, 0.251404, 0.518751, 0.94337, - 0.125477, 0.249435, 0.547133, 0.945318, - 0.128374, 0.247113, 0.575456, 0.947995, - 0.130996, 0.244441, 0.60372, 0.950818, - 0.133438, 0.241352, 0.63174, 0.954378, - 0.135004, 0.237849, 0.659971, 0.957151, - 0.135313, 0.233188, 0.688478, 0.960743, - 0.13521, 0.228001, 0.716767, 0.964352, - 0.135007, 0.222249, 0.744349, 0.967273, - 0.133523, 0.21542, 0.771786, 0.969767, - 0.131155, 0.208039, 0.798639, 0.973195, - 0.128492, 0.200076, 0.824774, 0.975557, - 0.125094, 0.191451, 0.850222, 0.977692, - 0.120578, 0.18184, 0.874761, 0.98026, - 0.115882, 0.172102, 0.898497, 0.981394, - 0.110372, 0.161859, 0.921636, 0.982386, - 0.10415, 0.15108, 0.943467, 0.983783, - 0.0978128, 0.140407, 0.964045, 0.98422, - 0.0906171, 0.129058, 0.98398, 0.985447, - 0.0832921, 0.117614, 1.00276, 0.986682, - 0.0754412, 0.10585, 1.02047, 0.987326, - 0.0673885, 0.0940943, 1.03678, 0.988707, - 0.0592565, 0.0822093, 1.05218, 0.990185, - 0.050717, 0.070192, 1.06652, 0.991866, - 0.0423486, 0.0582081, 1.07965, 0.993897, - 0.0336118, 0.0460985, 1.09188, 0.995841, - 0.0252178, 0.0342737, 1.10307, 0.997605, - 0.0164893, 0.0224829, 1.11324, 0.999037, - 0.00817112, 0.0110647, 1.12262, 1.00003, 0.000291686, - 0.000168673, 1.13139, 0.915304, - 5.52675e-06, 0.275999, 1.83285e-05, 0.91668, - 0.000139285, 0.276414, 0.000461914, 0.916664, - 0.00055713, 0.276409, 0.00184763, 0.916653, - 0.00125354, 0.276406, 0.00415715, 0.916651, - 0.00222851, 0.276405, 0.00739053, 0.916655, - 0.00348205, 0.276406, 0.0115478, 0.916653, - 0.00501414, 0.276405, 0.0166291, 0.916667, - 0.00682478, 0.276409, 0.0226346, 0.91668, - 0.00891398, 0.276412, 0.0295648, 0.91669, - 0.0112817, 0.276413, 0.0374199, 0.916727, - 0.013928, 0.276422, 0.0462016, 0.916759, - 0.0168528, 0.276429, 0.0559101, 0.916793, - 0.0200558, 0.276436, 0.0665466, 0.916849, - 0.0235373, 0.276448, 0.0781139, 0.916964, - 0.0272973, 0.276474, 0.0906156, 0.917047, - 0.0313344, 0.276491, 0.104051, 0.917152, - 0.0356465, 0.276511, 0.118424, 0.917286, - 0.0402271, 0.276533, 0.133736, 0.917469, - 0.0450408, 0.276564, 0.149978, 0.917686, - 0.0497872, 0.276563, 0.167057, 0.917953, - 0.0540937, 0.276493, 0.184846, 0.918228, - 0.0590709, 0.276437, 0.203614, 0.918572, - 0.0644277, 0.276398, 0.223212, 0.918918, - 0.0702326, 0.276362, 0.243584, 0.919356, - 0.076484, 0.276383, 0.264465, 0.919842, - 0.0830808, 0.276434, 0.285701, 0.920451, - 0.0892972, 0.276407, 0.307559, 0.921113, - 0.095016, 0.276128, 0.331501, 0.921881, - 0.100771, 0.275754, 0.356207, 0.923027, - 0.106029, 0.275254, 0.381477, 0.924364, - 0.111029, 0.274595, 0.40722, 0.925818, - 0.116345, 0.273841, 0.433385, 0.92746, - 0.121424, 0.272913, 0.459848, 0.929167, - 0.12657, 0.271837, 0.486493, 0.931426, - 0.131581, 0.270575, 0.513432, 0.934001, - 0.135038, 0.268512, 0.541502, 0.936296, - 0.138039, 0.266135, 0.569658, 0.939985, - 0.140687, 0.263271, 0.598375, 0.943516, - 0.143247, 0.260058, 0.626563, 0.94782, - 0.145135, 0.256138, 0.654711, 0.951023, - 0.145733, 0.251154, 0.683285, 0.955338, - 0.145554, 0.245562, 0.711831, 0.959629, - 0.145008, 0.239265, 0.739573, 0.963123, - 0.144003, 0.232064, 0.767027, 0.966742, - 0.141289, 0.224036, 0.794359, 0.969991, - 0.138247, 0.215305, 0.820361, 0.973403, - 0.134786, 0.206051, 0.846548, 0.975317, - 0.129966, 0.195914, 0.871541, 0.977647, - 0.12471, 0.185184, 0.895313, 0.980137, - 0.119086, 0.174161, 0.918398, 0.981031, - 0.112297, 0.162792, 0.940679, 0.982037, - 0.105372, 0.150952, 0.961991, 0.983164, - 0.097821, 0.138921, 0.981913, 0.983757, - 0.0897245, 0.126611, 1.00109, 0.985036, - 0.0815974, 0.114228, 1.01902, 0.986289, - 0.0727725, 0.101389, 1.03604, 0.987329, - 0.0639323, 0.0886476, 1.05149, 0.989193, - 0.0548109, 0.0756837, 1.06619, 0.990716, - 0.045687, 0.0627581, 1.07948, 0.992769, - 0.0364315, 0.0498337, 1.09172, 0.99524, - 0.0271761, 0.0370305, 1.1033, 0.997154, - 0.0179609, 0.0243959, 1.11353, 0.998845, - 0.00878063, 0.0119567, 1.12319, 1.00002, 0.000259038, - 0.000108146, 1.13177, 0.903945, - 5.91681e-06, 0.295126, 1.81226e-05, 0.903668, - 0.000148672, 0.295037, 0.000455367, 0.903677, - 0.000594683, 0.29504, 0.00182145, 0.903673, - 0.00133805, 0.295039, 0.00409831, 0.903666, - 0.00237872, 0.295036, 0.00728584, 0.903668, - 0.00371676, 0.295037, 0.0113842, 0.903679, - 0.00535212, 0.29504, 0.0163936, 0.903684, - 0.00728479, 0.295041, 0.0223141, 0.903698, - 0.00951473, 0.295044, 0.0291462, 0.903718, - 0.0120419, 0.295049, 0.0368904, 0.903754, - 0.0148664, 0.295058, 0.0455477, 0.903801, - 0.017988, 0.29507, 0.0551194, 0.903851, - 0.0214064, 0.295082, 0.0656058, 0.903921, - 0.0251219, 0.295097, 0.0770109, 0.904002, - 0.0291337, 0.295116, 0.0893354, 0.904111, - 0.033441, 0.29514, 0.102583, 0.904246, - 0.0380415, 0.295169, 0.116755, 0.904408, - 0.0429258, 0.295202, 0.131853, 0.904637, - 0.0480468, 0.295245, 0.147869, 0.904821, - 0.0529208, 0.295214, 0.164658, 0.905163, - 0.0577748, 0.295185, 0.182274, 0.905469, - 0.0631763, 0.295143, 0.200828, 0.905851, - 0.068917, 0.295112, 0.2202, 0.906322, - 0.0750861, 0.295104, 0.240372, 0.906761, - 0.0815855, 0.295086, 0.261082, 0.90735, - 0.0882138, 0.295095, 0.282123, 0.908087, - 0.095082, 0.295139, 0.303563, 0.908826, - 0.101488, 0.29492, 0.327028, 0.909832, - 0.107577, 0.294577, 0.351464, 0.911393, - 0.113033, 0.294115, 0.376497, 0.912804, - 0.118629, 0.293446, 0.402115, 0.914081, - 0.124232, 0.292581, 0.428111, 0.91637, - 0.129399, 0.29166, 0.454442, 0.91814, - 0.134892, 0.290422, 0.481024, 0.921179, - 0.140069, 0.289194, 0.507924, 0.924544, - 0.144431, 0.287421, 0.535557, 0.927995, - 0.147498, 0.284867, 0.563984, 0.931556, - 0.150197, 0.281722, 0.5923, 0.935777, - 0.152711, 0.278207, 0.620832, 0.940869, - 0.154836, 0.274148, 0.649069, 0.945994, - 0.155912, 0.269057, 0.677746, 0.949634, - 0.155641, 0.262799, 0.706293, 0.955032, - 0.154809, 0.256097, 0.734278, 0.95917, - 0.153678, 0.248618, 0.761751, 0.962931, - 0.151253, 0.239794, 0.789032, 0.966045, - 0.147625, 0.230281, 0.815422, 0.96971, - 0.143964, 0.220382, 0.841787, 0.972747, - 0.139464, 0.209846, 0.867446, 0.975545, - 0.133459, 0.198189, 0.892004, 0.978381, - 0.127424, 0.186362, 0.915458, 0.979935, - 0.120506, 0.173964, 0.937948, 0.980948, - 0.11282, 0.161429, 0.959732, 0.982234, - 0.104941, 0.148557, 0.980118, 0.982767, - 0.0962905, 0.135508, 0.999463, 0.983544, - 0.0873625, 0.122338, 1.01756, 0.984965, - 0.0783447, 0.108669, 1.03492, 0.986233, - 0.0684798, 0.0949911, 1.05087, 0.987796, - 0.0590867, 0.0811386, 1.0656, 0.989885, - 0.0489145, 0.0673099, 1.0794, 0.991821, - 0.0391, 0.0535665, 1.09174, 0.99448, - 0.029087, 0.0397529, 1.10341, 0.996769, - 0.019114, 0.0261463, 1.11383, 0.998641, - 0.00947007, 0.0128731, 1.1237, 0.999978, 0.000446316, - 0.000169093, 1.13253, 0.888362, - 6.27064e-06, 0.312578, 1.78215e-05, 0.889988, - 0.000157791, 0.313148, 0.000448451, 0.889825, - 0.000631076, 0.313092, 0.00179356, 0.88984, - 0.00141994, 0.313097, 0.00403554, 0.889828, - 0.0025243, 0.313092, 0.00717429, 0.889831, - 0.00394421, 0.313093, 0.0112099, 0.889831, - 0.00567962, 0.313093, 0.0161425, 0.889844, - 0.00773051, 0.313096, 0.0219724, 0.889858, - 0.0100968, 0.3131, 0.0286999, 0.889882, - 0.0127786, 0.313106, 0.0363256, 0.889918, - 0.0157757, 0.313116, 0.0448509, 0.889967, - 0.0190878, 0.313129, 0.0542758, 0.89003, - 0.022715, 0.313145, 0.0646032, 0.890108, - 0.0266566, 0.313165, 0.0758339, 0.890218, - 0.0309131, 0.313193, 0.0879729, 0.890351, - 0.0354819, 0.313226, 0.101019, 0.89051, - 0.0403613, 0.313263, 0.114979, 0.890672, - 0.0455385, 0.313294, 0.129848, 0.890882, - 0.0509444, 0.313333, 0.145616, 0.891189, - 0.0559657, 0.313324, 0.162122, 0.891457, - 0.0613123, 0.313281, 0.179524, 0.891856, - 0.0671488, 0.313281, 0.197855, 0.892312, - 0.0732732, 0.313268, 0.216991, 0.892819, - 0.0797865, 0.313263, 0.236924, 0.893369, - 0.0865269, 0.313247, 0.257433, 0.894045, - 0.0931592, 0.313205, 0.278215, 0.894884, - 0.100532, 0.313276, 0.299467, 0.895832, - 0.107716, 0.313205, 0.322276, 0.897043, - 0.114099, 0.312873, 0.34642, 0.898515, - 0.119941, 0.312331, 0.371187, 0.900191, - 0.126044, 0.311731, 0.396656, 0.90188, - 0.131808, 0.310859, 0.422488, 0.904359, - 0.137289, 0.309857, 0.448744, 0.906923, - 0.142991, 0.308714, 0.475239, 0.910634, - 0.148253, 0.307465, 0.501983, 0.914502, - 0.153332, 0.305774, 0.529254, 0.919046, - 0.156646, 0.303156, 0.557709, 0.923194, - 0.159612, 0.299928, 0.586267, 0.928858, - 0.162027, 0.296245, 0.614925, 0.934464, - 0.164203, 0.291832, 0.643187, 0.939824, - 0.165602, 0.286565, 0.671601, 0.944582, - 0.165383, 0.280073, 0.700213, 0.949257, - 0.164439, 0.272891, 0.728432, 0.954389, - 0.162953, 0.264771, 0.756082, 0.958595, - 0.161007, 0.255927, 0.78369, 0.962138, - 0.157243, 0.245769, 0.810769, 0.966979, - 0.152872, 0.235127, 0.836999, 0.969566, - 0.148209, 0.22347, 0.862684, 0.972372, - 0.142211, 0.211147, 0.887847, 0.975916, - 0.135458, 0.198606, 0.911843, 0.978026, - 0.128398, 0.185498, 0.934795, 0.979686, - 0.120313, 0.17171, 0.956787, 0.980748, - 0.11166, 0.158159, 0.978046, 0.981622, - 0.103035, 0.144399, 0.997693, 0.982356, - 0.0930328, 0.13001, 1.01642, 0.983308, - 0.0834627, 0.115778, 1.03366, 0.985037, - 0.0732249, 0.101327, 1.05014, 0.986493, - 0.0628145, 0.086554, 1.06507, 0.988484, - 0.0526556, 0.0720413, 1.07907, 0.991051, - 0.0415744, 0.0571151, 1.09189, 0.993523, - 0.0314275, 0.0426643, 1.10369, 0.99628, - 0.0203603, 0.0279325, 1.11423, 0.998344, - 0.0102446, 0.0138182, 1.12421, 0.999997, 0.00042612, - 0.000193628, 1.1333, 0.871555, - 6.60007e-06, 0.329176, 1.74749e-05, 0.875255, - 0.000166579, 0.330571, 0.000441051, 0.875644, - 0.000666394, 0.330718, 0.00176441, 0.875159, - 0.00149903, 0.330536, 0.00396899, 0.87516, - 0.00266493, 0.330536, 0.007056, 0.875158, - 0.00416393, 0.330535, 0.0110251, 0.87516, - 0.00599598, 0.330535, 0.0158764, 0.875163, - 0.00816108, 0.330536, 0.0216101, 0.875174, - 0.0106591, 0.330538, 0.0282266, 0.875199, - 0.0134899, 0.330545, 0.0357266, 0.875257, - 0.0166538, 0.330563, 0.0441117, 0.875304, - 0.0201501, 0.330575, 0.0533821, 0.875373, - 0.0239785, 0.330595, 0.0635395, 0.875464, - 0.0281389, 0.330619, 0.0745872, 0.875565, - 0.0326301, 0.330645, 0.0865255, 0.875691, - 0.0374516, 0.330676, 0.0993599, 0.875897, - 0.0425993, 0.330733, 0.113093, 0.876091, - 0.0480576, 0.330776, 0.127722, 0.876353, - 0.0537216, 0.330826, 0.143227, 0.876649, - 0.0589807, 0.330809, 0.159462, 0.877034, - 0.0647865, 0.330819, 0.176642, 0.877443, - 0.0709789, 0.330817, 0.194702, 0.877956, - 0.0774782, 0.330832, 0.213577, 0.878499, - 0.0843175, 0.330822, 0.233246, 0.879144, - 0.0912714, 0.330804, 0.253512, 0.879982, - 0.0980824, 0.330766, 0.274137, 0.88097, - 0.105823, 0.330864, 0.295209, 0.882051, - 0.113671, 0.330896, 0.317226, 0.883397, - 0.120303, 0.330545, 0.341068, 0.884987, - 0.12667, 0.330068, 0.365613, 0.886789, - 0.133118, 0.329418, 0.390807, 0.889311, - 0.139024, 0.328683, 0.416494, 0.891995, - 0.144971, 0.327729, 0.442618, 0.895106, - 0.150747, 0.326521, 0.469131, 0.899527, - 0.156283, 0.325229, 0.495921, 0.90504, - 0.161707, 0.32378, 0.523162, 0.909875, - 0.165661, 0.32122, 0.55092, 0.91561, - 0.168755, 0.317942, 0.579928, 0.921225, - 0.171193, 0.313983, 0.608539, 0.927308, - 0.17319, 0.309636, 0.636854, 0.933077, - 0.174819, 0.304262, 0.66523, 0.938766, - 0.175002, 0.297563, 0.693609, 0.943667, - 0.173946, 0.289613, 0.722157, 0.949033, - 0.172221, 0.281227, 0.750021, 0.953765, - 0.169869, 0.271545, 0.777466, 0.95804, - 0.166578, 0.261034, 0.804853, 0.962302, - 0.161761, 0.249434, 0.831569, 0.966544, - 0.156636, 0.237484, 0.857779, 0.969372, - 0.150784, 0.224395, 0.883051, 0.972486, - 0.143672, 0.210786, 0.907864, 0.975853, - 0.135772, 0.196556, 0.931223, 0.977975, - 0.127942, 0.182307, 0.954061, 0.979122, - 0.118347, 0.167607, 0.97531, 0.980719, - 0.109112, 0.152739, 0.995666, 0.981223, - 0.0991789, 0.137932, 1.01475, 0.98216, - 0.0883553, 0.122692, 1.03253, 0.983379, - 0.0780825, 0.107493, 1.04917, 0.985434, - 0.0665646, 0.0917791, 1.06464, 0.987332, - 0.0557714, 0.0764949, 1.07896, 0.990004, - 0.0442805, 0.060721, 1.09199, 0.992975, - 0.0331676, 0.0452284, 1.10393, 0.995811, - 0.0219547, 0.0297934, 1.11476, 0.9982, - 0.0107613, 0.0146415, 1.12484, 1.00002, 0.000248678, - 0.00014555, 1.13413, 0.859519, - 6.93595e-06, 0.347264, 1.71673e-05, 0.859843, - 0.00017503, 0.347394, 0.000433219, 0.859656, - 0.000700076, 0.347319, 0.00173277, 0.859671, - 0.00157517, 0.347325, 0.00389875, 0.859669, - 0.00280028, 0.347324, 0.00693112, 0.85967, - 0.0043754, 0.347324, 0.01083, 0.859665, - 0.00630049, 0.347321, 0.0155954, 0.859685, - 0.0085755, 0.347328, 0.0212278, 0.859694, - 0.0112003, 0.347329, 0.0277273, 0.859718, - 0.0141747, 0.347336, 0.0350946, 0.85976, - 0.0174988, 0.347348, 0.0433314, 0.85982, - 0.0211722, 0.347366, 0.0524384, 0.859892, - 0.0251941, 0.347387, 0.0624168, 0.860006, - 0.0295649, 0.347422, 0.0732708, 0.860122, - 0.0342825, 0.347453, 0.0849999, 0.860282, - 0.0393462, 0.347499, 0.0976102, 0.860482, - 0.0447513, 0.347554, 0.111104, 0.860719, - 0.0504775, 0.347614, 0.125479, 0.860998, - 0.0563577, 0.347666, 0.140703, 0.861322, - 0.0619473, 0.347662, 0.156681, 0.861724, - 0.0681277, 0.347684, 0.173597, 0.862198, - 0.0746567, 0.347709, 0.191371, 0.862733, - 0.0815234, 0.347727, 0.209976, 0.863371, - 0.0886643, 0.347744, 0.229351, 0.86414, - 0.0957908, 0.347734, 0.24934, 0.865138, - 0.102912, 0.34772, 0.269797, 0.866182, - 0.110924, 0.3478, 0.290654, 0.867436, - 0.119223, 0.347911, 0.312074, 0.869087, - 0.126197, 0.347649, 0.335438, 0.870859, - 0.133145, 0.347222, 0.359732, 0.872997, - 0.139869, 0.346645, 0.38467, 0.875939, - 0.146089, 0.345935, 0.41019, 0.879012, - 0.152334, 0.345012, 0.436218, 0.883353, - 0.15821, 0.343924, 0.462641, 0.888362, - 0.164097, 0.342636, 0.489449, 0.895026, - 0.169528, 0.341351, 0.516629, 0.900753, - 0.174408, 0.339115, 0.544109, 0.906814, - 0.17751, 0.335809, 0.572857, 0.912855, - 0.180101, 0.331597, 0.601554, 0.919438, - 0.182116, 0.32698, 0.630198, 0.925962, - 0.183494, 0.321449, 0.658404, 0.931734, - 0.184159, 0.314595, 0.686625, 0.93762, - 0.18304, 0.306462, 0.71531, 0.943858, - 0.181323, 0.297514, 0.744272, 0.948662, - 0.178683, 0.287447, 0.771462, 0.953299, - 0.175379, 0.276166, 0.798593, 0.957346, - 0.170395, 0.263758, 0.8256, 0.962565, - 0.165042, 0.251019, 0.852575, 0.966075, - 0.158655, 0.237011, 0.878316, 0.969048, - 0.151707, 0.222518, 0.90329, 0.972423, - 0.143271, 0.207848, 0.927745, 0.975833, - 0.134824, 0.192463, 0.950859, 0.977629, - 0.125444, 0.1768, 0.972947, 0.978995, - 0.114949, 0.161033, 0.993263, 0.980533, - 0.104936, 0.145523, 1.01337, 0.980745, - 0.0935577, 0.129799, 1.03128, 0.981814, - 0.0822956, 0.113486, 1.04825, 0.983943, - 0.0710082, 0.0972925, 1.06405, 0.986141, - 0.0587931, 0.0808138, 1.0785, 0.988878, - 0.0472755, 0.0644915, 1.09204, 0.992132, - 0.0349128, 0.0478128, 1.10413, 0.9953, - 0.0232407, 0.031621, 1.11527, 0.998117, - 0.0112713, 0.0154935, 1.12551, 1.00003, 0.000339743, - 0.000195763, 1.13504, 0.845441, - 7.29126e-06, 0.364305, 1.69208e-05, 0.843588, - 0.000183164, 0.363506, 0.000425067, 0.843412, - 0.00073253, 0.36343, 0.00169999, 0.843401, - 0.00164818, 0.363426, 0.00382495, 0.843399, - 0.00293008, 0.363425, 0.00679993, 0.843401, - 0.00457822, 0.363425, 0.010625, 0.843394, - 0.00659249, 0.363421, 0.0153002, 0.843398, - 0.00897282, 0.363421, 0.0208258, 0.843415, - 0.0117191, 0.363426, 0.0272024, 0.843438, - 0.0148312, 0.363432, 0.0344305, 0.843483, - 0.018309, 0.363447, 0.0425116, 0.84356, - 0.0221521, 0.363472, 0.0514471, 0.843646, - 0.0263597, 0.363499, 0.061238, 0.843743, - 0.0309315, 0.363527, 0.0718873, 0.84388, - 0.0358658, 0.363569, 0.0833969, 0.844079, - 0.0411624, 0.363631, 0.0957742, 0.844279, - 0.0468128, 0.363688, 0.109015, 0.844549, - 0.0527923, 0.363761, 0.123124, 0.844858, - 0.0588204, 0.363817, 0.138044, 0.84522, - 0.0647573, 0.36383, 0.153755, 0.845669, - 0.0713181, 0.363879, 0.170394, 0.846155, - 0.0781697, 0.363908, 0.187861, 0.846789, - 0.0853913, 0.363969, 0.206176, 0.847502, - 0.0928086, 0.363999, 0.225244, 0.8484, - 0.10005, 0.363997, 0.244926, 0.849461, - 0.107615, 0.364008, 0.265188, 0.850562, - 0.115814, 0.364055, 0.28587, 0.851962, - 0.124334, 0.364179, 0.306926, 0.854326, - 0.131995, 0.364233, 0.329605, 0.856295, - 0.139338, 0.363856, 0.35359, 0.858857, - 0.146346, 0.363347, 0.37831, 0.862428, - 0.152994, 0.362807, 0.403722, 0.866203, - 0.159463, 0.361963, 0.429537, 0.871629, - 0.165623, 0.36112, 0.456, 0.877365, - 0.171649, 0.359917, 0.482773, 0.883744, - 0.177151, 0.35848, 0.509705, 0.890693, - 0.182381, 0.356523, 0.537215, 0.897278, - 0.186076, 0.3533, 0.565493, 0.903958, - 0.188602, 0.349095, 0.594293, 0.910908, - 0.190755, 0.344215, 0.623165, 0.918117, - 0.192063, 0.338606, 0.651573, 0.924644, - 0.192758, 0.331544, 0.679869, 0.931054, - 0.192238, 0.323163, 0.708668, 0.937303, - 0.190035, 0.313529, 0.737201, 0.943387, - 0.187162, 0.303152, 0.764977, 0.948494, - 0.183876, 0.29146, 0.792683, 0.952546, - 0.178901, 0.277917, 0.819228, 0.958077, - 0.173173, 0.264753, 0.846559, 0.962462, - 0.16645, 0.25002, 0.872962, 0.966569, - 0.159452, 0.234873, 0.898729, 0.969108, - 0.15074, 0.218752, 0.923126, 0.973072, - 0.141523, 0.202673, 0.947278, 0.975452, - 0.132075, 0.186326, 0.969938, 0.977784, - 0.121257, 0.169396, 0.991325, 0.97899, - 0.110182, 0.153044, 1.01123, 0.979777, - 0.0989634, 0.136485, 1.0299, 0.980865, - 0.0865894, 0.119343, 1.04727, 0.982432, - 0.0746115, 0.102452, 1.06341, 0.984935, - 0.0621822, 0.0852423, 1.07834, 0.987776, - 0.0495694, 0.0678546, 1.092, 0.99103, - 0.0372386, 0.0506917, 1.1043, 0.99474, - 0.0244353, 0.0333316, 1.11576, 0.997768, - 0.0121448, 0.0164348, 1.12617, 1.00003, 0.00031774, - 0.000169504, 1.13598, 0.825551, - 7.56799e-06, 0.378425, 1.65099e-05, 0.82664, - 0.000190922, 0.378923, 0.000416504, 0.826323, - 0.000763495, 0.378779, 0.0016656, 0.826359, - 0.00171789, 0.378795, 0.00374768, 0.82636, - 0.00305402, 0.378795, 0.00666259, 0.826368, - 0.00477185, 0.378798, 0.0104104, 0.826364, - 0.00687131, 0.378795, 0.0149912, 0.826368, - 0.00935232, 0.378795, 0.0204054, 0.826376, - 0.0122146, 0.378797, 0.0266532, 0.826399, - 0.0154581, 0.378803, 0.0337355, 0.82646, - 0.0190825, 0.378824, 0.0416537, 0.826525, - 0.0230873, 0.378846, 0.0504091, 0.826614, - 0.0274719, 0.378876, 0.0600032, 0.82674, - 0.0322355, 0.378917, 0.0704393, 0.826888, - 0.0373766, 0.378964, 0.0817195, 0.827078, - 0.0428936, 0.379024, 0.0938492, 0.827318, - 0.0487778, 0.379099, 0.106828, 0.82764, - 0.0549935, 0.379199, 0.120659, 0.827926, - 0.0611058, 0.379227, 0.13526, 0.828325, - 0.0675054, 0.379275, 0.150713, 0.828801, - 0.0743455, 0.379332, 0.167034, 0.8294, - 0.0815523, 0.379415, 0.184209, 0.830094, - 0.0890779, 0.379495, 0.202203, 0.8309, - 0.096736, 0.379555, 0.220945, 0.831943, - 0.104135, 0.379577, 0.240306, 0.833037, - 0.112106, 0.379604, 0.260317, 0.834278, - 0.120554, 0.379668, 0.2808, 0.836192, - 0.129128, 0.3799, 0.301654, 0.838671, - 0.137541, 0.380109, 0.323502, 0.840939, - 0.14523, 0.379809, 0.347176, 0.844575, - 0.15248, 0.379593, 0.371706, 0.848379, - 0.159607, 0.37909, 0.39688, 0.853616, - 0.166267, 0.378617, 0.422702, 0.858921, - 0.172698, 0.377746, 0.448919, 0.865324, - 0.178823, 0.376749, 0.475661, 0.872207, - 0.184542, 0.375363, 0.502599, 0.880018, - 0.189836, 0.373657, 0.529914, 0.88694, - 0.194294, 0.370673, 0.557683, 0.894779, - 0.197022, 0.36662, 0.586848, 0.902242, - 0.199108, 0.36138, 0.615831, 0.909914, - 0.200398, 0.355434, 0.644478, 0.917088, - 0.20094, 0.348173, 0.672905, 0.923888, - 0.200671, 0.339482, 0.701327, 0.930495, - 0.198773, 0.32956, 0.730101, 0.937247, - 0.195394, 0.318363, 0.758383, 0.943108, - 0.191956, 0.306323, 0.786539, 0.948296, - 0.187227, 0.292576, 0.813637, 0.953472, - 0.181165, 0.278234, 0.840793, 0.958485, - 0.174119, 0.263054, 0.867712, 0.962714, - 0.166564, 0.246756, 0.893635, 0.966185, - 0.158181, 0.229945, 0.919028, 0.970146, - 0.148275, 0.212633, 0.943413, 0.973491, - 0.138157, 0.195229, 0.966627, 0.975741, - 0.127574, 0.178048, 0.988817, 0.977238, - 0.11554, 0.160312, 1.00924, 0.978411, - 0.10364, 0.142857, 1.02845, 0.979811, - 0.0913122, 0.125317, 1.04648, 0.98116, - 0.0782558, 0.107627, 1.06284, 0.983543, - 0.0655957, 0.0895862, 1.07798, 0.986789, - 0.0520411, 0.0713756, 1.092, 0.990292, - 0.0389727, 0.053228, 1.10484, 0.994187, - 0.025808, 0.0351945, 1.11642, 0.997499, - 0.0126071, 0.0173198, 1.12703, 0.999999, 0.000275604, - 0.000148602, 1.13674, 0.81075, - 7.8735e-06, 0.394456, 1.61829e-05, 0.808692, - 0.000198293, 0.393453, 0.000407564, 0.80846, - 0.000792877, 0.39334, 0.00162965, 0.808595, - 0.00178416, 0.393407, 0.00366711, 0.808597, - 0.00317182, 0.393408, 0.00651934, 0.808598, - 0.00495589, 0.393408, 0.0101866, 0.808591, - 0.00713627, 0.393403, 0.0146689, 0.808592, - 0.00971285, 0.393402, 0.0199667, 0.80861, - 0.0126855, 0.393407, 0.0260803, 0.808633, - 0.0160538, 0.393413, 0.0330107, 0.80868, - 0.0198175, 0.393429, 0.0407589, 0.808748, - 0.0239758, 0.393453, 0.0493264, 0.808854, - 0.0285286, 0.39349, 0.0587161, 0.808992, - 0.0334748, 0.39354, 0.0689304, 0.809141, - 0.0388116, 0.393588, 0.0799707, 0.809352, - 0.0445375, 0.39366, 0.0918432, 0.809608, - 0.0506427, 0.393742, 0.104549, 0.809915, - 0.0570708, 0.393834, 0.118085, 0.810253, - 0.0633526, 0.393885, 0.132377, 0.810687, - 0.0700966, 0.393953, 0.147537, 0.811233, - 0.0772274, 0.394047, 0.163543, 0.811865, - 0.0847629, 0.394148, 0.180394, 0.812648, - 0.0925663, 0.394265, 0.198051, 0.813583, - 0.100416, 0.394363, 0.216443, 0.814683, - 0.108119, 0.394402, 0.235502, 0.815948, - 0.11644, 0.394489, 0.255242, 0.817278, - 0.125036, 0.394542, 0.275441, 0.819605, - 0.133655, 0.39486, 0.296094, 0.822256, - 0.142682, 0.395248, 0.317309, 0.825349, - 0.150756, 0.395241, 0.340516, 0.829605, - 0.158392, 0.395285, 0.364819, 0.83391, - 0.165801, 0.394922, 0.389736, 0.839808, - 0.172677, 0.394691, 0.415409, 0.845708, - 0.179448, 0.394006, 0.441546, 0.853025, - 0.185746, 0.393279, 0.46832, 0.859666, - 0.191684, 0.391655, 0.495302, 0.86789, - 0.197146, 0.390068, 0.52262, 0.875845, - 0.201904, 0.38727, 0.550336, 0.882634, - 0.205023, 0.382688, 0.578825, 0.891076, - 0.207098, 0.377543, 0.608103, 0.900589, - 0.208474, 0.371752, 0.63723, 0.90791, - 0.209068, 0.364016, 0.665769, 0.915971, - 0.208655, 0.355593, 0.694428, 0.923455, - 0.20729, 0.345439, 0.723224, 0.931514, - 0.203821, 0.334099, 0.751925, 0.937885, - 0.19986, 0.321069, 0.780249, 0.943136, - 0.194993, 0.306571, 0.8077, 0.948818, - 0.189132, 0.291556, 0.83497, 0.954433, - 0.181617, 0.275745, 0.86188, 0.959078, - 0.173595, 0.258695, 0.888562, 0.962705, - 0.164855, 0.240825, 0.914008, 0.966753, - 0.155129, 0.22268, 0.939145, 0.970704, - 0.144241, 0.204542, 0.963393, 0.973367, - 0.133188, 0.185927, 0.985983, 0.975984, - 0.121146, 0.167743, 1.00704, 0.976994, - 0.108366, 0.149218, 1.02715, 0.978485, - 0.0956746, 0.13131, 1.0455, 0.980074, - 0.0820733, 0.112513, 1.06221, 0.98225, - 0.0684061, 0.0938323, 1.07782, 0.98553, - 0.0549503, 0.0749508, 1.09199, 0.989529, - 0.0407857, 0.055848, 1.10508, 0.993536, - 0.0271978, 0.0368581, 1.11684, 0.997247, - 0.0132716, 0.0181845, 1.12789, 1, 0.000431817, - 0.000198809, 1.13792, 0.785886, - 8.12608e-06, 0.405036, 1.57669e-05, 0.790388, - 0.000205278, 0.407355, 0.000398297, 0.790145, - 0.000820824, 0.407231, 0.00159263, 0.790135, - 0.00184681, 0.407226, 0.00358336, 0.790119, - 0.00328316, 0.407218, 0.00637039, 0.790126, - 0.00512988, 0.40722, 0.0099539, 0.79013, - 0.00738684, 0.407221, 0.0143339, 0.790135, - 0.0100538, 0.407221, 0.0195107, 0.790134, - 0.0131306, 0.407217, 0.0254848, 0.79016, - 0.0166169, 0.407224, 0.0322572, 0.790197, - 0.020512, 0.407236, 0.0398284, 0.790273, - 0.0248157, 0.407263, 0.0482014, 0.790381, - 0.029527, 0.407304, 0.0573777, 0.790521, - 0.0346446, 0.407355, 0.0673602, 0.790704, - 0.0401665, 0.40742, 0.0781522, 0.790925, - 0.0460896, 0.407499, 0.0897582, 0.791195, - 0.0524017, 0.407589, 0.10218, 0.791522, - 0.0590121, 0.407691, 0.11541, 0.791878, - 0.0654876, 0.407748, 0.12939, 0.792361, - 0.0725207, 0.407849, 0.144237, 0.792942, - 0.0799844, 0.407963, 0.159924, 0.79362, - 0.0877896, 0.408087, 0.176425, 0.794529, - 0.0958451, 0.408259, 0.193733, 0.795521, - 0.103827, 0.408362, 0.211756, 0.796778, - 0.111937, 0.408482, 0.230524, 0.798027, - 0.120521, 0.408547, 0.249967, 0.799813, - 0.129242, 0.408721, 0.269926, 0.802387, - 0.138048, 0.409148, 0.290338, 0.805279, - 0.147301, 0.409641, 0.311193, 0.809251, - 0.155895, 0.410154, 0.333611, 0.813733, - 0.163942, 0.410297, 0.357615, 0.819081, - 0.171666, 0.410373, 0.382339, 0.825427, - 0.178905, 0.410348, 0.407828, 0.83172, - 0.185812, 0.409486, 0.434034, 0.83877, - 0.192318, 0.408776, 0.460493, 0.845817, - 0.198249, 0.407176, 0.487346, 0.854664, - 0.204034, 0.405719, 0.514832, 0.863495, - 0.208908, 0.403282, 0.542401, 0.871883, - 0.212765, 0.399293, 0.570683, 0.88065, - 0.214911, 0.393803, 0.599947, 0.89004, - 0.216214, 0.387536, 0.62932, 0.898476, - 0.216745, 0.379846, 0.658319, 0.906738, - 0.216387, 0.370625, 0.687138, 0.914844, - 0.215053, 0.360139, 0.71601, 0.923877, - 0.212007, 0.348849, 0.745124, 0.931925, - 0.207481, 0.335639, 0.773366, 0.938054, - 0.202418, 0.320798, 0.801636, 0.943895, - 0.196507, 0.304772, 0.829055, 0.949468, - 0.189009, 0.288033, 0.856097, 0.955152, - 0.180539, 0.270532, 0.88301, 0.959403, - 0.171437, 0.251639, 0.909296, 0.963309, - 0.161661, 0.232563, 0.934868, 0.967399, - 0.150425, 0.213231, 0.959662, 0.972009, - 0.138659, 0.194247, 0.98302, 0.97433, - 0.126595, 0.174718, 1.00517, 0.975823, - 0.113205, 0.155518, 1.02566, 0.976371, - 0.0996096, 0.136709, 1.04418, 0.978705, - 0.0860754, 0.117571, 1.06146, 0.981477, - 0.0714438, 0.0980046, 1.07777, 0.984263, - 0.0572304, 0.0782181, 1.09214, 0.988423, - 0.0428875, 0.0584052, 1.10553, 0.993, - 0.0282442, 0.038522, 1.11758, 0.99704, - 0.0140183, 0.0190148, 1.12864, 0.999913, 0.000369494, - 0.000145203, 1.13901, 0.777662, - 8.4153e-06, 0.423844, 1.54403e-05, 0.770458, - 0.000211714, 0.419915, 0.00038845, 0.770716, - 0.000846888, 0.420055, 0.00155386, 0.770982, - 0.00190567, 0.420202, 0.00349653, 0.770981, - 0.00338782, 0.420201, 0.00621606, 0.77098, - 0.00529338, 0.4202, 0.00971274, 0.770983, - 0.00762223, 0.4202, 0.0139867, 0.770985, - 0.0103741, 0.420198, 0.0190381, 0.770996, - 0.0135489, 0.4202, 0.0248677, 0.771029, - 0.0171461, 0.420212, 0.0314764, 0.771052, - 0.0211647, 0.420215, 0.0388648, 0.771131, - 0.0256048, 0.420245, 0.047036, 0.771235, - 0.0304647, 0.420284, 0.0559911, 0.771383, - 0.0357436, 0.420341, 0.0657346, 0.771591, - 0.0414392, 0.420423, 0.0762694, 0.771819, - 0.0475462, 0.420506, 0.0875984, 0.772123, - 0.0540506, 0.420617, 0.099727, 0.772464, - 0.060797, 0.42072, 0.112637, 0.772855, - 0.0675393, 0.420799, 0.126313, 0.773317, - 0.0748323, 0.420893, 0.140824, 0.773981, - 0.0825681, 0.421058, 0.15617, 0.774746, - 0.0906307, 0.421226, 0.172322, 0.77566, - 0.0988982, 0.421397, 0.189253, 0.776837, - 0.106994, 0.421569, 0.206912, 0.778097, - 0.115528, 0.421704, 0.225359, 0.779588, - 0.124317, 0.421849, 0.24447, 0.781574, - 0.133139, 0.422097, 0.264156, 0.784451, - 0.142179, 0.422615, 0.284318, 0.787682, - 0.15165, 0.423269, 0.304902, 0.792433, - 0.160771, 0.424396, 0.3265, 0.797359, - 0.169166, 0.424772, 0.35014, 0.803986, - 0.177149, 0.425475, 0.374768, 0.809504, - 0.184745, 0.424996, 0.399928, 0.815885, - 0.19173, 0.424247, 0.425796, 0.823513, - 0.198525, 0.423515, 0.452287, 0.832549, - 0.204709, 0.422787, 0.479321, 0.841653, - 0.210447, 0.421187, 0.506718, 0.850401, - 0.215501, 0.418519, 0.53432, 0.859854, - 0.219752, 0.414715, 0.56242, 0.869364, - 0.222305, 0.409462, 0.591558, 0.878837, - 0.223744, 0.402926, 0.621074, 0.888636, - 0.224065, 0.395043, 0.650538, 0.898132, - 0.223742, 0.38564, 0.679538, 0.907181, - 0.222308, 0.375378, 0.708674, 0.915621, - 0.219837, 0.363212, 0.737714, 0.9239, - 0.215233, 0.349313, 0.767014, 0.931644, - 0.209592, 0.334162, 0.795133, 0.938887, - 0.203644, 0.317943, 0.823228, 0.945282, - 0.196349, 0.300581, 0.850822, 0.950758, - 0.18742, 0.282195, 0.877594, 0.956146, - 0.177879, 0.262481, 0.904564, 0.960355, - 0.167643, 0.242487, 0.930741, 0.965256, - 0.156671, 0.222668, 0.955868, 0.968029, - 0.144123, 0.201907, 0.979869, 0.97251, - 0.131305, 0.18202, 1.00291, 0.974925, - 0.118335, 0.161909, 1.02392, 0.975402, - 0.103714, 0.142129, 1.0433, 0.976987, - 0.089415, 0.122447, 1.06089, 0.979677, - 0.0748858, 0.102248, 1.07713, 0.983184, - 0.0596086, 0.0814851, 1.09218, 0.987466, - 0.0447671, 0.0609484, 1.10585, 0.992348, - 0.0295217, 0.0401835, 1.11829, 0.996674, - 0.0143917, 0.0198163, 1.12966, 1.00003, 0.000321364, - 0.000149983, 1.1402, 0.757901, - 8.69074e-06, 0.436176, 1.51011e-05, 0.751195, - 0.000217848, 0.432317, 0.000378533, 0.751178, - 0.000871373, 0.432307, 0.0015141, 0.751195, - 0.00196061, 0.432317, 0.0034068, 0.751198, - 0.00348552, 0.432318, 0.00605659, 0.751195, - 0.00544599, 0.432315, 0.00946353, 0.751207, - 0.00784203, 0.43232, 0.013628, 0.751213, - 0.0106732, 0.43232, 0.0185499, 0.751221, - 0.0139393, 0.432319, 0.0242302, 0.751244, - 0.0176398, 0.432325, 0.0306694, 0.7513, - 0.0217743, 0.432348, 0.0378698, 0.751358, - 0.0263412, 0.432367, 0.0458321, 0.751458, - 0.0313396, 0.432404, 0.0545587, 0.751608, - 0.0367682, 0.432464, 0.0640543, 0.7518, - 0.0426246, 0.43254, 0.0743222, 0.752065, - 0.0489031, 0.432645, 0.0853668, 0.752376, - 0.0555828, 0.432762, 0.0971911, 0.752715, - 0.0623861, 0.432859, 0.109768, 0.753137, - 0.069415, 0.432958, 0.123126, 0.753676, - 0.0770039, 0.433099, 0.137308, 0.754345, - 0.084971, 0.433272, 0.15229, 0.755235, - 0.0932681, 0.433504, 0.168075, 0.756186, - 0.10171, 0.433693, 0.184625, 0.757363, - 0.110019, 0.433857, 0.201897, 0.75884, - 0.11887, 0.434102, 0.220014, 0.760467, - 0.127881, 0.434306, 0.238778, 0.762969, - 0.136766, 0.434751, 0.258172, 0.765823, - 0.14612, 0.43529, 0.278062, 0.769676, - 0.15566, 0.436236, 0.298437, 0.774909, - 0.165177, 0.437754, 0.319532, 0.77994, - 0.17402, 0.438343, 0.342505, 0.785757, - 0.182201, 0.438609, 0.366693, 0.792487, - 0.190104, 0.438762, 0.391668, 0.80038, - 0.197438, 0.438795, 0.417494, 0.808494, - 0.204365, 0.438226, 0.443933, 0.817695, - 0.210714, 0.437283, 0.470929, 0.828111, - 0.216651, 0.436087, 0.498569, 0.837901, - 0.221804, 0.433717, 0.526165, 0.847813, - 0.226318, 0.430133, 0.554155, 0.858314, - 0.229297, 0.425213, 0.582822, 0.868891, - 0.230999, 0.418576, 0.612847, 0.878941, - 0.231155, 0.410405, 0.642445, 0.888809, - 0.230935, 0.400544, 0.672024, 0.898089, - 0.229343, 0.389613, 0.701366, 0.908081, - 0.226886, 0.377197, 0.730763, 0.916819, - 0.222676, 0.363397, 0.759642, 0.924968, - 0.216835, 0.347437, 0.788775, 0.932906, - 0.210245, 0.32995, 0.817135, 0.940025, - 0.202992, 0.312262, 0.844912, 0.946101, - 0.19436, 0.293313, 0.872164, 0.952835, - 0.184125, 0.273638, 0.899443, 0.957347, - 0.173657, 0.252385, 0.926389, 0.961434, - 0.162204, 0.231038, 0.951947, 0.965522, - 0.14979, 0.209834, 0.976751, 0.969412, - 0.136307, 0.188821, 1.00022, 0.973902, - 0.122527, 0.168013, 1.02229, 0.974045, - 0.108213, 0.147634, 1.04199, 0.975775, - 0.0927397, 0.12705, 1.06019, 0.978383, - 0.0778212, 0.106309, 1.07711, 0.98211, - 0.0621216, 0.0849279, 1.09245, 0.986517, - 0.0463847, 0.0633519, 1.10651, 0.991696, - 0.0309353, 0.0419698, 1.11903, 0.996349, - 0.0150914, 0.0206272, 1.13073, 1.00003, 0.000442449, - 0.000231396, 1.14146, 0.727498, - 8.85074e-06, 0.441528, 1.45832e-05, 0.730897, - 0.000223525, 0.443589, 0.000368298, 0.730796, - 0.000893996, 0.443528, 0.00147303, 0.730805, - 0.00201149, 0.443533, 0.00331433, 0.730814, - 0.00357596, 0.443538, 0.00589222, 0.730815, - 0.00558734, 0.443538, 0.00920678, 0.730822, - 0.00804544, 0.44354, 0.0132582, 0.730836, - 0.0109501, 0.443545, 0.0180468, 0.730848, - 0.0143008, 0.443546, 0.0235732, 0.730871, - 0.0180969, 0.443552, 0.0298382, 0.730915, - 0.022338, 0.443567, 0.0368438, 0.730982, - 0.0270225, 0.443591, 0.044591, 0.731076, - 0.0321491, 0.443627, 0.0530831, 0.731245, - 0.0377166, 0.443699, 0.0623243, 0.73144, - 0.0437216, 0.443777, 0.0723181, 0.7317, - 0.0501576, 0.443881, 0.0830691, 0.732034, - 0.0569942, 0.444014, 0.0945809, 0.732388, - 0.0638756, 0.444113, 0.106825, 0.732853, - 0.071203, 0.444247, 0.119859, 0.733473, - 0.0790076, 0.444442, 0.13369, 0.734195, - 0.0871937, 0.444645, 0.148304, 0.735069, - 0.095696, 0.444877, 0.163702, 0.736169, - 0.10426, 0.445133, 0.179861, 0.73747, - 0.112853, 0.44537, 0.196778, 0.738991, - 0.12199, 0.445651, 0.214496, 0.740865, - 0.131153, 0.445958, 0.232913, 0.743637, - 0.140245, 0.446548, 0.251977, 0.746797, - 0.149722, 0.447246, 0.271551, 0.751517, - 0.159341, 0.448656, 0.291774, 0.756156, - 0.169106, 0.449866, 0.312455, 0.761519, - 0.178436, 0.450919, 0.334552, 0.768295, - 0.186904, 0.451776, 0.358491, 0.776613, - 0.195117, 0.452832, 0.383446, 0.783966, - 0.202695, 0.45249, 0.408945, 0.793542, - 0.20985, 0.452587, 0.435364, 0.803192, - 0.216403, 0.451852, 0.462336, 0.813892, - 0.22251, 0.450708, 0.48987, 0.824968, - 0.227676, 0.4486, 0.517697, 0.835859, - 0.232443, 0.445156, 0.545975, 0.846825, - 0.235775, 0.440351, 0.574483, 0.858085, - 0.237897, 0.433641, 0.604246, 0.868825, - 0.238074, 0.425354, 0.634101, 0.879638, - 0.237661, 0.415383, 0.664201, 0.889966, - 0.236186, 0.404136, 0.693918, 0.899479, - 0.233599, 0.390917, 0.723481, 0.908769, - 0.229737, 0.376352, 0.75258, 0.917966, - 0.223836, 0.360372, 0.781764, 0.926304, - 0.217067, 0.342551, 0.811139, 0.934626, - 0.209309, 0.324238, 0.839585, 0.941841, - 0.20071, 0.304484, 0.867044, 0.94789, - 0.190602, 0.283607, 0.894579, 0.954196, - 0.179253, 0.262205, 0.921743, 0.958383, - 0.167646, 0.239847, 0.948026, 0.963119, - 0.155073, 0.218078, 0.973296, 0.966941, - 0.141426, 0.195899, 0.998135, 0.970836, - 0.126849, 0.174121, 1.02021, 0.973301, - 0.112296, 0.153052, 1.04085, 0.97448, - 0.0964965, 0.131733, 1.05946, 0.977045, - 0.080489, 0.10997, 1.07693, 0.980751, - 0.064844, 0.0881657, 1.09254, 0.985475, - 0.0481938, 0.0657987, 1.10697, 0.991089, - 0.0319185, 0.0435215, 1.12004, 0.996122, - 0.0158088, 0.0214779, 1.13173, 1.00001, 0.000372455, - 0.000200295, 1.14291, 0.708622, - 9.07597e-06, 0.45304, 1.41962e-05, 0.711162, - 0.000228911, 0.454662, 0.000358052, 0.709812, - 0.000914446, 0.453797, 0.00143034, 0.709865, - 0.00205819, 0.453834, 0.00321935, 0.709864, - 0.00365894, 0.453833, 0.00572331, 0.709855, - 0.00571692, 0.453826, 0.00894278, 0.709862, - 0.00823201, 0.453828, 0.012878, 0.709875, - 0.011204, 0.453832, 0.0175295, 0.709896, - 0.0146323, 0.453839, 0.0228978, 0.709925, - 0.0185163, 0.453847, 0.0289839, 0.709974, - 0.0228551, 0.453866, 0.0357894, 0.710045, - 0.0276473, 0.453892, 0.0433161, 0.710133, - 0.032891, 0.453924, 0.0515665, 0.710292, - 0.0385851, 0.453992, 0.0605458, 0.710485, - 0.0447254, 0.45407, 0.0702574, 0.710769, - 0.0513051, 0.454192, 0.0807077, 0.711106, - 0.0582733, 0.454329, 0.091896, 0.711516, - 0.0652866, 0.45446, 0.103814, 0.712071, - 0.0728426, 0.454653, 0.116508, 0.712676, - 0.0808307, 0.45484, 0.129968, 0.713476, - 0.0892216, 0.455096, 0.144206, 0.714377, - 0.0979047, 0.455346, 0.159212, 0.715579, - 0.106531, 0.455647, 0.174973, 0.716977, - 0.115492, 0.455961, 0.191504, 0.71862, - 0.124821, 0.456315, 0.208835, 0.72084, - 0.134079, 0.4568, 0.226869, 0.723786, - 0.143427, 0.457521, 0.245582, 0.727464, - 0.153061, 0.458475, 0.264957, 0.732771, - 0.162768, 0.460239, 0.284948, 0.736515, - 0.172627, 0.460899, 0.30522, 0.743519, - 0.182487, 0.463225, 0.326717, 0.750041, - 0.191295, 0.464027, 0.350113, 0.758589, - 0.199746, 0.465227, 0.374782, 0.767703, - 0.207584, 0.465877, 0.400226, 0.777484, - 0.214973, 0.465996, 0.426442, 0.788792, - 0.221796, 0.466019, 0.453688, 0.800194, - 0.228038, 0.465083, 0.481246, 0.811234, - 0.233346, 0.462506, 0.509086, 0.822859, - 0.238073, 0.459257, 0.537338, 0.835082, - 0.241764, 0.454863, 0.566108, 0.846332, - 0.244241, 0.448163, 0.595126, 0.858355, - 0.244736, 0.439709, 0.625574, 0.87034, - 0.244278, 0.429837, 0.65617, 0.881027, - 0.24255, 0.418002, 0.686029, 0.891007, - 0.239912, 0.404325, 0.716039, 0.900874, - 0.236133, 0.389222, 0.745518, 0.911072, - 0.230672, 0.373269, 0.775026, 0.920359, - 0.22356, 0.355083, 0.804521, 0.928604, - 0.215591, 0.335533, 0.834045, 0.937175, - 0.206503, 0.315278, 0.861612, 0.942825, - 0.196684, 0.293653, 0.889131, 0.949805, - 0.185116, 0.271503, 0.916853, 0.955535, - 0.172703, 0.248821, 0.943541, 0.959843, - 0.159978, 0.225591, 0.970132, 0.964393, - 0.146375, 0.202719, 0.994709, 0.968008, - 0.131269, 0.179928, 1.0186, 0.971013, - 0.11569, 0.158007, 1.03928, 0.973334, - 0.1003, 0.13624, 1.05887, 0.975775, - 0.0833352, 0.1138, 1.07652, 0.979579, - 0.0668981, 0.0913141, 1.09297, 0.984323, - 0.0500902, 0.0683051, 1.10734, 0.990351, - 0.0332377, 0.0451771, 1.12084, 0.995823, - 0.0161491, 0.0221705, 1.13296, 1.0001, 0.000234083, - 0.000108712, 1.14441, 0.683895, - 9.24677e-06, 0.46015, 1.37429e-05, 0.68833, - 0.000233383, 0.463134, 0.000346865, 0.688368, - 0.000933547, 0.463159, 0.00138748, 0.688367, - 0.00210049, 0.463159, 0.00312187, 0.688369, - 0.00373415, 0.463159, 0.00555004, 0.688377, - 0.00583449, 0.463163, 0.00867216, 0.688386, - 0.00840128, 0.463166, 0.0124884, 0.688398, - 0.0114343, 0.463169, 0.0169993, 0.688418, - 0.0149329, 0.463175, 0.0222054, 0.688453, - 0.0188964, 0.463188, 0.028108, 0.688515, - 0.0233239, 0.463214, 0.0347085, 0.68857, - 0.0282136, 0.463231, 0.0420091, 0.688679, - 0.033564, 0.463276, 0.0500132, 0.688854, - 0.0393733, 0.463356, 0.0587255, 0.689038, - 0.0456354, 0.46343, 0.0681476, 0.689321, - 0.0523433, 0.463553, 0.0782897, 0.689662, - 0.059412, 0.463693, 0.0891501, 0.690188, - 0.0665736, 0.4639, 0.100735, 0.690755, - 0.0743106, 0.464107, 0.113074, 0.691405, - 0.0824722, 0.464329, 0.126161, 0.692198, - 0.0910484, 0.464585, 0.140007, 0.693196, - 0.0998778, 0.464893, 0.154612, 0.69454, - 0.108651, 0.465285, 0.169984, 0.695921, - 0.117855, 0.465596, 0.186106, 0.697749, - 0.12734, 0.466056, 0.203034, 0.700375, - 0.136714, 0.466771, 0.220703, 0.703395, - 0.146386, 0.467579, 0.239062, 0.707904, - 0.156096, 0.469067, 0.258188, 0.711673, - 0.165904, 0.469851, 0.277759, 0.717489, - 0.175812, 0.471815, 0.297935, 0.724051, - 0.185931, 0.47389, 0.318916, 0.731965, - 0.195238, 0.47587, 0.341591, 0.741151, - 0.204021, 0.477523, 0.366062, 0.751416, - 0.212113, 0.478881, 0.391396, 0.761848, - 0.21979, 0.479226, 0.417599, 0.771886, - 0.2267, 0.478495, 0.444401, 0.783998, - 0.232991, 0.477622, 0.472084, 0.796523, - 0.238645, 0.475833, 0.500193, 0.808851, - 0.243396, 0.472568, 0.52865, 0.821191, - 0.247226, 0.467857, 0.557362, 0.834261, - 0.250102, 0.461871, 0.586768, 0.846762, - 0.251056, 0.453543, 0.617085, 0.859867, - 0.250604, 0.443494, 0.647659, 0.871948, - 0.248783, 0.431711, 0.678119, 0.882967, - 0.245855, 0.417911, 0.708399, 0.892826, - 0.242168, 0.401993, 0.738256, 0.90332, - 0.237062, 0.385371, 0.767999, 0.913633, - 0.22997, 0.366837, 0.798191, 0.922774, - 0.221687, 0.346372, 0.827756, 0.931371, - 0.212345, 0.325682, 0.856425, 0.938929, - 0.20206, 0.303665, 0.884299, 0.944821, - 0.190981, 0.280786, 0.912023, 0.951792, - 0.178065, 0.2573, 0.939669, 0.957712, - 0.164634, 0.233448, 0.96655, 0.961912, - 0.150863, 0.209504, 0.992366, 0.966382, - 0.13577, 0.18597, 1.01633, 0.969588, - 0.119593, 0.162905, 1.03843, 0.971777, - 0.103203, 0.14053, 1.05841, 0.97433, - 0.0865888, 0.117909, 1.07632, 0.978686, - 0.0690829, 0.0944101, 1.09326, 0.983281, - 0.0516568, 0.0705671, 1.10796, 0.989562, - 0.034558, 0.0468592, 1.12182, 0.995465, - 0.0167808, 0.0229846, 1.1342, 0.999991, 0.000373016, - 0.000235606, 1.1459, 0.662251, - 9.39016e-06, 0.468575, 1.32714e-05, 0.666634, - 0.000237624, 0.471675, 0.000335842, 0.666411, - 0.000950385, 0.471516, 0.00134321, 0.666399, - 0.00213833, 0.471509, 0.00302221, 0.666386, - 0.0038014, 0.471499, 0.00537283, 0.666405, - 0.00593958, 0.471511, 0.00839533, 0.666406, - 0.00855253, 0.471508, 0.0120898, 0.666428, - 0.0116401, 0.471519, 0.0164569, 0.666444, - 0.0152015, 0.471522, 0.0214971, 0.66649, - 0.0192362, 0.471543, 0.027212, 0.666537, - 0.0237428, 0.471558, 0.033603, 0.666617, - 0.0287198, 0.471591, 0.0406728, 0.666718, - 0.0341647, 0.471631, 0.0484238, 0.666889, - 0.0400759, 0.47171, 0.0568621, 0.667104, - 0.0464479, 0.471805, 0.0659915, 0.667374, - 0.0532677, 0.471923, 0.0758178, 0.667772, - 0.0603805, 0.472098, 0.0863425, 0.668371, - 0.0677392, 0.472363, 0.0975917, 0.668971, - 0.0756028, 0.472596, 0.109567, 0.669696, - 0.0839293, 0.472869, 0.122272, 0.670481, - 0.0926683, 0.473126, 0.135718, 0.6715, - 0.1016, 0.473442, 0.149914, 0.672911, - 0.110566, 0.47389, 0.164882, 0.674512, - 0.119984, 0.474354, 0.180602, 0.67651, - 0.129574, 0.474922, 0.19711, 0.679292, - 0.139106, 0.475764, 0.214371, 0.682798, - 0.148993, 0.476886, 0.232405, 0.686955, - 0.158737, 0.478179, 0.251153, 0.691406, - 0.168754, 0.479432, 0.270436, 0.697438, - 0.178703, 0.481481, 0.290374, 0.704761, - 0.188955, 0.484143, 0.311044, 0.713599, - 0.198814, 0.487007, 0.333003, 0.723194, - 0.207869, 0.488962, 0.357144, 0.732601, - 0.216189, 0.489815, 0.382169, 0.744193, - 0.22398, 0.490888, 0.408227, 0.754907, - 0.231156, 0.490355, 0.434928, 0.767403, - 0.23747, 0.489548, 0.462599, 0.78107, - 0.243503, 0.488274, 0.490908, 0.793893, - 0.248114, 0.484843, 0.519421, 0.807296, - 0.25222, 0.4803, 0.548561, 0.820529, - 0.255265, 0.474097, 0.577772, 0.833716, - 0.256741, 0.466041, 0.607782, 0.848403, - 0.25637, 0.456547, 0.638807, 0.860755, - 0.254804, 0.443946, 0.670058, 0.874012, - 0.251834, 0.430852, 0.700749, 0.885619, - 0.247867, 0.414903, 0.731446, 0.896069, - 0.242634, 0.397276, 0.761191, 0.906266, - 0.236093, 0.378535, 0.791053, 0.916759, - 0.227543, 0.358038, 0.821298, 0.92523, - 0.21783, 0.335705, 0.850747, 0.93436, - 0.207534, 0.313797, 0.879258, 0.941631, - 0.195983, 0.289671, 0.907734, 0.947564, - 0.183567, 0.265319, 0.935206, 0.953681, - 0.169345, 0.240815, 0.962739, 0.960008, - 0.154909, 0.216119, 0.989227, 0.964145, - 0.140161, 0.192096, 1.01465, 0.968171, - 0.123411, 0.167855, 1.03737, 0.969859, - 0.106525, 0.144817, 1.05767, 0.972666, - 0.0891023, 0.12149, 1.0761, 0.977055, - 0.0718094, 0.0975306, 1.09336, 0.982527, - 0.0534213, 0.0730217, 1.10878, 0.989001, - 0.0355579, 0.0483366, 1.12285, 0.99512, - 0.0176383, 0.023938, 1.13548, 1.00007, 0.000368831, - 0.000211581, 1.14744, 0.651047, - 9.60845e-06, 0.484101, 1.2922e-05, 0.644145, - 0.000241347, 0.478968, 0.000324578, 0.64396, - 0.000965142, 0.478831, 0.00129798, 0.64396, - 0.00217154, 0.47883, 0.00292046, 0.643968, - 0.00386049, 0.478835, 0.00519202, 0.643974, - 0.00603186, 0.478838, 0.0081128, 0.643977, - 0.0086854, 0.478836, 0.011683, 0.643982, - 0.0118207, 0.478834, 0.0159031, 0.644024, - 0.0154374, 0.478856, 0.0207743, 0.644059, - 0.0195343, 0.478868, 0.0262975, 0.644122, - 0.0241103, 0.478896, 0.0324747, 0.644207, - 0.0291638, 0.478933, 0.039309, 0.64432, - 0.0346919, 0.478981, 0.0468029, 0.644481, - 0.0406919, 0.479053, 0.0549614, 0.644722, - 0.047159, 0.479169, 0.0637909, 0.645013, - 0.0540748, 0.479302, 0.0732974, 0.645503, - 0.0612001, 0.479541, 0.0834898, 0.646117, - 0.0687303, 0.479829, 0.0943873, 0.646707, - 0.0767846, 0.480061, 0.105991, 0.647431, - 0.0852465, 0.480343, 0.11831, 0.64831, - 0.0940719, 0.48066, 0.131348, 0.649486, - 0.103056, 0.481083, 0.14514, 0.650864, - 0.112261, 0.481528, 0.159676, 0.652604, - 0.121852, 0.482102, 0.174979, 0.654825, - 0.131505, 0.482813, 0.191079, 0.657876, - 0.141189, 0.483876, 0.207927, 0.661339, - 0.151239, 0.48499, 0.225586, 0.665463, - 0.161091, 0.486279, 0.243947, 0.670542, - 0.171235, 0.487968, 0.262957, 0.677361, - 0.181347, 0.49053, 0.282781, 0.685672, - 0.191679, 0.493862, 0.303311, 0.694551, - 0.201781, 0.49699, 0.324607, 0.703753, - 0.211164, 0.498884, 0.347916, 0.713703, - 0.219675, 0.500086, 0.372628, 0.725911, - 0.227836, 0.501554, 0.398694, 0.73862, - 0.23533, 0.502193, 0.425529, 0.752118, - 0.241786, 0.501811, 0.453209, 0.76579, - 0.247865, 0.500185, 0.481381, 0.779568, - 0.252696, 0.497159, 0.51011, 0.793991, - 0.256802, 0.492765, 0.539322, 0.808182, - 0.259942, 0.486827, 0.569078, 0.821698, - 0.261703, 0.478386, 0.598818, 0.836009, - 0.262006, 0.468772, 0.629762, 0.849824, - 0.260333, 0.456352, 0.661366, 0.863888, - 0.257398, 0.442533, 0.69295, 0.876585, - 0.253264, 0.426573, 0.723608, 0.888665, - 0.248026, 0.408964, 0.754378, 0.899537, - 0.241487, 0.389677, 0.784761, 0.9094, - 0.233463, 0.368516, 0.814688, 0.920166, - 0.223397, 0.346624, 0.845009, 0.928899, - 0.21255, 0.322717, 0.874431, 0.937156, - 0.200869, 0.298698, 0.902922, 0.943861, - 0.188387, 0.273491, 0.931356, 0.949557, - 0.174341, 0.247866, 0.958854, 0.955862, - 0.158994, 0.222496, 0.986098, 0.961721, - 0.143664, 0.197522, 1.01229, 0.965976, - 0.127412, 0.17302, 1.03571, 0.968652, - 0.109798, 0.148954, 1.05699, 0.971084, - 0.0916787, 0.125044, 1.07587, 0.975584, - 0.0739634, 0.100577, 1.09372, 0.98122, - 0.055322, 0.0753666, 1.10948, 0.988253, - 0.0366825, 0.0498899, 1.12394, 0.99482, - 0.0180389, 0.024611, 1.13694, 1.00001, 0.000229839, - 0.000188283, 1.14919, 0.613867, - 9.64198e-06, 0.479449, 1.23452e-05, 0.621485, - 0.000244534, 0.485399, 0.000313091, 0.621429, - 0.000978202, 0.485353, 0.00125245, 0.62112, - 0.00220004, 0.485114, 0.00281687, 0.621119, - 0.0039111, 0.485112, 0.00500783, 0.621122, - 0.00611091, 0.485112, 0.00782498, 0.621133, - 0.00879922, 0.485117, 0.0112687, 0.621152, - 0.0119756, 0.485125, 0.0153394, 0.621183, - 0.0156396, 0.485139, 0.0200382, 0.621227, - 0.0197898, 0.485158, 0.0253663, 0.621298, - 0.0244253, 0.485192, 0.0313261, 0.621388, - 0.0295441, 0.485233, 0.0379204, 0.621507, - 0.0351432, 0.485286, 0.0451523, 0.621693, - 0.0412198, 0.485378, 0.0530277, 0.621933, - 0.0477673, 0.485495, 0.0615522, 0.622232, - 0.0547574, 0.485635, 0.0707316, 0.622809, - 0.0619417, 0.485943, 0.0805883, 0.623407, - 0.069625, 0.486232, 0.0911267, 0.62406, - 0.077796, 0.486516, 0.102354, 0.624835, - 0.0863731, 0.486838, 0.114279, 0.625758, - 0.095251, 0.487188, 0.126902, 0.627043, - 0.104299, 0.487695, 0.140285, 0.628438, - 0.113724, 0.488163, 0.154397, 0.630325, - 0.123417, 0.488858, 0.169267, 0.632801, - 0.133137, 0.489754, 0.184941, 0.635784, - 0.143052, 0.490815, 0.20136, 0.639406, - 0.153132, 0.492048, 0.218643, 0.643872, - 0.163143, 0.49363, 0.236615, 0.6499, - 0.17333, 0.496009, 0.255449, 0.657201, - 0.183622, 0.498994, 0.275006, 0.666221, - 0.194019, 0.502888, 0.295354, 0.674419, - 0.204192, 0.505459, 0.316244, 0.683729, - 0.21406, 0.507771, 0.33849, 0.695584, - 0.222854, 0.510245, 0.363166, 0.708583, - 0.231315, 0.512293, 0.389071, 0.721233, - 0.238911, 0.512747, 0.415737, 0.735134, - 0.245657, 0.512482, 0.443331, 0.750179, - 0.251879, 0.511526, 0.471891, 0.765073, - 0.256911, 0.508935, 0.500892, 0.779794, - 0.261144, 0.504341, 0.530294, 0.794801, - 0.264316, 0.498515, 0.560144, 0.810339, - 0.266276, 0.491015, 0.590213, 0.824818, - 0.266981, 0.481126, 0.620865, 0.839375, - 0.265778, 0.468685, 0.652687, 0.853043, - 0.262748, 0.453925, 0.684759, 0.867335, - 0.258474, 0.437912, 0.716209, 0.88037, - 0.253187, 0.419648, 0.747508, 0.891711, - 0.246476, 0.39982, 0.77797, 0.902896, - 0.238735, 0.37879, 0.808586, 0.913601, - 0.22885, 0.355891, 0.838843, 0.923019, - 0.217656, 0.331773, 0.869014, 0.933432, - 0.205539, 0.307356, 0.898512, 0.939691, - 0.192595, 0.281321, 0.9269, 0.946938, - 0.178945, 0.255441, 0.955297, 0.952372, - 0.163587, 0.229013, 0.983231, 0.95909, - 0.147214, 0.203179, 1.00971, 0.963675, - 0.13064, 0.17792, 1.03438, 0.968247, - 0.113121, 0.152898, 1.05625, 0.97001, - 0.0945824, 0.128712, 1.07598, 0.974458, - 0.0755648, 0.103349, 1.094, 0.980168, - 0.0571998, 0.0776731, 1.1104, 0.987295, - 0.0377994, 0.0514445, 1.12491, 0.994432, - 0.0186417, 0.025429, 1.13851, 0.999975, 0.000542714, - 0.000282356, 1.15108, 0.592656, - 9.80249e-06, 0.486018, 1.19532e-05, 0.598467, - 0.000247275, 0.490781, 0.000301531, 0.597934, - 0.000988317, 0.490343, 0.00120517, 0.597903, - 0.00222366, 0.490319, 0.0027116, 0.597913, - 0.00395315, 0.490327, 0.00482077, 0.597919, - 0.00617653, 0.490329, 0.00753264, 0.597936, - 0.00889375, 0.490339, 0.0108478, 0.597956, - 0.0121043, 0.490347, 0.0147668, 0.597992, - 0.0158073, 0.490365, 0.0192905, 0.598032, - 0.0200017, 0.490382, 0.0244204, 0.598109, - 0.0246865, 0.49042, 0.0301593, 0.598215, - 0.0298594, 0.490474, 0.03651, 0.59833, - 0.0355167, 0.490524, 0.0434757, 0.598525, - 0.0416559, 0.490624, 0.0510629, 0.598778, - 0.0482692, 0.490753, 0.0592781, 0.599135, - 0.0553114, 0.49094, 0.0681304, 0.599802, - 0.062542, 0.491328, 0.0776467, 0.600361, - 0.0703638, 0.491598, 0.0878184, 0.60101, - 0.0786256, 0.491882, 0.0986573, 0.601811, - 0.0872962, 0.492232, 0.11018, 0.602861, - 0.0962284, 0.492684, 0.1224, 0.604167, - 0.10538, 0.493213, 0.135354, 0.605693, - 0.114896, 0.493799, 0.149034, 0.607682, - 0.124654, 0.494576, 0.163469, 0.610672, - 0.13456, 0.4959, 0.178747, 0.613313, - 0.144581, 0.496713, 0.194723, 0.617603, - 0.154703, 0.498499, 0.211617, 0.622174, - 0.16489, 0.500188, 0.229183, 0.628855, - 0.175164, 0.503072, 0.247786, 0.636963, - 0.185565, 0.506798, 0.267116, 0.644866, - 0.195911, 0.509719, 0.28702, 0.653741, - 0.206104, 0.512776, 0.307763, 0.664942, - 0.216447, 0.516812, 0.329631, 0.67633, - 0.22552, 0.519181, 0.353515, 0.690012, - 0.234316, 0.521681, 0.379226, 0.704243, - 0.242032, 0.523129, 0.405901, 0.719396, - 0.249172, 0.523768, 0.433585, 0.734471, - 0.255543, 0.522541, 0.462085, 0.750539, - 0.260697, 0.520217, 0.491233, 0.766365, - 0.26501, 0.516293, 0.521094, 0.781677, - 0.268409, 0.509708, 0.551014, 0.797132, - 0.270399, 0.501944, 0.581463, 0.812655, - 0.271247, 0.492025, 0.612402, 0.828592, - 0.270708, 0.480424, 0.643798, 0.844044, - 0.268085, 0.465955, 0.67682, 0.857305, - 0.263459, 0.448425, 0.708496, 0.87114, - 0.258151, 0.430243, 0.74046, 0.884936, - 0.251171, 0.410578, 0.771583, 0.895772, - 0.243305, 0.38862, 0.802234, 0.906961, - 0.234037, 0.365214, 0.833179, 0.917775, - 0.222714, 0.34116, 0.86353, 0.927883, - 0.210175, 0.31572, 0.893557, 0.936617, - 0.196925, 0.289159, 0.922976, 0.943384, - 0.182788, 0.261996, 0.951606, 0.949713, - 0.167965, 0.235324, 0.979958, 0.955818, - 0.151109, 0.208408, 1.00765, 0.961344, - 0.133834, 0.182591, 1.03329, 0.965469, - 0.115987, 0.156958, 1.0557, 0.968693, - 0.09746, 0.132239, 1.07583, 0.973165, - 0.0778514, 0.106195, 1.09451, 0.979387, - 0.0585067, 0.0797669, 1.11137, 0.98671, - 0.0390409, 0.0530263, 1.12643, 0.994093, - 0.019408, 0.0263163, 1.14016, 1.00002, 0.000540029, - 0.000194487, 1.15299, 0.574483, - 9.89066e-06, 0.494533, 1.14896e-05, 0.574478, - 0.000249127, 0.494528, 0.000289403, 0.574607, - 0.000996811, 0.494637, 0.00115797, 0.574396, - 0.00224241, 0.494458, 0.00260498, 0.574377, - 0.00398632, 0.49444, 0.00463102, 0.574386, - 0.00622836, 0.494445, 0.00723623, 0.574401, - 0.0089683, 0.494453, 0.010421, 0.574419, - 0.0122056, 0.49446, 0.0141859, 0.574459, - 0.0159396, 0.494481, 0.0185322, 0.574525, - 0.0201692, 0.49452, 0.0234617, 0.574587, - 0.0248924, 0.494547, 0.0289762, 0.574697, - 0.0301074, 0.494604, 0.0350797, 0.574853, - 0.0358114, 0.494688, 0.0417767, 0.575027, - 0.041999, 0.494772, 0.0490718, 0.575294, - 0.0486618, 0.494915, 0.0569728, 0.575733, - 0.0557148, 0.495173, 0.0654955, 0.576356, - 0.0630489, 0.495537, 0.0746612, 0.576944, - 0.0709285, 0.495836, 0.0844615, 0.57765, - 0.0792723, 0.496177, 0.0949142, 0.578491, - 0.0880167, 0.496563, 0.10603, 0.579639, - 0.0969462, 0.497096, 0.117841, 0.580989, - 0.10622, 0.497684, 0.130367, 0.582587, - 0.115861, 0.498337, 0.143609, 0.584951, - 0.125605, 0.499414, 0.157625, 0.587602, - 0.135608, 0.500518, 0.172413, 0.59076, - 0.145742, 0.501767, 0.187999, 0.594992, - 0.155934, 0.503542, 0.20445, 0.600656, - 0.166303, 0.506135, 0.221764, 0.607816, - 0.176681, 0.509542, 0.24002, 0.61522, - 0.187071, 0.51263, 0.258992, 0.623702, - 0.197465, 0.516021, 0.278773, 0.634192, - 0.207816, 0.520422, 0.299377, 0.644936, - 0.218183, 0.524073, 0.320802, 0.657888, - 0.2278, 0.528049, 0.34384, 0.670666, - 0.236747, 0.52986, 0.36916, 0.685626, - 0.24484, 0.531892, 0.395867, 0.701304, - 0.252071, 0.532727, 0.423488, 0.717727, - 0.258714, 0.532146, 0.452201, 0.733914, - 0.264211, 0.529883, 0.481579, 0.750529, - 0.26859, 0.5259, 0.511558, 0.76747, - 0.272046, 0.51999, 0.542042, 0.785189, - 0.274225, 0.513083, 0.572799, 0.800954, - 0.275189, 0.502936, 0.603816, 0.816962, - 0.274946, 0.490921, 0.635461, 0.83336, - 0.272695, 0.47684, 0.6676, 0.848143, - 0.268223, 0.459405, 0.70051, 0.861818, - 0.262768, 0.440319, 0.732902, 0.876828, - 0.255872, 0.420123, 0.765084, 0.889312, - 0.247703, 0.398379, 0.796391, 0.900412, - 0.238381, 0.374496, 0.827333, 0.912251, - 0.227783, 0.349874, 0.858385, 0.921792, - 0.214832, 0.323181, 0.888652, 0.931273, - 0.200949, 0.296624, 0.917763, 0.940295, - 0.186537, 0.269211, 0.947878, 0.946812, - 0.171538, 0.241447, 0.977016, 0.953588, - 0.155254, 0.213829, 1.00501, 0.958841, - 0.137156, 0.186807, 1.03179, 0.963746, - 0.118699, 0.160706, 1.05502, 0.966468, - 0.0998358, 0.135504, 1.07568, 0.971178, - 0.0805186, 0.109131, 1.09479, 0.97831, - 0.0599348, 0.0818293, 1.1123, 0.985886, - 0.0399661, 0.0545872, 1.12771, 0.994021, - 0.0198682, 0.0269405, 1.14186, 1.00009, 0.000271022, - 0.00012989, 1.15514, 0.538716, - 9.90918e-06, 0.486732, 1.09675e-05, 0.550656, - 0.000250642, 0.497518, 0.000277412, 0.55057, - 0.00100265, 0.497441, 0.00110974, 0.550903, - 0.00225672, 0.497733, 0.00249779, 0.550568, - 0.00401046, 0.497438, 0.00443906, 0.550574, - 0.00626613, 0.49744, 0.00693637, 0.550591, - 0.0090226, 0.497449, 0.00998921, 0.550623, - 0.0122795, 0.497469, 0.0135984, 0.550667, - 0.0160361, 0.497495, 0.0177654, 0.550724, - 0.0202908, 0.497526, 0.0224915, 0.550792, - 0.0250421, 0.497557, 0.0277795, 0.550918, - 0.0302878, 0.49763, 0.0336334, 0.551058, - 0.0360241, 0.497701, 0.0400573, 0.551276, - 0.0422473, 0.497824, 0.0470585, 0.551551, - 0.0489441, 0.497977, 0.0546433, 0.552074, - 0.0559596, 0.498312, 0.0628367, 0.552681, - 0.0633978, 0.498679, 0.071646, 0.553324, - 0.0713176, 0.499031, 0.0810746, 0.554011, - 0.0797268, 0.499365, 0.091129, 0.55488, - 0.0885238, 0.499779, 0.101837, 0.556171, - 0.0974417, 0.500444, 0.113239, 0.557498, - 0.106841, 0.501025, 0.125316, 0.559299, - 0.116533, 0.501864, 0.138128, 0.561647, - 0.126298, 0.502967, 0.151695, 0.564347, - 0.136388, 0.504129, 0.16604, 0.567863, - 0.146576, 0.505713, 0.181207, 0.572569, - 0.156832, 0.507953, 0.197259, 0.578919, - 0.167323, 0.511186, 0.214258, 0.585387, - 0.177712, 0.514042, 0.232038, 0.593134, - 0.188184, 0.517484, 0.250733, 0.603295, - 0.198717, 0.522345, 0.270454, 0.613854, - 0.209177, 0.526751, 0.290807, 0.626092, - 0.219644, 0.531595, 0.312202, 0.637868, - 0.229494, 0.534721, 0.334435, 0.652458, - 0.238718, 0.538304, 0.359184, 0.666985, - 0.247061, 0.539875, 0.385637, 0.683301, - 0.254652, 0.541042, 0.41328, 0.69998, - 0.261376, 0.540735, 0.441903, 0.717824, - 0.267085, 0.539139, 0.471609, 0.734617, - 0.271465, 0.534958, 0.501446, 0.753663, - 0.27528, 0.53032, 0.532571, 0.770512, - 0.277617, 0.522134, 0.563641, 0.787356, - 0.278525, 0.51206, 0.595067, 0.806252, - 0.278512, 0.50119, 0.627226, 0.822061, - 0.277023, 0.486791, 0.659402, 0.838959, - 0.273175, 0.470467, 0.692874, 0.85379, - 0.267238, 0.450688, 0.725702, 0.868268, - 0.260327, 0.429741, 0.75832, 0.881994, - 0.251946, 0.407223, 0.790189, 0.893885, - 0.242432, 0.383214, 0.821625, 0.905118, - 0.231904, 0.357297, 0.853011, 0.916045, - 0.219545, 0.330733, 0.883773, 0.927614, - 0.205378, 0.303916, 0.914435, 0.936005, - 0.190388, 0.275941, 0.944502, 0.944533, - 0.1749, 0.247493, 0.974439, 0.950758, - 0.158588, 0.218996, 1.00286, 0.957078, - 0.141027, 0.191559, 1.0304, 0.962448, - 0.121507, 0.164457, 1.05466, 0.964993, - 0.102068, 0.138636, 1.0761, 0.970017, - 0.0822598, 0.111861, 1.09541, 0.97661, - 0.062033, 0.0843438, 1.11317, 0.985073, - 0.0409832, 0.0558496, 1.12911, 0.993515, - 0.020146, 0.0275331, 1.1438, 1.00006, 0.00027329, - 0.000107883, 1.15736, 0.525324, - 9.99341e-06, 0.498153, 1.05385e-05, 0.526513, - 0.000251605, 0.499277, 0.000265329, 0.526517, - 0.00100641, 0.499282, 0.0010613, 0.526588, - 0.00226466, 0.499337, 0.00238823, 0.526539, - 0.0040255, 0.499302, 0.00424535, 0.526547, - 0.00628954, 0.499306, 0.00663364, 0.526561, - 0.00905628, 0.499313, 0.00955337, 0.526593, - 0.0123253, 0.499334, 0.0130054, 0.526642, - 0.0160957, 0.499365, 0.0169911, 0.5267, - 0.0203661, 0.499396, 0.0215122, 0.526792, - 0.0251347, 0.499451, 0.0265718, 0.526904, - 0.0303985, 0.499511, 0.0321732, 0.527079, - 0.0361554, 0.499617, 0.0383231, 0.527285, - 0.0423982, 0.499731, 0.045026, 0.527602, - 0.0491121, 0.499924, 0.0522936, 0.528166, - 0.0561127, 0.500306, 0.0601528, 0.52879, - 0.0635988, 0.5007, 0.0686059, 0.529421, - 0.071581, 0.501048, 0.0776518, 0.530144, - 0.0799854, 0.501421, 0.0873148, 0.531062, - 0.0888032, 0.501884, 0.0976084, 0.532374, - 0.0977643, 0.50259, 0.108588, 0.533828, - 0.107197, 0.50329, 0.120234, 0.53581, - 0.116887, 0.504312, 0.132602, 0.538063, - 0.126755, 0.505365, 0.145721, 0.5409, - 0.136819, 0.506668, 0.159617, 0.544882, - 0.147117, 0.508731, 0.174369, 0.550238, - 0.157446, 0.511601, 0.190028, 0.556038, - 0.167988, 0.514431, 0.206587, 0.563031, - 0.178364, 0.517808, 0.224046, 0.571543, - 0.189007, 0.521937, 0.242503, 0.582255, - 0.199546, 0.527415, 0.261977, 0.59272, - 0.210084, 0.531682, 0.282162, 0.605648, - 0.220448, 0.537123, 0.303426, 0.61785, - 0.230593, 0.540664, 0.325323, 0.632223, - 0.240238, 0.544467, 0.348993, 0.648819, - 0.24887, 0.547594, 0.375462, 0.665825, - 0.256657, 0.54912, 0.403024, 0.683389, - 0.263711, 0.549294, 0.431773, 0.701495, - 0.269666, 0.547649, 0.461494, 0.719197, - 0.274169, 0.543786, 0.491623, 0.737906, - 0.278124, 0.538644, 0.522994, 0.756652, - 0.280632, 0.531057, 0.554775, 0.775279, - 0.281741, 0.521972, 0.586441, 0.792688, - 0.281652, 0.509613, 0.618596, 0.811894, - 0.280345, 0.496497, 0.651462, 0.827938, - 0.277128, 0.47968, 0.684023, 0.844837, - 0.271646, 0.460688, 0.718024, 0.859239, - 0.264397, 0.438872, 0.751207, 0.874088, - 0.256144, 0.41577, 0.784232, 0.887693, - 0.246311, 0.391369, 0.816191, 0.899402, - 0.235497, 0.365872, 0.847828, 0.910973, - 0.223631, 0.338618, 0.87934, 0.92204, - 0.209874, 0.310803, 0.910325, 0.930987, - 0.194265, 0.281802, 0.940695, 0.94, - 0.178125, 0.252836, 0.970958, 0.948018, - 0.161479, 0.224239, 1.00078, 0.955141, - 0.144038, 0.195857, 1.0288, 0.960513, - 0.124915, 0.168487, 1.05371, 0.963964, - 0.104284, 0.141495, 1.07596, 0.968713, - 0.0838732, 0.114437, 1.09628, 0.975524, - 0.0635579, 0.0863105, 1.11448, 0.98431, - 0.042291, 0.0574774, 1.13069, 0.992916, - 0.0209131, 0.0284343, 1.14568, 0.999926, 0.000743097, - 0.000379265, 1.15955, 0.501042, - 9.98428e-06, 0.498726, 1.00306e-05, 0.502992, - 0.000252112, 0.500665, 0.000253283, 0.502417, - 0.00100791, 0.500092, 0.00101259, 0.502965, - 0.00226919, 0.500621, 0.00227978, 0.502318, - 0.00403109, 0.499994, 0.00405011, 0.502333, - 0.00629832, 0.500005, 0.00632868, 0.502362, - 0.00906907, 0.500027, 0.00911446, 0.502369, - 0.0123423, 0.500023, 0.0124078, 0.50243, - 0.0161178, 0.500066, 0.016211, 0.502493, - 0.0203937, 0.500103, 0.0205256, 0.502592, - 0.0251684, 0.500166, 0.0253548, 0.502707, - 0.0304389, 0.50023, 0.0307029, 0.502881, - 0.0362015, 0.500335, 0.0365753, 0.503124, - 0.0424507, 0.500488, 0.0429798, 0.503443, - 0.0491582, 0.500686, 0.0499268, 0.504083, - 0.0561476, 0.501155, 0.0574541, 0.504668, - 0.0636846, 0.501524, 0.0655408, 0.505319, - 0.0716834, 0.501904, 0.0742072, 0.50609, - 0.0800925, 0.502321, 0.0834699, 0.507122, - 0.0888425, 0.502896, 0.0933603, 0.508414, - 0.097855, 0.503603, 0.10391, 0.509955, - 0.107304, 0.504416, 0.115113, 0.512061, - 0.116921, 0.505565, 0.127054, 0.514419, - 0.12689, 0.506732, 0.139709, 0.517529, - 0.136934, 0.508338, 0.153173, 0.522085, - 0.147327, 0.510987, 0.167528, 0.526986, - 0.157612, 0.513527, 0.182708, 0.533122, - 0.168213, 0.516717, 0.198881, 0.540807, - 0.178688, 0.520832, 0.215986, 0.550687, - 0.189511, 0.52632, 0.234335, 0.560567, - 0.199998, 0.531009, 0.253375, 0.571698, - 0.210652, 0.535839, 0.273499, 0.584364, - 0.220917, 0.541091, 0.294355, 0.599066, - 0.23137, 0.546875, 0.316525, 0.614148, - 0.241206, 0.551306, 0.339671, 0.631157, - 0.250379, 0.555187, 0.36531, 0.647919, - 0.258397, 0.556595, 0.392767, 0.666112, - 0.265528, 0.556949, 0.421397, 0.686158, - 0.271827, 0.556617, 0.451433, 0.704838, - 0.27674, 0.552975, 0.482131, 0.723957, - 0.280733, 0.547814, 0.513458, 0.74262, - 0.283359, 0.53997, 0.545446, 0.762009, - 0.284541, 0.530422, 0.57775, 0.781314, - 0.284507, 0.518546, 0.610434, 0.799116, - 0.283309, 0.504178, 0.643178, 0.817604, - 0.280378, 0.48843, 0.676248, 0.83459, - 0.275619, 0.469457, 0.709698, 0.850974, - 0.26856, 0.447698, 0.744245, 0.866747, - 0.260094, 0.424791, 0.777695, 0.881412, - 0.249929, 0.399913, 0.810392, 0.8936, - 0.239137, 0.37308, 0.842872, 0.905943, - 0.226818, 0.345705, 0.874677, 0.916408, - 0.213699, 0.31706, 0.906257, 0.927215, - 0.198428, 0.288444, 0.936881, 0.935625, - 0.181643, 0.258329, 0.96795, 0.944076, - 0.164386, 0.228488, 0.998216, 0.951229, - 0.146339, 0.199763, 1.02689, 0.958793, - 0.127709, 0.172153, 1.0535, 0.963219, - 0.107244, 0.144989, 1.07646, 0.967562, - 0.0857764, 0.11685, 1.09675, 0.974866, - 0.0645377, 0.0880571, 1.11576, 0.983353, - 0.0431732, 0.0587352, 1.13227, 0.992503, - 0.0218356, 0.0294181, 1.1478, 1.00003, 0.000605203, - 0.000231013, 1.16207, 0.482935, - 1.01177e-05, 0.504695, 9.68142e-06, 0.477554, - 0.000251521, 0.499071, 0.000240676, 0.477904, - 0.00100683, 0.499436, 0.00096342, 0.478368, - 0.00226636, 0.499899, 0.0021687, 0.477977, - 0.00402719, 0.499513, 0.00385384, 0.477993, - 0.00629226, 0.499525, 0.0060221, 0.478011, - 0.00906011, 0.499536, 0.00867289, 0.478051, - 0.0123305, 0.499566, 0.0118074, 0.478089, - 0.016102, 0.499587, 0.0154269, 0.478171, - 0.0203736, 0.499645, 0.0195341, 0.478254, - 0.025143, 0.499692, 0.0241318, 0.47839, - 0.0304071, 0.499779, 0.0292247, 0.478588, - 0.0361631, 0.499911, 0.0348196, 0.478812, - 0.0424023, 0.500046, 0.0409231, 0.479208, - 0.0490724, 0.500326, 0.047552, 0.479841, - 0.0560722, 0.500805, 0.0547377, 0.480392, - 0.0636125, 0.501152, 0.0624607, 0.481068, - 0.0716134, 0.501561, 0.0707473, 0.481898, - 0.0800062, 0.502054, 0.0796118, 0.483022, - 0.0886568, 0.502728, 0.0890974, 0.484332, - 0.0977553, 0.503479, 0.0992099, 0.486126, - 0.107173, 0.504546, 0.10999, 0.488066, - 0.11677, 0.50557, 0.121476, 0.490521, - 0.126725, 0.506849, 0.133672, 0.494232, - 0.136793, 0.50911, 0.146731, 0.498302, - 0.147116, 0.511345, 0.160577, 0.503565, - 0.157446, 0.514344, 0.175335, 0.510902, - 0.168121, 0.518824, 0.191207, 0.519263, - 0.178799, 0.523666, 0.208058, 0.528204, - 0.189407, 0.528296, 0.225875, 0.538854, - 0.200145, 0.533724, 0.244782, 0.551278, - 0.210701, 0.539833, 0.264753, 0.565222, - 0.221303, 0.546131, 0.285745, 0.579403, - 0.231688, 0.551496, 0.307592, 0.595469, - 0.241718, 0.556809, 0.330582, 0.610929, - 0.250992, 0.559641, 0.354995, 0.629433, - 0.259602, 0.562379, 0.382471, 0.648504, - 0.267038, 0.563676, 0.411126, 0.66756, - 0.273388, 0.562092, 0.440924, 0.689143, - 0.278788, 0.560807, 0.472118, 0.709056, - 0.282783, 0.555701, 0.503774, 0.729855, - 0.285836, 0.548698, 0.536364, 0.748954, - 0.287078, 0.538544, 0.56895, 0.768373, - 0.287133, 0.526711, 0.601991, 0.78827, - 0.285839, 0.512511, 0.635403, 0.807465, - 0.283238, 0.496323, 0.668797, 0.825194, - 0.27906, 0.477638, 0.702584, 0.842203, - 0.272286, 0.456253, 0.736393, 0.857749, - 0.263854, 0.432412, 0.77096, 0.874799, - 0.253943, 0.407806, 0.80489, 0.887497, - 0.24237, 0.38033, 0.83771, 0.89966, - 0.230278, 0.352446, 0.870376, 0.911753, - 0.21646, 0.323268, 0.902256, 0.923011, - 0.202071, 0.294314, 0.933306, 0.932375, - 0.185519, 0.264104, 0.965177, 0.940537, - 0.167604, 0.234035, 0.996303, 0.948904, - 0.149068, 0.20412, 1.0261, 0.955263, - 0.129539, 0.175431, 1.05304, 0.960303, - 0.109932, 0.148116, 1.07617, 0.965512, - 0.0880572, 0.119693, 1.09742, 0.973466, - 0.0660548, 0.0901619, 1.11721, 0.98284, - 0.0439228, 0.0599875, 1.13436, 0.992216, - 0.0219588, 0.0298975, 1.15006, 0.999946, 0.000119402, - 2.08547e-05, 1.16471, 0.447827, - 1.00414e-05, 0.491543, 9.14833e-06, 0.454778, - 0.000251257, 0.499172, 0.00022891, 0.453519, - 0.00100342, 0.497787, 0.000914184, 0.45357, - 0.00225776, 0.497847, 0.00205701, 0.453578, - 0.00401371, 0.497855, 0.00365705, 0.45357, - 0.00627107, 0.497841, 0.00571453, 0.453598, - 0.00902968, 0.497864, 0.00823019, 0.453627, - 0.0122888, 0.497882, 0.0112049, 0.453684, - 0.0160475, 0.497923, 0.0146405, 0.453764, - 0.0203044, 0.49798, 0.0185394, 0.453866, - 0.0250576, 0.498049, 0.0229054, 0.453996, - 0.0303028, 0.49813, 0.0277424, 0.454196, - 0.0360379, 0.498267, 0.0330587, 0.454457, - 0.0422521, 0.498445, 0.0388613, 0.454926, - 0.0488393, 0.498812, 0.0451767, 0.455525, - 0.0558653, 0.499272, 0.0520153, 0.456074, - 0.0633772, 0.499625, 0.0593754, 0.456752, - 0.0713606, 0.500049, 0.0672751, 0.457648, - 0.07971, 0.500615, 0.0757447, 0.458849, - 0.0883032, 0.501399, 0.0848231, 0.46029, - 0.0974095, 0.502293, 0.0945135, 0.462, - 0.106729, 0.503301, 0.104848, 0.464121, - 0.116354, 0.504533, 0.115884, 0.466889, - 0.126214, 0.506172, 0.127652, 0.470744, - 0.136324, 0.508667, 0.14024, 0.47488, - 0.146595, 0.510995, 0.153673, 0.480845, - 0.157027, 0.514832, 0.168053, 0.488262, - 0.167658, 0.519506, 0.183508, 0.496547, - 0.178343, 0.524347, 0.199948, 0.506254, - 0.188916, 0.52983, 0.217503, 0.517961, - 0.199975, 0.536357, 0.236272, 0.531484, - 0.210624, 0.543641, 0.256096, 0.545496, - 0.221227, 0.550048, 0.277085, 0.559497, - 0.231568, 0.555076, 0.298615, 0.575752, - 0.241698, 0.560541, 0.321547, 0.591999, - 0.251172, 0.564156, 0.345602, 0.610654, - 0.260178, 0.567607, 0.371851, 0.630484, - 0.268094, 0.56923, 0.40076, 0.651807, - 0.274661, 0.569779, 0.430801, 0.67239, - 0.280331, 0.566791, 0.461939, 0.693024, - 0.284501, 0.562007, 0.493854, 0.715473, - 0.287852, 0.555791, 0.526992, 0.736323, - 0.28929, 0.546345, 0.560102, 0.755771, - 0.289405, 0.534, 0.593543, 0.775424, - 0.2881, 0.519114, 0.627256, 0.795447, - 0.285562, 0.502543, 0.661464, 0.815319, - 0.281416, 0.484773, 0.695206, 0.831769, - 0.275523, 0.463445, 0.729044, 0.849464, - 0.267516, 0.440269, 0.764069, 0.866775, - 0.257584, 0.415049, 0.799089, 0.881252, - 0.245817, 0.388049, 0.831948, 0.894209, - 0.233127, 0.35889, 0.865526, 0.906922, - 0.219579, 0.329915, 0.89818, 0.919686, - 0.204491, 0.300441, 0.930013, 0.929044, - 0.188962, 0.269445, 0.962061, 0.938393, - 0.171079, 0.238402, 0.994214, 0.94661, - 0.15199, 0.208204, 1.02533, 0.953095, - 0.131953, 0.178653, 1.0529, 0.958644, - 0.111233, 0.150684, 1.0771, 0.963925, - 0.0903098, 0.122359, 1.09855, 0.971995, - 0.0680505, 0.0923342, 1.11874, 0.981658, - 0.0448512, 0.0614195, 1.13635, 0.991649, - 0.0221931, 0.0303582, 1.15238, 0.999985, 0.000393403, - 0.000111086, 1.16772, 0.396806, - 9.71563e-06, 0.457671, 8.42355e-06, 0.429186, - 0.000249421, 0.495017, 0.00021625, 0.429324, - 0.000998052, 0.495173, 0.000865322, 0.429175, - 0.00224487, 0.494999, 0.00194637, 0.429129, - 0.00399041, 0.494952, 0.00346004, 0.429153, - 0.00623476, 0.494974, 0.00540684, 0.429168, - 0.0089773, 0.494983, 0.00778714, 0.429207, - 0.0122175, 0.495012, 0.0106022, 0.429257, - 0.0159542, 0.495047, 0.0138535, 0.429338, - 0.0201864, 0.495106, 0.0175443, 0.429431, - 0.0249104, 0.495165, 0.0216774, 0.429587, - 0.0301252, 0.495279, 0.0262594, 0.429796, - 0.0358249, 0.495432, 0.0312968, 0.430065, - 0.0419972, 0.495621, 0.0367985, 0.430588, - 0.0485144, 0.496061, 0.042798, 0.43113, - 0.0555028, 0.496472, 0.0492914, 0.431743, - 0.0629852, 0.496904, 0.0562907, 0.432448, - 0.0709256, 0.497369, 0.0638056, 0.433414, - 0.0791942, 0.498032, 0.071885, 0.434638, - 0.0877346, 0.498854, 0.0805517, 0.43611, - 0.0968056, 0.499812, 0.0898047, 0.437859, - 0.106002, 0.500891, 0.0997142, 0.440017, - 0.115648, 0.502198, 0.110289, 0.443236, - 0.125427, 0.504389, 0.121644, 0.44697, - 0.135492, 0.506809, 0.133769, 0.451689, - 0.145746, 0.509858, 0.146787, 0.45811, - 0.156219, 0.514247, 0.160793, 0.465305, - 0.166834, 0.518816, 0.175791, 0.474085, - 0.177546, 0.524331, 0.191906, 0.484808, - 0.188262, 0.53104, 0.209199, 0.49732, - 0.199346, 0.538511, 0.227825, 0.509693, - 0.209951, 0.544554, 0.247269, 0.524367, - 0.220533, 0.551616, 0.267978, 0.539228, - 0.231082, 0.557368, 0.289672, 0.55644, - 0.241342, 0.563782, 0.31268, 0.574204, - 0.250964, 0.568851, 0.33651, 0.593388, - 0.260306, 0.57312, 0.362219, 0.613358, - 0.268667, 0.574916, 0.390322, 0.634512, - 0.275591, 0.575053, 0.420478, 0.65563, - 0.281328, 0.572404, 0.451614, 0.678265, - 0.285948, 0.568893, 0.484112, 0.70011, - 0.289408, 0.561878, 0.517348, 0.723005, - 0.291328, 0.55359, 0.551355, 0.743744, - 0.291418, 0.541099, 0.585109, 0.763949, - 0.290252, 0.526489, 0.619487, 0.784186, - 0.287648, 0.509496, 0.65404, 0.804304, - 0.283782, 0.491484, 0.688649, 0.823629, - 0.278067, 0.470517, 0.723133, 0.84094, - 0.270588, 0.44705, 0.757163, 0.857852, - 0.261188, 0.421252, 0.792816, 0.874934, - 0.249313, 0.394191, 0.827248, 0.888709, - 0.236492, 0.365359, 0.861074, 0.902589, - 0.222185, 0.336016, 0.894417, 0.914201, - 0.207314, 0.30527, 0.926825, 0.925978, - 0.191146, 0.274532, 0.9595, 0.93512, - 0.174135, 0.243393, 0.991583, 0.943656, - 0.155231, 0.212414, 1.02356, 0.951719, - 0.134403, 0.182005, 1.05239, 0.957164, - 0.113023, 0.153043, 1.07754, 0.962656, - 0.0914493, 0.124186, 1.09984, 0.970695, - 0.0694179, 0.0941654, 1.12, 0.980749, - 0.0466199, 0.0629671, 1.13849, 0.991205, - 0.0227032, 0.0311146, 1.15494, 0.999884, 0.000632388, - 0.000254483, 1.1706, 0.379821, - 9.57289e-06, 0.460637, 7.89337e-06, 0.405188, - 0.000247483, 0.491396, 0.000204064, 0.404796, - 0.000989434, 0.490914, 0.000815853, 0.40483, - 0.00222607, 0.490949, 0.00183559, 0.40473, - 0.00395723, 0.49084, 0.00326332, 0.404731, - 0.00618287, 0.490836, 0.00509945, 0.404768, - 0.00890258, 0.490871, 0.00734463, 0.404791, - 0.0121156, 0.490883, 0.00999992, 0.404857, - 0.0158214, 0.490938, 0.0130676, 0.404943, - 0.0200178, 0.491004, 0.0165503, 0.405059, - 0.0247027, 0.491093, 0.0204521, 0.405213, - 0.0298729, 0.491205, 0.0247788, 0.405399, - 0.0355226, 0.491333, 0.0295373, 0.405731, - 0.0416352, 0.491604, 0.034741, 0.406303, - 0.0480807, 0.492116, 0.0404255, 0.406814, - 0.0550458, 0.492506, 0.0465732, 0.407404, - 0.0624652, 0.492926, 0.0532058, 0.408149, - 0.0702958, 0.493442, 0.0603442, 0.409128, - 0.0784623, 0.494136, 0.0680297, 0.410408, - 0.087007, 0.495054, 0.0762786, 0.411813, - 0.0959639, 0.495962, 0.0851046, 0.413735, - 0.105075, 0.497257, 0.0945878, 0.416137, - 0.114646, 0.498882, 0.104725, 0.41934, - 0.124394, 0.501132, 0.11563, 0.423326, - 0.134328, 0.503883, 0.127325, 0.428419, - 0.14458, 0.50747, 0.139911, 0.43484, - 0.154979, 0.511964, 0.153481, 0.442641, - 0.165628, 0.517328, 0.168114, 0.452511, - 0.176365, 0.524258, 0.183995, 0.463473, - 0.187298, 0.531248, 0.200953, 0.475564, - 0.198244, 0.538367, 0.219176, 0.488664, - 0.208938, 0.545175, 0.238514, 0.504073, - 0.219599, 0.553227, 0.259129, 0.520832, - 0.230378, 0.560653, 0.280997, 0.538455, - 0.240703, 0.567523, 0.303821, 0.55709, - 0.250548, 0.573287, 0.327948, 0.576646, - 0.259964, 0.577795, 0.353362, 0.596705, - 0.268721, 0.580077, 0.380336, 0.618053, - 0.276054, 0.58018, 0.4101, 0.640303, - 0.282176, 0.578747, 0.44161, 0.662365, - 0.286931, 0.574294, 0.474106, 0.684542, - 0.290521, 0.567035, 0.507549, 0.707984, - 0.292672, 0.558687, 0.541853, 0.730913, - 0.293189, 0.547606, 0.576581, 0.752948, - 0.292199, 0.533471, 0.61172, 0.773452, - 0.289508, 0.516395, 0.646339, 0.794715, - 0.285716, 0.497873, 0.682131, 0.814251, - 0.280051, 0.476845, 0.716396, 0.833057, - 0.272873, 0.453449, 0.751503, 0.84959, - 0.263982, 0.427857, 0.786085, 0.867022, - 0.252745, 0.400335, 0.821355, 0.882277, - 0.239655, 0.371304, 0.85646, 0.895375, - 0.225386, 0.340397, 0.890828, 0.909347, - 0.209587, 0.310005, 0.923532, 0.921885, - 0.193433, 0.2796, 0.956419, 0.932127, - 0.176135, 0.247276, 0.989445, 0.941869, - 0.157872, 0.216186, 1.02221, 0.949735, - 0.137577, 0.185602, 1.05195, 0.956617, - 0.115285, 0.155767, 1.07822, 0.961974, - 0.0928418, 0.126103, 1.10149, 0.96972, - 0.0700592, 0.0956758, 1.12207, 0.98012, - 0.0474671, 0.0643269, 1.1408, 0.990825, - 0.0238113, 0.0320863, 1.1577, 0.999876, 0.000381574, - 8.12203e-05, 1.17403, 0.367636, - 9.61342e-06, 0.469176, 7.53287e-06, 0.380377, - 0.000244772, 0.485434, 0.000191797, 0.380416, - 0.000978857, 0.485475, 0.000767015, 0.380376, - 0.00220165, 0.485435, 0.00172522, 0.380419, - 0.00391408, 0.485487, 0.00306734, 0.380438, - 0.00611549, 0.485505, 0.00479332, 0.380462, - 0.00880558, 0.485525, 0.00690391, 0.380496, - 0.0119837, 0.485551, 0.00940039, 0.38056, - 0.0156487, 0.485605, 0.0122848, 0.38064, - 0.0197988, 0.485666, 0.0155601, 0.380767, - 0.0244324, 0.48577, 0.0192313, 0.380909, - 0.0295444, 0.485871, 0.0233032, 0.381142, - 0.0351321, 0.48606, 0.0277861, 0.381472, - 0.0411535, 0.486336, 0.0326939, 0.382015, - 0.0475408, 0.486833, 0.0380565, 0.382523, - 0.0544395, 0.487231, 0.0438615, 0.383129, - 0.061784, 0.487683, 0.0501332, 0.383952, - 0.0695085, 0.488313, 0.0568996, 0.38498, - 0.0775819, 0.489077, 0.0641952, 0.386331, - 0.0860443, 0.490113, 0.0720324, 0.387788, - 0.0948406, 0.491099, 0.0804379, 0.389808, - 0.103899, 0.492566, 0.0894899, 0.39252, - 0.113313, 0.494601, 0.0992098, 0.395493, - 0.123007, 0.496619, 0.109641, 0.399826, - 0.132859, 0.499912, 0.120919, 0.405341, - 0.143077, 0.504061, 0.133107, 0.411932, - 0.153465, 0.508905, 0.146263, 0.420591, - 0.164108, 0.515482, 0.160544, 0.43101, - 0.174893, 0.523191, 0.176123, 0.441881, - 0.185839, 0.53026, 0.192757, 0.453919, - 0.196633, 0.537295, 0.210535, 0.468715, - 0.207611, 0.546156, 0.229886, 0.485182, - 0.218517, 0.555173, 0.250543, 0.501926, - 0.229249, 0.562728, 0.27221, 0.51785, - 0.239481, 0.567494, 0.294892, 0.536947, - 0.249395, 0.573889, 0.318987, 0.557115, - 0.259, 0.578831, 0.344348, 0.577966, - 0.268075, 0.582055, 0.371223, 0.599489, - 0.276115, 0.583307, 0.399834, 0.62479, - 0.282523, 0.583902, 0.431415, 0.647504, - 0.287663, 0.57953, 0.464301, 0.670601, - 0.291538, 0.573103, 0.498123, 0.693539, - 0.293842, 0.563731, 0.532662, 0.717385, - 0.294681, 0.553169, 0.567925, 0.741533, - 0.293717, 0.539908, 0.603502, 0.762142, - 0.291156, 0.521902, 0.639074, 0.783014, - 0.28719, 0.502815, 0.674439, 0.805158, - 0.281773, 0.482598, 0.710497, 0.823646, - 0.274682, 0.458949, 0.7456, 0.841879, - 0.266184, 0.433129, 0.781085, 0.859515, - 0.255682, 0.406064, 0.816, 0.875335, - 0.242849, 0.376509, 0.851074, 0.890147, - 0.228329, 0.345502, 0.886473, 0.903144, - 0.212491, 0.31428, 0.920751, 0.916618, - 0.195695, 0.282994, 0.954606, 0.927953, - 0.178267, 0.251091, 0.988402, 0.937414, - 0.159549, 0.219107, 1.02141, 0.946823, - 0.140022, 0.18896, 1.05167, 0.954651, - 0.118154, 0.158667, 1.07819, 0.959955, - 0.0946636, 0.128808, 1.1025, 0.96858, - 0.0711792, 0.0973787, 1.12391, 0.97938, - 0.0475046, 0.0650965, 1.14322, 0.990498, - 0.024059, 0.0326267, 1.16077, 0.999844, - 5.12408e-05, 0.000112444, 1.17727, 0.316912, - 9.34977e-06, 0.425996, 6.95559e-06, 0.356423, - 0.000241372, 0.479108, 0.000179562, 0.356272, - 0.000965292, 0.478897, 0.00071811, 0.356262, - 0.00217182, 0.478894, 0.00161574, 0.356265, - 0.00386092, 0.478895, 0.00287261, 0.356278, - 0.0060324, 0.478905, 0.00448907, 0.356293, - 0.00868565, 0.478914, 0.00646572, 0.356346, - 0.0118207, 0.478965, 0.00880438, 0.356395, - 0.0154355, 0.479001, 0.0115066, 0.356484, - 0.019529, 0.479075, 0.0145762, 0.356609, - 0.0240991, 0.47918, 0.018018, 0.356766, - 0.0291413, 0.479305, 0.0218379, 0.357009, - 0.0346498, 0.479512, 0.0260454, 0.357424, - 0.0405462, 0.479909, 0.0306657, 0.357899, - 0.0468825, 0.480337, 0.0357054, 0.358424, - 0.0536887, 0.480771, 0.0411728, 0.359041, - 0.0609416, 0.481242, 0.0470841, 0.359903, - 0.0685239, 0.481943, 0.0534831, 0.360932, - 0.0764883, 0.482741, 0.0603795, 0.362196, - 0.0848364, 0.483688, 0.0678028, 0.363847, - 0.0935002, 0.484947, 0.0758086, 0.365972, - 0.102471, 0.486588, 0.0844173, 0.368741, - 0.111751, 0.488787, 0.0937199, 0.372146, - 0.121334, 0.491405, 0.103732, 0.377114, - 0.131147, 0.495604, 0.114608, 0.38226, - 0.141213, 0.499436, 0.126345, 0.389609, - 0.151632, 0.505334, 0.139116, 0.397925, - 0.162073, 0.51168, 0.152995, 0.407824, - 0.172819, 0.518876, 0.168071, 0.420014, - 0.183929, 0.527639, 0.184495, 0.434266, - 0.195032, 0.537588, 0.20232, 0.447352, - 0.205792, 0.544379, 0.221189, 0.463726, - 0.216704, 0.553422, 0.241616, 0.481406, - 0.227531, 0.562074, 0.263298, 0.498707, - 0.238017, 0.568227, 0.286116, 0.518039, - 0.247936, 0.574473, 0.3101, 0.538277, - 0.257437, 0.579191, 0.335401, 0.561166, - 0.266829, 0.584807, 0.362246, 0.583189, - 0.275329, 0.586476, 0.390609, 0.606024, - 0.28234, 0.585578, 0.420998, 0.632419, - 0.287924, 0.584496, 0.454357, 0.656128, - 0.291972, 0.577766, 0.488233, 0.679953, - 0.29456, 0.56875, 0.523248, 0.704654, - 0.295816, 0.558388, 0.559168, 0.729016, - 0.295157, 0.544826, 0.595326, 0.752062, - 0.292779, 0.528273, 0.631864, 0.773138, - 0.288681, 0.508482, 0.667793, 0.794869, - 0.283358, 0.487341, 0.704035, 0.815101, - 0.27608, 0.46354, 0.739925, 0.834212, - 0.26767, 0.438672, 0.775539, 0.852368, - 0.257397, 0.411239, 0.810895, 0.870207, - 0.245689, 0.3829, 0.846472, 0.884063, - 0.231452, 0.351496, 0.881788, 0.898284, - 0.215561, 0.31895, 0.917438, 0.912964, - 0.198208, 0.287367, 0.952422, 0.924666, - 0.180426, 0.254487, 0.987551, 0.934429, - 0.161525, 0.222226, 1.02142, 0.943485, - 0.141197, 0.191143, 1.05218, 0.9521, - 0.120085, 0.161112, 1.07937, 0.957876, - 0.0975881, 0.130982, 1.10403, 0.966943, - 0.0726842, 0.0990553, 1.12616, 0.978313, - 0.0483705, 0.0662818, 1.14619, 0.990048, - 0.0239072, 0.0329243, 1.16413, 0.999984, 0.000461885, - 7.72859e-05, 1.18099, 0.321287, - 9.35049e-06, 0.455413, 6.59662e-06, 0.332595, - 0.000237513, 0.471437, 0.000167562, 0.332729, - 0.000949964, 0.471618, 0.000670192, 0.332305, - 0.00213618, 0.471028, 0.00150712, 0.332326, - 0.00379765, 0.471055, 0.00267959, 0.332344, - 0.00593353, 0.471072, 0.00418751, 0.332356, - 0.00854349, 0.471077, 0.00603172, 0.332403, - 0.0116268, 0.471121, 0.00821362, 0.332461, - 0.0151824, 0.47117, 0.0107357, 0.332552, - 0.0192088, 0.471251, 0.0136014, 0.332657, - 0.0237024, 0.47133, 0.0168152, 0.332835, - 0.0286615, 0.471487, 0.0203853, 0.333083, - 0.0340765, 0.471708, 0.0243212, 0.333547, - 0.0398563, 0.47219, 0.0286518, 0.333989, - 0.0460916, 0.472587, 0.0333763, 0.334532, - 0.0527897, 0.473054, 0.0385084, 0.335167, - 0.0599284, 0.473568, 0.0440638, 0.33608, - 0.0673514, 0.474362, 0.0500962, 0.337146, - 0.0752237, 0.475231, 0.0566022, 0.338462, - 0.083418, 0.476282, 0.0636272, 0.34014, - 0.0919382, 0.477615, 0.0712153, 0.342341, - 0.100741, 0.479404, 0.079417, 0.345088, - 0.109905, 0.481618, 0.0882631, 0.349049, - 0.119369, 0.485081, 0.0978851, 0.353939, - 0.129033, 0.489317, 0.108336, 0.359893, - 0.139038, 0.494309, 0.119698, 0.366945, - 0.149411, 0.499983, 0.132024, 0.375814, - 0.159843, 0.507185, 0.145558, 0.387112, - 0.170664, 0.516392, 0.160433, 0.40023, - 0.181897, 0.526519, 0.176648, 0.412555, - 0.192785, 0.53423, 0.193922, 0.427023, - 0.203663, 0.542741, 0.212662, 0.443685, - 0.214695, 0.552066, 0.232944, 0.461499, - 0.225561, 0.560762, 0.254495, 0.480975, - 0.236257, 0.569421, 0.277531, 0.501, - 0.24639, 0.576101, 0.301724, 0.521691, - 0.256101, 0.581493, 0.327112, 0.543478, - 0.265289, 0.585221, 0.353917, 0.566094, - 0.273938, 0.587614, 0.381941, 0.589578, - 0.281679, 0.587991, 0.41172, 0.614583, - 0.287655, 0.585928, 0.444148, 0.641813, - 0.292228, 0.582092, 0.478617, 0.666189, - 0.295172, 0.57398, 0.51397, 0.690475, - 0.29648, 0.561676, 0.550118, 0.715543, - 0.296203, 0.548758, 0.586933, 0.740405, - 0.293999, 0.532792, 0.62384, 0.762183, - 0.28998, 0.512735, 0.660723, 0.786069, - 0.28478, 0.492402, 0.69807, 0.806812, - 0.277568, 0.469058, 0.734422, 0.826987, - 0.268951, 0.443017, 0.770946, 0.844588, - 0.259049, 0.415501, 0.80699, 0.863725, - 0.2471, 0.387328, 0.842107, 0.879137, - 0.234157, 0.356108, 0.878078, 0.894634, - 0.218719, 0.324315, 0.914058, 0.909162, - 0.201293, 0.291813, 0.949922, 0.92072, - 0.18267, 0.258474, 0.985337, 0.93158, - 0.163212, 0.225593, 1.0205, 0.941238, - 0.142771, 0.193986, 1.05273, 0.949293, - 0.120956, 0.163392, 1.08075, 0.956226, - 0.0985743, 0.132934, 1.10559, 0.96546, - 0.075118, 0.101255, 1.12823, 0.977403, - 0.0497921, 0.0675441, 1.149, 0.989648, - 0.0241574, 0.0334681, 1.16765, 1.00001, 0.0005762, - 0.000184807, 1.18519, 0.303474, - 9.16603e-06, 0.4542, 6.1243e-06, 0.308894, - 0.000232869, 0.462306, 0.000155592, 0.309426, - 0.000931661, 0.463093, 0.000622499, 0.308643, - 0.0020949, 0.461933, 0.00139979, 0.308651, - 0.0037242, 0.461941, 0.00248874, 0.308662, - 0.00581873, 0.46195, 0.00388933, 0.308687, - 0.00837818, 0.461974, 0.00560247, 0.308728, - 0.0114016, 0.462011, 0.00762948, 0.308789, - 0.0148884, 0.462067, 0.00997326, 0.308882, - 0.0188369, 0.462151, 0.0126375, 0.309007, - 0.0232436, 0.462263, 0.0156271, 0.30918, - 0.0281054, 0.462417, 0.0189498, 0.309442, - 0.0334065, 0.462667, 0.0226167, 0.309901, - 0.0390589, 0.463162, 0.0266614, 0.310331, - 0.0452042, 0.463555, 0.0310715, 0.310858, - 0.0517735, 0.464019, 0.0358698, 0.311576, - 0.0587359, 0.464669, 0.0410848, 0.312436, - 0.0660383, 0.465406, 0.0467453, 0.313526, - 0.0737266, 0.466339, 0.0528718, 0.314903, - 0.0817574, 0.467504, 0.0595039, 0.316814, - 0.090167, 0.469226, 0.0666888, 0.318965, - 0.0987555, 0.470981, 0.0744658, 0.322077, - 0.107792, 0.473814, 0.082912, 0.325947, - 0.117098, 0.477241, 0.0920846, 0.331008, - 0.126602, 0.48184, 0.102137, 0.337893, - 0.136619, 0.488334, 0.113135, 0.345106, - 0.146838, 0.494415, 0.12511, 0.355111, - 0.157357, 0.503275, 0.138356, 0.365095, - 0.167955, 0.510966, 0.152686, 0.378344, - 0.179157, 0.521508, 0.16856, 0.391599, - 0.190143, 0.530455, 0.18561, 0.407786, - 0.20123, 0.541275, 0.204308, 0.425294, - 0.212456, 0.551784, 0.224623, 0.444021, - 0.223568, 0.561493, 0.246172, 0.463418, - 0.234154, 0.569886, 0.268979, 0.484077, - 0.244546, 0.577116, 0.293411, 0.505513, - 0.254301, 0.582914, 0.318936, 0.527672, - 0.263564, 0.587208, 0.345856, 0.550565, - 0.272332, 0.589277, 0.374054, 0.573656, - 0.280011, 0.588426, 0.403276, 0.59827, - 0.286924, 0.587504, 0.43474, 0.624731, - 0.291994, 0.583401, 0.468767, 0.652396, - 0.295159, 0.576997, 0.504411, 0.67732, - 0.296954, 0.565863, 0.54114, 0.703147, - 0.296877, 0.552316, 0.57816, 0.728715, - 0.295147, 0.536773, 0.616124, 0.752448, - 0.291275, 0.51771, 0.653885, 0.775169, - 0.285905, 0.496087, 0.691537, 0.799307, - 0.279064, 0.474232, 0.729251, 0.819482, - 0.270294, 0.447676, 0.766267, 0.837659, - 0.260032, 0.419656, 0.802616, 0.856903, - 0.248497, 0.391328, 0.838583, 0.873325, - 0.235252, 0.360285, 0.874711, 0.889788, - 0.221126, 0.329215, 0.91077, 0.904486, - 0.204304, 0.296392, 0.94653, 0.917711, - 0.185562, 0.262159, 0.983828, 0.928969, - 0.165635, 0.229142, 1.01955, 0.939707, - 0.14442, 0.19673, 1.05317, 0.948167, - 0.122147, 0.165095, 1.0823, 0.955222, - 0.099098, 0.13451, 1.10791, 0.964401, - 0.0755332, 0.102476, 1.1312, 0.976605, - 0.0513817, 0.0689667, 1.15218, 0.989085, - 0.0258499, 0.034506, 1.17129, 0.999908, 0.000617773, - 0.000271268, 1.18961, 0.285803, - 9.05752e-06, 0.452348, 5.72272e-06, 0.284689, - 0.00022732, 0.450581, 0.000143626, 0.285263, - 0.000910214, 0.451482, 0.000575099, 0.285302, - 0.00204784, 0.451553, 0.00129395, 0.285318, - 0.00364057, 0.451574, 0.0023006, 0.28533, - 0.00568813, 0.451585, 0.00359547, 0.285361, - 0.00819001, 0.451618, 0.00517934, 0.285397, - 0.0111458, 0.45165, 0.007054, 0.285447, - 0.0145536, 0.451688, 0.00922167, 0.285527, - 0.0184127, 0.451758, 0.0116869, 0.285688, - 0.0227207, 0.451929, 0.0144555, 0.28584, - 0.0274712, 0.452055, 0.0175341, 0.286136, - 0.0326278, 0.452369, 0.0209406, 0.286574, - 0.0381792, 0.452853, 0.0246965, 0.287012, - 0.0441879, 0.453272, 0.0287996, 0.287542, - 0.0506096, 0.453752, 0.033268, 0.288299, - 0.0573634, 0.454488, 0.0381504, 0.289186, - 0.0645458, 0.455294, 0.0434447, 0.290302, - 0.0720405, 0.456301, 0.0491973, 0.291776, - 0.0799046, 0.457648, 0.0554453, 0.29372, - 0.088117, 0.459483, 0.0622311, 0.296052, - 0.0965328, 0.461571, 0.0695992, 0.299563, - 0.105409, 0.465085, 0.077658, 0.30335, - 0.114553, 0.468506, 0.0864176, 0.309167, - 0.123917, 0.474423, 0.0961078, 0.31529, - 0.13381, 0.47995, 0.106643, 0.324163, - 0.144021, 0.488592, 0.118322, 0.333272, - 0.154382, 0.496461, 0.131133, 0.344224, - 0.165015, 0.50562, 0.145208, 0.357733, - 0.176168, 0.516719, 0.16073, 0.373046, - 0.187468, 0.528513, 0.177807, 0.38788, - 0.198488, 0.537713, 0.196072, 0.405133, - 0.209545, 0.547999, 0.21605, 0.423845, - 0.220724, 0.55759, 0.237484, 0.443777, - 0.231518, 0.566246, 0.26039, 0.464824, - 0.242035, 0.574326, 0.284835, 0.486635, - 0.251898, 0.58037, 0.310518, 0.51012, - 0.261304, 0.58568, 0.337678, 0.535301, - 0.270384, 0.590197, 0.366242, 0.559193, - 0.27841, 0.590569, 0.395873, 0.583544, - 0.285325, 0.588161, 0.426857, 0.608834, - 0.291113, 0.584249, 0.459477, 0.635753, - 0.294882, 0.57763, 0.494734, 0.664367, - 0.297088, 0.569479, 0.532023, 0.689688, - 0.297364, 0.555064, 0.569629, 0.715732, - 0.295949, 0.539522, 0.608124, 0.741307, - 0.292259, 0.521613, 0.646231, 0.764949, - 0.287063, 0.49969, 0.684938, 0.788599, - 0.28012, 0.476747, 0.723548, 0.81048, - 0.27153, 0.45116, 0.761135, 0.831372, - 0.261289, 0.424101, 0.798916, 0.850092, - 0.249559, 0.39443, 0.835952, 0.867777, - 0.236348, 0.363849, 0.871606, 0.884632, - 0.221569, 0.332477, 0.907843, 0.90047, - 0.20618, 0.300667, 0.944187, 0.914524, - 0.188771, 0.266552, 0.981371, 0.926892, - 0.168362, 0.232349, 1.01841, 0.937951, - 0.146761, 0.199359, 1.05308, 0.947236, - 0.123813, 0.1675, 1.0839, 0.954367, - 0.099984, 0.136166, 1.11047, 0.963907, - 0.0759278, 0.103808, 1.13414, 0.976218, - 0.0511367, 0.0697061, 1.15575, 0.988772, - 0.0267415, 0.0352529, 1.17531, 0.999888, - 0.000520778, 0.000289926, 1.19389, 0.263546, - 8.83274e-06, 0.441896, 5.26783e-06, 0.262352, - 0.000221849, 0.439889, 0.000132311, 0.262325, - 0.000886683, 0.439848, 0.000528824, 0.26228, - 0.00199476, 0.439765, 0.00118975, 0.262372, - 0.00354671, 0.439922, 0.00211568, 0.26239, - 0.00554141, 0.439941, 0.00330652, 0.262412, - 0.00797888, 0.439961, 0.00476346, 0.262453, - 0.0108584, 0.440002, 0.00648818, 0.262528, - 0.0141788, 0.440085, 0.0084835, 0.262615, - 0.017938, 0.440166, 0.0107533, 0.262744, - 0.0221346, 0.440291, 0.0133044, 0.262939, - 0.026762, 0.440493, 0.0161445, 0.263277, - 0.0317573, 0.440889, 0.0192974, 0.26368, - 0.0371832, 0.441338, 0.0227699, 0.264106, - 0.0430371, 0.441753, 0.0265698, 0.264624, - 0.0493035, 0.442227, 0.0307178, 0.265378, - 0.0558669, 0.442985, 0.0352616, 0.266253, - 0.0628718, 0.443795, 0.0401968, 0.267478, - 0.0701569, 0.445008, 0.04559, 0.269062, - 0.077845, 0.446599, 0.0514539, 0.270926, - 0.0857941, 0.448349, 0.0578382, 0.273693, - 0.0940773, 0.451221, 0.0648363, 0.276746, - 0.102704, 0.454097, 0.0724389, 0.281693, - 0.111735, 0.459517, 0.0808744, 0.287335, - 0.121004, 0.46531, 0.0901551, 0.29448, - 0.130734, 0.472605, 0.100371, 0.30257, - 0.140777, 0.480251, 0.111644, 0.312465, - 0.15111, 0.489444, 0.124111, 0.324856, - 0.16189, 0.500919, 0.137979, 0.33774, - 0.172946, 0.511317, 0.153163, 0.35255, - 0.184152, 0.522684, 0.169817, 0.367786, - 0.19522, 0.53248, 0.187886, 0.385474, - 0.20632, 0.543326, 0.207634, 0.404976, - 0.217744, 0.554109, 0.229165, 0.425203, - 0.228691, 0.563395, 0.252068, 0.446704, - 0.239299, 0.571565, 0.276471, 0.468951, - 0.249348, 0.577935, 0.302323, 0.493487, - 0.258933, 0.584309, 0.329882, 0.517861, - 0.268009, 0.58773, 0.358525, 0.543309, - 0.276238, 0.589612, 0.388585, 0.569704, - 0.28356, 0.589294, 0.419787, 0.594871, - 0.289497, 0.585137, 0.452114, 0.622555, - 0.294452, 0.580356, 0.486466, 0.651167, - 0.296918, 0.57185, 0.523079, 0.677332, - 0.297647, 0.558428, 0.5611, 0.703718, - 0.296321, 0.542232, 0.599592, 0.730262, - 0.293339, 0.524541, 0.639138, 0.754304, - 0.288036, 0.502691, 0.677978, 0.778051, - 0.281018, 0.479212, 0.716537, 0.801557, - 0.272414, 0.454071, 0.75586, 0.822559, - 0.262419, 0.425952, 0.794477, 0.843051, - 0.250702, 0.397313, 0.832664, 0.86232, - 0.237264, 0.366534, 0.869876, 0.879044, - 0.222716, 0.334816, 0.906973, 0.896362, - 0.206827, 0.303143, 0.943558, 0.910342, - 0.189659, 0.269699, 0.979759, 0.924119, - 0.171108, 0.236411, 1.01718, 0.935374, - 0.149579, 0.202224, 1.05289, 0.944295, - 0.126295, 0.16989, 1.08496, 0.952227, - 0.101511, 0.138089, 1.11256, 0.962041, - 0.0766392, 0.105053, 1.1375, 0.97528, - 0.0511967, 0.070329, 1.15983, 0.988476, - 0.025463, 0.0351268, 1.17987, 0.999962, 2.86808e-05, 1.45564e-05, 1.19901, 0.227089, - 8.41413e-06, 0.404216, 4.72707e-06, 0.239725, - 0.000215083, 0.426708, 0.000120833, 0.239904, - 0.000860718, 0.427028, 0.000483555, 0.239911, - 0.00193661, 0.427039, 0.00108806, 0.239914, - 0.00344276, 0.42704, 0.00193457, 0.239933, - 0.00537907, 0.427064, 0.00302363, 0.239944, - 0.00774482, 0.427065, 0.00435604, 0.239993, - 0.01054, 0.427122, 0.00593398, 0.240052, - 0.0137626, 0.427179, 0.00775987, 0.240148, - 0.0174115, 0.427279, 0.00983854, 0.240278, - 0.021484, 0.42741, 0.0121763, 0.240472, - 0.0259729, 0.427618, 0.0147827, 0.240839, - 0.0308131, 0.428086, 0.0176837, 0.241201, - 0.0360893, 0.428482, 0.0208775, 0.241626, - 0.0417723, 0.428907, 0.0243821, 0.242207, - 0.0478337, 0.42952, 0.0282228, 0.24298, - 0.0542199, 0.430332, 0.0324333, 0.243881, - 0.0610015, 0.431222, 0.0370252, 0.245123, - 0.0680874, 0.432512, 0.0420535, 0.24667, - 0.0755482, 0.434088, 0.0475414, 0.248779, - 0.0832873, 0.436323, 0.0535542, 0.251665, - 0.0913546, 0.439509, 0.0601716, 0.255305, - 0.0998489, 0.443478, 0.0674282, 0.260049, - 0.108576, 0.448713, 0.0754673, 0.266192, - 0.117754, 0.455524, 0.084339, 0.273158, - 0.127294, 0.4627, 0.0941683, 0.282131, - 0.137311, 0.472068, 0.10515, 0.293332, - 0.147736, 0.483565, 0.117402, 0.304667, - 0.158357, 0.493702, 0.130824, 0.317785, - 0.169274, 0.504708, 0.145724, 0.333245, - 0.180595, 0.517107, 0.16215, 0.349843, - 0.191892, 0.528849, 0.180149, 0.367944, - 0.203168, 0.540301, 0.199746, 0.387579, - 0.214443, 0.551514, 0.221047, 0.408247, - 0.225624, 0.560906, 0.243981, 0.43014, - 0.236422, 0.56959, 0.268513, 0.452669, - 0.24654, 0.576098, 0.294409, 0.476196, - 0.256157, 0.580925, 0.322002, 0.501157, - 0.265289, 0.584839, 0.351052, 0.527632, - 0.273671, 0.587614, 0.3812, 0.555754, - 0.281254, 0.589119, 0.412994, 0.581682, - 0.287448, 0.585204, 0.445498, 0.608196, - 0.292614, 0.579006, 0.479505, 0.635661, - 0.296068, 0.571297, 0.514643, 0.664999, - 0.297395, 0.560855, 0.552213, 0.691039, - 0.296645, 0.544525, 0.591365, 0.7179, - 0.293785, 0.526535, 0.630883, 0.744059, - 0.289089, 0.50545, 0.670932, 0.76863, - 0.282239, 0.482514, 0.710904, 0.793273, - 0.273688, 0.457246, 0.750259, 0.814731, - 0.26328, 0.428872, 0.78948, 0.835603, - 0.251526, 0.399384, 0.828597, 0.85489, - 0.238339, 0.368811, 0.866892, 0.872828, - 0.223607, 0.336617, 0.90563, 0.889462, - 0.207538, 0.303997, 0.943538, 0.904929, - 0.190297, 0.270812, 0.980591, 0.919101, - 0.172034, 0.237453, 1.01935, 0.930536, - 0.152058, 0.204431, 1.05498, 0.941223, - 0.129515, 0.172495, 1.08717, 0.94982, - 0.104263, 0.140175, 1.11551, 0.960592, - 0.0781944, 0.106465, 1.14098, 0.974629, - 0.051688, 0.0711592, 1.16418, 0.98811, - 0.0253929, 0.0354432, 1.18465, 1.00004, 0.000804378, - 0.000330876, 1.20462, 0.214668, - 8.21282e-06, 0.406619, 4.33582e-06, 0.218053, - 0.000208144, 0.413025, 0.000109887, 0.217987, - 0.000832212, 0.412901, 0.000439362, 0.217971, - 0.00187246, 0.412876, 0.000988623, 0.217968, - 0.00332855, 0.41286, 0.00175772, 0.217985, - 0.00520055, 0.412882, 0.00274729, 0.218014, - 0.00748814, 0.412916, 0.00395842, 0.218054, - 0.0101901, 0.412957, 0.00539274, 0.218106, - 0.0133057, 0.413005, 0.00705348, 0.218217, - 0.0168342, 0.413139, 0.00894581, 0.218338, - 0.0207707, 0.413258, 0.0110754, 0.21855, - 0.0251001, 0.413509, 0.0134551, 0.218913, - 0.0297861, 0.413992, 0.0161081, 0.219265, - 0.0348956, 0.414383, 0.0190307, 0.219696, - 0.0403909, 0.414839, 0.0222458, 0.220329, - 0.0462003, 0.415567, 0.025792, 0.220989, - 0.0524208, 0.41621, 0.0296637, 0.222027, - 0.058948, 0.417385, 0.0339323, 0.223301, - 0.0658208, 0.418779, 0.0386055, 0.224988, - 0.0730347, 0.420665, 0.0437355, 0.227211, - 0.0805274, 0.423198, 0.0493844, 0.230131, - 0.088395, 0.426566, 0.0556135, 0.233908, - 0.0966208, 0.43091, 0.0624829, 0.239092, - 0.105223, 0.437148, 0.0701636, 0.245315, - 0.11424, 0.444302, 0.0786949, 0.253166, - 0.12368, 0.453262, 0.0882382, 0.262374, - 0.133569, 0.463211, 0.0988682, 0.273145, - 0.143836, 0.474271, 0.110727, 0.285512, - 0.154577, 0.4863, 0.123945, 0.299512, - 0.165501, 0.498817, 0.138581, 0.314287, - 0.176698, 0.510341, 0.154676, 0.331083, - 0.188066, 0.522583, 0.172459, 0.349615, - 0.199597, 0.534879, 0.191979, 0.369318, - 0.210843, 0.546083, 0.21309, 0.390377, - 0.222068, 0.5562, 0.235998, 0.412411, - 0.233059, 0.564704, 0.260518, 0.435715, - 0.24357, 0.572314, 0.286795, 0.461196, - 0.253356, 0.579395, 0.314559, 0.485587, - 0.262362, 0.581985, 0.343581, 0.511908, - 0.270895, 0.584347, 0.374367, 0.539798, - 0.278452, 0.58505, 0.406015, 0.567974, - 0.284877, 0.583344, 0.439168, 0.594303, - 0.290124, 0.577348, 0.473005, 0.622951, - 0.294183, 0.570751, 0.508534, 0.652404, - 0.296389, 0.561541, 0.544764, 0.679291, - 0.296605, 0.546426, 0.582927, 0.706437, - 0.294095, 0.528599, 0.622681, 0.734485, - 0.28978, 0.508676, 0.663567, 0.758841, - 0.283363, 0.484768, 0.704092, 0.78537, - 0.275015, 0.460434, 0.745101, 0.807315, - 0.264689, 0.432166, 0.784712, 0.8271, - 0.252597, 0.401807, 0.824241, 0.849191, - 0.239154, 0.371458, 0.863803, 0.867046, - 0.224451, 0.338873, 0.903063, 0.8852, - 0.208342, 0.306175, 0.942763, 0.901771, - 0.190684, 0.272759, 0.981559, 0.915958, - 0.172105, 0.239306, 1.02048, 0.928046, - 0.152214, 0.206071, 1.05765, 0.939961, - 0.130247, 0.17367, 1.08999, 0.948711, - 0.10672, 0.142201, 1.11829, 0.959305, - 0.0808688, 0.108454, 1.14467, 0.973009, - 0.0539145, 0.0728109, 1.16839, 0.987631, - 0.0262947, 0.0360625, 1.19004, 0.999978, 0.00132758, - 0.000559424, 1.21058, 0.193925, - 7.93421e-06, 0.391974, 3.92537e-06, 0.196746, - 0.000200315, 0.397675, 9.91033e-05, 0.19667, - 0.000801099, 0.397521, 0.000396342, 0.196633, - 0.00180246, 0.397445, 0.000891829, 0.196654, - 0.00320443, 0.397482, 0.00158582, 0.196659, - 0.00500647, 0.39748, 0.00247867, 0.196683, - 0.0072086, 0.397506, 0.00357167, 0.196728, - 0.00981001, 0.397562, 0.00486675, 0.196792, - 0.0128096, 0.397633, 0.00636707, 0.19689, - 0.0162055, 0.397746, 0.00807752, 0.197017, - 0.0199943, 0.397884, 0.0100052, 0.19729, - 0.024139, 0.39827, 0.0121691, 0.197583, - 0.0286671, 0.398639, 0.0145755, 0.197927, - 0.0335858, 0.399034, 0.0172355, 0.198383, - 0.0388806, 0.399554, 0.0201718, 0.199002, - 0.0444736, 0.400289, 0.0234194, 0.199739, - 0.0504583, 0.401111, 0.026984, 0.200784, - 0.056729, 0.402349, 0.0309217, 0.202075, - 0.0633643, 0.403841, 0.0352496, 0.203898, - 0.0703247, 0.406076, 0.0400313, 0.206199, - 0.0775565, 0.408841, 0.0453282, 0.209252, - 0.085184, 0.41259, 0.0511794, 0.213638, - 0.0931994, 0.418288, 0.0577459, 0.21881, - 0.101617, 0.424681, 0.0650508, 0.225642, - 0.11052, 0.433429, 0.0732759, 0.233717, - 0.119772, 0.442897, 0.0824683, 0.242823, - 0.129505, 0.452888, 0.0927484, 0.254772, - 0.139906, 0.466407, 0.104417, 0.266603, - 0.150402, 0.477413, 0.117211, 0.28073, - 0.161395, 0.490519, 0.131598, 0.295399, - 0.172465, 0.50201, 0.147407, 0.312705, - 0.183982, 0.515311, 0.165031, 0.331335, - 0.195532, 0.52786, 0.184336, 0.351037, - 0.206971, 0.5392, 0.205361, 0.372175, - 0.218117, 0.54941, 0.228043, 0.394548, - 0.229327, 0.558642, 0.25267, 0.419598, - 0.240052, 0.567861, 0.279071, 0.443922, - 0.249937, 0.573332, 0.306882, 0.471495, - 0.259407, 0.58013, 0.33661, 0.496769, - 0.267749, 0.580564, 0.367328, 0.524951, - 0.275524, 0.581696, 0.399753, 0.55318, - 0.282148, 0.579885, 0.433134, 0.581577, - 0.287533, 0.575471, 0.467534, 0.609231, - 0.291612, 0.567445, 0.502943, 0.637478, - 0.293911, 0.557657, 0.53871, 0.667795, - 0.295096, 0.546535, 0.576568, 0.694272, - 0.294073, 0.529561, 0.614929, 0.722937, - 0.290386, 0.510561, 0.655909, 0.749682, - 0.284481, 0.487846, 0.697663, 0.774754, - 0.276188, 0.462487, 0.738515, 0.799301, - 0.266215, 0.43481, 0.779802, 0.820762, - 0.254116, 0.404879, 0.820045, 0.843231, - 0.240393, 0.374559, 0.860294, 0.861857, - 0.225503, 0.341582, 0.900965, 0.880815, - 0.209382, 0.308778, 0.941727, 0.89766, - 0.19155, 0.275232, 0.980916, 0.912926, - 0.172346, 0.240938, 1.02162, 0.926391, - 0.151799, 0.207223, 1.0597, 0.938429, - 0.129968, 0.17484, 1.09291, 0.947834, - 0.10651, 0.142984, 1.12248, 0.958432, - 0.0824098, 0.109902, 1.149, 0.972402, - 0.0565242, 0.0744454, 1.1733, 0.987191, - 0.028427, 0.0373794, 1.19538, 0.999975, 3.85685e-05, - 4.203e-05, 1.21676, 0.178114, - 7.66075e-06, 0.385418, 3.54027e-06, 0.176074, - 0.000191966, 0.381002, 8.87135e-05, 0.17601, - 0.000767549, 0.380861, 0.000354715, 0.17598, - 0.00172696, 0.380798, 0.000798168, 0.175994, - 0.00307012, 0.380824, 0.00141928, 0.176017, - 0.00479684, 0.380858, 0.00221859, 0.176019, - 0.00690648, 0.380839, 0.00319714, 0.176072, - 0.00939888, 0.380913, 0.0043572, 0.176131, - 0.0122726, 0.380979, 0.005702, 0.176239, - 0.0155264, 0.38112, 0.00723689, 0.176371, - 0.0191551, 0.381272, 0.00896907, 0.176638, - 0.023117, 0.381669, 0.0109194, 0.176912, - 0.0274633, 0.382015, 0.0130903, 0.177279, - 0.032173, 0.382476, 0.0154949, 0.17774, - 0.0372219, 0.383041, 0.0181669, 0.178344, - 0.0426132, 0.38378, 0.0211209, 0.179153, - 0.0483309, 0.384773, 0.0243899, 0.180197, - 0.0543447, 0.386076, 0.0280062, 0.181581, - 0.0607122, 0.387809, 0.032004, 0.18344, - 0.0673855, 0.390205, 0.036453, 0.186139, - 0.0743989, 0.393944, 0.0414162, 0.189432, - 0.0817731, 0.39832, 0.0469394, 0.193795, - 0.0895464, 0.404188, 0.0531442, 0.199641, - 0.0978264, 0.4121, 0.0601374, 0.206679, - 0.106499, 0.421425, 0.0680078, 0.214865, - 0.115654, 0.431504, 0.076919, 0.224406, - 0.125268, 0.442526, 0.0868835, 0.235876, - 0.135475, 0.455465, 0.0981875, 0.248335, - 0.146023, 0.4681, 0.110759, 0.262868, - 0.157016, 0.482069, 0.124885, 0.278962, - 0.168245, 0.496182, 0.140645, 0.295082, - 0.17958, 0.507401, 0.157838, 0.313738, - 0.191227, 0.520252, 0.17695, 0.333573, - 0.202718, 0.531708, 0.197817, 0.356433, - 0.214424, 0.544509, 0.220785, 0.378853, - 0.225492, 0.55373, 0.245306, 0.402717, - 0.236236, 0.561348, 0.271593, 0.428375, - 0.246568, 0.568538, 0.299776, 0.454724, - 0.255941, 0.573462, 0.329433, 0.482291, - 0.264511, 0.576356, 0.360598, 0.509706, - 0.272129, 0.576446, 0.393204, 0.538805, - 0.278979, 0.575298, 0.427227, 0.568919, - 0.284528, 0.572154, 0.462157, 0.596804, - 0.288801, 0.564691, 0.497997, 0.625987, - 0.291334, 0.555134, 0.534467, 0.656414, - 0.292722, 0.545051, 0.571736, 0.683916, - 0.292185, 0.528813, 0.610158, 0.711809, - 0.290043, 0.51106, 0.649061, 0.739547, - 0.285246, 0.490103, 0.690081, 0.766914, - 0.277647, 0.465523, 0.732554, 0.791375, - 0.267603, 0.437718, 0.773982, 0.814772, - 0.256109, 0.40882, 0.81609, 0.836691, - 0.242281, 0.377823, 0.856849, 0.856984, - 0.227155, 0.34496, 0.898363, 0.876332, - 0.210395, 0.311335, 0.939471, 0.894988, - 0.192612, 0.277703, 0.980799, 0.911113, - 0.173236, 0.243019, 1.02215, 0.924092, - 0.152258, 0.209037, 1.06139, 0.936828, - 0.129575, 0.175909, 1.09635, 0.946869, - 0.10594, 0.143852, 1.12707, 0.958284, - 0.081318, 0.110289, 1.15419, 0.972325, - 0.0556133, 0.0747232, 1.17909, 0.986878, - 0.0297899, 0.0383149, 1.20163, 0.999936, - 0.00197169, 0.000912402, 1.22338, 0.151174, - 7.20365e-06, 0.351531, 3.09789e-06, 0.155594, - 0.00018279, 0.361806, 7.8608e-05, 0.156099, - 0.000731569, 0.362982, 0.000314615, 0.156053, - 0.00164578, 0.362869, 0.000707845, 0.156093, - 0.0029261, 0.362961, 0.00125884, 0.156099, - 0.00457155, 0.362959, 0.00196783, 0.15612, - 0.00658224, 0.362982, 0.00283622, 0.156168, - 0.00895774, 0.363048, 0.00386625, 0.156221, - 0.0116962, 0.363101, 0.00506109, 0.156324, - 0.0147973, 0.363241, 0.00642675, 0.156476, - 0.0182503, 0.363448, 0.00797175, 0.156731, - 0.0220266, 0.36384, 0.00971484, 0.156994, - 0.026176, 0.364179, 0.0116575, 0.157341, - 0.0306701, 0.36462, 0.0138207, 0.157867, - 0.0354591, 0.365364, 0.0162356, 0.15846, - 0.0406141, 0.366111, 0.0189092, 0.159308, - 0.0460519, 0.367248, 0.021885, 0.160426, - 0.0518096, 0.368767, 0.0252004, 0.161877, - 0.0578906, 0.370745, 0.0288825, 0.163995, - 0.0642812, 0.373831, 0.0330139, 0.16655, - 0.0710067, 0.377366, 0.0376283, 0.170237, - 0.0781522, 0.382799, 0.0428493, 0.175096, - 0.0857172, 0.389915, 0.0487324, 0.181069, - 0.0938025, 0.398487, 0.0554214, 0.188487, - 0.102363, 0.408799, 0.0630189, 0.197029, - 0.111343, 0.419991, 0.071634, 0.206684, - 0.120812, 0.431455, 0.0812797, 0.218698, - 0.131033, 0.445746, 0.0923651, 0.230726, - 0.141373, 0.457471, 0.104545, 0.245516, - 0.152387, 0.472388, 0.118449, 0.261551, - 0.163628, 0.486671, 0.133923, 0.277437, - 0.174814, 0.49762, 0.150849, 0.296662, - 0.186713, 0.51162, 0.169924, 0.31795, - 0.198513, 0.525435, 0.190848, 0.339422, - 0.210119, 0.536267, 0.213504, 0.362143, - 0.221354, 0.545982, 0.237947, 0.387198, - 0.23224, 0.555364, 0.264427, 0.412349, - 0.24257, 0.561489, 0.292519, 0.439274, - 0.252284, 0.566903, 0.322561, 0.466779, - 0.261023, 0.569614, 0.353952, 0.496011, - 0.26899, 0.571589, 0.387278, 0.524964, - 0.275498, 0.570325, 0.421356, 0.556518, - 0.281449, 0.568792, 0.457314, 0.584363, - 0.285526, 0.560268, 0.493199, 0.614214, - 0.28844, 0.55205, 0.530276, 0.645684, - 0.289777, 0.541906, 0.56855, 0.673446, - 0.289722, 0.526464, 0.606927, 0.701924, - 0.287792, 0.509872, 0.645945, 0.73037, - 0.284315, 0.490649, 0.685564, 0.757405, - 0.278804, 0.467964, 0.726511, 0.784025, - 0.269543, 0.441468, 0.768601, 0.808255, - 0.258117, 0.41216, 0.811321, 0.830739, - 0.244728, 0.380606, 0.853496, 0.851914, - 0.229428, 0.348111, 0.895374, 0.872586, - 0.212508, 0.314732, 0.937674, 0.891581, - 0.194025, 0.280338, 0.979869, 0.907641, - 0.174711, 0.245203, 1.02253, 0.922233, - 0.153509, 0.21077, 1.06371, 0.935878, - 0.130418, 0.177399, 1.09972, 0.946338, - 0.105558, 0.144507, 1.13124, 0.957265, - 0.080059, 0.110508, 1.15973, 0.971668, - 0.0539766, 0.0742311, 1.18515, 0.9866, - 0.0277101, 0.0375224, 1.20858, 1.00021, - 0.000515531, 0.000135226, 1.23135, 0.137468, - 6.86011e-06, 0.345041, 2.73315e-06, 0.13703, - 0.000173378, 0.343936, 6.90761e-05, 0.136986, - 0.000693048, 0.34383, 0.000276126, 0.136964, - 0.00155931, 0.343761, 0.000621337, 0.137003, - 0.00277211, 0.343863, 0.00110494, 0.137012, - 0.00433103, 0.343868, 0.00172744, 0.137043, - 0.00623606, 0.343916, 0.00249022, 0.13709, - 0.0084868, 0.343986, 0.00339559, 0.137145, - 0.0110814, 0.344045, 0.00444687, 0.137242, - 0.0140187, 0.344177, 0.00565007, 0.137431, - 0.0172713, 0.344491, 0.00701868, 0.137644, - 0.0208605, 0.344805, 0.00856042, 0.13791, - 0.024792, 0.345172, 0.0102863, 0.138295, - 0.0290461, 0.345734, 0.0122185, 0.138764, - 0.0335957, 0.346371, 0.0143771, 0.139415, - 0.038467, 0.347298, 0.0167894, 0.140272, - 0.0436176, 0.348527, 0.0194895, 0.141457, - 0.0491016, 0.350276, 0.0225043, 0.14303, - 0.0548764, 0.352646, 0.0258962, 0.145289, - 0.0610096, 0.356206, 0.0297168, 0.148502, - 0.0674777, 0.361488, 0.0340562, 0.152188, - 0.074345, 0.367103, 0.0389534, 0.157359, - 0.0817442, 0.375247, 0.0445541, 0.16379, - 0.0896334, 0.385064, 0.0509535, 0.171376, - 0.098005, 0.396082, 0.0582611, 0.179901, - 0.106817, 0.407418, 0.06654, 0.189892, - 0.116239, 0.420031, 0.075994, 0.201838, - 0.12627, 0.434321, 0.0867239, 0.214311, - 0.136701, 0.447631, 0.0987517, 0.228902, - 0.147616, 0.462046, 0.112353, 0.245107, - 0.158871, 0.476942, 0.127605, 0.262292, - 0.170261, 0.490285, 0.144469, 0.281215, - 0.182017, 0.503783, 0.163282, 0.301058, - 0.193729, 0.515505, 0.183873, 0.322752, - 0.205512, 0.52682, 0.206466, 0.347547, - 0.217214, 0.539473, 0.231194, 0.370969, - 0.227966, 0.546625, 0.257288, 0.397533, - 0.238555, 0.55472, 0.285789, 0.42398, - 0.248278, 0.559468, 0.315746, 0.452928, - 0.257422, 0.564095, 0.347724, 0.482121, - 0.265306, 0.565426, 0.380922, 0.510438, - 0.272043, 0.563205, 0.415639, 0.541188, - 0.277614, 0.561087, 0.451702, 0.571667, - 0.281927, 0.554922, 0.48845, 0.602432, - 0.285015, 0.546838, 0.526442, 0.634126, - 0.286512, 0.537415, 0.564896, 0.662816, - 0.286388, 0.522906, 0.604037, 0.692411, - 0.284734, 0.507003, 0.643795, 0.720946, - 0.281297, 0.488398, 0.68298, 0.748293, - 0.276262, 0.466353, 0.723466, 0.776931, - 0.269978, 0.443573, 0.764565, 0.801065, - 0.260305, 0.415279, 0.805838, 0.825843, - 0.247426, 0.384773, 0.849985, 0.84807, - 0.232437, 0.352555, 0.893174, 0.869122, - 0.215806, 0.318642, 0.936564, 0.888963, - 0.197307, 0.28381, 0.980253, 0.905547, - 0.177203, 0.247888, 1.02463, 0.918554, - 0.155542, 0.212904, 1.06714, 0.931395, - 0.131948, 0.1787, 1.10451, 0.941749, - 0.106723, 0.145902, 1.13694, 0.954551, - 0.0804939, 0.111193, 1.1666, 0.970279, - 0.0534239, 0.0744697, 1.19249, 0.986117, - 0.0257452, 0.0368788, 1.21665, 0.999938, 0.00190634, - 0.0010291, 1.23981, 0.118493, - 6.47439e-06, 0.32272, 2.3772e-06, 0.118765, - 0.000163023, 0.323456, 5.98573e-05, 0.118772, - 0.00065212, 0.323477, 0.000239447, 0.118843, - 0.00146741, 0.323657, 0.000538881, 0.118804, - 0.00260846, 0.323553, 0.00095826, 0.118826, - 0.00407576, 0.323595, 0.00149845, 0.118846, - 0.00586826, 0.323617, 0.00216047, 0.118886, - 0.00798578, 0.32367, 0.00294679, 0.118947, - 0.0104273, 0.323753, 0.00386124, 0.119055, - 0.0131909, 0.323922, 0.00490999, 0.119241, - 0.0162444, 0.324251, 0.00610804, 0.11944, - 0.0196339, 0.324544, 0.00745805, 0.119739, - 0.0233378, 0.325026, 0.00897805, 0.12011, - 0.0273179, 0.325586, 0.0106895, 0.120571, - 0.0316143, 0.326231, 0.0126073, 0.12124, - 0.0361939, 0.327264, 0.0147654, 0.122162, - 0.0410511, 0.328733, 0.0172001, 0.123378, - 0.0462233, 0.330659, 0.0199375, 0.125183, - 0.0517109, 0.333754, 0.0230498, 0.127832, - 0.0575652, 0.338507, 0.026597, 0.130909, - 0.0637441, 0.343666, 0.0306345, 0.135221, - 0.0704302, 0.351063, 0.035273, 0.14082, - 0.0776364, 0.360604, 0.0406137, 0.146781, - 0.0852293, 0.369638, 0.0466788, 0.155121, - 0.0935351, 0.3827, 0.0537628, 0.16398, - 0.102234, 0.39522, 0.0617985, 0.173926, - 0.111465, 0.40793, 0.07097, 0.185137, - 0.121296, 0.42105, 0.0813426, 0.19826, - 0.13169, 0.435735, 0.0931596, 0.212938, - 0.142614, 0.450932, 0.106547, 0.229046, - 0.153884, 0.465726, 0.121575, 0.246246, - 0.165382, 0.479461, 0.138286, 0.264637, - 0.176806, 0.492106, 0.15666, 0.284959, - 0.188793, 0.504774, 0.17728, 0.308157, - 0.200763, 0.518805, 0.19988, 0.330951, - 0.21239, 0.528231, 0.224293, 0.3549, - 0.223521, 0.536376, 0.250541, 0.381502, - 0.234169, 0.544846, 0.278902, 0.409529, - 0.244077, 0.551717, 0.309227, 0.437523, - 0.253363, 0.55517, 0.341426, 0.467624, - 0.261659, 0.557772, 0.37518, 0.497268, - 0.268498, 0.556442, 0.41007, 0.528294, - 0.274018, 0.553915, 0.446445, 0.559053, - 0.278169, 0.549153, 0.483779, 0.589329, - 0.281229, 0.539878, 0.522249, 0.622503, - 0.282902, 0.53162, 0.561754, 0.652382, - 0.282815, 0.518119, 0.601544, 0.681847, - 0.281247, 0.502187, 0.641574, 0.712285, - 0.277986, 0.484824, 0.682633, 0.740094, - 0.273017, 0.463483, 0.723426, 0.768478, - 0.266692, 0.441299, 0.763747, 0.794556, - 0.258358, 0.415238, 0.805565, 0.819408, - 0.248807, 0.386912, 0.847254, 0.843411, - 0.236214, 0.356165, 0.891091, 0.862397, - 0.219794, 0.320562, 0.936174, 0.883113, - 0.201768, 0.285322, 0.982562, 0.90023, - 0.181672, 0.249713, 1.02862, 0.915192, - 0.159279, 0.214546, 1.07163, 0.928458, - 0.134725, 0.180285, 1.10995, 0.94069, - 0.10913, 0.147119, 1.14354, 0.953409, - 0.0821315, 0.112492, 1.17372, 0.969537, - 0.0542677, 0.0752014, 1.20043, 0.985612, - 0.0259096, 0.0370361, 1.22528, 0.999835, 0.00298198, - 0.00151801, 1.24959, 0.10097, - 6.02574e-06, 0.300277, 2.02619e-06, 0.101577, - 0.000152164, 0.302077, 5.11662e-05, 0.101572, - 0.000608889, 0.302066, 0.000204751, 0.101566, - 0.00136997, 0.302047, 0.000460753, 0.101592, - 0.00243557, 0.302114, 0.000819497, 0.101608, - 0.0038053, 0.30214, 0.00128154, 0.101627, - 0.00547906, 0.30216, 0.0018483, 0.101669, - 0.00745647, 0.302224, 0.00252223, 0.101732, - 0.00973615, 0.302318, 0.00330716, 0.101844, - 0.0123097, 0.302513, 0.00421061, 0.102025, - 0.0151681, 0.30285, 0.00524481, 0.102224, - 0.0183334, 0.303166, 0.0064154, 0.102515, - 0.0217819, 0.303654, 0.00774063, 0.102886, - 0.0255067, 0.304243, 0.0092398, 0.103395, - 0.029514, 0.305089, 0.0109339, 0.104109, - 0.0337912, 0.306301, 0.0128561, 0.105074, - 0.0383565, 0.30798, 0.0150338, 0.10654, - 0.0432132, 0.310726, 0.0175228, 0.108478, - 0.0484244, 0.314351, 0.0203648, 0.111015, - 0.0539339, 0.319032, 0.0236325, 0.114682, - 0.0598885, 0.32605, 0.0274188, 0.11911, - 0.0663375, 0.334109, 0.0317905, 0.124736, - 0.0733011, 0.344013, 0.0368502, 0.131479, - 0.0807744, 0.355358, 0.0427104, 0.139283, - 0.0888204, 0.367614, 0.0494788, 0.148054, - 0.0973394, 0.380072, 0.0572367, 0.159037, - 0.10665, 0.395678, 0.0662704, 0.169794, - 0.116221, 0.40795, 0.0763192, 0.18314, - 0.126632, 0.423546, 0.087956, 0.197515, - 0.137383, 0.438213, 0.101042, 0.213514, - 0.148641, 0.453248, 0.115827, 0.23065, - 0.160117, 0.46688, 0.132283, 0.249148, - 0.171807, 0.479962, 0.150644, 0.270219, - 0.183695, 0.494618, 0.171073, 0.292338, - 0.195574, 0.506937, 0.193378, 0.314999, - 0.207205, 0.516463, 0.217585, 0.340991, - 0.218955, 0.528123, 0.24428, 0.367982, - 0.229917, 0.537025, 0.272784, 0.39432, - 0.239737, 0.541627, 0.302742, 0.423364, - 0.249048, 0.546466, 0.335112, 0.453751, - 0.257329, 0.549466, 0.369032, 0.48416, - 0.264623, 0.549503, 0.404577, 0.515262, - 0.270411, 0.547008, 0.441337, 0.547036, - 0.274581, 0.542249, 0.479162, 0.576614, - 0.277266, 0.533015, 0.517904, 0.611143, - 0.279144, 0.525512, 0.558508, 0.640989, - 0.279001, 0.51154, 0.598995, 0.671182, - 0.277324, 0.495641, 0.639935, 0.700848, - 0.273908, 0.477526, 0.681017, 0.729862, - 0.269063, 0.457955, 0.722764, 0.758273, - 0.262282, 0.434846, 0.764349, 0.784121, - 0.254281, 0.409203, 0.806206, 0.809798, - 0.24505, 0.382694, 0.848617, 0.834953, - 0.233861, 0.354034, 0.892445, 0.856817, - 0.221308, 0.321764, 0.936263, 0.877609, - 0.205996, 0.288118, 0.982401, 0.897489, - 0.186702, 0.253277, 1.02975, 0.913792, - 0.164618, 0.217963, 1.07488, 0.92785, - 0.140023, 0.183221, 1.11487, 0.940378, - 0.11328, 0.149385, 1.14947, 0.95273, - 0.0853958, 0.114152, 1.1807, 0.969059, - 0.0568698, 0.0769845, 1.20912, 0.985574, - 0.0276502, 0.0381186, 1.23498, 0.999943, 0.00239052, - 0.00126861, 1.25987, 0.0852715, - 5.60067e-06, 0.279021, 1.71162e-06, 0.0854143, - 0.000140871, 0.279483, 4.30516e-05, 0.0854191, - 0.000563385, 0.2795, 0.000172184, 0.0854188, - 0.00126753, 0.279493, 0.000387464, 0.0854229, - 0.00225337, 0.279501, 0.00068918, 0.0854443, - 0.00352086, 0.279549, 0.00107803, 0.0854697, - 0.00506962, 0.279591, 0.00155536, 0.0855093, - 0.00689873, 0.279652, 0.00212354, 0.0855724, - 0.00900821, 0.279752, 0.00278703, 0.0856991, - 0.0113799, 0.280011, 0.0035551, 0.085855, - 0.0140314, 0.280297, 0.00443449, 0.0860682, - 0.016963, 0.280682, 0.00543636, 0.086344, - 0.0201438, 0.281159, 0.0065788, 0.0867426, - 0.0235999, 0.281886, 0.00787977, 0.087239, - 0.0273069, 0.282745, 0.0093606, 0.0879815, - 0.031269, 0.284139, 0.011056, 0.0891258, - 0.035531, 0.28647, 0.0130065, 0.0906909, - 0.0400947, 0.289708, 0.0152495, 0.0927624, - 0.0449638, 0.293904, 0.0178454, 0.0958376, - 0.0502427, 0.300471, 0.0208915, 0.0995827, - 0.0559514, 0.30806, 0.0244247, 0.104526, - 0.0622152, 0.317874, 0.0285721, 0.110532, - 0.0690046, 0.329332, 0.0334227, 0.117385, - 0.0763068, 0.341217, 0.0390466, 0.12522, - 0.084184, 0.353968, 0.0455786, 0.134037, - 0.0925248, 0.366797, 0.0530773, 0.144014, - 0.101487, 0.380209, 0.0617424, 0.156013, - 0.111273, 0.395956, 0.071777, 0.168872, - 0.121431, 0.41053, 0.0830905, 0.183089, - 0.132105, 0.425073, 0.0959341, 0.198763, - 0.143286, 0.439833, 0.110448, 0.216159, - 0.154841, 0.454507, 0.126769, 0.234859, - 0.166588, 0.468368, 0.14495, 0.255879, - 0.178626, 0.482846, 0.165233, 0.27677, - 0.190218, 0.493489, 0.187217, 0.301184, - 0.202227, 0.506549, 0.211659, 0.325852, - 0.213764, 0.5158, 0.237922, 0.352824, - 0.22487, 0.525442, 0.26632, 0.380882, - 0.235246, 0.532487, 0.296691, 0.410137, - 0.244847, 0.537703, 0.329179, 0.439787, - 0.253122, 0.540361, 0.363135, 0.472291, - 0.260517, 0.542734, 0.399222, 0.501856, - 0.266519, 0.538826, 0.436352, 0.534816, - 0.270905, 0.535152, 0.474505, 0.565069, - 0.273826, 0.525979, 0.513988, 0.597154, - 0.275333, 0.516394, 0.554852, 0.630473, - 0.275314, 0.506206, 0.596592, 0.660574, - 0.273323, 0.489769, 0.638117, 0.692015, - 0.270008, 0.472578, 0.680457, 0.720647, - 0.265001, 0.452134, 0.723008, 0.750528, - 0.258311, 0.430344, 0.765954, 0.777568, - 0.250046, 0.405624, 0.809012, 0.80387, - 0.240114, 0.378339, 0.852425, 0.828439, - 0.228737, 0.349877, 0.895346, 0.851472, - 0.216632, 0.318968, 0.940695, 0.873906, - 0.202782, 0.287489, 0.987235, 0.89467, - 0.187059, 0.254394, 1.03348, 0.912281, - 0.168818, 0.221294, 1.07812, 0.927358, - 0.146494, 0.18675, 1.11928, 0.940385, - 0.120009, 0.152322, 1.15609, 0.952672, - 0.0917183, 0.117514, 1.18875, 0.968496, - 0.0620321, 0.0797405, 1.21821, 0.985236, - 0.0314945, 0.0402383, 1.24523, 0.99998, - 0.000575153, 0.000110644, 1.27133, 0.0702429, - 5.12222e-06, 0.255273, 1.40947e-06, 0.0702981, - 0.000128826, 0.255469, 3.54488e-05, 0.0703691, - 0.000515562, 0.255727, 0.000141874, 0.0703805, - 0.00116, 0.255754, 0.00031929, 0.0703961, - 0.00206224, 0.255813, 0.000567999, 0.0704102, - 0.00322223, 0.255839, 0.00088871, 0.0704298, - 0.00463928, 0.255863, 0.00128272, 0.0704759, - 0.00631375, 0.255953, 0.00175283, 0.0705434, - 0.00824317, 0.256079, 0.00230342, 0.0706693, - 0.010412, 0.25636, 0.0029443, 0.0708189, - 0.0128439, 0.256647, 0.00368031, 0.0710364, - 0.0155177, 0.257084, 0.00452614, 0.0713223, - 0.0184374, 0.257637, 0.00549706, 0.0717182, - 0.0216002, 0.258416, 0.00661246, 0.072321, - 0.0249966, 0.259699, 0.00790147, 0.0731446, - 0.0286566, 0.261475, 0.0093884, 0.0743352, - 0.0325888, 0.264132, 0.0111186, 0.0760676, - 0.036843, 0.26815, 0.013145, 0.078454, - 0.0414292, 0.273636, 0.0155251, 0.0818618, - 0.0464634, 0.281653, 0.0183525, 0.0857382, - 0.0519478, 0.289992, 0.0216642, 0.0908131, - 0.0579836, 0.30066, 0.0255956, 0.0967512, - 0.0645124, 0.312204, 0.0301954, 0.103717, - 0.0716505, 0.325001, 0.0356017, 0.111596, - 0.0793232, 0.338129, 0.041896, 0.120933, - 0.087645, 0.352853, 0.0492447, 0.130787, - 0.096492, 0.366192, 0.0576749, 0.142311, - 0.105973, 0.380864, 0.0673969, 0.155344, - 0.116182, 0.396575, 0.0785899, 0.169535, - 0.126815, 0.411443, 0.0912377, 0.185173, - 0.138015, 0.426256, 0.105607, 0.201755, - 0.149325, 0.439607, 0.121551, 0.221334, - 0.161207, 0.455467, 0.139608, 0.241461, - 0.173162, 0.469096, 0.159591, 0.26294, - 0.18504, 0.481014, 0.18156, 0.286776, - 0.196881, 0.493291, 0.205781, 0.311596, - 0.208311, 0.503556, 0.231819, 0.338667, - 0.219671, 0.513268, 0.260274, 0.366021, - 0.230451, 0.519414, 0.290862, 0.395875, - 0.240131, 0.526766, 0.323196, 0.425564, - 0.248566, 0.52905, 0.357071, 0.457094, - 0.256195, 0.530796, 0.393262, 0.488286, - 0.262331, 0.528703, 0.430797, 0.522291, - 0.267141, 0.52727, 0.470231, 0.554172, - 0.270411, 0.519848, 0.510477, 0.586427, - 0.271986, 0.510307, 0.551594, 0.619638, - 0.27192, 0.499158, 0.593849, 0.650656, - 0.269817, 0.483852, 0.636314, 0.68284, - 0.266267, 0.467515, 0.679679, 0.714356, - 0.26113, 0.44931, 0.723884, 0.742717, - 0.254067, 0.425789, 0.767245, 0.770894, - 0.245652, 0.401144, 0.811819, 0.797358, - 0.235554, 0.374224, 0.856315, 0.823377, - 0.223896, 0.346167, 0.901077, 0.847456, - 0.210865, 0.316056, 0.946502, 0.870697, - 0.196574, 0.284503, 0.993711, 0.891068, - 0.180814, 0.251628, 1.04134, 0.909267, - 0.163314, 0.219065, 1.08609, 0.925653, - 0.143304, 0.186446, 1.12702, 0.940017, - 0.121322, 0.153416, 1.16371, 0.952398, - 0.0973872, 0.120334, 1.19712, 0.967568, - 0.0698785, 0.08352, 1.22791, 0.984772, - 0.0390031, 0.0439209, 1.25672, 1.00026, - 0.0070087, 0.00315668, 1.28428, 0.0556653, - 4.59654e-06, 0.227325, 1.12556e-06, 0.0565238, - 0.000116382, 0.230826, 2.84985e-05, 0.0565717, - 0.000465666, 0.231026, 0.000114036, 0.0565859, - 0.00104773, 0.231079, 0.000256656, 0.0565761, - 0.00186255, 0.231025, 0.00045663, 0.0565913, - 0.00291002, 0.231058, 0.000714664, 0.0566108, - 0.00418998, 0.231085, 0.00103224, 0.0566532, - 0.00570206, 0.231169, 0.00141202, 0.0567473, - 0.00743666, 0.231417, 0.00186018, 0.0568567, - 0.00940298, 0.231661, 0.00238264, 0.0569859, - 0.0115991, 0.231895, 0.00298699, 0.0572221, - 0.0140096, 0.232456, 0.00368957, 0.057519, - 0.0166508, 0.233096, 0.00450303, 0.0579534, - 0.01951, 0.234094, 0.00544945, 0.0585922, - 0.0225991, 0.235629, 0.00655564, 0.0595647, - 0.0259416, 0.238106, 0.00785724, 0.0609109, - 0.0295661, 0.241557, 0.00939127, 0.0628751, - 0.0335126, 0.246652, 0.0112198, 0.0656908, - 0.0378604, 0.254091, 0.0134168, 0.0691347, - 0.0426543, 0.262666, 0.0160374, 0.0732165, - 0.0478967, 0.272029, 0.0191514, 0.0782863, - 0.0536716, 0.283007, 0.0228597, 0.0843973, - 0.0600683, 0.295732, 0.0272829, 0.0913598, - 0.0670095, 0.308779, 0.032484, 0.0994407, - 0.0745516, 0.322886, 0.0385886, 0.108189, - 0.082712, 0.336408, 0.0457133, 0.118574, - 0.0914927, 0.351692, 0.0539832, 0.129989, - 0.100854, 0.366502, 0.0635162, 0.142722, - 0.110837, 0.381675, 0.0744386, 0.156654, - 0.121353, 0.3963, 0.0868483, 0.172151, - 0.132414, 0.411477, 0.100963, 0.188712, - 0.143809, 0.42508, 0.116795, 0.208093, - 0.155765, 0.441328, 0.134715, 0.227936, - 0.167608, 0.454328, 0.154396, 0.249495, - 0.179579, 0.467235, 0.176179, 0.27362, - 0.191488, 0.480248, 0.200193, 0.296371, - 0.202618, 0.487886, 0.225775, 0.324234, - 0.214133, 0.499632, 0.25441, 0.353049, - 0.225212, 0.509532, 0.285077, 0.381785, - 0.234875, 0.514265, 0.317047, 0.414038, - 0.244205, 0.521282, 0.351874, 0.445251, - 0.252145, 0.522931, 0.388279, 0.476819, - 0.258433, 0.520947, 0.425825, 0.509209, - 0.263411, 0.517669, 0.465104, 0.542759, - 0.266732, 0.512841, 0.505741, 0.574822, - 0.268263, 0.503317, 0.547611, 0.609324, - 0.268489, 0.493035, 0.590953, 0.641772, - 0.266941, 0.478816, 0.63488, 0.674049, - 0.263297, 0.462863, 0.679072, 0.705071, - 0.257618, 0.442931, 0.723487, 0.734709, - 0.250625, 0.421299, 0.768708, 0.763704, - 0.24179, 0.397085, 0.814375, 0.791818, - 0.231115, 0.370577, 0.859907, 0.817439, - 0.21922, 0.34232, 0.906715, 0.843202, - 0.205658, 0.312627, 0.953943, 0.866639, - 0.190563, 0.280933, 1.00185, 0.888129, - 0.173978, 0.248393, 1.05105, 0.907239, - 0.155485, 0.216007, 1.09704, 0.923893, - 0.134782, 0.183233, 1.13857, 0.938882, - 0.11249, 0.150376, 1.17539, 0.952464, - 0.0890706, 0.117177, 1.20924, 0.968529, - 0.0646523, 0.0813095, 1.24055, 0.984763, - 0.038606, 0.0439378, 1.27018, 1.00053, - 0.01238, 0.00598668, 1.29873, 0.0437928, - 4.09594e-06, 0.204012, 8.79224e-07, 0.0440166, - 0.000103395, 0.205049, 2.21946e-05, 0.0440529, - 0.000413633, 0.205225, 8.87981e-05, 0.0440493, - 0.000930594, 0.2052, 0.000199858, 0.0439884, - 0.00165352, 0.204901, 0.000355495, 0.0440716, - 0.0025849, 0.205255, 0.000556983, 0.0440968, - 0.00372222, 0.205311, 0.000805326, 0.0441359, - 0.00506478, 0.205391, 0.00110333, 0.0442231, - 0.00660384, 0.205638, 0.00145768, 0.0443254, - 0.00835246, 0.205877, 0.00187275, 0.0444832, - 0.0102992, 0.20627, 0.00235938, 0.0447001, - 0.0124449, 0.206796, 0.0029299, 0.0450168, - 0.0147935, 0.207593, 0.0036005, 0.0454816, - 0.017336, 0.208819, 0.00439246, 0.0462446, - 0.0201156, 0.211036, 0.00533864, 0.0473694, - 0.0231568, 0.214388, 0.00646984, 0.0490191, - 0.0264941, 0.219357, 0.00783856, 0.0512776, - 0.030184, 0.226061, 0.00950182, 0.0541279, - 0.0342661, 0.234094, 0.0115156, 0.0578989, - 0.0388539, 0.244297, 0.0139687, 0.0620835, - 0.0438735, 0.254457, 0.0169015, 0.0673497, - 0.04951, 0.266706, 0.0204554, 0.0731759, - 0.0556263, 0.278753, 0.0246606, 0.0803937, - 0.0624585, 0.29309, 0.0297126, 0.0879287, - 0.0697556, 0.305856, 0.0355868, 0.0970669, - 0.0778795, 0.321059, 0.0425768, 0.106508, - 0.0863541, 0.333873, 0.05056, 0.11776, - 0.0955935, 0.349008, 0.0598972, 0.130081, - 0.105438, 0.363776, 0.0706314, 0.144454, - 0.115899, 0.380112, 0.0828822, 0.1596, - 0.126827, 0.394843, 0.0967611, 0.176097, - 0.138161, 0.409033, 0.112381, 0.194726, - 0.149904, 0.424257, 0.129952, 0.213944, - 0.161675, 0.436945, 0.149333, 0.235516, - 0.173659, 0.450176, 0.170892, 0.260564, - 0.185963, 0.466305, 0.194984, 0.285183, - 0.197582, 0.477328, 0.220805, 0.311095, - 0.208697, 0.486566, 0.248694, 0.338924, - 0.219519, 0.494811, 0.279015, 0.369757, - 0.229766, 0.504065, 0.311725, 0.3996, - 0.238879, 0.507909, 0.345844, 0.430484, - 0.246802, 0.509805, 0.381749, 0.46413, - 0.253924, 0.511436, 0.420251, 0.497077, - 0.259319, 0.508787, 0.459957, 0.530434, - 0.263297, 0.50394, 0.501356, 0.565725, - 0.265619, 0.49804, 0.544252, 0.599254, - 0.265842, 0.487346, 0.587856, 0.631251, - 0.263978, 0.472975, 0.631969, 0.663972, - 0.26043, 0.457135, 0.677471, 0.697724, - 0.255358, 0.439844, 0.723744, 0.727725, - 0.248308, 0.417872, 0.770653, 0.756417, - 0.239181, 0.39273, 0.817357, 0.785419, - 0.22814, 0.367839, 0.864221, 0.81266, - 0.215681, 0.339449, 0.912701, 0.839391, - 0.201623, 0.309279, 0.962419, 0.86366, - 0.185624, 0.278029, 1.0122, 0.885028, - 0.16797, 0.245294, 1.06186, 0.904639, - 0.148336, 0.212689, 1.10934, 0.922048, - 0.12637, 0.179616, 1.15063, 0.936952, - 0.102928, 0.146749, 1.18885, 0.951895, - 0.0785268, 0.112733, 1.22352, 0.967198, - 0.0530153, 0.0760056, 1.25681, 0.984405, - 0.02649, 0.0383183, 1.28762, 1.00021, 0.00070019, - 0.00020039, 1.31656, 0.0325964, - 3.55447e-06, 0.176706, 6.55682e-07, 0.0329333, - 8.99174e-05, 0.178527, 1.65869e-05, 0.0329181, - 0.000359637, 0.178453, 6.63498e-05, 0.0329085, - 0.000808991, 0.178383, 0.000149332, 0.0329181, - 0.00143826, 0.178394, 0.000265873, 0.0329425, - 0.00224678, 0.178517, 0.000416597, 0.0329511, - 0.00323575, 0.17849, 0.000603299, 0.033011, - 0.00439875, 0.178695, 0.000829422, 0.0330733, - 0.00574059, 0.178843, 0.00109908, 0.0331857, - 0.00725896, 0.179176, 0.00141933, 0.0333445, - 0.00895289, 0.179618, 0.0017999, 0.0335674, - 0.0108219, 0.180238, 0.00225316, 0.033939, - 0.0128687, 0.181417, 0.00279765, 0.0345239, - 0.015114, 0.183395, 0.0034564, 0.0354458, - 0.017596, 0.186616, 0.00425864, 0.0368313, - 0.0203524, 0.191547, 0.00524936, 0.0386115, - 0.0234105, 0.197508, 0.00647033, 0.0410303, - 0.0268509, 0.205395, 0.00798121, 0.0442245, - 0.0307481, 0.215365, 0.0098557, 0.0478659, - 0.0350863, 0.225595, 0.0121417, 0.0522416, - 0.0399506, 0.236946, 0.0149385, 0.0574513, - 0.045357, 0.249442, 0.0183189, 0.0631208, - 0.0512863, 0.261222, 0.0223644, 0.0701124, - 0.0579273, 0.275418, 0.0272418, 0.0777331, - 0.0650652, 0.288989, 0.0329458, 0.0862709, - 0.0728813, 0.302546, 0.0396819, 0.096103, - 0.081363, 0.317164, 0.04757, 0.106976, - 0.0904463, 0.331733, 0.0567012, 0.119175, - 0.100105, 0.34661, 0.067202, 0.132919, - 0.110375, 0.362249, 0.0792588, 0.147727, - 0.121115, 0.376978, 0.0928672, 0.163618, - 0.132299, 0.390681, 0.108228, 0.182234, - 0.143887, 0.406571, 0.125502, 0.201809, - 0.155827, 0.42042, 0.144836, 0.225041, - 0.168357, 0.438411, 0.166706, 0.247621, - 0.18004, 0.450368, 0.189909, 0.27097, - 0.191536, 0.460083, 0.215251, 0.296658, - 0.203024, 0.469765, 0.243164, 0.325892, - 0.214056, 0.481837, 0.273388, 0.35406, - 0.224104, 0.487474, 0.305344, 0.384372, - 0.233489, 0.492773, 0.339741, 0.41749, - 0.241874, 0.498451, 0.376287, 0.45013, - 0.248834, 0.499632, 0.414195, 0.481285, - 0.254658, 0.495233, 0.454077, 0.519183, - 0.259367, 0.496401, 0.496352, 0.551544, - 0.261818, 0.487686, 0.538798, 0.587349, - 0.262964, 0.479453, 0.583626, 0.621679, - 0.262128, 0.467709, 0.629451, 0.654991, - 0.258998, 0.452123, 0.67566, 0.686873, - 0.254119, 0.433495, 0.723248, 0.719801, - 0.246946, 0.413657, 0.771156, 0.750355, - 0.237709, 0.390366, 0.81989, 0.780033, - 0.226549, 0.364947, 0.868601, 0.809254, - 0.214186, 0.337256, 0.920034, 0.836576, - 0.199639, 0.307395, 0.971706, 0.861774, - 0.183169, 0.275431, 1.02479, 0.885707, - 0.165111, 0.243431, 1.07837, 0.904742, - 0.144363, 0.210921, 1.12783, 0.915604, - 0.121305, 0.17647, 1.17254, 0.930959, - 0.0962119, 0.143106, 1.21012, 0.948404, - 0.069969, 0.108112, 1.24474, 0.967012, - 0.0427586, 0.0708478, 1.27718, 0.984183, - 0.0147043, 0.032335, 1.3083, 0.999577, 0.0142165, - 0.00726867, 1.3382, 0.0229227, - 2.99799e-06, 0.148623, 4.62391e-07, 0.0232194, - 7.58796e-05, 0.15054, 1.17033e-05, 0.0232315, - 0.000303636, 0.15063, 4.68397e-05, 0.0232354, - 0.000683189, 0.150624, 0.000105472, 0.0232092, - 0.0012136, 0.150445, 0.000187744, 0.0232523, - 0.00189765, 0.150679, 0.000294847, 0.0232828, - 0.00273247, 0.150789, 0.000428013, 0.0233371, - 0.00371287, 0.150995, 0.000591134, 0.0234015, - 0.00484794, 0.15118, 0.000787642, 0.023514, - 0.00612877, 0.151562, 0.00102547, 0.023679, - 0.00756125, 0.152116, 0.00131351, 0.0239559, - 0.00914651, 0.153162, 0.00166594, 0.0244334, - 0.010904, 0.155133, 0.00210182, 0.025139, - 0.0128615, 0.158035, 0.00264406, 0.0262598, - 0.0150628, 0.162751, 0.00332923, 0.0277875, - 0.0175532, 0.168944, 0.00419773, 0.0298472, - 0.0203981, 0.176835, 0.00530034, 0.0325444, - 0.023655, 0.186686, 0.00669777, 0.0355581, - 0.0272982, 0.196248, 0.00842661, 0.0392841, - 0.0314457, 0.207352, 0.0105854, 0.0436815, - 0.0361157, 0.219279, 0.0132458, 0.0485272, - 0.0412932, 0.230728, 0.0164736, 0.0541574, - 0.0470337, 0.242994, 0.0203715, 0.0609479, - 0.0535002, 0.257042, 0.0250953, 0.0685228, - 0.0605409, 0.27102, 0.0306856, 0.0768042, - 0.0680553, 0.28406, 0.037193, 0.0864844, - 0.0765011, 0.299186, 0.0449795, 0.0969415, - 0.0852674, 0.3132, 0.0538316, 0.108478, - 0.0947333, 0.327138, 0.0641149, 0.121705, - 0.10481, 0.342345, 0.0759185, 0.136743, - 0.115474, 0.358472, 0.0894116, 0.152986, - 0.126536, 0.374067, 0.104562, 0.170397, - 0.138061, 0.388267, 0.121632, 0.191392, - 0.150203, 0.406467, 0.140996, 0.211566, - 0.161751, 0.418641, 0.161696, 0.233567, - 0.173407, 0.430418, 0.184557, 0.257769, - 0.185397, 0.44277, 0.210092, 0.28531, - 0.197048, 0.457191, 0.237827, 0.311726, - 0.20784, 0.464712, 0.267253, 0.340537, - 0.218345, 0.472539, 0.299332, 0.372921, - 0.228306, 0.482331, 0.333988, 0.402924, - 0.236665, 0.484378, 0.369722, 0.434475, - 0.244097, 0.484717, 0.407836, 0.469736, - 0.250547, 0.487093, 0.448465, 0.505045, - 0.25511, 0.485575, 0.490263, 0.540262, - 0.258444, 0.481225, 0.534495, 0.576347, - 0.259903, 0.473481, 0.579451, 0.608656, - 0.259572, 0.4603, 0.625604, 0.646679, - 0.257908, 0.450341, 0.674511, 0.679902, - 0.253663, 0.431561, 0.723269, 0.714159, - 0.247419, 0.412684, 0.773263, 0.745345, - 0.239122, 0.389388, 0.824182, 0.778248, - 0.228837, 0.365361, 0.876634, 0.807208, - 0.216197, 0.337667, 0.92945, 0.835019, - 0.201772, 0.307197, 0.985261, 0.860261, - 0.185291, 0.274205, 1.04299, 0.877601, - 0.165809, 0.240178, 1.09816, 0.898211, - 0.143897, 0.207571, 1.14694, 0.915789, - 0.119513, 0.174904, 1.19008, 0.931831, - 0.0932919, 0.141423, 1.2297, 0.949244, - 0.0656528, 0.105603, 1.26553, 0.967527, - 0.0370262, 0.0679551, 1.29986, 0.984139, - 0.00730117, 0.0283133, 1.33252, 0.999713, 0.0234648, - 0.0121785, 1.36397, 0.0152135, - 2.45447e-06, 0.122795, 3.04092e-07, 0.0151652, - 6.15778e-05, 0.122399, 7.6292e-06, 0.0151181, - 0.000245948, 0.122023, 3.04802e-05, 0.0151203, - 0.000553394, 0.12203, 6.86634e-05, 0.015125, - 0.000983841, 0.122037, 0.000122463, 0.0151427, - 0.00153774, 0.12214, 0.000192706, 0.0151708, - 0.0022103, 0.122237, 0.000281219, 0.0152115, - 0.00300741, 0.12238, 0.000390804, 0.0152877, - 0.00392494, 0.1227, 0.000526317, 0.015412, - 0.00496597, 0.123244, 0.00069443, 0.0156201, - 0.00613314, 0.124228, 0.00090547, 0.0159658, - 0.00744113, 0.125945, 0.0011732, 0.0165674, - 0.00892546, 0.129098, 0.00151888, 0.017487, - 0.010627, 0.133865, 0.00197007, 0.018839, - 0.0126043, 0.140682, 0.0025637, 0.020554, - 0.0148814, 0.148534, 0.00333637, 0.0226727, - 0.0175123, 0.157381, 0.00433738, 0.0251879, - 0.0205266, 0.166685, 0.00561664, 0.0283635, - 0.0240319, 0.177796, 0.00725563, 0.0318694, - 0.0279432, 0.188251, 0.00928811, 0.0361044, - 0.0324313, 0.200038, 0.011835, 0.0406656, - 0.0373527, 0.210685, 0.0149146, 0.0463846, - 0.0430132, 0.224182, 0.0187254, 0.0525696, - 0.0491013, 0.23634, 0.0232283, 0.0598083, - 0.0559175, 0.250013, 0.0286521, 0.0679437, - 0.0633657, 0.263981, 0.0350634, 0.0771181, - 0.0714602, 0.278072, 0.0425882, 0.0881273, - 0.0803502, 0.29511, 0.0514487, 0.0996628, - 0.0896903, 0.309976, 0.0615766, 0.112702, - 0.099644, 0.325611, 0.0732139, 0.126488, - 0.109829, 0.339321, 0.0862324, 0.142625, - 0.120859, 0.35574, 0.101275, 0.15953, - 0.131956, 0.369845, 0.117892, 0.176991, - 0.143145, 0.38146, 0.136205, 0.199715, - 0.155292, 0.40052, 0.157252, 0.220787, - 0.167066, 0.412055, 0.179966, 0.243697, - 0.178396, 0.423133, 0.204418, 0.272106, - 0.190433, 0.439524, 0.232141, 0.297637, - 0.201265, 0.447041, 0.261109, 0.325273, - 0.211834, 0.454488, 0.292627, 0.357219, - 0.221889, 0.465004, 0.326669, 0.387362, - 0.230729, 0.468527, 0.362426, 0.423131, - 0.23924, 0.475836, 0.401533, 0.45543, - 0.246067, 0.475017, 0.441902, 0.493393, - 0.251557, 0.478017, 0.484239, 0.526253, - 0.255571, 0.4709, 0.528586, 0.560554, - 0.257752, 0.463167, 0.574346, 0.599306, - 0.258076, 0.456452, 0.621655, 0.634541, - 0.256471, 0.443725, 0.670492, 0.668907, - 0.253283, 0.428719, 0.721943, 0.705619, - 0.247562, 0.411348, 0.772477, 0.739034, - 0.240626, 0.388939, 0.8264, 0.771408, - 0.231493, 0.36425, 0.881702, 0.803312, - 0.220125, 0.337321, 0.9385, 0.828457, - 0.206645, 0.305364, 0.997437, 0.854819, - 0.190664, 0.273715, 1.05693, 0.878666, - 0.171429, 0.242218, 1.11251, 0.898404, - 0.149235, 0.209556, 1.16398, 0.917416, - 0.12435, 0.176863, 1.21014, 0.933133, - 0.0972703, 0.142775, 1.25178, 0.95066, - 0.0683607, 0.106735, 1.29028, 0.968589, - 0.0378724, 0.0681609, 1.32703, 0.984776, - 0.00605712, 0.0273966, 1.36158, 0.99994, 0.0263276, - 0.0138124, 1.3943, 0.00867437, - 1.86005e-06, 0.0928979, 1.73682e-07, 0.00864003, - 4.66389e-05, 0.0925237, 4.35505e-06, 0.00864593, - 0.000186594, 0.0925806, 1.74322e-05, 0.00864095, - 0.000419639, 0.0924903, 3.92862e-05, 0.00863851, - 0.000746272, 0.0924589, 7.02598e-05, 0.00868531, - 0.00116456, 0.0929, 0.000111188, 0.00869667, - 0.00167711, 0.0928529, 0.000163867, 0.00874332, - 0.00228051, 0.0930914, 0.00023104, 0.00882709, - 0.00297864, 0.0935679, 0.00031741, 0.00898874, - 0.00377557, 0.0946165, 0.000430186, 0.00929346, - 0.00469247, 0.0967406, 0.000580383, 0.00978271, - 0.00575491, 0.100084, 0.000783529, 0.0105746, - 0.00701514, 0.105447, 0.00106304, 0.0116949, - 0.00851797, 0.112494, 0.00144685, 0.0130419, - 0.0102757, 0.119876, 0.00196439, 0.0148375, - 0.012381, 0.129034, 0.00266433, 0.0168725, - 0.01482, 0.137812, 0.00358364, 0.0193689, - 0.0176563, 0.147696, 0.00478132, 0.0222691, - 0.0209211, 0.157795, 0.00631721, 0.0256891, - 0.0246655, 0.168431, 0.00826346, 0.0294686, - 0.0288597, 0.178587, 0.0106714, 0.0340412, - 0.0336441, 0.190251, 0.0136629, 0.0393918, - 0.039033, 0.202999, 0.0173272, 0.0453947, - 0.0450087, 0.215655, 0.0217448, 0.0521936, - 0.0515461, 0.228686, 0.0269941, 0.0600279, - 0.058817, 0.242838, 0.033272, 0.0692398, - 0.0667228, 0.258145, 0.0406457, 0.0793832, - 0.0752401, 0.273565, 0.0492239, 0.0902297, - 0.0841851, 0.287735, 0.0590105, 0.102014, - 0.0936479, 0.301161, 0.0702021, 0.116054, - 0.103967, 0.317438, 0.0832001, 0.13191, - 0.114622, 0.334166, 0.0977951, 0.148239, - 0.125452, 0.348192, 0.113985, 0.165809, - 0.136453, 0.361094, 0.131928, 0.184616, - 0.147648, 0.373534, 0.151811, 0.207491, - 0.159607, 0.39101, 0.174476, 0.230106, - 0.171119, 0.402504, 0.198798, 0.257036, - 0.182906, 0.418032, 0.225796, 0.281172, - 0.193605, 0.425468, 0.254027, 0.312034, - 0.204771, 0.440379, 0.285713, 0.340402, - 0.214988, 0.445406, 0.319196, 0.370231, - 0.224711, 0.44968, 0.35537, 0.407105, - 0.233516, 0.460747, 0.393838, 0.439037, - 0.240801, 0.460624, 0.433747, 0.47781, - 0.24762, 0.465957, 0.477234, 0.510655, - 0.251823, 0.460054, 0.52044, 0.550584, - 0.255552, 0.459172, 0.567853, 0.585872, - 0.257036, 0.450311, 0.615943, 0.620466, - 0.257535, 0.437763, 0.667693, 0.660496, - 0.255248, 0.426639, 0.718988, 0.695578, - 0.251141, 0.409185, 0.772503, 0.732176, - 0.244718, 0.39015, 0.827023, 0.760782, - 0.236782, 0.362594, 0.885651, 0.79422, - 0.225923, 0.33711, 0.943756, 0.824521, - 0.213855, 0.308272, 1.00874, 0.854964, - 0.197723, 0.278529, 1.06764, 0.878065, - 0.179209, 0.246208, 1.12836, 0.899834, - 0.157569, 0.21329, 1.18318, 0.918815, - 0.133206, 0.181038, 1.23161, 0.934934, - 0.106545, 0.146993, 1.27644, 0.952115, - 0.0780574, 0.111175, 1.31842, 0.96906, - 0.0478279, 0.0728553, 1.35839, 0.985178, - 0.0160014, 0.032579, 1.39697, 1.00039, 0.0173126, - 0.0095256, 1.43312, 0.00384146, - 1.24311e-06, 0.0613583, 7.78271e-08, 0.00390023, - 3.14043e-05, 0.0622919, 1.96626e-06, 0.00389971, - 0.000125622, 0.0622632, 7.87379e-06, 0.00389491, - 0.000282352, 0.0620659, 1.778e-05, 0.00391618, - 0.000502512, 0.0624687, 3.20918e-05, 0.00392662, - 0.000784458, 0.0625113, 5.15573e-05, 0.00396053, - 0.00112907, 0.0628175, 7.78668e-05, 0.00401911, - 0.00153821, 0.0633286, 0.000113811, 0.00414994, - 0.0020208, 0.0646443, 0.00016445, 0.00441223, - 0.00260007, 0.0673886, 0.000237734, 0.00484427, - 0.0033097, 0.0716528, 0.000345929, 0.00549109, - 0.00418966, 0.0774998, 0.000505987, 0.00636293, - 0.00527331, 0.0844758, 0.000739208, 0.00746566, - 0.00660428, 0.0921325, 0.00107347, 0.00876625, - 0.00818826, 0.0997067, 0.00153691, 0.0103125, - 0.0100811, 0.107433, 0.00217153, 0.0123309, - 0.0123643, 0.117088, 0.00303427, 0.0146274, - 0.0150007, 0.126438, 0.00416018, 0.0172295, - 0.0180531, 0.135672, 0.00561513, 0.0204248, - 0.0215962, 0.146244, 0.007478, 0.0241597, - 0.0256234, 0.157481, 0.00981046, 0.0284693, - 0.0302209, 0.169125, 0.0127148, 0.033445, - 0.0353333, 0.181659, 0.0162453, 0.0391251, - 0.0410845, 0.1944, 0.0205417, 0.0454721, - 0.0473451, 0.207082, 0.0256333, 0.0530983, - 0.0542858, 0.221656, 0.0317036, 0.0615356, - 0.0618384, 0.236036, 0.0388319, 0.0703363, - 0.0697631, 0.248398, 0.046974, 0.0810391, - 0.0784757, 0.263611, 0.0565246, 0.0920144, - 0.0873488, 0.275857, 0.0671724, 0.105584, - 0.0973652, 0.292555, 0.0798105, 0.119506, - 0.107271, 0.306333, 0.0935945, 0.134434, - 0.117608, 0.318888, 0.109106, 0.153399, - 0.128938, 0.337552, 0.127074, 0.171258, - 0.139944, 0.349955, 0.14643, 0.191059, - 0.151288, 0.361545, 0.168, 0.215069, - 0.163018, 0.378421, 0.192082, 0.237838, - 0.174226, 0.38879, 0.217838, 0.266965, - 0.186063, 0.405857, 0.246931, 0.292827, - 0.196909, 0.414146, 0.277505, 0.324352, - 0.207473, 0.426955, 0.310711, 0.354427, - 0.217713, 0.433429, 0.346794, 0.389854, - 0.227183, 0.443966, 0.385237, 0.420749, - 0.235131, 0.44471, 0.424955, 0.459597, - 0.242786, 0.451729, 0.468446, 0.495316, - 0.248767, 0.45072, 0.513422, 0.534903, - 0.253351, 0.450924, 0.560618, 0.572369, - 0.256277, 0.445266, 0.609677, 0.612383, - 0.2576, 0.438798, 0.660995, 0.644037, - 0.256931, 0.421693, 0.713807, 0.686749, - 0.254036, 0.4109, 0.767616, 0.719814, - 0.249785, 0.390151, 0.82533, 0.754719, - 0.244283, 0.367847, 0.888311, 0.792022, - 0.235076, 0.345013, 0.948177, 0.822404, - 0.225061, 0.316193, 1.01661, 0.853084, - 0.211113, 0.287013, 1.08075, 0.879871, - 0.19449, 0.255424, 1.14501, 0.901655, - 0.174023, 0.222879, 1.20203, 0.919957, - 0.1509, 0.18989, 1.25698, 0.938412, - 0.124923, 0.15606, 1.30588, 0.953471, - 0.0968139, 0.120512, 1.3529, 0.970451, - 0.066734, 0.0828515, 1.3986, 0.985522, - 0.034734, 0.0424458, 1.44148, 1.00099, - 0.00102222, 0.000678929, 1.48398, 0.000965494, - 6.27338e-07, 0.0306409, 1.97672e-08, 0.00099168, - 1.58573e-05, 0.0314638, 4.99803e-07, 0.000991068, - 6.34012e-05, 0.031363, 2.00682e-06, 0.000974567, - 0.00014144, 0.03036, 4.57312e-06, 0.000998079, - 0.000252812, 0.031496, 8.60131e-06, 0.00102243, - 0.000396506, 0.0319955, 1.48288e-05, 0.00107877, - 0.000577593, 0.0331376, 2.49141e-05, 0.00121622, - 0.000816816, 0.0359396, 4.23011e-05, 0.0014455, - 0.00113761, 0.0399652, 7.24613e-05, 0.00178791, - 0.00156959, 0.0450556, 0.000123929, 0.00225668, - 0.00214064, 0.0508025, 0.000208531, 0.00285627, - 0.00287655, 0.0568443, 0.000341969, 0.0035991, - 0.00380271, 0.0630892, 0.000544158, 0.00455524, - 0.00496264, 0.0702204, 0.000842423, 0.00569143, - 0.0063793, 0.0773426, 0.00126704, 0.00716928, - 0.00813531, 0.0860839, 0.00186642, 0.00885307, - 0.0101946, 0.0944079, 0.00267014, 0.0109316, - 0.0126386, 0.103951, 0.00374033, 0.0133704, - 0.0154876, 0.113786, 0.0051304, 0.0161525, - 0.0187317, 0.123477, 0.00688858, 0.0194267, - 0.0224652, 0.133986, 0.00910557, 0.0230967, - 0.0265976, 0.143979, 0.0118074, 0.0273627, - 0.0312848, 0.154645, 0.0151266, 0.0323898, - 0.0365949, 0.166765, 0.0191791, 0.0379225, - 0.0422914, 0.177932, 0.0239236, 0.0447501, - 0.0487469, 0.19167, 0.0296568, 0.0519391, - 0.0556398, 0.203224, 0.0362924, 0.0599464, - 0.0631646, 0.215652, 0.0440585, 0.0702427, - 0.0714308, 0.232089, 0.0531619, 0.0806902, - 0.0800605, 0.245258, 0.0634564, 0.0923194, - 0.0892815, 0.258609, 0.0752481, 0.106938, - 0.09931, 0.276654, 0.0888914, 0.121238, - 0.109575, 0.289847, 0.104055, 0.138817, - 0.120461, 0.307566, 0.121266, 0.15595, - 0.131209, 0.320117, 0.139944, 0.178418, - 0.143049, 0.339677, 0.161591, 0.197875, - 0.154074, 0.349886, 0.184303, 0.224368, - 0.166307, 0.369352, 0.210669, 0.252213, - 0.178051, 0.386242, 0.238895, 0.277321, - 0.189335, 0.395294, 0.269182, 0.310332, - 0.200683, 0.412148, 0.302508, 0.338809, - 0.210856, 0.418266, 0.337264, 0.372678, - 0.220655, 0.428723, 0.374881, 0.405632, - 0.230053, 0.433887, 0.415656, 0.442293, - 0.237993, 0.439911, 0.457982, 0.477256, - 0.244897, 0.440175, 0.502831, 0.515592, - 0.250657, 0.441079, 0.550277, 0.550969, - 0.255459, 0.435219, 0.601102, 0.592883, - 0.257696, 0.432882, 0.651785, 0.629092, - 0.259894, 0.421054, 0.708961, 0.672033, - 0.258592, 0.41177, 0.763806, 0.709147, - 0.256525, 0.395267, 0.824249, 0.745367, - 0.254677, 0.375013, 0.8951, 0.784715, - 0.247892, 0.353906, 0.959317, 0.818107, - 0.240162, 0.327801, 1.03153, 0.847895, - 0.229741, 0.298821, 1.10601, 0.879603, - 0.213084, 0.269115, 1.164, 0.902605, - 0.195242, 0.236606, 1.22854, 0.922788, - 0.174505, 0.203442, 1.29017, 0.944831, - 0.150169, 0.169594, 1.34157, 0.959656, - 0.124099, 0.135909, 1.3956, 0.972399, - 0.0960626, 0.0990563, 1.45128, 0.986549, - 0.0657097, 0.0602348, 1.50312, 1.00013, - 0.0333558, 0.0186694, 1.55364, 6.19747e-06, - 1e-07, 0.00778326, 7.96756e-11, 2.37499e-08, - 9.99999e-08, 2.82592e-05, 1.14596e-10, 1.00292e-06, - 1.66369e-06, 0.000250354, 6.77492e-09, 3.50752e-06, - 6.37769e-06, 0.000357289, 6.31655e-08, 8.26445e-06, - 1.74689e-05, 0.000516179, 3.1851e-07, 2.42481e-05, - 4.50868e-05, 0.0010223, 1.30577e-06, 4.55631e-05, - 8.9044e-05, 0.00144302, 3.74587e-06, 9.71222e-05, - 0.000178311, 0.00241912, 1.02584e-05, 0.000171403, - 0.000313976, 0.00354938, 2.36481e-05, 0.000292747, - 0.000520026, 0.00513765, 4.96014e-05, 0.000789827, - 0.00118187, 0.0238621, 0.000139056, 0.00114093, - 0.00171827, 0.0286691, 0.000244093, 0.00176119, - 0.00249667, 0.0368565, 0.000420623, 0.0022233, - 0.00333742, 0.0400469, 0.00065673, 0.00343382, - 0.00481976, 0.0535751, 0.00109323, 0.00427602, - 0.00600755, 0.057099, 0.00155268, 0.00461435, - 0.00737637, 0.0551084, 0.00215031, 0.00695698, - 0.00971401, 0.0715767, 0.00316529, 0.00867619, - 0.0120943, 0.0793314, 0.00436995, 0.0106694, - 0.0148202, 0.0869391, 0.0058959, 0.0140351, - 0.0183501, 0.101572, 0.00798757, 0.0168939, - 0.022006, 0.11018, 0.0104233, 0.020197, - 0.0261568, 0.119041, 0.0134167, 0.0254702, - 0.0312778, 0.135404, 0.0173009, 0.0298384, - 0.0362469, 0.1437, 0.0215428, 0.035159, - 0.042237, 0.15512, 0.0268882, 0.0427685, - 0.0488711, 0.17128, 0.033235, 0.0494848, - 0.0557997, 0.181813, 0.0404443, 0.0592394, - 0.0635578, 0.198745, 0.0490043, 0.0681463, - 0.071838, 0.210497, 0.0588239, 0.0804753, - 0.0809297, 0.228864, 0.0702835, 0.0942205, - 0.0906488, 0.247008, 0.0834012, 0.106777, - 0.100216, 0.258812, 0.0975952, 0.124471, - 0.110827, 0.278617, 0.114162, 0.138389, - 0.121193, 0.287049, 0.131983, 0.159543, - 0.13253, 0.307151, 0.152541, 0.176432, - 0.143611, 0.31564, 0.174673, 0.201723, - 0.15548, 0.33538, 0.199842, 0.229721, - 0.167166, 0.355256, 0.227097, 0.250206, - 0.178238, 0.360047, 0.256014, 0.282118, - 0.189905, 0.378761, 0.28855, 0.312821, - 0.201033, 0.39181, 0.323348, 0.341482, - 0.211584, 0.397716, 0.360564, 0.377368, - 0.221314, 0.410141, 0.400004, 0.418229, - 0.230474, 0.423485, 0.442371, 0.444881, - 0.239443, 0.418874, 0.488796, 0.488899, - 0.245987, 0.427545, 0.535012, 0.520317, - 0.253948, 0.422147, 0.589678, 0.568566, - 0.256616, 0.42719, 0.637683, 0.599607, - 0.26376, 0.415114, 0.703363, 0.64222, - 0.268687, 0.408715, 0.771363, 0.685698, - 0.2694, 0.399722, 0.83574, 0.732327, - 0.266642, 0.388651, 0.897764, 0.769873, - 0.267712, 0.369198, 0.983312, 0.806733, - 0.263479, 0.346802, 1.06222, 0.843466, - 0.254575, 0.321368, 1.13477, 0.873008, - 0.242749, 0.29211, 1.20712, 0.908438, - 0.22725, 0.262143, 1.27465, 0.936321, - 0.207621, 0.228876, 1.33203, 0.950353, - 0.187932, 0.19484, 1.40439, 0.96442, - 0.165154, 0.163178, 1.4732, 0.979856, - 0.139302, 0.127531, 1.53574, 0.982561, - 0.11134, 0.0903457, 1.59982, 0.996389, - 0.0808124, 0.0489007, 1.6577 ]; - - const LTC_MAT_2 = [ 1, 0, 0, 0, 1, 7.91421e-31, 0, 0, 1, 1.04392e-24, 0, 0, 1, 3.49405e-21, 0, 0, 1, 1.09923e-18, 0, 0, 1, 9.47414e-17, 0, 0, 1, 3.59627e-15, 0, 0, 1, 7.72053e-14, 0, 0, 1, 1.08799e-12, 0, 0, 1, 1.10655e-11, 0, 0, 1, 8.65818e-11, 0, 0, 0.999998, 5.45037e-10, 0, 0, 0.999994, 2.85095e-09, 0, 0, 0.999989, 1.26931e-08, 0, 0, 0.999973, 4.89938e-08, 0, 0, 0.999947, 1.66347e-07, 0, 0, 0.999894, 5.02694e-07, 0, 0, 0.999798, 1.36532e-06, 0, 0, 0.999617, 3.35898e-06, 0, 0, 0.999234, 7.52126e-06, 0, 0, 0.998258, 1.52586e-05, 0, 0, 0.99504, 2.66207e-05, 0, 0, 0.980816, 2.36802e-05, 0, 0, 0.967553, 2.07684e-06, 0, 0, 0.966877, 4.03733e-06, 0, 0, 0.965752, 7.41174e-06, 0, 0, 0.96382, 1.27746e-05, 0, 0, 0.960306, 2.02792e-05, 0, 0, 0.953619, 2.80232e-05, 0, 0, 0.941103, 2.78816e-05, 0, 0, 0.926619, 1.60221e-05, 0, 0, 0.920983, 2.35164e-05, 0, 0, 0.912293, 3.11924e-05, 0, 0.0158731, 0.899277, 3.48118e-05, 0, 0.0476191, 0.880884, 2.6041e-05, 0, 0.0793651, 0.870399, 3.38726e-05, 0, 0.111111, 0.856138, 3.92906e-05, 0, 0.142857, 0.837436, 3.72874e-05, 0, 0.174603, 0.820973, 3.92558e-05, 0, 0.206349, 0.803583, 4.34658e-05, 0, 0.238095, 0.782168, 4.0256e-05, 0, 0.269841, 0.764107, 4.48159e-05, 0, 0.301587, 0.743092, 4.57627e-05, 0, 0.333333, 0.721626, 4.55314e-05, 0, 0.365079, 0.700375, 4.77335e-05, 0, 0.396825, 0.677334, 4.61072e-05, 0, 0.428571, 0.655702, 4.84393e-05, 0, 0.460317, 0.632059, 4.64583e-05, 0, 0.492064, 0.610125, 4.83923e-05, 0, 0.52381, 0.58653, 4.64342e-05, 0, 0.555556, 0.564508, 4.77033e-05, 0, 0.587302, 0.541405, 4.59263e-05, 0, 0.619048, 0.519556, 4.6412e-05, 0, 0.650794, 0.497292, 4.48913e-05, 0, 0.68254, 0.475898, 4.45789e-05, 0, 0.714286, 0.454722, 4.33496e-05, 0, 0.746032, 0.434042, 4.23054e-05, 0, 0.777778, 0.414126, 4.13737e-05, 0, 0.809524, 0.394387, 3.97265e-05, 0, 0.84127, 0.375841, 3.90709e-05, 0, 0.873016, 0.357219, 3.69938e-05, 0, 0.904762, 0.340084, 3.65618e-05, 0, 0.936508, 0.322714, 3.42533e-05, 0, 0.968254, 0.306974, 3.39596e-05, 0, 1, 1, 1.01524e-18, 0, 0, 1, 1.0292e-18, 0, 0, 1, 1.30908e-18, 0, 0, 1, 4.73331e-18, 0, 0, 1, 6.25319e-17, 0, 0, 1, 1.07932e-15, 0, 0, 1, 1.63779e-14, 0, 0, 1, 2.03198e-13, 0, 0, 1, 2.04717e-12, 0, 0, 0.999999, 1.68995e-11, 0, 0, 0.999998, 1.15855e-10, 0, 0, 0.999996, 6.6947e-10, 0, 0, 0.999991, 3.30863e-09, 0, 0, 0.999983, 1.41737e-08, 0, 0, 0.999968, 5.32626e-08, 0, 0, 0.99994, 1.77431e-07, 0, 0, 0.999891, 5.28835e-07, 0, 0, 0.999797, 1.42169e-06, 0, 0, 0.999617, 3.47057e-06, 0, 0, 0.999227, 7.7231e-06, 0, 0, 0.998239, 1.55753e-05, 0, 0, 0.994937, 2.68495e-05, 0, 0, 0.980225, 2.13742e-05, 0, 0, 0.967549, 2.1631e-06, 0, 0, 0.966865, 4.17989e-06, 0, 0, 0.965739, 7.63341e-06, 0, 0, 0.963794, 1.30892e-05, 0, 0, 0.960244, 2.06456e-05, 0, 0, 0.953495, 2.82016e-05, 0, 0.000148105, 0.940876, 2.71581e-05, 0, 0.002454, 0.926569, 1.64159e-05, 0, 0.00867491, 0.920905, 2.39521e-05, 0, 0.01956, 0.912169, 3.15127e-05, 0, 0.035433, 0.899095, 3.46626e-05, 0, 0.056294, 0.882209, 2.90223e-05, 0, 0.0818191, 0.870272, 3.42992e-05, 0, 0.111259, 0.855977, 3.94164e-05, 0, 0.142857, 0.837431, 3.72343e-05, 0, 0.174603, 0.820826, 3.96691e-05, 0, 0.206349, 0.803408, 4.35395e-05, 0, 0.238095, 0.782838, 4.19579e-05, 0, 0.269841, 0.763941, 4.50953e-05, 0, 0.301587, 0.742904, 4.55847e-05, 0, 0.333333, 0.721463, 4.58833e-05, 0, 0.365079, 0.700197, 4.77159e-05, 0, 0.396825, 0.677501, 4.70641e-05, 0, 0.428571, 0.655527, 4.84732e-05, 0, 0.460317, 0.6324, 4.76834e-05, 0, 0.492064, 0.609964, 4.84213e-05, 0, 0.52381, 0.586839, 4.75541e-05, 0, 0.555556, 0.564353, 4.76951e-05, 0, 0.587302, 0.541589, 4.67611e-05, 0, 0.619048, 0.519413, 4.63493e-05, 0, 0.650794, 0.497337, 4.53994e-05, 0, 0.68254, 0.475797, 4.45308e-05, 0, 0.714286, 0.454659, 4.35787e-05, 0, 0.746032, 0.434065, 4.24839e-05, 0, 0.777778, 0.414018, 4.1436e-05, 0, 0.809524, 0.39455, 4.01902e-05, 0, 0.84127, 0.375742, 3.90813e-05, 0, 0.873016, 0.357501, 3.77116e-05, 0, 0.904762, 0.339996, 3.6535e-05, 0, 0.936508, 0.323069, 3.51265e-05, 0, 0.968254, 0.306897, 3.39112e-05, 0, 1, 1, 1.0396e-15, 0, 0, 1, 1.04326e-15, 0, 0, 1, 1.10153e-15, 0, 0, 1, 1.44668e-15, 0, 0, 1, 3.4528e-15, 0, 0, 1, 1.75958e-14, 0, 0, 1, 1.2627e-13, 0, 0, 1, 9.36074e-13, 0, 0, 1, 6.45742e-12, 0, 0, 0.999998, 4.01228e-11, 0, 0, 0.999997, 2.22338e-10, 0, 0, 0.999995, 1.0967e-09, 0, 0, 0.999991, 4.82132e-09, 0, 0, 0.999981, 1.89434e-08, 0, 0, 0.999967, 6.67716e-08, 0, 0, 0.999938, 2.12066e-07, 0, 0, 0.999886, 6.0977e-07, 0, 0, 0.999792, 1.59504e-06, 0, 0, 0.999608, 3.81191e-06, 0, 0, 0.999209, 8.33727e-06, 0, 0, 0.998179, 1.65288e-05, 0, 0, 0.994605, 2.74387e-05, 0, 0, 0.979468, 1.67316e-05, 0, 0, 0.967529, 2.42877e-06, 0, 0, 0.966836, 4.61696e-06, 0, 0, 0.96569, 8.30977e-06, 0, 0, 0.963706, 1.40427e-05, 0, 2.44659e-06, 0.960063, 2.17353e-05, 0, 0.000760774, 0.953113, 2.86606e-05, 0, 0.00367261, 0.940192, 2.47691e-05, 0, 0.00940263, 0.927731, 1.95814e-05, 0, 0.018333, 0.920669, 2.52531e-05, 0, 0.0306825, 0.911799, 3.24277e-05, 0, 0.0465556, 0.89857, 3.40982e-05, 0, 0.0659521, 0.883283, 3.19622e-05, 0, 0.0887677, 0.86989, 3.5548e-05, 0, 0.114784, 0.855483, 3.97143e-05, 0, 0.143618, 0.837987, 3.91665e-05, 0, 0.174606, 0.820546, 4.11306e-05, 0, 0.206349, 0.802878, 4.36753e-05, 0, 0.238095, 0.783402, 4.44e-05, 0, 0.269841, 0.763439, 4.58726e-05, 0, 0.301587, 0.742925, 4.67097e-05, 0, 0.333333, 0.721633, 4.78887e-05, 0, 0.365079, 0.69985, 4.81251e-05, 0, 0.396825, 0.67783, 4.91811e-05, 0, 0.428571, 0.655126, 4.88199e-05, 0, 0.460318, 0.632697, 4.96025e-05, 0, 0.492064, 0.609613, 4.8829e-05, 0, 0.52381, 0.587098, 4.92754e-05, 0, 0.555556, 0.564119, 4.82625e-05, 0, 0.587302, 0.541813, 4.82807e-05, 0, 0.619048, 0.519342, 4.71552e-05, 0, 0.650794, 0.497514, 4.66765e-05, 0, 0.68254, 0.475879, 4.55582e-05, 0, 0.714286, 0.454789, 4.46007e-05, 0, 0.746032, 0.434217, 4.35382e-05, 0, 0.777778, 0.414086, 4.21753e-05, 0, 0.809524, 0.394744, 4.12093e-05, 0, 0.84127, 0.375782, 3.96634e-05, 0, 0.873016, 0.357707, 3.86419e-05, 0, 0.904762, 0.340038, 3.70345e-05, 0, 0.936508, 0.323284, 3.59725e-05, 0, 0.968254, 0.306954, 3.436e-05, 0, 1, 1, 5.99567e-14, 0, 0, 1, 6.00497e-14, 0, 0, 1, 6.14839e-14, 0, 0, 1, 6.86641e-14, 0, 0, 1, 9.72658e-14, 0, 0, 1, 2.21271e-13, 0, 0, 1, 8.33195e-13, 0, 0, 1, 4.03601e-12, 0, 0, 0.999999, 2.06001e-11, 0, 0, 0.999998, 1.01739e-10, 0, 0, 0.999997, 4.70132e-10, 0, 0, 0.999993, 2.00436e-09, 0, 0, 0.999988, 7.83682e-09, 0, 0, 0.999979, 2.80338e-08, 0, 0, 0.999962, 9.17033e-08, 0, 0, 0.999933, 2.74514e-07, 0, 0, 0.999881, 7.53201e-07, 0, 0, 0.999783, 1.89826e-06, 0, 0, 0.999594, 4.40279e-06, 0, 0, 0.999178, 9.3898e-06, 0, 0, 0.998073, 1.81265e-05, 0, 0, 0.993993, 2.80487e-05, 0, 0, 0.979982, 1.49422e-05, 0, 0, 0.968145, 3.78481e-06, 0, 0, 0.966786, 5.3771e-06, 0, 0, 0.965611, 9.47508e-06, 0, 3.88934e-05, 0.963557, 1.56616e-05, 0, 0.0009693, 0.959752, 2.35144e-05, 0, 0.00370329, 0.952461, 2.91568e-05, 0, 0.00868428, 0.940193, 2.40102e-05, 0, 0.0161889, 0.929042, 2.31235e-05, 0, 0.0263948, 0.920266, 2.73968e-05, 0, 0.0394088, 0.911178, 3.37915e-05, 0, 0.0552818, 0.897873, 3.33629e-05, 0, 0.0740138, 0.884053, 3.51405e-05, 0, 0.0955539, 0.869455, 3.78034e-05, 0, 0.119795, 0.854655, 3.99378e-05, 0, 0.14656, 0.838347, 4.19108e-05, 0, 0.175573, 0.820693, 4.40831e-05, 0, 0.206388, 0.802277, 4.45599e-05, 0, 0.238095, 0.783634, 4.72691e-05, 0, 0.269841, 0.763159, 4.76984e-05, 0, 0.301587, 0.742914, 4.91487e-05, 0, 0.333333, 0.721662, 5.02312e-05, 0, 0.365079, 0.699668, 5.02817e-05, 0, 0.396825, 0.677839, 5.1406e-05, 0, 0.428571, 0.655091, 5.11095e-05, 0, 0.460317, 0.632665, 5.16067e-05, 0, 0.492064, 0.609734, 5.12255e-05, 0, 0.52381, 0.587043, 5.10263e-05, 0, 0.555556, 0.564298, 5.0565e-05, 0, 0.587302, 0.541769, 4.97951e-05, 0, 0.619048, 0.519529, 4.92698e-05, 0, 0.650794, 0.497574, 4.82066e-05, 0, 0.68254, 0.476028, 4.73689e-05, 0, 0.714286, 0.454961, 4.61941e-05, 0, 0.746032, 0.434341, 4.50618e-05, 0, 0.777778, 0.414364, 4.38355e-05, 0, 0.809524, 0.394832, 4.24196e-05, 0, 0.84127, 0.376109, 4.12563e-05, 0, 0.873016, 0.35779, 3.96226e-05, 0, 0.904762, 0.340379, 3.84886e-05, 0, 0.936508, 0.323385, 3.68214e-05, 0, 0.968254, 0.307295, 3.56636e-05, 0, 1, 1, 1.06465e-12, 0, 0, 1, 1.06555e-12, 0, 0, 1, 1.07966e-12, 0, 0, 1, 1.14601e-12, 0, 0, 1, 1.37123e-12, 0, 0, 1, 2.1243e-12, 0, 0, 0.999999, 4.89653e-12, 0, 0, 0.999999, 1.60283e-11, 0, 0, 0.999998, 6.2269e-11, 0, 0, 0.999997, 2.51859e-10, 0, 0, 0.999996, 9.96192e-10, 0, 0, 0.999992, 3.74531e-09, 0, 0, 0.999986, 1.32022e-08, 0, 0, 0.999975, 4.33315e-08, 0, 0, 0.999959, 1.31956e-07, 0, 0, 0.999927, 3.72249e-07, 0, 0, 0.999871, 9.72461e-07, 0, 0, 0.999771, 2.35343e-06, 0, 0, 0.999572, 5.2768e-06, 0, 0, 0.999133, 1.09237e-05, 0, 0, 0.997912, 2.03675e-05, 0, 0, 0.993008, 2.79396e-05, 0, 0, 0.980645, 1.39604e-05, 0, 0, 0.970057, 6.46596e-06, 0, 0, 0.966717, 6.5089e-06, 0, 4.74145e-05, 0.965497, 1.11863e-05, 0, 0.00089544, 0.96334, 1.79857e-05, 0, 0.0032647, 0.959294, 2.59045e-05, 0, 0.0075144, 0.951519, 2.92327e-05, 0, 0.0138734, 0.940517, 2.49769e-05, 0, 0.0224952, 0.93014, 2.6803e-05, 0, 0.0334828, 0.91972, 3.03656e-05, 0, 0.0468973, 0.910294, 3.53323e-05, 0, 0.0627703, 0.897701, 3.51002e-05, 0, 0.0811019, 0.884522, 3.88104e-05, 0, 0.10186, 0.869489, 4.12932e-05, 0, 0.124985, 0.853983, 4.15781e-05, 0, 0.150372, 0.838425, 4.54066e-05, 0, 0.177868, 0.820656, 4.71624e-05, 0, 0.207245, 0.801875, 4.75243e-05, 0, 0.238143, 0.783521, 5.05621e-05, 0, 0.269841, 0.763131, 5.0721e-05, 0, 0.301587, 0.74261, 5.23293e-05, 0, 0.333333, 0.72148, 5.28699e-05, 0, 0.365079, 0.699696, 5.38677e-05, 0, 0.396825, 0.677592, 5.39255e-05, 0, 0.428571, 0.65525, 5.46367e-05, 0, 0.460317, 0.632452, 5.41348e-05, 0, 0.492064, 0.609903, 5.44976e-05, 0, 0.52381, 0.586928, 5.36201e-05, 0, 0.555556, 0.564464, 5.35185e-05, 0, 0.587302, 0.541801, 5.24949e-05, 0, 0.619048, 0.519681, 5.1812e-05, 0, 0.650794, 0.497685, 5.07687e-05, 0, 0.68254, 0.47622, 4.96243e-05, 0, 0.714286, 0.455135, 4.85714e-05, 0, 0.746032, 0.4346, 4.71847e-05, 0, 0.777778, 0.414564, 4.59294e-05, 0, 0.809524, 0.395165, 4.44705e-05, 0, 0.84127, 0.376333, 4.30772e-05, 0, 0.873016, 0.358197, 4.16229e-05, 0, 0.904762, 0.34064, 4.01019e-05, 0, 0.936508, 0.323816, 3.86623e-05, 0, 0.968254, 0.307581, 3.70933e-05, 0, 1, 1, 9.91541e-12, 0, 0, 1, 9.92077e-12, 0, 0, 1, 1.00041e-11, 0, 0, 1, 1.0385e-11, 0, 0, 1, 1.15777e-11, 0, 0, 1, 1.50215e-11, 0, 0, 0.999999, 2.54738e-11, 0, 0, 0.999999, 5.98822e-11, 0, 0, 0.999998, 1.79597e-10, 0, 0, 0.999997, 6.02367e-10, 0, 0, 0.999994, 2.06835e-09, 0, 0, 0.99999, 6.94952e-09, 0, 0, 0.999984, 2.23363e-08, 0, 0, 0.999972, 6.78578e-08, 0, 0, 0.999952, 1.93571e-07, 0, 0, 0.999919, 5.16594e-07, 0, 0, 0.99986, 1.28739e-06, 0, 0, 0.999753, 2.99298e-06, 0, 0, 0.999546, 6.48258e-06, 0, 0, 0.999074, 1.29985e-05, 0, 0, 0.997671, 2.32176e-05, 0, 0, 0.991504, 2.56701e-05, 0, 0, 0.981148, 1.31141e-05, 0, 0, 0.971965, 8.69048e-06, 0, 2.80182e-05, 0.966624, 8.08301e-06, 0, 0.000695475, 0.965344, 1.35235e-05, 0, 0.00265522, 0.963048, 2.10592e-05, 0, 0.00622975, 0.958673, 2.87473e-05, 0, 0.0116234, 0.950262, 2.81379e-05, 0, 0.018976, 0.940836, 2.71089e-05, 0, 0.0283844, 0.930996, 3.0926e-05, 0, 0.0399151, 0.919848, 3.48359e-05, 0, 0.0536063, 0.909136, 3.66092e-05, 0, 0.0694793, 0.897554, 3.84162e-05, 0, 0.0875342, 0.884691, 4.30971e-05, 0, 0.107749, 0.869414, 4.47803e-05, 0, 0.130087, 0.853462, 4.52858e-05, 0, 0.154481, 0.838187, 4.95769e-05, 0, 0.180833, 0.820381, 5.02709e-05, 0, 0.209005, 0.801844, 5.22713e-05, 0, 0.238791, 0.783061, 5.41505e-05, 0, 0.269869, 0.763205, 5.53712e-05, 0, 0.301587, 0.742362, 5.64909e-05, 0, 0.333333, 0.721393, 5.72646e-05, 0, 0.365079, 0.699676, 5.81012e-05, 0, 0.396825, 0.677395, 5.8096e-05, 0, 0.428571, 0.655208, 5.85766e-05, 0, 0.460317, 0.632451, 5.83602e-05, 0, 0.492064, 0.609839, 5.80234e-05, 0, 0.52381, 0.587093, 5.77161e-05, 0, 0.555556, 0.564467, 5.68447e-05, 0, 0.587302, 0.542043, 5.63166e-05, 0, 0.619048, 0.519826, 5.5156e-05, 0, 0.650794, 0.497952, 5.41682e-05, 0, 0.68254, 0.476477, 5.28971e-05, 0, 0.714286, 0.455412, 5.14952e-05, 0, 0.746032, 0.434926, 5.02222e-05, 0, 0.777778, 0.4149, 4.85779e-05, 0, 0.809524, 0.395552, 4.72242e-05, 0, 0.84127, 0.376712, 4.54891e-05, 0, 0.873016, 0.358622, 4.40924e-05, 0, 0.904762, 0.341048, 4.22984e-05, 0, 0.936508, 0.324262, 4.08582e-05, 0, 0.968254, 0.308013, 3.90839e-05, 0, 1, 1, 6.13913e-11, 0, 0, 1, 6.14145e-11, 0, 0, 1, 6.17708e-11, 0, 0, 1, 6.33717e-11, 0, 0, 1, 6.81648e-11, 0, 0, 1, 8.08291e-11, 0, 0, 1, 1.14608e-10, 0, 0, 0.999998, 2.10507e-10, 0, 0, 0.999997, 4.99595e-10, 0, 0, 0.999995, 1.39897e-09, 0, 0, 0.999994, 4.19818e-09, 0, 0, 0.999988, 1.27042e-08, 0, 0, 0.999979, 3.75153e-08, 0, 0, 0.999965, 1.06206e-07, 0, 0, 0.999945, 2.85381e-07, 0, 0, 0.999908, 7.23611e-07, 0, 0, 0.999846, 1.7255e-06, 0, 0, 0.999733, 3.86104e-06, 0, 0, 0.999511, 8.08493e-06, 0, 0, 0.998993, 1.56884e-05, 0, 0, 0.997326, 2.65538e-05, 0, 0, 0.989706, 2.06466e-05, 0, 0, 0.981713, 1.30756e-05, 0, 7.0005e-06, 0.973636, 1.06473e-05, 0, 0.000464797, 0.966509, 1.0194e-05, 0, 0.00201743, 0.965149, 1.65881e-05, 0, 0.00497549, 0.962669, 2.49147e-05, 0, 0.00953262, 0.95786, 3.17449e-05, 0, 0.0158211, 0.949334, 2.81045e-05, 0, 0.0239343, 0.941041, 3.03263e-05, 0, 0.0339372, 0.931575, 3.56754e-05, 0, 0.0458738, 0.920102, 3.97075e-05, 0, 0.059772, 0.908002, 3.84886e-05, 0, 0.075645, 0.897269, 4.3027e-05, 0, 0.0934929, 0.884559, 4.79925e-05, 0, 0.113302, 0.869161, 4.8246e-05, 0, 0.135045, 0.853342, 5.09505e-05, 0, 0.158678, 0.837633, 5.42846e-05, 0, 0.184136, 0.820252, 5.54139e-05, 0, 0.211325, 0.801872, 5.81412e-05, 0, 0.240113, 0.782418, 5.85535e-05, 0, 0.270306, 0.7631, 6.10923e-05, 0, 0.301594, 0.742183, 6.13678e-05, 0, 0.333333, 0.721098, 6.27275e-05, 0, 0.365079, 0.699512, 6.29413e-05, 0, 0.396825, 0.677372, 6.36351e-05, 0, 0.428571, 0.655059, 6.33555e-05, 0, 0.460317, 0.632567, 6.36513e-05, 0, 0.492064, 0.609784, 6.28965e-05, 0, 0.52381, 0.587237, 6.25546e-05, 0, 0.555556, 0.564525, 6.15825e-05, 0, 0.587302, 0.542181, 6.05048e-05, 0, 0.619048, 0.520017, 5.96329e-05, 0, 0.650794, 0.498204, 5.81516e-05, 0, 0.68254, 0.476742, 5.69186e-05, 0, 0.714286, 0.455803, 5.53833e-05, 0, 0.746032, 0.435251, 5.37807e-05, 0, 0.777778, 0.415374, 5.22025e-05, 0, 0.809524, 0.395921, 5.03421e-05, 0, 0.84127, 0.377253, 4.88211e-05, 0, 0.873016, 0.359021, 4.68234e-05, 0, 0.904762, 0.341637, 4.53269e-05, 0, 0.936508, 0.3247, 4.33014e-05, 0, 0.968254, 0.308625, 4.18007e-05, 0, 1, 1, 2.86798e-10, 0, 0, 1, 2.86877e-10, 0, 0, 1, 2.88094e-10, 0, 0, 1, 2.93506e-10, 0, 0, 1, 3.09262e-10, 0, 0, 0.999999, 3.48593e-10, 0, 0, 0.999999, 4.44582e-10, 0, 0, 0.999998, 6.88591e-10, 0, 0, 0.999996, 1.34391e-09, 0, 0, 0.999993, 3.17438e-09, 0, 0, 0.999989, 8.35609e-09, 0, 0, 0.999983, 2.28677e-08, 0, 0, 0.999974, 6.23361e-08, 0, 0, 0.999959, 1.65225e-07, 0, 0, 0.999936, 4.19983e-07, 0, 0, 0.999896, 1.01546e-06, 0, 0, 0.99983, 2.32376e-06, 0, 0, 0.999709, 5.0156e-06, 0, 0, 0.999469, 1.0167e-05, 0, 0, 0.998886, 1.90775e-05, 0, 0, 0.996819, 3.00511e-05, 0, 0, 0.988837, 1.85092e-05, 0, 1.68222e-07, 0.982178, 1.34622e-05, 0, 0.000259622, 0.975017, 1.25961e-05, 0, 0.00142595, 0.967101, 1.3507e-05, 0, 0.00382273, 0.964905, 2.05003e-05, 0, 0.00764164, 0.96218, 2.9546e-05, 0, 0.0130121, 0.956821, 3.43738e-05, 0, 0.0200253, 0.948829, 3.05063e-05, 0, 0.0287452, 0.941092, 3.46487e-05, 0, 0.039218, 0.931883, 4.12061e-05, 0, 0.0514748, 0.920211, 4.44651e-05, 0, 0.0655351, 0.907307, 4.31252e-05, 0, 0.0814082, 0.89684, 4.90382e-05, 0, 0.0990939, 0.884119, 5.3334e-05, 0, 0.118583, 0.869148, 5.4114e-05, 0, 0.139856, 0.853377, 5.78536e-05, 0, 0.162882, 0.836753, 5.92285e-05, 0, 0.187615, 0.820063, 6.22787e-05, 0, 0.213991, 0.801694, 6.45492e-05, 0, 0.241918, 0.782116, 6.5353e-05, 0, 0.271267, 0.762673, 6.74344e-05, 0, 0.301847, 0.742133, 6.82788e-05, 0, 0.333333, 0.720779, 6.91959e-05, 0, 0.365079, 0.699386, 6.96817e-05, 0, 0.396826, 0.67732, 6.99583e-05, 0, 0.428572, 0.654888, 6.98447e-05, 0, 0.460318, 0.632499, 6.94063e-05, 0, 0.492064, 0.609825, 6.91612e-05, 0, 0.52381, 0.587287, 6.81576e-05, 0, 0.555556, 0.564743, 6.74138e-05, 0, 0.587302, 0.542409, 6.61617e-05, 0, 0.619048, 0.520282, 6.47785e-05, 0, 0.650794, 0.498506, 6.33836e-05, 0, 0.68254, 0.477102, 6.15905e-05, 0, 0.714286, 0.456167, 6.01013e-05, 0, 0.746032, 0.435728, 5.81457e-05, 0, 0.777778, 0.415809, 5.64215e-05, 0, 0.809524, 0.396517, 5.44997e-05, 0, 0.84127, 0.377737, 5.25061e-05, 0, 0.873016, 0.359698, 5.06831e-05, 0, 0.904762, 0.342164, 4.8568e-05, 0, 0.936508, 0.325417, 4.67826e-05, 0, 0.968254, 0.309186, 4.46736e-05, 0, 1, 1, 1.09018e-09, 0, 0, 1, 1.0904e-09, 0, 0, 1, 1.09393e-09, 0, 0, 1, 1.1095e-09, 0, 0, 1, 1.154e-09, 0, 0, 1, 1.26089e-09, 0, 0, 0.999999, 1.5059e-09, 0, 0, 0.999997, 2.07899e-09, 0, 0, 0.999994, 3.48164e-09, 0, 0, 0.999993, 7.05728e-09, 0, 0, 0.999987, 1.63692e-08, 0, 0, 0.999981, 4.06033e-08, 0, 0, 0.999969, 1.0245e-07, 0, 0, 0.999953, 2.55023e-07, 0, 0, 0.999925, 6.1511e-07, 0, 0, 0.999881, 1.42218e-06, 0, 0, 0.99981, 3.13086e-06, 0, 0, 0.99968, 6.53119e-06, 0, 0, 0.999418, 1.2832e-05, 0, 0, 0.998748, 2.32497e-05, 0, 0, 0.996066, 3.29522e-05, 0, 0, 0.988379, 1.79613e-05, 0, 0.000108799, 0.982567, 1.43715e-05, 0, 0.000921302, 0.976097, 1.48096e-05, 0, 0.00280738, 0.968475, 1.78905e-05, 0, 0.00596622, 0.964606, 2.53921e-05, 0, 0.0105284, 0.961564, 3.48623e-05, 0, 0.0165848, 0.955517, 3.57612e-05, 0, 0.0242, 0.948381, 3.43493e-05, 0, 0.03342, 0.941095, 4.05849e-05, 0, 0.0442777, 0.931923, 4.75394e-05, 0, 0.0567958, 0.91996, 4.84328e-05, 0, 0.0709879, 0.907419, 5.02146e-05, 0, 0.086861, 0.89618, 5.61654e-05, 0, 0.104415, 0.88337, 5.87612e-05, 0, 0.123643, 0.869046, 6.18057e-05, 0, 0.144531, 0.853278, 6.57392e-05, 0, 0.167057, 0.836091, 6.6303e-05, 0, 0.191188, 0.819644, 7.04445e-05, 0, 0.216878, 0.801246, 7.14071e-05, 0, 0.244062, 0.782031, 7.40093e-05, 0, 0.272649, 0.762066, 7.4685e-05, 0, 0.302509, 0.741964, 7.66647e-05, 0, 0.333442, 0.720554, 7.66328e-05, 0, 0.365079, 0.699098, 7.77857e-05, 0, 0.396826, 0.677189, 7.74633e-05, 0, 0.428572, 0.65484, 7.76235e-05, 0, 0.460318, 0.632496, 7.70316e-05, 0, 0.492064, 0.609908, 7.62669e-05, 0, 0.52381, 0.587312, 7.53972e-05, 0, 0.555556, 0.564938, 7.39994e-05, 0, 0.587302, 0.542577, 7.28382e-05, 0, 0.619048, 0.52062, 7.1112e-05, 0, 0.650794, 0.498819, 6.94004e-05, 0, 0.68254, 0.477555, 6.75575e-05, 0, 0.714286, 0.456568, 6.53449e-05, 0, 0.746032, 0.436278, 6.36068e-05, 0, 0.777778, 0.41637, 6.13466e-05, 0, 0.809524, 0.397144, 5.94177e-05, 0, 0.84127, 0.378412, 5.70987e-05, 0, 0.873016, 0.360376, 5.50419e-05, 0, 0.904762, 0.342906, 5.27422e-05, 0, 0.936508, 0.326136, 5.06544e-05, 0, 0.968254, 0.30997, 4.84307e-05, 0, 1, 1, 3.54014e-09, 0, 0, 1, 3.54073e-09, 0, 0, 1, 3.54972e-09, 0, 0, 1, 3.58929e-09, 0, 0, 1, 3.70093e-09, 0, 0, 0.999999, 3.96194e-09, 0, 0, 0.999998, 4.53352e-09, 0, 0, 0.999997, 5.78828e-09, 0, 0, 0.999994, 8.63812e-09, 0, 0, 0.999991, 1.53622e-08, 0, 0, 0.999985, 3.16356e-08, 0, 0, 0.999977, 7.12781e-08, 0, 0, 0.999964, 1.66725e-07, 0, 0, 0.999945, 3.90501e-07, 0, 0, 0.999912, 8.95622e-07, 0, 0, 0.999866, 1.98428e-06, 0, 0, 0.999786, 4.21038e-06, 0, 0, 0.999647, 8.50239e-06, 0, 0, 0.999356, 1.62059e-05, 0, 0, 0.998563, 2.82652e-05, 0, 0, 0.994928, 3.36309e-05, 0, 2.44244e-05, 0.987999, 1.78458e-05, 0, 0.000523891, 0.982893, 1.59162e-05, 0, 0.00194729, 0.977044, 1.78056e-05, 0, 0.00451099, 0.969972, 2.30624e-05, 0, 0.00835132, 0.964237, 3.13922e-05, 0, 0.013561, 0.960791, 4.06145e-05, 0, 0.0202056, 0.954292, 3.72796e-05, 0, 0.0283321, 0.948052, 4.03199e-05, 0, 0.0379739, 0.940938, 4.79537e-05, 0, 0.0491551, 0.931689, 5.45292e-05, 0, 0.0618918, 0.91987, 5.4038e-05, 0, 0.0761941, 0.907665, 5.89909e-05, 0, 0.0920672, 0.895281, 6.42651e-05, 0, 0.109511, 0.882621, 6.59707e-05, 0, 0.12852, 0.86873, 7.09973e-05, 0, 0.149085, 0.853008, 7.42221e-05, 0, 0.171189, 0.835944, 7.61754e-05, 0, 0.194809, 0.818949, 7.97052e-05, 0, 0.21991, 0.800951, 8.12434e-05, 0, 0.246447, 0.781847, 8.38075e-05, 0, 0.274352, 0.761649, 8.4501e-05, 0, 0.303535, 0.74152, 8.60258e-05, 0, 0.333857, 0.720495, 8.66233e-05, 0, 0.365104, 0.698742, 8.68326e-05, 0, 0.396826, 0.677096, 8.7133e-05, 0, 0.428572, 0.654782, 8.63497e-05, 0, 0.460318, 0.632335, 8.60206e-05, 0, 0.492064, 0.610031, 8.49337e-05, 0, 0.52381, 0.587457, 8.38279e-05, 0, 0.555556, 0.56513, 8.2309e-05, 0, 0.587302, 0.542877, 8.03542e-05, 0, 0.619048, 0.5209, 7.86928e-05, 0, 0.650794, 0.499291, 7.65171e-05, 0, 0.68254, 0.477971, 7.44753e-05, 0, 0.714286, 0.457221, 7.2209e-05, 0, 0.746032, 0.436803, 6.97448e-05, 0, 0.777778, 0.417083, 6.75333e-05, 0, 0.809524, 0.397749, 6.48058e-05, 0, 0.84127, 0.379177, 6.25759e-05, 0, 0.873016, 0.361061, 5.98584e-05, 0, 0.904762, 0.343713, 5.75797e-05, 0, 0.936508, 0.326894, 5.49999e-05, 0, 0.968254, 0.310816, 5.27482e-05, 0, 1, 1, 1.0153e-08, 0, 0, 1, 1.01544e-08, 0, 0, 1, 1.01751e-08, 0, 0, 1, 1.02662e-08, 0, 0, 1, 1.0521e-08, 0, 0, 0.999999, 1.11049e-08, 0, 0, 0.999999, 1.23408e-08, 0, 0, 0.999996, 1.4924e-08, 0, 0, 0.999992, 2.04471e-08, 0, 0, 0.999989, 3.26539e-08, 0, 0, 0.99998, 6.03559e-08, 0, 0, 0.999971, 1.23936e-07, 0, 0, 0.999955, 2.69058e-07, 0, 0, 0.999933, 5.93604e-07, 0, 0, 0.999901, 1.29633e-06, 0, 0, 0.999847, 2.75621e-06, 0, 0, 0.999761, 5.64494e-06, 0, 0, 0.999607, 1.10485e-05, 0, 0, 0.999282, 2.04388e-05, 0, 0, 0.99831, 3.41084e-05, 0, 2.2038e-07, 0.993288, 2.94949e-05, 0, 0.000242388, 0.987855, 1.92736e-05, 0, 0.0012503, 0.983167, 1.82383e-05, 0, 0.0032745, 0.977908, 2.18633e-05, 0, 0.00646321, 0.971194, 2.90662e-05, 0, 0.0109133, 0.963867, 3.86401e-05, 0, 0.0166927, 0.95982, 4.62827e-05, 0, 0.0238494, 0.953497, 4.20705e-05, 0, 0.0324178, 0.947621, 4.77743e-05, 0, 0.0424225, 0.940611, 5.68258e-05, 0, 0.0538808, 0.931174, 6.18061e-05, 0, 0.0668047, 0.919919, 6.27098e-05, 0, 0.0812014, 0.907856, 6.94714e-05, 0, 0.0970745, 0.894509, 7.35008e-05, 0, 0.114424, 0.881954, 7.63369e-05, 0, 0.133246, 0.868309, 8.21896e-05, 0, 0.153534, 0.852511, 8.3769e-05, 0, 0.175275, 0.835821, 8.81615e-05, 0, 0.198453, 0.817981, 8.96368e-05, 0, 0.223042, 0.800504, 9.30906e-05, 0, 0.249009, 0.78141, 9.45056e-05, 0, 0.276304, 0.761427, 9.63605e-05, 0, 0.304862, 0.74094, 9.68088e-05, 0, 0.334584, 0.720233, 9.81481e-05, 0, 0.365322, 0.698592, 9.79122e-05, 0, 0.396826, 0.676763, 9.81057e-05, 0, 0.428571, 0.654808, 9.73956e-05, 0, 0.460318, 0.632326, 9.62619e-05, 0, 0.492064, 0.610049, 9.52996e-05, 0, 0.52381, 0.58763, 9.33334e-05, 0, 0.555556, 0.565261, 9.17573e-05, 0, 0.587302, 0.543244, 8.96636e-05, 0, 0.619048, 0.521273, 8.73304e-05, 0, 0.650794, 0.499818, 8.52648e-05, 0, 0.68254, 0.478536, 8.23961e-05, 0, 0.714286, 0.457826, 7.9939e-05, 0, 0.746032, 0.437549, 7.7126e-05, 0, 0.777778, 0.41776, 7.43043e-05, 0, 0.809524, 0.39863, 7.16426e-05, 0, 0.84127, 0.379954, 6.86456e-05, 0, 0.873016, 0.362025, 6.60514e-05, 0, 0.904762, 0.344581, 6.30755e-05, 0, 0.936508, 0.327909, 6.05439e-05, 0, 0.968254, 0.311736, 5.76345e-05, 0, 1, 1, 2.63344e-08, 0, 0, 1, 2.63373e-08, 0, 0, 1, 2.63815e-08, 0, 0, 1, 2.65753e-08, 0, 0, 1, 2.71132e-08, 0, 0, 0.999999, 2.83279e-08, 0, 0, 0.999997, 3.0833e-08, 0, 0, 0.999995, 3.58711e-08, 0, 0, 0.999992, 4.61266e-08, 0, 0, 0.999985, 6.7574e-08, 0, 0, 0.999977, 1.1358e-07, 0, 0, 0.999966, 2.13657e-07, 0, 0, 0.999948, 4.31151e-07, 0, 0, 0.999923, 8.96656e-07, 0, 0, 0.999884, 1.86603e-06, 0, 0, 0.999826, 3.81115e-06, 0, 0, 0.999732, 7.54184e-06, 0, 0, 0.999561, 1.43192e-05, 0, 0, 0.999191, 2.57061e-05, 0, 0, 0.997955, 4.05724e-05, 0, 7.44132e-05, 0.992228, 2.76537e-05, 0, 0.000716477, 0.987638, 2.08885e-05, 0, 0.0022524, 0.983395, 2.15226e-05, 0, 0.00484816, 0.978614, 2.70795e-05, 0, 0.00860962, 0.972389, 3.65282e-05, 0, 0.0136083, 0.964392, 4.74747e-05, 0, 0.0198941, 0.95861, 5.09141e-05, 0, 0.0275023, 0.952806, 4.8963e-05, 0, 0.0364584, 0.94712, 5.71119e-05, 0, 0.04678, 0.940104, 6.71704e-05, 0, 0.0584799, 0.930398, 6.87586e-05, 0, 0.0715665, 0.919866, 7.38161e-05, 0, 0.086045, 0.907853, 8.13235e-05, 0, 0.101918, 0.894078, 8.34582e-05, 0, 0.119186, 0.881177, 8.92093e-05, 0, 0.137845, 0.867575, 9.44548e-05, 0, 0.157891, 0.852107, 9.69607e-05, 0, 0.179316, 0.835502, 0.000101456, 0, 0.202106, 0.81756, 0.000103256, 0, 0.226243, 0.79984, 0.000106954, 0, 0.251704, 0.780998, 0.000108066, 0, 0.278451, 0.761132, 0.000110111, 0, 0.306436, 0.740429, 0.000110459, 0, 0.335586, 0.719836, 0.000111219, 0, 0.365796, 0.698467, 0.00011145, 0, 0.3969, 0.676446, 0.000110393, 0, 0.428571, 0.654635, 0.000110035, 0, 0.460318, 0.632411, 0.000108548, 0, 0.492064, 0.609986, 0.000106963, 0, 0.52381, 0.587872, 0.000105238, 0, 0.555556, 0.565528, 0.000102665, 0, 0.587302, 0.543563, 0.000100543, 0, 0.619048, 0.52176, 9.76182e-05, 0, 0.650794, 0.500188, 9.47099e-05, 0, 0.68254, 0.479204, 9.19929e-05, 0, 0.714286, 0.458413, 8.86139e-05, 0, 0.746032, 0.438314, 8.57839e-05, 0, 0.777778, 0.418573, 8.2411e-05, 0, 0.809524, 0.39947, 7.92211e-05, 0, 0.84127, 0.380892, 7.59546e-05, 0, 0.873016, 0.362953, 7.27571e-05, 0, 0.904762, 0.345601, 6.95738e-05, 0, 0.936508, 0.328895, 6.64907e-05, 0, 0.968254, 0.312808, 6.34277e-05, 0, 1, 1, 6.28647e-08, 0, 0, 1, 6.28705e-08, 0, 0, 1, 6.29587e-08, 0, 0, 1, 6.33441e-08, 0, 0, 0.999999, 6.44087e-08, 0, 0, 0.999998, 6.67856e-08, 0, 0, 0.999997, 7.15889e-08, 0, 0, 0.999995, 8.09577e-08, 0, 0, 0.999989, 9.92764e-08, 0, 0, 0.999983, 1.35834e-07, 0, 0, 0.999974, 2.10482e-07, 0, 0, 0.999959, 3.65215e-07, 0, 0, 0.999939, 6.86693e-07, 0, 0, 0.999911, 1.3472e-06, 0, 0, 0.999868, 2.6731e-06, 0, 0, 0.999804, 5.24756e-06, 0, 0, 0.9997, 1.00403e-05, 0, 0, 0.99951, 1.85019e-05, 0, 0, 0.999078, 3.22036e-05, 0, 6.20676e-06, 0.997428, 4.70002e-05, 0, 0.000341552, 0.99162, 2.87123e-05, 0, 0.00143727, 0.987479, 2.34706e-05, 0, 0.00349201, 0.983582, 2.60083e-05, 0, 0.0066242, 0.979186, 3.37927e-05, 0, 0.0109113, 0.97325, 4.54689e-05, 0, 0.0164064, 0.965221, 5.73759e-05, 0, 0.0231463, 0.957262, 5.44114e-05, 0, 0.0311571, 0.952211, 5.87006e-05, 0, 0.0404572, 0.946631, 6.92256e-05, 0, 0.0510592, 0.939391, 7.87819e-05, 0, 0.0629723, 0.929795, 7.92368e-05, 0, 0.0762025, 0.91965, 8.75075e-05, 0, 0.090753, 0.907737, 9.50903e-05, 0, 0.106626, 0.893899, 9.72963e-05, 0, 0.123822, 0.880239, 0.00010459, 0, 0.142337, 0.866562, 0.000107689, 0, 0.16217, 0.85164, 0.000113081, 0, 0.183314, 0.835021, 0.000116636, 0, 0.20576, 0.817311, 0.000120074, 0, 0.229496, 0.798845, 0.000121921, 0, 0.254502, 0.780479, 0.00012475, 0, 0.280753, 0.760694, 0.000125255, 0, 0.308212, 0.740142, 0.000126719, 0, 0.336825, 0.719248, 0.00012636, 0, 0.366517, 0.698209, 0.000126712, 0, 0.397167, 0.676398, 0.000125769, 0, 0.428578, 0.654378, 0.000124432, 0, 0.460318, 0.632484, 0.000123272, 0, 0.492064, 0.610113, 0.00012085, 0, 0.52381, 0.587931, 0.000118411, 0, 0.555556, 0.565872, 0.00011569, 0, 0.587302, 0.543814, 0.000112521, 0, 0.619048, 0.522265, 0.000109737, 0, 0.650794, 0.500835, 0.000106228, 0, 0.68254, 0.479818, 0.000102591, 0, 0.714286, 0.459258, 9.91288e-05, 0, 0.746032, 0.439061, 9.52325e-05, 0, 0.777778, 0.419552, 9.1895e-05, 0, 0.809524, 0.400399, 8.79051e-05, 0, 0.84127, 0.381976, 8.44775e-05, 0, 0.873016, 0.364009, 8.06316e-05, 0, 0.904762, 0.346761, 7.71848e-05, 0, 0.936508, 0.330049, 7.35429e-05, 0, 0.968254, 0.314018, 7.02103e-05, 0, 1, 1, 1.39968e-07, 0, 0, 1, 1.39979e-07, 0, 0, 1, 1.40145e-07, 0, 0, 1, 1.4087e-07, 0, 0, 0.999999, 1.42865e-07, 0, 0, 0.999998, 1.47279e-07, 0, 0, 0.999997, 1.56057e-07, 0, 0, 0.999992, 1.7276e-07, 0, 0, 0.999989, 2.04352e-07, 0, 0, 0.99998, 2.6494e-07, 0, 0, 0.999969, 3.83435e-07, 0, 0, 0.999953, 6.18641e-07, 0, 0, 0.999929, 1.08755e-06, 0, 0, 0.999898, 2.01497e-06, 0, 0, 0.999849, 3.81346e-06, 0, 0, 0.999778, 7.19815e-06, 0, 0, 0.999661, 1.33215e-05, 0, 0, 0.999451, 2.38313e-05, 0, 0, 0.998936, 4.01343e-05, 0, 0.000113724, 0.99662, 5.17346e-05, 0, 0.000820171, 0.991094, 3.04323e-05, 0, 0.00238143, 0.987487, 2.81757e-05, 0, 0.00493527, 0.983731, 3.20048e-05, 0, 0.00856859, 0.979647, 4.23905e-05, 0, 0.0133393, 0.973837, 5.62935e-05, 0, 0.0192863, 0.96584, 6.77442e-05, 0, 0.0264369, 0.956309, 6.23073e-05, 0, 0.03481, 0.951523, 7.04131e-05, 0, 0.0444184, 0.946003, 8.36594e-05, 0, 0.0552713, 0.938454, 9.11736e-05, 0, 0.0673749, 0.929279, 9.38264e-05, 0, 0.0807329, 0.919239, 0.000103754, 0, 0.0953479, 0.907293, 0.000109928, 0, 0.111221, 0.893936, 0.000115257, 0, 0.128352, 0.879674, 0.000122265, 0, 0.14674, 0.865668, 0.000125733, 0, 0.166382, 0.850998, 0.000132305, 0, 0.187276, 0.834498, 0.000134844, 0, 0.209413, 0.816903, 0.000139276, 0, 0.232786, 0.798235, 0.000140984, 0, 0.257382, 0.779724, 0.00014378, 0, 0.283181, 0.760251, 0.000144623, 0, 0.310156, 0.739808, 0.000145228, 0, 0.338269, 0.718762, 0.00014539, 0, 0.367461, 0.697815, 0.000144432, 0, 0.397646, 0.67631, 0.000143893, 0, 0.428685, 0.654278, 0.000141846, 0, 0.460318, 0.632347, 0.00013935, 0, 0.492064, 0.610296, 0.000137138, 0, 0.52381, 0.588039, 0.000133806, 0, 0.555556, 0.566218, 0.000130755, 0, 0.587302, 0.544346, 0.000127128, 0, 0.619048, 0.522701, 0.000123002, 0, 0.650794, 0.501542, 0.000119443, 0, 0.68254, 0.480508, 0.000115055, 0, 0.714286, 0.460092, 0.000111032, 0, 0.746032, 0.440021, 0.000106635, 0, 0.777778, 0.420446, 0.000102162, 0, 0.809524, 0.401512, 9.8184e-05, 0, 0.84127, 0.38299, 9.36497e-05, 0, 0.873016, 0.365232, 8.9813e-05, 0, 0.904762, 0.347865, 8.53073e-05, 0, 0.936508, 0.331342, 8.17068e-05, 0, 0.968254, 0.315202, 7.73818e-05, 0, 1, 1, 2.9368e-07, 0, 0, 1, 2.937e-07, 0, 0, 1, 2.93998e-07, 0, 0, 1, 2.95298e-07, 0, 0, 0.999999, 2.98865e-07, 0, 0, 0.999998, 3.067e-07, 0, 0, 0.999995, 3.22082e-07, 0, 0, 0.999992, 3.50767e-07, 0, 0, 0.999986, 4.03538e-07, 0, 0, 0.999976, 5.01372e-07, 0, 0, 0.999964, 6.8562e-07, 0, 0, 0.999945, 1.0374e-06, 0, 0, 0.999919, 1.71269e-06, 0, 0, 0.999882, 3.00175e-06, 0, 0, 0.999829, 5.42144e-06, 0, 0, 0.999749, 9.84182e-06, 0, 0, 0.99962, 1.76213e-05, 0, 0, 0.999382, 3.05995e-05, 0, 1.38418e-05, 0.998751, 4.96686e-05, 0, 0.000389844, 0.995344, 5.10733e-05, 0, 0.00150343, 0.990768, 3.45829e-05, 0, 0.00352451, 0.987464, 3.42841e-05, 0, 0.00655379, 0.983846, 3.99072e-05, 0, 0.0106554, 0.980007, 5.33219e-05, 0, 0.0158723, 0.974494, 6.96992e-05, 0, 0.0222333, 0.96622, 7.76754e-05, 0, 0.029758, 0.956273, 7.47718e-05, 0, 0.0384596, 0.950952, 8.64611e-05, 0, 0.0483473, 0.945215, 0.000100464, 0, 0.0594266, 0.937287, 0.000103729, 0, 0.0717019, 0.928649, 0.000111665, 0, 0.0851752, 0.918791, 0.00012353, 0, 0.0998479, 0.906685, 0.000127115, 0, 0.115721, 0.893706, 0.00013628, 0, 0.132794, 0.879248, 0.000142427, 0, 0.151067, 0.864685, 0.000148091, 0, 0.170538, 0.850032, 0.000153517, 0, 0.191204, 0.833853, 0.000157322, 0, 0.213063, 0.816353, 0.000161086, 0, 0.236107, 0.797834, 0.000164111, 0, 0.260329, 0.778831, 0.000165446, 0, 0.285714, 0.759756, 0.000167492, 0, 0.312243, 0.739419, 0.000166928, 0, 0.339887, 0.718491, 0.000167, 0, 0.368604, 0.697392, 0.000165674, 0, 0.398329, 0.676102, 0.000163815, 0, 0.428961, 0.654243, 0.000162003, 0, 0.460331, 0.632176, 0.000158831, 0, 0.492064, 0.610407, 0.000155463, 0, 0.52381, 0.588394, 0.000152062, 0, 0.555556, 0.56645, 0.000147665, 0, 0.587302, 0.5449, 0.00014375, 0, 0.619048, 0.523276, 0.000138905, 0, 0.650794, 0.502179, 0.000134189, 0, 0.68254, 0.481359, 0.000129392, 0, 0.714286, 0.46092, 0.000124556, 0, 0.746032, 0.441084, 0.00011957, 0, 0.777778, 0.421517, 0.000114652, 0, 0.809524, 0.402721, 0.000109688, 0, 0.84127, 0.384222, 0.000104667, 0, 0.873016, 0.366534, 9.99633e-05, 0, 0.904762, 0.349205, 9.50177e-05, 0, 0.936508, 0.332702, 9.07301e-05, 0, 0.968254, 0.316599, 8.59769e-05, 0, 1, 1, 5.85473e-07, 0, 0, 1, 5.85507e-07, 0, 0, 1, 5.8602e-07, 0, 0, 0.999999, 5.88259e-07, 0, 0, 0.999999, 5.94381e-07, 0, 0, 0.999998, 6.07754e-07, 0, 0, 0.999995, 6.33729e-07, 0, 0, 0.99999, 6.8137e-07, 0, 0, 0.999984, 7.67003e-07, 0, 0, 0.999973, 9.21212e-07, 0, 0, 0.999959, 1.20218e-06, 0, 0, 0.999936, 1.72024e-06, 0, 0, 0.999907, 2.68088e-06, 0, 0, 0.999866, 4.45512e-06, 0, 0, 0.999806, 7.68481e-06, 0, 0, 0.999716, 1.342e-05, 0, 0, 0.999576, 2.32473e-05, 0, 0, 0.9993, 3.91694e-05, 0, 0.000129917, 0.998498, 6.08429e-05, 0, 0.000845035, 0.994132, 4.89743e-05, 0, 0.00237616, 0.99031, 3.84644e-05, 0, 0.00484456, 0.987409, 4.21768e-05, 0, 0.00832472, 0.983981, 5.04854e-05, 0, 0.0128643, 0.980268, 6.71028e-05, 0, 0.0184947, 0.974875, 8.52749e-05, 0, 0.025237, 0.966063, 8.5531e-05, 0, 0.0331046, 0.956779, 9.00588e-05, 0, 0.0421067, 0.950259, 0.00010577, 0, 0.0522487, 0.944239, 0.000119458, 0, 0.0635343, 0.936341, 0.000122164, 0, 0.0759654, 0.928047, 0.000134929, 0, 0.0895434, 0.918065, 0.000145544, 0, 0.104269, 0.906267, 0.000150531, 0, 0.120142, 0.893419, 0.000161652, 0, 0.137163, 0.878758, 0.00016593, 0, 0.15533, 0.863699, 0.000174014, 0, 0.174645, 0.848876, 0.000177877, 0, 0.195106, 0.833032, 0.000184049, 0, 0.21671, 0.815557, 0.000186088, 0, 0.239454, 0.797323, 0.00019054, 0, 0.263332, 0.778124, 0.000191765, 0, 0.288336, 0.758929, 0.000192535, 0, 0.314451, 0.738979, 0.000192688, 0, 0.341658, 0.718213, 0.000191522, 0, 0.369924, 0.696947, 0.000190491, 0, 0.399202, 0.675807, 0.000187913, 0, 0.429416, 0.654147, 0.000184451, 0, 0.460447, 0.63229, 0.000181442, 0, 0.492064, 0.610499, 0.000177139, 0, 0.523809, 0.588747, 0.000172596, 0, 0.555555, 0.566783, 0.000167457, 0, 0.587301, 0.545359, 0.000162518, 0, 0.619048, 0.523984, 0.000156818, 0, 0.650794, 0.502917, 0.000151884, 0, 0.68254, 0.482294, 0.000145514, 0, 0.714286, 0.461945, 0.000140199, 0, 0.746032, 0.442133, 0.000134101, 0, 0.777778, 0.422705, 0.000128374, 0, 0.809524, 0.403916, 0.000122996, 0, 0.84127, 0.38554, 0.000116808, 0, 0.873016, 0.367909, 0.000111973, 0, 0.904762, 0.350651, 0.000105938, 0, 0.936508, 0.334208, 0.000101355, 0, 0.968254, 0.318123, 9.57629e-05, 0, 1, 1, 1.11633e-06, 0, 0, 1, 1.11639e-06, 0, 0, 1, 1.11725e-06, 0, 0, 1, 1.12096e-06, 0, 0, 0.999999, 1.1311e-06, 0, 0, 0.999997, 1.15315e-06, 0, 0, 0.999995, 1.1956e-06, 0, 0, 0.999989, 1.27239e-06, 0, 0, 0.999981, 1.40772e-06, 0, 0, 0.999969, 1.64541e-06, 0, 0, 0.999952, 2.06607e-06, 0, 0, 0.999928, 2.81783e-06, 0, 0, 0.999895, 4.16835e-06, 0, 0, 0.999848, 6.58728e-06, 0, 0, 0.999781, 1.08648e-05, 0, 0, 0.999682, 1.82579e-05, 0, 0, 0.999523, 3.06003e-05, 0, 1.59122e-05, 0.999205, 4.99862e-05, 0, 0.000391184, 0.998131, 7.3306e-05, 0, 0.00147534, 0.993334, 5.13229e-05, 0, 0.0034227, 0.99016, 4.67783e-05, 0, 0.00632232, 0.987321, 5.23413e-05, 0, 0.0102295, 0.984099, 6.4267e-05, 0, 0.0151794, 0.980432, 8.43042e-05, 0, 0.0211947, 0.974976, 0.000102819, 0, 0.0282899, 0.966429, 9.96234e-05, 0, 0.0364739, 0.957633, 0.000111074, 0, 0.0457522, 0.949422, 0.000128644, 0, 0.0561278, 0.943045, 0.000140076, 0, 0.0676023, 0.935448, 0.000146349, 0, 0.0801762, 0.927225, 0.000161854, 0, 0.0938499, 0.917033, 0.000169135, 0, 0.108623, 0.905762, 0.000179987, 0, 0.124496, 0.892879, 0.000189832, 0, 0.141469, 0.878435, 0.000195881, 0, 0.159541, 0.863114, 0.00020466, 0, 0.178713, 0.84776, 0.000209473, 0, 0.198985, 0.832084, 0.000214861, 0, 0.220355, 0.814915, 0.000217695, 0, 0.242823, 0.796711, 0.000220313, 0, 0.266385, 0.777603, 0.00022313, 0, 0.291036, 0.757991, 0.000222471, 0, 0.316767, 0.738371, 0.000222869, 0, 0.343563, 0.717872, 0.000221243, 0, 0.371402, 0.696619, 0.000218089, 0, 0.400248, 0.675379, 0.00021562, 0, 0.430047, 0.65411, 0.00021169, 0, 0.460709, 0.63241, 0.000206947, 0, 0.492079, 0.61046, 0.000201709, 0, 0.52381, 0.58903, 0.000196753, 0, 0.555556, 0.567267, 0.000189637, 0, 0.587302, 0.545886, 0.000184735, 0, 0.619048, 0.524714, 0.000177257, 0, 0.650794, 0.503789, 0.000171424, 0, 0.68254, 0.483204, 0.000164688, 0, 0.714286, 0.462976, 0.000157172, 0, 0.746032, 0.443294, 0.000151341, 0, 0.777778, 0.423988, 0.000143737, 0, 0.809524, 0.405325, 0.000138098, 0, 0.84127, 0.386981, 0.000130698, 0, 0.873016, 0.369436, 0.000125276, 0, 0.904762, 0.35219, 0.000118349, 0, 0.936508, 0.335804, 0.00011312, 0, 0.968254, 0.319749, 0.000106687, 0, 1, 1, 2.04685e-06, 0, 0, 1, 2.04694e-06, 0, 0, 1, 2.04831e-06, 0, 0, 0.999999, 2.05428e-06, 0, 0, 0.999999, 2.07056e-06, 0, 0, 0.999997, 2.10581e-06, 0, 0, 0.999993, 2.1732e-06, 0, 0, 0.999987, 2.29365e-06, 0, 0, 0.999979, 2.50243e-06, 0, 0, 0.999965, 2.86127e-06, 0, 0, 0.999947, 3.48028e-06, 0, 0, 0.999918, 4.55588e-06, 0, 0, 0.999881, 6.43303e-06, 0, 0, 0.999828, 9.70064e-06, 0, 0, 0.999753, 1.53233e-05, 0, 0, 0.999642, 2.4793e-05, 0, 0, 0.999464, 4.02032e-05, 0, 0.000122947, 0.999089, 6.35852e-05, 0, 0.000807414, 0.997567, 8.57026e-05, 0, 0.00227206, 0.992903, 5.94912e-05, 0, 0.00462812, 0.990011, 5.78515e-05, 0, 0.00794162, 0.987192, 6.5399e-05, 0, 0.0122534, 0.98418, 8.19675e-05, 0, 0.0175888, 0.980491, 0.000105514, 0, 0.0239635, 0.974779, 0.000121532, 0, 0.031387, 0.96675, 0.000119144, 0, 0.0398644, 0.958248, 0.000136125, 0, 0.0493982, 0.948884, 0.000155408, 0, 0.0599896, 0.941673, 0.000162281, 0, 0.0716382, 0.934521, 0.000176754, 0, 0.0843437, 0.926205, 0.000192873, 0, 0.0981056, 0.916089, 0.000200038, 0, 0.112923, 0.904963, 0.000213624, 0, 0.128796, 0.892089, 0.000221834, 0, 0.145725, 0.878028, 0.000232619, 0, 0.163709, 0.86249, 0.000238632, 0, 0.182749, 0.846587, 0.000247002, 0, 0.202847, 0.830988, 0.000250702, 0, 0.224001, 0.814165, 0.000255562, 0, 0.246214, 0.796135, 0.000257505, 0, 0.269482, 0.777052, 0.000258625, 0, 0.293805, 0.757201, 0.000258398, 0, 0.319176, 0.737655, 0.000256714, 0, 0.345587, 0.717477, 0.000255187, 0, 0.373021, 0.696433, 0.000251792, 0, 0.401454, 0.675084, 0.000247223, 0, 0.430844, 0.653907, 0.000242213, 0, 0.461125, 0.632561, 0.000237397, 0, 0.492187, 0.610658, 0.000229313, 0, 0.52381, 0.589322, 0.000224402, 0, 0.555556, 0.567857, 0.000216116, 0, 0.587302, 0.54652, 0.000209124, 0, 0.619048, 0.525433, 0.000201601, 0, 0.650794, 0.504679, 0.000192957, 0, 0.68254, 0.484203, 0.000186052, 0, 0.714286, 0.464203, 0.000177672, 0, 0.746032, 0.444549, 0.000170005, 0, 0.777778, 0.425346, 0.000162401, 0, 0.809524, 0.406706, 0.0001544, 0, 0.84127, 0.388576, 0.000147437, 0, 0.873016, 0.37094, 0.000139493, 0, 0.904762, 0.353996, 0.000133219, 0, 0.936508, 0.337391, 0.000125573, 0, 0.968254, 0.321648, 0.000119867, 0, 1, 1, 3.62511e-06, 0, 0, 1, 3.62525e-06, 0, 0, 1, 3.62739e-06, 0, 0, 0.999999, 3.63673e-06, 0, 0, 0.999998, 3.66214e-06, 0, 0, 0.999996, 3.71698e-06, 0, 0, 0.999992, 3.82116e-06, 0, 0, 0.999986, 4.00554e-06, 0, 0, 0.999976, 4.32058e-06, 0, 0, 0.999961, 4.85194e-06, 0, 0, 0.999938, 5.74808e-06, 0, 0, 0.999908, 7.26643e-06, 0, 0, 0.999865, 9.84707e-06, 0, 0, 0.999807, 1.42217e-05, 0, 0, 0.999723, 2.15581e-05, 0, 0, 0.999602, 3.36114e-05, 0, 1.19113e-05, 0.999398, 5.27353e-05, 0, 0.000355813, 0.998946, 8.05809e-05, 0, 0.00137768, 0.996647, 9.42908e-05, 0, 0.00322469, 0.992298, 6.68733e-05, 0, 0.00597897, 0.989802, 7.16564e-05, 0, 0.00968903, 0.987019, 8.21355e-05, 0, 0.0143845, 0.984219, 0.000104555, 0, 0.0200831, 0.980425, 0.000131245, 0, 0.0267948, 0.974241, 0.000139613, 0, 0.034525, 0.967006, 0.000145931, 0, 0.0432757, 0.95893, 0.000167153, 0, 0.0530471, 0.949157, 0.000188146, 0, 0.0638386, 0.94062, 0.000194625, 0, 0.0756487, 0.933509, 0.000213721, 0, 0.0884762, 0.925088, 0.000229616, 0, 0.10232, 0.915178, 0.000239638, 0, 0.117178, 0.904093, 0.000254814, 0, 0.133051, 0.891337, 0.000263685, 0, 0.149939, 0.877326, 0.000274789, 0, 0.167841, 0.861794, 0.000280534, 0, 0.18676, 0.845758, 0.000289534, 0, 0.206696, 0.829792, 0.000294446, 0, 0.22765, 0.813037, 0.000296877, 0, 0.249625, 0.795285, 0.000300217, 0, 0.27262, 0.776323, 0.000299826, 0, 0.296636, 0.756673, 0.000299787, 0, 0.321671, 0.736856, 0.000297867, 0, 0.347718, 0.716883, 0.000294052, 0, 0.374768, 0.696089, 0.000289462, 0, 0.402804, 0.67505, 0.000285212, 0, 0.431796, 0.653509, 0.00027653, 0, 0.461695, 0.63258, 0.000271759, 0, 0.49242, 0.61104, 0.000262811, 0, 0.523822, 0.589567, 0.000255151, 0, 0.555556, 0.568322, 0.000246434, 0, 0.587302, 0.547235, 0.000237061, 0, 0.619048, 0.52616, 0.000228343, 0, 0.650794, 0.505716, 0.000219236, 0, 0.68254, 0.485274, 0.000209595, 0, 0.714286, 0.465411, 0.000201011, 0, 0.746032, 0.445854, 0.00019109, 0, 0.777778, 0.426911, 0.000182897, 0, 0.809524, 0.408222, 0.000173569, 0, 0.84127, 0.390307, 0.000165496, 0, 0.873016, 0.372624, 0.000156799, 0, 0.904762, 0.355804, 0.00014917, 0, 0.936508, 0.33924, 0.000140907, 0, 0.968254, 0.323534, 0.000134062, 0, 1, 1, 6.22487e-06, 0, 0, 1, 6.2251e-06, 0, 0, 1, 6.22837e-06, 0, 0, 0.999999, 6.24259e-06, 0, 0, 0.999998, 6.28127e-06, 0, 0, 0.999996, 6.36451e-06, 0, 0, 0.999991, 6.5218e-06, 0, 0, 0.999984, 6.79782e-06, 0, 0, 0.999973, 7.26361e-06, 0, 0, 0.999955, 8.03644e-06, 0, 0, 0.999931, 9.31397e-06, 0, 0, 0.999896, 1.14299e-05, 0, 0, 0.999847, 1.49402e-05, 0, 0, 0.999784, 2.07461e-05, 0, 0, 0.999692, 3.02493e-05, 0, 0, 0.999554, 4.54957e-05, 0, 9.97275e-05, 0.999326, 6.90762e-05, 0, 0.000724813, 0.998757, 0.000101605, 0, 0.0020972, 0.995367, 9.58745e-05, 0, 0.00432324, 0.99209, 8.32808e-05, 0, 0.00746347, 0.989517, 8.87601e-05, 0, 0.0115534, 0.987008, 0.00010564, 0, 0.0166134, 0.98421, 0.000133179, 0, 0.0226552, 0.98021, 0.000161746, 0, 0.0296838, 0.973676, 0.000161821, 0, 0.0377016, 0.967052, 0.000178635, 0, 0.0467079, 0.959385, 0.000206765, 0, 0.0567013, 0.949461, 0.00022476, 0, 0.0676796, 0.939578, 0.00023574, 0, 0.0796403, 0.932416, 0.00025893, 0, 0.0925812, 0.923759, 0.000271228, 0, 0.106501, 0.914223, 0.000289165, 0, 0.121397, 0.902942, 0.000301156, 0, 0.13727, 0.890419, 0.000313852, 0, 0.15412, 0.876639, 0.000324408, 0, 0.171946, 0.861316, 0.00033249, 0, 0.190751, 0.84496, 0.000338497, 0, 0.210537, 0.828427, 0.000345861, 0, 0.231305, 0.811871, 0.000347863, 0, 0.253057, 0.794397, 0.000350225, 0, 0.275797, 0.775726, 0.000349915, 0, 0.299525, 0.75617, 0.000347297, 0, 0.324242, 0.736091, 0.000344232, 0, 0.349947, 0.716213, 0.000340835, 0, 0.376633, 0.695736, 0.000332369, 0, 0.404289, 0.674961, 0.000327943, 0, 0.432895, 0.653518, 0.000318533, 0, 0.462415, 0.632574, 0.000310391, 0, 0.492788, 0.61134, 0.000300755, 0, 0.523909, 0.590017, 0.000290506, 0, 0.555556, 0.568752, 0.000280446, 0, 0.587302, 0.548061, 0.000269902, 0, 0.619048, 0.52711, 0.000258815, 0, 0.650794, 0.506682, 0.000248481, 0, 0.68254, 0.486524, 0.000237141, 0, 0.714286, 0.466812, 0.000226872, 0, 0.746032, 0.44732, 0.000216037, 0, 0.777778, 0.428473, 0.000205629, 0, 0.809524, 0.409921, 0.000195691, 0, 0.84127, 0.392028, 0.000185457, 0, 0.873016, 0.374606, 0.000176436, 0, 0.904762, 0.357601, 0.000166508, 0, 0.936508, 0.341348, 0.000158385, 0, 0.968254, 0.32542, 0.000149203, 0, 1, 1, 1.03967e-05, 0, 0, 1, 1.0397e-05, 0, 0, 1, 1.04019e-05, 0, 0, 0.999999, 1.04231e-05, 0, 0, 0.999998, 1.04806e-05, 0, 0, 0.999995, 1.06042e-05, 0, 0, 0.999991, 1.08366e-05, 0, 0, 0.999982, 1.12415e-05, 0, 0, 0.999968, 1.19174e-05, 0, 0, 0.99995, 1.30227e-05, 0, 0, 0.999922, 1.48176e-05, 0, 0, 0.999884, 1.77303e-05, 0, 0, 0.99983, 2.24564e-05, 0, 0, 0.999758, 3.00966e-05, 0, 0, 0.999654, 4.23193e-05, 0, 5.49083e-06, 0.999503, 6.14848e-05, 0, 0.000296087, 0.999237, 9.03576e-05, 0, 0.00123144, 0.998491, 0.0001271, 0, 0.00295954, 0.994594, 0.000107754, 0, 0.00555829, 0.99178, 0.000103025, 0, 0.00907209, 0.989265, 0.00011154, 0, 0.0135257, 0.986998, 0.000136296, 0, 0.0189327, 0.984137, 0.000169154, 0, 0.0252993, 0.979798, 0.000196671, 0, 0.0326272, 0.97337, 0.000196678, 0, 0.0409157, 0.967239, 0.000223121, 0, 0.0501623, 0.959543, 0.000253809, 0, 0.0603638, 0.949466, 0.000265972, 0, 0.0715171, 0.939074, 0.000288372, 0, 0.0836187, 0.931118, 0.000310983, 0, 0.0966657, 0.922525, 0.000325561, 0, 0.110656, 0.912983, 0.000345725, 0, 0.125588, 0.901617, 0.0003556, 0, 0.141461, 0.889487, 0.000374012, 0, 0.158275, 0.875787, 0.000383445, 0, 0.176031, 0.860654, 0.000393972, 0, 0.19473, 0.844417, 0.000400311, 0, 0.214374, 0.82741, 0.000405004, 0, 0.234967, 0.810545, 0.000407378, 0, 0.256512, 0.793312, 0.000407351, 0, 0.279011, 0.774847, 0.000406563, 0, 0.302468, 0.755621, 0.000404903, 0, 0.326887, 0.735511, 0.000397486, 0, 0.352266, 0.715435, 0.00039357, 0, 0.378605, 0.695403, 0.000384739, 0, 0.405897, 0.674681, 0.000376108, 0, 0.43413, 0.65359, 0.000365997, 0, 0.463277, 0.632471, 0.000354957, 0, 0.493295, 0.61151, 0.000343593, 0, 0.524106, 0.59064, 0.000331841, 0, 0.555561, 0.569386, 0.000318891, 0, 0.587302, 0.548785, 0.0003072, 0, 0.619048, 0.528146, 0.00029361, 0, 0.650794, 0.507872, 0.000281709, 0, 0.68254, 0.487805, 0.000268627, 0, 0.714286, 0.468196, 0.000255887, 0, 0.746032, 0.448922, 0.000243997, 0, 0.777778, 0.430093, 0.000231662, 0, 0.809524, 0.411845, 0.000220339, 0, 0.84127, 0.393808, 0.000208694, 0, 0.873016, 0.376615, 0.000198045, 0, 0.904762, 0.359655, 0.000187375, 0, 0.936508, 0.343452, 0.000177371, 0, 0.968254, 0.32765, 0.000167525, 0, 1, 1, 1.69351e-05, 0, 0, 1, 1.69356e-05, 0, 0, 1, 1.69427e-05, 0, 0, 0.999999, 1.69736e-05, 0, 0, 0.999998, 1.70575e-05, 0, 0, 0.999995, 1.72372e-05, 0, 0, 0.99999, 1.75739e-05, 0, 0, 0.999979, 1.81568e-05, 0, 0, 0.999966, 1.91206e-05, 0, 0, 0.999944, 2.0677e-05, 0, 0, 0.999912, 2.31644e-05, 0, 0, 0.999869, 2.71268e-05, 0, 0, 0.999811, 3.34272e-05, 0, 0, 0.99973, 4.33979e-05, 0, 0, 0.999617, 5.90083e-05, 0, 6.80315e-05, 0.999445, 8.29497e-05, 0, 0.000612796, 0.999138, 0.000118019, 0, 0.00187408, 0.998095, 0.000156712, 0, 0.00395791, 0.993919, 0.000125054, 0, 0.00692144, 0.991333, 0.000126091, 0, 0.0107962, 0.989226, 0.000144912, 0, 0.0155986, 0.986954, 0.000175737, 0, 0.0213364, 0.983982, 0.000213883, 0, 0.0280114, 0.979128, 0.000234526, 0, 0.0356226, 0.973327, 0.000243725, 0, 0.0441668, 0.967416, 0.0002773, 0, 0.0536399, 0.959729, 0.000308799, 0, 0.0640376, 0.949758, 0.000322447, 0, 0.0753554, 0.939173, 0.000350021, 0, 0.0875893, 0.9296, 0.000370089, 0, 0.100736, 0.921181, 0.000391365, 0, 0.114793, 0.91164, 0.000413636, 0, 0.129759, 0.900435, 0.000427068, 0, 0.145632, 0.888183, 0.000441046, 0, 0.162412, 0.874772, 0.000454968, 0, 0.180101, 0.859566, 0.000461882, 0, 0.1987, 0.843579, 0.000471556, 0, 0.218213, 0.826453, 0.000474335, 0, 0.238641, 0.809164, 0.000477078, 0, 0.259989, 0.792179, 0.00047755, 0, 0.282262, 0.773866, 0.000472573, 0, 0.305464, 0.754944, 0.000469765, 0, 0.329599, 0.735133, 0.000462371, 0, 0.35467, 0.714858, 0.000453674, 0, 0.380678, 0.694829, 0.000443888, 0, 0.407622, 0.674453, 0.000432052, 0, 0.435493, 0.653685, 0.000420315, 0, 0.464275, 0.632666, 0.000406829, 0, 0.493938, 0.611676, 0.000392234, 0, 0.524422, 0.591193, 0.000379208, 0, 0.555624, 0.570145, 0.00036319, 0, 0.587302, 0.549566, 0.000349111, 0, 0.619048, 0.529278, 0.000334166, 0, 0.650794, 0.509026, 0.000318456, 0, 0.68254, 0.489186, 0.00030449, 0, 0.714286, 0.469662, 0.000289051, 0, 0.746032, 0.450691, 0.000275494, 0, 0.777778, 0.431841, 0.000261437, 0, 0.809524, 0.413752, 0.000247846, 0, 0.84127, 0.395951, 0.000235085, 0, 0.873016, 0.378633, 0.000222245, 0, 0.904762, 0.36194, 0.000210533, 0, 0.936508, 0.345599, 0.000198494, 0, 0.968254, 0.329999, 0.000188133, 0, 1, 1, 2.69663e-05, 0, 0, 1, 2.6967e-05, 0, 0, 1, 2.69772e-05, 0, 0, 0.999999, 2.70214e-05, 0, 0, 0.999998, 2.71415e-05, 0, 0, 0.999994, 2.7398e-05, 0, 0, 0.999988, 2.78771e-05, 0, 0, 0.999977, 2.87019e-05, 0, 0, 0.999961, 3.00544e-05, 0, 0, 0.999937, 3.22138e-05, 0, 0, 0.999904, 3.56163e-05, 0, 0, 0.999854, 4.09465e-05, 0, 0, 0.99979, 4.92651e-05, 0, 0, 0.999699, 6.21722e-05, 0, 8.8288e-07, 0.999572, 8.19715e-05, 0, 0.000223369, 0.999381, 0.000111689, 0, 0.00105414, 0.999016, 0.000153862, 0, 0.0026493, 0.997437, 0.000187667, 0, 0.00508608, 0.993545, 0.000155672, 0, 0.00840554, 0.991135, 0.000161455, 0, 0.012629, 0.989157, 0.000188241, 0, 0.0177661, 0.986874, 0.000226229, 0, 0.0238198, 0.983714, 0.000268668, 0, 0.0307887, 0.978301, 0.000277109, 0, 0.0386688, 0.973227, 0.000303446, 0, 0.0474554, 0.967317, 0.000341851, 0, 0.0571428, 0.959477, 0.000370885, 0, 0.0677256, 0.950012, 0.000392753, 0, 0.0791988, 0.939484, 0.00042781, 0, 0.0915576, 0.928135, 0.000443866, 0, 0.104798, 0.919819, 0.000472959, 0, 0.118918, 0.910049, 0.000491551, 0, 0.133915, 0.899181, 0.000512616, 0, 0.149788, 0.886881, 0.000523563, 0, 0.166537, 0.87359, 0.000540183, 0, 0.184164, 0.858613, 0.000547386, 0, 0.202669, 0.842809, 0.000554809, 0, 0.222056, 0.825727, 0.000558316, 0, 0.242329, 0.808086, 0.000557824, 0, 0.263492, 0.790728, 0.000556346, 0, 0.285551, 0.772987, 0.000552672, 0, 0.30851, 0.7541, 0.000543738, 0, 0.332376, 0.734669, 0.000536107, 0, 0.357153, 0.714411, 0.000523342, 0, 0.382845, 0.694196, 0.000512238, 0, 0.409454, 0.674252, 0.000497465, 0, 0.436977, 0.65357, 0.000481096, 0, 0.465404, 0.632999, 0.000467054, 0, 0.494713, 0.611994, 0.000448771, 0, 0.524864, 0.591604, 0.000431889, 0, 0.555779, 0.571134, 0.000415238, 0, 0.587302, 0.550528, 0.000396369, 0, 0.619048, 0.530292, 0.000379477, 0, 0.650794, 0.510364, 0.000361488, 0, 0.68254, 0.490749, 0.000343787, 0, 0.714286, 0.471266, 0.000327822, 0, 0.746032, 0.452462, 0.000310626, 0, 0.777778, 0.433907, 0.000295352, 0, 0.809524, 0.415659, 0.000279179, 0, 0.84127, 0.398138, 0.000264685, 0, 0.873016, 0.380833, 0.000249905, 0, 0.904762, 0.364247, 0.000236282, 0, 0.936508, 0.348041, 0.000222905, 0, 0.968254, 0.332389, 0.000210522, 0, 1, 1, 4.20604e-05, 0, 0, 1, 4.20614e-05, 0, 0, 1, 4.20757e-05, 0, 0, 0.999999, 4.2138e-05, 0, 0, 0.999997, 4.23067e-05, 0, 0, 0.999993, 4.26668e-05, 0, 0, 0.999986, 4.33372e-05, 0, 0, 0.999974, 4.44857e-05, 0, 0, 0.999956, 4.63554e-05, 0, 0, 0.99993, 4.93105e-05, 0, 0, 0.999892, 5.39077e-05, 0, 0, 0.999838, 6.10005e-05, 0, 0, 0.999767, 7.18822e-05, 0, 0, 0.999666, 8.84581e-05, 0, 3.65471e-05, 0.999525, 0.000113398, 0, 0.000485623, 0.999311, 0.000150043, 0, 0.00162096, 0.998865, 0.000200063, 0, 0.00355319, 0.996278, 0.000211014, 0, 0.00633818, 0.992956, 0.000189672, 0, 0.0100043, 0.991017, 0.000210262, 0, 0.0145648, 0.989055, 0.000244292, 0, 0.0200237, 0.986741, 0.000290481, 0, 0.0263798, 0.983288, 0.000334303, 0, 0.033629, 0.977784, 0.000340307, 0, 0.0417652, 0.973037, 0.000377864, 0, 0.0507821, 0.967181, 0.0004239, 0, 0.060673, 0.958971, 0.000443854, 0, 0.0714314, 0.950093, 0.000483039, 0, 0.0830518, 0.939552, 0.000517934, 0, 0.0955288, 0.927678, 0.000539449, 0, 0.108859, 0.918278, 0.000568604, 0, 0.123038, 0.908449, 0.000588505, 0, 0.138065, 0.897713, 0.000612473, 0, 0.153938, 0.885533, 0.000625575, 0, 0.170657, 0.872131, 0.00063854, 0, 0.188224, 0.857517, 0.000647034, 0, 0.20664, 0.841796, 0.00065209, 0, 0.225909, 0.824726, 0.0006544, 0, 0.246035, 0.807297, 0.000655744, 0, 0.267022, 0.789058, 0.000646716, 0, 0.288878, 0.77189, 0.000643898, 0, 0.311607, 0.753082, 0.000629973, 0, 0.335216, 0.7341, 0.000621564, 0, 0.359713, 0.714094, 0.000605171, 0, 0.385103, 0.693839, 0.000588752, 0, 0.41139, 0.673891, 0.000573294, 0, 0.438576, 0.653565, 0.000552682, 0, 0.466656, 0.633326, 0.000533446, 0, 0.495617, 0.612582, 0.000514635, 0, 0.525431, 0.59205, 0.00049303, 0, 0.556041, 0.571918, 0.000471842, 0, 0.587338, 0.551572, 0.000451713, 0, 0.619048, 0.531553, 0.000430049, 0, 0.650794, 0.51175, 0.000410445, 0, 0.68254, 0.49238, 0.000390098, 0, 0.714286, 0.473143, 0.000370033, 0, 0.746032, 0.45423, 0.000351205, 0, 0.777778, 0.435963, 0.000332049, 0, 0.809524, 0.41787, 0.000315021, 0, 0.84127, 0.400387, 0.000297315, 0, 0.873016, 0.383332, 0.000281385, 0, 0.904762, 0.366665, 0.000265397, 0, 0.936508, 0.350633, 0.000250601, 0, 0.968254, 0.334964, 0.00023589, 0, 1, 1, 6.43736e-05, 0, 0, 1, 6.4375e-05, 0, 0, 1, 6.43947e-05, 0, 0, 0.999999, 6.4481e-05, 0, 0, 0.999997, 6.47143e-05, 0, 0, 0.999994, 6.52119e-05, 0, 0, 0.999985, 6.61359e-05, 0, 0, 0.999972, 6.77116e-05, 0, 0, 0.999952, 7.02599e-05, 0, 0, 0.999922, 7.42517e-05, 0, 0, 0.99988, 8.03906e-05, 0, 0, 0.99982, 8.97315e-05, 0, 0, 0.999741, 0.000103838, 0, 0, 0.999629, 0.00012496, 0, 0.000149024, 0.999474, 0.000156161, 0, 0.000861027, 0.999229, 0.000201034, 0, 0.00231198, 0.998662, 0.000259069, 0, 0.00458147, 0.995299, 0.000245439, 0, 0.00770895, 0.992732, 0.00024498, 0, 0.0117126, 0.990847, 0.000273211, 0, 0.0165989, 0.988911, 0.000316492, 0, 0.0223674, 0.98654, 0.00037161, 0, 0.0290135, 0.982636, 0.000410352, 0, 0.0365309, 0.977346, 0.000421756, 0, 0.0449117, 0.972909, 0.000475578, 0, 0.0541481, 0.966821, 0.000522482, 0, 0.0642326, 0.958686, 0.000545008, 0, 0.075158, 0.949754, 0.000589286, 0, 0.0869181, 0.939184, 0.000619995, 0, 0.0995074, 0.927505, 0.000654266, 0, 0.112922, 0.916606, 0.000682362, 0, 0.127157, 0.906707, 0.000704286, 0, 0.142212, 0.895937, 0.000725909, 0, 0.158085, 0.883913, 0.000743939, 0, 0.174776, 0.870642, 0.000755157, 0, 0.192287, 0.856241, 0.000764387, 0, 0.210619, 0.84069, 0.000771032, 0, 0.229775, 0.823728, 0.000765906, 0, 0.249761, 0.806481, 0.000767604, 0, 0.270582, 0.787924, 0.000754385, 0, 0.292243, 0.770588, 0.000749668, 0, 0.314753, 0.751991, 0.000731613, 0, 0.338118, 0.733407, 0.000717655, 0, 0.362347, 0.713688, 0.000700604, 0, 0.387447, 0.693595, 0.000678765, 0, 0.413424, 0.673426, 0.000657042, 0, 0.440284, 0.65359, 0.000635892, 0, 0.468027, 0.633576, 0.000611569, 0, 0.496645, 0.613144, 0.000586011, 0, 0.526122, 0.592711, 0.000563111, 0, 0.556417, 0.572722, 0.000537699, 0, 0.587451, 0.552762, 0.000512556, 0, 0.619048, 0.532985, 0.000489757, 0, 0.650794, 0.513219, 0.000464139, 0, 0.68254, 0.493992, 0.000442193, 0, 0.714286, 0.47509, 0.000418629, 0, 0.746032, 0.456287, 0.000397045, 0, 0.777778, 0.438152, 0.000375504, 0, 0.809524, 0.420294, 0.00035492, 0, 0.84127, 0.402749, 0.000335327, 0, 0.873016, 0.385879, 0.000316422, 0, 0.904762, 0.369352, 0.000298333, 0, 0.936508, 0.353301, 0.000281417, 0, 0.968254, 0.337781, 0.000265203, 0, 1, 1, 9.68267e-05, 0, 0, 1, 9.68284e-05, 0, 0, 1, 9.68556e-05, 0, 0, 0.999999, 9.69733e-05, 0, 0, 0.999997, 9.72913e-05, 0, 0, 0.999993, 9.79688e-05, 0, 0, 0.999984, 9.92239e-05, 0, 0, 0.999969, 0.000101356, 0, 0, 0.999946, 0.000104784, 0, 0, 0.999913, 0.000110111, 0, 0, 0.999868, 0.000118217, 0, 0, 0.999801, 0.000130396, 0, 0, 0.999712, 0.000148523, 0, 1.24907e-05, 0.999589, 0.000175233, 0, 0.000355405, 0.999416, 0.000213999, 0, 0.0013528, 0.999136, 0.000268529, 0, 0.00312557, 0.998367, 0.000333088, 0, 0.00573045, 0.994701, 0.000304757, 0, 0.00919397, 0.992497, 0.000318031, 0, 0.0135261, 0.990608, 0.000353863, 0, 0.0187278, 0.988715, 0.000409044, 0, 0.0247947, 0.986241, 0.000472967, 0, 0.0317196, 0.981696, 0.000495104, 0, 0.039494, 0.977097, 0.000532873, 0, 0.0481087, 0.972583, 0.000594447, 0, 0.0575549, 0.966142, 0.000636867, 0, 0.0678242, 0.95823, 0.000669899, 0, 0.0789089, 0.949677, 0.000719499, 0, 0.0908023, 0.939226, 0.000750584, 0, 0.103499, 0.927501, 0.000793183, 0, 0.116993, 0.915199, 0.00081995, 0, 0.131282, 0.90498, 0.000847654, 0, 0.146364, 0.894243, 0.000868929, 0, 0.162237, 0.882154, 0.000884278, 0, 0.178902, 0.869161, 0.000898108, 0, 0.196358, 0.854751, 0.000901254, 0, 0.21461, 0.839368, 0.00090679, 0, 0.23366, 0.822874, 0.000901541, 0, 0.253512, 0.805514, 0.000897297, 0, 0.274174, 0.78716, 0.000881856, 0, 0.29565, 0.769061, 0.000870032, 0, 0.31795, 0.751, 0.000851719, 0, 0.341081, 0.732614, 0.000830671, 0, 0.365053, 0.713171, 0.000806569, 0, 0.389874, 0.693472, 0.00078338, 0, 0.415553, 0.673528, 0.000756404, 0, 0.442098, 0.653397, 0.000726872, 0, 0.469512, 0.633781, 0.000700494, 0, 0.497794, 0.613877, 0.00067105, 0, 0.526935, 0.593506, 0.000640361, 0, 0.556908, 0.573667, 0.000613502, 0, 0.587657, 0.553932, 0.000583177, 0, 0.61906, 0.534345, 0.000554375, 0, 0.650794, 0.515042, 0.000527811, 0, 0.68254, 0.495674, 0.000499367, 0, 0.714286, 0.477132, 0.00047429, 0, 0.746032, 0.458609, 0.000447726, 0, 0.777778, 0.440354, 0.000424205, 0, 0.809524, 0.422765, 0.000399549, 0, 0.84127, 0.405472, 0.000378315, 0, 0.873016, 0.388482, 0.000355327, 0, 0.904762, 0.372191, 0.000336122, 0, 0.936508, 0.356099, 0.000315247, 0, 0.968254, 0.340737, 0.00029794, 0, 1, 1, 0.000143327, 0, 0, 1, 0.00014333, 0, 0, 1, 0.000143366, 0, 0, 0.999999, 0.000143524, 0, 0, 0.999996, 0.000143952, 0, 0, 0.999991, 0.000144862, 0, 0, 0.999981, 0.000146544, 0, 0, 0.999966, 0.000149391, 0, 0, 0.999941, 0.000153946, 0, 0, 0.999905, 0.000160971, 0, 0, 0.999852, 0.000171562, 0, 0, 0.99978, 0.00018729, 0, 0, 0.999681, 0.000210386, 0, 8.26239e-05, 0.999546, 0.000243906, 0, 0.000664807, 0.999352, 0.000291739, 0, 0.00196192, 0.999027, 0.000357419, 0, 0.00405941, 0.997886, 0.000422349, 0, 0.00699664, 0.99419, 0.000385008, 0, 0.0107896, 0.99214, 0.000409775, 0, 0.0154415, 0.990274, 0.000456418, 0, 0.0209488, 0.988455, 0.000527008, 0, 0.0273037, 0.985804, 0.000597685, 0, 0.0344969, 0.98103, 0.000613124, 0, 0.0425183, 0.976674, 0.000668321, 0, 0.0513575, 0.972021, 0.000736985, 0, 0.0610046, 0.965274, 0.000773789, 0, 0.0714508, 0.958046, 0.000830852, 0, 0.0826877, 0.949333, 0.000875766, 0, 0.0947085, 0.939135, 0.000917088, 0, 0.107507, 0.927119, 0.000952244, 0, 0.121078, 0.91469, 0.000990626, 0, 0.135419, 0.903006, 0.00101304, 0, 0.150526, 0.892368, 0.00103834, 0, 0.166399, 0.880231, 0.00105002, 0, 0.183038, 0.867432, 0.00106331, 0, 0.200443, 0.853208, 0.00106783, 0, 0.218618, 0.837956, 0.00106458, 0, 0.237566, 0.821772, 0.00105945, 0, 0.257291, 0.804328, 0.00104685, 0, 0.2778, 0.786465, 0.00103178, 0, 0.2991, 0.768004, 0.00101077, 0, 0.321199, 0.74972, 0.000985504, 0, 0.344106, 0.731682, 0.000962893, 0, 0.36783, 0.712813, 0.000932146, 0, 0.392383, 0.693139, 0.00089871, 0, 0.417774, 0.673566, 0.000869678, 0, 0.444013, 0.653483, 0.000835525, 0, 0.471107, 0.633891, 0.000799853, 0, 0.49906, 0.614433, 0.000766838, 0, 0.527869, 0.594586, 0.000732227, 0, 0.557517, 0.574769, 0.000696442, 0, 0.587966, 0.555149, 0.000663935, 0, 0.61913, 0.535898, 0.000629826, 0, 0.650794, 0.516753, 0.000596486, 0, 0.68254, 0.497816, 0.000567078, 0, 0.714286, 0.479034, 0.000534399, 0, 0.746032, 0.460975, 0.000507013, 0, 0.777778, 0.442935, 0.000477421, 0, 0.809524, 0.425263, 0.000451101, 0, 0.84127, 0.408248, 0.000424964, 0, 0.873016, 0.391339, 0.00039993, 0, 0.904762, 0.37513, 0.000377619, 0, 0.936508, 0.359172, 0.000354418, 0, 0.968254, 0.343876, 0.000334823, 0, 1, 1, 0.000209042, 0, 0, 1, 0.000209045, 0, 0, 1, 0.000209093, 0, 0, 0.999999, 0.000209304, 0, 0, 0.999996, 0.000209871, 0, 0, 0.999991, 0.000211078, 0, 0, 0.999979, 0.000213304, 0, 0, 0.999963, 0.000217061, 0, 0, 0.999933, 0.000223042, 0, 0, 0.999894, 0.000232206, 0, 0, 0.999837, 0.000245901, 0, 0, 0.999756, 0.000266023, 0, 1.02927e-06, 0.999648, 0.000295204, 0, 0.000233468, 0.999499, 0.000336958, 0, 0.00108237, 0.999283, 0.000395563, 0, 0.00268832, 0.998896, 0.000473785, 0, 0.00511138, 0.997006, 0.000520008, 0, 0.00837705, 0.993819, 0.000497261, 0, 0.0124928, 0.991632, 0.000523722, 0, 0.0174561, 0.989875, 0.000587258, 0, 0.0232596, 0.988109, 0.000676329, 0, 0.0298932, 0.985155, 0.000747701, 0, 0.0373453, 0.980479, 0.000768803, 0, 0.0456045, 0.976271, 0.000841054, 0, 0.0546593, 0.971347, 0.000911469, 0, 0.0644994, 0.964528, 0.000953057, 0, 0.0751152, 0.957632, 0.00102221, 0, 0.0864981, 0.948681, 0.00106122, 0, 0.0986407, 0.938716, 0.00111857, 0, 0.111537, 0.926629, 0.00114762, 0, 0.125182, 0.914025, 0.00118995, 0, 0.139571, 0.901026, 0.00121228, 0, 0.154703, 0.890358, 0.00123946, 0, 0.170576, 0.878283, 0.0012527, 0, 0.18719, 0.865459, 0.00125536, 0, 0.204547, 0.851407, 0.00126134, 0, 0.222648, 0.836276, 0.00124759, 0, 0.241498, 0.820436, 0.00124443, 0, 0.261101, 0.803253, 0.00122071, 0, 0.281465, 0.785562, 0.00120107, 0, 0.302595, 0.76718, 0.00117762, 0, 0.324501, 0.748551, 0.00114289, 0, 0.347192, 0.730564, 0.00110872, 0, 0.370679, 0.712253, 0.00107636, 0, 0.394973, 0.692867, 0.00103646, 0, 0.420085, 0.673695, 0.000996793, 0, 0.446027, 0.653912, 0.00095675, 0, 0.47281, 0.634129, 0.000916739, 0, 0.500441, 0.615004, 0.000874401, 0, 0.528921, 0.595587, 0.000833411, 0, 0.558244, 0.575965, 0.000794556, 0, 0.588384, 0.5566, 0.00075196, 0, 0.619281, 0.537428, 0.000716381, 0, 0.650795, 0.518623, 0.000676558, 0, 0.68254, 0.499964, 0.00064074, 0, 0.714286, 0.481356, 0.000605984, 0, 0.746032, 0.463279, 0.000570256, 0, 0.777778, 0.445673, 0.000540138, 0, 0.809524, 0.428032, 0.000507299, 0, 0.84127, 0.411112, 0.000479553, 0, 0.873016, 0.394444, 0.000450737, 0, 0.904762, 0.378247, 0.000424269, 0, 0.936508, 0.362415, 0.000399111, 0, 0.968254, 0.347103, 0.000375274, 0, 1, 1, 0.000300729, 0, 0, 1, 0.000300733, 0, 0, 1, 0.000300797, 0, 0, 0.999998, 0.000301072, 0, 0, 0.999996, 0.000301817, 0, 0, 0.999989, 0.000303398, 0, 0, 0.999977, 0.000306309, 0, 0, 0.999958, 0.000311209, 0, 0, 0.999927, 0.000318975, 0, 0, 0.999884, 0.000330804, 0, 0, 0.99982, 0.00034834, 0, 0, 0.999733, 0.000373854, 0, 3.26995e-05, 0.999613, 0.000410424, 0, 0.000477174, 0.999447, 0.000462047, 0, 0.00161099, 0.999204, 0.000533322, 0, 0.00353153, 0.998725, 0.000624964, 0, 0.00627965, 0.995871, 0.000631786, 0, 0.0098693, 0.993194, 0.000632017, 0, 0.0143011, 0.991541, 0.00068923, 0, 0.019568, 0.989773, 0.000766892, 0, 0.0256593, 0.987647, 0.000863668, 0, 0.0325625, 0.984193, 0.000922089, 0, 0.0402647, 0.980016, 0.000970749, 0, 0.0487532, 0.975859, 0.00106027, 0, 0.058016, 0.970514, 0.00112239, 0, 0.0680419, 0.963625, 0.00117212, 0, 0.0788208, 0.956959, 0.00125211, 0, 0.0903439, 0.947956, 0.00129411, 0, 0.102604, 0.93809, 0.00135879, 0, 0.115594, 0.92659, 0.00139309, 0, 0.129309, 0.913829, 0.00143253, 0, 0.143745, 0.90005, 0.00145809, 0, 0.158901, 0.888129, 0.0014748, 0, 0.174774, 0.87607, 0.00148756, 0, 0.191365, 0.863461, 0.00148714, 0, 0.208674, 0.849594, 0.00148892, 0, 0.226705, 0.834531, 0.00146496, 0, 0.245461, 0.81903, 0.0014579, 0, 0.264947, 0.802122, 0.00143039, 0, 0.28517, 0.78445, 0.00139717, 0, 0.306137, 0.766434, 0.00136312, 0, 0.327857, 0.747816, 0.00132597, 0, 0.350341, 0.729519, 0.00128323, 0, 0.373598, 0.711454, 0.00123803, 0, 0.397642, 0.692699, 0.00119097, 0, 0.422485, 0.673723, 0.00114565, 0, 0.448139, 0.654386, 0.00109552, 0, 0.474619, 0.634673, 0.00104553, 0, 0.501933, 0.615554, 0.00099985, 0, 0.530089, 0.596462, 0.000948207, 0, 0.559087, 0.577385, 0.000902299, 0, 0.588913, 0.558257, 0.000856448, 0, 0.619525, 0.5392, 0.000810395, 0, 0.650826, 0.520543, 0.000768558, 0, 0.68254, 0.502206, 0.0007239, 0, 0.714286, 0.48402, 0.000685794, 0, 0.746032, 0.465779, 0.00064471, 0, 0.777778, 0.448455, 0.000609583, 0, 0.809524, 0.431091, 0.00057227, 0, 0.84127, 0.414147, 0.00054042, 0, 0.873016, 0.39765, 0.000506545, 0, 0.904762, 0.381576, 0.000477635, 0, 0.936508, 0.365881, 0.000448446, 0, 0.968254, 0.350582, 0.000421424, 0, 1, 1, 0.000427144, 0, 0, 1, 0.000427151, 0, 0, 1, 0.000427232, 0, 0, 0.999998, 0.00042759, 0, 0, 0.999995, 0.000428555, 0, 0, 0.999988, 0.000430603, 0, 0, 0.999976, 0.000434368, 0, 0, 0.999952, 0.000440688, 0, 0, 0.999919, 0.000450667, 0, 0, 0.999871, 0.00046578, 0, 0, 0.999801, 0.000488024, 0, 0, 0.999704, 0.000520092, 0, 0.000129791, 0.999572, 0.000565553, 0, 0.000821056, 0.999389, 0.000628906, 0, 0.00225241, 0.999114, 0.000714911, 0, 0.00449109, 0.998488, 0.000819218, 0, 0.00756249, 0.995234, 0.00080415, 0, 0.0114716, 0.993021, 0.000830181, 0, 0.0162131, 0.991407, 0.000902645, 0, 0.021776, 0.989625, 0.000996934, 0, 0.0281471, 0.987064, 0.00109707, 0, 0.0353118, 0.983265, 0.00114353, 0, 0.0432562, 0.979535, 0.0012272, 0, 0.0519665, 0.975224, 0.00132642, 0, 0.0614298, 0.969574, 0.00138092, 0, 0.0716348, 0.963021, 0.00145896, 0, 0.0825709, 0.956046, 0.00152834, 0, 0.094229, 0.947136, 0.00158217, 0, 0.106602, 0.937313, 0.0016347, 0, 0.119682, 0.926073, 0.00168383, 0, 0.133465, 0.913121, 0.00171627, 0, 0.147947, 0.899165, 0.00174229, 0, 0.163125, 0.885891, 0.00176137, 0, 0.178998, 0.873783, 0.00176406, 0, 0.195566, 0.861331, 0.00176156, 0, 0.21283, 0.847569, 0.00175346, 0, 0.230793, 0.832785, 0.00172753, 0, 0.249459, 0.817442, 0.00170204, 0, 0.268832, 0.800613, 0.00166576, 0, 0.28892, 0.783597, 0.00162909, 0, 0.30973, 0.76571, 0.0015826, 0, 0.331271, 0.747021, 0.00153106, 0, 0.353554, 0.728593, 0.00148036, 0, 0.37659, 0.710661, 0.00142808, 0, 0.400391, 0.692426, 0.00136906, 0, 0.424973, 0.673623, 0.00131066, 0, 0.450347, 0.65494, 0.00125569, 0, 0.476531, 0.635448, 0.00119517, 0, 0.503535, 0.616221, 0.00113828, 0, 0.531372, 0.597531, 0.0010816, 0, 0.560047, 0.578795, 0.00102673, 0, 0.589554, 0.559892, 0.000970985, 0, 0.619869, 0.541307, 0.000919773, 0, 0.650923, 0.522608, 0.000868479, 0, 0.68254, 0.504484, 0.00082137, 0, 0.714286, 0.486603, 0.000772916, 0, 0.746032, 0.468802, 0.000730353, 0, 0.777778, 0.451172, 0.000684955, 0, 0.809524, 0.434348, 0.000647565, 0, 0.84127, 0.417445, 0.000605863, 0, 0.873016, 0.401077, 0.000571885, 0, 0.904762, 0.385039, 0.000536034, 0, 0.936508, 0.369483, 0.000504227, 0, 0.968254, 0.354272, 0.000473165, 0, 1, 1, 0.000599525, 0, 0, 1, 0.000599533, 0, 0, 1, 0.000599639, 0, 0, 0.999998, 0.000600097, 0, 0, 0.999994, 0.000601336, 0, 0, 0.999987, 0.000603958, 0, 0, 0.999972, 0.000608775, 0, 0, 0.999949, 0.000616842, 0, 0, 0.999912, 0.000629534, 0, 0, 0.999857, 0.000648658, 0, 0, 0.999781, 0.000676615, 0, 5.38873e-06, 0.999674, 0.000716574, 0, 0.000308602, 0.999528, 0.000772641, 0, 0.00127003, 0.999326, 0.000849806, 0, 0.00300783, 0.999009, 0.000952682, 0, 0.00556637, 0.998112, 0.00106394, 0, 0.00895889, 0.994496, 0.00102228, 0, 0.0131827, 0.992806, 0.00108586, 0, 0.0182277, 0.991211, 0.0011759, 0, 0.0240795, 0.989415, 0.00128955, 0, 0.030723, 0.986499, 0.00139038, 0, 0.0381418, 0.982679, 0.00144539, 0, 0.046321, 0.978839, 0.00153954, 0, 0.0552459, 0.974295, 0.00164417, 0, 0.0649034, 0.968784, 0.00171517, 0, 0.0752814, 0.962324, 0.00180282, 0, 0.0863693, 0.954956, 0.00186387, 0, 0.0981578, 0.94624, 0.00193817, 0, 0.110639, 0.936517, 0.00198156, 0, 0.123806, 0.925186, 0.00203042, 0, 0.137655, 0.91252, 0.0020664, 0, 0.15218, 0.898441, 0.00207822, 0, 0.16738, 0.884394, 0.0020992, 0, 0.183253, 0.871273, 0.00208748, 0, 0.199799, 0.859057, 0.00208686, 0, 0.21702, 0.845243, 0.00205519, 0, 0.234918, 0.830723, 0.00202868, 0, 0.253496, 0.815801, 0.00199501, 0, 0.272761, 0.79914, 0.00194193, 0, 0.292719, 0.782372, 0.00188824, 0, 0.313377, 0.76482, 0.00183695, 0, 0.334745, 0.746586, 0.00177418, 0, 0.356833, 0.7281, 0.00170628, 0, 0.379654, 0.709842, 0.00164063, 0, 0.403221, 0.692019, 0.00157355, 0, 0.427548, 0.67364, 0.00150262, 0, 0.452651, 0.655277, 0.00143473, 0, 0.478545, 0.636438, 0.00136371, 0, 0.505246, 0.617364, 0.00129911, 0, 0.532768, 0.598603, 0.00123014, 0, 0.561122, 0.580195, 0.00116587, 0, 0.590309, 0.561786, 0.00110398, 0, 0.620318, 0.543377, 0.00104148, 0, 0.651102, 0.525093, 0.000983984, 0, 0.682545, 0.506791, 0.00092667, 0, 0.714286, 0.489291, 0.000874326, 0, 0.746032, 0.471811, 0.000821734, 0, 0.777778, 0.454435, 0.000774698, 0, 0.809524, 0.437493, 0.000727302, 0, 0.84127, 0.420977, 0.000684039, 0, 0.873016, 0.404729, 0.00064373, 0, 0.904762, 0.388756, 0.00060285, 0, 0.936508, 0.373344, 0.00056765, 0, 0.968254, 0.358191, 0.000531929, 0, 1, 1, 0.000832169, 0, 0, 1, 0.000832178, 0, 0, 1, 0.00083231, 0, 0, 0.999998, 0.000832893, 0, 0, 0.999995, 0.000834465, 0, 0, 0.999985, 0.000837791, 0, 0, 0.999969, 0.000843893, 0, 0, 0.999944, 0.000854086, 0, 0, 0.999903, 0.000870071, 0, 0, 0.999843, 0.000894042, 0, 0, 0.999759, 0.000928865, 0, 5.31805e-05, 0.999643, 0.000978242, 0, 0.000579365, 0.99948, 0.00104684, 0, 0.00182774, 0.999255, 0.00114012, 0, 0.00387804, 0.998885, 0.00126188, 0, 0.00675709, 0.997405, 0.00135888, 0, 0.010468, 0.99424, 0.00133626, 0, 0.0150018, 0.992458, 0.00140905, 0, 0.0203443, 0.990929, 0.00152305, 0, 0.0264786, 0.989116, 0.00165882, 0, 0.0333875, 0.985624, 0.00174128, 0, 0.0410536, 0.982003, 0.00182108, 0, 0.0494609, 0.978336, 0.00194498, 0, 0.0585941, 0.973184, 0.00202708, 0, 0.0684396, 0.9678, 0.00212166, 0, 0.0789851, 0.961348, 0.00221366, 0, 0.0902199, 0.953841, 0.00228219, 0, 0.102134, 0.94534, 0.00235662, 0, 0.114721, 0.935552, 0.00240572, 0, 0.127972, 0.924064, 0.00244405, 0, 0.141884, 0.911827, 0.00247557, 0, 0.156451, 0.897731, 0.00248374, 0, 0.171672, 0.883409, 0.00249863, 0, 0.187545, 0.868625, 0.00246688, 0, 0.20407, 0.856529, 0.00246523, 0, 0.221249, 0.842999, 0.00242368, 0, 0.239083, 0.828505, 0.00237354, 0, 0.257578, 0.813825, 0.00232588, 0, 0.276738, 0.797813, 0.00226731, 0, 0.296569, 0.781097, 0.00219704, 0, 0.31708, 0.764038, 0.00212394, 0, 0.338281, 0.746067, 0.00204786, 0, 0.360181, 0.727687, 0.00196728, 0, 0.382794, 0.709571, 0.00188779, 0, 0.406133, 0.691503, 0.00180532, 0, 0.430213, 0.673673, 0.00171849, 0, 0.45505, 0.655732, 0.00164147, 0, 0.480662, 0.637399, 0.00155858, 0, 0.507065, 0.618616, 0.00147641, 0, 0.534278, 0.60005, 0.00140125, 0, 0.562313, 0.581713, 0.00132441, 0, 0.59118, 0.563546, 0.00125014, 0, 0.620875, 0.545605, 0.00118249, 0, 0.651373, 0.527559, 0.0011116, 0, 0.682593, 0.509764, 0.00104979, 0, 0.714286, 0.49193, 0.000985977, 0, 0.746032, 0.475011, 0.000928592, 0, 0.777778, 0.457878, 0.000873466, 0, 0.809524, 0.440979, 0.000819585, 0, 0.84127, 0.424613, 0.000772365, 0, 0.873016, 0.408549, 0.000722195, 0, 0.904762, 0.392771, 0.000680014, 0, 0.936508, 0.377317, 0.000636797, 0, 0.968254, 0.362352, 0.000598318, 0, 1, 1, 0.00114313, 0, 0, 1, 0.00114314, 0, 0, 0.999999, 0.00114331, 0, 0, 0.999998, 0.00114404, 0, 0, 0.999994, 0.00114601, 0, 0, 0.999984, 0.00115019, 0, 0, 0.999967, 0.00115784, 0, 0, 0.999937, 0.0011706, 0, 0, 0.999894, 0.00119054, 0, 0, 0.999828, 0.00122031, 0, 0, 0.999735, 0.00126331, 0, 0.000169263, 0.999606, 0.00132382, 0, 0.000949167, 0.999426, 0.0014071, 0, 0.00249668, 0.999173, 0.00151895, 0, 0.00486392, 0.99873, 0.00166102, 0, 0.00806323, 0.996243, 0.0017023, 0, 0.0120895, 0.993779, 0.00172782, 0, 0.0169288, 0.9919, 0.0018108, 0, 0.0225633, 0.990524, 0.00196028, 0, 0.028974, 0.98868, 0.00212014, 0, 0.036142, 0.984663, 0.00217598, 0, 0.044049, 0.981457, 0.00230563, 0, 0.0526781, 0.977608, 0.00243966, 0, 0.0620137, 0.972215, 0.00251336, 0, 0.0720418, 0.966798, 0.0026285, 0, 0.0827499, 0.960241, 0.00271409, 0, 0.0941271, 0.952489, 0.00278381, 0, 0.106164, 0.944127, 0.00285399, 0, 0.118852, 0.934282, 0.00290994, 0, 0.132185, 0.923271, 0.00294558, 0, 0.146157, 0.910803, 0.00296269, 0, 0.160766, 0.896705, 0.00296803, 0, 0.176007, 0.88238, 0.00296637, 0, 0.19188, 0.867116, 0.00293163, 0, 0.208385, 0.853636, 0.00289418, 0, 0.225523, 0.840469, 0.00284663, 0, 0.243296, 0.82639, 0.00278594, 0, 0.261709, 0.811759, 0.00271618, 0, 0.280767, 0.796113, 0.00263187, 0, 0.300476, 0.779518, 0.00254589, 0, 0.320845, 0.763142, 0.00246003, 0, 0.341883, 0.745464, 0.00236529, 0, 0.363601, 0.727491, 0.00226536, 0, 0.386011, 0.709414, 0.00216375, 0, 0.409128, 0.691396, 0.00207127, 0, 0.432967, 0.67368, 0.00197106, 0, 0.457545, 0.656049, 0.00187022, 0, 0.482881, 0.638188, 0.00177605, 0, 0.508992, 0.620177, 0.00168482, 0, 0.535899, 0.601506, 0.00158909, 0, 0.563619, 0.58362, 0.00150583, 0, 0.592165, 0.565496, 0.00141791, 0, 0.621544, 0.54789, 0.00133693, 0, 0.651743, 0.530323, 0.00126038, 0, 0.682709, 0.512795, 0.00118556, 0, 0.714286, 0.495199, 0.00111527, 0, 0.746032, 0.478101, 0.0010489, 0, 0.777778, 0.461511, 0.000984264, 0, 0.809524, 0.444879, 0.00092591, 0, 0.84127, 0.428424, 0.000866582, 0, 0.873016, 0.412495, 0.000814463, 0, 0.904762, 0.396975, 0.000764498, 0, 0.936508, 0.381614, 0.000715967, 0, 0.968254, 0.366732, 0.000672483, 0, 1, 1, 0.00155501, 0, 0, 1, 0.00155503, 0, 0, 1, 0.00155524, 0, 0, 0.999998, 0.00155615, 0, 0, 0.999994, 0.0015586, 0, 0, 0.999983, 0.00156379, 0, 0, 0.999963, 0.0015733, 0, 0, 0.999932, 0.00158911, 0, 0, 0.999882, 0.00161376, 0, 0, 0.99981, 0.00165041, 0, 1.00875e-05, 0.999708, 0.00170304, 0, 0.000367658, 0.999565, 0.00177658, 0, 0.0014234, 0.999368, 0.00187688, 0, 0.00327939, 0.999081, 0.00200989, 0, 0.00596629, 0.99852, 0.00217177, 0, 0.0094852, 0.99549, 0.0021745, 0, 0.013824, 0.993252, 0.00222357, 0, 0.0189642, 0.991727, 0.00235022, 0, 0.0248856, 0.989951, 0.00250561, 0, 0.0315669, 0.988029, 0.00268829, 0, 0.0389882, 0.984029, 0.0027496, 0, 0.0471302, 0.980683, 0.00289793, 0, 0.0559754, 0.976554, 0.00303315, 0, 0.0655081, 0.97139, 0.00313257, 0, 0.0757138, 0.965544, 0.00323656, 0, 0.08658, 0.95912, 0.00333432, 0, 0.0980954, 0.951183, 0.0034039, 0, 0.110251, 0.942974, 0.00347515, 0, 0.123038, 0.932642, 0.00350381, 0, 0.13645, 0.922158, 0.00354519, 0, 0.150482, 0.909404, 0.00353851, 0, 0.165129, 0.896071, 0.0035435, 0, 0.18039, 0.881206, 0.00349936, 0, 0.196263, 0.866077, 0.00347256, 0, 0.212748, 0.85093, 0.003415, 0, 0.229847, 0.837703, 0.00333367, 0, 0.247561, 0.823878, 0.003249, 0, 0.265895, 0.809449, 0.00316347, 0, 0.284854, 0.794379, 0.00306351, 0, 0.304445, 0.778138, 0.0029499, 0, 0.324675, 0.761997, 0.00284099, 0, 0.345555, 0.744938, 0.00272104, 0, 0.367095, 0.727212, 0.00260715, 0, 0.389309, 0.709549, 0.00248855, 0, 0.41221, 0.691704, 0.00236783, 0, 0.435814, 0.673689, 0.00225178, 0, 0.460138, 0.656453, 0.00213765, 0, 0.485203, 0.639128, 0.00202178, 0, 0.511028, 0.621512, 0.00191443, 0, 0.537634, 0.603598, 0.00180977, 0, 0.565041, 0.58559, 0.00170456, 0, 0.593268, 0.567852, 0.00160927, 0, 0.622327, 0.5503, 0.00151395, 0, 0.652217, 0.533033, 0.00142499, 0, 0.682907, 0.515942, 0.00133955, 0, 0.714296, 0.498814, 0.0012602, 0, 0.746032, 0.481595, 0.00118188, 0, 0.777778, 0.465117, 0.00111171, 0, 0.809524, 0.448865, 0.00104091, 0, 0.84127, 0.432711, 0.000976618, 0, 0.873016, 0.416822, 0.00091859, 0, 0.904762, 0.401272, 0.000857704, 0, 0.936508, 0.386226, 0.000807172, 0, 0.968254, 0.371321, 0.00075464, 0, 1, 1, 0.00209596, 0, 0, 1, 0.00209598, 0, 0, 1, 0.00209624, 0, 0, 0.999997, 0.00209736, 0, 0, 0.999991, 0.00210039, 0, 0, 0.999979, 0.00210678, 0, 0, 0.999959, 0.00211847, 0, 0, 0.999925, 0.0021379, 0, 0, 0.99987, 0.00216809, 0, 0, 0.999791, 0.00221281, 0, 6.81487e-05, 0.999677, 0.00227669, 0, 0.000658161, 0.999521, 0.00236533, 0, 0.00200635, 0.999301, 0.00248514, 0, 0.0041779, 0.998977, 0.00264185, 0, 0.00718648, 0.998191, 0.00281695, 0, 0.0110239, 0.994801, 0.00278518, 0, 0.015672, 0.993091, 0.00288774, 0, 0.0211091, 0.991571, 0.00303931, 0, 0.0273123, 0.9897, 0.00321643, 0, 0.034259, 0.987023, 0.00337332, 0, 0.0419282, 0.983289, 0.00346146, 0, 0.0502998, 0.979892, 0.00363704, 0, 0.0593562, 0.975111, 0.00373601, 0, 0.069081, 0.970351, 0.0038842, 0, 0.0794598, 0.964131, 0.00397053, 0, 0.0904798, 0.957747, 0.00408078, 0, 0.10213, 0.949536, 0.00413533, 0, 0.1144, 0.941372, 0.00420305, 0, 0.127284, 0.931049, 0.00422815, 0, 0.140772, 0.920647, 0.00425048, 0, 0.154862, 0.908033, 0.0042281, 0, 0.169548, 0.895028, 0.00422026, 0, 0.184828, 0.879968, 0.00415042, 0, 0.200701, 0.864875, 0.00408821, 0, 0.217167, 0.84918, 0.00400909, 0, 0.234227, 0.834934, 0.00391178, 0, 0.251884, 0.821397, 0.00380066, 0, 0.270141, 0.807135, 0.00367974, 0, 0.289004, 0.792363, 0.00355172, 0, 0.308479, 0.776661, 0.003411, 0, 0.328575, 0.760705, 0.00328123, 0, 0.349301, 0.744408, 0.00314003, 0, 0.370668, 0.726994, 0.0029906, 0, 0.392689, 0.709598, 0.00285034, 0, 0.415379, 0.692112, 0.00271179, 0, 0.438754, 0.674435, 0.00257185, 0, 0.46283, 0.65676, 0.00243425, 0, 0.48763, 0.639982, 0.00230351, 0, 0.513173, 0.622983, 0.0021777, 0, 0.539482, 0.605471, 0.00204991, 0, 0.566579, 0.58796, 0.00193759, 0, 0.594488, 0.570463, 0.00181976, 0, 0.623226, 0.553058, 0.00171497, 0, 0.6528, 0.535894, 0.00161109, 0, 0.683198, 0.519089, 0.00151394, 0, 0.714354, 0.502454, 0.00142122, 0, 0.746032, 0.485681, 0.00133488, 0, 0.777778, 0.468935, 0.00124975, 0, 0.809524, 0.452951, 0.00117309, 0, 0.84127, 0.437139, 0.00110155, 0, 0.873016, 0.421446, 0.00103124, 0, 0.904762, 0.405951, 0.000966387, 0, 0.936508, 0.391003, 0.000908119, 0, 0.968254, 0.376198, 0.000848057, 0, 1, 1, 0.00280076, 0, 0, 1, 0.00280078, 0, 0, 0.999999, 0.00280109, 0, 0, 0.999997, 0.00280246, 0, 0, 0.999992, 0.00280616, 0, 0, 0.999979, 0.00281396, 0, 0, 0.999956, 0.00282822, 0, 0, 0.999916, 0.00285186, 0, 0, 0.999857, 0.0028885, 0, 0, 0.999768, 0.00294259, 0, 0.000196026, 0.999645, 0.00301946, 0, 0.00104842, 0.99947, 0.00312541, 0, 0.00270199, 0.999229, 0.00326733, 0, 0.00519449, 0.998852, 0.00344992, 0, 0.00852602, 0.997558, 0.00361052, 0, 0.0126804, 0.994417, 0.0035898, 0, 0.017635, 0.992824, 0.00372393, 0, 0.023365, 0.991344, 0.00390695, 0, 0.0298456, 0.989337, 0.00410392, 0, 0.0370529, 0.985811, 0.00420987, 0, 0.0449651, 0.982772, 0.00437488, 0, 0.0535615, 0.979001, 0.00455069, 0, 0.0628243, 0.974102, 0.00464462, 0, 0.0727368, 0.969197, 0.00480577, 0, 0.0832844, 0.962759, 0.00487818, 0, 0.0944545, 0.956207, 0.00498176, 0, 0.106236, 0.947909, 0.00503392, 0, 0.118619, 0.939596, 0.00507474, 0, 0.131595, 0.929642, 0.00509798, 0, 0.145159, 0.918807, 0.00508476, 0, 0.159305, 0.906921, 0.00505634, 0, 0.174028, 0.893312, 0.00498845, 0, 0.189327, 0.878933, 0.0049133, 0, 0.2052, 0.863986, 0.0048259, 0, 0.221647, 0.847936, 0.00470848, 0, 0.23867, 0.832253, 0.00456889, 0, 0.25627, 0.818619, 0.00442726, 0, 0.274453, 0.804788, 0.00427677, 0, 0.293222, 0.790241, 0.00411906, 0, 0.312585, 0.775162, 0.00394833, 0, 0.33255, 0.759463, 0.00377366, 0, 0.353126, 0.743598, 0.00361026, 0, 0.374324, 0.72697, 0.00343627, 0, 0.396158, 0.709646, 0.00326422, 0, 0.418641, 0.69277, 0.00309717, 0, 0.44179, 0.675371, 0.0029356, 0, 0.465624, 0.657863, 0.00277712, 0, 0.490163, 0.640772, 0.00261738, 0, 0.515429, 0.624441, 0.0024737, 0, 0.541445, 0.607497, 0.00233125, 0, 0.568236, 0.590438, 0.00218994, 0, 0.595828, 0.573224, 0.0020664, 0, 0.624242, 0.556168, 0.00193526, 0, 0.653496, 0.539232, 0.00182463, 0, 0.683588, 0.522352, 0.00170735, 0, 0.714482, 0.506172, 0.00160555, 0, 0.746032, 0.489842, 0.00150451, 0, 0.777778, 0.473463, 0.00140938, 0, 0.809524, 0.457266, 0.00132568, 0, 0.84127, 0.441609, 0.0012376, 0, 0.873016, 0.426348, 0.00116265, 0, 0.904762, 0.411002, 0.00108935, 0, 0.936508, 0.396045, 0.00101946, 0, 0.968254, 0.381448, 0.000955665, 0, 1, 1, 0.0037121, 0, 0, 1, 0.00371213, 0, 0, 1, 0.00371251, 0, 0, 0.999997, 0.00371417, 0, 0, 0.99999, 0.00371863, 0, 0, 0.999977, 0.00372807, 0, 0, 0.99995, 0.00374529, 0, 0, 0.999908, 0.0037738, 0, 0, 0.999843, 0.00381789, 0, 1.23596e-05, 0.999745, 0.00388273, 0, 0.000407442, 0.999608, 0.00397443, 0, 0.0015447, 0.999415, 0.00409998, 0, 0.00351385, 0.999143, 0.00426662, 0, 0.0063316, 0.9987, 0.00447625, 0, 0.00998679, 0.996363, 0.00455323, 0, 0.0144569, 0.994021, 0.00461052, 0, 0.0197151, 0.992372, 0.00476359, 0, 0.0257344, 0.991007, 0.00499101, 0, 0.0324882, 0.988767, 0.0051972, 0, 0.0399517, 0.984872, 0.00528407, 0, 0.0481022, 0.982004, 0.00548926, 0, 0.0569191, 0.977714, 0.00564385, 0, 0.0663839, 0.973076, 0.0057693, 0, 0.0764801, 0.967565, 0.0058924, 0, 0.0871928, 0.961384, 0.00599629, 0, 0.0985095, 0.954435, 0.00605998, 0, 0.110419, 0.946303, 0.0061133, 0, 0.122912, 0.937662, 0.00612028, 0, 0.13598, 0.927867, 0.00612209, 0, 0.149617, 0.916475, 0.00604813, 0, 0.163817, 0.90541, 0.00603088, 0, 0.178577, 0.891591, 0.00592218, 0, 0.193894, 0.877573, 0.00578854, 0, 0.209767, 0.862511, 0.00566648, 0, 0.226196, 0.846861, 0.00551481, 0, 0.243182, 0.83068, 0.00533754, 0, 0.260728, 0.815725, 0.00515487, 0, 0.278837, 0.802321, 0.0049655, 0, 0.297515, 0.787826, 0.00475421, 0, 0.316768, 0.773454, 0.00456002, 0, 0.336605, 0.758224, 0.00434727, 0, 0.357034, 0.74265, 0.00414444, 0, 0.378067, 0.726729, 0.00393738, 0, 0.399717, 0.710155, 0.00373575, 0, 0.421998, 0.693312, 0.00353736, 0, 0.444928, 0.67653, 0.00334368, 0, 0.468523, 0.659444, 0.00315981, 0, 0.492806, 0.642051, 0.00297809, 0, 0.517798, 0.625758, 0.00280592, 0, 0.543525, 0.609615, 0.00264254, 0, 0.570012, 0.592919, 0.00248459, 0, 0.597288, 0.576298, 0.00233327, 0, 0.625379, 0.559489, 0.00219519, 0, 0.654307, 0.542891, 0.00205441, 0, 0.684084, 0.526255, 0.00193385, 0, 0.714693, 0.509853, 0.00180745, 0, 0.746044, 0.494131, 0.00169817, 0, 0.777778, 0.478114, 0.0015913, 0, 0.809524, 0.462274, 0.00148981, 0, 0.84127, 0.446412, 0.00139537, 0, 0.873016, 0.431274, 0.00130984, 0, 0.904762, 0.41635, 0.00122403, 0, 0.936508, 0.401476, 0.00114809, 0, 0.968254, 0.386993, 0.00107563, 0, 1, 1, 0.00488216, 0, 0, 1, 0.0048822, 0, 0, 1, 0.00488265, 0, 0, 0.999997, 0.00488463, 0, 0, 0.999988, 0.00488999, 0, 0, 0.999974, 0.00490129, 0, 0, 0.999946, 0.00492191, 0, 0, 0.999897, 0.00495598, 0, 0, 0.999825, 0.00500855, 0, 7.44791e-05, 0.999718, 0.00508559, 0, 0.000712744, 0.999565, 0.005194, 0, 0.00215249, 0.999352, 0.00534147, 0, 0.00444576, 0.999046, 0.00553523, 0, 0.00759218, 0.998492, 0.00577016, 0, 0.0115714, 0.995564, 0.00578487, 0, 0.0163557, 0.993339, 0.00586414, 0, 0.021915, 0.991834, 0.00606002, 0, 0.0282201, 0.990496, 0.00633312, 0, 0.0352433, 0.987826, 0.00651941, 0, 0.042959, 0.98383, 0.00660842, 0, 0.0513439, 0.98109, 0.00685523, 0, 0.0603772, 0.976131, 0.00695778, 0, 0.0700402, 0.971922, 0.00714236, 0, 0.0803163, 0.965901, 0.00721437, 0, 0.0911908, 0.959606, 0.00732017, 0, 0.102651, 0.952504, 0.00735788, 0, 0.114686, 0.944365, 0.00738493, 0, 0.127286, 0.935652, 0.00737969, 0, 0.140443, 0.925813, 0.00733612, 0, 0.154151, 0.914397, 0.00723094, 0, 0.168405, 0.903257, 0.00714002, 0, 0.183201, 0.890015, 0.00700149, 0, 0.198536, 0.876014, 0.00682813, 0, 0.214409, 0.861436, 0.00665567, 0, 0.23082, 0.845752, 0.00644526, 0, 0.24777, 0.829169, 0.00621635, 0, 0.265263, 0.813435, 0.00597789, 0, 0.283301, 0.799701, 0.00575694, 0, 0.301889, 0.785726, 0.00549866, 0, 0.321035, 0.77152, 0.0052503, 0, 0.340746, 0.75683, 0.00499619, 0, 0.361032, 0.741951, 0.0047543, 0, 0.381904, 0.726367, 0.0045084, 0, 0.403374, 0.710537, 0.00426784, 0, 0.425457, 0.693965, 0.00403487, 0, 0.448169, 0.677724, 0.0038075, 0, 0.47153, 0.66117, 0.00359431, 0, 0.495561, 0.644274, 0.00338354, 0, 0.520284, 0.627449, 0.00318163, 0, 0.545725, 0.611645, 0.00299672, 0, 0.571911, 0.595614, 0.00281016, 0, 0.598873, 0.579426, 0.00264252, 0, 0.62664, 0.563016, 0.00247509, 0, 0.655239, 0.546728, 0.00232647, 0, 0.684692, 0.530539, 0.00217803, 0, 0.714999, 0.514164, 0.00204216, 0, 0.746106, 0.498344, 0.00191403, 0, 0.777778, 0.482957, 0.00179203, 0, 0.809524, 0.467336, 0.00167695, 0, 0.84127, 0.451994, 0.00157567, 0, 0.873016, 0.436514, 0.00147113, 0, 0.904762, 0.42178, 0.00138034, 0, 0.936508, 0.407271, 0.00129219, 0, 0.968254, 0.392822, 0.0012098, 0, 1, 1, 0.00637427, 0, 0, 1, 0.00637431, 0, 0, 0.999999, 0.00637485, 0, 0, 0.999996, 0.00637721, 0, 0, 0.999987, 0.00638357, 0, 0, 0.999971, 0.006397, 0, 0, 0.999939, 0.00642142, 0, 0, 0.999888, 0.00646177, 0, 0, 0.999807, 0.00652387, 0, 0.000207916, 0.999689, 0.00661454, 0, 0.00112051, 0.99952, 0.00674155, 0, 0.00287719, 0.999283, 0.00691313, 0, 0.00550145, 0.998936, 0.00713598, 0, 0.00897928, 0.998165, 0.00738501, 0, 0.0132829, 0.994847, 0.00734388, 0, 0.01838, 0.993182, 0.00749991, 0, 0.0242381, 0.991665, 0.0077246, 0, 0.030826, 0.989708, 0.00797579, 0, 0.0381152, 0.986663, 0.00813011, 0, 0.0460794, 0.983288, 0.00830365, 0, 0.0546951, 0.980104, 0.00853496, 0, 0.0639411, 0.974855, 0.00861045, 0, 0.0737988, 0.97045, 0.00879133, 0, 0.0842516, 0.964509, 0.00886377, 0, 0.0952848, 0.957594, 0.00890346, 0, 0.106886, 0.950546, 0.00893289, 0, 0.119044, 0.942225, 0.00890074, 0, 0.131749, 0.933365, 0.00886826, 0, 0.144994, 0.923202, 0.0087316, 0, 0.158772, 0.912605, 0.00863082, 0, 0.173078, 0.901099, 0.00847403, 0, 0.187908, 0.888177, 0.00825838, 0, 0.203261, 0.873955, 0.00801834, 0, 0.219134, 0.860091, 0.00779026, 0, 0.235527, 0.84434, 0.00752478, 0, 0.252443, 0.828517, 0.00724074, 0, 0.269883, 0.81239, 0.00693769, 0, 0.287851, 0.79721, 0.00664817, 0, 0.306352, 0.783489, 0.00634763, 0, 0.325393, 0.769514, 0.00604221, 0, 0.344981, 0.755419, 0.00573568, 0, 0.365126, 0.741083, 0.00544359, 0, 0.385839, 0.726059, 0.00515515, 0, 0.407132, 0.710809, 0.00487139, 0, 0.42902, 0.695052, 0.00459846, 0, 0.45152, 0.678886, 0.00433412, 0, 0.474651, 0.663042, 0.00407981, 0, 0.498433, 0.646634, 0.00384264, 0, 0.52289, 0.630117, 0.00360897, 0, 0.548048, 0.613804, 0.00338863, 0, 0.573936, 0.598338, 0.00318486, 0, 0.600584, 0.582687, 0.00298377, 0, 0.628027, 0.566809, 0.00280082, 0, 0.656295, 0.550817, 0.00262255, 0, 0.685417, 0.534937, 0.00245835, 0, 0.715406, 0.519151, 0.00230574, 0, 0.74624, 0.503118, 0.0021549, 0, 0.777778, 0.487723, 0.00202008, 0, 0.809524, 0.472725, 0.00189355, 0, 0.84127, 0.457599, 0.00177108, 0, 0.873016, 0.442558, 0.00165843, 0, 0.904762, 0.427624, 0.00155494, 0, 0.936508, 0.413171, 0.00145273, 0, 0.968254, 0.399122, 0.00136454, 0, 1, 1, 0.00826496, 0, 0, 1, 0.00826499, 0, 0, 1, 0.00826564, 0, 0, 0.999996, 0.00826842, 0, 0, 0.999987, 0.00827589, 0, 0, 0.999967, 0.00829167, 0, 0, 0.999933, 0.00832037, 0, 0, 0.999876, 0.00836768, 0, 1.09338e-05, 0.999786, 0.00844031, 0, 0.000427145, 0.999655, 0.00854603, 0, 0.0016384, 0.999468, 0.00869337, 0, 0.00372392, 0.999203, 0.008891, 0, 0.00668513, 0.998803, 0.00914387, 0, 0.0104968, 0.99748, 0.00935838, 0, 0.015125, 0.994446, 0.00933309, 0, 0.0205338, 0.99292, 0.00953084, 0, 0.0266884, 0.991414, 0.0097893, 0, 0.0335565, 0.989049, 0.0100228, 0, 0.0411086, 0.98582, 0.0101664, 0, 0.0493181, 0.982441, 0.0103582, 0, 0.0581613, 0.978595, 0.0105292, 0, 0.0676169, 0.973495, 0.0106274, 0, 0.0776661, 0.968405, 0.0107261, 0, 0.0882926, 0.962717, 0.0108234, 0, 0.0994817, 0.955478, 0.0108102, 0, 0.111221, 0.948275, 0.0107914, 0, 0.123499, 0.940006, 0.0107161, 0, 0.136308, 0.930831, 0.0106309, 0, 0.149639, 0.920648, 0.0104083, 0, 0.163485, 0.910205, 0.0102312, 0, 0.177843, 0.898445, 0.0100051, 0, 0.192707, 0.885986, 0.00971928, 0, 0.208077, 0.872204, 0.00940747, 0, 0.22395, 0.858436, 0.0091085, 0, 0.240326, 0.843454, 0.00876595, 0, 0.257208, 0.827437, 0.00839794, 0, 0.274596, 0.811488, 0.00803692, 0, 0.292496, 0.796039, 0.00767352, 0, 0.310911, 0.781083, 0.0073097, 0, 0.329849, 0.767642, 0.00694032, 0, 0.349316, 0.753901, 0.00657476, 0, 0.369323, 0.740131, 0.00622699, 0, 0.38988, 0.725845, 0.0058838, 0, 0.410999, 0.710991, 0.00555586, 0, 0.432696, 0.696002, 0.00523089, 0, 0.454987, 0.680461, 0.00492494, 0, 0.47789, 0.664875, 0.00463464, 0, 0.501426, 0.649273, 0.00435422, 0, 0.52562, 0.63302, 0.0040875, 0, 0.550498, 0.61705, 0.00384075, 0, 0.576089, 0.601154, 0.00359557, 0, 0.602427, 0.586008, 0.00337636, 0, 0.629544, 0.570699, 0.00316019, 0, 0.657479, 0.555166, 0.00296033, 0, 0.686264, 0.539645, 0.00277552, 0, 0.715924, 0.524159, 0.00259499, 0, 0.746459, 0.508682, 0.00243257, 0, 0.777789, 0.493163, 0.00227851, 0, 0.809524, 0.478004, 0.00213083, 0, 0.84127, 0.46347, 0.00199502, 0, 0.873016, 0.448778, 0.00186967, 0, 0.904762, 0.434105, 0.00174732, 0, 0.936508, 0.419576, 0.00163861, 0, 0.968254, 0.405541, 0.00153341, 0, 1, 1, 0.0106462, 0, 0, 1, 0.0106462, 0, 0, 0.999999, 0.010647, 0, 0, 0.999995, 0.0106502, 0, 0, 0.999985, 0.0106589, 0, 0, 0.999964, 0.0106773, 0, 0, 0.999925, 0.0107106, 0, 0, 0.999861, 0.0107655, 0, 7.12986e-05, 0.999763, 0.0108497, 0, 0.000743959, 0.999616, 0.0109716, 0, 0.00227361, 0.999408, 0.0111408, 0, 0.0046983, 0.999112, 0.0113659, 0, 0.00800158, 0.998637, 0.0116475, 0, 0.0121493, 0.996223, 0.0117231, 0, 0.0171023, 0.994006, 0.0118064, 0, 0.0228218, 0.992444, 0.0120254, 0, 0.0292711, 0.991028, 0.0123314, 0, 0.036417, 0.98803, 0.0124954, 0, 0.0442295, 0.984816, 0.0126538, 0, 0.0526815, 0.981399, 0.0128537, 0, 0.0617492, 0.977085, 0.0129694, 0, 0.0714114, 0.972154, 0.013091, 0, 0.0816495, 0.966617, 0.0131166, 0, 0.0924472, 0.960628, 0.0131583, 0, 0.10379, 0.953295, 0.0131094, 0, 0.115665, 0.94575, 0.0129966, 0, 0.128062, 0.937654, 0.0128796, 0, 0.140972, 0.927716, 0.0126477, 0, 0.154387, 0.917932, 0.0123889, 0, 0.168301, 0.907719, 0.012131, 0, 0.182709, 0.89584, 0.0118013, 0, 0.197608, 0.883526, 0.0114145, 0, 0.212994, 0.870301, 0.0110075, 0, 0.228867, 0.856272, 0.0106019, 0, 0.245227, 0.842251, 0.0101938, 0, 0.262074, 0.826466, 0.00973254, 0, 0.279412, 0.810859, 0.0092846, 0, 0.297244, 0.795051, 0.00883304, 0, 0.315575, 0.780053, 0.00840272, 0, 0.334412, 0.76575, 0.00796438, 0, 0.35376, 0.752298, 0.00752526, 0, 0.373631, 0.739153, 0.00711486, 0, 0.394034, 0.725514, 0.00670361, 0, 0.414983, 0.711473, 0.00632656, 0, 0.436491, 0.696936, 0.00595206, 0, 0.458575, 0.682126, 0.00559191, 0, 0.481253, 0.667027, 0.00525362, 0, 0.504547, 0.651875, 0.00493805, 0, 0.528481, 0.636463, 0.00462848, 0, 0.553081, 0.620641, 0.00433936, 0, 0.578377, 0.604931, 0.00407, 0, 0.604404, 0.589549, 0.00380864, 0, 0.631197, 0.574712, 0.00357049, 0, 0.658795, 0.559775, 0.00334466, 0, 0.687238, 0.544514, 0.00312505, 0, 0.716559, 0.529555, 0.00293199, 0, 0.746776, 0.514402, 0.00274204, 0, 0.777849, 0.499302, 0.00256647, 0, 0.809524, 0.484114, 0.00239901, 0, 0.84127, 0.469308, 0.00225148, 0, 0.873016, 0.455133, 0.00210178, 0, 0.904762, 0.440939, 0.0019727, 0, 0.936508, 0.426627, 0.00184382, 0, 0.968254, 0.412509, 0.00172548, 0, 1, 1, 0.013628, 0, 0, 1, 0.0136281, 0, 0, 0.999999, 0.0136289, 0, 0, 0.999995, 0.0136327, 0, 0, 0.999983, 0.0136427, 0, 0, 0.99996, 0.0136638, 0, 0, 0.999917, 0.0137022, 0, 0, 0.999846, 0.0137652, 0, 0.000204597, 0.999736, 0.0138615, 0, 0.00116837, 0.999573, 0.0140007, 0, 0.00303325, 0.99934, 0.0141927, 0, 0.00580613, 0.999004, 0.0144457, 0, 0.00945626, 0.998407, 0.0147489, 0, 0.0139421, 0.995464, 0.014731, 0, 0.0192202, 0.993328, 0.0148283, 0, 0.0252495, 0.991799, 0.0150797, 0, 0.0319921, 0.990397, 0.0154316, 0, 0.0394138, 0.986835, 0.0155005, 0, 0.0474843, 0.983938, 0.0157308, 0, 0.0561763, 0.980154, 0.0158753, 0, 0.0654661, 0.975659, 0.0159581, 0, 0.0753326, 0.970171, 0.0159832, 0, 0.0857571, 0.964803, 0.0160084, 0, 0.0967236, 0.958366, 0.0159484, 0, 0.108218, 0.950613, 0.0158001, 0, 0.120227, 0.942874, 0.0155845, 0, 0.132741, 0.935005, 0.0154292, 0, 0.145751, 0.924991, 0.0150742, 0, 0.159249, 0.914814, 0.0146757, 0, 0.17323, 0.904743, 0.0143097, 0, 0.187687, 0.893216, 0.0138695, 0, 0.202619, 0.880769, 0.0133706, 0, 0.218021, 0.868136, 0.0128606, 0, 0.233894, 0.85469, 0.0123403, 0, 0.250238, 0.840593, 0.0118091, 0, 0.267052, 0.825808, 0.011253, 0, 0.284341, 0.81009, 0.0107099, 0, 0.302106, 0.79504, 0.0101636, 0, 0.320354, 0.779757, 0.00964041, 0, 0.33909, 0.764697, 0.00911896, 0, 0.358322, 0.750913, 0.00859533, 0, 0.378059, 0.738175, 0.00811592, 0, 0.398311, 0.725242, 0.00764504, 0, 0.41909, 0.711864, 0.00718885, 0, 0.440412, 0.698009, 0.00675843, 0, 0.462292, 0.683841, 0.00634984, 0, 0.484748, 0.669391, 0.00595502, 0, 0.507802, 0.654731, 0.00558671, 0, 0.531477, 0.639805, 0.00523578, 0, 0.555802, 0.624789, 0.00490834, 0, 0.580805, 0.609325, 0.00459448, 0, 0.606522, 0.593975, 0.00430342, 0, 0.63299, 0.578983, 0.00403019, 0, 0.66025, 0.564442, 0.0037707, 0, 0.688346, 0.549835, 0.0035316, 0, 0.717319, 0.535039, 0.00330255, 0, 0.7472, 0.520403, 0.00308932, 0, 0.777982, 0.505687, 0.00289335, 0, 0.809524, 0.490939, 0.00270818, 0, 0.84127, 0.476233, 0.0025343, 0, 0.873016, 0.461624, 0.00237097, 0, 0.904762, 0.447833, 0.00222065, 0, 0.936508, 0.433992, 0.00207561, 0, 0.968254, 0.420147, 0.00194955, 0, 1, 1, 0.0173415, 0, 0, 1, 0.0173416, 0, 0, 0.999999, 0.0173426, 0, 0, 0.999995, 0.0173468, 0, 0, 0.999983, 0.0173582, 0, 0, 0.999954, 0.0173822, 0, 0, 0.999908, 0.0174258, 0, 6.69501e-06, 0.999828, 0.0174973, 0, 0.000427399, 0.999705, 0.0176063, 0, 0.00171019, 0.999524, 0.0177631, 0, 0.0039248, 0.999263, 0.0179781, 0, 0.00705382, 0.998878, 0.018258, 0, 0.0110552, 0.998012, 0.0185551, 0, 0.0158812, 0.994614, 0.0184264, 0, 0.0214852, 0.993132, 0.0186385, 0, 0.0278239, 0.991563, 0.0189067, 0, 0.0348585, 0.989298, 0.0191577, 0, 0.0425544, 0.986036, 0.0192522, 0, 0.050881, 0.982558, 0.0194063, 0, 0.059811, 0.978531, 0.019486, 0, 0.0693209, 0.974198, 0.0195847, 0, 0.0793895, 0.968148, 0.0194749, 0, 0.0899984, 0.962565, 0.0194277, 0, 0.101132, 0.956041, 0.0192991, 0, 0.112775, 0.947749, 0.0189893, 0, 0.124917, 0.94018, 0.018704, 0, 0.137547, 0.93165, 0.0183458, 0, 0.150655, 0.921798, 0.0178775, 0, 0.164236, 0.911573, 0.0173618, 0, 0.178281, 0.901569, 0.0168482, 0, 0.192788, 0.890341, 0.016265, 0, 0.207752, 0.877835, 0.0156199, 0, 0.223171, 0.865472, 0.0149516, 0, 0.239044, 0.852905, 0.0143274, 0, 0.255371, 0.838906, 0.0136643, 0, 0.272153, 0.824888, 0.0129903, 0, 0.289393, 0.809977, 0.0123218, 0, 0.307093, 0.794697, 0.0116572, 0, 0.325259, 0.780028, 0.0110307, 0, 0.343896, 0.765124, 0.0104236, 0, 0.363012, 0.750411, 0.0098219, 0, 0.382617, 0.737264, 0.00924397, 0, 0.402719, 0.724799, 0.00868719, 0, 0.423332, 0.712253, 0.00816476, 0, 0.444469, 0.699267, 0.00767262, 0, 0.466146, 0.685618, 0.00719746, 0, 0.488383, 0.671736, 0.00673916, 0, 0.511199, 0.657777, 0.00631937, 0, 0.534618, 0.643497, 0.00592411, 0, 0.558668, 0.62889, 0.00553928, 0, 0.58338, 0.614299, 0.0051934, 0, 0.608787, 0.599197, 0.00485985, 0, 0.634929, 0.584175, 0.00454357, 0, 0.661849, 0.569541, 0.00425787, 0, 0.689594, 0.555193, 0.00397905, 0, 0.718211, 0.540947, 0.00372364, 0, 0.747742, 0.526593, 0.00348599, 0, 0.778205, 0.512335, 0.00326103, 0, 0.80953, 0.498017, 0.00305137, 0, 0.84127, 0.483609, 0.00285485, 0, 0.873016, 0.469368, 0.00267472, 0, 0.904762, 0.455037, 0.00249945, 0, 0.936508, 0.441493, 0.00234792, 0, 0.968254, 0.428147, 0.00219936, 0, 1, 1, 0.0219422, 0, 0, 1, 0.0219423, 0, 0, 0.999998, 0.0219434, 0, 0, 0.999993, 0.0219481, 0, 0, 0.999981, 0.021961, 0, 0, 0.999949, 0.0219879, 0, 0, 0.999896, 0.0220367, 0, 5.93194e-05, 0.999808, 0.0221167, 0, 0.00075364, 0.99967, 0.0222383, 0, 0.00237884, 0.999466, 0.0224125, 0, 0.00495612, 0.999174, 0.0226495, 0, 0.00844887, 0.998725, 0.0229525, 0, 0.0128058, 0.996979, 0.0231123, 0, 0.0179742, 0.994317, 0.0230742, 0, 0.0239047, 0.992781, 0.0232895, 0, 0.0305526, 0.991191, 0.0235734, 0, 0.0378786, 0.987787, 0.0236152, 0, 0.0458475, 0.985092, 0.0237994, 0, 0.0544287, 0.981121, 0.0238553, 0, 0.0635952, 0.976924, 0.0238706, 0, 0.0733233, 0.97218, 0.0238704, 0, 0.0835922, 0.965956, 0.0236598, 0, 0.0943839, 0.959998, 0.0234735, 0, 0.105682, 0.953245, 0.0232277, 0, 0.117474, 0.944445, 0.0226973, 0, 0.129747, 0.937087, 0.0223527, 0, 0.142491, 0.928341, 0.0218144, 0, 0.155697, 0.9184, 0.0211516, 0, 0.169358, 0.907959, 0.0204553, 0, 0.183469, 0.89808, 0.0197673, 0, 0.198024, 0.887047, 0.0189915, 0, 0.21302, 0.875221, 0.0182082, 0, 0.228455, 0.86269, 0.0173584, 0, 0.244329, 0.850735, 0.0165718, 0, 0.260639, 0.837545, 0.0157524, 0, 0.277389, 0.823639, 0.0149482, 0, 0.29458, 0.809699, 0.0141431, 0, 0.312216, 0.794797, 0.0133527, 0, 0.3303, 0.780578, 0.0126193, 0, 0.34884, 0.766019, 0.0118914, 0, 0.367842, 0.751447, 0.0111839, 0, 0.387315, 0.737275, 0.010514, 0, 0.40727, 0.724545, 0.00987277, 0, 0.427717, 0.712644, 0.00926569, 0, 0.448671, 0.700432, 0.00869029, 0, 0.470149, 0.687664, 0.00814691, 0, 0.492167, 0.674288, 0.00763012, 0, 0.514746, 0.660966, 0.00714437, 0, 0.537911, 0.647264, 0.00668457, 0, 0.561688, 0.633431, 0.00626581, 0, 0.586108, 0.619133, 0.00585593, 0, 0.611206, 0.604935, 0.00548188, 0, 0.637022, 0.590236, 0.00513288, 0, 0.663599, 0.575473, 0.0047906, 0, 0.690989, 0.561228, 0.00448895, 0, 0.719242, 0.547054, 0.00420233, 0, 0.748411, 0.533175, 0.00392869, 0, 0.778531, 0.519163, 0.00367445, 0, 0.809583, 0.505328, 0.00344097, 0, 0.84127, 0.491446, 0.00322003, 0, 0.873016, 0.477356, 0.00301283, 0, 0.904762, 0.46356, 0.00282592, 0, 0.936508, 0.449623, 0.00264956, 0, 0.968254, 0.436068, 0.00246956, 0, 1, 1, 0.0276135, 0, 0, 1, 0.0276136, 0, 0, 0.999998, 0.0276148, 0, 0, 0.999993, 0.0276201, 0, 0, 0.999976, 0.0276342, 0, 0, 0.999945, 0.027664, 0, 0, 0.999884, 0.0277179, 0, 0.00018679, 0.999784, 0.027806, 0, 0.00119607, 0.99963, 0.0279394, 0, 0.00318407, 0.999401, 0.0281295, 0, 0.00613601, 0.999066, 0.0283858, 0, 0.00999963, 0.998524, 0.0287027, 0, 0.0147164, 0.995702, 0.0286256, 0, 0.0202295, 0.993593, 0.0286733, 0, 0.0264876, 0.992067, 0.0288989, 0, 0.0334452, 0.990548, 0.0292135, 0, 0.0410621, 0.986775, 0.0291296, 0, 0.0493032, 0.984054, 0.0293099, 0, 0.0581381, 0.979481, 0.0291881, 0, 0.0675397, 0.975297, 0.0291598, 0, 0.0774848, 0.96981, 0.028954, 0, 0.0879528, 0.963524, 0.028628, 0, 0.0989258, 0.957398, 0.0283135, 0, 0.110388, 0.950088, 0.0278469, 0, 0.122327, 0.941538, 0.0271798, 0, 0.134729, 0.933332, 0.0265388, 0, 0.147587, 0.924392, 0.0257776, 0, 0.160889, 0.914581, 0.024916, 0, 0.174631, 0.904347, 0.0240242, 0, 0.188806, 0.894324, 0.0231229, 0, 0.203409, 0.883724, 0.022153, 0, 0.218437, 0.872207, 0.0211355, 0, 0.233888, 0.859927, 0.0201048, 0, 0.249761, 0.848373, 0.0191263, 0, 0.266056, 0.836023, 0.0181306, 0, 0.282774, 0.82289, 0.0171718, 0, 0.299917, 0.809324, 0.0162196, 0, 0.317488, 0.795361, 0.0152622, 0, 0.335493, 0.781253, 0.01439, 0, 0.353936, 0.767338, 0.013533, 0, 0.372825, 0.753156, 0.0127244, 0, 0.392168, 0.739122, 0.0119454, 0, 0.411976, 0.725358, 0.0112054, 0, 0.432259, 0.712949, 0.010487, 0, 0.453032, 0.701621, 0.00984032, 0, 0.47431, 0.689703, 0.00921495, 0, 0.496111, 0.677216, 0.00862492, 0, 0.518456, 0.664217, 0.00806882, 0, 0.541367, 0.65137, 0.00755922, 0, 0.564872, 0.638, 0.00705705, 0, 0.589001, 0.62453, 0.00661266, 0, 0.613789, 0.610601, 0.00618432, 0, 0.639277, 0.59676, 0.00578033, 0, 0.66551, 0.582433, 0.00540927, 0, 0.692539, 0.568026, 0.00506104, 0, 0.720422, 0.55414, 0.0047353, 0, 0.749216, 0.540178, 0.00442889, 0, 0.778974, 0.526513, 0.00414363, 0, 0.809711, 0.512954, 0.00388237, 0, 0.84127, 0.499403, 0.00362875, 0, 0.873016, 0.486026, 0.00340827, 0, 0.904762, 0.472345, 0.00318598, 0, 0.936508, 0.458828, 0.00297635, 0, 0.968254, 0.445379, 0.00279447, 0, 1, 1, 0.0345716, 0, 0, 1, 0.0345717, 0, 0, 0.999999, 0.034573, 0, 0, 0.999991, 0.0345787, 0, 0, 0.999974, 0.0345941, 0, 0, 0.999937, 0.0346263, 0, 1.88589e-06, 0.999869, 0.0346847, 0, 0.000409238, 0.999757, 0.0347798, 0, 0.0017674, 0.999582, 0.0349233, 0, 0.00413658, 0.999322, 0.0351265, 0, 0.00747408, 0.998939, 0.0353967, 0, 0.0117157, 0.998219, 0.0357018, 0, 0.0167966, 0.994974, 0.0354726, 0, 0.0226572, 0.993201, 0.0355621, 0, 0.0292445, 0.991573, 0.0357641, 0, 0.0365123, 0.989301, 0.0359252, 0, 0.0444203, 0.985712, 0.0358017, 0, 0.0529334, 0.982411, 0.0358353, 0, 0.0620214, 0.977827, 0.035617, 0, 0.0716574, 0.973278, 0.0354398, 0, 0.0818186, 0.967397, 0.0350483, 0, 0.0924846, 0.960696, 0.0344795, 0, 0.103638, 0.954349, 0.0339861, 0, 0.115263, 0.946066, 0.0331323, 0, 0.127348, 0.938012, 0.032359, 0, 0.13988, 0.929413, 0.0314413, 0, 0.152849, 0.920355, 0.0304103, 0, 0.166248, 0.910586, 0.0292785, 0, 0.18007, 0.900609, 0.0281391, 0, 0.194308, 0.890093, 0.0269103, 0, 0.208958, 0.880013, 0.0257269, 0, 0.224018, 0.869001, 0.0244671, 0, 0.239485, 0.85751, 0.0232252, 0, 0.255359, 0.84582, 0.0220117, 0, 0.271638, 0.834383, 0.0208274, 0, 0.288324, 0.822158, 0.0196628, 0, 0.305419, 0.809056, 0.0185306, 0, 0.322927, 0.795832, 0.0174174, 0, 0.340851, 0.782547, 0.0163758, 0, 0.359199, 0.7689, 0.015391, 0, 0.377975, 0.755526, 0.0144488, 0, 0.397189, 0.741681, 0.0135372, 0, 0.416851, 0.728178, 0.0126957, 0, 0.436971, 0.714642, 0.0118812, 0, 0.457564, 0.702756, 0.0111165, 0, 0.478644, 0.69175, 0.0104145, 0, 0.500229, 0.680159, 0.00974439, 0, 0.522339, 0.668073, 0.00911926, 0, 0.544997, 0.655405, 0.00851393, 0, 0.56823, 0.642921, 0.00797637, 0, 0.592068, 0.629993, 0.00745119, 0, 0.616546, 0.616828, 0.00696972, 0, 0.641705, 0.603305, 0.00652425, 0, 0.66759, 0.589833, 0.00610188, 0, 0.694255, 0.575945, 0.00570834, 0, 0.72176, 0.561745, 0.00533384, 0, 0.750168, 0.548277, 0.00500001, 0, 0.779545, 0.534467, 0.00467582, 0, 0.809933, 0.521032, 0.00438092, 0, 0.841272, 0.507877, 0.00410348, 0, 0.873016, 0.494654, 0.00383618, 0, 0.904762, 0.481592, 0.00358699, 0, 0.936508, 0.468509, 0.00337281, 0, 0.968254, 0.455293, 0.00316196, 0, 1, 1, 0.0430698, 0, 0, 1, 0.0430699, 0, 0, 0.999998, 0.0430713, 0, 0, 0.999991, 0.0430773, 0, 0, 0.99997, 0.0430936, 0, 0, 0.999928, 0.0431277, 0, 4.06396e-05, 0.999852, 0.0431893, 0, 0.000744376, 0.999724, 0.0432895, 0, 0.0024806, 0.999527, 0.0434397, 0, 0.00524779, 0.99923, 0.0436507, 0, 0.00898164, 0.998783, 0.0439255, 0, 0.0136083, 0.997507, 0.0441104, 0, 0.0190582, 0.994418, 0.0438225, 0, 0.0252694, 0.992864, 0.0439396, 0, 0.0321879, 0.991127, 0.0440962, 0, 0.039767, 0.987331, 0.0438408, 0, 0.0479667, 0.984819, 0.0438991, 0, 0.056752, 0.980384, 0.0435906, 0, 0.0660929, 0.975846, 0.0432543, 0, 0.075963, 0.970748, 0.0428293, 0, 0.0863398, 0.964303, 0.042153, 0, 0.0972035, 0.95772, 0.0414111, 0, 0.108537, 0.950747, 0.0405893, 0, 0.120325, 0.942533, 0.0394887, 0, 0.132554, 0.934045, 0.0383544, 0, 0.145215, 0.924942, 0.037057, 0, 0.158296, 0.915811, 0.0356993, 0, 0.17179, 0.90612, 0.0342401, 0, 0.185691, 0.896434, 0.0328078, 0, 0.199993, 0.886021, 0.031288, 0, 0.214691, 0.876081, 0.0297776, 0, 0.229782, 0.865608, 0.0282334, 0, 0.245265, 0.854924, 0.026749, 0, 0.261138, 0.843607, 0.02526, 0, 0.277401, 0.832456, 0.0238214, 0, 0.294056, 0.821342, 0.0224682, 0, 0.311104, 0.809303, 0.0211297, 0, 0.328548, 0.796468, 0.0198387, 0, 0.346394, 0.784046, 0.0186227, 0, 0.364645, 0.771262, 0.0174561, 0, 0.38331, 0.758118, 0.0163806, 0, 0.402396, 0.745075, 0.0153287, 0, 0.421912, 0.731926, 0.0143647, 0, 0.44187, 0.71863, 0.0134363, 0, 0.462283, 0.705414, 0.0125603, 0, 0.483165, 0.693792, 0.0117508, 0, 0.504535, 0.683108, 0.0110016, 0, 0.52641, 0.67183, 0.0102757, 0, 0.548816, 0.66015, 0.00962044, 0, 0.571776, 0.647907, 0.00898031, 0, 0.595323, 0.635734, 0.00840811, 0, 0.619489, 0.623208, 0.00786211, 0, 0.644317, 0.610438, 0.00734953, 0, 0.669852, 0.597345, 0.00687688, 0, 0.696148, 0.584138, 0.00643469, 0, 0.723267, 0.5707, 0.00602236, 0, 0.75128, 0.556966, 0.0056324, 0, 0.780258, 0.543607, 0.00528277, 0, 0.810268, 0.530213, 0.00493999, 0, 0.841311, 0.516912, 0.00462265, 0, 0.873016, 0.503916, 0.0043307, 0, 0.904762, 0.491146, 0.00406858, 0, 0.936508, 0.478439, 0.00381436, 0, 0.968254, 0.465834, 0.00358003, 0, 1, 1, 0.0534039, 0, 0, 1, 0.053404, 0, 0, 0.999998, 0.0534055, 0, 0, 0.999989, 0.0534116, 0, 0, 0.999968, 0.0534283, 0, 0, 0.999918, 0.0534633, 0, 0.000155895, 0.99983, 0.0535262, 0, 0.00120914, 0.999685, 0.0536281, 0, 0.00334944, 0.999461, 0.0537799, 0, 0.00653077, 0.999119, 0.0539902, 0, 0.0106718, 0.998582, 0.0542524, 0, 0.0156907, 0.995919, 0.0540318, 0, 0.0215147, 0.993735, 0.0538914, 0, 0.0280801, 0.992126, 0.0539557, 0, 0.0353323, 0.990266, 0.0540401, 0, 0.0432247, 0.986317, 0.0536064, 0, 0.0517172, 0.983213, 0.0534425, 0, 0.0607754, 0.978303, 0.0528622, 0, 0.0703698, 0.973665, 0.0523363, 0, 0.0804742, 0.968091, 0.0516165, 0, 0.0910667, 0.961026, 0.0505434, 0, 0.102128, 0.954333, 0.049523, 0, 0.113641, 0.946372, 0.0481698, 0, 0.125591, 0.938254, 0.0467674, 0, 0.137965, 0.929516, 0.0452341, 0, 0.150754, 0.920106, 0.0435083, 0, 0.163947, 0.910899, 0.0417399, 0, 0.177537, 0.901532, 0.0399389, 0, 0.191516, 0.891919, 0.0380901, 0, 0.205881, 0.882006, 0.0362341, 0, 0.220626, 0.871965, 0.0343444, 0, 0.235749, 0.862145, 0.0324832, 0, 0.251248, 0.852058, 0.0306681, 0, 0.267121, 0.84161, 0.0289097, 0, 0.283368, 0.830806, 0.0272079, 0, 0.299992, 0.820476, 0.0256089, 0, 0.316992, 0.809514, 0.0240394, 0, 0.334374, 0.797865, 0.0225379, 0, 0.35214, 0.785621, 0.0211235, 0, 0.370296, 0.773765, 0.0197908, 0, 0.388849, 0.761629, 0.0185235, 0, 0.407807, 0.748891, 0.0173358, 0, 0.427178, 0.736437, 0.0162305, 0, 0.446974, 0.723707, 0.0151778, 0, 0.467207, 0.710606, 0.0141791, 0, 0.487892, 0.698019, 0.0132592, 0, 0.509046, 0.686203, 0.0123887, 0, 0.530687, 0.675692, 0.0115976, 0, 0.552839, 0.664826, 0.0108325, 0, 0.575527, 0.65349, 0.0101348, 0, 0.59878, 0.641774, 0.00947756, 0, 0.622634, 0.629794, 0.00886058, 0, 0.647128, 0.617647, 0.00828526, 0, 0.672308, 0.60534, 0.00775312, 0, 0.698231, 0.592718, 0.00726033, 0, 0.724958, 0.579746, 0.00679731, 0, 0.752563, 0.566763, 0.00636111, 0, 0.781127, 0.553515, 0.00595228, 0, 0.810733, 0.540118, 0.00556876, 0, 0.841426, 0.527325, 0.00523051, 0, 0.873016, 0.514265, 0.00490712, 0, 0.904762, 0.501406, 0.00460297, 0, 0.936508, 0.488922, 0.00431247, 0, 0.968254, 0.476541, 0.0040472, 0, 1, 1, 0.0659184, 0, 0, 1, 0.0659185, 0, 0, 0.999998, 0.06592, 0, 0, 0.999988, 0.0659259, 0, 0, 0.999963, 0.0659423, 0, 0, 0.999907, 0.0659764, 0, 0.000374198, 0.999806, 0.0660376, 0, 0.00182071, 0.999639, 0.0661361, 0, 0.0043894, 0.999378, 0.0662814, 0, 0.00800055, 0.998985, 0.0664779, 0, 0.0125594, 0.998285, 0.0666914, 0, 0.0179786, 0.995071, 0.0661989, 0, 0.0241822, 0.993172, 0.0660454, 0, 0.031106, 0.991438, 0.0660105, 0, 0.0386952, 0.988428, 0.0656875, 0, 0.0469032, 0.985218, 0.0652913, 0, 0.0556905, 0.981128, 0.0647107, 0, 0.065023, 0.976015, 0.0638491, 0, 0.0748717, 0.97097, 0.062993, 0, 0.0852112, 0.964582, 0.0617927, 0, 0.0960199, 0.957383, 0.0603626, 0, 0.107279, 0.949969, 0.0588128, 0, 0.118971, 0.941843, 0.0570274, 0, 0.131084, 0.933624, 0.0551885, 0, 0.143604, 0.924543, 0.053122, 0, 0.156521, 0.914919, 0.0508897, 0, 0.169825, 0.905773, 0.0486418, 0, 0.18351, 0.896434, 0.0463364, 0, 0.197569, 0.887195, 0.0440623, 0, 0.211997, 0.877706, 0.0417799, 0, 0.226789, 0.867719, 0.03945, 0, 0.241944, 0.858587, 0.037243, 0, 0.257458, 0.849317, 0.0350956, 0, 0.273331, 0.839585, 0.0329852, 0, 0.289563, 0.829856, 0.0310028, 0, 0.306154, 0.819589, 0.0290953, 0, 0.323108, 0.809714, 0.0272738, 0, 0.340426, 0.79934, 0.0255631, 0, 0.358113, 0.788224, 0.0239175, 0, 0.376175, 0.776619, 0.0223831, 0, 0.394616, 0.76521, 0.0209298, 0, 0.413445, 0.753716, 0.0195786, 0, 0.432671, 0.741564, 0.0183001, 0, 0.452305, 0.729413, 0.0171259, 0, 0.472358, 0.717146, 0.0159933, 0, 0.492845, 0.70436, 0.0149495, 0, 0.513783, 0.69219, 0.0139681, 0, 0.535189, 0.680289, 0.0130577, 0, 0.557087, 0.669611, 0.0122198, 0, 0.5795, 0.659113, 0.0114174, 0, 0.602459, 0.648148, 0.0106729, 0, 0.625997, 0.636905, 0.00998997, 0, 0.650154, 0.625154, 0.00934313, 0, 0.674976, 0.613481, 0.00874839, 0, 0.700518, 0.60154, 0.00818265, 0, 0.726845, 0.58943, 0.00766889, 0, 0.754032, 0.576828, 0.00717153, 0, 0.782167, 0.564194, 0.00672696, 0, 0.811344, 0.551501, 0.00630863, 0, 0.841644, 0.538635, 0.00592177, 0, 0.873016, 0.525724, 0.00554888, 0, 0.904762, 0.513209, 0.00520225, 0, 0.936508, 0.500457, 0.00488231, 0, 0.968254, 0.48799, 0.00457153, 0, 1, 1, 0.0810131, 0, 0, 1, 0.0810133, 0, 0, 0.999997, 0.0810145, 0, 0, 0.999985, 0.08102, 0, 0, 0.999956, 0.0810347, 0, 1.95026e-05, 0.999893, 0.0810656, 0, 0.000719316, 0.999777, 0.0811205, 0, 0.00259774, 0.999583, 0.081208, 0, 0.00561807, 0.999281, 0.0813343, 0, 0.00967472, 0.998813, 0.0814969, 0, 0.0146627, 0.997597, 0.0815217, 0, 0.0204902, 0.994379, 0.0808502, 0, 0.0270802, 0.992744, 0.0806792, 0, 0.0343674, 0.990745, 0.0804589, 0, 0.0422974, 0.986646, 0.0796107, 0, 0.0508242, 0.983611, 0.0790913, 0, 0.0599087, 0.978869, 0.0780746, 0, 0.0695175, 0.973475, 0.0768218, 0, 0.0796223, 0.967845, 0.0754926, 0, 0.0901983, 0.960778, 0.0737063, 0, 0.101224, 0.953333, 0.0718052, 0, 0.112682, 0.945274, 0.0695946, 0, 0.124555, 0.936955, 0.0672492, 0, 0.136831, 0.928319, 0.0647732, 0, 0.149496, 0.919075, 0.0620947, 0, 0.162542, 0.909114, 0.0591816, 0, 0.175958, 0.900137, 0.0563917, 0, 0.189739, 0.891069, 0.0535392, 0, 0.203877, 0.882262, 0.0507642, 0, 0.218368, 0.873232, 0.0479793, 0, 0.233208, 0.864042, 0.045226, 0, 0.248393, 0.855002, 0.0425413, 0, 0.263923, 0.846569, 0.0400126, 0, 0.279796, 0.837714, 0.0375269, 0, 0.296012, 0.828918, 0.0352027, 0, 0.312573, 0.819783, 0.0330011, 0, 0.329479, 0.810129, 0.0308908, 0, 0.346734, 0.800866, 0.0289112, 0, 0.364342, 0.79093, 0.0270255, 0, 0.382307, 0.780593, 0.0252758, 0, 0.400637, 0.769511, 0.0236178, 0, 0.419337, 0.758558, 0.0220652, 0, 0.438418, 0.747632, 0.0206289, 0, 0.457889, 0.736146, 0.0192873, 0, 0.477761, 0.724093, 0.0180333, 0, 0.49805, 0.71234, 0.0168264, 0, 0.51877, 0.700201, 0.015746, 0, 0.53994, 0.687949, 0.0147027, 0, 0.561581, 0.676163, 0.0137512, 0, 0.583718, 0.665001, 0.0128655, 0, 0.60638, 0.65472, 0.0120366, 0, 0.629599, 0.644213, 0.0112604, 0, 0.653415, 0.633382, 0.0105413, 0, 0.677874, 0.62212, 0.00986498, 0, 0.70303, 0.610631, 0.00923308, 0, 0.728948, 0.599078, 0.00864206, 0, 0.755706, 0.587519, 0.00811784, 0, 0.783396, 0.575505, 0.00761237, 0, 0.812121, 0.563148, 0.00713949, 0, 0.841989, 0.550828, 0.00668379, 0, 0.873035, 0.538458, 0.00627715, 0, 0.904762, 0.525905, 0.00588336, 0, 0.936508, 0.513517, 0.00552687, 0, 0.968254, 0.501395, 0.00519681, 0, 1, 1, 0.0991506, 0, 0, 1, 0.0991504, 0, 0, 0.999996, 0.0991515, 0, 0, 0.999984, 0.0991558, 0, 0, 0.999947, 0.0991672, 0, 0.000114389, 0.999874, 0.0991912, 0, 0.00121503, 0.999739, 0.0992331, 0, 0.00356108, 0.999514, 0.0992983, 0, 0.00705578, 0.999159, 0.0993877, 0, 0.011574, 0.998586, 0.0994837, 0, 0.017003, 0.995731, 0.0988425, 0, 0.0232484, 0.993384, 0.098276, 0, 0.0302318, 0.991615, 0.0979269, 0, 0.0378884, 0.989029, 0.0973432, 0, 0.0461641, 0.985373, 0.0963539, 0, 0.0550136, 0.981278, 0.0952306, 0, 0.0643988, 0.975777, 0.0936233, 0, 0.0742868, 0.970526, 0.0920219, 0, 0.0846501, 0.963755, 0.0898912, 0, 0.0954644, 0.956676, 0.0876064, 0, 0.106709, 0.948099, 0.0847751, 0, 0.118367, 0.939718, 0.0818638, 0, 0.130423, 0.931305, 0.078857, 0, 0.142862, 0.922342, 0.0756127, 0, 0.155674, 0.912842, 0.0721473, 0, 0.168849, 0.903304, 0.0686195, 0, 0.182378, 0.89411, 0.0650589, 0, 0.196255, 0.885512, 0.0616022, 0, 0.210473, 0.877193, 0.0582434, 0, 0.225027, 0.86877, 0.0548979, 0, 0.239915, 0.860267, 0.0516095, 0, 0.255132, 0.851915, 0.048468, 0, 0.270678, 0.843912, 0.0454447, 0, 0.286551, 0.83604, 0.0425612, 0, 0.302751, 0.828245, 0.0398752, 0, 0.31928, 0.820159, 0.0373198, 0, 0.336138, 0.81167, 0.034916, 0, 0.35333, 0.802659, 0.0326402, 0, 0.370858, 0.793921, 0.0304901, 0, 0.388728, 0.784713, 0.0284857, 0, 0.406944, 0.774946, 0.0266186, 0, 0.425515, 0.76448, 0.0248593, 0, 0.444449, 0.753793, 0.0232114, 0, 0.463756, 0.743506, 0.0217039, 0, 0.483447, 0.732555, 0.0202841, 0, 0.503535, 0.720965, 0.0189648, 0, 0.524036, 0.709422, 0.0177189, 0, 0.544968, 0.697756, 0.0165626, 0, 0.56635, 0.685565, 0.015483, 0, 0.588208, 0.673987, 0.0144892, 0, 0.610569, 0.66244, 0.0135607, 0, 0.633466, 0.651675, 0.0126956, 0, 0.656936, 0.641598, 0.0118788, 0, 0.681025, 0.63121, 0.0111261, 0, 0.705788, 0.620514, 0.010437, 0, 0.731289, 0.609366, 0.00978747, 0, 0.757606, 0.598137, 0.00917257, 0, 0.784834, 0.586966, 0.00859778, 0, 0.813085, 0.575549, 0.00806803, 0, 0.842485, 0.563797, 0.00757294, 0, 0.87313, 0.551758, 0.00710592, 0, 0.904762, 0.539894, 0.0066841, 0, 0.936508, 0.527901, 0.00627901, 0, 0.968254, 0.515819, 0.00590506, 0, 1, 1, 0.120864, 0, 0, 1, 0.120864, 0, 0, 0.999996, 0.120864, 0, 0, 0.99998, 0.120867, 0, 0, 0.99994, 0.120872, 0, 0.000323781, 0.999852, 0.120884, 0, 0.00188693, 0.999693, 0.120903, 0, 0.00473489, 0.999426, 0.120929, 0, 0.00872704, 0.999002, 0.120955, 0, 0.0137237, 0.998235, 0.120918, 0, 0.0196068, 0.994608, 0.119764, 0, 0.0262803, 0.992997, 0.119265, 0, 0.0336657, 0.990968, 0.11863, 0, 0.0416987, 0.987002, 0.117261, 0, 0.0503261, 0.983524, 0.116009, 0, 0.0595035, 0.97875, 0.114252, 0, 0.0691935, 0.972652, 0.11193, 0, 0.0793645, 0.966613, 0.109555, 0, 0.0899894, 0.959275, 0.106612, 0, 0.101045, 0.951272, 0.103375, 0, 0.112512, 0.942323, 0.0996594, 0, 0.124372, 0.933679, 0.0958841, 0, 0.136611, 0.924822, 0.0919265, 0, 0.149216, 0.915742, 0.0878061, 0, 0.162176, 0.906348, 0.0834894, 0, 0.175482, 0.896883, 0.079085, 0, 0.189125, 0.88774, 0.0746745, 0, 0.203098, 0.87986, 0.0705773, 0, 0.217396, 0.871998, 0.0665005, 0, 0.232015, 0.864325, 0.0625413, 0, 0.24695, 0.856685, 0.0586781, 0, 0.2622, 0.84925, 0.0550063, 0, 0.277761, 0.841719, 0.0514727, 0, 0.293634, 0.834755, 0.0481398, 0, 0.309819, 0.827853, 0.0450172, 0, 0.326315, 0.820888, 0.0420969, 0, 0.343126, 0.813616, 0.0393702, 0, 0.360254, 0.805767, 0.0367771, 0, 0.377701, 0.797338, 0.0343274, 0, 0.395474, 0.789122, 0.0320529, 0, 0.413577, 0.780601, 0.0299485, 0, 0.432018, 0.771424, 0.0279812, 0, 0.450804, 0.761502, 0.0261054, 0, 0.469944, 0.751166, 0.0243942, 0, 0.489451, 0.741276, 0.0228087, 0, 0.509337, 0.730898, 0.0213265, 0, 0.529617, 0.719878, 0.0199307, 0, 0.550307, 0.708379, 0.0186574, 0, 0.571428, 0.697165, 0.0174446, 0, 0.593003, 0.685554, 0.0163144, 0, 0.615059, 0.673631, 0.015276, 0, 0.637628, 0.662385, 0.0143003, 0, 0.660746, 0.651059, 0.0134112, 0, 0.68446, 0.640451, 0.0125794, 0, 0.70882, 0.630536, 0.011793, 0, 0.733893, 0.620316, 0.0110547, 0, 0.759756, 0.609722, 0.0103668, 0, 0.786505, 0.598804, 0.00973009, 0, 0.814259, 0.587871, 0.00912812, 0, 0.843157, 0.577121, 0.00858916, 0, 0.87334, 0.566019, 0.00807333, 0, 0.904762, 0.554664, 0.00759687, 0, 0.936508, 0.543101, 0.00714759, 0, 0.968254, 0.531558, 0.00673418, 0, 1, 1, 0.146767, 0, 0, 1, 0.146767, 0, 0, 0.999997, 0.146767, 0, 0, 0.999977, 0.146765, 0, 3.20658e-06, 0.999929, 0.146762, 0, 0.000682576, 0.999823, 0.146753, 0, 0.00276402, 0.999633, 0.146735, 0, 0.00614771, 0.999314, 0.146699, 0, 0.0106613, 0.998796, 0.14662, 0, 0.0161546, 0.997124, 0.146107, 0, 0.0225063, 0.994062, 0.144857, 0, 0.0296198, 0.992154, 0.144011, 0, 0.037417, 0.989186, 0.142712, 0, 0.0458348, 0.985279, 0.140926, 0, 0.0548211, 0.980826, 0.13885, 0, 0.0643326, 0.975056, 0.136168, 0, 0.074333, 0.969005, 0.133217, 0, 0.0847917, 0.961554, 0.12959, 0, 0.0956828, 0.954206, 0.125886, 0, 0.106984, 0.945046, 0.121335, 0, 0.118675, 0.935678, 0.116492, 0, 0.130741, 0.926748, 0.111635, 0, 0.143166, 0.917764, 0.106625, 0, 0.155939, 0.908358, 0.101325, 0, 0.169049, 0.899219, 0.0960249, 0, 0.182487, 0.890089, 0.0906527, 0, 0.196245, 0.881488, 0.0853905, 0, 0.210317, 0.874031, 0.0804177, 0, 0.224697, 0.866932, 0.0756005, 0, 0.23938, 0.859976, 0.0709019, 0, 0.254364, 0.853375, 0.0664391, 0, 0.269646, 0.846971, 0.0622012, 0, 0.285223, 0.840483, 0.058129, 0, 0.301096, 0.833969, 0.0542762, 0, 0.317265, 0.82806, 0.0507042, 0, 0.333729, 0.822128, 0.047368, 0, 0.350491, 0.815989, 0.044272, 0, 0.367554, 0.809336, 0.0413444, 0, 0.38492, 0.802177, 0.038601, 0, 0.402594, 0.79441, 0.0360227, 0, 0.420582, 0.786573, 0.0336383, 0, 0.438891, 0.778619, 0.0314321, 0, 0.457527, 0.77, 0.029362, 0, 0.476499, 0.760698, 0.0274102, 0, 0.49582, 0.750932, 0.0256146, 0, 0.5155, 0.740993, 0.023974, 0, 0.535555, 0.731159, 0.0224182, 0, 0.556, 0.720836, 0.0209889, 0, 0.576855, 0.709913, 0.0196411, 0, 0.598143, 0.698415, 0.0183824, 0, 0.619888, 0.68745, 0.0172222, 0, 0.642123, 0.676154, 0.0161509, 0, 0.664883, 0.664383, 0.0151397, 0, 0.688211, 0.6533, 0.0141873, 0, 0.71216, 0.642072, 0.0133105, 0, 0.736792, 0.631412, 0.0124932, 0, 0.762186, 0.621622, 0.0117408, 0, 0.788439, 0.611681, 0.0110358, 0, 0.815672, 0.60142, 0.0103775, 0, 0.844034, 0.59083, 0.00975623, 0, 0.873699, 0.580254, 0.00918084, 0, 0.904765, 0.569841, 0.00864721, 0, 0.936508, 0.559224, 0.00815731, 0, 0.968254, 0.548315, 0.00767924, 0, 1, 1, 0.177563, 0, 0, 1, 0.177563, 0, 0, 0.999994, 0.177562, 0, 0, 0.999972, 0.177555, 0, 6.64171e-05, 0.999914, 0.177536, 0, 0.0012276, 0.999787, 0.177496, 0, 0.00388025, 0.999556, 0.17742, 0, 0.00783463, 0.999165, 0.177285, 0, 0.0128953, 0.9985, 0.177037, 0, 0.0189053, 0.995388, 0.175634, 0, 0.025742, 0.993102, 0.174375, 0, 0.033309, 0.990992, 0.173121, 0, 0.0415298, 0.986932, 0.170896, 0, 0.0503425, 0.982786, 0.16847, 0, 0.0596964, 0.977592, 0.165455, 0, 0.0695498, 0.971075, 0.161676, 0, 0.0798676, 0.963967, 0.157458, 0, 0.0906201, 0.956397, 0.152836, 0, 0.101783, 0.947489, 0.147467, 0, 0.113333, 0.937564, 0.14145, 0, 0.125254, 0.928182, 0.135383, 0, 0.137529, 0.919027, 0.129212, 0, 0.150144, 0.909618, 0.12276, 0, 0.163088, 0.900492, 0.116273, 0, 0.176351, 0.891671, 0.1098, 0, 0.189924, 0.883146, 0.103362, 0, 0.203799, 0.875151, 0.0970799, 0, 0.21797, 0.868338, 0.0911732, 0, 0.232433, 0.862033, 0.0854966, 0, 0.247182, 0.856107, 0.0800691, 0, 0.262216, 0.850644, 0.0749618, 0, 0.27753, 0.845261, 0.070079, 0, 0.293124, 0.839885, 0.0654321, 0, 0.308997, 0.834609, 0.0610975, 0, 0.325149, 0.829083, 0.0569741, 0, 0.341581, 0.82404, 0.0531736, 0, 0.358294, 0.818968, 0.049665, 0, 0.37529, 0.813496, 0.0463856, 0, 0.392573, 0.807533, 0.0433217, 0, 0.410148, 0.80099, 0.0404402, 0, 0.428019, 0.793891, 0.0377578, 0, 0.446192, 0.786281, 0.0352616, 0, 0.464676, 0.778773, 0.0329577, 0, 0.483478, 0.770737, 0.030808, 0, 0.502608, 0.762094, 0.0287964, 0, 0.522079, 0.752898, 0.0269254, 0, 0.541905, 0.743306, 0.0251926, 0, 0.5621, 0.733416, 0.023595, 0, 0.582684, 0.723742, 0.0221155, 0, 0.603677, 0.713542, 0.0207435, 0, 0.625106, 0.702755, 0.019434, 0, 0.646998, 0.691484, 0.0182046, 0, 0.66939, 0.680531, 0.0170771, 0, 0.692324, 0.66953, 0.0160339, 0, 0.715849, 0.658126, 0.0150677, 0, 0.740028, 0.646933, 0.0141551, 0, 0.764937, 0.636107, 0.0133179, 0, 0.790673, 0.625271, 0.0125284, 0, 0.817358, 0.615225, 0.0117937, 0, 0.84515, 0.605678, 0.0111181, 0, 0.874244, 0.59583, 0.0104759, 0, 0.904828, 0.585704, 0.00986672, 0, 0.936508, 0.575413, 0.00929712, 0, 0.968254, 0.565373, 0.00876713, 0, 1, 1, 0.214058, 0, 0, 0.999999, 0.214058, 0, 0, 0.999994, 0.214055, 0, 0, 0.999966, 0.214039, 0, 0.000259642, 0.999893, 0.213998, 0, 0.00200075, 0.999737, 0.21391, 0, 0.00527775, 0.999449, 0.213745, 0, 0.00983959, 0.99896, 0.213458, 0, 0.0154755, 0.9979, 0.212855, 0, 0.0220249, 0.994278, 0.210779, 0, 0.0293654, 0.992254, 0.20926, 0, 0.0374021, 0.98881, 0.206908, 0, 0.0460604, 0.984715, 0.204009, 0, 0.0552802, 0.979738, 0.200471, 0, 0.0650127, 0.972884, 0.195813, 0, 0.0752175, 0.965996, 0.190856, 0, 0.0858612, 0.957974, 0.185077, 0, 0.0969155, 0.949155, 0.17868, 0, 0.108356, 0.939288, 0.171513, 0, 0.120163, 0.928996, 0.163838, 0, 0.132319, 0.919563, 0.156246, 0, 0.144808, 0.910004, 0.148359, 0, 0.157618, 0.900791, 0.140417, 0, 0.170737, 0.892135, 0.132569, 0, 0.184155, 0.883803, 0.124741, 0, 0.197866, 0.876034, 0.117091, 0, 0.211861, 0.869219, 0.109835, 0, 0.226134, 0.863062, 0.102859, 0, 0.240682, 0.857795, 0.0962928, 0, 0.255499, 0.853009, 0.0900725, 0, 0.270583, 0.848603, 0.0842101, 0, 0.285931, 0.844335, 0.0786527, 0, 0.301542, 0.840208, 0.0734397, 0, 0.317415, 0.836035, 0.0685334, 0, 0.33355, 0.83172, 0.0639275, 0, 0.349948, 0.827135, 0.0595909, 0, 0.36661, 0.822797, 0.0556204, 0, 0.383539, 0.818387, 0.0519394, 0, 0.400738, 0.813565, 0.0485317, 0, 0.41821, 0.808142, 0.0453138, 0, 0.435961, 0.802212, 0.0423354, 0, 0.453997, 0.79573, 0.0395553, 0, 0.472324, 0.788741, 0.036988, 0, 0.490951, 0.781093, 0.0345688, 0, 0.509887, 0.773597, 0.0323297, 0, 0.529144, 0.765622, 0.0302719, 0, 0.548735, 0.757083, 0.0283477, 0, 0.568674, 0.747992, 0.0265562, 0, 0.588979, 0.738591, 0.0248844, 0, 0.609671, 0.728719, 0.0233342, 0, 0.630773, 0.719146, 0.0219081, 0, 0.652314, 0.709165, 0.0205711, 0, 0.674328, 0.69875, 0.0193248, 0, 0.696854, 0.687884, 0.0181582, 0, 0.719942, 0.676818, 0.0170746, 0, 0.743651, 0.666247, 0.0160718, 0, 0.768057, 0.655284, 0.0151262, 0, 0.793253, 0.64401, 0.0142561, 0, 0.819363, 0.633353, 0.0134327, 0, 0.846547, 0.622674, 0.012653, 0, 0.875017, 0.612265, 0.0119354, 0, 0.905021, 0.602455, 0.0112533, 0, 0.936508, 0.593147, 0.0106234, 0, 0.968254, 0.583592, 0.0100213, 0, 1, 1, 0.25717, 0, 0, 1, 0.25717, 0, 0, 0.999992, 0.257164, 0, 0, 0.999958, 0.257135, 0, 0.000641715, 0.999864, 0.25706, 0, 0.00305314, 0.999666, 0.256897, 0, 0.00700975, 0.999302, 0.256596, 0, 0.0122194, 0.998663, 0.25607, 0, 0.0184622, 0.995607, 0.254123, 0, 0.0255773, 0.993094, 0.252081, 0, 0.0334439, 0.9907, 0.249867, 0, 0.0419696, 0.98594, 0.246118, 0, 0.0510823, 0.981214, 0.242049, 0, 0.0607242, 0.974966, 0.236869, 0, 0.0708486, 0.967589, 0.230724, 0, 0.081417, 0.95915, 0.223635, 0, 0.0923974, 0.950257, 0.21596, 0, 0.103763, 0.940165, 0.207296, 0, 0.115491, 0.929396, 0.197901, 0, 0.127562, 0.919288, 0.188437, 0, 0.13996, 0.909428, 0.178762, 0, 0.15267, 0.900105, 0.169072, 0, 0.165679, 0.891418, 0.159478, 0, 0.178979, 0.883347, 0.15002, 0, 0.192558, 0.875992, 0.140813, 0, 0.20641, 0.869466, 0.13196, 0, 0.220529, 0.863699, 0.123501, 0, 0.234907, 0.858553, 0.115436, 0, 0.249542, 0.854379, 0.107901, 0, 0.264428, 0.850894, 0.10088, 0, 0.279564, 0.847632, 0.0942296, 0, 0.294947, 0.844571, 0.0879861, 0, 0.310575, 0.84163, 0.0821534, 0, 0.326448, 0.838542, 0.0766409, 0, 0.342566, 0.835412, 0.0715322, 0, 0.358929, 0.831899, 0.0666883, 0, 0.37554, 0.828177, 0.0622175, 0, 0.392399, 0.82416, 0.0580452, 0, 0.409511, 0.820393, 0.054267, 0, 0.426878, 0.816068, 0.0507172, 0, 0.444506, 0.811201, 0.0474041, 0, 0.4624, 0.805785, 0.0443174, 0, 0.480566, 0.799878, 0.0414562, 0, 0.499013, 0.793469, 0.0388147, 0, 0.517749, 0.786473, 0.0363453, 0, 0.536785, 0.778874, 0.0340225, 0, 0.556134, 0.771277, 0.0318599, 0, 0.575809, 0.763426, 0.0298859, 0, 0.595827, 0.755044, 0.0280357, 0, 0.616207, 0.746161, 0.0262979, 0, 0.636973, 0.737124, 0.0247295, 0, 0.65815, 0.72761, 0.0232514, 0, 0.679772, 0.717822, 0.0218755, 0, 0.701876, 0.708279, 0.0205942, 0, 0.724509, 0.698333, 0.0193947, 0, 0.74773, 0.68802, 0.0182717, 0, 0.771609, 0.677321, 0.0172044, 0, 0.79624, 0.666504, 0.0162122, 0, 0.821743, 0.656184, 0.0152924, 0, 0.84828, 0.64556, 0.0144326, 0, 0.876069, 0.634636, 0.0136157, 0, 0.905404, 0.624124, 0.0128612, 0, 0.936508, 0.613914, 0.0121435, 0, 0.968254, 0.603589, 0.0114887, 0, 1, 1, 0.307946, 0, 0, 0.999999, 0.307945, 0, 0, 0.999988, 0.307934, 0, 2.04479e-05, 0.999944, 0.307886, 0, 0.00127833, 0.999824, 0.307756, 0, 0.00445047, 0.999565, 0.30748, 0, 0.00914673, 0.999085, 0.306966, 0, 0.0150498, 0.998103, 0.306004, 0, 0.0219367, 0.994249, 0.303028, 0, 0.0296485, 0.991807, 0.300435, 0, 0.038068, 0.987773, 0.296554, 0, 0.0471062, 0.982673, 0.2916, 0, 0.0566942, 0.976623, 0.285641, 0, 0.0667768, 0.968757, 0.27815, 0, 0.0773099, 0.959849, 0.269529, 0, 0.088257, 0.950663, 0.260248, 0, 0.0995879, 0.940129, 0.249704, 0, 0.111277, 0.92895, 0.238291, 0, 0.123304, 0.917996, 0.226501, 0, 0.13565, 0.907813, 0.214669, 0, 0.148299, 0.898305, 0.202835, 0, 0.161237, 0.889626, 0.191158, 0, 0.174455, 0.88175, 0.179695, 0, 0.187941, 0.874715, 0.168548, 0, 0.201687, 0.868746, 0.15792, 0, 0.215687, 0.863703, 0.147807, 0, 0.229933, 0.859315, 0.138149, 0, 0.24442, 0.855538, 0.128993, 0, 0.259145, 0.852428, 0.120414, 0, 0.274103, 0.850168, 0.112498, 0, 0.289293, 0.848132, 0.105054, 0, 0.304711, 0.846291, 0.0981087, 0, 0.320357, 0.844431, 0.0915942, 0, 0.33623, 0.842493, 0.0855056, 0, 0.35233, 0.840368, 0.0798204, 0, 0.368658, 0.83798, 0.0745097, 0, 0.385214, 0.83523, 0.0695424, 0, 0.402002, 0.832091, 0.0649092, 0, 0.419023, 0.828667, 0.0606291, 0, 0.436282, 0.824805, 0.0566523, 0, 0.453782, 0.820988, 0.0530229, 0, 0.471529, 0.816635, 0.0496364, 0, 0.489528, 0.811725, 0.0464658, 0, 0.507788, 0.806316, 0.0435082, 0, 0.526317, 0.800469, 0.0407873, 0, 0.545124, 0.794107, 0.038255, 0, 0.564221, 0.787218, 0.0358825, 0, 0.583621, 0.779872, 0.0336785, 0, 0.603341, 0.772097, 0.0316379, 0, 0.623397, 0.764484, 0.0297379, 0, 0.643812, 0.756428, 0.0279581, 0, 0.664611, 0.748022, 0.0263153, 0, 0.685824, 0.739268, 0.0247799, 0, 0.707488, 0.73024, 0.0233385, 0, 0.729646, 0.720893, 0.0220035, 0, 0.752354, 0.71119, 0.0207555, 0, 0.77568, 0.701791, 0.0195843, 0, 0.799715, 0.692184, 0.0184891, 0, 0.824574, 0.682258, 0.0174541, 0, 0.850417, 0.67206, 0.0164873, 0, 0.877466, 0.661717, 0.0155959, 0, 0.90604, 0.651462, 0.0147519, 0, 0.936528, 0.641467, 0.0139727, 0, 0.968254, 0.631229, 0.0132363, 0, 1, 1, 0.367573, 0, 0, 0.999999, 0.367571, 0, 0, 0.999984, 0.367553, 0, 0.000183382, 0.999925, 0.367473, 0, 0.00225254, 0.999759, 0.367259, 0, 0.00628165, 0.99941, 0.366801, 0, 0.0117858, 0.998739, 0.365946, 0, 0.0184359, 0.995529, 0.363191, 0, 0.0260114, 0.992875, 0.360171, 0, 0.0343581, 0.989135, 0.355981, 0, 0.0433637, 0.984166, 0.350401, 0, 0.0529438, 0.977871, 0.343348, 0, 0.0630334, 0.96951, 0.334341, 0, 0.0735805, 0.959964, 0.323862, 0, 0.0845437, 0.950162, 0.312521, 0, 0.095889, 0.938882, 0.299577, 0, 0.107588, 0.926992, 0.285573, 0, 0.119617, 0.915589, 0.271212, 0, 0.131957, 0.904791, 0.256611, 0, 0.144591, 0.895177, 0.242224, 0, 0.157503, 0.886403, 0.227952, 0, 0.170682, 0.878957, 0.214192, 0, 0.184117, 0.872418, 0.200795, 0, 0.197799, 0.867029, 0.188015, 0, 0.21172, 0.862835, 0.175975, 0, 0.225873, 0.859411, 0.164526, 0, 0.240253, 0.856655, 0.153693, 0, 0.254854, 0.854519, 0.14352, 0, 0.269673, 0.852828, 0.13397, 0, 0.284707, 0.851412, 0.124984, 0, 0.299953, 0.850609, 0.116748, 0, 0.315408, 0.849855, 0.10905, 0, 0.331073, 0.849017, 0.101839, 0, 0.346946, 0.848079, 0.0951359, 0, 0.363028, 0.846911, 0.0888774, 0, 0.379318, 0.845445, 0.0830375, 0, 0.395818, 0.84362, 0.0775844, 0, 0.41253, 0.841411, 0.0725054, 0, 0.429457, 0.838768, 0.0677691, 0, 0.446602, 0.835801, 0.0634016, 0, 0.463968, 0.832341, 0.0593095, 0, 0.481561, 0.828424, 0.0555121, 0, 0.499386, 0.824312, 0.052024, 0, 0.51745, 0.819918, 0.0487865, 0, 0.535761, 0.815072, 0.0457801, 0, 0.554328, 0.809863, 0.0430184, 0, 0.573162, 0.804164, 0.0404245, 0, 0.592275, 0.798034, 0.0380146, 0, 0.611681, 0.791436, 0.0357436, 0, 0.631398, 0.784498, 0.0336475, 0, 0.651445, 0.777125, 0.0316666, 0, 0.671845, 0.769365, 0.0298122, 0, 0.692628, 0.761579, 0.0281001, 0, 0.713827, 0.753746, 0.0265049, 0, 0.735484, 0.745573, 0.0250067, 0, 0.75765, 0.737083, 0.0236026, 0, 0.78039, 0.728545, 0.0223302, 0, 0.803789, 0.719691, 0.0211243, 0, 0.82796, 0.710569, 0.0199983, 0, 0.853056, 0.701216, 0.0189569, 0, 0.879298, 0.692094, 0.0179702, 0, 0.907014, 0.682909, 0.0170418, 0, 0.936691, 0.673509, 0.0161732, 0, 0.968254, 0.663863, 0.0153406, 0, 1, 1, 0.437395, 0, 0, 0.999998, 0.437394, 0, 0, 0.99998, 0.437363, 0, 0.000616704, 0.999891, 0.437232, 0, 0.00367925, 0.999656, 0.436877, 0, 0.00867446, 0.999148, 0.436121, 0, 0.0150679, 0.997959, 0.434564, 0, 0.022531, 0.993464, 0.430134, 0, 0.0308507, 0.990606, 0.426077, 0, 0.0398805, 0.985027, 0.419397, 0, 0.0495148, 0.978491, 0.41118, 0, 0.0596749, 0.969643, 0.40048, 0, 0.0703001, 0.959189, 0.38769, 0, 0.0813427, 0.948223, 0.373575, 0, 0.0927641, 0.935955, 0.357622, 0, 0.104533, 0.923237, 0.34043, 0, 0.116624, 0.911074, 0.322735, 0, 0.129015, 0.899724, 0.30479, 0, 0.141687, 0.890189, 0.287392, 0, 0.154626, 0.881796, 0.270248, 0, 0.167818, 0.874781, 0.253659, 0, 0.181252, 0.869166, 0.237786, 0, 0.194918, 0.864725, 0.222618, 0, 0.208807, 0.861565, 0.208356, 0, 0.222913, 0.859284, 0.194867, 0, 0.237229, 0.857677, 0.18212, 0, 0.25175, 0.856714, 0.17018, 0, 0.266473, 0.856155, 0.158969, 0, 0.281392, 0.8558, 0.148413, 0, 0.296505, 0.855672, 0.138578, 0, 0.311811, 0.855538, 0.129345, 0, 0.327306, 0.855689, 0.120861, 0, 0.342991, 0.855767, 0.112969, 0, 0.358864, 0.855618, 0.105593, 0, 0.374925, 0.85525, 0.0987451, 0, 0.391176, 0.854583, 0.0923727, 0, 0.407616, 0.853534, 0.0864143, 0, 0.424249, 0.852061, 0.0808338, 0, 0.441076, 0.850253, 0.0756771, 0, 0.4581, 0.848004, 0.0708612, 0, 0.475324, 0.845333, 0.0663784, 0, 0.492754, 0.842376, 0.0622631, 0, 0.510394, 0.838956, 0.0584112, 0, 0.528251, 0.835121, 0.0548328, 0, 0.546331, 0.830842, 0.0514838, 0, 0.564644, 0.826212, 0.048355, 0, 0.583198, 0.821522, 0.0454714, 0, 0.602005, 0.816551, 0.0428263, 0, 0.621078, 0.811211, 0.0403612, 0, 0.640434, 0.805479, 0.038039, 0, 0.660089, 0.799409, 0.0358739, 0, 0.680066, 0.79306, 0.0338727, 0, 0.70039, 0.786395, 0.0319985, 0, 0.721094, 0.779416, 0.030241, 0, 0.742215, 0.77214, 0.0285951, 0, 0.7638, 0.764636, 0.0270747, 0, 0.785912, 0.756836, 0.0256354, 0, 0.808628, 0.749315, 0.0243027, 0, 0.832055, 0.741561, 0.0230497, 0, 0.856338, 0.733589, 0.0218801, 0, 0.88169, 0.725479, 0.020784, 0, 0.908441, 0.717255, 0.0197702, 0, 0.937125, 0.708829, 0.0188168, 0, 0.968254, 0.700191, 0.0179113, 0, 1, 1, 0.518937, 0, 0, 0.999998, 0.518933, 0, 0, 0.999967, 0.518883, 0, 0.00147741, 0.999832, 0.51866, 0, 0.00573221, 0.999466, 0.518057, 0, 0.011826, 0.998644, 0.516752, 0, 0.0192116, 0.994458, 0.512347, 0, 0.027573, 0.991223, 0.507675, 0, 0.0367099, 0.985515, 0.500188, 0, 0.046487, 0.978308, 0.490408, 0, 0.0568071, 0.968359, 0.477357, 0, 0.0675984, 0.95682, 0.461752, 0, 0.0788059, 0.943929, 0.443796, 0, 0.090386, 0.930224, 0.423893, 0, 0.102304, 0.916514, 0.402682, 0, 0.114532, 0.903653, 0.380914, 0, 0.127047, 0.892315, 0.359212, 0, 0.139828, 0.882942, 0.338102, 0, 0.152861, 0.875438, 0.31773, 0, 0.16613, 0.869642, 0.298186, 0, 0.179624, 0.865304, 0.279491, 0, 0.193332, 0.862382, 0.261804, 0, 0.207247, 0.860666, 0.245146, 0, 0.22136, 0.859788, 0.229406, 0, 0.235666, 0.859608, 0.214605, 0, 0.250158, 0.859912, 0.200691, 0, 0.264832, 0.86053, 0.187623, 0, 0.279684, 0.861368, 0.17539, 0, 0.294711, 0.862237, 0.163901, 0, 0.309911, 0.863127, 0.153175, 0, 0.32528, 0.863923, 0.143147, 0, 0.340819, 0.864567, 0.133781, 0, 0.356524, 0.865013, 0.125042, 0, 0.372397, 0.86539, 0.116952, 0, 0.388438, 0.865591, 0.109476, 0, 0.404645, 0.865517, 0.102542, 0, 0.421022, 0.865084, 0.0960688, 0, 0.437569, 0.864309, 0.0900499, 0, 0.454287, 0.863151, 0.0844328, 0, 0.471181, 0.861649, 0.0792218, 0, 0.488253, 0.859742, 0.0743482, 0, 0.505507, 0.857446, 0.0697963, 0, 0.522947, 0.854757, 0.0655364, 0, 0.54058, 0.851783, 0.061608, 0, 0.558412, 0.848516, 0.0579701, 0, 0.576449, 0.844897, 0.0545742, 0, 0.594701, 0.840956, 0.0514167, 0, 0.613178, 0.836676, 0.0484598, 0, 0.631892, 0.832075, 0.0456934, 0, 0.650856, 0.827191, 0.0431178, 0, 0.670088, 0.822295, 0.0407718, 0, 0.689606, 0.817294, 0.0386032, 0, 0.709434, 0.812013, 0.0365675, 0, 0.7296, 0.806465, 0.0346547, 0, 0.750138, 0.800691, 0.0328717, 0, 0.771093, 0.794709, 0.031211, 0, 0.792519, 0.788493, 0.0296504, 0, 0.814488, 0.782049, 0.0281782, 0, 0.837097, 0.775403, 0.0267965, 0, 0.860481, 0.76857, 0.0255002, 0, 0.884842, 0.761536, 0.0242759, 0, 0.910494, 0.754303, 0.0231142, 0, 0.937985, 0.74692, 0.0220305, 0, 0.968254, 0.739745, 0.0210192, 0, 1, 1, 0.613914, 0, 0, 0.999996, 0.613907, 0, 9.63597e-05, 0.999942, 0.613814, 0, 0.00301247, 0.999704, 0.613407, 0, 0.00870385, 0.999046, 0.612302, 0, 0.0160714, 0.995516, 0.608266, 0, 0.0245899, 0.991726, 0.602863, 0, 0.0339681, 0.985157, 0.593956, 0, 0.0440254, 0.97642, 0.581748, 0, 0.0546409, 0.964404, 0.565183, 0, 0.0657284, 0.950601, 0.545273, 0, 0.0772246, 0.935158, 0.522129, 0, 0.0890812, 0.919364, 0.496782, 0, 0.10126, 0.904754, 0.470571, 0, 0.113731, 0.89176, 0.444037, 0, 0.126469, 0.881492, 0.418322, 0, 0.139454, 0.873656, 0.393522, 0, 0.15267, 0.868053, 0.369795, 0, 0.166101, 0.864336, 0.347171, 0, 0.179736, 0.862259, 0.325737, 0, 0.193565, 0.861556, 0.305532, 0, 0.207578, 0.861776, 0.286416, 0, 0.221769, 0.862661, 0.268355, 0, 0.23613, 0.864015, 0.251334, 0, 0.250656, 0.865711, 0.235352, 0, 0.265343, 0.867519, 0.220302, 0, 0.280187, 0.869351, 0.206161, 0, 0.295183, 0.871144, 0.192908, 0, 0.31033, 0.872839, 0.180505, 0, 0.325624, 0.874307, 0.168848, 0, 0.341065, 0.875667, 0.158021, 0, 0.35665, 0.876758, 0.147877, 0, 0.37238, 0.87764, 0.138441, 0, 0.388253, 0.878237, 0.129627, 0, 0.404269, 0.878563, 0.121415, 0, 0.42043, 0.878572, 0.113741, 0, 0.436735, 0.87842, 0.106652, 0, 0.453187, 0.878057, 0.100097, 0, 0.469786, 0.877413, 0.0940128, 0, 0.486536, 0.87646, 0.0883462, 0, 0.503439, 0.875233, 0.0830924, 0, 0.520498, 0.8737, 0.0781975, 0, 0.537717, 0.871873, 0.07364, 0, 0.555102, 0.86978, 0.0694103, 0, 0.572657, 0.867405, 0.0654696, 0, 0.59039, 0.864751, 0.0617914, 0, 0.608307, 0.861818, 0.0583491, 0, 0.626419, 0.858645, 0.0551443, 0, 0.644733, 0.855307, 0.0521894, 0, 0.663264, 0.851736, 0.0494334, 0, 0.682025, 0.847927, 0.0468504, 0, 0.701032, 0.843888, 0.0444261, 0, 0.720308, 0.839629, 0.0421497, 0, 0.739875, 0.835158, 0.0400082, 0, 0.759764, 0.830509, 0.0380076, 0, 0.780014, 0.825714, 0.0361488, 0, 0.800673, 0.820729, 0.0343956, 0, 0.821803, 0.815751, 0.0327781, 0, 0.843492, 0.810752, 0.031275, 0, 0.86586, 0.805587, 0.0298542, 0, 0.889087, 0.800317, 0.0285397, 0, 0.913466, 0.79489, 0.0272948, 0, 0.93952, 0.789314, 0.0261139, 0, 0.96835, 0.783593, 0.0249938, 0, 1, 1, 0.724258, 0, 0, 0.999992, 0.724243, 0, 0.000726889, 0.99987, 0.724044, 0, 0.00569574, 0.999336, 0.72317, 0, 0.0131702, 0.996271, 0.719432, 0, 0.0220738, 0.991159, 0.712576, 0, 0.0319405, 0.982465, 0.700927, 0, 0.0425202, 0.97049, 0.684297, 0, 0.0536599, 0.953973, 0.661244, 0, 0.065258, 0.935546, 0.633804, 0, 0.0772427, 0.916596, 0.603071, 0, 0.0895616, 0.899353, 0.57105, 0, 0.102175, 0.885216, 0.539206, 0, 0.11505, 0.875076, 0.508714, 0, 0.128164, 0.868334, 0.479571, 0, 0.141495, 0.864414, 0.451796, 0, 0.155026, 0.862678, 0.425328, 0, 0.168745, 0.862835, 0.400352, 0, 0.182639, 0.864067, 0.376532, 0, 0.196699, 0.866086, 0.35391, 0, 0.210915, 0.868557, 0.332424, 0, 0.225282, 0.871271, 0.312053, 0, 0.239792, 0.874058, 0.292764, 0, 0.25444, 0.8768, 0.27453, 0, 0.269223, 0.87939, 0.257297, 0, 0.284135, 0.8819, 0.24114, 0, 0.299174, 0.884187, 0.225934, 0, 0.314337, 0.886262, 0.211669, 0, 0.329622, 0.888119, 0.198311, 0, 0.345026, 0.889709, 0.185783, 0, 0.360549, 0.891054, 0.174063, 0, 0.376189, 0.892196, 0.163143, 0, 0.391946, 0.893101, 0.152952, 0, 0.407819, 0.893803, 0.143475, 0, 0.423808, 0.894277, 0.134647, 0, 0.439914, 0.894532, 0.126434, 0, 0.456137, 0.894576, 0.1188, 0, 0.472479, 0.894393, 0.111694, 0, 0.48894, 0.893976, 0.105069, 0, 0.505523, 0.893346, 0.0989077, 0, 0.52223, 0.892502, 0.0931724, 0, 0.539064, 0.891441, 0.0878276, 0, 0.556028, 0.890276, 0.082903, 0, 0.573125, 0.888972, 0.0783505, 0, 0.590361, 0.887469, 0.0741083, 0, 0.607741, 0.885785, 0.0701633, 0, 0.62527, 0.883914, 0.0664835, 0, 0.642957, 0.881872, 0.0630567, 0, 0.660809, 0.879651, 0.0598527, 0, 0.678836, 0.877267, 0.0568615, 0, 0.69705, 0.874717, 0.05406, 0, 0.715465, 0.872012, 0.0514378, 0, 0.734098, 0.869157, 0.0489805, 0, 0.752968, 0.866155, 0.0466727, 0, 0.772101, 0.863014, 0.0445056, 0, 0.791529, 0.859748, 0.0424733, 0, 0.81129, 0.856416, 0.0405957, 0, 0.831438, 0.852958, 0.0388273, 0, 0.852044, 0.849382, 0.0371619, 0, 0.87321, 0.845694, 0.0355959, 0, 0.89509, 0.841893, 0.0341155, 0, 0.917932, 0.837981, 0.0327141, 0, 0.942204, 0.833963, 0.0313856, 0, 0.968981, 0.829847, 0.0301275, 0, 1, 1, 0.85214, 0, 0, 0.999969, 0.852095, 0, 0.00279627, 0.999483, 0.851408, 0, 0.0107635, 0.994545, 0.84579, 0, 0.0206454, 0.986188, 0.835231, 0, 0.0315756, 0.969847, 0.814687, 0, 0.0432021, 0.945951, 0.783735, 0, 0.0553396, 0.91917, 0.746074, 0, 0.0678766, 0.895488, 0.706938, 0, 0.0807395, 0.878232, 0.669534, 0, 0.0938767, 0.868252, 0.635168, 0, 0.10725, 0.863873, 0.603069, 0, 0.120832, 0.863369, 0.572514, 0, 0.134598, 0.86545, 0.543169, 0, 0.148533, 0.868803, 0.514578, 0, 0.16262, 0.872794, 0.486762, 0, 0.176849, 0.87702, 0.459811, 0, 0.19121, 0.881054, 0.433654, 0, 0.205694, 0.884974, 0.408574, 0, 0.220294, 0.888587, 0.384525, 0, 0.235005, 0.891877, 0.36156, 0, 0.24982, 0.894793, 0.339661, 0, 0.264737, 0.89743, 0.318913, 0, 0.279751, 0.899796, 0.299302, 0, 0.294859, 0.901943, 0.280843, 0, 0.310058, 0.903858, 0.263481, 0, 0.325346, 0.905574, 0.247197, 0, 0.340721, 0.907069, 0.231915, 0, 0.356181, 0.908379, 0.217614, 0, 0.371725, 0.90952, 0.20425, 0, 0.387353, 0.910483, 0.191758, 0, 0.403063, 0.91128, 0.180092, 0, 0.418854, 0.911936, 0.169222, 0, 0.434727, 0.912454, 0.159098, 0, 0.450682, 0.912835, 0.149668, 0, 0.466718, 0.913078, 0.140884, 0, 0.482837, 0.913192, 0.132709, 0, 0.499038, 0.913175, 0.125095, 0, 0.515324, 0.91304, 0.118012, 0, 0.531695, 0.912781, 0.111417, 0, 0.548153, 0.91241, 0.105281, 0, 0.5647, 0.911924, 0.0995691, 0, 0.581338, 0.911331, 0.0942531, 0, 0.59807, 0.910637, 0.0893076, 0, 0.6149, 0.90984, 0.0846998, 0, 0.63183, 0.908941, 0.0804044, 0, 0.648865, 0.907944, 0.0763984, 0, 0.666011, 0.906857, 0.0726638, 0, 0.683273, 0.90568, 0.0691783, 0, 0.700659, 0.904416, 0.0659222, 0, 0.718176, 0.903067, 0.0628782, 0, 0.735834, 0.901637, 0.0600307, 0, 0.753646, 0.900128, 0.0573647, 0, 0.771625, 0.898544, 0.0548668, 0, 0.78979, 0.89689, 0.052527, 0, 0.808162, 0.895165, 0.0503306, 0, 0.826771, 0.893371, 0.0482668, 0, 0.845654, 0.891572, 0.0463605, 0, 0.864863, 0.889763, 0.0445998, 0, 0.884472, 0.887894, 0.0429451, 0, 0.904592, 0.885967, 0.0413884, 0, 0.925407, 0.883984, 0.0399225, 0, 0.947271, 0.881945, 0.0385405, 0, 0.97105, 0.879854, 0.0372362, 0, 1, 0.999804, 0.995833, 0, 0, 0.938155, 0.933611, 0, 0.0158731, 0.864755, 0.854311, 0, 0.0317461, 0.888594, 0.865264, 0, 0.0476191, 0.905575, 0.863922, 0, 0.0634921, 0.915125, 0.850558, 0, 0.0793651, 0.920665, 0.829254, 0, 0.0952381, 0.924073, 0.802578, 0, 0.111111, 0.926304, 0.772211, 0, 0.126984, 0.927829, 0.739366, 0, 0.142857, 0.928924, 0.705033, 0, 0.15873, 0.92973, 0.670019, 0, 0.174603, 0.930339, 0.634993, 0, 0.190476, 0.930811, 0.600485, 0, 0.206349, 0.931191, 0.566897, 0, 0.222222, 0.93149, 0.534485, 0, 0.238095, 0.931737, 0.503429, 0, 0.253968, 0.931939, 0.473811, 0, 0.269841, 0.932108, 0.445668, 0, 0.285714, 0.93225, 0.418993, 0, 0.301587, 0.932371, 0.393762, 0, 0.31746, 0.932474, 0.369939, 0, 0.333333, 0.932562, 0.347479, 0, 0.349206, 0.932638, 0.326336, 0, 0.365079, 0.932703, 0.306462, 0, 0.380952, 0.93276, 0.287805, 0, 0.396825, 0.932809, 0.270313, 0, 0.412698, 0.932851, 0.253933, 0, 0.428571, 0.932887, 0.23861, 0, 0.444444, 0.932917, 0.224289, 0, 0.460317, 0.932943, 0.210917, 0, 0.47619, 0.932965, 0.19844, 0, 0.492063, 0.932982, 0.186807, 0, 0.507937, 0.932995, 0.175966, 0, 0.52381, 0.933005, 0.165869, 0, 0.539683, 0.933011, 0.156468, 0, 0.555556, 0.933013, 0.147719, 0, 0.571429, 0.933013, 0.139579, 0, 0.587302, 0.93301, 0.132007, 0, 0.603175, 0.933004, 0.124965, 0, 0.619048, 0.932994, 0.118416, 0, 0.634921, 0.932982, 0.112326, 0, 0.650794, 0.932968, 0.106663, 0, 0.666667, 0.93295, 0.101397, 0, 0.68254, 0.932931, 0.0964993, 0, 0.698413, 0.932908, 0.0919438, 0, 0.714286, 0.932883, 0.0877057, 0, 0.730159, 0.932856, 0.0837623, 0, 0.746032, 0.932827, 0.0800921, 0, 0.761905, 0.932796, 0.0766754, 0, 0.777778, 0.932762, 0.0734936, 0, 0.793651, 0.932727, 0.0705296, 0, 0.809524, 0.932689, 0.0677676, 0, 0.825397, 0.93265, 0.0651929, 0, 0.84127, 0.932609, 0.0627917, 0, 0.857143, 0.932565, 0.0605515, 0, 0.873016, 0.932521, 0.0584606, 0, 0.888889, 0.932474, 0.0565082, 0, 0.904762, 0.932427, 0.0546841, 0, 0.920635, 0.932377, 0.0529793, 0, 0.936508, 0.932326, 0.0513851, 0, 0.952381, 0.932274, 0.0498936, 0, 0.968254, 0.93222, 0.0484975, 0, 0.984127, 0.932164, 0.0471899, 0, 1 ]; - - // data textures - - const ltc_float_1 = new Float32Array( LTC_MAT_1 ); - const ltc_float_2 = new Float32Array( LTC_MAT_2 ); - - UniformsLib.LTC_FLOAT_1 = new DataTexture( ltc_float_1, 64, 64, RGBAFormat, FloatType, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, NearestFilter, 1 ); - UniformsLib.LTC_FLOAT_2 = new DataTexture( ltc_float_2, 64, 64, RGBAFormat, FloatType, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, NearestFilter, 1 ); - - UniformsLib.LTC_FLOAT_1.needsUpdate = true; - UniformsLib.LTC_FLOAT_2.needsUpdate = true; - - const ltc_half_1 = new Uint16Array( LTC_MAT_1.length ); - - LTC_MAT_1.forEach( function ( x, index ) { - - ltc_half_1[ index ] = DataUtils.toHalfFloat( x ); - - } ); - - const ltc_half_2 = new Uint16Array( LTC_MAT_2.length ); - - LTC_MAT_2.forEach( function ( x, index ) { - - ltc_half_2[ index ] = DataUtils.toHalfFloat( x ); - - } ); - - UniformsLib.LTC_HALF_1 = new DataTexture( ltc_half_1, 64, 64, RGBAFormat, HalfFloatType, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, NearestFilter, 1 ); - UniformsLib.LTC_HALF_2 = new DataTexture( ltc_half_2, 64, 64, RGBAFormat, HalfFloatType, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, NearestFilter, 1 ); - - UniformsLib.LTC_HALF_1.needsUpdate = true; - UniformsLib.LTC_HALF_2.needsUpdate = true; - - - } - -} - -export { RectAreaLightUniformsLib }; diff --git a/three/addons/lines/Line2.js b/three/addons/lines/Line2.js deleted file mode 100644 index cdd1ddf..0000000 --- a/three/addons/lines/Line2.js +++ /dev/null @@ -1,19 +0,0 @@ -import { LineSegments2 } from '../lines/LineSegments2.js'; -import { LineGeometry } from '../lines/LineGeometry.js'; -import { LineMaterial } from '../lines/LineMaterial.js'; - -class Line2 extends LineSegments2 { - - constructor( geometry = new LineGeometry(), material = new LineMaterial( { color: Math.random() * 0xffffff } ) ) { - - super( geometry, material ); - - this.isLine2 = true; - - this.type = 'Line2'; - - } - -} - -export { Line2 }; diff --git a/three/addons/lines/LineGeometry.js b/three/addons/lines/LineGeometry.js deleted file mode 100644 index 1314cf6..0000000 --- a/three/addons/lines/LineGeometry.js +++ /dev/null @@ -1,79 +0,0 @@ -import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js'; - -class LineGeometry extends LineSegmentsGeometry { - - constructor() { - - super(); - - this.isLineGeometry = true; - - this.type = 'LineGeometry'; - - } - - setPositions( array ) { - - // converts [ x1, y1, z1, x2, y2, z2, ... ] to pairs format - - const length = array.length - 3; - const points = new Float32Array( 2 * length ); - - for ( let i = 0; i < length; i += 3 ) { - - points[ 2 * i ] = array[ i ]; - points[ 2 * i + 1 ] = array[ i + 1 ]; - points[ 2 * i + 2 ] = array[ i + 2 ]; - - points[ 2 * i + 3 ] = array[ i + 3 ]; - points[ 2 * i + 4 ] = array[ i + 4 ]; - points[ 2 * i + 5 ] = array[ i + 5 ]; - - } - - super.setPositions( points ); - - return this; - - } - - setColors( array ) { - - // converts [ r1, g1, b1, r2, g2, b2, ... ] to pairs format - - const length = array.length - 3; - const colors = new Float32Array( 2 * length ); - - for ( let i = 0; i < length; i += 3 ) { - - colors[ 2 * i ] = array[ i ]; - colors[ 2 * i + 1 ] = array[ i + 1 ]; - colors[ 2 * i + 2 ] = array[ i + 2 ]; - - colors[ 2 * i + 3 ] = array[ i + 3 ]; - colors[ 2 * i + 4 ] = array[ i + 4 ]; - colors[ 2 * i + 5 ] = array[ i + 5 ]; - - } - - super.setColors( colors ); - - return this; - - } - - fromLine( line ) { - - const geometry = line.geometry; - - this.setPositions( geometry.attributes.position.array ); // assumes non-indexed - - // set colors, maybe - - return this; - - } - -} - -export { LineGeometry }; diff --git a/three/addons/lines/LineMaterial.js b/three/addons/lines/LineMaterial.js deleted file mode 100644 index 10d673d..0000000 --- a/three/addons/lines/LineMaterial.js +++ /dev/null @@ -1,619 +0,0 @@ -/** - * parameters = { - * color: , - * linewidth: , - * dashed: , - * dashScale: , - * dashSize: , - * dashOffset: , - * gapSize: , - * resolution: , // to be set by renderer - * } - */ - -import { - ShaderLib, - ShaderMaterial, - UniformsLib, - UniformsUtils, - Vector2 -} from 'three'; - - -UniformsLib.line = { - - worldUnits: { value: 1 }, - linewidth: { value: 1 }, - resolution: { value: new Vector2( 1, 1 ) }, - dashOffset: { value: 0 }, - dashScale: { value: 1 }, - dashSize: { value: 1 }, - gapSize: { value: 1 } // todo FIX - maybe change to totalSize - -}; - -ShaderLib[ 'line' ] = { - - uniforms: UniformsUtils.merge( [ - UniformsLib.common, - UniformsLib.fog, - UniformsLib.line - ] ), - - vertexShader: - /* glsl */` - #include - #include - #include - #include - #include - - uniform float linewidth; - uniform vec2 resolution; - - attribute vec3 instanceStart; - attribute vec3 instanceEnd; - - attribute vec3 instanceColorStart; - attribute vec3 instanceColorEnd; - - #ifdef WORLD_UNITS - - varying vec4 worldPos; - varying vec3 worldStart; - varying vec3 worldEnd; - - #ifdef USE_DASH - - varying vec2 vUv; - - #endif - - #else - - varying vec2 vUv; - - #endif - - #ifdef USE_DASH - - uniform float dashScale; - attribute float instanceDistanceStart; - attribute float instanceDistanceEnd; - varying float vLineDistance; - - #endif - - void trimSegment( const in vec4 start, inout vec4 end ) { - - // trim end segment so it terminates between the camera plane and the near plane - - // conservative estimate of the near plane - float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column - float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column - float nearEstimate = - 0.5 * b / a; - - float alpha = ( nearEstimate - start.z ) / ( end.z - start.z ); - - end.xyz = mix( start.xyz, end.xyz, alpha ); - - } - - void main() { - - #ifdef USE_COLOR - - vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd; - - #endif - - #ifdef USE_DASH - - vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd; - vUv = uv; - - #endif - - float aspect = resolution.x / resolution.y; - - // camera space - vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 ); - vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 ); - - #ifdef WORLD_UNITS - - worldStart = start.xyz; - worldEnd = end.xyz; - - #else - - vUv = uv; - - #endif - - // special case for perspective projection, and segments that terminate either in, or behind, the camera plane - // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space - // but we need to perform ndc-space calculations in the shader, so we must address this issue directly - // perhaps there is a more elegant solution -- WestLangley - - bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column - - if ( perspective ) { - - if ( start.z < 0.0 && end.z >= 0.0 ) { - - trimSegment( start, end ); - - } else if ( end.z < 0.0 && start.z >= 0.0 ) { - - trimSegment( end, start ); - - } - - } - - // clip space - vec4 clipStart = projectionMatrix * start; - vec4 clipEnd = projectionMatrix * end; - - // ndc space - vec3 ndcStart = clipStart.xyz / clipStart.w; - vec3 ndcEnd = clipEnd.xyz / clipEnd.w; - - // direction - vec2 dir = ndcEnd.xy - ndcStart.xy; - - // account for clip-space aspect ratio - dir.x *= aspect; - dir = normalize( dir ); - - #ifdef WORLD_UNITS - - vec3 worldDir = normalize( end.xyz - start.xyz ); - vec3 tmpFwd = normalize( mix( start.xyz, end.xyz, 0.5 ) ); - vec3 worldUp = normalize( cross( worldDir, tmpFwd ) ); - vec3 worldFwd = cross( worldDir, worldUp ); - worldPos = position.y < 0.5 ? start: end; - - // height offset - float hw = linewidth * 0.5; - worldPos.xyz += position.x < 0.0 ? hw * worldUp : - hw * worldUp; - - // don't extend the line if we're rendering dashes because we - // won't be rendering the endcaps - #ifndef USE_DASH - - // cap extension - worldPos.xyz += position.y < 0.5 ? - hw * worldDir : hw * worldDir; - - // add width to the box - worldPos.xyz += worldFwd * hw; - - // endcaps - if ( position.y > 1.0 || position.y < 0.0 ) { - - worldPos.xyz -= worldFwd * 2.0 * hw; - - } - - #endif - - // project the worldpos - vec4 clip = projectionMatrix * worldPos; - - // shift the depth of the projected points so the line - // segments overlap neatly - vec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd; - clip.z = clipPose.z * clip.w; - - #else - - vec2 offset = vec2( dir.y, - dir.x ); - // undo aspect ratio adjustment - dir.x /= aspect; - offset.x /= aspect; - - // sign flip - if ( position.x < 0.0 ) offset *= - 1.0; - - // endcaps - if ( position.y < 0.0 ) { - - offset += - dir; - - } else if ( position.y > 1.0 ) { - - offset += dir; - - } - - // adjust for linewidth - offset *= linewidth; - - // adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ... - offset /= resolution.y; - - // select end - vec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd; - - // back to clip space - offset *= clip.w; - - clip.xy += offset; - - #endif - - gl_Position = clip; - - vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation - - #include - #include - #include - - } - `, - - fragmentShader: - /* glsl */` - uniform vec3 diffuse; - uniform float opacity; - uniform float linewidth; - - #ifdef USE_DASH - - uniform float dashOffset; - uniform float dashSize; - uniform float gapSize; - - #endif - - varying float vLineDistance; - - #ifdef WORLD_UNITS - - varying vec4 worldPos; - varying vec3 worldStart; - varying vec3 worldEnd; - - #ifdef USE_DASH - - varying vec2 vUv; - - #endif - - #else - - varying vec2 vUv; - - #endif - - #include - #include - #include - #include - #include - - vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) { - - float mua; - float mub; - - vec3 p13 = p1 - p3; - vec3 p43 = p4 - p3; - - vec3 p21 = p2 - p1; - - float d1343 = dot( p13, p43 ); - float d4321 = dot( p43, p21 ); - float d1321 = dot( p13, p21 ); - float d4343 = dot( p43, p43 ); - float d2121 = dot( p21, p21 ); - - float denom = d2121 * d4343 - d4321 * d4321; - - float numer = d1343 * d4321 - d1321 * d4343; - - mua = numer / denom; - mua = clamp( mua, 0.0, 1.0 ); - mub = ( d1343 + d4321 * ( mua ) ) / d4343; - mub = clamp( mub, 0.0, 1.0 ); - - return vec2( mua, mub ); - - } - - void main() { - - #include - - #ifdef USE_DASH - - if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps - - if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX - - #endif - - float alpha = opacity; - - #ifdef WORLD_UNITS - - // Find the closest points on the view ray and the line segment - vec3 rayEnd = normalize( worldPos.xyz ) * 1e5; - vec3 lineDir = worldEnd - worldStart; - vec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd ); - - vec3 p1 = worldStart + lineDir * params.x; - vec3 p2 = rayEnd * params.y; - vec3 delta = p1 - p2; - float len = length( delta ); - float norm = len / linewidth; - - #ifndef USE_DASH - - #ifdef USE_ALPHA_TO_COVERAGE - - float dnorm = fwidth( norm ); - alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm ); - - #else - - if ( norm > 0.5 ) { - - discard; - - } - - #endif - - #endif - - #else - - #ifdef USE_ALPHA_TO_COVERAGE - - // artifacts appear on some hardware if a derivative is taken within a conditional - float a = vUv.x; - float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; - float len2 = a * a + b * b; - float dlen = fwidth( len2 ); - - if ( abs( vUv.y ) > 1.0 ) { - - alpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 ); - - } - - #else - - if ( abs( vUv.y ) > 1.0 ) { - - float a = vUv.x; - float b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0; - float len2 = a * a + b * b; - - if ( len2 > 1.0 ) discard; - - } - - #endif - - #endif - - vec4 diffuseColor = vec4( diffuse, alpha ); - - #include - #include - - gl_FragColor = vec4( diffuseColor.rgb, alpha ); - - #include - #include - #include - #include - - } - ` -}; - -class LineMaterial extends ShaderMaterial { - - constructor( parameters ) { - - super( { - - type: 'LineMaterial', - - uniforms: UniformsUtils.clone( ShaderLib[ 'line' ].uniforms ), - - vertexShader: ShaderLib[ 'line' ].vertexShader, - fragmentShader: ShaderLib[ 'line' ].fragmentShader, - - clipping: true // required for clipping support - - } ); - - this.isLineMaterial = true; - - this.setValues( parameters ); - - } - - get color() { - - return this.uniforms.diffuse.value; - - } - - set color( value ) { - - this.uniforms.diffuse.value = value; - - } - - get worldUnits() { - - return 'WORLD_UNITS' in this.defines; - - } - - set worldUnits( value ) { - - if ( value === true ) { - - this.defines.WORLD_UNITS = ''; - - } else { - - delete this.defines.WORLD_UNITS; - - } - - } - - get linewidth() { - - return this.uniforms.linewidth.value; - - } - - set linewidth( value ) { - - if ( ! this.uniforms.linewidth ) return; - this.uniforms.linewidth.value = value; - - } - - get dashed() { - - return 'USE_DASH' in this.defines; - - } - - set dashed( value ) { - - if ( ( value === true ) !== this.dashed ) { - - this.needsUpdate = true; - - } - - if ( value === true ) { - - this.defines.USE_DASH = ''; - - } else { - - delete this.defines.USE_DASH; - - } - - } - - get dashScale() { - - return this.uniforms.dashScale.value; - - } - - set dashScale( value ) { - - this.uniforms.dashScale.value = value; - - } - - get dashSize() { - - return this.uniforms.dashSize.value; - - } - - set dashSize( value ) { - - this.uniforms.dashSize.value = value; - - } - - get dashOffset() { - - return this.uniforms.dashOffset.value; - - } - - set dashOffset( value ) { - - this.uniforms.dashOffset.value = value; - - } - - get gapSize() { - - return this.uniforms.gapSize.value; - - } - - set gapSize( value ) { - - this.uniforms.gapSize.value = value; - - } - - get opacity() { - - return this.uniforms.opacity.value; - - } - - set opacity( value ) { - - if ( ! this.uniforms ) return; - this.uniforms.opacity.value = value; - - } - - get resolution() { - - return this.uniforms.resolution.value; - - } - - set resolution( value ) { - - this.uniforms.resolution.value.copy( value ); - - } - - get alphaToCoverage() { - - return 'USE_ALPHA_TO_COVERAGE' in this.defines; - - } - - set alphaToCoverage( value ) { - - if ( ! this.defines ) return; - - if ( ( value === true ) !== this.alphaToCoverage ) { - - this.needsUpdate = true; - - } - - if ( value === true ) { - - this.defines.USE_ALPHA_TO_COVERAGE = ''; - this.extensions.derivatives = true; - - } else { - - delete this.defines.USE_ALPHA_TO_COVERAGE; - this.extensions.derivatives = false; - - } - - } - -} - -export { LineMaterial }; diff --git a/three/addons/lines/LineSegments2.js b/three/addons/lines/LineSegments2.js deleted file mode 100644 index e2a3e2a..0000000 --- a/three/addons/lines/LineSegments2.js +++ /dev/null @@ -1,361 +0,0 @@ -import { - Box3, - InstancedInterleavedBuffer, - InterleavedBufferAttribute, - Line3, - MathUtils, - Matrix4, - Mesh, - Sphere, - Vector3, - Vector4 -} from 'three'; -import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js'; -import { LineMaterial } from '../lines/LineMaterial.js'; - -const _start = new Vector3(); -const _end = new Vector3(); - -const _start4 = new Vector4(); -const _end4 = new Vector4(); - -const _ssOrigin = new Vector4(); -const _ssOrigin3 = new Vector3(); -const _mvMatrix = new Matrix4(); -const _line = new Line3(); -const _closestPoint = new Vector3(); - -const _box = new Box3(); -const _sphere = new Sphere(); -const _clipToWorldVector = new Vector4(); - -let _ray, _lineWidth; - -// Returns the margin required to expand by in world space given the distance from the camera, -// line width, resolution, and camera projection -function getWorldSpaceHalfWidth( camera, distance, resolution ) { - - // transform into clip space, adjust the x and y values by the pixel width offset, then - // transform back into world space to get world offset. Note clip space is [-1, 1] so full - // width does not need to be halved. - _clipToWorldVector.set( 0, 0, - distance, 1.0 ).applyMatrix4( camera.projectionMatrix ); - _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w ); - _clipToWorldVector.x = _lineWidth / resolution.width; - _clipToWorldVector.y = _lineWidth / resolution.height; - _clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse ); - _clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w ); - - return Math.abs( Math.max( _clipToWorldVector.x, _clipToWorldVector.y ) ); - -} - -function raycastWorldUnits( lineSegments, intersects ) { - - const matrixWorld = lineSegments.matrixWorld; - const geometry = lineSegments.geometry; - const instanceStart = geometry.attributes.instanceStart; - const instanceEnd = geometry.attributes.instanceEnd; - const segmentCount = Math.min( geometry.instanceCount, instanceStart.count ); - - for ( let i = 0, l = segmentCount; i < l; i ++ ) { - - _line.start.fromBufferAttribute( instanceStart, i ); - _line.end.fromBufferAttribute( instanceEnd, i ); - - _line.applyMatrix4( matrixWorld ); - - const pointOnLine = new Vector3(); - const point = new Vector3(); - - _ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine ); - const isInside = point.distanceTo( pointOnLine ) < _lineWidth * 0.5; - - if ( isInside ) { - - intersects.push( { - point, - pointOnLine, - distance: _ray.origin.distanceTo( point ), - object: lineSegments, - face: null, - faceIndex: i, - uv: null, - uv1: null, - } ); - - } - - } - -} - -function raycastScreenSpace( lineSegments, camera, intersects ) { - - const projectionMatrix = camera.projectionMatrix; - const material = lineSegments.material; - const resolution = material.resolution; - const matrixWorld = lineSegments.matrixWorld; - - const geometry = lineSegments.geometry; - const instanceStart = geometry.attributes.instanceStart; - const instanceEnd = geometry.attributes.instanceEnd; - const segmentCount = Math.min( geometry.instanceCount, instanceStart.count ); - - const near = - camera.near; - - // - - // pick a point 1 unit out along the ray to avoid the ray origin - // sitting at the camera origin which will cause "w" to be 0 when - // applying the projection matrix. - _ray.at( 1, _ssOrigin ); - - // ndc space [ - 1.0, 1.0 ] - _ssOrigin.w = 1; - _ssOrigin.applyMatrix4( camera.matrixWorldInverse ); - _ssOrigin.applyMatrix4( projectionMatrix ); - _ssOrigin.multiplyScalar( 1 / _ssOrigin.w ); - - // screen space - _ssOrigin.x *= resolution.x / 2; - _ssOrigin.y *= resolution.y / 2; - _ssOrigin.z = 0; - - _ssOrigin3.copy( _ssOrigin ); - - _mvMatrix.multiplyMatrices( camera.matrixWorldInverse, matrixWorld ); - - for ( let i = 0, l = segmentCount; i < l; i ++ ) { - - _start4.fromBufferAttribute( instanceStart, i ); - _end4.fromBufferAttribute( instanceEnd, i ); - - _start4.w = 1; - _end4.w = 1; - - // camera space - _start4.applyMatrix4( _mvMatrix ); - _end4.applyMatrix4( _mvMatrix ); - - // skip the segment if it's entirely behind the camera - const isBehindCameraNear = _start4.z > near && _end4.z > near; - if ( isBehindCameraNear ) { - - continue; - - } - - // trim the segment if it extends behind camera near - if ( _start4.z > near ) { - - const deltaDist = _start4.z - _end4.z; - const t = ( _start4.z - near ) / deltaDist; - _start4.lerp( _end4, t ); - - } else if ( _end4.z > near ) { - - const deltaDist = _end4.z - _start4.z; - const t = ( _end4.z - near ) / deltaDist; - _end4.lerp( _start4, t ); - - } - - // clip space - _start4.applyMatrix4( projectionMatrix ); - _end4.applyMatrix4( projectionMatrix ); - - // ndc space [ - 1.0, 1.0 ] - _start4.multiplyScalar( 1 / _start4.w ); - _end4.multiplyScalar( 1 / _end4.w ); - - // screen space - _start4.x *= resolution.x / 2; - _start4.y *= resolution.y / 2; - - _end4.x *= resolution.x / 2; - _end4.y *= resolution.y / 2; - - // create 2d segment - _line.start.copy( _start4 ); - _line.start.z = 0; - - _line.end.copy( _end4 ); - _line.end.z = 0; - - // get closest point on ray to segment - const param = _line.closestPointToPointParameter( _ssOrigin3, true ); - _line.at( param, _closestPoint ); - - // check if the intersection point is within clip space - const zPos = MathUtils.lerp( _start4.z, _end4.z, param ); - const isInClipSpace = zPos >= - 1 && zPos <= 1; - - const isInside = _ssOrigin3.distanceTo( _closestPoint ) < _lineWidth * 0.5; - - if ( isInClipSpace && isInside ) { - - _line.start.fromBufferAttribute( instanceStart, i ); - _line.end.fromBufferAttribute( instanceEnd, i ); - - _line.start.applyMatrix4( matrixWorld ); - _line.end.applyMatrix4( matrixWorld ); - - const pointOnLine = new Vector3(); - const point = new Vector3(); - - _ray.distanceSqToSegment( _line.start, _line.end, point, pointOnLine ); - - intersects.push( { - point: point, - pointOnLine: pointOnLine, - distance: _ray.origin.distanceTo( point ), - object: lineSegments, - face: null, - faceIndex: i, - uv: null, - uv1: null, - } ); - - } - - } - -} - -class LineSegments2 extends Mesh { - - constructor( geometry = new LineSegmentsGeometry(), material = new LineMaterial( { color: Math.random() * 0xffffff } ) ) { - - super( geometry, material ); - - this.isLineSegments2 = true; - - this.type = 'LineSegments2'; - - } - - // for backwards-compatibility, but could be a method of LineSegmentsGeometry... - - computeLineDistances() { - - const geometry = this.geometry; - - const instanceStart = geometry.attributes.instanceStart; - const instanceEnd = geometry.attributes.instanceEnd; - const lineDistances = new Float32Array( 2 * instanceStart.count ); - - for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) { - - _start.fromBufferAttribute( instanceStart, i ); - _end.fromBufferAttribute( instanceEnd, i ); - - lineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ]; - lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end ); - - } - - const instanceDistanceBuffer = new InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1 - - geometry.setAttribute( 'instanceDistanceStart', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0 - geometry.setAttribute( 'instanceDistanceEnd', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1 - - return this; - - } - - raycast( raycaster, intersects ) { - - const worldUnits = this.material.worldUnits; - const camera = raycaster.camera; - - if ( camera === null && ! worldUnits ) { - - console.error( 'LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.' ); - - } - - const threshold = ( raycaster.params.Line2 !== undefined ) ? raycaster.params.Line2.threshold || 0 : 0; - - _ray = raycaster.ray; - - const matrixWorld = this.matrixWorld; - const geometry = this.geometry; - const material = this.material; - - _lineWidth = material.linewidth + threshold; - - // check if we intersect the sphere bounds - if ( geometry.boundingSphere === null ) { - - geometry.computeBoundingSphere(); - - } - - _sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld ); - - // increase the sphere bounds by the worst case line screen space width - let sphereMargin; - if ( worldUnits ) { - - sphereMargin = _lineWidth * 0.5; - - } else { - - const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( _ray.origin ) ); - sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, material.resolution ); - - } - - _sphere.radius += sphereMargin; - - if ( _ray.intersectsSphere( _sphere ) === false ) { - - return; - - } - - // check if we intersect the box bounds - if ( geometry.boundingBox === null ) { - - geometry.computeBoundingBox(); - - } - - _box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld ); - - // increase the box bounds by the worst case line width - let boxMargin; - if ( worldUnits ) { - - boxMargin = _lineWidth * 0.5; - - } else { - - const distanceToBox = Math.max( camera.near, _box.distanceToPoint( _ray.origin ) ); - boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, material.resolution ); - - } - - _box.expandByScalar( boxMargin ); - - if ( _ray.intersectsBox( _box ) === false ) { - - return; - - } - - if ( worldUnits ) { - - raycastWorldUnits( this, intersects ); - - } else { - - raycastScreenSpace( this, camera, intersects ); - - } - - } - -} - -export { LineSegments2 }; diff --git a/three/addons/lines/LineSegmentsGeometry.js b/three/addons/lines/LineSegmentsGeometry.js deleted file mode 100644 index c7cf877..0000000 --- a/three/addons/lines/LineSegmentsGeometry.js +++ /dev/null @@ -1,241 +0,0 @@ -import { - Box3, - Float32BufferAttribute, - InstancedBufferGeometry, - InstancedInterleavedBuffer, - InterleavedBufferAttribute, - Sphere, - Vector3, - WireframeGeometry -} from 'three'; - -const _box = new Box3(); -const _vector = new Vector3(); - -class LineSegmentsGeometry extends InstancedBufferGeometry { - - constructor() { - - super(); - - this.isLineSegmentsGeometry = true; - - this.type = 'LineSegmentsGeometry'; - - const positions = [ - 1, 2, 0, 1, 2, 0, - 1, 1, 0, 1, 1, 0, - 1, 0, 0, 1, 0, 0, - 1, - 1, 0, 1, - 1, 0 ]; - const uvs = [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 2, 1, - 2 ]; - const index = [ 0, 2, 1, 2, 3, 1, 2, 4, 3, 4, 5, 3, 4, 6, 5, 6, 7, 5 ]; - - this.setIndex( index ); - this.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - this.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - applyMatrix4( matrix ) { - - const start = this.attributes.instanceStart; - const end = this.attributes.instanceEnd; - - if ( start !== undefined ) { - - start.applyMatrix4( matrix ); - - end.applyMatrix4( matrix ); - - start.needsUpdate = true; - - } - - if ( this.boundingBox !== null ) { - - this.computeBoundingBox(); - - } - - if ( this.boundingSphere !== null ) { - - this.computeBoundingSphere(); - - } - - return this; - - } - - setPositions( array ) { - - let lineSegments; - - if ( array instanceof Float32Array ) { - - lineSegments = array; - - } else if ( Array.isArray( array ) ) { - - lineSegments = new Float32Array( array ); - - } - - const instanceBuffer = new InstancedInterleavedBuffer( lineSegments, 6, 1 ); // xyz, xyz - - this.setAttribute( 'instanceStart', new InterleavedBufferAttribute( instanceBuffer, 3, 0 ) ); // xyz - this.setAttribute( 'instanceEnd', new InterleavedBufferAttribute( instanceBuffer, 3, 3 ) ); // xyz - - // - - this.computeBoundingBox(); - this.computeBoundingSphere(); - - return this; - - } - - setColors( array ) { - - let colors; - - if ( array instanceof Float32Array ) { - - colors = array; - - } else if ( Array.isArray( array ) ) { - - colors = new Float32Array( array ); - - } - - const instanceColorBuffer = new InstancedInterleavedBuffer( colors, 6, 1 ); // rgb, rgb - - this.setAttribute( 'instanceColorStart', new InterleavedBufferAttribute( instanceColorBuffer, 3, 0 ) ); // rgb - this.setAttribute( 'instanceColorEnd', new InterleavedBufferAttribute( instanceColorBuffer, 3, 3 ) ); // rgb - - return this; - - } - - fromWireframeGeometry( geometry ) { - - this.setPositions( geometry.attributes.position.array ); - - return this; - - } - - fromEdgesGeometry( geometry ) { - - this.setPositions( geometry.attributes.position.array ); - - return this; - - } - - fromMesh( mesh ) { - - this.fromWireframeGeometry( new WireframeGeometry( mesh.geometry ) ); - - // set colors, maybe - - return this; - - } - - fromLineSegments( lineSegments ) { - - const geometry = lineSegments.geometry; - - this.setPositions( geometry.attributes.position.array ); // assumes non-indexed - - // set colors, maybe - - return this; - - } - - computeBoundingBox() { - - if ( this.boundingBox === null ) { - - this.boundingBox = new Box3(); - - } - - const start = this.attributes.instanceStart; - const end = this.attributes.instanceEnd; - - if ( start !== undefined && end !== undefined ) { - - this.boundingBox.setFromBufferAttribute( start ); - - _box.setFromBufferAttribute( end ); - - this.boundingBox.union( _box ); - - } - - } - - computeBoundingSphere() { - - if ( this.boundingSphere === null ) { - - this.boundingSphere = new Sphere(); - - } - - if ( this.boundingBox === null ) { - - this.computeBoundingBox(); - - } - - const start = this.attributes.instanceStart; - const end = this.attributes.instanceEnd; - - if ( start !== undefined && end !== undefined ) { - - const center = this.boundingSphere.center; - - this.boundingBox.getCenter( center ); - - let maxRadiusSq = 0; - - for ( let i = 0, il = start.count; i < il; i ++ ) { - - _vector.fromBufferAttribute( start, i ); - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) ); - - _vector.fromBufferAttribute( end, i ); - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector ) ); - - } - - this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); - - if ( isNaN( this.boundingSphere.radius ) ) { - - console.error( 'THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.', this ); - - } - - } - - } - - toJSON() { - - // todo - - } - - applyMatrix( matrix ) { - - console.warn( 'THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4().' ); - - return this.applyMatrix4( matrix ); - - } - -} - -export { LineSegmentsGeometry }; diff --git a/three/addons/lines/Wireframe.js b/three/addons/lines/Wireframe.js deleted file mode 100644 index cfa65aa..0000000 --- a/three/addons/lines/Wireframe.js +++ /dev/null @@ -1,56 +0,0 @@ -import { - InstancedInterleavedBuffer, - InterleavedBufferAttribute, - Mesh, - Vector3 -} from 'three'; -import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js'; -import { LineMaterial } from '../lines/LineMaterial.js'; - -const _start = new Vector3(); -const _end = new Vector3(); - -class Wireframe extends Mesh { - - constructor( geometry = new LineSegmentsGeometry(), material = new LineMaterial( { color: Math.random() * 0xffffff } ) ) { - - super( geometry, material ); - - this.isWireframe = true; - - this.type = 'Wireframe'; - - } - - // for backwards-compatibility, but could be a method of LineSegmentsGeometry... - - computeLineDistances() { - - const geometry = this.geometry; - - const instanceStart = geometry.attributes.instanceStart; - const instanceEnd = geometry.attributes.instanceEnd; - const lineDistances = new Float32Array( 2 * instanceStart.count ); - - for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) { - - _start.fromBufferAttribute( instanceStart, i ); - _end.fromBufferAttribute( instanceEnd, i ); - - lineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ]; - lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end ); - - } - - const instanceDistanceBuffer = new InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1 - - geometry.setAttribute( 'instanceDistanceStart', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0 - geometry.setAttribute( 'instanceDistanceEnd', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1 - - return this; - - } - -} - -export { Wireframe }; diff --git a/three/addons/lines/WireframeGeometry2.js b/three/addons/lines/WireframeGeometry2.js deleted file mode 100644 index 07940d3..0000000 --- a/three/addons/lines/WireframeGeometry2.js +++ /dev/null @@ -1,24 +0,0 @@ -import { - WireframeGeometry -} from 'three'; -import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js'; - -class WireframeGeometry2 extends LineSegmentsGeometry { - - constructor( geometry ) { - - super(); - - this.isWireframeGeometry2 = true; - - this.type = 'WireframeGeometry2'; - - this.fromWireframeGeometry( new WireframeGeometry( geometry ) ); - - // set colors, maybe - - } - -} - -export { WireframeGeometry2 }; diff --git a/three/addons/loaders/3DMLoader.js b/three/addons/loaders/3DMLoader.js deleted file mode 100644 index 73c65cc..0000000 --- a/three/addons/loaders/3DMLoader.js +++ /dev/null @@ -1,1771 +0,0 @@ -import { - BufferGeometryLoader, - FileLoader, - Loader, - Object3D, - MeshStandardMaterial, - MeshPhysicalMaterial, - Mesh, - Color, - Points, - PointsMaterial, - Line, - LineBasicMaterial, - Matrix4, - DirectionalLight, - PointLight, - SpotLight, - RectAreaLight, - Sprite, - SpriteMaterial, - CanvasTexture, - LinearFilter, - ClampToEdgeWrapping, - RepeatWrapping, - TextureLoader, - DoubleSide -} from 'three'; - -import { EXRLoader } from '../loaders/EXRLoader.js'; - -const _taskCache = new WeakMap(); - -class Rhino3dmLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.libraryPath = ''; - this.libraryPending = null; - this.libraryBinary = null; - this.libraryConfig = {}; - - this.url = ''; - - this.workerLimit = 4; - this.workerPool = []; - this.workerNextTaskID = 1; - this.workerSourceURL = ''; - this.workerConfig = {}; - - this.materials = []; - this.warnings = []; - - } - - setLibraryPath( path ) { - - this.libraryPath = path; - - return this; - - } - - setWorkerLimit( workerLimit ) { - - this.workerLimit = workerLimit; - - return this; - - } - - load( url, onLoad, onProgress, onError ) { - - const loader = new FileLoader( this.manager ); - - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( this.requestHeader ); - - this.url = url; - - loader.load( url, ( buffer ) => { - - // Check for an existing task using this buffer. A transferred buffer cannot be transferred - // again from this thread. - if ( _taskCache.has( buffer ) ) { - - const cachedTask = _taskCache.get( buffer ); - - return cachedTask.promise.then( onLoad ).catch( onError ); - - } - - this.decodeObjects( buffer, url ) - .then( result => { - - result.userData.warnings = this.warnings; - onLoad( result ); - - } ) - .catch( e => onError( e ) ); - - }, onProgress, onError ); - - } - - debug() { - - console.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) ); - - } - - decodeObjects( buffer, url ) { - - let worker; - let taskID; - - const taskCost = buffer.byteLength; - - const objectPending = this._getWorker( taskCost ) - .then( ( _worker ) => { - - worker = _worker; - taskID = this.workerNextTaskID ++; - - return new Promise( ( resolve, reject ) => { - - worker._callbacks[ taskID ] = { resolve, reject }; - - worker.postMessage( { type: 'decode', id: taskID, buffer }, [ buffer ] ); - - // this.debug(); - - } ); - - } ) - .then( ( message ) => this._createGeometry( message.data ) ) - .catch( e => { - - throw e; - - } ); - - // Remove task from the task list. - // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416) - objectPending - .catch( () => true ) - .then( () => { - - if ( worker && taskID ) { - - this._releaseTask( worker, taskID ); - - //this.debug(); - - } - - } ); - - // Cache the task result. - _taskCache.set( buffer, { - - url: url, - promise: objectPending - - } ); - - return objectPending; - - } - - parse( data, onLoad, onError ) { - - this.decodeObjects( data, '' ) - .then( result => { - - result.userData.warnings = this.warnings; - onLoad( result ); - - } ) - .catch( e => onError( e ) ); - - } - - _compareMaterials( material ) { - - const mat = {}; - mat.name = material.name; - mat.color = {}; - mat.color.r = material.color.r; - mat.color.g = material.color.g; - mat.color.b = material.color.b; - mat.type = material.type; - - const json = JSON.stringify( mat ); - - for ( let i = 0; i < this.materials.length; i ++ ) { - - const m = this.materials[ i ]; - const _mat = {}; - _mat.name = m.name; - _mat.color = {}; - _mat.color.r = m.color.r; - _mat.color.g = m.color.g; - _mat.color.b = m.color.b; - _mat.type = m.type; - - if ( JSON.stringify( _mat ) === json ) { - - return m; - - } - - } - - this.materials.push( material ); - - return material; - - } - - _createMaterial( material, renderEnvironment ) { - - if ( material === undefined ) { - - return new MeshStandardMaterial( { - color: new Color( 1, 1, 1 ), - metalness: 0.8, - name: Loader.DEFAULT_MATERIAL_NAME, - side: DoubleSide - } ); - - } - - //console.log(material) - - let mat = new MeshPhysicalMaterial( { - - color: new Color( material.diffuseColor.r / 255.0, material.diffuseColor.g / 255.0, material.diffuseColor.b / 255.0 ), - emissive: new Color( material.emissionColor.r, material.emissionColor.g, material.emissionColor.b ), - flatShading: material.disableLighting, - ior: material.indexOfRefraction, - name: material.name, - reflectivity: material.reflectivity, - opacity: 1.0 - material.transparency, - side: DoubleSide, - specularColor: material.specularColor, - transparent: material.transparency > 0 ? true : false - - } ); - - mat.userData.id = material.id; - - if ( material.pbrSupported ) { - - const pbr = material.pbr; - - mat.anisotropy = pbr.anisotropy; - mat.anisotropyRotation = pbr.anisotropicRotation; - mat.color = new Color( pbr.baseColor.r, pbr.baseColor.g, pbr.baseColor.b ); - mat.clearCoat = pbr.clearCoat; - mat.clearCoatRoughness = pbr.clearCoatRoughness; - mat.metalness = pbr.metallic; - mat.transmission = 1 - pbr.opacity; - mat.roughness = pbr.roughness; - mat.sheen = pbr.sheen; - mat.specularIntensity = pbr.specular; - mat.thickness = pbr.subsurface; - - } - - if ( material.pbrSupported && material.pbr.opacity === 0 && material.transparency === 1 ) { - - //some compromises - - mat.opacity = 0.2; - mat.transmission = 1.00; - - } - - const textureLoader = new TextureLoader(); - - for ( let i = 0; i < material.textures.length; i ++ ) { - - const texture = material.textures[ i ]; - - if ( texture.image !== null ) { - - const map = textureLoader.load( texture.image ); - - //console.log(texture.type ) - - switch ( texture.type ) { - - case 'Bump': - - mat.bumpMap = map; - - break; - - case 'Diffuse': - - mat.map = map; - - break; - - case 'Emap': - - mat.envMap = map; - - break; - - case 'Opacity': - - mat.transmissionMap = map; - - break; - - case 'Transparency': - - mat.alphaMap = map; - mat.transparent = true; - - break; - - case 'PBR_Alpha': - - mat.alphaMap = map; - mat.transparent = true; - - break; - - case 'PBR_AmbientOcclusion': - - mat.aoMap = map; - - break; - - case 'PBR_Anisotropic': - - mat.anisotropyMap = map; - - break; - - case 'PBR_BaseColor': - - mat.map = map; - - break; - - case 'PBR_Clearcoat': - - mat.clearcoatMap = map; - - break; - - case 'PBR_ClearcoatBump': - - mat.clearcoatNormalMap = map; - - break; - - case 'PBR_ClearcoatRoughness': - - mat.clearcoatRoughnessMap = map; - - break; - - case 'PBR_Displacement': - - mat.displacementMap = map; - - break; - - case 'PBR_Emission': - - mat.emissiveMap = map; - - break; - - case 'PBR_Metallic': - - mat.metalnessMap = map; - - break; - - case 'PBR_Roughness': - - mat.roughnessMap = map; - - break; - - case 'PBR_Sheen': - - mat.sheenColorMap = map; - - break; - - case 'PBR_Specular': - - mat.specularColorMap = map; - - break; - - case 'PBR_Subsurface': - - mat.thicknessMap = map; - - break; - - default: - - this.warnings.push( { - message: `THREE.3DMLoader: No conversion exists for 3dm ${texture.type}.`, - type: 'no conversion' - } ); - - break; - - } - - map.wrapS = texture.wrapU === 0 ? RepeatWrapping : ClampToEdgeWrapping; - map.wrapT = texture.wrapV === 0 ? RepeatWrapping : ClampToEdgeWrapping; - - if ( texture.repeat ) { - - map.repeat.set( texture.repeat[ 0 ], texture.repeat[ 1 ] ); - - } - - } - - } - - if ( renderEnvironment ) { - - new EXRLoader().load( renderEnvironment.image, function ( texture ) { - - texture.mapping = THREE.EquirectangularReflectionMapping; - mat.envMap = texture; - - } ); - - } - - return mat; - - } - - _createGeometry( data ) { - - const object = new Object3D(); - const instanceDefinitionObjects = []; - const instanceDefinitions = []; - const instanceReferences = []; - - object.userData[ 'layers' ] = data.layers; - object.userData[ 'groups' ] = data.groups; - object.userData[ 'settings' ] = data.settings; - object.userData.settings[ 'renderSettings' ] = data.renderSettings; - object.userData[ 'objectType' ] = 'File3dm'; - object.userData[ 'materials' ] = null; - - object.name = this.url; - - let objects = data.objects; - const materials = data.materials; - - for ( let i = 0; i < objects.length; i ++ ) { - - const obj = objects[ i ]; - const attributes = obj.attributes; - - switch ( obj.objectType ) { - - case 'InstanceDefinition': - - instanceDefinitions.push( obj ); - - break; - - case 'InstanceReference': - - instanceReferences.push( obj ); - - break; - - default: - - let matId; - - switch( attributes.materialSource.name ) { - case 'ObjectMaterialSource_MaterialFromLayer': - //check layer index - if ( attributes.layerIndex >= 0 ) { - - matId = data.layers[ attributes.layerIndex ].renderMaterialIndex; - - } else { - - matId = null; - - } - - break; - - case 'ObjectMaterialSource_MaterialFromObject': - - if ( attributes.materialIndex >= 0 ) { - - matId = attributes.materialIndex; - - } else { - - matId = null; - - } - - break; - - } - - let material; - - if ( matId >= 0 ) { - - const rMaterial = materials[ matId ]; - material = this._createMaterial( rMaterial, data.renderEnvironment ); - - - } else { - - material = this._createMaterial(); - - } - - material = this._compareMaterials( material ); - const _object = this._createObject( obj, material ); - - if ( _object === undefined ) { - - continue; - - } - - const layer = data.layers[ attributes.layerIndex ]; - - _object.visible = layer ? data.layers[ attributes.layerIndex ].visible : true; - - if ( attributes.isInstanceDefinitionObject ) { - - instanceDefinitionObjects.push( _object ); - - } else { - - object.add( _object ); - - } - - break; - - } - - } - - for ( let i = 0; i < instanceDefinitions.length; i ++ ) { - - const iDef = instanceDefinitions[ i ]; - - objects = []; - - for ( let j = 0; j < iDef.attributes.objectIds.length; j ++ ) { - - const objId = iDef.attributes.objectIds[ j ]; - - for ( let p = 0; p < instanceDefinitionObjects.length; p ++ ) { - - const idoId = instanceDefinitionObjects[ p ].userData.attributes.id; - - if ( objId === idoId ) { - - objects.push( instanceDefinitionObjects[ p ] ); - - } - - } - - } - - // Currently clones geometry and does not take advantage of instancing - - for ( let j = 0; j < instanceReferences.length; j ++ ) { - - const iRef = instanceReferences[ j ]; - - if ( iRef.geometry.parentIdefId === iDef.attributes.id ) { - - const iRefObject = new Object3D(); - const xf = iRef.geometry.xform.array; - - const matrix = new Matrix4(); - matrix.set( ...xf ); - - iRefObject.applyMatrix4( matrix ); - - for ( let p = 0; p < objects.length; p ++ ) { - - iRefObject.add( objects[ p ].clone( true ) ); - - } - - object.add( iRefObject ); - - } - - } - - } - - object.userData[ 'materials' ] = this.materials; - object.name = ''; - return object; - - } - - _createObject( obj, mat ) { - - const loader = new BufferGeometryLoader(); - - const attributes = obj.attributes; - - let geometry, material, _color, color; - - switch ( obj.objectType ) { - - case 'Point': - case 'PointSet': - - geometry = loader.parse( obj.geometry ); - - if ( geometry.attributes.hasOwnProperty( 'color' ) ) { - - material = new PointsMaterial( { vertexColors: true, sizeAttenuation: false, size: 2 } ); - - } else { - - _color = attributes.drawColor; - color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ); - material = new PointsMaterial( { color: color, sizeAttenuation: false, size: 2 } ); - - } - - material = this._compareMaterials( material ); - - const points = new Points( geometry, material ); - points.userData[ 'attributes' ] = attributes; - points.userData[ 'objectType' ] = obj.objectType; - - if ( attributes.name ) { - - points.name = attributes.name; - - } - - return points; - - case 'Mesh': - case 'Extrusion': - case 'SubD': - case 'Brep': - - if ( obj.geometry === null ) return; - - geometry = loader.parse( obj.geometry ); - - if ( geometry.attributes.hasOwnProperty( 'color' ) ) { - - mat.vertexColors = true; - - } - - if ( mat === null ) { - - mat = this._createMaterial(); - mat = this._compareMaterials( mat ); - - } - - const mesh = new Mesh( geometry, mat ); - mesh.castShadow = attributes.castsShadows; - mesh.receiveShadow = attributes.receivesShadows; - mesh.userData[ 'attributes' ] = attributes; - mesh.userData[ 'objectType' ] = obj.objectType; - - if ( attributes.name ) { - - mesh.name = attributes.name; - - } - - return mesh; - - case 'Curve': - - geometry = loader.parse( obj.geometry ); - - _color = attributes.drawColor; - color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ); - - material = new LineBasicMaterial( { color: color } ); - material = this._compareMaterials( material ); - - const lines = new Line( geometry, material ); - lines.userData[ 'attributes' ] = attributes; - lines.userData[ 'objectType' ] = obj.objectType; - - if ( attributes.name ) { - - lines.name = attributes.name; - - } - - return lines; - - case 'TextDot': - - geometry = obj.geometry; - - const ctx = document.createElement( 'canvas' ).getContext( '2d' ); - const font = `${geometry.fontHeight}px ${geometry.fontFace}`; - ctx.font = font; - const width = ctx.measureText( geometry.text ).width + 10; - const height = geometry.fontHeight + 10; - - const r = window.devicePixelRatio; - - ctx.canvas.width = width * r; - ctx.canvas.height = height * r; - ctx.canvas.style.width = width + 'px'; - ctx.canvas.style.height = height + 'px'; - ctx.setTransform( r, 0, 0, r, 0, 0 ); - - ctx.font = font; - ctx.textBaseline = 'middle'; - ctx.textAlign = 'center'; - color = attributes.drawColor; - ctx.fillStyle = `rgba(${color.r},${color.g},${color.b},${color.a})`; - ctx.fillRect( 0, 0, width, height ); - ctx.fillStyle = 'white'; - ctx.fillText( geometry.text, width / 2, height / 2 ); - - const texture = new CanvasTexture( ctx.canvas ); - texture.minFilter = LinearFilter; - texture.wrapS = ClampToEdgeWrapping; - texture.wrapT = ClampToEdgeWrapping; - - material = new SpriteMaterial( { map: texture, depthTest: false } ); - const sprite = new Sprite( material ); - sprite.position.set( geometry.point[ 0 ], geometry.point[ 1 ], geometry.point[ 2 ] ); - sprite.scale.set( width / 10, height / 10, 1.0 ); - - sprite.userData[ 'attributes' ] = attributes; - sprite.userData[ 'objectType' ] = obj.objectType; - - if ( attributes.name ) { - - sprite.name = attributes.name; - - } - - return sprite; - - case 'Light': - - geometry = obj.geometry; - - let light; - - switch ( geometry.lightStyle.name ) { - - case 'LightStyle_WorldPoint': - - light = new PointLight(); - light.castShadow = attributes.castsShadows; - light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] ); - light.shadow.normalBias = 0.1; - - break; - - case 'LightStyle_WorldSpot': - - light = new SpotLight(); - light.castShadow = attributes.castsShadows; - light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] ); - light.target.position.set( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] ); - light.angle = geometry.spotAngleRadians; - light.shadow.normalBias = 0.1; - - break; - - case 'LightStyle_WorldRectangular': - - light = new RectAreaLight(); - const width = Math.abs( geometry.width[ 2 ] ); - const height = Math.abs( geometry.length[ 0 ] ); - light.position.set( geometry.location[ 0 ] - ( height / 2 ), geometry.location[ 1 ], geometry.location[ 2 ] - ( width / 2 ) ); - light.height = height; - light.width = width; - light.lookAt( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] ); - - break; - - case 'LightStyle_WorldDirectional': - - light = new DirectionalLight(); - light.castShadow = attributes.castsShadows; - light.position.set( geometry.location[ 0 ], geometry.location[ 1 ], geometry.location[ 2 ] ); - light.target.position.set( geometry.direction[ 0 ], geometry.direction[ 1 ], geometry.direction[ 2 ] ); - light.shadow.normalBias = 0.1; - - break; - - case 'LightStyle_WorldLinear': - // no conversion exists, warning has already been printed to the console - break; - - default: - break; - - } - - if ( light ) { - - light.intensity = geometry.intensity; - _color = geometry.diffuse; - color = new Color( _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ); - light.color = color; - light.userData[ 'attributes' ] = attributes; - light.userData[ 'objectType' ] = obj.objectType; - - } - - return light; - - } - - } - - _initLibrary() { - - if ( ! this.libraryPending ) { - - // Load rhino3dm wrapper. - const jsLoader = new FileLoader( this.manager ); - jsLoader.setPath( this.libraryPath ); - const jsContent = new Promise( ( resolve, reject ) => { - - jsLoader.load( 'rhino3dm.js', resolve, undefined, reject ); - - } ); - - // Load rhino3dm WASM binary. - const binaryLoader = new FileLoader( this.manager ); - binaryLoader.setPath( this.libraryPath ); - binaryLoader.setResponseType( 'arraybuffer' ); - const binaryContent = new Promise( ( resolve, reject ) => { - - binaryLoader.load( 'rhino3dm.wasm', resolve, undefined, reject ); - - } ); - - this.libraryPending = Promise.all( [ jsContent, binaryContent ] ) - .then( ( [ jsContent, binaryContent ] ) => { - - //this.libraryBinary = binaryContent; - this.libraryConfig.wasmBinary = binaryContent; - - const fn = Rhino3dmWorker.toString(); - - const body = [ - '/* rhino3dm.js */', - jsContent, - '/* worker */', - fn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) ) - ].join( '\n' ); - - this.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) ); - - } ); - - } - - return this.libraryPending; - - } - - _getWorker( taskCost ) { - - return this._initLibrary().then( () => { - - if ( this.workerPool.length < this.workerLimit ) { - - const worker = new Worker( this.workerSourceURL ); - - worker._callbacks = {}; - worker._taskCosts = {}; - worker._taskLoad = 0; - - worker.postMessage( { - type: 'init', - libraryConfig: this.libraryConfig - } ); - - worker.onmessage = e => { - - const message = e.data; - - switch ( message.type ) { - - case 'warning': - this.warnings.push( message.data ); - console.warn( message.data ); - break; - - case 'decode': - worker._callbacks[ message.id ].resolve( message ); - break; - - case 'error': - worker._callbacks[ message.id ].reject( message ); - break; - - default: - console.error( 'THREE.Rhino3dmLoader: Unexpected message, "' + message.type + '"' ); - - } - - }; - - this.workerPool.push( worker ); - - } else { - - this.workerPool.sort( function ( a, b ) { - - return a._taskLoad > b._taskLoad ? - 1 : 1; - - } ); - - } - - const worker = this.workerPool[ this.workerPool.length - 1 ]; - - worker._taskLoad += taskCost; - - return worker; - - } ); - - } - - _releaseTask( worker, taskID ) { - - worker._taskLoad -= worker._taskCosts[ taskID ]; - delete worker._callbacks[ taskID ]; - delete worker._taskCosts[ taskID ]; - - } - - dispose() { - - for ( let i = 0; i < this.workerPool.length; ++ i ) { - - this.workerPool[ i ].terminate(); - - } - - this.workerPool.length = 0; - - return this; - - } - -} - -/* WEB WORKER */ - -function Rhino3dmWorker() { - - let libraryPending; - let libraryConfig; - let rhino; - let taskID; - - onmessage = function ( e ) { - - const message = e.data; - - switch ( message.type ) { - - case 'init': - - libraryConfig = message.libraryConfig; - const wasmBinary = libraryConfig.wasmBinary; - let RhinoModule; - libraryPending = new Promise( function ( resolve ) { - - /* Like Basis Loader */ - RhinoModule = { wasmBinary, onRuntimeInitialized: resolve }; - - rhino3dm( RhinoModule ); // eslint-disable-line no-undef - - } ).then( () => { - - rhino = RhinoModule; - - } ); - - break; - - case 'decode': - - taskID = message.id; - const buffer = message.buffer; - libraryPending.then( () => { - - try { - - const data = decodeObjects( rhino, buffer ); - self.postMessage( { type: 'decode', id: message.id, data } ); - - } catch ( error ) { - - self.postMessage( { type: 'error', id: message.id, error } ); - - } - - } ); - - break; - - } - - }; - - function decodeObjects( rhino, buffer ) { - - const arr = new Uint8Array( buffer ); - const doc = rhino.File3dm.fromByteArray( arr ); - - const objects = []; - const materials = []; - const layers = []; - const views = []; - const namedViews = []; - const groups = []; - const strings = []; - - //Handle objects - - const objs = doc.objects(); - const cnt = objs.count; - - for ( let i = 0; i < cnt; i ++ ) { - - const _object = objs.get( i ); - - const object = extractObjectData( _object, doc ); - - _object.delete(); - - if ( object ) { - - objects.push( object ); - - } - - } - - // Handle instance definitions - // console.log( `Instance Definitions Count: ${doc.instanceDefinitions().count()}` ); - - for ( let i = 0; i < doc.instanceDefinitions().count; i ++ ) { - - const idef = doc.instanceDefinitions().get( i ); - const idefAttributes = extractProperties( idef ); - idefAttributes.objectIds = idef.getObjectIds(); - - objects.push( { geometry: null, attributes: idefAttributes, objectType: 'InstanceDefinition' } ); - - } - - // Handle materials - - const textureTypes = [ - // rhino.TextureType.Bitmap, - rhino.TextureType.Diffuse, - rhino.TextureType.Bump, - rhino.TextureType.Transparency, - rhino.TextureType.Opacity, - rhino.TextureType.Emap - ]; - - const pbrTextureTypes = [ - rhino.TextureType.PBR_BaseColor, - rhino.TextureType.PBR_Subsurface, - rhino.TextureType.PBR_SubsurfaceScattering, - rhino.TextureType.PBR_SubsurfaceScatteringRadius, - rhino.TextureType.PBR_Metallic, - rhino.TextureType.PBR_Specular, - rhino.TextureType.PBR_SpecularTint, - rhino.TextureType.PBR_Roughness, - rhino.TextureType.PBR_Anisotropic, - rhino.TextureType.PBR_Anisotropic_Rotation, - rhino.TextureType.PBR_Sheen, - rhino.TextureType.PBR_SheenTint, - rhino.TextureType.PBR_Clearcoat, - rhino.TextureType.PBR_ClearcoatBump, - rhino.TextureType.PBR_ClearcoatRoughness, - rhino.TextureType.PBR_OpacityIor, - rhino.TextureType.PBR_OpacityRoughness, - rhino.TextureType.PBR_Emission, - rhino.TextureType.PBR_AmbientOcclusion, - rhino.TextureType.PBR_Displacement - ]; - - for ( let i = 0; i < doc.materials().count; i ++ ) { - - const _material = doc.materials().get( i ); - - let material = extractProperties( _material ); - - const textures = []; - - textures.push( ...extractTextures( _material, textureTypes, doc ) ); - - material.pbrSupported = _material.physicallyBased().supported; - - if ( material.pbrSupported ) { - - textures.push( ...extractTextures( _material, pbrTextureTypes, doc ) ); - material.pbr = extractProperties( _material.physicallyBased() ); - - } - - material.textures = textures; - - materials.push( material ); - - _material.delete(); - - } - - // Handle layers - - for ( let i = 0; i < doc.layers().count; i ++ ) { - - const _layer = doc.layers().get( i ); - const layer = extractProperties( _layer ); - - layers.push( layer ); - - _layer.delete(); - - } - - // Handle views - - for ( let i = 0; i < doc.views().count; i ++ ) { - - const _view = doc.views().get( i ); - const view = extractProperties( _view ); - - views.push( view ); - - _view.delete(); - - } - - // Handle named views - - for ( let i = 0; i < doc.namedViews().count; i ++ ) { - - const _namedView = doc.namedViews().get( i ); - const namedView = extractProperties( _namedView ); - - namedViews.push( namedView ); - - _namedView.delete(); - - } - - // Handle groups - - for ( let i = 0; i < doc.groups().count; i ++ ) { - - const _group = doc.groups().get( i ); - const group = extractProperties( _group ); - - groups.push( group ); - - _group.delete(); - - } - - // Handle settings - - const settings = extractProperties( doc.settings() ); - - //TODO: Handle other document stuff like dimstyles, instance definitions, bitmaps etc. - - // Handle dimstyles - // console.log( `Dimstyle Count: ${doc.dimstyles().count()}` ); - - // Handle bitmaps - // console.log( `Bitmap Count: ${doc.bitmaps().count()}` ); - - // Handle strings - // console.log( `Document Strings Count: ${doc.strings().count()}` ); - // Note: doc.strings().documentUserTextCount() counts any doc.strings defined in a section - // console.log( `Document User Text Count: ${doc.strings().documentUserTextCount()}` ); - - const strings_count = doc.strings().count; - - for ( let i = 0; i < strings_count; i ++ ) { - - strings.push( doc.strings().get( i ) ); - - } - - // Handle Render Environments for Material Environment - - // get the id of the active render environment skylight, which we'll use for environment texture - const reflectionId = doc.settings().renderSettings().renderEnvironments.reflectionId - - const rc = doc.renderContent() - - let renderEnvironment = null - - for( let i = 0; i < rc.count; i++ ) { - - const content = rc.get(i) - - switch( content.kind ) { - - case 'environment': - - const id = content.id - - // there could be multiple render environments in a 3dm file - if ( id !== reflectionId ) break; - - const renderTexture = content.findChild( 'texture' ) - const fileName = renderTexture.fileName - - for ( let j = 0; j < doc.embeddedFiles().count; j ++ ) { - - const _fileName = doc.embeddedFiles().get( j ).fileName - - if ( fileName === _fileName ) { - - const background = doc.getEmbeddedFileAsBase64( fileName ) - const backgroundImage = 'data:image/png;base64,' + background - renderEnvironment = { type: 'renderEnvironment', image: backgroundImage, name: fileName }; - - } - - } - - break; - - } - - } - - // Handle Render Settings - - const renderSettings = { - ambientLight: doc.settings().renderSettings().ambientLight, - backgroundColorTop: doc.settings().renderSettings().backgroundColorTop, - backgroundColorBottom: doc.settings().renderSettings().backgroundColorBottom, - useHiddenLights: doc.settings().renderSettings().useHiddenLights, - depthCue: doc.settings().renderSettings().depthCue, - flatShade: doc.settings().renderSettings().flatShade, - renderBackFaces: doc.settings().renderSettings().renderBackFaces, - renderPoints: doc.settings().renderSettings().renderPoints, - renderCurves: doc.settings().renderSettings().renderCurves, - renderIsoParams: doc.settings().renderSettings().renderIsoParams, - renderMeshEdges: doc.settings().renderSettings().renderMeshEdges, - renderAnnotations: doc.settings().renderSettings().renderAnnotations, - useViewportSize: doc.settings().renderSettings().useViewportSize, - scaleBackgroundToFit: doc.settings().renderSettings().scaleBackgroundToFit, - transparentBackground: doc.settings().renderSettings().transparentBackground, - imageDpi: doc.settings().renderSettings().imageDpi, - shadowMapLevel: doc.settings().renderSettings().shadowMapLevel, - namedView: doc.settings().renderSettings().namedView, - snapShot: doc.settings().renderSettings().snapShot, - specificViewport: doc.settings().renderSettings().specificViewport, - groundPlane: extractProperties( doc.settings().renderSettings().groundPlane ), - safeFrame: extractProperties( doc.settings().renderSettings().safeFrame ), - dithering: extractProperties( doc.settings().renderSettings().dithering ), - skylight: extractProperties( doc.settings().renderSettings().skylight ), - linearWorkflow: extractProperties( doc.settings().renderSettings().linearWorkflow ), - renderChannels: extractProperties( doc.settings().renderSettings().renderChannels ), - sun: extractProperties( doc.settings().renderSettings().sun ), - renderEnvironments: extractProperties( doc.settings().renderSettings().renderEnvironments ), - postEffects: extractProperties( doc.settings().renderSettings().postEffects ), - - } - - doc.delete(); - - return { objects, materials, layers, views, namedViews, groups, strings, settings, renderSettings, renderEnvironment }; - - } - - function extractTextures( m, tTypes, d ) { - - const textures = [] - - for ( let i = 0; i < tTypes.length; i ++ ) { - - const _texture = m.getTexture( tTypes[ i ] ); - if ( _texture ) { - - let textureType = tTypes[ i ].constructor.name; - textureType = textureType.substring( 12, textureType.length ); - const texture = extractTextureData( _texture, textureType, d ); - textures.push( texture ); - _texture.delete(); - - } - - } - - return textures; - - } - - function extractTextureData( t, tType, d ) { - - const texture = { type: tType }; - - const image = d.getEmbeddedFileAsBase64( t.fileName ); - - texture.wrapU = t.wrapU; - texture.wrapV = t.wrapV; - texture.wrapW = t.wrapW; - const uvw = t.uvwTransform.toFloatArray( true ); - - texture.repeat = [ uvw[ 0 ], uvw[ 5 ] ]; - - if ( image ) { - - texture.image = 'data:image/png;base64,' + image; - - } else { - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: Image for ${tType} texture not embedded in file.`, - type: 'missing resource' - } - - } ); - - texture.image = null; - - } - - return texture; - - } - - function extractObjectData( object, doc ) { - - const _geometry = object.geometry(); - const _attributes = object.attributes(); - let objectType = _geometry.objectType; - let geometry, attributes, position, data, mesh; - - // skip instance definition objects - //if( _attributes.isInstanceDefinitionObject ) { continue; } - - // TODO: handle other geometry types - switch ( objectType ) { - - case rhino.ObjectType.Curve: - - const pts = curveToPoints( _geometry, 100 ); - - position = {}; - attributes = {}; - data = {}; - - position.itemSize = 3; - position.type = 'Float32Array'; - position.array = []; - - for ( let j = 0; j < pts.length; j ++ ) { - - position.array.push( pts[ j ][ 0 ] ); - position.array.push( pts[ j ][ 1 ] ); - position.array.push( pts[ j ][ 2 ] ); - - } - - attributes.position = position; - data.attributes = attributes; - - geometry = { data }; - - break; - - case rhino.ObjectType.Point: - - const pt = _geometry.location; - - position = {}; - const color = {}; - attributes = {}; - data = {}; - - position.itemSize = 3; - position.type = 'Float32Array'; - position.array = [ pt[ 0 ], pt[ 1 ], pt[ 2 ] ]; - - const _color = _attributes.drawColor( doc ); - - color.itemSize = 3; - color.type = 'Float32Array'; - color.array = [ _color.r / 255.0, _color.g / 255.0, _color.b / 255.0 ]; - - attributes.position = position; - attributes.color = color; - data.attributes = attributes; - - geometry = { data }; - - break; - - case rhino.ObjectType.PointSet: - case rhino.ObjectType.Mesh: - - geometry = _geometry.toThreejsJSON(); - - break; - - case rhino.ObjectType.Brep: - - const faces = _geometry.faces(); - mesh = new rhino.Mesh(); - - for ( let faceIndex = 0; faceIndex < faces.count; faceIndex ++ ) { - - const face = faces.get( faceIndex ); - const _mesh = face.getMesh( rhino.MeshType.Any ); - - if ( _mesh ) { - - mesh.append( _mesh ); - _mesh.delete(); - - } - - face.delete(); - - } - - if ( mesh.faces().count > 0 ) { - - mesh.compact(); - geometry = mesh.toThreejsJSON(); - faces.delete(); - - } - - mesh.delete(); - - break; - - case rhino.ObjectType.Extrusion: - - mesh = _geometry.getMesh( rhino.MeshType.Any ); - - if ( mesh ) { - - geometry = mesh.toThreejsJSON(); - mesh.delete(); - - } - - break; - - case rhino.ObjectType.TextDot: - - geometry = extractProperties( _geometry ); - - break; - - case rhino.ObjectType.Light: - - geometry = extractProperties( _geometry ); - - if ( geometry.lightStyle.name === 'LightStyle_WorldLinear' ) { - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: No conversion exists for ${objectType.constructor.name} ${geometry.lightStyle.name}`, - type: 'no conversion', - guid: _attributes.id - } - - } ); - - } - - break; - - case rhino.ObjectType.InstanceReference: - - geometry = extractProperties( _geometry ); - geometry.xform = extractProperties( _geometry.xform ); - geometry.xform.array = _geometry.xform.toFloatArray( true ); - - break; - - case rhino.ObjectType.SubD: - - // TODO: precalculate resulting vertices and faces and warn on excessive results - _geometry.subdivide( 3 ); - mesh = rhino.Mesh.createFromSubDControlNet( _geometry ); - if ( mesh ) { - - geometry = mesh.toThreejsJSON(); - mesh.delete(); - - } - - break; - - /* - case rhino.ObjectType.Annotation: - case rhino.ObjectType.Hatch: - case rhino.ObjectType.ClipPlane: - */ - - default: - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: Conversion not implemented for ${objectType.constructor.name}`, - type: 'not implemented', - guid: _attributes.id - } - - } ); - - break; - - } - - if ( geometry ) { - - attributes = extractProperties( _attributes ); - attributes.geometry = extractProperties( _geometry ); - - if ( _attributes.groupCount > 0 ) { - - attributes.groupIds = _attributes.getGroupList(); - - } - - if ( _attributes.userStringCount > 0 ) { - - attributes.userStrings = _attributes.getUserStrings(); - - } - - if ( _geometry.userStringCount > 0 ) { - - attributes.geometry.userStrings = _geometry.getUserStrings(); - - } - - if ( _attributes.decals().count > 0 ) { - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: No conversion exists for the decals associated with this object.`, - type: 'no conversion', - guid: _attributes.id - } - - } ); - - } - - attributes.drawColor = _attributes.drawColor( doc ); - - objectType = objectType.constructor.name; - objectType = objectType.substring( 11, objectType.length ); - - return { geometry, attributes, objectType }; - - } else { - - self.postMessage( { type: 'warning', id: taskID, data: { - message: `THREE.3DMLoader: ${objectType.constructor.name} has no associated mesh geometry.`, - type: 'missing mesh', - guid: _attributes.id - } - - } ); - - } - - } - - function extractProperties( object ) { - - const result = {}; - - for ( const property in object ) { - - const value = object[ property ]; - - if ( typeof value !== 'function' ) { - - if ( typeof value === 'object' && value !== null && value.hasOwnProperty( 'constructor' ) ) { - - result[ property ] = { name: value.constructor.name, value: value.value }; - - } else if ( typeof value === 'object' && value !== null ) { - - result[ property ] = extractProperties( value ); - - } else { - - result[ property ] = value; - - } - - } else { - - // these are functions that could be called to extract more data. - //console.log( `${property}: ${object[ property ].constructor.name}` ); - - } - - } - - return result; - - } - - function curveToPoints( curve, pointLimit ) { - - let pointCount = pointLimit; - let rc = []; - const ts = []; - - if ( curve instanceof rhino.LineCurve ) { - - return [ curve.pointAtStart, curve.pointAtEnd ]; - - } - - if ( curve instanceof rhino.PolylineCurve ) { - - pointCount = curve.pointCount; - for ( let i = 0; i < pointCount; i ++ ) { - - rc.push( curve.point( i ) ); - - } - - return rc; - - } - - if ( curve instanceof rhino.PolyCurve ) { - - const segmentCount = curve.segmentCount; - - for ( let i = 0; i < segmentCount; i ++ ) { - - const segment = curve.segmentCurve( i ); - const segmentArray = curveToPoints( segment, pointCount ); - rc = rc.concat( segmentArray ); - segment.delete(); - - } - - return rc; - - } - - if ( curve instanceof rhino.ArcCurve ) { - - pointCount = Math.floor( curve.angleDegrees / 5 ); - pointCount = pointCount < 2 ? 2 : pointCount; - // alternative to this hardcoded version: https://stackoverflow.com/a/18499923/2179399 - - } - - if ( curve instanceof rhino.NurbsCurve && curve.degree === 1 ) { - - const pLine = curve.tryGetPolyline(); - - for ( let i = 0; i < pLine.count; i ++ ) { - - rc.push( pLine.get( i ) ); - - } - - pLine.delete(); - - return rc; - - } - - const domain = curve.domain; - const divisions = pointCount - 1.0; - - for ( let j = 0; j < pointCount; j ++ ) { - - const t = domain[ 0 ] + ( j / divisions ) * ( domain[ 1 ] - domain[ 0 ] ); - - if ( t === domain[ 0 ] || t === domain[ 1 ] ) { - - ts.push( t ); - continue; - - } - - const tan = curve.tangentAt( t ); - const prevTan = curve.tangentAt( ts.slice( - 1 )[ 0 ] ); - - // Duplicated from THREE.Vector3 - // How to pass imports to worker? - - const tS = tan[ 0 ] * tan[ 0 ] + tan[ 1 ] * tan[ 1 ] + tan[ 2 ] * tan[ 2 ]; - const ptS = prevTan[ 0 ] * prevTan[ 0 ] + prevTan[ 1 ] * prevTan[ 1 ] + prevTan[ 2 ] * prevTan[ 2 ]; - - const denominator = Math.sqrt( tS * ptS ); - - let angle; - - if ( denominator === 0 ) { - - angle = Math.PI / 2; - - } else { - - const theta = ( tan.x * prevTan.x + tan.y * prevTan.y + tan.z * prevTan.z ) / denominator; - angle = Math.acos( Math.max( - 1, Math.min( 1, theta ) ) ); - - } - - if ( angle < 0.1 ) continue; - - ts.push( t ); - - } - - rc = ts.map( t => curve.pointAt( t ) ); - return rc; - - } - -} - -export { Rhino3dmLoader }; diff --git a/three/addons/loaders/3MFLoader.js b/three/addons/loaders/3MFLoader.js deleted file mode 100644 index bf8374e..0000000 --- a/three/addons/loaders/3MFLoader.js +++ /dev/null @@ -1,1478 +0,0 @@ -import { - BufferAttribute, - BufferGeometry, - ClampToEdgeWrapping, - Color, - FileLoader, - Float32BufferAttribute, - Group, - LinearFilter, - LinearMipmapLinearFilter, - Loader, - Matrix4, - Mesh, - MeshPhongMaterial, - MeshStandardMaterial, - MirroredRepeatWrapping, - NearestFilter, - RepeatWrapping, - TextureLoader, - SRGBColorSpace -} from 'three'; -import * as fflate from '../libs/fflate.module.js'; - -const COLOR_SPACE_3MF = SRGBColorSpace; - -/** - * - * 3D Manufacturing Format (3MF) specification: https://3mf.io/specification/ - * - * The following features from the core specification are supported: - * - * - 3D Models - * - Object Resources (Meshes and Components) - * - Material Resources (Base Materials) - * - * 3MF Materials and Properties Extension are only partially supported. - * - * - Texture 2D - * - Texture 2D Groups - * - Color Groups (Vertex Colors) - * - Metallic Display Properties (PBR) - */ - -class ThreeMFLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.availableExtensions = []; - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( buffer ) { - - try { - - onLoad( scope.parse( buffer ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( data ) { - - const scope = this; - const textureLoader = new TextureLoader( this.manager ); - - function loadDocument( data ) { - - let zip = null; - let file = null; - - let relsName; - let modelRelsName; - const modelPartNames = []; - const texturesPartNames = []; - - let modelRels; - const modelParts = {}; - const printTicketParts = {}; - const texturesParts = {}; - - const textDecoder = new TextDecoder(); - - try { - - zip = fflate.unzipSync( new Uint8Array( data ) ); - - } catch ( e ) { - - if ( e instanceof ReferenceError ) { - - console.error( 'THREE.3MFLoader: fflate missing and file is compressed.' ); - return null; - - } - - } - - for ( file in zip ) { - - if ( file.match( /\_rels\/.rels$/ ) ) { - - relsName = file; - - } else if ( file.match( /3D\/_rels\/.*\.model\.rels$/ ) ) { - - modelRelsName = file; - - } else if ( file.match( /^3D\/.*\.model$/ ) ) { - - modelPartNames.push( file ); - - } else if ( file.match( /^3D\/Textures?\/.*/ ) ) { - - texturesPartNames.push( file ); - - } - - } - - // - - const relsView = zip[ relsName ]; - const relsFileText = textDecoder.decode( relsView ); - const rels = parseRelsXml( relsFileText ); - - // - - if ( modelRelsName ) { - - const relsView = zip[ modelRelsName ]; - const relsFileText = textDecoder.decode( relsView ); - modelRels = parseRelsXml( relsFileText ); - - } - - // - - for ( let i = 0; i < modelPartNames.length; i ++ ) { - - const modelPart = modelPartNames[ i ]; - const view = zip[ modelPart ]; - - const fileText = textDecoder.decode( view ); - const xmlData = new DOMParser().parseFromString( fileText, 'application/xml' ); - - if ( xmlData.documentElement.nodeName.toLowerCase() !== 'model' ) { - - console.error( 'THREE.3MFLoader: Error loading 3MF - no 3MF document found: ', modelPart ); - - } - - const modelNode = xmlData.querySelector( 'model' ); - const extensions = {}; - - for ( let i = 0; i < modelNode.attributes.length; i ++ ) { - - const attr = modelNode.attributes[ i ]; - if ( attr.name.match( /^xmlns:(.+)$/ ) ) { - - extensions[ attr.value ] = RegExp.$1; - - } - - } - - const modelData = parseModelNode( modelNode ); - modelData[ 'xml' ] = modelNode; - - if ( 0 < Object.keys( extensions ).length ) { - - modelData[ 'extensions' ] = extensions; - - } - - modelParts[ modelPart ] = modelData; - - } - - // - - for ( let i = 0; i < texturesPartNames.length; i ++ ) { - - const texturesPartName = texturesPartNames[ i ]; - texturesParts[ texturesPartName ] = zip[ texturesPartName ].buffer; - - } - - return { - rels: rels, - modelRels: modelRels, - model: modelParts, - printTicket: printTicketParts, - texture: texturesParts - }; - - } - - function parseRelsXml( relsFileText ) { - - const relationships = []; - - const relsXmlData = new DOMParser().parseFromString( relsFileText, 'application/xml' ); - - const relsNodes = relsXmlData.querySelectorAll( 'Relationship' ); - - for ( let i = 0; i < relsNodes.length; i ++ ) { - - const relsNode = relsNodes[ i ]; - - const relationship = { - target: relsNode.getAttribute( 'Target' ), //required - id: relsNode.getAttribute( 'Id' ), //required - type: relsNode.getAttribute( 'Type' ) //required - }; - - relationships.push( relationship ); - - } - - return relationships; - - } - - function parseMetadataNodes( metadataNodes ) { - - const metadataData = {}; - - for ( let i = 0; i < metadataNodes.length; i ++ ) { - - const metadataNode = metadataNodes[ i ]; - const name = metadataNode.getAttribute( 'name' ); - const validNames = [ - 'Title', - 'Designer', - 'Description', - 'Copyright', - 'LicenseTerms', - 'Rating', - 'CreationDate', - 'ModificationDate' - ]; - - if ( 0 <= validNames.indexOf( name ) ) { - - metadataData[ name ] = metadataNode.textContent; - - } - - } - - return metadataData; - - } - - function parseBasematerialsNode( basematerialsNode ) { - - const basematerialsData = { - id: basematerialsNode.getAttribute( 'id' ), // required - basematerials: [] - }; - - const basematerialNodes = basematerialsNode.querySelectorAll( 'base' ); - - for ( let i = 0; i < basematerialNodes.length; i ++ ) { - - const basematerialNode = basematerialNodes[ i ]; - const basematerialData = parseBasematerialNode( basematerialNode ); - basematerialData.index = i; // the order and count of the material nodes form an implicit 0-based index - basematerialsData.basematerials.push( basematerialData ); - - } - - return basematerialsData; - - } - - function parseTexture2DNode( texture2DNode ) { - - const texture2dData = { - id: texture2DNode.getAttribute( 'id' ), // required - path: texture2DNode.getAttribute( 'path' ), // required - contenttype: texture2DNode.getAttribute( 'contenttype' ), // required - tilestyleu: texture2DNode.getAttribute( 'tilestyleu' ), - tilestylev: texture2DNode.getAttribute( 'tilestylev' ), - filter: texture2DNode.getAttribute( 'filter' ), - }; - - return texture2dData; - - } - - function parseTextures2DGroupNode( texture2DGroupNode ) { - - const texture2DGroupData = { - id: texture2DGroupNode.getAttribute( 'id' ), // required - texid: texture2DGroupNode.getAttribute( 'texid' ), // required - displaypropertiesid: texture2DGroupNode.getAttribute( 'displaypropertiesid' ) - }; - - const tex2coordNodes = texture2DGroupNode.querySelectorAll( 'tex2coord' ); - - const uvs = []; - - for ( let i = 0; i < tex2coordNodes.length; i ++ ) { - - const tex2coordNode = tex2coordNodes[ i ]; - const u = tex2coordNode.getAttribute( 'u' ); - const v = tex2coordNode.getAttribute( 'v' ); - - uvs.push( parseFloat( u ), parseFloat( v ) ); - - } - - texture2DGroupData[ 'uvs' ] = new Float32Array( uvs ); - - return texture2DGroupData; - - } - - function parseColorGroupNode( colorGroupNode ) { - - const colorGroupData = { - id: colorGroupNode.getAttribute( 'id' ), // required - displaypropertiesid: colorGroupNode.getAttribute( 'displaypropertiesid' ) - }; - - const colorNodes = colorGroupNode.querySelectorAll( 'color' ); - - const colors = []; - const colorObject = new Color(); - - for ( let i = 0; i < colorNodes.length; i ++ ) { - - const colorNode = colorNodes[ i ]; - const color = colorNode.getAttribute( 'color' ); - - colorObject.setStyle( color.substring( 0, 7 ), COLOR_SPACE_3MF ); - - colors.push( colorObject.r, colorObject.g, colorObject.b ); - - } - - colorGroupData[ 'colors' ] = new Float32Array( colors ); - - return colorGroupData; - - } - - function parseMetallicDisplaypropertiesNode( metallicDisplaypropetiesNode ) { - - const metallicDisplaypropertiesData = { - id: metallicDisplaypropetiesNode.getAttribute( 'id' ) // required - }; - - const metallicNodes = metallicDisplaypropetiesNode.querySelectorAll( 'pbmetallic' ); - - const metallicData = []; - - for ( let i = 0; i < metallicNodes.length; i ++ ) { - - const metallicNode = metallicNodes[ i ]; - - metallicData.push( { - name: metallicNode.getAttribute( 'name' ), // required - metallicness: parseFloat( metallicNode.getAttribute( 'metallicness' ) ), // required - roughness: parseFloat( metallicNode.getAttribute( 'roughness' ) ) // required - } ); - - } - - metallicDisplaypropertiesData.data = metallicData; - - return metallicDisplaypropertiesData; - - } - - function parseBasematerialNode( basematerialNode ) { - - const basematerialData = {}; - - basematerialData[ 'name' ] = basematerialNode.getAttribute( 'name' ); // required - basematerialData[ 'displaycolor' ] = basematerialNode.getAttribute( 'displaycolor' ); // required - basematerialData[ 'displaypropertiesid' ] = basematerialNode.getAttribute( 'displaypropertiesid' ); - - return basematerialData; - - } - - function parseMeshNode( meshNode ) { - - const meshData = {}; - - const vertices = []; - const vertexNodes = meshNode.querySelectorAll( 'vertices vertex' ); - - for ( let i = 0; i < vertexNodes.length; i ++ ) { - - const vertexNode = vertexNodes[ i ]; - const x = vertexNode.getAttribute( 'x' ); - const y = vertexNode.getAttribute( 'y' ); - const z = vertexNode.getAttribute( 'z' ); - - vertices.push( parseFloat( x ), parseFloat( y ), parseFloat( z ) ); - - } - - meshData[ 'vertices' ] = new Float32Array( vertices ); - - const triangleProperties = []; - const triangles = []; - const triangleNodes = meshNode.querySelectorAll( 'triangles triangle' ); - - for ( let i = 0; i < triangleNodes.length; i ++ ) { - - const triangleNode = triangleNodes[ i ]; - const v1 = triangleNode.getAttribute( 'v1' ); - const v2 = triangleNode.getAttribute( 'v2' ); - const v3 = triangleNode.getAttribute( 'v3' ); - const p1 = triangleNode.getAttribute( 'p1' ); - const p2 = triangleNode.getAttribute( 'p2' ); - const p3 = triangleNode.getAttribute( 'p3' ); - const pid = triangleNode.getAttribute( 'pid' ); - - const triangleProperty = {}; - - triangleProperty[ 'v1' ] = parseInt( v1, 10 ); - triangleProperty[ 'v2' ] = parseInt( v2, 10 ); - triangleProperty[ 'v3' ] = parseInt( v3, 10 ); - - triangles.push( triangleProperty[ 'v1' ], triangleProperty[ 'v2' ], triangleProperty[ 'v3' ] ); - - // optional - - if ( p1 ) { - - triangleProperty[ 'p1' ] = parseInt( p1, 10 ); - - } - - if ( p2 ) { - - triangleProperty[ 'p2' ] = parseInt( p2, 10 ); - - } - - if ( p3 ) { - - triangleProperty[ 'p3' ] = parseInt( p3, 10 ); - - } - - if ( pid ) { - - triangleProperty[ 'pid' ] = pid; - - } - - if ( 0 < Object.keys( triangleProperty ).length ) { - - triangleProperties.push( triangleProperty ); - - } - - } - - meshData[ 'triangleProperties' ] = triangleProperties; - meshData[ 'triangles' ] = new Uint32Array( triangles ); - - return meshData; - - } - - function parseComponentsNode( componentsNode ) { - - const components = []; - - const componentNodes = componentsNode.querySelectorAll( 'component' ); - - for ( let i = 0; i < componentNodes.length; i ++ ) { - - const componentNode = componentNodes[ i ]; - const componentData = parseComponentNode( componentNode ); - components.push( componentData ); - - } - - return components; - - } - - function parseComponentNode( componentNode ) { - - const componentData = {}; - - componentData[ 'objectId' ] = componentNode.getAttribute( 'objectid' ); // required - - const transform = componentNode.getAttribute( 'transform' ); - - if ( transform ) { - - componentData[ 'transform' ] = parseTransform( transform ); - - } - - return componentData; - - } - - function parseTransform( transform ) { - - const t = []; - transform.split( ' ' ).forEach( function ( s ) { - - t.push( parseFloat( s ) ); - - } ); - - const matrix = new Matrix4(); - matrix.set( - t[ 0 ], t[ 3 ], t[ 6 ], t[ 9 ], - t[ 1 ], t[ 4 ], t[ 7 ], t[ 10 ], - t[ 2 ], t[ 5 ], t[ 8 ], t[ 11 ], - 0.0, 0.0, 0.0, 1.0 - ); - - return matrix; - - } - - function parseObjectNode( objectNode ) { - - const objectData = { - type: objectNode.getAttribute( 'type' ) - }; - - const id = objectNode.getAttribute( 'id' ); - - if ( id ) { - - objectData[ 'id' ] = id; - - } - - const pid = objectNode.getAttribute( 'pid' ); - - if ( pid ) { - - objectData[ 'pid' ] = pid; - - } - - const pindex = objectNode.getAttribute( 'pindex' ); - - if ( pindex ) { - - objectData[ 'pindex' ] = pindex; - - } - - const thumbnail = objectNode.getAttribute( 'thumbnail' ); - - if ( thumbnail ) { - - objectData[ 'thumbnail' ] = thumbnail; - - } - - const partnumber = objectNode.getAttribute( 'partnumber' ); - - if ( partnumber ) { - - objectData[ 'partnumber' ] = partnumber; - - } - - const name = objectNode.getAttribute( 'name' ); - - if ( name ) { - - objectData[ 'name' ] = name; - - } - - const meshNode = objectNode.querySelector( 'mesh' ); - - if ( meshNode ) { - - objectData[ 'mesh' ] = parseMeshNode( meshNode ); - - } - - const componentsNode = objectNode.querySelector( 'components' ); - - if ( componentsNode ) { - - objectData[ 'components' ] = parseComponentsNode( componentsNode ); - - } - - return objectData; - - } - - function parseResourcesNode( resourcesNode ) { - - const resourcesData = {}; - - resourcesData[ 'basematerials' ] = {}; - const basematerialsNodes = resourcesNode.querySelectorAll( 'basematerials' ); - - for ( let i = 0; i < basematerialsNodes.length; i ++ ) { - - const basematerialsNode = basematerialsNodes[ i ]; - const basematerialsData = parseBasematerialsNode( basematerialsNode ); - resourcesData[ 'basematerials' ][ basematerialsData[ 'id' ] ] = basematerialsData; - - } - - // - - resourcesData[ 'texture2d' ] = {}; - const textures2DNodes = resourcesNode.querySelectorAll( 'texture2d' ); - - for ( let i = 0; i < textures2DNodes.length; i ++ ) { - - const textures2DNode = textures2DNodes[ i ]; - const texture2DData = parseTexture2DNode( textures2DNode ); - resourcesData[ 'texture2d' ][ texture2DData[ 'id' ] ] = texture2DData; - - } - - // - - resourcesData[ 'colorgroup' ] = {}; - const colorGroupNodes = resourcesNode.querySelectorAll( 'colorgroup' ); - - for ( let i = 0; i < colorGroupNodes.length; i ++ ) { - - const colorGroupNode = colorGroupNodes[ i ]; - const colorGroupData = parseColorGroupNode( colorGroupNode ); - resourcesData[ 'colorgroup' ][ colorGroupData[ 'id' ] ] = colorGroupData; - - } - - // - - resourcesData[ 'pbmetallicdisplayproperties' ] = {}; - const pbmetallicdisplaypropertiesNodes = resourcesNode.querySelectorAll( 'pbmetallicdisplayproperties' ); - - for ( let i = 0; i < pbmetallicdisplaypropertiesNodes.length; i ++ ) { - - const pbmetallicdisplaypropertiesNode = pbmetallicdisplaypropertiesNodes[ i ]; - const pbmetallicdisplaypropertiesData = parseMetallicDisplaypropertiesNode( pbmetallicdisplaypropertiesNode ); - resourcesData[ 'pbmetallicdisplayproperties' ][ pbmetallicdisplaypropertiesData[ 'id' ] ] = pbmetallicdisplaypropertiesData; - - } - - // - - resourcesData[ 'texture2dgroup' ] = {}; - const textures2DGroupNodes = resourcesNode.querySelectorAll( 'texture2dgroup' ); - - for ( let i = 0; i < textures2DGroupNodes.length; i ++ ) { - - const textures2DGroupNode = textures2DGroupNodes[ i ]; - const textures2DGroupData = parseTextures2DGroupNode( textures2DGroupNode ); - resourcesData[ 'texture2dgroup' ][ textures2DGroupData[ 'id' ] ] = textures2DGroupData; - - } - - // - - resourcesData[ 'object' ] = {}; - const objectNodes = resourcesNode.querySelectorAll( 'object' ); - - for ( let i = 0; i < objectNodes.length; i ++ ) { - - const objectNode = objectNodes[ i ]; - const objectData = parseObjectNode( objectNode ); - resourcesData[ 'object' ][ objectData[ 'id' ] ] = objectData; - - } - - return resourcesData; - - } - - function parseBuildNode( buildNode ) { - - const buildData = []; - const itemNodes = buildNode.querySelectorAll( 'item' ); - - for ( let i = 0; i < itemNodes.length; i ++ ) { - - const itemNode = itemNodes[ i ]; - const buildItem = { - objectId: itemNode.getAttribute( 'objectid' ) - }; - const transform = itemNode.getAttribute( 'transform' ); - - if ( transform ) { - - buildItem[ 'transform' ] = parseTransform( transform ); - - } - - buildData.push( buildItem ); - - } - - return buildData; - - } - - function parseModelNode( modelNode ) { - - const modelData = { unit: modelNode.getAttribute( 'unit' ) || 'millimeter' }; - const metadataNodes = modelNode.querySelectorAll( 'metadata' ); - - if ( metadataNodes ) { - - modelData[ 'metadata' ] = parseMetadataNodes( metadataNodes ); - - } - - const resourcesNode = modelNode.querySelector( 'resources' ); - - if ( resourcesNode ) { - - modelData[ 'resources' ] = parseResourcesNode( resourcesNode ); - - } - - const buildNode = modelNode.querySelector( 'build' ); - - if ( buildNode ) { - - modelData[ 'build' ] = parseBuildNode( buildNode ); - - } - - return modelData; - - } - - function buildTexture( texture2dgroup, objects, modelData, textureData ) { - - const texid = texture2dgroup.texid; - const texture2ds = modelData.resources.texture2d; - const texture2d = texture2ds[ texid ]; - - if ( texture2d ) { - - const data = textureData[ texture2d.path ]; - const type = texture2d.contenttype; - - const blob = new Blob( [ data ], { type: type } ); - const sourceURI = URL.createObjectURL( blob ); - - const texture = textureLoader.load( sourceURI, function () { - - URL.revokeObjectURL( sourceURI ); - - } ); - - texture.colorSpace = COLOR_SPACE_3MF; - - // texture parameters - - switch ( texture2d.tilestyleu ) { - - case 'wrap': - texture.wrapS = RepeatWrapping; - break; - - case 'mirror': - texture.wrapS = MirroredRepeatWrapping; - break; - - case 'none': - case 'clamp': - texture.wrapS = ClampToEdgeWrapping; - break; - - default: - texture.wrapS = RepeatWrapping; - - } - - switch ( texture2d.tilestylev ) { - - case 'wrap': - texture.wrapT = RepeatWrapping; - break; - - case 'mirror': - texture.wrapT = MirroredRepeatWrapping; - break; - - case 'none': - case 'clamp': - texture.wrapT = ClampToEdgeWrapping; - break; - - default: - texture.wrapT = RepeatWrapping; - - } - - switch ( texture2d.filter ) { - - case 'auto': - texture.magFilter = LinearFilter; - texture.minFilter = LinearMipmapLinearFilter; - break; - - case 'linear': - texture.magFilter = LinearFilter; - texture.minFilter = LinearFilter; - break; - - case 'nearest': - texture.magFilter = NearestFilter; - texture.minFilter = NearestFilter; - break; - - default: - texture.magFilter = LinearFilter; - texture.minFilter = LinearMipmapLinearFilter; - - } - - return texture; - - } else { - - return null; - - } - - } - - function buildBasematerialsMeshes( basematerials, triangleProperties, meshData, objects, modelData, textureData, objectData ) { - - const objectPindex = objectData.pindex; - - const materialMap = {}; - - for ( let i = 0, l = triangleProperties.length; i < l; i ++ ) { - - const triangleProperty = triangleProperties[ i ]; - const pindex = ( triangleProperty.p1 !== undefined ) ? triangleProperty.p1 : objectPindex; - - if ( materialMap[ pindex ] === undefined ) materialMap[ pindex ] = []; - - materialMap[ pindex ].push( triangleProperty ); - - } - - // - - const keys = Object.keys( materialMap ); - const meshes = []; - - for ( let i = 0, l = keys.length; i < l; i ++ ) { - - const materialIndex = keys[ i ]; - const trianglePropertiesProps = materialMap[ materialIndex ]; - const basematerialData = basematerials.basematerials[ materialIndex ]; - const material = getBuild( basematerialData, objects, modelData, textureData, objectData, buildBasematerial ); - - // - - const geometry = new BufferGeometry(); - - const positionData = []; - - const vertices = meshData.vertices; - - for ( let j = 0, jl = trianglePropertiesProps.length; j < jl; j ++ ) { - - const triangleProperty = trianglePropertiesProps[ j ]; - - positionData.push( vertices[ ( triangleProperty.v1 * 3 ) + 0 ] ); - positionData.push( vertices[ ( triangleProperty.v1 * 3 ) + 1 ] ); - positionData.push( vertices[ ( triangleProperty.v1 * 3 ) + 2 ] ); - - positionData.push( vertices[ ( triangleProperty.v2 * 3 ) + 0 ] ); - positionData.push( vertices[ ( triangleProperty.v2 * 3 ) + 1 ] ); - positionData.push( vertices[ ( triangleProperty.v2 * 3 ) + 2 ] ); - - positionData.push( vertices[ ( triangleProperty.v3 * 3 ) + 0 ] ); - positionData.push( vertices[ ( triangleProperty.v3 * 3 ) + 1 ] ); - positionData.push( vertices[ ( triangleProperty.v3 * 3 ) + 2 ] ); - - - } - - geometry.setAttribute( 'position', new Float32BufferAttribute( positionData, 3 ) ); - - // - - const mesh = new Mesh( geometry, material ); - meshes.push( mesh ); - - } - - return meshes; - - } - - function buildTexturedMesh( texture2dgroup, triangleProperties, meshData, objects, modelData, textureData, objectData ) { - - // geometry - - const geometry = new BufferGeometry(); - - const positionData = []; - const uvData = []; - - const vertices = meshData.vertices; - const uvs = texture2dgroup.uvs; - - for ( let i = 0, l = triangleProperties.length; i < l; i ++ ) { - - const triangleProperty = triangleProperties[ i ]; - - positionData.push( vertices[ ( triangleProperty.v1 * 3 ) + 0 ] ); - positionData.push( vertices[ ( triangleProperty.v1 * 3 ) + 1 ] ); - positionData.push( vertices[ ( triangleProperty.v1 * 3 ) + 2 ] ); - - positionData.push( vertices[ ( triangleProperty.v2 * 3 ) + 0 ] ); - positionData.push( vertices[ ( triangleProperty.v2 * 3 ) + 1 ] ); - positionData.push( vertices[ ( triangleProperty.v2 * 3 ) + 2 ] ); - - positionData.push( vertices[ ( triangleProperty.v3 * 3 ) + 0 ] ); - positionData.push( vertices[ ( triangleProperty.v3 * 3 ) + 1 ] ); - positionData.push( vertices[ ( triangleProperty.v3 * 3 ) + 2 ] ); - - // - - uvData.push( uvs[ ( triangleProperty.p1 * 2 ) + 0 ] ); - uvData.push( uvs[ ( triangleProperty.p1 * 2 ) + 1 ] ); - - uvData.push( uvs[ ( triangleProperty.p2 * 2 ) + 0 ] ); - uvData.push( uvs[ ( triangleProperty.p2 * 2 ) + 1 ] ); - - uvData.push( uvs[ ( triangleProperty.p3 * 2 ) + 0 ] ); - uvData.push( uvs[ ( triangleProperty.p3 * 2 ) + 1 ] ); - - } - - geometry.setAttribute( 'position', new Float32BufferAttribute( positionData, 3 ) ); - geometry.setAttribute( 'uv', new Float32BufferAttribute( uvData, 2 ) ); - - // material - - const texture = getBuild( texture2dgroup, objects, modelData, textureData, objectData, buildTexture ); - - const material = new MeshPhongMaterial( { map: texture, flatShading: true } ); - - // mesh - - const mesh = new Mesh( geometry, material ); - - return mesh; - - } - - function buildVertexColorMesh( colorgroup, triangleProperties, meshData, objectData ) { - - // geometry - - const geometry = new BufferGeometry(); - - const positionData = []; - const colorData = []; - - const vertices = meshData.vertices; - const colors = colorgroup.colors; - - for ( let i = 0, l = triangleProperties.length; i < l; i ++ ) { - - const triangleProperty = triangleProperties[ i ]; - - const v1 = triangleProperty.v1; - const v2 = triangleProperty.v2; - const v3 = triangleProperty.v3; - - positionData.push( vertices[ ( v1 * 3 ) + 0 ] ); - positionData.push( vertices[ ( v1 * 3 ) + 1 ] ); - positionData.push( vertices[ ( v1 * 3 ) + 2 ] ); - - positionData.push( vertices[ ( v2 * 3 ) + 0 ] ); - positionData.push( vertices[ ( v2 * 3 ) + 1 ] ); - positionData.push( vertices[ ( v2 * 3 ) + 2 ] ); - - positionData.push( vertices[ ( v3 * 3 ) + 0 ] ); - positionData.push( vertices[ ( v3 * 3 ) + 1 ] ); - positionData.push( vertices[ ( v3 * 3 ) + 2 ] ); - - // - - const p1 = ( triangleProperty.p1 !== undefined ) ? triangleProperty.p1 : objectData.pindex; - const p2 = ( triangleProperty.p2 !== undefined ) ? triangleProperty.p2 : p1; - const p3 = ( triangleProperty.p3 !== undefined ) ? triangleProperty.p3 : p1; - - colorData.push( colors[ ( p1 * 3 ) + 0 ] ); - colorData.push( colors[ ( p1 * 3 ) + 1 ] ); - colorData.push( colors[ ( p1 * 3 ) + 2 ] ); - - colorData.push( colors[ ( p2 * 3 ) + 0 ] ); - colorData.push( colors[ ( p2 * 3 ) + 1 ] ); - colorData.push( colors[ ( p2 * 3 ) + 2 ] ); - - colorData.push( colors[ ( p3 * 3 ) + 0 ] ); - colorData.push( colors[ ( p3 * 3 ) + 1 ] ); - colorData.push( colors[ ( p3 * 3 ) + 2 ] ); - - } - - geometry.setAttribute( 'position', new Float32BufferAttribute( positionData, 3 ) ); - geometry.setAttribute( 'color', new Float32BufferAttribute( colorData, 3 ) ); - - // material - - const material = new MeshPhongMaterial( { vertexColors: true, flatShading: true } ); - - // mesh - - const mesh = new Mesh( geometry, material ); - - return mesh; - - } - - function buildDefaultMesh( meshData ) { - - const geometry = new BufferGeometry(); - geometry.setIndex( new BufferAttribute( meshData[ 'triangles' ], 1 ) ); - geometry.setAttribute( 'position', new BufferAttribute( meshData[ 'vertices' ], 3 ) ); - - const material = new MeshPhongMaterial( { - name: Loader.DEFAULT_MATERIAL_NAME, - color: 0xffffff, - flatShading: true - } ); - - const mesh = new Mesh( geometry, material ); - - return mesh; - - } - - function buildMeshes( resourceMap, meshData, objects, modelData, textureData, objectData ) { - - const keys = Object.keys( resourceMap ); - const meshes = []; - - for ( let i = 0, il = keys.length; i < il; i ++ ) { - - const resourceId = keys[ i ]; - const triangleProperties = resourceMap[ resourceId ]; - const resourceType = getResourceType( resourceId, modelData ); - - switch ( resourceType ) { - - case 'material': - const basematerials = modelData.resources.basematerials[ resourceId ]; - const newMeshes = buildBasematerialsMeshes( basematerials, triangleProperties, meshData, objects, modelData, textureData, objectData ); - - for ( let j = 0, jl = newMeshes.length; j < jl; j ++ ) { - - meshes.push( newMeshes[ j ] ); - - } - - break; - - case 'texture': - const texture2dgroup = modelData.resources.texture2dgroup[ resourceId ]; - meshes.push( buildTexturedMesh( texture2dgroup, triangleProperties, meshData, objects, modelData, textureData, objectData ) ); - break; - - case 'vertexColors': - const colorgroup = modelData.resources.colorgroup[ resourceId ]; - meshes.push( buildVertexColorMesh( colorgroup, triangleProperties, meshData, objectData ) ); - break; - - case 'default': - meshes.push( buildDefaultMesh( meshData ) ); - break; - - default: - console.error( 'THREE.3MFLoader: Unsupported resource type.' ); - - } - - } - - if ( objectData.name ) { - - for ( let i = 0; i < meshes.length; i ++ ) { - - meshes[ i ].name = objectData.name; - - } - - } - - return meshes; - - } - - function getResourceType( pid, modelData ) { - - if ( modelData.resources.texture2dgroup[ pid ] !== undefined ) { - - return 'texture'; - - } else if ( modelData.resources.basematerials[ pid ] !== undefined ) { - - return 'material'; - - } else if ( modelData.resources.colorgroup[ pid ] !== undefined ) { - - return 'vertexColors'; - - } else if ( pid === 'default' ) { - - return 'default'; - - } else { - - return undefined; - - } - - } - - function analyzeObject( meshData, objectData ) { - - const resourceMap = {}; - - const triangleProperties = meshData[ 'triangleProperties' ]; - - const objectPid = objectData.pid; - - for ( let i = 0, l = triangleProperties.length; i < l; i ++ ) { - - const triangleProperty = triangleProperties[ i ]; - let pid = ( triangleProperty.pid !== undefined ) ? triangleProperty.pid : objectPid; - - if ( pid === undefined ) pid = 'default'; - - if ( resourceMap[ pid ] === undefined ) resourceMap[ pid ] = []; - - resourceMap[ pid ].push( triangleProperty ); - - } - - return resourceMap; - - } - - function buildGroup( meshData, objects, modelData, textureData, objectData ) { - - const group = new Group(); - - const resourceMap = analyzeObject( meshData, objectData ); - const meshes = buildMeshes( resourceMap, meshData, objects, modelData, textureData, objectData ); - - for ( let i = 0, l = meshes.length; i < l; i ++ ) { - - group.add( meshes[ i ] ); - - } - - return group; - - } - - function applyExtensions( extensions, meshData, modelXml ) { - - if ( ! extensions ) { - - return; - - } - - const availableExtensions = []; - const keys = Object.keys( extensions ); - - for ( let i = 0; i < keys.length; i ++ ) { - - const ns = keys[ i ]; - - for ( let j = 0; j < scope.availableExtensions.length; j ++ ) { - - const extension = scope.availableExtensions[ j ]; - - if ( extension.ns === ns ) { - - availableExtensions.push( extension ); - - } - - } - - } - - for ( let i = 0; i < availableExtensions.length; i ++ ) { - - const extension = availableExtensions[ i ]; - extension.apply( modelXml, extensions[ extension[ 'ns' ] ], meshData ); - - } - - } - - function getBuild( data, objects, modelData, textureData, objectData, builder ) { - - if ( data.build !== undefined ) return data.build; - - data.build = builder( data, objects, modelData, textureData, objectData ); - - return data.build; - - } - - function buildBasematerial( materialData, objects, modelData ) { - - let material; - - const displaypropertiesid = materialData.displaypropertiesid; - const pbmetallicdisplayproperties = modelData.resources.pbmetallicdisplayproperties; - - if ( displaypropertiesid !== null && pbmetallicdisplayproperties[ displaypropertiesid ] !== undefined ) { - - // metallic display property, use StandardMaterial - - const pbmetallicdisplayproperty = pbmetallicdisplayproperties[ displaypropertiesid ]; - const metallicData = pbmetallicdisplayproperty.data[ materialData.index ]; - - material = new MeshStandardMaterial( { flatShading: true, roughness: metallicData.roughness, metalness: metallicData.metallicness } ); - - } else { - - // otherwise use PhongMaterial - - material = new MeshPhongMaterial( { flatShading: true } ); - - } - - material.name = materialData.name; - - // displaycolor MUST be specified with a value of a 6 or 8 digit hexadecimal number, e.g. "#RRGGBB" or "#RRGGBBAA" - - const displaycolor = materialData.displaycolor; - - const color = displaycolor.substring( 0, 7 ); - material.color.setStyle( color, COLOR_SPACE_3MF ); - - // process alpha if set - - if ( displaycolor.length === 9 ) { - - material.opacity = parseInt( displaycolor.charAt( 7 ) + displaycolor.charAt( 8 ), 16 ) / 255; - - } - - return material; - - } - - function buildComposite( compositeData, objects, modelData, textureData ) { - - const composite = new Group(); - - for ( let j = 0; j < compositeData.length; j ++ ) { - - const component = compositeData[ j ]; - let build = objects[ component.objectId ]; - - if ( build === undefined ) { - - buildObject( component.objectId, objects, modelData, textureData ); - build = objects[ component.objectId ]; - - } - - const object3D = build.clone(); - - // apply component transform - - const transform = component.transform; - - if ( transform ) { - - object3D.applyMatrix4( transform ); - - } - - composite.add( object3D ); - - } - - return composite; - - } - - function buildObject( objectId, objects, modelData, textureData ) { - - const objectData = modelData[ 'resources' ][ 'object' ][ objectId ]; - - if ( objectData[ 'mesh' ] ) { - - const meshData = objectData[ 'mesh' ]; - - const extensions = modelData[ 'extensions' ]; - const modelXml = modelData[ 'xml' ]; - - applyExtensions( extensions, meshData, modelXml ); - - objects[ objectData.id ] = getBuild( meshData, objects, modelData, textureData, objectData, buildGroup ); - - } else { - - const compositeData = objectData[ 'components' ]; - - objects[ objectData.id ] = getBuild( compositeData, objects, modelData, textureData, objectData, buildComposite ); - - } - - if ( objectData.name ) { - - objects[ objectData.id ].name = objectData.name; - - } - - } - - function buildObjects( data3mf ) { - - const modelsData = data3mf.model; - const modelRels = data3mf.modelRels; - const objects = {}; - const modelsKeys = Object.keys( modelsData ); - const textureData = {}; - - // evaluate model relationships to textures - - if ( modelRels ) { - - for ( let i = 0, l = modelRels.length; i < l; i ++ ) { - - const modelRel = modelRels[ i ]; - const textureKey = modelRel.target.substring( 1 ); - - if ( data3mf.texture[ textureKey ] ) { - - textureData[ modelRel.target ] = data3mf.texture[ textureKey ]; - - } - - } - - } - - // start build - - for ( let i = 0; i < modelsKeys.length; i ++ ) { - - const modelsKey = modelsKeys[ i ]; - const modelData = modelsData[ modelsKey ]; - - const objectIds = Object.keys( modelData[ 'resources' ][ 'object' ] ); - - for ( let j = 0; j < objectIds.length; j ++ ) { - - const objectId = objectIds[ j ]; - - buildObject( objectId, objects, modelData, textureData ); - - } - - } - - return objects; - - } - - function fetch3DModelPart( rels ) { - - for ( let i = 0; i < rels.length; i ++ ) { - - const rel = rels[ i ]; - const extension = rel.target.split( '.' ).pop(); - - if ( extension.toLowerCase() === 'model' ) return rel; - - } - - } - - function build( objects, data3mf ) { - - const group = new Group(); - - const relationship = fetch3DModelPart( data3mf[ 'rels' ] ); - const buildData = data3mf.model[ relationship[ 'target' ].substring( 1 ) ][ 'build' ]; - - for ( let i = 0; i < buildData.length; i ++ ) { - - const buildItem = buildData[ i ]; - const object3D = objects[ buildItem[ 'objectId' ] ].clone(); - - // apply transform - - const transform = buildItem[ 'transform' ]; - - if ( transform ) { - - object3D.applyMatrix4( transform ); - - } - - group.add( object3D ); - - } - - return group; - - } - - const data3mf = loadDocument( data ); - const objects = buildObjects( data3mf ); - - return build( objects, data3mf ); - - } - - addExtension( extension ) { - - this.availableExtensions.push( extension ); - - } - -} - -export { ThreeMFLoader }; diff --git a/three/addons/loaders/AMFLoader.js b/three/addons/loaders/AMFLoader.js deleted file mode 100644 index 6483f3b..0000000 --- a/three/addons/loaders/AMFLoader.js +++ /dev/null @@ -1,521 +0,0 @@ -import { - BufferGeometry, - Color, - FileLoader, - Float32BufferAttribute, - Group, - Loader, - Mesh, - MeshPhongMaterial -} from 'three'; -import * as fflate from '../libs/fflate.module.js'; - -/** - * Description: Early release of an AMF Loader following the pattern of the - * example loaders in the three.js project. - * - * Usage: - * const loader = new AMFLoader(); - * loader.load('/path/to/project.amf', function(objecttree) { - * scene.add(objecttree); - * }); - * - * Materials now supported, material colors supported - * Zip support, requires fflate - * No constellation support (yet)! - * - */ - -class AMFLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( data ) { - - function loadDocument( data ) { - - let view = new DataView( data ); - const magic = String.fromCharCode( view.getUint8( 0 ), view.getUint8( 1 ) ); - - if ( magic === 'PK' ) { - - let zip = null; - let file = null; - - console.log( 'THREE.AMFLoader: Loading Zip' ); - - try { - - zip = fflate.unzipSync( new Uint8Array( data ) ); - - } catch ( e ) { - - if ( e instanceof ReferenceError ) { - - console.log( 'THREE.AMFLoader: fflate missing and file is compressed.' ); - return null; - - } - - } - - for ( file in zip ) { - - if ( file.toLowerCase().slice( - 4 ) === '.amf' ) { - - break; - - } - - } - - console.log( 'THREE.AMFLoader: Trying to load file asset: ' + file ); - view = new DataView( zip[ file ].buffer ); - - } - - const fileText = new TextDecoder().decode( view ); - const xmlData = new DOMParser().parseFromString( fileText, 'application/xml' ); - - if ( xmlData.documentElement.nodeName.toLowerCase() !== 'amf' ) { - - console.log( 'THREE.AMFLoader: Error loading AMF - no AMF document found.' ); - return null; - - } - - return xmlData; - - } - - function loadDocumentScale( node ) { - - let scale = 1.0; - let unit = 'millimeter'; - - if ( node.documentElement.attributes.unit !== undefined ) { - - unit = node.documentElement.attributes.unit.value.toLowerCase(); - - } - - const scaleUnits = { - millimeter: 1.0, - inch: 25.4, - feet: 304.8, - meter: 1000.0, - micron: 0.001 - }; - - if ( scaleUnits[ unit ] !== undefined ) { - - scale = scaleUnits[ unit ]; - - } - - console.log( 'THREE.AMFLoader: Unit scale: ' + scale ); - return scale; - - } - - function loadMaterials( node ) { - - let matName = 'AMF Material'; - const matId = node.attributes.id.textContent; - let color = { r: 1.0, g: 1.0, b: 1.0, a: 1.0 }; - - let loadedMaterial = null; - - for ( let i = 0; i < node.childNodes.length; i ++ ) { - - const matChildEl = node.childNodes[ i ]; - - if ( matChildEl.nodeName === 'metadata' && matChildEl.attributes.type !== undefined ) { - - if ( matChildEl.attributes.type.value === 'name' ) { - - matName = matChildEl.textContent; - - } - - } else if ( matChildEl.nodeName === 'color' ) { - - color = loadColor( matChildEl ); - - } - - } - - loadedMaterial = new MeshPhongMaterial( { - flatShading: true, - color: new Color( color.r, color.g, color.b ), - name: matName - } ); - - if ( color.a !== 1.0 ) { - - loadedMaterial.transparent = true; - loadedMaterial.opacity = color.a; - - } - - return { id: matId, material: loadedMaterial }; - - } - - function loadColor( node ) { - - const color = { r: 1.0, g: 1.0, b: 1.0, a: 1.0 }; - - for ( let i = 0; i < node.childNodes.length; i ++ ) { - - const matColor = node.childNodes[ i ]; - - if ( matColor.nodeName === 'r' ) { - - color.r = matColor.textContent; - - } else if ( matColor.nodeName === 'g' ) { - - color.g = matColor.textContent; - - } else if ( matColor.nodeName === 'b' ) { - - color.b = matColor.textContent; - - } else if ( matColor.nodeName === 'a' ) { - - color.a = matColor.textContent; - - } - - } - - return color; - - } - - function loadMeshVolume( node ) { - - const volume = { name: '', triangles: [], materialid: null }; - - let currVolumeNode = node.firstElementChild; - - if ( node.attributes.materialid !== undefined ) { - - volume.materialId = node.attributes.materialid.nodeValue; - - } - - while ( currVolumeNode ) { - - if ( currVolumeNode.nodeName === 'metadata' ) { - - if ( currVolumeNode.attributes.type !== undefined ) { - - if ( currVolumeNode.attributes.type.value === 'name' ) { - - volume.name = currVolumeNode.textContent; - - } - - } - - } else if ( currVolumeNode.nodeName === 'triangle' ) { - - const v1 = currVolumeNode.getElementsByTagName( 'v1' )[ 0 ].textContent; - const v2 = currVolumeNode.getElementsByTagName( 'v2' )[ 0 ].textContent; - const v3 = currVolumeNode.getElementsByTagName( 'v3' )[ 0 ].textContent; - - volume.triangles.push( v1, v2, v3 ); - - } - - currVolumeNode = currVolumeNode.nextElementSibling; - - } - - return volume; - - } - - function loadMeshVertices( node ) { - - const vertArray = []; - const normalArray = []; - let currVerticesNode = node.firstElementChild; - - while ( currVerticesNode ) { - - if ( currVerticesNode.nodeName === 'vertex' ) { - - let vNode = currVerticesNode.firstElementChild; - - while ( vNode ) { - - if ( vNode.nodeName === 'coordinates' ) { - - const x = vNode.getElementsByTagName( 'x' )[ 0 ].textContent; - const y = vNode.getElementsByTagName( 'y' )[ 0 ].textContent; - const z = vNode.getElementsByTagName( 'z' )[ 0 ].textContent; - - vertArray.push( x, y, z ); - - } else if ( vNode.nodeName === 'normal' ) { - - const nx = vNode.getElementsByTagName( 'nx' )[ 0 ].textContent; - const ny = vNode.getElementsByTagName( 'ny' )[ 0 ].textContent; - const nz = vNode.getElementsByTagName( 'nz' )[ 0 ].textContent; - - normalArray.push( nx, ny, nz ); - - } - - vNode = vNode.nextElementSibling; - - } - - } - - currVerticesNode = currVerticesNode.nextElementSibling; - - } - - return { 'vertices': vertArray, 'normals': normalArray }; - - } - - function loadObject( node ) { - - const objId = node.attributes.id.textContent; - const loadedObject = { name: 'amfobject', meshes: [] }; - let currColor = null; - let currObjNode = node.firstElementChild; - - while ( currObjNode ) { - - if ( currObjNode.nodeName === 'metadata' ) { - - if ( currObjNode.attributes.type !== undefined ) { - - if ( currObjNode.attributes.type.value === 'name' ) { - - loadedObject.name = currObjNode.textContent; - - } - - } - - } else if ( currObjNode.nodeName === 'color' ) { - - currColor = loadColor( currObjNode ); - - } else if ( currObjNode.nodeName === 'mesh' ) { - - let currMeshNode = currObjNode.firstElementChild; - const mesh = { vertices: [], normals: [], volumes: [], color: currColor }; - - while ( currMeshNode ) { - - if ( currMeshNode.nodeName === 'vertices' ) { - - const loadedVertices = loadMeshVertices( currMeshNode ); - - mesh.normals = mesh.normals.concat( loadedVertices.normals ); - mesh.vertices = mesh.vertices.concat( loadedVertices.vertices ); - - } else if ( currMeshNode.nodeName === 'volume' ) { - - mesh.volumes.push( loadMeshVolume( currMeshNode ) ); - - } - - currMeshNode = currMeshNode.nextElementSibling; - - } - - loadedObject.meshes.push( mesh ); - - } - - currObjNode = currObjNode.nextElementSibling; - - } - - return { 'id': objId, 'obj': loadedObject }; - - } - - const xmlData = loadDocument( data ); - let amfName = ''; - let amfAuthor = ''; - const amfScale = loadDocumentScale( xmlData ); - const amfMaterials = {}; - const amfObjects = {}; - const childNodes = xmlData.documentElement.childNodes; - - let i, j; - - for ( i = 0; i < childNodes.length; i ++ ) { - - const child = childNodes[ i ]; - - if ( child.nodeName === 'metadata' ) { - - if ( child.attributes.type !== undefined ) { - - if ( child.attributes.type.value === 'name' ) { - - amfName = child.textContent; - - } else if ( child.attributes.type.value === 'author' ) { - - amfAuthor = child.textContent; - - } - - } - - } else if ( child.nodeName === 'material' ) { - - const loadedMaterial = loadMaterials( child ); - - amfMaterials[ loadedMaterial.id ] = loadedMaterial.material; - - } else if ( child.nodeName === 'object' ) { - - const loadedObject = loadObject( child ); - - amfObjects[ loadedObject.id ] = loadedObject.obj; - - } - - } - - const sceneObject = new Group(); - const defaultMaterial = new MeshPhongMaterial( { - name: Loader.DEFAULT_MATERIAL_NAME, - color: 0xaaaaff, - flatShading: true - } ); - - sceneObject.name = amfName; - sceneObject.userData.author = amfAuthor; - sceneObject.userData.loader = 'AMF'; - - for ( const id in amfObjects ) { - - const part = amfObjects[ id ]; - const meshes = part.meshes; - const newObject = new Group(); - newObject.name = part.name || ''; - - for ( i = 0; i < meshes.length; i ++ ) { - - let objDefaultMaterial = defaultMaterial; - const mesh = meshes[ i ]; - const vertices = new Float32BufferAttribute( mesh.vertices, 3 ); - let normals = null; - - if ( mesh.normals.length ) { - - normals = new Float32BufferAttribute( mesh.normals, 3 ); - - } - - if ( mesh.color ) { - - const color = mesh.color; - - objDefaultMaterial = defaultMaterial.clone(); - objDefaultMaterial.color = new Color( color.r, color.g, color.b ); - - if ( color.a !== 1.0 ) { - - objDefaultMaterial.transparent = true; - objDefaultMaterial.opacity = color.a; - - } - - } - - const volumes = mesh.volumes; - - for ( j = 0; j < volumes.length; j ++ ) { - - const volume = volumes[ j ]; - const newGeometry = new BufferGeometry(); - let material = objDefaultMaterial; - - newGeometry.setIndex( volume.triangles ); - newGeometry.setAttribute( 'position', vertices.clone() ); - - if ( normals ) { - - newGeometry.setAttribute( 'normal', normals.clone() ); - - } - - if ( amfMaterials[ volume.materialId ] !== undefined ) { - - material = amfMaterials[ volume.materialId ]; - - } - - newGeometry.scale( amfScale, amfScale, amfScale ); - newObject.add( new Mesh( newGeometry, material.clone() ) ); - - } - - } - - sceneObject.add( newObject ); - - } - - return sceneObject; - - } - -} - -export { AMFLoader }; diff --git a/three/addons/loaders/BVHLoader.js b/three/addons/loaders/BVHLoader.js deleted file mode 100644 index dde85a9..0000000 --- a/three/addons/loaders/BVHLoader.js +++ /dev/null @@ -1,437 +0,0 @@ -import { - AnimationClip, - Bone, - FileLoader, - Loader, - Quaternion, - QuaternionKeyframeTrack, - Skeleton, - Vector3, - VectorKeyframeTrack -} from 'three'; - -/** - * Description: reads BVH files and outputs a single Skeleton and an AnimationClip - * - * Currently only supports bvh files containing a single root. - * - */ - -class BVHLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.animateBonePositions = true; - this.animateBoneRotations = true; - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( text ) { - - /* - reads a string array (lines) from a BVH file - and outputs a skeleton structure including motion data - - returns thee root node: - { name: '', channels: [], children: [] } - */ - function readBvh( lines ) { - - // read model structure - - if ( nextLine( lines ) !== 'HIERARCHY' ) { - - console.error( 'THREE.BVHLoader: HIERARCHY expected.' ); - - } - - const list = []; // collects flat array of all bones - const root = readNode( lines, nextLine( lines ), list ); - - // read motion data - - if ( nextLine( lines ) !== 'MOTION' ) { - - console.error( 'THREE.BVHLoader: MOTION expected.' ); - - } - - // number of frames - - let tokens = nextLine( lines ).split( /[\s]+/ ); - const numFrames = parseInt( tokens[ 1 ] ); - - if ( isNaN( numFrames ) ) { - - console.error( 'THREE.BVHLoader: Failed to read number of frames.' ); - - } - - // frame time - - tokens = nextLine( lines ).split( /[\s]+/ ); - const frameTime = parseFloat( tokens[ 2 ] ); - - if ( isNaN( frameTime ) ) { - - console.error( 'THREE.BVHLoader: Failed to read frame time.' ); - - } - - // read frame data line by line - - for ( let i = 0; i < numFrames; i ++ ) { - - tokens = nextLine( lines ).split( /[\s]+/ ); - readFrameData( tokens, i * frameTime, root ); - - } - - return list; - - } - - /* - Recursively reads data from a single frame into the bone hierarchy. - The passed bone hierarchy has to be structured in the same order as the BVH file. - keyframe data is stored in bone.frames. - - - data: splitted string array (frame values), values are shift()ed so - this should be empty after parsing the whole hierarchy. - - frameTime: playback time for this keyframe. - - bone: the bone to read frame data from. - */ - function readFrameData( data, frameTime, bone ) { - - // end sites have no motion data - - if ( bone.type === 'ENDSITE' ) return; - - // add keyframe - - const keyframe = { - time: frameTime, - position: new Vector3(), - rotation: new Quaternion() - }; - - bone.frames.push( keyframe ); - - const quat = new Quaternion(); - - const vx = new Vector3( 1, 0, 0 ); - const vy = new Vector3( 0, 1, 0 ); - const vz = new Vector3( 0, 0, 1 ); - - // parse values for each channel in node - - for ( let i = 0; i < bone.channels.length; i ++ ) { - - switch ( bone.channels[ i ] ) { - - case 'Xposition': - keyframe.position.x = parseFloat( data.shift().trim() ); - break; - case 'Yposition': - keyframe.position.y = parseFloat( data.shift().trim() ); - break; - case 'Zposition': - keyframe.position.z = parseFloat( data.shift().trim() ); - break; - case 'Xrotation': - quat.setFromAxisAngle( vx, parseFloat( data.shift().trim() ) * Math.PI / 180 ); - keyframe.rotation.multiply( quat ); - break; - case 'Yrotation': - quat.setFromAxisAngle( vy, parseFloat( data.shift().trim() ) * Math.PI / 180 ); - keyframe.rotation.multiply( quat ); - break; - case 'Zrotation': - quat.setFromAxisAngle( vz, parseFloat( data.shift().trim() ) * Math.PI / 180 ); - keyframe.rotation.multiply( quat ); - break; - default: - console.warn( 'THREE.BVHLoader: Invalid channel type.' ); - - } - - } - - // parse child nodes - - for ( let i = 0; i < bone.children.length; i ++ ) { - - readFrameData( data, frameTime, bone.children[ i ] ); - - } - - } - - /* - Recursively parses the HIERACHY section of the BVH file - - - lines: all lines of the file. lines are consumed as we go along. - - firstline: line containing the node type and name e.g. 'JOINT hip' - - list: collects a flat list of nodes - - returns: a BVH node including children - */ - function readNode( lines, firstline, list ) { - - const node = { name: '', type: '', frames: [] }; - list.push( node ); - - // parse node type and name - - let tokens = firstline.split( /[\s]+/ ); - - if ( tokens[ 0 ].toUpperCase() === 'END' && tokens[ 1 ].toUpperCase() === 'SITE' ) { - - node.type = 'ENDSITE'; - node.name = 'ENDSITE'; // bvh end sites have no name - - } else { - - node.name = tokens[ 1 ]; - node.type = tokens[ 0 ].toUpperCase(); - - } - - if ( nextLine( lines ) !== '{' ) { - - console.error( 'THREE.BVHLoader: Expected opening { after type & name' ); - - } - - // parse OFFSET - - tokens = nextLine( lines ).split( /[\s]+/ ); - - if ( tokens[ 0 ] !== 'OFFSET' ) { - - console.error( 'THREE.BVHLoader: Expected OFFSET but got: ' + tokens[ 0 ] ); - - } - - if ( tokens.length !== 4 ) { - - console.error( 'THREE.BVHLoader: Invalid number of values for OFFSET.' ); - - } - - const offset = new Vector3( - parseFloat( tokens[ 1 ] ), - parseFloat( tokens[ 2 ] ), - parseFloat( tokens[ 3 ] ) - ); - - if ( isNaN( offset.x ) || isNaN( offset.y ) || isNaN( offset.z ) ) { - - console.error( 'THREE.BVHLoader: Invalid values of OFFSET.' ); - - } - - node.offset = offset; - - // parse CHANNELS definitions - - if ( node.type !== 'ENDSITE' ) { - - tokens = nextLine( lines ).split( /[\s]+/ ); - - if ( tokens[ 0 ] !== 'CHANNELS' ) { - - console.error( 'THREE.BVHLoader: Expected CHANNELS definition.' ); - - } - - const numChannels = parseInt( tokens[ 1 ] ); - node.channels = tokens.splice( 2, numChannels ); - node.children = []; - - } - - // read children - - while ( true ) { - - const line = nextLine( lines ); - - if ( line === '}' ) { - - return node; - - } else { - - node.children.push( readNode( lines, line, list ) ); - - } - - } - - } - - /* - recursively converts the internal bvh node structure to a Bone hierarchy - - source: the bvh root node - list: pass an empty array, collects a flat list of all converted THREE.Bones - - returns the root Bone - */ - function toTHREEBone( source, list ) { - - const bone = new Bone(); - list.push( bone ); - - bone.position.add( source.offset ); - bone.name = source.name; - - if ( source.type !== 'ENDSITE' ) { - - for ( let i = 0; i < source.children.length; i ++ ) { - - bone.add( toTHREEBone( source.children[ i ], list ) ); - - } - - } - - return bone; - - } - - /* - builds a AnimationClip from the keyframe data saved in each bone. - - bone: bvh root node - - returns: a AnimationClip containing position and quaternion tracks - */ - function toTHREEAnimation( bones ) { - - const tracks = []; - - // create a position and quaternion animation track for each node - - for ( let i = 0; i < bones.length; i ++ ) { - - const bone = bones[ i ]; - - if ( bone.type === 'ENDSITE' ) - continue; - - // track data - - const times = []; - const positions = []; - const rotations = []; - - for ( let j = 0; j < bone.frames.length; j ++ ) { - - const frame = bone.frames[ j ]; - - times.push( frame.time ); - - // the animation system animates the position property, - // so we have to add the joint offset to all values - - positions.push( frame.position.x + bone.offset.x ); - positions.push( frame.position.y + bone.offset.y ); - positions.push( frame.position.z + bone.offset.z ); - - rotations.push( frame.rotation.x ); - rotations.push( frame.rotation.y ); - rotations.push( frame.rotation.z ); - rotations.push( frame.rotation.w ); - - } - - if ( scope.animateBonePositions ) { - - tracks.push( new VectorKeyframeTrack( bone.name + '.position', times, positions ) ); - - } - - if ( scope.animateBoneRotations ) { - - tracks.push( new QuaternionKeyframeTrack( bone.name + '.quaternion', times, rotations ) ); - - } - - } - - return new AnimationClip( 'animation', - 1, tracks ); - - } - - /* - returns the next non-empty line in lines - */ - function nextLine( lines ) { - - let line; - // skip empty lines - while ( ( line = lines.shift().trim() ).length === 0 ) { } - - return line; - - } - - const scope = this; - - const lines = text.split( /[\r\n]+/g ); - - const bones = readBvh( lines ); - - const threeBones = []; - toTHREEBone( bones[ 0 ], threeBones ); - - const threeClip = toTHREEAnimation( bones ); - - return { - skeleton: new Skeleton( threeBones ), - clip: threeClip - }; - - } - -} - -export { BVHLoader }; diff --git a/three/addons/loaders/ColladaLoader.js b/three/addons/loaders/ColladaLoader.js deleted file mode 100644 index f3497f3..0000000 --- a/three/addons/loaders/ColladaLoader.js +++ /dev/null @@ -1,4116 +0,0 @@ -import { - AmbientLight, - AnimationClip, - Bone, - BufferGeometry, - ClampToEdgeWrapping, - Color, - DirectionalLight, - DoubleSide, - FileLoader, - Float32BufferAttribute, - FrontSide, - Group, - Line, - LineBasicMaterial, - LineSegments, - Loader, - LoaderUtils, - MathUtils, - Matrix4, - Mesh, - MeshBasicMaterial, - MeshLambertMaterial, - MeshPhongMaterial, - OrthographicCamera, - PerspectiveCamera, - PointLight, - Quaternion, - QuaternionKeyframeTrack, - RepeatWrapping, - Scene, - Skeleton, - SkinnedMesh, - SpotLight, - TextureLoader, - Vector2, - Vector3, - VectorKeyframeTrack, - SRGBColorSpace -} from 'three'; -import { TGALoader } from '../loaders/TGALoader.js'; - -class ColladaLoader extends Loader { - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text, path ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( text, path ) { - - function getElementsByTagName( xml, name ) { - - // Non recursive xml.getElementsByTagName() ... - - const array = []; - const childNodes = xml.childNodes; - - for ( let i = 0, l = childNodes.length; i < l; i ++ ) { - - const child = childNodes[ i ]; - - if ( child.nodeName === name ) { - - array.push( child ); - - } - - } - - return array; - - } - - function parseStrings( text ) { - - if ( text.length === 0 ) return []; - - const parts = text.trim().split( /\s+/ ); - const array = new Array( parts.length ); - - for ( let i = 0, l = parts.length; i < l; i ++ ) { - - array[ i ] = parts[ i ]; - - } - - return array; - - } - - function parseFloats( text ) { - - if ( text.length === 0 ) return []; - - const parts = text.trim().split( /\s+/ ); - const array = new Array( parts.length ); - - for ( let i = 0, l = parts.length; i < l; i ++ ) { - - array[ i ] = parseFloat( parts[ i ] ); - - } - - return array; - - } - - function parseInts( text ) { - - if ( text.length === 0 ) return []; - - const parts = text.trim().split( /\s+/ ); - const array = new Array( parts.length ); - - for ( let i = 0, l = parts.length; i < l; i ++ ) { - - array[ i ] = parseInt( parts[ i ] ); - - } - - return array; - - } - - function parseId( text ) { - - return text.substring( 1 ); - - } - - function generateId() { - - return 'three_default_' + ( count ++ ); - - } - - function isEmpty( object ) { - - return Object.keys( object ).length === 0; - - } - - // asset - - function parseAsset( xml ) { - - return { - unit: parseAssetUnit( getElementsByTagName( xml, 'unit' )[ 0 ] ), - upAxis: parseAssetUpAxis( getElementsByTagName( xml, 'up_axis' )[ 0 ] ) - }; - - } - - function parseAssetUnit( xml ) { - - if ( ( xml !== undefined ) && ( xml.hasAttribute( 'meter' ) === true ) ) { - - return parseFloat( xml.getAttribute( 'meter' ) ); - - } else { - - return 1; // default 1 meter - - } - - } - - function parseAssetUpAxis( xml ) { - - return xml !== undefined ? xml.textContent : 'Y_UP'; - - } - - // library - - function parseLibrary( xml, libraryName, nodeName, parser ) { - - const library = getElementsByTagName( xml, libraryName )[ 0 ]; - - if ( library !== undefined ) { - - const elements = getElementsByTagName( library, nodeName ); - - for ( let i = 0; i < elements.length; i ++ ) { - - parser( elements[ i ] ); - - } - - } - - } - - function buildLibrary( data, builder ) { - - for ( const name in data ) { - - const object = data[ name ]; - object.build = builder( data[ name ] ); - - } - - } - - // get - - function getBuild( data, builder ) { - - if ( data.build !== undefined ) return data.build; - - data.build = builder( data ); - - return data.build; - - } - - // animation - - function parseAnimation( xml ) { - - const data = { - sources: {}, - samplers: {}, - channels: {} - }; - - let hasChildren = false; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - let id; - - switch ( child.nodeName ) { - - case 'source': - id = child.getAttribute( 'id' ); - data.sources[ id ] = parseSource( child ); - break; - - case 'sampler': - id = child.getAttribute( 'id' ); - data.samplers[ id ] = parseAnimationSampler( child ); - break; - - case 'channel': - id = child.getAttribute( 'target' ); - data.channels[ id ] = parseAnimationChannel( child ); - break; - - case 'animation': - // hierarchy of related animations - parseAnimation( child ); - hasChildren = true; - break; - - default: - console.log( child ); - - } - - } - - if ( hasChildren === false ) { - - // since 'id' attributes can be optional, it's necessary to generate a UUID for unqiue assignment - - library.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data; - - } - - } - - function parseAnimationSampler( xml ) { - - const data = { - inputs: {}, - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'input': - const id = parseId( child.getAttribute( 'source' ) ); - const semantic = child.getAttribute( 'semantic' ); - data.inputs[ semantic ] = id; - break; - - } - - } - - return data; - - } - - function parseAnimationChannel( xml ) { - - const data = {}; - - const target = xml.getAttribute( 'target' ); - - // parsing SID Addressing Syntax - - let parts = target.split( '/' ); - - const id = parts.shift(); - let sid = parts.shift(); - - // check selection syntax - - const arraySyntax = ( sid.indexOf( '(' ) !== - 1 ); - const memberSyntax = ( sid.indexOf( '.' ) !== - 1 ); - - if ( memberSyntax ) { - - // member selection access - - parts = sid.split( '.' ); - sid = parts.shift(); - data.member = parts.shift(); - - } else if ( arraySyntax ) { - - // array-access syntax. can be used to express fields in one-dimensional vectors or two-dimensional matrices. - - const indices = sid.split( '(' ); - sid = indices.shift(); - - for ( let i = 0; i < indices.length; i ++ ) { - - indices[ i ] = parseInt( indices[ i ].replace( /\)/, '' ) ); - - } - - data.indices = indices; - - } - - data.id = id; - data.sid = sid; - - data.arraySyntax = arraySyntax; - data.memberSyntax = memberSyntax; - - data.sampler = parseId( xml.getAttribute( 'source' ) ); - - return data; - - } - - function buildAnimation( data ) { - - const tracks = []; - - const channels = data.channels; - const samplers = data.samplers; - const sources = data.sources; - - for ( const target in channels ) { - - if ( channels.hasOwnProperty( target ) ) { - - const channel = channels[ target ]; - const sampler = samplers[ channel.sampler ]; - - const inputId = sampler.inputs.INPUT; - const outputId = sampler.inputs.OUTPUT; - - const inputSource = sources[ inputId ]; - const outputSource = sources[ outputId ]; - - const animation = buildAnimationChannel( channel, inputSource, outputSource ); - - createKeyframeTracks( animation, tracks ); - - } - - } - - return tracks; - - } - - function getAnimation( id ) { - - return getBuild( library.animations[ id ], buildAnimation ); - - } - - function buildAnimationChannel( channel, inputSource, outputSource ) { - - const node = library.nodes[ channel.id ]; - const object3D = getNode( node.id ); - - const transform = node.transforms[ channel.sid ]; - const defaultMatrix = node.matrix.clone().transpose(); - - let time, stride; - let i, il, j, jl; - - const data = {}; - - // the collada spec allows the animation of data in various ways. - // depending on the transform type (matrix, translate, rotate, scale), we execute different logic - - switch ( transform ) { - - case 'matrix': - - for ( i = 0, il = inputSource.array.length; i < il; i ++ ) { - - time = inputSource.array[ i ]; - stride = i * outputSource.stride; - - if ( data[ time ] === undefined ) data[ time ] = {}; - - if ( channel.arraySyntax === true ) { - - const value = outputSource.array[ stride ]; - const index = channel.indices[ 0 ] + 4 * channel.indices[ 1 ]; - - data[ time ][ index ] = value; - - } else { - - for ( j = 0, jl = outputSource.stride; j < jl; j ++ ) { - - data[ time ][ j ] = outputSource.array[ stride + j ]; - - } - - } - - } - - break; - - case 'translate': - console.warn( 'THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform ); - break; - - case 'rotate': - console.warn( 'THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform ); - break; - - case 'scale': - console.warn( 'THREE.ColladaLoader: Animation transform type "%s" not yet implemented.', transform ); - break; - - } - - const keyframes = prepareAnimationData( data, defaultMatrix ); - - const animation = { - name: object3D.uuid, - keyframes: keyframes - }; - - return animation; - - } - - function prepareAnimationData( data, defaultMatrix ) { - - const keyframes = []; - - // transfer data into a sortable array - - for ( const time in data ) { - - keyframes.push( { time: parseFloat( time ), value: data[ time ] } ); - - } - - // ensure keyframes are sorted by time - - keyframes.sort( ascending ); - - // now we clean up all animation data, so we can use them for keyframe tracks - - for ( let i = 0; i < 16; i ++ ) { - - transformAnimationData( keyframes, i, defaultMatrix.elements[ i ] ); - - } - - return keyframes; - - // array sort function - - function ascending( a, b ) { - - return a.time - b.time; - - } - - } - - const position = new Vector3(); - const scale = new Vector3(); - const quaternion = new Quaternion(); - - function createKeyframeTracks( animation, tracks ) { - - const keyframes = animation.keyframes; - const name = animation.name; - - const times = []; - const positionData = []; - const quaternionData = []; - const scaleData = []; - - for ( let i = 0, l = keyframes.length; i < l; i ++ ) { - - const keyframe = keyframes[ i ]; - - const time = keyframe.time; - const value = keyframe.value; - - matrix.fromArray( value ).transpose(); - matrix.decompose( position, quaternion, scale ); - - times.push( time ); - positionData.push( position.x, position.y, position.z ); - quaternionData.push( quaternion.x, quaternion.y, quaternion.z, quaternion.w ); - scaleData.push( scale.x, scale.y, scale.z ); - - } - - if ( positionData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.position', times, positionData ) ); - if ( quaternionData.length > 0 ) tracks.push( new QuaternionKeyframeTrack( name + '.quaternion', times, quaternionData ) ); - if ( scaleData.length > 0 ) tracks.push( new VectorKeyframeTrack( name + '.scale', times, scaleData ) ); - - return tracks; - - } - - function transformAnimationData( keyframes, property, defaultValue ) { - - let keyframe; - - let empty = true; - let i, l; - - // check, if values of a property are missing in our keyframes - - for ( i = 0, l = keyframes.length; i < l; i ++ ) { - - keyframe = keyframes[ i ]; - - if ( keyframe.value[ property ] === undefined ) { - - keyframe.value[ property ] = null; // mark as missing - - } else { - - empty = false; - - } - - } - - if ( empty === true ) { - - // no values at all, so we set a default value - - for ( i = 0, l = keyframes.length; i < l; i ++ ) { - - keyframe = keyframes[ i ]; - - keyframe.value[ property ] = defaultValue; - - } - - } else { - - // filling gaps - - createMissingKeyframes( keyframes, property ); - - } - - } - - function createMissingKeyframes( keyframes, property ) { - - let prev, next; - - for ( let i = 0, l = keyframes.length; i < l; i ++ ) { - - const keyframe = keyframes[ i ]; - - if ( keyframe.value[ property ] === null ) { - - prev = getPrev( keyframes, i, property ); - next = getNext( keyframes, i, property ); - - if ( prev === null ) { - - keyframe.value[ property ] = next.value[ property ]; - continue; - - } - - if ( next === null ) { - - keyframe.value[ property ] = prev.value[ property ]; - continue; - - } - - interpolate( keyframe, prev, next, property ); - - } - - } - - } - - function getPrev( keyframes, i, property ) { - - while ( i >= 0 ) { - - const keyframe = keyframes[ i ]; - - if ( keyframe.value[ property ] !== null ) return keyframe; - - i --; - - } - - return null; - - } - - function getNext( keyframes, i, property ) { - - while ( i < keyframes.length ) { - - const keyframe = keyframes[ i ]; - - if ( keyframe.value[ property ] !== null ) return keyframe; - - i ++; - - } - - return null; - - } - - function interpolate( key, prev, next, property ) { - - if ( ( next.time - prev.time ) === 0 ) { - - key.value[ property ] = prev.value[ property ]; - return; - - } - - key.value[ property ] = ( ( key.time - prev.time ) * ( next.value[ property ] - prev.value[ property ] ) / ( next.time - prev.time ) ) + prev.value[ property ]; - - } - - // animation clips - - function parseAnimationClip( xml ) { - - const data = { - name: xml.getAttribute( 'id' ) || 'default', - start: parseFloat( xml.getAttribute( 'start' ) || 0 ), - end: parseFloat( xml.getAttribute( 'end' ) || 0 ), - animations: [] - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'instance_animation': - data.animations.push( parseId( child.getAttribute( 'url' ) ) ); - break; - - } - - } - - library.clips[ xml.getAttribute( 'id' ) ] = data; - - } - - function buildAnimationClip( data ) { - - const tracks = []; - - const name = data.name; - const duration = ( data.end - data.start ) || - 1; - const animations = data.animations; - - for ( let i = 0, il = animations.length; i < il; i ++ ) { - - const animationTracks = getAnimation( animations[ i ] ); - - for ( let j = 0, jl = animationTracks.length; j < jl; j ++ ) { - - tracks.push( animationTracks[ j ] ); - - } - - } - - return new AnimationClip( name, duration, tracks ); - - } - - function getAnimationClip( id ) { - - return getBuild( library.clips[ id ], buildAnimationClip ); - - } - - // controller - - function parseController( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'skin': - // there is exactly one skin per controller - data.id = parseId( child.getAttribute( 'source' ) ); - data.skin = parseSkin( child ); - break; - - case 'morph': - data.id = parseId( child.getAttribute( 'source' ) ); - console.warn( 'THREE.ColladaLoader: Morph target animation not supported yet.' ); - break; - - } - - } - - library.controllers[ xml.getAttribute( 'id' ) ] = data; - - } - - function parseSkin( xml ) { - - const data = { - sources: {} - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'bind_shape_matrix': - data.bindShapeMatrix = parseFloats( child.textContent ); - break; - - case 'source': - const id = child.getAttribute( 'id' ); - data.sources[ id ] = parseSource( child ); - break; - - case 'joints': - data.joints = parseJoints( child ); - break; - - case 'vertex_weights': - data.vertexWeights = parseVertexWeights( child ); - break; - - } - - } - - return data; - - } - - function parseJoints( xml ) { - - const data = { - inputs: {} - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'input': - const semantic = child.getAttribute( 'semantic' ); - const id = parseId( child.getAttribute( 'source' ) ); - data.inputs[ semantic ] = id; - break; - - } - - } - - return data; - - } - - function parseVertexWeights( xml ) { - - const data = { - inputs: {} - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'input': - const semantic = child.getAttribute( 'semantic' ); - const id = parseId( child.getAttribute( 'source' ) ); - const offset = parseInt( child.getAttribute( 'offset' ) ); - data.inputs[ semantic ] = { id: id, offset: offset }; - break; - - case 'vcount': - data.vcount = parseInts( child.textContent ); - break; - - case 'v': - data.v = parseInts( child.textContent ); - break; - - } - - } - - return data; - - } - - function buildController( data ) { - - const build = { - id: data.id - }; - - const geometry = library.geometries[ build.id ]; - - if ( data.skin !== undefined ) { - - build.skin = buildSkin( data.skin ); - - // we enhance the 'sources' property of the corresponding geometry with our skin data - - geometry.sources.skinIndices = build.skin.indices; - geometry.sources.skinWeights = build.skin.weights; - - } - - return build; - - } - - function buildSkin( data ) { - - const BONE_LIMIT = 4; - - const build = { - joints: [], // this must be an array to preserve the joint order - indices: { - array: [], - stride: BONE_LIMIT - }, - weights: { - array: [], - stride: BONE_LIMIT - } - }; - - const sources = data.sources; - const vertexWeights = data.vertexWeights; - - const vcount = vertexWeights.vcount; - const v = vertexWeights.v; - const jointOffset = vertexWeights.inputs.JOINT.offset; - const weightOffset = vertexWeights.inputs.WEIGHT.offset; - - const jointSource = data.sources[ data.joints.inputs.JOINT ]; - const inverseSource = data.sources[ data.joints.inputs.INV_BIND_MATRIX ]; - - const weights = sources[ vertexWeights.inputs.WEIGHT.id ].array; - let stride = 0; - - let i, j, l; - - // process skin data for each vertex - - for ( i = 0, l = vcount.length; i < l; i ++ ) { - - const jointCount = vcount[ i ]; // this is the amount of joints that affect a single vertex - const vertexSkinData = []; - - for ( j = 0; j < jointCount; j ++ ) { - - const skinIndex = v[ stride + jointOffset ]; - const weightId = v[ stride + weightOffset ]; - const skinWeight = weights[ weightId ]; - - vertexSkinData.push( { index: skinIndex, weight: skinWeight } ); - - stride += 2; - - } - - // we sort the joints in descending order based on the weights. - // this ensures, we only procced the most important joints of the vertex - - vertexSkinData.sort( descending ); - - // now we provide for each vertex a set of four index and weight values. - // the order of the skin data matches the order of vertices - - for ( j = 0; j < BONE_LIMIT; j ++ ) { - - const d = vertexSkinData[ j ]; - - if ( d !== undefined ) { - - build.indices.array.push( d.index ); - build.weights.array.push( d.weight ); - - } else { - - build.indices.array.push( 0 ); - build.weights.array.push( 0 ); - - } - - } - - } - - // setup bind matrix - - if ( data.bindShapeMatrix ) { - - build.bindMatrix = new Matrix4().fromArray( data.bindShapeMatrix ).transpose(); - - } else { - - build.bindMatrix = new Matrix4().identity(); - - } - - // process bones and inverse bind matrix data - - for ( i = 0, l = jointSource.array.length; i < l; i ++ ) { - - const name = jointSource.array[ i ]; - const boneInverse = new Matrix4().fromArray( inverseSource.array, i * inverseSource.stride ).transpose(); - - build.joints.push( { name: name, boneInverse: boneInverse } ); - - } - - return build; - - // array sort function - - function descending( a, b ) { - - return b.weight - a.weight; - - } - - } - - function getController( id ) { - - return getBuild( library.controllers[ id ], buildController ); - - } - - // image - - function parseImage( xml ) { - - const data = { - init_from: getElementsByTagName( xml, 'init_from' )[ 0 ].textContent - }; - - library.images[ xml.getAttribute( 'id' ) ] = data; - - } - - function buildImage( data ) { - - if ( data.build !== undefined ) return data.build; - - return data.init_from; - - } - - function getImage( id ) { - - const data = library.images[ id ]; - - if ( data !== undefined ) { - - return getBuild( data, buildImage ); - - } - - console.warn( 'THREE.ColladaLoader: Couldn\'t find image with ID:', id ); - - return null; - - } - - // effect - - function parseEffect( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'profile_COMMON': - data.profile = parseEffectProfileCOMMON( child ); - break; - - } - - } - - library.effects[ xml.getAttribute( 'id' ) ] = data; - - } - - function parseEffectProfileCOMMON( xml ) { - - const data = { - surfaces: {}, - samplers: {} - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'newparam': - parseEffectNewparam( child, data ); - break; - - case 'technique': - data.technique = parseEffectTechnique( child ); - break; - - case 'extra': - data.extra = parseEffectExtra( child ); - break; - - } - - } - - return data; - - } - - function parseEffectNewparam( xml, data ) { - - const sid = xml.getAttribute( 'sid' ); - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'surface': - data.surfaces[ sid ] = parseEffectSurface( child ); - break; - - case 'sampler2D': - data.samplers[ sid ] = parseEffectSampler( child ); - break; - - } - - } - - } - - function parseEffectSurface( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'init_from': - data.init_from = child.textContent; - break; - - } - - } - - return data; - - } - - function parseEffectSampler( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'source': - data.source = child.textContent; - break; - - } - - } - - return data; - - } - - function parseEffectTechnique( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'constant': - case 'lambert': - case 'blinn': - case 'phong': - data.type = child.nodeName; - data.parameters = parseEffectParameters( child ); - break; - - case 'extra': - data.extra = parseEffectExtra( child ); - break; - - } - - } - - return data; - - } - - function parseEffectParameters( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'emission': - case 'diffuse': - case 'specular': - case 'bump': - case 'ambient': - case 'shininess': - case 'transparency': - data[ child.nodeName ] = parseEffectParameter( child ); - break; - case 'transparent': - data[ child.nodeName ] = { - opaque: child.hasAttribute( 'opaque' ) ? child.getAttribute( 'opaque' ) : 'A_ONE', - data: parseEffectParameter( child ) - }; - break; - - } - - } - - return data; - - } - - function parseEffectParameter( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'color': - data[ child.nodeName ] = parseFloats( child.textContent ); - break; - - case 'float': - data[ child.nodeName ] = parseFloat( child.textContent ); - break; - - case 'texture': - data[ child.nodeName ] = { id: child.getAttribute( 'texture' ), extra: parseEffectParameterTexture( child ) }; - break; - - } - - } - - return data; - - } - - function parseEffectParameterTexture( xml ) { - - const data = { - technique: {} - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'extra': - parseEffectParameterTextureExtra( child, data ); - break; - - } - - } - - return data; - - } - - function parseEffectParameterTextureExtra( xml, data ) { - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'technique': - parseEffectParameterTextureExtraTechnique( child, data ); - break; - - } - - } - - } - - function parseEffectParameterTextureExtraTechnique( xml, data ) { - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'repeatU': - case 'repeatV': - case 'offsetU': - case 'offsetV': - data.technique[ child.nodeName ] = parseFloat( child.textContent ); - break; - - case 'wrapU': - case 'wrapV': - - // some files have values for wrapU/wrapV which become NaN via parseInt - - if ( child.textContent.toUpperCase() === 'TRUE' ) { - - data.technique[ child.nodeName ] = 1; - - } else if ( child.textContent.toUpperCase() === 'FALSE' ) { - - data.technique[ child.nodeName ] = 0; - - } else { - - data.technique[ child.nodeName ] = parseInt( child.textContent ); - - } - - break; - - case 'bump': - data[ child.nodeName ] = parseEffectExtraTechniqueBump( child ); - break; - - } - - } - - } - - function parseEffectExtra( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'technique': - data.technique = parseEffectExtraTechnique( child ); - break; - - } - - } - - return data; - - } - - function parseEffectExtraTechnique( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'double_sided': - data[ child.nodeName ] = parseInt( child.textContent ); - break; - - case 'bump': - data[ child.nodeName ] = parseEffectExtraTechniqueBump( child ); - break; - - } - - } - - return data; - - } - - function parseEffectExtraTechniqueBump( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'texture': - data[ child.nodeName ] = { id: child.getAttribute( 'texture' ), texcoord: child.getAttribute( 'texcoord' ), extra: parseEffectParameterTexture( child ) }; - break; - - } - - } - - return data; - - } - - function buildEffect( data ) { - - return data; - - } - - function getEffect( id ) { - - return getBuild( library.effects[ id ], buildEffect ); - - } - - // material - - function parseMaterial( xml ) { - - const data = { - name: xml.getAttribute( 'name' ) - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'instance_effect': - data.url = parseId( child.getAttribute( 'url' ) ); - break; - - } - - } - - library.materials[ xml.getAttribute( 'id' ) ] = data; - - } - - function getTextureLoader( image ) { - - let loader; - - let extension = image.slice( ( image.lastIndexOf( '.' ) - 1 >>> 0 ) + 2 ); // http://www.jstips.co/en/javascript/get-file-extension/ - extension = extension.toLowerCase(); - - switch ( extension ) { - - case 'tga': - loader = tgaLoader; - break; - - default: - loader = textureLoader; - - } - - return loader; - - } - - function buildMaterial( data ) { - - const effect = getEffect( data.url ); - const technique = effect.profile.technique; - - let material; - - switch ( technique.type ) { - - case 'phong': - case 'blinn': - material = new MeshPhongMaterial(); - break; - - case 'lambert': - material = new MeshLambertMaterial(); - break; - - default: - material = new MeshBasicMaterial(); - break; - - } - - material.name = data.name || ''; - - function getTexture( textureObject, colorSpace = null ) { - - const sampler = effect.profile.samplers[ textureObject.id ]; - let image = null; - - // get image - - if ( sampler !== undefined ) { - - const surface = effect.profile.surfaces[ sampler.source ]; - image = getImage( surface.init_from ); - - } else { - - console.warn( 'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).' ); - image = getImage( textureObject.id ); - - } - - // create texture if image is avaiable - - if ( image !== null ) { - - const loader = getTextureLoader( image ); - - if ( loader !== undefined ) { - - const texture = loader.load( image ); - - const extra = textureObject.extra; - - if ( extra !== undefined && extra.technique !== undefined && isEmpty( extra.technique ) === false ) { - - const technique = extra.technique; - - texture.wrapS = technique.wrapU ? RepeatWrapping : ClampToEdgeWrapping; - texture.wrapT = technique.wrapV ? RepeatWrapping : ClampToEdgeWrapping; - - texture.offset.set( technique.offsetU || 0, technique.offsetV || 0 ); - texture.repeat.set( technique.repeatU || 1, technique.repeatV || 1 ); - - } else { - - texture.wrapS = RepeatWrapping; - texture.wrapT = RepeatWrapping; - - } - - if ( colorSpace !== null ) { - - texture.colorSpace = colorSpace; - - } - - return texture; - - } else { - - console.warn( 'THREE.ColladaLoader: Loader for texture %s not found.', image ); - - return null; - - } - - } else { - - console.warn( 'THREE.ColladaLoader: Couldn\'t create texture with ID:', textureObject.id ); - - return null; - - } - - } - - const parameters = technique.parameters; - - for ( const key in parameters ) { - - const parameter = parameters[ key ]; - - switch ( key ) { - - case 'diffuse': - if ( parameter.color ) material.color.fromArray( parameter.color ); - if ( parameter.texture ) material.map = getTexture( parameter.texture, SRGBColorSpace ); - break; - case 'specular': - if ( parameter.color && material.specular ) material.specular.fromArray( parameter.color ); - if ( parameter.texture ) material.specularMap = getTexture( parameter.texture ); - break; - case 'bump': - if ( parameter.texture ) material.normalMap = getTexture( parameter.texture ); - break; - case 'ambient': - if ( parameter.texture ) material.lightMap = getTexture( parameter.texture, SRGBColorSpace ); - break; - case 'shininess': - if ( parameter.float && material.shininess ) material.shininess = parameter.float; - break; - case 'emission': - if ( parameter.color && material.emissive ) material.emissive.fromArray( parameter.color ); - if ( parameter.texture ) material.emissiveMap = getTexture( parameter.texture, SRGBColorSpace ); - break; - - } - - } - - material.color.convertSRGBToLinear(); - if ( material.specular ) material.specular.convertSRGBToLinear(); - if ( material.emissive ) material.emissive.convertSRGBToLinear(); - - // - - let transparent = parameters[ 'transparent' ]; - let transparency = parameters[ 'transparency' ]; - - // does not exist but - - if ( transparency === undefined && transparent ) { - - transparency = { - float: 1 - }; - - } - - // does not exist but - - if ( transparent === undefined && transparency ) { - - transparent = { - opaque: 'A_ONE', - data: { - color: [ 1, 1, 1, 1 ] - } }; - - } - - if ( transparent && transparency ) { - - // handle case if a texture exists but no color - - if ( transparent.data.texture ) { - - // we do not set an alpha map (see #13792) - - material.transparent = true; - - } else { - - const color = transparent.data.color; - - switch ( transparent.opaque ) { - - case 'A_ONE': - material.opacity = color[ 3 ] * transparency.float; - break; - case 'RGB_ZERO': - material.opacity = 1 - ( color[ 0 ] * transparency.float ); - break; - case 'A_ZERO': - material.opacity = 1 - ( color[ 3 ] * transparency.float ); - break; - case 'RGB_ONE': - material.opacity = color[ 0 ] * transparency.float; - break; - default: - console.warn( 'THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.', transparent.opaque ); - - } - - if ( material.opacity < 1 ) material.transparent = true; - - } - - } - - // - - - if ( technique.extra !== undefined && technique.extra.technique !== undefined ) { - - const techniques = technique.extra.technique; - - for ( const k in techniques ) { - - const v = techniques[ k ]; - - switch ( k ) { - - case 'double_sided': - material.side = ( v === 1 ? DoubleSide : FrontSide ); - break; - - case 'bump': - material.normalMap = getTexture( v.texture ); - material.normalScale = new Vector2( 1, 1 ); - break; - - } - - } - - } - - return material; - - } - - function getMaterial( id ) { - - return getBuild( library.materials[ id ], buildMaterial ); - - } - - // camera - - function parseCamera( xml ) { - - const data = { - name: xml.getAttribute( 'name' ) - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'optics': - data.optics = parseCameraOptics( child ); - break; - - } - - } - - library.cameras[ xml.getAttribute( 'id' ) ] = data; - - } - - function parseCameraOptics( xml ) { - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - switch ( child.nodeName ) { - - case 'technique_common': - return parseCameraTechnique( child ); - - } - - } - - return {}; - - } - - function parseCameraTechnique( xml ) { - - const data = {}; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - switch ( child.nodeName ) { - - case 'perspective': - case 'orthographic': - - data.technique = child.nodeName; - data.parameters = parseCameraParameters( child ); - - break; - - } - - } - - return data; - - } - - function parseCameraParameters( xml ) { - - const data = {}; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - switch ( child.nodeName ) { - - case 'xfov': - case 'yfov': - case 'xmag': - case 'ymag': - case 'znear': - case 'zfar': - case 'aspect_ratio': - data[ child.nodeName ] = parseFloat( child.textContent ); - break; - - } - - } - - return data; - - } - - function buildCamera( data ) { - - let camera; - - switch ( data.optics.technique ) { - - case 'perspective': - camera = new PerspectiveCamera( - data.optics.parameters.yfov, - data.optics.parameters.aspect_ratio, - data.optics.parameters.znear, - data.optics.parameters.zfar - ); - break; - - case 'orthographic': - let ymag = data.optics.parameters.ymag; - let xmag = data.optics.parameters.xmag; - const aspectRatio = data.optics.parameters.aspect_ratio; - - xmag = ( xmag === undefined ) ? ( ymag * aspectRatio ) : xmag; - ymag = ( ymag === undefined ) ? ( xmag / aspectRatio ) : ymag; - - xmag *= 0.5; - ymag *= 0.5; - - camera = new OrthographicCamera( - - xmag, xmag, ymag, - ymag, // left, right, top, bottom - data.optics.parameters.znear, - data.optics.parameters.zfar - ); - break; - - default: - camera = new PerspectiveCamera(); - break; - - } - - camera.name = data.name || ''; - - return camera; - - } - - function getCamera( id ) { - - const data = library.cameras[ id ]; - - if ( data !== undefined ) { - - return getBuild( data, buildCamera ); - - } - - console.warn( 'THREE.ColladaLoader: Couldn\'t find camera with ID:', id ); - - return null; - - } - - // light - - function parseLight( xml ) { - - let data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'technique_common': - data = parseLightTechnique( child ); - break; - - } - - } - - library.lights[ xml.getAttribute( 'id' ) ] = data; - - } - - function parseLightTechnique( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'directional': - case 'point': - case 'spot': - case 'ambient': - - data.technique = child.nodeName; - data.parameters = parseLightParameters( child ); - - } - - } - - return data; - - } - - function parseLightParameters( xml ) { - - const data = {}; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'color': - const array = parseFloats( child.textContent ); - data.color = new Color().fromArray( array ).convertSRGBToLinear(); - break; - - case 'falloff_angle': - data.falloffAngle = parseFloat( child.textContent ); - break; - - case 'quadratic_attenuation': - const f = parseFloat( child.textContent ); - data.distance = f ? Math.sqrt( 1 / f ) : 0; - break; - - } - - } - - return data; - - } - - function buildLight( data ) { - - let light; - - switch ( data.technique ) { - - case 'directional': - light = new DirectionalLight(); - break; - - case 'point': - light = new PointLight(); - break; - - case 'spot': - light = new SpotLight(); - break; - - case 'ambient': - light = new AmbientLight(); - break; - - } - - if ( data.parameters.color ) light.color.copy( data.parameters.color ); - if ( data.parameters.distance ) light.distance = data.parameters.distance; - - return light; - - } - - function getLight( id ) { - - const data = library.lights[ id ]; - - if ( data !== undefined ) { - - return getBuild( data, buildLight ); - - } - - console.warn( 'THREE.ColladaLoader: Couldn\'t find light with ID:', id ); - - return null; - - } - - // geometry - - function parseGeometry( xml ) { - - const data = { - name: xml.getAttribute( 'name' ), - sources: {}, - vertices: {}, - primitives: [] - }; - - const mesh = getElementsByTagName( xml, 'mesh' )[ 0 ]; - - // the following tags inside geometry are not supported yet (see https://github.com/mrdoob/three.js/pull/12606): convex_mesh, spline, brep - if ( mesh === undefined ) return; - - for ( let i = 0; i < mesh.childNodes.length; i ++ ) { - - const child = mesh.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - const id = child.getAttribute( 'id' ); - - switch ( child.nodeName ) { - - case 'source': - data.sources[ id ] = parseSource( child ); - break; - - case 'vertices': - // data.sources[ id ] = data.sources[ parseId( getElementsByTagName( child, 'input' )[ 0 ].getAttribute( 'source' ) ) ]; - data.vertices = parseGeometryVertices( child ); - break; - - case 'polygons': - console.warn( 'THREE.ColladaLoader: Unsupported primitive type: ', child.nodeName ); - break; - - case 'lines': - case 'linestrips': - case 'polylist': - case 'triangles': - data.primitives.push( parseGeometryPrimitive( child ) ); - break; - - default: - console.log( child ); - - } - - } - - library.geometries[ xml.getAttribute( 'id' ) ] = data; - - } - - function parseSource( xml ) { - - const data = { - array: [], - stride: 3 - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'float_array': - data.array = parseFloats( child.textContent ); - break; - - case 'Name_array': - data.array = parseStrings( child.textContent ); - break; - - case 'technique_common': - const accessor = getElementsByTagName( child, 'accessor' )[ 0 ]; - - if ( accessor !== undefined ) { - - data.stride = parseInt( accessor.getAttribute( 'stride' ) ); - - } - - break; - - } - - } - - return data; - - } - - function parseGeometryVertices( xml ) { - - const data = {}; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - data[ child.getAttribute( 'semantic' ) ] = parseId( child.getAttribute( 'source' ) ); - - } - - return data; - - } - - function parseGeometryPrimitive( xml ) { - - const primitive = { - type: xml.nodeName, - material: xml.getAttribute( 'material' ), - count: parseInt( xml.getAttribute( 'count' ) ), - inputs: {}, - stride: 0, - hasUV: false - }; - - for ( let i = 0, l = xml.childNodes.length; i < l; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'input': - const id = parseId( child.getAttribute( 'source' ) ); - const semantic = child.getAttribute( 'semantic' ); - const offset = parseInt( child.getAttribute( 'offset' ) ); - const set = parseInt( child.getAttribute( 'set' ) ); - const inputname = ( set > 0 ? semantic + set : semantic ); - primitive.inputs[ inputname ] = { id: id, offset: offset }; - primitive.stride = Math.max( primitive.stride, offset + 1 ); - if ( semantic === 'TEXCOORD' ) primitive.hasUV = true; - break; - - case 'vcount': - primitive.vcount = parseInts( child.textContent ); - break; - - case 'p': - primitive.p = parseInts( child.textContent ); - break; - - } - - } - - return primitive; - - } - - function groupPrimitives( primitives ) { - - const build = {}; - - for ( let i = 0; i < primitives.length; i ++ ) { - - const primitive = primitives[ i ]; - - if ( build[ primitive.type ] === undefined ) build[ primitive.type ] = []; - - build[ primitive.type ].push( primitive ); - - } - - return build; - - } - - function checkUVCoordinates( primitives ) { - - let count = 0; - - for ( let i = 0, l = primitives.length; i < l; i ++ ) { - - const primitive = primitives[ i ]; - - if ( primitive.hasUV === true ) { - - count ++; - - } - - } - - if ( count > 0 && count < primitives.length ) { - - primitives.uvsNeedsFix = true; - - } - - } - - function buildGeometry( data ) { - - const build = {}; - - const sources = data.sources; - const vertices = data.vertices; - const primitives = data.primitives; - - if ( primitives.length === 0 ) return {}; - - // our goal is to create one buffer geometry for a single type of primitives - // first, we group all primitives by their type - - const groupedPrimitives = groupPrimitives( primitives ); - - for ( const type in groupedPrimitives ) { - - const primitiveType = groupedPrimitives[ type ]; - - // second, ensure consistent uv coordinates for each type of primitives (polylist,triangles or lines) - - checkUVCoordinates( primitiveType ); - - // third, create a buffer geometry for each type of primitives - - build[ type ] = buildGeometryType( primitiveType, sources, vertices ); - - } - - return build; - - } - - function buildGeometryType( primitives, sources, vertices ) { - - const build = {}; - - const position = { array: [], stride: 0 }; - const normal = { array: [], stride: 0 }; - const uv = { array: [], stride: 0 }; - const uv1 = { array: [], stride: 0 }; - const color = { array: [], stride: 0 }; - - const skinIndex = { array: [], stride: 4 }; - const skinWeight = { array: [], stride: 4 }; - - const geometry = new BufferGeometry(); - - const materialKeys = []; - - let start = 0; - - for ( let p = 0; p < primitives.length; p ++ ) { - - const primitive = primitives[ p ]; - const inputs = primitive.inputs; - - // groups - - let count = 0; - - switch ( primitive.type ) { - - case 'lines': - case 'linestrips': - count = primitive.count * 2; - break; - - case 'triangles': - count = primitive.count * 3; - break; - - case 'polylist': - - for ( let g = 0; g < primitive.count; g ++ ) { - - const vc = primitive.vcount[ g ]; - - switch ( vc ) { - - case 3: - count += 3; // single triangle - break; - - case 4: - count += 6; // quad, subdivided into two triangles - break; - - default: - count += ( vc - 2 ) * 3; // polylist with more than four vertices - break; - - } - - } - - break; - - default: - console.warn( 'THREE.ColladaLoader: Unknow primitive type:', primitive.type ); - - } - - geometry.addGroup( start, count, p ); - start += count; - - // material - - if ( primitive.material ) { - - materialKeys.push( primitive.material ); - - } - - // geometry data - - for ( const name in inputs ) { - - const input = inputs[ name ]; - - switch ( name ) { - - case 'VERTEX': - for ( const key in vertices ) { - - const id = vertices[ key ]; - - switch ( key ) { - - case 'POSITION': - const prevLength = position.array.length; - buildGeometryData( primitive, sources[ id ], input.offset, position.array ); - position.stride = sources[ id ].stride; - - if ( sources.skinWeights && sources.skinIndices ) { - - buildGeometryData( primitive, sources.skinIndices, input.offset, skinIndex.array ); - buildGeometryData( primitive, sources.skinWeights, input.offset, skinWeight.array ); - - } - - // see #3803 - - if ( primitive.hasUV === false && primitives.uvsNeedsFix === true ) { - - const count = ( position.array.length - prevLength ) / position.stride; - - for ( let i = 0; i < count; i ++ ) { - - // fill missing uv coordinates - - uv.array.push( 0, 0 ); - - } - - } - - break; - - case 'NORMAL': - buildGeometryData( primitive, sources[ id ], input.offset, normal.array ); - normal.stride = sources[ id ].stride; - break; - - case 'COLOR': - buildGeometryData( primitive, sources[ id ], input.offset, color.array ); - color.stride = sources[ id ].stride; - break; - - case 'TEXCOORD': - buildGeometryData( primitive, sources[ id ], input.offset, uv.array ); - uv.stride = sources[ id ].stride; - break; - - case 'TEXCOORD1': - buildGeometryData( primitive, sources[ id ], input.offset, uv1.array ); - uv.stride = sources[ id ].stride; - break; - - default: - console.warn( 'THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.', key ); - - } - - } - - break; - - case 'NORMAL': - buildGeometryData( primitive, sources[ input.id ], input.offset, normal.array ); - normal.stride = sources[ input.id ].stride; - break; - - case 'COLOR': - buildGeometryData( primitive, sources[ input.id ], input.offset, color.array, true ); - color.stride = sources[ input.id ].stride; - break; - - case 'TEXCOORD': - buildGeometryData( primitive, sources[ input.id ], input.offset, uv.array ); - uv.stride = sources[ input.id ].stride; - break; - - case 'TEXCOORD1': - buildGeometryData( primitive, sources[ input.id ], input.offset, uv1.array ); - uv1.stride = sources[ input.id ].stride; - break; - - } - - } - - } - - // build geometry - - if ( position.array.length > 0 ) geometry.setAttribute( 'position', new Float32BufferAttribute( position.array, position.stride ) ); - if ( normal.array.length > 0 ) geometry.setAttribute( 'normal', new Float32BufferAttribute( normal.array, normal.stride ) ); - if ( color.array.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( color.array, color.stride ) ); - if ( uv.array.length > 0 ) geometry.setAttribute( 'uv', new Float32BufferAttribute( uv.array, uv.stride ) ); - if ( uv1.array.length > 0 ) geometry.setAttribute( 'uv1', new Float32BufferAttribute( uv1.array, uv1.stride ) ); - - if ( skinIndex.array.length > 0 ) geometry.setAttribute( 'skinIndex', new Float32BufferAttribute( skinIndex.array, skinIndex.stride ) ); - if ( skinWeight.array.length > 0 ) geometry.setAttribute( 'skinWeight', new Float32BufferAttribute( skinWeight.array, skinWeight.stride ) ); - - build.data = geometry; - build.type = primitives[ 0 ].type; - build.materialKeys = materialKeys; - - return build; - - } - - function buildGeometryData( primitive, source, offset, array, isColor = false ) { - - const indices = primitive.p; - const stride = primitive.stride; - const vcount = primitive.vcount; - - function pushVector( i ) { - - let index = indices[ i + offset ] * sourceStride; - const length = index + sourceStride; - - for ( ; index < length; index ++ ) { - - array.push( sourceArray[ index ] ); - - } - - if ( isColor ) { - - // convert the vertex colors from srgb to linear if present - const startIndex = array.length - sourceStride - 1; - tempColor.setRGB( - array[ startIndex + 0 ], - array[ startIndex + 1 ], - array[ startIndex + 2 ] - ).convertSRGBToLinear(); - - array[ startIndex + 0 ] = tempColor.r; - array[ startIndex + 1 ] = tempColor.g; - array[ startIndex + 2 ] = tempColor.b; - - } - - } - - const sourceArray = source.array; - const sourceStride = source.stride; - - if ( primitive.vcount !== undefined ) { - - let index = 0; - - for ( let i = 0, l = vcount.length; i < l; i ++ ) { - - const count = vcount[ i ]; - - if ( count === 4 ) { - - const a = index + stride * 0; - const b = index + stride * 1; - const c = index + stride * 2; - const d = index + stride * 3; - - pushVector( a ); pushVector( b ); pushVector( d ); - pushVector( b ); pushVector( c ); pushVector( d ); - - } else if ( count === 3 ) { - - const a = index + stride * 0; - const b = index + stride * 1; - const c = index + stride * 2; - - pushVector( a ); pushVector( b ); pushVector( c ); - - } else if ( count > 4 ) { - - for ( let k = 1, kl = ( count - 2 ); k <= kl; k ++ ) { - - const a = index + stride * 0; - const b = index + stride * k; - const c = index + stride * ( k + 1 ); - - pushVector( a ); pushVector( b ); pushVector( c ); - - } - - } - - index += stride * count; - - } - - } else { - - for ( let i = 0, l = indices.length; i < l; i += stride ) { - - pushVector( i ); - - } - - } - - } - - function getGeometry( id ) { - - return getBuild( library.geometries[ id ], buildGeometry ); - - } - - // kinematics - - function parseKinematicsModel( xml ) { - - const data = { - name: xml.getAttribute( 'name' ) || '', - joints: {}, - links: [] - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'technique_common': - parseKinematicsTechniqueCommon( child, data ); - break; - - } - - } - - library.kinematicsModels[ xml.getAttribute( 'id' ) ] = data; - - } - - function buildKinematicsModel( data ) { - - if ( data.build !== undefined ) return data.build; - - return data; - - } - - function getKinematicsModel( id ) { - - return getBuild( library.kinematicsModels[ id ], buildKinematicsModel ); - - } - - function parseKinematicsTechniqueCommon( xml, data ) { - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'joint': - data.joints[ child.getAttribute( 'sid' ) ] = parseKinematicsJoint( child ); - break; - - case 'link': - data.links.push( parseKinematicsLink( child ) ); - break; - - } - - } - - } - - function parseKinematicsJoint( xml ) { - - let data; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'prismatic': - case 'revolute': - data = parseKinematicsJointParameter( child ); - break; - - } - - } - - return data; - - } - - function parseKinematicsJointParameter( xml ) { - - const data = { - sid: xml.getAttribute( 'sid' ), - name: xml.getAttribute( 'name' ) || '', - axis: new Vector3(), - limits: { - min: 0, - max: 0 - }, - type: xml.nodeName, - static: false, - zeroPosition: 0, - middlePosition: 0 - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'axis': - const array = parseFloats( child.textContent ); - data.axis.fromArray( array ); - break; - case 'limits': - const max = child.getElementsByTagName( 'max' )[ 0 ]; - const min = child.getElementsByTagName( 'min' )[ 0 ]; - - data.limits.max = parseFloat( max.textContent ); - data.limits.min = parseFloat( min.textContent ); - break; - - } - - } - - // if min is equal to or greater than max, consider the joint static - - if ( data.limits.min >= data.limits.max ) { - - data.static = true; - - } - - // calculate middle position - - data.middlePosition = ( data.limits.min + data.limits.max ) / 2.0; - - return data; - - } - - function parseKinematicsLink( xml ) { - - const data = { - sid: xml.getAttribute( 'sid' ), - name: xml.getAttribute( 'name' ) || '', - attachments: [], - transforms: [] - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'attachment_full': - data.attachments.push( parseKinematicsAttachment( child ) ); - break; - - case 'matrix': - case 'translate': - case 'rotate': - data.transforms.push( parseKinematicsTransform( child ) ); - break; - - } - - } - - return data; - - } - - function parseKinematicsAttachment( xml ) { - - const data = { - joint: xml.getAttribute( 'joint' ).split( '/' ).pop(), - transforms: [], - links: [] - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'link': - data.links.push( parseKinematicsLink( child ) ); - break; - - case 'matrix': - case 'translate': - case 'rotate': - data.transforms.push( parseKinematicsTransform( child ) ); - break; - - } - - } - - return data; - - } - - function parseKinematicsTransform( xml ) { - - const data = { - type: xml.nodeName - }; - - const array = parseFloats( xml.textContent ); - - switch ( data.type ) { - - case 'matrix': - data.obj = new Matrix4(); - data.obj.fromArray( array ).transpose(); - break; - - case 'translate': - data.obj = new Vector3(); - data.obj.fromArray( array ); - break; - - case 'rotate': - data.obj = new Vector3(); - data.obj.fromArray( array ); - data.angle = MathUtils.degToRad( array[ 3 ] ); - break; - - } - - return data; - - } - - // physics - - function parsePhysicsModel( xml ) { - - const data = { - name: xml.getAttribute( 'name' ) || '', - rigidBodies: {} - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'rigid_body': - data.rigidBodies[ child.getAttribute( 'name' ) ] = {}; - parsePhysicsRigidBody( child, data.rigidBodies[ child.getAttribute( 'name' ) ] ); - break; - - } - - } - - library.physicsModels[ xml.getAttribute( 'id' ) ] = data; - - } - - function parsePhysicsRigidBody( xml, data ) { - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'technique_common': - parsePhysicsTechniqueCommon( child, data ); - break; - - } - - } - - } - - function parsePhysicsTechniqueCommon( xml, data ) { - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'inertia': - data.inertia = parseFloats( child.textContent ); - break; - - case 'mass': - data.mass = parseFloats( child.textContent )[ 0 ]; - break; - - } - - } - - } - - // scene - - function parseKinematicsScene( xml ) { - - const data = { - bindJointAxis: [] - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'bind_joint_axis': - data.bindJointAxis.push( parseKinematicsBindJointAxis( child ) ); - break; - - } - - } - - library.kinematicsScenes[ parseId( xml.getAttribute( 'url' ) ) ] = data; - - } - - function parseKinematicsBindJointAxis( xml ) { - - const data = { - target: xml.getAttribute( 'target' ).split( '/' ).pop() - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - switch ( child.nodeName ) { - - case 'axis': - const param = child.getElementsByTagName( 'param' )[ 0 ]; - data.axis = param.textContent; - const tmpJointIndex = data.axis.split( 'inst_' ).pop().split( 'axis' )[ 0 ]; - data.jointIndex = tmpJointIndex.substring( 0, tmpJointIndex.length - 1 ); - break; - - } - - } - - return data; - - } - - function buildKinematicsScene( data ) { - - if ( data.build !== undefined ) return data.build; - - return data; - - } - - function getKinematicsScene( id ) { - - return getBuild( library.kinematicsScenes[ id ], buildKinematicsScene ); - - } - - function setupKinematics() { - - const kinematicsModelId = Object.keys( library.kinematicsModels )[ 0 ]; - const kinematicsSceneId = Object.keys( library.kinematicsScenes )[ 0 ]; - const visualSceneId = Object.keys( library.visualScenes )[ 0 ]; - - if ( kinematicsModelId === undefined || kinematicsSceneId === undefined ) return; - - const kinematicsModel = getKinematicsModel( kinematicsModelId ); - const kinematicsScene = getKinematicsScene( kinematicsSceneId ); - const visualScene = getVisualScene( visualSceneId ); - - const bindJointAxis = kinematicsScene.bindJointAxis; - const jointMap = {}; - - for ( let i = 0, l = bindJointAxis.length; i < l; i ++ ) { - - const axis = bindJointAxis[ i ]; - - // the result of the following query is an element of type 'translate', 'rotate','scale' or 'matrix' - - const targetElement = collada.querySelector( '[sid="' + axis.target + '"]' ); - - if ( targetElement ) { - - // get the parent of the transform element - - const parentVisualElement = targetElement.parentElement; - - // connect the joint of the kinematics model with the element in the visual scene - - connect( axis.jointIndex, parentVisualElement ); - - } - - } - - function connect( jointIndex, visualElement ) { - - const visualElementName = visualElement.getAttribute( 'name' ); - const joint = kinematicsModel.joints[ jointIndex ]; - - visualScene.traverse( function ( object ) { - - if ( object.name === visualElementName ) { - - jointMap[ jointIndex ] = { - object: object, - transforms: buildTransformList( visualElement ), - joint: joint, - position: joint.zeroPosition - }; - - } - - } ); - - } - - const m0 = new Matrix4(); - - kinematics = { - - joints: kinematicsModel && kinematicsModel.joints, - - getJointValue: function ( jointIndex ) { - - const jointData = jointMap[ jointIndex ]; - - if ( jointData ) { - - return jointData.position; - - } else { - - console.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' doesn\'t exist.' ); - - } - - }, - - setJointValue: function ( jointIndex, value ) { - - const jointData = jointMap[ jointIndex ]; - - if ( jointData ) { - - const joint = jointData.joint; - - if ( value > joint.limits.max || value < joint.limits.min ) { - - console.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' value ' + value + ' outside of limits (min: ' + joint.limits.min + ', max: ' + joint.limits.max + ').' ); - - } else if ( joint.static ) { - - console.warn( 'THREE.ColladaLoader: Joint ' + jointIndex + ' is static.' ); - - } else { - - const object = jointData.object; - const axis = joint.axis; - const transforms = jointData.transforms; - - matrix.identity(); - - // each update, we have to apply all transforms in the correct order - - for ( let i = 0; i < transforms.length; i ++ ) { - - const transform = transforms[ i ]; - - // if there is a connection of the transform node with a joint, apply the joint value - - if ( transform.sid && transform.sid.indexOf( jointIndex ) !== - 1 ) { - - switch ( joint.type ) { - - case 'revolute': - matrix.multiply( m0.makeRotationAxis( axis, MathUtils.degToRad( value ) ) ); - break; - - case 'prismatic': - matrix.multiply( m0.makeTranslation( axis.x * value, axis.y * value, axis.z * value ) ); - break; - - default: - console.warn( 'THREE.ColladaLoader: Unknown joint type: ' + joint.type ); - break; - - } - - } else { - - switch ( transform.type ) { - - case 'matrix': - matrix.multiply( transform.obj ); - break; - - case 'translate': - matrix.multiply( m0.makeTranslation( transform.obj.x, transform.obj.y, transform.obj.z ) ); - break; - - case 'scale': - matrix.scale( transform.obj ); - break; - - case 'rotate': - matrix.multiply( m0.makeRotationAxis( transform.obj, transform.angle ) ); - break; - - } - - } - - } - - object.matrix.copy( matrix ); - object.matrix.decompose( object.position, object.quaternion, object.scale ); - - jointMap[ jointIndex ].position = value; - - } - - } else { - - console.log( 'THREE.ColladaLoader: ' + jointIndex + ' does not exist.' ); - - } - - } - - }; - - } - - function buildTransformList( node ) { - - const transforms = []; - - const xml = collada.querySelector( '[id="' + node.id + '"]' ); - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - let array, vector; - - switch ( child.nodeName ) { - - case 'matrix': - array = parseFloats( child.textContent ); - const matrix = new Matrix4().fromArray( array ).transpose(); - transforms.push( { - sid: child.getAttribute( 'sid' ), - type: child.nodeName, - obj: matrix - } ); - break; - - case 'translate': - case 'scale': - array = parseFloats( child.textContent ); - vector = new Vector3().fromArray( array ); - transforms.push( { - sid: child.getAttribute( 'sid' ), - type: child.nodeName, - obj: vector - } ); - break; - - case 'rotate': - array = parseFloats( child.textContent ); - vector = new Vector3().fromArray( array ); - const angle = MathUtils.degToRad( array[ 3 ] ); - transforms.push( { - sid: child.getAttribute( 'sid' ), - type: child.nodeName, - obj: vector, - angle: angle - } ); - break; - - } - - } - - return transforms; - - } - - // nodes - - function prepareNodes( xml ) { - - const elements = xml.getElementsByTagName( 'node' ); - - // ensure all node elements have id attributes - - for ( let i = 0; i < elements.length; i ++ ) { - - const element = elements[ i ]; - - if ( element.hasAttribute( 'id' ) === false ) { - - element.setAttribute( 'id', generateId() ); - - } - - } - - } - - const matrix = new Matrix4(); - const vector = new Vector3(); - - function parseNode( xml ) { - - const data = { - name: xml.getAttribute( 'name' ) || '', - type: xml.getAttribute( 'type' ), - id: xml.getAttribute( 'id' ), - sid: xml.getAttribute( 'sid' ), - matrix: new Matrix4(), - nodes: [], - instanceCameras: [], - instanceControllers: [], - instanceLights: [], - instanceGeometries: [], - instanceNodes: [], - transforms: {} - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - if ( child.nodeType !== 1 ) continue; - - let array; - - switch ( child.nodeName ) { - - case 'node': - data.nodes.push( child.getAttribute( 'id' ) ); - parseNode( child ); - break; - - case 'instance_camera': - data.instanceCameras.push( parseId( child.getAttribute( 'url' ) ) ); - break; - - case 'instance_controller': - data.instanceControllers.push( parseNodeInstance( child ) ); - break; - - case 'instance_light': - data.instanceLights.push( parseId( child.getAttribute( 'url' ) ) ); - break; - - case 'instance_geometry': - data.instanceGeometries.push( parseNodeInstance( child ) ); - break; - - case 'instance_node': - data.instanceNodes.push( parseId( child.getAttribute( 'url' ) ) ); - break; - - case 'matrix': - array = parseFloats( child.textContent ); - data.matrix.multiply( matrix.fromArray( array ).transpose() ); - data.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName; - break; - - case 'translate': - array = parseFloats( child.textContent ); - vector.fromArray( array ); - data.matrix.multiply( matrix.makeTranslation( vector.x, vector.y, vector.z ) ); - data.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName; - break; - - case 'rotate': - array = parseFloats( child.textContent ); - const angle = MathUtils.degToRad( array[ 3 ] ); - data.matrix.multiply( matrix.makeRotationAxis( vector.fromArray( array ), angle ) ); - data.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName; - break; - - case 'scale': - array = parseFloats( child.textContent ); - data.matrix.scale( vector.fromArray( array ) ); - data.transforms[ child.getAttribute( 'sid' ) ] = child.nodeName; - break; - - case 'extra': - break; - - default: - console.log( child ); - - } - - } - - if ( hasNode( data.id ) ) { - - console.warn( 'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.', data.id ); - - } else { - - library.nodes[ data.id ] = data; - - } - - return data; - - } - - function parseNodeInstance( xml ) { - - const data = { - id: parseId( xml.getAttribute( 'url' ) ), - materials: {}, - skeletons: [] - }; - - for ( let i = 0; i < xml.childNodes.length; i ++ ) { - - const child = xml.childNodes[ i ]; - - switch ( child.nodeName ) { - - case 'bind_material': - const instances = child.getElementsByTagName( 'instance_material' ); - - for ( let j = 0; j < instances.length; j ++ ) { - - const instance = instances[ j ]; - const symbol = instance.getAttribute( 'symbol' ); - const target = instance.getAttribute( 'target' ); - - data.materials[ symbol ] = parseId( target ); - - } - - break; - - case 'skeleton': - data.skeletons.push( parseId( child.textContent ) ); - break; - - default: - break; - - } - - } - - return data; - - } - - function buildSkeleton( skeletons, joints ) { - - const boneData = []; - const sortedBoneData = []; - - let i, j, data; - - // a skeleton can have multiple root bones. collada expresses this - // situtation with multiple "skeleton" tags per controller instance - - for ( i = 0; i < skeletons.length; i ++ ) { - - const skeleton = skeletons[ i ]; - - let root; - - if ( hasNode( skeleton ) ) { - - root = getNode( skeleton ); - buildBoneHierarchy( root, joints, boneData ); - - } else if ( hasVisualScene( skeleton ) ) { - - // handle case where the skeleton refers to the visual scene (#13335) - - const visualScene = library.visualScenes[ skeleton ]; - const children = visualScene.children; - - for ( let j = 0; j < children.length; j ++ ) { - - const child = children[ j ]; - - if ( child.type === 'JOINT' ) { - - const root = getNode( child.id ); - buildBoneHierarchy( root, joints, boneData ); - - } - - } - - } else { - - console.error( 'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:', skeleton ); - - } - - } - - // sort bone data (the order is defined in the corresponding controller) - - for ( i = 0; i < joints.length; i ++ ) { - - for ( j = 0; j < boneData.length; j ++ ) { - - data = boneData[ j ]; - - if ( data.bone.name === joints[ i ].name ) { - - sortedBoneData[ i ] = data; - data.processed = true; - break; - - } - - } - - } - - // add unprocessed bone data at the end of the list - - for ( i = 0; i < boneData.length; i ++ ) { - - data = boneData[ i ]; - - if ( data.processed === false ) { - - sortedBoneData.push( data ); - data.processed = true; - - } - - } - - // setup arrays for skeleton creation - - const bones = []; - const boneInverses = []; - - for ( i = 0; i < sortedBoneData.length; i ++ ) { - - data = sortedBoneData[ i ]; - - bones.push( data.bone ); - boneInverses.push( data.boneInverse ); - - } - - return new Skeleton( bones, boneInverses ); - - } - - function buildBoneHierarchy( root, joints, boneData ) { - - // setup bone data from visual scene - - root.traverse( function ( object ) { - - if ( object.isBone === true ) { - - let boneInverse; - - // retrieve the boneInverse from the controller data - - for ( let i = 0; i < joints.length; i ++ ) { - - const joint = joints[ i ]; - - if ( joint.name === object.name ) { - - boneInverse = joint.boneInverse; - break; - - } - - } - - if ( boneInverse === undefined ) { - - // Unfortunately, there can be joints in the visual scene that are not part of the - // corresponding controller. In this case, we have to create a dummy boneInverse matrix - // for the respective bone. This bone won't affect any vertices, because there are no skin indices - // and weights defined for it. But we still have to add the bone to the sorted bone list in order to - // ensure a correct animation of the model. - - boneInverse = new Matrix4(); - - } - - boneData.push( { bone: object, boneInverse: boneInverse, processed: false } ); - - } - - } ); - - } - - function buildNode( data ) { - - const objects = []; - - const matrix = data.matrix; - const nodes = data.nodes; - const type = data.type; - const instanceCameras = data.instanceCameras; - const instanceControllers = data.instanceControllers; - const instanceLights = data.instanceLights; - const instanceGeometries = data.instanceGeometries; - const instanceNodes = data.instanceNodes; - - // nodes - - for ( let i = 0, l = nodes.length; i < l; i ++ ) { - - objects.push( getNode( nodes[ i ] ) ); - - } - - // instance cameras - - for ( let i = 0, l = instanceCameras.length; i < l; i ++ ) { - - const instanceCamera = getCamera( instanceCameras[ i ] ); - - if ( instanceCamera !== null ) { - - objects.push( instanceCamera.clone() ); - - } - - } - - // instance controllers - - for ( let i = 0, l = instanceControllers.length; i < l; i ++ ) { - - const instance = instanceControllers[ i ]; - const controller = getController( instance.id ); - const geometries = getGeometry( controller.id ); - const newObjects = buildObjects( geometries, instance.materials ); - - const skeletons = instance.skeletons; - const joints = controller.skin.joints; - - const skeleton = buildSkeleton( skeletons, joints ); - - for ( let j = 0, jl = newObjects.length; j < jl; j ++ ) { - - const object = newObjects[ j ]; - - if ( object.isSkinnedMesh ) { - - object.bind( skeleton, controller.skin.bindMatrix ); - object.normalizeSkinWeights(); - - } - - objects.push( object ); - - } - - } - - // instance lights - - for ( let i = 0, l = instanceLights.length; i < l; i ++ ) { - - const instanceLight = getLight( instanceLights[ i ] ); - - if ( instanceLight !== null ) { - - objects.push( instanceLight.clone() ); - - } - - } - - // instance geometries - - for ( let i = 0, l = instanceGeometries.length; i < l; i ++ ) { - - const instance = instanceGeometries[ i ]; - - // a single geometry instance in collada can lead to multiple object3Ds. - // this is the case when primitives are combined like triangles and lines - - const geometries = getGeometry( instance.id ); - const newObjects = buildObjects( geometries, instance.materials ); - - for ( let j = 0, jl = newObjects.length; j < jl; j ++ ) { - - objects.push( newObjects[ j ] ); - - } - - } - - // instance nodes - - for ( let i = 0, l = instanceNodes.length; i < l; i ++ ) { - - objects.push( getNode( instanceNodes[ i ] ).clone() ); - - } - - let object; - - if ( nodes.length === 0 && objects.length === 1 ) { - - object = objects[ 0 ]; - - } else { - - object = ( type === 'JOINT' ) ? new Bone() : new Group(); - - for ( let i = 0; i < objects.length; i ++ ) { - - object.add( objects[ i ] ); - - } - - } - - object.name = ( type === 'JOINT' ) ? data.sid : data.name; - object.matrix.copy( matrix ); - object.matrix.decompose( object.position, object.quaternion, object.scale ); - - return object; - - } - - const fallbackMaterial = new MeshBasicMaterial( { - name: Loader.DEFAULT_MATERIAL_NAME, - color: 0xff00ff - } ); - - function resolveMaterialBinding( keys, instanceMaterials ) { - - const materials = []; - - for ( let i = 0, l = keys.length; i < l; i ++ ) { - - const id = instanceMaterials[ keys[ i ] ]; - - if ( id === undefined ) { - - console.warn( 'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.', keys[ i ] ); - materials.push( fallbackMaterial ); - - } else { - - materials.push( getMaterial( id ) ); - - } - - } - - return materials; - - } - - function buildObjects( geometries, instanceMaterials ) { - - const objects = []; - - for ( const type in geometries ) { - - const geometry = geometries[ type ]; - - const materials = resolveMaterialBinding( geometry.materialKeys, instanceMaterials ); - - // handle case if no materials are defined - - if ( materials.length === 0 ) { - - if ( type === 'lines' || type === 'linestrips' ) { - - materials.push( new LineBasicMaterial() ); - - } else { - - materials.push( new MeshPhongMaterial() ); - - } - - } - - // Collada allows to use phong and lambert materials with lines. Replacing these cases with LineBasicMaterial. - - if ( type === 'lines' || type === 'linestrips' ) { - - for ( let i = 0, l = materials.length; i < l; i ++ ) { - - const material = materials[ i ]; - - if ( material.isMeshPhongMaterial === true || material.isMeshLambertMaterial === true ) { - - const lineMaterial = new LineBasicMaterial(); - - // copy compatible properties - - lineMaterial.color.copy( material.color ); - lineMaterial.opacity = material.opacity; - lineMaterial.transparent = material.transparent; - - // replace material - - materials[ i ] = lineMaterial; - - } - - } - - } - - // regard skinning - - const skinning = ( geometry.data.attributes.skinIndex !== undefined ); - - // choose between a single or multi materials (material array) - - const material = ( materials.length === 1 ) ? materials[ 0 ] : materials; - - // now create a specific 3D object - - let object; - - switch ( type ) { - - case 'lines': - object = new LineSegments( geometry.data, material ); - break; - - case 'linestrips': - object = new Line( geometry.data, material ); - break; - - case 'triangles': - case 'polylist': - if ( skinning ) { - - object = new SkinnedMesh( geometry.data, material ); - - } else { - - object = new Mesh( geometry.data, material ); - - } - - break; - - } - - objects.push( object ); - - } - - return objects; - - } - - function hasNode( id ) { - - return library.nodes[ id ] !== undefined; - - } - - function getNode( id ) { - - return getBuild( library.nodes[ id ], buildNode ); - - } - - // visual scenes - - function parseVisualScene( xml ) { - - const data = { - name: xml.getAttribute( 'name' ), - children: [] - }; - - prepareNodes( xml ); - - const elements = getElementsByTagName( xml, 'node' ); - - for ( let i = 0; i < elements.length; i ++ ) { - - data.children.push( parseNode( elements[ i ] ) ); - - } - - library.visualScenes[ xml.getAttribute( 'id' ) ] = data; - - } - - function buildVisualScene( data ) { - - const group = new Group(); - group.name = data.name; - - const children = data.children; - - for ( let i = 0; i < children.length; i ++ ) { - - const child = children[ i ]; - - group.add( getNode( child.id ) ); - - } - - return group; - - } - - function hasVisualScene( id ) { - - return library.visualScenes[ id ] !== undefined; - - } - - function getVisualScene( id ) { - - return getBuild( library.visualScenes[ id ], buildVisualScene ); - - } - - // scenes - - function parseScene( xml ) { - - const instance = getElementsByTagName( xml, 'instance_visual_scene' )[ 0 ]; - return getVisualScene( parseId( instance.getAttribute( 'url' ) ) ); - - } - - function setupAnimations() { - - const clips = library.clips; - - if ( isEmpty( clips ) === true ) { - - if ( isEmpty( library.animations ) === false ) { - - // if there are animations but no clips, we create a default clip for playback - - const tracks = []; - - for ( const id in library.animations ) { - - const animationTracks = getAnimation( id ); - - for ( let i = 0, l = animationTracks.length; i < l; i ++ ) { - - tracks.push( animationTracks[ i ] ); - - } - - } - - animations.push( new AnimationClip( 'default', - 1, tracks ) ); - - } - - } else { - - for ( const id in clips ) { - - animations.push( getAnimationClip( id ) ); - - } - - } - - } - - // convert the parser error element into text with each child elements text - // separated by new lines. - - function parserErrorToText( parserError ) { - - let result = ''; - const stack = [ parserError ]; - - while ( stack.length ) { - - const node = stack.shift(); - - if ( node.nodeType === Node.TEXT_NODE ) { - - result += node.textContent; - - } else { - - result += '\n'; - stack.push.apply( stack, node.childNodes ); - - } - - } - - return result.trim(); - - } - - if ( text.length === 0 ) { - - return { scene: new Scene() }; - - } - - const xml = new DOMParser().parseFromString( text, 'application/xml' ); - - const collada = getElementsByTagName( xml, 'COLLADA' )[ 0 ]; - - const parserError = xml.getElementsByTagName( 'parsererror' )[ 0 ]; - if ( parserError !== undefined ) { - - // Chrome will return parser error with a div in it - - const errorElement = getElementsByTagName( parserError, 'div' )[ 0 ]; - let errorText; - - if ( errorElement ) { - - errorText = errorElement.textContent; - - } else { - - errorText = parserErrorToText( parserError ); - - } - - console.error( 'THREE.ColladaLoader: Failed to parse collada file.\n', errorText ); - - return null; - - } - - // metadata - - const version = collada.getAttribute( 'version' ); - console.debug( 'THREE.ColladaLoader: File version', version ); - - const asset = parseAsset( getElementsByTagName( collada, 'asset' )[ 0 ] ); - const textureLoader = new TextureLoader( this.manager ); - textureLoader.setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin ); - - let tgaLoader; - - if ( TGALoader ) { - - tgaLoader = new TGALoader( this.manager ); - tgaLoader.setPath( this.resourcePath || path ); - - } - - // - - const tempColor = new Color(); - const animations = []; - let kinematics = {}; - let count = 0; - - // - - const library = { - animations: {}, - clips: {}, - controllers: {}, - images: {}, - effects: {}, - materials: {}, - cameras: {}, - lights: {}, - geometries: {}, - nodes: {}, - visualScenes: {}, - kinematicsModels: {}, - physicsModels: {}, - kinematicsScenes: {} - }; - - parseLibrary( collada, 'library_animations', 'animation', parseAnimation ); - parseLibrary( collada, 'library_animation_clips', 'animation_clip', parseAnimationClip ); - parseLibrary( collada, 'library_controllers', 'controller', parseController ); - parseLibrary( collada, 'library_images', 'image', parseImage ); - parseLibrary( collada, 'library_effects', 'effect', parseEffect ); - parseLibrary( collada, 'library_materials', 'material', parseMaterial ); - parseLibrary( collada, 'library_cameras', 'camera', parseCamera ); - parseLibrary( collada, 'library_lights', 'light', parseLight ); - parseLibrary( collada, 'library_geometries', 'geometry', parseGeometry ); - parseLibrary( collada, 'library_nodes', 'node', parseNode ); - parseLibrary( collada, 'library_visual_scenes', 'visual_scene', parseVisualScene ); - parseLibrary( collada, 'library_kinematics_models', 'kinematics_model', parseKinematicsModel ); - parseLibrary( collada, 'library_physics_models', 'physics_model', parsePhysicsModel ); - parseLibrary( collada, 'scene', 'instance_kinematics_scene', parseKinematicsScene ); - - buildLibrary( library.animations, buildAnimation ); - buildLibrary( library.clips, buildAnimationClip ); - buildLibrary( library.controllers, buildController ); - buildLibrary( library.images, buildImage ); - buildLibrary( library.effects, buildEffect ); - buildLibrary( library.materials, buildMaterial ); - buildLibrary( library.cameras, buildCamera ); - buildLibrary( library.lights, buildLight ); - buildLibrary( library.geometries, buildGeometry ); - buildLibrary( library.visualScenes, buildVisualScene ); - - setupAnimations(); - setupKinematics(); - - const scene = parseScene( getElementsByTagName( collada, 'scene' )[ 0 ] ); - scene.animations = animations; - - if ( asset.upAxis === 'Z_UP' ) { - - console.warn( 'THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289.' ); - scene.rotation.set( - Math.PI / 2, 0, 0 ); - - } - - scene.scale.multiplyScalar( asset.unit ); - - return { - get animations() { - - console.warn( 'THREE.ColladaLoader: Please access animations over scene.animations now.' ); - return animations; - - }, - kinematics: kinematics, - library: library, - scene: scene - }; - - } - -} - -export { ColladaLoader }; diff --git a/three/addons/loaders/DDSLoader.js b/three/addons/loaders/DDSLoader.js deleted file mode 100644 index cef551b..0000000 --- a/three/addons/loaders/DDSLoader.js +++ /dev/null @@ -1,317 +0,0 @@ -import { - CompressedTextureLoader, - RGBAFormat, - RGBA_S3TC_DXT3_Format, - RGBA_S3TC_DXT5_Format, - RGB_ETC1_Format, - RGB_S3TC_DXT1_Format, - RGB_BPTC_SIGNED_Format, - RGB_BPTC_UNSIGNED_Format -} from 'three'; - -class DDSLoader extends CompressedTextureLoader { - - constructor( manager ) { - - super( manager ); - - } - - parse( buffer, loadMipmaps ) { - - const dds = { mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1 }; - - // Adapted from @toji's DDS utils - // https://github.com/toji/webgl-texture-utils/blob/master/texture-util/dds.js - - // All values and structures referenced from: - // http://msdn.microsoft.com/en-us/library/bb943991.aspx/ - - const DDS_MAGIC = 0x20534444; - - // const DDSD_CAPS = 0x1; - // const DDSD_HEIGHT = 0x2; - // const DDSD_WIDTH = 0x4; - // const DDSD_PITCH = 0x8; - // const DDSD_PIXELFORMAT = 0x1000; - const DDSD_MIPMAPCOUNT = 0x20000; - // const DDSD_LINEARSIZE = 0x80000; - // const DDSD_DEPTH = 0x800000; - - // const DDSCAPS_COMPLEX = 0x8; - // const DDSCAPS_MIPMAP = 0x400000; - // const DDSCAPS_TEXTURE = 0x1000; - - const DDSCAPS2_CUBEMAP = 0x200; - const DDSCAPS2_CUBEMAP_POSITIVEX = 0x400; - const DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800; - const DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000; - const DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000; - const DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000; - const DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000; - // const DDSCAPS2_VOLUME = 0x200000; - - // const DDPF_ALPHAPIXELS = 0x1; - // const DDPF_ALPHA = 0x2; - // const DDPF_FOURCC = 0x4; - // const DDPF_RGB = 0x40; - // const DDPF_YUV = 0x200; - // const DDPF_LUMINANCE = 0x20000; - - const DXGI_FORMAT_BC6H_UF16 = 95; - const DXGI_FORMAT_BC6H_SF16 = 96; - - function fourCCToInt32( value ) { - - return value.charCodeAt( 0 ) + - ( value.charCodeAt( 1 ) << 8 ) + - ( value.charCodeAt( 2 ) << 16 ) + - ( value.charCodeAt( 3 ) << 24 ); - - } - - function int32ToFourCC( value ) { - - return String.fromCharCode( - value & 0xff, - ( value >> 8 ) & 0xff, - ( value >> 16 ) & 0xff, - ( value >> 24 ) & 0xff - ); - - } - - function loadARGBMip( buffer, dataOffset, width, height ) { - - const dataLength = width * height * 4; - const srcBuffer = new Uint8Array( buffer, dataOffset, dataLength ); - const byteArray = new Uint8Array( dataLength ); - let dst = 0; - let src = 0; - for ( let y = 0; y < height; y ++ ) { - - for ( let x = 0; x < width; x ++ ) { - - const b = srcBuffer[ src ]; src ++; - const g = srcBuffer[ src ]; src ++; - const r = srcBuffer[ src ]; src ++; - const a = srcBuffer[ src ]; src ++; - byteArray[ dst ] = r; dst ++; //r - byteArray[ dst ] = g; dst ++; //g - byteArray[ dst ] = b; dst ++; //b - byteArray[ dst ] = a; dst ++; //a - - } - - } - - return byteArray; - - } - - const FOURCC_DXT1 = fourCCToInt32( 'DXT1' ); - const FOURCC_DXT3 = fourCCToInt32( 'DXT3' ); - const FOURCC_DXT5 = fourCCToInt32( 'DXT5' ); - const FOURCC_ETC1 = fourCCToInt32( 'ETC1' ); - const FOURCC_DX10 = fourCCToInt32( 'DX10' ); - - const headerLengthInt = 31; // The header length in 32 bit ints - const extendedHeaderLengthInt = 5; // The extended header length in 32 bit ints - - // Offsets into the header array - - const off_magic = 0; - - const off_size = 1; - const off_flags = 2; - const off_height = 3; - const off_width = 4; - - const off_mipmapCount = 7; - - // const off_pfFlags = 20; - const off_pfFourCC = 21; - const off_RGBBitCount = 22; - const off_RBitMask = 23; - const off_GBitMask = 24; - const off_BBitMask = 25; - const off_ABitMask = 26; - - // const off_caps = 27; - const off_caps2 = 28; - // const off_caps3 = 29; - // const off_caps4 = 30; - - // If fourCC = DX10, the extended header starts after 32 - const off_dxgiFormat = 0; - - // Parse header - - const header = new Int32Array( buffer, 0, headerLengthInt ); - - if ( header[ off_magic ] !== DDS_MAGIC ) { - - console.error( 'THREE.DDSLoader.parse: Invalid magic number in DDS header.' ); - return dds; - - } - - let blockBytes; - - const fourCC = header[ off_pfFourCC ]; - - let isRGBAUncompressed = false; - - let dataOffset = header[ off_size ] + 4; - - switch ( fourCC ) { - - case FOURCC_DXT1: - - blockBytes = 8; - dds.format = RGB_S3TC_DXT1_Format; - break; - - case FOURCC_DXT3: - - blockBytes = 16; - dds.format = RGBA_S3TC_DXT3_Format; - break; - - case FOURCC_DXT5: - - blockBytes = 16; - dds.format = RGBA_S3TC_DXT5_Format; - break; - - case FOURCC_ETC1: - - blockBytes = 8; - dds.format = RGB_ETC1_Format; - break; - - case FOURCC_DX10: - - dataOffset += extendedHeaderLengthInt * 4; - const extendedHeader = new Int32Array( buffer, ( headerLengthInt + 1 ) * 4, extendedHeaderLengthInt ); - const dxgiFormat = extendedHeader[ off_dxgiFormat ]; - switch ( dxgiFormat ) { - - case DXGI_FORMAT_BC6H_SF16: { - - blockBytes = 16; - dds.format = RGB_BPTC_SIGNED_Format; - break; - - } - - case DXGI_FORMAT_BC6H_UF16: { - - blockBytes = 16; - dds.format = RGB_BPTC_UNSIGNED_Format; - break; - - } - - default: { - - console.error( 'THREE.DDSLoader.parse: Unsupported DXGI_FORMAT code ', dxgiFormat ); - return dds; - - } - - } - break; - - default: - - if ( header[ off_RGBBitCount ] === 32 - && header[ off_RBitMask ] & 0xff0000 - && header[ off_GBitMask ] & 0xff00 - && header[ off_BBitMask ] & 0xff - && header[ off_ABitMask ] & 0xff000000 ) { - - isRGBAUncompressed = true; - blockBytes = 64; - dds.format = RGBAFormat; - - } else { - - console.error( 'THREE.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC( fourCC ) ); - return dds; - - } - - } - - dds.mipmapCount = 1; - - if ( header[ off_flags ] & DDSD_MIPMAPCOUNT && loadMipmaps !== false ) { - - dds.mipmapCount = Math.max( 1, header[ off_mipmapCount ] ); - - } - - const caps2 = header[ off_caps2 ]; - dds.isCubemap = caps2 & DDSCAPS2_CUBEMAP ? true : false; - if ( dds.isCubemap && ( - ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEX ) || - ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEX ) || - ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEY ) || - ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEY ) || - ! ( caps2 & DDSCAPS2_CUBEMAP_POSITIVEZ ) || - ! ( caps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ ) - ) ) { - - console.error( 'THREE.DDSLoader.parse: Incomplete cubemap faces' ); - return dds; - - } - - dds.width = header[ off_width ]; - dds.height = header[ off_height ]; - - // Extract mipmaps buffers - - const faces = dds.isCubemap ? 6 : 1; - - for ( let face = 0; face < faces; face ++ ) { - - let width = dds.width; - let height = dds.height; - - for ( let i = 0; i < dds.mipmapCount; i ++ ) { - - let byteArray, dataLength; - - if ( isRGBAUncompressed ) { - - byteArray = loadARGBMip( buffer, dataOffset, width, height ); - dataLength = byteArray.length; - - } else { - - dataLength = Math.max( 4, width ) / 4 * Math.max( 4, height ) / 4 * blockBytes; - byteArray = new Uint8Array( buffer, dataOffset, dataLength ); - - } - - const mipmap = { 'data': byteArray, 'width': width, 'height': height }; - dds.mipmaps.push( mipmap ); - - dataOffset += dataLength; - - width = Math.max( width >> 1, 1 ); - height = Math.max( height >> 1, 1 ); - - } - - } - - return dds; - - } - -} - -export { DDSLoader }; diff --git a/three/addons/loaders/DRACOLoader.js b/three/addons/loaders/DRACOLoader.js deleted file mode 100644 index b176ebf..0000000 --- a/three/addons/loaders/DRACOLoader.js +++ /dev/null @@ -1,613 +0,0 @@ -import { - BufferAttribute, - BufferGeometry, - Color, - FileLoader, - Loader, - LinearSRGBColorSpace, - SRGBColorSpace -} from 'three'; - -const _taskCache = new WeakMap(); - -class DRACOLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.decoderPath = ''; - this.decoderConfig = {}; - this.decoderBinary = null; - this.decoderPending = null; - - this.workerLimit = 4; - this.workerPool = []; - this.workerNextTaskID = 1; - this.workerSourceURL = ''; - - this.defaultAttributeIDs = { - position: 'POSITION', - normal: 'NORMAL', - color: 'COLOR', - uv: 'TEX_COORD' - }; - this.defaultAttributeTypes = { - position: 'Float32Array', - normal: 'Float32Array', - color: 'Float32Array', - uv: 'Float32Array' - }; - - } - - setDecoderPath( path ) { - - this.decoderPath = path; - - return this; - - } - - setDecoderConfig( config ) { - - this.decoderConfig = config; - - return this; - - } - - setWorkerLimit( workerLimit ) { - - this.workerLimit = workerLimit; - - return this; - - } - - load( url, onLoad, onProgress, onError ) { - - const loader = new FileLoader( this.manager ); - - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( this.requestHeader ); - loader.setWithCredentials( this.withCredentials ); - - loader.load( url, ( buffer ) => { - - this.parse( buffer, onLoad, onError ); - - }, onProgress, onError ); - - } - - - parse( buffer, onLoad, onError = ()=>{} ) { - - this.decodeDracoFile( buffer, onLoad, null, null, SRGBColorSpace ).catch( onError ); - - } - - decodeDracoFile( buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => {} ) { - - const taskConfig = { - attributeIDs: attributeIDs || this.defaultAttributeIDs, - attributeTypes: attributeTypes || this.defaultAttributeTypes, - useUniqueIDs: !! attributeIDs, - vertexColorSpace: vertexColorSpace, - }; - - return this.decodeGeometry( buffer, taskConfig ).then( callback ).catch( onError ); - - } - - decodeGeometry( buffer, taskConfig ) { - - const taskKey = JSON.stringify( taskConfig ); - - // Check for an existing task using this buffer. A transferred buffer cannot be transferred - // again from this thread. - if ( _taskCache.has( buffer ) ) { - - const cachedTask = _taskCache.get( buffer ); - - if ( cachedTask.key === taskKey ) { - - return cachedTask.promise; - - } else if ( buffer.byteLength === 0 ) { - - // Technically, it would be possible to wait for the previous task to complete, - // transfer the buffer back, and decode again with the second configuration. That - // is complex, and I don't know of any reason to decode a Draco buffer twice in - // different ways, so this is left unimplemented. - throw new Error( - - 'THREE.DRACOLoader: Unable to re-decode a buffer with different ' + - 'settings. Buffer has already been transferred.' - - ); - - } - - } - - // - - let worker; - const taskID = this.workerNextTaskID ++; - const taskCost = buffer.byteLength; - - // Obtain a worker and assign a task, and construct a geometry instance - // when the task completes. - const geometryPending = this._getWorker( taskID, taskCost ) - .then( ( _worker ) => { - - worker = _worker; - - return new Promise( ( resolve, reject ) => { - - worker._callbacks[ taskID ] = { resolve, reject }; - - worker.postMessage( { type: 'decode', id: taskID, taskConfig, buffer }, [ buffer ] ); - - // this.debug(); - - } ); - - } ) - .then( ( message ) => this._createGeometry( message.geometry ) ); - - // Remove task from the task list. - // Note: replaced '.finally()' with '.catch().then()' block - iOS 11 support (#19416) - geometryPending - .catch( () => true ) - .then( () => { - - if ( worker && taskID ) { - - this._releaseTask( worker, taskID ); - - // this.debug(); - - } - - } ); - - // Cache the task result. - _taskCache.set( buffer, { - - key: taskKey, - promise: geometryPending - - } ); - - return geometryPending; - - } - - _createGeometry( geometryData ) { - - const geometry = new BufferGeometry(); - - if ( geometryData.index ) { - - geometry.setIndex( new BufferAttribute( geometryData.index.array, 1 ) ); - - } - - for ( let i = 0; i < geometryData.attributes.length; i ++ ) { - - const result = geometryData.attributes[ i ]; - const name = result.name; - const array = result.array; - const itemSize = result.itemSize; - - const attribute = new BufferAttribute( array, itemSize ); - - if ( name === 'color' ) { - - this._assignVertexColorSpace( attribute, result.vertexColorSpace ); - - attribute.normalized = ( array instanceof Float32Array ) === false; - - } - - geometry.setAttribute( name, attribute ); - - } - - return geometry; - - } - - _assignVertexColorSpace( attribute, inputColorSpace ) { - - // While .drc files do not specify colorspace, the only 'official' tooling - // is PLY and OBJ converters, which use sRGB. We'll assume sRGB when a .drc - // file is passed into .load() or .parse(). GLTFLoader uses internal APIs - // to decode geometry, and vertex colors are already Linear-sRGB in there. - - if ( inputColorSpace !== SRGBColorSpace ) return; - - const _color = new Color(); - - for ( let i = 0, il = attribute.count; i < il; i ++ ) { - - _color.fromBufferAttribute( attribute, i ).convertSRGBToLinear(); - attribute.setXYZ( i, _color.r, _color.g, _color.b ); - - } - - } - - _loadLibrary( url, responseType ) { - - const loader = new FileLoader( this.manager ); - loader.setPath( this.decoderPath ); - loader.setResponseType( responseType ); - loader.setWithCredentials( this.withCredentials ); - - return new Promise( ( resolve, reject ) => { - - loader.load( url, resolve, undefined, reject ); - - } ); - - } - - preload() { - - this._initDecoder(); - - return this; - - } - - _initDecoder() { - - if ( this.decoderPending ) return this.decoderPending; - - const useJS = typeof WebAssembly !== 'object' || this.decoderConfig.type === 'js'; - const librariesPending = []; - - if ( useJS ) { - - librariesPending.push( this._loadLibrary( 'draco_decoder.js', 'text' ) ); - - } else { - - librariesPending.push( this._loadLibrary( 'draco_wasm_wrapper.js', 'text' ) ); - librariesPending.push( this._loadLibrary( 'draco_decoder.wasm', 'arraybuffer' ) ); - - } - - this.decoderPending = Promise.all( librariesPending ) - .then( ( libraries ) => { - - const jsContent = libraries[ 0 ]; - - if ( ! useJS ) { - - this.decoderConfig.wasmBinary = libraries[ 1 ]; - - } - - const fn = DRACOWorker.toString(); - - const body = [ - '/* draco decoder */', - jsContent, - '', - '/* worker */', - fn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) ) - ].join( '\n' ); - - this.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) ); - - } ); - - return this.decoderPending; - - } - - _getWorker( taskID, taskCost ) { - - return this._initDecoder().then( () => { - - if ( this.workerPool.length < this.workerLimit ) { - - const worker = new Worker( this.workerSourceURL ); - - worker._callbacks = {}; - worker._taskCosts = {}; - worker._taskLoad = 0; - - worker.postMessage( { type: 'init', decoderConfig: this.decoderConfig } ); - - worker.onmessage = function ( e ) { - - const message = e.data; - - switch ( message.type ) { - - case 'decode': - worker._callbacks[ message.id ].resolve( message ); - break; - - case 'error': - worker._callbacks[ message.id ].reject( message ); - break; - - default: - console.error( 'THREE.DRACOLoader: Unexpected message, "' + message.type + '"' ); - - } - - }; - - this.workerPool.push( worker ); - - } else { - - this.workerPool.sort( function ( a, b ) { - - return a._taskLoad > b._taskLoad ? - 1 : 1; - - } ); - - } - - const worker = this.workerPool[ this.workerPool.length - 1 ]; - worker._taskCosts[ taskID ] = taskCost; - worker._taskLoad += taskCost; - return worker; - - } ); - - } - - _releaseTask( worker, taskID ) { - - worker._taskLoad -= worker._taskCosts[ taskID ]; - delete worker._callbacks[ taskID ]; - delete worker._taskCosts[ taskID ]; - - } - - debug() { - - console.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) ); - - } - - dispose() { - - for ( let i = 0; i < this.workerPool.length; ++ i ) { - - this.workerPool[ i ].terminate(); - - } - - this.workerPool.length = 0; - - if ( this.workerSourceURL !== '' ) { - - URL.revokeObjectURL( this.workerSourceURL ); - - } - - return this; - - } - -} - -/* WEB WORKER */ - -function DRACOWorker() { - - let decoderConfig; - let decoderPending; - - onmessage = function ( e ) { - - const message = e.data; - - switch ( message.type ) { - - case 'init': - decoderConfig = message.decoderConfig; - decoderPending = new Promise( function ( resolve/*, reject*/ ) { - - decoderConfig.onModuleLoaded = function ( draco ) { - - // Module is Promise-like. Wrap before resolving to avoid loop. - resolve( { draco: draco } ); - - }; - - DracoDecoderModule( decoderConfig ); // eslint-disable-line no-undef - - } ); - break; - - case 'decode': - const buffer = message.buffer; - const taskConfig = message.taskConfig; - decoderPending.then( ( module ) => { - - const draco = module.draco; - const decoder = new draco.Decoder(); - - try { - - const geometry = decodeGeometry( draco, decoder, new Int8Array( buffer ), taskConfig ); - - const buffers = geometry.attributes.map( ( attr ) => attr.array.buffer ); - - if ( geometry.index ) buffers.push( geometry.index.array.buffer ); - - self.postMessage( { type: 'decode', id: message.id, geometry }, buffers ); - - } catch ( error ) { - - console.error( error ); - - self.postMessage( { type: 'error', id: message.id, error: error.message } ); - - } finally { - - draco.destroy( decoder ); - - } - - } ); - break; - - } - - }; - - function decodeGeometry( draco, decoder, array, taskConfig ) { - - const attributeIDs = taskConfig.attributeIDs; - const attributeTypes = taskConfig.attributeTypes; - - let dracoGeometry; - let decodingStatus; - - const geometryType = decoder.GetEncodedGeometryType( array ); - - if ( geometryType === draco.TRIANGULAR_MESH ) { - - dracoGeometry = new draco.Mesh(); - decodingStatus = decoder.DecodeArrayToMesh( array, array.byteLength, dracoGeometry ); - - } else if ( geometryType === draco.POINT_CLOUD ) { - - dracoGeometry = new draco.PointCloud(); - decodingStatus = decoder.DecodeArrayToPointCloud( array, array.byteLength, dracoGeometry ); - - } else { - - throw new Error( 'THREE.DRACOLoader: Unexpected geometry type.' ); - - } - - if ( ! decodingStatus.ok() || dracoGeometry.ptr === 0 ) { - - throw new Error( 'THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg() ); - - } - - const geometry = { index: null, attributes: [] }; - - // Gather all vertex attributes. - for ( const attributeName in attributeIDs ) { - - const attributeType = self[ attributeTypes[ attributeName ] ]; - - let attribute; - let attributeID; - - // A Draco file may be created with default vertex attributes, whose attribute IDs - // are mapped 1:1 from their semantic name (POSITION, NORMAL, ...). Alternatively, - // a Draco file may contain a custom set of attributes, identified by known unique - // IDs. glTF files always do the latter, and `.drc` files typically do the former. - if ( taskConfig.useUniqueIDs ) { - - attributeID = attributeIDs[ attributeName ]; - attribute = decoder.GetAttributeByUniqueId( dracoGeometry, attributeID ); - - } else { - - attributeID = decoder.GetAttributeId( dracoGeometry, draco[ attributeIDs[ attributeName ] ] ); - - if ( attributeID === - 1 ) continue; - - attribute = decoder.GetAttribute( dracoGeometry, attributeID ); - - } - - const attributeResult = decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ); - - if ( attributeName === 'color' ) { - - attributeResult.vertexColorSpace = taskConfig.vertexColorSpace; - - } - - geometry.attributes.push( attributeResult ); - - } - - // Add index. - if ( geometryType === draco.TRIANGULAR_MESH ) { - - geometry.index = decodeIndex( draco, decoder, dracoGeometry ); - - } - - draco.destroy( dracoGeometry ); - - return geometry; - - } - - function decodeIndex( draco, decoder, dracoGeometry ) { - - const numFaces = dracoGeometry.num_faces(); - const numIndices = numFaces * 3; - const byteLength = numIndices * 4; - - const ptr = draco._malloc( byteLength ); - decoder.GetTrianglesUInt32Array( dracoGeometry, byteLength, ptr ); - const index = new Uint32Array( draco.HEAPF32.buffer, ptr, numIndices ).slice(); - draco._free( ptr ); - - return { array: index, itemSize: 1 }; - - } - - function decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) { - - const numComponents = attribute.num_components(); - const numPoints = dracoGeometry.num_points(); - const numValues = numPoints * numComponents; - const byteLength = numValues * attributeType.BYTES_PER_ELEMENT; - const dataType = getDracoDataType( draco, attributeType ); - - const ptr = draco._malloc( byteLength ); - decoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr ); - const array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice(); - draco._free( ptr ); - - return { - name: attributeName, - array: array, - itemSize: numComponents - }; - - } - - function getDracoDataType( draco, attributeType ) { - - switch ( attributeType ) { - - case Float32Array: return draco.DT_FLOAT32; - case Int8Array: return draco.DT_INT8; - case Int16Array: return draco.DT_INT16; - case Int32Array: return draco.DT_INT32; - case Uint8Array: return draco.DT_UINT8; - case Uint16Array: return draco.DT_UINT16; - case Uint32Array: return draco.DT_UINT32; - - } - - } - -} - -export { DRACOLoader }; diff --git a/three/addons/loaders/EXRLoader.js b/three/addons/loaders/EXRLoader.js deleted file mode 100644 index 884f552..0000000 --- a/three/addons/loaders/EXRLoader.js +++ /dev/null @@ -1,2309 +0,0 @@ -import { - DataTextureLoader, - DataUtils, - FloatType, - HalfFloatType, - NoColorSpace, - LinearFilter, - LinearSRGBColorSpace, - RedFormat, - RGBAFormat -} from 'three'; -import * as fflate from '../libs/fflate.module.js'; - -/** - * OpenEXR loader currently supports uncompressed, ZIP(S), RLE, PIZ and DWA/B compression. - * Supports reading as UnsignedByte, HalfFloat and Float type data texture. - * - * Referred to the original Industrial Light & Magic OpenEXR implementation and the TinyEXR / Syoyo Fujita - * implementation, so I have preserved their copyright notices. - */ - -// /* -// Copyright (c) 2014 - 2017, Syoyo Fujita -// All rights reserved. - -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// * Neither the name of the Syoyo Fujita nor the -// names of its contributors may be used to endorse or promote products -// derived from this software without specific prior written permission. - -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// */ - -// // TinyEXR contains some OpenEXR code, which is licensed under ------------ - -// /////////////////////////////////////////////////////////////////////////// -// // -// // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas -// // Digital Ltd. LLC -// // -// // All rights reserved. -// // -// // Redistribution and use in source and binary forms, with or without -// // modification, are permitted provided that the following conditions are -// // met: -// // * Redistributions of source code must retain the above copyright -// // notice, this list of conditions and the following disclaimer. -// // * Redistributions in binary form must reproduce the above -// // copyright notice, this list of conditions and the following disclaimer -// // in the documentation and/or other materials provided with the -// // distribution. -// // * Neither the name of Industrial Light & Magic nor the names of -// // its contributors may be used to endorse or promote products derived -// // from this software without specific prior written permission. -// // -// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// // -// /////////////////////////////////////////////////////////////////////////// - -// // End of OpenEXR license ------------------------------------------------- - -class EXRLoader extends DataTextureLoader { - - constructor( manager ) { - - super( manager ); - - this.type = HalfFloatType; - - } - - parse( buffer ) { - - const USHORT_RANGE = ( 1 << 16 ); - const BITMAP_SIZE = ( USHORT_RANGE >> 3 ); - - const HUF_ENCBITS = 16; // literal (value) bit length - const HUF_DECBITS = 14; // decoding bit size (>= 8) - - const HUF_ENCSIZE = ( 1 << HUF_ENCBITS ) + 1; // encoding table size - const HUF_DECSIZE = 1 << HUF_DECBITS; // decoding table size - const HUF_DECMASK = HUF_DECSIZE - 1; - - const NBITS = 16; - const A_OFFSET = 1 << ( NBITS - 1 ); - const MOD_MASK = ( 1 << NBITS ) - 1; - - const SHORT_ZEROCODE_RUN = 59; - const LONG_ZEROCODE_RUN = 63; - const SHORTEST_LONG_RUN = 2 + LONG_ZEROCODE_RUN - SHORT_ZEROCODE_RUN; - - const ULONG_SIZE = 8; - const FLOAT32_SIZE = 4; - const INT32_SIZE = 4; - const INT16_SIZE = 2; - const INT8_SIZE = 1; - - const STATIC_HUFFMAN = 0; - const DEFLATE = 1; - - const UNKNOWN = 0; - const LOSSY_DCT = 1; - const RLE = 2; - - const logBase = Math.pow( 2.7182818, 2.2 ); - - function reverseLutFromBitmap( bitmap, lut ) { - - let k = 0; - - for ( let i = 0; i < USHORT_RANGE; ++ i ) { - - if ( ( i == 0 ) || ( bitmap[ i >> 3 ] & ( 1 << ( i & 7 ) ) ) ) { - - lut[ k ++ ] = i; - - } - - } - - const n = k - 1; - - while ( k < USHORT_RANGE ) lut[ k ++ ] = 0; - - return n; - - } - - function hufClearDecTable( hdec ) { - - for ( let i = 0; i < HUF_DECSIZE; i ++ ) { - - hdec[ i ] = {}; - hdec[ i ].len = 0; - hdec[ i ].lit = 0; - hdec[ i ].p = null; - - } - - } - - const getBitsReturn = { l: 0, c: 0, lc: 0 }; - - function getBits( nBits, c, lc, uInt8Array, inOffset ) { - - while ( lc < nBits ) { - - c = ( c << 8 ) | parseUint8Array( uInt8Array, inOffset ); - lc += 8; - - } - - lc -= nBits; - - getBitsReturn.l = ( c >> lc ) & ( ( 1 << nBits ) - 1 ); - getBitsReturn.c = c; - getBitsReturn.lc = lc; - - } - - const hufTableBuffer = new Array( 59 ); - - function hufCanonicalCodeTable( hcode ) { - - for ( let i = 0; i <= 58; ++ i ) hufTableBuffer[ i ] = 0; - for ( let i = 0; i < HUF_ENCSIZE; ++ i ) hufTableBuffer[ hcode[ i ] ] += 1; - - let c = 0; - - for ( let i = 58; i > 0; -- i ) { - - const nc = ( ( c + hufTableBuffer[ i ] ) >> 1 ); - hufTableBuffer[ i ] = c; - c = nc; - - } - - for ( let i = 0; i < HUF_ENCSIZE; ++ i ) { - - const l = hcode[ i ]; - if ( l > 0 ) hcode[ i ] = l | ( hufTableBuffer[ l ] ++ << 6 ); - - } - - } - - function hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, hcode ) { - - const p = inOffset; - let c = 0; - let lc = 0; - - for ( ; im <= iM; im ++ ) { - - if ( p.value - inOffset.value > ni ) return false; - - getBits( 6, c, lc, uInt8Array, p ); - - const l = getBitsReturn.l; - c = getBitsReturn.c; - lc = getBitsReturn.lc; - - hcode[ im ] = l; - - if ( l == LONG_ZEROCODE_RUN ) { - - if ( p.value - inOffset.value > ni ) { - - throw new Error( 'Something wrong with hufUnpackEncTable' ); - - } - - getBits( 8, c, lc, uInt8Array, p ); - - let zerun = getBitsReturn.l + SHORTEST_LONG_RUN; - c = getBitsReturn.c; - lc = getBitsReturn.lc; - - if ( im + zerun > iM + 1 ) { - - throw new Error( 'Something wrong with hufUnpackEncTable' ); - - } - - while ( zerun -- ) hcode[ im ++ ] = 0; - - im --; - - } else if ( l >= SHORT_ZEROCODE_RUN ) { - - let zerun = l - SHORT_ZEROCODE_RUN + 2; - - if ( im + zerun > iM + 1 ) { - - throw new Error( 'Something wrong with hufUnpackEncTable' ); - - } - - while ( zerun -- ) hcode[ im ++ ] = 0; - - im --; - - } - - } - - hufCanonicalCodeTable( hcode ); - - } - - function hufLength( code ) { - - return code & 63; - - } - - function hufCode( code ) { - - return code >> 6; - - } - - function hufBuildDecTable( hcode, im, iM, hdecod ) { - - for ( ; im <= iM; im ++ ) { - - const c = hufCode( hcode[ im ] ); - const l = hufLength( hcode[ im ] ); - - if ( c >> l ) { - - throw new Error( 'Invalid table entry' ); - - } - - if ( l > HUF_DECBITS ) { - - const pl = hdecod[ ( c >> ( l - HUF_DECBITS ) ) ]; - - if ( pl.len ) { - - throw new Error( 'Invalid table entry' ); - - } - - pl.lit ++; - - if ( pl.p ) { - - const p = pl.p; - pl.p = new Array( pl.lit ); - - for ( let i = 0; i < pl.lit - 1; ++ i ) { - - pl.p[ i ] = p[ i ]; - - } - - } else { - - pl.p = new Array( 1 ); - - } - - pl.p[ pl.lit - 1 ] = im; - - } else if ( l ) { - - let plOffset = 0; - - for ( let i = 1 << ( HUF_DECBITS - l ); i > 0; i -- ) { - - const pl = hdecod[ ( c << ( HUF_DECBITS - l ) ) + plOffset ]; - - if ( pl.len || pl.p ) { - - throw new Error( 'Invalid table entry' ); - - } - - pl.len = l; - pl.lit = im; - - plOffset ++; - - } - - } - - } - - return true; - - } - - const getCharReturn = { c: 0, lc: 0 }; - - function getChar( c, lc, uInt8Array, inOffset ) { - - c = ( c << 8 ) | parseUint8Array( uInt8Array, inOffset ); - lc += 8; - - getCharReturn.c = c; - getCharReturn.lc = lc; - - } - - const getCodeReturn = { c: 0, lc: 0 }; - - function getCode( po, rlc, c, lc, uInt8Array, inOffset, outBuffer, outBufferOffset, outBufferEndOffset ) { - - if ( po == rlc ) { - - if ( lc < 8 ) { - - getChar( c, lc, uInt8Array, inOffset ); - c = getCharReturn.c; - lc = getCharReturn.lc; - - } - - lc -= 8; - - let cs = ( c >> lc ); - cs = new Uint8Array( [ cs ] )[ 0 ]; - - if ( outBufferOffset.value + cs > outBufferEndOffset ) { - - return false; - - } - - const s = outBuffer[ outBufferOffset.value - 1 ]; - - while ( cs -- > 0 ) { - - outBuffer[ outBufferOffset.value ++ ] = s; - - } - - } else if ( outBufferOffset.value < outBufferEndOffset ) { - - outBuffer[ outBufferOffset.value ++ ] = po; - - } else { - - return false; - - } - - getCodeReturn.c = c; - getCodeReturn.lc = lc; - - } - - function UInt16( value ) { - - return ( value & 0xFFFF ); - - } - - function Int16( value ) { - - const ref = UInt16( value ); - return ( ref > 0x7FFF ) ? ref - 0x10000 : ref; - - } - - const wdec14Return = { a: 0, b: 0 }; - - function wdec14( l, h ) { - - const ls = Int16( l ); - const hs = Int16( h ); - - const hi = hs; - const ai = ls + ( hi & 1 ) + ( hi >> 1 ); - - const as = ai; - const bs = ai - hi; - - wdec14Return.a = as; - wdec14Return.b = bs; - - } - - function wdec16( l, h ) { - - const m = UInt16( l ); - const d = UInt16( h ); - - const bb = ( m - ( d >> 1 ) ) & MOD_MASK; - const aa = ( d + bb - A_OFFSET ) & MOD_MASK; - - wdec14Return.a = aa; - wdec14Return.b = bb; - - } - - function wav2Decode( buffer, j, nx, ox, ny, oy, mx ) { - - const w14 = mx < ( 1 << 14 ); - const n = ( nx > ny ) ? ny : nx; - let p = 1; - let p2; - let py; - - while ( p <= n ) p <<= 1; - - p >>= 1; - p2 = p; - p >>= 1; - - while ( p >= 1 ) { - - py = 0; - const ey = py + oy * ( ny - p2 ); - const oy1 = oy * p; - const oy2 = oy * p2; - const ox1 = ox * p; - const ox2 = ox * p2; - let i00, i01, i10, i11; - - for ( ; py <= ey; py += oy2 ) { - - let px = py; - const ex = py + ox * ( nx - p2 ); - - for ( ; px <= ex; px += ox2 ) { - - const p01 = px + ox1; - const p10 = px + oy1; - const p11 = p10 + ox1; - - if ( w14 ) { - - wdec14( buffer[ px + j ], buffer[ p10 + j ] ); - - i00 = wdec14Return.a; - i10 = wdec14Return.b; - - wdec14( buffer[ p01 + j ], buffer[ p11 + j ] ); - - i01 = wdec14Return.a; - i11 = wdec14Return.b; - - wdec14( i00, i01 ); - - buffer[ px + j ] = wdec14Return.a; - buffer[ p01 + j ] = wdec14Return.b; - - wdec14( i10, i11 ); - - buffer[ p10 + j ] = wdec14Return.a; - buffer[ p11 + j ] = wdec14Return.b; - - } else { - - wdec16( buffer[ px + j ], buffer[ p10 + j ] ); - - i00 = wdec14Return.a; - i10 = wdec14Return.b; - - wdec16( buffer[ p01 + j ], buffer[ p11 + j ] ); - - i01 = wdec14Return.a; - i11 = wdec14Return.b; - - wdec16( i00, i01 ); - - buffer[ px + j ] = wdec14Return.a; - buffer[ p01 + j ] = wdec14Return.b; - - wdec16( i10, i11 ); - - buffer[ p10 + j ] = wdec14Return.a; - buffer[ p11 + j ] = wdec14Return.b; - - - } - - } - - if ( nx & p ) { - - const p10 = px + oy1; - - if ( w14 ) - wdec14( buffer[ px + j ], buffer[ p10 + j ] ); - else - wdec16( buffer[ px + j ], buffer[ p10 + j ] ); - - i00 = wdec14Return.a; - buffer[ p10 + j ] = wdec14Return.b; - - buffer[ px + j ] = i00; - - } - - } - - if ( ny & p ) { - - let px = py; - const ex = py + ox * ( nx - p2 ); - - for ( ; px <= ex; px += ox2 ) { - - const p01 = px + ox1; - - if ( w14 ) - wdec14( buffer[ px + j ], buffer[ p01 + j ] ); - else - wdec16( buffer[ px + j ], buffer[ p01 + j ] ); - - i00 = wdec14Return.a; - buffer[ p01 + j ] = wdec14Return.b; - - buffer[ px + j ] = i00; - - } - - } - - p2 = p; - p >>= 1; - - } - - return py; - - } - - function hufDecode( encodingTable, decodingTable, uInt8Array, inOffset, ni, rlc, no, outBuffer, outOffset ) { - - let c = 0; - let lc = 0; - const outBufferEndOffset = no; - const inOffsetEnd = Math.trunc( inOffset.value + ( ni + 7 ) / 8 ); - - while ( inOffset.value < inOffsetEnd ) { - - getChar( c, lc, uInt8Array, inOffset ); - - c = getCharReturn.c; - lc = getCharReturn.lc; - - while ( lc >= HUF_DECBITS ) { - - const index = ( c >> ( lc - HUF_DECBITS ) ) & HUF_DECMASK; - const pl = decodingTable[ index ]; - - if ( pl.len ) { - - lc -= pl.len; - - getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset ); - - c = getCodeReturn.c; - lc = getCodeReturn.lc; - - } else { - - if ( ! pl.p ) { - - throw new Error( 'hufDecode issues' ); - - } - - let j; - - for ( j = 0; j < pl.lit; j ++ ) { - - const l = hufLength( encodingTable[ pl.p[ j ] ] ); - - while ( lc < l && inOffset.value < inOffsetEnd ) { - - getChar( c, lc, uInt8Array, inOffset ); - - c = getCharReturn.c; - lc = getCharReturn.lc; - - } - - if ( lc >= l ) { - - if ( hufCode( encodingTable[ pl.p[ j ] ] ) == ( ( c >> ( lc - l ) ) & ( ( 1 << l ) - 1 ) ) ) { - - lc -= l; - - getCode( pl.p[ j ], rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset ); - - c = getCodeReturn.c; - lc = getCodeReturn.lc; - - break; - - } - - } - - } - - if ( j == pl.lit ) { - - throw new Error( 'hufDecode issues' ); - - } - - } - - } - - } - - const i = ( 8 - ni ) & 7; - - c >>= i; - lc -= i; - - while ( lc > 0 ) { - - const pl = decodingTable[ ( c << ( HUF_DECBITS - lc ) ) & HUF_DECMASK ]; - - if ( pl.len ) { - - lc -= pl.len; - - getCode( pl.lit, rlc, c, lc, uInt8Array, inOffset, outBuffer, outOffset, outBufferEndOffset ); - - c = getCodeReturn.c; - lc = getCodeReturn.lc; - - } else { - - throw new Error( 'hufDecode issues' ); - - } - - } - - return true; - - } - - function hufUncompress( uInt8Array, inDataView, inOffset, nCompressed, outBuffer, nRaw ) { - - const outOffset = { value: 0 }; - const initialInOffset = inOffset.value; - - const im = parseUint32( inDataView, inOffset ); - const iM = parseUint32( inDataView, inOffset ); - - inOffset.value += 4; - - const nBits = parseUint32( inDataView, inOffset ); - - inOffset.value += 4; - - if ( im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE ) { - - throw new Error( 'Something wrong with HUF_ENCSIZE' ); - - } - - const freq = new Array( HUF_ENCSIZE ); - const hdec = new Array( HUF_DECSIZE ); - - hufClearDecTable( hdec ); - - const ni = nCompressed - ( inOffset.value - initialInOffset ); - - hufUnpackEncTable( uInt8Array, inOffset, ni, im, iM, freq ); - - if ( nBits > 8 * ( nCompressed - ( inOffset.value - initialInOffset ) ) ) { - - throw new Error( 'Something wrong with hufUncompress' ); - - } - - hufBuildDecTable( freq, im, iM, hdec ); - - hufDecode( freq, hdec, uInt8Array, inOffset, nBits, iM, nRaw, outBuffer, outOffset ); - - } - - function applyLut( lut, data, nData ) { - - for ( let i = 0; i < nData; ++ i ) { - - data[ i ] = lut[ data[ i ] ]; - - } - - } - - function predictor( source ) { - - for ( let t = 1; t < source.length; t ++ ) { - - const d = source[ t - 1 ] + source[ t ] - 128; - source[ t ] = d; - - } - - } - - function interleaveScalar( source, out ) { - - let t1 = 0; - let t2 = Math.floor( ( source.length + 1 ) / 2 ); - let s = 0; - const stop = source.length - 1; - - while ( true ) { - - if ( s > stop ) break; - out[ s ++ ] = source[ t1 ++ ]; - - if ( s > stop ) break; - out[ s ++ ] = source[ t2 ++ ]; - - } - - } - - function decodeRunLength( source ) { - - let size = source.byteLength; - const out = new Array(); - let p = 0; - - const reader = new DataView( source ); - - while ( size > 0 ) { - - const l = reader.getInt8( p ++ ); - - if ( l < 0 ) { - - const count = - l; - size -= count + 1; - - for ( let i = 0; i < count; i ++ ) { - - out.push( reader.getUint8( p ++ ) ); - - } - - - } else { - - const count = l; - size -= 2; - - const value = reader.getUint8( p ++ ); - - for ( let i = 0; i < count + 1; i ++ ) { - - out.push( value ); - - } - - } - - } - - return out; - - } - - function lossyDctDecode( cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer ) { - - let dataView = new DataView( outBuffer.buffer ); - - const width = channelData[ cscSet.idx[ 0 ] ].width; - const height = channelData[ cscSet.idx[ 0 ] ].height; - - const numComp = 3; - - const numFullBlocksX = Math.floor( width / 8.0 ); - const numBlocksX = Math.ceil( width / 8.0 ); - const numBlocksY = Math.ceil( height / 8.0 ); - const leftoverX = width - ( numBlocksX - 1 ) * 8; - const leftoverY = height - ( numBlocksY - 1 ) * 8; - - const currAcComp = { value: 0 }; - const currDcComp = new Array( numComp ); - const dctData = new Array( numComp ); - const halfZigBlock = new Array( numComp ); - const rowBlock = new Array( numComp ); - const rowOffsets = new Array( numComp ); - - for ( let comp = 0; comp < numComp; ++ comp ) { - - rowOffsets[ comp ] = rowPtrs[ cscSet.idx[ comp ] ]; - currDcComp[ comp ] = ( comp < 1 ) ? 0 : currDcComp[ comp - 1 ] + numBlocksX * numBlocksY; - dctData[ comp ] = new Float32Array( 64 ); - halfZigBlock[ comp ] = new Uint16Array( 64 ); - rowBlock[ comp ] = new Uint16Array( numBlocksX * 64 ); - - } - - for ( let blocky = 0; blocky < numBlocksY; ++ blocky ) { - - let maxY = 8; - - if ( blocky == numBlocksY - 1 ) - maxY = leftoverY; - - let maxX = 8; - - for ( let blockx = 0; blockx < numBlocksX; ++ blockx ) { - - if ( blockx == numBlocksX - 1 ) - maxX = leftoverX; - - for ( let comp = 0; comp < numComp; ++ comp ) { - - halfZigBlock[ comp ].fill( 0 ); - - // set block DC component - halfZigBlock[ comp ][ 0 ] = dcBuffer[ currDcComp[ comp ] ++ ]; - // set block AC components - unRleAC( currAcComp, acBuffer, halfZigBlock[ comp ] ); - - // UnZigZag block to float - unZigZag( halfZigBlock[ comp ], dctData[ comp ] ); - // decode float dct - dctInverse( dctData[ comp ] ); - - } - - if ( numComp == 3 ) { - - csc709Inverse( dctData ); - - } - - for ( let comp = 0; comp < numComp; ++ comp ) { - - convertToHalf( dctData[ comp ], rowBlock[ comp ], blockx * 64 ); - - } - - } // blockx - - let offset = 0; - - for ( let comp = 0; comp < numComp; ++ comp ) { - - const type = channelData[ cscSet.idx[ comp ] ].type; - - for ( let y = 8 * blocky; y < 8 * blocky + maxY; ++ y ) { - - offset = rowOffsets[ comp ][ y ]; - - for ( let blockx = 0; blockx < numFullBlocksX; ++ blockx ) { - - const src = blockx * 64 + ( ( y & 0x7 ) * 8 ); - - dataView.setUint16( offset + 0 * INT16_SIZE * type, rowBlock[ comp ][ src + 0 ], true ); - dataView.setUint16( offset + 1 * INT16_SIZE * type, rowBlock[ comp ][ src + 1 ], true ); - dataView.setUint16( offset + 2 * INT16_SIZE * type, rowBlock[ comp ][ src + 2 ], true ); - dataView.setUint16( offset + 3 * INT16_SIZE * type, rowBlock[ comp ][ src + 3 ], true ); - - dataView.setUint16( offset + 4 * INT16_SIZE * type, rowBlock[ comp ][ src + 4 ], true ); - dataView.setUint16( offset + 5 * INT16_SIZE * type, rowBlock[ comp ][ src + 5 ], true ); - dataView.setUint16( offset + 6 * INT16_SIZE * type, rowBlock[ comp ][ src + 6 ], true ); - dataView.setUint16( offset + 7 * INT16_SIZE * type, rowBlock[ comp ][ src + 7 ], true ); - - offset += 8 * INT16_SIZE * type; - - } - - } - - // handle partial X blocks - if ( numFullBlocksX != numBlocksX ) { - - for ( let y = 8 * blocky; y < 8 * blocky + maxY; ++ y ) { - - const offset = rowOffsets[ comp ][ y ] + 8 * numFullBlocksX * INT16_SIZE * type; - const src = numFullBlocksX * 64 + ( ( y & 0x7 ) * 8 ); - - for ( let x = 0; x < maxX; ++ x ) { - - dataView.setUint16( offset + x * INT16_SIZE * type, rowBlock[ comp ][ src + x ], true ); - - } - - } - - } - - } // comp - - } // blocky - - const halfRow = new Uint16Array( width ); - dataView = new DataView( outBuffer.buffer ); - - // convert channels back to float, if needed - for ( let comp = 0; comp < numComp; ++ comp ) { - - channelData[ cscSet.idx[ comp ] ].decoded = true; - const type = channelData[ cscSet.idx[ comp ] ].type; - - if ( channelData[ comp ].type != 2 ) continue; - - for ( let y = 0; y < height; ++ y ) { - - const offset = rowOffsets[ comp ][ y ]; - - for ( let x = 0; x < width; ++ x ) { - - halfRow[ x ] = dataView.getUint16( offset + x * INT16_SIZE * type, true ); - - } - - for ( let x = 0; x < width; ++ x ) { - - dataView.setFloat32( offset + x * INT16_SIZE * type, decodeFloat16( halfRow[ x ] ), true ); - - } - - } - - } - - } - - function unRleAC( currAcComp, acBuffer, halfZigBlock ) { - - let acValue; - let dctComp = 1; - - while ( dctComp < 64 ) { - - acValue = acBuffer[ currAcComp.value ]; - - if ( acValue == 0xff00 ) { - - dctComp = 64; - - } else if ( acValue >> 8 == 0xff ) { - - dctComp += acValue & 0xff; - - } else { - - halfZigBlock[ dctComp ] = acValue; - dctComp ++; - - } - - currAcComp.value ++; - - } - - } - - function unZigZag( src, dst ) { - - dst[ 0 ] = decodeFloat16( src[ 0 ] ); - dst[ 1 ] = decodeFloat16( src[ 1 ] ); - dst[ 2 ] = decodeFloat16( src[ 5 ] ); - dst[ 3 ] = decodeFloat16( src[ 6 ] ); - dst[ 4 ] = decodeFloat16( src[ 14 ] ); - dst[ 5 ] = decodeFloat16( src[ 15 ] ); - dst[ 6 ] = decodeFloat16( src[ 27 ] ); - dst[ 7 ] = decodeFloat16( src[ 28 ] ); - dst[ 8 ] = decodeFloat16( src[ 2 ] ); - dst[ 9 ] = decodeFloat16( src[ 4 ] ); - - dst[ 10 ] = decodeFloat16( src[ 7 ] ); - dst[ 11 ] = decodeFloat16( src[ 13 ] ); - dst[ 12 ] = decodeFloat16( src[ 16 ] ); - dst[ 13 ] = decodeFloat16( src[ 26 ] ); - dst[ 14 ] = decodeFloat16( src[ 29 ] ); - dst[ 15 ] = decodeFloat16( src[ 42 ] ); - dst[ 16 ] = decodeFloat16( src[ 3 ] ); - dst[ 17 ] = decodeFloat16( src[ 8 ] ); - dst[ 18 ] = decodeFloat16( src[ 12 ] ); - dst[ 19 ] = decodeFloat16( src[ 17 ] ); - - dst[ 20 ] = decodeFloat16( src[ 25 ] ); - dst[ 21 ] = decodeFloat16( src[ 30 ] ); - dst[ 22 ] = decodeFloat16( src[ 41 ] ); - dst[ 23 ] = decodeFloat16( src[ 43 ] ); - dst[ 24 ] = decodeFloat16( src[ 9 ] ); - dst[ 25 ] = decodeFloat16( src[ 11 ] ); - dst[ 26 ] = decodeFloat16( src[ 18 ] ); - dst[ 27 ] = decodeFloat16( src[ 24 ] ); - dst[ 28 ] = decodeFloat16( src[ 31 ] ); - dst[ 29 ] = decodeFloat16( src[ 40 ] ); - - dst[ 30 ] = decodeFloat16( src[ 44 ] ); - dst[ 31 ] = decodeFloat16( src[ 53 ] ); - dst[ 32 ] = decodeFloat16( src[ 10 ] ); - dst[ 33 ] = decodeFloat16( src[ 19 ] ); - dst[ 34 ] = decodeFloat16( src[ 23 ] ); - dst[ 35 ] = decodeFloat16( src[ 32 ] ); - dst[ 36 ] = decodeFloat16( src[ 39 ] ); - dst[ 37 ] = decodeFloat16( src[ 45 ] ); - dst[ 38 ] = decodeFloat16( src[ 52 ] ); - dst[ 39 ] = decodeFloat16( src[ 54 ] ); - - dst[ 40 ] = decodeFloat16( src[ 20 ] ); - dst[ 41 ] = decodeFloat16( src[ 22 ] ); - dst[ 42 ] = decodeFloat16( src[ 33 ] ); - dst[ 43 ] = decodeFloat16( src[ 38 ] ); - dst[ 44 ] = decodeFloat16( src[ 46 ] ); - dst[ 45 ] = decodeFloat16( src[ 51 ] ); - dst[ 46 ] = decodeFloat16( src[ 55 ] ); - dst[ 47 ] = decodeFloat16( src[ 60 ] ); - dst[ 48 ] = decodeFloat16( src[ 21 ] ); - dst[ 49 ] = decodeFloat16( src[ 34 ] ); - - dst[ 50 ] = decodeFloat16( src[ 37 ] ); - dst[ 51 ] = decodeFloat16( src[ 47 ] ); - dst[ 52 ] = decodeFloat16( src[ 50 ] ); - dst[ 53 ] = decodeFloat16( src[ 56 ] ); - dst[ 54 ] = decodeFloat16( src[ 59 ] ); - dst[ 55 ] = decodeFloat16( src[ 61 ] ); - dst[ 56 ] = decodeFloat16( src[ 35 ] ); - dst[ 57 ] = decodeFloat16( src[ 36 ] ); - dst[ 58 ] = decodeFloat16( src[ 48 ] ); - dst[ 59 ] = decodeFloat16( src[ 49 ] ); - - dst[ 60 ] = decodeFloat16( src[ 57 ] ); - dst[ 61 ] = decodeFloat16( src[ 58 ] ); - dst[ 62 ] = decodeFloat16( src[ 62 ] ); - dst[ 63 ] = decodeFloat16( src[ 63 ] ); - - } - - function dctInverse( data ) { - - const a = 0.5 * Math.cos( 3.14159 / 4.0 ); - const b = 0.5 * Math.cos( 3.14159 / 16.0 ); - const c = 0.5 * Math.cos( 3.14159 / 8.0 ); - const d = 0.5 * Math.cos( 3.0 * 3.14159 / 16.0 ); - const e = 0.5 * Math.cos( 5.0 * 3.14159 / 16.0 ); - const f = 0.5 * Math.cos( 3.0 * 3.14159 / 8.0 ); - const g = 0.5 * Math.cos( 7.0 * 3.14159 / 16.0 ); - - const alpha = new Array( 4 ); - const beta = new Array( 4 ); - const theta = new Array( 4 ); - const gamma = new Array( 4 ); - - for ( let row = 0; row < 8; ++ row ) { - - const rowPtr = row * 8; - - alpha[ 0 ] = c * data[ rowPtr + 2 ]; - alpha[ 1 ] = f * data[ rowPtr + 2 ]; - alpha[ 2 ] = c * data[ rowPtr + 6 ]; - alpha[ 3 ] = f * data[ rowPtr + 6 ]; - - beta[ 0 ] = b * data[ rowPtr + 1 ] + d * data[ rowPtr + 3 ] + e * data[ rowPtr + 5 ] + g * data[ rowPtr + 7 ]; - beta[ 1 ] = d * data[ rowPtr + 1 ] - g * data[ rowPtr + 3 ] - b * data[ rowPtr + 5 ] - e * data[ rowPtr + 7 ]; - beta[ 2 ] = e * data[ rowPtr + 1 ] - b * data[ rowPtr + 3 ] + g * data[ rowPtr + 5 ] + d * data[ rowPtr + 7 ]; - beta[ 3 ] = g * data[ rowPtr + 1 ] - e * data[ rowPtr + 3 ] + d * data[ rowPtr + 5 ] - b * data[ rowPtr + 7 ]; - - theta[ 0 ] = a * ( data[ rowPtr + 0 ] + data[ rowPtr + 4 ] ); - theta[ 3 ] = a * ( data[ rowPtr + 0 ] - data[ rowPtr + 4 ] ); - theta[ 1 ] = alpha[ 0 ] + alpha[ 3 ]; - theta[ 2 ] = alpha[ 1 ] - alpha[ 2 ]; - - gamma[ 0 ] = theta[ 0 ] + theta[ 1 ]; - gamma[ 1 ] = theta[ 3 ] + theta[ 2 ]; - gamma[ 2 ] = theta[ 3 ] - theta[ 2 ]; - gamma[ 3 ] = theta[ 0 ] - theta[ 1 ]; - - data[ rowPtr + 0 ] = gamma[ 0 ] + beta[ 0 ]; - data[ rowPtr + 1 ] = gamma[ 1 ] + beta[ 1 ]; - data[ rowPtr + 2 ] = gamma[ 2 ] + beta[ 2 ]; - data[ rowPtr + 3 ] = gamma[ 3 ] + beta[ 3 ]; - - data[ rowPtr + 4 ] = gamma[ 3 ] - beta[ 3 ]; - data[ rowPtr + 5 ] = gamma[ 2 ] - beta[ 2 ]; - data[ rowPtr + 6 ] = gamma[ 1 ] - beta[ 1 ]; - data[ rowPtr + 7 ] = gamma[ 0 ] - beta[ 0 ]; - - } - - for ( let column = 0; column < 8; ++ column ) { - - alpha[ 0 ] = c * data[ 16 + column ]; - alpha[ 1 ] = f * data[ 16 + column ]; - alpha[ 2 ] = c * data[ 48 + column ]; - alpha[ 3 ] = f * data[ 48 + column ]; - - beta[ 0 ] = b * data[ 8 + column ] + d * data[ 24 + column ] + e * data[ 40 + column ] + g * data[ 56 + column ]; - beta[ 1 ] = d * data[ 8 + column ] - g * data[ 24 + column ] - b * data[ 40 + column ] - e * data[ 56 + column ]; - beta[ 2 ] = e * data[ 8 + column ] - b * data[ 24 + column ] + g * data[ 40 + column ] + d * data[ 56 + column ]; - beta[ 3 ] = g * data[ 8 + column ] - e * data[ 24 + column ] + d * data[ 40 + column ] - b * data[ 56 + column ]; - - theta[ 0 ] = a * ( data[ column ] + data[ 32 + column ] ); - theta[ 3 ] = a * ( data[ column ] - data[ 32 + column ] ); - - theta[ 1 ] = alpha[ 0 ] + alpha[ 3 ]; - theta[ 2 ] = alpha[ 1 ] - alpha[ 2 ]; - - gamma[ 0 ] = theta[ 0 ] + theta[ 1 ]; - gamma[ 1 ] = theta[ 3 ] + theta[ 2 ]; - gamma[ 2 ] = theta[ 3 ] - theta[ 2 ]; - gamma[ 3 ] = theta[ 0 ] - theta[ 1 ]; - - data[ 0 + column ] = gamma[ 0 ] + beta[ 0 ]; - data[ 8 + column ] = gamma[ 1 ] + beta[ 1 ]; - data[ 16 + column ] = gamma[ 2 ] + beta[ 2 ]; - data[ 24 + column ] = gamma[ 3 ] + beta[ 3 ]; - - data[ 32 + column ] = gamma[ 3 ] - beta[ 3 ]; - data[ 40 + column ] = gamma[ 2 ] - beta[ 2 ]; - data[ 48 + column ] = gamma[ 1 ] - beta[ 1 ]; - data[ 56 + column ] = gamma[ 0 ] - beta[ 0 ]; - - } - - } - - function csc709Inverse( data ) { - - for ( let i = 0; i < 64; ++ i ) { - - const y = data[ 0 ][ i ]; - const cb = data[ 1 ][ i ]; - const cr = data[ 2 ][ i ]; - - data[ 0 ][ i ] = y + 1.5747 * cr; - data[ 1 ][ i ] = y - 0.1873 * cb - 0.4682 * cr; - data[ 2 ][ i ] = y + 1.8556 * cb; - - } - - } - - function convertToHalf( src, dst, idx ) { - - for ( let i = 0; i < 64; ++ i ) { - - dst[ idx + i ] = DataUtils.toHalfFloat( toLinear( src[ i ] ) ); - - } - - } - - function toLinear( float ) { - - if ( float <= 1 ) { - - return Math.sign( float ) * Math.pow( Math.abs( float ), 2.2 ); - - } else { - - return Math.sign( float ) * Math.pow( logBase, Math.abs( float ) - 1.0 ); - - } - - } - - function uncompressRAW( info ) { - - return new DataView( info.array.buffer, info.offset.value, info.size ); - - } - - function uncompressRLE( info ) { - - const compressed = info.viewer.buffer.slice( info.offset.value, info.offset.value + info.size ); - - const rawBuffer = new Uint8Array( decodeRunLength( compressed ) ); - const tmpBuffer = new Uint8Array( rawBuffer.length ); - - predictor( rawBuffer ); // revert predictor - - interleaveScalar( rawBuffer, tmpBuffer ); // interleave pixels - - return new DataView( tmpBuffer.buffer ); - - } - - function uncompressZIP( info ) { - - const compressed = info.array.slice( info.offset.value, info.offset.value + info.size ); - - const rawBuffer = fflate.unzlibSync( compressed ); - const tmpBuffer = new Uint8Array( rawBuffer.length ); - - predictor( rawBuffer ); // revert predictor - - interleaveScalar( rawBuffer, tmpBuffer ); // interleave pixels - - return new DataView( tmpBuffer.buffer ); - - } - - function uncompressPIZ( info ) { - - const inDataView = info.viewer; - const inOffset = { value: info.offset.value }; - - const outBuffer = new Uint16Array( info.width * info.scanlineBlockSize * ( info.channels * info.type ) ); - const bitmap = new Uint8Array( BITMAP_SIZE ); - - // Setup channel info - let outBufferEnd = 0; - const pizChannelData = new Array( info.channels ); - for ( let i = 0; i < info.channels; i ++ ) { - - pizChannelData[ i ] = {}; - pizChannelData[ i ][ 'start' ] = outBufferEnd; - pizChannelData[ i ][ 'end' ] = pizChannelData[ i ][ 'start' ]; - pizChannelData[ i ][ 'nx' ] = info.width; - pizChannelData[ i ][ 'ny' ] = info.lines; - pizChannelData[ i ][ 'size' ] = info.type; - - outBufferEnd += pizChannelData[ i ].nx * pizChannelData[ i ].ny * pizChannelData[ i ].size; - - } - - // Read range compression data - - const minNonZero = parseUint16( inDataView, inOffset ); - const maxNonZero = parseUint16( inDataView, inOffset ); - - if ( maxNonZero >= BITMAP_SIZE ) { - - throw new Error( 'Something is wrong with PIZ_COMPRESSION BITMAP_SIZE' ); - - } - - if ( minNonZero <= maxNonZero ) { - - for ( let i = 0; i < maxNonZero - minNonZero + 1; i ++ ) { - - bitmap[ i + minNonZero ] = parseUint8( inDataView, inOffset ); - - } - - } - - // Reverse LUT - const lut = new Uint16Array( USHORT_RANGE ); - const maxValue = reverseLutFromBitmap( bitmap, lut ); - - const length = parseUint32( inDataView, inOffset ); - - // Huffman decoding - hufUncompress( info.array, inDataView, inOffset, length, outBuffer, outBufferEnd ); - - // Wavelet decoding - for ( let i = 0; i < info.channels; ++ i ) { - - const cd = pizChannelData[ i ]; - - for ( let j = 0; j < pizChannelData[ i ].size; ++ j ) { - - wav2Decode( - outBuffer, - cd.start + j, - cd.nx, - cd.size, - cd.ny, - cd.nx * cd.size, - maxValue - ); - - } - - } - - // Expand the pixel data to their original range - applyLut( lut, outBuffer, outBufferEnd ); - - // Rearrange the pixel data into the format expected by the caller. - let tmpOffset = 0; - const tmpBuffer = new Uint8Array( outBuffer.buffer.byteLength ); - for ( let y = 0; y < info.lines; y ++ ) { - - for ( let c = 0; c < info.channels; c ++ ) { - - const cd = pizChannelData[ c ]; - - const n = cd.nx * cd.size; - const cp = new Uint8Array( outBuffer.buffer, cd.end * INT16_SIZE, n * INT16_SIZE ); - - tmpBuffer.set( cp, tmpOffset ); - tmpOffset += n * INT16_SIZE; - cd.end += n; - - } - - } - - return new DataView( tmpBuffer.buffer ); - - } - - function uncompressPXR( info ) { - - const compressed = info.array.slice( info.offset.value, info.offset.value + info.size ); - - const rawBuffer = fflate.unzlibSync( compressed ); - - const sz = info.lines * info.channels * info.width; - const tmpBuffer = ( info.type == 1 ) ? new Uint16Array( sz ) : new Uint32Array( sz ); - - let tmpBufferEnd = 0; - let writePtr = 0; - const ptr = new Array( 4 ); - - for ( let y = 0; y < info.lines; y ++ ) { - - for ( let c = 0; c < info.channels; c ++ ) { - - let pixel = 0; - - switch ( info.type ) { - - case 1: - - ptr[ 0 ] = tmpBufferEnd; - ptr[ 1 ] = ptr[ 0 ] + info.width; - tmpBufferEnd = ptr[ 1 ] + info.width; - - for ( let j = 0; j < info.width; ++ j ) { - - const diff = ( rawBuffer[ ptr[ 0 ] ++ ] << 8 ) | rawBuffer[ ptr[ 1 ] ++ ]; - - pixel += diff; - - tmpBuffer[ writePtr ] = pixel; - writePtr ++; - - } - - break; - - case 2: - - ptr[ 0 ] = tmpBufferEnd; - ptr[ 1 ] = ptr[ 0 ] + info.width; - ptr[ 2 ] = ptr[ 1 ] + info.width; - tmpBufferEnd = ptr[ 2 ] + info.width; - - for ( let j = 0; j < info.width; ++ j ) { - - const diff = ( rawBuffer[ ptr[ 0 ] ++ ] << 24 ) | ( rawBuffer[ ptr[ 1 ] ++ ] << 16 ) | ( rawBuffer[ ptr[ 2 ] ++ ] << 8 ); - - pixel += diff; - - tmpBuffer[ writePtr ] = pixel; - writePtr ++; - - } - - break; - - } - - } - - } - - return new DataView( tmpBuffer.buffer ); - - } - - function uncompressDWA( info ) { - - const inDataView = info.viewer; - const inOffset = { value: info.offset.value }; - const outBuffer = new Uint8Array( info.width * info.lines * ( info.channels * info.type * INT16_SIZE ) ); - - // Read compression header information - const dwaHeader = { - - version: parseInt64( inDataView, inOffset ), - unknownUncompressedSize: parseInt64( inDataView, inOffset ), - unknownCompressedSize: parseInt64( inDataView, inOffset ), - acCompressedSize: parseInt64( inDataView, inOffset ), - dcCompressedSize: parseInt64( inDataView, inOffset ), - rleCompressedSize: parseInt64( inDataView, inOffset ), - rleUncompressedSize: parseInt64( inDataView, inOffset ), - rleRawSize: parseInt64( inDataView, inOffset ), - totalAcUncompressedCount: parseInt64( inDataView, inOffset ), - totalDcUncompressedCount: parseInt64( inDataView, inOffset ), - acCompression: parseInt64( inDataView, inOffset ) - - }; - - if ( dwaHeader.version < 2 ) - throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' version ' + dwaHeader.version + ' is unsupported' ); - - // Read channel ruleset information - const channelRules = new Array(); - let ruleSize = parseUint16( inDataView, inOffset ) - INT16_SIZE; - - while ( ruleSize > 0 ) { - - const name = parseNullTerminatedString( inDataView.buffer, inOffset ); - const value = parseUint8( inDataView, inOffset ); - const compression = ( value >> 2 ) & 3; - const csc = ( value >> 4 ) - 1; - const index = new Int8Array( [ csc ] )[ 0 ]; - const type = parseUint8( inDataView, inOffset ); - - channelRules.push( { - name: name, - index: index, - type: type, - compression: compression, - } ); - - ruleSize -= name.length + 3; - - } - - // Classify channels - const channels = EXRHeader.channels; - const channelData = new Array( info.channels ); - - for ( let i = 0; i < info.channels; ++ i ) { - - const cd = channelData[ i ] = {}; - const channel = channels[ i ]; - - cd.name = channel.name; - cd.compression = UNKNOWN; - cd.decoded = false; - cd.type = channel.pixelType; - cd.pLinear = channel.pLinear; - cd.width = info.width; - cd.height = info.lines; - - } - - const cscSet = { - idx: new Array( 3 ) - }; - - for ( let offset = 0; offset < info.channels; ++ offset ) { - - const cd = channelData[ offset ]; - - for ( let i = 0; i < channelRules.length; ++ i ) { - - const rule = channelRules[ i ]; - - if ( cd.name == rule.name ) { - - cd.compression = rule.compression; - - if ( rule.index >= 0 ) { - - cscSet.idx[ rule.index ] = offset; - - } - - cd.offset = offset; - - } - - } - - } - - let acBuffer, dcBuffer, rleBuffer; - - // Read DCT - AC component data - if ( dwaHeader.acCompressedSize > 0 ) { - - switch ( dwaHeader.acCompression ) { - - case STATIC_HUFFMAN: - - acBuffer = new Uint16Array( dwaHeader.totalAcUncompressedCount ); - hufUncompress( info.array, inDataView, inOffset, dwaHeader.acCompressedSize, acBuffer, dwaHeader.totalAcUncompressedCount ); - break; - - case DEFLATE: - - const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount ); - const data = fflate.unzlibSync( compressed ); - acBuffer = new Uint16Array( data.buffer ); - inOffset.value += dwaHeader.totalAcUncompressedCount; - break; - - } - - - } - - // Read DCT - DC component data - if ( dwaHeader.dcCompressedSize > 0 ) { - - const zlibInfo = { - array: info.array, - offset: inOffset, - size: dwaHeader.dcCompressedSize - }; - dcBuffer = new Uint16Array( uncompressZIP( zlibInfo ).buffer ); - inOffset.value += dwaHeader.dcCompressedSize; - - } - - // Read RLE compressed data - if ( dwaHeader.rleRawSize > 0 ) { - - const compressed = info.array.slice( inOffset.value, inOffset.value + dwaHeader.rleCompressedSize ); - const data = fflate.unzlibSync( compressed ); - rleBuffer = decodeRunLength( data.buffer ); - - inOffset.value += dwaHeader.rleCompressedSize; - - } - - // Prepare outbuffer data offset - let outBufferEnd = 0; - const rowOffsets = new Array( channelData.length ); - for ( let i = 0; i < rowOffsets.length; ++ i ) { - - rowOffsets[ i ] = new Array(); - - } - - for ( let y = 0; y < info.lines; ++ y ) { - - for ( let chan = 0; chan < channelData.length; ++ chan ) { - - rowOffsets[ chan ].push( outBufferEnd ); - outBufferEnd += channelData[ chan ].width * info.type * INT16_SIZE; - - } - - } - - // Lossy DCT decode RGB channels - lossyDctDecode( cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer ); - - // Decode other channels - for ( let i = 0; i < channelData.length; ++ i ) { - - const cd = channelData[ i ]; - - if ( cd.decoded ) continue; - - switch ( cd.compression ) { - - case RLE: - - let row = 0; - let rleOffset = 0; - - for ( let y = 0; y < info.lines; ++ y ) { - - let rowOffsetBytes = rowOffsets[ i ][ row ]; - - for ( let x = 0; x < cd.width; ++ x ) { - - for ( let byte = 0; byte < INT16_SIZE * cd.type; ++ byte ) { - - outBuffer[ rowOffsetBytes ++ ] = rleBuffer[ rleOffset + byte * cd.width * cd.height ]; - - } - - rleOffset ++; - - } - - row ++; - - } - - break; - - case LOSSY_DCT: // skip - - default: - throw new Error( 'EXRLoader.parse: unsupported channel compression' ); - - } - - } - - return new DataView( outBuffer.buffer ); - - } - - function parseNullTerminatedString( buffer, offset ) { - - const uintBuffer = new Uint8Array( buffer ); - let endOffset = 0; - - while ( uintBuffer[ offset.value + endOffset ] != 0 ) { - - endOffset += 1; - - } - - const stringValue = new TextDecoder().decode( - uintBuffer.slice( offset.value, offset.value + endOffset ) - ); - - offset.value = offset.value + endOffset + 1; - - return stringValue; - - } - - function parseFixedLengthString( buffer, offset, size ) { - - const stringValue = new TextDecoder().decode( - new Uint8Array( buffer ).slice( offset.value, offset.value + size ) - ); - - offset.value = offset.value + size; - - return stringValue; - - } - - function parseRational( dataView, offset ) { - - const x = parseInt32( dataView, offset ); - const y = parseUint32( dataView, offset ); - - return [ x, y ]; - - } - - function parseTimecode( dataView, offset ) { - - const x = parseUint32( dataView, offset ); - const y = parseUint32( dataView, offset ); - - return [ x, y ]; - - } - - function parseInt32( dataView, offset ) { - - const Int32 = dataView.getInt32( offset.value, true ); - - offset.value = offset.value + INT32_SIZE; - - return Int32; - - } - - function parseUint32( dataView, offset ) { - - const Uint32 = dataView.getUint32( offset.value, true ); - - offset.value = offset.value + INT32_SIZE; - - return Uint32; - - } - - function parseUint8Array( uInt8Array, offset ) { - - const Uint8 = uInt8Array[ offset.value ]; - - offset.value = offset.value + INT8_SIZE; - - return Uint8; - - } - - function parseUint8( dataView, offset ) { - - const Uint8 = dataView.getUint8( offset.value ); - - offset.value = offset.value + INT8_SIZE; - - return Uint8; - - } - - const parseInt64 = function ( dataView, offset ) { - - let int; - - if ( 'getBigInt64' in DataView.prototype ) { - - int = Number( dataView.getBigInt64( offset.value, true ) ); - - } else { - - int = dataView.getUint32( offset.value + 4, true ) + Number( dataView.getUint32( offset.value, true ) << 32 ); - - } - - offset.value += ULONG_SIZE; - - return int; - - }; - - function parseFloat32( dataView, offset ) { - - const float = dataView.getFloat32( offset.value, true ); - - offset.value += FLOAT32_SIZE; - - return float; - - } - - function decodeFloat32( dataView, offset ) { - - return DataUtils.toHalfFloat( parseFloat32( dataView, offset ) ); - - } - - // https://stackoverflow.com/questions/5678432/decompressing-half-precision-floats-in-javascript - function decodeFloat16( binary ) { - - const exponent = ( binary & 0x7C00 ) >> 10, - fraction = binary & 0x03FF; - - return ( binary >> 15 ? - 1 : 1 ) * ( - exponent ? - ( - exponent === 0x1F ? - fraction ? NaN : Infinity : - Math.pow( 2, exponent - 15 ) * ( 1 + fraction / 0x400 ) - ) : - 6.103515625e-5 * ( fraction / 0x400 ) - ); - - } - - function parseUint16( dataView, offset ) { - - const Uint16 = dataView.getUint16( offset.value, true ); - - offset.value += INT16_SIZE; - - return Uint16; - - } - - function parseFloat16( buffer, offset ) { - - return decodeFloat16( parseUint16( buffer, offset ) ); - - } - - function parseChlist( dataView, buffer, offset, size ) { - - const startOffset = offset.value; - const channels = []; - - while ( offset.value < ( startOffset + size - 1 ) ) { - - const name = parseNullTerminatedString( buffer, offset ); - const pixelType = parseInt32( dataView, offset ); - const pLinear = parseUint8( dataView, offset ); - offset.value += 3; // reserved, three chars - const xSampling = parseInt32( dataView, offset ); - const ySampling = parseInt32( dataView, offset ); - - channels.push( { - name: name, - pixelType: pixelType, - pLinear: pLinear, - xSampling: xSampling, - ySampling: ySampling - } ); - - } - - offset.value += 1; - - return channels; - - } - - function parseChromaticities( dataView, offset ) { - - const redX = parseFloat32( dataView, offset ); - const redY = parseFloat32( dataView, offset ); - const greenX = parseFloat32( dataView, offset ); - const greenY = parseFloat32( dataView, offset ); - const blueX = parseFloat32( dataView, offset ); - const blueY = parseFloat32( dataView, offset ); - const whiteX = parseFloat32( dataView, offset ); - const whiteY = parseFloat32( dataView, offset ); - - return { redX: redX, redY: redY, greenX: greenX, greenY: greenY, blueX: blueX, blueY: blueY, whiteX: whiteX, whiteY: whiteY }; - - } - - function parseCompression( dataView, offset ) { - - const compressionCodes = [ - 'NO_COMPRESSION', - 'RLE_COMPRESSION', - 'ZIPS_COMPRESSION', - 'ZIP_COMPRESSION', - 'PIZ_COMPRESSION', - 'PXR24_COMPRESSION', - 'B44_COMPRESSION', - 'B44A_COMPRESSION', - 'DWAA_COMPRESSION', - 'DWAB_COMPRESSION' - ]; - - const compression = parseUint8( dataView, offset ); - - return compressionCodes[ compression ]; - - } - - function parseBox2i( dataView, offset ) { - - const xMin = parseUint32( dataView, offset ); - const yMin = parseUint32( dataView, offset ); - const xMax = parseUint32( dataView, offset ); - const yMax = parseUint32( dataView, offset ); - - return { xMin: xMin, yMin: yMin, xMax: xMax, yMax: yMax }; - - } - - function parseLineOrder( dataView, offset ) { - - const lineOrders = [ - 'INCREASING_Y' - ]; - - const lineOrder = parseUint8( dataView, offset ); - - return lineOrders[ lineOrder ]; - - } - - function parseV2f( dataView, offset ) { - - const x = parseFloat32( dataView, offset ); - const y = parseFloat32( dataView, offset ); - - return [ x, y ]; - - } - - function parseV3f( dataView, offset ) { - - const x = parseFloat32( dataView, offset ); - const y = parseFloat32( dataView, offset ); - const z = parseFloat32( dataView, offset ); - - return [ x, y, z ]; - - } - - function parseValue( dataView, buffer, offset, type, size ) { - - if ( type === 'string' || type === 'stringvector' || type === 'iccProfile' ) { - - return parseFixedLengthString( buffer, offset, size ); - - } else if ( type === 'chlist' ) { - - return parseChlist( dataView, buffer, offset, size ); - - } else if ( type === 'chromaticities' ) { - - return parseChromaticities( dataView, offset ); - - } else if ( type === 'compression' ) { - - return parseCompression( dataView, offset ); - - } else if ( type === 'box2i' ) { - - return parseBox2i( dataView, offset ); - - } else if ( type === 'lineOrder' ) { - - return parseLineOrder( dataView, offset ); - - } else if ( type === 'float' ) { - - return parseFloat32( dataView, offset ); - - } else if ( type === 'v2f' ) { - - return parseV2f( dataView, offset ); - - } else if ( type === 'v3f' ) { - - return parseV3f( dataView, offset ); - - } else if ( type === 'int' ) { - - return parseInt32( dataView, offset ); - - } else if ( type === 'rational' ) { - - return parseRational( dataView, offset ); - - } else if ( type === 'timecode' ) { - - return parseTimecode( dataView, offset ); - - } else if ( type === 'preview' ) { - - offset.value += size; - return 'skipped'; - - } else { - - offset.value += size; - return undefined; - - } - - } - - function parseHeader( dataView, buffer, offset ) { - - const EXRHeader = {}; - - if ( dataView.getUint32( 0, true ) != 20000630 ) { // magic - - throw new Error( 'THREE.EXRLoader: Provided file doesn\'t appear to be in OpenEXR format.' ); - - } - - EXRHeader.version = dataView.getUint8( 4 ); - - const spec = dataView.getUint8( 5 ); // fullMask - - EXRHeader.spec = { - singleTile: !! ( spec & 2 ), - longName: !! ( spec & 4 ), - deepFormat: !! ( spec & 8 ), - multiPart: !! ( spec & 16 ), - }; - - // start of header - - offset.value = 8; // start at 8 - after pre-amble - - let keepReading = true; - - while ( keepReading ) { - - const attributeName = parseNullTerminatedString( buffer, offset ); - - if ( attributeName == 0 ) { - - keepReading = false; - - } else { - - const attributeType = parseNullTerminatedString( buffer, offset ); - const attributeSize = parseUint32( dataView, offset ); - const attributeValue = parseValue( dataView, buffer, offset, attributeType, attributeSize ); - - if ( attributeValue === undefined ) { - - console.warn( `THREE.EXRLoader: Skipped unknown header attribute type \'${attributeType}\'.` ); - - } else { - - EXRHeader[ attributeName ] = attributeValue; - - } - - } - - } - - if ( ( spec & ~ 0x04 ) != 0 ) { // unsupported tiled, deep-image, multi-part - - console.error( 'THREE.EXRHeader:', EXRHeader ); - throw new Error( 'THREE.EXRLoader: Provided file is currently unsupported.' ); - - } - - return EXRHeader; - - } - - function setupDecoder( EXRHeader, dataView, uInt8Array, offset, outputType ) { - - const EXRDecoder = { - size: 0, - viewer: dataView, - array: uInt8Array, - offset: offset, - width: EXRHeader.dataWindow.xMax - EXRHeader.dataWindow.xMin + 1, - height: EXRHeader.dataWindow.yMax - EXRHeader.dataWindow.yMin + 1, - channels: EXRHeader.channels.length, - bytesPerLine: null, - lines: null, - inputSize: null, - type: EXRHeader.channels[ 0 ].pixelType, - uncompress: null, - getter: null, - format: null, - colorSpace: LinearSRGBColorSpace, - }; - - switch ( EXRHeader.compression ) { - - case 'NO_COMPRESSION': - EXRDecoder.lines = 1; - EXRDecoder.uncompress = uncompressRAW; - break; - - case 'RLE_COMPRESSION': - EXRDecoder.lines = 1; - EXRDecoder.uncompress = uncompressRLE; - break; - - case 'ZIPS_COMPRESSION': - EXRDecoder.lines = 1; - EXRDecoder.uncompress = uncompressZIP; - break; - - case 'ZIP_COMPRESSION': - EXRDecoder.lines = 16; - EXRDecoder.uncompress = uncompressZIP; - break; - - case 'PIZ_COMPRESSION': - EXRDecoder.lines = 32; - EXRDecoder.uncompress = uncompressPIZ; - break; - - case 'PXR24_COMPRESSION': - EXRDecoder.lines = 16; - EXRDecoder.uncompress = uncompressPXR; - break; - - case 'DWAA_COMPRESSION': - EXRDecoder.lines = 32; - EXRDecoder.uncompress = uncompressDWA; - break; - - case 'DWAB_COMPRESSION': - EXRDecoder.lines = 256; - EXRDecoder.uncompress = uncompressDWA; - break; - - default: - throw new Error( 'EXRLoader.parse: ' + EXRHeader.compression + ' is unsupported' ); - - } - - EXRDecoder.scanlineBlockSize = EXRDecoder.lines; - - if ( EXRDecoder.type == 1 ) { - - // half - switch ( outputType ) { - - case FloatType: - EXRDecoder.getter = parseFloat16; - EXRDecoder.inputSize = INT16_SIZE; - break; - - case HalfFloatType: - EXRDecoder.getter = parseUint16; - EXRDecoder.inputSize = INT16_SIZE; - break; - - } - - } else if ( EXRDecoder.type == 2 ) { - - // float - switch ( outputType ) { - - case FloatType: - EXRDecoder.getter = parseFloat32; - EXRDecoder.inputSize = FLOAT32_SIZE; - break; - - case HalfFloatType: - EXRDecoder.getter = decodeFloat32; - EXRDecoder.inputSize = FLOAT32_SIZE; - - } - - } else { - - throw new Error( 'EXRLoader.parse: unsupported pixelType ' + EXRDecoder.type + ' for ' + EXRHeader.compression + '.' ); - - } - - EXRDecoder.blockCount = ( EXRHeader.dataWindow.yMax + 1 ) / EXRDecoder.scanlineBlockSize; - - for ( let i = 0; i < EXRDecoder.blockCount; i ++ ) - parseInt64( dataView, offset ); // scanlineOffset - - // we should be passed the scanline offset table, ready to start reading pixel data. - - // RGB images will be converted to RGBA format, preventing software emulation in select devices. - EXRDecoder.outputChannels = ( ( EXRDecoder.channels == 3 ) ? 4 : EXRDecoder.channels ); - const size = EXRDecoder.width * EXRDecoder.height * EXRDecoder.outputChannels; - - switch ( outputType ) { - - case FloatType: - EXRDecoder.byteArray = new Float32Array( size ); - - // Fill initially with 1s for the alpha value if the texture is not RGBA, RGB values will be overwritten - if ( EXRDecoder.channels < EXRDecoder.outputChannels ) - EXRDecoder.byteArray.fill( 1, 0, size ); - - break; - - case HalfFloatType: - EXRDecoder.byteArray = new Uint16Array( size ); - - if ( EXRDecoder.channels < EXRDecoder.outputChannels ) - EXRDecoder.byteArray.fill( 0x3C00, 0, size ); // Uint16Array holds half float data, 0x3C00 is 1 - - break; - - default: - console.error( 'THREE.EXRLoader: unsupported type: ', outputType ); - break; - - } - - EXRDecoder.bytesPerLine = EXRDecoder.width * EXRDecoder.inputSize * EXRDecoder.channels; - - if ( EXRDecoder.outputChannels == 4 ) { - - EXRDecoder.format = RGBAFormat; - EXRDecoder.colorSpace = LinearSRGBColorSpace; - - } else { - - EXRDecoder.format = RedFormat; - EXRDecoder.colorSpace = NoColorSpace; - - } - - return EXRDecoder; - - } - - // start parsing file [START] - - const bufferDataView = new DataView( buffer ); - const uInt8Array = new Uint8Array( buffer ); - const offset = { value: 0 }; - - // get header information and validate format. - const EXRHeader = parseHeader( bufferDataView, buffer, offset ); - - // get input compression information and prepare decoding. - const EXRDecoder = setupDecoder( EXRHeader, bufferDataView, uInt8Array, offset, this.type ); - - const tmpOffset = { value: 0 }; - const channelOffsets = { R: 0, G: 1, B: 2, A: 3, Y: 0 }; - - for ( let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.scanlineBlockSize; scanlineBlockIdx ++ ) { - - const line = parseUint32( bufferDataView, offset ); // line_no - EXRDecoder.size = parseUint32( bufferDataView, offset ); // data_len - EXRDecoder.lines = ( ( line + EXRDecoder.scanlineBlockSize > EXRDecoder.height ) ? ( EXRDecoder.height - line ) : EXRDecoder.scanlineBlockSize ); - - const isCompressed = EXRDecoder.size < EXRDecoder.lines * EXRDecoder.bytesPerLine; - const viewer = isCompressed ? EXRDecoder.uncompress( EXRDecoder ) : uncompressRAW( EXRDecoder ); - - offset.value += EXRDecoder.size; - - for ( let line_y = 0; line_y < EXRDecoder.scanlineBlockSize; line_y ++ ) { - - const true_y = line_y + scanlineBlockIdx * EXRDecoder.scanlineBlockSize; - if ( true_y >= EXRDecoder.height ) break; - - for ( let channelID = 0; channelID < EXRDecoder.channels; channelID ++ ) { - - const cOff = channelOffsets[ EXRHeader.channels[ channelID ].name ]; - - for ( let x = 0; x < EXRDecoder.width; x ++ ) { - - tmpOffset.value = ( line_y * ( EXRDecoder.channels * EXRDecoder.width ) + channelID * EXRDecoder.width + x ) * EXRDecoder.inputSize; - const outIndex = ( EXRDecoder.height - 1 - true_y ) * ( EXRDecoder.width * EXRDecoder.outputChannels ) + x * EXRDecoder.outputChannels + cOff; - EXRDecoder.byteArray[ outIndex ] = EXRDecoder.getter( viewer, tmpOffset ); - - } - - } - - } - - } - - return { - header: EXRHeader, - width: EXRDecoder.width, - height: EXRDecoder.height, - data: EXRDecoder.byteArray, - format: EXRDecoder.format, - colorSpace: EXRDecoder.colorSpace, - type: this.type, - }; - - } - - setDataType( value ) { - - this.type = value; - return this; - - } - - load( url, onLoad, onProgress, onError ) { - - function onLoadCallback( texture, texData ) { - - texture.colorSpace = texData.colorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - texture.flipY = false; - - if ( onLoad ) onLoad( texture, texData ); - - } - - return super.load( url, onLoadCallback, onProgress, onError ); - - } - -} - -export { EXRLoader }; diff --git a/three/addons/loaders/FBXLoader.js b/three/addons/loaders/FBXLoader.js deleted file mode 100644 index bc2d837..0000000 --- a/three/addons/loaders/FBXLoader.js +++ /dev/null @@ -1,4314 +0,0 @@ -import { - AmbientLight, - AnimationClip, - Bone, - BufferGeometry, - ClampToEdgeWrapping, - Color, - DirectionalLight, - EquirectangularReflectionMapping, - Euler, - FileLoader, - Float32BufferAttribute, - Group, - Line, - LineBasicMaterial, - Loader, - LoaderUtils, - MathUtils, - Matrix3, - Matrix4, - Mesh, - MeshLambertMaterial, - MeshPhongMaterial, - NumberKeyframeTrack, - Object3D, - OrthographicCamera, - PerspectiveCamera, - PointLight, - PropertyBinding, - Quaternion, - QuaternionKeyframeTrack, - RepeatWrapping, - Skeleton, - SkinnedMesh, - SpotLight, - Texture, - TextureLoader, - Uint16BufferAttribute, - Vector2, - Vector3, - Vector4, - VectorKeyframeTrack, - SRGBColorSpace, - ShapeUtils -} from 'three'; -import * as fflate from '../libs/fflate.module.js'; -import { NURBSCurve } from '../curves/NURBSCurve.js'; - -/** - * Loader loads FBX file and generates Group representing FBX scene. - * Requires FBX file to be >= 7.0 and in ASCII or >= 6400 in Binary format - * Versions lower than this may load but will probably have errors - * - * Needs Support: - * Morph normals / blend shape normals - * - * FBX format references: - * https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html (C++ SDK reference) - * - * Binary format specification: - * https://code.blender.org/2013/08/fbx-binary-file-format-specification/ - */ - - -let fbxTree; -let connections; -let sceneGraph; - -class FBXLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const path = ( scope.path === '' ) ? LoaderUtils.extractUrlBase( url ) : scope.path; - - const loader = new FileLoader( this.manager ); - loader.setPath( scope.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - - loader.load( url, function ( buffer ) { - - try { - - onLoad( scope.parse( buffer, path ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( FBXBuffer, path ) { - - if ( isFbxFormatBinary( FBXBuffer ) ) { - - fbxTree = new BinaryParser().parse( FBXBuffer ); - - } else { - - const FBXText = convertArrayBufferToString( FBXBuffer ); - - if ( ! isFbxFormatASCII( FBXText ) ) { - - throw new Error( 'THREE.FBXLoader: Unknown format.' ); - - } - - if ( getFbxVersion( FBXText ) < 7000 ) { - - throw new Error( 'THREE.FBXLoader: FBX version not supported, FileVersion: ' + getFbxVersion( FBXText ) ); - - } - - fbxTree = new TextParser().parse( FBXText ); - - } - - // console.log( fbxTree ); - - const textureLoader = new TextureLoader( this.manager ).setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin ); - - return new FBXTreeParser( textureLoader, this.manager ).parse( fbxTree ); - - } - -} - -// Parse the FBXTree object returned by the BinaryParser or TextParser and return a Group -class FBXTreeParser { - - constructor( textureLoader, manager ) { - - this.textureLoader = textureLoader; - this.manager = manager; - - } - - parse() { - - connections = this.parseConnections(); - - const images = this.parseImages(); - const textures = this.parseTextures( images ); - const materials = this.parseMaterials( textures ); - const deformers = this.parseDeformers(); - const geometryMap = new GeometryParser().parse( deformers ); - - this.parseScene( deformers, geometryMap, materials ); - - return sceneGraph; - - } - - // Parses FBXTree.Connections which holds parent-child connections between objects (e.g. material -> texture, model->geometry ) - // and details the connection type - parseConnections() { - - const connectionMap = new Map(); - - if ( 'Connections' in fbxTree ) { - - const rawConnections = fbxTree.Connections.connections; - - rawConnections.forEach( function ( rawConnection ) { - - const fromID = rawConnection[ 0 ]; - const toID = rawConnection[ 1 ]; - const relationship = rawConnection[ 2 ]; - - if ( ! connectionMap.has( fromID ) ) { - - connectionMap.set( fromID, { - parents: [], - children: [] - } ); - - } - - const parentRelationship = { ID: toID, relationship: relationship }; - connectionMap.get( fromID ).parents.push( parentRelationship ); - - if ( ! connectionMap.has( toID ) ) { - - connectionMap.set( toID, { - parents: [], - children: [] - } ); - - } - - const childRelationship = { ID: fromID, relationship: relationship }; - connectionMap.get( toID ).children.push( childRelationship ); - - } ); - - } - - return connectionMap; - - } - - // Parse FBXTree.Objects.Video for embedded image data - // These images are connected to textures in FBXTree.Objects.Textures - // via FBXTree.Connections. - parseImages() { - - const images = {}; - const blobs = {}; - - if ( 'Video' in fbxTree.Objects ) { - - const videoNodes = fbxTree.Objects.Video; - - for ( const nodeID in videoNodes ) { - - const videoNode = videoNodes[ nodeID ]; - - const id = parseInt( nodeID ); - - images[ id ] = videoNode.RelativeFilename || videoNode.Filename; - - // raw image data is in videoNode.Content - if ( 'Content' in videoNode ) { - - const arrayBufferContent = ( videoNode.Content instanceof ArrayBuffer ) && ( videoNode.Content.byteLength > 0 ); - const base64Content = ( typeof videoNode.Content === 'string' ) && ( videoNode.Content !== '' ); - - if ( arrayBufferContent || base64Content ) { - - const image = this.parseImage( videoNodes[ nodeID ] ); - - blobs[ videoNode.RelativeFilename || videoNode.Filename ] = image; - - } - - } - - } - - } - - for ( const id in images ) { - - const filename = images[ id ]; - - if ( blobs[ filename ] !== undefined ) images[ id ] = blobs[ filename ]; - else images[ id ] = images[ id ].split( '\\' ).pop(); - - } - - return images; - - } - - // Parse embedded image data in FBXTree.Video.Content - parseImage( videoNode ) { - - const content = videoNode.Content; - const fileName = videoNode.RelativeFilename || videoNode.Filename; - const extension = fileName.slice( fileName.lastIndexOf( '.' ) + 1 ).toLowerCase(); - - let type; - - switch ( extension ) { - - case 'bmp': - - type = 'image/bmp'; - break; - - case 'jpg': - case 'jpeg': - - type = 'image/jpeg'; - break; - - case 'png': - - type = 'image/png'; - break; - - case 'tif': - - type = 'image/tiff'; - break; - - case 'tga': - - if ( this.manager.getHandler( '.tga' ) === null ) { - - console.warn( 'FBXLoader: TGA loader not found, skipping ', fileName ); - - } - - type = 'image/tga'; - break; - - default: - - console.warn( 'FBXLoader: Image type "' + extension + '" is not supported.' ); - return; - - } - - if ( typeof content === 'string' ) { // ASCII format - - return 'data:' + type + ';base64,' + content; - - } else { // Binary Format - - const array = new Uint8Array( content ); - return window.URL.createObjectURL( new Blob( [ array ], { type: type } ) ); - - } - - } - - // Parse nodes in FBXTree.Objects.Texture - // These contain details such as UV scaling, cropping, rotation etc and are connected - // to images in FBXTree.Objects.Video - parseTextures( images ) { - - const textureMap = new Map(); - - if ( 'Texture' in fbxTree.Objects ) { - - const textureNodes = fbxTree.Objects.Texture; - for ( const nodeID in textureNodes ) { - - const texture = this.parseTexture( textureNodes[ nodeID ], images ); - textureMap.set( parseInt( nodeID ), texture ); - - } - - } - - return textureMap; - - } - - // Parse individual node in FBXTree.Objects.Texture - parseTexture( textureNode, images ) { - - const texture = this.loadTexture( textureNode, images ); - - texture.ID = textureNode.id; - - texture.name = textureNode.attrName; - - const wrapModeU = textureNode.WrapModeU; - const wrapModeV = textureNode.WrapModeV; - - const valueU = wrapModeU !== undefined ? wrapModeU.value : 0; - const valueV = wrapModeV !== undefined ? wrapModeV.value : 0; - - // http://download.autodesk.com/us/fbx/SDKdocs/FBX_SDK_Help/files/fbxsdkref/class_k_fbx_texture.html#889640e63e2e681259ea81061b85143a - // 0: repeat(default), 1: clamp - - texture.wrapS = valueU === 0 ? RepeatWrapping : ClampToEdgeWrapping; - texture.wrapT = valueV === 0 ? RepeatWrapping : ClampToEdgeWrapping; - - if ( 'Scaling' in textureNode ) { - - const values = textureNode.Scaling.value; - - texture.repeat.x = values[ 0 ]; - texture.repeat.y = values[ 1 ]; - - } - - if ( 'Translation' in textureNode ) { - - const values = textureNode.Translation.value; - - texture.offset.x = values[ 0 ]; - texture.offset.y = values[ 1 ]; - - } - - return texture; - - } - - // load a texture specified as a blob or data URI, or via an external URL using TextureLoader - loadTexture( textureNode, images ) { - - let fileName; - - const currentPath = this.textureLoader.path; - - const children = connections.get( textureNode.id ).children; - - if ( children !== undefined && children.length > 0 && images[ children[ 0 ].ID ] !== undefined ) { - - fileName = images[ children[ 0 ].ID ]; - - if ( fileName.indexOf( 'blob:' ) === 0 || fileName.indexOf( 'data:' ) === 0 ) { - - this.textureLoader.setPath( undefined ); - - } - - } - - let texture; - - const extension = textureNode.FileName.slice( - 3 ).toLowerCase(); - - if ( extension === 'tga' ) { - - const loader = this.manager.getHandler( '.tga' ); - - if ( loader === null ) { - - console.warn( 'FBXLoader: TGA loader not found, creating placeholder texture for', textureNode.RelativeFilename ); - texture = new Texture(); - - } else { - - loader.setPath( this.textureLoader.path ); - texture = loader.load( fileName ); - - } - - } else if ( extension === 'dds' ) { - - const loader = this.manager.getHandler( '.dds' ); - - if ( loader === null ) { - - console.warn( 'FBXLoader: DDS loader not found, creating placeholder texture for', textureNode.RelativeFilename ); - texture = new Texture(); - - } else { - - loader.setPath( this.textureLoader.path ); - texture = loader.load( fileName ); - - } - - } else if ( extension === 'psd' ) { - - console.warn( 'FBXLoader: PSD textures are not supported, creating placeholder texture for', textureNode.RelativeFilename ); - texture = new Texture(); - - } else { - - texture = this.textureLoader.load( fileName ); - - } - - this.textureLoader.setPath( currentPath ); - - return texture; - - } - - // Parse nodes in FBXTree.Objects.Material - parseMaterials( textureMap ) { - - const materialMap = new Map(); - - if ( 'Material' in fbxTree.Objects ) { - - const materialNodes = fbxTree.Objects.Material; - - for ( const nodeID in materialNodes ) { - - const material = this.parseMaterial( materialNodes[ nodeID ], textureMap ); - - if ( material !== null ) materialMap.set( parseInt( nodeID ), material ); - - } - - } - - return materialMap; - - } - - // Parse single node in FBXTree.Objects.Material - // Materials are connected to texture maps in FBXTree.Objects.Textures - // FBX format currently only supports Lambert and Phong shading models - parseMaterial( materialNode, textureMap ) { - - const ID = materialNode.id; - const name = materialNode.attrName; - let type = materialNode.ShadingModel; - - // Case where FBX wraps shading model in property object. - if ( typeof type === 'object' ) { - - type = type.value; - - } - - // Ignore unused materials which don't have any connections. - if ( ! connections.has( ID ) ) return null; - - const parameters = this.parseParameters( materialNode, textureMap, ID ); - - let material; - - switch ( type.toLowerCase() ) { - - case 'phong': - material = new MeshPhongMaterial(); - break; - case 'lambert': - material = new MeshLambertMaterial(); - break; - default: - console.warn( 'THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.', type ); - material = new MeshPhongMaterial(); - break; - - } - - material.setValues( parameters ); - material.name = name; - - return material; - - } - - // Parse FBX material and return parameters suitable for a three.js material - // Also parse the texture map and return any textures associated with the material - parseParameters( materialNode, textureMap, ID ) { - - const parameters = {}; - - if ( materialNode.BumpFactor ) { - - parameters.bumpScale = materialNode.BumpFactor.value; - - } - - if ( materialNode.Diffuse ) { - - parameters.color = new Color().fromArray( materialNode.Diffuse.value ).convertSRGBToLinear(); - - } else if ( materialNode.DiffuseColor && ( materialNode.DiffuseColor.type === 'Color' || materialNode.DiffuseColor.type === 'ColorRGB' ) ) { - - // The blender exporter exports diffuse here instead of in materialNode.Diffuse - parameters.color = new Color().fromArray( materialNode.DiffuseColor.value ).convertSRGBToLinear(); - - } - - if ( materialNode.DisplacementFactor ) { - - parameters.displacementScale = materialNode.DisplacementFactor.value; - - } - - if ( materialNode.Emissive ) { - - parameters.emissive = new Color().fromArray( materialNode.Emissive.value ).convertSRGBToLinear(); - - } else if ( materialNode.EmissiveColor && ( materialNode.EmissiveColor.type === 'Color' || materialNode.EmissiveColor.type === 'ColorRGB' ) ) { - - // The blender exporter exports emissive color here instead of in materialNode.Emissive - parameters.emissive = new Color().fromArray( materialNode.EmissiveColor.value ).convertSRGBToLinear(); - - } - - if ( materialNode.EmissiveFactor ) { - - parameters.emissiveIntensity = parseFloat( materialNode.EmissiveFactor.value ); - - } - - if ( materialNode.Opacity ) { - - parameters.opacity = parseFloat( materialNode.Opacity.value ); - - } - - if ( parameters.opacity < 1.0 ) { - - parameters.transparent = true; - - } - - if ( materialNode.ReflectionFactor ) { - - parameters.reflectivity = materialNode.ReflectionFactor.value; - - } - - if ( materialNode.Shininess ) { - - parameters.shininess = materialNode.Shininess.value; - - } - - if ( materialNode.Specular ) { - - parameters.specular = new Color().fromArray( materialNode.Specular.value ).convertSRGBToLinear(); - - } else if ( materialNode.SpecularColor && materialNode.SpecularColor.type === 'Color' ) { - - // The blender exporter exports specular color here instead of in materialNode.Specular - parameters.specular = new Color().fromArray( materialNode.SpecularColor.value ).convertSRGBToLinear(); - - } - - const scope = this; - connections.get( ID ).children.forEach( function ( child ) { - - const type = child.relationship; - - switch ( type ) { - - case 'Bump': - parameters.bumpMap = scope.getTexture( textureMap, child.ID ); - break; - - case 'Maya|TEX_ao_map': - parameters.aoMap = scope.getTexture( textureMap, child.ID ); - break; - - case 'DiffuseColor': - case 'Maya|TEX_color_map': - parameters.map = scope.getTexture( textureMap, child.ID ); - if ( parameters.map !== undefined ) { - - parameters.map.colorSpace = SRGBColorSpace; - - } - - break; - - case 'DisplacementColor': - parameters.displacementMap = scope.getTexture( textureMap, child.ID ); - break; - - case 'EmissiveColor': - parameters.emissiveMap = scope.getTexture( textureMap, child.ID ); - if ( parameters.emissiveMap !== undefined ) { - - parameters.emissiveMap.colorSpace = SRGBColorSpace; - - } - - break; - - case 'NormalMap': - case 'Maya|TEX_normal_map': - parameters.normalMap = scope.getTexture( textureMap, child.ID ); - break; - - case 'ReflectionColor': - parameters.envMap = scope.getTexture( textureMap, child.ID ); - if ( parameters.envMap !== undefined ) { - - parameters.envMap.mapping = EquirectangularReflectionMapping; - parameters.envMap.colorSpace = SRGBColorSpace; - - } - - break; - - case 'SpecularColor': - parameters.specularMap = scope.getTexture( textureMap, child.ID ); - if ( parameters.specularMap !== undefined ) { - - parameters.specularMap.colorSpace = SRGBColorSpace; - - } - - break; - - case 'TransparentColor': - case 'TransparencyFactor': - parameters.alphaMap = scope.getTexture( textureMap, child.ID ); - parameters.transparent = true; - break; - - case 'AmbientColor': - case 'ShininessExponent': // AKA glossiness map - case 'SpecularFactor': // AKA specularLevel - case 'VectorDisplacementColor': // NOTE: Seems to be a copy of DisplacementColor - default: - console.warn( 'THREE.FBXLoader: %s map is not supported in three.js, skipping texture.', type ); - break; - - } - - } ); - - return parameters; - - } - - // get a texture from the textureMap for use by a material. - getTexture( textureMap, id ) { - - // if the texture is a layered texture, just use the first layer and issue a warning - if ( 'LayeredTexture' in fbxTree.Objects && id in fbxTree.Objects.LayeredTexture ) { - - console.warn( 'THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.' ); - id = connections.get( id ).children[ 0 ].ID; - - } - - return textureMap.get( id ); - - } - - // Parse nodes in FBXTree.Objects.Deformer - // Deformer node can contain skinning or Vertex Cache animation data, however only skinning is supported here - // Generates map of Skeleton-like objects for use later when generating and binding skeletons. - parseDeformers() { - - const skeletons = {}; - const morphTargets = {}; - - if ( 'Deformer' in fbxTree.Objects ) { - - const DeformerNodes = fbxTree.Objects.Deformer; - - for ( const nodeID in DeformerNodes ) { - - const deformerNode = DeformerNodes[ nodeID ]; - - const relationships = connections.get( parseInt( nodeID ) ); - - if ( deformerNode.attrType === 'Skin' ) { - - const skeleton = this.parseSkeleton( relationships, DeformerNodes ); - skeleton.ID = nodeID; - - if ( relationships.parents.length > 1 ) console.warn( 'THREE.FBXLoader: skeleton attached to more than one geometry is not supported.' ); - skeleton.geometryID = relationships.parents[ 0 ].ID; - - skeletons[ nodeID ] = skeleton; - - } else if ( deformerNode.attrType === 'BlendShape' ) { - - const morphTarget = { - id: nodeID, - }; - - morphTarget.rawTargets = this.parseMorphTargets( relationships, DeformerNodes ); - morphTarget.id = nodeID; - - if ( relationships.parents.length > 1 ) console.warn( 'THREE.FBXLoader: morph target attached to more than one geometry is not supported.' ); - - morphTargets[ nodeID ] = morphTarget; - - } - - } - - } - - return { - - skeletons: skeletons, - morphTargets: morphTargets, - - }; - - } - - // Parse single nodes in FBXTree.Objects.Deformer - // The top level skeleton node has type 'Skin' and sub nodes have type 'Cluster' - // Each skin node represents a skeleton and each cluster node represents a bone - parseSkeleton( relationships, deformerNodes ) { - - const rawBones = []; - - relationships.children.forEach( function ( child ) { - - const boneNode = deformerNodes[ child.ID ]; - - if ( boneNode.attrType !== 'Cluster' ) return; - - const rawBone = { - - ID: child.ID, - indices: [], - weights: [], - transformLink: new Matrix4().fromArray( boneNode.TransformLink.a ), - // transform: new Matrix4().fromArray( boneNode.Transform.a ), - // linkMode: boneNode.Mode, - - }; - - if ( 'Indexes' in boneNode ) { - - rawBone.indices = boneNode.Indexes.a; - rawBone.weights = boneNode.Weights.a; - - } - - rawBones.push( rawBone ); - - } ); - - return { - - rawBones: rawBones, - bones: [] - - }; - - } - - // The top level morph deformer node has type "BlendShape" and sub nodes have type "BlendShapeChannel" - parseMorphTargets( relationships, deformerNodes ) { - - const rawMorphTargets = []; - - for ( let i = 0; i < relationships.children.length; i ++ ) { - - const child = relationships.children[ i ]; - - const morphTargetNode = deformerNodes[ child.ID ]; - - const rawMorphTarget = { - - name: morphTargetNode.attrName, - initialWeight: morphTargetNode.DeformPercent, - id: morphTargetNode.id, - fullWeights: morphTargetNode.FullWeights.a - - }; - - if ( morphTargetNode.attrType !== 'BlendShapeChannel' ) return; - - rawMorphTarget.geoID = connections.get( parseInt( child.ID ) ).children.filter( function ( child ) { - - return child.relationship === undefined; - - } )[ 0 ].ID; - - rawMorphTargets.push( rawMorphTarget ); - - } - - return rawMorphTargets; - - } - - // create the main Group() to be returned by the loader - parseScene( deformers, geometryMap, materialMap ) { - - sceneGraph = new Group(); - - const modelMap = this.parseModels( deformers.skeletons, geometryMap, materialMap ); - - const modelNodes = fbxTree.Objects.Model; - - const scope = this; - modelMap.forEach( function ( model ) { - - const modelNode = modelNodes[ model.ID ]; - scope.setLookAtProperties( model, modelNode ); - - const parentConnections = connections.get( model.ID ).parents; - - parentConnections.forEach( function ( connection ) { - - const parent = modelMap.get( connection.ID ); - if ( parent !== undefined ) parent.add( model ); - - } ); - - if ( model.parent === null ) { - - sceneGraph.add( model ); - - } - - - } ); - - this.bindSkeleton( deformers.skeletons, geometryMap, modelMap ); - - this.addGlobalSceneSettings(); - - sceneGraph.traverse( function ( node ) { - - if ( node.userData.transformData ) { - - if ( node.parent ) { - - node.userData.transformData.parentMatrix = node.parent.matrix; - node.userData.transformData.parentMatrixWorld = node.parent.matrixWorld; - - } - - const transform = generateTransform( node.userData.transformData ); - - node.applyMatrix4( transform ); - node.updateWorldMatrix(); - - } - - } ); - - const animations = new AnimationParser().parse(); - - // if all the models where already combined in a single group, just return that - if ( sceneGraph.children.length === 1 && sceneGraph.children[ 0 ].isGroup ) { - - sceneGraph.children[ 0 ].animations = animations; - sceneGraph = sceneGraph.children[ 0 ]; - - } - - sceneGraph.animations = animations; - - } - - // parse nodes in FBXTree.Objects.Model - parseModels( skeletons, geometryMap, materialMap ) { - - const modelMap = new Map(); - const modelNodes = fbxTree.Objects.Model; - - for ( const nodeID in modelNodes ) { - - const id = parseInt( nodeID ); - const node = modelNodes[ nodeID ]; - const relationships = connections.get( id ); - - let model = this.buildSkeleton( relationships, skeletons, id, node.attrName ); - - if ( ! model ) { - - switch ( node.attrType ) { - - case 'Camera': - model = this.createCamera( relationships ); - break; - case 'Light': - model = this.createLight( relationships ); - break; - case 'Mesh': - model = this.createMesh( relationships, geometryMap, materialMap ); - break; - case 'NurbsCurve': - model = this.createCurve( relationships, geometryMap ); - break; - case 'LimbNode': - case 'Root': - model = new Bone(); - break; - case 'Null': - default: - model = new Group(); - break; - - } - - model.name = node.attrName ? PropertyBinding.sanitizeNodeName( node.attrName ) : ''; - model.userData.originalName = node.attrName; - - model.ID = id; - - } - - this.getTransformData( model, node ); - modelMap.set( id, model ); - - } - - return modelMap; - - } - - buildSkeleton( relationships, skeletons, id, name ) { - - let bone = null; - - relationships.parents.forEach( function ( parent ) { - - for ( const ID in skeletons ) { - - const skeleton = skeletons[ ID ]; - - skeleton.rawBones.forEach( function ( rawBone, i ) { - - if ( rawBone.ID === parent.ID ) { - - const subBone = bone; - bone = new Bone(); - - bone.matrixWorld.copy( rawBone.transformLink ); - - // set name and id here - otherwise in cases where "subBone" is created it will not have a name / id - - bone.name = name ? PropertyBinding.sanitizeNodeName( name ) : ''; - bone.userData.originalName = name; - bone.ID = id; - - skeleton.bones[ i ] = bone; - - // In cases where a bone is shared between multiple meshes - // duplicate the bone here and and it as a child of the first bone - if ( subBone !== null ) { - - bone.add( subBone ); - - } - - } - - } ); - - } - - } ); - - return bone; - - } - - // create a PerspectiveCamera or OrthographicCamera - createCamera( relationships ) { - - let model; - let cameraAttribute; - - relationships.children.forEach( function ( child ) { - - const attr = fbxTree.Objects.NodeAttribute[ child.ID ]; - - if ( attr !== undefined ) { - - cameraAttribute = attr; - - } - - } ); - - if ( cameraAttribute === undefined ) { - - model = new Object3D(); - - } else { - - let type = 0; - if ( cameraAttribute.CameraProjectionType !== undefined && cameraAttribute.CameraProjectionType.value === 1 ) { - - type = 1; - - } - - let nearClippingPlane = 1; - if ( cameraAttribute.NearPlane !== undefined ) { - - nearClippingPlane = cameraAttribute.NearPlane.value / 1000; - - } - - let farClippingPlane = 1000; - if ( cameraAttribute.FarPlane !== undefined ) { - - farClippingPlane = cameraAttribute.FarPlane.value / 1000; - - } - - - let width = window.innerWidth; - let height = window.innerHeight; - - if ( cameraAttribute.AspectWidth !== undefined && cameraAttribute.AspectHeight !== undefined ) { - - width = cameraAttribute.AspectWidth.value; - height = cameraAttribute.AspectHeight.value; - - } - - const aspect = width / height; - - let fov = 45; - if ( cameraAttribute.FieldOfView !== undefined ) { - - fov = cameraAttribute.FieldOfView.value; - - } - - const focalLength = cameraAttribute.FocalLength ? cameraAttribute.FocalLength.value : null; - - switch ( type ) { - - case 0: // Perspective - model = new PerspectiveCamera( fov, aspect, nearClippingPlane, farClippingPlane ); - if ( focalLength !== null ) model.setFocalLength( focalLength ); - break; - - case 1: // Orthographic - model = new OrthographicCamera( - width / 2, width / 2, height / 2, - height / 2, nearClippingPlane, farClippingPlane ); - break; - - default: - console.warn( 'THREE.FBXLoader: Unknown camera type ' + type + '.' ); - model = new Object3D(); - break; - - } - - } - - return model; - - } - - // Create a DirectionalLight, PointLight or SpotLight - createLight( relationships ) { - - let model; - let lightAttribute; - - relationships.children.forEach( function ( child ) { - - const attr = fbxTree.Objects.NodeAttribute[ child.ID ]; - - if ( attr !== undefined ) { - - lightAttribute = attr; - - } - - } ); - - if ( lightAttribute === undefined ) { - - model = new Object3D(); - - } else { - - let type; - - // LightType can be undefined for Point lights - if ( lightAttribute.LightType === undefined ) { - - type = 0; - - } else { - - type = lightAttribute.LightType.value; - - } - - let color = 0xffffff; - - if ( lightAttribute.Color !== undefined ) { - - color = new Color().fromArray( lightAttribute.Color.value ).convertSRGBToLinear(); - - } - - let intensity = ( lightAttribute.Intensity === undefined ) ? 1 : lightAttribute.Intensity.value / 100; - - // light disabled - if ( lightAttribute.CastLightOnObject !== undefined && lightAttribute.CastLightOnObject.value === 0 ) { - - intensity = 0; - - } - - let distance = 0; - if ( lightAttribute.FarAttenuationEnd !== undefined ) { - - if ( lightAttribute.EnableFarAttenuation !== undefined && lightAttribute.EnableFarAttenuation.value === 0 ) { - - distance = 0; - - } else { - - distance = lightAttribute.FarAttenuationEnd.value; - - } - - } - - // TODO: could this be calculated linearly from FarAttenuationStart to FarAttenuationEnd? - const decay = 1; - - switch ( type ) { - - case 0: // Point - model = new PointLight( color, intensity, distance, decay ); - break; - - case 1: // Directional - model = new DirectionalLight( color, intensity ); - break; - - case 2: // Spot - let angle = Math.PI / 3; - - if ( lightAttribute.InnerAngle !== undefined ) { - - angle = MathUtils.degToRad( lightAttribute.InnerAngle.value ); - - } - - let penumbra = 0; - if ( lightAttribute.OuterAngle !== undefined ) { - - // TODO: this is not correct - FBX calculates outer and inner angle in degrees - // with OuterAngle > InnerAngle && OuterAngle <= Math.PI - // while three.js uses a penumbra between (0, 1) to attenuate the inner angle - penumbra = MathUtils.degToRad( lightAttribute.OuterAngle.value ); - penumbra = Math.max( penumbra, 1 ); - - } - - model = new SpotLight( color, intensity, distance, angle, penumbra, decay ); - break; - - default: - console.warn( 'THREE.FBXLoader: Unknown light type ' + lightAttribute.LightType.value + ', defaulting to a PointLight.' ); - model = new PointLight( color, intensity ); - break; - - } - - if ( lightAttribute.CastShadows !== undefined && lightAttribute.CastShadows.value === 1 ) { - - model.castShadow = true; - - } - - } - - return model; - - } - - createMesh( relationships, geometryMap, materialMap ) { - - let model; - let geometry = null; - let material = null; - const materials = []; - - // get geometry and materials(s) from connections - relationships.children.forEach( function ( child ) { - - if ( geometryMap.has( child.ID ) ) { - - geometry = geometryMap.get( child.ID ); - - } - - if ( materialMap.has( child.ID ) ) { - - materials.push( materialMap.get( child.ID ) ); - - } - - } ); - - if ( materials.length > 1 ) { - - material = materials; - - } else if ( materials.length > 0 ) { - - material = materials[ 0 ]; - - } else { - - material = new MeshPhongMaterial( { - name: Loader.DEFAULT_MATERIAL_NAME, - color: 0xcccccc - } ); - materials.push( material ); - - } - - if ( 'color' in geometry.attributes ) { - - materials.forEach( function ( material ) { - - material.vertexColors = true; - - } ); - - } - - if ( geometry.FBX_Deformer ) { - - model = new SkinnedMesh( geometry, material ); - model.normalizeSkinWeights(); - - } else { - - model = new Mesh( geometry, material ); - - } - - return model; - - } - - createCurve( relationships, geometryMap ) { - - const geometry = relationships.children.reduce( function ( geo, child ) { - - if ( geometryMap.has( child.ID ) ) geo = geometryMap.get( child.ID ); - - return geo; - - }, null ); - - // FBX does not list materials for Nurbs lines, so we'll just put our own in here. - const material = new LineBasicMaterial( { - name: Loader.DEFAULT_MATERIAL_NAME, - color: 0x3300ff, - linewidth: 1 - } ); - return new Line( geometry, material ); - - } - - // parse the model node for transform data - getTransformData( model, modelNode ) { - - const transformData = {}; - - if ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value ); - - if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value ); - else transformData.eulerOrder = 'ZYX'; - - if ( 'Lcl_Translation' in modelNode ) transformData.translation = modelNode.Lcl_Translation.value; - - if ( 'PreRotation' in modelNode ) transformData.preRotation = modelNode.PreRotation.value; - if ( 'Lcl_Rotation' in modelNode ) transformData.rotation = modelNode.Lcl_Rotation.value; - if ( 'PostRotation' in modelNode ) transformData.postRotation = modelNode.PostRotation.value; - - if ( 'Lcl_Scaling' in modelNode ) transformData.scale = modelNode.Lcl_Scaling.value; - - if ( 'ScalingOffset' in modelNode ) transformData.scalingOffset = modelNode.ScalingOffset.value; - if ( 'ScalingPivot' in modelNode ) transformData.scalingPivot = modelNode.ScalingPivot.value; - - if ( 'RotationOffset' in modelNode ) transformData.rotationOffset = modelNode.RotationOffset.value; - if ( 'RotationPivot' in modelNode ) transformData.rotationPivot = modelNode.RotationPivot.value; - - model.userData.transformData = transformData; - - } - - setLookAtProperties( model, modelNode ) { - - if ( 'LookAtProperty' in modelNode ) { - - const children = connections.get( model.ID ).children; - - children.forEach( function ( child ) { - - if ( child.relationship === 'LookAtProperty' ) { - - const lookAtTarget = fbxTree.Objects.Model[ child.ID ]; - - if ( 'Lcl_Translation' in lookAtTarget ) { - - const pos = lookAtTarget.Lcl_Translation.value; - - // DirectionalLight, SpotLight - if ( model.target !== undefined ) { - - model.target.position.fromArray( pos ); - sceneGraph.add( model.target ); - - } else { // Cameras and other Object3Ds - - model.lookAt( new Vector3().fromArray( pos ) ); - - } - - } - - } - - } ); - - } - - } - - bindSkeleton( skeletons, geometryMap, modelMap ) { - - const bindMatrices = this.parsePoseNodes(); - - for ( const ID in skeletons ) { - - const skeleton = skeletons[ ID ]; - - const parents = connections.get( parseInt( skeleton.ID ) ).parents; - - parents.forEach( function ( parent ) { - - if ( geometryMap.has( parent.ID ) ) { - - const geoID = parent.ID; - const geoRelationships = connections.get( geoID ); - - geoRelationships.parents.forEach( function ( geoConnParent ) { - - if ( modelMap.has( geoConnParent.ID ) ) { - - const model = modelMap.get( geoConnParent.ID ); - - model.bind( new Skeleton( skeleton.bones ), bindMatrices[ geoConnParent.ID ] ); - - } - - } ); - - } - - } ); - - } - - } - - parsePoseNodes() { - - const bindMatrices = {}; - - if ( 'Pose' in fbxTree.Objects ) { - - const BindPoseNode = fbxTree.Objects.Pose; - - for ( const nodeID in BindPoseNode ) { - - if ( BindPoseNode[ nodeID ].attrType === 'BindPose' && BindPoseNode[ nodeID ].NbPoseNodes > 0 ) { - - const poseNodes = BindPoseNode[ nodeID ].PoseNode; - - if ( Array.isArray( poseNodes ) ) { - - poseNodes.forEach( function ( poseNode ) { - - bindMatrices[ poseNode.Node ] = new Matrix4().fromArray( poseNode.Matrix.a ); - - } ); - - } else { - - bindMatrices[ poseNodes.Node ] = new Matrix4().fromArray( poseNodes.Matrix.a ); - - } - - } - - } - - } - - return bindMatrices; - - } - - addGlobalSceneSettings() { - - if ( 'GlobalSettings' in fbxTree ) { - - if ( 'AmbientColor' in fbxTree.GlobalSettings ) { - - // Parse ambient color - if it's not set to black (default), create an ambient light - - const ambientColor = fbxTree.GlobalSettings.AmbientColor.value; - const r = ambientColor[ 0 ]; - const g = ambientColor[ 1 ]; - const b = ambientColor[ 2 ]; - - if ( r !== 0 || g !== 0 || b !== 0 ) { - - const color = new Color( r, g, b ).convertSRGBToLinear(); - sceneGraph.add( new AmbientLight( color, 1 ) ); - - } - - } - - if ( 'UnitScaleFactor' in fbxTree.GlobalSettings ) { - - sceneGraph.userData.unitScaleFactor = fbxTree.GlobalSettings.UnitScaleFactor.value; - - } - - } - - } - -} - -// parse Geometry data from FBXTree and return map of BufferGeometries -class GeometryParser { - - constructor() { - - this.negativeMaterialIndices = false; - - } - - // Parse nodes in FBXTree.Objects.Geometry - parse( deformers ) { - - const geometryMap = new Map(); - - if ( 'Geometry' in fbxTree.Objects ) { - - const geoNodes = fbxTree.Objects.Geometry; - - for ( const nodeID in geoNodes ) { - - const relationships = connections.get( parseInt( nodeID ) ); - const geo = this.parseGeometry( relationships, geoNodes[ nodeID ], deformers ); - - geometryMap.set( parseInt( nodeID ), geo ); - - } - - } - - // report warnings - - if ( this.negativeMaterialIndices === true ) { - - console.warn( 'THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected.' ); - - } - - return geometryMap; - - } - - // Parse single node in FBXTree.Objects.Geometry - parseGeometry( relationships, geoNode, deformers ) { - - switch ( geoNode.attrType ) { - - case 'Mesh': - return this.parseMeshGeometry( relationships, geoNode, deformers ); - break; - - case 'NurbsCurve': - return this.parseNurbsGeometry( geoNode ); - break; - - } - - } - - // Parse single node mesh geometry in FBXTree.Objects.Geometry - parseMeshGeometry( relationships, geoNode, deformers ) { - - const skeletons = deformers.skeletons; - const morphTargets = []; - - const modelNodes = relationships.parents.map( function ( parent ) { - - return fbxTree.Objects.Model[ parent.ID ]; - - } ); - - // don't create geometry if it is not associated with any models - if ( modelNodes.length === 0 ) return; - - const skeleton = relationships.children.reduce( function ( skeleton, child ) { - - if ( skeletons[ child.ID ] !== undefined ) skeleton = skeletons[ child.ID ]; - - return skeleton; - - }, null ); - - relationships.children.forEach( function ( child ) { - - if ( deformers.morphTargets[ child.ID ] !== undefined ) { - - morphTargets.push( deformers.morphTargets[ child.ID ] ); - - } - - } ); - - // Assume one model and get the preRotation from that - // if there is more than one model associated with the geometry this may cause problems - const modelNode = modelNodes[ 0 ]; - - const transformData = {}; - - if ( 'RotationOrder' in modelNode ) transformData.eulerOrder = getEulerOrder( modelNode.RotationOrder.value ); - if ( 'InheritType' in modelNode ) transformData.inheritType = parseInt( modelNode.InheritType.value ); - - if ( 'GeometricTranslation' in modelNode ) transformData.translation = modelNode.GeometricTranslation.value; - if ( 'GeometricRotation' in modelNode ) transformData.rotation = modelNode.GeometricRotation.value; - if ( 'GeometricScaling' in modelNode ) transformData.scale = modelNode.GeometricScaling.value; - - const transform = generateTransform( transformData ); - - return this.genGeometry( geoNode, skeleton, morphTargets, transform ); - - } - - // Generate a BufferGeometry from a node in FBXTree.Objects.Geometry - genGeometry( geoNode, skeleton, morphTargets, preTransform ) { - - const geo = new BufferGeometry(); - if ( geoNode.attrName ) geo.name = geoNode.attrName; - - const geoInfo = this.parseGeoNode( geoNode, skeleton ); - const buffers = this.genBuffers( geoInfo ); - - const positionAttribute = new Float32BufferAttribute( buffers.vertex, 3 ); - - positionAttribute.applyMatrix4( preTransform ); - - geo.setAttribute( 'position', positionAttribute ); - - if ( buffers.colors.length > 0 ) { - - geo.setAttribute( 'color', new Float32BufferAttribute( buffers.colors, 3 ) ); - - } - - if ( skeleton ) { - - geo.setAttribute( 'skinIndex', new Uint16BufferAttribute( buffers.weightsIndices, 4 ) ); - - geo.setAttribute( 'skinWeight', new Float32BufferAttribute( buffers.vertexWeights, 4 ) ); - - // used later to bind the skeleton to the model - geo.FBX_Deformer = skeleton; - - } - - if ( buffers.normal.length > 0 ) { - - const normalMatrix = new Matrix3().getNormalMatrix( preTransform ); - - const normalAttribute = new Float32BufferAttribute( buffers.normal, 3 ); - normalAttribute.applyNormalMatrix( normalMatrix ); - - geo.setAttribute( 'normal', normalAttribute ); - - } - - buffers.uvs.forEach( function ( uvBuffer, i ) { - - const name = i === 0 ? 'uv' : `uv${ i }`; - - geo.setAttribute( name, new Float32BufferAttribute( buffers.uvs[ i ], 2 ) ); - - } ); - - if ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) { - - // Convert the material indices of each vertex into rendering groups on the geometry. - let prevMaterialIndex = buffers.materialIndex[ 0 ]; - let startIndex = 0; - - buffers.materialIndex.forEach( function ( currentIndex, i ) { - - if ( currentIndex !== prevMaterialIndex ) { - - geo.addGroup( startIndex, i - startIndex, prevMaterialIndex ); - - prevMaterialIndex = currentIndex; - startIndex = i; - - } - - } ); - - // the loop above doesn't add the last group, do that here. - if ( geo.groups.length > 0 ) { - - const lastGroup = geo.groups[ geo.groups.length - 1 ]; - const lastIndex = lastGroup.start + lastGroup.count; - - if ( lastIndex !== buffers.materialIndex.length ) { - - geo.addGroup( lastIndex, buffers.materialIndex.length - lastIndex, prevMaterialIndex ); - - } - - } - - // case where there are multiple materials but the whole geometry is only - // using one of them - if ( geo.groups.length === 0 ) { - - geo.addGroup( 0, buffers.materialIndex.length, buffers.materialIndex[ 0 ] ); - - } - - } - - this.addMorphTargets( geo, geoNode, morphTargets, preTransform ); - - return geo; - - } - - parseGeoNode( geoNode, skeleton ) { - - const geoInfo = {}; - - geoInfo.vertexPositions = ( geoNode.Vertices !== undefined ) ? geoNode.Vertices.a : []; - geoInfo.vertexIndices = ( geoNode.PolygonVertexIndex !== undefined ) ? geoNode.PolygonVertexIndex.a : []; - - if ( geoNode.LayerElementColor ) { - - geoInfo.color = this.parseVertexColors( geoNode.LayerElementColor[ 0 ] ); - - } - - if ( geoNode.LayerElementMaterial ) { - - geoInfo.material = this.parseMaterialIndices( geoNode.LayerElementMaterial[ 0 ] ); - - } - - if ( geoNode.LayerElementNormal ) { - - geoInfo.normal = this.parseNormals( geoNode.LayerElementNormal[ 0 ] ); - - } - - if ( geoNode.LayerElementUV ) { - - geoInfo.uv = []; - - let i = 0; - while ( geoNode.LayerElementUV[ i ] ) { - - if ( geoNode.LayerElementUV[ i ].UV ) { - - geoInfo.uv.push( this.parseUVs( geoNode.LayerElementUV[ i ] ) ); - - } - - i ++; - - } - - } - - geoInfo.weightTable = {}; - - if ( skeleton !== null ) { - - geoInfo.skeleton = skeleton; - - skeleton.rawBones.forEach( function ( rawBone, i ) { - - // loop over the bone's vertex indices and weights - rawBone.indices.forEach( function ( index, j ) { - - if ( geoInfo.weightTable[ index ] === undefined ) geoInfo.weightTable[ index ] = []; - - geoInfo.weightTable[ index ].push( { - - id: i, - weight: rawBone.weights[ j ], - - } ); - - } ); - - } ); - - } - - return geoInfo; - - } - - genBuffers( geoInfo ) { - - const buffers = { - vertex: [], - normal: [], - colors: [], - uvs: [], - materialIndex: [], - vertexWeights: [], - weightsIndices: [], - }; - - let polygonIndex = 0; - let faceLength = 0; - let displayedWeightsWarning = false; - - // these will hold data for a single face - let facePositionIndexes = []; - let faceNormals = []; - let faceColors = []; - let faceUVs = []; - let faceWeights = []; - let faceWeightIndices = []; - - const scope = this; - geoInfo.vertexIndices.forEach( function ( vertexIndex, polygonVertexIndex ) { - - let materialIndex; - let endOfFace = false; - - // Face index and vertex index arrays are combined in a single array - // A cube with quad faces looks like this: - // PolygonVertexIndex: *24 { - // a: 0, 1, 3, -3, 2, 3, 5, -5, 4, 5, 7, -7, 6, 7, 1, -1, 1, 7, 5, -4, 6, 0, 2, -5 - // } - // Negative numbers mark the end of a face - first face here is 0, 1, 3, -3 - // to find index of last vertex bit shift the index: ^ - 1 - if ( vertexIndex < 0 ) { - - vertexIndex = vertexIndex ^ - 1; // equivalent to ( x * -1 ) - 1 - endOfFace = true; - - } - - let weightIndices = []; - let weights = []; - - facePositionIndexes.push( vertexIndex * 3, vertexIndex * 3 + 1, vertexIndex * 3 + 2 ); - - if ( geoInfo.color ) { - - const data = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.color ); - - faceColors.push( data[ 0 ], data[ 1 ], data[ 2 ] ); - - } - - if ( geoInfo.skeleton ) { - - if ( geoInfo.weightTable[ vertexIndex ] !== undefined ) { - - geoInfo.weightTable[ vertexIndex ].forEach( function ( wt ) { - - weights.push( wt.weight ); - weightIndices.push( wt.id ); - - } ); - - - } - - if ( weights.length > 4 ) { - - if ( ! displayedWeightsWarning ) { - - console.warn( 'THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.' ); - displayedWeightsWarning = true; - - } - - const wIndex = [ 0, 0, 0, 0 ]; - const Weight = [ 0, 0, 0, 0 ]; - - weights.forEach( function ( weight, weightIndex ) { - - let currentWeight = weight; - let currentIndex = weightIndices[ weightIndex ]; - - Weight.forEach( function ( comparedWeight, comparedWeightIndex, comparedWeightArray ) { - - if ( currentWeight > comparedWeight ) { - - comparedWeightArray[ comparedWeightIndex ] = currentWeight; - currentWeight = comparedWeight; - - const tmp = wIndex[ comparedWeightIndex ]; - wIndex[ comparedWeightIndex ] = currentIndex; - currentIndex = tmp; - - } - - } ); - - } ); - - weightIndices = wIndex; - weights = Weight; - - } - - // if the weight array is shorter than 4 pad with 0s - while ( weights.length < 4 ) { - - weights.push( 0 ); - weightIndices.push( 0 ); - - } - - for ( let i = 0; i < 4; ++ i ) { - - faceWeights.push( weights[ i ] ); - faceWeightIndices.push( weightIndices[ i ] ); - - } - - } - - if ( geoInfo.normal ) { - - const data = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.normal ); - - faceNormals.push( data[ 0 ], data[ 1 ], data[ 2 ] ); - - } - - if ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) { - - materialIndex = getData( polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.material )[ 0 ]; - - if ( materialIndex < 0 ) { - - scope.negativeMaterialIndices = true; - materialIndex = 0; // fallback - - } - - } - - if ( geoInfo.uv ) { - - geoInfo.uv.forEach( function ( uv, i ) { - - const data = getData( polygonVertexIndex, polygonIndex, vertexIndex, uv ); - - if ( faceUVs[ i ] === undefined ) { - - faceUVs[ i ] = []; - - } - - faceUVs[ i ].push( data[ 0 ] ); - faceUVs[ i ].push( data[ 1 ] ); - - } ); - - } - - faceLength ++; - - if ( endOfFace ) { - - scope.genFace( buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength ); - - polygonIndex ++; - faceLength = 0; - - // reset arrays for the next face - facePositionIndexes = []; - faceNormals = []; - faceColors = []; - faceUVs = []; - faceWeights = []; - faceWeightIndices = []; - - } - - } ); - - return buffers; - - } - - // See https://www.khronos.org/opengl/wiki/Calculating_a_Surface_Normal - getNormalNewell( vertices ) { - - const normal = new Vector3( 0.0, 0.0, 0.0 ); - - for ( let i = 0; i < vertices.length; i ++ ) { - - const current = vertices[ i ]; - const next = vertices[ ( i + 1 ) % vertices.length ]; - - normal.x += ( current.y - next.y ) * ( current.z + next.z ); - normal.y += ( current.z - next.z ) * ( current.x + next.x ); - normal.z += ( current.x - next.x ) * ( current.y + next.y ); - - } - - normal.normalize(); - - return normal; - - } - - getNormalTangentAndBitangent( vertices ) { - - const normalVector = this.getNormalNewell( vertices ); - // Avoid up being equal or almost equal to normalVector - const up = Math.abs( normalVector.z ) > 0.5 ? new Vector3( 0.0, 1.0, 0.0 ) : new Vector3( 0.0, 0.0, 1.0 ); - const tangent = up.cross( normalVector ).normalize(); - const bitangent = normalVector.clone().cross( tangent ).normalize(); - - return { - normal: normalVector, - tangent: tangent, - bitangent: bitangent - }; - - } - - flattenVertex( vertex, normalTangent, normalBitangent ) { - - return new Vector2( - vertex.dot( normalTangent ), - vertex.dot( normalBitangent ) - ); - - } - - // Generate data for a single face in a geometry. If the face is a quad then split it into 2 tris - genFace( buffers, geoInfo, facePositionIndexes, materialIndex, faceNormals, faceColors, faceUVs, faceWeights, faceWeightIndices, faceLength ) { - - let triangles; - - if ( faceLength > 3 ) { - - // Triangulate n-gon using earcut - - const vertices = []; - - for ( let i = 0; i < facePositionIndexes.length; i += 3 ) { - - vertices.push( new Vector3( - geoInfo.vertexPositions[ facePositionIndexes[ i ] ], - geoInfo.vertexPositions[ facePositionIndexes[ i + 1 ] ], - geoInfo.vertexPositions[ facePositionIndexes[ i + 2 ] ] - ) ); - - } - - const { tangent, bitangent } = this.getNormalTangentAndBitangent( vertices ); - const triangulationInput = []; - - for ( const vertex of vertices ) { - - triangulationInput.push( this.flattenVertex( vertex, tangent, bitangent ) ); - - } - - triangles = ShapeUtils.triangulateShape( triangulationInput, [] ); - - } else { - - // Regular triangle, skip earcut triangulation step - triangles = [[ 0, 1, 2 ]]; - - } - - for ( const [ i0, i1, i2 ] of triangles ) { - - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 ] ] ); - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 + 1 ] ] ); - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i0 * 3 + 2 ] ] ); - - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 ] ] ); - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 + 1 ] ] ); - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i1 * 3 + 2 ] ] ); - - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 ] ] ); - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 + 1 ] ] ); - buffers.vertex.push( geoInfo.vertexPositions[ facePositionIndexes[ i2 * 3 + 2 ] ] ); - - if ( geoInfo.skeleton ) { - - buffers.vertexWeights.push( faceWeights[ i0 * 4 ] ); - buffers.vertexWeights.push( faceWeights[ i0 * 4 + 1 ] ); - buffers.vertexWeights.push( faceWeights[ i0 * 4 + 2 ] ); - buffers.vertexWeights.push( faceWeights[ i0 * 4 + 3 ] ); - - buffers.vertexWeights.push( faceWeights[ i1 * 4 ] ); - buffers.vertexWeights.push( faceWeights[ i1 * 4 + 1 ] ); - buffers.vertexWeights.push( faceWeights[ i1 * 4 + 2 ] ); - buffers.vertexWeights.push( faceWeights[ i1 * 4 + 3 ] ); - - buffers.vertexWeights.push( faceWeights[ i2 * 4 ] ); - buffers.vertexWeights.push( faceWeights[ i2 * 4 + 1 ] ); - buffers.vertexWeights.push( faceWeights[ i2 * 4 + 2 ] ); - buffers.vertexWeights.push( faceWeights[ i2 * 4 + 3 ] ); - - buffers.weightsIndices.push( faceWeightIndices[ i0 * 4 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 1 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 2 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i0 * 4 + 3 ] ); - - buffers.weightsIndices.push( faceWeightIndices[ i1 * 4 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 1 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 2 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i1 * 4 + 3 ] ); - - buffers.weightsIndices.push( faceWeightIndices[ i2 * 4 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 1 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 2 ] ); - buffers.weightsIndices.push( faceWeightIndices[ i2 * 4 + 3 ] ); - - } - - if ( geoInfo.color ) { - - buffers.colors.push( faceColors[ i0 * 3 ] ); - buffers.colors.push( faceColors[ i0 * 3 + 1 ] ); - buffers.colors.push( faceColors[ i0 * 3 + 2 ] ); - - buffers.colors.push( faceColors[ i1 * 3 ] ); - buffers.colors.push( faceColors[ i1 * 3 + 1 ] ); - buffers.colors.push( faceColors[ i1 * 3 + 2 ] ); - - buffers.colors.push( faceColors[ i2 * 3 ] ); - buffers.colors.push( faceColors[ i2 * 3 + 1 ] ); - buffers.colors.push( faceColors[ i2 * 3 + 2 ] ); - - } - - if ( geoInfo.material && geoInfo.material.mappingType !== 'AllSame' ) { - - buffers.materialIndex.push( materialIndex ); - buffers.materialIndex.push( materialIndex ); - buffers.materialIndex.push( materialIndex ); - - } - - if ( geoInfo.normal ) { - - buffers.normal.push( faceNormals[ i0 * 3 ] ); - buffers.normal.push( faceNormals[ i0 * 3 + 1 ] ); - buffers.normal.push( faceNormals[ i0 * 3 + 2 ] ); - - buffers.normal.push( faceNormals[ i1 * 3 ] ); - buffers.normal.push( faceNormals[ i1 * 3 + 1 ] ); - buffers.normal.push( faceNormals[ i1 * 3 + 2 ] ); - - buffers.normal.push( faceNormals[ i2 * 3 ] ); - buffers.normal.push( faceNormals[ i2 * 3 + 1 ] ); - buffers.normal.push( faceNormals[ i2 * 3 + 2 ] ); - - } - - if ( geoInfo.uv ) { - - geoInfo.uv.forEach( function ( uv, j ) { - - if ( buffers.uvs[ j ] === undefined ) buffers.uvs[ j ] = []; - - buffers.uvs[ j ].push( faceUVs[ j ][ i0 * 2 ] ); - buffers.uvs[ j ].push( faceUVs[ j ][ i0 * 2 + 1 ] ); - - buffers.uvs[ j ].push( faceUVs[ j ][ i1 * 2 ] ); - buffers.uvs[ j ].push( faceUVs[ j ][ i1 * 2 + 1 ] ); - - buffers.uvs[ j ].push( faceUVs[ j ][ i2 * 2 ] ); - buffers.uvs[ j ].push( faceUVs[ j ][ i2 * 2 + 1 ] ); - - } ); - - } - - } - - } - - addMorphTargets( parentGeo, parentGeoNode, morphTargets, preTransform ) { - - if ( morphTargets.length === 0 ) return; - - parentGeo.morphTargetsRelative = true; - - parentGeo.morphAttributes.position = []; - // parentGeo.morphAttributes.normal = []; // not implemented - - const scope = this; - morphTargets.forEach( function ( morphTarget ) { - - morphTarget.rawTargets.forEach( function ( rawTarget ) { - - const morphGeoNode = fbxTree.Objects.Geometry[ rawTarget.geoID ]; - - if ( morphGeoNode !== undefined ) { - - scope.genMorphGeometry( parentGeo, parentGeoNode, morphGeoNode, preTransform, rawTarget.name ); - - } - - } ); - - } ); - - } - - // a morph geometry node is similar to a standard node, and the node is also contained - // in FBXTree.Objects.Geometry, however it can only have attributes for position, normal - // and a special attribute Index defining which vertices of the original geometry are affected - // Normal and position attributes only have data for the vertices that are affected by the morph - genMorphGeometry( parentGeo, parentGeoNode, morphGeoNode, preTransform, name ) { - - const vertexIndices = ( parentGeoNode.PolygonVertexIndex !== undefined ) ? parentGeoNode.PolygonVertexIndex.a : []; - - const morphPositionsSparse = ( morphGeoNode.Vertices !== undefined ) ? morphGeoNode.Vertices.a : []; - const indices = ( morphGeoNode.Indexes !== undefined ) ? morphGeoNode.Indexes.a : []; - - const length = parentGeo.attributes.position.count * 3; - const morphPositions = new Float32Array( length ); - - for ( let i = 0; i < indices.length; i ++ ) { - - const morphIndex = indices[ i ] * 3; - - morphPositions[ morphIndex ] = morphPositionsSparse[ i * 3 ]; - morphPositions[ morphIndex + 1 ] = morphPositionsSparse[ i * 3 + 1 ]; - morphPositions[ morphIndex + 2 ] = morphPositionsSparse[ i * 3 + 2 ]; - - } - - // TODO: add morph normal support - const morphGeoInfo = { - vertexIndices: vertexIndices, - vertexPositions: morphPositions, - - }; - - const morphBuffers = this.genBuffers( morphGeoInfo ); - - const positionAttribute = new Float32BufferAttribute( morphBuffers.vertex, 3 ); - positionAttribute.name = name || morphGeoNode.attrName; - - positionAttribute.applyMatrix4( preTransform ); - - parentGeo.morphAttributes.position.push( positionAttribute ); - - } - - // Parse normal from FBXTree.Objects.Geometry.LayerElementNormal if it exists - parseNormals( NormalNode ) { - - const mappingType = NormalNode.MappingInformationType; - const referenceType = NormalNode.ReferenceInformationType; - const buffer = NormalNode.Normals.a; - let indexBuffer = []; - if ( referenceType === 'IndexToDirect' ) { - - if ( 'NormalIndex' in NormalNode ) { - - indexBuffer = NormalNode.NormalIndex.a; - - } else if ( 'NormalsIndex' in NormalNode ) { - - indexBuffer = NormalNode.NormalsIndex.a; - - } - - } - - return { - dataSize: 3, - buffer: buffer, - indices: indexBuffer, - mappingType: mappingType, - referenceType: referenceType - }; - - } - - // Parse UVs from FBXTree.Objects.Geometry.LayerElementUV if it exists - parseUVs( UVNode ) { - - const mappingType = UVNode.MappingInformationType; - const referenceType = UVNode.ReferenceInformationType; - const buffer = UVNode.UV.a; - let indexBuffer = []; - if ( referenceType === 'IndexToDirect' ) { - - indexBuffer = UVNode.UVIndex.a; - - } - - return { - dataSize: 2, - buffer: buffer, - indices: indexBuffer, - mappingType: mappingType, - referenceType: referenceType - }; - - } - - // Parse Vertex Colors from FBXTree.Objects.Geometry.LayerElementColor if it exists - parseVertexColors( ColorNode ) { - - const mappingType = ColorNode.MappingInformationType; - const referenceType = ColorNode.ReferenceInformationType; - const buffer = ColorNode.Colors.a; - let indexBuffer = []; - if ( referenceType === 'IndexToDirect' ) { - - indexBuffer = ColorNode.ColorIndex.a; - - } - - for ( let i = 0, c = new Color(); i < buffer.length; i += 4 ) { - - c.fromArray( buffer, i ).convertSRGBToLinear().toArray( buffer, i ); - - } - - return { - dataSize: 4, - buffer: buffer, - indices: indexBuffer, - mappingType: mappingType, - referenceType: referenceType - }; - - } - - // Parse mapping and material data in FBXTree.Objects.Geometry.LayerElementMaterial if it exists - parseMaterialIndices( MaterialNode ) { - - const mappingType = MaterialNode.MappingInformationType; - const referenceType = MaterialNode.ReferenceInformationType; - - if ( mappingType === 'NoMappingInformation' ) { - - return { - dataSize: 1, - buffer: [ 0 ], - indices: [ 0 ], - mappingType: 'AllSame', - referenceType: referenceType - }; - - } - - const materialIndexBuffer = MaterialNode.Materials.a; - - // Since materials are stored as indices, there's a bit of a mismatch between FBX and what - // we expect.So we create an intermediate buffer that points to the index in the buffer, - // for conforming with the other functions we've written for other data. - const materialIndices = []; - - for ( let i = 0; i < materialIndexBuffer.length; ++ i ) { - - materialIndices.push( i ); - - } - - return { - dataSize: 1, - buffer: materialIndexBuffer, - indices: materialIndices, - mappingType: mappingType, - referenceType: referenceType - }; - - } - - // Generate a NurbGeometry from a node in FBXTree.Objects.Geometry - parseNurbsGeometry( geoNode ) { - - const order = parseInt( geoNode.Order ); - - if ( isNaN( order ) ) { - - console.error( 'THREE.FBXLoader: Invalid Order %s given for geometry ID: %s', geoNode.Order, geoNode.id ); - return new BufferGeometry(); - - } - - const degree = order - 1; - - const knots = geoNode.KnotVector.a; - const controlPoints = []; - const pointsValues = geoNode.Points.a; - - for ( let i = 0, l = pointsValues.length; i < l; i += 4 ) { - - controlPoints.push( new Vector4().fromArray( pointsValues, i ) ); - - } - - let startKnot, endKnot; - - if ( geoNode.Form === 'Closed' ) { - - controlPoints.push( controlPoints[ 0 ] ); - - } else if ( geoNode.Form === 'Periodic' ) { - - startKnot = degree; - endKnot = knots.length - 1 - startKnot; - - for ( let i = 0; i < degree; ++ i ) { - - controlPoints.push( controlPoints[ i ] ); - - } - - } - - const curve = new NURBSCurve( degree, knots, controlPoints, startKnot, endKnot ); - const points = curve.getPoints( controlPoints.length * 12 ); - - return new BufferGeometry().setFromPoints( points ); - - } - -} - -// parse animation data from FBXTree -class AnimationParser { - - // take raw animation clips and turn them into three.js animation clips - parse() { - - const animationClips = []; - - const rawClips = this.parseClips(); - - if ( rawClips !== undefined ) { - - for ( const key in rawClips ) { - - const rawClip = rawClips[ key ]; - - const clip = this.addClip( rawClip ); - - animationClips.push( clip ); - - } - - } - - return animationClips; - - } - - parseClips() { - - // since the actual transformation data is stored in FBXTree.Objects.AnimationCurve, - // if this is undefined we can safely assume there are no animations - if ( fbxTree.Objects.AnimationCurve === undefined ) return undefined; - - const curveNodesMap = this.parseAnimationCurveNodes(); - - this.parseAnimationCurves( curveNodesMap ); - - const layersMap = this.parseAnimationLayers( curveNodesMap ); - const rawClips = this.parseAnimStacks( layersMap ); - - return rawClips; - - } - - // parse nodes in FBXTree.Objects.AnimationCurveNode - // each AnimationCurveNode holds data for an animation transform for a model (e.g. left arm rotation ) - // and is referenced by an AnimationLayer - parseAnimationCurveNodes() { - - const rawCurveNodes = fbxTree.Objects.AnimationCurveNode; - - const curveNodesMap = new Map(); - - for ( const nodeID in rawCurveNodes ) { - - const rawCurveNode = rawCurveNodes[ nodeID ]; - - if ( rawCurveNode.attrName.match( /S|R|T|DeformPercent/ ) !== null ) { - - const curveNode = { - - id: rawCurveNode.id, - attr: rawCurveNode.attrName, - curves: {}, - - }; - - curveNodesMap.set( curveNode.id, curveNode ); - - } - - } - - return curveNodesMap; - - } - - // parse nodes in FBXTree.Objects.AnimationCurve and connect them up to - // previously parsed AnimationCurveNodes. Each AnimationCurve holds data for a single animated - // axis ( e.g. times and values of x rotation) - parseAnimationCurves( curveNodesMap ) { - - const rawCurves = fbxTree.Objects.AnimationCurve; - - // TODO: Many values are identical up to roundoff error, but won't be optimised - // e.g. position times: [0, 0.4, 0. 8] - // position values: [7.23538335023477e-7, 93.67518615722656, -0.9982695579528809, 7.23538335023477e-7, 93.67518615722656, -0.9982695579528809, 7.235384487103147e-7, 93.67520904541016, -0.9982695579528809] - // clearly, this should be optimised to - // times: [0], positions [7.23538335023477e-7, 93.67518615722656, -0.9982695579528809] - // this shows up in nearly every FBX file, and generally time array is length > 100 - - for ( const nodeID in rawCurves ) { - - const animationCurve = { - - id: rawCurves[ nodeID ].id, - times: rawCurves[ nodeID ].KeyTime.a.map( convertFBXTimeToSeconds ), - values: rawCurves[ nodeID ].KeyValueFloat.a, - - }; - - const relationships = connections.get( animationCurve.id ); - - if ( relationships !== undefined ) { - - const animationCurveID = relationships.parents[ 0 ].ID; - const animationCurveRelationship = relationships.parents[ 0 ].relationship; - - if ( animationCurveRelationship.match( /X/ ) ) { - - curveNodesMap.get( animationCurveID ).curves[ 'x' ] = animationCurve; - - } else if ( animationCurveRelationship.match( /Y/ ) ) { - - curveNodesMap.get( animationCurveID ).curves[ 'y' ] = animationCurve; - - } else if ( animationCurveRelationship.match( /Z/ ) ) { - - curveNodesMap.get( animationCurveID ).curves[ 'z' ] = animationCurve; - - } else if ( animationCurveRelationship.match( /DeformPercent/ ) && curveNodesMap.has( animationCurveID ) ) { - - curveNodesMap.get( animationCurveID ).curves[ 'morph' ] = animationCurve; - - } - - } - - } - - } - - // parse nodes in FBXTree.Objects.AnimationLayer. Each layers holds references - // to various AnimationCurveNodes and is referenced by an AnimationStack node - // note: theoretically a stack can have multiple layers, however in practice there always seems to be one per stack - parseAnimationLayers( curveNodesMap ) { - - const rawLayers = fbxTree.Objects.AnimationLayer; - - const layersMap = new Map(); - - for ( const nodeID in rawLayers ) { - - const layerCurveNodes = []; - - const connection = connections.get( parseInt( nodeID ) ); - - if ( connection !== undefined ) { - - // all the animationCurveNodes used in the layer - const children = connection.children; - - children.forEach( function ( child, i ) { - - if ( curveNodesMap.has( child.ID ) ) { - - const curveNode = curveNodesMap.get( child.ID ); - - // check that the curves are defined for at least one axis, otherwise ignore the curveNode - if ( curveNode.curves.x !== undefined || curveNode.curves.y !== undefined || curveNode.curves.z !== undefined ) { - - if ( layerCurveNodes[ i ] === undefined ) { - - const modelID = connections.get( child.ID ).parents.filter( function ( parent ) { - - return parent.relationship !== undefined; - - } )[ 0 ].ID; - - if ( modelID !== undefined ) { - - const rawModel = fbxTree.Objects.Model[ modelID.toString() ]; - - if ( rawModel === undefined ) { - - console.warn( 'THREE.FBXLoader: Encountered a unused curve.', child ); - return; - - } - - const node = { - - modelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName( rawModel.attrName ) : '', - ID: rawModel.id, - initialPosition: [ 0, 0, 0 ], - initialRotation: [ 0, 0, 0 ], - initialScale: [ 1, 1, 1 ], - - }; - - sceneGraph.traverse( function ( child ) { - - if ( child.ID === rawModel.id ) { - - node.transform = child.matrix; - - if ( child.userData.transformData ) node.eulerOrder = child.userData.transformData.eulerOrder; - - } - - } ); - - if ( ! node.transform ) node.transform = new Matrix4(); - - // if the animated model is pre rotated, we'll have to apply the pre rotations to every - // animation value as well - if ( 'PreRotation' in rawModel ) node.preRotation = rawModel.PreRotation.value; - if ( 'PostRotation' in rawModel ) node.postRotation = rawModel.PostRotation.value; - - layerCurveNodes[ i ] = node; - - } - - } - - if ( layerCurveNodes[ i ] ) layerCurveNodes[ i ][ curveNode.attr ] = curveNode; - - } else if ( curveNode.curves.morph !== undefined ) { - - if ( layerCurveNodes[ i ] === undefined ) { - - const deformerID = connections.get( child.ID ).parents.filter( function ( parent ) { - - return parent.relationship !== undefined; - - } )[ 0 ].ID; - - const morpherID = connections.get( deformerID ).parents[ 0 ].ID; - const geoID = connections.get( morpherID ).parents[ 0 ].ID; - - // assuming geometry is not used in more than one model - const modelID = connections.get( geoID ).parents[ 0 ].ID; - - const rawModel = fbxTree.Objects.Model[ modelID ]; - - const node = { - - modelName: rawModel.attrName ? PropertyBinding.sanitizeNodeName( rawModel.attrName ) : '', - morphName: fbxTree.Objects.Deformer[ deformerID ].attrName, - - }; - - layerCurveNodes[ i ] = node; - - } - - layerCurveNodes[ i ][ curveNode.attr ] = curveNode; - - } - - } - - } ); - - layersMap.set( parseInt( nodeID ), layerCurveNodes ); - - } - - } - - return layersMap; - - } - - // parse nodes in FBXTree.Objects.AnimationStack. These are the top level node in the animation - // hierarchy. Each Stack node will be used to create a AnimationClip - parseAnimStacks( layersMap ) { - - const rawStacks = fbxTree.Objects.AnimationStack; - - // connect the stacks (clips) up to the layers - const rawClips = {}; - - for ( const nodeID in rawStacks ) { - - const children = connections.get( parseInt( nodeID ) ).children; - - if ( children.length > 1 ) { - - // it seems like stacks will always be associated with a single layer. But just in case there are files - // where there are multiple layers per stack, we'll display a warning - console.warn( 'THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.' ); - - } - - const layer = layersMap.get( children[ 0 ].ID ); - - rawClips[ nodeID ] = { - - name: rawStacks[ nodeID ].attrName, - layer: layer, - - }; - - } - - return rawClips; - - } - - addClip( rawClip ) { - - let tracks = []; - - const scope = this; - rawClip.layer.forEach( function ( rawTracks ) { - - tracks = tracks.concat( scope.generateTracks( rawTracks ) ); - - } ); - - return new AnimationClip( rawClip.name, - 1, tracks ); - - } - - generateTracks( rawTracks ) { - - const tracks = []; - - let initialPosition = new Vector3(); - let initialScale = new Vector3(); - - if ( rawTracks.transform ) rawTracks.transform.decompose( initialPosition, new Quaternion(), initialScale ); - - initialPosition = initialPosition.toArray(); - initialScale = initialScale.toArray(); - - if ( rawTracks.T !== undefined && Object.keys( rawTracks.T.curves ).length > 0 ) { - - const positionTrack = this.generateVectorTrack( rawTracks.modelName, rawTracks.T.curves, initialPosition, 'position' ); - if ( positionTrack !== undefined ) tracks.push( positionTrack ); - - } - - if ( rawTracks.R !== undefined && Object.keys( rawTracks.R.curves ).length > 0 ) { - - const rotationTrack = this.generateRotationTrack( rawTracks.modelName, rawTracks.R.curves, rawTracks.preRotation, rawTracks.postRotation, rawTracks.eulerOrder ); - if ( rotationTrack !== undefined ) tracks.push( rotationTrack ); - - } - - if ( rawTracks.S !== undefined && Object.keys( rawTracks.S.curves ).length > 0 ) { - - const scaleTrack = this.generateVectorTrack( rawTracks.modelName, rawTracks.S.curves, initialScale, 'scale' ); - if ( scaleTrack !== undefined ) tracks.push( scaleTrack ); - - } - - if ( rawTracks.DeformPercent !== undefined ) { - - const morphTrack = this.generateMorphTrack( rawTracks ); - if ( morphTrack !== undefined ) tracks.push( morphTrack ); - - } - - return tracks; - - } - - generateVectorTrack( modelName, curves, initialValue, type ) { - - const times = this.getTimesForAllAxes( curves ); - const values = this.getKeyframeTrackValues( times, curves, initialValue ); - - return new VectorKeyframeTrack( modelName + '.' + type, times, values ); - - } - - generateRotationTrack( modelName, curves, preRotation, postRotation, eulerOrder ) { - - let times; - let values; - - if ( curves.x !== undefined && curves.y !== undefined && curves.z !== undefined ) { - - const result = this.interpolateRotations( curves.x, curves.y, curves.z, eulerOrder ); - - times = result[ 0 ]; - values = result[ 1 ]; - - } - - if ( preRotation !== undefined ) { - - preRotation = preRotation.map( MathUtils.degToRad ); - preRotation.push( eulerOrder ); - - preRotation = new Euler().fromArray( preRotation ); - preRotation = new Quaternion().setFromEuler( preRotation ); - - } - - if ( postRotation !== undefined ) { - - postRotation = postRotation.map( MathUtils.degToRad ); - postRotation.push( eulerOrder ); - - postRotation = new Euler().fromArray( postRotation ); - postRotation = new Quaternion().setFromEuler( postRotation ).invert(); - - } - - const quaternion = new Quaternion(); - const euler = new Euler(); - - const quaternionValues = []; - - if ( ! values || ! times ) return new QuaternionKeyframeTrack( modelName + '.quaternion', [], [] ); - - for ( let i = 0; i < values.length; i += 3 ) { - - euler.set( values[ i ], values[ i + 1 ], values[ i + 2 ], eulerOrder ); - quaternion.setFromEuler( euler ); - - if ( preRotation !== undefined ) quaternion.premultiply( preRotation ); - if ( postRotation !== undefined ) quaternion.multiply( postRotation ); - - // Check unroll - if ( i > 2 ) { - - const prevQuat = new Quaternion().fromArray( - quaternionValues, - ( ( i - 3 ) / 3 ) * 4 - ); - - if ( prevQuat.dot( quaternion ) < 0 ) { - - quaternion.set( - quaternion.x, - quaternion.y, - quaternion.z, - quaternion.w ); - - } - - } - - quaternion.toArray( quaternionValues, ( i / 3 ) * 4 ); - - } - - return new QuaternionKeyframeTrack( modelName + '.quaternion', times, quaternionValues ); - - } - - generateMorphTrack( rawTracks ) { - - const curves = rawTracks.DeformPercent.curves.morph; - const values = curves.values.map( function ( val ) { - - return val / 100; - - } ); - - const morphNum = sceneGraph.getObjectByName( rawTracks.modelName ).morphTargetDictionary[ rawTracks.morphName ]; - - return new NumberKeyframeTrack( rawTracks.modelName + '.morphTargetInfluences[' + morphNum + ']', curves.times, values ); - - } - - // For all animated objects, times are defined separately for each axis - // Here we'll combine the times into one sorted array without duplicates - getTimesForAllAxes( curves ) { - - let times = []; - - // first join together the times for each axis, if defined - if ( curves.x !== undefined ) times = times.concat( curves.x.times ); - if ( curves.y !== undefined ) times = times.concat( curves.y.times ); - if ( curves.z !== undefined ) times = times.concat( curves.z.times ); - - // then sort them - times = times.sort( function ( a, b ) { - - return a - b; - - } ); - - // and remove duplicates - if ( times.length > 1 ) { - - let targetIndex = 1; - let lastValue = times[ 0 ]; - for ( let i = 1; i < times.length; i ++ ) { - - const currentValue = times[ i ]; - if ( currentValue !== lastValue ) { - - times[ targetIndex ] = currentValue; - lastValue = currentValue; - targetIndex ++; - - } - - } - - times = times.slice( 0, targetIndex ); - - } - - return times; - - } - - getKeyframeTrackValues( times, curves, initialValue ) { - - const prevValue = initialValue; - - const values = []; - - let xIndex = - 1; - let yIndex = - 1; - let zIndex = - 1; - - times.forEach( function ( time ) { - - if ( curves.x ) xIndex = curves.x.times.indexOf( time ); - if ( curves.y ) yIndex = curves.y.times.indexOf( time ); - if ( curves.z ) zIndex = curves.z.times.indexOf( time ); - - // if there is an x value defined for this frame, use that - if ( xIndex !== - 1 ) { - - const xValue = curves.x.values[ xIndex ]; - values.push( xValue ); - prevValue[ 0 ] = xValue; - - } else { - - // otherwise use the x value from the previous frame - values.push( prevValue[ 0 ] ); - - } - - if ( yIndex !== - 1 ) { - - const yValue = curves.y.values[ yIndex ]; - values.push( yValue ); - prevValue[ 1 ] = yValue; - - } else { - - values.push( prevValue[ 1 ] ); - - } - - if ( zIndex !== - 1 ) { - - const zValue = curves.z.values[ zIndex ]; - values.push( zValue ); - prevValue[ 2 ] = zValue; - - } else { - - values.push( prevValue[ 2 ] ); - - } - - } ); - - return values; - - } - - // Rotations are defined as Euler angles which can have values of any size - // These will be converted to quaternions which don't support values greater than - // PI, so we'll interpolate large rotations - interpolateRotations( curvex, curvey, curvez, eulerOrder ) { - - const times = []; - const values = []; - - // Add first frame - times.push( curvex.times[ 0 ] ); - values.push( MathUtils.degToRad( curvex.values[ 0 ] ) ); - values.push( MathUtils.degToRad( curvey.values[ 0 ] ) ); - values.push( MathUtils.degToRad( curvez.values[ 0 ] ) ); - - for ( let i = 1; i < curvex.values.length; i ++ ) { - - const initialValue = [ - curvex.values[ i - 1 ], - curvey.values[ i - 1 ], - curvez.values[ i - 1 ], - ]; - - if ( isNaN( initialValue[ 0 ] ) || isNaN( initialValue[ 1 ] ) || isNaN( initialValue[ 2 ] ) ) { - - continue; - - } - - const initialValueRad = initialValue.map( MathUtils.degToRad ); - - const currentValue = [ - curvex.values[ i ], - curvey.values[ i ], - curvez.values[ i ], - ]; - - if ( isNaN( currentValue[ 0 ] ) || isNaN( currentValue[ 1 ] ) || isNaN( currentValue[ 2 ] ) ) { - - continue; - - } - - const currentValueRad = currentValue.map( MathUtils.degToRad ); - - const valuesSpan = [ - currentValue[ 0 ] - initialValue[ 0 ], - currentValue[ 1 ] - initialValue[ 1 ], - currentValue[ 2 ] - initialValue[ 2 ], - ]; - - const absoluteSpan = [ - Math.abs( valuesSpan[ 0 ] ), - Math.abs( valuesSpan[ 1 ] ), - Math.abs( valuesSpan[ 2 ] ), - ]; - - if ( absoluteSpan[ 0 ] >= 180 || absoluteSpan[ 1 ] >= 180 || absoluteSpan[ 2 ] >= 180 ) { - - const maxAbsSpan = Math.max( ...absoluteSpan ); - - const numSubIntervals = maxAbsSpan / 180; - - const E1 = new Euler( ...initialValueRad, eulerOrder ); - const E2 = new Euler( ...currentValueRad, eulerOrder ); - - const Q1 = new Quaternion().setFromEuler( E1 ); - const Q2 = new Quaternion().setFromEuler( E2 ); - - // Check unroll - if ( Q1.dot( Q2 ) ) { - - Q2.set( - Q2.x, - Q2.y, - Q2.z, - Q2.w ); - - } - - // Interpolate - const initialTime = curvex.times[ i - 1 ]; - const timeSpan = curvex.times[ i ] - initialTime; - - const Q = new Quaternion(); - const E = new Euler(); - for ( let t = 0; t < 1; t += 1 / numSubIntervals ) { - - Q.copy( Q1.clone().slerp( Q2.clone(), t ) ); - - times.push( initialTime + t * timeSpan ); - E.setFromQuaternion( Q, eulerOrder ); - - values.push( E.x ); - values.push( E.y ); - values.push( E.z ); - - } - - } else { - - times.push( curvex.times[ i ] ); - values.push( MathUtils.degToRad( curvex.values[ i ] ) ); - values.push( MathUtils.degToRad( curvey.values[ i ] ) ); - values.push( MathUtils.degToRad( curvez.values[ i ] ) ); - - } - - } - - return [ times, values ]; - - } - -} - -// parse an FBX file in ASCII format -class TextParser { - - getPrevNode() { - - return this.nodeStack[ this.currentIndent - 2 ]; - - } - - getCurrentNode() { - - return this.nodeStack[ this.currentIndent - 1 ]; - - } - - getCurrentProp() { - - return this.currentProp; - - } - - pushStack( node ) { - - this.nodeStack.push( node ); - this.currentIndent += 1; - - } - - popStack() { - - this.nodeStack.pop(); - this.currentIndent -= 1; - - } - - setCurrentProp( val, name ) { - - this.currentProp = val; - this.currentPropName = name; - - } - - parse( text ) { - - this.currentIndent = 0; - - this.allNodes = new FBXTree(); - this.nodeStack = []; - this.currentProp = []; - this.currentPropName = ''; - - const scope = this; - - const split = text.split( /[\r\n]+/ ); - - split.forEach( function ( line, i ) { - - const matchComment = line.match( /^[\s\t]*;/ ); - const matchEmpty = line.match( /^[\s\t]*$/ ); - - if ( matchComment || matchEmpty ) return; - - const matchBeginning = line.match( '^\\t{' + scope.currentIndent + '}(\\w+):(.*){', '' ); - const matchProperty = line.match( '^\\t{' + ( scope.currentIndent ) + '}(\\w+):[\\s\\t\\r\\n](.*)' ); - const matchEnd = line.match( '^\\t{' + ( scope.currentIndent - 1 ) + '}}' ); - - if ( matchBeginning ) { - - scope.parseNodeBegin( line, matchBeginning ); - - } else if ( matchProperty ) { - - scope.parseNodeProperty( line, matchProperty, split[ ++ i ] ); - - } else if ( matchEnd ) { - - scope.popStack(); - - } else if ( line.match( /^[^\s\t}]/ ) ) { - - // large arrays are split over multiple lines terminated with a ',' character - // if this is encountered the line needs to be joined to the previous line - scope.parseNodePropertyContinued( line ); - - } - - } ); - - return this.allNodes; - - } - - parseNodeBegin( line, property ) { - - const nodeName = property[ 1 ].trim().replace( /^"/, '' ).replace( /"$/, '' ); - - const nodeAttrs = property[ 2 ].split( ',' ).map( function ( attr ) { - - return attr.trim().replace( /^"/, '' ).replace( /"$/, '' ); - - } ); - - const node = { name: nodeName }; - const attrs = this.parseNodeAttr( nodeAttrs ); - - const currentNode = this.getCurrentNode(); - - // a top node - if ( this.currentIndent === 0 ) { - - this.allNodes.add( nodeName, node ); - - } else { // a subnode - - // if the subnode already exists, append it - if ( nodeName in currentNode ) { - - // special case Pose needs PoseNodes as an array - if ( nodeName === 'PoseNode' ) { - - currentNode.PoseNode.push( node ); - - } else if ( currentNode[ nodeName ].id !== undefined ) { - - currentNode[ nodeName ] = {}; - currentNode[ nodeName ][ currentNode[ nodeName ].id ] = currentNode[ nodeName ]; - - } - - if ( attrs.id !== '' ) currentNode[ nodeName ][ attrs.id ] = node; - - } else if ( typeof attrs.id === 'number' ) { - - currentNode[ nodeName ] = {}; - currentNode[ nodeName ][ attrs.id ] = node; - - } else if ( nodeName !== 'Properties70' ) { - - if ( nodeName === 'PoseNode' ) currentNode[ nodeName ] = [ node ]; - else currentNode[ nodeName ] = node; - - } - - } - - if ( typeof attrs.id === 'number' ) node.id = attrs.id; - if ( attrs.name !== '' ) node.attrName = attrs.name; - if ( attrs.type !== '' ) node.attrType = attrs.type; - - this.pushStack( node ); - - } - - parseNodeAttr( attrs ) { - - let id = attrs[ 0 ]; - - if ( attrs[ 0 ] !== '' ) { - - id = parseInt( attrs[ 0 ] ); - - if ( isNaN( id ) ) { - - id = attrs[ 0 ]; - - } - - } - - let name = '', type = ''; - - if ( attrs.length > 1 ) { - - name = attrs[ 1 ].replace( /^(\w+)::/, '' ); - type = attrs[ 2 ]; - - } - - return { id: id, name: name, type: type }; - - } - - parseNodeProperty( line, property, contentLine ) { - - let propName = property[ 1 ].replace( /^"/, '' ).replace( /"$/, '' ).trim(); - let propValue = property[ 2 ].replace( /^"/, '' ).replace( /"$/, '' ).trim(); - - // for special case: base64 image data follows "Content: ," line - // Content: , - // "/9j/4RDaRXhpZgAATU0A..." - if ( propName === 'Content' && propValue === ',' ) { - - propValue = contentLine.replace( /"/g, '' ).replace( /,$/, '' ).trim(); - - } - - const currentNode = this.getCurrentNode(); - const parentName = currentNode.name; - - if ( parentName === 'Properties70' ) { - - this.parseNodeSpecialProperty( line, propName, propValue ); - return; - - } - - // Connections - if ( propName === 'C' ) { - - const connProps = propValue.split( ',' ).slice( 1 ); - const from = parseInt( connProps[ 0 ] ); - const to = parseInt( connProps[ 1 ] ); - - let rest = propValue.split( ',' ).slice( 3 ); - - rest = rest.map( function ( elem ) { - - return elem.trim().replace( /^"/, '' ); - - } ); - - propName = 'connections'; - propValue = [ from, to ]; - append( propValue, rest ); - - if ( currentNode[ propName ] === undefined ) { - - currentNode[ propName ] = []; - - } - - } - - // Node - if ( propName === 'Node' ) currentNode.id = propValue; - - // connections - if ( propName in currentNode && Array.isArray( currentNode[ propName ] ) ) { - - currentNode[ propName ].push( propValue ); - - } else { - - if ( propName !== 'a' ) currentNode[ propName ] = propValue; - else currentNode.a = propValue; - - } - - this.setCurrentProp( currentNode, propName ); - - // convert string to array, unless it ends in ',' in which case more will be added to it - if ( propName === 'a' && propValue.slice( - 1 ) !== ',' ) { - - currentNode.a = parseNumberArray( propValue ); - - } - - } - - parseNodePropertyContinued( line ) { - - const currentNode = this.getCurrentNode(); - - currentNode.a += line; - - // if the line doesn't end in ',' we have reached the end of the property value - // so convert the string to an array - if ( line.slice( - 1 ) !== ',' ) { - - currentNode.a = parseNumberArray( currentNode.a ); - - } - - } - - // parse "Property70" - parseNodeSpecialProperty( line, propName, propValue ) { - - // split this - // P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 - // into array like below - // ["Lcl Scaling", "Lcl Scaling", "", "A", "1,1,1" ] - const props = propValue.split( '",' ).map( function ( prop ) { - - return prop.trim().replace( /^\"/, '' ).replace( /\s/, '_' ); - - } ); - - const innerPropName = props[ 0 ]; - const innerPropType1 = props[ 1 ]; - const innerPropType2 = props[ 2 ]; - const innerPropFlag = props[ 3 ]; - let innerPropValue = props[ 4 ]; - - // cast values where needed, otherwise leave as strings - switch ( innerPropType1 ) { - - case 'int': - case 'enum': - case 'bool': - case 'ULongLong': - case 'double': - case 'Number': - case 'FieldOfView': - innerPropValue = parseFloat( innerPropValue ); - break; - - case 'Color': - case 'ColorRGB': - case 'Vector3D': - case 'Lcl_Translation': - case 'Lcl_Rotation': - case 'Lcl_Scaling': - innerPropValue = parseNumberArray( innerPropValue ); - break; - - } - - // CAUTION: these props must append to parent's parent - this.getPrevNode()[ innerPropName ] = { - - 'type': innerPropType1, - 'type2': innerPropType2, - 'flag': innerPropFlag, - 'value': innerPropValue - - }; - - this.setCurrentProp( this.getPrevNode(), innerPropName ); - - } - -} - -// Parse an FBX file in Binary format -class BinaryParser { - - parse( buffer ) { - - const reader = new BinaryReader( buffer ); - reader.skip( 23 ); // skip magic 23 bytes - - const version = reader.getUint32(); - - if ( version < 6400 ) { - - throw new Error( 'THREE.FBXLoader: FBX version not supported, FileVersion: ' + version ); - - } - - const allNodes = new FBXTree(); - - while ( ! this.endOfContent( reader ) ) { - - const node = this.parseNode( reader, version ); - if ( node !== null ) allNodes.add( node.name, node ); - - } - - return allNodes; - - } - - // Check if reader has reached the end of content. - endOfContent( reader ) { - - // footer size: 160bytes + 16-byte alignment padding - // - 16bytes: magic - // - padding til 16-byte alignment (at least 1byte?) - // (seems like some exporters embed fixed 15 or 16bytes?) - // - 4bytes: magic - // - 4bytes: version - // - 120bytes: zero - // - 16bytes: magic - if ( reader.size() % 16 === 0 ) { - - return ( ( reader.getOffset() + 160 + 16 ) & ~ 0xf ) >= reader.size(); - - } else { - - return reader.getOffset() + 160 + 16 >= reader.size(); - - } - - } - - // recursively parse nodes until the end of the file is reached - parseNode( reader, version ) { - - const node = {}; - - // The first three data sizes depends on version. - const endOffset = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32(); - const numProperties = ( version >= 7500 ) ? reader.getUint64() : reader.getUint32(); - - ( version >= 7500 ) ? reader.getUint64() : reader.getUint32(); // the returned propertyListLen is not used - - const nameLen = reader.getUint8(); - const name = reader.getString( nameLen ); - - // Regards this node as NULL-record if endOffset is zero - if ( endOffset === 0 ) return null; - - const propertyList = []; - - for ( let i = 0; i < numProperties; i ++ ) { - - propertyList.push( this.parseProperty( reader ) ); - - } - - // Regards the first three elements in propertyList as id, attrName, and attrType - const id = propertyList.length > 0 ? propertyList[ 0 ] : ''; - const attrName = propertyList.length > 1 ? propertyList[ 1 ] : ''; - const attrType = propertyList.length > 2 ? propertyList[ 2 ] : ''; - - // check if this node represents just a single property - // like (name, 0) set or (name2, [0, 1, 2]) set of {name: 0, name2: [0, 1, 2]} - node.singleProperty = ( numProperties === 1 && reader.getOffset() === endOffset ) ? true : false; - - while ( endOffset > reader.getOffset() ) { - - const subNode = this.parseNode( reader, version ); - - if ( subNode !== null ) this.parseSubNode( name, node, subNode ); - - } - - node.propertyList = propertyList; // raw property list used by parent - - if ( typeof id === 'number' ) node.id = id; - if ( attrName !== '' ) node.attrName = attrName; - if ( attrType !== '' ) node.attrType = attrType; - if ( name !== '' ) node.name = name; - - return node; - - } - - parseSubNode( name, node, subNode ) { - - // special case: child node is single property - if ( subNode.singleProperty === true ) { - - const value = subNode.propertyList[ 0 ]; - - if ( Array.isArray( value ) ) { - - node[ subNode.name ] = subNode; - - subNode.a = value; - - } else { - - node[ subNode.name ] = value; - - } - - } else if ( name === 'Connections' && subNode.name === 'C' ) { - - const array = []; - - subNode.propertyList.forEach( function ( property, i ) { - - // first Connection is FBX type (OO, OP, etc.). We'll discard these - if ( i !== 0 ) array.push( property ); - - } ); - - if ( node.connections === undefined ) { - - node.connections = []; - - } - - node.connections.push( array ); - - } else if ( subNode.name === 'Properties70' ) { - - const keys = Object.keys( subNode ); - - keys.forEach( function ( key ) { - - node[ key ] = subNode[ key ]; - - } ); - - } else if ( name === 'Properties70' && subNode.name === 'P' ) { - - let innerPropName = subNode.propertyList[ 0 ]; - let innerPropType1 = subNode.propertyList[ 1 ]; - const innerPropType2 = subNode.propertyList[ 2 ]; - const innerPropFlag = subNode.propertyList[ 3 ]; - let innerPropValue; - - if ( innerPropName.indexOf( 'Lcl ' ) === 0 ) innerPropName = innerPropName.replace( 'Lcl ', 'Lcl_' ); - if ( innerPropType1.indexOf( 'Lcl ' ) === 0 ) innerPropType1 = innerPropType1.replace( 'Lcl ', 'Lcl_' ); - - if ( innerPropType1 === 'Color' || innerPropType1 === 'ColorRGB' || innerPropType1 === 'Vector' || innerPropType1 === 'Vector3D' || innerPropType1.indexOf( 'Lcl_' ) === 0 ) { - - innerPropValue = [ - subNode.propertyList[ 4 ], - subNode.propertyList[ 5 ], - subNode.propertyList[ 6 ] - ]; - - } else { - - innerPropValue = subNode.propertyList[ 4 ]; - - } - - // this will be copied to parent, see above - node[ innerPropName ] = { - - 'type': innerPropType1, - 'type2': innerPropType2, - 'flag': innerPropFlag, - 'value': innerPropValue - - }; - - } else if ( node[ subNode.name ] === undefined ) { - - if ( typeof subNode.id === 'number' ) { - - node[ subNode.name ] = {}; - node[ subNode.name ][ subNode.id ] = subNode; - - } else { - - node[ subNode.name ] = subNode; - - } - - } else { - - if ( subNode.name === 'PoseNode' ) { - - if ( ! Array.isArray( node[ subNode.name ] ) ) { - - node[ subNode.name ] = [ node[ subNode.name ] ]; - - } - - node[ subNode.name ].push( subNode ); - - } else if ( node[ subNode.name ][ subNode.id ] === undefined ) { - - node[ subNode.name ][ subNode.id ] = subNode; - - } - - } - - } - - parseProperty( reader ) { - - const type = reader.getString( 1 ); - let length; - - switch ( type ) { - - case 'C': - return reader.getBoolean(); - - case 'D': - return reader.getFloat64(); - - case 'F': - return reader.getFloat32(); - - case 'I': - return reader.getInt32(); - - case 'L': - return reader.getInt64(); - - case 'R': - length = reader.getUint32(); - return reader.getArrayBuffer( length ); - - case 'S': - length = reader.getUint32(); - return reader.getString( length ); - - case 'Y': - return reader.getInt16(); - - case 'b': - case 'c': - case 'd': - case 'f': - case 'i': - case 'l': - - const arrayLength = reader.getUint32(); - const encoding = reader.getUint32(); // 0: non-compressed, 1: compressed - const compressedLength = reader.getUint32(); - - if ( encoding === 0 ) { - - switch ( type ) { - - case 'b': - case 'c': - return reader.getBooleanArray( arrayLength ); - - case 'd': - return reader.getFloat64Array( arrayLength ); - - case 'f': - return reader.getFloat32Array( arrayLength ); - - case 'i': - return reader.getInt32Array( arrayLength ); - - case 'l': - return reader.getInt64Array( arrayLength ); - - } - - } - - const data = fflate.unzlibSync( new Uint8Array( reader.getArrayBuffer( compressedLength ) ) ); - const reader2 = new BinaryReader( data.buffer ); - - switch ( type ) { - - case 'b': - case 'c': - return reader2.getBooleanArray( arrayLength ); - - case 'd': - return reader2.getFloat64Array( arrayLength ); - - case 'f': - return reader2.getFloat32Array( arrayLength ); - - case 'i': - return reader2.getInt32Array( arrayLength ); - - case 'l': - return reader2.getInt64Array( arrayLength ); - - } - - break; // cannot happen but is required by the DeepScan - - default: - throw new Error( 'THREE.FBXLoader: Unknown property type ' + type ); - - } - - } - -} - -class BinaryReader { - - constructor( buffer, littleEndian ) { - - this.dv = new DataView( buffer ); - this.offset = 0; - this.littleEndian = ( littleEndian !== undefined ) ? littleEndian : true; - this._textDecoder = new TextDecoder(); - - } - - getOffset() { - - return this.offset; - - } - - size() { - - return this.dv.buffer.byteLength; - - } - - skip( length ) { - - this.offset += length; - - } - - // seems like true/false representation depends on exporter. - // true: 1 or 'Y'(=0x59), false: 0 or 'T'(=0x54) - // then sees LSB. - getBoolean() { - - return ( this.getUint8() & 1 ) === 1; - - } - - getBooleanArray( size ) { - - const a = []; - - for ( let i = 0; i < size; i ++ ) { - - a.push( this.getBoolean() ); - - } - - return a; - - } - - getUint8() { - - const value = this.dv.getUint8( this.offset ); - this.offset += 1; - return value; - - } - - getInt16() { - - const value = this.dv.getInt16( this.offset, this.littleEndian ); - this.offset += 2; - return value; - - } - - getInt32() { - - const value = this.dv.getInt32( this.offset, this.littleEndian ); - this.offset += 4; - return value; - - } - - getInt32Array( size ) { - - const a = []; - - for ( let i = 0; i < size; i ++ ) { - - a.push( this.getInt32() ); - - } - - return a; - - } - - getUint32() { - - const value = this.dv.getUint32( this.offset, this.littleEndian ); - this.offset += 4; - return value; - - } - - // JavaScript doesn't support 64-bit integer so calculate this here - // 1 << 32 will return 1 so using multiply operation instead here. - // There's a possibility that this method returns wrong value if the value - // is out of the range between Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER. - // TODO: safely handle 64-bit integer - getInt64() { - - let low, high; - - if ( this.littleEndian ) { - - low = this.getUint32(); - high = this.getUint32(); - - } else { - - high = this.getUint32(); - low = this.getUint32(); - - } - - // calculate negative value - if ( high & 0x80000000 ) { - - high = ~ high & 0xFFFFFFFF; - low = ~ low & 0xFFFFFFFF; - - if ( low === 0xFFFFFFFF ) high = ( high + 1 ) & 0xFFFFFFFF; - - low = ( low + 1 ) & 0xFFFFFFFF; - - return - ( high * 0x100000000 + low ); - - } - - return high * 0x100000000 + low; - - } - - getInt64Array( size ) { - - const a = []; - - for ( let i = 0; i < size; i ++ ) { - - a.push( this.getInt64() ); - - } - - return a; - - } - - // Note: see getInt64() comment - getUint64() { - - let low, high; - - if ( this.littleEndian ) { - - low = this.getUint32(); - high = this.getUint32(); - - } else { - - high = this.getUint32(); - low = this.getUint32(); - - } - - return high * 0x100000000 + low; - - } - - getFloat32() { - - const value = this.dv.getFloat32( this.offset, this.littleEndian ); - this.offset += 4; - return value; - - } - - getFloat32Array( size ) { - - const a = []; - - for ( let i = 0; i < size; i ++ ) { - - a.push( this.getFloat32() ); - - } - - return a; - - } - - getFloat64() { - - const value = this.dv.getFloat64( this.offset, this.littleEndian ); - this.offset += 8; - return value; - - } - - getFloat64Array( size ) { - - const a = []; - - for ( let i = 0; i < size; i ++ ) { - - a.push( this.getFloat64() ); - - } - - return a; - - } - - getArrayBuffer( size ) { - - const value = this.dv.buffer.slice( this.offset, this.offset + size ); - this.offset += size; - return value; - - } - - getString( size ) { - - const start = this.offset; - let a = new Uint8Array( this.dv.buffer, start, size ); - - this.skip( size ); - - const nullByte = a.indexOf( 0 ); - if ( nullByte >= 0 ) a = new Uint8Array( this.dv.buffer, start, nullByte ); - - return this._textDecoder.decode( a ); - - } - -} - -// FBXTree holds a representation of the FBX data, returned by the TextParser ( FBX ASCII format) -// and BinaryParser( FBX Binary format) -class FBXTree { - - add( key, val ) { - - this[ key ] = val; - - } - -} - -// ************** UTILITY FUNCTIONS ************** - -function isFbxFormatBinary( buffer ) { - - const CORRECT = 'Kaydara\u0020FBX\u0020Binary\u0020\u0020\0'; - - return buffer.byteLength >= CORRECT.length && CORRECT === convertArrayBufferToString( buffer, 0, CORRECT.length ); - -} - -function isFbxFormatASCII( text ) { - - const CORRECT = [ 'K', 'a', 'y', 'd', 'a', 'r', 'a', '\\', 'F', 'B', 'X', '\\', 'B', 'i', 'n', 'a', 'r', 'y', '\\', '\\' ]; - - let cursor = 0; - - function read( offset ) { - - const result = text[ offset - 1 ]; - text = text.slice( cursor + offset ); - cursor ++; - return result; - - } - - for ( let i = 0; i < CORRECT.length; ++ i ) { - - const num = read( 1 ); - if ( num === CORRECT[ i ] ) { - - return false; - - } - - } - - return true; - -} - -function getFbxVersion( text ) { - - const versionRegExp = /FBXVersion: (\d+)/; - const match = text.match( versionRegExp ); - - if ( match ) { - - const version = parseInt( match[ 1 ] ); - return version; - - } - - throw new Error( 'THREE.FBXLoader: Cannot find the version number for the file given.' ); - -} - -// Converts FBX ticks into real time seconds. -function convertFBXTimeToSeconds( time ) { - - return time / 46186158000; - -} - -const dataArray = []; - -// extracts the data from the correct position in the FBX array based on indexing type -function getData( polygonVertexIndex, polygonIndex, vertexIndex, infoObject ) { - - let index; - - switch ( infoObject.mappingType ) { - - case 'ByPolygonVertex' : - index = polygonVertexIndex; - break; - case 'ByPolygon' : - index = polygonIndex; - break; - case 'ByVertice' : - index = vertexIndex; - break; - case 'AllSame' : - index = infoObject.indices[ 0 ]; - break; - default : - console.warn( 'THREE.FBXLoader: unknown attribute mapping type ' + infoObject.mappingType ); - - } - - if ( infoObject.referenceType === 'IndexToDirect' ) index = infoObject.indices[ index ]; - - const from = index * infoObject.dataSize; - const to = from + infoObject.dataSize; - - return slice( dataArray, infoObject.buffer, from, to ); - -} - -const tempEuler = new Euler(); -const tempVec = new Vector3(); - -// generate transformation from FBX transform data -// ref: https://help.autodesk.com/view/FBX/2017/ENU/?guid=__files_GUID_10CDD63C_79C1_4F2D_BB28_AD2BE65A02ED_htm -// ref: http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html?url=cpp_ref/_transformations_2main_8cxx-example.html,topicNumber=cpp_ref__transformations_2main_8cxx_example_htmlfc10a1e1-b18d-4e72-9dc0-70d0f1959f5e -function generateTransform( transformData ) { - - const lTranslationM = new Matrix4(); - const lPreRotationM = new Matrix4(); - const lRotationM = new Matrix4(); - const lPostRotationM = new Matrix4(); - - const lScalingM = new Matrix4(); - const lScalingPivotM = new Matrix4(); - const lScalingOffsetM = new Matrix4(); - const lRotationOffsetM = new Matrix4(); - const lRotationPivotM = new Matrix4(); - - const lParentGX = new Matrix4(); - const lParentLX = new Matrix4(); - const lGlobalT = new Matrix4(); - - const inheritType = ( transformData.inheritType ) ? transformData.inheritType : 0; - - if ( transformData.translation ) lTranslationM.setPosition( tempVec.fromArray( transformData.translation ) ); - - if ( transformData.preRotation ) { - - const array = transformData.preRotation.map( MathUtils.degToRad ); - array.push( transformData.eulerOrder || Euler.DEFAULT_ORDER ); - lPreRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) ); - - } - - if ( transformData.rotation ) { - - const array = transformData.rotation.map( MathUtils.degToRad ); - array.push( transformData.eulerOrder || Euler.DEFAULT_ORDER ); - lRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) ); - - } - - if ( transformData.postRotation ) { - - const array = transformData.postRotation.map( MathUtils.degToRad ); - array.push( transformData.eulerOrder || Euler.DEFAULT_ORDER ); - lPostRotationM.makeRotationFromEuler( tempEuler.fromArray( array ) ); - lPostRotationM.invert(); - - } - - if ( transformData.scale ) lScalingM.scale( tempVec.fromArray( transformData.scale ) ); - - // Pivots and offsets - if ( transformData.scalingOffset ) lScalingOffsetM.setPosition( tempVec.fromArray( transformData.scalingOffset ) ); - if ( transformData.scalingPivot ) lScalingPivotM.setPosition( tempVec.fromArray( transformData.scalingPivot ) ); - if ( transformData.rotationOffset ) lRotationOffsetM.setPosition( tempVec.fromArray( transformData.rotationOffset ) ); - if ( transformData.rotationPivot ) lRotationPivotM.setPosition( tempVec.fromArray( transformData.rotationPivot ) ); - - // parent transform - if ( transformData.parentMatrixWorld ) { - - lParentLX.copy( transformData.parentMatrix ); - lParentGX.copy( transformData.parentMatrixWorld ); - - } - - const lLRM = lPreRotationM.clone().multiply( lRotationM ).multiply( lPostRotationM ); - // Global Rotation - const lParentGRM = new Matrix4(); - lParentGRM.extractRotation( lParentGX ); - - // Global Shear*Scaling - const lParentTM = new Matrix4(); - lParentTM.copyPosition( lParentGX ); - - const lParentGRSM = lParentTM.clone().invert().multiply( lParentGX ); - const lParentGSM = lParentGRM.clone().invert().multiply( lParentGRSM ); - const lLSM = lScalingM; - - const lGlobalRS = new Matrix4(); - - if ( inheritType === 0 ) { - - lGlobalRS.copy( lParentGRM ).multiply( lLRM ).multiply( lParentGSM ).multiply( lLSM ); - - } else if ( inheritType === 1 ) { - - lGlobalRS.copy( lParentGRM ).multiply( lParentGSM ).multiply( lLRM ).multiply( lLSM ); - - } else { - - const lParentLSM = new Matrix4().scale( new Vector3().setFromMatrixScale( lParentLX ) ); - const lParentLSM_inv = lParentLSM.clone().invert(); - const lParentGSM_noLocal = lParentGSM.clone().multiply( lParentLSM_inv ); - - lGlobalRS.copy( lParentGRM ).multiply( lLRM ).multiply( lParentGSM_noLocal ).multiply( lLSM ); - - } - - const lRotationPivotM_inv = lRotationPivotM.clone().invert(); - const lScalingPivotM_inv = lScalingPivotM.clone().invert(); - // Calculate the local transform matrix - let lTransform = lTranslationM.clone().multiply( lRotationOffsetM ).multiply( lRotationPivotM ).multiply( lPreRotationM ).multiply( lRotationM ).multiply( lPostRotationM ).multiply( lRotationPivotM_inv ).multiply( lScalingOffsetM ).multiply( lScalingPivotM ).multiply( lScalingM ).multiply( lScalingPivotM_inv ); - - const lLocalTWithAllPivotAndOffsetInfo = new Matrix4().copyPosition( lTransform ); - - const lGlobalTranslation = lParentGX.clone().multiply( lLocalTWithAllPivotAndOffsetInfo ); - lGlobalT.copyPosition( lGlobalTranslation ); - - lTransform = lGlobalT.clone().multiply( lGlobalRS ); - - // from global to local - lTransform.premultiply( lParentGX.invert() ); - - return lTransform; - -} - -// Returns the three.js intrinsic Euler order corresponding to FBX extrinsic Euler order -// ref: http://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_euler_html -function getEulerOrder( order ) { - - order = order || 0; - - const enums = [ - 'ZYX', // -> XYZ extrinsic - 'YZX', // -> XZY extrinsic - 'XZY', // -> YZX extrinsic - 'ZXY', // -> YXZ extrinsic - 'YXZ', // -> ZXY extrinsic - 'XYZ', // -> ZYX extrinsic - //'SphericXYZ', // not possible to support - ]; - - if ( order === 6 ) { - - console.warn( 'THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.' ); - return enums[ 0 ]; - - } - - return enums[ order ]; - -} - -// Parses comma separated list of numbers and returns them an array. -// Used internally by the TextParser -function parseNumberArray( value ) { - - const array = value.split( ',' ).map( function ( val ) { - - return parseFloat( val ); - - } ); - - return array; - -} - -function convertArrayBufferToString( buffer, from, to ) { - - if ( from === undefined ) from = 0; - if ( to === undefined ) to = buffer.byteLength; - - return new TextDecoder().decode( new Uint8Array( buffer, from, to ) ); - -} - -function append( a, b ) { - - for ( let i = 0, j = a.length, l = b.length; i < l; i ++, j ++ ) { - - a[ j ] = b[ i ]; - - } - -} - -function slice( a, b, from, to ) { - - for ( let i = from, j = 0; i < to; i ++, j ++ ) { - - a[ j ] = b[ i ]; - - } - - return a; - -} - - -export { FBXLoader }; diff --git a/three/addons/loaders/FontLoader.js b/three/addons/loaders/FontLoader.js deleted file mode 100644 index 93caeb5..0000000 --- a/three/addons/loaders/FontLoader.js +++ /dev/null @@ -1,183 +0,0 @@ -import { - FileLoader, - Loader, - ShapePath -} from 'three'; - -class FontLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setRequestHeader( this.requestHeader ); - loader.setWithCredentials( this.withCredentials ); - loader.load( url, function ( text ) { - - const font = scope.parse( JSON.parse( text ) ); - - if ( onLoad ) onLoad( font ); - - }, onProgress, onError ); - - } - - parse( json ) { - - return new Font( json ); - - } - -} - -// - -class Font { - - constructor( data ) { - - this.isFont = true; - - this.type = 'Font'; - - this.data = data; - - } - - generateShapes( text, size = 100 ) { - - const shapes = []; - const paths = createPaths( text, size, this.data ); - - for ( let p = 0, pl = paths.length; p < pl; p ++ ) { - - shapes.push( ...paths[ p ].toShapes() ); - - } - - return shapes; - - } - -} - -function createPaths( text, size, data ) { - - const chars = Array.from( text ); - const scale = size / data.resolution; - const line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale; - - const paths = []; - - let offsetX = 0, offsetY = 0; - - for ( let i = 0; i < chars.length; i ++ ) { - - const char = chars[ i ]; - - if ( char === '\n' ) { - - offsetX = 0; - offsetY -= line_height; - - } else { - - const ret = createPath( char, scale, offsetX, offsetY, data ); - offsetX += ret.offsetX; - paths.push( ret.path ); - - } - - } - - return paths; - -} - -function createPath( char, scale, offsetX, offsetY, data ) { - - const glyph = data.glyphs[ char ] || data.glyphs[ '?' ]; - - if ( ! glyph ) { - - console.error( 'THREE.Font: character "' + char + '" does not exists in font family ' + data.familyName + '.' ); - - return; - - } - - const path = new ShapePath(); - - let x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2; - - if ( glyph.o ) { - - const outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) ); - - for ( let i = 0, l = outline.length; i < l; ) { - - const action = outline[ i ++ ]; - - switch ( action ) { - - case 'm': // moveTo - - x = outline[ i ++ ] * scale + offsetX; - y = outline[ i ++ ] * scale + offsetY; - - path.moveTo( x, y ); - - break; - - case 'l': // lineTo - - x = outline[ i ++ ] * scale + offsetX; - y = outline[ i ++ ] * scale + offsetY; - - path.lineTo( x, y ); - - break; - - case 'q': // quadraticCurveTo - - cpx = outline[ i ++ ] * scale + offsetX; - cpy = outline[ i ++ ] * scale + offsetY; - cpx1 = outline[ i ++ ] * scale + offsetX; - cpy1 = outline[ i ++ ] * scale + offsetY; - - path.quadraticCurveTo( cpx1, cpy1, cpx, cpy ); - - break; - - case 'b': // bezierCurveTo - - cpx = outline[ i ++ ] * scale + offsetX; - cpy = outline[ i ++ ] * scale + offsetY; - cpx1 = outline[ i ++ ] * scale + offsetX; - cpy1 = outline[ i ++ ] * scale + offsetY; - cpx2 = outline[ i ++ ] * scale + offsetX; - cpy2 = outline[ i ++ ] * scale + offsetY; - - path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy ); - - break; - - } - - } - - } - - return { offsetX: glyph.ha * scale, path: path }; - -} - -export { FontLoader, Font }; diff --git a/three/addons/loaders/GCodeLoader.js b/three/addons/loaders/GCodeLoader.js deleted file mode 100644 index c2f1280..0000000 --- a/three/addons/loaders/GCodeLoader.js +++ /dev/null @@ -1,261 +0,0 @@ -import { - BufferGeometry, - FileLoader, - Float32BufferAttribute, - Group, - LineBasicMaterial, - LineSegments, - Loader -} from 'three'; - -/** - * GCodeLoader is used to load gcode files usually used for 3D printing or CNC applications. - * - * Gcode files are composed by commands used by machines to create objects. - * - * @class GCodeLoader - * @param {Manager} manager Loading manager. - */ - -class GCodeLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.splitLayer = false; - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( data ) { - - let state = { x: 0, y: 0, z: 0, e: 0, f: 0, extruding: false, relative: false }; - const layers = []; - - let currentLayer = undefined; - - const pathMaterial = new LineBasicMaterial( { color: 0xFF0000 } ); - pathMaterial.name = 'path'; - - const extrudingMaterial = new LineBasicMaterial( { color: 0x00FF00 } ); - extrudingMaterial.name = 'extruded'; - - function newLayer( line ) { - - currentLayer = { vertex: [], pathVertex: [], z: line.z }; - layers.push( currentLayer ); - - } - - //Create lie segment between p1 and p2 - function addSegment( p1, p2 ) { - - if ( currentLayer === undefined ) { - - newLayer( p1 ); - - } - - if ( state.extruding ) { - - currentLayer.vertex.push( p1.x, p1.y, p1.z ); - currentLayer.vertex.push( p2.x, p2.y, p2.z ); - - } else { - - currentLayer.pathVertex.push( p1.x, p1.y, p1.z ); - currentLayer.pathVertex.push( p2.x, p2.y, p2.z ); - - } - - } - - function delta( v1, v2 ) { - - return state.relative ? v2 : v2 - v1; - - } - - function absolute( v1, v2 ) { - - return state.relative ? v1 + v2 : v2; - - } - - const lines = data.replace( /;.+/g, '' ).split( '\n' ); - - for ( let i = 0; i < lines.length; i ++ ) { - - const tokens = lines[ i ].split( ' ' ); - const cmd = tokens[ 0 ].toUpperCase(); - - //Argumments - const args = {}; - tokens.splice( 1 ).forEach( function ( token ) { - - if ( token[ 0 ] !== undefined ) { - - const key = token[ 0 ].toLowerCase(); - const value = parseFloat( token.substring( 1 ) ); - args[ key ] = value; - - } - - } ); - - //Process commands - //G0/G1 – Linear Movement - if ( cmd === 'G0' || cmd === 'G1' ) { - - const line = { - x: args.x !== undefined ? absolute( state.x, args.x ) : state.x, - y: args.y !== undefined ? absolute( state.y, args.y ) : state.y, - z: args.z !== undefined ? absolute( state.z, args.z ) : state.z, - e: args.e !== undefined ? absolute( state.e, args.e ) : state.e, - f: args.f !== undefined ? absolute( state.f, args.f ) : state.f, - }; - - //Layer change detection is or made by watching Z, it's made by watching when we extrude at a new Z position - if ( delta( state.e, line.e ) > 0 ) { - - state.extruding = delta( state.e, line.e ) > 0; - - if ( currentLayer == undefined || line.z != currentLayer.z ) { - - newLayer( line ); - - } - - } - - addSegment( state, line ); - state = line; - - } else if ( cmd === 'G2' || cmd === 'G3' ) { - - //G2/G3 - Arc Movement ( G2 clock wise and G3 counter clock wise ) - //console.warn( 'THREE.GCodeLoader: Arc command not supported' ); - - } else if ( cmd === 'G90' ) { - - //G90: Set to Absolute Positioning - state.relative = false; - - } else if ( cmd === 'G91' ) { - - //G91: Set to state.relative Positioning - state.relative = true; - - } else if ( cmd === 'G92' ) { - - //G92: Set Position - const line = state; - line.x = args.x !== undefined ? args.x : line.x; - line.y = args.y !== undefined ? args.y : line.y; - line.z = args.z !== undefined ? args.z : line.z; - line.e = args.e !== undefined ? args.e : line.e; - - } else { - - //console.warn( 'THREE.GCodeLoader: Command not supported:' + cmd ); - - } - - } - - function addObject( vertex, extruding, i ) { - - const geometry = new BufferGeometry(); - geometry.setAttribute( 'position', new Float32BufferAttribute( vertex, 3 ) ); - const segments = new LineSegments( geometry, extruding ? extrudingMaterial : pathMaterial ); - segments.name = 'layer' + i; - object.add( segments ); - - } - - const object = new Group(); - object.name = 'gcode'; - - if ( this.splitLayer ) { - - for ( let i = 0; i < layers.length; i ++ ) { - - const layer = layers[ i ]; - addObject( layer.vertex, true, i ); - addObject( layer.pathVertex, false, i ); - - } - - } else { - - const vertex = [], - pathVertex = []; - - for ( let i = 0; i < layers.length; i ++ ) { - - const layer = layers[ i ]; - const layerVertex = layer.vertex; - const layerPathVertex = layer.pathVertex; - - for ( let j = 0; j < layerVertex.length; j ++ ) { - - vertex.push( layerVertex[ j ] ); - - } - - for ( let j = 0; j < layerPathVertex.length; j ++ ) { - - pathVertex.push( layerPathVertex[ j ] ); - - } - - } - - addObject( vertex, true, layers.length ); - addObject( pathVertex, false, layers.length ); - - } - - object.rotation.set( - Math.PI / 2, 0, 0 ); - - return object; - - } - -} - -export { GCodeLoader }; diff --git a/three/addons/loaders/GLTFLoader.js b/three/addons/loaders/GLTFLoader.js deleted file mode 100644 index 440ecb7..0000000 --- a/three/addons/loaders/GLTFLoader.js +++ /dev/null @@ -1,4663 +0,0 @@ -import { - AnimationClip, - Bone, - Box3, - BufferAttribute, - BufferGeometry, - ClampToEdgeWrapping, - Color, - ColorManagement, - DirectionalLight, - DoubleSide, - FileLoader, - FrontSide, - Group, - ImageBitmapLoader, - InstancedMesh, - InterleavedBuffer, - InterleavedBufferAttribute, - Interpolant, - InterpolateDiscrete, - InterpolateLinear, - Line, - LineBasicMaterial, - LineLoop, - LineSegments, - LinearFilter, - LinearMipmapLinearFilter, - LinearMipmapNearestFilter, - LinearSRGBColorSpace, - Loader, - LoaderUtils, - Material, - MathUtils, - Matrix4, - Mesh, - MeshBasicMaterial, - MeshPhysicalMaterial, - MeshStandardMaterial, - MirroredRepeatWrapping, - NearestFilter, - NearestMipmapLinearFilter, - NearestMipmapNearestFilter, - NumberKeyframeTrack, - Object3D, - OrthographicCamera, - PerspectiveCamera, - PointLight, - Points, - PointsMaterial, - PropertyBinding, - Quaternion, - QuaternionKeyframeTrack, - RepeatWrapping, - Skeleton, - SkinnedMesh, - Sphere, - SpotLight, - Texture, - TextureLoader, - TriangleFanDrawMode, - TriangleStripDrawMode, - Vector2, - Vector3, - VectorKeyframeTrack, - SRGBColorSpace, - InstancedBufferAttribute -} from 'three'; -import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js'; - -class GLTFLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.dracoLoader = null; - this.ktx2Loader = null; - this.meshoptDecoder = null; - - this.pluginCallbacks = []; - - this.register( function ( parser ) { - - return new GLTFMaterialsClearcoatExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFTextureBasisUExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFTextureWebPExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFTextureAVIFExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsSheenExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsTransmissionExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsVolumeExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsIorExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsEmissiveStrengthExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsSpecularExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsIridescenceExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsAnisotropyExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMaterialsBumpExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFLightsExtension( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMeshoptCompression( parser ); - - } ); - - this.register( function ( parser ) { - - return new GLTFMeshGpuInstancing( parser ); - - } ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - let resourcePath; - - if ( this.resourcePath !== '' ) { - - resourcePath = this.resourcePath; - - } else if ( this.path !== '' ) { - - // If a base path is set, resources will be relative paths from that plus the relative path of the gltf file - // Example path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf' - // resourcePath = 'https://my-cnd-server.com/assets/models/' - // referenced resource 'model.bin' will be loaded from 'https://my-cnd-server.com/assets/models/model.bin' - // referenced resource '../textures/texture.png' will be loaded from 'https://my-cnd-server.com/assets/textures/texture.png' - const relativeUrl = LoaderUtils.extractUrlBase( url ); - resourcePath = LoaderUtils.resolveURL( relativeUrl, this.path ); - - } else { - - resourcePath = LoaderUtils.extractUrlBase( url ); - - } - - // Tells the LoadingManager to track an extra item, which resolves after - // the model is fully loaded. This means the count of items loaded will - // be incorrect, but ensures manager.onLoad() does not fire early. - this.manager.itemStart( url ); - - const _onError = function ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - }; - - const loader = new FileLoader( this.manager ); - - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( this.requestHeader ); - loader.setWithCredentials( this.withCredentials ); - - loader.load( url, function ( data ) { - - try { - - scope.parse( data, resourcePath, function ( gltf ) { - - onLoad( gltf ); - - scope.manager.itemEnd( url ); - - }, _onError ); - - } catch ( e ) { - - _onError( e ); - - } - - }, onProgress, _onError ); - - } - - setDRACOLoader( dracoLoader ) { - - this.dracoLoader = dracoLoader; - return this; - - } - - setDDSLoader() { - - throw new Error( - - 'THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".' - - ); - - } - - setKTX2Loader( ktx2Loader ) { - - this.ktx2Loader = ktx2Loader; - return this; - - } - - setMeshoptDecoder( meshoptDecoder ) { - - this.meshoptDecoder = meshoptDecoder; - return this; - - } - - register( callback ) { - - if ( this.pluginCallbacks.indexOf( callback ) === - 1 ) { - - this.pluginCallbacks.push( callback ); - - } - - return this; - - } - - unregister( callback ) { - - if ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) { - - this.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 ); - - } - - return this; - - } - - parse( data, path, onLoad, onError ) { - - let json; - const extensions = {}; - const plugins = {}; - const textDecoder = new TextDecoder(); - - if ( typeof data === 'string' ) { - - json = JSON.parse( data ); - - } else if ( data instanceof ArrayBuffer ) { - - const magic = textDecoder.decode( new Uint8Array( data, 0, 4 ) ); - - if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) { - - try { - - extensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data ); - - } catch ( error ) { - - if ( onError ) onError( error ); - return; - - } - - json = JSON.parse( extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content ); - - } else { - - json = JSON.parse( textDecoder.decode( data ) ); - - } - - } else { - - json = data; - - } - - if ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) { - - if ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) ); - return; - - } - - const parser = new GLTFParser( json, { - - path: path || this.resourcePath || '', - crossOrigin: this.crossOrigin, - requestHeader: this.requestHeader, - manager: this.manager, - ktx2Loader: this.ktx2Loader, - meshoptDecoder: this.meshoptDecoder - - } ); - - parser.fileLoader.setRequestHeader( this.requestHeader ); - - for ( let i = 0; i < this.pluginCallbacks.length; i ++ ) { - - const plugin = this.pluginCallbacks[ i ]( parser ); - - if ( ! plugin.name ) console.error( 'THREE.GLTFLoader: Invalid plugin found: missing name' ); - - plugins[ plugin.name ] = plugin; - - // Workaround to avoid determining as unknown extension - // in addUnknownExtensionsToUserData(). - // Remove this workaround if we move all the existing - // extension handlers to plugin system - extensions[ plugin.name ] = true; - - } - - if ( json.extensionsUsed ) { - - for ( let i = 0; i < json.extensionsUsed.length; ++ i ) { - - const extensionName = json.extensionsUsed[ i ]; - const extensionsRequired = json.extensionsRequired || []; - - switch ( extensionName ) { - - case EXTENSIONS.KHR_MATERIALS_UNLIT: - extensions[ extensionName ] = new GLTFMaterialsUnlitExtension(); - break; - - case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION: - extensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader ); - break; - - case EXTENSIONS.KHR_TEXTURE_TRANSFORM: - extensions[ extensionName ] = new GLTFTextureTransformExtension(); - break; - - case EXTENSIONS.KHR_MESH_QUANTIZATION: - extensions[ extensionName ] = new GLTFMeshQuantizationExtension(); - break; - - default: - - if ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) { - - console.warn( 'THREE.GLTFLoader: Unknown extension "' + extensionName + '".' ); - - } - - } - - } - - } - - parser.setExtensions( extensions ); - parser.setPlugins( plugins ); - parser.parse( onLoad, onError ); - - } - - parseAsync( data, path ) { - - const scope = this; - - return new Promise( function ( resolve, reject ) { - - scope.parse( data, path, resolve, reject ); - - } ); - - } - -} - -/* GLTFREGISTRY */ - -function GLTFRegistry() { - - let objects = {}; - - return { - - get: function ( key ) { - - return objects[ key ]; - - }, - - add: function ( key, object ) { - - objects[ key ] = object; - - }, - - remove: function ( key ) { - - delete objects[ key ]; - - }, - - removeAll: function () { - - objects = {}; - - } - - }; - -} - -/*********************************/ -/********** EXTENSIONS ***********/ -/*********************************/ - -const EXTENSIONS = { - KHR_BINARY_GLTF: 'KHR_binary_glTF', - KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression', - KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual', - KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat', - KHR_MATERIALS_IOR: 'KHR_materials_ior', - KHR_MATERIALS_SHEEN: 'KHR_materials_sheen', - KHR_MATERIALS_SPECULAR: 'KHR_materials_specular', - KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission', - KHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence', - KHR_MATERIALS_ANISOTROPY: 'KHR_materials_anisotropy', - KHR_MATERIALS_UNLIT: 'KHR_materials_unlit', - KHR_MATERIALS_VOLUME: 'KHR_materials_volume', - KHR_TEXTURE_BASISU: 'KHR_texture_basisu', - KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform', - KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization', - KHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength', - EXT_MATERIALS_BUMP: 'EXT_materials_bump', - EXT_TEXTURE_WEBP: 'EXT_texture_webp', - EXT_TEXTURE_AVIF: 'EXT_texture_avif', - EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression', - EXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing' -}; - -/** - * Punctual Lights Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual - */ -class GLTFLightsExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL; - - // Object3D instance caches - this.cache = { refs: {}, uses: {} }; - - } - - _markDefs() { - - const parser = this.parser; - const nodeDefs = this.parser.json.nodes || []; - - for ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { - - const nodeDef = nodeDefs[ nodeIndex ]; - - if ( nodeDef.extensions - && nodeDef.extensions[ this.name ] - && nodeDef.extensions[ this.name ].light !== undefined ) { - - parser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light ); - - } - - } - - } - - _loadLight( lightIndex ) { - - const parser = this.parser; - const cacheKey = 'light:' + lightIndex; - let dependency = parser.cache.get( cacheKey ); - - if ( dependency ) return dependency; - - const json = parser.json; - const extensions = ( json.extensions && json.extensions[ this.name ] ) || {}; - const lightDefs = extensions.lights || []; - const lightDef = lightDefs[ lightIndex ]; - let lightNode; - - const color = new Color( 0xffffff ); - - if ( lightDef.color !== undefined ) color.setRGB( lightDef.color[ 0 ], lightDef.color[ 1 ], lightDef.color[ 2 ], LinearSRGBColorSpace ); - - const range = lightDef.range !== undefined ? lightDef.range : 0; - - switch ( lightDef.type ) { - - case 'directional': - lightNode = new DirectionalLight( color ); - lightNode.target.position.set( 0, 0, - 1 ); - lightNode.add( lightNode.target ); - break; - - case 'point': - lightNode = new PointLight( color ); - lightNode.distance = range; - break; - - case 'spot': - lightNode = new SpotLight( color ); - lightNode.distance = range; - // Handle spotlight properties. - lightDef.spot = lightDef.spot || {}; - lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0; - lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0; - lightNode.angle = lightDef.spot.outerConeAngle; - lightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle; - lightNode.target.position.set( 0, 0, - 1 ); - lightNode.add( lightNode.target ); - break; - - default: - throw new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type ); - - } - - // Some lights (e.g. spot) default to a position other than the origin. Reset the position - // here, because node-level parsing will only override position if explicitly specified. - lightNode.position.set( 0, 0, 0 ); - - lightNode.decay = 2; - - assignExtrasToUserData( lightNode, lightDef ); - - if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity; - - lightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) ); - - dependency = Promise.resolve( lightNode ); - - parser.cache.add( cacheKey, dependency ); - - return dependency; - - } - - getDependency( type, index ) { - - if ( type !== 'light' ) return; - - return this._loadLight( index ); - - } - - createNodeAttachment( nodeIndex ) { - - const self = this; - const parser = this.parser; - const json = parser.json; - const nodeDef = json.nodes[ nodeIndex ]; - const lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {}; - const lightIndex = lightDef.light; - - if ( lightIndex === undefined ) return null; - - return this._loadLight( lightIndex ).then( function ( light ) { - - return parser._getNodeRef( self.cache, lightIndex, light ); - - } ); - - } - -} - -/** - * Unlit Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit - */ -class GLTFMaterialsUnlitExtension { - - constructor() { - - this.name = EXTENSIONS.KHR_MATERIALS_UNLIT; - - } - - getMaterialType() { - - return MeshBasicMaterial; - - } - - extendParams( materialParams, materialDef, parser ) { - - const pending = []; - - materialParams.color = new Color( 1.0, 1.0, 1.0 ); - materialParams.opacity = 1.0; - - const metallicRoughness = materialDef.pbrMetallicRoughness; - - if ( metallicRoughness ) { - - if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { - - const array = metallicRoughness.baseColorFactor; - - materialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace ); - materialParams.opacity = array[ 3 ]; - - } - - if ( metallicRoughness.baseColorTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) ); - - } - - } - - return Promise.all( pending ); - - } - -} - -/** - * Materials Emissive Strength Extension - * - * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md - */ -class GLTFMaterialsEmissiveStrengthExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength; - - if ( emissiveStrength !== undefined ) { - - materialParams.emissiveIntensity = emissiveStrength; - - } - - return Promise.resolve(); - - } - -} - -/** - * Clearcoat Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat - */ -class GLTFMaterialsClearcoatExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const pending = []; - - const extension = materialDef.extensions[ this.name ]; - - if ( extension.clearcoatFactor !== undefined ) { - - materialParams.clearcoat = extension.clearcoatFactor; - - } - - if ( extension.clearcoatTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) ); - - } - - if ( extension.clearcoatRoughnessFactor !== undefined ) { - - materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor; - - } - - if ( extension.clearcoatRoughnessTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) ); - - } - - if ( extension.clearcoatNormalTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) ); - - if ( extension.clearcoatNormalTexture.scale !== undefined ) { - - const scale = extension.clearcoatNormalTexture.scale; - - materialParams.clearcoatNormalScale = new Vector2( scale, scale ); - - } - - } - - return Promise.all( pending ); - - } - -} - -/** - * Iridescence Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence - */ -class GLTFMaterialsIridescenceExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const pending = []; - - const extension = materialDef.extensions[ this.name ]; - - if ( extension.iridescenceFactor !== undefined ) { - - materialParams.iridescence = extension.iridescenceFactor; - - } - - if ( extension.iridescenceTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) ); - - } - - if ( extension.iridescenceIor !== undefined ) { - - materialParams.iridescenceIOR = extension.iridescenceIor; - - } - - if ( materialParams.iridescenceThicknessRange === undefined ) { - - materialParams.iridescenceThicknessRange = [ 100, 400 ]; - - } - - if ( extension.iridescenceThicknessMinimum !== undefined ) { - - materialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum; - - } - - if ( extension.iridescenceThicknessMaximum !== undefined ) { - - materialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum; - - } - - if ( extension.iridescenceThicknessTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) ); - - } - - return Promise.all( pending ); - - } - -} - -/** - * Sheen Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen - */ -class GLTFMaterialsSheenExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_SHEEN; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const pending = []; - - materialParams.sheenColor = new Color( 0, 0, 0 ); - materialParams.sheenRoughness = 0; - materialParams.sheen = 1; - - const extension = materialDef.extensions[ this.name ]; - - if ( extension.sheenColorFactor !== undefined ) { - - const colorFactor = extension.sheenColorFactor; - materialParams.sheenColor.setRGB( colorFactor[ 0 ], colorFactor[ 1 ], colorFactor[ 2 ], LinearSRGBColorSpace ); - - } - - if ( extension.sheenRoughnessFactor !== undefined ) { - - materialParams.sheenRoughness = extension.sheenRoughnessFactor; - - } - - if ( extension.sheenColorTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, SRGBColorSpace ) ); - - } - - if ( extension.sheenRoughnessTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) ); - - } - - return Promise.all( pending ); - - } - -} - -/** - * Transmission Materials Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission - * Draft: https://github.com/KhronosGroup/glTF/pull/1698 - */ -class GLTFMaterialsTransmissionExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const pending = []; - - const extension = materialDef.extensions[ this.name ]; - - if ( extension.transmissionFactor !== undefined ) { - - materialParams.transmission = extension.transmissionFactor; - - } - - if ( extension.transmissionTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) ); - - } - - return Promise.all( pending ); - - } - -} - -/** - * Materials Volume Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume - */ -class GLTFMaterialsVolumeExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_VOLUME; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const pending = []; - - const extension = materialDef.extensions[ this.name ]; - - materialParams.thickness = extension.thicknessFactor !== undefined ? extension.thicknessFactor : 0; - - if ( extension.thicknessTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'thicknessMap', extension.thicknessTexture ) ); - - } - - materialParams.attenuationDistance = extension.attenuationDistance || Infinity; - - const colorArray = extension.attenuationColor || [ 1, 1, 1 ]; - materialParams.attenuationColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace ); - - return Promise.all( pending ); - - } - -} - -/** - * Materials ior Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior - */ -class GLTFMaterialsIorExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_IOR; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const extension = materialDef.extensions[ this.name ]; - - materialParams.ior = extension.ior !== undefined ? extension.ior : 1.5; - - return Promise.resolve(); - - } - -} - -/** - * Materials specular Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular - */ -class GLTFMaterialsSpecularExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const pending = []; - - const extension = materialDef.extensions[ this.name ]; - - materialParams.specularIntensity = extension.specularFactor !== undefined ? extension.specularFactor : 1.0; - - if ( extension.specularTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'specularIntensityMap', extension.specularTexture ) ); - - } - - const colorArray = extension.specularColorFactor || [ 1, 1, 1 ]; - materialParams.specularColor = new Color().setRGB( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ], LinearSRGBColorSpace ); - - if ( extension.specularColorTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, SRGBColorSpace ) ); - - } - - return Promise.all( pending ); - - } - -} - - -/** - * Materials bump Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump - */ -class GLTFMaterialsBumpExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.EXT_MATERIALS_BUMP; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const pending = []; - - const extension = materialDef.extensions[ this.name ]; - - materialParams.bumpScale = extension.bumpFactor !== undefined ? extension.bumpFactor : 1.0; - - if ( extension.bumpTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'bumpMap', extension.bumpTexture ) ); - - } - - return Promise.all( pending ); - - } - -} - -/** - * Materials anisotropy Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy - */ -class GLTFMaterialsAnisotropyExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY; - - } - - getMaterialType( materialIndex ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null; - - return MeshPhysicalMaterial; - - } - - extendMaterialParams( materialIndex, materialParams ) { - - const parser = this.parser; - const materialDef = parser.json.materials[ materialIndex ]; - - if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) { - - return Promise.resolve(); - - } - - const pending = []; - - const extension = materialDef.extensions[ this.name ]; - - if ( extension.anisotropyStrength !== undefined ) { - - materialParams.anisotropy = extension.anisotropyStrength; - - } - - if ( extension.anisotropyRotation !== undefined ) { - - materialParams.anisotropyRotation = extension.anisotropyRotation; - - } - - if ( extension.anisotropyTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'anisotropyMap', extension.anisotropyTexture ) ); - - } - - return Promise.all( pending ); - - } - -} - -/** - * BasisU Texture Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu - */ -class GLTFTextureBasisUExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.KHR_TEXTURE_BASISU; - - } - - loadTexture( textureIndex ) { - - const parser = this.parser; - const json = parser.json; - - const textureDef = json.textures[ textureIndex ]; - - if ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) { - - return null; - - } - - const extension = textureDef.extensions[ this.name ]; - const loader = parser.options.ktx2Loader; - - if ( ! loader ) { - - if ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) { - - throw new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' ); - - } else { - - // Assumes that the extension is optional and that a fallback texture is present - return null; - - } - - } - - return parser.loadTextureImage( textureIndex, extension.source, loader ); - - } - -} - -/** - * WebP Texture Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp - */ -class GLTFTextureWebPExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.EXT_TEXTURE_WEBP; - this.isSupported = null; - - } - - loadTexture( textureIndex ) { - - const name = this.name; - const parser = this.parser; - const json = parser.json; - - const textureDef = json.textures[ textureIndex ]; - - if ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) { - - return null; - - } - - const extension = textureDef.extensions[ name ]; - const source = json.images[ extension.source ]; - - let loader = parser.textureLoader; - if ( source.uri ) { - - const handler = parser.options.manager.getHandler( source.uri ); - if ( handler !== null ) loader = handler; - - } - - return this.detectSupport().then( function ( isSupported ) { - - if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader ); - - if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) { - - throw new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' ); - - } - - // Fall back to PNG or JPEG. - return parser.loadTexture( textureIndex ); - - } ); - - } - - detectSupport() { - - if ( ! this.isSupported ) { - - this.isSupported = new Promise( function ( resolve ) { - - const image = new Image(); - - // Lossy test image. Support for lossy images doesn't guarantee support for all - // WebP images, unfortunately. - image.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'; - - image.onload = image.onerror = function () { - - resolve( image.height === 1 ); - - }; - - } ); - - } - - return this.isSupported; - - } - -} - -/** - * AVIF Texture Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif - */ -class GLTFTextureAVIFExtension { - - constructor( parser ) { - - this.parser = parser; - this.name = EXTENSIONS.EXT_TEXTURE_AVIF; - this.isSupported = null; - - } - - loadTexture( textureIndex ) { - - const name = this.name; - const parser = this.parser; - const json = parser.json; - - const textureDef = json.textures[ textureIndex ]; - - if ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) { - - return null; - - } - - const extension = textureDef.extensions[ name ]; - const source = json.images[ extension.source ]; - - let loader = parser.textureLoader; - if ( source.uri ) { - - const handler = parser.options.manager.getHandler( source.uri ); - if ( handler !== null ) loader = handler; - - } - - return this.detectSupport().then( function ( isSupported ) { - - if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader ); - - if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) { - - throw new Error( 'THREE.GLTFLoader: AVIF required by asset but unsupported.' ); - - } - - // Fall back to PNG or JPEG. - return parser.loadTexture( textureIndex ); - - } ); - - } - - detectSupport() { - - if ( ! this.isSupported ) { - - this.isSupported = new Promise( function ( resolve ) { - - const image = new Image(); - - // Lossy test image. - image.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI='; - image.onload = image.onerror = function () { - - resolve( image.height === 1 ); - - }; - - } ); - - } - - return this.isSupported; - - } - -} - -/** - * meshopt BufferView Compression Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression - */ -class GLTFMeshoptCompression { - - constructor( parser ) { - - this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION; - this.parser = parser; - - } - - loadBufferView( index ) { - - const json = this.parser.json; - const bufferView = json.bufferViews[ index ]; - - if ( bufferView.extensions && bufferView.extensions[ this.name ] ) { - - const extensionDef = bufferView.extensions[ this.name ]; - - const buffer = this.parser.getDependency( 'buffer', extensionDef.buffer ); - const decoder = this.parser.options.meshoptDecoder; - - if ( ! decoder || ! decoder.supported ) { - - if ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) { - - throw new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' ); - - } else { - - // Assumes that the extension is optional and that fallback buffer data is present - return null; - - } - - } - - return buffer.then( function ( res ) { - - const byteOffset = extensionDef.byteOffset || 0; - const byteLength = extensionDef.byteLength || 0; - - const count = extensionDef.count; - const stride = extensionDef.byteStride; - - const source = new Uint8Array( res, byteOffset, byteLength ); - - if ( decoder.decodeGltfBufferAsync ) { - - return decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) { - - return res.buffer; - - } ); - - } else { - - // Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync - return decoder.ready.then( function () { - - const result = new ArrayBuffer( count * stride ); - decoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter ); - return result; - - } ); - - } - - } ); - - } else { - - return null; - - } - - } - -} - -/** - * GPU Instancing Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing - * - */ -class GLTFMeshGpuInstancing { - - constructor( parser ) { - - this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING; - this.parser = parser; - - } - - createNodeMesh( nodeIndex ) { - - const json = this.parser.json; - const nodeDef = json.nodes[ nodeIndex ]; - - if ( ! nodeDef.extensions || ! nodeDef.extensions[ this.name ] || - nodeDef.mesh === undefined ) { - - return null; - - } - - const meshDef = json.meshes[ nodeDef.mesh ]; - - // No Points or Lines + Instancing support yet - - for ( const primitive of meshDef.primitives ) { - - if ( primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && - primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && - primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && - primitive.mode !== undefined ) { - - return null; - - } - - } - - const extensionDef = nodeDef.extensions[ this.name ]; - const attributesDef = extensionDef.attributes; - - // @TODO: Can we support InstancedMesh + SkinnedMesh? - - const pending = []; - const attributes = {}; - - for ( const key in attributesDef ) { - - pending.push( this.parser.getDependency( 'accessor', attributesDef[ key ] ).then( accessor => { - - attributes[ key ] = accessor; - return attributes[ key ]; - - } ) ); - - } - - if ( pending.length < 1 ) { - - return null; - - } - - pending.push( this.parser.createNodeMesh( nodeIndex ) ); - - return Promise.all( pending ).then( results => { - - const nodeObject = results.pop(); - const meshes = nodeObject.isGroup ? nodeObject.children : [ nodeObject ]; - const count = results[ 0 ].count; // All attribute counts should be same - const instancedMeshes = []; - - for ( const mesh of meshes ) { - - // Temporal variables - const m = new Matrix4(); - const p = new Vector3(); - const q = new Quaternion(); - const s = new Vector3( 1, 1, 1 ); - - const instancedMesh = new InstancedMesh( mesh.geometry, mesh.material, count ); - - for ( let i = 0; i < count; i ++ ) { - - if ( attributes.TRANSLATION ) { - - p.fromBufferAttribute( attributes.TRANSLATION, i ); - - } - - if ( attributes.ROTATION ) { - - q.fromBufferAttribute( attributes.ROTATION, i ); - - } - - if ( attributes.SCALE ) { - - s.fromBufferAttribute( attributes.SCALE, i ); - - } - - instancedMesh.setMatrixAt( i, m.compose( p, q, s ) ); - - } - - // Add instance attributes to the geometry, excluding TRS. - for ( const attributeName in attributes ) { - - if ( attributeName === '_COLOR_0' ) { - - const attr = attributes[ attributeName ]; - instancedMesh.instanceColor = new InstancedBufferAttribute( attr.array, attr.itemSize, attr.normalized ); - - } else if ( attributeName !== 'TRANSLATION' && - attributeName !== 'ROTATION' && - attributeName !== 'SCALE' ) { - - mesh.geometry.setAttribute( attributeName, attributes[ attributeName ] ); - - } - - } - - // Just in case - Object3D.prototype.copy.call( instancedMesh, mesh ); - - this.parser.assignFinalMaterial( instancedMesh ); - - instancedMeshes.push( instancedMesh ); - - } - - if ( nodeObject.isGroup ) { - - nodeObject.clear(); - - nodeObject.add( ... instancedMeshes ); - - return nodeObject; - - } - - return instancedMeshes[ 0 ]; - - } ); - - } - -} - -/* BINARY EXTENSION */ -const BINARY_EXTENSION_HEADER_MAGIC = 'glTF'; -const BINARY_EXTENSION_HEADER_LENGTH = 12; -const BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 }; - -class GLTFBinaryExtension { - - constructor( data ) { - - this.name = EXTENSIONS.KHR_BINARY_GLTF; - this.content = null; - this.body = null; - - const headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH ); - const textDecoder = new TextDecoder(); - - this.header = { - magic: textDecoder.decode( new Uint8Array( data.slice( 0, 4 ) ) ), - version: headerView.getUint32( 4, true ), - length: headerView.getUint32( 8, true ) - }; - - if ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) { - - throw new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' ); - - } else if ( this.header.version < 2.0 ) { - - throw new Error( 'THREE.GLTFLoader: Legacy binary file detected.' ); - - } - - const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH; - const chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH ); - let chunkIndex = 0; - - while ( chunkIndex < chunkContentsLength ) { - - const chunkLength = chunkView.getUint32( chunkIndex, true ); - chunkIndex += 4; - - const chunkType = chunkView.getUint32( chunkIndex, true ); - chunkIndex += 4; - - if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) { - - const contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength ); - this.content = textDecoder.decode( contentArray ); - - } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) { - - const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex; - this.body = data.slice( byteOffset, byteOffset + chunkLength ); - - } - - // Clients must ignore chunks with unknown types. - - chunkIndex += chunkLength; - - } - - if ( this.content === null ) { - - throw new Error( 'THREE.GLTFLoader: JSON content not found.' ); - - } - - } - -} - -/** - * DRACO Mesh Compression Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression - */ -class GLTFDracoMeshCompressionExtension { - - constructor( json, dracoLoader ) { - - if ( ! dracoLoader ) { - - throw new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' ); - - } - - this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION; - this.json = json; - this.dracoLoader = dracoLoader; - this.dracoLoader.preload(); - - } - - decodePrimitive( primitive, parser ) { - - const json = this.json; - const dracoLoader = this.dracoLoader; - const bufferViewIndex = primitive.extensions[ this.name ].bufferView; - const gltfAttributeMap = primitive.extensions[ this.name ].attributes; - const threeAttributeMap = {}; - const attributeNormalizedMap = {}; - const attributeTypeMap = {}; - - for ( const attributeName in gltfAttributeMap ) { - - const threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); - - threeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ]; - - } - - for ( const attributeName in primitive.attributes ) { - - const threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase(); - - if ( gltfAttributeMap[ attributeName ] !== undefined ) { - - const accessorDef = json.accessors[ primitive.attributes[ attributeName ] ]; - const componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; - - attributeTypeMap[ threeAttributeName ] = componentType.name; - attributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true; - - } - - } - - return parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) { - - return new Promise( function ( resolve, reject ) { - - dracoLoader.decodeDracoFile( bufferView, function ( geometry ) { - - for ( const attributeName in geometry.attributes ) { - - const attribute = geometry.attributes[ attributeName ]; - const normalized = attributeNormalizedMap[ attributeName ]; - - if ( normalized !== undefined ) attribute.normalized = normalized; - - } - - resolve( geometry ); - - }, threeAttributeMap, attributeTypeMap, LinearSRGBColorSpace, reject ); - - } ); - - } ); - - } - -} - -/** - * Texture Transform Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform - */ -class GLTFTextureTransformExtension { - - constructor() { - - this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM; - - } - - extendTexture( texture, transform ) { - - if ( ( transform.texCoord === undefined || transform.texCoord === texture.channel ) - && transform.offset === undefined - && transform.rotation === undefined - && transform.scale === undefined ) { - - // See https://github.com/mrdoob/three.js/issues/21819. - return texture; - - } - - texture = texture.clone(); - - if ( transform.texCoord !== undefined ) { - - texture.channel = transform.texCoord; - - } - - if ( transform.offset !== undefined ) { - - texture.offset.fromArray( transform.offset ); - - } - - if ( transform.rotation !== undefined ) { - - texture.rotation = transform.rotation; - - } - - if ( transform.scale !== undefined ) { - - texture.repeat.fromArray( transform.scale ); - - } - - texture.needsUpdate = true; - - return texture; - - } - -} - -/** - * Mesh Quantization Extension - * - * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization - */ -class GLTFMeshQuantizationExtension { - - constructor() { - - this.name = EXTENSIONS.KHR_MESH_QUANTIZATION; - - } - -} - -/*********************************/ -/********** INTERPOLATION ********/ -/*********************************/ - -// Spline Interpolation -// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation -class GLTFCubicSplineInterpolant extends Interpolant { - - constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - super( parameterPositions, sampleValues, sampleSize, resultBuffer ); - - } - - copySampleValue_( index ) { - - // Copies a sample value to the result buffer. See description of glTF - // CUBICSPLINE values layout in interpolate_() function below. - - const result = this.resultBuffer, - values = this.sampleValues, - valueSize = this.valueSize, - offset = index * valueSize * 3 + valueSize; - - for ( let i = 0; i !== valueSize; i ++ ) { - - result[ i ] = values[ offset + i ]; - - } - - return result; - - } - - interpolate_( i1, t0, t, t1 ) { - - const result = this.resultBuffer; - const values = this.sampleValues; - const stride = this.valueSize; - - const stride2 = stride * 2; - const stride3 = stride * 3; - - const td = t1 - t0; - - const p = ( t - t0 ) / td; - const pp = p * p; - const ppp = pp * p; - - const offset1 = i1 * stride3; - const offset0 = offset1 - stride3; - - const s2 = - 2 * ppp + 3 * pp; - const s3 = ppp - pp; - const s0 = 1 - s2; - const s1 = s3 - pp + p; - - // Layout of keyframe output values for CUBICSPLINE animations: - // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ] - for ( let i = 0; i !== stride; i ++ ) { - - const p0 = values[ offset0 + i + stride ]; // splineVertex_k - const m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k) - const p1 = values[ offset1 + i + stride ]; // splineVertex_k+1 - const m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k) - - result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1; - - } - - return result; - - } - -} - -const _q = new Quaternion(); - -class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant { - - interpolate_( i1, t0, t, t1 ) { - - const result = super.interpolate_( i1, t0, t, t1 ); - - _q.fromArray( result ).normalize().toArray( result ); - - return result; - - } - -} - - -/*********************************/ -/********** INTERNALS ************/ -/*********************************/ - -/* CONSTANTS */ - -const WEBGL_CONSTANTS = { - FLOAT: 5126, - //FLOAT_MAT2: 35674, - FLOAT_MAT3: 35675, - FLOAT_MAT4: 35676, - FLOAT_VEC2: 35664, - FLOAT_VEC3: 35665, - FLOAT_VEC4: 35666, - LINEAR: 9729, - REPEAT: 10497, - SAMPLER_2D: 35678, - POINTS: 0, - LINES: 1, - LINE_LOOP: 2, - LINE_STRIP: 3, - TRIANGLES: 4, - TRIANGLE_STRIP: 5, - TRIANGLE_FAN: 6, - UNSIGNED_BYTE: 5121, - UNSIGNED_SHORT: 5123 -}; - -const WEBGL_COMPONENT_TYPES = { - 5120: Int8Array, - 5121: Uint8Array, - 5122: Int16Array, - 5123: Uint16Array, - 5125: Uint32Array, - 5126: Float32Array -}; - -const WEBGL_FILTERS = { - 9728: NearestFilter, - 9729: LinearFilter, - 9984: NearestMipmapNearestFilter, - 9985: LinearMipmapNearestFilter, - 9986: NearestMipmapLinearFilter, - 9987: LinearMipmapLinearFilter -}; - -const WEBGL_WRAPPINGS = { - 33071: ClampToEdgeWrapping, - 33648: MirroredRepeatWrapping, - 10497: RepeatWrapping -}; - -const WEBGL_TYPE_SIZES = { - 'SCALAR': 1, - 'VEC2': 2, - 'VEC3': 3, - 'VEC4': 4, - 'MAT2': 4, - 'MAT3': 9, - 'MAT4': 16 -}; - -const ATTRIBUTES = { - POSITION: 'position', - NORMAL: 'normal', - TANGENT: 'tangent', - TEXCOORD_0: 'uv', - TEXCOORD_1: 'uv1', - TEXCOORD_2: 'uv2', - TEXCOORD_3: 'uv3', - COLOR_0: 'color', - WEIGHTS_0: 'skinWeight', - JOINTS_0: 'skinIndex', -}; - -const PATH_PROPERTIES = { - scale: 'scale', - translation: 'position', - rotation: 'quaternion', - weights: 'morphTargetInfluences' -}; - -const INTERPOLATION = { - CUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each - // keyframe track will be initialized with a default interpolation type, then modified. - LINEAR: InterpolateLinear, - STEP: InterpolateDiscrete -}; - -const ALPHA_MODES = { - OPAQUE: 'OPAQUE', - MASK: 'MASK', - BLEND: 'BLEND' -}; - -/** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material - */ -function createDefaultMaterial( cache ) { - - if ( cache[ 'DefaultMaterial' ] === undefined ) { - - cache[ 'DefaultMaterial' ] = new MeshStandardMaterial( { - color: 0xFFFFFF, - emissive: 0x000000, - metalness: 1, - roughness: 1, - transparent: false, - depthTest: true, - side: FrontSide - } ); - - } - - return cache[ 'DefaultMaterial' ]; - -} - -function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) { - - // Add unknown glTF extensions to an object's userData. - - for ( const name in objectDef.extensions ) { - - if ( knownExtensions[ name ] === undefined ) { - - object.userData.gltfExtensions = object.userData.gltfExtensions || {}; - object.userData.gltfExtensions[ name ] = objectDef.extensions[ name ]; - - } - - } - -} - -/** - * @param {Object3D|Material|BufferGeometry} object - * @param {GLTF.definition} gltfDef - */ -function assignExtrasToUserData( object, gltfDef ) { - - if ( gltfDef.extras !== undefined ) { - - if ( typeof gltfDef.extras === 'object' ) { - - Object.assign( object.userData, gltfDef.extras ); - - } else { - - console.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras ); - - } - - } - -} - -/** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets - * - * @param {BufferGeometry} geometry - * @param {Array} targets - * @param {GLTFParser} parser - * @return {Promise} - */ -function addMorphTargets( geometry, targets, parser ) { - - let hasMorphPosition = false; - let hasMorphNormal = false; - let hasMorphColor = false; - - for ( let i = 0, il = targets.length; i < il; i ++ ) { - - const target = targets[ i ]; - - if ( target.POSITION !== undefined ) hasMorphPosition = true; - if ( target.NORMAL !== undefined ) hasMorphNormal = true; - if ( target.COLOR_0 !== undefined ) hasMorphColor = true; - - if ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break; - - } - - if ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry ); - - const pendingPositionAccessors = []; - const pendingNormalAccessors = []; - const pendingColorAccessors = []; - - for ( let i = 0, il = targets.length; i < il; i ++ ) { - - const target = targets[ i ]; - - if ( hasMorphPosition ) { - - const pendingAccessor = target.POSITION !== undefined - ? parser.getDependency( 'accessor', target.POSITION ) - : geometry.attributes.position; - - pendingPositionAccessors.push( pendingAccessor ); - - } - - if ( hasMorphNormal ) { - - const pendingAccessor = target.NORMAL !== undefined - ? parser.getDependency( 'accessor', target.NORMAL ) - : geometry.attributes.normal; - - pendingNormalAccessors.push( pendingAccessor ); - - } - - if ( hasMorphColor ) { - - const pendingAccessor = target.COLOR_0 !== undefined - ? parser.getDependency( 'accessor', target.COLOR_0 ) - : geometry.attributes.color; - - pendingColorAccessors.push( pendingAccessor ); - - } - - } - - return Promise.all( [ - Promise.all( pendingPositionAccessors ), - Promise.all( pendingNormalAccessors ), - Promise.all( pendingColorAccessors ) - ] ).then( function ( accessors ) { - - const morphPositions = accessors[ 0 ]; - const morphNormals = accessors[ 1 ]; - const morphColors = accessors[ 2 ]; - - if ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions; - if ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals; - if ( hasMorphColor ) geometry.morphAttributes.color = morphColors; - geometry.morphTargetsRelative = true; - - return geometry; - - } ); - -} - -/** - * @param {Mesh} mesh - * @param {GLTF.Mesh} meshDef - */ -function updateMorphTargets( mesh, meshDef ) { - - mesh.updateMorphTargets(); - - if ( meshDef.weights !== undefined ) { - - for ( let i = 0, il = meshDef.weights.length; i < il; i ++ ) { - - mesh.morphTargetInfluences[ i ] = meshDef.weights[ i ]; - - } - - } - - // .extras has user-defined data, so check that .extras.targetNames is an array. - if ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) { - - const targetNames = meshDef.extras.targetNames; - - if ( mesh.morphTargetInfluences.length === targetNames.length ) { - - mesh.morphTargetDictionary = {}; - - for ( let i = 0, il = targetNames.length; i < il; i ++ ) { - - mesh.morphTargetDictionary[ targetNames[ i ] ] = i; - - } - - } else { - - console.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' ); - - } - - } - -} - -function createPrimitiveKey( primitiveDef ) { - - let geometryKey; - - const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]; - - if ( dracoExtension ) { - - geometryKey = 'draco:' + dracoExtension.bufferView - + ':' + dracoExtension.indices - + ':' + createAttributesKey( dracoExtension.attributes ); - - } else { - - geometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode; - - } - - if ( primitiveDef.targets !== undefined ) { - - for ( let i = 0, il = primitiveDef.targets.length; i < il; i ++ ) { - - geometryKey += ':' + createAttributesKey( primitiveDef.targets[ i ] ); - - } - - } - - return geometryKey; - -} - -function createAttributesKey( attributes ) { - - let attributesKey = ''; - - const keys = Object.keys( attributes ).sort(); - - for ( let i = 0, il = keys.length; i < il; i ++ ) { - - attributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';'; - - } - - return attributesKey; - -} - -function getNormalizedComponentScale( constructor ) { - - // Reference: - // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data - - switch ( constructor ) { - - case Int8Array: - return 1 / 127; - - case Uint8Array: - return 1 / 255; - - case Int16Array: - return 1 / 32767; - - case Uint16Array: - return 1 / 65535; - - default: - throw new Error( 'THREE.GLTFLoader: Unsupported normalized accessor component type.' ); - - } - -} - -function getImageURIMimeType( uri ) { - - if ( uri.search( /\.jpe?g($|\?)/i ) > 0 || uri.search( /^data\:image\/jpeg/ ) === 0 ) return 'image/jpeg'; - if ( uri.search( /\.webp($|\?)/i ) > 0 || uri.search( /^data\:image\/webp/ ) === 0 ) return 'image/webp'; - - return 'image/png'; - -} - -const _identityMatrix = new Matrix4(); - -/* GLTF PARSER */ - -class GLTFParser { - - constructor( json = {}, options = {} ) { - - this.json = json; - this.extensions = {}; - this.plugins = {}; - this.options = options; - - // loader object cache - this.cache = new GLTFRegistry(); - - // associations between Three.js objects and glTF elements - this.associations = new Map(); - - // BufferGeometry caching - this.primitiveCache = {}; - - // Node cache - this.nodeCache = {}; - - // Object3D instance caches - this.meshCache = { refs: {}, uses: {} }; - this.cameraCache = { refs: {}, uses: {} }; - this.lightCache = { refs: {}, uses: {} }; - - this.sourceCache = {}; - this.textureCache = {}; - - // Track node names, to ensure no duplicates - this.nodeNamesUsed = {}; - - // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the - // expensive work of uploading a texture to the GPU off the main thread. - - let isSafari = false; - let isFirefox = false; - let firefoxVersion = - 1; - - if ( typeof navigator !== 'undefined' ) { - - isSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent ) === true; - isFirefox = navigator.userAgent.indexOf( 'Firefox' ) > - 1; - firefoxVersion = isFirefox ? navigator.userAgent.match( /Firefox\/([0-9]+)\./ )[ 1 ] : - 1; - - } - - if ( typeof createImageBitmap === 'undefined' || isSafari || ( isFirefox && firefoxVersion < 98 ) ) { - - this.textureLoader = new TextureLoader( this.options.manager ); - - } else { - - this.textureLoader = new ImageBitmapLoader( this.options.manager ); - - } - - this.textureLoader.setCrossOrigin( this.options.crossOrigin ); - this.textureLoader.setRequestHeader( this.options.requestHeader ); - - this.fileLoader = new FileLoader( this.options.manager ); - this.fileLoader.setResponseType( 'arraybuffer' ); - - if ( this.options.crossOrigin === 'use-credentials' ) { - - this.fileLoader.setWithCredentials( true ); - - } - - } - - setExtensions( extensions ) { - - this.extensions = extensions; - - } - - setPlugins( plugins ) { - - this.plugins = plugins; - - } - - parse( onLoad, onError ) { - - const parser = this; - const json = this.json; - const extensions = this.extensions; - - // Clear the loader cache - this.cache.removeAll(); - this.nodeCache = {}; - - // Mark the special nodes/meshes in json for efficient parse - this._invokeAll( function ( ext ) { - - return ext._markDefs && ext._markDefs(); - - } ); - - Promise.all( this._invokeAll( function ( ext ) { - - return ext.beforeRoot && ext.beforeRoot(); - - } ) ).then( function () { - - return Promise.all( [ - - parser.getDependencies( 'scene' ), - parser.getDependencies( 'animation' ), - parser.getDependencies( 'camera' ), - - ] ); - - } ).then( function ( dependencies ) { - - const result = { - scene: dependencies[ 0 ][ json.scene || 0 ], - scenes: dependencies[ 0 ], - animations: dependencies[ 1 ], - cameras: dependencies[ 2 ], - asset: json.asset, - parser: parser, - userData: {} - }; - - addUnknownExtensionsToUserData( extensions, result, json ); - - assignExtrasToUserData( result, json ); - - return Promise.all( parser._invokeAll( function ( ext ) { - - return ext.afterRoot && ext.afterRoot( result ); - - } ) ).then( function () { - - onLoad( result ); - - } ); - - } ).catch( onError ); - - } - - /** - * Marks the special nodes/meshes in json for efficient parse. - */ - _markDefs() { - - const nodeDefs = this.json.nodes || []; - const skinDefs = this.json.skins || []; - const meshDefs = this.json.meshes || []; - - // Nothing in the node definition indicates whether it is a Bone or an - // Object3D. Use the skins' joint references to mark bones. - for ( let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) { - - const joints = skinDefs[ skinIndex ].joints; - - for ( let i = 0, il = joints.length; i < il; i ++ ) { - - nodeDefs[ joints[ i ] ].isBone = true; - - } - - } - - // Iterate over all nodes, marking references to shared resources, - // as well as skeleton joints. - for ( let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) { - - const nodeDef = nodeDefs[ nodeIndex ]; - - if ( nodeDef.mesh !== undefined ) { - - this._addNodeRef( this.meshCache, nodeDef.mesh ); - - // Nothing in the mesh definition indicates whether it is - // a SkinnedMesh or Mesh. Use the node's mesh reference - // to mark SkinnedMesh if node has skin. - if ( nodeDef.skin !== undefined ) { - - meshDefs[ nodeDef.mesh ].isSkinnedMesh = true; - - } - - } - - if ( nodeDef.camera !== undefined ) { - - this._addNodeRef( this.cameraCache, nodeDef.camera ); - - } - - } - - } - - /** - * Counts references to shared node / Object3D resources. These resources - * can be reused, or "instantiated", at multiple nodes in the scene - * hierarchy. Mesh, Camera, and Light instances are instantiated and must - * be marked. Non-scenegraph resources (like Materials, Geometries, and - * Textures) can be reused directly and are not marked here. - * - * Example: CesiumMilkTruck sample model reuses "Wheel" meshes. - */ - _addNodeRef( cache, index ) { - - if ( index === undefined ) return; - - if ( cache.refs[ index ] === undefined ) { - - cache.refs[ index ] = cache.uses[ index ] = 0; - - } - - cache.refs[ index ] ++; - - } - - /** Returns a reference to a shared resource, cloning it if necessary. */ - _getNodeRef( cache, index, object ) { - - if ( cache.refs[ index ] <= 1 ) return object; - - const ref = object.clone(); - - // Propagates mappings to the cloned object, prevents mappings on the - // original object from being lost. - const updateMappings = ( original, clone ) => { - - const mappings = this.associations.get( original ); - if ( mappings != null ) { - - this.associations.set( clone, mappings ); - - } - - for ( const [ i, child ] of original.children.entries() ) { - - updateMappings( child, clone.children[ i ] ); - - } - - }; - - updateMappings( object, ref ); - - ref.name += '_instance_' + ( cache.uses[ index ] ++ ); - - return ref; - - } - - _invokeOne( func ) { - - const extensions = Object.values( this.plugins ); - extensions.push( this ); - - for ( let i = 0; i < extensions.length; i ++ ) { - - const result = func( extensions[ i ] ); - - if ( result ) return result; - - } - - return null; - - } - - _invokeAll( func ) { - - const extensions = Object.values( this.plugins ); - extensions.unshift( this ); - - const pending = []; - - for ( let i = 0; i < extensions.length; i ++ ) { - - const result = func( extensions[ i ] ); - - if ( result ) pending.push( result ); - - } - - return pending; - - } - - /** - * Requests the specified dependency asynchronously, with caching. - * @param {string} type - * @param {number} index - * @return {Promise} - */ - getDependency( type, index ) { - - const cacheKey = type + ':' + index; - let dependency = this.cache.get( cacheKey ); - - if ( ! dependency ) { - - switch ( type ) { - - case 'scene': - dependency = this.loadScene( index ); - break; - - case 'node': - dependency = this._invokeOne( function ( ext ) { - - return ext.loadNode && ext.loadNode( index ); - - } ); - break; - - case 'mesh': - dependency = this._invokeOne( function ( ext ) { - - return ext.loadMesh && ext.loadMesh( index ); - - } ); - break; - - case 'accessor': - dependency = this.loadAccessor( index ); - break; - - case 'bufferView': - dependency = this._invokeOne( function ( ext ) { - - return ext.loadBufferView && ext.loadBufferView( index ); - - } ); - break; - - case 'buffer': - dependency = this.loadBuffer( index ); - break; - - case 'material': - dependency = this._invokeOne( function ( ext ) { - - return ext.loadMaterial && ext.loadMaterial( index ); - - } ); - break; - - case 'texture': - dependency = this._invokeOne( function ( ext ) { - - return ext.loadTexture && ext.loadTexture( index ); - - } ); - break; - - case 'skin': - dependency = this.loadSkin( index ); - break; - - case 'animation': - dependency = this._invokeOne( function ( ext ) { - - return ext.loadAnimation && ext.loadAnimation( index ); - - } ); - break; - - case 'camera': - dependency = this.loadCamera( index ); - break; - - default: - dependency = this._invokeOne( function ( ext ) { - - return ext != this && ext.getDependency && ext.getDependency( type, index ); - - } ); - - if ( ! dependency ) { - - throw new Error( 'Unknown type: ' + type ); - - } - - break; - - } - - this.cache.add( cacheKey, dependency ); - - } - - return dependency; - - } - - /** - * Requests all dependencies of the specified type asynchronously, with caching. - * @param {string} type - * @return {Promise>} - */ - getDependencies( type ) { - - let dependencies = this.cache.get( type ); - - if ( ! dependencies ) { - - const parser = this; - const defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || []; - - dependencies = Promise.all( defs.map( function ( def, index ) { - - return parser.getDependency( type, index ); - - } ) ); - - this.cache.add( type, dependencies ); - - } - - return dependencies; - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views - * @param {number} bufferIndex - * @return {Promise} - */ - loadBuffer( bufferIndex ) { - - const bufferDef = this.json.buffers[ bufferIndex ]; - const loader = this.fileLoader; - - if ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) { - - throw new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' ); - - } - - // If present, GLB container is required to be the first buffer. - if ( bufferDef.uri === undefined && bufferIndex === 0 ) { - - return Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body ); - - } - - const options = this.options; - - return new Promise( function ( resolve, reject ) { - - loader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () { - - reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) ); - - } ); - - } ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views - * @param {number} bufferViewIndex - * @return {Promise} - */ - loadBufferView( bufferViewIndex ) { - - const bufferViewDef = this.json.bufferViews[ bufferViewIndex ]; - - return this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) { - - const byteLength = bufferViewDef.byteLength || 0; - const byteOffset = bufferViewDef.byteOffset || 0; - return buffer.slice( byteOffset, byteOffset + byteLength ); - - } ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors - * @param {number} accessorIndex - * @return {Promise} - */ - loadAccessor( accessorIndex ) { - - const parser = this; - const json = this.json; - - const accessorDef = this.json.accessors[ accessorIndex ]; - - if ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) { - - const itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; - const TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; - const normalized = accessorDef.normalized === true; - - const array = new TypedArray( accessorDef.count * itemSize ); - return Promise.resolve( new BufferAttribute( array, itemSize, normalized ) ); - - } - - const pendingBufferViews = []; - - if ( accessorDef.bufferView !== undefined ) { - - pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) ); - - } else { - - pendingBufferViews.push( null ); - - } - - if ( accessorDef.sparse !== undefined ) { - - pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) ); - pendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) ); - - } - - return Promise.all( pendingBufferViews ).then( function ( bufferViews ) { - - const bufferView = bufferViews[ 0 ]; - - const itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ]; - const TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ]; - - // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12. - const elementBytes = TypedArray.BYTES_PER_ELEMENT; - const itemBytes = elementBytes * itemSize; - const byteOffset = accessorDef.byteOffset || 0; - const byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined; - const normalized = accessorDef.normalized === true; - let array, bufferAttribute; - - // The buffer is not interleaved if the stride is the item size in bytes. - if ( byteStride && byteStride !== itemBytes ) { - - // Each "slice" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer - // This makes sure that IBA.count reflects accessor.count properly - const ibSlice = Math.floor( byteOffset / byteStride ); - const ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count; - let ib = parser.cache.get( ibCacheKey ); - - if ( ! ib ) { - - array = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes ); - - // Integer parameters to IB/IBA are in array elements, not bytes. - ib = new InterleavedBuffer( array, byteStride / elementBytes ); - - parser.cache.add( ibCacheKey, ib ); - - } - - bufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized ); - - } else { - - if ( bufferView === null ) { - - array = new TypedArray( accessorDef.count * itemSize ); - - } else { - - array = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize ); - - } - - bufferAttribute = new BufferAttribute( array, itemSize, normalized ); - - } - - // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors - if ( accessorDef.sparse !== undefined ) { - - const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR; - const TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ]; - - const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0; - const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0; - - const sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices ); - const sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize ); - - if ( bufferView !== null ) { - - // Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes. - bufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized ); - - } - - for ( let i = 0, il = sparseIndices.length; i < il; i ++ ) { - - const index = sparseIndices[ i ]; - - bufferAttribute.setX( index, sparseValues[ i * itemSize ] ); - if ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] ); - if ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] ); - if ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] ); - if ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' ); - - } - - } - - return bufferAttribute; - - } ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures - * @param {number} textureIndex - * @return {Promise} - */ - loadTexture( textureIndex ) { - - const json = this.json; - const options = this.options; - const textureDef = json.textures[ textureIndex ]; - const sourceIndex = textureDef.source; - const sourceDef = json.images[ sourceIndex ]; - - let loader = this.textureLoader; - - if ( sourceDef.uri ) { - - const handler = options.manager.getHandler( sourceDef.uri ); - if ( handler !== null ) loader = handler; - - } - - return this.loadTextureImage( textureIndex, sourceIndex, loader ); - - } - - loadTextureImage( textureIndex, sourceIndex, loader ) { - - const parser = this; - const json = this.json; - - const textureDef = json.textures[ textureIndex ]; - const sourceDef = json.images[ sourceIndex ]; - - const cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler; - - if ( this.textureCache[ cacheKey ] ) { - - // See https://github.com/mrdoob/three.js/issues/21559. - return this.textureCache[ cacheKey ]; - - } - - const promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) { - - texture.flipY = false; - - texture.name = textureDef.name || sourceDef.name || ''; - - if ( texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith( 'data:image/' ) === false ) { - - texture.name = sourceDef.uri; - - } - - const samplers = json.samplers || {}; - const sampler = samplers[ textureDef.sampler ] || {}; - - texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter; - texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter; - texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping; - texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping; - - parser.associations.set( texture, { textures: textureIndex } ); - - return texture; - - } ).catch( function () { - - return null; - - } ); - - this.textureCache[ cacheKey ] = promise; - - return promise; - - } - - loadImageSource( sourceIndex, loader ) { - - const parser = this; - const json = this.json; - const options = this.options; - - if ( this.sourceCache[ sourceIndex ] !== undefined ) { - - return this.sourceCache[ sourceIndex ].then( ( texture ) => texture.clone() ); - - } - - const sourceDef = json.images[ sourceIndex ]; - - const URL = self.URL || self.webkitURL; - - let sourceURI = sourceDef.uri || ''; - let isObjectURL = false; - - if ( sourceDef.bufferView !== undefined ) { - - // Load binary image data from bufferView, if provided. - - sourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) { - - isObjectURL = true; - const blob = new Blob( [ bufferView ], { type: sourceDef.mimeType } ); - sourceURI = URL.createObjectURL( blob ); - return sourceURI; - - } ); - - } else if ( sourceDef.uri === undefined ) { - - throw new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' ); - - } - - const promise = Promise.resolve( sourceURI ).then( function ( sourceURI ) { - - return new Promise( function ( resolve, reject ) { - - let onLoad = resolve; - - if ( loader.isImageBitmapLoader === true ) { - - onLoad = function ( imageBitmap ) { - - const texture = new Texture( imageBitmap ); - texture.needsUpdate = true; - - resolve( texture ); - - }; - - } - - loader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject ); - - } ); - - } ).then( function ( texture ) { - - // Clean up resources and configure Texture. - - if ( isObjectURL === true ) { - - URL.revokeObjectURL( sourceURI ); - - } - - texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri ); - - return texture; - - } ).catch( function ( error ) { - - console.error( 'THREE.GLTFLoader: Couldn\'t load texture', sourceURI ); - throw error; - - } ); - - this.sourceCache[ sourceIndex ] = promise; - return promise; - - } - - /** - * Asynchronously assigns a texture to the given material parameters. - * @param {Object} materialParams - * @param {string} mapName - * @param {Object} mapDef - * @return {Promise} - */ - assignTexture( materialParams, mapName, mapDef, colorSpace ) { - - const parser = this; - - return this.getDependency( 'texture', mapDef.index ).then( function ( texture ) { - - if ( ! texture ) return null; - - if ( mapDef.texCoord !== undefined && mapDef.texCoord > 0 ) { - - texture = texture.clone(); - texture.channel = mapDef.texCoord; - - } - - if ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) { - - const transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined; - - if ( transform ) { - - const gltfReference = parser.associations.get( texture ); - texture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform ); - parser.associations.set( texture, gltfReference ); - - } - - } - - if ( colorSpace !== undefined ) { - - texture.colorSpace = colorSpace; - - } - - materialParams[ mapName ] = texture; - - return texture; - - } ); - - } - - /** - * Assigns final material to a Mesh, Line, or Points instance. The instance - * already has a material (generated from the glTF material options alone) - * but reuse of the same glTF material may require multiple threejs materials - * to accommodate different primitive types, defines, etc. New materials will - * be created if necessary, and reused from a cache. - * @param {Object3D} mesh Mesh, Line, or Points instance. - */ - assignFinalMaterial( mesh ) { - - const geometry = mesh.geometry; - let material = mesh.material; - - const useDerivativeTangents = geometry.attributes.tangent === undefined; - const useVertexColors = geometry.attributes.color !== undefined; - const useFlatShading = geometry.attributes.normal === undefined; - - if ( mesh.isPoints ) { - - const cacheKey = 'PointsMaterial:' + material.uuid; - - let pointsMaterial = this.cache.get( cacheKey ); - - if ( ! pointsMaterial ) { - - pointsMaterial = new PointsMaterial(); - Material.prototype.copy.call( pointsMaterial, material ); - pointsMaterial.color.copy( material.color ); - pointsMaterial.map = material.map; - pointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px - - this.cache.add( cacheKey, pointsMaterial ); - - } - - material = pointsMaterial; - - } else if ( mesh.isLine ) { - - const cacheKey = 'LineBasicMaterial:' + material.uuid; - - let lineMaterial = this.cache.get( cacheKey ); - - if ( ! lineMaterial ) { - - lineMaterial = new LineBasicMaterial(); - Material.prototype.copy.call( lineMaterial, material ); - lineMaterial.color.copy( material.color ); - lineMaterial.map = material.map; - - this.cache.add( cacheKey, lineMaterial ); - - } - - material = lineMaterial; - - } - - // Clone the material if it will be modified - if ( useDerivativeTangents || useVertexColors || useFlatShading ) { - - let cacheKey = 'ClonedMaterial:' + material.uuid + ':'; - - if ( useDerivativeTangents ) cacheKey += 'derivative-tangents:'; - if ( useVertexColors ) cacheKey += 'vertex-colors:'; - if ( useFlatShading ) cacheKey += 'flat-shading:'; - - let cachedMaterial = this.cache.get( cacheKey ); - - if ( ! cachedMaterial ) { - - cachedMaterial = material.clone(); - - if ( useVertexColors ) cachedMaterial.vertexColors = true; - if ( useFlatShading ) cachedMaterial.flatShading = true; - - if ( useDerivativeTangents ) { - - // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995 - if ( cachedMaterial.normalScale ) cachedMaterial.normalScale.y *= - 1; - if ( cachedMaterial.clearcoatNormalScale ) cachedMaterial.clearcoatNormalScale.y *= - 1; - - } - - this.cache.add( cacheKey, cachedMaterial ); - - this.associations.set( cachedMaterial, this.associations.get( material ) ); - - } - - material = cachedMaterial; - - } - - mesh.material = material; - - } - - getMaterialType( /* materialIndex */ ) { - - return MeshStandardMaterial; - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials - * @param {number} materialIndex - * @return {Promise} - */ - loadMaterial( materialIndex ) { - - const parser = this; - const json = this.json; - const extensions = this.extensions; - const materialDef = json.materials[ materialIndex ]; - - let materialType; - const materialParams = {}; - const materialExtensions = materialDef.extensions || {}; - - const pending = []; - - if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) { - - const kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ]; - materialType = kmuExtension.getMaterialType(); - pending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) ); - - } else { - - // Specification: - // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material - - const metallicRoughness = materialDef.pbrMetallicRoughness || {}; - - materialParams.color = new Color( 1.0, 1.0, 1.0 ); - materialParams.opacity = 1.0; - - if ( Array.isArray( metallicRoughness.baseColorFactor ) ) { - - const array = metallicRoughness.baseColorFactor; - - materialParams.color.setRGB( array[ 0 ], array[ 1 ], array[ 2 ], LinearSRGBColorSpace ); - materialParams.opacity = array[ 3 ]; - - } - - if ( metallicRoughness.baseColorTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) ); - - } - - materialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0; - materialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0; - - if ( metallicRoughness.metallicRoughnessTexture !== undefined ) { - - pending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) ); - pending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) ); - - } - - materialType = this._invokeOne( function ( ext ) { - - return ext.getMaterialType && ext.getMaterialType( materialIndex ); - - } ); - - pending.push( Promise.all( this._invokeAll( function ( ext ) { - - return ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams ); - - } ) ) ); - - } - - if ( materialDef.doubleSided === true ) { - - materialParams.side = DoubleSide; - - } - - const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE; - - if ( alphaMode === ALPHA_MODES.BLEND ) { - - materialParams.transparent = true; - - // See: https://github.com/mrdoob/three.js/issues/17706 - materialParams.depthWrite = false; - - } else { - - materialParams.transparent = false; - - if ( alphaMode === ALPHA_MODES.MASK ) { - - materialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5; - - } - - } - - if ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) { - - pending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) ); - - materialParams.normalScale = new Vector2( 1, 1 ); - - if ( materialDef.normalTexture.scale !== undefined ) { - - const scale = materialDef.normalTexture.scale; - - materialParams.normalScale.set( scale, scale ); - - } - - } - - if ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) { - - pending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) ); - - if ( materialDef.occlusionTexture.strength !== undefined ) { - - materialParams.aoMapIntensity = materialDef.occlusionTexture.strength; - - } - - } - - if ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) { - - const emissiveFactor = materialDef.emissiveFactor; - materialParams.emissive = new Color().setRGB( emissiveFactor[ 0 ], emissiveFactor[ 1 ], emissiveFactor[ 2 ], LinearSRGBColorSpace ); - - } - - if ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) { - - pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, SRGBColorSpace ) ); - - } - - return Promise.all( pending ).then( function () { - - const material = new materialType( materialParams ); - - if ( materialDef.name ) material.name = materialDef.name; - - assignExtrasToUserData( material, materialDef ); - - parser.associations.set( material, { materials: materialIndex } ); - - if ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef ); - - return material; - - } ); - - } - - /** When Object3D instances are targeted by animation, they need unique names. */ - createUniqueName( originalName ) { - - const sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' ); - - if ( sanitizedName in this.nodeNamesUsed ) { - - return sanitizedName + '_' + ( ++ this.nodeNamesUsed[ sanitizedName ] ); - - } else { - - this.nodeNamesUsed[ sanitizedName ] = 0; - - return sanitizedName; - - } - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry - * - * Creates BufferGeometries from primitives. - * - * @param {Array} primitives - * @return {Promise>} - */ - loadGeometries( primitives ) { - - const parser = this; - const extensions = this.extensions; - const cache = this.primitiveCache; - - function createDracoPrimitive( primitive ) { - - return extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] - .decodePrimitive( primitive, parser ) - .then( function ( geometry ) { - - return addPrimitiveAttributes( geometry, primitive, parser ); - - } ); - - } - - const pending = []; - - for ( let i = 0, il = primitives.length; i < il; i ++ ) { - - const primitive = primitives[ i ]; - const cacheKey = createPrimitiveKey( primitive ); - - // See if we've already created this geometry - const cached = cache[ cacheKey ]; - - if ( cached ) { - - // Use the cached geometry if it exists - pending.push( cached.promise ); - - } else { - - let geometryPromise; - - if ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) { - - // Use DRACO geometry if available - geometryPromise = createDracoPrimitive( primitive ); - - } else { - - // Otherwise create a new geometry - geometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser ); - - } - - // Cache this geometry - cache[ cacheKey ] = { primitive: primitive, promise: geometryPromise }; - - pending.push( geometryPromise ); - - } - - } - - return Promise.all( pending ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes - * @param {number} meshIndex - * @return {Promise} - */ - loadMesh( meshIndex ) { - - const parser = this; - const json = this.json; - const extensions = this.extensions; - - const meshDef = json.meshes[ meshIndex ]; - const primitives = meshDef.primitives; - - const pending = []; - - for ( let i = 0, il = primitives.length; i < il; i ++ ) { - - const material = primitives[ i ].material === undefined - ? createDefaultMaterial( this.cache ) - : this.getDependency( 'material', primitives[ i ].material ); - - pending.push( material ); - - } - - pending.push( parser.loadGeometries( primitives ) ); - - return Promise.all( pending ).then( function ( results ) { - - const materials = results.slice( 0, results.length - 1 ); - const geometries = results[ results.length - 1 ]; - - const meshes = []; - - for ( let i = 0, il = geometries.length; i < il; i ++ ) { - - const geometry = geometries[ i ]; - const primitive = primitives[ i ]; - - // 1. create Mesh - - let mesh; - - const material = materials[ i ]; - - if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES || - primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || - primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || - primitive.mode === undefined ) { - - // .isSkinnedMesh isn't in glTF spec. See ._markDefs() - mesh = meshDef.isSkinnedMesh === true - ? new SkinnedMesh( geometry, material ) - : new Mesh( geometry, material ); - - if ( mesh.isSkinnedMesh === true ) { - - // normalize skin weights to fix malformed assets (see #15319) - mesh.normalizeSkinWeights(); - - } - - if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) { - - mesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode ); - - } else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) { - - mesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode ); - - } - - } else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) { - - mesh = new LineSegments( geometry, material ); - - } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) { - - mesh = new Line( geometry, material ); - - } else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) { - - mesh = new LineLoop( geometry, material ); - - } else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) { - - mesh = new Points( geometry, material ); - - } else { - - throw new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode ); - - } - - if ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) { - - updateMorphTargets( mesh, meshDef ); - - } - - mesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) ); - - assignExtrasToUserData( mesh, meshDef ); - - if ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive ); - - parser.assignFinalMaterial( mesh ); - - meshes.push( mesh ); - - } - - for ( let i = 0, il = meshes.length; i < il; i ++ ) { - - parser.associations.set( meshes[ i ], { - meshes: meshIndex, - primitives: i - } ); - - } - - if ( meshes.length === 1 ) { - - if ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, meshes[ 0 ], meshDef ); - - return meshes[ 0 ]; - - } - - const group = new Group(); - - if ( meshDef.extensions ) addUnknownExtensionsToUserData( extensions, group, meshDef ); - - parser.associations.set( group, { meshes: meshIndex } ); - - for ( let i = 0, il = meshes.length; i < il; i ++ ) { - - group.add( meshes[ i ] ); - - } - - return group; - - } ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras - * @param {number} cameraIndex - * @return {Promise} - */ - loadCamera( cameraIndex ) { - - let camera; - const cameraDef = this.json.cameras[ cameraIndex ]; - const params = cameraDef[ cameraDef.type ]; - - if ( ! params ) { - - console.warn( 'THREE.GLTFLoader: Missing camera parameters.' ); - return; - - } - - if ( cameraDef.type === 'perspective' ) { - - camera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 ); - - } else if ( cameraDef.type === 'orthographic' ) { - - camera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar ); - - } - - if ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name ); - - assignExtrasToUserData( camera, cameraDef ); - - return Promise.resolve( camera ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins - * @param {number} skinIndex - * @return {Promise} - */ - loadSkin( skinIndex ) { - - const skinDef = this.json.skins[ skinIndex ]; - - const pending = []; - - for ( let i = 0, il = skinDef.joints.length; i < il; i ++ ) { - - pending.push( this._loadNodeShallow( skinDef.joints[ i ] ) ); - - } - - if ( skinDef.inverseBindMatrices !== undefined ) { - - pending.push( this.getDependency( 'accessor', skinDef.inverseBindMatrices ) ); - - } else { - - pending.push( null ); - - } - - return Promise.all( pending ).then( function ( results ) { - - const inverseBindMatrices = results.pop(); - const jointNodes = results; - - // Note that bones (joint nodes) may or may not be in the - // scene graph at this time. - - const bones = []; - const boneInverses = []; - - for ( let i = 0, il = jointNodes.length; i < il; i ++ ) { - - const jointNode = jointNodes[ i ]; - - if ( jointNode ) { - - bones.push( jointNode ); - - const mat = new Matrix4(); - - if ( inverseBindMatrices !== null ) { - - mat.fromArray( inverseBindMatrices.array, i * 16 ); - - } - - boneInverses.push( mat ); - - } else { - - console.warn( 'THREE.GLTFLoader: Joint "%s" could not be found.', skinDef.joints[ i ] ); - - } - - } - - return new Skeleton( bones, boneInverses ); - - } ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations - * @param {number} animationIndex - * @return {Promise} - */ - loadAnimation( animationIndex ) { - - const json = this.json; - const parser = this; - - const animationDef = json.animations[ animationIndex ]; - const animationName = animationDef.name ? animationDef.name : 'animation_' + animationIndex; - - const pendingNodes = []; - const pendingInputAccessors = []; - const pendingOutputAccessors = []; - const pendingSamplers = []; - const pendingTargets = []; - - for ( let i = 0, il = animationDef.channels.length; i < il; i ++ ) { - - const channel = animationDef.channels[ i ]; - const sampler = animationDef.samplers[ channel.sampler ]; - const target = channel.target; - const name = target.node; - const input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input; - const output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output; - - if ( target.node === undefined ) continue; - - pendingNodes.push( this.getDependency( 'node', name ) ); - pendingInputAccessors.push( this.getDependency( 'accessor', input ) ); - pendingOutputAccessors.push( this.getDependency( 'accessor', output ) ); - pendingSamplers.push( sampler ); - pendingTargets.push( target ); - - } - - return Promise.all( [ - - Promise.all( pendingNodes ), - Promise.all( pendingInputAccessors ), - Promise.all( pendingOutputAccessors ), - Promise.all( pendingSamplers ), - Promise.all( pendingTargets ) - - ] ).then( function ( dependencies ) { - - const nodes = dependencies[ 0 ]; - const inputAccessors = dependencies[ 1 ]; - const outputAccessors = dependencies[ 2 ]; - const samplers = dependencies[ 3 ]; - const targets = dependencies[ 4 ]; - - const tracks = []; - - for ( let i = 0, il = nodes.length; i < il; i ++ ) { - - const node = nodes[ i ]; - const inputAccessor = inputAccessors[ i ]; - const outputAccessor = outputAccessors[ i ]; - const sampler = samplers[ i ]; - const target = targets[ i ]; - - if ( node === undefined ) continue; - - if ( node.updateMatrix ) { - - node.updateMatrix(); - - } - - const createdTracks = parser._createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ); - - if ( createdTracks ) { - - for ( let k = 0; k < createdTracks.length; k ++ ) { - - tracks.push( createdTracks[ k ] ); - - } - - } - - } - - return new AnimationClip( animationName, undefined, tracks ); - - } ); - - } - - createNodeMesh( nodeIndex ) { - - const json = this.json; - const parser = this; - const nodeDef = json.nodes[ nodeIndex ]; - - if ( nodeDef.mesh === undefined ) return null; - - return parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) { - - const node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh ); - - // if weights are provided on the node, override weights on the mesh. - if ( nodeDef.weights !== undefined ) { - - node.traverse( function ( o ) { - - if ( ! o.isMesh ) return; - - for ( let i = 0, il = nodeDef.weights.length; i < il; i ++ ) { - - o.morphTargetInfluences[ i ] = nodeDef.weights[ i ]; - - } - - } ); - - } - - return node; - - } ); - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy - * @param {number} nodeIndex - * @return {Promise} - */ - loadNode( nodeIndex ) { - - const json = this.json; - const parser = this; - - const nodeDef = json.nodes[ nodeIndex ]; - - const nodePending = parser._loadNodeShallow( nodeIndex ); - - const childPending = []; - const childrenDef = nodeDef.children || []; - - for ( let i = 0, il = childrenDef.length; i < il; i ++ ) { - - childPending.push( parser.getDependency( 'node', childrenDef[ i ] ) ); - - } - - const skeletonPending = nodeDef.skin === undefined - ? Promise.resolve( null ) - : parser.getDependency( 'skin', nodeDef.skin ); - - return Promise.all( [ - nodePending, - Promise.all( childPending ), - skeletonPending - ] ).then( function ( results ) { - - const node = results[ 0 ]; - const children = results[ 1 ]; - const skeleton = results[ 2 ]; - - if ( skeleton !== null ) { - - // This full traverse should be fine because - // child glTF nodes have not been added to this node yet. - node.traverse( function ( mesh ) { - - if ( ! mesh.isSkinnedMesh ) return; - - mesh.bind( skeleton, _identityMatrix ); - - } ); - - } - - for ( let i = 0, il = children.length; i < il; i ++ ) { - - node.add( children[ i ] ); - - } - - return node; - - } ); - - } - - // ._loadNodeShallow() parses a single node. - // skin and child nodes are created and added in .loadNode() (no '_' prefix). - _loadNodeShallow( nodeIndex ) { - - const json = this.json; - const extensions = this.extensions; - const parser = this; - - // This method is called from .loadNode() and .loadSkin(). - // Cache a node to avoid duplication. - - if ( this.nodeCache[ nodeIndex ] !== undefined ) { - - return this.nodeCache[ nodeIndex ]; - - } - - const nodeDef = json.nodes[ nodeIndex ]; - - // reserve node's name before its dependencies, so the root has the intended name. - const nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : ''; - - const pending = []; - - const meshPromise = parser._invokeOne( function ( ext ) { - - return ext.createNodeMesh && ext.createNodeMesh( nodeIndex ); - - } ); - - if ( meshPromise ) { - - pending.push( meshPromise ); - - } - - if ( nodeDef.camera !== undefined ) { - - pending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) { - - return parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera ); - - } ) ); - - } - - parser._invokeAll( function ( ext ) { - - return ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex ); - - } ).forEach( function ( promise ) { - - pending.push( promise ); - - } ); - - this.nodeCache[ nodeIndex ] = Promise.all( pending ).then( function ( objects ) { - - let node; - - // .isBone isn't in glTF spec. See ._markDefs - if ( nodeDef.isBone === true ) { - - node = new Bone(); - - } else if ( objects.length > 1 ) { - - node = new Group(); - - } else if ( objects.length === 1 ) { - - node = objects[ 0 ]; - - } else { - - node = new Object3D(); - - } - - if ( node !== objects[ 0 ] ) { - - for ( let i = 0, il = objects.length; i < il; i ++ ) { - - node.add( objects[ i ] ); - - } - - } - - if ( nodeDef.name ) { - - node.userData.name = nodeDef.name; - node.name = nodeName; - - } - - assignExtrasToUserData( node, nodeDef ); - - if ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef ); - - if ( nodeDef.matrix !== undefined ) { - - const matrix = new Matrix4(); - matrix.fromArray( nodeDef.matrix ); - node.applyMatrix4( matrix ); - - } else { - - if ( nodeDef.translation !== undefined ) { - - node.position.fromArray( nodeDef.translation ); - - } - - if ( nodeDef.rotation !== undefined ) { - - node.quaternion.fromArray( nodeDef.rotation ); - - } - - if ( nodeDef.scale !== undefined ) { - - node.scale.fromArray( nodeDef.scale ); - - } - - } - - if ( ! parser.associations.has( node ) ) { - - parser.associations.set( node, {} ); - - } - - parser.associations.get( node ).nodes = nodeIndex; - - return node; - - } ); - - return this.nodeCache[ nodeIndex ]; - - } - - /** - * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes - * @param {number} sceneIndex - * @return {Promise} - */ - loadScene( sceneIndex ) { - - const extensions = this.extensions; - const sceneDef = this.json.scenes[ sceneIndex ]; - const parser = this; - - // Loader returns Group, not Scene. - // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172 - const scene = new Group(); - if ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name ); - - assignExtrasToUserData( scene, sceneDef ); - - if ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef ); - - const nodeIds = sceneDef.nodes || []; - - const pending = []; - - for ( let i = 0, il = nodeIds.length; i < il; i ++ ) { - - pending.push( parser.getDependency( 'node', nodeIds[ i ] ) ); - - } - - return Promise.all( pending ).then( function ( nodes ) { - - for ( let i = 0, il = nodes.length; i < il; i ++ ) { - - scene.add( nodes[ i ] ); - - } - - // Removes dangling associations, associations that reference a node that - // didn't make it into the scene. - const reduceAssociations = ( node ) => { - - const reducedAssociations = new Map(); - - for ( const [ key, value ] of parser.associations ) { - - if ( key instanceof Material || key instanceof Texture ) { - - reducedAssociations.set( key, value ); - - } - - } - - node.traverse( ( node ) => { - - const mappings = parser.associations.get( node ); - - if ( mappings != null ) { - - reducedAssociations.set( node, mappings ); - - } - - } ); - - return reducedAssociations; - - }; - - parser.associations = reduceAssociations( scene ); - - return scene; - - } ); - - } - - _createAnimationTracks( node, inputAccessor, outputAccessor, sampler, target ) { - - const tracks = []; - - const targetName = node.name ? node.name : node.uuid; - const targetNames = []; - - if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) { - - node.traverse( function ( object ) { - - if ( object.morphTargetInfluences ) { - - targetNames.push( object.name ? object.name : object.uuid ); - - } - - } ); - - } else { - - targetNames.push( targetName ); - - } - - let TypedKeyframeTrack; - - switch ( PATH_PROPERTIES[ target.path ] ) { - - case PATH_PROPERTIES.weights: - - TypedKeyframeTrack = NumberKeyframeTrack; - break; - - case PATH_PROPERTIES.rotation: - - TypedKeyframeTrack = QuaternionKeyframeTrack; - break; - - case PATH_PROPERTIES.position: - case PATH_PROPERTIES.scale: - - TypedKeyframeTrack = VectorKeyframeTrack; - break; - - default: - - switch ( outputAccessor.itemSize ) { - - case 1: - TypedKeyframeTrack = NumberKeyframeTrack; - break; - case 2: - case 3: - default: - TypedKeyframeTrack = VectorKeyframeTrack; - break; - - } - - break; - - } - - const interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear; - - - const outputArray = this._getArrayFromAccessor( outputAccessor ); - - for ( let j = 0, jl = targetNames.length; j < jl; j ++ ) { - - const track = new TypedKeyframeTrack( - targetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ], - inputAccessor.array, - outputArray, - interpolation - ); - - // Override interpolation with custom factory method. - if ( sampler.interpolation === 'CUBICSPLINE' ) { - - this._createCubicSplineTrackInterpolant( track ); - - } - - tracks.push( track ); - - } - - return tracks; - - } - - _getArrayFromAccessor( accessor ) { - - let outputArray = accessor.array; - - if ( accessor.normalized ) { - - const scale = getNormalizedComponentScale( outputArray.constructor ); - const scaled = new Float32Array( outputArray.length ); - - for ( let j = 0, jl = outputArray.length; j < jl; j ++ ) { - - scaled[ j ] = outputArray[ j ] * scale; - - } - - outputArray = scaled; - - } - - return outputArray; - - } - - _createCubicSplineTrackInterpolant( track ) { - - track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) { - - // A CUBICSPLINE keyframe in glTF has three output values for each input value, - // representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize() - // must be divided by three to get the interpolant's sampleSize argument. - - const interpolantType = ( this instanceof QuaternionKeyframeTrack ) ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant; - - return new interpolantType( this.times, this.values, this.getValueSize() / 3, result ); - - }; - - // Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants. - track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true; - - } - -} - -/** - * @param {BufferGeometry} geometry - * @param {GLTF.Primitive} primitiveDef - * @param {GLTFParser} parser - */ -function computeBounds( geometry, primitiveDef, parser ) { - - const attributes = primitiveDef.attributes; - - const box = new Box3(); - - if ( attributes.POSITION !== undefined ) { - - const accessor = parser.json.accessors[ attributes.POSITION ]; - - const min = accessor.min; - const max = accessor.max; - - // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement. - - if ( min !== undefined && max !== undefined ) { - - box.set( - new Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ), - new Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) - ); - - if ( accessor.normalized ) { - - const boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] ); - box.min.multiplyScalar( boxScale ); - box.max.multiplyScalar( boxScale ); - - } - - } else { - - console.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' ); - - return; - - } - - } else { - - return; - - } - - const targets = primitiveDef.targets; - - if ( targets !== undefined ) { - - const maxDisplacement = new Vector3(); - const vector = new Vector3(); - - for ( let i = 0, il = targets.length; i < il; i ++ ) { - - const target = targets[ i ]; - - if ( target.POSITION !== undefined ) { - - const accessor = parser.json.accessors[ target.POSITION ]; - const min = accessor.min; - const max = accessor.max; - - // glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement. - - if ( min !== undefined && max !== undefined ) { - - // we need to get max of absolute components because target weight is [-1,1] - vector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) ); - vector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) ); - vector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) ); - - - if ( accessor.normalized ) { - - const boxScale = getNormalizedComponentScale( WEBGL_COMPONENT_TYPES[ accessor.componentType ] ); - vector.multiplyScalar( boxScale ); - - } - - // Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative - // to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets - // are used to implement key-frame animations and as such only two are active at a time - this results in very large - // boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size. - maxDisplacement.max( vector ); - - } else { - - console.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' ); - - } - - } - - } - - // As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets. - box.expandByVector( maxDisplacement ); - - } - - geometry.boundingBox = box; - - const sphere = new Sphere(); - - box.getCenter( sphere.center ); - sphere.radius = box.min.distanceTo( box.max ) / 2; - - geometry.boundingSphere = sphere; - -} - -/** - * @param {BufferGeometry} geometry - * @param {GLTF.Primitive} primitiveDef - * @param {GLTFParser} parser - * @return {Promise} - */ -function addPrimitiveAttributes( geometry, primitiveDef, parser ) { - - const attributes = primitiveDef.attributes; - - const pending = []; - - function assignAttributeAccessor( accessorIndex, attributeName ) { - - return parser.getDependency( 'accessor', accessorIndex ) - .then( function ( accessor ) { - - geometry.setAttribute( attributeName, accessor ); - - } ); - - } - - for ( const gltfAttributeName in attributes ) { - - const threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase(); - - // Skip attributes already provided by e.g. Draco extension. - if ( threeAttributeName in geometry.attributes ) continue; - - pending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) ); - - } - - if ( primitiveDef.indices !== undefined && ! geometry.index ) { - - const accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) { - - geometry.setIndex( accessor ); - - } ); - - pending.push( accessor ); - - } - - if ( ColorManagement.workingColorSpace !== LinearSRGBColorSpace && 'COLOR_0' in attributes ) { - - console.warn( `THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ColorManagement.workingColorSpace}" not supported.` ); - - } - - assignExtrasToUserData( geometry, primitiveDef ); - - computeBounds( geometry, primitiveDef, parser ); - - return Promise.all( pending ).then( function () { - - return primitiveDef.targets !== undefined - ? addMorphTargets( geometry, primitiveDef.targets, parser ) - : geometry; - - } ); - -} - -export { GLTFLoader }; diff --git a/three/addons/loaders/HDRCubeTextureLoader.js b/three/addons/loaders/HDRCubeTextureLoader.js deleted file mode 100644 index 7719125..0000000 --- a/three/addons/loaders/HDRCubeTextureLoader.js +++ /dev/null @@ -1,115 +0,0 @@ -import { - CubeTexture, - DataTexture, - FileLoader, - FloatType, - HalfFloatType, - LinearFilter, - LinearSRGBColorSpace, - Loader -} from 'three'; -import { RGBELoader } from '../loaders/RGBELoader.js'; - -class HDRCubeTextureLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.hdrLoader = new RGBELoader(); - this.type = HalfFloatType; - - } - - load( urls, onLoad, onProgress, onError ) { - - const texture = new CubeTexture(); - - texture.type = this.type; - - switch ( texture.type ) { - - case FloatType: - - texture.colorSpace = LinearSRGBColorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - break; - - case HalfFloatType: - - texture.colorSpace = LinearSRGBColorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - break; - - } - - const scope = this; - - let loaded = 0; - - function loadHDRData( i, onLoad, onProgress, onError ) { - - new FileLoader( scope.manager ) - .setPath( scope.path ) - .setResponseType( 'arraybuffer' ) - .setWithCredentials( scope.withCredentials ) - .load( urls[ i ], function ( buffer ) { - - loaded ++; - - const texData = scope.hdrLoader.parse( buffer ); - - if ( ! texData ) return; - - if ( texData.data !== undefined ) { - - const dataTexture = new DataTexture( texData.data, texData.width, texData.height ); - - dataTexture.type = texture.type; - dataTexture.colorSpace = texture.colorSpace; - dataTexture.format = texture.format; - dataTexture.minFilter = texture.minFilter; - dataTexture.magFilter = texture.magFilter; - dataTexture.generateMipmaps = texture.generateMipmaps; - - texture.images[ i ] = dataTexture; - - } - - if ( loaded === 6 ) { - - texture.needsUpdate = true; - if ( onLoad ) onLoad( texture ); - - } - - }, onProgress, onError ); - - } - - for ( let i = 0; i < urls.length; i ++ ) { - - loadHDRData( i, onLoad, onProgress, onError ); - - } - - return texture; - - } - - setDataType( value ) { - - this.type = value; - this.hdrLoader.setDataType( value ); - - return this; - - } - -} - -export { HDRCubeTextureLoader }; diff --git a/three/addons/loaders/IESLoader.js b/three/addons/loaders/IESLoader.js deleted file mode 100644 index f33c625..0000000 --- a/three/addons/loaders/IESLoader.js +++ /dev/null @@ -1,337 +0,0 @@ -import { - DataTexture, - FileLoader, - FloatType, - RedFormat, - MathUtils, - Loader, - UnsignedByteType, - LinearFilter, - HalfFloatType, - DataUtils -} from 'three'; - -class IESLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.type = HalfFloatType; - - } - - _getIESValues( iesLamp, type ) { - - const width = 360; - const height = 180; - const size = width * height; - - const data = new Array( size ); - - function interpolateCandelaValues( phi, theta ) { - - let phiIndex = 0, thetaIndex = 0; - let startTheta = 0, endTheta = 0, startPhi = 0, endPhi = 0; - - for ( let i = 0; i < iesLamp.numHorAngles - 1; ++ i ) { // numHorAngles = horAngles.length-1 because of extra padding, so this wont cause an out of bounds error - - if ( theta < iesLamp.horAngles[ i + 1 ] || i == iesLamp.numHorAngles - 2 ) { - - thetaIndex = i; - startTheta = iesLamp.horAngles[ i ]; - endTheta = iesLamp.horAngles[ i + 1 ]; - - break; - - } - - } - - for ( let i = 0; i < iesLamp.numVerAngles - 1; ++ i ) { - - if ( phi < iesLamp.verAngles[ i + 1 ] || i == iesLamp.numVerAngles - 2 ) { - - phiIndex = i; - startPhi = iesLamp.verAngles[ i ]; - endPhi = iesLamp.verAngles[ i + 1 ]; - - break; - - } - - } - - const deltaTheta = endTheta - startTheta; - const deltaPhi = endPhi - startPhi; - - if ( deltaPhi === 0 ) // Outside range - return 0; - - const t1 = deltaTheta === 0 ? 0 : ( theta - startTheta ) / deltaTheta; - const t2 = ( phi - startPhi ) / deltaPhi; - - const nextThetaIndex = deltaTheta === 0 ? thetaIndex : thetaIndex + 1; - - const v1 = MathUtils.lerp( iesLamp.candelaValues[ thetaIndex ][ phiIndex ], iesLamp.candelaValues[ nextThetaIndex ][ phiIndex ], t1 ); - const v2 = MathUtils.lerp( iesLamp.candelaValues[ thetaIndex ][ phiIndex + 1 ], iesLamp.candelaValues[ nextThetaIndex ][ phiIndex + 1 ], t1 ); - const v = MathUtils.lerp( v1, v2, t2 ); - - return v; - - } - - const startTheta = iesLamp.horAngles[ 0 ], endTheta = iesLamp.horAngles[ iesLamp.numHorAngles - 1 ]; - - for ( let i = 0; i < size; ++ i ) { - - let theta = i % width; - const phi = Math.floor( i / width ); - - if ( endTheta - startTheta !== 0 && ( theta < startTheta || theta >= endTheta ) ) { // Handle symmetry for hor angles - - theta %= endTheta * 2; - - if ( theta > endTheta ) - theta = endTheta * 2 - theta; - - } - - data[ phi + theta * height ] = interpolateCandelaValues( phi, theta ); - - } - - let result = null; - - if ( type === UnsignedByteType ) result = Uint8Array.from( data.map( v => Math.min( v * 0xFF, 0xFF ) ) ); - else if ( type === HalfFloatType ) result = Uint16Array.from( data.map( v => DataUtils.toHalfFloat( v ) ) ); - else if ( type === FloatType ) result = Float32Array.from( data ); - else console.error( 'IESLoader: Unsupported type:', type ); - - return result; - - } - - load( url, onLoad, onProgress, onError ) { - - const loader = new FileLoader( this.manager ); - loader.setResponseType( 'text' ); - loader.setCrossOrigin( this.crossOrigin ); - loader.setWithCredentials( this.withCredentials ); - loader.setPath( this.path ); - loader.setRequestHeader( this.requestHeader ); - - loader.load( url, text => { - - onLoad( this.parse( text ) ); - - }, onProgress, onError ); - - } - - parse( text ) { - - const type = this.type; - - const iesLamp = new IESLamp( text ); - const data = this._getIESValues( iesLamp, type ); - - const texture = new DataTexture( data, 180, 1, RedFormat, type ); - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.needsUpdate = true; - - return texture; - - } - -} - - -function IESLamp( text ) { - - const _self = this; - - const textArray = text.split( '\n' ); - - let lineNumber = 0; - let line; - - _self.verAngles = [ ]; - _self.horAngles = [ ]; - - _self.candelaValues = [ ]; - - _self.tiltData = { }; - _self.tiltData.angles = [ ]; - _self.tiltData.mulFactors = [ ]; - - function textToArray( text ) { - - text = text.replace( /^\s+|\s+$/g, '' ); // remove leading or trailing spaces - text = text.replace( /,/g, ' ' ); // replace commas with spaces - text = text.replace( /\s\s+/g, ' ' ); // replace white space/tabs etc by single whitespace - - const array = text.split( ' ' ); - - return array; - - } - - function readArray( count, array ) { - - while ( true ) { - - const line = textArray[ lineNumber ++ ]; - const lineData = textToArray( line ); - - for ( let i = 0; i < lineData.length; ++ i ) { - - array.push( Number( lineData[ i ] ) ); - - } - - if ( array.length === count ) - break; - - } - - } - - function readTilt() { - - let line = textArray[ lineNumber ++ ]; - let lineData = textToArray( line ); - - _self.tiltData.lampToLumGeometry = Number( lineData[ 0 ] ); - - line = textArray[ lineNumber ++ ]; - lineData = textToArray( line ); - - _self.tiltData.numAngles = Number( lineData[ 0 ] ); - - readArray( _self.tiltData.numAngles, _self.tiltData.angles ); - readArray( _self.tiltData.numAngles, _self.tiltData.mulFactors ); - - } - - function readLampValues() { - - const values = [ ]; - readArray( 10, values ); - - _self.count = Number( values[ 0 ] ); - _self.lumens = Number( values[ 1 ] ); - _self.multiplier = Number( values[ 2 ] ); - _self.numVerAngles = Number( values[ 3 ] ); - _self.numHorAngles = Number( values[ 4 ] ); - _self.gonioType = Number( values[ 5 ] ); - _self.units = Number( values[ 6 ] ); - _self.width = Number( values[ 7 ] ); - _self.length = Number( values[ 8 ] ); - _self.height = Number( values[ 9 ] ); - - } - - function readLampFactors() { - - const values = [ ]; - readArray( 3, values ); - - _self.ballFactor = Number( values[ 0 ] ); - _self.blpFactor = Number( values[ 1 ] ); - _self.inputWatts = Number( values[ 2 ] ); - - } - - while ( true ) { - - line = textArray[ lineNumber ++ ]; - - if ( line.includes( 'TILT' ) ) { - - break; - - } - - } - - if ( ! line.includes( 'NONE' ) ) { - - if ( line.includes( 'INCLUDE' ) ) { - - readTilt(); - - } else { - - // TODO:: Read tilt data from a file - - } - - } - - readLampValues(); - - readLampFactors(); - - // Initialize candela value array - for ( let i = 0; i < _self.numHorAngles; ++ i ) { - - _self.candelaValues.push( [ ] ); - - } - - // Parse Angles - readArray( _self.numVerAngles, _self.verAngles ); - readArray( _self.numHorAngles, _self.horAngles ); - - // Parse Candela values - for ( let i = 0; i < _self.numHorAngles; ++ i ) { - - readArray( _self.numVerAngles, _self.candelaValues[ i ] ); - - } - - // Calculate actual candela values, and normalize. - for ( let i = 0; i < _self.numHorAngles; ++ i ) { - - for ( let j = 0; j < _self.numVerAngles; ++ j ) { - - _self.candelaValues[ i ][ j ] *= _self.candelaValues[ i ][ j ] * _self.multiplier - * _self.ballFactor * _self.blpFactor; - - } - - } - - let maxVal = - 1; - for ( let i = 0; i < _self.numHorAngles; ++ i ) { - - for ( let j = 0; j < _self.numVerAngles; ++ j ) { - - const value = _self.candelaValues[ i ][ j ]; - maxVal = maxVal < value ? value : maxVal; - - } - - } - - const bNormalize = true; - if ( bNormalize && maxVal > 0 ) { - - for ( let i = 0; i < _self.numHorAngles; ++ i ) { - - for ( let j = 0; j < _self.numVerAngles; ++ j ) { - - _self.candelaValues[ i ][ j ] /= maxVal; - - } - - } - - } - -} - - -export { IESLoader }; diff --git a/three/addons/loaders/KMZLoader.js b/three/addons/loaders/KMZLoader.js deleted file mode 100644 index 6f28f36..0000000 --- a/three/addons/loaders/KMZLoader.js +++ /dev/null @@ -1,130 +0,0 @@ -import { - FileLoader, - Group, - Loader, - LoadingManager -} from 'three'; -import { ColladaLoader } from '../loaders/ColladaLoader.js'; -import * as fflate from '../libs/fflate.module.js'; - -class KMZLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( data ) { - - function findFile( url ) { - - for ( const path in zip ) { - - if ( path.slice( - url.length ) === url ) { - - return zip[ path ]; - - } - - } - - } - - const manager = new LoadingManager(); - manager.setURLModifier( function ( url ) { - - const image = findFile( url ); - - if ( image ) { - - console.log( 'Loading', url ); - - const blob = new Blob( [ image.buffer ], { type: 'application/octet-stream' } ); - return URL.createObjectURL( blob ); - - } - - return url; - - } ); - - // - - const zip = fflate.unzipSync( new Uint8Array( data ) ); - - if ( zip[ 'doc.kml' ] ) { - - const xml = new DOMParser().parseFromString( fflate.strFromU8( zip[ 'doc.kml' ] ), 'application/xml' ); - - const model = xml.querySelector( 'Placemark Model Link href' ); - - if ( model ) { - - const loader = new ColladaLoader( manager ); - return loader.parse( fflate.strFromU8( zip[ model.textContent ] ) ); - - } - - } else { - - console.warn( 'KMZLoader: Missing doc.kml file.' ); - - for ( const path in zip ) { - - const extension = path.split( '.' ).pop().toLowerCase(); - - if ( extension === 'dae' ) { - - const loader = new ColladaLoader( manager ); - return loader.parse( fflate.strFromU8( zip[ path ] ) ); - - } - - } - - } - - console.error( 'KMZLoader: Couldn\'t find .dae file.' ); - return { scene: new Group() }; - - } - -} - -export { KMZLoader }; diff --git a/three/addons/loaders/KTX2Loader.js b/three/addons/loaders/KTX2Loader.js deleted file mode 100644 index 3a2c1ca..0000000 --- a/three/addons/loaders/KTX2Loader.js +++ /dev/null @@ -1,917 +0,0 @@ -/** - * Loader for KTX 2.0 GPU Texture containers. - * - * KTX 2.0 is a container format for various GPU texture formats. The loader - * supports Basis Universal GPU textures, which can be quickly transcoded to - * a wide variety of GPU texture compression formats, as well as some - * uncompressed DataTexture and Data3DTexture formats. - * - * References: - * - KTX: http://github.khronos.org/KTX-Specification/ - * - DFD: https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html#basicdescriptor - */ - -import { - CompressedTexture, - CompressedArrayTexture, - CompressedCubeTexture, - Data3DTexture, - DataTexture, - DisplayP3ColorSpace, - FileLoader, - FloatType, - HalfFloatType, - NoColorSpace, - LinearFilter, - LinearMipmapLinearFilter, - LinearDisplayP3ColorSpace, - LinearSRGBColorSpace, - Loader, - RedFormat, - RGB_ETC1_Format, - RGB_ETC2_Format, - RGB_PVRTC_4BPPV1_Format, - RGB_S3TC_DXT1_Format, - RGBA_ASTC_4x4_Format, - RGBA_ASTC_6x6_Format, - RGBA_BPTC_Format, - RGBA_ETC2_EAC_Format, - RGBA_PVRTC_4BPPV1_Format, - RGBA_S3TC_DXT5_Format, - RGBAFormat, - RGFormat, - SRGBColorSpace, - UnsignedByteType, -} from 'three'; -import { WorkerPool } from '../utils/WorkerPool.js'; -import { - read, - KHR_DF_FLAG_ALPHA_PREMULTIPLIED, - KHR_DF_TRANSFER_SRGB, - KHR_SUPERCOMPRESSION_NONE, - KHR_SUPERCOMPRESSION_ZSTD, - VK_FORMAT_UNDEFINED, - VK_FORMAT_R16_SFLOAT, - VK_FORMAT_R16G16_SFLOAT, - VK_FORMAT_R16G16B16A16_SFLOAT, - VK_FORMAT_R32_SFLOAT, - VK_FORMAT_R32G32_SFLOAT, - VK_FORMAT_R32G32B32A32_SFLOAT, - VK_FORMAT_R8_SRGB, - VK_FORMAT_R8_UNORM, - VK_FORMAT_R8G8_SRGB, - VK_FORMAT_R8G8_UNORM, - VK_FORMAT_R8G8B8A8_SRGB, - VK_FORMAT_R8G8B8A8_UNORM, - VK_FORMAT_ASTC_6x6_SRGB_BLOCK, - VK_FORMAT_ASTC_6x6_UNORM_BLOCK, - KHR_DF_PRIMARIES_UNSPECIFIED, - KHR_DF_PRIMARIES_BT709, - KHR_DF_PRIMARIES_DISPLAYP3 -} from '../libs/ktx-parse.module.js'; -import { ZSTDDecoder } from '../libs/zstddec.module.js'; - -const _taskCache = new WeakMap(); - -let _activeLoaders = 0; - -let _zstd; - -class KTX2Loader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.transcoderPath = ''; - this.transcoderBinary = null; - this.transcoderPending = null; - - this.workerPool = new WorkerPool(); - this.workerSourceURL = ''; - this.workerConfig = null; - - if ( typeof MSC_TRANSCODER !== 'undefined' ) { - - console.warn( - - 'THREE.KTX2Loader: Please update to latest "basis_transcoder".' - + ' "msc_basis_transcoder" is no longer supported in three.js r125+.' - - ); - - } - - } - - setTranscoderPath( path ) { - - this.transcoderPath = path; - - return this; - - } - - setWorkerLimit( num ) { - - this.workerPool.setWorkerLimit( num ); - - return this; - - } - - detectSupport( renderer ) { - - if ( renderer.isWebGPURenderer === true ) { - - this.workerConfig = { - astcSupported: renderer.hasFeature( 'texture-compression-astc' ), - etc1Supported: false, - etc2Supported: renderer.hasFeature( 'texture-compression-etc2' ), - dxtSupported: renderer.hasFeature( 'texture-compression-bc' ), - bptcSupported: false, - pvrtcSupported: false - }; - - } else { - - this.workerConfig = { - astcSupported: renderer.extensions.has( 'WEBGL_compressed_texture_astc' ), - etc1Supported: renderer.extensions.has( 'WEBGL_compressed_texture_etc1' ), - etc2Supported: renderer.extensions.has( 'WEBGL_compressed_texture_etc' ), - dxtSupported: renderer.extensions.has( 'WEBGL_compressed_texture_s3tc' ), - bptcSupported: renderer.extensions.has( 'EXT_texture_compression_bptc' ), - pvrtcSupported: renderer.extensions.has( 'WEBGL_compressed_texture_pvrtc' ) - || renderer.extensions.has( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ) - }; - - if ( renderer.capabilities.isWebGL2 ) { - - // https://github.com/mrdoob/three.js/pull/22928 - this.workerConfig.etc1Supported = false; - - } - - } - - return this; - - } - - init() { - - if ( ! this.transcoderPending ) { - - // Load transcoder wrapper. - const jsLoader = new FileLoader( this.manager ); - jsLoader.setPath( this.transcoderPath ); - jsLoader.setWithCredentials( this.withCredentials ); - const jsContent = jsLoader.loadAsync( 'basis_transcoder.js' ); - - // Load transcoder WASM binary. - const binaryLoader = new FileLoader( this.manager ); - binaryLoader.setPath( this.transcoderPath ); - binaryLoader.setResponseType( 'arraybuffer' ); - binaryLoader.setWithCredentials( this.withCredentials ); - const binaryContent = binaryLoader.loadAsync( 'basis_transcoder.wasm' ); - - this.transcoderPending = Promise.all( [ jsContent, binaryContent ] ) - .then( ( [ jsContent, binaryContent ] ) => { - - const fn = KTX2Loader.BasisWorker.toString(); - - const body = [ - '/* constants */', - 'let _EngineFormat = ' + JSON.stringify( KTX2Loader.EngineFormat ), - 'let _TranscoderFormat = ' + JSON.stringify( KTX2Loader.TranscoderFormat ), - 'let _BasisFormat = ' + JSON.stringify( KTX2Loader.BasisFormat ), - '/* basis_transcoder.js */', - jsContent, - '/* worker */', - fn.substring( fn.indexOf( '{' ) + 1, fn.lastIndexOf( '}' ) ) - ].join( '\n' ); - - this.workerSourceURL = URL.createObjectURL( new Blob( [ body ] ) ); - this.transcoderBinary = binaryContent; - - this.workerPool.setWorkerCreator( () => { - - const worker = new Worker( this.workerSourceURL ); - const transcoderBinary = this.transcoderBinary.slice( 0 ); - - worker.postMessage( { type: 'init', config: this.workerConfig, transcoderBinary }, [ transcoderBinary ] ); - - return worker; - - } ); - - } ); - - if ( _activeLoaders > 0 ) { - - // Each instance loads a transcoder and allocates workers, increasing network and memory cost. - - console.warn( - - 'THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues.' - + ' Use a single KTX2Loader instance, or call .dispose() on old instances.' - - ); - - } - - _activeLoaders ++; - - } - - return this.transcoderPending; - - } - - load( url, onLoad, onProgress, onError ) { - - if ( this.workerConfig === null ) { - - throw new Error( 'THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.' ); - - } - - const loader = new FileLoader( this.manager ); - - loader.setResponseType( 'arraybuffer' ); - loader.setWithCredentials( this.withCredentials ); - - loader.load( url, ( buffer ) => { - - // Check for an existing task using this buffer. A transferred buffer cannot be transferred - // again from this thread. - if ( _taskCache.has( buffer ) ) { - - const cachedTask = _taskCache.get( buffer ); - - return cachedTask.promise.then( onLoad ).catch( onError ); - - } - - this._createTexture( buffer ) - .then( ( texture ) => onLoad ? onLoad( texture ) : null ) - .catch( onError ); - - }, onProgress, onError ); - - } - - _createTextureFrom( transcodeResult, container ) { - - const { faces, width, height, format, type, error, dfdFlags } = transcodeResult; - - if ( type === 'error' ) return Promise.reject( error ); - - let texture; - - if ( container.faceCount === 6 ) { - - texture = new CompressedCubeTexture( faces, format, UnsignedByteType ); - - } else { - - const mipmaps = faces[ 0 ].mipmaps; - - texture = container.layerCount > 1 - ? new CompressedArrayTexture( mipmaps, width, height, container.layerCount, format, UnsignedByteType ) - : new CompressedTexture( mipmaps, width, height, format, UnsignedByteType ); - - } - - texture.minFilter = faces[ 0 ].mipmaps.length === 1 ? LinearFilter : LinearMipmapLinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - - texture.needsUpdate = true; - texture.colorSpace = parseColorSpace( container ); - texture.premultiplyAlpha = !! ( dfdFlags & KHR_DF_FLAG_ALPHA_PREMULTIPLIED ); - - return texture; - - } - - /** - * @param {ArrayBuffer} buffer - * @param {object?} config - * @return {Promise} - */ - async _createTexture( buffer, config = {} ) { - - const container = read( new Uint8Array( buffer ) ); - - if ( container.vkFormat !== VK_FORMAT_UNDEFINED ) { - - return createRawTexture( container ); - - } - - // - const taskConfig = config; - const texturePending = this.init().then( () => { - - return this.workerPool.postMessage( { type: 'transcode', buffer, taskConfig: taskConfig }, [ buffer ] ); - - } ).then( ( e ) => this._createTextureFrom( e.data, container ) ); - - // Cache the task result. - _taskCache.set( buffer, { promise: texturePending } ); - - return texturePending; - - } - - dispose() { - - this.workerPool.dispose(); - if ( this.workerSourceURL ) URL.revokeObjectURL( this.workerSourceURL ); - - _activeLoaders --; - - return this; - - } - -} - - -/* CONSTANTS */ - -KTX2Loader.BasisFormat = { - ETC1S: 0, - UASTC_4x4: 1, -}; - -KTX2Loader.TranscoderFormat = { - ETC1: 0, - ETC2: 1, - BC1: 2, - BC3: 3, - BC4: 4, - BC5: 5, - BC7_M6_OPAQUE_ONLY: 6, - BC7_M5: 7, - PVRTC1_4_RGB: 8, - PVRTC1_4_RGBA: 9, - ASTC_4x4: 10, - ATC_RGB: 11, - ATC_RGBA_INTERPOLATED_ALPHA: 12, - RGBA32: 13, - RGB565: 14, - BGR565: 15, - RGBA4444: 16, -}; - -KTX2Loader.EngineFormat = { - RGBAFormat: RGBAFormat, - RGBA_ASTC_4x4_Format: RGBA_ASTC_4x4_Format, - RGBA_BPTC_Format: RGBA_BPTC_Format, - RGBA_ETC2_EAC_Format: RGBA_ETC2_EAC_Format, - RGBA_PVRTC_4BPPV1_Format: RGBA_PVRTC_4BPPV1_Format, - RGBA_S3TC_DXT5_Format: RGBA_S3TC_DXT5_Format, - RGB_ETC1_Format: RGB_ETC1_Format, - RGB_ETC2_Format: RGB_ETC2_Format, - RGB_PVRTC_4BPPV1_Format: RGB_PVRTC_4BPPV1_Format, - RGB_S3TC_DXT1_Format: RGB_S3TC_DXT1_Format, -}; - - -/* WEB WORKER */ - -KTX2Loader.BasisWorker = function () { - - let config; - let transcoderPending; - let BasisModule; - - const EngineFormat = _EngineFormat; // eslint-disable-line no-undef - const TranscoderFormat = _TranscoderFormat; // eslint-disable-line no-undef - const BasisFormat = _BasisFormat; // eslint-disable-line no-undef - - self.addEventListener( 'message', function ( e ) { - - const message = e.data; - - switch ( message.type ) { - - case 'init': - config = message.config; - init( message.transcoderBinary ); - break; - - case 'transcode': - transcoderPending.then( () => { - - try { - - const { faces, buffers, width, height, hasAlpha, format, dfdFlags } = transcode( message.buffer ); - - self.postMessage( { type: 'transcode', id: message.id, faces, width, height, hasAlpha, format, dfdFlags }, buffers ); - - } catch ( error ) { - - console.error( error ); - - self.postMessage( { type: 'error', id: message.id, error: error.message } ); - - } - - } ); - break; - - } - - } ); - - function init( wasmBinary ) { - - transcoderPending = new Promise( ( resolve ) => { - - BasisModule = { wasmBinary, onRuntimeInitialized: resolve }; - BASIS( BasisModule ); // eslint-disable-line no-undef - - } ).then( () => { - - BasisModule.initializeBasis(); - - if ( BasisModule.KTX2File === undefined ) { - - console.warn( 'THREE.KTX2Loader: Please update Basis Universal transcoder.' ); - - } - - } ); - - } - - function transcode( buffer ) { - - const ktx2File = new BasisModule.KTX2File( new Uint8Array( buffer ) ); - - function cleanup() { - - ktx2File.close(); - ktx2File.delete(); - - } - - if ( ! ktx2File.isValid() ) { - - cleanup(); - throw new Error( 'THREE.KTX2Loader: Invalid or unsupported .ktx2 file' ); - - } - - const basisFormat = ktx2File.isUASTC() ? BasisFormat.UASTC_4x4 : BasisFormat.ETC1S; - const width = ktx2File.getWidth(); - const height = ktx2File.getHeight(); - const layerCount = ktx2File.getLayers() || 1; - const levelCount = ktx2File.getLevels(); - const faceCount = ktx2File.getFaces(); - const hasAlpha = ktx2File.getHasAlpha(); - const dfdFlags = ktx2File.getDFDFlags(); - - const { transcoderFormat, engineFormat } = getTranscoderFormat( basisFormat, width, height, hasAlpha ); - - if ( ! width || ! height || ! levelCount ) { - - cleanup(); - throw new Error( 'THREE.KTX2Loader: Invalid texture' ); - - } - - if ( ! ktx2File.startTranscoding() ) { - - cleanup(); - throw new Error( 'THREE.KTX2Loader: .startTranscoding failed' ); - - } - - const faces = []; - const buffers = []; - - for ( let face = 0; face < faceCount; face ++ ) { - - const mipmaps = []; - - for ( let mip = 0; mip < levelCount; mip ++ ) { - - const layerMips = []; - - let mipWidth, mipHeight; - - for ( let layer = 0; layer < layerCount; layer ++ ) { - - const levelInfo = ktx2File.getImageLevelInfo( mip, layer, face ); - - if ( face === 0 && mip === 0 && layer === 0 && ( levelInfo.origWidth % 4 !== 0 || levelInfo.origHeight % 4 !== 0 ) ) { - - console.warn( 'THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions.' ); - - } - - if ( levelCount > 1 ) { - - mipWidth = levelInfo.origWidth; - mipHeight = levelInfo.origHeight; - - } else { - - // Handles non-multiple-of-four dimensions in textures without mipmaps. Textures with - // mipmaps must use multiple-of-four dimensions, for some texture formats and APIs. - // See mrdoob/three.js#25908. - mipWidth = levelInfo.width; - mipHeight = levelInfo.height; - - } - - const dst = new Uint8Array( ktx2File.getImageTranscodedSizeInBytes( mip, layer, 0, transcoderFormat ) ); - const status = ktx2File.transcodeImage( dst, mip, layer, face, transcoderFormat, 0, - 1, - 1 ); - - if ( ! status ) { - - cleanup(); - throw new Error( 'THREE.KTX2Loader: .transcodeImage failed.' ); - - } - - layerMips.push( dst ); - - } - - const mipData = concat( layerMips ); - - mipmaps.push( { data: mipData, width: mipWidth, height: mipHeight } ); - buffers.push( mipData.buffer ); - - } - - faces.push( { mipmaps, width, height, format: engineFormat } ); - - } - - cleanup(); - - return { faces, buffers, width, height, hasAlpha, format: engineFormat, dfdFlags }; - - } - - // - - // Optimal choice of a transcoder target format depends on the Basis format (ETC1S or UASTC), - // device capabilities, and texture dimensions. The list below ranks the formats separately - // for ETC1S and UASTC. - // - // In some cases, transcoding UASTC to RGBA32 might be preferred for higher quality (at - // significant memory cost) compared to ETC1/2, BC1/3, and PVRTC. The transcoder currently - // chooses RGBA32 only as a last resort and does not expose that option to the caller. - const FORMAT_OPTIONS = [ - { - if: 'astcSupported', - basisFormat: [ BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.ASTC_4x4, TranscoderFormat.ASTC_4x4 ], - engineFormat: [ EngineFormat.RGBA_ASTC_4x4_Format, EngineFormat.RGBA_ASTC_4x4_Format ], - priorityETC1S: Infinity, - priorityUASTC: 1, - needsPowerOfTwo: false, - }, - { - if: 'bptcSupported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.BC7_M5, TranscoderFormat.BC7_M5 ], - engineFormat: [ EngineFormat.RGBA_BPTC_Format, EngineFormat.RGBA_BPTC_Format ], - priorityETC1S: 3, - priorityUASTC: 2, - needsPowerOfTwo: false, - }, - { - if: 'dxtSupported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.BC1, TranscoderFormat.BC3 ], - engineFormat: [ EngineFormat.RGB_S3TC_DXT1_Format, EngineFormat.RGBA_S3TC_DXT5_Format ], - priorityETC1S: 4, - priorityUASTC: 5, - needsPowerOfTwo: false, - }, - { - if: 'etc2Supported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.ETC1, TranscoderFormat.ETC2 ], - engineFormat: [ EngineFormat.RGB_ETC2_Format, EngineFormat.RGBA_ETC2_EAC_Format ], - priorityETC1S: 1, - priorityUASTC: 3, - needsPowerOfTwo: false, - }, - { - if: 'etc1Supported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.ETC1 ], - engineFormat: [ EngineFormat.RGB_ETC1_Format ], - priorityETC1S: 2, - priorityUASTC: 4, - needsPowerOfTwo: false, - }, - { - if: 'pvrtcSupported', - basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ], - transcoderFormat: [ TranscoderFormat.PVRTC1_4_RGB, TranscoderFormat.PVRTC1_4_RGBA ], - engineFormat: [ EngineFormat.RGB_PVRTC_4BPPV1_Format, EngineFormat.RGBA_PVRTC_4BPPV1_Format ], - priorityETC1S: 5, - priorityUASTC: 6, - needsPowerOfTwo: true, - }, - ]; - - const ETC1S_OPTIONS = FORMAT_OPTIONS.sort( function ( a, b ) { - - return a.priorityETC1S - b.priorityETC1S; - - } ); - const UASTC_OPTIONS = FORMAT_OPTIONS.sort( function ( a, b ) { - - return a.priorityUASTC - b.priorityUASTC; - - } ); - - function getTranscoderFormat( basisFormat, width, height, hasAlpha ) { - - let transcoderFormat; - let engineFormat; - - const options = basisFormat === BasisFormat.ETC1S ? ETC1S_OPTIONS : UASTC_OPTIONS; - - for ( let i = 0; i < options.length; i ++ ) { - - const opt = options[ i ]; - - if ( ! config[ opt.if ] ) continue; - if ( ! opt.basisFormat.includes( basisFormat ) ) continue; - if ( hasAlpha && opt.transcoderFormat.length < 2 ) continue; - if ( opt.needsPowerOfTwo && ! ( isPowerOfTwo( width ) && isPowerOfTwo( height ) ) ) continue; - - transcoderFormat = opt.transcoderFormat[ hasAlpha ? 1 : 0 ]; - engineFormat = opt.engineFormat[ hasAlpha ? 1 : 0 ]; - - return { transcoderFormat, engineFormat }; - - } - - console.warn( 'THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32.' ); - - transcoderFormat = TranscoderFormat.RGBA32; - engineFormat = EngineFormat.RGBAFormat; - - return { transcoderFormat, engineFormat }; - - } - - function isPowerOfTwo( value ) { - - if ( value <= 2 ) return true; - - return ( value & ( value - 1 ) ) === 0 && value !== 0; - - } - - /** Concatenates N byte arrays. */ - function concat( arrays ) { - - if ( arrays.length === 1 ) return arrays[ 0 ]; - - let totalByteLength = 0; - - for ( let i = 0; i < arrays.length; i ++ ) { - - const array = arrays[ i ]; - totalByteLength += array.byteLength; - - } - - const result = new Uint8Array( totalByteLength ); - - let byteOffset = 0; - - for ( let i = 0; i < arrays.length; i ++ ) { - - const array = arrays[ i ]; - result.set( array, byteOffset ); - - byteOffset += array.byteLength; - - } - - return result; - - } - -}; - -// -// Parsing for non-Basis textures. These textures are may have supercompression -// like Zstd, but they do not require transcoding. - -const UNCOMPRESSED_FORMATS = new Set( [ RGBAFormat, RGFormat, RedFormat ] ); - -const FORMAT_MAP = { - - [ VK_FORMAT_R32G32B32A32_SFLOAT ]: RGBAFormat, - [ VK_FORMAT_R16G16B16A16_SFLOAT ]: RGBAFormat, - [ VK_FORMAT_R8G8B8A8_UNORM ]: RGBAFormat, - [ VK_FORMAT_R8G8B8A8_SRGB ]: RGBAFormat, - - [ VK_FORMAT_R32G32_SFLOAT ]: RGFormat, - [ VK_FORMAT_R16G16_SFLOAT ]: RGFormat, - [ VK_FORMAT_R8G8_UNORM ]: RGFormat, - [ VK_FORMAT_R8G8_SRGB ]: RGFormat, - - [ VK_FORMAT_R32_SFLOAT ]: RedFormat, - [ VK_FORMAT_R16_SFLOAT ]: RedFormat, - [ VK_FORMAT_R8_SRGB ]: RedFormat, - [ VK_FORMAT_R8_UNORM ]: RedFormat, - - [ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ]: RGBA_ASTC_6x6_Format, - [ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ]: RGBA_ASTC_6x6_Format, - -}; - -const TYPE_MAP = { - - [ VK_FORMAT_R32G32B32A32_SFLOAT ]: FloatType, - [ VK_FORMAT_R16G16B16A16_SFLOAT ]: HalfFloatType, - [ VK_FORMAT_R8G8B8A8_UNORM ]: UnsignedByteType, - [ VK_FORMAT_R8G8B8A8_SRGB ]: UnsignedByteType, - - [ VK_FORMAT_R32G32_SFLOAT ]: FloatType, - [ VK_FORMAT_R16G16_SFLOAT ]: HalfFloatType, - [ VK_FORMAT_R8G8_UNORM ]: UnsignedByteType, - [ VK_FORMAT_R8G8_SRGB ]: UnsignedByteType, - - [ VK_FORMAT_R32_SFLOAT ]: FloatType, - [ VK_FORMAT_R16_SFLOAT ]: HalfFloatType, - [ VK_FORMAT_R8_SRGB ]: UnsignedByteType, - [ VK_FORMAT_R8_UNORM ]: UnsignedByteType, - - [ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ]: UnsignedByteType, - [ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ]: UnsignedByteType, - -}; - -async function createRawTexture( container ) { - - const { vkFormat } = container; - - if ( FORMAT_MAP[ vkFormat ] === undefined ) { - - throw new Error( 'THREE.KTX2Loader: Unsupported vkFormat.' ); - - } - - // - - let zstd; - - if ( container.supercompressionScheme === KHR_SUPERCOMPRESSION_ZSTD ) { - - if ( ! _zstd ) { - - _zstd = new Promise( async ( resolve ) => { - - const zstd = new ZSTDDecoder(); - await zstd.init(); - resolve( zstd ); - - } ); - - } - - zstd = await _zstd; - - } - - // - - const mipmaps = []; - - - for ( let levelIndex = 0; levelIndex < container.levels.length; levelIndex ++ ) { - - const levelWidth = Math.max( 1, container.pixelWidth >> levelIndex ); - const levelHeight = Math.max( 1, container.pixelHeight >> levelIndex ); - const levelDepth = container.pixelDepth ? Math.max( 1, container.pixelDepth >> levelIndex ) : 0; - - const level = container.levels[ levelIndex ]; - - let levelData; - - if ( container.supercompressionScheme === KHR_SUPERCOMPRESSION_NONE ) { - - levelData = level.levelData; - - } else if ( container.supercompressionScheme === KHR_SUPERCOMPRESSION_ZSTD ) { - - levelData = zstd.decode( level.levelData, level.uncompressedByteLength ); - - } else { - - throw new Error( 'THREE.KTX2Loader: Unsupported supercompressionScheme.' ); - - } - - let data; - - if ( TYPE_MAP[ vkFormat ] === FloatType ) { - - data = new Float32Array( - - levelData.buffer, - levelData.byteOffset, - levelData.byteLength / Float32Array.BYTES_PER_ELEMENT - - ); - - } else if ( TYPE_MAP[ vkFormat ] === HalfFloatType ) { - - data = new Uint16Array( - - levelData.buffer, - levelData.byteOffset, - levelData.byteLength / Uint16Array.BYTES_PER_ELEMENT - - ); - - } else { - - data = levelData; - - } - - mipmaps.push( { - - data: data, - width: levelWidth, - height: levelHeight, - depth: levelDepth, - - } ); - - } - - let texture; - - if ( UNCOMPRESSED_FORMATS.has( FORMAT_MAP[ vkFormat ] ) ) { - - texture = container.pixelDepth === 0 - ? new DataTexture( mipmaps[ 0 ].data, container.pixelWidth, container.pixelHeight ) - : new Data3DTexture( mipmaps[ 0 ].data, container.pixelWidth, container.pixelHeight, container.pixelDepth ); - - } else { - - if ( container.pixelDepth > 0 ) throw new Error( 'THREE.KTX2Loader: Unsupported pixelDepth.' ); - - texture = new CompressedTexture( mipmaps, container.pixelWidth, container.pixelHeight ); - - } - - texture.mipmaps = mipmaps; - - texture.type = TYPE_MAP[ vkFormat ]; - texture.format = FORMAT_MAP[ vkFormat ]; - texture.colorSpace = parseColorSpace( container ); - texture.needsUpdate = true; - - // - - return Promise.resolve( texture ); - -} - -function parseColorSpace( container ) { - - const dfd = container.dataFormatDescriptor[ 0 ]; - - if ( dfd.colorPrimaries === KHR_DF_PRIMARIES_BT709 ) { - - return dfd.transferFunction === KHR_DF_TRANSFER_SRGB ? SRGBColorSpace : LinearSRGBColorSpace; - - } else if ( dfd.colorPrimaries === KHR_DF_PRIMARIES_DISPLAYP3 ) { - - return dfd.transferFunction === KHR_DF_TRANSFER_SRGB ? DisplayP3ColorSpace : LinearDisplayP3ColorSpace; - - } else if ( dfd.colorPrimaries === KHR_DF_PRIMARIES_UNSPECIFIED ) { - - return NoColorSpace; - - } else { - - console.warn( `THREE.KTX2Loader: Unsupported color primaries, "${ dfd.colorPrimaries }"` ); - return NoColorSpace; - - } - -} - -export { KTX2Loader }; diff --git a/three/addons/loaders/KTXLoader.js b/three/addons/loaders/KTXLoader.js deleted file mode 100644 index 4e4e1c1..0000000 --- a/three/addons/loaders/KTXLoader.js +++ /dev/null @@ -1,176 +0,0 @@ -import { - CompressedTextureLoader -} from 'three'; - -/** - * for description see https://www.khronos.org/opengles/sdk/tools/KTX/ - * for file layout see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/ - * - * ported from https://github.com/BabylonJS/Babylon.js/blob/master/src/Misc/khronosTextureContainer.ts - */ - - -class KTXLoader extends CompressedTextureLoader { - - constructor( manager ) { - - super( manager ); - - } - - parse( buffer, loadMipmaps ) { - - const ktx = new KhronosTextureContainer( buffer, 1 ); - - return { - mipmaps: ktx.mipmaps( loadMipmaps ), - width: ktx.pixelWidth, - height: ktx.pixelHeight, - format: ktx.glInternalFormat, - isCubemap: ktx.numberOfFaces === 6, - mipmapCount: ktx.numberOfMipmapLevels - }; - - } - -} - - -const HEADER_LEN = 12 + ( 13 * 4 ); // identifier + header elements (not including key value meta-data pairs) -// load types -const COMPRESSED_2D = 0; // uses a gl.compressedTexImage2D() -//const COMPRESSED_3D = 1; // uses a gl.compressedTexImage3D() -//const TEX_2D = 2; // uses a gl.texImage2D() -//const TEX_3D = 3; // uses a gl.texImage3D() - -class KhronosTextureContainer { - - /** - * @param {ArrayBuffer} arrayBuffer- contents of the KTX container file - * @param {number} facesExpected- should be either 1 or 6, based whether a cube texture or or - * @param {boolean} threeDExpected- provision for indicating that data should be a 3D texture, not implemented - * @param {boolean} textureArrayExpected- provision for indicating that data should be a texture array, not implemented - */ - constructor( arrayBuffer, facesExpected /*, threeDExpected, textureArrayExpected */ ) { - - this.arrayBuffer = arrayBuffer; - - // Test that it is a ktx formatted file, based on the first 12 bytes, character representation is: - // '´', 'K', 'T', 'X', ' ', '1', '1', 'ª', '\r', '\n', '\x1A', '\n' - // 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A - const identifier = new Uint8Array( this.arrayBuffer, 0, 12 ); - if ( identifier[ 0 ] !== 0xAB || - identifier[ 1 ] !== 0x4B || - identifier[ 2 ] !== 0x54 || - identifier[ 3 ] !== 0x58 || - identifier[ 4 ] !== 0x20 || - identifier[ 5 ] !== 0x31 || - identifier[ 6 ] !== 0x31 || - identifier[ 7 ] !== 0xBB || - identifier[ 8 ] !== 0x0D || - identifier[ 9 ] !== 0x0A || - identifier[ 10 ] !== 0x1A || - identifier[ 11 ] !== 0x0A ) { - - console.error( 'texture missing KTX identifier' ); - return; - - } - - // load the reset of the header in native 32 bit uint - const dataSize = Uint32Array.BYTES_PER_ELEMENT; - const headerDataView = new DataView( this.arrayBuffer, 12, 13 * dataSize ); - const endianness = headerDataView.getUint32( 0, true ); - const littleEndian = endianness === 0x04030201; - - this.glType = headerDataView.getUint32( 1 * dataSize, littleEndian ); // must be 0 for compressed textures - this.glTypeSize = headerDataView.getUint32( 2 * dataSize, littleEndian ); // must be 1 for compressed textures - this.glFormat = headerDataView.getUint32( 3 * dataSize, littleEndian ); // must be 0 for compressed textures - this.glInternalFormat = headerDataView.getUint32( 4 * dataSize, littleEndian ); // the value of arg passed to gl.compressedTexImage2D(,,x,,,,) - this.glBaseInternalFormat = headerDataView.getUint32( 5 * dataSize, littleEndian ); // specify GL_RGB, GL_RGBA, GL_ALPHA, etc (un-compressed only) - this.pixelWidth = headerDataView.getUint32( 6 * dataSize, littleEndian ); // level 0 value of arg passed to gl.compressedTexImage2D(,,,x,,,) - this.pixelHeight = headerDataView.getUint32( 7 * dataSize, littleEndian ); // level 0 value of arg passed to gl.compressedTexImage2D(,,,,x,,) - this.pixelDepth = headerDataView.getUint32( 8 * dataSize, littleEndian ); // level 0 value of arg passed to gl.compressedTexImage3D(,,,,,x,,) - this.numberOfArrayElements = headerDataView.getUint32( 9 * dataSize, littleEndian ); // used for texture arrays - this.numberOfFaces = headerDataView.getUint32( 10 * dataSize, littleEndian ); // used for cubemap textures, should either be 1 or 6 - this.numberOfMipmapLevels = headerDataView.getUint32( 11 * dataSize, littleEndian ); // number of levels; disregard possibility of 0 for compressed textures - this.bytesOfKeyValueData = headerDataView.getUint32( 12 * dataSize, littleEndian ); // the amount of space after the header for meta-data - - // Make sure we have a compressed type. Not only reduces work, but probably better to let dev know they are not compressing. - if ( this.glType !== 0 ) { - - console.warn( 'only compressed formats currently supported' ); - return; - - } else { - - // value of zero is an indication to generate mipmaps @ runtime. Not usually allowed for compressed, so disregard. - this.numberOfMipmapLevels = Math.max( 1, this.numberOfMipmapLevels ); - - } - - if ( this.pixelHeight === 0 || this.pixelDepth !== 0 ) { - - console.warn( 'only 2D textures currently supported' ); - return; - - } - - if ( this.numberOfArrayElements !== 0 ) { - - console.warn( 'texture arrays not currently supported' ); - return; - - } - - if ( this.numberOfFaces !== facesExpected ) { - - console.warn( 'number of faces expected' + facesExpected + ', but found ' + this.numberOfFaces ); - return; - - } - - // we now have a completely validated file, so could use existence of loadType as success - // would need to make this more elaborate & adjust checks above to support more than one load type - this.loadType = COMPRESSED_2D; - - } - - mipmaps( loadMipmaps ) { - - const mipmaps = []; - - // initialize width & height for level 1 - let dataOffset = HEADER_LEN + this.bytesOfKeyValueData; - let width = this.pixelWidth; - let height = this.pixelHeight; - const mipmapCount = loadMipmaps ? this.numberOfMipmapLevels : 1; - - for ( let level = 0; level < mipmapCount; level ++ ) { - - const imageSize = new Int32Array( this.arrayBuffer, dataOffset, 1 )[ 0 ]; // size per face, since not supporting array cubemaps - dataOffset += 4; // size of the image + 4 for the imageSize field - - for ( let face = 0; face < this.numberOfFaces; face ++ ) { - - const byteArray = new Uint8Array( this.arrayBuffer, dataOffset, imageSize ); - - mipmaps.push( { 'data': byteArray, 'width': width, 'height': height } ); - - dataOffset += imageSize; - dataOffset += 3 - ( ( imageSize + 3 ) % 4 ); // add padding for odd sized image - - } - - width = Math.max( 1.0, width * 0.5 ); - height = Math.max( 1.0, height * 0.5 ); - - } - - return mipmaps; - - } - -} - -export { KTXLoader }; diff --git a/three/addons/loaders/LDrawLoader.js b/three/addons/loaders/LDrawLoader.js deleted file mode 100644 index 14ca28d..0000000 --- a/three/addons/loaders/LDrawLoader.js +++ /dev/null @@ -1,2470 +0,0 @@ -import { - BufferAttribute, - BufferGeometry, - Color, - FileLoader, - Group, - LineBasicMaterial, - LineSegments, - Loader, - Matrix4, - Mesh, - MeshStandardMaterial, - ShaderMaterial, - SRGBColorSpace, - UniformsLib, - UniformsUtils, - Vector3, - Ray -} from 'three'; - -// Special surface finish tag types. -// Note: "MATERIAL" tag (e.g. GLITTER, SPECKLE) is not implemented -const FINISH_TYPE_DEFAULT = 0; -const FINISH_TYPE_CHROME = 1; -const FINISH_TYPE_PEARLESCENT = 2; -const FINISH_TYPE_RUBBER = 3; -const FINISH_TYPE_MATTE_METALLIC = 4; -const FINISH_TYPE_METAL = 5; - -// State machine to search a subobject path. -// The LDraw standard establishes these various possible subfolders. -const FILE_LOCATION_TRY_PARTS = 0; -const FILE_LOCATION_TRY_P = 1; -const FILE_LOCATION_TRY_MODELS = 2; -const FILE_LOCATION_AS_IS = 3; -const FILE_LOCATION_TRY_RELATIVE = 4; -const FILE_LOCATION_TRY_ABSOLUTE = 5; -const FILE_LOCATION_NOT_FOUND = 6; - -const MAIN_COLOUR_CODE = '16'; -const MAIN_EDGE_COLOUR_CODE = '24'; - -const COLOR_SPACE_LDRAW = SRGBColorSpace; - -const _tempVec0 = new Vector3(); -const _tempVec1 = new Vector3(); - -class LDrawConditionalLineMaterial extends ShaderMaterial { - - constructor( parameters ) { - - super( { - - uniforms: UniformsUtils.merge( [ - UniformsLib.fog, - { - diffuse: { - value: new Color() - }, - opacity: { - value: 1.0 - } - } - ] ), - - vertexShader: /* glsl */` - attribute vec3 control0; - attribute vec3 control1; - attribute vec3 direction; - varying float discardFlag; - - #include - #include - #include - #include - #include - void main() { - #include - - vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 ); - gl_Position = projectionMatrix * mvPosition; - - // Transform the line segment ends and control points into camera clip space - vec4 c0 = projectionMatrix * modelViewMatrix * vec4( control0, 1.0 ); - vec4 c1 = projectionMatrix * modelViewMatrix * vec4( control1, 1.0 ); - vec4 p0 = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - vec4 p1 = projectionMatrix * modelViewMatrix * vec4( position + direction, 1.0 ); - - c0.xy /= c0.w; - c1.xy /= c1.w; - p0.xy /= p0.w; - p1.xy /= p1.w; - - // Get the direction of the segment and an orthogonal vector - vec2 dir = p1.xy - p0.xy; - vec2 norm = vec2( -dir.y, dir.x ); - - // Get control point directions from the line - vec2 c0dir = c0.xy - p1.xy; - vec2 c1dir = c1.xy - p1.xy; - - // If the vectors to the controls points are pointed in different directions away - // from the line segment then the line should not be drawn. - float d0 = dot( normalize( norm ), normalize( c0dir ) ); - float d1 = dot( normalize( norm ), normalize( c1dir ) ); - discardFlag = float( sign( d0 ) != sign( d1 ) ); - - #include - #include - #include - } - `, - - fragmentShader: /* glsl */` - uniform vec3 diffuse; - uniform float opacity; - varying float discardFlag; - - #include - #include - #include - #include - #include - void main() { - - if ( discardFlag > 0.5 ) discard; - - #include - vec3 outgoingLight = vec3( 0.0 ); - vec4 diffuseColor = vec4( diffuse, opacity ); - #include - #include - outgoingLight = diffuseColor.rgb; // simple shader - gl_FragColor = vec4( outgoingLight, diffuseColor.a ); - #include - #include - #include - #include - } - `, - - } ); - - Object.defineProperties( this, { - - opacity: { - get: function () { - - return this.uniforms.opacity.value; - - }, - - set: function ( value ) { - - this.uniforms.opacity.value = value; - - } - }, - - color: { - get: function () { - - return this.uniforms.diffuse.value; - - } - } - - } ); - - this.setValues( parameters ); - this.isLDrawConditionalLineMaterial = true; - - } - -} - -class ConditionalLineSegments extends LineSegments { - - constructor( geometry, material ) { - - super( geometry, material ); - this.isConditionalLine = true; - - } - -} - -function generateFaceNormals( faces ) { - - for ( let i = 0, l = faces.length; i < l; i ++ ) { - - const face = faces[ i ]; - const vertices = face.vertices; - const v0 = vertices[ 0 ]; - const v1 = vertices[ 1 ]; - const v2 = vertices[ 2 ]; - - _tempVec0.subVectors( v1, v0 ); - _tempVec1.subVectors( v2, v1 ); - face.faceNormal = new Vector3() - .crossVectors( _tempVec0, _tempVec1 ) - .normalize(); - - } - -} - -const _ray = new Ray(); -function smoothNormals( faces, lineSegments, checkSubSegments = false ) { - - // NOTE: 1e2 is pretty coarse but was chosen to quantize the resulting value because - // it allows edges to be smoothed as expected (see minifig arms). - // -- - // And the vector values are initialize multiplied by 1 + 1e-10 to account for floating - // point errors on vertices along quantization boundaries. Ie after matrix multiplication - // vertices that should be merged might be set to "1.7" and "1.6999..." meaning they won't - // get merged. This added epsilon attempts to push these error values to the same quantized - // value for the sake of hashing. See "AT-ST mini" dishes. See mrdoob/three#23169. - - const hashMultiplier = ( 1 + 1e-10 ) * 1e2; - function hashVertex( v ) { - - const x = ~ ~ ( v.x * hashMultiplier ); - const y = ~ ~ ( v.y * hashMultiplier ); - const z = ~ ~ ( v.z * hashMultiplier ); - - return `${ x },${ y },${ z }`; - - } - - function hashEdge( v0, v1 ) { - - return `${ hashVertex( v0 ) }_${ hashVertex( v1 ) }`; - - } - - // converts the two vertices to a ray with a normalized direction and origin of 0, 0, 0 projected - // onto the original line. - function toNormalizedRay( v0, v1, targetRay ) { - - targetRay.direction.subVectors( v1, v0 ).normalize(); - - const scalar = v0.dot( targetRay.direction ); - targetRay.origin.copy( v0 ).addScaledVector( targetRay.direction, - scalar ); - - return targetRay; - - } - - function hashRay( ray ) { - - return hashEdge( ray.origin, ray.direction ); - - } - - const hardEdges = new Set(); - const hardEdgeRays = new Map(); - const halfEdgeList = {}; - const normals = []; - - // Save the list of hard edges by hash - for ( let i = 0, l = lineSegments.length; i < l; i ++ ) { - - const ls = lineSegments[ i ]; - const vertices = ls.vertices; - const v0 = vertices[ 0 ]; - const v1 = vertices[ 1 ]; - hardEdges.add( hashEdge( v0, v1 ) ); - hardEdges.add( hashEdge( v1, v0 ) ); - - // only generate the hard edge ray map if we're checking subsegments because it's more expensive to check - // and requires more memory. - if ( checkSubSegments ) { - - // add both ray directions to the map - const ray = toNormalizedRay( v0, v1, new Ray() ); - const rh1 = hashRay( ray ); - if ( ! hardEdgeRays.has( rh1 ) ) { - - toNormalizedRay( v1, v0, ray ); - const rh2 = hashRay( ray ); - - const info = { - ray, - distances: [], - }; - - hardEdgeRays.set( rh1, info ); - hardEdgeRays.set( rh2, info ); - - } - - // store both segments ends in min, max order in the distances array to check if a face edge is a - // subsegment later. - const info = hardEdgeRays.get( rh1 ); - let d0 = info.ray.direction.dot( v0 ); - let d1 = info.ray.direction.dot( v1 ); - if ( d0 > d1 ) { - - [ d0, d1 ] = [ d1, d0 ]; - - } - - info.distances.push( d0, d1 ); - - } - - } - - // track the half edges associated with each triangle - for ( let i = 0, l = faces.length; i < l; i ++ ) { - - const tri = faces[ i ]; - const vertices = tri.vertices; - const vertCount = vertices.length; - for ( let i2 = 0; i2 < vertCount; i2 ++ ) { - - const index = i2; - const next = ( i2 + 1 ) % vertCount; - const v0 = vertices[ index ]; - const v1 = vertices[ next ]; - const hash = hashEdge( v0, v1 ); - - // don't add the triangle if the edge is supposed to be hard - if ( hardEdges.has( hash ) ) { - - continue; - - } - - // if checking subsegments then check to see if this edge lies on a hard edge ray and whether its within any ray bounds - if ( checkSubSegments ) { - - toNormalizedRay( v0, v1, _ray ); - - const rayHash = hashRay( _ray ); - if ( hardEdgeRays.has( rayHash ) ) { - - const info = hardEdgeRays.get( rayHash ); - const { ray, distances } = info; - let d0 = ray.direction.dot( v0 ); - let d1 = ray.direction.dot( v1 ); - - if ( d0 > d1 ) { - - [ d0, d1 ] = [ d1, d0 ]; - - } - - // return early if the face edge is found to be a subsegment of a line edge meaning the edge will have "hard" normals - let found = false; - for ( let i = 0, l = distances.length; i < l; i += 2 ) { - - if ( d0 >= distances[ i ] && d1 <= distances[ i + 1 ] ) { - - found = true; - break; - - } - - } - - if ( found ) { - - continue; - - } - - } - - } - - const info = { - index: index, - tri: tri - }; - halfEdgeList[ hash ] = info; - - } - - } - - // Iterate until we've tried to connect all faces to share normals - while ( true ) { - - // Stop if there are no more faces left - let halfEdge = null; - for ( const key in halfEdgeList ) { - - halfEdge = halfEdgeList[ key ]; - break; - - } - - if ( halfEdge === null ) { - - break; - - } - - // Exhaustively find all connected faces - const queue = [ halfEdge ]; - while ( queue.length > 0 ) { - - // initialize all vertex normals in this triangle - const tri = queue.pop().tri; - const vertices = tri.vertices; - const vertNormals = tri.normals; - const faceNormal = tri.faceNormal; - - // Check if any edge is connected to another triangle edge - const vertCount = vertices.length; - for ( let i2 = 0; i2 < vertCount; i2 ++ ) { - - const index = i2; - const next = ( i2 + 1 ) % vertCount; - const v0 = vertices[ index ]; - const v1 = vertices[ next ]; - - // delete this triangle from the list so it won't be found again - const hash = hashEdge( v0, v1 ); - delete halfEdgeList[ hash ]; - - const reverseHash = hashEdge( v1, v0 ); - const otherInfo = halfEdgeList[ reverseHash ]; - if ( otherInfo ) { - - const otherTri = otherInfo.tri; - const otherIndex = otherInfo.index; - const otherNormals = otherTri.normals; - const otherVertCount = otherNormals.length; - const otherFaceNormal = otherTri.faceNormal; - - // NOTE: If the angle between faces is > 67.5 degrees then assume it's - // hard edge. There are some cases where the line segments do not line up exactly - // with or span multiple triangle edges (see Lunar Vehicle wheels). - if ( Math.abs( otherTri.faceNormal.dot( tri.faceNormal ) ) < 0.25 ) { - - continue; - - } - - // if this triangle has already been traversed then it won't be in - // the halfEdgeList. If it has not then add it to the queue and delete - // it so it won't be found again. - if ( reverseHash in halfEdgeList ) { - - queue.push( otherInfo ); - delete halfEdgeList[ reverseHash ]; - - } - - // share the first normal - const otherNext = ( otherIndex + 1 ) % otherVertCount; - if ( - vertNormals[ index ] && otherNormals[ otherNext ] && - vertNormals[ index ] !== otherNormals[ otherNext ] - ) { - - otherNormals[ otherNext ].norm.add( vertNormals[ index ].norm ); - vertNormals[ index ].norm = otherNormals[ otherNext ].norm; - - } - - let sharedNormal1 = vertNormals[ index ] || otherNormals[ otherNext ]; - if ( sharedNormal1 === null ) { - - // it's possible to encounter an edge of a triangle that has already been traversed meaning - // both edges already have different normals defined and shared. To work around this we create - // a wrapper object so when those edges are merged the normals can be updated everywhere. - sharedNormal1 = { norm: new Vector3() }; - normals.push( sharedNormal1.norm ); - - } - - if ( vertNormals[ index ] === null ) { - - vertNormals[ index ] = sharedNormal1; - sharedNormal1.norm.add( faceNormal ); - - } - - if ( otherNormals[ otherNext ] === null ) { - - otherNormals[ otherNext ] = sharedNormal1; - sharedNormal1.norm.add( otherFaceNormal ); - - } - - // share the second normal - if ( - vertNormals[ next ] && otherNormals[ otherIndex ] && - vertNormals[ next ] !== otherNormals[ otherIndex ] - ) { - - otherNormals[ otherIndex ].norm.add( vertNormals[ next ].norm ); - vertNormals[ next ].norm = otherNormals[ otherIndex ].norm; - - } - - let sharedNormal2 = vertNormals[ next ] || otherNormals[ otherIndex ]; - if ( sharedNormal2 === null ) { - - sharedNormal2 = { norm: new Vector3() }; - normals.push( sharedNormal2.norm ); - - } - - if ( vertNormals[ next ] === null ) { - - vertNormals[ next ] = sharedNormal2; - sharedNormal2.norm.add( faceNormal ); - - } - - if ( otherNormals[ otherIndex ] === null ) { - - otherNormals[ otherIndex ] = sharedNormal2; - sharedNormal2.norm.add( otherFaceNormal ); - - } - - } - - } - - } - - } - - // The normals of each face have been added up so now we average them by normalizing the vector. - for ( let i = 0, l = normals.length; i < l; i ++ ) { - - normals[ i ].normalize(); - - } - -} - -function isPartType( type ) { - - return type === 'Part' || type === 'Unofficial_Part'; - -} - -function isPrimitiveType( type ) { - - return /primitive/i.test( type ) || type === 'Subpart'; - -} - -class LineParser { - - constructor( line, lineNumber ) { - - this.line = line; - this.lineLength = line.length; - this.currentCharIndex = 0; - this.currentChar = ' '; - this.lineNumber = lineNumber; - - } - - seekNonSpace() { - - while ( this.currentCharIndex < this.lineLength ) { - - this.currentChar = this.line.charAt( this.currentCharIndex ); - - if ( this.currentChar !== ' ' && this.currentChar !== '\t' ) { - - return; - - } - - this.currentCharIndex ++; - - } - - } - - getToken() { - - const pos0 = this.currentCharIndex ++; - - // Seek space - while ( this.currentCharIndex < this.lineLength ) { - - this.currentChar = this.line.charAt( this.currentCharIndex ); - - if ( this.currentChar === ' ' || this.currentChar === '\t' ) { - - break; - - } - - this.currentCharIndex ++; - - } - - const pos1 = this.currentCharIndex; - - this.seekNonSpace(); - - return this.line.substring( pos0, pos1 ); - - } - - getVector() { - - return new Vector3( parseFloat( this.getToken() ), parseFloat( this.getToken() ), parseFloat( this.getToken() ) ); - - } - - getRemainingString() { - - return this.line.substring( this.currentCharIndex, this.lineLength ); - - } - - isAtTheEnd() { - - return this.currentCharIndex >= this.lineLength; - - } - - setToEnd() { - - this.currentCharIndex = this.lineLength; - - } - - getLineNumberString() { - - return this.lineNumber >= 0 ? ' at line ' + this.lineNumber : ''; - - } - -} - -// Fetches and parses an intermediate representation of LDraw parts files. -class LDrawParsedCache { - - constructor( loader ) { - - this.loader = loader; - this._cache = {}; - - } - - cloneResult( original ) { - - const result = {}; - - // vertices are transformed and normals computed before being converted to geometry - // so these pieces must be cloned. - result.faces = original.faces.map( face => { - - return { - colorCode: face.colorCode, - material: face.material, - vertices: face.vertices.map( v => v.clone() ), - normals: face.normals.map( () => null ), - faceNormal: null - }; - - } ); - - result.conditionalSegments = original.conditionalSegments.map( face => { - - return { - colorCode: face.colorCode, - material: face.material, - vertices: face.vertices.map( v => v.clone() ), - controlPoints: face.controlPoints.map( v => v.clone() ) - }; - - } ); - - result.lineSegments = original.lineSegments.map( face => { - - return { - colorCode: face.colorCode, - material: face.material, - vertices: face.vertices.map( v => v.clone() ) - }; - - } ); - - // none if this is subsequently modified - result.type = original.type; - result.category = original.category; - result.keywords = original.keywords; - result.author = original.author; - result.subobjects = original.subobjects; - result.fileName = original.fileName; - result.totalFaces = original.totalFaces; - result.startingBuildingStep = original.startingBuildingStep; - result.materials = original.materials; - result.group = null; - return result; - - } - - async fetchData( fileName ) { - - let triedLowerCase = false; - let locationState = FILE_LOCATION_TRY_PARTS; - while ( locationState !== FILE_LOCATION_NOT_FOUND ) { - - let subobjectURL = fileName; - switch ( locationState ) { - - case FILE_LOCATION_AS_IS: - locationState = locationState + 1; - break; - - case FILE_LOCATION_TRY_PARTS: - subobjectURL = 'parts/' + subobjectURL; - locationState = locationState + 1; - break; - - case FILE_LOCATION_TRY_P: - subobjectURL = 'p/' + subobjectURL; - locationState = locationState + 1; - break; - - case FILE_LOCATION_TRY_MODELS: - subobjectURL = 'models/' + subobjectURL; - locationState = locationState + 1; - break; - - case FILE_LOCATION_TRY_RELATIVE: - subobjectURL = fileName.substring( 0, fileName.lastIndexOf( '/' ) + 1 ) + subobjectURL; - locationState = locationState + 1; - break; - - case FILE_LOCATION_TRY_ABSOLUTE: - - if ( triedLowerCase ) { - - // Try absolute path - locationState = FILE_LOCATION_NOT_FOUND; - - } else { - - // Next attempt is lower case - fileName = fileName.toLowerCase(); - subobjectURL = fileName; - triedLowerCase = true; - locationState = FILE_LOCATION_TRY_PARTS; - - } - - break; - - } - - const loader = this.loader; - const fileLoader = new FileLoader( loader.manager ); - fileLoader.setPath( loader.partsLibraryPath ); - fileLoader.setRequestHeader( loader.requestHeader ); - fileLoader.setWithCredentials( loader.withCredentials ); - - try { - - const text = await fileLoader.loadAsync( subobjectURL ); - return text; - - } catch ( _ ) { - - continue; - - } - - } - - throw new Error( 'LDrawLoader: Subobject "' + fileName + '" could not be loaded.' ); - - } - - parse( text, fileName = null ) { - - const loader = this.loader; - - // final results - const faces = []; - const lineSegments = []; - const conditionalSegments = []; - const subobjects = []; - const materials = {}; - - const getLocalMaterial = colorCode => { - - return materials[ colorCode ] || null; - - }; - - let type = 'Model'; - let category = null; - let keywords = null; - let author = null; - let totalFaces = 0; - - // split into lines - if ( text.indexOf( '\r\n' ) !== - 1 ) { - - // This is faster than String.split with regex that splits on both - text = text.replace( /\r\n/g, '\n' ); - - } - - const lines = text.split( '\n' ); - const numLines = lines.length; - - let parsingEmbeddedFiles = false; - let currentEmbeddedFileName = null; - let currentEmbeddedText = null; - - let bfcCertified = false; - let bfcCCW = true; - let bfcInverted = false; - let bfcCull = true; - - let startingBuildingStep = false; - - // Parse all line commands - for ( let lineIndex = 0; lineIndex < numLines; lineIndex ++ ) { - - const line = lines[ lineIndex ]; - - if ( line.length === 0 ) continue; - - if ( parsingEmbeddedFiles ) { - - if ( line.startsWith( '0 FILE ' ) ) { - - // Save previous embedded file in the cache - this.setData( currentEmbeddedFileName, currentEmbeddedText ); - - // New embedded text file - currentEmbeddedFileName = line.substring( 7 ); - currentEmbeddedText = ''; - - } else { - - currentEmbeddedText += line + '\n'; - - } - - continue; - - } - - const lp = new LineParser( line, lineIndex + 1 ); - lp.seekNonSpace(); - - if ( lp.isAtTheEnd() ) { - - // Empty line - continue; - - } - - // Parse the line type - const lineType = lp.getToken(); - - let material; - let colorCode; - let segment; - let ccw; - let doubleSided; - let v0, v1, v2, v3, c0, c1; - - switch ( lineType ) { - - // Line type 0: Comment or META - case '0': - - // Parse meta directive - const meta = lp.getToken(); - - if ( meta ) { - - switch ( meta ) { - - case '!LDRAW_ORG': - - type = lp.getToken(); - break; - - case '!COLOUR': - - material = loader.parseColorMetaDirective( lp ); - if ( material ) { - - materials[ material.userData.code ] = material; - - } else { - - console.warn( 'LDrawLoader: Error parsing material' + lp.getLineNumberString() ); - - } - - break; - - case '!CATEGORY': - - category = lp.getToken(); - break; - - case '!KEYWORDS': - - const newKeywords = lp.getRemainingString().split( ',' ); - if ( newKeywords.length > 0 ) { - - if ( ! keywords ) { - - keywords = []; - - } - - newKeywords.forEach( function ( keyword ) { - - keywords.push( keyword.trim() ); - - } ); - - } - - break; - - case 'FILE': - - if ( lineIndex > 0 ) { - - // Start embedded text files parsing - parsingEmbeddedFiles = true; - currentEmbeddedFileName = lp.getRemainingString(); - currentEmbeddedText = ''; - - bfcCertified = false; - bfcCCW = true; - - } - - break; - - case 'BFC': - - // Changes to the backface culling state - while ( ! lp.isAtTheEnd() ) { - - const token = lp.getToken(); - - switch ( token ) { - - case 'CERTIFY': - case 'NOCERTIFY': - - bfcCertified = token === 'CERTIFY'; - bfcCCW = true; - - break; - - case 'CW': - case 'CCW': - - bfcCCW = token === 'CCW'; - - break; - - case 'INVERTNEXT': - - bfcInverted = true; - - break; - - case 'CLIP': - case 'NOCLIP': - - bfcCull = token === 'CLIP'; - - break; - - default: - - console.warn( 'THREE.LDrawLoader: BFC directive "' + token + '" is unknown.' ); - - break; - - } - - } - - break; - - case 'STEP': - - startingBuildingStep = true; - - break; - - case 'Author:': - - author = lp.getToken(); - - break; - - default: - // Other meta directives are not implemented - break; - - } - - } - - break; - - // Line type 1: Sub-object file - case '1': - - colorCode = lp.getToken(); - material = getLocalMaterial( colorCode ); - - const posX = parseFloat( lp.getToken() ); - const posY = parseFloat( lp.getToken() ); - const posZ = parseFloat( lp.getToken() ); - const m0 = parseFloat( lp.getToken() ); - const m1 = parseFloat( lp.getToken() ); - const m2 = parseFloat( lp.getToken() ); - const m3 = parseFloat( lp.getToken() ); - const m4 = parseFloat( lp.getToken() ); - const m5 = parseFloat( lp.getToken() ); - const m6 = parseFloat( lp.getToken() ); - const m7 = parseFloat( lp.getToken() ); - const m8 = parseFloat( lp.getToken() ); - - const matrix = new Matrix4().set( - m0, m1, m2, posX, - m3, m4, m5, posY, - m6, m7, m8, posZ, - 0, 0, 0, 1 - ); - - let fileName = lp.getRemainingString().trim().replace( /\\/g, '/' ); - - if ( loader.fileMap[ fileName ] ) { - - // Found the subobject path in the preloaded file path map - fileName = loader.fileMap[ fileName ]; - - } else { - - // Standardized subfolders - if ( fileName.startsWith( 's/' ) ) { - - fileName = 'parts/' + fileName; - - } else if ( fileName.startsWith( '48/' ) ) { - - fileName = 'p/' + fileName; - - } - - } - - subobjects.push( { - material: material, - colorCode: colorCode, - matrix: matrix, - fileName: fileName, - inverted: bfcInverted, - startingBuildingStep: startingBuildingStep - } ); - - startingBuildingStep = false; - bfcInverted = false; - - break; - - // Line type 2: Line segment - case '2': - - colorCode = lp.getToken(); - material = getLocalMaterial( colorCode ); - v0 = lp.getVector(); - v1 = lp.getVector(); - - segment = { - material: material, - colorCode: colorCode, - vertices: [ v0, v1 ], - }; - - lineSegments.push( segment ); - - break; - - // Line type 5: Conditional Line segment - case '5': - - colorCode = lp.getToken(); - material = getLocalMaterial( colorCode ); - v0 = lp.getVector(); - v1 = lp.getVector(); - c0 = lp.getVector(); - c1 = lp.getVector(); - - segment = { - material: material, - colorCode: colorCode, - vertices: [ v0, v1 ], - controlPoints: [ c0, c1 ], - }; - - conditionalSegments.push( segment ); - - break; - - // Line type 3: Triangle - case '3': - - colorCode = lp.getToken(); - material = getLocalMaterial( colorCode ); - ccw = bfcCCW; - doubleSided = ! bfcCertified || ! bfcCull; - - if ( ccw === true ) { - - v0 = lp.getVector(); - v1 = lp.getVector(); - v2 = lp.getVector(); - - } else { - - v2 = lp.getVector(); - v1 = lp.getVector(); - v0 = lp.getVector(); - - } - - faces.push( { - material: material, - colorCode: colorCode, - faceNormal: null, - vertices: [ v0, v1, v2 ], - normals: [ null, null, null ], - } ); - totalFaces ++; - - if ( doubleSided === true ) { - - faces.push( { - material: material, - colorCode: colorCode, - faceNormal: null, - vertices: [ v2, v1, v0 ], - normals: [ null, null, null ], - } ); - totalFaces ++; - - } - - break; - - // Line type 4: Quadrilateral - case '4': - - colorCode = lp.getToken(); - material = getLocalMaterial( colorCode ); - ccw = bfcCCW; - doubleSided = ! bfcCertified || ! bfcCull; - - if ( ccw === true ) { - - v0 = lp.getVector(); - v1 = lp.getVector(); - v2 = lp.getVector(); - v3 = lp.getVector(); - - } else { - - v3 = lp.getVector(); - v2 = lp.getVector(); - v1 = lp.getVector(); - v0 = lp.getVector(); - - } - - // specifically place the triangle diagonal in the v0 and v1 slots so we can - // account for the doubling of vertices later when smoothing normals. - faces.push( { - material: material, - colorCode: colorCode, - faceNormal: null, - vertices: [ v0, v1, v2, v3 ], - normals: [ null, null, null, null ], - } ); - totalFaces += 2; - - if ( doubleSided === true ) { - - faces.push( { - material: material, - colorCode: colorCode, - faceNormal: null, - vertices: [ v3, v2, v1, v0 ], - normals: [ null, null, null, null ], - } ); - totalFaces += 2; - - } - - break; - - default: - throw new Error( 'LDrawLoader: Unknown line type "' + lineType + '"' + lp.getLineNumberString() + '.' ); - - } - - } - - if ( parsingEmbeddedFiles ) { - - this.setData( currentEmbeddedFileName, currentEmbeddedText ); - - } - - return { - faces, - conditionalSegments, - lineSegments, - type, - category, - keywords, - author, - subobjects, - totalFaces, - startingBuildingStep, - materials, - fileName, - group: null - }; - - } - - // returns an (optionally cloned) instance of the data - getData( fileName, clone = true ) { - - const key = fileName.toLowerCase(); - const result = this._cache[ key ]; - if ( result === null || result instanceof Promise ) { - - return null; - - } - - if ( clone ) { - - return this.cloneResult( result ); - - } else { - - return result; - - } - - } - - // kicks off a fetch and parse of the requested data if it hasn't already been loaded. Returns when - // the data is ready to use and can be retrieved synchronously with "getData". - async ensureDataLoaded( fileName ) { - - const key = fileName.toLowerCase(); - if ( ! ( key in this._cache ) ) { - - // replace the promise with a copy of the parsed data for immediate processing - this._cache[ key ] = this.fetchData( fileName ).then( text => { - - const info = this.parse( text, fileName ); - this._cache[ key ] = info; - return info; - - } ); - - } - - await this._cache[ key ]; - - } - - // sets the data in the cache from parsed data - setData( fileName, text ) { - - const key = fileName.toLowerCase(); - this._cache[ key ] = this.parse( text, fileName ); - - } - -} - -// returns the material for an associated color code. If the color code is 16 for a face or 24 for -// an edge then the passthroughColorCode is used. -function getMaterialFromCode( colorCode, parentColorCode, materialHierarchy, forEdge ) { - - const isPassthrough = ! forEdge && colorCode === MAIN_COLOUR_CODE || forEdge && colorCode === MAIN_EDGE_COLOUR_CODE; - if ( isPassthrough ) { - - colorCode = parentColorCode; - - } - - return materialHierarchy[ colorCode ] || null; - -} - -// Class used to parse and build LDraw parts as three.js objects and cache them if they're a "Part" type. -class LDrawPartsGeometryCache { - - constructor( loader ) { - - this.loader = loader; - this.parseCache = new LDrawParsedCache( loader ); - this._cache = {}; - - } - - // Convert the given file information into a mesh by processing subobjects. - async processIntoMesh( info ) { - - const loader = this.loader; - const parseCache = this.parseCache; - const faceMaterials = new Set(); - - // Processes the part subobject information to load child parts and merge geometry onto part - // piece object. - const processInfoSubobjects = async ( info, subobject = null ) => { - - const subobjects = info.subobjects; - const promises = []; - - // Trigger load of all subobjects. If a subobject isn't a primitive then load it as a separate - // group which lets instruction steps apply correctly. - for ( let i = 0, l = subobjects.length; i < l; i ++ ) { - - const subobject = subobjects[ i ]; - const promise = parseCache.ensureDataLoaded( subobject.fileName ).then( () => { - - const subobjectInfo = parseCache.getData( subobject.fileName, false ); - if ( ! isPrimitiveType( subobjectInfo.type ) ) { - - return this.loadModel( subobject.fileName ).catch( error => { - - console.warn( error ); - return null; - - } ); - - } - - return processInfoSubobjects( parseCache.getData( subobject.fileName ), subobject ); - - } ); - - promises.push( promise ); - - } - - const group = new Group(); - group.userData.category = info.category; - group.userData.keywords = info.keywords; - group.userData.author = info.author; - group.userData.type = info.type; - group.userData.fileName = info.fileName; - info.group = group; - - const subobjectInfos = await Promise.all( promises ); - for ( let i = 0, l = subobjectInfos.length; i < l; i ++ ) { - - const subobject = info.subobjects[ i ]; - const subobjectInfo = subobjectInfos[ i ]; - - if ( subobjectInfo === null ) { - - // the subobject failed to load - continue; - - } - - // if the subobject was loaded as a separate group then apply the parent scopes materials - if ( subobjectInfo.isGroup ) { - - const subobjectGroup = subobjectInfo; - subobject.matrix.decompose( subobjectGroup.position, subobjectGroup.quaternion, subobjectGroup.scale ); - subobjectGroup.userData.startingBuildingStep = subobject.startingBuildingStep; - subobjectGroup.name = subobject.fileName; - - loader.applyMaterialsToMesh( subobjectGroup, subobject.colorCode, info.materials ); - subobjectGroup.userData.colorCode = subobject.colorCode; - - group.add( subobjectGroup ); - continue; - - } - - // add the subobject group if it has children in case it has both children and primitives - if ( subobjectInfo.group.children.length ) { - - group.add( subobjectInfo.group ); - - } - - // transform the primitives into the local space of the parent piece and append them to - // to the parent primitives list. - const parentLineSegments = info.lineSegments; - const parentConditionalSegments = info.conditionalSegments; - const parentFaces = info.faces; - - const lineSegments = subobjectInfo.lineSegments; - const conditionalSegments = subobjectInfo.conditionalSegments; - - const faces = subobjectInfo.faces; - const matrix = subobject.matrix; - const inverted = subobject.inverted; - const matrixScaleInverted = matrix.determinant() < 0; - const colorCode = subobject.colorCode; - - const lineColorCode = colorCode === MAIN_COLOUR_CODE ? MAIN_EDGE_COLOUR_CODE : colorCode; - for ( let i = 0, l = lineSegments.length; i < l; i ++ ) { - - const ls = lineSegments[ i ]; - const vertices = ls.vertices; - vertices[ 0 ].applyMatrix4( matrix ); - vertices[ 1 ].applyMatrix4( matrix ); - ls.colorCode = ls.colorCode === MAIN_EDGE_COLOUR_CODE ? lineColorCode : ls.colorCode; - ls.material = ls.material || getMaterialFromCode( ls.colorCode, ls.colorCode, info.materials, true ); - - parentLineSegments.push( ls ); - - } - - for ( let i = 0, l = conditionalSegments.length; i < l; i ++ ) { - - const os = conditionalSegments[ i ]; - const vertices = os.vertices; - const controlPoints = os.controlPoints; - vertices[ 0 ].applyMatrix4( matrix ); - vertices[ 1 ].applyMatrix4( matrix ); - controlPoints[ 0 ].applyMatrix4( matrix ); - controlPoints[ 1 ].applyMatrix4( matrix ); - os.colorCode = os.colorCode === MAIN_EDGE_COLOUR_CODE ? lineColorCode : os.colorCode; - os.material = os.material || getMaterialFromCode( os.colorCode, os.colorCode, info.materials, true ); - - parentConditionalSegments.push( os ); - - } - - for ( let i = 0, l = faces.length; i < l; i ++ ) { - - const tri = faces[ i ]; - const vertices = tri.vertices; - for ( let i = 0, l = vertices.length; i < l; i ++ ) { - - vertices[ i ].applyMatrix4( matrix ); - - } - - tri.colorCode = tri.colorCode === MAIN_COLOUR_CODE ? colorCode : tri.colorCode; - tri.material = tri.material || getMaterialFromCode( tri.colorCode, colorCode, info.materials, false ); - faceMaterials.add( tri.colorCode ); - - // If the scale of the object is negated then the triangle winding order - // needs to be flipped. - if ( matrixScaleInverted !== inverted ) { - - vertices.reverse(); - - } - - parentFaces.push( tri ); - - } - - info.totalFaces += subobjectInfo.totalFaces; - - } - - // Apply the parent subobjects pass through material code to this object. This is done several times due - // to material scoping. - if ( subobject ) { - - loader.applyMaterialsToMesh( group, subobject.colorCode, info.materials ); - group.userData.colorCode = subobject.colorCode; - - } - - return info; - - }; - - // Track material use to see if we need to use the normal smooth slow path for hard edges. - for ( let i = 0, l = info.faces; i < l; i ++ ) { - - faceMaterials.add( info.faces[ i ].colorCode ); - - } - - await processInfoSubobjects( info ); - - if ( loader.smoothNormals ) { - - const checkSubSegments = faceMaterials.size > 1; - generateFaceNormals( info.faces ); - smoothNormals( info.faces, info.lineSegments, checkSubSegments ); - - } - - // Add the primitive objects and metadata. - const group = info.group; - if ( info.faces.length > 0 ) { - - group.add( createObject( this.loader, info.faces, 3, false, info.totalFaces ) ); - - } - - if ( info.lineSegments.length > 0 ) { - - group.add( createObject( this.loader, info.lineSegments, 2 ) ); - - } - - if ( info.conditionalSegments.length > 0 ) { - - group.add( createObject( this.loader, info.conditionalSegments, 2, true ) ); - - } - - return group; - - } - - hasCachedModel( fileName ) { - - return fileName !== null && fileName.toLowerCase() in this._cache; - - } - - async getCachedModel( fileName ) { - - if ( fileName !== null && this.hasCachedModel( fileName ) ) { - - const key = fileName.toLowerCase(); - const group = await this._cache[ key ]; - return group.clone(); - - } else { - - return null; - - } - - } - - // Loads and parses the model with the given file name. Returns a cached copy if available. - async loadModel( fileName ) { - - const parseCache = this.parseCache; - const key = fileName.toLowerCase(); - if ( this.hasCachedModel( fileName ) ) { - - // Return cached model if available. - return this.getCachedModel( fileName ); - - } else { - - // Otherwise parse a new model. - // Ensure the file data is loaded and pre parsed. - await parseCache.ensureDataLoaded( fileName ); - - const info = parseCache.getData( fileName ); - const promise = this.processIntoMesh( info ); - - // Now that the file has loaded it's possible that another part parse has been waiting in parallel - // so check the cache again to see if it's been added since the last async operation so we don't - // do unnecessary work. - if ( this.hasCachedModel( fileName ) ) { - - return this.getCachedModel( fileName ); - - } - - // Cache object if it's a part so it can be reused later. - if ( isPartType( info.type ) ) { - - this._cache[ key ] = promise; - - } - - // return a copy - const group = await promise; - return group.clone(); - - } - - } - - // parses the given model text into a renderable object. Returns cached copy if available. - async parseModel( text ) { - - const parseCache = this.parseCache; - const info = parseCache.parse( text ); - if ( isPartType( info.type ) && this.hasCachedModel( info.fileName ) ) { - - return this.getCachedModel( info.fileName ); - - } - - return this.processIntoMesh( info ); - - } - -} - -function sortByMaterial( a, b ) { - - if ( a.colorCode === b.colorCode ) { - - return 0; - - } - - if ( a.colorCode < b.colorCode ) { - - return - 1; - - } - - return 1; - -} - -function createObject( loader, elements, elementSize, isConditionalSegments = false, totalElements = null ) { - - // Creates a LineSegments (elementSize = 2) or a Mesh (elementSize = 3 ) - // With per face / segment material, implemented with mesh groups and materials array - - // Sort the faces or line segments by color code to make later the mesh groups - elements.sort( sortByMaterial ); - - if ( totalElements === null ) { - - totalElements = elements.length; - - } - - const positions = new Float32Array( elementSize * totalElements * 3 ); - const normals = elementSize === 3 ? new Float32Array( elementSize * totalElements * 3 ) : null; - const materials = []; - - const quadArray = new Array( 6 ); - const bufferGeometry = new BufferGeometry(); - let prevMaterial = null; - let index0 = 0; - let numGroupVerts = 0; - let offset = 0; - - for ( let iElem = 0, nElem = elements.length; iElem < nElem; iElem ++ ) { - - const elem = elements[ iElem ]; - let vertices = elem.vertices; - if ( vertices.length === 4 ) { - - quadArray[ 0 ] = vertices[ 0 ]; - quadArray[ 1 ] = vertices[ 1 ]; - quadArray[ 2 ] = vertices[ 2 ]; - quadArray[ 3 ] = vertices[ 0 ]; - quadArray[ 4 ] = vertices[ 2 ]; - quadArray[ 5 ] = vertices[ 3 ]; - vertices = quadArray; - - } - - for ( let j = 0, l = vertices.length; j < l; j ++ ) { - - const v = vertices[ j ]; - const index = offset + j * 3; - positions[ index + 0 ] = v.x; - positions[ index + 1 ] = v.y; - positions[ index + 2 ] = v.z; - - } - - // create the normals array if this is a set of faces - if ( elementSize === 3 ) { - - if ( ! elem.faceNormal ) { - - const v0 = vertices[ 0 ]; - const v1 = vertices[ 1 ]; - const v2 = vertices[ 2 ]; - _tempVec0.subVectors( v1, v0 ); - _tempVec1.subVectors( v2, v1 ); - elem.faceNormal = new Vector3() - .crossVectors( _tempVec0, _tempVec1 ) - .normalize(); - - } - - let elemNormals = elem.normals; - if ( elemNormals.length === 4 ) { - - quadArray[ 0 ] = elemNormals[ 0 ]; - quadArray[ 1 ] = elemNormals[ 1 ]; - quadArray[ 2 ] = elemNormals[ 2 ]; - quadArray[ 3 ] = elemNormals[ 0 ]; - quadArray[ 4 ] = elemNormals[ 2 ]; - quadArray[ 5 ] = elemNormals[ 3 ]; - elemNormals = quadArray; - - } - - for ( let j = 0, l = elemNormals.length; j < l; j ++ ) { - - // use face normal if a vertex normal is not provided - let n = elem.faceNormal; - if ( elemNormals[ j ] ) { - - n = elemNormals[ j ].norm; - - } - - const index = offset + j * 3; - normals[ index + 0 ] = n.x; - normals[ index + 1 ] = n.y; - normals[ index + 2 ] = n.z; - - } - - } - - if ( prevMaterial !== elem.colorCode ) { - - if ( prevMaterial !== null ) { - - bufferGeometry.addGroup( index0, numGroupVerts, materials.length - 1 ); - - } - - const material = elem.material; - - if ( material !== null ) { - - if ( elementSize === 3 ) { - - materials.push( material ); - - } else if ( elementSize === 2 ) { - - if ( isConditionalSegments ) { - - const edgeMaterial = loader.edgeMaterialCache.get( material ); - - materials.push( loader.conditionalEdgeMaterialCache.get( edgeMaterial ) ); - - } else { - - materials.push( loader.edgeMaterialCache.get( material ) ); - - } - - } - - } else { - - // If a material has not been made available yet then keep the color code string in the material array - // to save the spot for the material once a parent scopes materials are being applied to the object. - materials.push( elem.colorCode ); - - } - - prevMaterial = elem.colorCode; - index0 = offset / 3; - numGroupVerts = vertices.length; - - } else { - - numGroupVerts += vertices.length; - - } - - offset += 3 * vertices.length; - - } - - if ( numGroupVerts > 0 ) { - - bufferGeometry.addGroup( index0, Infinity, materials.length - 1 ); - - } - - bufferGeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) ); - - if ( normals !== null ) { - - bufferGeometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) ); - - } - - let object3d = null; - - if ( elementSize === 2 ) { - - if ( isConditionalSegments ) { - - object3d = new ConditionalLineSegments( bufferGeometry, materials.length === 1 ? materials[ 0 ] : materials ); - - } else { - - object3d = new LineSegments( bufferGeometry, materials.length === 1 ? materials[ 0 ] : materials ); - - } - - } else if ( elementSize === 3 ) { - - object3d = new Mesh( bufferGeometry, materials.length === 1 ? materials[ 0 ] : materials ); - - } - - if ( isConditionalSegments ) { - - object3d.isConditionalLine = true; - - const controlArray0 = new Float32Array( elements.length * 3 * 2 ); - const controlArray1 = new Float32Array( elements.length * 3 * 2 ); - const directionArray = new Float32Array( elements.length * 3 * 2 ); - for ( let i = 0, l = elements.length; i < l; i ++ ) { - - const os = elements[ i ]; - const vertices = os.vertices; - const controlPoints = os.controlPoints; - const c0 = controlPoints[ 0 ]; - const c1 = controlPoints[ 1 ]; - const v0 = vertices[ 0 ]; - const v1 = vertices[ 1 ]; - const index = i * 3 * 2; - controlArray0[ index + 0 ] = c0.x; - controlArray0[ index + 1 ] = c0.y; - controlArray0[ index + 2 ] = c0.z; - controlArray0[ index + 3 ] = c0.x; - controlArray0[ index + 4 ] = c0.y; - controlArray0[ index + 5 ] = c0.z; - - controlArray1[ index + 0 ] = c1.x; - controlArray1[ index + 1 ] = c1.y; - controlArray1[ index + 2 ] = c1.z; - controlArray1[ index + 3 ] = c1.x; - controlArray1[ index + 4 ] = c1.y; - controlArray1[ index + 5 ] = c1.z; - - directionArray[ index + 0 ] = v1.x - v0.x; - directionArray[ index + 1 ] = v1.y - v0.y; - directionArray[ index + 2 ] = v1.z - v0.z; - directionArray[ index + 3 ] = v1.x - v0.x; - directionArray[ index + 4 ] = v1.y - v0.y; - directionArray[ index + 5 ] = v1.z - v0.z; - - } - - bufferGeometry.setAttribute( 'control0', new BufferAttribute( controlArray0, 3, false ) ); - bufferGeometry.setAttribute( 'control1', new BufferAttribute( controlArray1, 3, false ) ); - bufferGeometry.setAttribute( 'direction', new BufferAttribute( directionArray, 3, false ) ); - - } - - return object3d; - -} - -// - -class LDrawLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - // Array of THREE.Material - this.materials = []; - this.materialLibrary = {}; - this.edgeMaterialCache = new WeakMap(); - this.conditionalEdgeMaterialCache = new WeakMap(); - - // This also allows to handle the embedded text files ("0 FILE" lines) - this.partsCache = new LDrawPartsGeometryCache( this ); - - // This object is a map from file names to paths. It agilizes the paths search. If it is not set then files will be searched by trial and error. - this.fileMap = {}; - - // Initializes the materials library with default materials - this.setMaterials( [] ); - - // If this flag is set to true the vertex normals will be smoothed. - this.smoothNormals = true; - - // The path to load parts from the LDraw parts library from. - this.partsLibraryPath = ''; - - // Material assigned to not available colors for meshes and edges - this.missingColorMaterial = new MeshStandardMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, color: 0xFF00FF, roughness: 0.3, metalness: 0 } ); - this.missingEdgeColorMaterial = new LineBasicMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, color: 0xFF00FF } ); - this.missingConditionalEdgeColorMaterial = new LDrawConditionalLineMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, fog: true, color: 0xFF00FF } ); - this.edgeMaterialCache.set( this.missingColorMaterial, this.missingEdgeColorMaterial ); - this.conditionalEdgeMaterialCache.set( this.missingEdgeColorMaterial, this.missingConditionalEdgeColorMaterial ); - - } - - setPartsLibraryPath( path ) { - - this.partsLibraryPath = path; - return this; - - } - - async preloadMaterials( url ) { - - const fileLoader = new FileLoader( this.manager ); - fileLoader.setPath( this.path ); - fileLoader.setRequestHeader( this.requestHeader ); - fileLoader.setWithCredentials( this.withCredentials ); - - const text = await fileLoader.loadAsync( url ); - const colorLineRegex = /^0 !COLOUR/; - const lines = text.split( /[\n\r]/g ); - const materials = []; - for ( let i = 0, l = lines.length; i < l; i ++ ) { - - const line = lines[ i ]; - if ( colorLineRegex.test( line ) ) { - - const directive = line.replace( colorLineRegex, '' ); - const material = this.parseColorMetaDirective( new LineParser( directive ) ); - materials.push( material ); - - } - - } - - this.setMaterials( materials ); - - } - - load( url, onLoad, onProgress, onError ) { - - const fileLoader = new FileLoader( this.manager ); - fileLoader.setPath( this.path ); - fileLoader.setRequestHeader( this.requestHeader ); - fileLoader.setWithCredentials( this.withCredentials ); - fileLoader.load( url, text => { - - this.partsCache - .parseModel( text, this.materialLibrary ) - .then( group => { - - this.applyMaterialsToMesh( group, MAIN_COLOUR_CODE, this.materialLibrary, true ); - this.computeBuildingSteps( group ); - group.userData.fileName = url; - onLoad( group ); - - } ) - .catch( onError ); - - }, onProgress, onError ); - - } - - parse( text, onLoad ) { - - this.partsCache - .parseModel( text, this.materialLibrary ) - .then( group => { - - this.applyMaterialsToMesh( group, MAIN_COLOUR_CODE, this.materialLibrary, true ); - this.computeBuildingSteps( group ); - group.userData.fileName = ''; - onLoad( group ); - - } ); - - } - - setMaterials( materials ) { - - this.materialLibrary = {}; - this.materials = []; - for ( let i = 0, l = materials.length; i < l; i ++ ) { - - this.addMaterial( materials[ i ] ); - - } - - // Add default main triangle and line edge materials (used in pieces that can be colored with a main color) - this.addMaterial( this.parseColorMetaDirective( new LineParser( 'Main_Colour CODE 16 VALUE #FF8080 EDGE #333333' ) ) ); - this.addMaterial( this.parseColorMetaDirective( new LineParser( 'Edge_Colour CODE 24 VALUE #A0A0A0 EDGE #333333' ) ) ); - - return this; - - } - - setFileMap( fileMap ) { - - this.fileMap = fileMap; - - return this; - - } - - addMaterial( material ) { - - // Adds a material to the material library which is on top of the parse scopes stack. And also to the materials array - - const matLib = this.materialLibrary; - if ( ! matLib[ material.userData.code ] ) { - - this.materials.push( material ); - matLib[ material.userData.code ] = material; - - } - - return this; - - } - - getMaterial( colorCode ) { - - if ( colorCode.startsWith( '0x2' ) ) { - - // Special 'direct' material value (RGB color) - const color = colorCode.substring( 3 ); - - return this.parseColorMetaDirective( new LineParser( 'Direct_Color_' + color + ' CODE -1 VALUE #' + color + ' EDGE #' + color + '' ) ); - - } - - return this.materialLibrary[ colorCode ] || null; - - } - - // Applies the appropriate materials to a prebuilt hierarchy of geometry. Assumes that color codes are present - // in the material array if they need to be filled in. - applyMaterialsToMesh( group, parentColorCode, materialHierarchy, finalMaterialPass = false ) { - - // find any missing materials as indicated by a color code string and replace it with a material from the current material lib - const loader = this; - const parentIsPassthrough = parentColorCode === MAIN_COLOUR_CODE; - group.traverse( c => { - - if ( c.isMesh || c.isLineSegments ) { - - if ( Array.isArray( c.material ) ) { - - for ( let i = 0, l = c.material.length; i < l; i ++ ) { - - if ( ! c.material[ i ].isMaterial ) { - - c.material[ i ] = getMaterial( c, c.material[ i ] ); - - } - - } - - } else if ( ! c.material.isMaterial ) { - - c.material = getMaterial( c, c.material ); - - } - - } - - } ); - - - // Returns the appropriate material for the object (line or face) given color code. If the code is "pass through" - // (24 for lines, 16 for edges) then the pass through color code is used. If that is also pass through then it's - // simply returned for the subsequent material application. - function getMaterial( c, colorCode ) { - - // if our parent is a passthrough color code and we don't have the current material color available then - // return early. - if ( parentIsPassthrough && ! ( colorCode in materialHierarchy ) && ! finalMaterialPass ) { - - return colorCode; - - } - - const forEdge = c.isLineSegments || c.isConditionalLine; - const isPassthrough = ! forEdge && colorCode === MAIN_COLOUR_CODE || forEdge && colorCode === MAIN_EDGE_COLOUR_CODE; - if ( isPassthrough ) { - - colorCode = parentColorCode; - - } - - let material = null; - if ( colorCode in materialHierarchy ) { - - material = materialHierarchy[ colorCode ]; - - } else if ( finalMaterialPass ) { - - // see if we can get the final material from from the "getMaterial" function which will attempt to - // parse the "direct" colors - material = loader.getMaterial( colorCode ); - if ( material === null ) { - - // otherwise throw a warning if this is final opportunity to set the material - console.warn( `LDrawLoader: Material properties for code ${ colorCode } not available.` ); - - // And return the 'missing color' material - material = loader.missingColorMaterial; - - } - - - } else { - - return colorCode; - - } - - if ( c.isLineSegments ) { - - material = loader.edgeMaterialCache.get( material ); - - if ( c.isConditionalLine ) { - - material = loader.conditionalEdgeMaterialCache.get( material ); - - } - - } - - return material; - - } - - } - - getMainMaterial() { - - return this.getMaterial( MAIN_COLOUR_CODE ); - - } - - getMainEdgeMaterial() { - - const mat = this.getMaterial( MAIN_EDGE_COLOUR_CODE ); - return mat ? this.edgeMaterialCache.get( mat ) : null; - - } - - parseColorMetaDirective( lineParser ) { - - // Parses a color definition and returns a THREE.Material - - let code = null; - - // Triangle and line colors - let fillColor = '#FF00FF'; - let edgeColor = '#FF00FF'; - - // Transparency - let alpha = 1; - let isTransparent = false; - // Self-illumination: - let luminance = 0; - - let finishType = FINISH_TYPE_DEFAULT; - - let edgeMaterial = null; - - const name = lineParser.getToken(); - if ( ! name ) { - - throw new Error( 'LDrawLoader: Material name was expected after "!COLOUR tag' + lineParser.getLineNumberString() + '.' ); - - } - - // Parse tag tokens and their parameters - let token = null; - while ( true ) { - - token = lineParser.getToken(); - - if ( ! token ) { - - break; - - } - - if ( ! parseLuminance( token ) ) { - - switch ( token.toUpperCase() ) { - - case 'CODE': - - code = lineParser.getToken(); - break; - - case 'VALUE': - - fillColor = lineParser.getToken(); - if ( fillColor.startsWith( '0x' ) ) { - - fillColor = '#' + fillColor.substring( 2 ); - - } else if ( ! fillColor.startsWith( '#' ) ) { - - throw new Error( 'LDrawLoader: Invalid color while parsing material' + lineParser.getLineNumberString() + '.' ); - - } - - break; - - case 'EDGE': - - edgeColor = lineParser.getToken(); - if ( edgeColor.startsWith( '0x' ) ) { - - edgeColor = '#' + edgeColor.substring( 2 ); - - } else if ( ! edgeColor.startsWith( '#' ) ) { - - // Try to see if edge color is a color code - edgeMaterial = this.getMaterial( edgeColor ); - if ( ! edgeMaterial ) { - - throw new Error( 'LDrawLoader: Invalid edge color while parsing material' + lineParser.getLineNumberString() + '.' ); - - } - - // Get the edge material for this triangle material - edgeMaterial = this.edgeMaterialCache.get( edgeMaterial ); - - } - - break; - - case 'ALPHA': - - alpha = parseInt( lineParser.getToken() ); - - if ( isNaN( alpha ) ) { - - throw new Error( 'LDrawLoader: Invalid alpha value in material definition' + lineParser.getLineNumberString() + '.' ); - - } - - alpha = Math.max( 0, Math.min( 1, alpha / 255 ) ); - - if ( alpha < 1 ) { - - isTransparent = true; - - } - - break; - - case 'LUMINANCE': - - if ( ! parseLuminance( lineParser.getToken() ) ) { - - throw new Error( 'LDrawLoader: Invalid luminance value in material definition' + LineParser.getLineNumberString() + '.' ); - - } - - break; - - case 'CHROME': - finishType = FINISH_TYPE_CHROME; - break; - - case 'PEARLESCENT': - finishType = FINISH_TYPE_PEARLESCENT; - break; - - case 'RUBBER': - finishType = FINISH_TYPE_RUBBER; - break; - - case 'MATTE_METALLIC': - finishType = FINISH_TYPE_MATTE_METALLIC; - break; - - case 'METAL': - finishType = FINISH_TYPE_METAL; - break; - - case 'MATERIAL': - // Not implemented - lineParser.setToEnd(); - break; - - default: - throw new Error( 'LDrawLoader: Unknown token "' + token + '" while parsing material' + lineParser.getLineNumberString() + '.' ); - - } - - } - - } - - let material = null; - - switch ( finishType ) { - - case FINISH_TYPE_DEFAULT: - - material = new MeshStandardMaterial( { roughness: 0.3, metalness: 0 } ); - break; - - case FINISH_TYPE_PEARLESCENT: - - // Try to imitate pearlescency by making the surface glossy - material = new MeshStandardMaterial( { roughness: 0.3, metalness: 0.25 } ); - break; - - case FINISH_TYPE_CHROME: - - // Mirror finish surface - material = new MeshStandardMaterial( { roughness: 0, metalness: 1 } ); - break; - - case FINISH_TYPE_RUBBER: - - // Rubber finish - material = new MeshStandardMaterial( { roughness: 0.9, metalness: 0 } ); - break; - - case FINISH_TYPE_MATTE_METALLIC: - - // Brushed metal finish - material = new MeshStandardMaterial( { roughness: 0.8, metalness: 0.4 } ); - break; - - case FINISH_TYPE_METAL: - - // Average metal finish - material = new MeshStandardMaterial( { roughness: 0.2, metalness: 0.85 } ); - break; - - default: - // Should not happen - break; - - } - - material.color.setStyle( fillColor, COLOR_SPACE_LDRAW ); - material.transparent = isTransparent; - material.premultipliedAlpha = true; - material.opacity = alpha; - material.depthWrite = ! isTransparent; - - material.polygonOffset = true; - material.polygonOffsetFactor = 1; - - if ( luminance !== 0 ) { - - material.emissive.setStyle( fillColor, COLOR_SPACE_LDRAW ).multiplyScalar( luminance ); - - } - - if ( ! edgeMaterial ) { - - // This is the material used for edges - edgeMaterial = new LineBasicMaterial( { - color: new Color().setStyle( edgeColor, COLOR_SPACE_LDRAW ), - transparent: isTransparent, - opacity: alpha, - depthWrite: ! isTransparent - } ); - edgeMaterial.color; - edgeMaterial.userData.code = code; - edgeMaterial.name = name + ' - Edge'; - - // This is the material used for conditional edges - const conditionalEdgeMaterial = new LDrawConditionalLineMaterial( { - - fog: true, - transparent: isTransparent, - depthWrite: ! isTransparent, - color: new Color().setStyle( edgeColor, COLOR_SPACE_LDRAW ), - opacity: alpha, - - } ); - conditionalEdgeMaterial.userData.code = code; - conditionalEdgeMaterial.name = name + ' - Conditional Edge'; - - this.conditionalEdgeMaterialCache.set( edgeMaterial, conditionalEdgeMaterial ); - - } - - material.userData.code = code; - material.name = name; - - this.edgeMaterialCache.set( material, edgeMaterial ); - - this.addMaterial( material ); - - return material; - - function parseLuminance( token ) { - - // Returns success - - let lum; - - if ( token.startsWith( 'LUMINANCE' ) ) { - - lum = parseInt( token.substring( 9 ) ); - - } else { - - lum = parseInt( token ); - - } - - if ( isNaN( lum ) ) { - - return false; - - } - - luminance = Math.max( 0, Math.min( 1, lum / 255 ) ); - - return true; - - } - - } - - computeBuildingSteps( model ) { - - // Sets userdata.buildingStep number in Group objects and userData.numBuildingSteps number in the root Group object. - - let stepNumber = 0; - - model.traverse( c => { - - if ( c.isGroup ) { - - if ( c.userData.startingBuildingStep ) { - - stepNumber ++; - - } - - c.userData.buildingStep = stepNumber; - - } - - } ); - - model.userData.numBuildingSteps = stepNumber + 1; - - } - -} - -export { LDrawLoader }; diff --git a/three/addons/loaders/LUT3dlLoader.js b/three/addons/loaders/LUT3dlLoader.js deleted file mode 100644 index bddeb25..0000000 --- a/three/addons/loaders/LUT3dlLoader.js +++ /dev/null @@ -1,151 +0,0 @@ -// http://download.autodesk.com/us/systemdocs/help/2011/lustre/index.html?url=./files/WSc4e151a45a3b785a24c3d9a411df9298473-7ffd.htm,topicNumber=d0e9492 -// https://community.foundry.com/discuss/topic/103636/format-spec-for-3dl?mode=Post&postID=895258 -import { - Loader, - FileLoader, - DataTexture, - Data3DTexture, - RGBAFormat, - UnsignedByteType, - ClampToEdgeWrapping, - LinearFilter, -} from 'three'; - -export class LUT3dlLoader extends Loader { - - load( url, onLoad, onProgress, onError ) { - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setResponseType( 'text' ); - loader.load( url, text => { - - try { - - onLoad( this.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - this.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( str ) { - - // remove empty lines and comment lints - str = str - .replace( /^#.*?(\n|\r)/gm, '' ) - .replace( /^\s*?(\n|\r)/gm, '' ) - .trim(); - - const lines = str.split( /[\n\r]+/g ); - - // first line is the positions on the grid that are provided by the LUT - const gridLines = lines[ 0 ].trim().split( /\s+/g ).map( e => parseFloat( e ) ); - const gridStep = gridLines[ 1 ] - gridLines[ 0 ]; - const size = gridLines.length; - - for ( let i = 1, l = gridLines.length; i < l; i ++ ) { - - if ( gridStep !== ( gridLines[ i ] - gridLines[ i - 1 ] ) ) { - - throw new Error( 'LUT3dlLoader: Inconsistent grid size not supported.' ); - - } - - } - - const dataArray = new Array( size * size * size * 4 ); - let index = 0; - let maxOutputValue = 0.0; - for ( let i = 1, l = lines.length; i < l; i ++ ) { - - const line = lines[ i ].trim(); - const split = line.split( /\s/g ); - - const r = parseFloat( split[ 0 ] ); - const g = parseFloat( split[ 1 ] ); - const b = parseFloat( split[ 2 ] ); - maxOutputValue = Math.max( maxOutputValue, r, g, b ); - - const bLayer = index % size; - const gLayer = Math.floor( index / size ) % size; - const rLayer = Math.floor( index / ( size * size ) ) % size; - - // b grows first, then g, then r - const pixelIndex = bLayer * size * size + gLayer * size + rLayer; - dataArray[ 4 * pixelIndex + 0 ] = r; - dataArray[ 4 * pixelIndex + 1 ] = g; - dataArray[ 4 * pixelIndex + 2 ] = b; - dataArray[ 4 * pixelIndex + 3 ] = 1.0; - index += 1; - - } - - // Find the apparent bit depth of the stored RGB values and map the - // values to [ 0, 255 ]. - const bits = Math.ceil( Math.log2( maxOutputValue ) ); - const maxBitValue = Math.pow( 2.0, bits ); - for ( let i = 0, l = dataArray.length; i < l; i += 4 ) { - - const r = dataArray[ i + 0 ]; - const g = dataArray[ i + 1 ]; - const b = dataArray[ i + 2 ]; - dataArray[ i + 0 ] = 255 * r / maxBitValue; // r - dataArray[ i + 1 ] = 255 * g / maxBitValue; // g - dataArray[ i + 2 ] = 255 * b / maxBitValue; // b - - } - - const data = new Uint8Array( dataArray ); - const texture = new DataTexture(); - texture.image.data = data; - texture.image.width = size; - texture.image.height = size * size; - texture.format = RGBAFormat; - texture.type = UnsignedByteType; - texture.magFilter = LinearFilter; - texture.minFilter = LinearFilter; - texture.wrapS = ClampToEdgeWrapping; - texture.wrapT = ClampToEdgeWrapping; - texture.generateMipmaps = false; - texture.needsUpdate = true; - - const texture3D = new Data3DTexture(); - texture3D.image.data = data; - texture3D.image.width = size; - texture3D.image.height = size; - texture3D.image.depth = size; - texture3D.format = RGBAFormat; - texture3D.type = UnsignedByteType; - texture3D.magFilter = LinearFilter; - texture3D.minFilter = LinearFilter; - texture3D.wrapS = ClampToEdgeWrapping; - texture3D.wrapT = ClampToEdgeWrapping; - texture3D.wrapR = ClampToEdgeWrapping; - texture3D.generateMipmaps = false; - texture3D.needsUpdate = true; - - return { - size, - texture, - texture3D, - }; - - } - -} diff --git a/three/addons/loaders/LUTCubeLoader.js b/three/addons/loaders/LUTCubeLoader.js deleted file mode 100644 index 4a3dac7..0000000 --- a/three/addons/loaders/LUTCubeLoader.js +++ /dev/null @@ -1,153 +0,0 @@ -// https://wwwimages2.adobe.com/content/dam/acom/en/products/speedgrade/cc/pdfs/cube-lut-specification-1.0.pdf - -import { - Loader, - FileLoader, - Vector3, - DataTexture, - Data3DTexture, - UnsignedByteType, - ClampToEdgeWrapping, - LinearFilter, -} from 'three'; - -export class LUTCubeLoader extends Loader { - - load( url, onLoad, onProgress, onError ) { - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setResponseType( 'text' ); - loader.load( url, text => { - - try { - - onLoad( this.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - this.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( str ) { - - // Remove empty lines and comments - str = str - .replace( /^#.*?(\n|\r)/gm, '' ) - .replace( /^\s*?(\n|\r)/gm, '' ) - .trim(); - - let title = null; - let size = null; - const domainMin = new Vector3( 0, 0, 0 ); - const domainMax = new Vector3( 1, 1, 1 ); - - const lines = str.split( /[\n\r]+/g ); - let data = null; - - let currIndex = 0; - for ( let i = 0, l = lines.length; i < l; i ++ ) { - - const line = lines[ i ].trim(); - const split = line.split( /\s/g ); - - switch ( split[ 0 ] ) { - - case 'TITLE': - title = line.substring( 7, line.length - 1 ); - break; - case 'LUT_3D_SIZE': - // TODO: A .CUBE LUT file specifies floating point values and could be represented with - // more precision than can be captured with Uint8Array. - const sizeToken = split[ 1 ]; - size = parseFloat( sizeToken ); - data = new Uint8Array( size * size * size * 4 ); - break; - case 'DOMAIN_MIN': - domainMin.x = parseFloat( split[ 1 ] ); - domainMin.y = parseFloat( split[ 2 ] ); - domainMin.z = parseFloat( split[ 3 ] ); - break; - case 'DOMAIN_MAX': - domainMax.x = parseFloat( split[ 1 ] ); - domainMax.y = parseFloat( split[ 2 ] ); - domainMax.z = parseFloat( split[ 3 ] ); - break; - default: - const r = parseFloat( split[ 0 ] ); - const g = parseFloat( split[ 1 ] ); - const b = parseFloat( split[ 2 ] ); - - if ( - r > 1.0 || r < 0.0 || - g > 1.0 || g < 0.0 || - b > 1.0 || b < 0.0 - ) { - - throw new Error( 'LUTCubeLoader : Non normalized values not supported.' ); - - } - - data[ currIndex + 0 ] = r * 255; - data[ currIndex + 1 ] = g * 255; - data[ currIndex + 2 ] = b * 255; - data[ currIndex + 3 ] = 255; - currIndex += 4; - - } - - } - - const texture = new DataTexture(); - texture.image.data = data; - texture.image.width = size; - texture.image.height = size * size; - texture.type = UnsignedByteType; - texture.magFilter = LinearFilter; - texture.minFilter = LinearFilter; - texture.wrapS = ClampToEdgeWrapping; - texture.wrapT = ClampToEdgeWrapping; - texture.generateMipmaps = false; - texture.needsUpdate = true; - - const texture3D = new Data3DTexture(); - texture3D.image.data = data; - texture3D.image.width = size; - texture3D.image.height = size; - texture3D.image.depth = size; - texture3D.type = UnsignedByteType; - texture3D.magFilter = LinearFilter; - texture3D.minFilter = LinearFilter; - texture3D.wrapS = ClampToEdgeWrapping; - texture3D.wrapT = ClampToEdgeWrapping; - texture3D.wrapR = ClampToEdgeWrapping; - texture3D.generateMipmaps = false; - texture3D.needsUpdate = true; - - return { - title, - size, - domainMin, - domainMax, - texture, - texture3D, - }; - - } - -} diff --git a/three/addons/loaders/LUTImageLoader.js b/three/addons/loaders/LUTImageLoader.js deleted file mode 100644 index d8f3da6..0000000 --- a/three/addons/loaders/LUTImageLoader.js +++ /dev/null @@ -1,162 +0,0 @@ -import { - Loader, - TextureLoader, - DataTexture, - Data3DTexture, - RGBAFormat, - UnsignedByteType, - ClampToEdgeWrapping, - LinearFilter, -} from 'three'; - -export class LUTImageLoader extends Loader { - - constructor( flipVertical = false ) { - //The NeutralLUT.png has green at the bottom for Unreal ang green at the top for Unity URP Color Lookup - //post-processing. If you're using lut image strips from a Unity pipeline then pass true to the constructor - - super(); - - this.flip = flipVertical; - - } - - load( url, onLoad, onProgress, onError ) { - - const loader = new TextureLoader( this.manager ); - - loader.setCrossOrigin( this.crossOrigin ); - - loader.setPath( this.path ); - loader.load( url, texture => { - - try { - - let imageData; - - if ( texture.image.width < texture.image.height ) { - - imageData = this.getImageData( texture ); - - } else { - - imageData = this.horz2Vert( texture ); - - } - - onLoad( this.parse( imageData.data, Math.min( texture.image.width, texture.image.height ) ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - this.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - getImageData( texture ) { - - const width = texture.image.width; - const height = texture.image.height; - - const canvas = document.createElement( 'canvas' ); - canvas.width = width; - canvas.height = height; - - const context = canvas.getContext( '2d' ); - - if ( this.flip === true ) { - - context.scale( 1, - 1 ); - context.translate( 0, - height ); - - } - - context.drawImage( texture.image, 0, 0 ); - - return context.getImageData( 0, 0, width, height ); - - } - - horz2Vert( texture ) { - - const width = texture.image.height; - const height = texture.image.width; - - const canvas = document.createElement( 'canvas' ); - canvas.width = width; - canvas.height = height; - - const context = canvas.getContext( '2d' ); - - if ( this.flip === true ) { - - context.scale( 1, - 1 ); - context.translate( 0, - height ); - - } - - for ( let i = 0; i < width; i ++ ) { - - const sy = i * width; - const dy = ( this.flip ) ? height - i * width : i * width; - context.drawImage( texture.image, sy, 0, width, width, 0, dy, width, width ); - - } - - return context.getImageData( 0, 0, width, height ); - - } - - parse( dataArray, size ) { - - const data = new Uint8Array( dataArray ); - const texture = new DataTexture(); - texture.image.data = data; - texture.image.width = size; - texture.image.height = size * size; - texture.format = RGBAFormat; - texture.type = UnsignedByteType; - texture.magFilter = LinearFilter; - texture.minFilter = LinearFilter; - texture.wrapS = ClampToEdgeWrapping; - texture.wrapT = ClampToEdgeWrapping; - texture.generateMipmaps = false; - texture.needsUpdate = true; - - const texture3D = new Data3DTexture(); - texture3D.image.data = data; - texture3D.image.width = size; - texture3D.image.height = size; - texture3D.image.depth = size; - texture3D.format = RGBAFormat; - texture3D.type = UnsignedByteType; - texture3D.magFilter = LinearFilter; - texture3D.minFilter = LinearFilter; - texture3D.wrapS = ClampToEdgeWrapping; - texture3D.wrapT = ClampToEdgeWrapping; - texture3D.wrapR = ClampToEdgeWrapping; - texture3D.generateMipmaps = false; - texture3D.needsUpdate = true; - - return { - size, - texture, - texture3D, - }; - - } - -} diff --git a/three/addons/loaders/LWOLoader.js b/three/addons/loaders/LWOLoader.js deleted file mode 100644 index 80c3dc3..0000000 --- a/three/addons/loaders/LWOLoader.js +++ /dev/null @@ -1,1052 +0,0 @@ -/** - * @version 1.1.1 - * - * @desc Load files in LWO3 and LWO2 format on Three.js - * - * LWO3 format specification: - * https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo3.html - * - * LWO2 format specification: - * https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo2.html - * - **/ - -import { - AddOperation, - BackSide, - BufferGeometry, - ClampToEdgeWrapping, - Color, - DoubleSide, - EquirectangularReflectionMapping, - EquirectangularRefractionMapping, - FileLoader, - Float32BufferAttribute, - FrontSide, - LineBasicMaterial, - LineSegments, - Loader, - Mesh, - MeshPhongMaterial, - MeshPhysicalMaterial, - MeshStandardMaterial, - MirroredRepeatWrapping, - Points, - PointsMaterial, - RepeatWrapping, - SRGBColorSpace, - TextureLoader, - Vector2 -} from 'three'; - -import { IFFParser } from './lwo/IFFParser.js'; - -let _lwoTree; - -class LWOLoader extends Loader { - - constructor( manager, parameters = {} ) { - - super( manager ); - - this.resourcePath = ( parameters.resourcePath !== undefined ) ? parameters.resourcePath : ''; - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const path = ( scope.path === '' ) ? extractParentUrl( url, 'Objects' ) : scope.path; - - // give the mesh a default name based on the filename - const modelName = url.split( path ).pop().split( '.' )[ 0 ]; - - const loader = new FileLoader( this.manager ); - loader.setPath( scope.path ); - loader.setResponseType( 'arraybuffer' ); - - loader.load( url, function ( buffer ) { - - // console.time( 'Total parsing: ' ); - - try { - - onLoad( scope.parse( buffer, path, modelName ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - // console.timeEnd( 'Total parsing: ' ); - - }, onProgress, onError ); - - } - - parse( iffBuffer, path, modelName ) { - - _lwoTree = new IFFParser().parse( iffBuffer ); - - // console.log( 'lwoTree', lwoTree ); - - const textureLoader = new TextureLoader( this.manager ).setPath( this.resourcePath || path ).setCrossOrigin( this.crossOrigin ); - - return new LWOTreeParser( textureLoader ).parse( modelName ); - - } - -} - -// Parse the lwoTree object -class LWOTreeParser { - - constructor( textureLoader ) { - - this.textureLoader = textureLoader; - - } - - parse( modelName ) { - - this.materials = new MaterialParser( this.textureLoader ).parse(); - this.defaultLayerName = modelName; - - this.meshes = this.parseLayers(); - - return { - materials: this.materials, - meshes: this.meshes, - }; - - } - - parseLayers() { - - // array of all meshes for building hierarchy - const meshes = []; - - // final array containing meshes with scene graph hierarchy set up - const finalMeshes = []; - - const geometryParser = new GeometryParser(); - - const scope = this; - _lwoTree.layers.forEach( function ( layer ) { - - const geometry = geometryParser.parse( layer.geometry, layer ); - - const mesh = scope.parseMesh( geometry, layer ); - - meshes[ layer.number ] = mesh; - - if ( layer.parent === - 1 ) finalMeshes.push( mesh ); - else meshes[ layer.parent ].add( mesh ); - - - } ); - - this.applyPivots( finalMeshes ); - - return finalMeshes; - - } - - parseMesh( geometry, layer ) { - - let mesh; - - const materials = this.getMaterials( geometry.userData.matNames, layer.geometry.type ); - - if ( layer.geometry.type === 'points' ) mesh = new Points( geometry, materials ); - else if ( layer.geometry.type === 'lines' ) mesh = new LineSegments( geometry, materials ); - else mesh = new Mesh( geometry, materials ); - - if ( layer.name ) mesh.name = layer.name; - else mesh.name = this.defaultLayerName + '_layer_' + layer.number; - - mesh.userData.pivot = layer.pivot; - - return mesh; - - } - - // TODO: may need to be reversed in z to convert LWO to three.js coordinates - applyPivots( meshes ) { - - meshes.forEach( function ( mesh ) { - - mesh.traverse( function ( child ) { - - const pivot = child.userData.pivot; - - child.position.x += pivot[ 0 ]; - child.position.y += pivot[ 1 ]; - child.position.z += pivot[ 2 ]; - - if ( child.parent ) { - - const parentPivot = child.parent.userData.pivot; - - child.position.x -= parentPivot[ 0 ]; - child.position.y -= parentPivot[ 1 ]; - child.position.z -= parentPivot[ 2 ]; - - } - - } ); - - } ); - - } - - getMaterials( namesArray, type ) { - - const materials = []; - - const scope = this; - - namesArray.forEach( function ( name, i ) { - - materials[ i ] = scope.getMaterialByName( name ); - - } ); - - // convert materials to line or point mats if required - if ( type === 'points' || type === 'lines' ) { - - materials.forEach( function ( mat, i ) { - - const spec = { - color: mat.color, - }; - - if ( type === 'points' ) { - - spec.size = 0.1; - spec.map = mat.map; - materials[ i ] = new PointsMaterial( spec ); - - } else if ( type === 'lines' ) { - - materials[ i ] = new LineBasicMaterial( spec ); - - } - - } ); - - } - - // if there is only one material, return that directly instead of array - const filtered = materials.filter( Boolean ); - if ( filtered.length === 1 ) return filtered[ 0 ]; - - return materials; - - } - - getMaterialByName( name ) { - - return this.materials.filter( function ( m ) { - - return m.name === name; - - } )[ 0 ]; - - } - -} - -class MaterialParser { - - constructor( textureLoader ) { - - this.textureLoader = textureLoader; - - } - - parse() { - - const materials = []; - this.textures = {}; - - for ( const name in _lwoTree.materials ) { - - if ( _lwoTree.format === 'LWO3' ) { - - materials.push( this.parseMaterial( _lwoTree.materials[ name ], name, _lwoTree.textures ) ); - - } else if ( _lwoTree.format === 'LWO2' ) { - - materials.push( this.parseMaterialLwo2( _lwoTree.materials[ name ], name, _lwoTree.textures ) ); - - } - - } - - return materials; - - } - - parseMaterial( materialData, name, textures ) { - - let params = { - name: name, - side: this.getSide( materialData.attributes ), - flatShading: this.getSmooth( materialData.attributes ), - }; - - const connections = this.parseConnections( materialData.connections, materialData.nodes ); - - const maps = this.parseTextureNodes( connections.maps ); - - this.parseAttributeImageMaps( connections.attributes, textures, maps, materialData.maps ); - - const attributes = this.parseAttributes( connections.attributes, maps ); - - this.parseEnvMap( connections, maps, attributes ); - - params = Object.assign( maps, params ); - params = Object.assign( params, attributes ); - - const materialType = this.getMaterialType( connections.attributes ); - - if ( materialType !== MeshPhongMaterial ) delete params.refractionRatio; // PBR materials do not support "refractionRatio" - - return new materialType( params ); - - } - - parseMaterialLwo2( materialData, name/*, textures*/ ) { - - let params = { - name: name, - side: this.getSide( materialData.attributes ), - flatShading: this.getSmooth( materialData.attributes ), - }; - - const attributes = this.parseAttributes( materialData.attributes, {} ); - params = Object.assign( params, attributes ); - return new MeshPhongMaterial( params ); - - } - - // Note: converting from left to right handed coords by switching x -> -x in vertices, and - // then switching mat FrontSide -> BackSide - // NB: this means that FrontSide and BackSide have been switched! - getSide( attributes ) { - - if ( ! attributes.side ) return BackSide; - - switch ( attributes.side ) { - - case 0: - case 1: - return BackSide; - case 2: return FrontSide; - case 3: return DoubleSide; - - } - - } - - getSmooth( attributes ) { - - if ( ! attributes.smooth ) return true; - return ! attributes.smooth; - - } - - parseConnections( connections, nodes ) { - - const materialConnections = { - maps: {} - }; - - const inputName = connections.inputName; - const inputNodeName = connections.inputNodeName; - const nodeName = connections.nodeName; - - const scope = this; - inputName.forEach( function ( name, index ) { - - if ( name === 'Material' ) { - - const matNode = scope.getNodeByRefName( inputNodeName[ index ], nodes ); - materialConnections.attributes = matNode.attributes; - materialConnections.envMap = matNode.fileName; - materialConnections.name = inputNodeName[ index ]; - - } - - } ); - - nodeName.forEach( function ( name, index ) { - - if ( name === materialConnections.name ) { - - materialConnections.maps[ inputName[ index ] ] = scope.getNodeByRefName( inputNodeName[ index ], nodes ); - - } - - } ); - - return materialConnections; - - } - - getNodeByRefName( refName, nodes ) { - - for ( const name in nodes ) { - - if ( nodes[ name ].refName === refName ) return nodes[ name ]; - - } - - } - - parseTextureNodes( textureNodes ) { - - const maps = {}; - - for ( const name in textureNodes ) { - - const node = textureNodes[ name ]; - const path = node.fileName; - - if ( ! path ) return; - - const texture = this.loadTexture( path ); - - if ( node.widthWrappingMode !== undefined ) texture.wrapS = this.getWrappingType( node.widthWrappingMode ); - if ( node.heightWrappingMode !== undefined ) texture.wrapT = this.getWrappingType( node.heightWrappingMode ); - - switch ( name ) { - - case 'Color': - maps.map = texture; - maps.map.colorSpace = SRGBColorSpace; - break; - case 'Roughness': - maps.roughnessMap = texture; - maps.roughness = 1; - break; - case 'Specular': - maps.specularMap = texture; - maps.specularMap.colorSpace = SRGBColorSpace; - maps.specular = 0xffffff; - break; - case 'Luminous': - maps.emissiveMap = texture; - maps.emissiveMap.colorSpace = SRGBColorSpace; - maps.emissive = 0x808080; - break; - case 'Luminous Color': - maps.emissive = 0x808080; - break; - case 'Metallic': - maps.metalnessMap = texture; - maps.metalness = 1; - break; - case 'Transparency': - case 'Alpha': - maps.alphaMap = texture; - maps.transparent = true; - break; - case 'Normal': - maps.normalMap = texture; - if ( node.amplitude !== undefined ) maps.normalScale = new Vector2( node.amplitude, node.amplitude ); - break; - case 'Bump': - maps.bumpMap = texture; - break; - - } - - } - - // LWO BSDF materials can have both spec and rough, but this is not valid in three - if ( maps.roughnessMap && maps.specularMap ) delete maps.specularMap; - - return maps; - - } - - // maps can also be defined on individual material attributes, parse those here - // This occurs on Standard (Phong) surfaces - parseAttributeImageMaps( attributes, textures, maps ) { - - for ( const name in attributes ) { - - const attribute = attributes[ name ]; - - if ( attribute.maps ) { - - const mapData = attribute.maps[ 0 ]; - - const path = this.getTexturePathByIndex( mapData.imageIndex, textures ); - if ( ! path ) return; - - const texture = this.loadTexture( path ); - - if ( mapData.wrap !== undefined ) texture.wrapS = this.getWrappingType( mapData.wrap.w ); - if ( mapData.wrap !== undefined ) texture.wrapT = this.getWrappingType( mapData.wrap.h ); - - switch ( name ) { - - case 'Color': - maps.map = texture; - maps.map.colorSpace = SRGBColorSpace; - break; - case 'Diffuse': - maps.aoMap = texture; - break; - case 'Roughness': - maps.roughnessMap = texture; - maps.roughness = 1; - break; - case 'Specular': - maps.specularMap = texture; - maps.specularMap.colorSpace = SRGBColorSpace; - maps.specular = 0xffffff; - break; - case 'Luminosity': - maps.emissiveMap = texture; - maps.emissiveMap.colorSpace = SRGBColorSpace; - maps.emissive = 0x808080; - break; - case 'Metallic': - maps.metalnessMap = texture; - maps.metalness = 1; - break; - case 'Transparency': - case 'Alpha': - maps.alphaMap = texture; - maps.transparent = true; - break; - case 'Normal': - maps.normalMap = texture; - break; - case 'Bump': - maps.bumpMap = texture; - break; - - } - - } - - } - - } - - parseAttributes( attributes, maps ) { - - const params = {}; - - // don't use color data if color map is present - if ( attributes.Color && ! maps.map ) { - - params.color = new Color().fromArray( attributes.Color.value ); - - } else { - - params.color = new Color(); - - } - - - if ( attributes.Transparency && attributes.Transparency.value !== 0 ) { - - params.opacity = 1 - attributes.Transparency.value; - params.transparent = true; - - } - - if ( attributes[ 'Bump Height' ] ) params.bumpScale = attributes[ 'Bump Height' ].value * 0.1; - - this.parsePhysicalAttributes( params, attributes, maps ); - this.parseStandardAttributes( params, attributes, maps ); - this.parsePhongAttributes( params, attributes, maps ); - - return params; - - } - - parsePhysicalAttributes( params, attributes/*, maps*/ ) { - - if ( attributes.Clearcoat && attributes.Clearcoat.value > 0 ) { - - params.clearcoat = attributes.Clearcoat.value; - - if ( attributes[ 'Clearcoat Gloss' ] ) { - - params.clearcoatRoughness = 0.5 * ( 1 - attributes[ 'Clearcoat Gloss' ].value ); - - } - - } - - } - - parseStandardAttributes( params, attributes, maps ) { - - - if ( attributes.Luminous ) { - - params.emissiveIntensity = attributes.Luminous.value; - - if ( attributes[ 'Luminous Color' ] && ! maps.emissive ) { - - params.emissive = new Color().fromArray( attributes[ 'Luminous Color' ].value ); - - } else { - - params.emissive = new Color( 0x808080 ); - - } - - } - - if ( attributes.Roughness && ! maps.roughnessMap ) params.roughness = attributes.Roughness.value; - if ( attributes.Metallic && ! maps.metalnessMap ) params.metalness = attributes.Metallic.value; - - } - - parsePhongAttributes( params, attributes, maps ) { - - if ( attributes[ 'Refraction Index' ] ) params.refractionRatio = 0.98 / attributes[ 'Refraction Index' ].value; - - if ( attributes.Diffuse ) params.color.multiplyScalar( attributes.Diffuse.value ); - - if ( attributes.Reflection ) { - - params.reflectivity = attributes.Reflection.value; - params.combine = AddOperation; - - } - - if ( attributes.Luminosity ) { - - params.emissiveIntensity = attributes.Luminosity.value; - - if ( ! maps.emissiveMap && ! maps.map ) { - - params.emissive = params.color; - - } else { - - params.emissive = new Color( 0x808080 ); - - } - - } - - // parse specular if there is no roughness - we will interpret the material as 'Phong' in this case - if ( ! attributes.Roughness && attributes.Specular && ! maps.specularMap ) { - - if ( attributes[ 'Color Highlight' ] ) { - - params.specular = new Color().setScalar( attributes.Specular.value ).lerp( params.color.clone().multiplyScalar( attributes.Specular.value ), attributes[ 'Color Highlight' ].value ); - - } else { - - params.specular = new Color().setScalar( attributes.Specular.value ); - - } - - } - - if ( params.specular && attributes.Glossiness ) params.shininess = 7 + Math.pow( 2, attributes.Glossiness.value * 12 + 2 ); - - } - - parseEnvMap( connections, maps, attributes ) { - - if ( connections.envMap ) { - - const envMap = this.loadTexture( connections.envMap ); - - if ( attributes.transparent && attributes.opacity < 0.999 ) { - - envMap.mapping = EquirectangularRefractionMapping; - - // Reflectivity and refraction mapping don't work well together in Phong materials - if ( attributes.reflectivity !== undefined ) { - - delete attributes.reflectivity; - delete attributes.combine; - - } - - if ( attributes.metalness !== undefined ) { - - attributes.metalness = 1; // For most transparent materials metalness should be set to 1 if not otherwise defined. If set to 0 no refraction will be visible - - } - - attributes.opacity = 1; // transparency fades out refraction, forcing opacity to 1 ensures a closer visual match to the material in Lightwave. - - } else envMap.mapping = EquirectangularReflectionMapping; - - maps.envMap = envMap; - - } - - } - - // get texture defined at top level by its index - getTexturePathByIndex( index ) { - - let fileName = ''; - - if ( ! _lwoTree.textures ) return fileName; - - _lwoTree.textures.forEach( function ( texture ) { - - if ( texture.index === index ) fileName = texture.fileName; - - } ); - - return fileName; - - } - - loadTexture( path ) { - - if ( ! path ) return null; - - const texture = this.textureLoader.load( - path, - undefined, - undefined, - function () { - - console.warn( 'LWOLoader: non-standard resource hierarchy. Use \`resourcePath\` parameter to specify root content directory.' ); - - } - ); - - return texture; - - } - - // 0 = Reset, 1 = Repeat, 2 = Mirror, 3 = Edge - getWrappingType( num ) { - - switch ( num ) { - - case 0: - console.warn( 'LWOLoader: "Reset" texture wrapping type is not supported in three.js' ); - return ClampToEdgeWrapping; - case 1: return RepeatWrapping; - case 2: return MirroredRepeatWrapping; - case 3: return ClampToEdgeWrapping; - - } - - } - - getMaterialType( nodeData ) { - - if ( nodeData.Clearcoat && nodeData.Clearcoat.value > 0 ) return MeshPhysicalMaterial; - if ( nodeData.Roughness ) return MeshStandardMaterial; - return MeshPhongMaterial; - - } - -} - -class GeometryParser { - - parse( geoData, layer ) { - - const geometry = new BufferGeometry(); - - geometry.setAttribute( 'position', new Float32BufferAttribute( geoData.points, 3 ) ); - - const indices = this.splitIndices( geoData.vertexIndices, geoData.polygonDimensions ); - geometry.setIndex( indices ); - - this.parseGroups( geometry, geoData ); - - geometry.computeVertexNormals(); - - this.parseUVs( geometry, layer, indices ); - this.parseMorphTargets( geometry, layer, indices ); - - // TODO: z may need to be reversed to account for coordinate system change - geometry.translate( - layer.pivot[ 0 ], - layer.pivot[ 1 ], - layer.pivot[ 2 ] ); - - // let userData = geometry.userData; - // geometry = geometry.toNonIndexed() - // geometry.userData = userData; - - return geometry; - - } - - // split quads into tris - splitIndices( indices, polygonDimensions ) { - - const remappedIndices = []; - - let i = 0; - polygonDimensions.forEach( function ( dim ) { - - if ( dim < 4 ) { - - for ( let k = 0; k < dim; k ++ ) remappedIndices.push( indices[ i + k ] ); - - } else if ( dim === 4 ) { - - remappedIndices.push( - indices[ i ], - indices[ i + 1 ], - indices[ i + 2 ], - - indices[ i ], - indices[ i + 2 ], - indices[ i + 3 ] - - ); - - } else if ( dim > 4 ) { - - for ( let k = 1; k < dim - 1; k ++ ) { - - remappedIndices.push( indices[ i ], indices[ i + k ], indices[ i + k + 1 ] ); - - } - - console.warn( 'LWOLoader: polygons with greater than 4 sides are not supported' ); - - } - - i += dim; - - } ); - - return remappedIndices; - - } - - // NOTE: currently ignoring poly indices and assuming that they are intelligently ordered - parseGroups( geometry, geoData ) { - - const tags = _lwoTree.tags; - const matNames = []; - - let elemSize = 3; - if ( geoData.type === 'lines' ) elemSize = 2; - if ( geoData.type === 'points' ) elemSize = 1; - - const remappedIndices = this.splitMaterialIndices( geoData.polygonDimensions, geoData.materialIndices ); - - let indexNum = 0; // create new indices in numerical order - const indexPairs = {}; // original indices mapped to numerical indices - - let prevMaterialIndex; - let materialIndex; - - let prevStart = 0; - let currentCount = 0; - - for ( let i = 0; i < remappedIndices.length; i += 2 ) { - - materialIndex = remappedIndices[ i + 1 ]; - - if ( i === 0 ) matNames[ indexNum ] = tags[ materialIndex ]; - - if ( prevMaterialIndex === undefined ) prevMaterialIndex = materialIndex; - - if ( materialIndex !== prevMaterialIndex ) { - - let currentIndex; - if ( indexPairs[ tags[ prevMaterialIndex ] ] ) { - - currentIndex = indexPairs[ tags[ prevMaterialIndex ] ]; - - } else { - - currentIndex = indexNum; - indexPairs[ tags[ prevMaterialIndex ] ] = indexNum; - matNames[ indexNum ] = tags[ prevMaterialIndex ]; - indexNum ++; - - } - - geometry.addGroup( prevStart, currentCount, currentIndex ); - - prevStart += currentCount; - - prevMaterialIndex = materialIndex; - currentCount = 0; - - } - - currentCount += elemSize; - - } - - // the loop above doesn't add the last group, do that here. - if ( geometry.groups.length > 0 ) { - - let currentIndex; - if ( indexPairs[ tags[ materialIndex ] ] ) { - - currentIndex = indexPairs[ tags[ materialIndex ] ]; - - } else { - - currentIndex = indexNum; - indexPairs[ tags[ materialIndex ] ] = indexNum; - matNames[ indexNum ] = tags[ materialIndex ]; - - } - - geometry.addGroup( prevStart, currentCount, currentIndex ); - - } - - // Mat names from TAGS chunk, used to build up an array of materials for this geometry - geometry.userData.matNames = matNames; - - } - - splitMaterialIndices( polygonDimensions, indices ) { - - const remappedIndices = []; - - polygonDimensions.forEach( function ( dim, i ) { - - if ( dim <= 3 ) { - - remappedIndices.push( indices[ i * 2 ], indices[ i * 2 + 1 ] ); - - } else if ( dim === 4 ) { - - remappedIndices.push( indices[ i * 2 ], indices[ i * 2 + 1 ], indices[ i * 2 ], indices[ i * 2 + 1 ] ); - - } else { - - // ignore > 4 for now - for ( let k = 0; k < dim - 2; k ++ ) { - - remappedIndices.push( indices[ i * 2 ], indices[ i * 2 + 1 ] ); - - } - - } - - } ); - - return remappedIndices; - - } - - // UV maps: - // 1: are defined via index into an array of points, not into a geometry - // - the geometry is also defined by an index into this array, but the indexes may not match - // 2: there can be any number of UV maps for a single geometry. Here these are combined, - // with preference given to the first map encountered - // 3: UV maps can be partial - that is, defined for only a part of the geometry - // 4: UV maps can be VMAP or VMAD (discontinuous, to allow for seams). In practice, most - // UV maps are defined as partially VMAP and partially VMAD - // VMADs are currently not supported - parseUVs( geometry, layer ) { - - // start by creating a UV map set to zero for the whole geometry - const remappedUVs = Array.from( Array( geometry.attributes.position.count * 2 ), function () { - - return 0; - - } ); - - for ( const name in layer.uvs ) { - - const uvs = layer.uvs[ name ].uvs; - const uvIndices = layer.uvs[ name ].uvIndices; - - uvIndices.forEach( function ( i, j ) { - - remappedUVs[ i * 2 ] = uvs[ j * 2 ]; - remappedUVs[ i * 2 + 1 ] = uvs[ j * 2 + 1 ]; - - } ); - - } - - geometry.setAttribute( 'uv', new Float32BufferAttribute( remappedUVs, 2 ) ); - - } - - parseMorphTargets( geometry, layer ) { - - let num = 0; - for ( const name in layer.morphTargets ) { - - const remappedPoints = geometry.attributes.position.array.slice(); - - if ( ! geometry.morphAttributes.position ) geometry.morphAttributes.position = []; - - const morphPoints = layer.morphTargets[ name ].points; - const morphIndices = layer.morphTargets[ name ].indices; - const type = layer.morphTargets[ name ].type; - - morphIndices.forEach( function ( i, j ) { - - if ( type === 'relative' ) { - - remappedPoints[ i * 3 ] += morphPoints[ j * 3 ]; - remappedPoints[ i * 3 + 1 ] += morphPoints[ j * 3 + 1 ]; - remappedPoints[ i * 3 + 2 ] += morphPoints[ j * 3 + 2 ]; - - } else { - - remappedPoints[ i * 3 ] = morphPoints[ j * 3 ]; - remappedPoints[ i * 3 + 1 ] = morphPoints[ j * 3 + 1 ]; - remappedPoints[ i * 3 + 2 ] = morphPoints[ j * 3 + 2 ]; - - } - - } ); - - geometry.morphAttributes.position[ num ] = new Float32BufferAttribute( remappedPoints, 3 ); - geometry.morphAttributes.position[ num ].name = name; - - num ++; - - } - - geometry.morphTargetsRelative = false; - - } - -} - - -// ************** UTILITY FUNCTIONS ************** - -function extractParentUrl( url, dir ) { - - const index = url.indexOf( dir ); - - if ( index === - 1 ) return './'; - - return url.slice( 0, index ); - -} - -export { LWOLoader }; diff --git a/three/addons/loaders/LogLuvLoader.js b/three/addons/loaders/LogLuvLoader.js deleted file mode 100644 index 310cdd6..0000000 --- a/three/addons/loaders/LogLuvLoader.js +++ /dev/null @@ -1,606 +0,0 @@ -import { - DataUtils, - DataTextureLoader, - FloatType, - HalfFloatType, - RGBAFormat -} from 'three'; - -class LogLuvLoader extends DataTextureLoader { - - constructor( manager ) { - - super( manager ); - - this.type = HalfFloatType; - - } - - parse( buffer ) { - - const ifds = UTIF.decode( buffer ); - UTIF.decodeImage( buffer, ifds[ 0 ] ); - const rgba = UTIF.toRGBA( ifds[ 0 ], this.type ); - - return { - width: ifds[ 0 ].width, - height: ifds[ 0 ].height, - data: rgba, - format: RGBAFormat, - type: this.type, - flipY: true - }; - - } - - setDataType( value ) { - - this.type = value; - return this; - - } - -} - -// from https://github.com/photopea/UTIF.js (MIT License) - -const UTIF = {}; - -UTIF.decode = function ( buff, prm ) { - - if ( prm == null ) prm = { parseMN: true, debug: false }; // read MakerNote, debug - var data = new Uint8Array( buff ), offset = 0; - - var id = UTIF._binBE.readASCII( data, offset, 2 ); offset += 2; - var bin = id == 'II' ? UTIF._binLE : UTIF._binBE; - bin.readUshort( data, offset ); offset += 2; - - var ifdo = bin.readUint( data, offset ); - var ifds = []; - while ( true ) { - - var cnt = bin.readUshort( data, ifdo ), typ = bin.readUshort( data, ifdo + 4 ); if ( cnt != 0 ) if ( typ < 1 || 13 < typ ) { - - console.log( 'error in TIFF' ); break; - - } - - - UTIF._readIFD( bin, data, ifdo, ifds, 0, prm ); - - ifdo = bin.readUint( data, ifdo + 2 + cnt * 12 ); - if ( ifdo == 0 ) break; - - } - - return ifds; - -}; - -UTIF.decodeImage = function ( buff, img, ifds ) { - - if ( img.data ) return; - var data = new Uint8Array( buff ); - var id = UTIF._binBE.readASCII( data, 0, 2 ); - - if ( img[ 't256' ] == null ) return; // No width => probably not an image - img.isLE = id == 'II'; - img.width = img[ 't256' ][ 0 ]; //delete img["t256"]; - img.height = img[ 't257' ][ 0 ]; //delete img["t257"]; - - var cmpr = img[ 't259' ] ? img[ 't259' ][ 0 ] : 1; //delete img["t259"]; - var fo = img[ 't266' ] ? img[ 't266' ][ 0 ] : 1; //delete img["t266"]; - if ( img[ 't284' ] && img[ 't284' ][ 0 ] == 2 ) console.log( 'PlanarConfiguration 2 should not be used!' ); - if ( cmpr == 7 && img[ 't258' ] && img[ 't258' ].length > 3 ) img[ 't258' ] = img[ 't258' ].slice( 0, 3 ); - - var bipp; // bits per pixel - if ( img[ 't258' ] ) bipp = Math.min( 32, img[ 't258' ][ 0 ] ) * img[ 't258' ].length; - else bipp = ( img[ 't277' ] ? img[ 't277' ][ 0 ] : 1 ); - // Some .NEF files have t258==14, even though they use 16 bits per pixel - if ( cmpr == 1 && img[ 't279' ] != null && img[ 't278' ] && img[ 't262' ][ 0 ] == 32803 ) { - - bipp = Math.round( ( img[ 't279' ][ 0 ] * 8 ) / ( img.width * img[ 't278' ][ 0 ] ) ); - - } - - var bipl = Math.ceil( img.width * bipp / 8 ) * 8; - var soff = img[ 't273' ]; if ( soff == null ) soff = img[ 't324' ]; - var bcnt = img[ 't279' ]; if ( cmpr == 1 && soff.length == 1 ) bcnt = [ img.height * ( bipl >>> 3 ) ]; if ( bcnt == null ) bcnt = img[ 't325' ]; - //bcnt[0] = Math.min(bcnt[0], data.length); // Hasselblad, "RAW_HASSELBLAD_H3D39II.3FR" - var bytes = new Uint8Array( img.height * ( bipl >>> 3 ) ), bilen = 0; - - if ( img[ 't322' ] != null ) { - - var tw = img[ 't322' ][ 0 ], th = img[ 't323' ][ 0 ]; - var tx = Math.floor( ( img.width + tw - 1 ) / tw ); - var ty = Math.floor( ( img.height + th - 1 ) / th ); - var tbuff = new Uint8Array( Math.ceil( tw * th * bipp / 8 ) | 0 ); - for ( var y = 0; y < ty; y ++ ) - for ( var x = 0; x < tx; x ++ ) { - - var i = y * tx + x; for ( var j = 0; j < tbuff.length; j ++ ) tbuff[ j ] = 0; - UTIF.decode._decompress( img, ifds, data, soff[ i ], bcnt[ i ], cmpr, tbuff, 0, fo ); - // Might be required for 7 too. Need to check - if ( cmpr == 6 ) bytes = tbuff; - else UTIF._copyTile( tbuff, Math.ceil( tw * bipp / 8 ) | 0, th, bytes, Math.ceil( img.width * bipp / 8 ) | 0, img.height, Math.ceil( x * tw * bipp / 8 ) | 0, y * th ); - - } - - bilen = bytes.length * 8; - - } else { - - var rps = img[ 't278' ] ? img[ 't278' ][ 0 ] : img.height; rps = Math.min( rps, img.height ); - for ( var i = 0; i < soff.length; i ++ ) { - - UTIF.decode._decompress( img, ifds, data, soff[ i ], bcnt[ i ], cmpr, bytes, Math.ceil( bilen / 8 ) | 0, fo ); - bilen += bipl * rps; - - } - - bilen = Math.min( bilen, bytes.length * 8 ); - - } - - img.data = new Uint8Array( bytes.buffer, 0, Math.ceil( bilen / 8 ) | 0 ); - -}; - -UTIF.decode._decompress = function ( img, ifds, data, off, len, cmpr, tgt, toff ) { - - //console.log("compression", cmpr); - //var time = Date.now(); - if ( cmpr == 34676 ) UTIF.decode._decodeLogLuv32( img, data, off, len, tgt, toff ); - else console.log( 'Unsupported compression', cmpr ); - - //console.log(Date.now()-time); - - var bps = ( img[ 't258' ] ? Math.min( 32, img[ 't258' ][ 0 ] ) : 1 ); - var noc = ( img[ 't277' ] ? img[ 't277' ][ 0 ] : 1 ), bpp = ( bps * noc ) >>> 3, h = ( img[ 't278' ] ? img[ 't278' ][ 0 ] : img.height ), bpl = Math.ceil( bps * noc * img.width / 8 ); - - // convert to Little Endian /* - if ( bps == 16 && ! img.isLE && img[ 't33422' ] == null ) // not DNG - for ( var y = 0; y < h; y ++ ) { - - //console.log("fixing endianity"); - var roff = toff + y * bpl; - for ( var x = 1; x < bpl; x += 2 ) { - - var t = tgt[ roff + x ]; tgt[ roff + x ] = tgt[ roff + x - 1 ]; tgt[ roff + x - 1 ] = t; - - } - - } //*/ - - if ( img[ 't317' ] && img[ 't317' ][ 0 ] == 2 ) { - - for ( var y = 0; y < h; y ++ ) { - - var ntoff = toff + y * bpl; - if ( bps == 16 ) for ( var j = bpp; j < bpl; j += 2 ) { - - var nv = ( ( tgt[ ntoff + j + 1 ] << 8 ) | tgt[ ntoff + j ] ) + ( ( tgt[ ntoff + j - bpp + 1 ] << 8 ) | tgt[ ntoff + j - bpp ] ); - tgt[ ntoff + j ] = nv & 255; tgt[ ntoff + j + 1 ] = ( nv >>> 8 ) & 255; - - } - else if ( noc == 3 ) for ( var j = 3; j < bpl; j += 3 ) { - - tgt[ ntoff + j ] = ( tgt[ ntoff + j ] + tgt[ ntoff + j - 3 ] ) & 255; - tgt[ ntoff + j + 1 ] = ( tgt[ ntoff + j + 1 ] + tgt[ ntoff + j - 2 ] ) & 255; - tgt[ ntoff + j + 2 ] = ( tgt[ ntoff + j + 2 ] + tgt[ ntoff + j - 1 ] ) & 255; - - } - else for ( var j = bpp; j < bpl; j ++ ) tgt[ ntoff + j ] = ( tgt[ ntoff + j ] + tgt[ ntoff + j - bpp ] ) & 255; - - } - - } - -}; - -UTIF.decode._decodeLogLuv32 = function ( img, data, off, len, tgt, toff ) { - - var w = img.width, qw = w * 4; - var io = 0, out = new Uint8Array( qw ); - - while ( io < len ) { - - var oo = 0; - while ( oo < qw ) { - - var c = data[ off + io ]; io ++; - if ( c < 128 ) { - - for ( var j = 0; j < c; j ++ ) out[ oo + j ] = data[ off + io + j ]; oo += c; io += c; - - } else { - - c = c - 126; for ( var j = 0; j < c; j ++ ) out[ oo + j ] = data[ off + io ]; oo += c; io ++; - - } - - } - - for ( var x = 0; x < w; x ++ ) { - - tgt[ toff + 0 ] = out[ x ]; - tgt[ toff + 1 ] = out[ x + w ]; - tgt[ toff + 2 ] = out[ x + w * 2 ]; - tgt[ toff + 4 ] = out[ x + w * 3 ]; - toff += 6; - - } - - } - -}; - -UTIF.tags = {}; -//UTIF.ttypes = { 256:3,257:3,258:3, 259:3, 262:3, 273:4, 274:3, 277:3,278:4,279:4, 282:5, 283:5, 284:3, 286:5,287:5, 296:3, 305:2, 306:2, 338:3, 513:4, 514:4, 34665:4 }; -// start at tag 250 -UTIF._types = function () { - - var main = new Array( 250 ); main.fill( 0 ); - main = main.concat( [ 0, 0, 0, 0, 4, 3, 3, 3, 3, 3, 0, 0, 3, 0, 0, 0, 3, 0, 0, 2, 2, 2, 2, 4, 3, 0, 0, 3, 4, 4, 3, 3, 5, 5, 3, 2, 5, 5, 0, 0, 0, 0, 4, 4, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 5, 5, 3, 0, 3, 3, 4, 4, 4, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ); - var rest = { 33432: 2, 33434: 5, 33437: 5, 34665: 4, 34850: 3, 34853: 4, 34855: 3, 34864: 3, 34866: 4, 36864: 7, 36867: 2, 36868: 2, 37121: 7, 37377: 10, 37378: 5, 37380: 10, 37381: 5, 37383: 3, 37384: 3, 37385: 3, 37386: 5, 37510: 7, 37520: 2, 37521: 2, 37522: 2, 40960: 7, 40961: 3, 40962: 4, 40963: 4, 40965: 4, 41486: 5, 41487: 5, 41488: 3, 41985: 3, 41986: 3, 41987: 3, 41988: 5, 41989: 3, 41990: 3, 41993: 3, 41994: 3, 41995: 7, 41996: 3, 42032: 2, 42033: 2, 42034: 5, 42036: 2, 42037: 2, 59932: 7 }; - return { - basic: { - main: main, - rest: rest - }, - gps: { - main: [ 1, 2, 5, 2, 5, 1, 5, 5, 0, 9 ], - rest: { 18: 2, 29: 2 } - } - }; - -}(); - -UTIF._readIFD = function ( bin, data, offset, ifds, depth, prm ) { - - var cnt = bin.readUshort( data, offset ); offset += 2; - var ifd = {}; - - if ( prm.debug ) console.log( ' '.repeat( depth ), ifds.length - 1, '>>>----------------' ); - for ( var i = 0; i < cnt; i ++ ) { - - var tag = bin.readUshort( data, offset ); offset += 2; - var type = bin.readUshort( data, offset ); offset += 2; - var num = bin.readUint( data, offset ); offset += 4; - var voff = bin.readUint( data, offset ); offset += 4; - - var arr = []; - //ifd["t"+tag+"-"+UTIF.tags[tag]] = arr; - if ( type == 1 || type == 7 ) { - - arr = new Uint8Array( data.buffer, ( num < 5 ? offset - 4 : voff ), num ); - - } - - if ( type == 2 ) { - - var o0 = ( num < 5 ? offset - 4 : voff ), c = data[ o0 ], len = Math.max( 0, Math.min( num - 1, data.length - o0 ) ); - if ( c < 128 || len == 0 ) arr.push( bin.readASCII( data, o0, len ) ); - else arr = new Uint8Array( data.buffer, o0, len ); - - } - - if ( type == 3 ) { - - for ( var j = 0; j < num; j ++ ) arr.push( bin.readUshort( data, ( num < 3 ? offset - 4 : voff ) + 2 * j ) ); - - } - - if ( type == 4 - || type == 13 ) { - - for ( var j = 0; j < num; j ++ ) arr.push( bin.readUint( data, ( num < 2 ? offset - 4 : voff ) + 4 * j ) ); - - } - - if ( type == 5 || type == 10 ) { - - var ri = type == 5 ? bin.readUint : bin.readInt; - for ( var j = 0; j < num; j ++ ) arr.push( [ ri( data, voff + j * 8 ), ri( data, voff + j * 8 + 4 ) ] ); - - } - - if ( type == 8 ) { - - for ( var j = 0; j < num; j ++ ) arr.push( bin.readShort( data, ( num < 3 ? offset - 4 : voff ) + 2 * j ) ); - - } - - if ( type == 9 ) { - - for ( var j = 0; j < num; j ++ ) arr.push( bin.readInt( data, ( num < 2 ? offset - 4 : voff ) + 4 * j ) ); - - } - - if ( type == 11 ) { - - for ( var j = 0; j < num; j ++ ) arr.push( bin.readFloat( data, voff + j * 4 ) ); - - } - - if ( type == 12 ) { - - for ( var j = 0; j < num; j ++ ) arr.push( bin.readDouble( data, voff + j * 8 ) ); - - } - - if ( num != 0 && arr.length == 0 ) { - - console.log( tag, 'unknown TIFF tag type: ', type, 'num:', num ); if ( i == 0 ) return; continue; - - } - - if ( prm.debug ) console.log( ' '.repeat( depth ), tag, type, UTIF.tags[ tag ], arr ); - - ifd[ 't' + tag ] = arr; - - if ( tag == 330 || tag == 34665 || tag == 34853 || ( tag == 50740 && bin.readUshort( data, bin.readUint( arr, 0 ) ) < 300 ) || tag == 61440 ) { - - var oarr = tag == 50740 ? [ bin.readUint( arr, 0 ) ] : arr; - var subfd = []; - for ( var j = 0; j < oarr.length; j ++ ) UTIF._readIFD( bin, data, oarr[ j ], subfd, depth + 1, prm ); - if ( tag == 330 ) ifd.subIFD = subfd; - if ( tag == 34665 ) ifd.exifIFD = subfd[ 0 ]; - if ( tag == 34853 ) ifd.gpsiIFD = subfd[ 0 ]; //console.log("gps", subfd[0]); } - if ( tag == 50740 ) ifd.dngPrvt = subfd[ 0 ]; - if ( tag == 61440 ) ifd.fujiIFD = subfd[ 0 ]; - - } - - if ( tag == 37500 && prm.parseMN ) { - - var mn = arr; - //console.log(bin.readASCII(mn,0,mn.length), mn); - if ( bin.readASCII( mn, 0, 5 ) == 'Nikon' ) ifd.makerNote = UTIF[ 'decode' ]( mn.slice( 10 ).buffer )[ 0 ]; - else if ( bin.readUshort( data, voff ) < 300 && bin.readUshort( data, voff + 4 ) <= 12 ) { - - var subsub = []; UTIF._readIFD( bin, data, voff, subsub, depth + 1, prm ); - ifd.makerNote = subsub[ 0 ]; - - } - - } - - } - - ifds.push( ifd ); - if ( prm.debug ) console.log( ' '.repeat( depth ), '<<<---------------' ); - return offset; - -}; - -UTIF.toRGBA = function ( out, type ) { - - const w = out.width, h = out.height, area = w * h, data = out.data; - - let img; - - switch ( type ) { - - case HalfFloatType: - - img = new Uint16Array( area * 4 ); - break; - - case FloatType: - - img = new Float32Array( area * 4 ); - break; - - default: - throw new Error( 'THREE.LogLuvLoader: Unsupported texture data type: ' + type ); - - } - - let intp = out[ 't262' ] ? out[ 't262' ][ 0 ] : 2; - const bps = out[ 't258' ] ? Math.min( 32, out[ 't258' ][ 0 ] ) : 1; - - if ( out[ 't262' ] == null && bps == 1 ) intp = 0; - - if ( intp == 32845 ) { - - for ( let y = 0; y < h; y ++ ) { - - for ( let x = 0; x < w; x ++ ) { - - const si = ( y * w + x ) * 6, qi = ( y * w + x ) * 4; - let L = ( data[ si + 1 ] << 8 ) | data[ si ]; - - L = Math.pow( 2, ( L + 0.5 ) / 256 - 64 ); - const u = ( data[ si + 3 ] + 0.5 ) / 410; - const v = ( data[ si + 5 ] + 0.5 ) / 410; - - // Luv to xyY - const sX = ( 9 * u ) / ( 6 * u - 16 * v + 12 ); - const sY = ( 4 * v ) / ( 6 * u - 16 * v + 12 ); - const bY = L; - - // xyY to XYZ - const X = ( sX * bY ) / sY, Y = bY, Z = ( 1 - sX - sY ) * bY / sY; - - // XYZ to linear RGB - const r = 2.690 * X - 1.276 * Y - 0.414 * Z; - const g = - 1.022 * X + 1.978 * Y + 0.044 * Z; - const b = 0.061 * X - 0.224 * Y + 1.163 * Z; - - if ( type === HalfFloatType ) { - - img[ qi ] = DataUtils.toHalfFloat( Math.min( r, 65504 ) ); - img[ qi + 1 ] = DataUtils.toHalfFloat( Math.min( g, 65504 ) ); - img[ qi + 2 ] = DataUtils.toHalfFloat( Math.min( b, 65504 ) ); - img[ qi + 3 ] = DataUtils.toHalfFloat( 1 ); - - - } else { - - img[ qi ] = r; - img[ qi + 1 ] = g; - img[ qi + 2 ] = b; - img[ qi + 3 ] = 1; - - } - - } - - } - - } else { - - throw new Error( 'THREE.LogLuvLoader: Unsupported Photometric interpretation: ' + intp ); - - } - - return img; - -}; - -UTIF._binBE = -{ - nextZero: function ( data, o ) { - - while ( data[ o ] != 0 ) o ++; return o; - - }, - readUshort: function ( buff, p ) { - - return ( buff[ p ] << 8 ) | buff[ p + 1 ]; - - }, - readShort: function ( buff, p ) { - - var a = UTIF._binBE.ui8; a[ 0 ] = buff[ p + 1 ]; a[ 1 ] = buff[ p + 0 ]; return UTIF._binBE.i16[ 0 ]; - - }, - readInt: function ( buff, p ) { - - var a = UTIF._binBE.ui8; a[ 0 ] = buff[ p + 3 ]; a[ 1 ] = buff[ p + 2 ]; a[ 2 ] = buff[ p + 1 ]; a[ 3 ] = buff[ p + 0 ]; return UTIF._binBE.i32[ 0 ]; - - }, - readUint: function ( buff, p ) { - - var a = UTIF._binBE.ui8; a[ 0 ] = buff[ p + 3 ]; a[ 1 ] = buff[ p + 2 ]; a[ 2 ] = buff[ p + 1 ]; a[ 3 ] = buff[ p + 0 ]; return UTIF._binBE.ui32[ 0 ]; - - }, - readASCII: function ( buff, p, l ) { - - var s = ''; for ( var i = 0; i < l; i ++ ) s += String.fromCharCode( buff[ p + i ] ); return s; - - }, - readFloat: function ( buff, p ) { - - var a = UTIF._binBE.ui8; for ( var i = 0; i < 4; i ++ ) a[ i ] = buff[ p + 3 - i ]; return UTIF._binBE.fl32[ 0 ]; - - }, - readDouble: function ( buff, p ) { - - var a = UTIF._binBE.ui8; for ( var i = 0; i < 8; i ++ ) a[ i ] = buff[ p + 7 - i ]; return UTIF._binBE.fl64[ 0 ]; - - }, - - writeUshort: function ( buff, p, n ) { - - buff[ p ] = ( n >> 8 ) & 255; buff[ p + 1 ] = n & 255; - - }, - writeInt: function ( buff, p, n ) { - - var a = UTIF._binBE.ui8; UTIF._binBE.i32[ 0 ] = n; buff[ p + 3 ] = a[ 0 ]; buff[ p + 2 ] = a[ 1 ]; buff[ p + 1 ] = a[ 2 ]; buff[ p + 0 ] = a[ 3 ]; - - }, - writeUint: function ( buff, p, n ) { - - buff[ p ] = ( n >> 24 ) & 255; buff[ p + 1 ] = ( n >> 16 ) & 255; buff[ p + 2 ] = ( n >> 8 ) & 255; buff[ p + 3 ] = ( n >> 0 ) & 255; - - }, - writeASCII: function ( buff, p, s ) { - - for ( var i = 0; i < s.length; i ++ ) buff[ p + i ] = s.charCodeAt( i ); - - }, - writeDouble: function ( buff, p, n ) { - - UTIF._binBE.fl64[ 0 ] = n; - for ( var i = 0; i < 8; i ++ ) buff[ p + i ] = UTIF._binBE.ui8[ 7 - i ]; - - } -}; -UTIF._binBE.ui8 = new Uint8Array( 8 ); -UTIF._binBE.i16 = new Int16Array( UTIF._binBE.ui8.buffer ); -UTIF._binBE.i32 = new Int32Array( UTIF._binBE.ui8.buffer ); -UTIF._binBE.ui32 = new Uint32Array( UTIF._binBE.ui8.buffer ); -UTIF._binBE.fl32 = new Float32Array( UTIF._binBE.ui8.buffer ); -UTIF._binBE.fl64 = new Float64Array( UTIF._binBE.ui8.buffer ); - -UTIF._binLE = -{ - nextZero: UTIF._binBE.nextZero, - readUshort: function ( buff, p ) { - - return ( buff[ p + 1 ] << 8 ) | buff[ p ]; - - }, - readShort: function ( buff, p ) { - - var a = UTIF._binBE.ui8; a[ 0 ] = buff[ p + 0 ]; a[ 1 ] = buff[ p + 1 ]; return UTIF._binBE.i16[ 0 ]; - - }, - readInt: function ( buff, p ) { - - var a = UTIF._binBE.ui8; a[ 0 ] = buff[ p + 0 ]; a[ 1 ] = buff[ p + 1 ]; a[ 2 ] = buff[ p + 2 ]; a[ 3 ] = buff[ p + 3 ]; return UTIF._binBE.i32[ 0 ]; - - }, - readUint: function ( buff, p ) { - - var a = UTIF._binBE.ui8; a[ 0 ] = buff[ p + 0 ]; a[ 1 ] = buff[ p + 1 ]; a[ 2 ] = buff[ p + 2 ]; a[ 3 ] = buff[ p + 3 ]; return UTIF._binBE.ui32[ 0 ]; - - }, - readASCII: UTIF._binBE.readASCII, - readFloat: function ( buff, p ) { - - var a = UTIF._binBE.ui8; for ( var i = 0; i < 4; i ++ ) a[ i ] = buff[ p + i ]; return UTIF._binBE.fl32[ 0 ]; - - }, - readDouble: function ( buff, p ) { - - var a = UTIF._binBE.ui8; for ( var i = 0; i < 8; i ++ ) a[ i ] = buff[ p + i ]; return UTIF._binBE.fl64[ 0 ]; - - }, - - writeUshort: function ( buff, p, n ) { - - buff[ p ] = ( n ) & 255; buff[ p + 1 ] = ( n >> 8 ) & 255; - - }, - writeInt: function ( buff, p, n ) { - - var a = UTIF._binBE.ui8; UTIF._binBE.i32[ 0 ] = n; buff[ p + 0 ] = a[ 0 ]; buff[ p + 1 ] = a[ 1 ]; buff[ p + 2 ] = a[ 2 ]; buff[ p + 3 ] = a[ 3 ]; - - }, - writeUint: function ( buff, p, n ) { - - buff[ p ] = ( n >>> 0 ) & 255; buff[ p + 1 ] = ( n >>> 8 ) & 255; buff[ p + 2 ] = ( n >>> 16 ) & 255; buff[ p + 3 ] = ( n >>> 24 ) & 255; - - }, - writeASCII: UTIF._binBE.writeASCII -}; -UTIF._copyTile = function ( tb, tw, th, b, w, h, xoff, yoff ) { - - //log("copyTile", tw, th, w, h, xoff, yoff); - var xlim = Math.min( tw, w - xoff ); - var ylim = Math.min( th, h - yoff ); - for ( var y = 0; y < ylim; y ++ ) { - - var tof = ( yoff + y ) * w + xoff; - var sof = y * tw; - for ( var x = 0; x < xlim; x ++ ) b[ tof + x ] = tb[ sof + x ]; - - } - -}; - -export { LogLuvLoader }; diff --git a/three/addons/loaders/LottieLoader.js b/three/addons/loaders/LottieLoader.js deleted file mode 100644 index 4ef0401..0000000 --- a/three/addons/loaders/LottieLoader.js +++ /dev/null @@ -1,77 +0,0 @@ -import { - FileLoader, - Loader, - CanvasTexture, - NearestFilter, - SRGBColorSpace -} from 'three'; - -import lottie from '../libs/lottie_canvas.module.js'; - -class LottieLoader extends Loader { - - setQuality( value ) { - - this._quality = value; - - } - - load( url, onLoad, onProgress, onError ) { - - const quality = this._quality || 1; - - const texture = new CanvasTexture(); - texture.minFilter = NearestFilter; - texture.colorSpace = SRGBColorSpace; - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setWithCredentials( this.withCredentials ); - - loader.load( url, function ( text ) { - - const data = JSON.parse( text ); - - // lottie uses container.offetWidth and offsetHeight - // to define width/height - - const container = document.createElement( 'div' ); - container.style.width = data.w + 'px'; - container.style.height = data.h + 'px'; - document.body.appendChild( container ); - - const animation = lottie.loadAnimation( { - container: container, - animType: 'canvas', - loop: true, - autoplay: true, - animationData: data, - rendererSettings: { dpr: quality } - } ); - - texture.animation = animation; - texture.image = animation.container; - - animation.addEventListener( 'enterFrame', function () { - - texture.needsUpdate = true; - - } ); - - container.style.display = 'none'; - - if ( onLoad !== undefined ) { - - onLoad( texture ); - - } - - }, onProgress, onError ); - - return texture; - - } - -} - -export { LottieLoader }; diff --git a/three/addons/loaders/MD2Loader.js b/three/addons/loaders/MD2Loader.js deleted file mode 100644 index 2d88be4..0000000 --- a/three/addons/loaders/MD2Loader.js +++ /dev/null @@ -1,399 +0,0 @@ -import { - AnimationClip, - BufferGeometry, - FileLoader, - Float32BufferAttribute, - Loader, - Vector3 -} from 'three'; - -const _normalData = [ - [ - 0.525731, 0.000000, 0.850651 ], [ - 0.442863, 0.238856, 0.864188 ], - [ - 0.295242, 0.000000, 0.955423 ], [ - 0.309017, 0.500000, 0.809017 ], - [ - 0.162460, 0.262866, 0.951056 ], [ 0.000000, 0.000000, 1.000000 ], - [ 0.000000, 0.850651, 0.525731 ], [ - 0.147621, 0.716567, 0.681718 ], - [ 0.147621, 0.716567, 0.681718 ], [ 0.000000, 0.525731, 0.850651 ], - [ 0.309017, 0.500000, 0.809017 ], [ 0.525731, 0.000000, 0.850651 ], - [ 0.295242, 0.000000, 0.955423 ], [ 0.442863, 0.238856, 0.864188 ], - [ 0.162460, 0.262866, 0.951056 ], [ - 0.681718, 0.147621, 0.716567 ], - [ - 0.809017, 0.309017, 0.500000 ], [ - 0.587785, 0.425325, 0.688191 ], - [ - 0.850651, 0.525731, 0.000000 ], [ - 0.864188, 0.442863, 0.238856 ], - [ - 0.716567, 0.681718, 0.147621 ], [ - 0.688191, 0.587785, 0.425325 ], - [ - 0.500000, 0.809017, 0.309017 ], [ - 0.238856, 0.864188, 0.442863 ], - [ - 0.425325, 0.688191, 0.587785 ], [ - 0.716567, 0.681718, - 0.147621 ], - [ - 0.500000, 0.809017, - 0.309017 ], [ - 0.525731, 0.850651, 0.000000 ], - [ 0.000000, 0.850651, - 0.525731 ], [ - 0.238856, 0.864188, - 0.442863 ], - [ 0.000000, 0.955423, - 0.295242 ], [ - 0.262866, 0.951056, - 0.162460 ], - [ 0.000000, 1.000000, 0.000000 ], [ 0.000000, 0.955423, 0.295242 ], - [ - 0.262866, 0.951056, 0.162460 ], [ 0.238856, 0.864188, 0.442863 ], - [ 0.262866, 0.951056, 0.162460 ], [ 0.500000, 0.809017, 0.309017 ], - [ 0.238856, 0.864188, - 0.442863 ], [ 0.262866, 0.951056, - 0.162460 ], - [ 0.500000, 0.809017, - 0.309017 ], [ 0.850651, 0.525731, 0.000000 ], - [ 0.716567, 0.681718, 0.147621 ], [ 0.716567, 0.681718, - 0.147621 ], - [ 0.525731, 0.850651, 0.000000 ], [ 0.425325, 0.688191, 0.587785 ], - [ 0.864188, 0.442863, 0.238856 ], [ 0.688191, 0.587785, 0.425325 ], - [ 0.809017, 0.309017, 0.500000 ], [ 0.681718, 0.147621, 0.716567 ], - [ 0.587785, 0.425325, 0.688191 ], [ 0.955423, 0.295242, 0.000000 ], - [ 1.000000, 0.000000, 0.000000 ], [ 0.951056, 0.162460, 0.262866 ], - [ 0.850651, - 0.525731, 0.000000 ], [ 0.955423, - 0.295242, 0.000000 ], - [ 0.864188, - 0.442863, 0.238856 ], [ 0.951056, - 0.162460, 0.262866 ], - [ 0.809017, - 0.309017, 0.500000 ], [ 0.681718, - 0.147621, 0.716567 ], - [ 0.850651, 0.000000, 0.525731 ], [ 0.864188, 0.442863, - 0.238856 ], - [ 0.809017, 0.309017, - 0.500000 ], [ 0.951056, 0.162460, - 0.262866 ], - [ 0.525731, 0.000000, - 0.850651 ], [ 0.681718, 0.147621, - 0.716567 ], - [ 0.681718, - 0.147621, - 0.716567 ], [ 0.850651, 0.000000, - 0.525731 ], - [ 0.809017, - 0.309017, - 0.500000 ], [ 0.864188, - 0.442863, - 0.238856 ], - [ 0.951056, - 0.162460, - 0.262866 ], [ 0.147621, 0.716567, - 0.681718 ], - [ 0.309017, 0.500000, - 0.809017 ], [ 0.425325, 0.688191, - 0.587785 ], - [ 0.442863, 0.238856, - 0.864188 ], [ 0.587785, 0.425325, - 0.688191 ], - [ 0.688191, 0.587785, - 0.425325 ], [ - 0.147621, 0.716567, - 0.681718 ], - [ - 0.309017, 0.500000, - 0.809017 ], [ 0.000000, 0.525731, - 0.850651 ], - [ - 0.525731, 0.000000, - 0.850651 ], [ - 0.442863, 0.238856, - 0.864188 ], - [ - 0.295242, 0.000000, - 0.955423 ], [ - 0.162460, 0.262866, - 0.951056 ], - [ 0.000000, 0.000000, - 1.000000 ], [ 0.295242, 0.000000, - 0.955423 ], - [ 0.162460, 0.262866, - 0.951056 ], [ - 0.442863, - 0.238856, - 0.864188 ], - [ - 0.309017, - 0.500000, - 0.809017 ], [ - 0.162460, - 0.262866, - 0.951056 ], - [ 0.000000, - 0.850651, - 0.525731 ], [ - 0.147621, - 0.716567, - 0.681718 ], - [ 0.147621, - 0.716567, - 0.681718 ], [ 0.000000, - 0.525731, - 0.850651 ], - [ 0.309017, - 0.500000, - 0.809017 ], [ 0.442863, - 0.238856, - 0.864188 ], - [ 0.162460, - 0.262866, - 0.951056 ], [ 0.238856, - 0.864188, - 0.442863 ], - [ 0.500000, - 0.809017, - 0.309017 ], [ 0.425325, - 0.688191, - 0.587785 ], - [ 0.716567, - 0.681718, - 0.147621 ], [ 0.688191, - 0.587785, - 0.425325 ], - [ 0.587785, - 0.425325, - 0.688191 ], [ 0.000000, - 0.955423, - 0.295242 ], - [ 0.000000, - 1.000000, 0.000000 ], [ 0.262866, - 0.951056, - 0.162460 ], - [ 0.000000, - 0.850651, 0.525731 ], [ 0.000000, - 0.955423, 0.295242 ], - [ 0.238856, - 0.864188, 0.442863 ], [ 0.262866, - 0.951056, 0.162460 ], - [ 0.500000, - 0.809017, 0.309017 ], [ 0.716567, - 0.681718, 0.147621 ], - [ 0.525731, - 0.850651, 0.000000 ], [ - 0.238856, - 0.864188, - 0.442863 ], - [ - 0.500000, - 0.809017, - 0.309017 ], [ - 0.262866, - 0.951056, - 0.162460 ], - [ - 0.850651, - 0.525731, 0.000000 ], [ - 0.716567, - 0.681718, - 0.147621 ], - [ - 0.716567, - 0.681718, 0.147621 ], [ - 0.525731, - 0.850651, 0.000000 ], - [ - 0.500000, - 0.809017, 0.309017 ], [ - 0.238856, - 0.864188, 0.442863 ], - [ - 0.262866, - 0.951056, 0.162460 ], [ - 0.864188, - 0.442863, 0.238856 ], - [ - 0.809017, - 0.309017, 0.500000 ], [ - 0.688191, - 0.587785, 0.425325 ], - [ - 0.681718, - 0.147621, 0.716567 ], [ - 0.442863, - 0.238856, 0.864188 ], - [ - 0.587785, - 0.425325, 0.688191 ], [ - 0.309017, - 0.500000, 0.809017 ], - [ - 0.147621, - 0.716567, 0.681718 ], [ - 0.425325, - 0.688191, 0.587785 ], - [ - 0.162460, - 0.262866, 0.951056 ], [ 0.442863, - 0.238856, 0.864188 ], - [ 0.162460, - 0.262866, 0.951056 ], [ 0.309017, - 0.500000, 0.809017 ], - [ 0.147621, - 0.716567, 0.681718 ], [ 0.000000, - 0.525731, 0.850651 ], - [ 0.425325, - 0.688191, 0.587785 ], [ 0.587785, - 0.425325, 0.688191 ], - [ 0.688191, - 0.587785, 0.425325 ], [ - 0.955423, 0.295242, 0.000000 ], - [ - 0.951056, 0.162460, 0.262866 ], [ - 1.000000, 0.000000, 0.000000 ], - [ - 0.850651, 0.000000, 0.525731 ], [ - 0.955423, - 0.295242, 0.000000 ], - [ - 0.951056, - 0.162460, 0.262866 ], [ - 0.864188, 0.442863, - 0.238856 ], - [ - 0.951056, 0.162460, - 0.262866 ], [ - 0.809017, 0.309017, - 0.500000 ], - [ - 0.864188, - 0.442863, - 0.238856 ], [ - 0.951056, - 0.162460, - 0.262866 ], - [ - 0.809017, - 0.309017, - 0.500000 ], [ - 0.681718, 0.147621, - 0.716567 ], - [ - 0.681718, - 0.147621, - 0.716567 ], [ - 0.850651, 0.000000, - 0.525731 ], - [ - 0.688191, 0.587785, - 0.425325 ], [ - 0.587785, 0.425325, - 0.688191 ], - [ - 0.425325, 0.688191, - 0.587785 ], [ - 0.425325, - 0.688191, - 0.587785 ], - [ - 0.587785, - 0.425325, - 0.688191 ], [ - 0.688191, - 0.587785, - 0.425325 ] -]; - -class MD2Loader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( buffer ) { - - try { - - onLoad( scope.parse( buffer ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( buffer ) { - - const data = new DataView( buffer ); - - // http://tfc.duke.free.fr/coding/md2-specs-en.html - - const header = {}; - const headerNames = [ - 'ident', 'version', - 'skinwidth', 'skinheight', - 'framesize', - 'num_skins', 'num_vertices', 'num_st', 'num_tris', 'num_glcmds', 'num_frames', - 'offset_skins', 'offset_st', 'offset_tris', 'offset_frames', 'offset_glcmds', 'offset_end' - ]; - - for ( let i = 0; i < headerNames.length; i ++ ) { - - header[ headerNames[ i ] ] = data.getInt32( i * 4, true ); - - } - - if ( header.ident !== 844121161 || header.version !== 8 ) { - - console.error( 'Not a valid MD2 file' ); - return; - - } - - if ( header.offset_end !== data.byteLength ) { - - console.error( 'Corrupted MD2 file' ); - return; - - } - - // - - const geometry = new BufferGeometry(); - - // uvs - - const uvsTemp = []; - let offset = header.offset_st; - - for ( let i = 0, l = header.num_st; i < l; i ++ ) { - - const u = data.getInt16( offset + 0, true ); - const v = data.getInt16( offset + 2, true ); - - uvsTemp.push( u / header.skinwidth, 1 - ( v / header.skinheight ) ); - - offset += 4; - - } - - // triangles - - offset = header.offset_tris; - - const vertexIndices = []; - const uvIndices = []; - - for ( let i = 0, l = header.num_tris; i < l; i ++ ) { - - vertexIndices.push( - data.getUint16( offset + 0, true ), - data.getUint16( offset + 2, true ), - data.getUint16( offset + 4, true ) - ); - - uvIndices.push( - data.getUint16( offset + 6, true ), - data.getUint16( offset + 8, true ), - data.getUint16( offset + 10, true ) - ); - - offset += 12; - - } - - // frames - - const translation = new Vector3(); - const scale = new Vector3(); - - const frames = []; - - offset = header.offset_frames; - - for ( let i = 0, l = header.num_frames; i < l; i ++ ) { - - scale.set( - data.getFloat32( offset + 0, true ), - data.getFloat32( offset + 4, true ), - data.getFloat32( offset + 8, true ) - ); - - translation.set( - data.getFloat32( offset + 12, true ), - data.getFloat32( offset + 16, true ), - data.getFloat32( offset + 20, true ) - ); - - offset += 24; - - const string = []; - - for ( let j = 0; j < 16; j ++ ) { - - const character = data.getUint8( offset + j ); - if ( character === 0 ) break; - - string[ j ] = character; - - } - - const frame = { - name: String.fromCharCode.apply( null, string ), - vertices: [], - normals: [] - }; - - offset += 16; - - for ( let j = 0; j < header.num_vertices; j ++ ) { - - let x = data.getUint8( offset ++ ); - let y = data.getUint8( offset ++ ); - let z = data.getUint8( offset ++ ); - const n = _normalData[ data.getUint8( offset ++ ) ]; - - x = x * scale.x + translation.x; - y = y * scale.y + translation.y; - z = z * scale.z + translation.z; - - frame.vertices.push( x, z, y ); // convert to Y-up - frame.normals.push( n[ 0 ], n[ 2 ], n[ 1 ] ); // convert to Y-up - - } - - frames.push( frame ); - - } - - // static - - const positions = []; - const normals = []; - const uvs = []; - - const verticesTemp = frames[ 0 ].vertices; - const normalsTemp = frames[ 0 ].normals; - - for ( let i = 0, l = vertexIndices.length; i < l; i ++ ) { - - const vertexIndex = vertexIndices[ i ]; - let stride = vertexIndex * 3; - - // - - const x = verticesTemp[ stride ]; - const y = verticesTemp[ stride + 1 ]; - const z = verticesTemp[ stride + 2 ]; - - positions.push( x, y, z ); - - // - - const nx = normalsTemp[ stride ]; - const ny = normalsTemp[ stride + 1 ]; - const nz = normalsTemp[ stride + 2 ]; - - normals.push( nx, ny, nz ); - - // - - const uvIndex = uvIndices[ i ]; - stride = uvIndex * 2; - - const u = uvsTemp[ stride ]; - const v = uvsTemp[ stride + 1 ]; - - uvs.push( u, v ); - - } - - geometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - geometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - geometry.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - // animation - - const morphPositions = []; - const morphNormals = []; - - for ( let i = 0, l = frames.length; i < l; i ++ ) { - - const frame = frames[ i ]; - const attributeName = frame.name; - - if ( frame.vertices.length > 0 ) { - - const positions = []; - - for ( let j = 0, jl = vertexIndices.length; j < jl; j ++ ) { - - const vertexIndex = vertexIndices[ j ]; - const stride = vertexIndex * 3; - - const x = frame.vertices[ stride ]; - const y = frame.vertices[ stride + 1 ]; - const z = frame.vertices[ stride + 2 ]; - - positions.push( x, y, z ); - - } - - const positionAttribute = new Float32BufferAttribute( positions, 3 ); - positionAttribute.name = attributeName; - - morphPositions.push( positionAttribute ); - - } - - if ( frame.normals.length > 0 ) { - - const normals = []; - - for ( let j = 0, jl = vertexIndices.length; j < jl; j ++ ) { - - const vertexIndex = vertexIndices[ j ]; - const stride = vertexIndex * 3; - - const nx = frame.normals[ stride ]; - const ny = frame.normals[ stride + 1 ]; - const nz = frame.normals[ stride + 2 ]; - - normals.push( nx, ny, nz ); - - } - - const normalAttribute = new Float32BufferAttribute( normals, 3 ); - normalAttribute.name = attributeName; - - morphNormals.push( normalAttribute ); - - } - - } - - geometry.morphAttributes.position = morphPositions; - geometry.morphAttributes.normal = morphNormals; - geometry.morphTargetsRelative = false; - - geometry.animations = AnimationClip.CreateClipsFromMorphTargetSequences( frames, 10 ); - - return geometry; - - } - -} - -export { MD2Loader }; diff --git a/three/addons/loaders/MDDLoader.js b/three/addons/loaders/MDDLoader.js deleted file mode 100644 index e70f8b0..0000000 --- a/three/addons/loaders/MDDLoader.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * MDD is a special format that stores a position for every vertex in a model for every frame in an animation. - * Similar to BVH, it can be used to transfer animation data between different 3D applications or engines. - * - * MDD stores its data in binary format (big endian) in the following way: - * - * number of frames (a single uint32) - * number of vertices (a single uint32) - * time values for each frame (sequence of float32) - * vertex data for each frame (sequence of float32) - */ - -import { - AnimationClip, - BufferAttribute, - FileLoader, - Loader, - NumberKeyframeTrack -} from 'three'; - -class MDDLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - loader.load( url, function ( data ) { - - onLoad( scope.parse( data ) ); - - }, onProgress, onError ); - - } - - parse( data ) { - - const view = new DataView( data ); - - const totalFrames = view.getUint32( 0 ); - const totalPoints = view.getUint32( 4 ); - - let offset = 8; - - // animation clip - - const times = new Float32Array( totalFrames ); - const values = new Float32Array( totalFrames * totalFrames ).fill( 0 ); - - for ( let i = 0; i < totalFrames; i ++ ) { - - times[ i ] = view.getFloat32( offset ); offset += 4; - values[ ( totalFrames * i ) + i ] = 1; - - } - - const track = new NumberKeyframeTrack( '.morphTargetInfluences', times, values ); - const clip = new AnimationClip( 'default', times[ times.length - 1 ], [ track ] ); - - // morph targets - - const morphTargets = []; - - for ( let i = 0; i < totalFrames; i ++ ) { - - const morphTarget = new Float32Array( totalPoints * 3 ); - - for ( let j = 0; j < totalPoints; j ++ ) { - - const stride = ( j * 3 ); - - morphTarget[ stride + 0 ] = view.getFloat32( offset ); offset += 4; // x - morphTarget[ stride + 1 ] = view.getFloat32( offset ); offset += 4; // y - morphTarget[ stride + 2 ] = view.getFloat32( offset ); offset += 4; // z - - } - - const attribute = new BufferAttribute( morphTarget, 3 ); - attribute.name = 'morph_' + i; - - morphTargets.push( attribute ); - - } - - return { - morphTargets: morphTargets, - clip: clip - }; - - } - -} - -export { MDDLoader }; diff --git a/three/addons/loaders/MMDLoader.js b/three/addons/loaders/MMDLoader.js deleted file mode 100644 index 1b0c2da..0000000 --- a/three/addons/loaders/MMDLoader.js +++ /dev/null @@ -1,2276 +0,0 @@ -import { - AddOperation, - AnimationClip, - Bone, - BufferGeometry, - Color, - CustomBlending, - TangentSpaceNormalMap, - DoubleSide, - DstAlphaFactor, - Euler, - FileLoader, - Float32BufferAttribute, - FrontSide, - Interpolant, - Loader, - LoaderUtils, - UniformsUtils, - ShaderMaterial, - MultiplyOperation, - NearestFilter, - NumberKeyframeTrack, - OneMinusSrcAlphaFactor, - Quaternion, - QuaternionKeyframeTrack, - RepeatWrapping, - Skeleton, - SkinnedMesh, - SrcAlphaFactor, - SRGBColorSpace, - TextureLoader, - Uint16BufferAttribute, - Vector3, - VectorKeyframeTrack, - RGB_S3TC_DXT1_Format, - RGB_PVRTC_4BPPV1_Format, - RGB_PVRTC_2BPPV1_Format, - RGB_ETC1_Format, - RGB_ETC2_Format -} from 'three'; -import { MMDToonShader } from '../shaders/MMDToonShader.js'; -import { TGALoader } from '../loaders/TGALoader.js'; -import { MMDParser } from '../libs/mmdparser.module.js'; - -/** - * Dependencies - * - mmd-parser https://github.com/takahirox/mmd-parser - * - TGALoader - * - OutlineEffect - * - * MMDLoader creates Three.js Objects from MMD resources as - * PMD, PMX, VMD, and VPD files. - * - * PMD/PMX is a model data format, VMD is a motion data format - * VPD is a posing data format used in MMD(Miku Miku Dance). - * - * MMD official site - * - https://sites.google.com/view/evpvp/ - * - * PMD, VMD format (in Japanese) - * - http://blog.goo.ne.jp/torisu_tetosuki/e/209ad341d3ece2b1b4df24abf619d6e4 - * - * PMX format - * - https://gist.github.com/felixjones/f8a06bd48f9da9a4539f - * - * TODO - * - light motion in vmd support. - * - SDEF support. - * - uv/material/bone morphing support. - * - more precise grant skinning support. - * - shadow support. - */ - -/** - * @param {THREE.LoadingManager} manager - */ -class MMDLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.loader = new FileLoader( this.manager ); - - this.parser = null; // lazy generation - this.meshBuilder = new MeshBuilder( this.manager ); - this.animationBuilder = new AnimationBuilder(); - - } - - /** - * @param {string} animationPath - * @return {MMDLoader} - */ - setAnimationPath( animationPath ) { - - this.animationPath = animationPath; - return this; - - } - - // Load MMD assets as Three.js Object - - /** - * Loads Model file (.pmd or .pmx) as a SkinnedMesh. - * - * @param {string} url - url to Model(.pmd or .pmx) file - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - load( url, onLoad, onProgress, onError ) { - - const builder = this.meshBuilder.setCrossOrigin( this.crossOrigin ); - - // resource path - - let resourcePath; - - if ( this.resourcePath !== '' ) { - - resourcePath = this.resourcePath; - - } else if ( this.path !== '' ) { - - resourcePath = this.path; - - } else { - - resourcePath = LoaderUtils.extractUrlBase( url ); - - } - - const modelExtension = this._extractExtension( url ).toLowerCase(); - - // Should I detect by seeing header? - if ( modelExtension !== 'pmd' && modelExtension !== 'pmx' ) { - - if ( onError ) onError( new Error( 'THREE.MMDLoader: Unknown model file extension .' + modelExtension + '.' ) ); - - return; - - } - - this[ modelExtension === 'pmd' ? 'loadPMD' : 'loadPMX' ]( url, function ( data ) { - - onLoad( builder.build( data, resourcePath, onProgress, onError ) ); - - }, onProgress, onError ); - - } - - /** - * Loads Motion file(s) (.vmd) as a AnimationClip. - * If two or more files are specified, they'll be merged. - * - * @param {string|Array} url - url(s) to animation(.vmd) file(s) - * @param {SkinnedMesh|THREE.Camera} object - tracks will be fitting to this object - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadAnimation( url, object, onLoad, onProgress, onError ) { - - const builder = this.animationBuilder; - - this.loadVMD( url, function ( vmd ) { - - onLoad( object.isCamera - ? builder.buildCameraAnimation( vmd ) - : builder.build( vmd, object ) ); - - }, onProgress, onError ); - - } - - /** - * Loads mode file and motion file(s) as an object containing - * a SkinnedMesh and a AnimationClip. - * Tracks of AnimationClip are fitting to the model. - * - * @param {string} modelUrl - url to Model(.pmd or .pmx) file - * @param {string|Array{string}} vmdUrl - url(s) to animation(.vmd) file - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadWithAnimation( modelUrl, vmdUrl, onLoad, onProgress, onError ) { - - const scope = this; - - this.load( modelUrl, function ( mesh ) { - - scope.loadAnimation( vmdUrl, mesh, function ( animation ) { - - onLoad( { - mesh: mesh, - animation: animation - } ); - - }, onProgress, onError ); - - }, onProgress, onError ); - - } - - // Load MMD assets as Object data parsed by MMDParser - - /** - * Loads .pmd file as an Object. - * - * @param {string} url - url to .pmd file - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadPMD( url, onLoad, onProgress, onError ) { - - const parser = this._getParser(); - - this.loader - .setMimeType( undefined ) - .setPath( this.path ) - .setResponseType( 'arraybuffer' ) - .setRequestHeader( this.requestHeader ) - .setWithCredentials( this.withCredentials ) - .load( url, function ( buffer ) { - - try { - - onLoad( parser.parsePmd( buffer, true ) ); - - } catch ( e ) { - - if ( onError ) onError( e ); - - } - - }, onProgress, onError ); - - } - - /** - * Loads .pmx file as an Object. - * - * @param {string} url - url to .pmx file - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadPMX( url, onLoad, onProgress, onError ) { - - const parser = this._getParser(); - - this.loader - .setMimeType( undefined ) - .setPath( this.path ) - .setResponseType( 'arraybuffer' ) - .setRequestHeader( this.requestHeader ) - .setWithCredentials( this.withCredentials ) - .load( url, function ( buffer ) { - - try { - - onLoad( parser.parsePmx( buffer, true ) ); - - } catch ( e ) { - - if ( onError ) onError( e ); - - } - - }, onProgress, onError ); - - } - - /** - * Loads .vmd file as an Object. If two or more files are specified - * they'll be merged. - * - * @param {string|Array} url - url(s) to .vmd file(s) - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadVMD( url, onLoad, onProgress, onError ) { - - const urls = Array.isArray( url ) ? url : [ url ]; - - const vmds = []; - const vmdNum = urls.length; - - const parser = this._getParser(); - - this.loader - .setMimeType( undefined ) - .setPath( this.animationPath ) - .setResponseType( 'arraybuffer' ) - .setRequestHeader( this.requestHeader ) - .setWithCredentials( this.withCredentials ); - - for ( let i = 0, il = urls.length; i < il; i ++ ) { - - this.loader.load( urls[ i ], function ( buffer ) { - - try { - - vmds.push( parser.parseVmd( buffer, true ) ); - - if ( vmds.length === vmdNum ) onLoad( parser.mergeVmds( vmds ) ); - - } catch ( e ) { - - if ( onError ) onError( e ); - - } - - }, onProgress, onError ); - - } - - } - - /** - * Loads .vpd file as an Object. - * - * @param {string} url - url to .vpd file - * @param {boolean} isUnicode - * @param {function} onLoad - * @param {function} onProgress - * @param {function} onError - */ - loadVPD( url, isUnicode, onLoad, onProgress, onError ) { - - const parser = this._getParser(); - - this.loader - .setMimeType( isUnicode ? undefined : 'text/plain; charset=shift_jis' ) - .setPath( this.animationPath ) - .setResponseType( 'text' ) - .setRequestHeader( this.requestHeader ) - .setWithCredentials( this.withCredentials ) - .load( url, function ( text ) { - - try { - - onLoad( parser.parseVpd( text, true ) ); - - } catch ( e ) { - - if ( onError ) onError( e ); - - } - - }, onProgress, onError ); - - } - - // private methods - - _extractExtension( url ) { - - const index = url.lastIndexOf( '.' ); - return index < 0 ? '' : url.slice( index + 1 ); - - } - - _getParser() { - - if ( this.parser === null ) { - - this.parser = new MMDParser.Parser(); - - } - - return this.parser; - - } - -} - -// Utilities - -/* - * base64 encoded defalut toon textures toon00.bmp - toon10.bmp. - * We don't need to request external toon image files. - */ -const DEFAULT_TOON_TEXTURES = [ - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/bWiiMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh8aBHZBl14e8wAAAABJRU5ErkJggg==', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOUlEQVRYR+3WMREAMAwDsYY/yoDI7MLwIiP40+RJklfcCCBAgAABAgTqArfb/QMCCBAgQIAAgbbAB3z/e0F3js2cAAAAAElFTkSuQmCC', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAN0lEQVRYR+3WQREAMBACsZ5/B5ilMvgEBTt5cW37hjsBBAgQIECAwFwgyfYPCCBAgAABAgTWAh81dWyx0gFwKAAAAABJRU5ErkJggg==', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOklEQVRYR+3WoREAMAwDsWb/UQtCy9wxTOQJ/oQ8SXKKGwEECBAgQIBAXeDt7f4BAQQIECBAgEBb4AOz8Hzx7WLY4wAAAABJRU5ErkJggg==', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABPUlEQVRYR+1XwW7CMAy1+f9fZOMysSEOEweEOPRNdm3HbdOyIhAcklPrOs/PLy9RygBALxzcCDQFmgJNgaZAU6Ap0BR4PwX8gsRMVLssMRH5HcpzJEaWL7EVg9F1IHRlyqQohgVr4FGUlUcMJSjcUlDw0zvjeun70cLWmneoyf7NgBTQSniBTQQSuJAZsOnnaczjIMb5hCiuHKxokCrJfVnrctyZL0PkJAJe1HMil4nxeyi3Ypfn1kX51jpPvo/JeCNC4PhVdHdJw2XjBR8brF8PEIhNVn12AgP7uHsTBguBn53MUZCqv7Lp07Pn5k1Ro+uWmUNn7D+M57rtk7aG0Vo73xyF/fbFf0bPJjDXngnGocDTdFhygZjwUQrMNrDcmZlQT50VJ/g/UwNyHpu778+yW+/ksOz/BFo54P4AsUXMfRq7XWsAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACMElEQVRYR+2Xv4pTQRTGf2dubhLdICiii2KnYKHVolhauKWPoGAnNr6BD6CvIVaihYuI2i1ia0BY0MZGRHQXjZj/mSPnnskfNWiWZUlzJ5k7M2cm833nO5Mziej2DWWJRUoCpQKlAntSQCqgw39/iUWAGmh37jrRnVsKlgpiqmkoGVABA7E57fvY+pJDdgKqF6HzFCSADkDq+F6AHABtQ+UMVE5D7zXod7fFNhTEckTbj5XQgHzNN+5tQvc5NG7C6BNkp6D3EmpXHDR+dQAjFLchW3VS9rlw3JBh+B7ys5Cf9z0GW1C/7P32AyBAOAz1q4jGliIH3YPuBnSfQX4OGreTIgEYQb/pBDtPnEQ4CivXYPAWBk13oHrB54yA9QuSn2H4AcKRpEILDt0BUzj+RLR1V5EqjD66NPRBVpLcQwjHoHYJOhsQv6U4mnzmrIXJCFr4LDwm/xBUoboG9XX4cc9VKdYoSA2yk5NQLJaKDUjTBoveG3Z2TElTxwjNK4M3LEZgUdDdruvcXzKBpStgp2NPiWi3ks9ZXxIoFVi+AvHLdc9TqtjL3/aYjpPlrzOcEnK62Szhimdd7xX232zFDTgtxezOu3WNMRLjiKgjtOhHVMd1loynVHvOgjuIIJMaELEqhJAV/RCSLbWTcfPFakFgFlALTRRvx+ok6Hlp/Q+v3fmx90bMyUzaEAhmM3KvHlXTL5DxnbGf/1M8RNNACLL5MNtPxP/mypJAqcDSFfgFhpYqWUzhTEAAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=', - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAL0lEQVRYR+3QQREAAAzCsOFfNJPBJ1XQS9r2hsUAAQIECBAgQIAAAQIECBAgsBZ4MUx/ofm2I/kAAAAASUVORK5CYII=' -]; - -const NON_ALPHA_CHANNEL_FORMATS = [ - RGB_S3TC_DXT1_Format, - RGB_PVRTC_4BPPV1_Format, - RGB_PVRTC_2BPPV1_Format, - RGB_ETC1_Format, - RGB_ETC2_Format -]; - -// Builders. They build Three.js object from Object data parsed by MMDParser. - -/** - * @param {THREE.LoadingManager} manager - */ -class MeshBuilder { - - constructor( manager ) { - - this.crossOrigin = 'anonymous'; - this.geometryBuilder = new GeometryBuilder(); - this.materialBuilder = new MaterialBuilder( manager ); - - } - - /** - * @param {string} crossOrigin - * @return {MeshBuilder} - */ - setCrossOrigin( crossOrigin ) { - - this.crossOrigin = crossOrigin; - return this; - - } - - /** - * @param {Object} data - parsed PMD/PMX data - * @param {string} resourcePath - * @param {function} onProgress - * @param {function} onError - * @return {SkinnedMesh} - */ - build( data, resourcePath, onProgress, onError ) { - - const geometry = this.geometryBuilder.build( data ); - const material = this.materialBuilder - .setCrossOrigin( this.crossOrigin ) - .setResourcePath( resourcePath ) - .build( data, geometry, onProgress, onError ); - - const mesh = new SkinnedMesh( geometry, material ); - - const skeleton = new Skeleton( initBones( mesh ) ); - mesh.bind( skeleton ); - - // console.log( mesh ); // for console debug - - return mesh; - - } - -} - -// TODO: Try to remove this function - -function initBones( mesh ) { - - const geometry = mesh.geometry; - - const bones = []; - - if ( geometry && geometry.bones !== undefined ) { - - // first, create array of 'Bone' objects from geometry data - - for ( let i = 0, il = geometry.bones.length; i < il; i ++ ) { - - const gbone = geometry.bones[ i ]; - - // create new 'Bone' object - - const bone = new Bone(); - bones.push( bone ); - - // apply values - - bone.name = gbone.name; - bone.position.fromArray( gbone.pos ); - bone.quaternion.fromArray( gbone.rotq ); - if ( gbone.scl !== undefined ) bone.scale.fromArray( gbone.scl ); - - } - - // second, create bone hierarchy - - for ( let i = 0, il = geometry.bones.length; i < il; i ++ ) { - - const gbone = geometry.bones[ i ]; - - if ( ( gbone.parent !== - 1 ) && ( gbone.parent !== null ) && ( bones[ gbone.parent ] !== undefined ) ) { - - // subsequent bones in the hierarchy - - bones[ gbone.parent ].add( bones[ i ] ); - - } else { - - // topmost bone, immediate child of the skinned mesh - - mesh.add( bones[ i ] ); - - } - - } - - } - - // now the bones are part of the scene graph and children of the skinned mesh. - // let's update the corresponding matrices - - mesh.updateMatrixWorld( true ); - - return bones; - -} - -// - -class GeometryBuilder { - - /** - * @param {Object} data - parsed PMD/PMX data - * @return {BufferGeometry} - */ - build( data ) { - - // for geometry - const positions = []; - const uvs = []; - const normals = []; - - const indices = []; - - const groups = []; - - const bones = []; - const skinIndices = []; - const skinWeights = []; - - const morphTargets = []; - const morphPositions = []; - - const iks = []; - const grants = []; - - const rigidBodies = []; - const constraints = []; - - // for work - let offset = 0; - const boneTypeTable = {}; - - // positions, normals, uvs, skinIndices, skinWeights - - for ( let i = 0; i < data.metadata.vertexCount; i ++ ) { - - const v = data.vertices[ i ]; - - for ( let j = 0, jl = v.position.length; j < jl; j ++ ) { - - positions.push( v.position[ j ] ); - - } - - for ( let j = 0, jl = v.normal.length; j < jl; j ++ ) { - - normals.push( v.normal[ j ] ); - - } - - for ( let j = 0, jl = v.uv.length; j < jl; j ++ ) { - - uvs.push( v.uv[ j ] ); - - } - - for ( let j = 0; j < 4; j ++ ) { - - skinIndices.push( v.skinIndices.length - 1 >= j ? v.skinIndices[ j ] : 0.0 ); - - } - - for ( let j = 0; j < 4; j ++ ) { - - skinWeights.push( v.skinWeights.length - 1 >= j ? v.skinWeights[ j ] : 0.0 ); - - } - - } - - // indices - - for ( let i = 0; i < data.metadata.faceCount; i ++ ) { - - const face = data.faces[ i ]; - - for ( let j = 0, jl = face.indices.length; j < jl; j ++ ) { - - indices.push( face.indices[ j ] ); - - } - - } - - // groups - - for ( let i = 0; i < data.metadata.materialCount; i ++ ) { - - const material = data.materials[ i ]; - - groups.push( { - offset: offset * 3, - count: material.faceCount * 3 - } ); - - offset += material.faceCount; - - } - - // bones - - for ( let i = 0; i < data.metadata.rigidBodyCount; i ++ ) { - - const body = data.rigidBodies[ i ]; - let value = boneTypeTable[ body.boneIndex ]; - - // keeps greater number if already value is set without any special reasons - value = value === undefined ? body.type : Math.max( body.type, value ); - - boneTypeTable[ body.boneIndex ] = value; - - } - - for ( let i = 0; i < data.metadata.boneCount; i ++ ) { - - const boneData = data.bones[ i ]; - - const bone = { - index: i, - transformationClass: boneData.transformationClass, - parent: boneData.parentIndex, - name: boneData.name, - pos: boneData.position.slice( 0, 3 ), - rotq: [ 0, 0, 0, 1 ], - scl: [ 1, 1, 1 ], - rigidBodyType: boneTypeTable[ i ] !== undefined ? boneTypeTable[ i ] : - 1 - }; - - if ( bone.parent !== - 1 ) { - - bone.pos[ 0 ] -= data.bones[ bone.parent ].position[ 0 ]; - bone.pos[ 1 ] -= data.bones[ bone.parent ].position[ 1 ]; - bone.pos[ 2 ] -= data.bones[ bone.parent ].position[ 2 ]; - - } - - bones.push( bone ); - - } - - // iks - - // TODO: remove duplicated codes between PMD and PMX - if ( data.metadata.format === 'pmd' ) { - - for ( let i = 0; i < data.metadata.ikCount; i ++ ) { - - const ik = data.iks[ i ]; - - const param = { - target: ik.target, - effector: ik.effector, - iteration: ik.iteration, - maxAngle: ik.maxAngle * 4, - links: [] - }; - - for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) { - - const link = {}; - link.index = ik.links[ j ].index; - link.enabled = true; - - if ( data.bones[ link.index ].name.indexOf( 'ひざ' ) >= 0 ) { - - link.limitation = new Vector3( 1.0, 0.0, 0.0 ); - - } - - param.links.push( link ); - - } - - iks.push( param ); - - } - - } else { - - for ( let i = 0; i < data.metadata.boneCount; i ++ ) { - - const ik = data.bones[ i ].ik; - - if ( ik === undefined ) continue; - - const param = { - target: i, - effector: ik.effector, - iteration: ik.iteration, - maxAngle: ik.maxAngle, - links: [] - }; - - for ( let j = 0, jl = ik.links.length; j < jl; j ++ ) { - - const link = {}; - link.index = ik.links[ j ].index; - link.enabled = true; - - if ( ik.links[ j ].angleLimitation === 1 ) { - - // Revert if rotationMin/Max doesn't work well - // link.limitation = new Vector3( 1.0, 0.0, 0.0 ); - - const rotationMin = ik.links[ j ].lowerLimitationAngle; - const rotationMax = ik.links[ j ].upperLimitationAngle; - - // Convert Left to Right coordinate by myself because - // MMDParser doesn't convert. It's a MMDParser's bug - - const tmp1 = - rotationMax[ 0 ]; - const tmp2 = - rotationMax[ 1 ]; - rotationMax[ 0 ] = - rotationMin[ 0 ]; - rotationMax[ 1 ] = - rotationMin[ 1 ]; - rotationMin[ 0 ] = tmp1; - rotationMin[ 1 ] = tmp2; - - link.rotationMin = new Vector3().fromArray( rotationMin ); - link.rotationMax = new Vector3().fromArray( rotationMax ); - - } - - param.links.push( link ); - - } - - iks.push( param ); - - // Save the reference even from bone data for efficiently - // simulating PMX animation system - bones[ i ].ik = param; - - } - - } - - // grants - - if ( data.metadata.format === 'pmx' ) { - - // bone index -> grant entry map - const grantEntryMap = {}; - - for ( let i = 0; i < data.metadata.boneCount; i ++ ) { - - const boneData = data.bones[ i ]; - const grant = boneData.grant; - - if ( grant === undefined ) continue; - - const param = { - index: i, - parentIndex: grant.parentIndex, - ratio: grant.ratio, - isLocal: grant.isLocal, - affectRotation: grant.affectRotation, - affectPosition: grant.affectPosition, - transformationClass: boneData.transformationClass - }; - - grantEntryMap[ i ] = { parent: null, children: [], param: param, visited: false }; - - } - - const rootEntry = { parent: null, children: [], param: null, visited: false }; - - // Build a tree representing grant hierarchy - - for ( const boneIndex in grantEntryMap ) { - - const grantEntry = grantEntryMap[ boneIndex ]; - const parentGrantEntry = grantEntryMap[ grantEntry.parentIndex ] || rootEntry; - - grantEntry.parent = parentGrantEntry; - parentGrantEntry.children.push( grantEntry ); - - } - - // Sort grant parameters from parents to children because - // grant uses parent's transform that parent's grant is already applied - // so grant should be applied in order from parents to children - - function traverse( entry ) { - - if ( entry.param ) { - - grants.push( entry.param ); - - // Save the reference even from bone data for efficiently - // simulating PMX animation system - bones[ entry.param.index ].grant = entry.param; - - } - - entry.visited = true; - - for ( let i = 0, il = entry.children.length; i < il; i ++ ) { - - const child = entry.children[ i ]; - - // Cut off a loop if exists. (Is a grant loop invalid?) - if ( ! child.visited ) traverse( child ); - - } - - } - - traverse( rootEntry ); - - } - - // morph - - function updateAttributes( attribute, morph, ratio ) { - - for ( let i = 0; i < morph.elementCount; i ++ ) { - - const element = morph.elements[ i ]; - - let index; - - if ( data.metadata.format === 'pmd' ) { - - index = data.morphs[ 0 ].elements[ element.index ].index; - - } else { - - index = element.index; - - } - - attribute.array[ index * 3 + 0 ] += element.position[ 0 ] * ratio; - attribute.array[ index * 3 + 1 ] += element.position[ 1 ] * ratio; - attribute.array[ index * 3 + 2 ] += element.position[ 2 ] * ratio; - - } - - } - - for ( let i = 0; i < data.metadata.morphCount; i ++ ) { - - const morph = data.morphs[ i ]; - const params = { name: morph.name }; - - const attribute = new Float32BufferAttribute( data.metadata.vertexCount * 3, 3 ); - attribute.name = morph.name; - - for ( let j = 0; j < data.metadata.vertexCount * 3; j ++ ) { - - attribute.array[ j ] = positions[ j ]; - - } - - if ( data.metadata.format === 'pmd' ) { - - if ( i !== 0 ) { - - updateAttributes( attribute, morph, 1.0 ); - - } - - } else { - - if ( morph.type === 0 ) { // group - - for ( let j = 0; j < morph.elementCount; j ++ ) { - - const morph2 = data.morphs[ morph.elements[ j ].index ]; - const ratio = morph.elements[ j ].ratio; - - if ( morph2.type === 1 ) { - - updateAttributes( attribute, morph2, ratio ); - - } else { - - // TODO: implement - - } - - } - - } else if ( morph.type === 1 ) { // vertex - - updateAttributes( attribute, morph, 1.0 ); - - } else if ( morph.type === 2 ) { // bone - - // TODO: implement - - } else if ( morph.type === 3 ) { // uv - - // TODO: implement - - } else if ( morph.type === 4 ) { // additional uv1 - - // TODO: implement - - } else if ( morph.type === 5 ) { // additional uv2 - - // TODO: implement - - } else if ( morph.type === 6 ) { // additional uv3 - - // TODO: implement - - } else if ( morph.type === 7 ) { // additional uv4 - - // TODO: implement - - } else if ( morph.type === 8 ) { // material - - // TODO: implement - - } - - } - - morphTargets.push( params ); - morphPositions.push( attribute ); - - } - - // rigid bodies from rigidBodies field. - - for ( let i = 0; i < data.metadata.rigidBodyCount; i ++ ) { - - const rigidBody = data.rigidBodies[ i ]; - const params = {}; - - for ( const key in rigidBody ) { - - params[ key ] = rigidBody[ key ]; - - } - - /* - * RigidBody position parameter in PMX seems global position - * while the one in PMD seems offset from corresponding bone. - * So unify being offset. - */ - if ( data.metadata.format === 'pmx' ) { - - if ( params.boneIndex !== - 1 ) { - - const bone = data.bones[ params.boneIndex ]; - params.position[ 0 ] -= bone.position[ 0 ]; - params.position[ 1 ] -= bone.position[ 1 ]; - params.position[ 2 ] -= bone.position[ 2 ]; - - } - - } - - rigidBodies.push( params ); - - } - - // constraints from constraints field. - - for ( let i = 0; i < data.metadata.constraintCount; i ++ ) { - - const constraint = data.constraints[ i ]; - const params = {}; - - for ( const key in constraint ) { - - params[ key ] = constraint[ key ]; - - } - - const bodyA = rigidBodies[ params.rigidBodyIndex1 ]; - const bodyB = rigidBodies[ params.rigidBodyIndex2 ]; - - // Refer to http://www20.atpages.jp/katwat/wp/?p=4135 - if ( bodyA.type !== 0 && bodyB.type === 2 ) { - - if ( bodyA.boneIndex !== - 1 && bodyB.boneIndex !== - 1 && - data.bones[ bodyB.boneIndex ].parentIndex === bodyA.boneIndex ) { - - bodyB.type = 1; - - } - - } - - constraints.push( params ); - - } - - // build BufferGeometry. - - const geometry = new BufferGeometry(); - - geometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - geometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - geometry.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - geometry.setAttribute( 'skinIndex', new Uint16BufferAttribute( skinIndices, 4 ) ); - geometry.setAttribute( 'skinWeight', new Float32BufferAttribute( skinWeights, 4 ) ); - geometry.setIndex( indices ); - - for ( let i = 0, il = groups.length; i < il; i ++ ) { - - geometry.addGroup( groups[ i ].offset, groups[ i ].count, i ); - - } - - geometry.bones = bones; - - geometry.morphTargets = morphTargets; - geometry.morphAttributes.position = morphPositions; - geometry.morphTargetsRelative = false; - - geometry.userData.MMD = { - bones: bones, - iks: iks, - grants: grants, - rigidBodies: rigidBodies, - constraints: constraints, - format: data.metadata.format - }; - - geometry.computeBoundingSphere(); - - return geometry; - - } - -} - -// - -/** - * @param {THREE.LoadingManager} manager - */ -class MaterialBuilder { - - constructor( manager ) { - - this.manager = manager; - - this.textureLoader = new TextureLoader( this.manager ); - this.tgaLoader = null; // lazy generation - - this.crossOrigin = 'anonymous'; - this.resourcePath = undefined; - - } - - /** - * @param {string} crossOrigin - * @return {MaterialBuilder} - */ - setCrossOrigin( crossOrigin ) { - - this.crossOrigin = crossOrigin; - return this; - - } - - /** - * @param {string} resourcePath - * @return {MaterialBuilder} - */ - setResourcePath( resourcePath ) { - - this.resourcePath = resourcePath; - return this; - - } - - /** - * @param {Object} data - parsed PMD/PMX data - * @param {BufferGeometry} geometry - some properties are dependend on geometry - * @param {function} onProgress - * @param {function} onError - * @return {Array} - */ - build( data, geometry /*, onProgress, onError */ ) { - - const materials = []; - - const textures = {}; - - this.textureLoader.setCrossOrigin( this.crossOrigin ); - - // materials - - for ( let i = 0; i < data.metadata.materialCount; i ++ ) { - - const material = data.materials[ i ]; - - const params = { userData: { MMD: {} } }; - - if ( material.name !== undefined ) params.name = material.name; - - /* - * Color - * - * MMD MMDToonMaterial - * ambient - emissive * a - * (a = 1.0 without map texture or 0.2 with map texture) - * - * MMDToonMaterial doesn't have ambient. Set it to emissive instead. - * It'll be too bright if material has map texture so using coef 0.2. - */ - params.diffuse = new Color().setRGB( - material.diffuse[ 0 ], - material.diffuse[ 1 ], - material.diffuse[ 2 ], - SRGBColorSpace - ); - params.opacity = material.diffuse[ 3 ]; - params.specular = new Color().setRGB( ...material.specular, SRGBColorSpace ); - params.shininess = material.shininess; - params.emissive = new Color().setRGB( ...material.ambient, SRGBColorSpace ); - params.transparent = params.opacity !== 1.0; - - // - - params.fog = true; - - // blend - - params.blending = CustomBlending; - params.blendSrc = SrcAlphaFactor; - params.blendDst = OneMinusSrcAlphaFactor; - params.blendSrcAlpha = SrcAlphaFactor; - params.blendDstAlpha = DstAlphaFactor; - - // side - - if ( data.metadata.format === 'pmx' && ( material.flag & 0x1 ) === 1 ) { - - params.side = DoubleSide; - - } else { - - params.side = params.opacity === 1.0 ? FrontSide : DoubleSide; - - } - - if ( data.metadata.format === 'pmd' ) { - - // map, matcap - - if ( material.fileName ) { - - const fileName = material.fileName; - const fileNames = fileName.split( '*' ); - - // fileNames[ 0 ]: mapFileName - // fileNames[ 1 ]: matcapFileName( optional ) - - params.map = this._loadTexture( fileNames[ 0 ], textures ); - - if ( fileNames.length > 1 ) { - - const extension = fileNames[ 1 ].slice( - 4 ).toLowerCase(); - - params.matcap = this._loadTexture( - fileNames[ 1 ], - textures - ); - - params.matcapCombine = extension === '.sph' - ? MultiplyOperation - : AddOperation; - - } - - } - - // gradientMap - - const toonFileName = ( material.toonIndex === - 1 ) - ? 'toon00.bmp' - : data.toonTextures[ material.toonIndex ].fileName; - - params.gradientMap = this._loadTexture( - toonFileName, - textures, - { - isToonTexture: true, - isDefaultToonTexture: this._isDefaultToonTexture( toonFileName ) - } - ); - - // parameters for OutlineEffect - - params.userData.outlineParameters = { - thickness: material.edgeFlag === 1 ? 0.003 : 0.0, - color: [ 0, 0, 0 ], - alpha: 1.0, - visible: material.edgeFlag === 1 - }; - - } else { - - // map - - if ( material.textureIndex !== - 1 ) { - - params.map = this._loadTexture( data.textures[ material.textureIndex ], textures ); - - // Since PMX spec don't have standard to list map files except color map and env map, - // we need to save file name for further mapping, like matching normal map file names after model loaded. - // ref: https://gist.github.com/felixjones/f8a06bd48f9da9a4539f#texture - params.userData.MMD.mapFileName = data.textures[ material.textureIndex ]; - - } - - // matcap TODO: support m.envFlag === 3 - - if ( material.envTextureIndex !== - 1 && ( material.envFlag === 1 || material.envFlag == 2 ) ) { - - params.matcap = this._loadTexture( - data.textures[ material.envTextureIndex ], - textures - ); - - // Same as color map above, keep file name in userData for further usage. - params.userData.MMD.matcapFileName = data.textures[ material.envTextureIndex ]; - - params.matcapCombine = material.envFlag === 1 - ? MultiplyOperation - : AddOperation; - - } - - // gradientMap - - let toonFileName, isDefaultToon; - - if ( material.toonIndex === - 1 || material.toonFlag !== 0 ) { - - toonFileName = 'toon' + ( '0' + ( material.toonIndex + 1 ) ).slice( - 2 ) + '.bmp'; - isDefaultToon = true; - - } else { - - toonFileName = data.textures[ material.toonIndex ]; - isDefaultToon = false; - - } - - params.gradientMap = this._loadTexture( - toonFileName, - textures, - { - isToonTexture: true, - isDefaultToonTexture: isDefaultToon - } - ); - - // parameters for OutlineEffect - params.userData.outlineParameters = { - thickness: material.edgeSize / 300, // TODO: better calculation? - color: material.edgeColor.slice( 0, 3 ), - alpha: material.edgeColor[ 3 ], - visible: ( material.flag & 0x10 ) !== 0 && material.edgeSize > 0.0 - }; - - } - - if ( params.map !== undefined ) { - - if ( ! params.transparent ) { - - this._checkImageTransparency( params.map, geometry, i ); - - } - - params.emissive.multiplyScalar( 0.2 ); - - } - - materials.push( new MMDToonMaterial( params ) ); - - } - - if ( data.metadata.format === 'pmx' ) { - - // set transparent true if alpha morph is defined. - - function checkAlphaMorph( elements, materials ) { - - for ( let i = 0, il = elements.length; i < il; i ++ ) { - - const element = elements[ i ]; - - if ( element.index === - 1 ) continue; - - const material = materials[ element.index ]; - - if ( material.opacity !== element.diffuse[ 3 ] ) { - - material.transparent = true; - - } - - } - - } - - for ( let i = 0, il = data.morphs.length; i < il; i ++ ) { - - const morph = data.morphs[ i ]; - const elements = morph.elements; - - if ( morph.type === 0 ) { - - for ( let j = 0, jl = elements.length; j < jl; j ++ ) { - - const morph2 = data.morphs[ elements[ j ].index ]; - - if ( morph2.type !== 8 ) continue; - - checkAlphaMorph( morph2.elements, materials ); - - } - - } else if ( morph.type === 8 ) { - - checkAlphaMorph( elements, materials ); - - } - - } - - } - - return materials; - - } - - // private methods - - _getTGALoader() { - - if ( this.tgaLoader === null ) { - - if ( TGALoader === undefined ) { - - throw new Error( 'THREE.MMDLoader: Import TGALoader' ); - - } - - this.tgaLoader = new TGALoader( this.manager ); - - } - - return this.tgaLoader; - - } - - _isDefaultToonTexture( name ) { - - if ( name.length !== 10 ) return false; - - return /toon(10|0[0-9])\.bmp/.test( name ); - - } - - _loadTexture( filePath, textures, params, onProgress, onError ) { - - params = params || {}; - - const scope = this; - - let fullPath; - - if ( params.isDefaultToonTexture === true ) { - - let index; - - try { - - index = parseInt( filePath.match( /toon([0-9]{2})\.bmp$/ )[ 1 ] ); - - } catch ( e ) { - - console.warn( 'THREE.MMDLoader: ' + filePath + ' seems like a ' - + 'not right default texture path. Using toon00.bmp instead.' ); - - index = 0; - - } - - fullPath = DEFAULT_TOON_TEXTURES[ index ]; - - } else { - - fullPath = this.resourcePath + filePath; - - } - - if ( textures[ fullPath ] !== undefined ) return textures[ fullPath ]; - - let loader = this.manager.getHandler( fullPath ); - - if ( loader === null ) { - - loader = ( filePath.slice( - 4 ).toLowerCase() === '.tga' ) - ? this._getTGALoader() - : this.textureLoader; - - } - - const texture = loader.load( fullPath, function ( t ) { - - // MMD toon texture is Axis-Y oriented - // but Three.js gradient map is Axis-X oriented. - // So here replaces the toon texture image with the rotated one. - if ( params.isToonTexture === true ) { - - t.image = scope._getRotatedImage( t.image ); - - t.magFilter = NearestFilter; - t.minFilter = NearestFilter; - - } - - t.flipY = false; - t.wrapS = RepeatWrapping; - t.wrapT = RepeatWrapping; - t.colorSpace = SRGBColorSpace; - - for ( let i = 0; i < texture.readyCallbacks.length; i ++ ) { - - texture.readyCallbacks[ i ]( texture ); - - } - - delete texture.readyCallbacks; - - }, onProgress, onError ); - - texture.readyCallbacks = []; - - textures[ fullPath ] = texture; - - return texture; - - } - - _getRotatedImage( image ) { - - const canvas = document.createElement( 'canvas' ); - const context = canvas.getContext( '2d' ); - - const width = image.width; - const height = image.height; - - canvas.width = width; - canvas.height = height; - - context.clearRect( 0, 0, width, height ); - context.translate( width / 2.0, height / 2.0 ); - context.rotate( 0.5 * Math.PI ); // 90.0 * Math.PI / 180.0 - context.translate( - width / 2.0, - height / 2.0 ); - context.drawImage( image, 0, 0 ); - - return context.getImageData( 0, 0, width, height ); - - } - - // Check if the partial image area used by the texture is transparent. - _checkImageTransparency( map, geometry, groupIndex ) { - - map.readyCallbacks.push( function ( texture ) { - - // Is there any efficient ways? - function createImageData( image ) { - - const canvas = document.createElement( 'canvas' ); - canvas.width = image.width; - canvas.height = image.height; - - const context = canvas.getContext( '2d' ); - context.drawImage( image, 0, 0 ); - - return context.getImageData( 0, 0, canvas.width, canvas.height ); - - } - - function detectImageTransparency( image, uvs, indices ) { - - const width = image.width; - const height = image.height; - const data = image.data; - const threshold = 253; - - if ( data.length / ( width * height ) !== 4 ) return false; - - for ( let i = 0; i < indices.length; i += 3 ) { - - const centerUV = { x: 0.0, y: 0.0 }; - - for ( let j = 0; j < 3; j ++ ) { - - const index = indices[ i * 3 + j ]; - const uv = { x: uvs[ index * 2 + 0 ], y: uvs[ index * 2 + 1 ] }; - - if ( getAlphaByUv( image, uv ) < threshold ) return true; - - centerUV.x += uv.x; - centerUV.y += uv.y; - - } - - centerUV.x /= 3; - centerUV.y /= 3; - - if ( getAlphaByUv( image, centerUV ) < threshold ) return true; - - } - - return false; - - } - - /* - * This method expects - * texture.flipY = false - * texture.wrapS = RepeatWrapping - * texture.wrapT = RepeatWrapping - * TODO: more precise - */ - function getAlphaByUv( image, uv ) { - - const width = image.width; - const height = image.height; - - let x = Math.round( uv.x * width ) % width; - let y = Math.round( uv.y * height ) % height; - - if ( x < 0 ) x += width; - if ( y < 0 ) y += height; - - const index = y * width + x; - - return image.data[ index * 4 + 3 ]; - - } - - if ( texture.isCompressedTexture === true ) { - - if ( NON_ALPHA_CHANNEL_FORMATS.includes( texture.format ) ) { - - map.transparent = false; - - } else { - - // any other way to check transparency of CompressedTexture? - map.transparent = true; - - } - - return; - - } - - const imageData = texture.image.data !== undefined - ? texture.image - : createImageData( texture.image ); - - const group = geometry.groups[ groupIndex ]; - - if ( detectImageTransparency( - imageData, - geometry.attributes.uv.array, - geometry.index.array.slice( group.start, group.start + group.count ) ) ) { - - map.transparent = true; - - } - - } ); - - } - -} - -// - -class AnimationBuilder { - - /** - * @param {Object} vmd - parsed VMD data - * @param {SkinnedMesh} mesh - tracks will be fitting to mesh - * @return {AnimationClip} - */ - build( vmd, mesh ) { - - // combine skeletal and morph animations - - const tracks = this.buildSkeletalAnimation( vmd, mesh ).tracks; - const tracks2 = this.buildMorphAnimation( vmd, mesh ).tracks; - - for ( let i = 0, il = tracks2.length; i < il; i ++ ) { - - tracks.push( tracks2[ i ] ); - - } - - return new AnimationClip( '', - 1, tracks ); - - } - - /** - * @param {Object} vmd - parsed VMD data - * @param {SkinnedMesh} mesh - tracks will be fitting to mesh - * @return {AnimationClip} - */ - buildSkeletalAnimation( vmd, mesh ) { - - function pushInterpolation( array, interpolation, index ) { - - array.push( interpolation[ index + 0 ] / 127 ); // x1 - array.push( interpolation[ index + 8 ] / 127 ); // x2 - array.push( interpolation[ index + 4 ] / 127 ); // y1 - array.push( interpolation[ index + 12 ] / 127 ); // y2 - - } - - const tracks = []; - - const motions = {}; - const bones = mesh.skeleton.bones; - const boneNameDictionary = {}; - - for ( let i = 0, il = bones.length; i < il; i ++ ) { - - boneNameDictionary[ bones[ i ].name ] = true; - - } - - for ( let i = 0; i < vmd.metadata.motionCount; i ++ ) { - - const motion = vmd.motions[ i ]; - const boneName = motion.boneName; - - if ( boneNameDictionary[ boneName ] === undefined ) continue; - - motions[ boneName ] = motions[ boneName ] || []; - motions[ boneName ].push( motion ); - - } - - for ( const key in motions ) { - - const array = motions[ key ]; - - array.sort( function ( a, b ) { - - return a.frameNum - b.frameNum; - - } ); - - const times = []; - const positions = []; - const rotations = []; - const pInterpolations = []; - const rInterpolations = []; - - const basePosition = mesh.skeleton.getBoneByName( key ).position.toArray(); - - for ( let i = 0, il = array.length; i < il; i ++ ) { - - const time = array[ i ].frameNum / 30; - const position = array[ i ].position; - const rotation = array[ i ].rotation; - const interpolation = array[ i ].interpolation; - - times.push( time ); - - for ( let j = 0; j < 3; j ++ ) positions.push( basePosition[ j ] + position[ j ] ); - for ( let j = 0; j < 4; j ++ ) rotations.push( rotation[ j ] ); - for ( let j = 0; j < 3; j ++ ) pushInterpolation( pInterpolations, interpolation, j ); - - pushInterpolation( rInterpolations, interpolation, 3 ); - - } - - const targetName = '.bones[' + key + ']'; - - tracks.push( this._createTrack( targetName + '.position', VectorKeyframeTrack, times, positions, pInterpolations ) ); - tracks.push( this._createTrack( targetName + '.quaternion', QuaternionKeyframeTrack, times, rotations, rInterpolations ) ); - - } - - return new AnimationClip( '', - 1, tracks ); - - } - - /** - * @param {Object} vmd - parsed VMD data - * @param {SkinnedMesh} mesh - tracks will be fitting to mesh - * @return {AnimationClip} - */ - buildMorphAnimation( vmd, mesh ) { - - const tracks = []; - - const morphs = {}; - const morphTargetDictionary = mesh.morphTargetDictionary; - - for ( let i = 0; i < vmd.metadata.morphCount; i ++ ) { - - const morph = vmd.morphs[ i ]; - const morphName = morph.morphName; - - if ( morphTargetDictionary[ morphName ] === undefined ) continue; - - morphs[ morphName ] = morphs[ morphName ] || []; - morphs[ morphName ].push( morph ); - - } - - for ( const key in morphs ) { - - const array = morphs[ key ]; - - array.sort( function ( a, b ) { - - return a.frameNum - b.frameNum; - - } ); - - const times = []; - const values = []; - - for ( let i = 0, il = array.length; i < il; i ++ ) { - - times.push( array[ i ].frameNum / 30 ); - values.push( array[ i ].weight ); - - } - - tracks.push( new NumberKeyframeTrack( '.morphTargetInfluences[' + morphTargetDictionary[ key ] + ']', times, values ) ); - - } - - return new AnimationClip( '', - 1, tracks ); - - } - - /** - * @param {Object} vmd - parsed VMD data - * @return {AnimationClip} - */ - buildCameraAnimation( vmd ) { - - function pushVector3( array, vec ) { - - array.push( vec.x ); - array.push( vec.y ); - array.push( vec.z ); - - } - - function pushQuaternion( array, q ) { - - array.push( q.x ); - array.push( q.y ); - array.push( q.z ); - array.push( q.w ); - - } - - function pushInterpolation( array, interpolation, index ) { - - array.push( interpolation[ index * 4 + 0 ] / 127 ); // x1 - array.push( interpolation[ index * 4 + 1 ] / 127 ); // x2 - array.push( interpolation[ index * 4 + 2 ] / 127 ); // y1 - array.push( interpolation[ index * 4 + 3 ] / 127 ); // y2 - - } - - const cameras = vmd.cameras === undefined ? [] : vmd.cameras.slice(); - - cameras.sort( function ( a, b ) { - - return a.frameNum - b.frameNum; - - } ); - - const times = []; - const centers = []; - const quaternions = []; - const positions = []; - const fovs = []; - - const cInterpolations = []; - const qInterpolations = []; - const pInterpolations = []; - const fInterpolations = []; - - const quaternion = new Quaternion(); - const euler = new Euler(); - const position = new Vector3(); - const center = new Vector3(); - - for ( let i = 0, il = cameras.length; i < il; i ++ ) { - - const motion = cameras[ i ]; - - const time = motion.frameNum / 30; - const pos = motion.position; - const rot = motion.rotation; - const distance = motion.distance; - const fov = motion.fov; - const interpolation = motion.interpolation; - - times.push( time ); - - position.set( 0, 0, - distance ); - center.set( pos[ 0 ], pos[ 1 ], pos[ 2 ] ); - - euler.set( - rot[ 0 ], - rot[ 1 ], - rot[ 2 ] ); - quaternion.setFromEuler( euler ); - - position.add( center ); - position.applyQuaternion( quaternion ); - - pushVector3( centers, center ); - pushQuaternion( quaternions, quaternion ); - pushVector3( positions, position ); - - fovs.push( fov ); - - for ( let j = 0; j < 3; j ++ ) { - - pushInterpolation( cInterpolations, interpolation, j ); - - } - - pushInterpolation( qInterpolations, interpolation, 3 ); - - // use the same parameter for x, y, z axis. - for ( let j = 0; j < 3; j ++ ) { - - pushInterpolation( pInterpolations, interpolation, 4 ); - - } - - pushInterpolation( fInterpolations, interpolation, 5 ); - - } - - const tracks = []; - - // I expect an object whose name 'target' exists under THREE.Camera - tracks.push( this._createTrack( 'target.position', VectorKeyframeTrack, times, centers, cInterpolations ) ); - - tracks.push( this._createTrack( '.quaternion', QuaternionKeyframeTrack, times, quaternions, qInterpolations ) ); - tracks.push( this._createTrack( '.position', VectorKeyframeTrack, times, positions, pInterpolations ) ); - tracks.push( this._createTrack( '.fov', NumberKeyframeTrack, times, fovs, fInterpolations ) ); - - return new AnimationClip( '', - 1, tracks ); - - } - - // private method - - _createTrack( node, typedKeyframeTrack, times, values, interpolations ) { - - /* - * optimizes here not to let KeyframeTrackPrototype optimize - * because KeyframeTrackPrototype optimizes times and values but - * doesn't optimize interpolations. - */ - if ( times.length > 2 ) { - - times = times.slice(); - values = values.slice(); - interpolations = interpolations.slice(); - - const stride = values.length / times.length; - const interpolateStride = interpolations.length / times.length; - - let index = 1; - - for ( let aheadIndex = 2, endIndex = times.length; aheadIndex < endIndex; aheadIndex ++ ) { - - for ( let i = 0; i < stride; i ++ ) { - - if ( values[ index * stride + i ] !== values[ ( index - 1 ) * stride + i ] || - values[ index * stride + i ] !== values[ aheadIndex * stride + i ] ) { - - index ++; - break; - - } - - } - - if ( aheadIndex > index ) { - - times[ index ] = times[ aheadIndex ]; - - for ( let i = 0; i < stride; i ++ ) { - - values[ index * stride + i ] = values[ aheadIndex * stride + i ]; - - } - - for ( let i = 0; i < interpolateStride; i ++ ) { - - interpolations[ index * interpolateStride + i ] = interpolations[ aheadIndex * interpolateStride + i ]; - - } - - } - - } - - times.length = index + 1; - values.length = ( index + 1 ) * stride; - interpolations.length = ( index + 1 ) * interpolateStride; - - } - - const track = new typedKeyframeTrack( node, times, values ); - - track.createInterpolant = function InterpolantFactoryMethodCubicBezier( result ) { - - return new CubicBezierInterpolation( this.times, this.values, this.getValueSize(), result, new Float32Array( interpolations ) ); - - }; - - return track; - - } - -} - -// interpolation - -class CubicBezierInterpolation extends Interpolant { - - constructor( parameterPositions, sampleValues, sampleSize, resultBuffer, params ) { - - super( parameterPositions, sampleValues, sampleSize, resultBuffer ); - - this.interpolationParams = params; - - } - - interpolate_( i1, t0, t, t1 ) { - - const result = this.resultBuffer; - const values = this.sampleValues; - const stride = this.valueSize; - const params = this.interpolationParams; - - const offset1 = i1 * stride; - const offset0 = offset1 - stride; - - // No interpolation if next key frame is in one frame in 30fps. - // This is from MMD animation spec. - // '1.5' is for precision loss. times are Float32 in Three.js Animation system. - const weight1 = ( ( t1 - t0 ) < 1 / 30 * 1.5 ) ? 0.0 : ( t - t0 ) / ( t1 - t0 ); - - if ( stride === 4 ) { // Quaternion - - const x1 = params[ i1 * 4 + 0 ]; - const x2 = params[ i1 * 4 + 1 ]; - const y1 = params[ i1 * 4 + 2 ]; - const y2 = params[ i1 * 4 + 3 ]; - - const ratio = this._calculate( x1, x2, y1, y2, weight1 ); - - Quaternion.slerpFlat( result, 0, values, offset0, values, offset1, ratio ); - - } else if ( stride === 3 ) { // Vector3 - - for ( let i = 0; i !== stride; ++ i ) { - - const x1 = params[ i1 * 12 + i * 4 + 0 ]; - const x2 = params[ i1 * 12 + i * 4 + 1 ]; - const y1 = params[ i1 * 12 + i * 4 + 2 ]; - const y2 = params[ i1 * 12 + i * 4 + 3 ]; - - const ratio = this._calculate( x1, x2, y1, y2, weight1 ); - - result[ i ] = values[ offset0 + i ] * ( 1 - ratio ) + values[ offset1 + i ] * ratio; - - } - - } else { // Number - - const x1 = params[ i1 * 4 + 0 ]; - const x2 = params[ i1 * 4 + 1 ]; - const y1 = params[ i1 * 4 + 2 ]; - const y2 = params[ i1 * 4 + 3 ]; - - const ratio = this._calculate( x1, x2, y1, y2, weight1 ); - - result[ 0 ] = values[ offset0 ] * ( 1 - ratio ) + values[ offset1 ] * ratio; - - } - - return result; - - } - - _calculate( x1, x2, y1, y2, x ) { - - /* - * Cubic Bezier curves - * https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves - * - * B(t) = ( 1 - t ) ^ 3 * P0 - * + 3 * ( 1 - t ) ^ 2 * t * P1 - * + 3 * ( 1 - t ) * t^2 * P2 - * + t ^ 3 * P3 - * ( 0 <= t <= 1 ) - * - * MMD uses Cubic Bezier curves for bone and camera animation interpolation. - * http://d.hatena.ne.jp/edvakf/20111016/1318716097 - * - * x = ( 1 - t ) ^ 3 * x0 - * + 3 * ( 1 - t ) ^ 2 * t * x1 - * + 3 * ( 1 - t ) * t^2 * x2 - * + t ^ 3 * x3 - * y = ( 1 - t ) ^ 3 * y0 - * + 3 * ( 1 - t ) ^ 2 * t * y1 - * + 3 * ( 1 - t ) * t^2 * y2 - * + t ^ 3 * y3 - * ( x0 = 0, y0 = 0 ) - * ( x3 = 1, y3 = 1 ) - * ( 0 <= t, x1, x2, y1, y2 <= 1 ) - * - * Here solves this equation with Bisection method, - * https://en.wikipedia.org/wiki/Bisection_method - * gets t, and then calculate y. - * - * f(t) = 3 * ( 1 - t ) ^ 2 * t * x1 - * + 3 * ( 1 - t ) * t^2 * x2 - * + t ^ 3 - x = 0 - * - * (Another option: Newton's method - * https://en.wikipedia.org/wiki/Newton%27s_method) - */ - - let c = 0.5; - let t = c; - let s = 1.0 - t; - const loop = 15; - const eps = 1e-5; - const math = Math; - - let sst3, stt3, ttt; - - for ( let i = 0; i < loop; i ++ ) { - - sst3 = 3.0 * s * s * t; - stt3 = 3.0 * s * t * t; - ttt = t * t * t; - - const ft = ( sst3 * x1 ) + ( stt3 * x2 ) + ( ttt ) - x; - - if ( math.abs( ft ) < eps ) break; - - c /= 2.0; - - t += ( ft < 0 ) ? c : - c; - s = 1.0 - t; - - } - - return ( sst3 * y1 ) + ( stt3 * y2 ) + ttt; - - } - -} - -class MMDToonMaterial extends ShaderMaterial { - - constructor( parameters ) { - - super(); - - this.isMMDToonMaterial = true; - - this.type = 'MMDToonMaterial'; - - this._matcapCombine = AddOperation; - this.emissiveIntensity = 1.0; - this.normalMapType = TangentSpaceNormalMap; - - this.combine = MultiplyOperation; - - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.flatShading = false; - - this.lights = true; - - this.vertexShader = MMDToonShader.vertexShader; - this.fragmentShader = MMDToonShader.fragmentShader; - - this.defines = Object.assign( {}, MMDToonShader.defines ); - Object.defineProperty( this, 'matcapCombine', { - - get: function () { - - return this._matcapCombine; - - }, - - set: function ( value ) { - - this._matcapCombine = value; - - switch ( value ) { - - case MultiplyOperation: - this.defines.MATCAP_BLENDING_MULTIPLY = true; - delete this.defines.MATCAP_BLENDING_ADD; - break; - - default: - case AddOperation: - this.defines.MATCAP_BLENDING_ADD = true; - delete this.defines.MATCAP_BLENDING_MULTIPLY; - break; - - } - - }, - - } ); - - this.uniforms = UniformsUtils.clone( MMDToonShader.uniforms ); - - // merged from MeshToon/Phong/MatcapMaterial - const exposePropertyNames = [ - 'specular', - 'opacity', - 'diffuse', - - 'map', - 'matcap', - 'gradientMap', - - 'lightMap', - 'lightMapIntensity', - - 'aoMap', - 'aoMapIntensity', - - 'emissive', - 'emissiveMap', - - 'bumpMap', - 'bumpScale', - - 'normalMap', - 'normalScale', - - 'displacemantBias', - 'displacemantMap', - 'displacemantScale', - - 'specularMap', - - 'alphaMap', - - 'reflectivity', - 'refractionRatio', - ]; - for ( const propertyName of exposePropertyNames ) { - - Object.defineProperty( this, propertyName, { - - get: function () { - - return this.uniforms[ propertyName ].value; - - }, - - set: function ( value ) { - - this.uniforms[ propertyName ].value = value; - - }, - - } ); - - } - - // Special path for shininess to handle zero shininess properly - this._shininess = 30; - Object.defineProperty( this, 'shininess', { - - get: function () { - - return this._shininess; - - }, - - set: function ( value ) { - - this._shininess = value; - this.uniforms.shininess.value = Math.max( this._shininess, 1e-4 ); // To prevent pow( 0.0, 0.0 ) - - }, - - } ); - - Object.defineProperty( - this, - 'color', - Object.getOwnPropertyDescriptor( this, 'diffuse' ) - ); - - this.setValues( parameters ); - - } - - copy( source ) { - - super.copy( source ); - - this.matcapCombine = source.matcapCombine; - this.emissiveIntensity = source.emissiveIntensity; - this.normalMapType = source.normalMapType; - - this.combine = source.combine; - - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.flatShading = source.flatShading; - - return this; - - } - -} - -export { MMDLoader }; diff --git a/three/addons/loaders/MTLLoader.js b/three/addons/loaders/MTLLoader.js deleted file mode 100644 index f277c97..0000000 --- a/three/addons/loaders/MTLLoader.js +++ /dev/null @@ -1,567 +0,0 @@ -import { - Color, - DefaultLoadingManager, - FileLoader, - FrontSide, - Loader, - LoaderUtils, - MeshPhongMaterial, - RepeatWrapping, - TextureLoader, - Vector2, - SRGBColorSpace -} from 'three'; - -/** - * Loads a Wavefront .mtl file specifying materials - */ - -class MTLLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - /** - * Loads and parses a MTL asset from a URL. - * - * @param {String} url - URL to the MTL file. - * @param {Function} [onLoad] - Callback invoked with the loaded object. - * @param {Function} [onProgress] - Callback for download progress. - * @param {Function} [onError] - Callback for download errors. - * - * @see setPath setResourcePath - * - * @note In order for relative texture references to resolve correctly - * you must call setResourcePath() explicitly prior to load. - */ - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path; - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setRequestHeader( this.requestHeader ); - loader.setWithCredentials( this.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text, path ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - setMaterialOptions( value ) { - - this.materialOptions = value; - return this; - - } - - /** - * Parses a MTL file. - * - * @param {String} text - Content of MTL file - * @return {MaterialCreator} - * - * @see setPath setResourcePath - * - * @note In order for relative texture references to resolve correctly - * you must call setResourcePath() explicitly prior to parse. - */ - parse( text, path ) { - - const lines = text.split( '\n' ); - let info = {}; - const delimiter_pattern = /\s+/; - const materialsInfo = {}; - - for ( let i = 0; i < lines.length; i ++ ) { - - let line = lines[ i ]; - line = line.trim(); - - if ( line.length === 0 || line.charAt( 0 ) === '#' ) { - - // Blank line or comment ignore - continue; - - } - - const pos = line.indexOf( ' ' ); - - let key = ( pos >= 0 ) ? line.substring( 0, pos ) : line; - key = key.toLowerCase(); - - let value = ( pos >= 0 ) ? line.substring( pos + 1 ) : ''; - value = value.trim(); - - if ( key === 'newmtl' ) { - - // New material - - info = { name: value }; - materialsInfo[ value ] = info; - - } else { - - if ( key === 'ka' || key === 'kd' || key === 'ks' || key === 'ke' ) { - - const ss = value.split( delimiter_pattern, 3 ); - info[ key ] = [ parseFloat( ss[ 0 ] ), parseFloat( ss[ 1 ] ), parseFloat( ss[ 2 ] ) ]; - - } else { - - info[ key ] = value; - - } - - } - - } - - const materialCreator = new MaterialCreator( this.resourcePath || path, this.materialOptions ); - materialCreator.setCrossOrigin( this.crossOrigin ); - materialCreator.setManager( this.manager ); - materialCreator.setMaterials( materialsInfo ); - return materialCreator; - - } - -} - -/** - * Create a new MTLLoader.MaterialCreator - * @param baseUrl - Url relative to which textures are loaded - * @param options - Set of options on how to construct the materials - * side: Which side to apply the material - * FrontSide (default), THREE.BackSide, THREE.DoubleSide - * wrap: What type of wrapping to apply for textures - * RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping - * normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 - * Default: false, assumed to be already normalized - * ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's - * Default: false - * @constructor - */ - -class MaterialCreator { - - constructor( baseUrl = '', options = {} ) { - - this.baseUrl = baseUrl; - this.options = options; - this.materialsInfo = {}; - this.materials = {}; - this.materialsArray = []; - this.nameLookup = {}; - - this.crossOrigin = 'anonymous'; - - this.side = ( this.options.side !== undefined ) ? this.options.side : FrontSide; - this.wrap = ( this.options.wrap !== undefined ) ? this.options.wrap : RepeatWrapping; - - } - - setCrossOrigin( value ) { - - this.crossOrigin = value; - return this; - - } - - setManager( value ) { - - this.manager = value; - - } - - setMaterials( materialsInfo ) { - - this.materialsInfo = this.convert( materialsInfo ); - this.materials = {}; - this.materialsArray = []; - this.nameLookup = {}; - - } - - convert( materialsInfo ) { - - if ( ! this.options ) return materialsInfo; - - const converted = {}; - - for ( const mn in materialsInfo ) { - - // Convert materials info into normalized form based on options - - const mat = materialsInfo[ mn ]; - - const covmat = {}; - - converted[ mn ] = covmat; - - for ( const prop in mat ) { - - let save = true; - let value = mat[ prop ]; - const lprop = prop.toLowerCase(); - - switch ( lprop ) { - - case 'kd': - case 'ka': - case 'ks': - - // Diffuse color (color under white light) using RGB values - - if ( this.options && this.options.normalizeRGB ) { - - value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ]; - - } - - if ( this.options && this.options.ignoreZeroRGBs ) { - - if ( value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 2 ] === 0 ) { - - // ignore - - save = false; - - } - - } - - break; - - default: - - break; - - } - - if ( save ) { - - covmat[ lprop ] = value; - - } - - } - - } - - return converted; - - } - - preload() { - - for ( const mn in this.materialsInfo ) { - - this.create( mn ); - - } - - } - - getIndex( materialName ) { - - return this.nameLookup[ materialName ]; - - } - - getAsArray() { - - let index = 0; - - for ( const mn in this.materialsInfo ) { - - this.materialsArray[ index ] = this.create( mn ); - this.nameLookup[ mn ] = index; - index ++; - - } - - return this.materialsArray; - - } - - create( materialName ) { - - if ( this.materials[ materialName ] === undefined ) { - - this.createMaterial_( materialName ); - - } - - return this.materials[ materialName ]; - - } - - createMaterial_( materialName ) { - - // Create material - - const scope = this; - const mat = this.materialsInfo[ materialName ]; - const params = { - - name: materialName, - side: this.side - - }; - - function resolveURL( baseUrl, url ) { - - if ( typeof url !== 'string' || url === '' ) - return ''; - - // Absolute URL - if ( /^https?:\/\//i.test( url ) ) return url; - - return baseUrl + url; - - } - - function setMapForType( mapType, value ) { - - if ( params[ mapType ] ) return; // Keep the first encountered texture - - const texParams = scope.getTextureParams( value, params ); - const map = scope.loadTexture( resolveURL( scope.baseUrl, texParams.url ) ); - - map.repeat.copy( texParams.scale ); - map.offset.copy( texParams.offset ); - - map.wrapS = scope.wrap; - map.wrapT = scope.wrap; - - if ( mapType === 'map' || mapType === 'emissiveMap' ) { - - map.colorSpace = SRGBColorSpace; - - } - - params[ mapType ] = map; - - } - - for ( const prop in mat ) { - - const value = mat[ prop ]; - let n; - - if ( value === '' ) continue; - - switch ( prop.toLowerCase() ) { - - // Ns is material specular exponent - - case 'kd': - - // Diffuse color (color under white light) using RGB values - - params.color = new Color().fromArray( value ).convertSRGBToLinear(); - - break; - - case 'ks': - - // Specular color (color when light is reflected from shiny surface) using RGB values - params.specular = new Color().fromArray( value ).convertSRGBToLinear(); - - break; - - case 'ke': - - // Emissive using RGB values - params.emissive = new Color().fromArray( value ).convertSRGBToLinear(); - - break; - - case 'map_kd': - - // Diffuse texture map - - setMapForType( 'map', value ); - - break; - - case 'map_ks': - - // Specular map - - setMapForType( 'specularMap', value ); - - break; - - case 'map_ke': - - // Emissive map - - setMapForType( 'emissiveMap', value ); - - break; - - case 'norm': - - setMapForType( 'normalMap', value ); - - break; - - case 'map_bump': - case 'bump': - - // Bump texture map - - setMapForType( 'bumpMap', value ); - - break; - - case 'map_d': - - // Alpha map - - setMapForType( 'alphaMap', value ); - params.transparent = true; - - break; - - case 'ns': - - // The specular exponent (defines the focus of the specular highlight) - // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000. - - params.shininess = parseFloat( value ); - - break; - - case 'd': - n = parseFloat( value ); - - if ( n < 1 ) { - - params.opacity = n; - params.transparent = true; - - } - - break; - - case 'tr': - n = parseFloat( value ); - - if ( this.options && this.options.invertTrProperty ) n = 1 - n; - - if ( n > 0 ) { - - params.opacity = 1 - n; - params.transparent = true; - - } - - break; - - default: - break; - - } - - } - - this.materials[ materialName ] = new MeshPhongMaterial( params ); - return this.materials[ materialName ]; - - } - - getTextureParams( value, matParams ) { - - const texParams = { - - scale: new Vector2( 1, 1 ), - offset: new Vector2( 0, 0 ) - - }; - - const items = value.split( /\s+/ ); - let pos; - - pos = items.indexOf( '-bm' ); - - if ( pos >= 0 ) { - - matParams.bumpScale = parseFloat( items[ pos + 1 ] ); - items.splice( pos, 2 ); - - } - - pos = items.indexOf( '-s' ); - - if ( pos >= 0 ) { - - texParams.scale.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) ); - items.splice( pos, 4 ); // we expect 3 parameters here! - - } - - pos = items.indexOf( '-o' ); - - if ( pos >= 0 ) { - - texParams.offset.set( parseFloat( items[ pos + 1 ] ), parseFloat( items[ pos + 2 ] ) ); - items.splice( pos, 4 ); // we expect 3 parameters here! - - } - - texParams.url = items.join( ' ' ).trim(); - return texParams; - - } - - loadTexture( url, mapping, onLoad, onProgress, onError ) { - - const manager = ( this.manager !== undefined ) ? this.manager : DefaultLoadingManager; - let loader = manager.getHandler( url ); - - if ( loader === null ) { - - loader = new TextureLoader( manager ); - - } - - if ( loader.setCrossOrigin ) loader.setCrossOrigin( this.crossOrigin ); - - const texture = loader.load( url, onLoad, onProgress, onError ); - - if ( mapping !== undefined ) texture.mapping = mapping; - - return texture; - - } - -} - -export { MTLLoader }; diff --git a/three/addons/loaders/MaterialXLoader.js b/three/addons/loaders/MaterialXLoader.js deleted file mode 100644 index 9566ba1..0000000 --- a/three/addons/loaders/MaterialXLoader.js +++ /dev/null @@ -1,753 +0,0 @@ -import { - FileLoader, - Loader, - TextureLoader, - RepeatWrapping -} from 'three'; - -import { - MeshPhysicalNodeMaterial, - float, bool, int, vec2, vec3, vec4, color, texture, - positionLocal, - add, sub, mul, div, mod, abs, sign, floor, ceil, round, pow, sin, cos, tan, - asin, acos, atan2, sqrt, exp, clamp, min, max, normalize, length, dot, cross, normalMap, - remap, smoothstep, luminance, mx_rgbtohsv, mx_hsvtorgb, - mix, - mx_ramplr, mx_ramptb, mx_splitlr, mx_splittb, - mx_fractal_noise_float, mx_noise_float, mx_cell_noise_float, mx_worley_noise_float, - mx_transform_uv, - mx_safepower, mx_contrast, - mx_srgb_texture_to_lin_rec709, - saturation -} from '../nodes/Nodes.js'; - -const colorSpaceLib = { - mx_srgb_texture_to_lin_rec709 -}; - -class MXElement { - - constructor( name, nodeFunc, params = null ) { - - this.name = name; - this.nodeFunc = nodeFunc; - this.params = params; - - } - -} - -// Ref: https://github.com/mrdoob/three.js/issues/24674 - -const MXElements = [ - - // << Math >> - new MXElement( 'add', add, [ 'in1', 'in2' ] ), - new MXElement( 'subtract', sub, [ 'in1', 'in2' ] ), - new MXElement( 'multiply', mul, [ 'in1', 'in2' ] ), - new MXElement( 'divide', div, [ 'in1', 'in2' ] ), - new MXElement( 'modulo', mod, [ 'in1', 'in2' ] ), - new MXElement( 'absval', abs, [ 'in1', 'in2' ] ), - new MXElement( 'sign', sign, [ 'in1', 'in2' ] ), - new MXElement( 'floor', floor, [ 'in1', 'in2' ] ), - new MXElement( 'ceil', ceil, [ 'in1', 'in2' ] ), - new MXElement( 'round', round, [ 'in1', 'in2' ] ), - new MXElement( 'power', pow, [ 'in1', 'in2' ] ), - new MXElement( 'sin', sin, [ 'in' ] ), - new MXElement( 'cos', cos, [ 'in' ] ), - new MXElement( 'tan', tan, [ 'in' ] ), - new MXElement( 'asin', asin, [ 'in' ] ), - new MXElement( 'acos', acos, [ 'in' ] ), - new MXElement( 'atan2', atan2, [ 'in1', 'in2' ] ), - new MXElement( 'sqrt', sqrt, [ 'in' ] ), - //new MtlXElement( 'ln', ... ), - new MXElement( 'exp', exp, [ 'in' ] ), - new MXElement( 'clamp', clamp, [ 'in', 'low', 'high' ] ), - new MXElement( 'min', min, [ 'in1', 'in2' ] ), - new MXElement( 'max', max, [ 'in1', 'in2' ] ), - new MXElement( 'normalize', normalize, [ 'in' ] ), - new MXElement( 'magnitude', length, [ 'in1', 'in2' ] ), - new MXElement( 'dotproduct', dot, [ 'in1', 'in2' ] ), - new MXElement( 'crossproduct', cross, [ 'in' ] ), - //new MtlXElement( 'transformpoint', ... ), - //new MtlXElement( 'transformvector', ... ), - //new MtlXElement( 'transformnormal', ... ), - //new MtlXElement( 'transformmatrix', ... ), - new MXElement( 'normalmap', normalMap, [ 'in', 'scale' ] ), - //new MtlXElement( 'transpose', ... ), - //new MtlXElement( 'determinant', ... ), - //new MtlXElement( 'invertmatrix', ... ), - //new MtlXElement( 'rotate2d', rotateUV, [ 'in', radians( 'amount' )** ] ), - //new MtlXElement( 'rotate3d', ... ), - //new MtlXElement( 'arrayappend', ... ), - //new MtlXElement( 'dot', ... ), - - // << Adjustment >> - new MXElement( 'remap', remap, [ 'in', 'inlow', 'inhigh', 'outlow', 'outhigh' ] ), - new MXElement( 'smoothstep', smoothstep, [ 'in', 'low', 'high' ] ), - //new MtlXElement( 'curveadjust', ... ), - //new MtlXElement( 'curvelookup', ... ), - new MXElement( 'luminance', luminance, [ 'in', 'lumacoeffs' ] ), - new MXElement( 'rgbtohsv', mx_rgbtohsv, [ 'in' ] ), - new MXElement( 'hsvtorgb', mx_hsvtorgb, [ 'in' ] ), - - // << Mix >> - new MXElement( 'mix', mix, [ 'bg', 'fg', 'mix' ] ), - - // << Channel >> - new MXElement( 'combine2', vec2, [ 'in1', 'in2' ] ), - new MXElement( 'combine3', vec3, [ 'in1', 'in2', 'in3' ] ), - new MXElement( 'combine4', vec4, [ 'in1', 'in2', 'in3', 'in4' ] ), - - // << Procedural >> - new MXElement( 'ramplr', mx_ramplr, [ 'valuel', 'valuer', 'texcoord' ] ), - new MXElement( 'ramptb', mx_ramptb, [ 'valuet', 'valueb', 'texcoord' ] ), - new MXElement( 'splitlr', mx_splitlr, [ 'valuel', 'valuer', 'texcoord' ] ), - new MXElement( 'splittb', mx_splittb, [ 'valuet', 'valueb', 'texcoord' ] ), - new MXElement( 'noise2d', mx_noise_float, [ 'texcoord', 'amplitude', 'pivot' ] ), - new MXElement( 'noise3d', mx_noise_float, [ 'texcoord', 'amplitude', 'pivot' ] ), - new MXElement( 'fractal3d', mx_fractal_noise_float, [ 'position', 'octaves', 'lacunarity', 'diminish', 'amplitude' ] ), - new MXElement( 'cellnoise2d', mx_cell_noise_float, [ 'texcoord' ] ), - new MXElement( 'cellnoise3d', mx_cell_noise_float, [ 'texcoord' ] ), - new MXElement( 'worleynoise2d', mx_worley_noise_float, [ 'texcoord', 'jitter' ] ), - new MXElement( 'worleynoise3d', mx_worley_noise_float, [ 'texcoord', 'jitter' ] ), - - // << Supplemental >> - //new MtlXElement( 'tiledimage', ... ), - //new MtlXElement( 'triplanarprojection', triplanarTextures, [ 'filex', 'filey', 'filez' ] ), - //new MtlXElement( 'ramp4', ... ), - //new MtlXElement( 'place2d', mx_place2d, [ 'texcoord', 'pivot', 'scale', 'rotate', 'offset' ] ), - new MXElement( 'safepower', mx_safepower, [ 'in1', 'in2' ] ), - new MXElement( 'contrast', mx_contrast, [ 'in', 'amount', 'pivot' ] ), - //new MtlXElement( 'hsvadjust', ... ), - new MXElement( 'saturate', saturation, [ 'in', 'amount' ] ), - //new MtlXElement( 'extract', ... ), - //new MtlXElement( 'separate2', ... ), - //new MtlXElement( 'separate3', ... ), - //new MtlXElement( 'separate4', ... ) - -]; - -const MtlXLibrary = {}; -MXElements.forEach( element => MtlXLibrary[ element.name ] = element ); - -class MaterialXLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - new FileLoader( this.manager ) - .setPath( this.path ) - .load( url, async ( text ) => { - - try { - - onLoad( this.parse( text ) ); - - } catch ( e ) { - - onError( e ); - - } - - }, onProgress, onError ); - - return this; - - } - - parse( text ) { - - return new MaterialX( this.manager, this.path ).parse( text ); - - } - -} - -class MaterialXNode { - - constructor( materialX, nodeXML, nodePath = '' ) { - - this.materialX = materialX; - this.nodeXML = nodeXML; - this.nodePath = nodePath ? nodePath + '/' + this.name : this.name; - - this.parent = null; - - this.node = null; - - this.children = []; - - } - - get element() { - - return this.nodeXML.nodeName; - - } - - get nodeGraph() { - - return this.getAttribute( 'nodegraph' ); - - } - - get nodeName() { - - return this.getAttribute( 'nodename' ); - - } - - get interfaceName() { - - return this.getAttribute( 'interfacename' ); - - } - - get output() { - - return this.getAttribute( 'output' ); - - } - - get name() { - - return this.getAttribute( 'name' ); - - } - - get type() { - - return this.getAttribute( 'type' ); - - } - - get value() { - - return this.getAttribute( 'value' ); - - } - - getNodeGraph() { - - let nodeX = this; - - while ( nodeX !== null ) { - - if ( nodeX.element === 'nodegraph' ) { - - break; - - } - - nodeX = nodeX.parent; - - } - - return nodeX; - - } - - getRoot() { - - let nodeX = this; - - while ( nodeX.parent !== null ) { - - nodeX = nodeX.parent; - - } - - return nodeX; - - } - - get referencePath() { - - let referencePath = null; - - if ( this.nodeGraph !== null && this.output !== null ) { - - referencePath = this.nodeGraph + '/' + this.output; - - } else if ( this.nodeName !== null || this.interfaceName !== null ) { - - referencePath = this.getNodeGraph().nodePath + '/' + ( this.nodeName || this.interfaceName ); - - } - - return referencePath; - - } - - get hasReference() { - - return this.referencePath !== null; - - } - - get isConst() { - - return this.element === 'input' && this.value !== null && this.type !== 'filename'; - - } - - getColorSpaceNode() { - - const csSource = this.getAttribute( 'colorspace' ); - const csTarget = this.getRoot().getAttribute( 'colorspace' ); - - const nodeName = `mx_${ csSource }_to_${ csTarget }`; - - return colorSpaceLib[ nodeName ]; - - } - - getTexture() { - - const filePrefix = this.getRecursiveAttribute( 'fileprefix' ) || ''; - - const texture = this.materialX.textureLoader.load( filePrefix + this.value ); - texture.wrapS = texture.wrapT = RepeatWrapping; - texture.flipY = false; - - return texture; - - } - - getClassFromType( type ) { - - let nodeClass = null; - - if ( type === 'integer' ) nodeClass = int; - else if ( type === 'float' ) nodeClass = float; - else if ( type === 'vector2' ) nodeClass = vec2; - else if ( type === 'vector3' ) nodeClass = vec3; - else if ( type === 'vector4' || type === 'color4' ) nodeClass = vec4; - else if ( type === 'color3' ) nodeClass = color; - else if ( type === 'boolean' ) nodeClass = bool; - - return nodeClass; - - } - - getNode() { - - let node = this.node; - - if ( node !== null ) { - - return node; - - } - - // - - const type = this.type; - - if ( this.isConst ) { - - const nodeClass = this.getClassFromType( type ); - - node = nodeClass( ...this.getVector() ); - - } else if ( this.hasReference ) { - - node = this.materialX.getMaterialXNode( this.referencePath ).getNode(); - - } else { - - const element = this.element; - - if ( element === 'convert' ) { - - const nodeClass = this.getClassFromType( type ); - - node = nodeClass( this.getNodeByName( 'in' ) ); - - } else if ( element === 'constant' ) { - - node = this.getNodeByName( 'value' ); - - } else if ( element === 'position' ) { - - node = positionLocal; - - } else if ( element === 'tiledimage' ) { - - const file = this.getChildByName( 'file' ); - - const textureFile = file.getTexture(); - const uvTiling = mx_transform_uv( ...this.getNodesByNames( [ 'uvtiling', 'uvoffset' ] ) ); - - node = texture( textureFile, uvTiling ); - - const colorSpaceNode = file.getColorSpaceNode(); - - if ( colorSpaceNode ) { - - node = colorSpaceNode( node ); - - } - - } else if ( element === 'image' ) { - - const file = this.getChildByName( 'file' ); - const uvNode = this.getNodeByName( 'texcoord' ); - - const textureFile = file.getTexture(); - - node = texture( textureFile, uvNode ); - - const colorSpaceNode = file.getColorSpaceNode(); - - if ( colorSpaceNode ) { - - node = colorSpaceNode( node ); - - } - - } else if ( MtlXLibrary[ element ] !== undefined ) { - - const nodeElement = MtlXLibrary[ element ]; - - node = nodeElement.nodeFunc( ...this.getNodesByNames( ...nodeElement.params ) ); - - } - - } - - // - - if ( node === null ) { - - console.warn( `THREE.MaterialXLoader: Unexpected node ${ new XMLSerializer().serializeToString( this.nodeXML ) }.` ); - - node = float( 0 ); - - } - - // - - const nodeToTypeClass = this.getClassFromType( type ); - - if ( nodeToTypeClass !== null ) { - - node = nodeToTypeClass( node ); - - } - - node.name = this.name; - - this.node = node; - - return node; - - } - - getChildByName( name ) { - - for ( const input of this.children ) { - - if ( input.name === name ) { - - return input; - - } - - } - - } - - getNodes() { - - const nodes = {}; - - for ( const input of this.children ) { - - const node = input.getNode(); - - nodes[ node.name ] = node; - - } - - return nodes; - - } - - getNodeByName( name ) { - - const child = this.getChildByName( name ); - - return child ? child.getNode() : undefined; - - } - - getNodesByNames( ...names ) { - - const nodes = []; - - for ( const name of names ) { - - const node = this.getNodeByName( name ); - - if ( node ) nodes.push( node ); - - } - - return nodes; - - } - - getValue() { - - return this.value.trim(); - - } - - getVector() { - - const vector = []; - - for ( const val of this.getValue().split( /[,|\s]/ ) ) { - - if ( val !== '' ) { - - vector.push( Number( val.trim() ) ); - - } - - } - - return vector; - - } - - getAttribute( name ) { - - return this.nodeXML.getAttribute( name ); - - } - - getRecursiveAttribute( name ) { - - let attribute = this.nodeXML.getAttribute( name ); - - if ( attribute === null && this.parent !== null ) { - - attribute = this.parent.getRecursiveAttribute( name ); - - } - - return attribute; - - } - - setStandardSurfaceToGltfPBR( material ) { - - const inputs = this.getNodes(); - - // - - let colorNode = null; - - if ( inputs.base && inputs.base_color ) colorNode = mul( inputs.base, inputs.base_color ); - else if ( inputs.base ) colorNode = inputs.base; - else if ( inputs.base_color ) colorNode = inputs.base_color; - - // - - let roughnessNode = null; - - if ( inputs.specular_roughness ) roughnessNode = inputs.specular_roughness; - - // - - let metalnessNode = null; - - if ( inputs.metalness ) metalnessNode = inputs.metalness; - - // - - let clearcoatNode = null; - let clearcoatRoughnessNode = null; - - if ( inputs.coat ) clearcoatNode = inputs.coat; - if ( inputs.coat_roughness ) clearcoatRoughnessNode = inputs.coat_roughness; - - if ( inputs.coat_color ) { - - colorNode = colorNode ? mul( colorNode, inputs.coat_color ) : colorNode; - - } - - // - - let normalNode = null; - - if ( inputs.normal ) normalNode = inputs.normal; - - // - - let emissiveNode = null; - - if ( inputs.emission ) emissiveNode = inputs.emission; - if ( inputs.emissionColor ) { - - emissiveNode = emissiveNode ? mul( emissiveNode, inputs.emissionColor ) : emissiveNode; - - } - - // - - material.colorNode = colorNode || color( 0.8, 0.8, 0.8 ); - material.roughnessNode = roughnessNode || float( 0.2 ); - material.metalnessNode = metalnessNode || float( 0 ); - material.clearcoatNode = clearcoatNode || float( 0 ); - material.clearcoatRoughnessNode = clearcoatRoughnessNode || float( 0 ); - if ( normalNode ) material.normalNode = normalNode; - if ( emissiveNode ) material.emissiveNode = emissiveNode; - - } - - /*setGltfPBR( material ) { - - const inputs = this.getNodes(); - - console.log( inputs ); - - }*/ - - setMaterial( material ) { - - const element = this.element; - - if ( element === 'gltf_pbr' ) { - - //this.setGltfPBR( material ); - - } else if ( element === 'standard_surface' ) { - - this.setStandardSurfaceToGltfPBR( material ); - - } - - } - - toMaterial() { - - const material = new MeshPhysicalNodeMaterial(); - material.name = this.name; - - for ( const nodeX of this.children ) { - - const shaderProperties = this.materialX.getMaterialXNode( nodeX.nodeName ); - shaderProperties.setMaterial( material ); - - } - - return material; - - } - - toMaterials() { - - const materials = {}; - - for ( const nodeX of this.children ) { - - if ( nodeX.element === 'surfacematerial' ) { - - const material = nodeX.toMaterial(); - - materials[ material.name ] = material; - - } - - } - - return materials; - - } - - add( materialXNode ) { - - materialXNode.parent = this; - - this.children.push( materialXNode ); - - } - -} - -class MaterialX { - - constructor( manager, path ) { - - this.manager = manager; - this.path = path; - this.resourcePath = ''; - - this.nodesXLib = new Map(); - //this.nodesXRefLib = new WeakMap(); - - this.textureLoader = new TextureLoader( manager ); - - } - - addMaterialXNode( materialXNode ) { - - this.nodesXLib.set( materialXNode.nodePath, materialXNode ); - - } - - /*getMaterialXNodeFromXML( xmlNode ) { - - return this.nodesXRefLib.get( xmlNode ); - - }*/ - - getMaterialXNode( ...names ) { - - return this.nodesXLib.get( names.join( '/' ) ); - - } - - parseNode( nodeXML, nodePath = '' ) { - - const materialXNode = new MaterialXNode( this, nodeXML, nodePath ); - if ( materialXNode.nodePath ) this.addMaterialXNode( materialXNode ); - - for ( const childNodeXML of nodeXML.children ) { - - const childMXNode = this.parseNode( childNodeXML, materialXNode.nodePath ); - materialXNode.add( childMXNode ); - - } - - return materialXNode; - - } - - parse( text ) { - - const rootXML = new DOMParser().parseFromString( text, 'application/xml' ).documentElement; - - this.textureLoader.setPath( this.path ); - - // - - const materials = this.parseNode( rootXML ).toMaterials(); - - return { materials }; - - } - -} - -export { MaterialXLoader }; diff --git a/three/addons/loaders/NRRDLoader.js b/three/addons/loaders/NRRDLoader.js deleted file mode 100644 index c6c77ff..0000000 --- a/three/addons/loaders/NRRDLoader.js +++ /dev/null @@ -1,686 +0,0 @@ -import { - FileLoader, - Loader, - Matrix4, - Vector3 -} from 'three'; -import * as fflate from '../libs/fflate.module.js'; -import { Volume } from '../misc/Volume.js'; - -class NRRDLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( data ) { - - try { - - onLoad( scope.parse( data ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - /** - * - * @param {boolean} segmentation is a option for user to choose - */ - setSegmentation( segmentation ) { - - this.segmentation = segmentation; - - } - - parse( data ) { - - // this parser is largely inspired from the XTK NRRD parser : https://github.com/xtk/X - - let _data = data; - - let _dataPointer = 0; - - const _nativeLittleEndian = new Int8Array( new Int16Array( [ 1 ] ).buffer )[ 0 ] > 0; - - const _littleEndian = true; - - const headerObject = {}; - - function scan( type, chunks ) { - - let _chunkSize = 1; - let _array_type = Uint8Array; - - switch ( type ) { - - // 1 byte data types - case 'uchar': - break; - case 'schar': - _array_type = Int8Array; - break; - // 2 byte data types - case 'ushort': - _array_type = Uint16Array; - _chunkSize = 2; - break; - case 'sshort': - _array_type = Int16Array; - _chunkSize = 2; - break; - // 4 byte data types - case 'uint': - _array_type = Uint32Array; - _chunkSize = 4; - break; - case 'sint': - _array_type = Int32Array; - _chunkSize = 4; - break; - case 'float': - _array_type = Float32Array; - _chunkSize = 4; - break; - case 'complex': - _array_type = Float64Array; - _chunkSize = 8; - break; - case 'double': - _array_type = Float64Array; - _chunkSize = 8; - break; - - } - - // increase the data pointer in-place - let _bytes = new _array_type( _data.slice( _dataPointer, - _dataPointer += chunks * _chunkSize ) ); - - // if required, flip the endianness of the bytes - if ( _nativeLittleEndian != _littleEndian ) { - - // we need to flip here since the format doesn't match the native endianness - _bytes = flipEndianness( _bytes, _chunkSize ); - - } - - // return the byte array - return _bytes; - - } - - //Flips typed array endianness in-place. Based on https://github.com/kig/DataStream.js/blob/master/DataStream.js. - - function flipEndianness( array, chunkSize ) { - - const u8 = new Uint8Array( array.buffer, array.byteOffset, array.byteLength ); - for ( let i = 0; i < array.byteLength; i += chunkSize ) { - - for ( let j = i + chunkSize - 1, k = i; j > k; j --, k ++ ) { - - const tmp = u8[ k ]; - u8[ k ] = u8[ j ]; - u8[ j ] = tmp; - - } - - } - - return array; - - } - - //parse the header - function parseHeader( header ) { - - let data, field, fn, i, l, m, _i, _len; - const lines = header.split( /\r?\n/ ); - for ( _i = 0, _len = lines.length; _i < _len; _i ++ ) { - - l = lines[ _i ]; - if ( l.match( /NRRD\d+/ ) ) { - - headerObject.isNrrd = true; - - } else if ( ! l.match( /^#/ ) && ( m = l.match( /(.*):(.*)/ ) ) ) { - - field = m[ 1 ].trim(); - data = m[ 2 ].trim(); - fn = _fieldFunctions[ field ]; - if ( fn ) { - - fn.call( headerObject, data ); - - } else { - - headerObject[ field ] = data; - - } - - } - - } - - if ( ! headerObject.isNrrd ) { - - throw new Error( 'Not an NRRD file' ); - - } - - if ( headerObject.encoding === 'bz2' || headerObject.encoding === 'bzip2' ) { - - throw new Error( 'Bzip is not supported' ); - - } - - if ( ! headerObject.vectors ) { - - //if no space direction is set, let's use the identity - headerObject.vectors = [ ]; - headerObject.vectors.push( [ 1, 0, 0 ] ); - headerObject.vectors.push( [ 0, 1, 0 ] ); - headerObject.vectors.push( [ 0, 0, 1 ] ); - - //apply spacing if defined - if ( headerObject.spacings ) { - - for ( i = 0; i <= 2; i ++ ) { - - if ( ! isNaN( headerObject.spacings[ i ] ) ) { - - for ( let j = 0; j <= 2; j ++ ) { - - headerObject.vectors[ i ][ j ] *= headerObject.spacings[ i ]; - - } - - } - - } - - } - - } - - } - - //parse the data when registred as one of this type : 'text', 'ascii', 'txt' - function parseDataAsText( data, start, end ) { - - let number = ''; - start = start || 0; - end = end || data.length; - let value; - //length of the result is the product of the sizes - const lengthOfTheResult = headerObject.sizes.reduce( function ( previous, current ) { - - return previous * current; - - }, 1 ); - - let base = 10; - if ( headerObject.encoding === 'hex' ) { - - base = 16; - - } - - const result = new headerObject.__array( lengthOfTheResult ); - let resultIndex = 0; - let parsingFunction = parseInt; - if ( headerObject.__array === Float32Array || headerObject.__array === Float64Array ) { - - parsingFunction = parseFloat; - - } - - for ( let i = start; i < end; i ++ ) { - - value = data[ i ]; - //if value is not a space - if ( ( value < 9 || value > 13 ) && value !== 32 ) { - - number += String.fromCharCode( value ); - - } else { - - if ( number !== '' ) { - - result[ resultIndex ] = parsingFunction( number, base ); - resultIndex ++; - - } - - number = ''; - - } - - } - - if ( number !== '' ) { - - result[ resultIndex ] = parsingFunction( number, base ); - resultIndex ++; - - } - - return result; - - } - - const _bytes = scan( 'uchar', data.byteLength ); - const _length = _bytes.length; - let _header = null; - let _data_start = 0; - let i; - for ( i = 1; i < _length; i ++ ) { - - if ( _bytes[ i - 1 ] == 10 && _bytes[ i ] == 10 ) { - - // we found two line breaks in a row - // now we know what the header is - _header = this.parseChars( _bytes, 0, i - 2 ); - // this is were the data starts - _data_start = i + 1; - break; - - } - - } - - // parse the header - parseHeader( _header ); - - _data = _bytes.subarray( _data_start ); // the data without header - if ( headerObject.encoding.substring( 0, 2 ) === 'gz' ) { - - // we need to decompress the datastream - // here we start the unzipping and get a typed Uint8Array back - _data = fflate.gunzipSync( new Uint8Array( _data ) ); - - } else if ( headerObject.encoding === 'ascii' || headerObject.encoding === 'text' || headerObject.encoding === 'txt' || headerObject.encoding === 'hex' ) { - - _data = parseDataAsText( _data ); - - } else if ( headerObject.encoding === 'raw' ) { - - //we need to copy the array to create a new array buffer, else we retrieve the original arraybuffer with the header - const _copy = new Uint8Array( _data.length ); - - for ( let i = 0; i < _data.length; i ++ ) { - - _copy[ i ] = _data[ i ]; - - } - - _data = _copy; - - } - - // .. let's use the underlying array buffer - _data = _data.buffer; - - const volume = new Volume(); - volume.header = headerObject; - volume.segmentation = this.segmentation; - // - // parse the (unzipped) data to a datastream of the correct type - // - volume.data = new headerObject.__array( _data ); - // get the min and max intensities - const min_max = volume.computeMinMax(); - const min = min_max[ 0 ]; - const max = min_max[ 1 ]; - // attach the scalar range to the volume - volume.windowLow = min; - volume.windowHigh = max; - - // get the image dimensions - volume.dimensions = [ headerObject.sizes[ 0 ], headerObject.sizes[ 1 ], headerObject.sizes[ 2 ] ]; - volume.xLength = volume.dimensions[ 0 ]; - volume.yLength = volume.dimensions[ 1 ]; - volume.zLength = volume.dimensions[ 2 ]; - - // Identify axis order in the space-directions matrix from the header if possible. - if ( headerObject.vectors ) { - - const xIndex = headerObject.vectors.findIndex( vector => vector[ 0 ] !== 0 ); - const yIndex = headerObject.vectors.findIndex( vector => vector[ 1 ] !== 0 ); - const zIndex = headerObject.vectors.findIndex( vector => vector[ 2 ] !== 0 ); - - const axisOrder = []; - - if ( xIndex !== yIndex && xIndex !== zIndex && yIndex !== zIndex ) { - - axisOrder[ xIndex ] = 'x'; - axisOrder[ yIndex ] = 'y'; - axisOrder[ zIndex ] = 'z'; - - } else { - - axisOrder[ 0 ] = 'x'; - axisOrder[ 1 ] = 'y'; - axisOrder[ 2 ] = 'z'; - - } - - volume.axisOrder = axisOrder; - - } else { - - volume.axisOrder = [ 'x', 'y', 'z' ]; - - } - - // spacing - const spacingX = new Vector3().fromArray( headerObject.vectors[ 0 ] ).length(); - const spacingY = new Vector3().fromArray( headerObject.vectors[ 1 ] ).length(); - const spacingZ = new Vector3().fromArray( headerObject.vectors[ 2 ] ).length(); - volume.spacing = [ spacingX, spacingY, spacingZ ]; - - - // Create IJKtoRAS matrix - volume.matrix = new Matrix4(); - - const transitionMatrix = new Matrix4(); - - if ( headerObject.space === 'left-posterior-superior' ) { - - transitionMatrix.set( - - 1, 0, 0, 0, - 0, - 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ); - - } else if ( headerObject.space === 'left-anterior-superior' ) { - - transitionMatrix.set( - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, - 1, 0, - 0, 0, 0, 1 - ); - - } - - - if ( ! headerObject.vectors ) { - - volume.matrix.set( - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 ); - - } else { - - const v = headerObject.vectors; - - const ijk_to_transition = new Matrix4().set( - v[ 0 ][ 0 ], v[ 1 ][ 0 ], v[ 2 ][ 0 ], 0, - v[ 0 ][ 1 ], v[ 1 ][ 1 ], v[ 2 ][ 1 ], 0, - v[ 0 ][ 2 ], v[ 1 ][ 2 ], v[ 2 ][ 2 ], 0, - 0, 0, 0, 1 - ); - - const transition_to_ras = new Matrix4().multiplyMatrices( ijk_to_transition, transitionMatrix ); - - volume.matrix = transition_to_ras; - - } - - volume.inverseMatrix = new Matrix4(); - volume.inverseMatrix.copy( volume.matrix ).invert(); - - volume.RASDimensions = [ - Math.floor( volume.xLength * spacingX ), - Math.floor( volume.yLength * spacingY ), - Math.floor( volume.zLength * spacingZ ) - ]; - - // .. and set the default threshold - // only if the threshold was not already set - if ( volume.lowerThreshold === - Infinity ) { - - volume.lowerThreshold = min; - - } - - if ( volume.upperThreshold === Infinity ) { - - volume.upperThreshold = max; - - } - - return volume; - - } - - parseChars( array, start, end ) { - - // without borders, use the whole array - if ( start === undefined ) { - - start = 0; - - } - - if ( end === undefined ) { - - end = array.length; - - } - - let output = ''; - // create and append the chars - let i = 0; - for ( i = start; i < end; ++ i ) { - - output += String.fromCharCode( array[ i ] ); - - } - - return output; - - } - -} - -const _fieldFunctions = { - - type: function ( data ) { - - switch ( data ) { - - case 'uchar': - case 'unsigned char': - case 'uint8': - case 'uint8_t': - this.__array = Uint8Array; - break; - case 'signed char': - case 'int8': - case 'int8_t': - this.__array = Int8Array; - break; - case 'short': - case 'short int': - case 'signed short': - case 'signed short int': - case 'int16': - case 'int16_t': - this.__array = Int16Array; - break; - case 'ushort': - case 'unsigned short': - case 'unsigned short int': - case 'uint16': - case 'uint16_t': - this.__array = Uint16Array; - break; - case 'int': - case 'signed int': - case 'int32': - case 'int32_t': - this.__array = Int32Array; - break; - case 'uint': - case 'unsigned int': - case 'uint32': - case 'uint32_t': - this.__array = Uint32Array; - break; - case 'float': - this.__array = Float32Array; - break; - case 'double': - this.__array = Float64Array; - break; - default: - throw new Error( 'Unsupported NRRD data type: ' + data ); - - } - - return this.type = data; - - }, - - endian: function ( data ) { - - return this.endian = data; - - }, - - encoding: function ( data ) { - - return this.encoding = data; - - }, - - dimension: function ( data ) { - - return this.dim = parseInt( data, 10 ); - - }, - - sizes: function ( data ) { - - let i; - return this.sizes = ( function () { - - const _ref = data.split( /\s+/ ); - const _results = []; - - for ( let _i = 0, _len = _ref.length; _i < _len; _i ++ ) { - - i = _ref[ _i ]; - _results.push( parseInt( i, 10 ) ); - - } - - return _results; - - } )(); - - }, - - space: function ( data ) { - - return this.space = data; - - }, - - 'space origin': function ( data ) { - - return this.space_origin = data.split( '(' )[ 1 ].split( ')' )[ 0 ].split( ',' ); - - }, - - 'space directions': function ( data ) { - - let f, v; - const parts = data.match( /\(.*?\)/g ); - return this.vectors = ( function () { - - const _results = []; - - for ( let _i = 0, _len = parts.length; _i < _len; _i ++ ) { - - v = parts[ _i ]; - _results.push( ( function () { - - const _ref = v.slice( 1, - 1 ).split( /,/ ); - const _results2 = []; - - for ( let _j = 0, _len2 = _ref.length; _j < _len2; _j ++ ) { - - f = _ref[ _j ]; - _results2.push( parseFloat( f ) ); - - } - - return _results2; - - } )() ); - - } - - return _results; - - } )(); - - }, - - spacings: function ( data ) { - - let f; - const parts = data.split( /\s+/ ); - return this.spacings = ( function () { - - const _results = []; - - for ( let _i = 0, _len = parts.length; _i < _len; _i ++ ) { - - f = parts[ _i ]; - _results.push( parseFloat( f ) ); - - } - - return _results; - - } )(); - - } - -}; - -export { NRRDLoader }; diff --git a/three/addons/loaders/OBJLoader.js b/three/addons/loaders/OBJLoader.js deleted file mode 100644 index 7792458..0000000 --- a/three/addons/loaders/OBJLoader.js +++ /dev/null @@ -1,905 +0,0 @@ -import { - BufferGeometry, - FileLoader, - Float32BufferAttribute, - Group, - LineBasicMaterial, - LineSegments, - Loader, - Material, - Mesh, - MeshPhongMaterial, - Points, - PointsMaterial, - Vector3, - Color -} from 'three'; - -// o object_name | g group_name -const _object_pattern = /^[og]\s*(.+)?/; -// mtllib file_reference -const _material_library_pattern = /^mtllib /; -// usemtl material_name -const _material_use_pattern = /^usemtl /; -// usemap map_name -const _map_use_pattern = /^usemap /; -const _face_vertex_data_separator_pattern = /\s+/; - -const _vA = new Vector3(); -const _vB = new Vector3(); -const _vC = new Vector3(); - -const _ab = new Vector3(); -const _cb = new Vector3(); - -const _color = new Color(); - -function ParserState() { - - const state = { - objects: [], - object: {}, - - vertices: [], - normals: [], - colors: [], - uvs: [], - - materials: {}, - materialLibraries: [], - - startObject: function ( name, fromDeclaration ) { - - // If the current object (initial from reset) is not from a g/o declaration in the parsed - // file. We need to use it for the first parsed g/o to keep things in sync. - if ( this.object && this.object.fromDeclaration === false ) { - - this.object.name = name; - this.object.fromDeclaration = ( fromDeclaration !== false ); - return; - - } - - const previousMaterial = ( this.object && typeof this.object.currentMaterial === 'function' ? this.object.currentMaterial() : undefined ); - - if ( this.object && typeof this.object._finalize === 'function' ) { - - this.object._finalize( true ); - - } - - this.object = { - name: name || '', - fromDeclaration: ( fromDeclaration !== false ), - - geometry: { - vertices: [], - normals: [], - colors: [], - uvs: [], - hasUVIndices: false - }, - materials: [], - smooth: true, - - startMaterial: function ( name, libraries ) { - - const previous = this._finalize( false ); - - // New usemtl declaration overwrites an inherited material, except if faces were declared - // after the material, then it must be preserved for proper MultiMaterial continuation. - if ( previous && ( previous.inherited || previous.groupCount <= 0 ) ) { - - this.materials.splice( previous.index, 1 ); - - } - - const material = { - index: this.materials.length, - name: name || '', - mtllib: ( Array.isArray( libraries ) && libraries.length > 0 ? libraries[ libraries.length - 1 ] : '' ), - smooth: ( previous !== undefined ? previous.smooth : this.smooth ), - groupStart: ( previous !== undefined ? previous.groupEnd : 0 ), - groupEnd: - 1, - groupCount: - 1, - inherited: false, - - clone: function ( index ) { - - const cloned = { - index: ( typeof index === 'number' ? index : this.index ), - name: this.name, - mtllib: this.mtllib, - smooth: this.smooth, - groupStart: 0, - groupEnd: - 1, - groupCount: - 1, - inherited: false - }; - cloned.clone = this.clone.bind( cloned ); - return cloned; - - } - }; - - this.materials.push( material ); - - return material; - - }, - - currentMaterial: function () { - - if ( this.materials.length > 0 ) { - - return this.materials[ this.materials.length - 1 ]; - - } - - return undefined; - - }, - - _finalize: function ( end ) { - - const lastMultiMaterial = this.currentMaterial(); - if ( lastMultiMaterial && lastMultiMaterial.groupEnd === - 1 ) { - - lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3; - lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart; - lastMultiMaterial.inherited = false; - - } - - // Ignore objects tail materials if no face declarations followed them before a new o/g started. - if ( end && this.materials.length > 1 ) { - - for ( let mi = this.materials.length - 1; mi >= 0; mi -- ) { - - if ( this.materials[ mi ].groupCount <= 0 ) { - - this.materials.splice( mi, 1 ); - - } - - } - - } - - // Guarantee at least one empty material, this makes the creation later more straight forward. - if ( end && this.materials.length === 0 ) { - - this.materials.push( { - name: '', - smooth: this.smooth - } ); - - } - - return lastMultiMaterial; - - } - }; - - // Inherit previous objects material. - // Spec tells us that a declared material must be set to all objects until a new material is declared. - // If a usemtl declaration is encountered while this new object is being parsed, it will - // overwrite the inherited material. Exception being that there was already face declarations - // to the inherited material, then it will be preserved for proper MultiMaterial continuation. - - if ( previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function' ) { - - const declared = previousMaterial.clone( 0 ); - declared.inherited = true; - this.object.materials.push( declared ); - - } - - this.objects.push( this.object ); - - }, - - finalize: function () { - - if ( this.object && typeof this.object._finalize === 'function' ) { - - this.object._finalize( true ); - - } - - }, - - parseVertexIndex: function ( value, len ) { - - const index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; - - }, - - parseNormalIndex: function ( value, len ) { - - const index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 3 ) * 3; - - }, - - parseUVIndex: function ( value, len ) { - - const index = parseInt( value, 10 ); - return ( index >= 0 ? index - 1 : index + len / 2 ) * 2; - - }, - - addVertex: function ( a, b, c ) { - - const src = this.vertices; - const dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addVertexPoint: function ( a ) { - - const src = this.vertices; - const dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - - }, - - addVertexLine: function ( a ) { - - const src = this.vertices; - const dst = this.object.geometry.vertices; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - - }, - - addNormal: function ( a, b, c ) { - - const src = this.normals; - const dst = this.object.geometry.normals; - - dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addFaceNormal: function ( a, b, c ) { - - const src = this.vertices; - const dst = this.object.geometry.normals; - - _vA.fromArray( src, a ); - _vB.fromArray( src, b ); - _vC.fromArray( src, c ); - - _cb.subVectors( _vC, _vB ); - _ab.subVectors( _vA, _vB ); - _cb.cross( _ab ); - - _cb.normalize(); - - dst.push( _cb.x, _cb.y, _cb.z ); - dst.push( _cb.x, _cb.y, _cb.z ); - dst.push( _cb.x, _cb.y, _cb.z ); - - }, - - addColor: function ( a, b, c ) { - - const src = this.colors; - const dst = this.object.geometry.colors; - - if ( src[ a ] !== undefined ) dst.push( src[ a + 0 ], src[ a + 1 ], src[ a + 2 ] ); - if ( src[ b ] !== undefined ) dst.push( src[ b + 0 ], src[ b + 1 ], src[ b + 2 ] ); - if ( src[ c ] !== undefined ) dst.push( src[ c + 0 ], src[ c + 1 ], src[ c + 2 ] ); - - }, - - addUV: function ( a, b, c ) { - - const src = this.uvs; - const dst = this.object.geometry.uvs; - - dst.push( src[ a + 0 ], src[ a + 1 ] ); - dst.push( src[ b + 0 ], src[ b + 1 ] ); - dst.push( src[ c + 0 ], src[ c + 1 ] ); - - }, - - addDefaultUV: function () { - - const dst = this.object.geometry.uvs; - - dst.push( 0, 0 ); - dst.push( 0, 0 ); - dst.push( 0, 0 ); - - }, - - addUVLine: function ( a ) { - - const src = this.uvs; - const dst = this.object.geometry.uvs; - - dst.push( src[ a + 0 ], src[ a + 1 ] ); - - }, - - addFace: function ( a, b, c, ua, ub, uc, na, nb, nc ) { - - const vLen = this.vertices.length; - - let ia = this.parseVertexIndex( a, vLen ); - let ib = this.parseVertexIndex( b, vLen ); - let ic = this.parseVertexIndex( c, vLen ); - - this.addVertex( ia, ib, ic ); - this.addColor( ia, ib, ic ); - - // normals - - if ( na !== undefined && na !== '' ) { - - const nLen = this.normals.length; - - ia = this.parseNormalIndex( na, nLen ); - ib = this.parseNormalIndex( nb, nLen ); - ic = this.parseNormalIndex( nc, nLen ); - - this.addNormal( ia, ib, ic ); - - } else { - - this.addFaceNormal( ia, ib, ic ); - - } - - // uvs - - if ( ua !== undefined && ua !== '' ) { - - const uvLen = this.uvs.length; - - ia = this.parseUVIndex( ua, uvLen ); - ib = this.parseUVIndex( ub, uvLen ); - ic = this.parseUVIndex( uc, uvLen ); - - this.addUV( ia, ib, ic ); - - this.object.geometry.hasUVIndices = true; - - } else { - - // add placeholder values (for inconsistent face definitions) - - this.addDefaultUV(); - - } - - }, - - addPointGeometry: function ( vertices ) { - - this.object.geometry.type = 'Points'; - - const vLen = this.vertices.length; - - for ( let vi = 0, l = vertices.length; vi < l; vi ++ ) { - - const index = this.parseVertexIndex( vertices[ vi ], vLen ); - - this.addVertexPoint( index ); - this.addColor( index ); - - } - - }, - - addLineGeometry: function ( vertices, uvs ) { - - this.object.geometry.type = 'Line'; - - const vLen = this.vertices.length; - const uvLen = this.uvs.length; - - for ( let vi = 0, l = vertices.length; vi < l; vi ++ ) { - - this.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) ); - - } - - for ( let uvi = 0, l = uvs.length; uvi < l; uvi ++ ) { - - this.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) ); - - } - - } - - }; - - state.startObject( '', false ); - - return state; - -} - -// - -class OBJLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.materials = null; - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setRequestHeader( this.requestHeader ); - loader.setWithCredentials( this.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - setMaterials( materials ) { - - this.materials = materials; - - return this; - - } - - parse( text ) { - - const state = new ParserState(); - - if ( text.indexOf( '\r\n' ) !== - 1 ) { - - // This is faster than String.split with regex that splits on both - text = text.replace( /\r\n/g, '\n' ); - - } - - if ( text.indexOf( '\\\n' ) !== - 1 ) { - - // join lines separated by a line continuation character (\) - text = text.replace( /\\\n/g, '' ); - - } - - const lines = text.split( '\n' ); - let result = []; - - for ( let i = 0, l = lines.length; i < l; i ++ ) { - - const line = lines[ i ].trimStart(); - - if ( line.length === 0 ) continue; - - const lineFirstChar = line.charAt( 0 ); - - // @todo invoke passed in handler if any - if ( lineFirstChar === '#' ) continue; // skip comments - - if ( lineFirstChar === 'v' ) { - - const data = line.split( _face_vertex_data_separator_pattern ); - - switch ( data[ 0 ] ) { - - case 'v': - state.vertices.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ), - parseFloat( data[ 3 ] ) - ); - if ( data.length >= 7 ) { - - _color.setRGB( - parseFloat( data[ 4 ] ), - parseFloat( data[ 5 ] ), - parseFloat( data[ 6 ] ) - ).convertSRGBToLinear(); - - state.colors.push( _color.r, _color.g, _color.b ); - - } else { - - // if no colors are defined, add placeholders so color and vertex indices match - - state.colors.push( undefined, undefined, undefined ); - - } - - break; - case 'vn': - state.normals.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ), - parseFloat( data[ 3 ] ) - ); - break; - case 'vt': - state.uvs.push( - parseFloat( data[ 1 ] ), - parseFloat( data[ 2 ] ) - ); - break; - - } - - } else if ( lineFirstChar === 'f' ) { - - const lineData = line.slice( 1 ).trim(); - const vertexData = lineData.split( _face_vertex_data_separator_pattern ); - const faceVertices = []; - - // Parse the face vertex data into an easy to work with format - - for ( let j = 0, jl = vertexData.length; j < jl; j ++ ) { - - const vertex = vertexData[ j ]; - - if ( vertex.length > 0 ) { - - const vertexParts = vertex.split( '/' ); - faceVertices.push( vertexParts ); - - } - - } - - // Draw an edge between the first vertex and all subsequent vertices to form an n-gon - - const v1 = faceVertices[ 0 ]; - - for ( let j = 1, jl = faceVertices.length - 1; j < jl; j ++ ) { - - const v2 = faceVertices[ j ]; - const v3 = faceVertices[ j + 1 ]; - - state.addFace( - v1[ 0 ], v2[ 0 ], v3[ 0 ], - v1[ 1 ], v2[ 1 ], v3[ 1 ], - v1[ 2 ], v2[ 2 ], v3[ 2 ] - ); - - } - - } else if ( lineFirstChar === 'l' ) { - - const lineParts = line.substring( 1 ).trim().split( ' ' ); - let lineVertices = []; - const lineUVs = []; - - if ( line.indexOf( '/' ) === - 1 ) { - - lineVertices = lineParts; - - } else { - - for ( let li = 0, llen = lineParts.length; li < llen; li ++ ) { - - const parts = lineParts[ li ].split( '/' ); - - if ( parts[ 0 ] !== '' ) lineVertices.push( parts[ 0 ] ); - if ( parts[ 1 ] !== '' ) lineUVs.push( parts[ 1 ] ); - - } - - } - - state.addLineGeometry( lineVertices, lineUVs ); - - } else if ( lineFirstChar === 'p' ) { - - const lineData = line.slice( 1 ).trim(); - const pointData = lineData.split( ' ' ); - - state.addPointGeometry( pointData ); - - } else if ( ( result = _object_pattern.exec( line ) ) !== null ) { - - // o object_name - // or - // g group_name - - // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869 - // let name = result[ 0 ].slice( 1 ).trim(); - const name = ( ' ' + result[ 0 ].slice( 1 ).trim() ).slice( 1 ); - - state.startObject( name ); - - } else if ( _material_use_pattern.test( line ) ) { - - // material - - state.object.startMaterial( line.substring( 7 ).trim(), state.materialLibraries ); - - } else if ( _material_library_pattern.test( line ) ) { - - // mtl file - - state.materialLibraries.push( line.substring( 7 ).trim() ); - - } else if ( _map_use_pattern.test( line ) ) { - - // the line is parsed but ignored since the loader assumes textures are defined MTL files - // (according to https://www.okino.com/conv/imp_wave.htm, 'usemap' is the old-style Wavefront texture reference method) - - console.warn( 'THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.' ); - - } else if ( lineFirstChar === 's' ) { - - result = line.split( ' ' ); - - // smooth shading - - // @todo Handle files that have varying smooth values for a set of faces inside one geometry, - // but does not define a usemtl for each face set. - // This should be detected and a dummy material created (later MultiMaterial and geometry groups). - // This requires some care to not create extra material on each smooth value for "normal" obj files. - // where explicit usemtl defines geometry groups. - // Example asset: examples/models/obj/cerberus/Cerberus.obj - - /* - * http://paulbourke.net/dataformats/obj/ - * - * From chapter "Grouping" Syntax explanation "s group_number": - * "group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off. - * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form - * surfaces, smoothing groups are either turned on or off; there is no difference between values greater - * than 0." - */ - if ( result.length > 1 ) { - - const value = result[ 1 ].trim().toLowerCase(); - state.object.smooth = ( value !== '0' && value !== 'off' ); - - } else { - - // ZBrush can produce "s" lines #11707 - state.object.smooth = true; - - } - - const material = state.object.currentMaterial(); - if ( material ) material.smooth = state.object.smooth; - - } else { - - // Handle null terminated files without exception - if ( line === '\0' ) continue; - - console.warn( 'THREE.OBJLoader: Unexpected line: "' + line + '"' ); - - } - - } - - state.finalize(); - - const container = new Group(); - container.materialLibraries = [].concat( state.materialLibraries ); - - const hasPrimitives = ! ( state.objects.length === 1 && state.objects[ 0 ].geometry.vertices.length === 0 ); - - if ( hasPrimitives === true ) { - - for ( let i = 0, l = state.objects.length; i < l; i ++ ) { - - const object = state.objects[ i ]; - const geometry = object.geometry; - const materials = object.materials; - const isLine = ( geometry.type === 'Line' ); - const isPoints = ( geometry.type === 'Points' ); - let hasVertexColors = false; - - // Skip o/g line declarations that did not follow with any faces - if ( geometry.vertices.length === 0 ) continue; - - const buffergeometry = new BufferGeometry(); - - buffergeometry.setAttribute( 'position', new Float32BufferAttribute( geometry.vertices, 3 ) ); - - if ( geometry.normals.length > 0 ) { - - buffergeometry.setAttribute( 'normal', new Float32BufferAttribute( geometry.normals, 3 ) ); - - } - - if ( geometry.colors.length > 0 ) { - - hasVertexColors = true; - buffergeometry.setAttribute( 'color', new Float32BufferAttribute( geometry.colors, 3 ) ); - - } - - if ( geometry.hasUVIndices === true ) { - - buffergeometry.setAttribute( 'uv', new Float32BufferAttribute( geometry.uvs, 2 ) ); - - } - - // Create materials - - const createdMaterials = []; - - for ( let mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { - - const sourceMaterial = materials[ mi ]; - const materialHash = sourceMaterial.name + '_' + sourceMaterial.smooth + '_' + hasVertexColors; - let material = state.materials[ materialHash ]; - - if ( this.materials !== null ) { - - material = this.materials.create( sourceMaterial.name ); - - // mtl etc. loaders probably can't create line materials correctly, copy properties to a line material. - if ( isLine && material && ! ( material instanceof LineBasicMaterial ) ) { - - const materialLine = new LineBasicMaterial(); - Material.prototype.copy.call( materialLine, material ); - materialLine.color.copy( material.color ); - material = materialLine; - - } else if ( isPoints && material && ! ( material instanceof PointsMaterial ) ) { - - const materialPoints = new PointsMaterial( { size: 10, sizeAttenuation: false } ); - Material.prototype.copy.call( materialPoints, material ); - materialPoints.color.copy( material.color ); - materialPoints.map = material.map; - material = materialPoints; - - } - - } - - if ( material === undefined ) { - - if ( isLine ) { - - material = new LineBasicMaterial(); - - } else if ( isPoints ) { - - material = new PointsMaterial( { size: 1, sizeAttenuation: false } ); - - } else { - - material = new MeshPhongMaterial(); - - } - - material.name = sourceMaterial.name; - material.flatShading = sourceMaterial.smooth ? false : true; - material.vertexColors = hasVertexColors; - - state.materials[ materialHash ] = material; - - } - - createdMaterials.push( material ); - - } - - // Create mesh - - let mesh; - - if ( createdMaterials.length > 1 ) { - - for ( let mi = 0, miLen = materials.length; mi < miLen; mi ++ ) { - - const sourceMaterial = materials[ mi ]; - buffergeometry.addGroup( sourceMaterial.groupStart, sourceMaterial.groupCount, mi ); - - } - - if ( isLine ) { - - mesh = new LineSegments( buffergeometry, createdMaterials ); - - } else if ( isPoints ) { - - mesh = new Points( buffergeometry, createdMaterials ); - - } else { - - mesh = new Mesh( buffergeometry, createdMaterials ); - - } - - } else { - - if ( isLine ) { - - mesh = new LineSegments( buffergeometry, createdMaterials[ 0 ] ); - - } else if ( isPoints ) { - - mesh = new Points( buffergeometry, createdMaterials[ 0 ] ); - - } else { - - mesh = new Mesh( buffergeometry, createdMaterials[ 0 ] ); - - } - - } - - mesh.name = object.name; - - container.add( mesh ); - - } - - } else { - - // if there is only the default parser state object with no geometry data, interpret data as point cloud - - if ( state.vertices.length > 0 ) { - - const material = new PointsMaterial( { size: 1, sizeAttenuation: false } ); - - const buffergeometry = new BufferGeometry(); - - buffergeometry.setAttribute( 'position', new Float32BufferAttribute( state.vertices, 3 ) ); - - if ( state.colors.length > 0 && state.colors[ 0 ] !== undefined ) { - - buffergeometry.setAttribute( 'color', new Float32BufferAttribute( state.colors, 3 ) ); - material.vertexColors = true; - - } - - const points = new Points( buffergeometry, material ); - container.add( points ); - - } - - } - - return container; - - } - -} - -export { OBJLoader }; diff --git a/three/addons/loaders/PCDLoader.js b/three/addons/loaders/PCDLoader.js deleted file mode 100644 index 6560550..0000000 --- a/three/addons/loaders/PCDLoader.js +++ /dev/null @@ -1,467 +0,0 @@ -import { - BufferGeometry, - Color, - FileLoader, - Float32BufferAttribute, - Int32BufferAttribute, - Loader, - Points, - PointsMaterial -} from 'three'; - -class PCDLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.littleEndian = true; - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( data ) { - - try { - - onLoad( scope.parse( data ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( data ) { - - // from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js - - function decompressLZF( inData, outLength ) { - - const inLength = inData.length; - const outData = new Uint8Array( outLength ); - let inPtr = 0; - let outPtr = 0; - let ctrl; - let len; - let ref; - do { - - ctrl = inData[ inPtr ++ ]; - if ( ctrl < ( 1 << 5 ) ) { - - ctrl ++; - if ( outPtr + ctrl > outLength ) throw new Error( 'Output buffer is not large enough' ); - if ( inPtr + ctrl > inLength ) throw new Error( 'Invalid compressed data' ); - do { - - outData[ outPtr ++ ] = inData[ inPtr ++ ]; - - } while ( -- ctrl ); - - } else { - - len = ctrl >> 5; - ref = outPtr - ( ( ctrl & 0x1f ) << 8 ) - 1; - if ( inPtr >= inLength ) throw new Error( 'Invalid compressed data' ); - if ( len === 7 ) { - - len += inData[ inPtr ++ ]; - if ( inPtr >= inLength ) throw new Error( 'Invalid compressed data' ); - - } - - ref -= inData[ inPtr ++ ]; - if ( outPtr + len + 2 > outLength ) throw new Error( 'Output buffer is not large enough' ); - if ( ref < 0 ) throw new Error( 'Invalid compressed data' ); - if ( ref >= outPtr ) throw new Error( 'Invalid compressed data' ); - do { - - outData[ outPtr ++ ] = outData[ ref ++ ]; - - } while ( -- len + 2 ); - - } - - } while ( inPtr < inLength ); - - return outData; - - } - - function parseHeader( data ) { - - const PCDheader = {}; - const result1 = data.search( /[\r\n]DATA\s(\S*)\s/i ); - const result2 = /[\r\n]DATA\s(\S*)\s/i.exec( data.slice( result1 - 1 ) ); - - PCDheader.data = result2[ 1 ]; - PCDheader.headerLen = result2[ 0 ].length + result1; - PCDheader.str = data.slice( 0, PCDheader.headerLen ); - - // remove comments - - PCDheader.str = PCDheader.str.replace( /#.*/gi, '' ); - - // parse - - PCDheader.version = /VERSION (.*)/i.exec( PCDheader.str ); - PCDheader.fields = /FIELDS (.*)/i.exec( PCDheader.str ); - PCDheader.size = /SIZE (.*)/i.exec( PCDheader.str ); - PCDheader.type = /TYPE (.*)/i.exec( PCDheader.str ); - PCDheader.count = /COUNT (.*)/i.exec( PCDheader.str ); - PCDheader.width = /WIDTH (.*)/i.exec( PCDheader.str ); - PCDheader.height = /HEIGHT (.*)/i.exec( PCDheader.str ); - PCDheader.viewpoint = /VIEWPOINT (.*)/i.exec( PCDheader.str ); - PCDheader.points = /POINTS (.*)/i.exec( PCDheader.str ); - - // evaluate - - if ( PCDheader.version !== null ) - PCDheader.version = parseFloat( PCDheader.version[ 1 ] ); - - PCDheader.fields = ( PCDheader.fields !== null ) ? PCDheader.fields[ 1 ].split( ' ' ) : []; - - if ( PCDheader.type !== null ) - PCDheader.type = PCDheader.type[ 1 ].split( ' ' ); - - if ( PCDheader.width !== null ) - PCDheader.width = parseInt( PCDheader.width[ 1 ] ); - - if ( PCDheader.height !== null ) - PCDheader.height = parseInt( PCDheader.height[ 1 ] ); - - if ( PCDheader.viewpoint !== null ) - PCDheader.viewpoint = PCDheader.viewpoint[ 1 ]; - - if ( PCDheader.points !== null ) - PCDheader.points = parseInt( PCDheader.points[ 1 ], 10 ); - - if ( PCDheader.points === null ) - PCDheader.points = PCDheader.width * PCDheader.height; - - if ( PCDheader.size !== null ) { - - PCDheader.size = PCDheader.size[ 1 ].split( ' ' ).map( function ( x ) { - - return parseInt( x, 10 ); - - } ); - - } - - if ( PCDheader.count !== null ) { - - PCDheader.count = PCDheader.count[ 1 ].split( ' ' ).map( function ( x ) { - - return parseInt( x, 10 ); - - } ); - - } else { - - PCDheader.count = []; - - for ( let i = 0, l = PCDheader.fields.length; i < l; i ++ ) { - - PCDheader.count.push( 1 ); - - } - - } - - PCDheader.offset = {}; - - let sizeSum = 0; - - for ( let i = 0, l = PCDheader.fields.length; i < l; i ++ ) { - - if ( PCDheader.data === 'ascii' ) { - - PCDheader.offset[ PCDheader.fields[ i ] ] = i; - - } else { - - PCDheader.offset[ PCDheader.fields[ i ] ] = sizeSum; - sizeSum += PCDheader.size[ i ] * PCDheader.count[ i ]; - - } - - } - - // for binary only - - PCDheader.rowSize = sizeSum; - - return PCDheader; - - } - - const textData = new TextDecoder().decode( data ); - - // parse header (always ascii format) - - const PCDheader = parseHeader( textData ); - - // parse data - - const position = []; - const normal = []; - const color = []; - const intensity = []; - const label = []; - - const c = new Color(); - - // ascii - - if ( PCDheader.data === 'ascii' ) { - - const offset = PCDheader.offset; - const pcdData = textData.slice( PCDheader.headerLen ); - const lines = pcdData.split( '\n' ); - - for ( let i = 0, l = lines.length; i < l; i ++ ) { - - if ( lines[ i ] === '' ) continue; - - const line = lines[ i ].split( ' ' ); - - if ( offset.x !== undefined ) { - - position.push( parseFloat( line[ offset.x ] ) ); - position.push( parseFloat( line[ offset.y ] ) ); - position.push( parseFloat( line[ offset.z ] ) ); - - } - - if ( offset.rgb !== undefined ) { - - const rgb_field_index = PCDheader.fields.findIndex( ( field ) => field === 'rgb' ); - const rgb_type = PCDheader.type[ rgb_field_index ]; - - const float = parseFloat( line[ offset.rgb ] ); - let rgb = float; - - if ( rgb_type === 'F' ) { - - // treat float values as int - // https://github.com/daavoo/pyntcloud/pull/204/commits/7b4205e64d5ed09abe708b2e91b615690c24d518 - const farr = new Float32Array( 1 ); - farr[ 0 ] = float; - rgb = new Int32Array( farr.buffer )[ 0 ]; - - } - - const r = ( ( rgb >> 16 ) & 0x0000ff ) / 255; - const g = ( ( rgb >> 8 ) & 0x0000ff ) / 255; - const b = ( ( rgb >> 0 ) & 0x0000ff ) / 255; - - c.set( r, g, b ).convertSRGBToLinear(); - - color.push( c.r, c.g, c.b ); - - } - - if ( offset.normal_x !== undefined ) { - - normal.push( parseFloat( line[ offset.normal_x ] ) ); - normal.push( parseFloat( line[ offset.normal_y ] ) ); - normal.push( parseFloat( line[ offset.normal_z ] ) ); - - } - - if ( offset.intensity !== undefined ) { - - intensity.push( parseFloat( line[ offset.intensity ] ) ); - - } - - if ( offset.label !== undefined ) { - - label.push( parseInt( line[ offset.label ] ) ); - - } - - } - - } - - // binary-compressed - - // normally data in PCD files are organized as array of structures: XYZRGBXYZRGB - // binary compressed PCD files organize their data as structure of arrays: XXYYZZRGBRGB - // that requires a totally different parsing approach compared to non-compressed data - - if ( PCDheader.data === 'binary_compressed' ) { - - const sizes = new Uint32Array( data.slice( PCDheader.headerLen, PCDheader.headerLen + 8 ) ); - const compressedSize = sizes[ 0 ]; - const decompressedSize = sizes[ 1 ]; - const decompressed = decompressLZF( new Uint8Array( data, PCDheader.headerLen + 8, compressedSize ), decompressedSize ); - const dataview = new DataView( decompressed.buffer ); - - const offset = PCDheader.offset; - - for ( let i = 0; i < PCDheader.points; i ++ ) { - - if ( offset.x !== undefined ) { - - const xIndex = PCDheader.fields.indexOf( 'x' ); - const yIndex = PCDheader.fields.indexOf( 'y' ); - const zIndex = PCDheader.fields.indexOf( 'z' ); - position.push( dataview.getFloat32( ( PCDheader.points * offset.x ) + PCDheader.size[ xIndex ] * i, this.littleEndian ) ); - position.push( dataview.getFloat32( ( PCDheader.points * offset.y ) + PCDheader.size[ yIndex ] * i, this.littleEndian ) ); - position.push( dataview.getFloat32( ( PCDheader.points * offset.z ) + PCDheader.size[ zIndex ] * i, this.littleEndian ) ); - - } - - if ( offset.rgb !== undefined ) { - - const rgbIndex = PCDheader.fields.indexOf( 'rgb' ); - - const r = dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 2 ) / 255.0; - const g = dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 1 ) / 255.0; - const b = dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 0 ) / 255.0; - - c.set( r, g, b ).convertSRGBToLinear(); - - color.push( c.r, c.g, c.b ); - - } - - if ( offset.normal_x !== undefined ) { - - const xIndex = PCDheader.fields.indexOf( 'normal_x' ); - const yIndex = PCDheader.fields.indexOf( 'normal_y' ); - const zIndex = PCDheader.fields.indexOf( 'normal_z' ); - normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_x ) + PCDheader.size[ xIndex ] * i, this.littleEndian ) ); - normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_y ) + PCDheader.size[ yIndex ] * i, this.littleEndian ) ); - normal.push( dataview.getFloat32( ( PCDheader.points * offset.normal_z ) + PCDheader.size[ zIndex ] * i, this.littleEndian ) ); - - } - - if ( offset.intensity !== undefined ) { - - const intensityIndex = PCDheader.fields.indexOf( 'intensity' ); - intensity.push( dataview.getFloat32( ( PCDheader.points * offset.intensity ) + PCDheader.size[ intensityIndex ] * i, this.littleEndian ) ); - - } - - if ( offset.label !== undefined ) { - - const labelIndex = PCDheader.fields.indexOf( 'label' ); - label.push( dataview.getInt32( ( PCDheader.points * offset.label ) + PCDheader.size[ labelIndex ] * i, this.littleEndian ) ); - - } - - } - - } - - // binary - - if ( PCDheader.data === 'binary' ) { - - const dataview = new DataView( data, PCDheader.headerLen ); - const offset = PCDheader.offset; - - for ( let i = 0, row = 0; i < PCDheader.points; i ++, row += PCDheader.rowSize ) { - - if ( offset.x !== undefined ) { - - position.push( dataview.getFloat32( row + offset.x, this.littleEndian ) ); - position.push( dataview.getFloat32( row + offset.y, this.littleEndian ) ); - position.push( dataview.getFloat32( row + offset.z, this.littleEndian ) ); - - } - - if ( offset.rgb !== undefined ) { - - const r = dataview.getUint8( row + offset.rgb + 2 ) / 255.0; - const g = dataview.getUint8( row + offset.rgb + 1 ) / 255.0; - const b = dataview.getUint8( row + offset.rgb + 0 ) / 255.0; - - c.set( r, g, b ).convertSRGBToLinear(); - - color.push( c.r, c.g, c.b ); - - } - - if ( offset.normal_x !== undefined ) { - - normal.push( dataview.getFloat32( row + offset.normal_x, this.littleEndian ) ); - normal.push( dataview.getFloat32( row + offset.normal_y, this.littleEndian ) ); - normal.push( dataview.getFloat32( row + offset.normal_z, this.littleEndian ) ); - - } - - if ( offset.intensity !== undefined ) { - - intensity.push( dataview.getFloat32( row + offset.intensity, this.littleEndian ) ); - - } - - if ( offset.label !== undefined ) { - - label.push( dataview.getInt32( row + offset.label, this.littleEndian ) ); - - } - - } - - } - - // build geometry - - const geometry = new BufferGeometry(); - - if ( position.length > 0 ) geometry.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); - if ( normal.length > 0 ) geometry.setAttribute( 'normal', new Float32BufferAttribute( normal, 3 ) ); - if ( color.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( color, 3 ) ); - if ( intensity.length > 0 ) geometry.setAttribute( 'intensity', new Float32BufferAttribute( intensity, 1 ) ); - if ( label.length > 0 ) geometry.setAttribute( 'label', new Int32BufferAttribute( label, 1 ) ); - - geometry.computeBoundingSphere(); - - // build material - - const material = new PointsMaterial( { size: 0.005 } ); - - if ( color.length > 0 ) { - - material.vertexColors = true; - - } - - // build point cloud - - return new Points( geometry, material ); - - } - -} - -export { PCDLoader }; diff --git a/three/addons/loaders/PDBLoader.js b/three/addons/loaders/PDBLoader.js deleted file mode 100644 index bb24a55..0000000 --- a/three/addons/loaders/PDBLoader.js +++ /dev/null @@ -1,232 +0,0 @@ -import { - BufferGeometry, - FileLoader, - Float32BufferAttribute, - Loader, - Color -} from 'three'; - -class PDBLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - // Based on CanvasMol PDB parser - - parse( text ) { - - function trim( text ) { - - return text.replace( /^\s\s*/, '' ).replace( /\s\s*$/, '' ); - - } - - function capitalize( text ) { - - return text.charAt( 0 ).toUpperCase() + text.slice( 1 ).toLowerCase(); - - } - - function hash( s, e ) { - - return 's' + Math.min( s, e ) + 'e' + Math.max( s, e ); - - } - - function parseBond( start, length, satom, i ) { - - const eatom = parseInt( lines[ i ].slice( start, start + length ) ); - - if ( eatom ) { - - const h = hash( satom, eatom ); - - if ( _bhash[ h ] === undefined ) { - - _bonds.push( [ satom - 1, eatom - 1, 1 ] ); - _bhash[ h ] = _bonds.length - 1; - - } else { - - // doesn't really work as almost all PDBs - // have just normal bonds appearing multiple - // times instead of being double/triple bonds - // bonds[bhash[h]][2] += 1; - - } - - } - - } - - function buildGeometry() { - - const build = { - geometryAtoms: new BufferGeometry(), - geometryBonds: new BufferGeometry(), - json: { - atoms: atoms - } - }; - - const geometryAtoms = build.geometryAtoms; - const geometryBonds = build.geometryBonds; - - const verticesAtoms = []; - const colorsAtoms = []; - const verticesBonds = []; - - // atoms - - const c = new Color(); - - for ( let i = 0, l = atoms.length; i < l; i ++ ) { - - const atom = atoms[ i ]; - - const x = atom[ 0 ]; - const y = atom[ 1 ]; - const z = atom[ 2 ]; - - verticesAtoms.push( x, y, z ); - - const r = atom[ 3 ][ 0 ] / 255; - const g = atom[ 3 ][ 1 ] / 255; - const b = atom[ 3 ][ 2 ] / 255; - - c.set( r, g, b ).convertSRGBToLinear(); - - colorsAtoms.push( c.r, c.g, c.b ); - - } - - // bonds - - for ( let i = 0, l = _bonds.length; i < l; i ++ ) { - - const bond = _bonds[ i ]; - - const start = bond[ 0 ]; - const end = bond[ 1 ]; - - const startAtom = _atomMap[ start ]; - const endAtom = _atomMap[ end ]; - - let x = startAtom[ 0 ]; - let y = startAtom[ 1 ]; - let z = startAtom[ 2 ]; - - verticesBonds.push( x, y, z ); - - x = endAtom[ 0 ]; - y = endAtom[ 1 ]; - z = endAtom[ 2 ]; - - verticesBonds.push( x, y, z ); - - } - - // build geometry - - geometryAtoms.setAttribute( 'position', new Float32BufferAttribute( verticesAtoms, 3 ) ); - geometryAtoms.setAttribute( 'color', new Float32BufferAttribute( colorsAtoms, 3 ) ); - - geometryBonds.setAttribute( 'position', new Float32BufferAttribute( verticesBonds, 3 ) ); - - return build; - - } - - const CPK = { h: [ 255, 255, 255 ], he: [ 217, 255, 255 ], li: [ 204, 128, 255 ], be: [ 194, 255, 0 ], b: [ 255, 181, 181 ], c: [ 144, 144, 144 ], n: [ 48, 80, 248 ], o: [ 255, 13, 13 ], f: [ 144, 224, 80 ], ne: [ 179, 227, 245 ], na: [ 171, 92, 242 ], mg: [ 138, 255, 0 ], al: [ 191, 166, 166 ], si: [ 240, 200, 160 ], p: [ 255, 128, 0 ], s: [ 255, 255, 48 ], cl: [ 31, 240, 31 ], ar: [ 128, 209, 227 ], k: [ 143, 64, 212 ], ca: [ 61, 255, 0 ], sc: [ 230, 230, 230 ], ti: [ 191, 194, 199 ], v: [ 166, 166, 171 ], cr: [ 138, 153, 199 ], mn: [ 156, 122, 199 ], fe: [ 224, 102, 51 ], co: [ 240, 144, 160 ], ni: [ 80, 208, 80 ], cu: [ 200, 128, 51 ], zn: [ 125, 128, 176 ], ga: [ 194, 143, 143 ], ge: [ 102, 143, 143 ], as: [ 189, 128, 227 ], se: [ 255, 161, 0 ], br: [ 166, 41, 41 ], kr: [ 92, 184, 209 ], rb: [ 112, 46, 176 ], sr: [ 0, 255, 0 ], y: [ 148, 255, 255 ], zr: [ 148, 224, 224 ], nb: [ 115, 194, 201 ], mo: [ 84, 181, 181 ], tc: [ 59, 158, 158 ], ru: [ 36, 143, 143 ], rh: [ 10, 125, 140 ], pd: [ 0, 105, 133 ], ag: [ 192, 192, 192 ], cd: [ 255, 217, 143 ], in: [ 166, 117, 115 ], sn: [ 102, 128, 128 ], sb: [ 158, 99, 181 ], te: [ 212, 122, 0 ], i: [ 148, 0, 148 ], xe: [ 66, 158, 176 ], cs: [ 87, 23, 143 ], ba: [ 0, 201, 0 ], la: [ 112, 212, 255 ], ce: [ 255, 255, 199 ], pr: [ 217, 255, 199 ], nd: [ 199, 255, 199 ], pm: [ 163, 255, 199 ], sm: [ 143, 255, 199 ], eu: [ 97, 255, 199 ], gd: [ 69, 255, 199 ], tb: [ 48, 255, 199 ], dy: [ 31, 255, 199 ], ho: [ 0, 255, 156 ], er: [ 0, 230, 117 ], tm: [ 0, 212, 82 ], yb: [ 0, 191, 56 ], lu: [ 0, 171, 36 ], hf: [ 77, 194, 255 ], ta: [ 77, 166, 255 ], w: [ 33, 148, 214 ], re: [ 38, 125, 171 ], os: [ 38, 102, 150 ], ir: [ 23, 84, 135 ], pt: [ 208, 208, 224 ], au: [ 255, 209, 35 ], hg: [ 184, 184, 208 ], tl: [ 166, 84, 77 ], pb: [ 87, 89, 97 ], bi: [ 158, 79, 181 ], po: [ 171, 92, 0 ], at: [ 117, 79, 69 ], rn: [ 66, 130, 150 ], fr: [ 66, 0, 102 ], ra: [ 0, 125, 0 ], ac: [ 112, 171, 250 ], th: [ 0, 186, 255 ], pa: [ 0, 161, 255 ], u: [ 0, 143, 255 ], np: [ 0, 128, 255 ], pu: [ 0, 107, 255 ], am: [ 84, 92, 242 ], cm: [ 120, 92, 227 ], bk: [ 138, 79, 227 ], cf: [ 161, 54, 212 ], es: [ 179, 31, 212 ], fm: [ 179, 31, 186 ], md: [ 179, 13, 166 ], no: [ 189, 13, 135 ], lr: [ 199, 0, 102 ], rf: [ 204, 0, 89 ], db: [ 209, 0, 79 ], sg: [ 217, 0, 69 ], bh: [ 224, 0, 56 ], hs: [ 230, 0, 46 ], mt: [ 235, 0, 38 ], ds: [ 235, 0, 38 ], rg: [ 235, 0, 38 ], cn: [ 235, 0, 38 ], uut: [ 235, 0, 38 ], uuq: [ 235, 0, 38 ], uup: [ 235, 0, 38 ], uuh: [ 235, 0, 38 ], uus: [ 235, 0, 38 ], uuo: [ 235, 0, 38 ] }; - - const atoms = []; - - const _bonds = []; - const _bhash = {}; - const _atomMap = {}; - - // parse - - const lines = text.split( '\n' ); - - for ( let i = 0, l = lines.length; i < l; i ++ ) { - - if ( lines[ i ].slice( 0, 4 ) === 'ATOM' || lines[ i ].slice( 0, 6 ) === 'HETATM' ) { - - const x = parseFloat( lines[ i ].slice( 30, 37 ) ); - const y = parseFloat( lines[ i ].slice( 38, 45 ) ); - const z = parseFloat( lines[ i ].slice( 46, 53 ) ); - const index = parseInt( lines[ i ].slice( 6, 11 ) ) - 1; - - let e = trim( lines[ i ].slice( 76, 78 ) ).toLowerCase(); - - if ( e === '' ) { - - e = trim( lines[ i ].slice( 12, 14 ) ).toLowerCase(); - - } - - const atomData = [ x, y, z, CPK[ e ], capitalize( e ) ]; - - atoms.push( atomData ); - _atomMap[ index ] = atomData; - - } else if ( lines[ i ].slice( 0, 6 ) === 'CONECT' ) { - - const satom = parseInt( lines[ i ].slice( 6, 11 ) ); - - parseBond( 11, 5, satom, i ); - parseBond( 16, 5, satom, i ); - parseBond( 21, 5, satom, i ); - parseBond( 26, 5, satom, i ); - - } - - } - - // build and return geometry - - return buildGeometry(); - - } - -} - -export { PDBLoader }; diff --git a/three/addons/loaders/PLYLoader.js b/three/addons/loaders/PLYLoader.js deleted file mode 100644 index 3834bfb..0000000 --- a/three/addons/loaders/PLYLoader.js +++ /dev/null @@ -1,771 +0,0 @@ -import { - BufferGeometry, - FileLoader, - Float32BufferAttribute, - Loader, - Color -} from 'three'; - -/** - * Description: A THREE loader for PLY ASCII files (known as the Polygon - * File Format or the Stanford Triangle Format). - * - * Limitations: ASCII decoding assumes file is UTF-8. - * - * Usage: - * const loader = new PLYLoader(); - * loader.load('./models/ply/ascii/dolphins.ply', function (geometry) { - * - * scene.add( new THREE.Mesh( geometry ) ); - * - * } ); - * - * If the PLY file uses non standard property names, they can be mapped while - * loading. For example, the following maps the properties - * “diffuse_(red|green|blue)” in the file to standard color names. - * - * loader.setPropertyNameMapping( { - * diffuse_red: 'red', - * diffuse_green: 'green', - * diffuse_blue: 'blue' - * } ); - * - * Custom properties outside of the defaults for position, uv, normal - * and color attributes can be added using the setCustomPropertyNameMapping method. - * For example, the following maps the element properties “custom_property_a” - * and “custom_property_b” to an attribute “customAttribute” with an item size of 2. - * Attribute item sizes are set from the number of element properties in the property array. - * - * loader.setCustomPropertyNameMapping( { - * customAttribute: ['custom_property_a', 'custom_property_b'], - * } ); - * - */ - -const _color = new Color(); - -class PLYLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - this.propertyNameMapping = {}; - this.customPropertyMapping = {}; - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( this.requestHeader ); - loader.setWithCredentials( this.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - setPropertyNameMapping( mapping ) { - - this.propertyNameMapping = mapping; - - } - - setCustomPropertyNameMapping( mapping ) { - - this.customPropertyMapping = mapping; - - } - - parse( data ) { - - function parseHeader( data, headerLength = 0 ) { - - const patternHeader = /^ply([\s\S]*)end_header(\r\n|\r|\n)/; - let headerText = ''; - const result = patternHeader.exec( data ); - - if ( result !== null ) { - - headerText = result[ 1 ]; - - } - - const header = { - comments: [], - elements: [], - headerLength: headerLength, - objInfo: '' - }; - - const lines = headerText.split( /\r\n|\r|\n/ ); - let currentElement; - - function make_ply_element_property( propertValues, propertyNameMapping ) { - - const property = { type: propertValues[ 0 ] }; - - if ( property.type === 'list' ) { - - property.name = propertValues[ 3 ]; - property.countType = propertValues[ 1 ]; - property.itemType = propertValues[ 2 ]; - - } else { - - property.name = propertValues[ 1 ]; - - } - - if ( property.name in propertyNameMapping ) { - - property.name = propertyNameMapping[ property.name ]; - - } - - return property; - - } - - for ( let i = 0; i < lines.length; i ++ ) { - - let line = lines[ i ]; - line = line.trim(); - - if ( line === '' ) continue; - - const lineValues = line.split( /\s+/ ); - const lineType = lineValues.shift(); - line = lineValues.join( ' ' ); - - switch ( lineType ) { - - case 'format': - - header.format = lineValues[ 0 ]; - header.version = lineValues[ 1 ]; - - break; - - case 'comment': - - header.comments.push( line ); - - break; - - case 'element': - - if ( currentElement !== undefined ) { - - header.elements.push( currentElement ); - - } - - currentElement = {}; - currentElement.name = lineValues[ 0 ]; - currentElement.count = parseInt( lineValues[ 1 ] ); - currentElement.properties = []; - - break; - - case 'property': - - currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) ); - - break; - - case 'obj_info': - - header.objInfo = line; - - break; - - - default: - - console.log( 'unhandled', lineType, lineValues ); - - } - - } - - if ( currentElement !== undefined ) { - - header.elements.push( currentElement ); - - } - - return header; - - } - - function parseASCIINumber( n, type ) { - - switch ( type ) { - - case 'char': case 'uchar': case 'short': case 'ushort': case 'int': case 'uint': - case 'int8': case 'uint8': case 'int16': case 'uint16': case 'int32': case 'uint32': - - return parseInt( n ); - - case 'float': case 'double': case 'float32': case 'float64': - - return parseFloat( n ); - - } - - } - - function parseASCIIElement( properties, tokens ) { - - const element = {}; - - for ( let i = 0; i < properties.length; i ++ ) { - - if ( tokens.empty() ) return null; - - if ( properties[ i ].type === 'list' ) { - - const list = []; - const n = parseASCIINumber( tokens.next(), properties[ i ].countType ); - - for ( let j = 0; j < n; j ++ ) { - - if ( tokens.empty() ) return null; - - list.push( parseASCIINumber( tokens.next(), properties[ i ].itemType ) ); - - } - - element[ properties[ i ].name ] = list; - - } else { - - element[ properties[ i ].name ] = parseASCIINumber( tokens.next(), properties[ i ].type ); - - } - - } - - return element; - - } - - function createBuffer() { - - const buffer = { - indices: [], - vertices: [], - normals: [], - uvs: [], - faceVertexUvs: [], - colors: [], - faceVertexColors: [] - }; - - for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) { - - buffer[ customProperty ] = []; - - } - - return buffer; - - } - - function mapElementAttributes( properties ) { - - const elementNames = properties.map( property => { - - return property.name; - - } ); - - function findAttrName( names ) { - - for ( let i = 0, l = names.length; i < l; i ++ ) { - - const name = names[ i ]; - - if ( elementNames.includes( name ) ) return name; - - } - - return null; - - } - - return { - attrX: findAttrName( [ 'x', 'px', 'posx' ] ) || 'x', - attrY: findAttrName( [ 'y', 'py', 'posy' ] ) || 'y', - attrZ: findAttrName( [ 'z', 'pz', 'posz' ] ) || 'z', - attrNX: findAttrName( [ 'nx', 'normalx' ] ), - attrNY: findAttrName( [ 'ny', 'normaly' ] ), - attrNZ: findAttrName( [ 'nz', 'normalz' ] ), - attrS: findAttrName( [ 's', 'u', 'texture_u', 'tx' ] ), - attrT: findAttrName( [ 't', 'v', 'texture_v', 'ty' ] ), - attrR: findAttrName( [ 'red', 'diffuse_red', 'r', 'diffuse_r' ] ), - attrG: findAttrName( [ 'green', 'diffuse_green', 'g', 'diffuse_g' ] ), - attrB: findAttrName( [ 'blue', 'diffuse_blue', 'b', 'diffuse_b' ] ), - }; - - } - - function parseASCII( data, header ) { - - // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format) - - const buffer = createBuffer(); - - const patternBody = /end_header\s+(\S[\s\S]*\S|\S)\s*$/; - let body, matches; - - if ( ( matches = patternBody.exec( data ) ) !== null ) { - - body = matches[ 1 ].split( /\s+/ ); - - } else { - - body = [ ]; - - } - - const tokens = new ArrayStream( body ); - - loop: for ( let i = 0; i < header.elements.length; i ++ ) { - - const elementDesc = header.elements[ i ]; - const attributeMap = mapElementAttributes( elementDesc.properties ); - - for ( let j = 0; j < elementDesc.count; j ++ ) { - - const element = parseASCIIElement( elementDesc.properties, tokens ); - - if ( ! element ) break loop; - - handleElement( buffer, elementDesc.name, element, attributeMap ); - - } - - } - - return postProcess( buffer ); - - } - - function postProcess( buffer ) { - - let geometry = new BufferGeometry(); - - // mandatory buffer data - - if ( buffer.indices.length > 0 ) { - - geometry.setIndex( buffer.indices ); - - } - - geometry.setAttribute( 'position', new Float32BufferAttribute( buffer.vertices, 3 ) ); - - // optional buffer data - - if ( buffer.normals.length > 0 ) { - - geometry.setAttribute( 'normal', new Float32BufferAttribute( buffer.normals, 3 ) ); - - } - - if ( buffer.uvs.length > 0 ) { - - geometry.setAttribute( 'uv', new Float32BufferAttribute( buffer.uvs, 2 ) ); - - } - - if ( buffer.colors.length > 0 ) { - - geometry.setAttribute( 'color', new Float32BufferAttribute( buffer.colors, 3 ) ); - - } - - if ( buffer.faceVertexUvs.length > 0 || buffer.faceVertexColors.length > 0 ) { - - geometry = geometry.toNonIndexed(); - - if ( buffer.faceVertexUvs.length > 0 ) geometry.setAttribute( 'uv', new Float32BufferAttribute( buffer.faceVertexUvs, 2 ) ); - if ( buffer.faceVertexColors.length > 0 ) geometry.setAttribute( 'color', new Float32BufferAttribute( buffer.faceVertexColors, 3 ) ); - - } - - // custom buffer data - - for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) { - - if ( buffer[ customProperty ].length > 0 ) { - - geometry.setAttribute( - customProperty, - new Float32BufferAttribute( - buffer[ customProperty ], - scope.customPropertyMapping[ customProperty ].length - ) - ); - - } - - } - - geometry.computeBoundingSphere(); - - return geometry; - - } - - function handleElement( buffer, elementName, element, cacheEntry ) { - - if ( elementName === 'vertex' ) { - - buffer.vertices.push( element[ cacheEntry.attrX ], element[ cacheEntry.attrY ], element[ cacheEntry.attrZ ] ); - - if ( cacheEntry.attrNX !== null && cacheEntry.attrNY !== null && cacheEntry.attrNZ !== null ) { - - buffer.normals.push( element[ cacheEntry.attrNX ], element[ cacheEntry.attrNY ], element[ cacheEntry.attrNZ ] ); - - } - - if ( cacheEntry.attrS !== null && cacheEntry.attrT !== null ) { - - buffer.uvs.push( element[ cacheEntry.attrS ], element[ cacheEntry.attrT ] ); - - } - - if ( cacheEntry.attrR !== null && cacheEntry.attrG !== null && cacheEntry.attrB !== null ) { - - _color.setRGB( - element[ cacheEntry.attrR ] / 255.0, - element[ cacheEntry.attrG ] / 255.0, - element[ cacheEntry.attrB ] / 255.0 - ).convertSRGBToLinear(); - - buffer.colors.push( _color.r, _color.g, _color.b ); - - } - - for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) { - - for ( const elementProperty of scope.customPropertyMapping[ customProperty ] ) { - - buffer[ customProperty ].push( element[ elementProperty ] ); - - } - - } - - } else if ( elementName === 'face' ) { - - const vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338 - const texcoord = element.texcoord; - - if ( vertex_indices.length === 3 ) { - - buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] ); - - if ( texcoord && texcoord.length === 6 ) { - - buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] ); - buffer.faceVertexUvs.push( texcoord[ 2 ], texcoord[ 3 ] ); - buffer.faceVertexUvs.push( texcoord[ 4 ], texcoord[ 5 ] ); - - } - - } else if ( vertex_indices.length === 4 ) { - - buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 3 ] ); - buffer.indices.push( vertex_indices[ 1 ], vertex_indices[ 2 ], vertex_indices[ 3 ] ); - - } - - // face colors - - if ( cacheEntry.attrR !== null && cacheEntry.attrG !== null && cacheEntry.attrB !== null ) { - - _color.setRGB( - element[ cacheEntry.attrR ] / 255.0, - element[ cacheEntry.attrG ] / 255.0, - element[ cacheEntry.attrB ] / 255.0 - ).convertSRGBToLinear(); - buffer.faceVertexColors.push( _color.r, _color.g, _color.b ); - buffer.faceVertexColors.push( _color.r, _color.g, _color.b ); - buffer.faceVertexColors.push( _color.r, _color.g, _color.b ); - - } - - } - - } - - function binaryReadElement( at, properties ) { - - const element = {}; - let read = 0; - - for ( let i = 0; i < properties.length; i ++ ) { - - const property = properties[ i ]; - const valueReader = property.valueReader; - - if ( property.type === 'list' ) { - - const list = []; - - const n = property.countReader.read( at + read ); - read += property.countReader.size; - - for ( let j = 0; j < n; j ++ ) { - - list.push( valueReader.read( at + read ) ); - read += valueReader.size; - - } - - element[ property.name ] = list; - - } else { - - element[ property.name ] = valueReader.read( at + read ); - read += valueReader.size; - - } - - } - - return [ element, read ]; - - } - - function setPropertyBinaryReaders( properties, body, little_endian ) { - - function getBinaryReader( dataview, type, little_endian ) { - - switch ( type ) { - - // corespondences for non-specific length types here match rply: - case 'int8': case 'char': return { read: ( at ) => { - - return dataview.getInt8( at ); - - }, size: 1 }; - case 'uint8': case 'uchar': return { read: ( at ) => { - - return dataview.getUint8( at ); - - }, size: 1 }; - case 'int16': case 'short': return { read: ( at ) => { - - return dataview.getInt16( at, little_endian ); - - }, size: 2 }; - case 'uint16': case 'ushort': return { read: ( at ) => { - - return dataview.getUint16( at, little_endian ); - - }, size: 2 }; - case 'int32': case 'int': return { read: ( at ) => { - - return dataview.getInt32( at, little_endian ); - - }, size: 4 }; - case 'uint32': case 'uint': return { read: ( at ) => { - - return dataview.getUint32( at, little_endian ); - - }, size: 4 }; - case 'float32': case 'float': return { read: ( at ) => { - - return dataview.getFloat32( at, little_endian ); - - }, size: 4 }; - case 'float64': case 'double': return { read: ( at ) => { - - return dataview.getFloat64( at, little_endian ); - - }, size: 8 }; - - } - - } - - for ( let i = 0, l = properties.length; i < l; i ++ ) { - - const property = properties[ i ]; - - if ( property.type === 'list' ) { - - property.countReader = getBinaryReader( body, property.countType, little_endian ); - property.valueReader = getBinaryReader( body, property.itemType, little_endian ); - - } else { - - property.valueReader = getBinaryReader( body, property.type, little_endian ); - - } - - } - - } - - function parseBinary( data, header ) { - - const buffer = createBuffer(); - - const little_endian = ( header.format === 'binary_little_endian' ); - const body = new DataView( data, header.headerLength ); - let result, loc = 0; - - for ( let currentElement = 0; currentElement < header.elements.length; currentElement ++ ) { - - const elementDesc = header.elements[ currentElement ]; - const properties = elementDesc.properties; - const attributeMap = mapElementAttributes( properties ); - - setPropertyBinaryReaders( properties, body, little_endian ); - - for ( let currentElementCount = 0; currentElementCount < elementDesc.count; currentElementCount ++ ) { - - result = binaryReadElement( loc, properties ); - loc += result[ 1 ]; - const element = result[ 0 ]; - - handleElement( buffer, elementDesc.name, element, attributeMap ); - - } - - } - - return postProcess( buffer ); - - } - - function extractHeaderText( bytes ) { - - let i = 0; - let cont = true; - - let line = ''; - const lines = []; - - const startLine = new TextDecoder().decode( bytes.subarray( 0, 5 ) ); - const hasCRNL = /^ply\r\n/.test( startLine ); - - do { - - const c = String.fromCharCode( bytes[ i ++ ] ); - - if ( c !== '\n' && c !== '\r' ) { - - line += c; - - } else { - - if ( line === 'end_header' ) cont = false; - if ( line !== '' ) { - - lines.push( line ); - line = ''; - - } - - } - - } while ( cont && i < bytes.length ); - - // ascii section using \r\n as line endings - if ( hasCRNL === true ) i ++; - - return { headerText: lines.join( '\r' ) + '\r', headerLength: i }; - - } - - // - - let geometry; - const scope = this; - - if ( data instanceof ArrayBuffer ) { - - const bytes = new Uint8Array( data ); - const { headerText, headerLength } = extractHeaderText( bytes ); - const header = parseHeader( headerText, headerLength ); - - if ( header.format === 'ascii' ) { - - const text = new TextDecoder().decode( bytes ); - - geometry = parseASCII( text, header ); - - } else { - - geometry = parseBinary( data, header ); - - } - - } else { - - geometry = parseASCII( data, parseHeader( data ) ); - - } - - return geometry; - - } - -} - -class ArrayStream { - - constructor( arr ) { - - this.arr = arr; - this.i = 0; - - } - - empty() { - - return this.i >= this.arr.length; - - } - - next() { - - return this.arr[ this.i ++ ]; - - } - -} - -export { PLYLoader }; diff --git a/three/addons/loaders/PVRLoader.js b/three/addons/loaders/PVRLoader.js deleted file mode 100644 index f39f8e7..0000000 --- a/three/addons/loaders/PVRLoader.js +++ /dev/null @@ -1,251 +0,0 @@ -import { - CompressedTextureLoader, - RGBA_PVRTC_2BPPV1_Format, - RGBA_PVRTC_4BPPV1_Format, - RGB_PVRTC_2BPPV1_Format, - RGB_PVRTC_4BPPV1_Format -} from 'three'; - -/* - * PVR v2 (legacy) parser - * TODO : Add Support for PVR v3 format - * TODO : implement loadMipmaps option - */ - -class PVRLoader extends CompressedTextureLoader { - - constructor( manager ) { - - super( manager ); - - } - - parse( buffer, loadMipmaps ) { - - const headerLengthInt = 13; - const header = new Uint32Array( buffer, 0, headerLengthInt ); - - const pvrDatas = { - buffer: buffer, - header: header, - loadMipmaps: loadMipmaps - }; - - if ( header[ 0 ] === 0x03525650 ) { - - // PVR v3 - - return _parseV3( pvrDatas ); - - } else if ( header[ 11 ] === 0x21525650 ) { - - // PVR v2 - - return _parseV2( pvrDatas ); - - } else { - - console.error( 'THREE.PVRLoader: Unknown PVR format.' ); - - } - - } - -} - -function _parseV3( pvrDatas ) { - - const header = pvrDatas.header; - let bpp, format; - - - const metaLen = header[ 12 ], - pixelFormat = header[ 2 ], - height = header[ 6 ], - width = header[ 7 ], - // numSurfs = header[ 9 ], - numFaces = header[ 10 ], - numMipmaps = header[ 11 ]; - - switch ( pixelFormat ) { - - case 0 : // PVRTC 2bpp RGB - bpp = 2; - format = RGB_PVRTC_2BPPV1_Format; - break; - - case 1 : // PVRTC 2bpp RGBA - bpp = 2; - format = RGBA_PVRTC_2BPPV1_Format; - break; - - case 2 : // PVRTC 4bpp RGB - bpp = 4; - format = RGB_PVRTC_4BPPV1_Format; - break; - - case 3 : // PVRTC 4bpp RGBA - bpp = 4; - format = RGBA_PVRTC_4BPPV1_Format; - break; - - default : - console.error( 'THREE.PVRLoader: Unsupported PVR format:', pixelFormat ); - - } - - pvrDatas.dataPtr = 52 + metaLen; - pvrDatas.bpp = bpp; - pvrDatas.format = format; - pvrDatas.width = width; - pvrDatas.height = height; - pvrDatas.numSurfaces = numFaces; - pvrDatas.numMipmaps = numMipmaps; - pvrDatas.isCubemap = ( numFaces === 6 ); - - return _extract( pvrDatas ); - -} - -function _parseV2( pvrDatas ) { - - const header = pvrDatas.header; - - const headerLength = header[ 0 ], - height = header[ 1 ], - width = header[ 2 ], - numMipmaps = header[ 3 ], - flags = header[ 4 ], - // dataLength = header[ 5 ], - // bpp = header[ 6 ], - // bitmaskRed = header[ 7 ], - // bitmaskGreen = header[ 8 ], - // bitmaskBlue = header[ 9 ], - bitmaskAlpha = header[ 10 ], - // pvrTag = header[ 11 ], - numSurfs = header[ 12 ]; - - - const TYPE_MASK = 0xff; - const PVRTC_2 = 24, - PVRTC_4 = 25; - - const formatFlags = flags & TYPE_MASK; - - let bpp, format; - const _hasAlpha = bitmaskAlpha > 0; - - if ( formatFlags === PVRTC_4 ) { - - format = _hasAlpha ? RGBA_PVRTC_4BPPV1_Format : RGB_PVRTC_4BPPV1_Format; - bpp = 4; - - } else if ( formatFlags === PVRTC_2 ) { - - format = _hasAlpha ? RGBA_PVRTC_2BPPV1_Format : RGB_PVRTC_2BPPV1_Format; - bpp = 2; - - } else { - - console.error( 'THREE.PVRLoader: Unknown PVR format:', formatFlags ); - - } - - pvrDatas.dataPtr = headerLength; - pvrDatas.bpp = bpp; - pvrDatas.format = format; - pvrDatas.width = width; - pvrDatas.height = height; - pvrDatas.numSurfaces = numSurfs; - pvrDatas.numMipmaps = numMipmaps + 1; - - // guess cubemap type seems tricky in v2 - // it juste a pvr containing 6 surface (no explicit cubemap type) - pvrDatas.isCubemap = ( numSurfs === 6 ); - - return _extract( pvrDatas ); - -} - - -function _extract( pvrDatas ) { - - const pvr = { - mipmaps: [], - width: pvrDatas.width, - height: pvrDatas.height, - format: pvrDatas.format, - mipmapCount: pvrDatas.numMipmaps, - isCubemap: pvrDatas.isCubemap - }; - - const buffer = pvrDatas.buffer; - - let dataOffset = pvrDatas.dataPtr, - dataSize = 0, - blockSize = 0, - blockWidth = 0, - blockHeight = 0, - widthBlocks = 0, - heightBlocks = 0; - - const bpp = pvrDatas.bpp, - numSurfs = pvrDatas.numSurfaces; - - if ( bpp === 2 ) { - - blockWidth = 8; - blockHeight = 4; - - } else { - - blockWidth = 4; - blockHeight = 4; - - } - - blockSize = ( blockWidth * blockHeight ) * bpp / 8; - - pvr.mipmaps.length = pvrDatas.numMipmaps * numSurfs; - - let mipLevel = 0; - - while ( mipLevel < pvrDatas.numMipmaps ) { - - const sWidth = pvrDatas.width >> mipLevel, - sHeight = pvrDatas.height >> mipLevel; - - widthBlocks = sWidth / blockWidth; - heightBlocks = sHeight / blockHeight; - - // Clamp to minimum number of blocks - if ( widthBlocks < 2 ) widthBlocks = 2; - if ( heightBlocks < 2 ) heightBlocks = 2; - - dataSize = widthBlocks * heightBlocks * blockSize; - - for ( let surfIndex = 0; surfIndex < numSurfs; surfIndex ++ ) { - - const byteArray = new Uint8Array( buffer, dataOffset, dataSize ); - - const mipmap = { - data: byteArray, - width: sWidth, - height: sHeight - }; - - pvr.mipmaps[ surfIndex * pvrDatas.numMipmaps + mipLevel ] = mipmap; - - dataOffset += dataSize; - - } - - mipLevel ++; - - } - - return pvr; - -} - -export { PVRLoader }; diff --git a/three/addons/loaders/RGBELoader.js b/three/addons/loaders/RGBELoader.js deleted file mode 100644 index f2ac6e1..0000000 --- a/three/addons/loaders/RGBELoader.js +++ /dev/null @@ -1,450 +0,0 @@ -import { - DataTextureLoader, - DataUtils, - FloatType, - HalfFloatType, - LinearFilter, - LinearSRGBColorSpace -} from 'three'; - -// https://github.com/mrdoob/three.js/issues/5552 -// http://en.wikipedia.org/wiki/RGBE_image_format - -class RGBELoader extends DataTextureLoader { - - constructor( manager ) { - - super( manager ); - - this.type = HalfFloatType; - - } - - // adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html - - parse( buffer ) { - - const - /* default error routine. change this to change error handling */ - rgbe_read_error = 1, - rgbe_write_error = 2, - rgbe_format_error = 3, - rgbe_memory_error = 4, - rgbe_error = function ( rgbe_error_code, msg ) { - - switch ( rgbe_error_code ) { - - case rgbe_read_error: throw new Error( 'THREE.RGBELoader: Read Error: ' + ( msg || '' ) ); - case rgbe_write_error: throw new Error( 'THREE.RGBELoader: Write Error: ' + ( msg || '' ) ); - case rgbe_format_error: throw new Error( 'THREE.RGBELoader: Bad File Format: ' + ( msg || '' ) ); - default: - case rgbe_memory_error: throw new Error( 'THREE.RGBELoader: Memory Error: ' + ( msg || '' ) ); - - } - - }, - - /* offsets to red, green, and blue components in a data (float) pixel */ - //RGBE_DATA_RED = 0, - //RGBE_DATA_GREEN = 1, - //RGBE_DATA_BLUE = 2, - - /* number of floats per pixel, use 4 since stored in rgba image format */ - //RGBE_DATA_SIZE = 4, - - /* flags indicating which fields in an rgbe_header_info are valid */ - RGBE_VALID_PROGRAMTYPE = 1, - RGBE_VALID_FORMAT = 2, - RGBE_VALID_DIMENSIONS = 4, - - NEWLINE = '\n', - - fgets = function ( buffer, lineLimit, consume ) { - - const chunkSize = 128; - - lineLimit = ! lineLimit ? 1024 : lineLimit; - let p = buffer.pos, - i = - 1, len = 0, s = '', - chunk = String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) ); - - while ( ( 0 > ( i = chunk.indexOf( NEWLINE ) ) ) && ( len < lineLimit ) && ( p < buffer.byteLength ) ) { - - s += chunk; len += chunk.length; - p += chunkSize; - chunk += String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) ); - - } - - if ( - 1 < i ) { - - /*for (i=l-1; i>=0; i--) { - byteCode = m.charCodeAt(i); - if (byteCode > 0x7f && byteCode <= 0x7ff) byteLen++; - else if (byteCode > 0x7ff && byteCode <= 0xffff) byteLen += 2; - if (byteCode >= 0xDC00 && byteCode <= 0xDFFF) i--; //trail surrogate - }*/ - if ( false !== consume ) buffer.pos += len + i + 1; - return s + chunk.slice( 0, i ); - - } - - return false; - - }, - - /* minimal header reading. modify if you want to parse more information */ - RGBE_ReadHeader = function ( buffer ) { - - - // regexes to parse header info fields - const magic_token_re = /^#\?(\S+)/, - gamma_re = /^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/, - exposure_re = /^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/, - format_re = /^\s*FORMAT=(\S+)\s*$/, - dimensions_re = /^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/, - - // RGBE format header struct - header = { - - valid: 0, /* indicate which fields are valid */ - - string: '', /* the actual header string */ - - comments: '', /* comments found in header */ - - programtype: 'RGBE', /* listed at beginning of file to identify it after "#?". defaults to "RGBE" */ - - format: '', /* RGBE format, default 32-bit_rle_rgbe */ - - gamma: 1.0, /* image has already been gamma corrected with given gamma. defaults to 1.0 (no correction) */ - - exposure: 1.0, /* a value of 1.0 in an image corresponds to watts/steradian/m^2. defaults to 1.0 */ - - width: 0, height: 0 /* image dimensions, width/height */ - - }; - - let line, match; - - if ( buffer.pos >= buffer.byteLength || ! ( line = fgets( buffer ) ) ) { - - rgbe_error( rgbe_read_error, 'no header found' ); - - } - - /* if you want to require the magic token then uncomment the next line */ - if ( ! ( match = line.match( magic_token_re ) ) ) { - - rgbe_error( rgbe_format_error, 'bad initial token' ); - - } - - header.valid |= RGBE_VALID_PROGRAMTYPE; - header.programtype = match[ 1 ]; - header.string += line + '\n'; - - while ( true ) { - - line = fgets( buffer ); - if ( false === line ) break; - header.string += line + '\n'; - - if ( '#' === line.charAt( 0 ) ) { - - header.comments += line + '\n'; - continue; // comment line - - } - - if ( match = line.match( gamma_re ) ) { - - header.gamma = parseFloat( match[ 1 ] ); - - } - - if ( match = line.match( exposure_re ) ) { - - header.exposure = parseFloat( match[ 1 ] ); - - } - - if ( match = line.match( format_re ) ) { - - header.valid |= RGBE_VALID_FORMAT; - header.format = match[ 1 ];//'32-bit_rle_rgbe'; - - } - - if ( match = line.match( dimensions_re ) ) { - - header.valid |= RGBE_VALID_DIMENSIONS; - header.height = parseInt( match[ 1 ], 10 ); - header.width = parseInt( match[ 2 ], 10 ); - - } - - if ( ( header.valid & RGBE_VALID_FORMAT ) && ( header.valid & RGBE_VALID_DIMENSIONS ) ) break; - - } - - if ( ! ( header.valid & RGBE_VALID_FORMAT ) ) { - - rgbe_error( rgbe_format_error, 'missing format specifier' ); - - } - - if ( ! ( header.valid & RGBE_VALID_DIMENSIONS ) ) { - - rgbe_error( rgbe_format_error, 'missing image size specifier' ); - - } - - return header; - - }, - - RGBE_ReadPixels_RLE = function ( buffer, w, h ) { - - const scanline_width = w; - - if ( - // run length encoding is not allowed so read flat - ( ( scanline_width < 8 ) || ( scanline_width > 0x7fff ) ) || - // this file is not run length encoded - ( ( 2 !== buffer[ 0 ] ) || ( 2 !== buffer[ 1 ] ) || ( buffer[ 2 ] & 0x80 ) ) - ) { - - // return the flat buffer - return new Uint8Array( buffer ); - - } - - if ( scanline_width !== ( ( buffer[ 2 ] << 8 ) | buffer[ 3 ] ) ) { - - rgbe_error( rgbe_format_error, 'wrong scanline width' ); - - } - - const data_rgba = new Uint8Array( 4 * w * h ); - - if ( ! data_rgba.length ) { - - rgbe_error( rgbe_memory_error, 'unable to allocate buffer space' ); - - } - - let offset = 0, pos = 0; - - const ptr_end = 4 * scanline_width; - const rgbeStart = new Uint8Array( 4 ); - const scanline_buffer = new Uint8Array( ptr_end ); - let num_scanlines = h; - - // read in each successive scanline - while ( ( num_scanlines > 0 ) && ( pos < buffer.byteLength ) ) { - - if ( pos + 4 > buffer.byteLength ) { - - rgbe_error( rgbe_read_error ); - - } - - rgbeStart[ 0 ] = buffer[ pos ++ ]; - rgbeStart[ 1 ] = buffer[ pos ++ ]; - rgbeStart[ 2 ] = buffer[ pos ++ ]; - rgbeStart[ 3 ] = buffer[ pos ++ ]; - - if ( ( 2 != rgbeStart[ 0 ] ) || ( 2 != rgbeStart[ 1 ] ) || ( ( ( rgbeStart[ 2 ] << 8 ) | rgbeStart[ 3 ] ) != scanline_width ) ) { - - rgbe_error( rgbe_format_error, 'bad rgbe scanline format' ); - - } - - // read each of the four channels for the scanline into the buffer - // first red, then green, then blue, then exponent - let ptr = 0, count; - - while ( ( ptr < ptr_end ) && ( pos < buffer.byteLength ) ) { - - count = buffer[ pos ++ ]; - const isEncodedRun = count > 128; - if ( isEncodedRun ) count -= 128; - - if ( ( 0 === count ) || ( ptr + count > ptr_end ) ) { - - rgbe_error( rgbe_format_error, 'bad scanline data' ); - - } - - if ( isEncodedRun ) { - - // a (encoded) run of the same value - const byteValue = buffer[ pos ++ ]; - for ( let i = 0; i < count; i ++ ) { - - scanline_buffer[ ptr ++ ] = byteValue; - - } - //ptr += count; - - } else { - - // a literal-run - scanline_buffer.set( buffer.subarray( pos, pos + count ), ptr ); - ptr += count; pos += count; - - } - - } - - - // now convert data from buffer into rgba - // first red, then green, then blue, then exponent (alpha) - const l = scanline_width; //scanline_buffer.byteLength; - for ( let i = 0; i < l; i ++ ) { - - let off = 0; - data_rgba[ offset ] = scanline_buffer[ i + off ]; - off += scanline_width; //1; - data_rgba[ offset + 1 ] = scanline_buffer[ i + off ]; - off += scanline_width; //1; - data_rgba[ offset + 2 ] = scanline_buffer[ i + off ]; - off += scanline_width; //1; - data_rgba[ offset + 3 ] = scanline_buffer[ i + off ]; - offset += 4; - - } - - num_scanlines --; - - } - - return data_rgba; - - }; - - const RGBEByteToRGBFloat = function ( sourceArray, sourceOffset, destArray, destOffset ) { - - const e = sourceArray[ sourceOffset + 3 ]; - const scale = Math.pow( 2.0, e - 128.0 ) / 255.0; - - destArray[ destOffset + 0 ] = sourceArray[ sourceOffset + 0 ] * scale; - destArray[ destOffset + 1 ] = sourceArray[ sourceOffset + 1 ] * scale; - destArray[ destOffset + 2 ] = sourceArray[ sourceOffset + 2 ] * scale; - destArray[ destOffset + 3 ] = 1; - - }; - - const RGBEByteToRGBHalf = function ( sourceArray, sourceOffset, destArray, destOffset ) { - - const e = sourceArray[ sourceOffset + 3 ]; - const scale = Math.pow( 2.0, e - 128.0 ) / 255.0; - - // clamping to 65504, the maximum representable value in float16 - destArray[ destOffset + 0 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 0 ] * scale, 65504 ) ); - destArray[ destOffset + 1 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 1 ] * scale, 65504 ) ); - destArray[ destOffset + 2 ] = DataUtils.toHalfFloat( Math.min( sourceArray[ sourceOffset + 2 ] * scale, 65504 ) ); - destArray[ destOffset + 3 ] = DataUtils.toHalfFloat( 1 ); - - }; - - const byteArray = new Uint8Array( buffer ); - byteArray.pos = 0; - const rgbe_header_info = RGBE_ReadHeader( byteArray ); - - const w = rgbe_header_info.width, - h = rgbe_header_info.height, - image_rgba_data = RGBE_ReadPixels_RLE( byteArray.subarray( byteArray.pos ), w, h ); - - - let data, type; - let numElements; - - switch ( this.type ) { - - case FloatType: - - numElements = image_rgba_data.length / 4; - const floatArray = new Float32Array( numElements * 4 ); - - for ( let j = 0; j < numElements; j ++ ) { - - RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 ); - - } - - data = floatArray; - type = FloatType; - break; - - case HalfFloatType: - - numElements = image_rgba_data.length / 4; - const halfArray = new Uint16Array( numElements * 4 ); - - for ( let j = 0; j < numElements; j ++ ) { - - RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 ); - - } - - data = halfArray; - type = HalfFloatType; - break; - - default: - - throw new Error( 'THREE.RGBELoader: Unsupported type: ' + this.type ); - break; - - } - - return { - width: w, height: h, - data: data, - header: rgbe_header_info.string, - gamma: rgbe_header_info.gamma, - exposure: rgbe_header_info.exposure, - type: type - }; - - } - - setDataType( value ) { - - this.type = value; - return this; - - } - - load( url, onLoad, onProgress, onError ) { - - function onLoadCallback( texture, texData ) { - - switch ( texture.type ) { - - case FloatType: - case HalfFloatType: - - texture.colorSpace = LinearSRGBColorSpace; - texture.minFilter = LinearFilter; - texture.magFilter = LinearFilter; - texture.generateMipmaps = false; - texture.flipY = true; - - break; - - } - - if ( onLoad ) onLoad( texture, texData ); - - } - - return super.load( url, onLoadCallback, onProgress, onError ); - - } - -} - -export { RGBELoader }; diff --git a/three/addons/loaders/RGBMLoader.js b/three/addons/loaders/RGBMLoader.js deleted file mode 100644 index 44420c4..0000000 --- a/three/addons/loaders/RGBMLoader.js +++ /dev/null @@ -1,1065 +0,0 @@ -import { - DataTextureLoader, - RGBAFormat, - LinearFilter, - CubeTexture, - HalfFloatType, - DataUtils -} from 'three'; - -class RGBMLoader extends DataTextureLoader { - - constructor( manager ) { - - super( manager ); - - this.type = HalfFloatType; - this.maxRange = 7; // more information about this property at https://iwasbeingirony.blogspot.com/2010/06/difference-between-rgbm-and-rgbd.html - - } - - setDataType( value ) { - - this.type = value; - return this; - - } - - setMaxRange( value ) { - - this.maxRange = value; - return this; - - } - - loadCubemap( urls, onLoad, onProgress, onError ) { - - const texture = new CubeTexture(); - - let loaded = 0; - - const scope = this; - - function loadTexture( i ) { - - scope.load( urls[ i ], function ( image ) { - - texture.images[ i ] = image; - - loaded ++; - - if ( loaded === 6 ) { - - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture ); - - } - - }, undefined, onError ); - - } - - for ( let i = 0; i < urls.length; ++ i ) { - - loadTexture( i ); - - } - - texture.type = this.type; - texture.format = RGBAFormat; - texture.minFilter = LinearFilter; - texture.generateMipmaps = false; - - return texture; - - } - - parse( buffer ) { - - const img = UPNG.decode( buffer ); - const rgba = UPNG.toRGBA8( img )[ 0 ]; - - const data = new Uint8Array( rgba ); - const size = img.width * img.height * 4; - - const output = ( this.type === HalfFloatType ) ? new Uint16Array( size ) : new Float32Array( size ); - - // decode RGBM - - for ( let i = 0; i < data.length; i += 4 ) { - - const r = data[ i + 0 ] / 255; - const g = data[ i + 1 ] / 255; - const b = data[ i + 2 ] / 255; - const a = data[ i + 3 ] / 255; - - if ( this.type === HalfFloatType ) { - - output[ i + 0 ] = DataUtils.toHalfFloat( Math.min( r * a * this.maxRange, 65504 ) ); - output[ i + 1 ] = DataUtils.toHalfFloat( Math.min( g * a * this.maxRange, 65504 ) ); - output[ i + 2 ] = DataUtils.toHalfFloat( Math.min( b * a * this.maxRange, 65504 ) ); - output[ i + 3 ] = DataUtils.toHalfFloat( 1 ); - - } else { - - output[ i + 0 ] = r * a * this.maxRange; - output[ i + 1 ] = g * a * this.maxRange; - output[ i + 2 ] = b * a * this.maxRange; - output[ i + 3 ] = 1; - - } - - } - - return { - width: img.width, - height: img.height, - data: output, - format: RGBAFormat, - type: this.type, - flipY: true - }; - - } - -} - -// from https://github.com/photopea/UPNG.js (MIT License) - -var UPNG = {}; - -UPNG.toRGBA8 = function ( out ) { - - var w = out.width, h = out.height; - if ( out.tabs.acTL == null ) return [ UPNG.toRGBA8.decodeImage( out.data, w, h, out ).buffer ]; - - var frms = []; - if ( out.frames[ 0 ].data == null ) out.frames[ 0 ].data = out.data; - - var len = w * h * 4, img = new Uint8Array( len ), empty = new Uint8Array( len ), prev = new Uint8Array( len ); - for ( var i = 0; i < out.frames.length; i ++ ) { - - var frm = out.frames[ i ]; - var fx = frm.rect.x, fy = frm.rect.y, fw = frm.rect.width, fh = frm.rect.height; - var fdata = UPNG.toRGBA8.decodeImage( frm.data, fw, fh, out ); - - if ( i != 0 ) for ( var j = 0; j < len; j ++ ) prev[ j ] = img[ j ]; - - if ( frm.blend == 0 ) UPNG._copyTile( fdata, fw, fh, img, w, h, fx, fy, 0 ); - else if ( frm.blend == 1 ) UPNG._copyTile( fdata, fw, fh, img, w, h, fx, fy, 1 ); - - frms.push( img.buffer.slice( 0 ) ); - - if ( frm.dispose == 1 ) UPNG._copyTile( empty, fw, fh, img, w, h, fx, fy, 0 ); - else if ( frm.dispose == 2 ) for ( var j = 0; j < len; j ++ ) img[ j ] = prev[ j ]; - - } - - return frms; - -}; - -UPNG.toRGBA8.decodeImage = function ( data, w, h, out ) { - - var area = w * h, bpp = UPNG.decode._getBPP( out ); - var bpl = Math.ceil( w * bpp / 8 ); // bytes per line - - var bf = new Uint8Array( area * 4 ), bf32 = new Uint32Array( bf.buffer ); - var ctype = out.ctype, depth = out.depth; - var rs = UPNG._bin.readUshort; - - if ( ctype == 6 ) { // RGB + alpha - - var qarea = area << 2; - if ( depth == 8 ) for ( var i = 0; i < qarea; i += 4 ) { - - bf[ i ] = data[ i ]; bf[ i + 1 ] = data[ i + 1 ]; bf[ i + 2 ] = data[ i + 2 ]; bf[ i + 3 ] = data[ i + 3 ]; - - } - - if ( depth == 16 ) for ( var i = 0; i < qarea; i ++ ) { - - bf[ i ] = data[ i << 1 ]; - - } - - } else if ( ctype == 2 ) { // RGB - - var ts = out.tabs[ 'tRNS' ]; - if ( ts == null ) { - - if ( depth == 8 ) for ( var i = 0; i < area; i ++ ) { - - var ti = i * 3; bf32[ i ] = ( 255 << 24 ) | ( data[ ti + 2 ] << 16 ) | ( data[ ti + 1 ] << 8 ) | data[ ti ]; - - } - - if ( depth == 16 ) for ( var i = 0; i < area; i ++ ) { - - var ti = i * 6; bf32[ i ] = ( 255 << 24 ) | ( data[ ti + 4 ] << 16 ) | ( data[ ti + 2 ] << 8 ) | data[ ti ]; - - } - - } else { - - var tr = ts[ 0 ], tg = ts[ 1 ], tb = ts[ 2 ]; - if ( depth == 8 ) for ( var i = 0; i < area; i ++ ) { - - var qi = i << 2, ti = i * 3; bf32[ i ] = ( 255 << 24 ) | ( data[ ti + 2 ] << 16 ) | ( data[ ti + 1 ] << 8 ) | data[ ti ]; - if ( data[ ti ] == tr && data[ ti + 1 ] == tg && data[ ti + 2 ] == tb ) bf[ qi + 3 ] = 0; - - } - - if ( depth == 16 ) for ( var i = 0; i < area; i ++ ) { - - var qi = i << 2, ti = i * 6; bf32[ i ] = ( 255 << 24 ) | ( data[ ti + 4 ] << 16 ) | ( data[ ti + 2 ] << 8 ) | data[ ti ]; - if ( rs( data, ti ) == tr && rs( data, ti + 2 ) == tg && rs( data, ti + 4 ) == tb ) bf[ qi + 3 ] = 0; - - } - - } - - } else if ( ctype == 3 ) { // palette - - var p = out.tabs[ 'PLTE' ], ap = out.tabs[ 'tRNS' ], tl = ap ? ap.length : 0; - //console.log(p, ap); - if ( depth == 1 ) for ( var y = 0; y < h; y ++ ) { - - var s0 = y * bpl, t0 = y * w; - for ( var i = 0; i < w; i ++ ) { - - var qi = ( t0 + i ) << 2, j = ( ( data[ s0 + ( i >> 3 ) ] >> ( 7 - ( ( i & 7 ) << 0 ) ) ) & 1 ), cj = 3 * j; bf[ qi ] = p[ cj ]; bf[ qi + 1 ] = p[ cj + 1 ]; bf[ qi + 2 ] = p[ cj + 2 ]; bf[ qi + 3 ] = ( j < tl ) ? ap[ j ] : 255; - - } - - } - - if ( depth == 2 ) for ( var y = 0; y < h; y ++ ) { - - var s0 = y * bpl, t0 = y * w; - for ( var i = 0; i < w; i ++ ) { - - var qi = ( t0 + i ) << 2, j = ( ( data[ s0 + ( i >> 2 ) ] >> ( 6 - ( ( i & 3 ) << 1 ) ) ) & 3 ), cj = 3 * j; bf[ qi ] = p[ cj ]; bf[ qi + 1 ] = p[ cj + 1 ]; bf[ qi + 2 ] = p[ cj + 2 ]; bf[ qi + 3 ] = ( j < tl ) ? ap[ j ] : 255; - - } - - } - - if ( depth == 4 ) for ( var y = 0; y < h; y ++ ) { - - var s0 = y * bpl, t0 = y * w; - for ( var i = 0; i < w; i ++ ) { - - var qi = ( t0 + i ) << 2, j = ( ( data[ s0 + ( i >> 1 ) ] >> ( 4 - ( ( i & 1 ) << 2 ) ) ) & 15 ), cj = 3 * j; bf[ qi ] = p[ cj ]; bf[ qi + 1 ] = p[ cj + 1 ]; bf[ qi + 2 ] = p[ cj + 2 ]; bf[ qi + 3 ] = ( j < tl ) ? ap[ j ] : 255; - - } - - } - - if ( depth == 8 ) for ( var i = 0; i < area; i ++ ) { - - var qi = i << 2, j = data[ i ], cj = 3 * j; bf[ qi ] = p[ cj ]; bf[ qi + 1 ] = p[ cj + 1 ]; bf[ qi + 2 ] = p[ cj + 2 ]; bf[ qi + 3 ] = ( j < tl ) ? ap[ j ] : 255; - - } - - } else if ( ctype == 4 ) { // gray + alpha - - if ( depth == 8 ) for ( var i = 0; i < area; i ++ ) { - - var qi = i << 2, di = i << 1, gr = data[ di ]; bf[ qi ] = gr; bf[ qi + 1 ] = gr; bf[ qi + 2 ] = gr; bf[ qi + 3 ] = data[ di + 1 ]; - - } - - if ( depth == 16 ) for ( var i = 0; i < area; i ++ ) { - - var qi = i << 2, di = i << 2, gr = data[ di ]; bf[ qi ] = gr; bf[ qi + 1 ] = gr; bf[ qi + 2 ] = gr; bf[ qi + 3 ] = data[ di + 2 ]; - - } - - } else if ( ctype == 0 ) { // gray - - var tr = out.tabs[ 'tRNS' ] ? out.tabs[ 'tRNS' ] : - 1; - for ( var y = 0; y < h; y ++ ) { - - var off = y * bpl, to = y * w; - if ( depth == 1 ) for ( var x = 0; x < w; x ++ ) { - - var gr = 255 * ( ( data[ off + ( x >>> 3 ) ] >>> ( 7 - ( x & 7 ) ) ) & 1 ), al = ( gr == tr * 255 ) ? 0 : 255; bf32[ to + x ] = ( al << 24 ) | ( gr << 16 ) | ( gr << 8 ) | gr; - - } - else if ( depth == 2 ) for ( var x = 0; x < w; x ++ ) { - - var gr = 85 * ( ( data[ off + ( x >>> 2 ) ] >>> ( 6 - ( ( x & 3 ) << 1 ) ) ) & 3 ), al = ( gr == tr * 85 ) ? 0 : 255; bf32[ to + x ] = ( al << 24 ) | ( gr << 16 ) | ( gr << 8 ) | gr; - - } - else if ( depth == 4 ) for ( var x = 0; x < w; x ++ ) { - - var gr = 17 * ( ( data[ off + ( x >>> 1 ) ] >>> ( 4 - ( ( x & 1 ) << 2 ) ) ) & 15 ), al = ( gr == tr * 17 ) ? 0 : 255; bf32[ to + x ] = ( al << 24 ) | ( gr << 16 ) | ( gr << 8 ) | gr; - - } - else if ( depth == 8 ) for ( var x = 0; x < w; x ++ ) { - - var gr = data[ off + x ], al = ( gr == tr ) ? 0 : 255; bf32[ to + x ] = ( al << 24 ) | ( gr << 16 ) | ( gr << 8 ) | gr; - - } - else if ( depth == 16 ) for ( var x = 0; x < w; x ++ ) { - - var gr = data[ off + ( x << 1 ) ], al = ( rs( data, off + ( x << 1 ) ) == tr ) ? 0 : 255; bf32[ to + x ] = ( al << 24 ) | ( gr << 16 ) | ( gr << 8 ) | gr; - - } - - } - - } - - //console.log(Date.now()-time); - return bf; - -}; - - - -UPNG.decode = function ( buff ) { - - var data = new Uint8Array( buff ), offset = 8, bin = UPNG._bin, rUs = bin.readUshort, rUi = bin.readUint; - var out = { tabs: {}, frames: [] }; - var dd = new Uint8Array( data.length ), doff = 0; // put all IDAT data into it - var fd, foff = 0; // frames - var text, keyw, bfr; - - var mgck = [ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a ]; - for ( var i = 0; i < 8; i ++ ) if ( data[ i ] != mgck[ i ] ) throw new Error( 'The input is not a PNG file!' ); - - while ( offset < data.length ) { - - var len = bin.readUint( data, offset ); offset += 4; - var type = bin.readASCII( data, offset, 4 ); offset += 4; - //console.log(type,len); - - if ( type == 'IHDR' ) { - - UPNG.decode._IHDR( data, offset, out ); - - } else if ( type == 'CgBI' ) { - - out.tabs[ type ] = data.slice( offset, offset + 4 ); - - } else if ( type == 'IDAT' ) { - - for ( var i = 0; i < len; i ++ ) dd[ doff + i ] = data[ offset + i ]; - doff += len; - - } else if ( type == 'acTL' ) { - - out.tabs[ type ] = { num_frames: rUi( data, offset ), num_plays: rUi( data, offset + 4 ) }; - fd = new Uint8Array( data.length ); - - } else if ( type == 'fcTL' ) { - - if ( foff != 0 ) { - - var fr = out.frames[ out.frames.length - 1 ]; - fr.data = UPNG.decode._decompress( out, fd.slice( 0, foff ), fr.rect.width, fr.rect.height ); foff = 0; - - } - - var rct = { x: rUi( data, offset + 12 ), y: rUi( data, offset + 16 ), width: rUi( data, offset + 4 ), height: rUi( data, offset + 8 ) }; - var del = rUs( data, offset + 22 ); del = rUs( data, offset + 20 ) / ( del == 0 ? 100 : del ); - var frm = { rect: rct, delay: Math.round( del * 1000 ), dispose: data[ offset + 24 ], blend: data[ offset + 25 ] }; - //console.log(frm); - out.frames.push( frm ); - - } else if ( type == 'fdAT' ) { - - for ( var i = 0; i < len - 4; i ++ ) fd[ foff + i ] = data[ offset + i + 4 ]; - foff += len - 4; - - } else if ( type == 'pHYs' ) { - - out.tabs[ type ] = [ bin.readUint( data, offset ), bin.readUint( data, offset + 4 ), data[ offset + 8 ] ]; - - } else if ( type == 'cHRM' ) { - - out.tabs[ type ] = []; - for ( var i = 0; i < 8; i ++ ) out.tabs[ type ].push( bin.readUint( data, offset + i * 4 ) ); - - } else if ( type == 'tEXt' || type == 'zTXt' ) { - - if ( out.tabs[ type ] == null ) out.tabs[ type ] = {}; - var nz = bin.nextZero( data, offset ); - keyw = bin.readASCII( data, offset, nz - offset ); - var tl = offset + len - nz - 1; - if ( type == 'tEXt' ) text = bin.readASCII( data, nz + 1, tl ); - else { - - bfr = UPNG.decode._inflate( data.slice( nz + 2, nz + 2 + tl ) ); - text = bin.readUTF8( bfr, 0, bfr.length ); - - } - - out.tabs[ type ][ keyw ] = text; - - } else if ( type == 'iTXt' ) { - - if ( out.tabs[ type ] == null ) out.tabs[ type ] = {}; - var nz = 0, off = offset; - nz = bin.nextZero( data, off ); - keyw = bin.readASCII( data, off, nz - off ); off = nz + 1; - var cflag = data[ off ]; off += 2; - nz = bin.nextZero( data, off ); - bin.readASCII( data, off, nz - off ); off = nz + 1; - nz = bin.nextZero( data, off ); - bin.readUTF8( data, off, nz - off ); off = nz + 1; - var tl = len - ( off - offset ); - if ( cflag == 0 ) text = bin.readUTF8( data, off, tl ); - else { - - bfr = UPNG.decode._inflate( data.slice( off, off + tl ) ); - text = bin.readUTF8( bfr, 0, bfr.length ); - - } - - out.tabs[ type ][ keyw ] = text; - - } else if ( type == 'PLTE' ) { - - out.tabs[ type ] = bin.readBytes( data, offset, len ); - - } else if ( type == 'hIST' ) { - - var pl = out.tabs[ 'PLTE' ].length / 3; - out.tabs[ type ] = []; for ( var i = 0; i < pl; i ++ ) out.tabs[ type ].push( rUs( data, offset + i * 2 ) ); - - } else if ( type == 'tRNS' ) { - - if ( out.ctype == 3 ) out.tabs[ type ] = bin.readBytes( data, offset, len ); - else if ( out.ctype == 0 ) out.tabs[ type ] = rUs( data, offset ); - else if ( out.ctype == 2 ) out.tabs[ type ] = [ rUs( data, offset ), rUs( data, offset + 2 ), rUs( data, offset + 4 ) ]; - //else console.log("tRNS for unsupported color type",out.ctype, len); - - } else if ( type == 'gAMA' ) out.tabs[ type ] = bin.readUint( data, offset ) / 100000; - else if ( type == 'sRGB' ) out.tabs[ type ] = data[ offset ]; - else if ( type == 'bKGD' ) { - - if ( out.ctype == 0 || out.ctype == 4 ) out.tabs[ type ] = [ rUs( data, offset ) ]; - else if ( out.ctype == 2 || out.ctype == 6 ) out.tabs[ type ] = [ rUs( data, offset ), rUs( data, offset + 2 ), rUs( data, offset + 4 ) ]; - else if ( out.ctype == 3 ) out.tabs[ type ] = data[ offset ]; - - } else if ( type == 'IEND' ) { - - break; - - } - - //else { console.log("unknown chunk type", type, len); out.tabs[type]=data.slice(offset,offset+len); } - offset += len; - bin.readUint( data, offset ); offset += 4; - - } - - if ( foff != 0 ) { - - var fr = out.frames[ out.frames.length - 1 ]; - fr.data = UPNG.decode._decompress( out, fd.slice( 0, foff ), fr.rect.width, fr.rect.height ); - - } - - out.data = UPNG.decode._decompress( out, dd, out.width, out.height ); - - delete out.compress; delete out.interlace; delete out.filter; - return out; - -}; - -UPNG.decode._decompress = function ( out, dd, w, h ) { - - var bpp = UPNG.decode._getBPP( out ), bpl = Math.ceil( w * bpp / 8 ), buff = new Uint8Array( ( bpl + 1 + out.interlace ) * h ); - if ( out.tabs[ 'CgBI' ] ) dd = UPNG.inflateRaw( dd, buff ); - else dd = UPNG.decode._inflate( dd, buff ); - - if ( out.interlace == 0 ) dd = UPNG.decode._filterZero( dd, out, 0, w, h ); - else if ( out.interlace == 1 ) dd = UPNG.decode._readInterlace( dd, out ); - - return dd; - -}; - -UPNG.decode._inflate = function ( data, buff ) { - - var out = UPNG[ 'inflateRaw' ]( new Uint8Array( data.buffer, 2, data.length - 6 ), buff ); return out; - -}; - -UPNG.inflateRaw = function () { - - var H = {}; H.H = {}; H.H.N = function ( N, W ) { - - var R = Uint8Array, i = 0, m = 0, J = 0, h = 0, Q = 0, X = 0, u = 0, w = 0, d = 0, v, C; - if ( N[ 0 ] == 3 && N[ 1 ] == 0 ) return W ? W : new R( 0 ); var V = H.H, n = V.b, A = V.e, l = V.R, M = V.n, I = V.A, e = V.Z, b = V.m, Z = W == null; - if ( Z )W = new R( N.length >>> 2 << 5 ); while ( i == 0 ) { - - i = n( N, d, 1 ); m = n( N, d + 1, 2 ); d += 3; if ( m == 0 ) { - - if ( ( d & 7 ) != 0 )d += 8 - ( d & 7 ); - var D = ( d >>> 3 ) + 4, q = N[ D - 4 ] | N[ D - 3 ] << 8; if ( Z )W = H.H.W( W, w + q ); W.set( new R( N.buffer, N.byteOffset + D, q ), w ); d = D + q << 3; - w += q; continue - ; - - } - - if ( Z )W = H.H.W( W, w + ( 1 << 17 ) ); if ( m == 1 ) { - - v = b.J; C = b.h; X = ( 1 << 9 ) - 1; u = ( 1 << 5 ) - 1; - - } - - if ( m == 2 ) { - - J = A( N, d, 5 ) + 257; - h = A( N, d + 5, 5 ) + 1; Q = A( N, d + 10, 4 ) + 4; d += 14; var j = 1; for ( var c = 0; c < 38; c += 2 ) { - - b.Q[ c ] = 0; b.Q[ c + 1 ] = 0; - - } - - for ( var c = 0; - c < Q; c ++ ) { - - var K = A( N, d + c * 3, 3 ); b.Q[ ( b.X[ c ] << 1 ) + 1 ] = K; if ( K > j )j = K - ; - - } - - d += 3 * Q; M( b.Q, j ); I( b.Q, j, b.u ); v = b.w; C = b.d; - d = l( b.u, ( 1 << j ) - 1, J + h, N, d, b.v ); var r = V.V( b.v, 0, J, b.C ); X = ( 1 << r ) - 1; var S = V.V( b.v, J, h, b.D ); u = ( 1 << S ) - 1; M( b.C, r ); - I( b.C, r, v ); M( b.D, S ); I( b.D, S, C ) - ; - - } - - while ( ! 0 ) { - - var T = v[ e( N, d ) & X ]; d += T & 15; var p = T >>> 4; if ( p >>> 8 == 0 ) { - - W[ w ++ ] = p; - - } else if ( p == 256 ) { - - break; - - } else { - - var z = w + p - 254; - if ( p > 264 ) { - - var _ = b.q[ p - 257 ]; z = w + ( _ >>> 3 ) + A( N, d, _ & 7 ); d += _ & 7; - - } - - var $ = C[ e( N, d ) & u ]; d += $ & 15; var s = $ >>> 4, Y = b.c[ s ], a = ( Y >>> 4 ) + n( N, d, Y & 15 ); - d += Y & 15; while ( w < z ) { - - W[ w ] = W[ w ++ - a ]; W[ w ] = W[ w ++ - a ]; W[ w ] = W[ w ++ - a ]; W[ w ] = W[ w ++ - a ]; - - } - - w = z - ; - - } - - } - - } - - return W.length == w ? W : W.slice( 0, w ) - ; - - }; - - H.H.W = function ( N, W ) { - - var R = N.length; if ( W <= R ) return N; var V = new Uint8Array( R << 1 ); V.set( N, 0 ); return V; - - }; - - H.H.R = function ( N, W, R, V, n, A ) { - - var l = H.H.e, M = H.H.Z, I = 0; while ( I < R ) { - - var e = N[ M( V, n ) & W ]; n += e & 15; var b = e >>> 4; - if ( b <= 15 ) { - - A[ I ] = b; I ++; - - } else { - - var Z = 0, m = 0; if ( b == 16 ) { - - m = 3 + l( V, n, 2 ); n += 2; Z = A[ I - 1 ]; - - } else if ( b == 17 ) { - - m = 3 + l( V, n, 3 ); - n += 3 - ; - - } else if ( b == 18 ) { - - m = 11 + l( V, n, 7 ); n += 7; - - } - - var J = I + m; while ( I < J ) { - - A[ I ] = Z; I ++; - - } - - } - - } - - return n - ; - - }; - - H.H.V = function ( N, W, R, V ) { - - var n = 0, A = 0, l = V.length >>> 1; - while ( A < R ) { - - var M = N[ A + W ]; V[ A << 1 ] = 0; V[ ( A << 1 ) + 1 ] = M; if ( M > n )n = M; A ++; - - } - - while ( A < l ) { - - V[ A << 1 ] = 0; V[ ( A << 1 ) + 1 ] = 0; A ++; - - } - - return n - ; - - }; - - H.H.n = function ( N, W ) { - - var R = H.H.m, V = N.length, n, A, l, M, I, e = R.j; for ( var M = 0; M <= W; M ++ )e[ M ] = 0; for ( M = 1; M < V; M += 2 )e[ N[ M ] ] ++; - var b = R.K; n = 0; e[ 0 ] = 0; for ( A = 1; A <= W; A ++ ) { - - n = n + e[ A - 1 ] << 1; b[ A ] = n; - - } - - for ( l = 0; l < V; l += 2 ) { - - I = N[ l + 1 ]; if ( I != 0 ) { - - N[ l ] = b[ I ]; - b[ I ] ++ - ; - - } - - } - - }; - - H.H.A = function ( N, W, R ) { - - var V = N.length, n = H.H.m, A = n.r; for ( var l = 0; l < V; l += 2 ) if ( N[ l + 1 ] != 0 ) { - - var M = l >> 1, I = N[ l + 1 ], e = M << 4 | I, b = W - I, Z = N[ l ] << b, m = Z + ( 1 << b ); - while ( Z != m ) { - - var J = A[ Z ] >>> 15 - W; R[ J ] = e; Z ++; - - } - - } - - }; - - H.H.l = function ( N, W ) { - - var R = H.H.m.r, V = 15 - W; for ( var n = 0; n < N.length; - n += 2 ) { - - var A = N[ n ] << W - N[ n + 1 ]; N[ n ] = R[ A ] >>> V; - - } - - }; - - H.H.M = function ( N, W, R ) { - - R = R << ( W & 7 ); var V = W >>> 3; N[ V ] |= R; N[ V + 1 ] |= R >>> 8; - - }; - - H.H.I = function ( N, W, R ) { - - R = R << ( W & 7 ); var V = W >>> 3; N[ V ] |= R; N[ V + 1 ] |= R >>> 8; N[ V + 2 ] |= R >>> 16; - - }; - - H.H.e = function ( N, W, R ) { - - return ( N[ W >>> 3 ] | N[ ( W >>> 3 ) + 1 ] << 8 ) >>> ( W & 7 ) & ( 1 << R ) - 1; - - }; - - H.H.b = function ( N, W, R ) { - - return ( N[ W >>> 3 ] | N[ ( W >>> 3 ) + 1 ] << 8 | N[ ( W >>> 3 ) + 2 ] << 16 ) >>> ( W & 7 ) & ( 1 << R ) - 1; - - }; - - H.H.Z = function ( N, W ) { - - return ( N[ W >>> 3 ] | N[ ( W >>> 3 ) + 1 ] << 8 | N[ ( W >>> 3 ) + 2 ] << 16 ) >>> ( W & 7 ); - - }; - - H.H.i = function ( N, W ) { - - return ( N[ W >>> 3 ] | N[ ( W >>> 3 ) + 1 ] << 8 | N[ ( W >>> 3 ) + 2 ] << 16 | N[ ( W >>> 3 ) + 3 ] << 24 ) >>> ( W & 7 ); - - }; - - H.H.m = function () { - - var N = Uint16Array, W = Uint32Array; - return { K: new N( 16 ), j: new N( 16 ), X: [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ], S: [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 999, 999, 999 ], T: [ 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, 0, 0, 0 ], q: new N( 32 ), p: [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 65535, 65535 ], z: [ 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, 0, 0 ], c: new W( 32 ), J: new N( 512 ), _: [], h: new N( 32 ), $: [], w: new N( 32768 ), C: [], v: [], d: new N( 32768 ), D: [], u: new N( 512 ), Q: [], r: new N( 1 << 15 ), s: new W( 286 ), Y: new W( 30 ), a: new W( 19 ), t: new W( 15e3 ), k: new N( 1 << 16 ), g: new N( 1 << 15 ) } - ; - - }(); - ( function () { - - var N = H.H.m, W = 1 << 15; for ( var R = 0; R < W; R ++ ) { - - var V = R; V = ( V & 2863311530 ) >>> 1 | ( V & 1431655765 ) << 1; - V = ( V & 3435973836 ) >>> 2 | ( V & 858993459 ) << 2; V = ( V & 4042322160 ) >>> 4 | ( V & 252645135 ) << 4; V = ( V & 4278255360 ) >>> 8 | ( V & 16711935 ) << 8; - N.r[ R ] = ( V >>> 16 | V << 16 ) >>> 17 - ; - - } - - function n( A, l, M ) { - - while ( l -- != 0 )A.push( 0, M ) - ; - - } - - for ( var R = 0; R < 32; R ++ ) { - - N.q[ R ] = N.S[ R ] << 3 | N.T[ R ]; - N.c[ R ] = N.p[ R ] << 4 | N.z[ R ] - ; - - } - - n( N._, 144, 8 ); n( N._, 255 - 143, 9 ); n( N._, 279 - 255, 7 ); n( N._, 287 - 279, 8 ); H.H.n( N._, 9 ); - H.H.A( N._, 9, N.J ); H.H.l( N._, 9 ); n( N.$, 32, 5 ); H.H.n( N.$, 5 ); H.H.A( N.$, 5, N.h ); H.H.l( N.$, 5 ); n( N.Q, 19, 0 ); n( N.C, 286, 0 ); - n( N.D, 30, 0 ); n( N.v, 320, 0 ) - ; - - }() ); - - return H.H.N - ; - -}(); - - -UPNG.decode._readInterlace = function ( data, out ) { - - var w = out.width, h = out.height; - var bpp = UPNG.decode._getBPP( out ), cbpp = bpp >> 3, bpl = Math.ceil( w * bpp / 8 ); - var img = new Uint8Array( h * bpl ); - var di = 0; - - var starting_row = [ 0, 0, 4, 0, 2, 0, 1 ]; - var starting_col = [ 0, 4, 0, 2, 0, 1, 0 ]; - var row_increment = [ 8, 8, 8, 4, 4, 2, 2 ]; - var col_increment = [ 8, 8, 4, 4, 2, 2, 1 ]; - - var pass = 0; - while ( pass < 7 ) { - - var ri = row_increment[ pass ], ci = col_increment[ pass ]; - var sw = 0, sh = 0; - var cr = starting_row[ pass ]; while ( cr < h ) { - - cr += ri; sh ++; - - } - - var cc = starting_col[ pass ]; while ( cc < w ) { - - cc += ci; sw ++; - - } - - var bpll = Math.ceil( sw * bpp / 8 ); - UPNG.decode._filterZero( data, out, di, sw, sh ); - - var y = 0, row = starting_row[ pass ]; - var val; - - while ( row < h ) { - - var col = starting_col[ pass ]; - var cdi = ( di + y * bpll ) << 3; - - while ( col < w ) { - - if ( bpp == 1 ) { - - val = data[ cdi >> 3 ]; val = ( val >> ( 7 - ( cdi & 7 ) ) ) & 1; - img[ row * bpl + ( col >> 3 ) ] |= ( val << ( 7 - ( ( col & 7 ) << 0 ) ) ); - - } - - if ( bpp == 2 ) { - - val = data[ cdi >> 3 ]; val = ( val >> ( 6 - ( cdi & 7 ) ) ) & 3; - img[ row * bpl + ( col >> 2 ) ] |= ( val << ( 6 - ( ( col & 3 ) << 1 ) ) ); - - } - - if ( bpp == 4 ) { - - val = data[ cdi >> 3 ]; val = ( val >> ( 4 - ( cdi & 7 ) ) ) & 15; - img[ row * bpl + ( col >> 1 ) ] |= ( val << ( 4 - ( ( col & 1 ) << 2 ) ) ); - - } - - if ( bpp >= 8 ) { - - var ii = row * bpl + col * cbpp; - for ( var j = 0; j < cbpp; j ++ ) img[ ii + j ] = data[ ( cdi >> 3 ) + j ]; - - } - - cdi += bpp; col += ci; - - } - - y ++; row += ri; - - } - - if ( sw * sh != 0 ) di += sh * ( 1 + bpll ); - pass = pass + 1; - - } - - return img; - -}; - -UPNG.decode._getBPP = function ( out ) { - - var noc = [ 1, null, 3, 1, 2, null, 4 ][ out.ctype ]; - return noc * out.depth; - -}; - -UPNG.decode._filterZero = function ( data, out, off, w, h ) { - - var bpp = UPNG.decode._getBPP( out ), bpl = Math.ceil( w * bpp / 8 ), paeth = UPNG.decode._paeth; - bpp = Math.ceil( bpp / 8 ); - - var i, di, type = data[ off ], x = 0; - - if ( type > 1 ) data[ off ] = [ 0, 0, 1 ][ type - 2 ]; - if ( type == 3 ) for ( x = bpp; x < bpl; x ++ ) data[ x + 1 ] = ( data[ x + 1 ] + ( data[ x + 1 - bpp ] >>> 1 ) ) & 255; - - for ( var y = 0; y < h; y ++ ) { - - i = off + y * bpl; di = i + y + 1; - type = data[ di - 1 ]; x = 0; - - if ( type == 0 ) for ( ; x < bpl; x ++ ) data[ i + x ] = data[ di + x ]; - else if ( type == 1 ) { - - for ( ; x < bpp; x ++ ) data[ i + x ] = data[ di + x ]; - for ( ; x < bpl; x ++ ) data[ i + x ] = ( data[ di + x ] + data[ i + x - bpp ] ); - - } else if ( type == 2 ) { - - for ( ; x < bpl; x ++ ) data[ i + x ] = ( data[ di + x ] + data[ i + x - bpl ] ); - - } else if ( type == 3 ) { - - for ( ; x < bpp; x ++ ) data[ i + x ] = ( data[ di + x ] + ( data[ i + x - bpl ] >>> 1 ) ); - for ( ; x < bpl; x ++ ) data[ i + x ] = ( data[ di + x ] + ( ( data[ i + x - bpl ] + data[ i + x - bpp ] ) >>> 1 ) ); - - } else { - - for ( ; x < bpp; x ++ ) data[ i + x ] = ( data[ di + x ] + paeth( 0, data[ i + x - bpl ], 0 ) ); - for ( ; x < bpl; x ++ ) data[ i + x ] = ( data[ di + x ] + paeth( data[ i + x - bpp ], data[ i + x - bpl ], data[ i + x - bpp - bpl ] ) ); - - } - - } - - return data; - -}; - -UPNG.decode._paeth = function ( a, b, c ) { - - var p = a + b - c, pa = ( p - a ), pb = ( p - b ), pc = ( p - c ); - if ( pa * pa <= pb * pb && pa * pa <= pc * pc ) return a; - else if ( pb * pb <= pc * pc ) return b; - return c; - -}; - -UPNG.decode._IHDR = function ( data, offset, out ) { - - var bin = UPNG._bin; - out.width = bin.readUint( data, offset ); offset += 4; - out.height = bin.readUint( data, offset ); offset += 4; - out.depth = data[ offset ]; offset ++; - out.ctype = data[ offset ]; offset ++; - out.compress = data[ offset ]; offset ++; - out.filter = data[ offset ]; offset ++; - out.interlace = data[ offset ]; offset ++; - -}; - -UPNG._bin = { - nextZero: function ( data, p ) { - - while ( data[ p ] != 0 ) p ++; return p; - - }, - readUshort: function ( buff, p ) { - - return ( buff[ p ] << 8 ) | buff[ p + 1 ]; - - }, - writeUshort: function ( buff, p, n ) { - - buff[ p ] = ( n >> 8 ) & 255; buff[ p + 1 ] = n & 255; - - }, - readUint: function ( buff, p ) { - - return ( buff[ p ] * ( 256 * 256 * 256 ) ) + ( ( buff[ p + 1 ] << 16 ) | ( buff[ p + 2 ] << 8 ) | buff[ p + 3 ] ); - - }, - writeUint: function ( buff, p, n ) { - - buff[ p ] = ( n >> 24 ) & 255; buff[ p + 1 ] = ( n >> 16 ) & 255; buff[ p + 2 ] = ( n >> 8 ) & 255; buff[ p + 3 ] = n & 255; - - }, - readASCII: function ( buff, p, l ) { - - var s = ''; for ( var i = 0; i < l; i ++ ) s += String.fromCharCode( buff[ p + i ] ); return s; - - }, - writeASCII: function ( data, p, s ) { - - for ( var i = 0; i < s.length; i ++ ) data[ p + i ] = s.charCodeAt( i ); - - }, - readBytes: function ( buff, p, l ) { - - var arr = []; for ( var i = 0; i < l; i ++ ) arr.push( buff[ p + i ] ); return arr; - - }, - pad: function ( n ) { - - return n.length < 2 ? '0' + n : n; - - }, - readUTF8: function ( buff, p, l ) { - - var s = '', ns; - for ( var i = 0; i < l; i ++ ) s += '%' + UPNG._bin.pad( buff[ p + i ].toString( 16 ) ); - try { - - ns = decodeURIComponent( s ); - - } catch ( e ) { - - return UPNG._bin.readASCII( buff, p, l ); - - } - - return ns; - - } -}; -UPNG._copyTile = function ( sb, sw, sh, tb, tw, th, xoff, yoff, mode ) { - - var w = Math.min( sw, tw ), h = Math.min( sh, th ); - var si = 0, ti = 0; - for ( var y = 0; y < h; y ++ ) - for ( var x = 0; x < w; x ++ ) { - - if ( xoff >= 0 && yoff >= 0 ) { - - si = ( y * sw + x ) << 2; ti = ( ( yoff + y ) * tw + xoff + x ) << 2; - - } else { - - si = ( ( - yoff + y ) * sw - xoff + x ) << 2; ti = ( y * tw + x ) << 2; - - } - - if ( mode == 0 ) { - - tb[ ti ] = sb[ si ]; tb[ ti + 1 ] = sb[ si + 1 ]; tb[ ti + 2 ] = sb[ si + 2 ]; tb[ ti + 3 ] = sb[ si + 3 ]; - - } else if ( mode == 1 ) { - - var fa = sb[ si + 3 ] * ( 1 / 255 ), fr = sb[ si ] * fa, fg = sb[ si + 1 ] * fa, fb = sb[ si + 2 ] * fa; - var ba = tb[ ti + 3 ] * ( 1 / 255 ), br = tb[ ti ] * ba, bg = tb[ ti + 1 ] * ba, bb = tb[ ti + 2 ] * ba; - - var ifa = 1 - fa, oa = fa + ba * ifa, ioa = ( oa == 0 ? 0 : 1 / oa ); - tb[ ti + 3 ] = 255 * oa; - tb[ ti + 0 ] = ( fr + br * ifa ) * ioa; - tb[ ti + 1 ] = ( fg + bg * ifa ) * ioa; - tb[ ti + 2 ] = ( fb + bb * ifa ) * ioa; - - } else if ( mode == 2 ) { // copy only differences, otherwise zero - - var fa = sb[ si + 3 ], fr = sb[ si ], fg = sb[ si + 1 ], fb = sb[ si + 2 ]; - var ba = tb[ ti + 3 ], br = tb[ ti ], bg = tb[ ti + 1 ], bb = tb[ ti + 2 ]; - if ( fa == ba && fr == br && fg == bg && fb == bb ) { - - tb[ ti ] = 0; tb[ ti + 1 ] = 0; tb[ ti + 2 ] = 0; tb[ ti + 3 ] = 0; - - } else { - - tb[ ti ] = fr; tb[ ti + 1 ] = fg; tb[ ti + 2 ] = fb; tb[ ti + 3 ] = fa; - - } - - } else if ( mode == 3 ) { // check if can be blended - - var fa = sb[ si + 3 ], fr = sb[ si ], fg = sb[ si + 1 ], fb = sb[ si + 2 ]; - var ba = tb[ ti + 3 ], br = tb[ ti ], bg = tb[ ti + 1 ], bb = tb[ ti + 2 ]; - if ( fa == ba && fr == br && fg == bg && fb == bb ) continue; - //if(fa!=255 && ba!=0) return false; - if ( fa < 220 && ba > 20 ) return false; - - } - - } - - return true; - -}; - -export { RGBMLoader }; diff --git a/three/addons/loaders/STLLoader.js b/three/addons/loaders/STLLoader.js deleted file mode 100644 index 75d4f84..0000000 --- a/three/addons/loaders/STLLoader.js +++ /dev/null @@ -1,410 +0,0 @@ -import { - BufferAttribute, - BufferGeometry, - Color, - FileLoader, - Float32BufferAttribute, - Loader, - Vector3 -} from 'three'; - -/** - * Description: A THREE loader for STL ASCII files, as created by Solidworks and other CAD programs. - * - * Supports both binary and ASCII encoded files, with automatic detection of type. - * - * The loader returns a non-indexed buffer geometry. - * - * Limitations: - * Binary decoding supports "Magics" color format (http://en.wikipedia.org/wiki/STL_(file_format)#Color_in_binary_STL). - * There is perhaps some question as to how valid it is to always assume little-endian-ness. - * ASCII decoding assumes file is UTF-8. - * - * Usage: - * const loader = new STLLoader(); - * loader.load( './models/stl/slotted_disk.stl', function ( geometry ) { - * scene.add( new THREE.Mesh( geometry ) ); - * }); - * - * For binary STLs geometry might contain colors for vertices. To use it: - * // use the same code to load STL as above - * if (geometry.hasColors) { - * material = new THREE.MeshPhongMaterial({ opacity: geometry.alpha, vertexColors: true }); - * } else { .... } - * const mesh = new THREE.Mesh( geometry, material ); - * - * For ASCII STLs containing multiple solids, each solid is assigned to a different group. - * Groups can be used to assign a different color by defining an array of materials with the same length of - * geometry.groups and passing it to the Mesh constructor: - * - * const mesh = new THREE.Mesh( geometry, material ); - * - * For example: - * - * const materials = []; - * const nGeometryGroups = geometry.groups.length; - * - * const colorMap = ...; // Some logic to index colors. - * - * for (let i = 0; i < nGeometryGroups; i++) { - * - * const material = new THREE.MeshPhongMaterial({ - * color: colorMap[i], - * wireframe: false - * }); - * - * } - * - * materials.push(material); - * const mesh = new THREE.Mesh(geometry, materials); - */ - - -class STLLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - loader.setRequestHeader( this.requestHeader ); - loader.setWithCredentials( this.withCredentials ); - - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( data ) { - - function isBinary( data ) { - - const reader = new DataView( data ); - const face_size = ( 32 / 8 * 3 ) + ( ( 32 / 8 * 3 ) * 3 ) + ( 16 / 8 ); - const n_faces = reader.getUint32( 80, true ); - const expect = 80 + ( 32 / 8 ) + ( n_faces * face_size ); - - if ( expect === reader.byteLength ) { - - return true; - - } - - // An ASCII STL data must begin with 'solid ' as the first six bytes. - // However, ASCII STLs lacking the SPACE after the 'd' are known to be - // plentiful. So, check the first 5 bytes for 'solid'. - - // Several encodings, such as UTF-8, precede the text with up to 5 bytes: - // https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding - // Search for "solid" to start anywhere after those prefixes. - - // US-ASCII ordinal values for 's', 'o', 'l', 'i', 'd' - - const solid = [ 115, 111, 108, 105, 100 ]; - - for ( let off = 0; off < 5; off ++ ) { - - // If "solid" text is matched to the current offset, declare it to be an ASCII STL. - - if ( matchDataViewAt( solid, reader, off ) ) return false; - - } - - // Couldn't find "solid" text at the beginning; it is binary STL. - - return true; - - } - - function matchDataViewAt( query, reader, offset ) { - - // Check if each byte in query matches the corresponding byte from the current offset - - for ( let i = 0, il = query.length; i < il; i ++ ) { - - if ( query[ i ] !== reader.getUint8( offset + i ) ) return false; - - } - - return true; - - } - - function parseBinary( data ) { - - const reader = new DataView( data ); - const faces = reader.getUint32( 80, true ); - - let r, g, b, hasColors = false, colors; - let defaultR, defaultG, defaultB, alpha; - - // process STL header - // check for default color in header ("COLOR=rgba" sequence). - - for ( let index = 0; index < 80 - 10; index ++ ) { - - if ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) && - ( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) && - ( reader.getUint8( index + 5 ) == 0x3D /*'='*/ ) ) { - - hasColors = true; - colors = new Float32Array( faces * 3 * 3 ); - - defaultR = reader.getUint8( index + 6 ) / 255; - defaultG = reader.getUint8( index + 7 ) / 255; - defaultB = reader.getUint8( index + 8 ) / 255; - alpha = reader.getUint8( index + 9 ) / 255; - - } - - } - - const dataOffset = 84; - const faceLength = 12 * 4 + 2; - - const geometry = new BufferGeometry(); - - const vertices = new Float32Array( faces * 3 * 3 ); - const normals = new Float32Array( faces * 3 * 3 ); - - const color = new Color(); - - for ( let face = 0; face < faces; face ++ ) { - - const start = dataOffset + face * faceLength; - const normalX = reader.getFloat32( start, true ); - const normalY = reader.getFloat32( start + 4, true ); - const normalZ = reader.getFloat32( start + 8, true ); - - if ( hasColors ) { - - const packedColor = reader.getUint16( start + 48, true ); - - if ( ( packedColor & 0x8000 ) === 0 ) { - - // facet has its own unique color - - r = ( packedColor & 0x1F ) / 31; - g = ( ( packedColor >> 5 ) & 0x1F ) / 31; - b = ( ( packedColor >> 10 ) & 0x1F ) / 31; - - } else { - - r = defaultR; - g = defaultG; - b = defaultB; - - } - - } - - for ( let i = 1; i <= 3; i ++ ) { - - const vertexstart = start + i * 12; - const componentIdx = ( face * 3 * 3 ) + ( ( i - 1 ) * 3 ); - - vertices[ componentIdx ] = reader.getFloat32( vertexstart, true ); - vertices[ componentIdx + 1 ] = reader.getFloat32( vertexstart + 4, true ); - vertices[ componentIdx + 2 ] = reader.getFloat32( vertexstart + 8, true ); - - normals[ componentIdx ] = normalX; - normals[ componentIdx + 1 ] = normalY; - normals[ componentIdx + 2 ] = normalZ; - - if ( hasColors ) { - - color.set( r, g, b ).convertSRGBToLinear(); - - colors[ componentIdx ] = color.r; - colors[ componentIdx + 1 ] = color.g; - colors[ componentIdx + 2 ] = color.b; - - } - - } - - } - - geometry.setAttribute( 'position', new BufferAttribute( vertices, 3 ) ); - geometry.setAttribute( 'normal', new BufferAttribute( normals, 3 ) ); - - if ( hasColors ) { - - geometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) ); - geometry.hasColors = true; - geometry.alpha = alpha; - - } - - return geometry; - - } - - function parseASCII( data ) { - - const geometry = new BufferGeometry(); - const patternSolid = /solid([\s\S]*?)endsolid/g; - const patternFace = /facet([\s\S]*?)endfacet/g; - const patternName = /solid\s(.+)/; - let faceCounter = 0; - - const patternFloat = /[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source; - const patternVertex = new RegExp( 'vertex' + patternFloat + patternFloat + patternFloat, 'g' ); - const patternNormal = new RegExp( 'normal' + patternFloat + patternFloat + patternFloat, 'g' ); - - const vertices = []; - const normals = []; - const groupNames = []; - - const normal = new Vector3(); - - let result; - - let groupCount = 0; - let startVertex = 0; - let endVertex = 0; - - while ( ( result = patternSolid.exec( data ) ) !== null ) { - - startVertex = endVertex; - - const solid = result[ 0 ]; - - const name = ( result = patternName.exec( solid ) ) !== null ? result[ 1 ] : ''; - groupNames.push( name ); - - while ( ( result = patternFace.exec( solid ) ) !== null ) { - - let vertexCountPerFace = 0; - let normalCountPerFace = 0; - - const text = result[ 0 ]; - - while ( ( result = patternNormal.exec( text ) ) !== null ) { - - normal.x = parseFloat( result[ 1 ] ); - normal.y = parseFloat( result[ 2 ] ); - normal.z = parseFloat( result[ 3 ] ); - normalCountPerFace ++; - - } - - while ( ( result = patternVertex.exec( text ) ) !== null ) { - - vertices.push( parseFloat( result[ 1 ] ), parseFloat( result[ 2 ] ), parseFloat( result[ 3 ] ) ); - normals.push( normal.x, normal.y, normal.z ); - vertexCountPerFace ++; - endVertex ++; - - } - - // every face have to own ONE valid normal - - if ( normalCountPerFace !== 1 ) { - - console.error( 'THREE.STLLoader: Something isn\'t right with the normal of face number ' + faceCounter ); - - } - - // each face have to own THREE valid vertices - - if ( vertexCountPerFace !== 3 ) { - - console.error( 'THREE.STLLoader: Something isn\'t right with the vertices of face number ' + faceCounter ); - - } - - faceCounter ++; - - } - - const start = startVertex; - const count = endVertex - startVertex; - - geometry.userData.groupNames = groupNames; - - geometry.addGroup( start, count, groupCount ); - groupCount ++; - - } - - geometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - - return geometry; - - } - - function ensureString( buffer ) { - - if ( typeof buffer !== 'string' ) { - - return new TextDecoder().decode( buffer ); - - } - - return buffer; - - } - - function ensureBinary( buffer ) { - - if ( typeof buffer === 'string' ) { - - const array_buffer = new Uint8Array( buffer.length ); - for ( let i = 0; i < buffer.length; i ++ ) { - - array_buffer[ i ] = buffer.charCodeAt( i ) & 0xff; // implicitly assumes little-endian - - } - - return array_buffer.buffer || array_buffer; - - } else { - - return buffer; - - } - - } - - // start - - const binData = ensureBinary( data ); - - return isBinary( binData ) ? parseBinary( binData ) : parseASCII( ensureString( data ) ); - - } - -} - -export { STLLoader }; diff --git a/three/addons/loaders/SVGLoader.js b/three/addons/loaders/SVGLoader.js deleted file mode 100644 index 1c3c19a..0000000 --- a/three/addons/loaders/SVGLoader.js +++ /dev/null @@ -1,3172 +0,0 @@ -import { - Box2, - BufferGeometry, - FileLoader, - Float32BufferAttribute, - Loader, - Matrix3, - Path, - Shape, - ShapePath, - ShapeUtils, - SRGBColorSpace, - Vector2, - Vector3 -} from 'three'; - -const COLOR_SPACE_SVG = SRGBColorSpace; - -class SVGLoader extends Loader { - - constructor( manager ) { - - super( manager ); - - // Default dots per inch - this.defaultDPI = 90; - - // Accepted units: 'mm', 'cm', 'in', 'pt', 'pc', 'px' - this.defaultUnit = 'px'; - - } - - load( url, onLoad, onProgress, onError ) { - - const scope = this; - - const loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.setRequestHeader( scope.requestHeader ); - loader.setWithCredentials( scope.withCredentials ); - loader.load( url, function ( text ) { - - try { - - onLoad( scope.parse( text ) ); - - } catch ( e ) { - - if ( onError ) { - - onError( e ); - - } else { - - console.error( e ); - - } - - scope.manager.itemError( url ); - - } - - }, onProgress, onError ); - - } - - parse( text ) { - - const scope = this; - - function parseNode( node, style ) { - - if ( node.nodeType !== 1 ) return; - - const transform = getNodeTransform( node ); - - let isDefsNode = false; - - let path = null; - - switch ( node.nodeName ) { - - case 'svg': - style = parseStyle( node, style ); - break; - - case 'style': - parseCSSStylesheet( node ); - break; - - case 'g': - style = parseStyle( node, style ); - break; - - case 'path': - style = parseStyle( node, style ); - if ( node.hasAttribute( 'd' ) ) path = parsePathNode( node ); - break; - - case 'rect': - style = parseStyle( node, style ); - path = parseRectNode( node ); - break; - - case 'polygon': - style = parseStyle( node, style ); - path = parsePolygonNode( node ); - break; - - case 'polyline': - style = parseStyle( node, style ); - path = parsePolylineNode( node ); - break; - - case 'circle': - style = parseStyle( node, style ); - path = parseCircleNode( node ); - break; - - case 'ellipse': - style = parseStyle( node, style ); - path = parseEllipseNode( node ); - break; - - case 'line': - style = parseStyle( node, style ); - path = parseLineNode( node ); - break; - - case 'defs': - isDefsNode = true; - break; - - case 'use': - style = parseStyle( node, style ); - - const href = node.getAttributeNS( 'http://www.w3.org/1999/xlink', 'href' ) || ''; - const usedNodeId = href.substring( 1 ); - const usedNode = node.viewportElement.getElementById( usedNodeId ); - if ( usedNode ) { - - parseNode( usedNode, style ); - - } else { - - console.warn( 'SVGLoader: \'use node\' references non-existent node id: ' + usedNodeId ); - - } - - break; - - default: - // console.log( node ); - - } - - if ( path ) { - - if ( style.fill !== undefined && style.fill !== 'none' ) { - - path.color.setStyle( style.fill, COLOR_SPACE_SVG ); - - } - - transformPath( path, currentTransform ); - - paths.push( path ); - - path.userData = { node: node, style: style }; - - } - - const childNodes = node.childNodes; - - for ( let i = 0; i < childNodes.length; i ++ ) { - - const node = childNodes[ i ]; - - if ( isDefsNode && node.nodeName !== 'style' && node.nodeName !== 'defs' ) { - - // Ignore everything in defs except CSS style definitions - // and nested defs, because it is OK by the standard to have - //

    3*yk)z!_bHz#wsdbLy^Q~0LL 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 #Vg~YP-vm9>HPsyBh9y@f+ggWAs<( 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

  • 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